UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
MovieSceneEntitySystemRunner.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
9#include "Containers/Array.h"
10#include "Delegates/Delegate.h"
15#include "HAL/Platform.h"
16#include "MovieSceneEntityIDs.h"
19
21
22namespace UE::MovieScene
23{
24
25class FEntityManager;
26struct FInstanceRegistry;
27
30{
31 None = 0, // Signifies no evaluation is currently underway
32 Start = 1 << 0, // Sets up initial evaluation flags for external players and listeners
33 ConditionalRecompile = 1 << 1, // Conditional recompile of dirtied sequences.
34 Import = 1 << 2, // Update sequence instances and import entities into the entity manager
35 ReimportAfterCompile = 1 << 3, // Re-update sequence instances after a recompile occurred on a partially evaluated sequence. Not normally run.
36 Spawn = 1 << 4, // Perform the Spawn phase in the Entity System Graph
37 Instantiation = 1 << 5, // Perform the Instantiation phase in the Entity System Graph
38 Evaluation = 1 << 6, // Perform the Evaluation phase in the Entity System Graph
39 Finalization = 1 << 7, // Perform the Finalization phase in the Entity System Graph and trigger any external events
40 EventTriggers = 1 << 8, // (re-entrant) Triggers any bound event triggers - skipped by Finalization if the delegate is not bound
41 PostEvaluation = 1 << 9, // (re-entrant) Call post evaluation callbacks on sequence instances
42 End = 1 << 10, // Counterpart for Start - resets external players and listeners
43};
45
46
48{
49 None = 0, // No special behavior - just update the instance along with everything else when the runner is next flushed
50 Flush = 1<<0, // Indicate that the runner should be completely flushed next update, ignoring any budgets
51 Finish = 1<<1, // Finish the sequence instance and restore state (if enabled) after this update
52 Destroy = 1<<2, // Destroy the sequence instance once this request has been fulfilled
53
54 FinalDissectionMask = Finish|Destroy, // A mask that includes flags that should only ever be included on final (or non-)dissected updates, not intermediate updates
55};
57
58
68
69} // namespace UE::MovieScene
70
72
73class FMovieSceneEntitySystemRunner : public TSharedFromThis<FMovieSceneEntitySystemRunner>
74{
75public:
76
80
81public:
82
85
95
104
110
119
129
135
140
143 {
144 return CurrentPhase;
145 }
146
151
156
163
164public:
165
166 UMovieSceneEntitySystemLinker* GetLinker() const { return WeakLinker.Get(); }
167 bool IsValid() const { return WeakLinker.IsValid(); }
168
171
172public:
173
174 UE_DEPRECATED(5.5, "Runners are now owned by linkers, and always attached")
176 UE_DEPRECATED(5.5, "Runners are now owned by linkers, and always attached")
177 bool IsAttachedToLinker() const { return IsValid(); }
178 UE_DEPRECATED(5.5, "Runners are now owned by linkers, and always attached")
180
181public:
182
183 // Internal API
184
187
192
193private:
194
199
207
213
229 MOVIESCENE_API void GameThread_EvaluationFinalizationPhase(UMovieSceneEntitySystemLinker* Linker);
231 MOVIESCENE_API void GameThread_EventTriggerPhase(UMovieSceneEntitySystemLinker* Linker);
233 MOVIESCENE_API void GameThread_PostEvaluationPhase(UMovieSceneEntitySystemLinker* Linker);
234
240
243
246
247private:
248
250
251 struct FDissectedUpdate
252 {
253 FSimpleDelegate OnFlushed;
254 FMovieSceneContext Context;
255
256 FInstanceHandle InstanceHandle;
257 int32 Order;
259 };
260
263
264 struct FQueuedUpdateParams
265 {
266 FInstanceHandle InstanceHandle;
268 };
269 struct FUpdateParamsAndContext
270 {
271 FSimpleDelegate OnFlushed;
273 FQueuedUpdateParams Params;
274 };
277
279 TArray<FQueuedUpdateParams> CurrentInstances;
281 TArray<FDissectedUpdate> DissectedUpdates;
282 TArray<FSimpleDelegate> OnFlushedDelegates;
286
288 uint32 ReentrancyCount;
289
290 ENamedThreads::Type GameThread;
291
292 UE::MovieScene::ESystemPhase CurrentPhase;
293
302
304 UE::MovieScene::ERunnerFlushState CurrentFlushState;
305
306 bool bCanQueueEventTriggers;
307
309 bool bRequireFullFlush;
310
311 bool bIsUpdatingSequence;
312};
OODEFFUNC typedef void(OODLE_CALLBACK t_fp_OodleCore_Plugin_Free)(void *ptr)
#define UE_DEPRECATED(Version, Message)
Definition CoreMiscDefines.h:302
FPlatformTypes::int32 int32
A 32-bit signed integer.
Definition Platform.h:1125
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
#define DECLARE_MULTICAST_DELEGATE(DelegateName)
Definition DelegateCombinations.h:23
#define ENUM_CLASS_FLAGS(Enum)
Definition EnumClassFlags.h:6
const bool
Definition NetworkReplayStreaming.h:178
uint32_t uint32
Definition binka_ue_file_header.h:6
Definition MovieSceneEntitySystemRunner.h:74
void DetachFromLinker()
Definition MovieSceneEntitySystemRunner.h:179
bool IsAttachedToLinker() const
Definition MovieSceneEntitySystemRunner.h:177
MOVIESCENE_API FEntityManager * GetEntityManager() const
Definition MovieSceneEntitySystemRunner.cpp:120
UMovieSceneEntitySystemLinker * GetLinker() const
Definition MovieSceneEntitySystemRunner.h:166
MOVIESCENE_API bool IsCurrentlyEvaluating() const
Definition MovieSceneEntitySystemRunner.cpp:138
FMovieSceneEntitySystemRunner()
Definition MovieSceneEntitySystemRunner.cpp:95
MOVIESCENE_API int32 GetQueuedUpdateCount() const
Definition MovieSceneEntitySystemRunner.cpp:148
MOVIESCENE_API FInstanceRegistry * GetInstanceRegistry() const
Definition MovieSceneEntitySystemRunner.cpp:129
UE::MovieScene::FInstanceHandle FInstanceHandle
Definition MovieSceneEntitySystemRunner.h:78
UE::MovieScene::ESystemPhase GetCurrentPhase() const
Definition MovieSceneEntitySystemRunner.h:142
MOVIESCENE_API bool QueueFinalUpdate(FInstanceHandle Instance)
Definition MovieSceneEntitySystemRunner.cpp:229
bool IsValid() const
Definition MovieSceneEntitySystemRunner.h:167
MOVIESCENE_API bool IsUpdatingSequence() const
Definition MovieSceneEntitySystemRunner.cpp:143
MOVIESCENE_API void FlushOutstanding(double BudgetMs=0.f, UE::MovieScene::ERunnerFlushState TargetState=UE::MovieScene::ERunnerFlushState::None)
Definition MovieSceneEntitySystemRunner.cpp:499
UE::MovieScene::FInstanceRegistry FInstanceRegistry
Definition MovieSceneEntitySystemRunner.h:79
MOVIESCENE_API bool QueueFinalUpdateAndDestroy(FInstanceHandle Instance)
Definition MovieSceneEntitySystemRunner.cpp:239
MOVIESCENE_API void DiscardQueuedUpdates(FInstanceHandle Instance)
Definition MovieSceneEntitySystemRunner.cpp:609
MOVIESCENE_API FMovieSceneEntitySystemEventTriggers & GetQueuedEventTriggers()
Definition MovieSceneEntitySystemRunner.cpp:1421
MOVIESCENE_API void ResetFlushState()
Definition MovieSceneEntitySystemRunner.cpp:593
MOVIESCENE_API void QueueUpdate(const FMovieSceneContext &Context, FInstanceHandle Instance, UE::MovieScene::ERunnerUpdateFlags UpdateFlags=UE::MovieScene::ERunnerUpdateFlags::None)
Definition MovieSceneEntitySystemRunner.cpp:174
MOVIESCENE_API bool HasQueuedUpdates() const
Definition MovieSceneEntitySystemRunner.cpp:153
MOVIESCENE_API bool FlushSingleEvaluationPhase()
Definition MovieSceneEntitySystemRunner.cpp:1427
MOVIESCENE_API void AbandonAndDestroyInstance(FInstanceHandle Instance)
Definition MovieSceneEntitySystemRunner.cpp:320
void AttachToLinker(UMovieSceneEntitySystemLinker *InLinker)
Definition MovieSceneEntitySystemRunner.h:175
UE::MovieScene::FEntityManager FEntityManager
Definition MovieSceneEntitySystemRunner.h:77
void MarkForUpdate(FInstanceHandle InInstanceHandle, UE::MovieScene::ERunnerUpdateFlags UpdateFlags)
Definition MovieSceneEntitySystemRunner.cpp:1398
MOVIESCENE_API ~FMovieSceneEntitySystemRunner()
Definition MovieSceneEntitySystemRunner.cpp:116
Definition Array.h:670
Definition SharedPointer.h:1640
Definition MovieSceneEntityManager.h:81
Definition MovieSceneEntitySystemLinker.h:113
UpdateFlags
Definition DetourCrowd.h:208
Type
Definition TaskGraphInterfaces.h:57
Definition Linker.cpp:38
FUniformParams Params
Definition MeshPaintVirtualTexture.cpp:162
Definition ConstraintsManager.h:14
ESequenceInstanceUpdateFlags
Definition MovieSceneSequenceInstance.h:40
ERunnerFlushResult
Definition MovieSceneEntitySystemRunner.h:60
ERunnerFlushState
Definition MovieSceneEntitySystemRunner.h:30
ESystemPhase
Definition MovieSceneEntitySystemTypes.h:45
ERunnerUpdateFlags
Definition MovieSceneEntitySystemRunner.h:48
Definition MovieScenePlayback.h:184
Definition MovieSceneEntitySystemRunner.cpp:53
Definition WeakObjectPtrTemplates.h:25
FORCEINLINE T * Get(bool bEvenIfPendingKill) const
Definition WeakObjectPtrTemplates.h:132
FORCEINLINE bool IsValid(bool bEvenIfPendingKill, bool bThreadsafeTest=false) const
Definition WeakObjectPtrTemplates.h:232
Definition MovieSceneSequenceInstanceHandle.h:15
Definition MovieSceneInstanceRegistry.h:39