UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
MovieSceneUnpackedChannelValues.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
5#include "CoreTypes.h"
7#include "Misc/InlineValue.h"
8#include "KeyParams.h"
12
14
15namespace UE::MovieScene
16{
17
22{
23 virtual ~IChannelValue() {}
24
29
34
38 virtual bool IsAlreadyDefault(const FMovieSceneChannel* Channel) const = 0;
39
44
48 virtual void SetDefault(FMovieSceneChannel* Channel) const = 0;
49};
50
51template<typename ChannelType>
53{
54 using ValueType = typename ChannelType::CurveValueType;
55
56 template<typename U>
58 : Value(Forward<U>(InValue))
59 {}
60
62 {
63 const ChannelType* TypedChannel = static_cast<const ChannelType*>(InChannel);
65 }
66
67 virtual bool IsAlreadyDefault(const FMovieSceneChannel* InChannel) const override
68 {
69 using namespace UE::MovieScene;
70
72 {
73 const ChannelType* TypedChannel = static_cast<const ChannelType*>(InChannel);
74
75 ValueType DefaultValue;
76 return GetChannelDefault(TypedChannel, DefaultValue) && DefaultValue == Value;
77 }
78 else
79 {
80 return false;
81 }
82 }
83
91
92 virtual void SetDefault(FMovieSceneChannel* InChannel) const override
93 {
94 ChannelType* TypedChannel = static_cast<ChannelType*>(InChannel);
96 }
97
98private:
99
100 ValueType Value;
101};
102
103template<typename ChannelType>
105{
106 template<typename U>
108 : TChannelValue<ChannelType>(Forward<U>(InValue))
109 , ChannelIndex(InChannelIndex)
110 {}
111
113 {
114 return Proxy.GetChannel<ChannelType>(ChannelIndex);
115 }
116
117private:
118
119 int32 ChannelIndex;
120};
121
122
123
125{
126 template<typename ChannelType>
131
133 {
134 return ChannelValue.GetPtr();
135 }
136
138 {
139 return PropertyPath;
140 }
141
142private:
143
146};
147
148
149#define UE_MOVIESCENE_UNPACKED_MEMBER(ChannelType, ChannelIndex, StructInstance, Member) \
150 FUnpackedChannelValue(TIndexedChannelValue<ChannelType>(StructInstance.Member, ChannelIndex), FName(#Member))
151
152
159{
166 {
167 Values.Emplace(MoveTemp(InValue));
168 }
169
173 int32 Num() const
174 {
175 return Values.Num();
176 }
177
183 {
184 return Values[Index];
185 }
186
192 {
194 Values.RemoveAt(Index, 1, EAllowShrinking::No);
195 return Value;
196 }
197
202 {
203 return Values;
204 }
205
206private:
207
210};
211
212} // namespace UE::MovieScene
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
EMovieSceneKeyInterpolation
Definition KeyParams.h:12
UE_INTRINSIC_CAST UE_REWRITE constexpr std::remove_reference_t< T > && MoveTemp(T &&Obj) noexcept
Definition UnrealTemplate.h:520
Definition NameTypes.h:617
Definition PropertyPath.Build.cs:6
Definition ArrayView.h:139
Definition Array.h:670
Definition InlineValue.h:22
Definition ConstraintsManager.h:14
FKeyHandle AddKeyToChannel(ChannelType *InChannel, FFrameNumber InTime, ValueType &&Value, EMovieSceneKeyInterpolation Interpolation)
Definition MovieSceneChannelTraits.h:157
EMovieSceneKeyInterpolation GetInterpolationMode(ChannelType *InChannel, const FFrameNumber &InTime, EMovieSceneKeyInterpolation DefaultInterpolationMode)
Definition MovieSceneChannelTraits.h:143
bool ValueExistsAtTime(const ChannelType *InChannel, FFrameNumber InTime, const ValueType &InValue)
Definition MovieSceneChannelTraits.h:187
TEnableIf< TGetMovieSceneChannelTraits< ChannelType >::SupportsDefaults, bool >::Type GetChannelDefault(ChannelType *Channel, ValueType &OutDefaultValue)
Definition MovieSceneChannelTraits.h:229
TEnableIf< TGetMovieSceneChannelTraits< ChannelType >::SupportsDefaults >::Type SetChannelDefault(ChannelType *Channel, ValueType &&DefaultValue)
Definition MovieSceneChannelTraits.h:200
U16 Index
Definition radfft.cpp:71
Definition FrameNumber.h:18
Definition MovieSceneChannelProxy.h:198
ChannelType * GetChannel(int32 ChannelIndex) const
Definition MovieSceneChannelProxy.h:448
Definition MovieSceneChannel.h:112
Definition MovieSceneUnpackedChannelValues.h:125
FName GetPropertyPath() const
Definition MovieSceneUnpackedChannelValues.h:137
FUnpackedChannelValue(TIndexedChannelValue< ChannelType > &&InChannelValue, FName InPropertyPath)
Definition MovieSceneUnpackedChannelValues.h:127
const IChannelValue * operator->() const
Definition MovieSceneUnpackedChannelValues.h:132
Definition MovieSceneUnpackedChannelValues.h:159
TArrayView< FUnpackedChannelValue > GetValues()
Definition MovieSceneUnpackedChannelValues.h:201
const FUnpackedChannelValue & operator[](int32 Index) const
Definition MovieSceneUnpackedChannelValues.h:182
FUnpackedChannelValue StealAtIndex(int32 Index)
Definition MovieSceneUnpackedChannelValues.h:191
int32 Num() const
Definition MovieSceneUnpackedChannelValues.h:173
void Add(FUnpackedChannelValue &&InValue)
Definition MovieSceneUnpackedChannelValues.h:165
Definition MovieSceneUnpackedChannelValues.h:22
virtual FMovieSceneChannel * RetrieveChannel(FMovieSceneChannelProxy &Proxy) const =0
virtual void SetDefault(FMovieSceneChannel *Channel) const =0
virtual bool IsAlreadyDefault(const FMovieSceneChannel *Channel) const =0
virtual bool AlreadyExistsAtTime(const FMovieSceneChannel *InChannel, FFrameNumber InTime) const =0
virtual void AddKey(FMovieSceneChannel *Channel, FFrameNumber InTime, EMovieSceneKeyInterpolation InterpolationMode) const =0
virtual ~IChannelValue()
Definition MovieSceneUnpackedChannelValues.h:23
Definition MovieSceneUnpackedChannelValues.h:53
typename ChannelType::CurveValueType ValueType
Definition MovieSceneUnpackedChannelValues.h:54
virtual bool AlreadyExistsAtTime(const FMovieSceneChannel *InChannel, FFrameNumber InTime) const override
Definition MovieSceneUnpackedChannelValues.h:61
virtual void AddKey(FMovieSceneChannel *InChannel, FFrameNumber InTime, EMovieSceneKeyInterpolation InterpolationMode) const override
Definition MovieSceneUnpackedChannelValues.h:84
virtual void SetDefault(FMovieSceneChannel *InChannel) const override
Definition MovieSceneUnpackedChannelValues.h:92
TChannelValue(U &&InValue)
Definition MovieSceneUnpackedChannelValues.h:57
virtual bool IsAlreadyDefault(const FMovieSceneChannel *InChannel) const override
Definition MovieSceneUnpackedChannelValues.h:67
Definition MovieSceneUnpackedChannelValues.h:105
TIndexedChannelValue(U &&InValue, int32 InChannelIndex)
Definition MovieSceneUnpackedChannelValues.h:107
virtual FMovieSceneChannel * RetrieveChannel(FMovieSceneChannelProxy &Proxy) const
Definition MovieSceneUnpackedChannelValues.h:112