29template<
typename PropertyTraits,
typename ...CompositeTypes>
30struct TVariantPropertyComponentHandler;
36 static_assert(!std::is_same_v<T, T>,
"Please implement this function for the necessary types to support unpacking the property type into its constituent channels");
58template<
typename ...UObjectPropertyTypes>
63template<
typename ...CompositeTypes>
73template<
typename UObjectPropertyType,
typename InMemoryType,
bool bInIsComposite = true>
77 static constexpr bool bNeedsConversion = !std::is_same_v<InMemoryType, UObjectPropertyType>;
181 template<
typename ...T>
188template<
typename StorageType>
208template<
typename UObjectPropertyType,
typename StorageType>
269template<
typename InMemoryType,
typename ...UObjectPropertyTypes>
332 template<
typename ...Composites>
340 return sizeof...(UObjectPropertyTypes) > 1;
397 template<
typename ...T>
405template<
typename InMemoryType,
typename ...UObjectPropertyTypes>
422 return sizeof...(UObjectPropertyTypes) +
DynamicTraits.Num() > 1;
430 template<
typename ...Composites>
528 const void* PropertyAddress =
reinterpret_cast<const uint8*
>(InObject) + PropertyOffset;
567 void* PropertyAddress =
reinterpret_cast<uint8*
>(InObject) + PropertyOffset;
598 template<
typename ...T>
610template<
typename RuntimeType,
typename ...MetaDataTypes>
644template<
typename UObjectPropertyType,
bool bInIsComposite = true>
647template<
typename UObjectPropertyType,
typename InMemoryType,
bool bInIsComposite = true>
OODEFFUNC typedef void(OODLE_CALLBACK t_fp_OodleCore_Plugin_Free)(void *ptr)
#define check(expr)
Definition AssertionMacros.h:314
#define UE_DEPRECATED(Version, Message)
Definition CoreMiscDefines.h:302
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
const bool
Definition NetworkReplayStreaming.h:178
Definition NameTypes.h:617
Definition UnrealType.h:174
Definition UnrealType.h:6306
Definition TrackInstancePropertyBindings.h:143
void CallFunction(UObject &InRuntimeObject, typename TCallTraits< ValueType >::ParamType PropertyValue)
Definition TrackInstancePropertyBindings.h:155
ValueType GetCurrentValue(const UObject &Object)
Definition TrackInstancePropertyBindings.h:220
Definition MovieScene.Build.cs:6
Definition PropertyPath.Build.cs:6
Definition SubclassOf.h:30
Definition MovieSceneTrack.h:206
UE_REWRITE constexpr auto FindBy(RangeType &&Range, const ValueType &Value, ProjectionType Proj) -> decltype(AlgoImpl::FindBy(Forward< RangeType >(Range), Value, MoveTemp(Proj)))
Definition Find.h:68
void ConvertOperationalProperty(const InType &In, OutType &Out)
Definition MovieSceneOperationalTypeConversions.h:12
void UnpackChannelsFromOperational(T &&, const FProperty &Property, FUnpackedChannelValues &)
Definition MovieScenePropertyTraits.h:34
Definition AdvancedWidgetsModule.cpp:13
U16 Index
Definition radfft.cpp:71
static UScriptStruct * Get()
Definition Class.h:5275
TCallTraitsParamTypeHelper< T, PassByValue >::ParamType ParamType
Definition UnrealTypeTraits.h:275
Definition Optional.h:131
Definition MovieScenePropertySystemTypes.h:136
Definition MovieSceneIntermediatePropertyValue.h:131
Definition MovieSceneUnpackedChannelValues.h:159
Definition MovieSceneVariantPropertyTypeIndex.h:11
Definition MovieScenePropertyTraits.h:40
virtual ~IPropertyTraits()
Definition MovieScenePropertyTraits.h:43
virtual bool InitializeTrackFromProperty(UMovieSceneTrack *InTrack, const FProperty *InProperty) const
Definition MovieScenePropertyTraits.h:51
virtual TSubclassOf< UMovieSceneTrack > GetTrackClass(const FProperty *InProperty) const
Definition MovieScenePropertyTraits.h:47
Definition MovieScenePropertyTraits.h:65
Definition MovieScenePropertySystemTypes.h:152
Definition MovieScenePropertyTraits.h:407
bool NeedsMetaData() const
Definition MovieScenePropertyTraits.h:420
void GetObjectPropertyValue(const UObject *InObject, FVariantPropertyTypeIndex VariantTypeIndex, uint16 PropertyOffset, StorageType &OutValue) const
Definition MovieScenePropertyTraits.h:521
void SetObjectPropertyValue(UObject *InObject, FVariantPropertyTypeIndex VariantTypeIndex, uint16 PropertyOffset, StorageTypeParam InValue) const
Definition MovieScenePropertyTraits.h:560
TArray< TDynamicVariantTraitsBase< StorageType > > DynamicTraits
Definition MovieScenePropertyTraits.h:418
static void SetObjectPropertyValue(UObject *InObject, FVariantPropertyTypeIndex VariantTypeIndex, const FCustomPropertyAccessor &BaseCustomAccessor, StorageTypeParam InValue)
Definition MovieScenePropertyTraits.h:592
TDynamicVariantPropertyTraits< InMemoryType, UObjectPropertyTypes... > TraitsType
Definition MovieScenePropertyTraits.h:409
virtual TSubclassOf< UMovieSceneTrack > GetTrackClass(const FProperty *InProperty) const override
Definition MovieScenePropertyTraits.h:436
void AddDynamicType(const TDynamicVariantTraitsBase< StorageType > &Variant)
Definition MovieScenePropertyTraits.h:516
static void GetObjectPropertyValue(const UObject *InObject, FVariantPropertyTypeIndex VariantTypeIndex, const FCustomPropertyAccessor &BaseCustomAccessor, StorageType &OutValue)
Definition MovieScenePropertyTraits.h:553
typename TCallTraits< StorageType >::ParamType StorageTypeParam
Definition MovieScenePropertyTraits.h:411
static TVariantPropertyComponentHandler< TraitsType, Composites... > MakeHandler()
Definition MovieScenePropertyTraits.h:431
InMemoryType StorageType
Definition MovieScenePropertyTraits.h:410
bool ComputeVariantIndex(const FProperty &InProperty, FVariantPropertyTypeIndex &OutTypeIndex) const
Definition MovieScenePropertyTraits.h:462
static constexpr bool bIsComposite
Definition MovieScenePropertyTraits.h:416
void GetObjectPropertyValue(const UObject *InObject, FVariantPropertyTypeIndex VariantTypeIndex, FTrackInstancePropertyBindings *PropertyBindings, StorageType &OutValue) const
Definition MovieScenePropertyTraits.h:537
void SetObjectPropertyValue(UObject *InObject, FVariantPropertyTypeIndex VariantTypeIndex, FTrackInstancePropertyBindings *PropertyBindings, StorageTypeParam InValue) const
Definition MovieScenePropertyTraits.h:576
FIntermediatePropertyValue CoercePropertyValue(const FProperty &InProperty, const FSourcePropertyValue &InPropertyValue) const
Definition MovieScenePropertyTraits.h:487
bool SupportsProperty(const FProperty &InProperty) const
Definition MovieScenePropertyTraits.h:482
static StorageType CombineComposites(FVariantPropertyTypeIndex VariantTypeIndex, T &&... InComposites)
Definition MovieScenePropertyTraits.h:599
virtual bool InitializeTrackFromProperty(UMovieSceneTrack *InTrack, const FProperty *InProperty) const override
Definition MovieScenePropertyTraits.h:448
static void UnpackChannels(const InMemoryType &Value, const FProperty &Property, FUnpackedChannelValues &OutUnpackedValues)
Definition MovieScenePropertyTraits.h:425
Definition MovieScenePropertyTraits.h:190
ApplySlowPropertyPtr ApplySlowProperty
Definition MovieScenePropertyTraits.h:204
void(*)(UObject *, FTrackInstancePropertyBindings *, StorageTypeParam) ApplySlowPropertyPtr
Definition MovieScenePropertyTraits.h:196
void(*)(StorageTypeParam, void *) CastToFinalPtr
Definition MovieScenePropertyTraits.h:194
void(*)(const UObject *, FTrackInstancePropertyBindings *, StorageType &) RetrieveSlowPropertyPtr
Definition MovieScenePropertyTraits.h:195
RetrieveSlowPropertyPtr RetrieveSlowProperty
Definition MovieScenePropertyTraits.h:203
InitializeNewTrackPtr InitializeNewTrack
Definition MovieScenePropertyTraits.h:205
CastToFinalPtr CastToFinal
Definition MovieScenePropertyTraits.h:202
typename TCallTraits< StorageType >::ParamType StorageTypeParam
Definition MovieScenePropertyTraits.h:191
void(*)(const void *, StorageType &) CastToOperationalPtr
Definition MovieScenePropertyTraits.h:193
UScriptStruct * Struct
Definition MovieScenePropertyTraits.h:199
void(*)(UMovieSceneTrack *, const FProperty *) InitializeNewTrackPtr
Definition MovieScenePropertyTraits.h:197
CastToOperationalPtr CastToOperational
Definition MovieScenePropertyTraits.h:201
TSubclassOf< UMovieSceneTrack > TrackClass
Definition MovieScenePropertyTraits.h:200
Definition MovieScenePropertyTraits.h:210
TDynamicVariantTraits< UObjectPropertyType, StorageType > & SetTrackClass(TSubclassOf< UMovieSceneTrack > InTrackClass)
Definition MovieScenePropertyTraits.h:232
typename TCallTraits< StorageType >::ParamType StorageTypeParam
Definition MovieScenePropertyTraits.h:211
static void ApplySlowPropertyImpl(UObject *InObject, FTrackInstancePropertyBindings *PropertyBindings, StorageTypeParam InValue)
Definition MovieScenePropertyTraits.h:260
static void CastToFinalImpl(StorageTypeParam InValue, void *Out)
Definition MovieScenePropertyTraits.h:249
TDynamicVariantTraits< UObjectPropertyType, StorageType > & SetTrackInitializer(InitializeNewTrackPtr InFunc)
Definition MovieScenePropertyTraits.h:238
static void CastToOperationalImpl(const void *In, StorageType &OutValue)
Definition MovieScenePropertyTraits.h:244
void(*)(UMovieSceneTrack *, const FProperty *) InitializeNewTrackPtr
Definition MovieScenePropertyTraits.h:213
TDynamicVariantTraits(UScriptStruct *InStruct)
Definition MovieScenePropertyTraits.h:223
TDynamicVariantTraits()
Definition MovieScenePropertyTraits.h:215
static void RetrieveSlowPropertyImpl(const UObject *InObject, FTrackInstancePropertyBindings *PropertyBindings, StorageType &OutValue)
Definition MovieScenePropertyTraits.h:255
Definition MovieScenePropertySupport.h:22
Definition MovieScenePropertyTraits.h:75
typename TCallTraits< StorageType >::ParamType StorageTypeParam
Definition MovieScenePropertyTraits.h:81
static constexpr bool bIsComposite
Definition MovieScenePropertyTraits.h:76
static FORCEINLINE bool SupportsProperty(const FProperty &InProperty)
Definition MovieScenePropertyTraits.h:84
static FORCEINLINE void SetObjectPropertyValue(UObject *InObject, FTrackInstancePropertyBindings *PropertyBindings, StorageTypeParam InValue)
Definition MovieScenePropertyTraits.h:166
static FORCEINLINE void GetObjectPropertyValue(const UObject *InObject, const FName &PropertyPath, StorageType &OutValue)
Definition MovieScenePropertyTraits.h:132
static FORCEINLINE void SetObjectPropertyValue(UObject *InObject, uint16 PropertyOffset, StorageTypeParam InValue)
Definition MovieScenePropertyTraits.h:154
static FORCEINLINE void SetObjectPropertyValue(UObject *InObject, const FCustomPropertyAccessor &BaseCustomAccessor, StorageTypeParam InValue)
Definition MovieScenePropertyTraits.h:149
static FORCEINLINE void GetObjectPropertyValue(const UObject *InObject, const FCustomPropertyAccessor &BaseCustomAccessor, StorageType &OutValue)
Definition MovieScenePropertyTraits.h:100
static FORCEINLINE FIntermediatePropertyValue CoercePropertyValue(const FProperty &InProperty, const FSourcePropertyValue &InPropertyValue)
Definition MovieScenePropertyTraits.h:88
static constexpr bool bNeedsConversion
Definition MovieScenePropertyTraits.h:77
InMemoryType StorageType
Definition MovieScenePropertyTraits.h:80
static FORCEINLINE void UnpackChannels(const InMemoryType &Value, const FProperty &Property, FUnpackedChannelValues &OutUnpackedValues)
Definition MovieScenePropertyTraits.h:94
static FORCEINLINE StorageType CombineComposites(T &&... InComposites)
Definition MovieScenePropertyTraits.h:182
static FORCEINLINE void GetObjectPropertyValue(const UObject *InObject, FTrackInstancePropertyBindings *PropertyBindings, StorageType &OutValue)
Definition MovieScenePropertyTraits.h:119
static FORCEINLINE void GetObjectPropertyValue(const UObject *InObject, uint16 PropertyOffset, StorageType &OutValue)
Definition MovieScenePropertyTraits.h:106
Definition MovieScenePropertyTraits.h:612
RuntimeType StorageType
Definition MovieScenePropertyTraits.h:613
static void SetObjectPropertyValue(UObject *InObject, const FCustomPropertyAccessor &BaseCustomAccessor, typename TCallTraits< MetaDataTypes >::ParamType... MetaData, StorageTypeParam InValue)
Definition MovieScenePropertyTraits.h:632
static void GetObjectPropertyValue(const UObject *InObject, uint16 PropertyOffset, typename TCallTraits< MetaDataTypes >::ParamType... MetaData, StorageType &OutValue)
Definition MovieScenePropertyTraits.h:622
static void SetObjectPropertyValue(UObject *InObject, uint16 PropertyOffset, typename TCallTraits< MetaDataTypes >::ParamType... MetaData, StorageTypeParam InValue)
Definition MovieScenePropertyTraits.h:635
static void GetObjectPropertyValue(const UObject *InObject, const FCustomPropertyAccessor &BaseCustomAccessor, typename TCallTraits< MetaDataTypes >::ParamType... MetaData, StorageType &OutValue)
Definition MovieScenePropertyTraits.h:619
static void GetObjectPropertyValue(const UObject *InObject, FTrackInstancePropertyBindings *PropertyBindings, typename TCallTraits< MetaDataTypes >::ParamType... MetaData, StorageType &OutValue)
Definition MovieScenePropertyTraits.h:625
static void GetObjectPropertyValue(const UObject *InObject, const FName &PropertyPath, StorageType &OutValue)
Definition MovieScenePropertyTraits.h:628
static void SetObjectPropertyValue(UObject *InObject, FTrackInstancePropertyBindings *PropertyBindings, typename TCallTraits< MetaDataTypes >::ParamType... MetaData, StorageTypeParam InValue)
Definition MovieScenePropertyTraits.h:638
typename TCallTraits< StorageType >::ParamType StorageTypeParam
Definition MovieScenePropertyTraits.h:614
Definition MovieScenePropertyTraits.h:60
Definition MovieSceneVariantPropertyComponentHandler.h:15
Definition MovieScenePropertyTraits.h:272
static bool NeedsMetaData()
Definition MovieScenePropertyTraits.h:338
static bool ComputeVariantIndex(const FProperty &Property, FVariantPropertyTypeIndex &OutTypeIndex)
Definition MovieScenePropertyTraits.h:290
static FIntermediatePropertyValue CoercePropertyValue(const FProperty &InProperty, const FSourcePropertyValue &InPropertyValue)
Definition MovieScenePropertyTraits.h:306
typename TCallTraits< StorageType >::ParamType StorageTypeParam
Definition MovieScenePropertyTraits.h:277
static void GetObjectPropertyValue(const UObject *InObject, FVariantPropertyTypeIndex VariantTypeIndex, FTrackInstancePropertyBindings *PropertyBindings, StorageType &OutValue)
Definition MovieScenePropertyTraits.h:360
static constexpr bool bIsComposite
Definition MovieScenePropertyTraits.h:274
static void SetObjectPropertyValue(UObject *InObject, FVariantPropertyTypeIndex VariantTypeIndex, const FCustomPropertyAccessor &BaseCustomAccessor, StorageTypeParam InValue)
Definition MovieScenePropertyTraits.h:371
static void GetObjectPropertyValue(const UObject *InObject, FVariantPropertyTypeIndex VariantTypeIndex, uint16 PropertyOffset, StorageType &OutValue)
Definition MovieScenePropertyTraits.h:350
static void UnpackChannels(const InMemoryType &Value, const FProperty &Property, FUnpackedChannelValues &OutUnpackedValues)
Definition MovieScenePropertyTraits.h:327
static void SetObjectPropertyValue(UObject *InObject, FVariantPropertyTypeIndex VariantTypeIndex, FTrackInstancePropertyBindings *PropertyBindings, StorageTypeParam InValue)
Definition MovieScenePropertyTraits.h:386
static bool SupportsProperty(const FProperty &InProperty)
Definition MovieScenePropertyTraits.h:284
static TVariantPropertyComponentHandler< TraitsType, Composites... > MakeHandler()
Definition MovieScenePropertyTraits.h:333
TVariantPropertyTraits< StorageType, UObjectPropertyTypes... > TraitsType
Definition MovieScenePropertyTraits.h:282
static StorageType CombineComposites(FVariantPropertyTypeIndex VariantTypeIndex, T &&... InComposites)
Definition MovieScenePropertyTraits.h:398
InMemoryType StorageType
Definition MovieScenePropertyTraits.h:276
static void SetObjectPropertyValue(UObject *InObject, FVariantPropertyTypeIndex VariantTypeIndex, uint16 PropertyOffset, StorageTypeParam InValue)
Definition MovieScenePropertyTraits.h:376
static FIntermediatePropertyValue CoercePropertyValueChecked(const FProperty &InProperty, FVariantPropertyTypeIndex VariantIndex, const FSourcePropertyValue &InPropertyValue)
Definition MovieScenePropertyTraits.h:319
static void GetObjectPropertyValue(const UObject *InObject, FVariantPropertyTypeIndex VariantTypeIndex, const FCustomPropertyAccessor &BaseCustomAccessor, StorageType &OutValue)
Definition MovieScenePropertyTraits.h:343
static constexpr int32 CompileTimeNum
Definition MovieScenePropertyTraits.h:273