UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
MovieSceneTaskScheduler.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
6#include "Containers/Map.h"
7#include "Containers/Array.h"
8#include "Tasks/Task.h"
16
17namespace UE::MovieScene
18{
19
20struct FTaskExecutionFlags;
21class FEntitySystemScheduler;
22
24
50
91
169
171{
172public:
173
178
180
184 static bool IsCustomSchedulingEnabled();
185
186public:
187
191 void BeginConstruction();
192
196 void BeginSystem(uint16 NodeID);
197
202
208
212 void EndSystem(uint16 NodeID);
213
217 void EndConstruction();
218
219public:
220 /*~ Builder functionality */
221
229 template<typename TaskType, typename ...TaskArgTypes>
231 {
232 struct FExecute
233 {
234 static void Execute(const ITaskContext* Context, FEntityAllocationWriteContext WriteContext)
235 {
236 static_cast<const TaskType*>(Context)->Run(WriteContext);
237 }
238 };
239
242 }
243
248
253
258
262 void AddPrerequisite(FTaskID Prerequisite, FTaskID Subsequent);
263
268
273
277 void ShuffleTasks();
278
279 /*~ End Builder functionality */
280
281public:
282
283 /*~ Execution functionality */
284
286 {
287 return EntityManager;
288 }
289
291 {
292 return WriteContextBase;
293 }
294
298 void ExecuteTasks();
299
304
314
318 void OnAllTasksFinished() const;
319
320 /*~ End execution functionality */
321
322public:
323
324 FString ToString() const;
325
326private:
329
331 FTaskPrerequisiteCache* CurrentPrerequisites = nullptr;
332
334 FTaskPrerequisiteCache CurrentSubsequents;
335
337 FTaskBitSet InitialTasks;
338
339 struct FComponentDependencies
340 {
341 FTaskBitSet ReadTasks;
342 FTaskID WriteTask;
343 };
345 TMap<TPair<int32, FComponentTypeID>, FComponentDependencies> ComponentDepedenciesByAllocation;
346
348
349 FEntityManager* EntityManager;
350
351 mutable FEntitySystemMaybeAtomicInt32 NumTasksRemaining = 0;
352
353 FEvent* GameThreadSignal = nullptr;
355 FEntityAllocationWriteContext WriteContextBase = FEntityAllocationWriteContext::NewAllocation();
356 uint32 SystemSerialIncrement = 0;
358};
359
360
361} // namespace UE::MovieScene
FPlatformTypes::int32 int32
A 32-bit signed integer.
Definition Platform.h:1125
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
#define MAX_uint16
Definition NumericLimits.h:20
uint8_t uint8
Definition binka_ue_file_header.h:8
uint16_t uint16
Definition binka_ue_file_header.h:7
uint32_t uint32
Definition binka_ue_file_header.h:6
Definition Event.h:21
Definition Array.h:670
Definition AssetRegistryState.h:50
Definition LockFreeList.h:910
Definition UnrealString.h.inl:34
Definition SharedPointer.h:692
Definition TVariant.h:48
Definition MovieSceneEntityManager.h:81
Definition MovieSceneTaskScheduler.h:171
~FEntitySystemScheduler()
Definition MovieSceneTaskScheduler.cpp:168
void BeginConstruction()
Definition MovieSceneTaskScheduler.cpp:749
void EndSystem(uint16 NodeID)
Definition MovieSceneTaskScheduler.cpp:771
void ExecuteTasks()
Definition MovieSceneTaskScheduler.cpp:515
void AddChildBack(FTaskID Parent, FTaskID Child)
Definition MovieSceneTaskScheduler.cpp:363
FTaskID AddTask(const FTaskParams &InParams, TaskArgTypes &&... Args)
Definition MovieSceneTaskScheduler.h:230
bool HasAnyTasksToPropagateDownstream() const
Definition MovieSceneTaskScheduler.cpp:743
void AddChildFront(FTaskID Parent, FTaskID Child)
Definition MovieSceneTaskScheduler.cpp:340
FTaskID AddNullTask()
Definition MovieSceneTaskScheduler.cpp:431
void CompleteTask(const FScheduledTask *Task, FTaskExecutionFlags InFlags) const
Definition MovieSceneTaskScheduler.cpp:634
FString ToString() const
Definition MovieSceneTaskScheduler.cpp:820
void AddPrerequisite(FTaskID Prerequisite, FTaskID Subsequent)
Definition MovieSceneTaskScheduler.cpp:328
void PropagatePrerequisite(uint16 ToNodeID)
Definition MovieSceneTaskScheduler.cpp:764
const FEntityManager * GetEntityManager() const
Definition MovieSceneTaskScheduler.h:285
FEntityAllocationWriteContext GetWriteContextOffset() const
Definition MovieSceneTaskScheduler.h:290
void BeginSystem(uint16 NodeID)
Definition MovieSceneTaskScheduler.cpp:758
static bool IsCustomSchedulingEnabled()
Definition MovieSceneTaskScheduler.cpp:173
void PrerequisiteCompleted(FTaskID TaskID, int32 *OptRunInlineIndex) const
Definition MovieSceneTaskScheduler.cpp:671
FTaskID CreateForkedAllocationTask(const FTaskParams &InParams, TSharedPtr< ITaskContext > InTaskContext, TaskFunctionPtr InTaskFunction, TFunctionRef< void(FEntityAllocationIteratorItem, TArray< FPreLockedDataPtr > &)> InPreLockFunc, const FEntityComponentFilter &Filter, const FComponentMask &ReadDeps, const FComponentMask &WriteDeps)
Definition MovieSceneTaskScheduler.cpp:178
void EndConstruction()
Definition MovieSceneTaskScheduler.cpp:776
void ShuffleTasks()
Definition MovieSceneTaskScheduler.cpp:441
void OnAllTasksFinished() const
Definition MovieSceneTaskScheduler.cpp:734
Definition IMovieSceneTaskScheduler.h:162
friend class FEntitySystemScheduler
Definition IMovieSceneTaskScheduler.h:223
Definition ConstraintsManager.h:14
void(*)(FEntityAllocationIteratorItem Item, TArrayView< const FPreLockedDataPtr > PreLockedData, const ITaskContext *TaskContext, FEntityAllocationWriteContext WriteContext) PreLockedAllocationItemFunctionPtr
Definition IMovieSceneTaskScheduler.h:157
TDynamicSparseBitSet< uint32, TDynamicSparseBitSetBucketStorage< uint16, 0 > > FTaskBitSet
Definition MovieSceneTaskScheduler.h:23
EEntityThreadingModel
Definition MovieSceneMaybeAtomic.h:17
void(*)(FEntityAllocationIteratorItem Item, const ITaskContext *TaskContext, FEntityAllocationWriteContext WriteContext) AllocationItemFunctionPtr
Definition IMovieSceneTaskScheduler.h:156
void(*)(const ITaskContext *TaskContext, FEntityAllocationWriteContext WriteContext) UnboundTaskFunctionPtr
Definition IMovieSceneTaskScheduler.h:154
void(*)(const FEntityAllocation *Allocation, const ITaskContext *TaskContext, FEntityAllocationWriteContext WriteContext) AllocationFunctionPtr
Definition IMovieSceneTaskScheduler.h:155
Definition TVariant.h:13
Definition LightweightStats.h:416
Definition MovieSceneEntityIDs.h:40
Definition MovieSceneEntitySystemTypes.h:977
Definition MovieSceneEntitySystemTypes.h:425
static FEntityAllocationWriteContext NewAllocation()
Definition MovieSceneEntitySystemTypes.h:428
Definition MovieSceneEntitySystemTypes.h:295
Definition MovieSceneMaybeAtomic.h:31
Definition MovieSceneTaskScheduler.h:52
EType Assign(AllocationFunctionPtr InAllocation)
Definition MovieSceneTaskScheduler.h:67
EType Assign(AllocationItemFunctionPtr InAllocationItem)
Definition MovieSceneTaskScheduler.h:72
AllocationItemFunctionPtr AllocationItem
Definition MovieSceneTaskScheduler.h:87
EType
Definition MovieSceneTaskScheduler.h:54
AllocationFunctionPtr Allocation
Definition MovieSceneTaskScheduler.h:86
EType Assign(UnboundTaskFunctionPtr InUnboundTask)
Definition MovieSceneTaskScheduler.h:62
PreLockedAllocationItemFunctionPtr PreLockedAllocationItem
Definition MovieSceneTaskScheduler.h:88
UnboundTaskFunctionPtr UnboundTask
Definition MovieSceneTaskScheduler.h:85
EType Assign(PreLockedAllocationItemFunctionPtr InPreLockedAllocationItem)
Definition MovieSceneTaskScheduler.h:77
Definition MovieSceneTaskScheduler.h:107
uint16 AllocationIndex
Definition MovieSceneTaskScheduler.h:111
TArray< FPreLockedDataPtr > PreLockedComponentData
Definition MovieSceneTaskScheduler.h:109
Definition MovieSceneTaskScheduler.h:96
FScheduledTaskFuncionPtr::EType TaskFunctionType
Definition MovieSceneTaskScheduler.h:161
void Run(const FEntitySystemScheduler *Scheduler, FTaskExecutionFlags InFlags) const
Definition MovieSceneTaskScheduler.cpp:82
FLockedComponentData LockedComponentData
Definition MovieSceneTaskScheduler.h:146
FString DebugName
Definition MovieSceneTaskScheduler.h:137
TStatId StatId
Definition MovieSceneTaskScheduler.h:141
TSharedPtr< ITaskContext > TaskContext
Definition MovieSceneTaskScheduler.h:133
int32 NumPrerequisites
Definition MovieSceneTaskScheduler.h:149
FEntitySystemMaybeAtomicInt32 ChildCompleteCount
Definition MovieSceneTaskScheduler.h:153
FEntityAllocationWriteContext WriteContextOffset
Definition MovieSceneTaskScheduler.h:143
FEntitySystemMaybeAtomicInt32 WaitCount
Definition MovieSceneTaskScheduler.h:151
uint8 bForceInline
Definition MovieSceneTaskScheduler.h:167
FTaskBitSet ChildTasks
Definition MovieSceneTaskScheduler.h:127
FTaskBitSet ComputedSubsequents
Definition MovieSceneTaskScheduler.h:125
~FScheduledTask()
Definition MovieSceneTaskScheduler.cpp:68
uint8 bForceGameThread
Definition MovieSceneTaskScheduler.h:164
FTaskID Parent
Definition MovieSceneTaskScheduler.h:156
uint16 NumChildren
Definition MovieSceneTaskScheduler.h:158
void SetFunction(TaskFunctionPtr InFunction)
Definition MovieSceneTaskScheduler.cpp:71
FScheduledTaskFuncionPtr TaskFunction
Definition MovieSceneTaskScheduler.h:130
Definition MovieSceneTaskScheduler.cpp:25
Definition IMovieSceneTaskScheduler.h:21
Definition IMovieSceneTaskScheduler.h:44
Definition MovieSceneTaskScheduler.h:31
FTaskBitSet ForcedSystemWidePrerequisites
Definition MovieSceneTaskScheduler.h:41
void Reset()
Definition MovieSceneTaskScheduler.h:44
FTaskBitSet SystemWidePrerequisites
Definition MovieSceneTaskScheduler.h:36
Definition IMovieSceneTaskScheduler.h:113