UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
MovieSceneEvaluationState.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
5#include "Containers/Array.h"
8#include "Containers/Map.h"
9#include "CoreMinimal.h"
10#include "Delegates/Delegate.h"
16#include "HAL/Platform.h"
17#include "HAL/PlatformCrt.h"
18#include "Misc/Guid.h"
19#include "MovieSceneSequence.h"
21#include "Templates/UniquePtr.h"
25
26#define UE_API MOVIESCENE_API
27
30class UObject;
35
36namespace UE::MovieScene
37{
38
39 struct FInstanceHandle;
40 struct FSharedPlaybackState;
41
55
72
87
88} // namespace UE::MovieScene
89
94{
96
101
111
120
128
138
148
153
160
169
176
177
178 /* Gets the current activation on the provided binding. If no binding lifetime track is present, true will be returned.
179 * @param InGuid The object binding ID
180 */
182
183 /* Sets the binding to either active or inactive. Inactive bindings will invalidate and not resolve while inactive.
184 * @param InGuid The object binding ID
185 * @param bActive Where to activate or deactivate the binding.
186 */
187 MOVIESCENE_API void SetBindingActivation(const FGuid& InGuid, bool bActive);
188
192 void Clear(TSharedRef<const FSharedPlaybackState> SharedPlaybackState);
193
197 UMovieSceneSequence* GetSequence() const { return WeakSequence.Get(); }
198
202 uint32 GetSerialNumber() const { return SerialNumber; }
203
212
213public:
214
215 // Backwards compatible API, to be deprecated later
216
223
224private:
231 void UpdateBindings(const FGuid& InGuid, TSharedRef<const FSharedPlaybackState> SharedPlaybackState);
232
236 bool InvalidateInternal(const FGuid& InGuid);
237
241 bool InvalidateIfValidInternal(const FGuid& InGuid);
242
246 void UpdateSerialNumber();
247
248 struct FBoundObjects
249 {
250 bool bUpToDate;
252 };
253
254private:
255
258
260 FMovieSceneSequenceID SequenceID;
261
262 template<typename ValueType>
263 struct TFastGuidKeyFuncs : BaseKeyFuncs<TPair<FGuid,ValueType>,FGuid,false>
264 {
265 typedef typename TTypeTraits<FGuid>::ConstPointerType KeyInitType;
267
268 static inline KeyInitType GetSetKey(ElementInitType Element)
269 {
270 return Element.Key;
271 }
272 static inline bool Matches(KeyInitType A,KeyInitType B)
273 {
274 return A == B;
275 }
276 static inline uint32 GetKeyHash(KeyInitType Key)
277 {
278 return Key.A ^ Key.B ^ Key.C ^ Key.D;
279 }
280 };
281
284
286 typedef TArray<FGuid, TInlineAllocator<4>> FGuidArray;
288
293
294 /* A set of inactive binding ids based on Binding Lifetime track. While inactive, these will be prevented from resolving.*/
295 TSet<FGuid> InactiveBindingIds;
296
298 uint32 SerialNumber = 0;
299
300 bool bReentrantUpdate = false;
301};
302
307{
309
311
315
323
330
338
348
358
367
374 {
375 if (FVersionedObjectCache* Cache = ObjectCaches.Find(SequenceID))
376 {
377 return &Cache->ObjectCache;
378 }
379 return nullptr;
380 }
381
388 {
389 if (const FVersionedObjectCache* Cache = ObjectCaches.Find(SequenceID))
390 {
391 return &Cache->ObjectCache;
392 }
393 return nullptr;
394 }
395
402 {
403 FVersionedObjectCache* Cache = ObjectCaches.Find(SequenceID);
404 if (!Cache)
405 {
406 Cache = &ObjectCaches.Add(SequenceID, FVersionedObjectCache());
407 }
408 return Cache->ObjectCache;
409 }
410
421 {
422 FMovieSceneObjectCache* Cache = FindObjectCache(SequenceID);
423 if (Cache)
424 {
425 return Cache->FindBoundObjects(ObjectBindingID, SharedPlaybackState);
426 }
427
429 }
430
440 {
441 return FindBoundObjects(Operand.ObjectBindingID, Operand.SequenceID, SharedPlaybackState);
442 }
443
448
456
457
458 /* Gets the current activation on the provided binding. If no binding lifetime track is present, true will be returned.
459 * @param InGuid The object binding ID
460 * @param InSequenceID The sequence ID to which the object binding belongs
461 */
463
464 /* Sets the binding to either active or inactive. Inactive bindings will invalidate and not resolve while inactive.
465 * @param InGuid The object binding ID
466 * @param InSequenceID The sequence ID to which the object binding belongs
467 * @param bActive Where to activate or deactivate the binding.
468 */
470
475
480
483
486
487public:
488
492
493
494private:
495
496 void RegisterObjectCacheEvents(UMovieSceneEntitySystemLinker* Linker, const UE::MovieScene::FInstanceHandle& InstanceHandle, const FMovieSceneSequenceID SequenceID);
497
498public:
499
500 // Backwards compatible API, to be deprecated later
501
507
508private:
509
511 struct FVersionedObjectCache
512 {
513 FMovieSceneObjectCache ObjectCache;
514 FDelegateHandle OnInvalidateObjectBindingHandle;
515 uint32 LastKnownSerial = 0;
516 };
517
520
522 uint32 SerialNumber = 0;
523};
524
525#undef UE_API
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
#define UE_DECLARE_MOVIESCENE_PLAYBACK_CAPABILITY_API(ApiDeclSpec, ClassName)
Definition IMovieScenePlaybackCapability.h:147
TCallTraits< FMovieSceneSequenceID >::ParamType FMovieSceneSequenceIDRef
Definition MovieSceneSequenceID.h:93
#define UE_API
Definition SColorGradingComponentViewer.h:12
uint32_t uint32
Definition binka_ue_file_header.h:6
Definition IDelegateInstance.h:14
Definition IMovieScenePlayer.h:90
Definition ArrayView.h:139
Definition Array.h:670
Definition UnrealString.h.inl:34
Definition Map.h:26
Definition SharedPointer.h:153
Definition ContainerAllocationPolicies.h:894
Definition MovieSceneEntitySystemLinker.h:113
Definition MovieSceneSequence.h:73
Definition Object.h:95
Definition Linker.cpp:38
@ Element
Definition Visu.h:18
Definition ConstraintsManager.h:14
VERSECOMPILER_API bool Matches(const CTypeBase *PositiveType1, const CTypeBase *NegativeType2, const uint32_t UploadedAtFnVersion)
Determine if argument PositiveType1 is a match for parameter NegativeType2
Definition SemanticTypes.cpp:2971
Definition SetUtilities.h:23
Definition Guid.h:109
Definition MovieSceneEvaluationKey.h:13
Definition MovieSceneEvaluationOperand.h:15
FMovieSceneSequenceID SequenceID
Definition MovieSceneEvaluationOperand.h:59
FGuid ObjectBindingID
Definition MovieSceneEvaluationOperand.h:55
Definition MovieSceneEvaluationState.h:307
MOVIESCENE_API void SetBindingActivation(const FGuid &InGuid, FMovieSceneSequenceIDRef InSequenceID, bool bActive)
Definition MovieSceneEvaluationState.cpp:640
MOVIESCENE_API UMovieSceneSequence * FindSequence(FMovieSceneSequenceIDRef InSequenceID) const
Definition MovieSceneEvaluationState.cpp:658
const FMovieSceneObjectCache * FindObjectCache(FMovieSceneSequenceIDRef SequenceID) const
Definition MovieSceneEvaluationState.h:387
MOVIESCENE_API void InvalidateExpiredObjects()
Definition MovieSceneEvaluationState.cpp:613
MOVIESCENE_API void AssignSequence(FMovieSceneSequenceIDRef InSequenceID, UMovieSceneSequence &InSequence, TSharedRef< const FSharedPlaybackState > SharedPlaybackState)
Definition MovieSceneEvaluationState.cpp:653
MOVIESCENE_API bool GetBindingActivation(const FGuid &InGuid, FMovieSceneSequenceIDRef InSequenceID) const
Definition MovieSceneEvaluationState.cpp:631
MOVIESCENE_API FMovieSceneSequenceID FindSequenceId(UMovieSceneSequence *InSequence) const
Definition MovieSceneEvaluationState.cpp:669
TArrayView< TWeakObjectPtr<> > FindBoundObjects(const FMovieSceneEvaluationOperand &Operand, TSharedRef< const FSharedPlaybackState > SharedPlaybackState)
Definition MovieSceneEvaluationState.h:439
virtual MOVIESCENE_API void OnSubInstanceCreated(TSharedRef< const FSharedPlaybackState > Owner, const UE::MovieScene::FInstanceHandle InstanceHandle) override
Definition MovieSceneEvaluationState.cpp:727
FMovieSceneObjectCache & GetObjectCache(FMovieSceneSequenceIDRef SequenceID)
Definition MovieSceneEvaluationState.h:401
MOVIESCENE_API uint32 GetSerialNumber()
Definition MovieSceneEvaluationState.cpp:704
FMovieSceneObjectCache * FindObjectCache(FMovieSceneSequenceIDRef SequenceID)
Definition MovieSceneEvaluationState.h:373
MOVIESCENE_API void ClearObjectCaches(TSharedRef< const FSharedPlaybackState > SharedPlaybackState)
Definition MovieSceneEvaluationState.cpp:645
TMap< FSharedPersistentDataKey, TUniquePtr< IPersistentEvaluationData > > PersistentSharedData
Definition MovieSceneEvaluationState.h:485
TArrayView< TWeakObjectPtr<> > FindBoundObjects(const FGuid &ObjectBindingID, FMovieSceneSequenceIDRef SequenceID, TSharedRef< const FSharedPlaybackState > SharedPlaybackState)
Definition MovieSceneEvaluationState.h:420
TMap< FMovieSceneEvaluationKey, TUniquePtr< IPersistentEvaluationData > > PersistentEntityData
Definition MovieSceneEvaluationState.h:482
MOVIESCENE_API FGuid FindCachedObjectId(UObject &Object, FMovieSceneSequenceIDRef InSequenceID, TSharedRef< const FSharedPlaybackState > SharedPlaybackState)
Definition MovieSceneEvaluationState.cpp:688
MOVIESCENE_API void FilterObjectBindings(UObject *PredicateObject, TSharedRef< const FSharedPlaybackState > SharedPlaybackState, TArray< FMovieSceneObjectBindingID > *OutBindings)
Definition MovieSceneEvaluationState.cpp:694
MOVIESCENE_API FGuid FindObjectId(UObject &Object, FMovieSceneSequenceIDRef InSequenceID, TSharedRef< const FSharedPlaybackState > SharedPlaybackState)
Definition MovieSceneEvaluationState.cpp:682
Definition MovieSceneObjectBindingID.h:203
Definition MovieSceneEvaluationState.h:94
DECLARE_MULTICAST_DELEGATE_OneParam(FOnBindingInvalidated, const FGuid &)
MOVIESCENE_API void SetSequence(UMovieSceneSequence &InSequence, FMovieSceneSequenceIDRef InSequenceID, TSharedRef< const FSharedPlaybackState > SharedPlaybackState)
Definition MovieSceneEvaluationState.cpp:348
uint32 GetSerialNumber() const
Definition MovieSceneEvaluationState.h:202
MOVIESCENE_API FGuid FindObjectId(UObject &InObject, TSharedRef< const FSharedPlaybackState > SharedPlaybackState)
Definition MovieSceneEvaluationState.cpp:98
MOVIESCENE_API bool GetBindingActivation(const FGuid &InGuid) const
Definition MovieSceneEvaluationState.cpp:235
MOVIESCENE_API TArrayView< TWeakObjectPtr<> > FindBoundObjects(const FGuid &InBindingID, TSharedRef< const FSharedPlaybackState > InSharedPlaybackState)
Definition MovieSceneEvaluationState.cpp:54
MOVIESCENE_API FGuid FindCachedObjectId(UObject &InObject, TSharedRef< const FSharedPlaybackState > SharedPlaybackState)
Definition MovieSceneEvaluationState.cpp:117
MOVIESCENE_API void InvalidateIfValid(const FGuid &InGuid)
Definition MovieSceneEvaluationState.cpp:226
FOnBindingInvalidated OnBindingInvalidated
Definition MovieSceneEvaluationState.h:100
MOVIESCENE_API TArrayView< const TWeakObjectPtr<> > IterateBoundObjects(const FGuid &InBindingID) const
Definition MovieSceneEvaluationState.cpp:81
MOVIESCENE_API void SetBindingActivation(const FGuid &InGuid, bool bActive)
Definition MovieSceneEvaluationState.cpp:240
UMovieSceneSequence * GetSequence() const
Definition MovieSceneEvaluationState.h:197
void FilterObjectBindings(UObject *PredicateObject, TSharedRef< const FSharedPlaybackState > SharedPlaybackState, TArray< FMovieSceneObjectBindingID > *OutBindings)
Definition MovieSceneEvaluationState.cpp:151
MOVIESCENE_API void InvalidateExpiredObjects()
Definition MovieSceneEvaluationState.cpp:193
Definition MovieSceneSequenceID.h:13
Definition PersistentEvaluationData.h:45
Definition PersistentEvaluationData.h:76
TCallTraits< T >::ParamType ConstInitType
Definition UnrealTypeTraits.h:336
TCallTraits< T >::ConstPointerType ConstPointerType
Definition UnrealTypeTraits.h:337
Definition WeakObjectPtrTemplates.h:25
FORCEINLINE T * Get(bool bEvenIfPendingKill) const
Definition WeakObjectPtrTemplates.h:132
Definition MovieSceneSequenceInstanceHandle.h:15
Definition MovieSceneSharedPlaybackState.h:59
Definition MovieSceneEvaluationState.h:77
virtual UE_API void RemoveBindingOverride(const FMovieSceneEvaluationOperand &InOperand) override
Definition MovieSceneEvaluationState.cpp:37
virtual UE_API FMovieSceneEvaluationOperand * GetBindingOverride(const FMovieSceneEvaluationOperand &InOperand) override
Definition MovieSceneEvaluationState.cpp:27
virtual UE_API void AddBindingOverride(const FMovieSceneEvaluationOperand &InOperand, const FMovieSceneEvaluationOperand &InOverrideOperand) override
Definition MovieSceneEvaluationState.cpp:32
Definition MovieSceneEvaluationState.h:46
virtual void NotifyBindingsChanged()
Definition MovieSceneEvaluationState.h:50
virtual void NotifyBindingUpdate(const FGuid &InBindingId, FMovieSceneSequenceIDRef InSequenceID, TArrayView< TWeakObjectPtr<> > BoundObjects)
Definition MovieSceneEvaluationState.h:53
Definition IMovieScenePlaybackCapability.h:78
Definition MovieSceneEvaluationState.h:60
virtual FMovieSceneEvaluationOperand * GetBindingOverride(const FMovieSceneEvaluationOperand &InOperand)=0
virtual void AddBindingOverride(const FMovieSceneEvaluationOperand &InOperand, const FMovieSceneEvaluationOperand &InOverrideOperand)=0
virtual void RemoveBindingOverride(const FMovieSceneEvaluationOperand &InOperand)=0