UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
MovieSceneEntitySystem.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
10#include "HAL/Platform.h"
11#include "Misc/EnumClassFlags.h"
12#include "Stats/Stats.h"
14#include "UObject/Object.h"
16#include "UObject/ObjectPtr.h"
18
19#include "MovieSceneEntitySystem.generated.h"
20
22
23namespace UE
24{
25namespace MovieScene
26{
27
28 struct FSystemSubsequentTasks;
29 struct FSystemTaskPrerequisites;
30 class IEntitySystemScheduler;
31
33 {
34 // No category
35 None = 0,
36 // Systems lacking any particular category
37 Unspecified = 1u << 0,
38 // Core systems, such as the time evaluation system
39 Core = 1u << 1,
40 // Systems that evaluate channel values
41 ChannelEvaluators = 1u << 2,
42 // Systems the blend values together
43 BlenderSystems = 1u << 3,
44 // Systems that set properties on objects
45 PropertySystems = 1u << 4,
46 // Start of custom categories
47 Custom = 1u << 5,
48
49 // Last entry, used as error condition
50 Last = 1u << 31,
51 // All categories
52 All = ~0u
53 };
55
56} // namespace MovieScene
57} // namespace UE
58
59
60UCLASS(MinimalAPI)
62{
63public:
65
66
67 template<typename T>
71
74
77
85
93 static MOVIESCENE_API void DefineComponentProducer(TSubclassOf<UMovieSceneEntitySystem> ClassType, FComponentTypeID ComponentType);
94
101 static MOVIESCENE_API void DefineComponentConsumer(TSubclassOf<UMovieSceneEntitySystem> ClassType, FComponentTypeID ComponentType);
102
106 static MOVIESCENE_API void LinkRelevantSystems(UMovieSceneEntitySystemLinker* InLinker);
107
112
116 static MOVIESCENE_API void LinkAllSystems(UMovieSceneEntitySystemLinker* InLinker);
117
121 static MOVIESCENE_API UE::MovieScene::EEntitySystemCategory RegisterCustomSystemCategory();
122
126 static MOVIESCENE_API void SortByFlowOrder(TArray<uint16>& InOutGlobalNodeIDs);
127
132
139 static MOVIESCENE_API void PrintFilteredFlowGraph(TArrayView<const TBitArray<>> GroupFilters, FStringBuilderBase& OutString);
140
144 static MOVIESCENE_API void DebugPrintGlobalDependencyGraph(bool bUpdateCache = true);
145
146public:
147
150 {
151 return SystemCategories;
152 }
153
156 {
157 return Phase;
158 }
159
162 {
163 return Linker;
164 }
165
168 {
169 return GraphID;
170 }
173 {
174 GraphID = InGraphID;
175 }
176
179 {
180 return GlobalDependencyGraphID;
181 }
182
184 MOVIESCENE_API void Unlink();
185
187 MOVIESCENE_API void Abandon();
188
191
193 MOVIESCENE_API void SchedulePersistentTasks(UE::MovieScene::IEntitySystemScheduler* Scheduler);
194
196 MOVIESCENE_API void Run(FSystemTaskPrerequisites& InPrerequisites, FSystemSubsequentTasks& Subsequents);
197
200
201 MOVIESCENE_API void ConditionalLinkSystem(UMovieSceneEntitySystemLinker* InLinker) const;
202
203 MOVIESCENE_API void TagGarbage();
204
205 MOVIESCENE_API void CleanTaggedGarbage();
206
210 MOVIESCENE_API void Enable();
211
216 MOVIESCENE_API void Disable();
217
218
223 MOVIESCENE_API static bool IsCustomSchedulingEnabled();
224
225protected:
226
227 MOVIESCENE_API virtual bool IsReadyForFinishDestroy() override;
228 MOVIESCENE_API virtual void FinishDestroy() override;
229
230private:
231
232 virtual void OnLink() {}
233
234 virtual void OnSchedulePersistentTasks(UE::MovieScene::IEntitySystemScheduler* TaskScheduler) { }
235
236 virtual void OnRun(FSystemTaskPrerequisites& InPrerequisites, FSystemSubsequentTasks& Subsequents) { }
237
238 virtual void OnUnlink() {}
239
240 MOVIESCENE_API virtual bool IsRelevantImpl(UMovieSceneEntitySystemLinker* InLinker) const;
241
242 MOVIESCENE_API virtual void ConditionalLinkSystemImpl(UMovieSceneEntitySystemLinker* InLinker) const;
243
244 virtual void OnTagGarbage() {}
245
246 virtual void OnCleanTaggedGarbage() {}
247
248protected:
249
250 UPROPERTY()
252
254
256 FComponentTypeID RelevantComponent;
257
258 UE::MovieScene::ESystemPhase Phase;
259
260 uint16 GraphID;
261 uint16 GlobalDependencyGraphID;
262
263 UE::MovieScene::EEntitySystemCategory SystemCategories;
264
266 bool bSystemIsEnabled;
267
268#if STATS || ENABLE_STATNAMEDEVENTS
269 TStatId StatID;
270#endif
271};
272
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
#define ENUM_CLASS_FLAGS(Enum)
Definition EnumClassFlags.h:6
#define UPROPERTY(...)
UObject definition macros.
Definition ObjectMacros.h:744
#define GENERATED_BODY(...)
Definition ObjectMacros.h:765
#define UCLASS(...)
Definition ObjectMacros.h:776
uint16_t uint16
Definition binka_ue_file_header.h:7
uint32_t uint32
Definition binka_ue_file_header.h:6
Definition UObjectGlobals.h:1292
Definition MovieScene.Build.cs:6
Definition ArrayView.h:139
Definition Array.h:670
Definition SubclassOf.h:30
Definition IMovieSceneTaskScheduler.h:162
Definition MovieSceneEntitySystemLinker.h:113
Definition MovieSceneEntitySystem.h:62
uint16 GetGlobalDependencyGraphID() const
Definition MovieSceneEntitySystem.h:178
UE::MovieScene::EEntitySystemCategory GetCategories() const
Definition MovieSceneEntitySystem.h:149
void SetGraphID(uint16 InGraphID)
Definition MovieSceneEntitySystem.h:172
UMovieSceneEntitySystemLinker * GetLinker() const
Definition MovieSceneEntitySystem.h:161
UE::MovieScene::ESystemPhase GetPhase() const
Definition MovieSceneEntitySystem.h:155
uint16 GetGraphID() const
Definition MovieSceneEntitySystem.h:167
Definition Object.h:95
Definition Linker.cpp:38
EEntitySystemCategory
Definition MovieSceneEntitySystem.h:33
ESystemPhase
Definition MovieSceneEntitySystemTypes.h:45
Definition AdvancedWidgetsModule.cpp:13
Definition ObjectPtr.h:488
Definition LightweightStats.h:416
Definition MovieSceneEntityIDs.h:40
Definition MovieSceneEntityIDs.h:174
Definition MovieSceneSystemTaskDependencies.h:98
Definition MovieSceneSystemTaskDependencies.h:29
Definition MovieSceneEntityIDs.h:283