31template<
typename PropertyTraits,
typename ...CompositeTypes>
33 :
TPropertyComponentHandlerImpl<PropertyTraits, typename PropertyTraits::MetaDataType, TMakeIntegerSequence<int, PropertyTraits::MetaDataType::Num>, TMakeIntegerSequence<int, sizeof...(CompositeTypes)>, CompositeTypes...>
37template<
typename,
typename,
typename>
40template<
typename PropertyTraits,
typename ...MetaDataTypes,
int ...MetaDataIndices>
75 CacheStorage =
nullptr;
83 if (CustomPropertyRegistration)
85 CustomAccessors = CustomPropertyRegistration->
GetAccessors();
88 if (InitialValueCache)
90 CacheStorage = InitialValueCache->
GetStorage<PropertyTraits>(InitialValueType);
104 VisitInterrogationAllocation(Allocation);
106 else if (CacheStorage)
108 VisitAllocationCached(Allocation);
112 VisitAllocation(Allocation);
118 ValuesByChannel.
Empty();
120 CacheStorage =
nullptr;
258 InitialValues[
Index] = *CachedValue;
289 InitialValues[
Index] = *CachedValue;
290 ValuesByChannel.
Add(Channel, *CachedValue);
314 ValuesByChannel.
Add(Channel, CurrentValue.
GetValue());
319template<
typename PropertyTraits>
335template<
typename T,
typename U = decltype(T::bIsComposite)>
338 return T::bIsComposite;
345template<
typename PropertyTraits,
typename ...MetaDataTypes,
int ...MetaDataIndices,
typename ...CompositeTypes,
int ...CompositeIndices>
364 return static_cast<const PropertyTraits*
>(Definition.TraitsInstance)->SupportsProperty(
InProperty);
372 const PropertyTraits* Traits =
static_cast<const PropertyTraits*
>(Definition.TraitsInstance);
398 const PropertyTraits* TraitsInstance =
static_cast<const PropertyTraits*
>(Definition.TraitsInstance);
403 .ReadAllOf(Definition.GetMetaDataComponent<MetaDataTypes>(
MetaDataIndices)...)
407 .CombineFilter(AdditionalFilter)
408 .SetStat(Definition.StatID)
409 .SetDesiredThread(
Linker->EntityManager.GetGatherThread())
412 if constexpr (bIsComposite)
427 .ReadAllOf(Definition.GetMetaDataComponent<MetaDataTypes>(
MetaDataIndices)...)
430 .FilterAll({ Definition.PropertyType })
432 .CombineFilter(AdditionalFilter)
434 .SetStat(Definition.StatID)
435 .SetDesiredThread(
Linker->EntityManager.GetGatherThread())
445 const PropertyTraits* TraitsInstance =
static_cast<const PropertyTraits*
>(Definition.TraitsInstance);
450 .ReadAllOf(Definition.GetMetaDataComponent<MetaDataTypes>(
MetaDataIndices)...)
454 .SetStat(Definition.StatID)
455 .SetDesiredThread(
Linker->EntityManager.GetGatherThread())
458 if constexpr (bIsComposite)
473 .ReadAllOf(Definition.GetMetaDataComponent<MetaDataTypes>(
MetaDataIndices)...)
476 .FilterAll({ Definition.PropertyType })
479 .SetStat(Definition.StatID)
480 .SetDesiredThread(
Linker->EntityManager.GetGatherThread())
489 static_cast<const PropertyTraits*
>(Definition.TraitsInstance),
490 Definition.InitialValueType.ReinterpretCast<
StorageType>(),
491 Definition.MetaDataTypes,
492 Definition.CustomPropertyRegistration
512 EntityManager.LockDown();
537 if (
Tasks.Num() != 0)
576 EntityManager.ReleaseLockDown();
594 EntityManager.LockDown();
633 EntityManager.ReleaseLockDown();
658 Location.Allocation->TryReadComponents(Composites[
CompositeIndices].ComponentTypeID.ReinterpretCast<
CompositeTypes>()).ComponentAtIndex(Location.ComponentOffset)...
668 template<
typename T,
typename ...Composites>
673template<
typename PropertyTraits>
686 static_assert(!std::is_same_v<typename PropertyTraits::StorageType, float>,
"Please use double-precision composites");
688 if constexpr (std::is_same_v<typename PropertyTraits::StorageType, double>)
696 template<
int InlineSize>
709 template<
typename BlenderSystemType>
741 template<
typename HandlerType>
761template<
typename PropertyTraits,
typename... Composites>
766 static_assert(
sizeof...(Composites) <= 32,
"More than 32 composites is not supported");
775 checkf(Definition == &Registry->
GetProperties().Last(),
TEXT(
"Cannot re-define a property type after another has been added."));
780 Registry->CompositeDefinitions.Add(
NewChannel);
782 static_assert(!std::is_same_v<T, float>,
"Please use double-precision composites");
784 if constexpr (std::is_same_v<T, double>)
795 checkf(Definition == &Registry->
GetProperties().Last(),
TEXT(
"Cannot re-define a property type after another has been added."));
800 Registry->CompositeDefinitions.Add(
NewChannel);
808 template<
int InlineSize>
815 template<
typename BlenderSystemType>
838 Definition->
Handler = PropertyTraits::template MakeHandler<Composites...>();
847 template<
typename HandlerType>
879 template<
typename PropertyTraits>
887template<
typename PropertyTraits>
897 if (
InQuery.Entities.Num() == 0)
917 Params.PropertyEntityID =
Property.PropertyEntityID;
918 Params.DecomposeBlendChannel =
Property.BlendChannel;
#define check(expr)
Definition AssertionMacros.h:314
#define checkf(expr, format,...)
Definition AssertionMacros.h:315
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
#define DECLARE_DELEGATE_RetVal_TwoParams(ReturnValueType, DelegateName, Param1Type, Param2Type)
Definition DelegateCombinations.h:63
constexpr bool TModels_V
Definition Models.h:57
CORE_API FString ToString() const
Definition UnrealNames.cpp:3537
FORCEINLINE bool IsNone() const
Definition NameTypes.h:827
Definition UnrealType.h:174
static CORE_API FTaskGraphInterface & Get()
Definition TaskGraph.cpp:1794
void WaitUntilTaskCompletes(const FGraphEventRef &Task, ENamedThreads::Type CurrentThreadIfKnown=ENamedThreads::AnyThread)
Definition TaskGraphInterfaces.h:416
virtual void WaitUntilTasksComplete(const FGraphEventArray &Tasks, ENamedThreads::Type CurrentThreadIfKnown=ENamedThreads::AnyThread)=0
Definition TrackInstancePropertyBindings.h:143
Definition MovieSceneDecompositionQuery.h:217
Definition MovieScene.Build.cs:6
Definition ArrayView.h:139
UE_FORCEINLINE_HINT constexpr SizeType Num() const
Definition ArrayView.h:380
UE_FORCEINLINE_HINT void Reserve(SizeType Number)
Definition Array.h:3016
Definition SharedPointer.h:692
Definition SortedMap.h:20
UE_FORCEINLINE_HINT ValueType & Add(const KeyType &InKey, const ValueType &InValue)
Definition SortedMap.h:194
ValueType * Find(KeyConstPointerType Key)
Definition SortedMap.h:285
UE_FORCEINLINE_HINT void Empty(int32 ExpectedNumElements=0)
Definition SortedMap.h:124
Definition SubclassOf.h:30
Definition MovieSceneEntityManager.h:81
Definition MovieScenePropertyRegistry.h:165
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
const FPropertyDefinition & GetDefinition(FCompositePropertyTypeID PropertyID) const
Definition MovieScenePropertyRegistry.h:226
Definition IMovieSceneTaskScheduler.h:162
Definition MovieSceneBlenderSystem.h:45
Definition MovieSceneEntitySystemLinker.h:113
FEntityManager EntityManager
Definition MovieSceneEntitySystemLinker.h:125
UMovieSceneEntitySystemLinker * GetLinker() const
Definition MovieSceneEntitySystem.h:161
Definition MovieSceneTrack.h:206
@ GameThread
Definition TaskGraphInterfaces.h:61
TVariant< bool, uint64, int64, double, FString > MetaDataType
Definition TypedElementMetaData.h:23
Definition ConstraintsManager.h:14
void PatchCompositeValue(TArrayView< const FPropertyCompositeDefinition > CompositeDefinitions, void *OutValueAddress, const CompositeTypes *... Composites)
Definition MovieScenePartialProperties.h:39
constexpr bool IsCompositePropertyTraits(T *)
Definition MovieScenePropertyComponentHandler.h:336
Definition AdvancedWidgetsModule.cpp:13
U16 Index
Definition radfft.cpp:71
FName PropertyPath
Definition MovieScenePropertyBinding.h:48
FName PropertyName
Definition MovieScenePropertyBinding.h:44
Definition IntegerSequence.h:9
Definition Optional.h:131
constexpr OptionalType & GetValue()
Definition Optional.h:443
OptionalType & Emplace(ArgsType &&... Args)
Definition Optional.h:323
Definition LightweightStats.h:416
FORCEINLINE T * Get(bool bEvenIfPendingKill) const
Definition WeakObjectPtrTemplates.h:132
Definition MovieScenePropertyComponentHandler.h:667
auto Requires() -> decltype(T::MakeHandler())
Definition BuiltInComponentTypes.h:578
struct UE::MovieScene::FBuiltInComponentTypes::@1489 Tags
TComponentTypeID< FCustomPropertyIndex > CustomPropertyIndex
Definition BuiltInComponentTypes.h:754
TComponentTypeID< uint16 > FastPropertyOffset
Definition BuiltInComponentTypes.h:757
FComponentTypeID Ignored
Definition BuiltInComponentTypes.h:810
struct UE::MovieScene::FBuiltInComponentTypes::@1490 Interrogation
TComponentTypeID< FInitialValueIndex > InitialValueIndex
Definition BuiltInComponentTypes.h:622
static MOVIESCENE_API FBuiltInComponentTypes * Get()
Definition BuiltInComponentTypes.cpp:667
FPropertyRegistry PropertyRegistry
Definition BuiltInComponentTypes.h:583
TComponentTypeID< FInterrogationKey > OutputKey
Definition BuiltInComponentTypes.h:829
TComponentTypeID< UObject * > BoundObject
Definition BuiltInComponentTypes.h:599
TComponentTypeID< TSharedPtr< FTrackInstancePropertyBindings > > SlowProperty
Definition BuiltInComponentTypes.h:760
Definition MovieSceneEntityIDs.h:40
bool Contains(FComponentTypeID InComponentType) const
Definition MovieSceneEntityIDs.h:429
void Set(FComponentTypeID InComponentType)
Definition MovieSceneEntityIDs.h:444
TComponentTypeID< T > ReinterpretCast() const
Definition MovieSceneEntityIDs.h:501
Definition MovieScenePropertySystemTypes.h:164
Definition MovieScenePropertySystemTypes.h:23
Definition MovieSceneDecompositionQuery.h:33
Definition MovieSceneEntitySystemTypes.h:425
Definition MovieSceneEntitySystemTypes.h:624
TComponentLock< TRead< T > > ReadComponents(TComponentTypeID< T > ComponentType) const
Definition MovieSceneEntitySystemTypes.h:877
TComponentLock< TWrite< T > > WriteComponents(TComponentTypeID< T > ComponentType, FEntityAllocationWriteContext InWriteContext) const
Definition MovieSceneEntitySystemTypes.h:900
TComponentLock< TReadOptional< T > > TryReadComponents(TComponentTypeID< T > ComponentType) const
Definition MovieSceneEntitySystemTypes.h:887
int32 Num() const
Definition MovieSceneEntitySystemTypes.h:813
Definition MovieSceneEntitySystemTypes.h:295
Definition MovieSceneEntitySystemTypes.h:1053
Definition MovieSceneEntitySystemTask.h:1045
Definition MovieSceneInitialValueCache.h:56
TPropertyValueStorage< PropertyTraits > * GetStorage(FComponentTypeID InitialValueType)
Definition MovieSceneInitialValueCache.h:95
Definition MovieSceneInterrogation.h:20
TWeakObjectPtr< UObject > WeakObject
Definition MovieSceneInterrogation.h:22
FMovieScenePropertyBinding PropertyBinding
Definition MovieSceneInterrogation.h:25
Definition MovieSceneEntitySystemTypes.h:123
Definition MovieSceneEntityIDs.h:302
static FMovieSceneEntityID Invalid()
Definition MovieSceneEntityIDs.h:343
Definition MovieScenePreAnimatedStateExtension.h:73
Definition IMovieScenePropertyComponentHandler.h:91
Definition MovieScenePropertyRegistry.h:141
Definition MovieScenePropertyRegistry.h:66
FComponentTypeID InitialValueType
Definition MovieScenePropertyRegistry.h:127
TStatId StatID
Definition MovieScenePropertyRegistry.h:112
TSubclassOf< UMovieSceneTrack > DefaultTrackType
Definition MovieScenePropertyRegistry.h:109
MOVIESCENE_API void SetupInitialValueProcessor() const
Definition MovieScenePropertyRegistry.cpp:230
uint16 CompositeSize
Definition MovieScenePropertyRegistry.h:121
UClass * BlenderSystemClass
Definition MovieScenePropertyRegistry.h:133
uint32 DoubleCompositeMask
Definition MovieScenePropertyRegistry.h:115
TInlineValue< IPropertyComponentHandler, 32 > Handler
Definition MovieScenePropertyRegistry.h:136
ICustomPropertyRegistration * CustomPropertyRegistration
Definition MovieScenePropertyRegistry.h:103
FComponentTypeID PropertyType
Definition MovieScenePropertyRegistry.h:124
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
FOnGetPropertyRecomposerPropertyInfo OnGetPropertyInfo
Definition MovieScenePropertyComponentHandler.h:884
Definition MovieScenePropertyComponentHandler.h:862
static constexpr uint16 INVALID_BLEND_CHANNEL
Definition MovieScenePropertyComponentHandler.h:863
FMovieSceneEntityID PropertyEntityID
Definition MovieScenePropertyComponentHandler.h:867
static FPropertyRecomposerPropertyInfo Invalid()
Definition MovieScenePropertyComponentHandler.h:869
uint16 BlendChannel
Definition MovieScenePropertyComponentHandler.h:865
UMovieSceneBlenderSystem * BlenderSystem
Definition MovieScenePropertyComponentHandler.h:866
Definition MovieScenePropertyRegistry.h:53
int32 NumPartialProperties
Definition MovieScenePropertyRegistry.h:58
Definition MovieSceneDecompositionQuery.h:201
Definition MovieSceneIntermediatePropertyValue.h:131
Definition MovieSceneInterrogation.h:40
FInterrogationChannelInfo * Find(FInterrogationChannel Channel)
Definition MovieSceneInterrogation.h:44
Definition MovieSceneSystemTaskDependencies.h:98
Definition MovieSceneSystemTaskDependencies.h:29
Definition MovieSceneUnpackedChannelValues.h:159
Definition MovieSceneDecompositionQuery.h:178
FComponentTypeID ResultComponentType
Definition MovieSceneDecompositionQuery.h:182
Definition MovieScenePropertySystemTypes.h:216
virtual FCustomAccessorView GetAccessors() const =0
Definition IMovieScenePropertyComponentHandler.h:142
Definition MovieSceneInterrogation.h:68
Definition IMovieScenePropertyComponentHandler.h:157
Definition MovieScenePreAnimatedStorageID.h:56
Definition MovieSceneComponentPtr.h:390
Definition MovieSceneComponentPtr.h:381
Definition MovieSceneComponentPtr.h:403
Definition MovieSceneEntityIDs.h:283
Definition MovieScenePropertyComponentHandler.h:763
TCompositePropertyDefinitionBuilder< PropertyTraits, Composites..., double > AddComposite(TComponentTypeID< double > InComponent, double StorageType::*DataPtr)
Definition MovieScenePropertyComponentHandler.h:793
void Commit()
Definition MovieScenePropertyComponentHandler.h:834
TCompositePropertyDefinitionBuilder< PropertyTraits, Composites... > & SetBlenderSystem()
Definition MovieScenePropertyComponentHandler.h:816
TCompositePropertyDefinitionBuilder(FPropertyDefinition *InDefinition, FPropertyRegistry *InRegistry)
Definition MovieScenePropertyComponentHandler.h:768
TCompositePropertyDefinitionBuilder< PropertyTraits, Composites... > & SetBlenderSystem(UClass *BlenderSystemClass)
Definition MovieScenePropertyComponentHandler.h:822
void Commit(HandlerType &&InHandler)
Definition MovieScenePropertyComponentHandler.h:848
typename PropertyTraits::StorageType StorageType
Definition MovieScenePropertyComponentHandler.h:764
TCompositePropertyDefinitionBuilder< PropertyTraits, Composites... > & SetDefaultTrackType(TSubclassOf< UMovieSceneTrack > InDefaultTrackType)
Definition MovieScenePropertyComponentHandler.h:828
TCompositePropertyDefinitionBuilder< PropertyTraits, Composites..., T > AddComposite(TComponentTypeID< T > InComponent, T StorageType::*DataPtr)
Definition MovieScenePropertyComponentHandler.h:773
TCompositePropertyDefinitionBuilder< PropertyTraits, Composites... > & SetCustomAccessors(TCustomPropertyRegistration< PropertyTraits, InlineSize > *InCustomAccessors)
Definition MovieScenePropertyComponentHandler.h:809
Definition MovieScenePropertySystemTypes.h:232
TFilteredEntityTask< T... > FilterAny(const FComponentMask &InComponentMask)
Definition MovieSceneEntitySystemTask.h:228
TFilteredEntityTask< T... > FilterAll(const FComponentMask &InComponentMask)
Definition MovieSceneEntitySystemTask.h:188
Definition MovieScenePropertyComponentHandler.h:38
Definition MovieScenePropertyComponentHandler.h:321
TInitialValueProcessor(const PropertyTraits *InTraits, TComponentTypeID< typename PropertyTraits::StorageType > InInitialValueType, TArrayView< const FComponentTypeID > InMetaDataComponents, ICustomPropertyRegistration *InCustomPropertyRegistration)
Definition MovieScenePropertyComponentHandler.h:326
TInitialValueProcessor()=delete
Definition MovieScenePreAnimatedPropertyStorage.h:140
Definition MovieScenePropertyComponentHandler.h:29
Definition MovieScenePropertyComponentHandler.h:34
Definition MovieScenePropertySystemTypes.h:299
TCompositePropertyTypeID< InPropertyTraits > CompositeID
Definition MovieScenePropertySystemTypes.h:307
Definition MovieScenePropertyComponentHandler.h:675
TPropertyDefinitionBuilder< PropertyTraits > & SetDefaultTrackType(TSubclassOf< UMovieSceneTrack > InDefaultTrackType)
Definition MovieScenePropertyComponentHandler.h:722
TPropertyDefinitionBuilder< PropertyTraits > & SetStat(TStatId InStatID)
Definition MovieScenePropertyComponentHandler.h:703
TPropertyDefinitionBuilder< PropertyTraits > & AddSoleChannel(TComponentTypeID< typename PropertyTraits::StorageType > InComponent)
Definition MovieScenePropertyComponentHandler.h:676
TPropertyDefinitionBuilder< PropertyTraits > & SetBlenderSystem()
Definition MovieScenePropertyComponentHandler.h:710
void Commit(HandlerType &&InHandler)
Definition MovieScenePropertyComponentHandler.h:742
TPropertyDefinitionBuilder< PropertyTraits > & SetCustomAccessors(TCustomPropertyRegistration< PropertyTraits, InlineSize > *InCustomAccessors)
Definition MovieScenePropertyComponentHandler.h:697
void Commit()
Definition MovieScenePropertyComponentHandler.h:728
friend FPropertyRegistry
Definition MovieScenePropertyComponentHandler.h:750
TPropertyDefinitionBuilder(FPropertyDefinition *InDefinition, FPropertyRegistry *InRegistry)
Definition MovieScenePropertyComponentHandler.h:752
TPropertyDefinitionBuilder< PropertyTraits > & SetBlenderSystem(UClass *BlenderSystemClass)
Definition MovieScenePropertyComponentHandler.h:716
FPropertyDefinition * Definition
Definition MovieScenePropertyComponentHandler.h:756
FPropertyRegistry * Registry
Definition MovieScenePropertyComponentHandler.h:757
Definition MovieSceneInitialValueCache.h:166
const StorageType & GetCachedValue(FInitialValueIndex Index)
Definition MovieSceneInitialValueCache.h:320
FInitialValueIndex AddInitialValue(UObject *BoundObject, const StorageType &InValue, uint16 ResolvedPropertyOffset)
Definition MovieSceneInitialValueCache.h:196
TOptional< FInitialValueIndex > FindPropertyIndex(UObject *BoundObject, uint16 ResolvedPropertyOffset)
Definition MovieSceneInitialValueCache.h:258
const StorageType * FindCachedValue(UObject *BoundObject, uint16 ResolvedPropertyOffset)
Definition MovieSceneInitialValueCache.h:289
Definition MovieSceneDecompositionQuery.h:188
Definition MovieScenePropertySystemTypes.h:587
Definition MovieScenePartialProperties.h:47
Definition MovieScenePropertySystemTypes.h:436