UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
MovieScenePropertyRegistry.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"
7#include "CoreTypes.h"
13#include "Math/NumericLimits.h"
16#include "Misc/InlineValue.h"
17#include "Misc/Optional.h"
18#include "Misc/TVariant.h"
19#include "Stats/Stats.h"
23#include "UObject/NameTypes.h"
25
26#include <initializer_list>
27
29class UClass;
33class UObject;
35
36namespace UE
37{
38namespace MovieScene
39{
40
42struct FPropertyCompositeDefinition;
43struct FPropertyDefinition;
44struct IPropertyTraits;
45
47
60
61
138
151
156
157template<typename PropertyTraits, typename... Composites> struct TCompositePropertyDefinitionBuilder;
158template<typename PropertyTraits> struct TPropertyDefinitionBuilder;
159
165{
166public:
167
168 FPropertyRegistry() = default;
169
172
182
192
199 template<typename PropertyTraits>
207
214 template<typename PropertyTraits>
222
227 {
228 return Properties[PropertyID.TypeIndex];
229 }
230
235 {
236 return Properties;
237 }
238
243
248 {
249 const int32 CompositeOffset = Property.VariableSizeCompositeOffset;
250 const int32 NumComposites = Property.CompositeSize;
251 return MakeArrayView(CompositeDefinitions.GetData() + CompositeOffset, NumComposites);
252 }
253
261
262private:
263
264 template<typename PropertyTraits>
266
267 template<typename PropertyTraits, typename... Composites>
269
276 template<typename PropertyTraits>
278 {
279 using StorageType = typename PropertyTraits::StorageType;
280
281 const int32 CompositeOffsetInt32 = CompositeDefinitions.Num();
282 checkf(CompositeOffsetInt32 <= MAX_uint16, TEXT("Maximum number of composite definitions reached"));
283
284 const uint16 CompositeOffset = static_cast<uint16>(CompositeOffsetInt32);
285
286 TStatId StatID;
287
288#if STATS || ENABLE_STATNAMEDEVENTS
289
290 #if STATS
291 // Use FDynamicStats to create the stat in the right stat group if possible
292 StatID = FDynamicStats::CreateStatId<STAT_GROUP_TO_FStatGroup(STATGROUP_MovieSceneECS)>( FName(InStatName) );
293 #else
294 // Otherwise just make a named stat
296 const int32 NumStorageChars = (ConversionData.Length() + 1); //length doesn't include null terminator
297
298 // We leak this string
300 FMemory::Memcpy(StoragePtr, ConversionData.Get(), NumStorageChars * sizeof(PROFILER_CHAR));
301
302 StatID = TStatId(StoragePtr);
303 #endif
304#endif
305
307 CompositeOffset,
308 InOutPropertyComponents.PropertyTag,
309 InOutPropertyComponents.InitialValue);
310
311 NewDefinition.StatID = StatID;
312
313 NewDefinition.MetaDataTypes = InOutPropertyComponents.MetaDataComponents.GetTypes();
314 checkf(!NewDefinition.MetaDataTypes.Contains(FComponentTypeID()), TEXT("Property meta-data component is not defined"));
315
316 const int32 NewPropertyIndex = Properties.Add(MoveTemp(NewDefinition));
317
318 checkf(!InOutPropertyComponents.CompositeID, TEXT("Property already defined"));
320 }
321
323
324 TArray<FPropertyCompositeDefinition> CompositeDefinitions;
325};
326
327
328
329
330} // namespace MovieScene
331} // namespace UE
332
333#if UE_ENABLE_INCLUDE_ORDER_DEPRECATED_IN_5_5
335#endif
constexpr auto MakeArrayView(OtherRangeType &&Other)
Definition ArrayView.h:873
#define checkf(expr, format,...)
Definition AssertionMacros.h:315
@ INDEX_NONE
Definition CoreMiscDefines.h:150
#define TEXT(x)
Definition Platform.h:1272
FPlatformTypes::TCHAR TCHAR
Either ANSICHAR or WIDECHAR, depending on whether the platform supports wide characters or the requir...
Definition Platform.h:1135
FPlatformTypes::int32 int32
A 32-bit signed integer.
Definition Platform.h:1125
#define DECLARE_CYCLE_STAT(CounterName, StatId, GroupId)
Definition Stats.h:669
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
#define MAX_uint16
Definition NumericLimits.h:20
WIDECHAR PROFILER_CHAR
Definition StatsCommon.h:24
UE_INTRINSIC_CAST UE_REWRITE constexpr std::remove_reference_t< T > && MoveTemp(T &&Obj) noexcept
Definition UnrealTemplate.h:520
uint16_t uint16
Definition binka_ue_file_header.h:7
uint32_t uint32
Definition binka_ue_file_header.h:6
Definition NameTypes.h:617
Definition TrackInstancePropertyBindings.h:143
Definition MovieScene.Build.cs:6
Definition ArrayView.h:139
Definition Array.h:670
Definition InlineValue.h:22
Definition SubclassOf.h:30
Definition TVariant.h:48
Definition Class.h:3793
Definition MovieScenePropertyRegistry.h:165
TCompositePropertyDefinitionBuilder< PropertyTraits > DefineCompositeProperty(TPropertyComponents< PropertyTraits > &InOutPropertyComponents, const TCHAR *InStatName)
Definition MovieScenePropertyRegistry.h:200
TArrayView< const FPropertyDefinition > GetProperties() const
Definition MovieScenePropertyRegistry.h:234
TArrayView< const FPropertyCompositeDefinition > GetComposites(const FPropertyDefinition &Property) const
Definition MovieScenePropertyRegistry.h:247
static MOVIESCENE_API TOptional< FResolvedFastProperty > ResolveFastProperty(UObject *Object, const FMovieScenePropertyBinding &PropertyBinding, FCustomAccessorView CustomAccessors)
Definition MovieScenePropertyRegistry.cpp:171
TArrayView< const FPropertyCompositeDefinition > GetComposites(FCompositePropertyTypeID PropertyID) const
Definition MovieScenePropertyRegistry.h:257
MOVIESCENE_API const FPropertyDefinition * FindPropertyDefinition(FComponentTypeID ComponentTypeID) const
Definition MovieScenePropertyRegistry.cpp:224
FPropertyRegistry(const FPropertyRegistry &)=delete
const FPropertyDefinition & GetDefinition(FCompositePropertyTypeID PropertyID) const
Definition MovieScenePropertyRegistry.h:226
static MOVIESCENE_API TOptional< FResolvedProperty > ResolveProperty(UObject *Object, const FMovieScenePropertyBinding &PropertyBinding, FCustomAccessorView CustomAccessors)
Definition MovieScenePropertyRegistry.cpp:201
FPropertyRegistry(FPropertyRegistry &&)=delete
TPropertyDefinitionBuilder< PropertyTraits > DefineProperty(TPropertyComponents< PropertyTraits > &InOutPropertyComponents, const TCHAR *InStatName)
Definition MovieScenePropertyRegistry.h:215
Definition MovieSceneBlenderSystem.h:45
Definition MovieSceneEntitySystemLinker.h:113
Definition MovieSceneTrack.h:206
Definition Object.h:95
Definition AdvancedWidgetsModule.cpp:13
U16 Index
Definition radfft.cpp:71
static UE_FORCEINLINE_HINT void * Memcpy(void *Dest, const void *Src, SIZE_T Count)
Definition UnrealMemory.h:160
Definition MovieScenePropertyBinding.h:17
Definition Optional.h:131
Definition LightweightStats.h:416
Definition MovieSceneEntityIDs.h:174
Definition MovieScenePropertySystemTypes.h:28
static FCompositePropertyTypeID FromIndex(int32 Index)
Definition MovieScenePropertySystemTypes.h:31
Definition MovieScenePropertySystemTypes.h:164
Definition MovieScenePropertyRegistry.h:141
FComponentTypeID ComponentTypeID
Definition MovieScenePropertyRegistry.h:143
uint16 CompositeOffset
Definition MovieScenePropertyRegistry.h:149
Definition MovieScenePropertyRegistry.h:66
FComponentTypeID InitialValueType
Definition MovieScenePropertyRegistry.h:127
TStatId StatID
Definition MovieScenePropertyRegistry.h:112
TSubclassOf< UMovieSceneTrack > DefaultTrackType
Definition MovieScenePropertyRegistry.h:109
FPropertyDefinition(uint16 InVariableSizeCompositeOffset, FComponentTypeID InPropertyType, FComponentTypeID InInitialValueType)
Definition MovieScenePropertyRegistry.h:69
FPropertyDefinition(const FPropertyDefinition &)=delete
uint16 VariableSizeCompositeOffset
Definition MovieScenePropertyRegistry.h:118
MOVIESCENE_API void SetupInitialValueProcessor() const
Definition MovieScenePropertyRegistry.cpp:230
uint16 CompositeSize
Definition MovieScenePropertyRegistry.h:121
const IPropertyTraits * TraitsInstance
Definition MovieScenePropertyRegistry.h:106
UClass * BlenderSystemClass
Definition MovieScenePropertyRegistry.h:133
FPropertyDefinition(FPropertyDefinition &&)=default
TComponentTypeID< T > GetMetaDataComponent(int32 Index) const
Definition MovieScenePropertyRegistry.h:92
uint32 DoubleCompositeMask
Definition MovieScenePropertyRegistry.h:115
TInlineValue< IPropertyComponentHandler, 32 > Handler
Definition MovieScenePropertyRegistry.h:136
TArrayView< const FComponentTypeID > MetaDataTypes
Definition MovieScenePropertyRegistry.h:130
ICustomPropertyRegistration * CustomPropertyRegistration
Definition MovieScenePropertyRegistry.h:103
FComponentTypeID PropertyType
Definition MovieScenePropertyRegistry.h:124
Definition MovieScenePropertyRegistry.h:53
int32 NumProperties
Definition MovieScenePropertyRegistry.h:55
int32 NumPartialProperties
Definition MovieScenePropertyRegistry.h:58
Definition MovieScenePropertySystemTypes.h:216
Definition MovieScenePropertyTraits.h:40
Definition MovieSceneEntityIDs.h:283
Definition MovieScenePropertyComponentHandler.h:763
Definition MovieScenePropertySystemTypes.h:299
Definition MovieScenePropertyComponentHandler.h:675