UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
MovieSceneEntitySystemGraphs.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
6#include "Containers/Array.h"
15#include "HAL/Platform.h"
16#include "HAL/PlatformCrt.h"
17#include "Math/NumericLimits.h"
19#include "Templates/Casts.h"
22#include "UObject/Class.h"
23#include "UObject/Object.h"
25#include "UObject/ObjectPtr.h"
26
27#include "MovieSceneEntitySystemGraphs.generated.h"
28
32template <typename FuncType> class TFunctionRef;
33
34namespace UE
35{
36namespace MovieScene
37{
38
39 struct FSystemSubsequentTasks;
40 struct FSystemTaskPrerequisites;
41
42 class FEntityManager;
43 class FEntitySystemScheduler;
44
45
46} // namespace MovieScene
47} // namespace UE
48
49
50USTRUCT()
69
70USTRUCT()
79template<>
80struct TStructOpsTypeTraits<FMovieSceneEntitySystemGraphNodes> : public TStructOpsTypeTraitsBase2<FMovieSceneEntitySystemGraphNodes>
81{
83};
84
85
86USTRUCT()
88{
90
92
95
97 void operator=(const FMovieSceneEntitySystemGraph&) = delete;
98
101
103
105
112
113 template<typename Iter>
115 {
117 for (const FDirectionalEdge& Edge : ReferenceGraph.GetEdgesFrom(GetGraphID(FromReference)))
118 {
119 Iterator(Nodes.Array[Edge.ToNode]);
120 }
121 }
122
124 template<typename Allocator>
129 template<typename Iter>
130 void IterateReferencesTo(const UMovieSceneEntitySystem* ToReference, Iter&& Iterator)
131 {
132 const uint16 ToNode = GetGraphID(ToReference);
134 for (const FDirectionalEdge& Edge : ReferenceGraph.GetEdges())
135 {
136 if (Edge.ToNode == ToNode)
137 {
138 Iterator(Nodes.Array[Edge.FromNode]);
139 }
140 }
141 }
142
143 bool IsEmpty() const
144 {
145 return Nodes.Array.Num() == 0;
146 }
147
148 bool HasReferencesTo(const UMovieSceneEntitySystem* ToReference) const
149 {
150 return ReferenceGraph.HasEdgeTo(GetGraphID(ToReference));
151 }
152
154 {
155 return ReferenceGraph.HasEdgeFrom(GetGraphID(FromReference));
156 }
157
159
161
163
165
166 MOVIESCENE_API int32 NumInPhase(UE::MovieScene::ESystemPhase Phase) const;
167
169
171
172 MOVIESCENE_API void ReconstructTaskSchedule(UE::MovieScene::FEntityManager* EntityManager);
173 MOVIESCENE_API void ScheduleTasks(UE::MovieScene::FEntityManager* EntityManager);
174
176
177 template<typename SystemType>
179 {
180 return CastChecked<SystemType>(FindSystemOfType(SystemType::StaticClass()), ECastCheckedType::NullAllowed);
181 }
182
184
185 MOVIESCENE_API void DebugPrint() const;
186
187 MOVIESCENE_API FString ToString() const;
188
189private:
190
191 // Implementation function that means we don't need to #include the entity system
192 static MOVIESCENE_API uint16 GetGraphID(const UMovieSceneEntitySystem* InSystem);
193
194 MOVIESCENE_API void UpdateCache();
195
196 template<typename ArrayType>
198
199private:
201
203 TArray<uint16, TInlineAllocator<8>> InstantiationPhase;
206 TArray<uint16, TInlineAllocator<2>> FinalizationPhase;
207
209
210 UPROPERTY()
212
213 TMap<uint16, uint16> GlobalToLocalNodeIDs;
214
215 UE::MovieScene::FDirectedGraph ReferenceGraph;
216 uint64 SchedulerSerialNumber = 0;
217
218 uint32 SerialNumber = 0;
219 uint32 PreviousSerialNumber = 0;
220 uint32 ReentrancyGuard = 0;
221};
222
223
224template<>
#define check(expr)
Definition AssertionMacros.h:314
FPlatformTypes::int32 int32
A 32-bit signed integer.
Definition Platform.h:1125
FPlatformTypes::uint64 uint64
A 64-bit unsigned integer.
Definition Platform.h:1117
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
#define UPROPERTY(...)
UObject definition macros.
Definition ObjectMacros.h:744
#define GENERATED_BODY(...)
Definition ObjectMacros.h:765
#define USTRUCT(...)
Definition ObjectMacros.h:746
uint16_t uint16
Definition binka_ue_file_header.h:7
uint32_t uint32
Definition binka_ue_file_header.h:6
Definition UObjectGlobals.h:2492
Definition MovieScene.Build.cs:6
Definition Array.h:670
Definition AssetRegistryState.h:50
Definition UnrealString.h.inl:34
Definition SharedPointer.h:692
Definition SparseArray.h:524
Definition SubclassOf.h:30
Definition UniquePtr.h:107
Definition MovieSceneEntityManager.h:81
Definition MovieSceneEntitySystemLinker.h:113
Definition MovieSceneEntitySystem.h:62
@ NullAllowed
Definition Object.h:62
Definition Linker.cpp:38
ESystemPhase
Definition MovieSceneEntitySystemTypes.h:45
Definition AdvancedWidgetsModule.cpp:13
Definition MovieSceneEntitySystemGraphs.h:52
FMovieSceneEntitySystemGraphNode(UMovieSceneEntitySystem *InSystem)
Definition MovieSceneEntitySystemGraphs.h:59
FMovieSceneEntitySystemGraphNode()
Definition MovieSceneEntitySystemGraphs.h:55
TSharedPtr< UE::MovieScene::FSystemTaskPrerequisites > SubsequentTasks
Definition MovieSceneEntitySystemGraphs.h:64
TSharedPtr< UE::MovieScene::FSystemTaskPrerequisites > Prerequisites
Definition MovieSceneEntitySystemGraphs.h:63
Definition MovieSceneEntitySystemGraphs.h:72
TSparseArray< FMovieSceneEntitySystemGraphNode > Array
Definition MovieSceneEntitySystemGraphs.h:77
Definition MovieSceneEntitySystemGraphs.h:88
bool HasReferencesTo(const UMovieSceneEntitySystem *ToReference) const
Definition MovieSceneEntitySystemGraphs.h:148
bool IsEmpty() const
Definition MovieSceneEntitySystemGraphs.h:143
void IterateReferencesTo(const UMovieSceneEntitySystem *ToReference, Iter &&Iterator)
Definition MovieSceneEntitySystemGraphs.h:130
void IterateReferencesFrom(const UMovieSceneEntitySystem *FromReference, Iter &&Iterator)
Definition MovieSceneEntitySystemGraphs.h:114
SystemType * FindSystemOfType() const
Definition MovieSceneEntitySystemGraphs.h:178
bool HasReferencesFrom(const UMovieSceneEntitySystem *FromReference) const
Definition MovieSceneEntitySystemGraphs.h:153
void GatherReferencesTo(const UMovieSceneEntitySystem *ToReference, TArray< UMovieSceneEntitySystem *, Allocator > &OutReferences)
Definition MovieSceneEntitySystemGraphs.h:125
Definition NumericLimits.h:41
Definition ObjectPtr.h:488
Definition StructOpsTypeTraits.h:11
@ WithAddStructReferencedObjects
Definition StructOpsTypeTraits.h:22
Definition StructOpsTypeTraits.h:46
Definition MovieSceneEntitySystemDirectedGraph.h:27
Definition MovieSceneSystemTaskDependencies.h:98