UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
MovieSceneEvaluationField.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/Set.h"
10#include "CoreMinimal.h"
11#include "CoreTypes.h"
18#include "Math/NumericLimits.h"
19#include "Math/Range.h"
20#include "Misc/FrameNumber.h"
21#include "Misc/Guid.h"
25#include "Templates/Function.h"
26#include "Templates/TypeHash.h"
28#include "UObject/Class.h"
32
33#include "MovieSceneEvaluationField.generated.h"
34
36class UObject;
37struct FFrameNumber;
41
42
46USTRUCT()
48{
50
52 {
53 return A.EntityOwner == B.EntityOwner && A.EntityID == B.EntityID;
54 }
60 {
61 return GetTypeHash(In.EntityOwner) ^ In.EntityID;
62 }
63
65 UPROPERTY()
66 TWeakObjectPtr<UObject> EntityOwner;
67
69 UPROPERTY()
70 uint32 EntityID = 0;
71};
72
73
74
75USTRUCT()
97
98USTRUCT()
106
107USTRUCT()
109{
111
113 : ForcedTime(TNumericLimits<int32>::Lowest())
115 , bEvaluateInSequencePreRoll(false)
116 , bEvaluateInSequencePostRoll(false)
117 {}
118
119 bool IsRedundant() const
120 {
122 }
123
125 {
126 return A.ForcedTime == B.ForcedTime &&
127 A.Flags == B.Flags &&
128 A.bEvaluateInSequencePreRoll == B.bEvaluateInSequencePreRoll &&
129 A.bEvaluateInSequencePostRoll == B.bEvaluateInSequencePostRoll &&
130 A.OverrideBoundPropertyPath == B.OverrideBoundPropertyPath &&
131 A.NotifyFunctionName == B.NotifyFunctionName &&
132 A.Condition == B.Condition;
133 }
134
135 /* Optional condition that the entity can provide to be checked at runtime before import. If the condition fails, the entity will not be imported.
136 */
137 UPROPERTY()
139
141 UPROPERTY()
142 FString OverrideBoundPropertyPath;
143
145 UPROPERTY()
146 FName NotifyFunctionName;
147
149 UPROPERTY()
150 FFrameNumber ForcedTime;
151
152 UPROPERTY()
154
156 UPROPERTY()
157 uint8 bEvaluateInSequencePreRoll : 1;
158
160 UPROPERTY()
161 uint8 bEvaluateInSequencePostRoll : 1;
162};
163
169
170struct FMovieSceneEvaluationFieldEntityKeyFuncs : BaseKeyFuncs<FMovieSceneEvaluationFieldEntityQuery,FMovieSceneEvaluationFieldEntityKey,false>
171{
172 static inline FMovieSceneEvaluationFieldEntityKey GetSetKey(const FMovieSceneEvaluationFieldEntityQuery& Element) { return Element.Entity.Key; }
173 static inline bool Matches(const FMovieSceneEvaluationFieldEntityKey& A, const FMovieSceneEvaluationFieldEntityKey& B) { return A == B; }
174 static inline uint32 GetKeyHash(const FMovieSceneEvaluationFieldEntityKey& Key) { return GetTypeHash(Key); }
175};
177
178USTRUCT()
180{
182
184 {
185 Ar << SerializedData;
186 return true;
187 }
188
190 {
191 return Other->SerializedData == SerializedData;
192 }
193
195 {
198
200 {
201 return Ar << In.EntityIndex << In.MetaDataIndex;
202 }
204 {
205 return A.EntityIndex == B.EntityIndex && A.MetaDataIndex == B.MetaDataIndex;
206 }
207 };
209};
210template<> struct TStructOpsTypeTraits<FMovieSceneEvaluationFieldEntityTree> : public TStructOpsTypeTraitsBase2<FMovieSceneEvaluationFieldEntityTree>
211{
212 enum { WithSerializer = true, WithIdentical = true, WithCopy = false };
213};
214
215
216
224USTRUCT()
226{
228
229
232 bool IsEmpty() const
233 {
234 return Entities.Num() == 0;
235 }
236
241 {
242 return Entities[EntityIndex];
243 }
244
250 {
251 return InQuery.MetaDataIndex != INDEX_NONE ? &EntityMetaData[InQuery.MetaDataIndex] : nullptr;
252 }
253
259 {
260 return InQuery.Entity.SharedMetaDataIndex != INDEX_NONE ? &SharedMetaData[InQuery.Entity.SharedMetaDataIndex] : nullptr;
261 }
262
272
281 MOVIESCENE_API void QueryPersistentEntities(FFrameNumber QueryTime, TFunctionRef<bool(const FMovieSceneEvaluationFieldEntityQuery&)> QueryCallback, TRange<FFrameNumber>& OutRange) const;
282
286 MOVIESCENE_API bool HasAnyOneShotEntities() const;
287
296
297private:
298
300
302 UPROPERTY()
303 FMovieSceneEvaluationFieldEntityTree PersistentEntityTree;
304
306 UPROPERTY()
307 FMovieSceneEvaluationFieldEntityTree OneShotEntityTree;
308
310 UPROPERTY()
312
314 UPROPERTY()
316
318 UPROPERTY()
320};
321
322
328{
329 static constexpr uint32 InvalidEntityID = ~0u;
330
335
340
345
350
358
366 MOVIESCENE_API int32 FindOrAddEntity(UObject* EntityOwner, uint32 EntityID = 0);
367
378
388
399
409
410private:
411
413 MOVIESCENE_API int32 LocalEntityIndexToFieldIndex(int32 LocalIndex);
414
416 MOVIESCENE_API int32 LocalMetaDataIndexToFieldIndex(int32 LocalIndex);
417
419 struct FKeyToIndex
420 {
422 int32 FieldIndex;
423 };
425
426 struct FMetaDataToIndex
427 {
429 int32 FieldIndex;
430 };
432
435
437 int32 SharedMetaDataIndex;
438};
439
440
441//---------------------------------------------------------
442// Legacy track template field structures begin here
443//---------------------------------------------------------
444
445
447USTRUCT()
449{
451
452
456
464
469 {
470 return A.TrackIdentifier == B.TrackIdentifier && A.SequenceID == B.SequenceID;
471 }
472
477 {
478 return HashCombine(GetTypeHash(LHS.TrackIdentifier), GetTypeHash(LHS.SequenceID));
479 }
480
482 UPROPERTY()
484
486 UPROPERTY()
488};
489
491USTRUCT()
529
530USTRUCT()
541
542USTRUCT()
568
570USTRUCT()
572{
574
576 : NumInitPtrs(0)
577 , NumEvalPtrs(0)
578 {}
579
581 UPROPERTY()
582 int32 NumInitPtrs;
583
585 UPROPERTY()
586 int32 NumEvalPtrs;
587};
588
590USTRUCT()
607
609USTRUCT()
611{
613
614 UPROPERTY()
616
617 UPROPERTY()
618 uint16 SetupIndex = 0;
619
620 UPROPERTY()
621 uint16 TearDownIndex = 0;
622};
623
625USTRUCT()
627{
629
630
634 {
635 ActiveSequences.Reset();
636 ActiveEntities.Reset();
637 }
638
647
656
658 UPROPERTY()
660
662 UPROPERTY()
664};
665
669USTRUCT()
671{
673
674
680 MOVIESCENE_API int32 GetSegmentFromTime(FFrameNumber Time) const;
681
688 MOVIESCENE_API TRange<int32> OverlapRange(const TRange<FFrameNumber>& Range) const;
689
697
707
716
720#if WITH_EDITORONLY_DATA
721 const FGuid& GetSignature() const
722 {
723 return Signature;
724 }
725#endif
726
730 int32 Size() const
731 {
732 return Ranges.Num();
733 }
734
739 {
740 return Ranges;
741 }
742
749 {
750 return Ranges[Index].Value;
751 }
752
759 {
760 return Groups[Index];
761 }
762
769 {
770 return MetaData[Index];
771 }
772
773private:
774#if WITH_EDITORONLY_DATA
776 UPROPERTY()
777 FGuid Signature;
778#endif
779
781 UPROPERTY()
783
785 UPROPERTY()
787
789 UPROPERTY()
791};
OODEFFUNC typedef void(OODLE_CALLBACK t_fp_OodleCore_Plugin_Free)(void *ptr)
@ INDEX_NONE
Definition CoreMiscDefines.h:150
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
TSet< FMovieSceneEvaluationFieldEntityQuery, FMovieSceneEvaluationFieldEntityKeyFuncs > FMovieSceneEvaluationFieldEntitySet
Definition MovieSceneEvaluationField.h:176
ESectionEvaluationFlags
Definition MovieSceneSegment.h:19
TCallTraits< FMovieSceneSequenceID >::ParamType FMovieSceneSequenceIDRef
Definition MovieSceneSequenceID.h:93
const bool
Definition NetworkReplayStreaming.h:178
#define UPROPERTY(...)
UObject definition macros.
Definition ObjectMacros.h:744
#define GENERATED_BODY(...)
Definition ObjectMacros.h:765
#define USTRUCT(...)
Definition ObjectMacros.h:746
constexpr uint32 HashCombine(uint32 A, uint32 C)
Definition TypeHash.h:36
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 Archive.h:1208
Definition NameTypes.h:617
Definition ArrayView.h:139
Definition Array.h:670
Definition AssetRegistryState.h:50
Definition Range.h:50
Definition MovieSceneCondition.h:88
Definition MovieSceneSequence.h:73
Definition Object.h:95
Definition FieldSystemNoiseAlgo.cpp:6
@ false
Definition radaudio_common.h:23
U16 Index
Definition radfft.cpp:71
Definition SetUtilities.h:23
Definition FrameNumber.h:18
Definition Guid.h:109
Definition MovieSceneEvaluationField.h:328
MOVIESCENE_API int32 FindOrAddEntity(UObject *EntityOwner, uint32 EntityID=0)
Definition MovieSceneEvaluationField.cpp:48
MOVIESCENE_API void AddPersistentEntity(const TRange< FFrameNumber > &Range, UObject *EntityOwner, uint32 EntityID=0, int32 InMetaDataIndex=INDEX_NONE)
Definition MovieSceneEvaluationField.cpp:77
MOVIESCENE_API ~FMovieSceneEntityComponentFieldBuilder()
Definition MovieSceneEvaluationField.cpp:26
MOVIESCENE_API int32 AddMetaData(const FMovieSceneEvaluationFieldEntityMetaData &InMetaData)
Definition MovieSceneEvaluationField.cpp:61
MOVIESCENE_API void AddOneShotEntity(const TRange< FFrameNumber > &OneShotRange, UObject *EntityOwner, uint32 EntityID=0, int32 InMetaDataIndex=INDEX_NONE)
Definition MovieSceneEvaluationField.cpp:91
static constexpr uint32 InvalidEntityID
Definition MovieSceneEvaluationField.h:329
MOVIESCENE_API int32 GetSharedMetaDataIndex() const
Definition MovieSceneEvaluationField.cpp:43
MOVIESCENE_API FMovieSceneEvaluationFieldSharedEntityMetaData & GetSharedMetaData()
Definition MovieSceneEvaluationField.cpp:38
Definition MovieSceneEvaluationField.h:226
const FMovieSceneEvaluationFieldSharedEntityMetaData * FindSharedMetaData(const FMovieSceneEvaluationFieldEntityQuery &InQuery) const
Definition MovieSceneEvaluationField.h:258
const FMovieSceneEvaluationFieldEntity & GetEntity(int32 EntityIndex) const
Definition MovieSceneEvaluationField.h:240
const FMovieSceneEvaluationFieldEntityMetaData * FindMetaData(const FMovieSceneEvaluationFieldEntityQuery &InQuery) const
Definition MovieSceneEvaluationField.h:249
Definition MovieSceneEvaluationField.h:171
static FMovieSceneEvaluationFieldEntityKey GetSetKey(const FMovieSceneEvaluationFieldEntityQuery &Element)
Definition MovieSceneEvaluationField.h:172
static bool Matches(const FMovieSceneEvaluationFieldEntityKey &A, const FMovieSceneEvaluationFieldEntityKey &B)
Definition MovieSceneEvaluationField.h:173
static uint32 GetKeyHash(const FMovieSceneEvaluationFieldEntityKey &Key)
Definition MovieSceneEvaluationField.h:174
Definition MovieSceneEvaluationField.h:48
uint32 EntityID
Definition MovieSceneEvaluationField.h:70
friend uint32 GetTypeHash(FMovieSceneEvaluationFieldEntityKey In)
Definition MovieSceneEvaluationField.h:59
TWeakObjectPtr< UObject > EntityOwner
Definition MovieSceneEvaluationField.h:66
friend bool operator!=(FMovieSceneEvaluationFieldEntityKey A, FMovieSceneEvaluationFieldEntityKey B)
Definition MovieSceneEvaluationField.h:55
Definition MovieSceneEvaluationField.h:109
bool IsRedundant() const
Definition MovieSceneEvaluationField.h:119
friend bool operator==(const FMovieSceneEvaluationFieldEntityMetaData &A, const FMovieSceneEvaluationFieldEntityMetaData &B)
Definition MovieSceneEvaluationField.h:124
Definition MovieSceneEvaluationField.h:165
int32 MetaDataIndex
Definition MovieSceneEvaluationField.h:167
FMovieSceneEvaluationFieldEntity Entity
Definition MovieSceneEvaluationField.h:166
Definition MovieSceneEvaluationField.h:195
friend bool operator==(const FEntityAndMetaDataIndex &A, const FEntityAndMetaDataIndex &B)
Definition MovieSceneEvaluationField.h:203
int32 EntityIndex
Definition MovieSceneEvaluationField.h:196
int32 MetaDataIndex
Definition MovieSceneEvaluationField.h:197
friend FArchive & operator<<(FArchive &Ar, FEntityAndMetaDataIndex &In)
Definition MovieSceneEvaluationField.h:199
Definition MovieSceneEvaluationField.h:180
TMovieSceneEvaluationTree< FEntityAndMetaDataIndex > SerializedData
Definition MovieSceneEvaluationField.h:208
bool Identical(const FMovieSceneEvaluationFieldEntityTree *Other, uint32 PortFlags) const
Definition MovieSceneEvaluationField.h:189
Definition MovieSceneEvaluationField.h:77
FMovieSceneEvaluationFieldEntity(const FMovieSceneEvaluationFieldEntityKey &InKey, int32 InSharedMetaDataIndex=INDEX_NONE)
Definition MovieSceneEvaluationField.h:86
Definition MovieSceneEvaluationField.h:493
FMovieSceneEvaluationFieldSegmentPtr(FMovieSceneSequenceIDRef InSequenceID, FMovieSceneTrackIdentifier InTrackIdentifier, FMovieSceneSegmentIdentifier InSegmentID)
Definition MovieSceneEvaluationField.h:504
friend uint32 GetTypeHash(FMovieSceneEvaluationFieldSegmentPtr LHS)
Definition MovieSceneEvaluationField.h:520
friend bool operator==(FMovieSceneEvaluationFieldSegmentPtr A, FMovieSceneEvaluationFieldSegmentPtr B)
Definition MovieSceneEvaluationField.h:512
Definition MovieSceneEvaluationField.h:100
Definition MovieSceneEvaluationField.h:449
FMovieSceneEvaluationFieldTrackPtr(FMovieSceneSequenceIDRef InSequenceID, FMovieSceneTrackIdentifier InTrackIdentifier)
Definition MovieSceneEvaluationField.h:460
friend uint32 GetTypeHash(FMovieSceneEvaluationFieldTrackPtr LHS)
Definition MovieSceneEvaluationField.h:476
friend bool operator==(FMovieSceneEvaluationFieldTrackPtr A, FMovieSceneEvaluationFieldTrackPtr B)
Definition MovieSceneEvaluationField.h:468
Definition MovieSceneEvaluationField.h:671
const FMovieSceneEvaluationMetaData & GetMetaData(int32 Index) const
Definition MovieSceneEvaluationField.h:768
TArrayView< const FMovieSceneFrameRange > GetRanges() const
Definition MovieSceneEvaluationField.h:738
const TRange< FFrameNumber > & GetRange(int32 Index) const
Definition MovieSceneEvaluationField.h:748
const FMovieSceneEvaluationGroup & GetGroup(int32 Index) const
Definition MovieSceneEvaluationField.h:758
int32 Size() const
Definition MovieSceneEvaluationField.h:730
Definition MovieSceneEvaluationField.h:572
Definition MovieSceneEvaluationField.h:592
Definition MovieSceneEvaluationKey.h:13
Definition MovieSceneEvaluationField.h:627
void Reset()
Definition MovieSceneEvaluationField.h:633
Definition MovieSceneEvaluationField.h:544
FMovieSceneFieldEntry_ChildTemplate(uint16 InChildIndex, ESectionEvaluationFlags InFlags, FFrameNumber InForcedTime)
Definition MovieSceneEvaluationField.h:553
Definition MovieSceneEvaluationField.h:532
Definition MovieSceneFrameMigration.h:28
Definition MovieSceneEvaluationField.h:611
Definition MovieSceneSegment.h:35
Definition MovieSceneSequenceHierarchy.h:279
Definition MovieSceneSequenceID.h:13
Definition MovieSceneTrackIdentifier.h:12
Definition MovieSceneEvaluationTree.h:603
Definition NumericLimits.h:41
Definition SoftObjectPtr.h:174
Definition StructOpsTypeTraits.h:11
@ WithCopy
Definition StructOpsTypeTraits.h:17
@ WithSerializer
Definition StructOpsTypeTraits.h:23
@ WithIdentical
Definition StructOpsTypeTraits.h:19
Definition StructOpsTypeTraits.h:46
Definition WeakObjectPtrTemplates.h:25