UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
MovieSceneVariantPropertyComponentHandler.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
6
7
8namespace UE::MovieScene
9{
10
11
12template<typename PropertyTraits, typename ...CompositeTypes>
14 : TPropertyComponentHandler<PropertyTraits, CompositeTypes...>
15{
17 {
19
20 const PropertyTraits* PropertyTraitsInstance = static_cast<const PropertyTraits*>(Definition.TraitsInstance);
21
23 .Read(BuiltInComponents->BoundObject)
24 .Read(BuiltInComponents->PropertyBinding)
25 .Write(BuiltInComponents->VariantPropertyTypeIndex)
26 .FilterAll({ BuiltInComponents->Tags.NeedsLink, Definition.PropertyType })
27 .Iterate_PerEntity(&Linker->EntityManager, [PropertyTraitsInstance](UObject* Object, const FMovieScenePropertyBinding& Binding, FVariantPropertyTypeIndex& OutMetaData)
28 {
29 // @todo: this function is garbage slow - needs optimizing to use string views
30 FString PropertyPath = Binding.PropertyPath.ToString();
31 FProperty* BoundProperty = FTrackInstancePropertyBindings::FindProperty(Object, PropertyPath);
32
33 if (ensureMsgf(BoundProperty, TEXT("Unable to find property '%s::%s' on bound object '%s'"), *Object->GetClass()->GetName(), *PropertyPath, *Object->GetName()))
34 {
35 if (!PropertyTraitsInstance->ComputeVariantIndex(*BoundProperty, OutMetaData))
36 {
37 ensureMsgf(false, TEXT("Property '%s::%s' on bound object '%s' is not of a compatible type with %s"), *Object->GetClass()->GetName(), *PropertyPath, *Object->GetName(), GetGeneratedTypeName<PropertyTraits>());
38 }
39 }
40 });
41 }
42};
43
44
45} // namespace UE::MovieScene
46
47
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
Definition MovieSceneEntitySystemLinker.h:113
Definition Object.h:95
Definition Linker.cpp:38
Definition ConstraintsManager.h:14
Definition MovieScenePropertyBinding.h:17
Definition BuiltInComponentTypes.h:578
struct UE::MovieScene::FBuiltInComponentTypes::@1489 Tags
FComponentTypeID NeedsLink
Definition BuiltInComponentTypes.h:789
TComponentTypeID< FMovieScenePropertyBinding > PropertyBinding
Definition BuiltInComponentTypes.h:626
static MOVIESCENE_API FBuiltInComponentTypes * Get()
Definition BuiltInComponentTypes.cpp:667
TComponentTypeID< FVariantPropertyTypeIndex > VariantPropertyTypeIndex
Definition BuiltInComponentTypes.h:770
TComponentTypeID< UObject * > BoundObject
Definition BuiltInComponentTypes.h:599
Definition MovieSceneEntitySystemTask.h:1045
Definition MovieScenePropertyRegistry.h:66
Definition MovieSceneSystemTaskDependencies.h:98
Definition MovieSceneSystemTaskDependencies.h:29
Definition MovieSceneVariantPropertyTypeIndex.h:11
TFilteredEntityTask< T... > FilterAll(const FComponentMask &InComponentMask)
Definition MovieSceneEntitySystemTask.h:188
Definition MovieScenePropertyComponentHandler.h:34
Definition MovieSceneVariantPropertyComponentHandler.h:15
virtual void DispatchInitializePropertyMetaDataTasks(const FPropertyDefinition &Definition, FSystemTaskPrerequisites &InPrerequisites, FSystemSubsequentTasks &Subsequents, UMovieSceneEntitySystemLinker *Linker) override
Definition MovieSceneVariantPropertyComponentHandler.h:16