UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
UE::MovieScene::FEntitySystemScheduler Class Reference

#include <MovieSceneTaskScheduler.h>

+ Inheritance diagram for UE::MovieScene::FEntitySystemScheduler:

Public Member Functions

 FEntitySystemScheduler (FEntityManager *InEntityManager)
 
 ~FEntitySystemScheduler ()
 
void BeginConstruction ()
 
void BeginSystem (uint16 NodeID)
 
bool HasAnyTasksToPropagateDownstream () const
 
void PropagatePrerequisite (uint16 ToNodeID)
 
void EndSystem (uint16 NodeID)
 
void EndConstruction ()
 
template<typename TaskType , typename ... TaskArgTypes>
FTaskID AddTask (const FTaskParams &InParams, TaskArgTypes &&... Args)
 
FTaskID AddNullTask ()
 
FTaskID AddTask (const FTaskParams &InParams, TSharedPtr< ITaskContext > InTaskContext, TaskFunctionPtr InTaskFunction)
 
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)
 
void AddPrerequisite (FTaskID Prerequisite, FTaskID Subsequent)
 
void AddChildBack (FTaskID Parent, FTaskID Child)
 
void AddChildFront (FTaskID Parent, FTaskID Child)
 
void ShuffleTasks ()
 
const FEntityManagerGetEntityManager () const
 
FEntityAllocationWriteContext GetWriteContextOffset () const
 
void ExecuteTasks ()
 
void CompleteTask (const FScheduledTask *Task, FTaskExecutionFlags InFlags) const
 
void PrerequisiteCompleted (FTaskID TaskID, int32 *OptRunInlineIndex) const
 
void PrerequisiteCompleted (const FScheduledTask *Task, int32 *OptRunInlineIndex) const
 
void OnAllTasksFinished () const
 
FString ToString () const
 
- Public Member Functions inherited from UE::MovieScene::IEntitySystemScheduler
template<typename TaskType , typename ... TaskArgTypes>
FTaskID AddTask (const FTaskParams &InParams, TaskArgTypes &&... Args)
 
template<typename TaskType >
FTaskID AddMemberFunctionTask (const FTaskParams &InParams, TaskType *Instance, typename TMemberFunctionTaskWrapper< TaskType >::MemberFunctionPtr FunctionPtr)
 
MOVIESCENE_API FTaskID AddNullTask ()
 
MOVIESCENE_API FTaskID AddTask (const FTaskParams &InParams, TSharedPtr< ITaskContext > InTaskContext, TaskFunctionPtr InTaskFunction)
 
MOVIESCENE_API 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)
 
MOVIESCENE_API void AddPrerequisite (FTaskID Prerequisite, FTaskID Subsequent)
 
MOVIESCENE_API void AddChildBack (FTaskID Parent, FTaskID Child)
 
MOVIESCENE_API void AddChildFront (FTaskID Parent, FTaskID Child)
 

Static Public Member Functions

static bool IsCustomSchedulingEnabled ()
 

Constructor & Destructor Documentation

◆ FEntitySystemScheduler()

UE::MovieScene::FEntitySystemScheduler::FEntitySystemScheduler ( FEntityManager InEntityManager)
explicit

Construction from an entity manager pointer that must outlive the instance of this class

◆ ~FEntitySystemScheduler()

UE::MovieScene::FEntitySystemScheduler::~FEntitySystemScheduler ( )

Member Function Documentation

◆ AddChildBack()

void UE::MovieScene::FEntitySystemScheduler::AddChildBack ( FTaskID  Parent,
FTaskID  Child 
)

Add a child to the front of a previously created 'forked' task. Used for defining 'PreTask' work

◆ AddChildFront()

void UE::MovieScene::FEntitySystemScheduler::AddChildFront ( FTaskID  Parent,
FTaskID  Child 
)

Add a child to the back of a previously created 'forked' task. Used for defining 'PostTask' work

◆ AddNullTask()

FTaskID UE::MovieScene::FEntitySystemScheduler::AddNullTask ( )

Add a 'null' task that can be used to join many tasks into a single dependency

◆ AddPrerequisite()

void UE::MovieScene::FEntitySystemScheduler::AddPrerequisite ( FTaskID  Prerequisite,
FTaskID  Subsequent 
)

Define a prerequisite for the given task

◆ AddTask() [1/2]

template<typename TaskType , typename ... TaskArgTypes>
FTaskID UE::MovieScene::FEntitySystemScheduler::AddTask ( const FTaskParams InParams,
TaskArgTypes &&...  Args 
)
inline

Add a new task of the specified type for the currently open node ID

Example usage: TaskScheduler->AddTask<FMyTaskType>(FTaskParams(GET_STAT_ID(StatId))); TaskScheduler->AddTask<FMyTaskType2>(FTaskParams(GET_STAT_ID(StatId)), ConstructorArg1, ConstructorArg2);

◆ AddTask() [2/2]

FTaskID UE::MovieScene::FEntitySystemScheduler::AddTask ( const FTaskParams InParams,
TSharedPtr< ITaskContext InTaskContext,
TaskFunctionPtr  InTaskFunction 
)

Add an anonymous unbound task for doing non-ecs work

◆ BeginConstruction()

void UE::MovieScene::FEntitySystemScheduler::BeginConstruction ( )

Reset this task scheduler to its default state ready to start rebuilding its task graph

◆ BeginSystem()

void UE::MovieScene::FEntitySystemScheduler::BeginSystem ( uint16  NodeID)

Begin construction of tasks for a system with the specified unique Node ID. Only one system at a time is supported. Must call EndSystem with the same ID before the next system can begin.

◆ CompleteTask()

void UE::MovieScene::FEntitySystemScheduler::CompleteTask ( const FScheduledTask Task,
FTaskExecutionFlags  InFlags 
) const

Called when a task has been completed

◆ CreateForkedAllocationTask()

FTaskID UE::MovieScene::FEntitySystemScheduler::CreateForkedAllocationTask ( const FTaskParams InParams,
TSharedPtr< ITaskContext InTaskContext,
TaskFunctionPtr  InTaskFunction,
TFunctionRef< void(FEntityAllocationIteratorItem, TArray< FPreLockedDataPtr > &)>  InPreLockFunc,
const FEntityComponentFilter Filter,
const FComponentMask ReadDeps,
const FComponentMask WriteDeps 
)

Create one task for each of the entity allocations that match the specified filter

◆ EndConstruction()

void UE::MovieScene::FEntitySystemScheduler::EndConstruction ( )

Complete construction of the task graph and clean up transient data

◆ EndSystem()

void UE::MovieScene::FEntitySystemScheduler::EndSystem ( uint16  NodeID)

Begin construction of tasks for a system with the specified unique Node ID

◆ ExecuteTasks()

void UE::MovieScene::FEntitySystemScheduler::ExecuteTasks ( )

Execute all tasks as soon as possible, waiting for the result

◆ GetEntityManager()

const FEntityManager * UE::MovieScene::FEntitySystemScheduler::GetEntityManager ( ) const
inline

◆ GetWriteContextOffset()

FEntityAllocationWriteContext UE::MovieScene::FEntitySystemScheduler::GetWriteContextOffset ( ) const
inline

◆ HasAnyTasksToPropagateDownstream()

bool UE::MovieScene::FEntitySystemScheduler::HasAnyTasksToPropagateDownstream ( ) const

Check whether the currently open node has produced any tasks that need to be propagated to downstream system dependencies

◆ IsCustomSchedulingEnabled()

bool UE::MovieScene::FEntitySystemScheduler::IsCustomSchedulingEnabled ( )
static

Check whether custom task scheduling is enabled based on the state of the Sequencer.CustomTaskScheduling console variable

◆ OnAllTasksFinished()

void UE::MovieScene::FEntitySystemScheduler::OnAllTasksFinished ( ) const

Called when all tasks have been completed

◆ PrerequisiteCompleted() [1/2]

void UE::MovieScene::FEntitySystemScheduler::PrerequisiteCompleted ( const FScheduledTask Task,
int32 OptRunInlineIndex 
) const

◆ PrerequisiteCompleted() [2/2]

void UE::MovieScene::FEntitySystemScheduler::PrerequisiteCompleted ( FTaskID  TaskID,
int32 OptRunInlineIndex 
) const

Called when a task that was defined as a prerequisite for TaskID has been completed. If this was the last remaining prerequisite, the task will be scheduled

Parameters
TaskIDThe subsequent task that may be ready to be scheduled
OptRunInlineIndex(Optional) When non-null, can be assigned a new task to run inline after this function call to avoid scheduling overhead

◆ PropagatePrerequisite()

void UE::MovieScene::FEntitySystemScheduler::PropagatePrerequisite ( uint16  ToNodeID)

Propagate the outputs of this system to the specified downstream node as prerequisites for (optional) consumption when it is built. Normally systems do not depend on the outputs of other systems other than strict read/write ordering on components, unless there is a strict system dependency

◆ ShuffleTasks()

void UE::MovieScene::FEntitySystemScheduler::ShuffleTasks ( )

(Debug only) Shuffle the task buffer to test determinism regardless of construction order

◆ ToString()

FString UE::MovieScene::FEntitySystemScheduler::ToString ( ) const

The documentation for this class was generated from the following files: