UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
MovieScenePropertyInstantiator.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
13
14#include "Misc/TVariant.h"
15#include "Misc/Optional.h"
16#include "Containers/BitArray.h"
17#include "Containers/Map.h"
19
20#include "MovieScenePropertyInstantiator.generated.h"
21
22namespace UE
23{
24namespace MovieScene
25{
26
27struct FPropertyStats;
28struct FPropertyDefinition;
29class FEntityManager;
30
31} // namespace MovieScene
32} // namespace UE
33
35
37UCLASS(MinimalAPI)
40{
41public:
42
44
46
48
52 MOVIESCENETRACKS_API UE::MovieScene::FPropertyStats GetStatsForProperty(UE::MovieScene::FCompositePropertyTypeID PropertyID) const;
53
64 template<typename PropertyTraits, typename ValueType>
65 UE::MovieScene::TRecompositionResult<ValueType> RecomposeBlend(const UE::MovieScene::TPropertyComponents<PropertyTraits>& InComponents, const UE::MovieScene::FDecompositionQuery& InQuery, const ValueType& InCurrentValue)
66 {
67 using namespace UE::MovieScene;
68
69 using StorageType = typename PropertyTraits::StorageType;
70
71 StorageType TmpStorage{};
72 ConvertOperationalProperty(InCurrentValue, TmpStorage);
73
75
77 for (int32 Index = 0; Index < Result.Values.Num(); ++Index)
78 {
79 ConvertOperationalProperty(Result.Values[Index], ConversionResult.Values[Index]);
80 }
81 return ConversionResult;
82 }
83
84
94 template<typename PropertyTraits>
96
98
99private:
100
102 MOVIESCENETRACKS_API virtual void OnLink() override;
103 MOVIESCENETRACKS_API virtual void OnUnlink() override;
104 MOVIESCENETRACKS_API virtual void OnCleanTaggedGarbage() override;
105
106private:
107
108 void OnObjectsReplaced(const TMap<UObject*, UObject*>& ReplacementMap);
109
110private:
111
112 using FChannelMask = TBitArray<TFixedAllocator< 1 >>;
113 using FSlowPropertyPtr = TSharedPtr<FTrackInstancePropertyBindings>;
114
115 struct FContributorKey
116 {
117 FContributorKey(int32 InPropertyIndex)
118 : PropertyIndex(InPropertyIndex)
119 {}
120
121 int32 PropertyIndex;
122
123 friend uint32 GetTypeHash(FContributorKey In)
124 {
125 return GetTypeHash(In.PropertyIndex);
126 }
127
128 friend bool operator==(FContributorKey A, FContributorKey B)
129 {
130 return A.PropertyIndex == B.PropertyIndex;
131 }
132 };
133
134 struct FObjectPropertyInfo
135 {
136 FObjectPropertyInfo(UE::MovieScene::FResolvedProperty&& InProperty)
138 , BoundObject(nullptr)
139 , BlendChannel(FMovieSceneBlendChannelID::INVALID_BLEND_CHANNEL)
140 , bWantsRestoreState( false)
141 , bSupportsFastPath( true)
142 , bNeedsInitialValue( false)
143 , bMaxHBiasHasChanged(false)
144 , bIsPartiallyAnimated(false)
145 {}
146
152 UObject* BoundObject;
154 FMovieScenePropertyBinding PropertyBinding;
156 FChannelMask EmptyChannels;
158 UE::MovieScene::FMovieSceneEntityID FinalBlendOutputID;
159 UE::MovieScene::FMovieSceneEntityID PreviousFastPathID;
161 uint16 BlendChannel;
163 int32 PropertyDefinitionIndex;
165 TOptional<int32> ConvertedFromPropertyDefinitionIndex;
166 int16 HBias = 0;
167 uint8 bWantsRestoreState : 1;
168 uint8 bSupportsFastPath : 1;
169 uint8 bNeedsInitialValue : 1;
170 uint8 bMaxHBiasHasChanged : 1;
171 uint8 bIsPartiallyAnimated : 1;
172 };
173
174private:
175
176 struct FBlenderSystemInfo
177 {
178 UClass* BlenderSystemClass = nullptr;
180 };
181
182 struct FSetupBlenderSystemResult
183 {
184 FBlenderSystemInfo CurrentInfo;
185 FBlenderSystemInfo PreviousInfo;
186 };
187
188 /* Parameter structure passed around when instantiating a specific instance of a property */
189 struct FPropertyParameters
190 {
192 FObjectPropertyInfo* PropertyInfo;
194 const UE::MovieScene::FPropertyDefinition* PropertyDefinition;
196 int32 PropertyInfoIndex;
197
198 FContributorKey MakeContributorKey() const;
199
200 void MakeOutputComponentType(
201 const UE::MovieScene::FEntityManager& EntityManager,
204 };
205
206 void DiscoverInvalidatedProperties(TBitArray<>& OutInvalidatedProperties);
207 void DiscoverExpiredProperties(TBitArray<>& OutInvalidatedProperties);
208 void DiscoverNewProperties(TBitArray<>& OutInvalidatedProperties);
209 void UpgradeFloatToDoubleProperties(const TBitArray<>& InvalidatedProperties);
210 void ProcessInvalidatedProperties(const TBitArray<>& InvalidatedProperties);
211 void UpdatePropertyInfo(const FPropertyParameters& Params);
212 void InitializeFastPath(const FPropertyParameters& Params);
213 void InitializeBlendPath(const FPropertyParameters& Params);
214
215 void DestroyStaleProperty(int32 PropertyIndex);
216 void PostDestroyStaleProperties();
217
218 FSetupBlenderSystemResult SetupBlenderSystem(const FPropertyParameters& Params);
219
220 bool ResolveProperty(UE::MovieScene::FCustomAccessorView CustomAccessors, UObject* Object, const FMovieScenePropertyBinding& PropertyBinding, const UE::MovieScene::FEntityGroupID& GroupID, int32 PropertyDefinitionIndex);
221
222 void InitializePropertyMetaData(FSystemTaskPrerequisites& InPrerequisites, FSystemSubsequentTasks& Subsequents);
223
224private:
225
226 static constexpr uint16 INVALID_BLEND_CHANNEL = uint16(-1);
227
229
230 TSparseArray<FObjectPropertyInfo> ResolvedProperties;
233
235
236 UE::MovieScene::FComponentMask CleanFastPathMask;
237
238 TBitArray<> PendingInvalidatedProperties;
239 TBitArray<> InitializePropertyMetaDataTasks;
240 TBitArray<> SaveGlobalStateTasks;
241
243
245};
246
247
248template<typename PropertyTraits>
FPlatformTypes::int16 int16
A 16-bit signed integer.
Definition Platform.h:1123
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
return true
Definition ExternalRpcRegistry.cpp:601
#define GENERATED_BODY(...)
Definition ObjectMacros.h:765
#define UCLASS(...)
Definition ObjectMacros.h:776
UE_INTRINSIC_CAST UE_REWRITE constexpr std::remove_reference_t< T > && MoveTemp(T &&Obj) noexcept
Definition UnrealTemplate.h:520
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 UObjectGlobals.h:1292
Definition MovieScene.Build.cs:6
Definition ArrayView.h:139
Definition Array.h:670
Definition BitArray.h:350
Definition UnrealString.h.inl:34
Definition SharedPointer.h:692
Definition SparseArray.h:524
Definition Class.h:3793
Definition MovieSceneEntityManager.h:81
Definition MovieSceneBlenderSystem.h:45
Definition MovieSceneEntityInstantiatorSystem.h:22
Definition MovieScenePropertyInstantiator.h:40
UE::MovieScene::TRecompositionResult< typename PropertyTraits::StorageType > RecomposeBlendOperational(const UE::MovieScene::TPropertyComponents< PropertyTraits > &InComponents, const UE::MovieScene::FDecompositionQuery &InQuery, const typename PropertyTraits::StorageType &InCurrentValue)
Definition MovieScenePropertyInstantiator.h:249
Definition Object.h:95
uint32 GetTypeHash(const FKey &Key)
Definition BlackboardKey.h:35
bool operator==(const FCachedAssetKey &A, const FCachedAssetKey &B)
Definition AssetDataMap.h:501
Definition ConstraintsManager.h:14
void ResolveProperty(const UObject &InObject, FStringView PropertyPath, FPropertyResolutionState &OutResolutionState)
Definition TrackInstancePropertyBindings.cpp:188
Definition AdvancedWidgetsModule.cpp:13
@ false
Definition radaudio_common.h:23
U16 Index
Definition radfft.cpp:71
Definition MovieSceneBlenderSystemTypes.h:51
Definition MovieScenePropertyBinding.h:17
Definition Optional.h:131
Definition WeakObjectPtrTemplates.h:25
Definition BuiltInComponentTypes.h:578
Definition MovieSceneEntityIDs.h:40
Definition MovieSceneEntityIDs.h:174
Definition MovieScenePropertySystemTypes.h:164
Definition MovieSceneDecompositionQuery.h:33
Definition BuiltInComponentTypes.h:534
Definition BuiltInComponentTypes.h:495
Definition MovieSceneEntityIDs.h:302
Definition MovieScenePropertyRegistry.h:66
Definition MovieScenePropertyComponentHandler.h:878
TRecompositionResult< typename PropertyTraits::StorageType > RecomposeBlendOperational(const TPropertyComponents< PropertyTraits > &InComponents, const FDecompositionQuery &InQuery, const typename PropertyTraits::StorageType &InCurrentValue)
Definition MovieScenePropertyComponentHandler.h:888
Definition MovieScenePropertyComponentHandler.h:862
Definition MovieSceneSystemTaskDependencies.h:98
Definition MovieSceneSystemTaskDependencies.h:29
Definition MovieScenePropertySystemTypes.h:299
Definition MovieSceneDecompositionQuery.h:188