UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
MovieSceneEntitySystemLinker.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
7#include "Engine/World.h"
11#include "Tickable.h"
12#include "UObject/ObjectKey.h"
19
20#include "MovieSceneEntitySystemLinker.generated.h"
21
25
26namespace UE
27{
28namespace MovieScene
29{
30
31 struct FComponentRegistry;
32 enum class ERunnerFlushState;
33 enum class EEntitySystemCategory : uint32;
34
36 {
37 Enabled,
38 Disable,
39 };
40
43 {
45 Unknown = 0,
51 UMG,
57 Custom
58 };
59
62
101
102}
103}
104
109
110UCLASS(MinimalAPI)
113{
114public:
115
116 template<typename T>
124
126
127 UPROPERTY()
129
130public:
131
133
134 UE::MovieScene::FPreAnimatedStateExtension PreAnimatedState;
135
138
141
146
148 FInstanceRegistry* GetInstanceRegistry()
149 {
150 check(InstanceRegistry.IsValid());
151 return InstanceRegistry.Get();
152 }
153
156 {
157 check(InstanceRegistry.IsValid());
158 return InstanceRegistry.Get();
159 }
160
161 template<typename SystemType>
163 {
164 return CastChecked<SystemType>(LinkSystem(SystemType::StaticClass()));
165 }
166
168 template<typename SystemType>
170 {
171 return Cast<SystemType>(LinkSystemIfAllowed(SystemType::StaticClass()));
172 }
173
174 template<typename SystemType>
176 {
177 return CastChecked<SystemType>(FindSystem(SystemType::StaticClass()), ECastCheckedType::NullAllowed);
178 }
179
182
184
186
191 {
192 return SystemFilter;
193 }
194
199 {
200 return Role;
201 }
202
210
214 MOVIESCENE_API void Reset();
215
219 virtual UWorld* GetWorld() const override { return WeakWorld.IsValid() ? WeakWorld.Get() : Super::GetWorld(); }
220
224 void SetWorld(UWorld* InWorld) { WeakWorld = InWorld; }
225
226public:
227
231 template<typename ExtensionType>
236
243 template<typename ExtensionType>
245 {
246 const int32 Index = InID.ID;
247 if (!ExtensionsByID.IsValidIndex(Index))
248 {
249 ExtensionsByID.Insert(Index, InExtension);
250 }
251 else
252 {
253 check(ExtensionsByID[Index] == InExtension);
254 }
255 }
256
263 template<typename ExtensionType>
265 {
266 AddExtension(ExtensionType::GetExtensionID(), InExtension);
267 }
268
275 template<typename ExtensionType>
277 {
278 const int32 Index = InID.ID;
279 if (ExtensionsByID.IsValidIndex(Index))
280 {
281 return static_cast<ExtensionType*>(ExtensionsByID[Index]);
282 }
283
284 return nullptr;
285 }
286
287
294 template<typename ExtensionType>
296 {
297 const int32 Index = ExtensionType::GetExtensionID().ID;
298 if (ExtensionsByID.IsValidIndex(Index))
299 {
300 return static_cast<ExtensionType*>(ExtensionsByID[Index]);
301 }
302
303 return nullptr;
304 }
305
306
313 {
314 const int32 Index = ExtensionID.ID;
315 if (ExtensionsByID.IsValidIndex(Index))
316 {
317 ExtensionsByID.RemoveAt(Index);
318 }
319 }
320
321public:
322
323 // Internal API
324
326 MOVIESCENE_API void SystemUnlinked(UMovieSceneEntitySystem* InSystem);
327
328 MOVIESCENE_API bool HasLinkedSystem(const uint16 GlobalDependencyGraphID);
329
330 MOVIESCENE_API void LinkRelevantSystems();
331 MOVIESCENE_API void UnlinkIrrelevantSystems();
332 MOVIESCENE_API void AutoLinkRelevantSystems();
333 MOVIESCENE_API void AutoUnlinkIrrelevantSystems();
334
335 MOVIESCENE_API bool HasStructureChangedSinceLastRun() const;
336
337 MOVIESCENE_API void InvalidateObjectBinding(const FGuid& ObjectBindingID, FInstanceHandle InstanceHandle);
338 MOVIESCENE_API void CleanupInvalidBoundObjects();
339
340 MOVIESCENE_API bool StartEvaluation();
342 MOVIESCENE_API void PostInstantation();
343 MOVIESCENE_API void EndEvaluation();
344
345 MOVIESCENE_API void ResetRunner();
346
347 MOVIESCENE_API void DestroyInstanceImmediately(UE::MovieScene::FRootInstanceHandle Instance);
348
349 UE_DEPRECATED(5.5, "Please use GetRunner()")
350 FMovieSceneEntitySystemRunner* GetActiveRunner() const { return &GetRunner().Get(); }
351
352private:
353
355
356 MOVIESCENE_API void HandlePreGarbageCollection();
357 MOVIESCENE_API void HandlePostGarbageCollection();
358
359 MOVIESCENE_API void TagInvalidBoundObjects();
360 MOVIESCENE_API void CleanGarbage();
361
362 MOVIESCENE_API void OnWorldCleanup(UWorld* InWorld, bool bSessionEnded, bool bCleanupResources);
363 MOVIESCENE_API void OnObjectsReplaced(const TMap<UObject*, UObject*>& ReplacementMap);
364
365 MOVIESCENE_API virtual void BeginDestroy() override;
366
368
369private:
370
371 TUniquePtr<FInstanceRegistry> InstanceRegistry;
372
373 TSparseArray<UMovieSceneEntitySystem*> EntitySystemsByGlobalGraphID;
375
377 TBitArray<> RunnerReentrancyFlags;
378
379 TSparseArray<void*> ExtensionsByID;
380
382
383public:
384
385 struct
386 {
392 } Events;
393
394private:
395
396 uint64 LastSystemLinkVersion;
397 uint64 LastSystemUnlinkVersion;
398 uint64 LastInstantiationVersion;
399
400 TWeakPtr<bool> GlobalStateCaptureToken;
401 TWeakObjectPtr<UWorld> WeakWorld;
402
403protected:
404
408};
#define check(expr)
Definition AssertionMacros.h:314
#define UE_DEPRECATED(Version, Message)
Definition CoreMiscDefines.h:302
#define TEXT(x)
Definition Platform.h:1272
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
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 DECLARE_MULTICAST_DELEGATE_TwoParams(DelegateName, Param1Type, Param2Type)
Definition DelegateCombinations.h:58
#define DECLARE_MULTICAST_DELEGATE_OneParam(DelegateName, Param1Type)
Definition DelegateCombinations.h:49
#define UPROPERTY(...)
UObject definition macros.
Definition ObjectMacros.h:744
#define GENERATED_BODY(...)
Definition ObjectMacros.h:765
#define UCLASS(...)
Definition ObjectMacros.h:776
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 MovieSceneEntitySystemRunner.h:74
Definition UObjectGlobals.h:1292
Definition UObjectGlobals.h:2492
Definition MovieScene.Build.cs:6
Definition UnrealString.h.inl:34
Definition SharedPointer.h:692
Definition SharedPointer.h:153
Definition SparseArray.h:524
Definition SubclassOf.h:30
Definition UniquePtr.h:107
Definition SharedPointer.h:1295
Definition MovieSceneEntityManager.h:81
Definition MovieSceneCompiledDataManager.h:181
Definition MovieSceneEntitySystemLinker.h:113
FMovieSceneEntitySystemLinkerEvent AbandonLinker
Definition MovieSceneEntitySystemLinker.h:391
SystemType * FindSystem() const
Definition MovieSceneEntitySystemLinker.h:175
virtual UWorld * GetWorld() const override
Definition MovieSceneEntitySystemLinker.h:219
SystemType * LinkSystemIfAllowed()
Definition MovieSceneEntitySystemLinker.h:169
UE::MovieScene::FSystemFilter & GetSystemFilter()
Definition MovieSceneEntitySystemLinker.h:190
FEntityManager EntityManager
Definition MovieSceneEntitySystemLinker.h:125
FMovieSceneEntitySystemLinkerEvent CleanTaggedGarbage
Definition MovieSceneEntitySystemLinker.h:389
ExtensionType * FindExtension(UE::MovieScene::TEntitySystemLinkerExtensionID< ExtensionType > InID) const
Definition MovieSceneEntitySystemLinker.h:276
void RemoveExtension(UE::MovieScene::FEntitySystemLinkerExtensionID ExtensionID)
Definition MovieSceneEntitySystemLinker.h:312
void AddExtension(ExtensionType *InExtension)
Definition MovieSceneEntitySystemLinker.h:264
FMovieSceneEntitySystemLinkerEvent TagGarbage
Definition MovieSceneEntitySystemLinker.h:388
UE::MovieScene::EAutoLinkRelevantSystems AutoLinkMode
Definition MovieSceneEntitySystemLinker.h:406
FMovieSceneEntitySystemLinkerAROEvent AddReferencedObjects
Definition MovieSceneEntitySystemLinker.h:390
ExtensionType * FindExtension() const
Definition MovieSceneEntitySystemLinker.h:295
SystemType * LinkSystem()
Definition MovieSceneEntitySystemLinker.h:162
FMovieSceneEntitySystemLinkerPostSpawnEvent PostSpawnEvent
Definition MovieSceneEntitySystemLinker.h:387
UE::MovieScene::EEntitySystemLinkerRole GetLinkerRole() const
Definition MovieSceneEntitySystemLinker.h:198
void SetLinkerRole(UE::MovieScene::EEntitySystemLinkerRole InRole)
Definition MovieSceneEntitySystemLinker.h:206
const FInstanceRegistry * GetInstanceRegistry() const
Definition MovieSceneEntitySystemLinker.h:155
void SetWorld(UWorld *InWorld)
Definition MovieSceneEntitySystemLinker.h:224
static MOVIESCENE_API void AddReferencedObjects(UObject *InThis, FReferenceCollector &Collector)
void AddExtension(UE::MovieScene::TEntitySystemLinkerExtensionID< ExtensionType > InID, ExtensionType *InExtension)
Definition MovieSceneEntitySystemLinker.h:244
UE::MovieScene::FSystemFilter SystemFilter
Definition MovieSceneEntitySystemLinker.h:407
UE::MovieScene::EEntitySystemLinkerRole Role
Definition MovieSceneEntitySystemLinker.h:405
static UE::MovieScene::TEntitySystemLinkerExtensionID< ExtensionType > RegisterExtension()
Definition MovieSceneEntitySystemLinker.h:232
Definition MovieSceneEntitySystem.h:62
Definition Object.h:95
Definition World.h:918
@ NullAllowed
Definition Object.h:62
EEntitySystemLinkerRole RegisterCustomEntitySystemLinkerRole()
Definition MovieSceneEntitySystemLinker.cpp:43
EAutoLinkRelevantSystems
Definition MovieSceneEntitySystemLinker.h:36
ERunnerFlushState
Definition MovieSceneEntitySystemRunner.h:30
EEntitySystemCategory
Definition MovieSceneEntitySystem.h:33
EEntitySystemLinkerRole
Definition MovieSceneEntitySystemLinker.h:43
Definition AdvancedWidgetsModule.cpp:13
U16 Index
Definition radfft.cpp:71
Definition Guid.h:109
Definition MovieSceneEntitySystemRunner.cpp:53
Definition MovieSceneEntitySystemGraphs.h:88
Definition ObjectPtr.h:488
Definition WeakObjectPtrTemplates.h:25
Definition MovieSceneComponentRegistry.h:46
Definition MovieSceneEntityIDs.h:174
Definition MovieSceneEntitySystemLinkerExtension.h:14
int32 ID
Definition MovieSceneEntitySystemLinkerExtension.h:15
Definition MovieSceneSequenceInstanceHandle.h:15
Definition MovieSceneInstanceRegistry.h:39
Definition MovieSceneEntityIDs.h:302
Definition MovieSceneSequenceInstanceHandle.h:58
Definition MovieSceneEntitySystemLinker.h:65
MOVIESCENE_API void SetDisallowedCategories(EEntitySystemCategory InCategory)
Definition MovieSceneEntitySystemLinker.cpp:107
MOVIESCENE_API void SetAllowedCategories(EEntitySystemCategory InCategory)
Definition MovieSceneEntitySystemLinker.cpp:97
MOVIESCENE_API void AllowCategory(EEntitySystemCategory InCategory)
Definition MovieSceneEntitySystemLinker.cpp:102
MOVIESCENE_API void DisallowSystem(TSubclassOf< UMovieSceneEntitySystem > InClass)
Definition MovieSceneEntitySystemLinker.cpp:128
MOVIESCENE_API FSystemFilter()
Definition MovieSceneEntitySystemLinker.cpp:53
MOVIESCENE_API void AllowSystem(TSubclassOf< UMovieSceneEntitySystem > InClass)
Definition MovieSceneEntitySystemLinker.cpp:117
MOVIESCENE_API void DisallowCategory(EEntitySystemCategory InCategory)
Definition MovieSceneEntitySystemLinker.cpp:112
bool CheckSystem() const
Definition MovieSceneEntitySystemLinker.h:71
Definition MovieSceneEntityIDs.h:283
Definition MovieSceneEntitySystemLinkerExtension.h:21