UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
IMovieSceneTaskScheduler.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
5#include "Stats/Stats.h"
6#include "Misc/TVariant.h"
10
11namespace UE::MovieScene
12{
13
19
20struct FTaskID
21{
23
24 explicit FTaskID()
26 {}
27
29 : Index(InIndex)
30 {}
31
32 static FTaskID None()
33 {
34 return FTaskID(INDEX_NONE);
35 }
36
37 explicit operator bool() const
38 {
39 return Index != INDEX_NONE;
40 }
41};
42
44{
45 explicit FTaskParams(const TStatId& InStatId)
46 :
48 DebugName(nullptr),
49#endif
51 {
52 bForceGameThread = false;
53 bSerialTasks = false;
56 bForcePrePostTask = false;
57 }
58
59 explicit FTaskParams(const TCHAR* InDebugName, const TStatId& InStatId = TStatId())
60 :
63#endif
65 {
66 bForceGameThread = false;
67 bSerialTasks = false;
70 bForcePrePostTask = false;
71 }
72
77 {
79 return *this;
80 }
81
86 {
87 bForceGameThread = true;
88 return *this;
89 }
90
95 {
96 bForcePrePostTask = true;
97 return *this;
98 }
99
100#if !(UE_BUILD_SHIPPING || UE_BUILD_TEST)
102#endif
109};
110
111
113{
114 virtual ~ITaskContext() {}
115};
116
117template<typename TaskType>
119{
120 TaskType Task;
121
122 template<typename ...ArgTypes>
123 explicit TAnonTaskWrapper(ArgTypes&&... InArgs)
124 : Task{ Forward<ArgTypes>(InArgs)... }
125 {}
126
128 {
129 static_cast<const TAnonTaskWrapper<TaskType>*>(Context)->Task.Run(WriteContext);
130 }
131};
132
133template<typename ClassType>
135{
136 using MemberFunctionPtr = void (ClassType::*)();
137
138 ClassType* ClassPtr;
140
145
147 {
149 (This->ClassPtr->*This->FunctionPtr)();
150 }
151};
152
153
154using UnboundTaskFunctionPtr = void (*)(const ITaskContext* TaskContext, FEntityAllocationWriteContext WriteContext);
155using AllocationFunctionPtr = void (*)(const FEntityAllocation* Allocation, const ITaskContext* TaskContext, FEntityAllocationWriteContext WriteContext);
158
160
162{
163public:
164
172 template<typename TaskType, typename ...TaskArgTypes>
178
185 template<typename TaskType>
191
196
201
206
211
216
221
222private:
224 IEntitySystemScheduler() = default;
225};
226
227
228} // namespace UE::MovieScene
OODEFFUNC typedef void(OODLE_CALLBACK t_fp_OodleCore_Plugin_Free)(void *ptr)
#define UE_BUILD_TEST
Definition Build.h:17
#define UE_BUILD_SHIPPING
Definition Build.h:20
@ INDEX_NONE
Definition CoreMiscDefines.h:150
FPlatformTypes::TCHAR TCHAR
Either ANSICHAR or WIDECHAR, depending on whether the platform supports wide characters or the requir...
Definition Platform.h:1135
FPlatformTypes::int32 int32
A 32-bit signed integer.
Definition Platform.h:1125
TSharedRef< InObjectType, InMode > MakeShared(InArgTypes &&... Args)
Definition SharedPointer.h:2009
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
const bool
Definition NetworkReplayStreaming.h:178
if(Failed) console_printf("Failed.\n")
uint8_t uint8
Definition binka_ue_file_header.h:8
Definition ArrayView.h:139
Definition Array.h:670
Definition AssetRegistryState.h:50
Definition SharedPointer.h:692
Definition TVariant.h:48
Definition MovieSceneTaskScheduler.h:171
Definition IMovieSceneTaskScheduler.h:162
MOVIESCENE_API FTaskID AddNullTask()
Definition IMovieSceneTaskScheduler.cpp:9
FTaskID AddMemberFunctionTask(const FTaskParams &InParams, TaskType *Instance, typename TMemberFunctionTaskWrapper< TaskType >::MemberFunctionPtr FunctionPtr)
Definition IMovieSceneTaskScheduler.h:186
FTaskID AddTask(const FTaskParams &InParams, TaskArgTypes &&... Args)
Definition IMovieSceneTaskScheduler.h:173
MOVIESCENE_API void AddPrerequisite(FTaskID Prerequisite, FTaskID Subsequent)
Definition IMovieSceneTaskScheduler.cpp:24
MOVIESCENE_API void AddChildFront(FTaskID Parent, FTaskID Child)
Definition IMovieSceneTaskScheduler.cpp:34
MOVIESCENE_API void AddChildBack(FTaskID Parent, FTaskID Child)
Definition IMovieSceneTaskScheduler.cpp:29
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)
Definition IMovieSceneTaskScheduler.cpp:19
Definition ConstraintsManager.h:14
void(*)(FEntityAllocationIteratorItem Item, TArrayView< const FPreLockedDataPtr > PreLockedData, const ITaskContext *TaskContext, FEntityAllocationWriteContext WriteContext) PreLockedAllocationItemFunctionPtr
Definition IMovieSceneTaskScheduler.h:157
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
U16 Index
Definition radfft.cpp:71
Definition TVariant.h:13
Definition RelativePtr.h:11
Definition LightweightStats.h:416
Definition MovieSceneEntityIDs.h:40
Definition MovieSceneEntitySystemTypes.h:977
Definition MovieSceneEntitySystemTypes.h:425
Definition MovieSceneEntitySystemTypes.h:624
Definition MovieSceneEntitySystemTypes.h:295
Definition IMovieSceneTaskScheduler.h:21
FTaskID()
Definition IMovieSceneTaskScheduler.h:24
static FTaskID None()
Definition IMovieSceneTaskScheduler.h:32
int32 Index
Definition IMovieSceneTaskScheduler.h:22
FTaskID(int32 InIndex)
Definition IMovieSceneTaskScheduler.h:28
Definition IMovieSceneTaskScheduler.h:44
FTaskParams(const TStatId &InStatId)
Definition IMovieSceneTaskScheduler.h:45
uint8 bForcePrePostTask
Definition IMovieSceneTaskScheduler.h:106
uint8 bForcePropagateDownstream
Definition IMovieSceneTaskScheduler.h:107
FTaskParams & ForceGameThread()
Definition IMovieSceneTaskScheduler.h:85
FTaskParams(const TCHAR *InDebugName, const TStatId &InStatId=TStatId())
Definition IMovieSceneTaskScheduler.h:59
FTaskParams & ForcePrePostTask()
Definition IMovieSceneTaskScheduler.h:94
uint8 bForceConsumeUpstream
Definition IMovieSceneTaskScheduler.h:108
uint8 bForceGameThread
Definition IMovieSceneTaskScheduler.h:104
FTaskParams & Stat(const TStatId &InStatId)
Definition IMovieSceneTaskScheduler.h:76
TStatId StatId
Definition IMovieSceneTaskScheduler.h:103
uint8 bSerialTasks
Definition IMovieSceneTaskScheduler.h:105
const TCHAR * DebugName
Definition IMovieSceneTaskScheduler.h:101
Definition IMovieSceneTaskScheduler.h:113
virtual ~ITaskContext()
Definition IMovieSceneTaskScheduler.h:114
Definition IMovieSceneTaskScheduler.h:119
static void Execute(const ITaskContext *Context, FEntityAllocationWriteContext WriteContext)
Definition IMovieSceneTaskScheduler.h:127
TAnonTaskWrapper(ArgTypes &&... InArgs)
Definition IMovieSceneTaskScheduler.h:123
TaskType Task
Definition IMovieSceneTaskScheduler.h:120
Definition IMovieSceneTaskScheduler.h:135
MemberFunctionPtr FunctionPtr
Definition IMovieSceneTaskScheduler.h:139
ClassType * ClassPtr
Definition IMovieSceneTaskScheduler.h:138
void(ClassType::*)() MemberFunctionPtr
Definition IMovieSceneTaskScheduler.h:136
static void Execute(const ITaskContext *Context, FEntityAllocationWriteContext WriteContext)
Definition IMovieSceneTaskScheduler.h:146
TMemberFunctionTaskWrapper(ClassType *InClassPtr, MemberFunctionPtr InFunctionPtr)
Definition IMovieSceneTaskScheduler.h:141