UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
MovieScenePropertyTrack.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
5#include "CoreMinimal.h"
17#include "MovieScenePropertyTrack.generated.h"
18
19namespace UE::MovieScene
20{
21 struct FPropertyDefinition;
22}
23
27UCLASS(abstract, MinimalAPI)
30{
32
33public:
34
35 // UMovieSceneTrack interface
36
37 MOVIESCENETRACKS_API virtual void RemoveAllAnimationData() override;
38 MOVIESCENETRACKS_API virtual bool HasSection(const UMovieSceneSection& Section) const override;
39 MOVIESCENETRACKS_API virtual void AddSection(UMovieSceneSection& Section) override;
40 MOVIESCENETRACKS_API virtual void RemoveSection(UMovieSceneSection& Section) override;
41 MOVIESCENETRACKS_API virtual void RemoveSectionAt(int32 SectionIndex) override;
42 MOVIESCENETRACKS_API virtual bool IsEmpty() const override;
43 MOVIESCENETRACKS_API virtual const TArray<UMovieSceneSection*>& GetAllSections() const override;
45 {
46 }
47
48#if WITH_EDITORONLY_DATA
49 MOVIESCENETRACKS_API virtual FText GetDefaultDisplayName() const override;
52#endif
53 MOVIESCENETRACKS_API virtual FName GetTrackName() const override;
54
55 MOVIESCENETRACKS_API virtual void PostLoad() override;
56 MOVIESCENETRACKS_API virtual void Serialize(FArchive& Ar) override;
57
58public:
59
65 MOVIESCENETRACKS_API void SetPropertyNameAndPath(FName InPropertyName, const FString& InPropertyPath);
66
68 FName GetPropertyName() const { return PropertyBinding.PropertyName; }
69
71 FName GetPropertyPath() const { return PropertyBinding.PropertyPath; }
72
74 const FMovieScenePropertyBinding& GetPropertyBinding() const { return PropertyBinding; }
75
76 template <typename ValueType>
78 {
79 return FTrackInstancePropertyBindings::StaticValue<ValueType>(Object, PropertyBinding.PropertyPath.ToString());
80 }
81
89
97
105 MOVIESCENETRACKS_API class UMovieSceneSection* FindOrExtendSection(FFrameNumber Time, float& OutWeight);
106
115
121 MOVIESCENETRACKS_API virtual void SetSectionToKey(UMovieSceneSection* Section) override;
122
127 MOVIESCENETRACKS_API virtual UMovieSceneSection* GetSectionToKey() const override;
128
129#if WITH_EDITORONLY_DATA
130public:
132 UE_DEPRECATED(5.6, "UniqueTrackName is deprecated, use GetTrackName instead.")
133 UPROPERTY()
135
137 UPROPERTY()
139
141 UPROPERTY()
143
144#endif
145
146
147private:
149 UPROPERTY()
150 TObjectPtr<UMovieSceneSection> SectionToKey;
151
153
154 UPROPERTY()
156
158 UPROPERTY()
160};
161
162
176
177
178namespace UE
179{
180namespace MovieScene
181{
182
187template<typename... T>
189{
195
196 template<typename U, typename PayloadType>
198 {
200 }
201
202 template<typename U, typename PayloadType>
204 {
205 return TPropertyTrackEntityImportHelperImpl<T..., TAddConditional<U>>(Builder.AddConditional(ComponentType, InPayload, bCondition), PropertyTag);
206 }
207
209 {
210 const FGuid ObjectBindingID = Params.GetObjectBindingID();
211 const FMovieSceneEvaluationFieldEntityMetaData* MetaData = Params.EntityMetaData;
212 const FBuiltInComponentTypes* BuiltInComponents = FBuiltInComponentTypes::Get();
214
216 {
218 {
219 const FName NotifyFunctionName = (MetaData ? MetaData->NotifyFunctionName : NAME_None);
220
221 OutImportedEntity->AddBuilder(
222 Builder
223 .Add(BuiltInComponents->PropertyBinding, PropertyTrack->GetPropertyBinding())
224 .AddConditional(BuiltInComponents->GenericObjectBinding, ObjectBindingID, ObjectBindingID.IsValid())
225 .AddConditional(TracksComponents->PropertyNotify, FPropertyNotifyComponentData{ NotifyFunctionName }, !NotifyFunctionName.IsNone()));
226 }
228 {
229 // We effectively discard the builder we've been setting up, because we just
230 // need to import the edit condition toggle entity.
232 }
233 }
234 else
235 {
236 OutImportedEntity->AddBuilder(
237 Builder
238 .AddConditional(BuiltInComponents->GenericObjectBinding, ObjectBindingID, ObjectBindingID.IsValid()));
239 }
240 }
241
242protected:
243
246};
247
248
252template<>
254{
260
261 template<typename U, typename PayloadType>
266
267 template<typename U, typename PayloadType>
272
273protected:
274
277};
278
286
301
305template<typename... T>
307{
314
315 template<typename U, typename PayloadType>
325
326 template<typename U, typename PayloadType>
336
338 {
339 const FGuid ObjectBindingID = Params.GetObjectBindingID();
340 const FMovieSceneEvaluationFieldEntityMetaData* MetaData = Params.EntityMetaData;
341 const FBuiltInComponentTypes* BuiltInComponents = FBuiltInComponentTypes::Get();
343
345 {
347 {
348 const FName NotifyFunctionName = (MetaData ? MetaData->NotifyFunctionName : NAME_None);
349
350 OutImportedEntity->AddBuilder(
351 Builder
352 .Add(BuiltInComponents->PropertyBinding, PropertyTrack->GetPropertyBinding())
353 .AddConditional(BuiltInComponents->GenericObjectBinding, ObjectBindingID, ObjectBindingID.IsValid())
354 .AddConditional(TracksComponents->PropertyNotify, FPropertyNotifyComponentData{ NotifyFunctionName }, !NotifyFunctionName.IsNone()));
355 }
357 {
358 // We effectively discard the builder we've been setting up, because we just
359 // need to import the edit condition toggle entity.
361 }
362 else if (ensure(OverrideInfo.Registry))
363 {
364 // This should be an overriden channel, which goes into a different entity.
366 {
368 .Add(BuiltInComponents->PropertyBinding, PropertyTrack->GetPropertyBinding())
369 .AddConditional(BuiltInComponents->GenericObjectBinding, ObjectBindingID, ObjectBindingID.IsValid())
370 .AddTag(PropertyTag);
371 OutImportedEntity->AddBuilder(BaseBuilder);
372
374 check(Traits.IsValid());
375 const FName ChannelOverrideName = Traits->GetChannelOverrideName(Params.EntityID);
376 auto* ChannelOverrideParams = OverrideInfo.ImportParams.FindByPredicate(
378 {
379 return CurParams.ChannelName == ChannelOverrideName;
380 });
382 {
384 }
385 }
386 }
387 }
388 else
389 {
390 OutImportedEntity->AddBuilder(
391 Builder
392 .AddConditional(BuiltInComponents->GenericObjectBinding, ObjectBindingID, ObjectBindingID.IsValid()));
393 }
394 }
395
396protected:
397
401};
402
403
407template<>
409{
416
417 template<typename U, typename PayloadType>
427
428 template<typename U, typename PayloadType>
438
439protected:
440
444};
445
453
454}
455}
456
#define check(expr)
Definition AssertionMacros.h:314
#define ensure( InExpression)
Definition AssertionMacros.h:464
#define UE_DEPRECATED(Version, Message)
Definition CoreMiscDefines.h:302
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
#define UPROPERTY(...)
UObject definition macros.
Definition ObjectMacros.h:744
#define GENERATED_UCLASS_BODY(...)
Definition ObjectMacros.h:768
#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
Definition Archive.h:1208
Definition NameTypes.h:617
FORCEINLINE bool IsNone() const
Definition NameTypes.h:827
Definition UnrealType.h:174
Definition Text.h:385
virtual FChannelOverrideProviderTraitsHandle GetChannelOverrideProviderTraits() const =0
Definition MovieScene.Build.cs:6
Definition Array.h:670
Definition InlineValue.h:22
UE_FORCEINLINE_HINT bool IsValid() const
Definition InlineValue.h:140
Definition Range.h:50
Definition ScriptInterface.h:139
Definition MovieSceneNameableTrack.h:24
Definition MovieScenePropertyTrack.h:30
virtual void InitializeFromProperty(const FProperty *Property, const UE::MovieScene::FPropertyDefinition *Definition)
Definition MovieScenePropertyTrack.h:44
const FMovieScenePropertyBinding & GetPropertyBinding() const
Definition MovieScenePropertyTrack.h:74
FName GetPropertyPath() const
Definition MovieScenePropertyTrack.h:71
TOptional< ValueType > GetCurrentValue(const UObject *Object) const
Definition MovieScenePropertyTrack.h:77
FName GetPropertyName() const
Definition MovieScenePropertyTrack.h:68
MOVIESCENE_API bool ContainsChannel(FName ChannelName) const
Definition MovieSceneSectionChannelOverrideRegistry.cpp:23
MOVIESCENE_API void ImportEntityImpl(const UE::MovieScene::FChannelOverrideEntityImportParams &OverrideParams, const UE::MovieScene::FEntityImportParams &ImportParams, UE::MovieScene::FImportedEntity *OutImportedEntity)
Definition MovieSceneSectionChannelOverrideRegistry.cpp:44
Definition MovieSceneSection.h:243
Definition Object.h:95
Definition ConstraintsManager.h:14
TEntityBuilder<> FEntityBuilder
Definition MovieSceneEntityBuilder.h:428
Definition AdvancedWidgetsModule.cpp:13
Definition FrameNumber.h:18
Definition Guid.h:109
bool IsValid() const
Definition Guid.h:318
Definition MovieSceneEvaluationField.h:328
Definition MovieSceneEvaluationField.h:109
Definition MovieScenePropertyBinding.h:17
Definition MovieScenePropertyTrack.h:164
static MOVIESCENETRACKS_API const int32 SectionPropertyValueImportingID
Definition MovieScenePropertyTrack.h:165
static MOVIESCENETRACKS_API void ImportEditConditionToggleEntity(const UE::MovieScene::FEntityImportParams &Params, UE::MovieScene::FImportedEntity *OutImportedEntity)
Definition MovieScenePropertyTrack.cpp:534
static MOVIESCENETRACKS_API const int32 SectionEditConditionToggleImportingID
Definition MovieScenePropertyTrack.h:166
static MOVIESCENETRACKS_API bool IsPropertyValueID(const UE::MovieScene::FEntityImportParams &Params)
Definition MovieScenePropertyTrack.cpp:524
static MOVIESCENETRACKS_API bool IsEditConditionToggleID(const UE::MovieScene::FEntityImportParams &Params)
Definition MovieScenePropertyTrack.cpp:529
Definition SlateColor.h:42
Definition ObjectPtr.h:488
Definition Optional.h:131
Definition BuiltInComponentTypes.h:578
TComponentTypeID< FGuid > GenericObjectBinding
Definition BuiltInComponentTypes.h:629
TComponentTypeID< FMovieScenePropertyBinding > PropertyBinding
Definition BuiltInComponentTypes.h:626
static MOVIESCENE_API FBuiltInComponentTypes * Get()
Definition BuiltInComponentTypes.cpp:667
Definition MovieSceneChannelOverrideContainer.h:33
Definition MovieSceneEntityIDs.h:174
Definition IMovieSceneEntityProvider.h:93
Definition IMovieSceneEntityProvider.h:47
Definition MovieSceneTracksComponentTypes.h:522
TComponentTypeID< FPropertyNotifyComponentData > PropertyNotify
Definition MovieSceneTracksComponentTypes.h:590
static MOVIESCENETRACKS_API FMovieSceneTracksComponentTypes * Get()
Definition MovieSceneTracksComponentTypes.cpp:893
Definition MovieScenePropertyRegistry.h:66
Definition MovieSceneTracksComponentTypes.h:254
Definition MovieScenePropertyTrack.h:288
TObjectPtr< UMovieSceneSectionChannelOverrideRegistry > Registry
Definition MovieScenePropertyTrack.h:298
TScriptInterface< IMovieSceneChannelOverrideProvider > RegistryProvider
Definition MovieScenePropertyTrack.h:297
TArray< FChannelOverrideEntityImportParams > ImportParams
Definition MovieScenePropertyTrack.h:299
FPropertyTrackEntityImportHelperParamsImpl(TScriptInterface< IMovieSceneChannelOverrideProvider > InRegistryProvider)
Definition MovieScenePropertyTrack.h:289
Definition MovieScenePropertyTrack.h:280
FPropertyTrackEntityImportHelper(const TPropertyComponents< PropertyTraits > &PropertyComponents)
Definition MovieScenePropertyTrack.h:282
FPropertyTrackWithOverridableChannelsEntityImportHelper(const TPropertyComponents< PropertyTraits > &PropertyComponents, TScriptInterface< IMovieSceneChannelOverrideProvider > InRegistryProvider)
Definition MovieScenePropertyTrack.h:449
Definition MovieSceneEntityBuilder.h:520
Definition MovieSceneEntityBuilder.h:495
Definition MovieSceneEntityIDs.h:283
Definition MovieSceneEntityBuilder.h:113
Definition MovieScenePropertySystemTypes.h:299
TPropertyTrackEntityImportHelperImpl< FAdd, TAdd< U > > Add(TComponentTypeID< U > ComponentType, PayloadType &&InPayload)
Definition MovieScenePropertyTrack.h:262
FComponentTypeID PropertyTag
Definition MovieScenePropertyTrack.h:276
TPropertyTrackEntityImportHelperImpl< FAdd, TAddConditional< U > > AddConditional(TComponentTypeID< U > ComponentType, PayloadType &&InPayload, bool bCondition)
Definition MovieScenePropertyTrack.h:268
TPropertyTrackEntityImportHelperImpl(FComponentTypeID InPropertyTag)
Definition MovieScenePropertyTrack.h:255
TEntityBuilder< FAdd > Builder
Definition MovieScenePropertyTrack.h:275
Definition MovieScenePropertyTrack.h:189
TPropertyTrackEntityImportHelperImpl< T..., TAdd< U > > Add(TComponentTypeID< U > ComponentType, PayloadType &&InPayload)
Definition MovieScenePropertyTrack.h:197
TPropertyTrackEntityImportHelperImpl< T..., TAddConditional< U > > AddConditional(TComponentTypeID< U > ComponentType, PayloadType &&InPayload, bool bCondition)
Definition MovieScenePropertyTrack.h:203
FComponentTypeID PropertyTag
Definition MovieScenePropertyTrack.h:245
TPropertyTrackEntityImportHelperImpl(TEntityBuilder< T... > &&InBuilder, FComponentTypeID InPropertyTag={})
Definition MovieScenePropertyTrack.h:190
void Commit(const UMovieSceneSection *InSection, const UE::MovieScene::FEntityImportParams &Params, UE::MovieScene::FImportedEntity *OutImportedEntity)
Definition MovieScenePropertyTrack.h:208
TEntityBuilder< T... > Builder
Definition MovieScenePropertyTrack.h:244
FPropertyTrackEntityImportHelperParamsImpl OverrideInfo
Definition MovieScenePropertyTrack.h:442
TPropertyTrackWithOverridableChannelsEntityImportHelperImpl(FComponentTypeID InPropertyTag, TScriptInterface< IMovieSceneChannelOverrideProvider > InRegistryProvider)
Definition MovieScenePropertyTrack.h:410
TPropertyTrackWithOverridableChannelsEntityImportHelperImpl< FAdd, TAddConditional< U > > AddConditional(TComponentTypeID< U > ComponentType, PayloadType &&InPayload, bool bCondition, FChannelOverrideEntityImportParams OverrideParams)
Definition MovieScenePropertyTrack.h:429
TEntityBuilder< FAdd > Builder
Definition MovieScenePropertyTrack.h:441
FComponentTypeID PropertyTag
Definition MovieScenePropertyTrack.h:443
TPropertyTrackWithOverridableChannelsEntityImportHelperImpl< FAdd, TAddConditional< U > > Add(TComponentTypeID< U > ComponentType, PayloadType &&InPayload, FChannelOverrideEntityImportParams OverrideParams)
Definition MovieScenePropertyTrack.h:418
FComponentTypeID PropertyTag
Definition MovieScenePropertyTrack.h:400
void Commit(const UMovieSceneSection *InSection, const UE::MovieScene::FEntityImportParams &Params, UE::MovieScene::FImportedEntity *OutImportedEntity)
Definition MovieScenePropertyTrack.h:337
TEntityBuilder< T... > Builder
Definition MovieScenePropertyTrack.h:398
FPropertyTrackEntityImportHelperParamsImpl OverrideInfo
Definition MovieScenePropertyTrack.h:399
TPropertyTrackWithOverridableChannelsEntityImportHelperImpl(TEntityBuilder< T... > &&InBuilder, FPropertyTrackEntityImportHelperParamsImpl &InOverrideInfo, FComponentTypeID InPropertyTag={})
Definition MovieScenePropertyTrack.h:308
TPropertyTrackEntityImportHelperImpl< T..., TAddConditional< U > > Add(TComponentTypeID< U > ComponentType, PayloadType &&InPayload, FChannelOverrideEntityImportParams OverrideParams)
Definition MovieScenePropertyTrack.h:316
TPropertyTrackEntityImportHelperImpl< T..., TAddConditional< U > > AddConditional(TComponentTypeID< U > ComponentType, PayloadType &&InPayload, bool bCondition, FChannelOverrideEntityImportParams OverrideParams)
Definition MovieScenePropertyTrack.h:327