UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
MovieScenePropertyTemplate.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
5#include "CoreMinimal.h"
6#include "Stats/Stats.h"
8#include "IMovieScenePlayer.h"
9#include "MovieSceneFwd.h"
15#include "Logging/MessageLog.h"
16#include "Misc/UObjectToken.h"
18#include "MovieSceneSequence.h"
22#include "TransformData.h"
23#include "MovieScenePropertyTemplate.generated.h"
24
26
28
30{
45
46 template<typename PropertyValueType, typename IntermediateType = PropertyValueType>
48
50 template<typename PropertyValueType, typename IntermediateType = PropertyValueType>
56
58 template<typename PropertyValueType, typename IntermediateType = PropertyValueType>
64
65 template<typename PropertyValueType, typename IntermediateType = PropertyValueType>
70
71 template<typename T>
72 bool IsValueValid(const T& InValue)
73 {
74 return true;
75 }
76
78 template<typename PropertyValueType, typename IntermediateType = PropertyValueType>
80 {
86
87 virtual void RestoreState(UObject& Object, const UE::MovieScene::FRestoreStateParams& Params) override
88 {
89 IMovieScenePlayer* Player = Params.GetTerminalPlayer();
90 if (!ensure(Player))
91 {
92 return;
93 }
94
95 auto NewValue = PropertyTemplate::ConvertFromIntermediateType<PropertyValueType, IntermediateType>(Value, *Player);
96 if (IsValueValid(NewValue))
97 {
99 }
100 }
101
104 };
105
106 template<typename PropertyValueType, typename IntermediateType = PropertyValueType>
107 static IMovieScenePreAnimatedTokenPtr CacheExistingState(UObject& Object, FTrackInstancePropertyBindings& PropertyBindings)
108 {
110 }
111
112
113 template<typename PropertyValueType>
125
126}
127
129template<typename PropertyValueType, typename IntermediateType = PropertyValueType>
131{
135
138 {
139 using namespace PropertyTemplate;
140
142
144 FTrackInstancePropertyBindings* PropertyBindings = PropertyTrackData.PropertyBindings.Get();
145
146 auto NewValue = PropertyTemplate::ConvertFromIntermediateType<PropertyValueType, IntermediateType>(Value, Operand, PersistentData, Player);
147 if (!IsValueValid(NewValue))
148 {
149 return;
150 }
151
152 for (TWeakObjectPtr<> WeakObject : Player.FindBoundObjects(Operand))
153 {
154 if (UObject* ObjectPtr = WeakObject.Get())
155 {
156 Player.SavePreAnimatedState(*ObjectPtr, PropertyTrackData.PropertyID, FTokenProducer<PropertyValueType>(*PropertyBindings));
157
158 PropertyBindings->CallFunction<PropertyValueType>(*ObjectPtr, NewValue);
159 }
160 }
161 }
162
164};
165
167template<typename PropertyType>
169{
175
176 virtual PropertyType RetrieveCurrentValue(UObject* InObject, IMovieScenePlayer* Player) const
177 {
178 return PropertyData.PropertyBindings->GetCurrentValue<PropertyType>(*InObject);
179 }
180
182 {
183 ensureMsgf(InObject, TEXT("Attempting to evaluate a Property track '%s' with a null object."), *PropertyData.PropertyBindings->GetPropertyName().ToString());
184
185 if (InObject)
186 {
188 PropertyData.PropertyBindings->CallFunction<PropertyType>(*InObject, InFinalValue);
189 }
190 }
191 //This will be specialized at end of this file for floats, transforms,eulertransforms and vectors
195};
196
197
198USTRUCT()
228
229USTRUCT()
231{
233
238public:
239 //use thse keys for setting and iterating the correct types.
240 MOVIESCENE_API const static FMovieSceneInterrogationKey GetFloatInterrogationKey();
241 MOVIESCENE_API const static FMovieSceneInterrogationKey GetInt32InterrogationKey();
242 MOVIESCENE_API const static FMovieSceneInterrogationKey GetVector4InterrogationKey();
243 MOVIESCENE_API const static FMovieSceneInterrogationKey GetVectorInterrogationKey();
244 MOVIESCENE_API const static FMovieSceneInterrogationKey GetVector2DInterrogationKey();
245 MOVIESCENE_API const static FMovieSceneInterrogationKey GetColorInterrogationKey();
246
248
249 virtual UScriptStruct& GetScriptStructImpl() const override { return *StaticStruct(); }
251 MOVIESCENE_API virtual void Setup(FPersistentEvaluationData& PersistentData, IMovieScenePlayer& Player) const override;
252
254 MOVIESCENE_API FMovieSceneAnimTypeID GetPropertyTypeID() const;
255
257 template<typename PropertyType> FMovieSceneBlendingActuatorID EnsureActuator(FMovieSceneBlendingAccumulator& Accumulator) const
258 {
259 // Actuator type ID for this property
260 FMovieSceneAnimTypeID UniquePropertyID = GetPropertyTypeID();
262 if (!Accumulator.FindActuator<PropertyType>(ActuatorTypeID))
263 {
265 SectionData.Initialize(PropertyData.PropertyName, PropertyData.PropertyPath);
266
267 Accumulator.DefineActuator(ActuatorTypeID, MakeShared<TPropertyActuator<PropertyType>>(SectionData));
268 }
269 return ActuatorTypeID;
270 }
271
272 UPROPERTY()
274};
275
276//Specializations
277template<>
283
284template<>
290
291template<>
297
298template<>
307
308template<>
317
318template<>
324
325template<>
331
332
#define ensureMsgf( InExpression, InFormat,...)
Definition AssertionMacros.h:465
#define ensure( InExpression)
Definition AssertionMacros.h:464
#define TEXT(x)
Definition Platform.h:1272
FPlatformTypes::int32 int32
A 32-bit signed integer.
Definition Platform.h:1125
#define DECLARE_CYCLE_STAT(CounterName, StatId, GroupId)
Definition Stats.h:669
TSharedRef< InObjectType, InMode > MakeShared(InArgTypes &&... Args)
Definition SharedPointer.h:2009
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
#define MOVIESCENE_DETAILED_SCOPE_CYCLE_COUNTER(...)
Definition MovieSceneFwd.h:157
#define UPROPERTY(...)
UObject definition macros.
Definition ObjectMacros.h:744
#define GENERATED_BODY(...)
Definition ObjectMacros.h:765
#define USTRUCT(...)
Definition ObjectMacros.h:746
UScriptStruct * StaticStruct()
Definition ReflectedTypeAccessors.h:18
UE_INTRINSIC_CAST UE_REWRITE constexpr std::remove_reference_t< T > && MoveTempIfPossible(T &&Obj) noexcept
Definition UnrealTemplate.h:538
UE_INTRINSIC_CAST UE_REWRITE constexpr std::remove_reference_t< T > && MoveTemp(T &&Obj) noexcept
Definition UnrealTemplate.h:520
Definition NameTypes.h:617
CORE_API FString ToString() const
Definition UnrealNames.cpp:3537
Definition TrackInstancePropertyBindings.h:143
const FName & GetPropertyName() const
Definition TrackInstancePropertyBindings.h:282
void CallFunction(UObject &InRuntimeObject, typename TCallTraits< ValueType >::ParamType PropertyValue)
Definition TrackInstancePropertyBindings.h:155
ValueType GetCurrentValue(const UObject &Object)
Definition TrackInstancePropertyBindings.h:220
Definition IMovieScenePlayer.h:90
void SavePreAnimatedState(UObject &InObject, FMovieSceneAnimTypeID InTokenType, const IMovieScenePreAnimatedTokenProducer &InProducer)
Definition IMovieScenePlayer.h:321
MOVIESCENE_API TArrayView< TWeakObjectPtr<> > FindBoundObjects(const FGuid &ObjectBindingID, FMovieSceneSequenceIDRef SequenceID)
Definition MovieScenePlayer.cpp:158
Definition PropertyPath.Build.cs:6
Definition InlineValue.h:22
Definition SharedPointer.h:692
Definition MovieScenePropertyTrack.h:30
Definition Object.h:95
Definition Class.h:1720
Definition MovieScenePropertyTemplate.h:30
IntermediateType ConvertToIntermediateType(PropertyValueType &&NewValue)
Definition MovieScenePropertyTemplate.h:66
TTemporarySetterType< PropertyValueType, IntermediateType >::Type ConvertFromIntermediateType(const IntermediateType &InIntermediateType, IMovieScenePlayer &Player)
Definition MovieScenePropertyTemplate.h:52
bool IsValueValid(const T &InValue)
Definition MovieScenePropertyTemplate.h:72
Definition MovieSceneAnimTypeID.h:20
Definition MovieSceneBlendingAccumulator.h:26
void DefineActuator(FMovieSceneBlendingActuatorID InActuatorTypeID, TSharedRef< IMovieSceneBlendingActuator > InActuator)
Definition MovieSceneBlendingAccumulator.h:105
TMovieSceneBlendingActuator< DataType > * FindActuator(FMovieSceneBlendingActuatorID InActuatorTypeID) const
Definition MovieSceneBlendingAccumulator.h:85
Definition MovieSceneBlendingActuatorID.h:8
Definition MovieScenePlayback.h:184
Definition MovieSceneEvalTemplate.h:47
Definition MovieSceneEvaluationOperand.h:15
Definition MovieSceneTemplateInterrogation.h:70
Definition MovieSceneTemplateInterrogation.h:22
static MOVIESCENE_API FMovieSceneInterrogationKey GetTransformInterrogationKey()
Definition MovieSceneTemplateInterrogation.cpp:24
Definition MovieScenePropertyTemplate.h:200
void SetupTrack(FPersistentEvaluationData &PersistentData) const
Definition MovieScenePropertyTemplate.h:223
FMovieScenePropertySectionData(FName InPropertyName, FString InPropertyPath)
Definition MovieScenePropertyTemplate.h:212
void SetupTrack(FPersistentEvaluationData &PersistentData) const
Definition MovieScenePropertyTemplate.h:217
Definition MovieScenePropertyTemplate.h:231
MOVIESCENE_API static const FMovieSceneInterrogationKey GetFloatInterrogationKey()
Definition MovieScenePropertyTemplate.cpp:39
MOVIESCENE_API static const FMovieSceneInterrogationKey GetVectorInterrogationKey()
Definition MovieScenePropertyTemplate.cpp:55
MOVIESCENE_API static const FMovieSceneInterrogationKey GetVector2DInterrogationKey()
Definition MovieScenePropertyTemplate.cpp:60
MOVIESCENE_API static const FMovieSceneInterrogationKey GetInt32InterrogationKey()
Definition MovieScenePropertyTemplate.cpp:44
MOVIESCENE_API static const FMovieSceneInterrogationKey GetVector4InterrogationKey()
Definition MovieScenePropertyTemplate.cpp:50
FMovieSceneBlendingActuatorID EnsureActuator(FMovieSceneBlendingAccumulator &Accumulator) const
Definition MovieScenePropertyTemplate.h:257
Definition PersistentEvaluationData.h:91
Definition TransformData.h:12
FVector Translation
Definition TransformData.h:14
Definition MovieSceneExecutionToken.h:104
Definition MovieSceneExecutionToken.h:38
Definition MovieSceneExecutionToken.h:20
Definition PersistentEvaluationData.h:76
Definition MovieScenePropertyTemplate.h:33
MOVIESCENE_API FSectionData()
Definition MovieScenePropertyTemplate.cpp:10
TSharedPtr< FTrackInstancePropertyBindings > PropertyBindings
Definition MovieScenePropertyTemplate.h:40
MOVIESCENE_API void Initialize(FName InPropertyName, FString InPropertyPath)
Definition MovieScenePropertyTemplate.cpp:15
FMovieSceneAnimTypeID PropertyID
Definition MovieScenePropertyTemplate.h:43
Definition MovieScenePropertyTemplate.h:115
virtual IMovieScenePreAnimatedTokenPtr CacheExistingState(UObject &Object) const
Definition MovieScenePropertyTemplate.h:118
FTokenProducer(FTrackInstancePropertyBindings &InPropertyBindings)
Definition MovieScenePropertyTemplate.h:116
FTrackInstancePropertyBindings & PropertyBindings
Definition MovieScenePropertyTemplate.h:123
Definition MovieScenePropertyTemplate.h:80
virtual void RestoreState(UObject &Object, const UE::MovieScene::FRestoreStateParams &Params) override
Definition MovieScenePropertyTemplate.h:87
TCachedState(typename TCallTraits< IntermediateType >::ParamType InValue, const FTrackInstancePropertyBindings &InBindings)
Definition MovieScenePropertyTemplate.h:81
FTrackInstancePropertyBindings Bindings
Definition MovieScenePropertyTemplate.h:103
IntermediateType Value
Definition MovieScenePropertyTemplate.h:102
Definition MovieScenePropertyTemplate.h:47
PropertyValueType Type
Definition MovieScenePropertyTemplate.h:47
Definition BlendableTokenStack.h:83
TCallTraitsParamTypeHelper< T, PassByValue >::ParamType ParamType
Definition UnrealTypeTraits.h:275
Definition UnrealTypeTraits.h:283
Definition MovieSceneBlendingActuator.h:40
Definition MovieScenePropertyTemplate.h:169
TPropertyActuator(const PropertyTemplate::FSectionData &InPropertyData)
Definition MovieScenePropertyTemplate.h:171
virtual PropertyType RetrieveCurrentValue(UObject *InObject, IMovieScenePlayer *Player) const
Definition MovieScenePropertyTemplate.h:176
virtual void Actuate(UObject *InObject, typename TCallTraits< PropertyType >::ParamType InFinalValue, const TBlendableTokenStack< PropertyType > &OriginalStack, const FMovieSceneContext &Context, FPersistentEvaluationData &PersistentData, IMovieScenePlayer &Player) override
Definition MovieScenePropertyTemplate.h:181
virtual void Actuate(FMovieSceneInterrogationData &InterrogationData, typename TCallTraits< PropertyType >::ParamType InValue, const TBlendableTokenStack< PropertyType > &OriginalStack, const FMovieSceneContext &Context) const override
Definition MovieScenePropertyTemplate.h:192
PropertyTemplate::FSectionData PropertyData
Definition MovieScenePropertyTemplate.h:170
Definition MovieScenePropertyTemplate.h:131
virtual void Execute(const FMovieSceneContext &Context, const FMovieSceneEvaluationOperand &Operand, FPersistentEvaluationData &PersistentData, IMovieScenePlayer &Player) override
Definition MovieScenePropertyTemplate.h:137
IntermediateType Value
Definition MovieScenePropertyTemplate.h:163
TPropertyTrackExecutionToken(IntermediateType InValue)
Definition MovieScenePropertyTemplate.h:132
Definition WeakObjectPtrTemplates.h:25
TRotator Add(T DeltaPitch, T DeltaYaw, T DeltaRoll)
Definition Rotator.h:664
UE_FORCEINLINE_HINT UE::Math::TRotator< T > Rotation() const
Definition Vector.h:834
Definition MovieSceneRestoreStateParams.h:21