67 template<
typename T, u
int8 N>
70 static_assert(N > 0 && N <= 32,
"Cannot store more than 32 channels in this type.");
78 template<
typename OtherType>
94 return Channels[
Index];
120 return (Mask & (1 <<
Index)) != 0;
129 Mask |= (1 <<
Index);
138 Mask |= (1 <<
Index);
147 Mask |= (1 <<
Index);
160 template<
typename T,
typename SourceData, u
int8 N>
163 static_assert(std::is_same_v<T, void>,
"MultiChannelFromData must be implemented to blend SourceData with multi-channel data.");
170 template<
typename T,
typename SourceData, u
int8 N>
173 static_assert(std::is_same_v<T, void>,
"ResolveChannelsToData must be implemented to blend SourceData with multi-channel data.");
177 template<
typename DataType, u
int8 N>
201 template<
typename ActualDataType>
209 for (
uint8 Channel = 0; Channel < N; ++Channel)
214 Result.Set(Channel,
Override[Channel]);
238 Result.Increment(Channel,
Additive[Channel]);
243 if (!Result.IsSet(Channel))
245 if (!CurrentValue.
IsSet())
250 Result.Set(Channel, CurrentValue.
GetValue()[Channel]);
254 ensureMsgf(Result.IsFull(),
TEXT(
"Attempting to apply a compound data type with some channels uninitialized."));
263 template<
typename OutputType,
typename InputType,
typename ActualValueType, u
int8 ChannelSize>
293 if (
OutBlend.Override.IsSet(ChannelIndex) ==
false)
295 if (
OutBlend.Absolute.IsSet(ChannelIndex))
298 OutputType AbsoluteWeight = (
OutBlend.AbsoluteWeights[ChannelIndex] != 0.f) ?
OutBlend.AbsoluteWeights[ChannelIndex] : 1.0;
299 OutBlend.Override.Set(ChannelIndex,
OutBlend.Absolute[ChannelIndex] / AbsoluteWeight);
320 template<
typename OutputType,
typename InputType,
typename ActualValueType>
326 template<
typename OutputType,
typename ActualValueType, u
int8 ChannelSize>
359 Out = { In.
R, In.
G, In.
B, In.
A };
#define check(expr)
Definition AssertionMacros.h:314
#define ensureMsgf( InExpression, InFormat,...)
Definition AssertionMacros.h:465
#define checkf(expr, format,...)
Definition AssertionMacros.h:315
@ INDEX_NONE
Definition CoreMiscDefines.h:150
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
#define FVector
Definition IOSSystemIncludes.h:8
UE::Math::TTransform< double > FTransform
Definition MathFwd.h:53
UE::Math::TVector4< double > FVector4
Definition MathFwd.h:49
UE::Math::TRotator< double > FRotator3d
Definition MathFwd.h:70
UE::Math::TVector2< double > FVector2D
Definition MathFwd.h:48
EMovieSceneBlendType
Definition MovieSceneBlendType.h:19
MOVIESCENE_API FMovieSceneAnimTypeID GetBlendingDataType< FVector2D >()
Definition MovieSceneMultiChannelBlending.cpp:7
MOVIESCENE_API FMovieSceneAnimTypeID GetBlendingDataType< FLinearColor >()
Definition MovieSceneMultiChannelBlending.cpp:12
MOVIESCENE_API FMovieSceneAnimTypeID GetBlendingDataType< float >()
Definition MovieSceneMultiChannelBlending.cpp:6
MOVIESCENE_API FMovieSceneAnimTypeID GetBlendingDataType< FVector4 >()
Definition MovieSceneMultiChannelBlending.cpp:9
MOVIESCENE_API FMovieSceneAnimTypeID GetBlendingDataType< FTransform >()
Definition MovieSceneMultiChannelBlending.cpp:10
MOVIESCENE_API FMovieSceneAnimTypeID GetBlendingDataType< FVector >()
Definition MovieSceneMultiChannelBlending.cpp:8
MOVIESCENE_API FMovieSceneAnimTypeID GetBlendingDataType< int32 >()
Definition MovieSceneMultiChannelBlending.cpp:5
MOVIESCENE_API FMovieSceneAnimTypeID GetBlendingDataType< FEulerTransform >()
Definition MovieSceneMultiChannelBlending.cpp:11
USkinnedMeshComponent float
Definition SkinnedMeshComponent.h:60
float Val(const FString &Value)
Definition UnrealMath.cpp:3163
Definition MovieScene.Build.cs:6
void ResolveChannelsToData(const TMultiChannelValue< T, N > &OutChannelData, SourceData &OutData)
Definition MovieSceneMultiChannelBlending.h:171
void BlendValue(WorkingDataType &OutBlend, InType InValue, float Weight, EMovieSceneBlendType BlendType, TMovieSceneInitialValueStore< SourceDataType > &InitialValueStore)
Definition BlendableToken.h:80
void MultiChannelFromData(SourceData InSourceData, TMultiChannelValue< T, N > &OutChannelData)
Definition MovieSceneMultiChannelBlending.h:161
Definition AdvancedWidgetsModule.cpp:13
U16 Index
Definition radfft.cpp:71
float A
Definition Color.h:56
float G
Definition Color.h:54
float B
Definition Color.h:55
float R
Definition Color.h:53
static UE_FORCEINLINE_HINT void * Memzero(void *Dest, SIZE_T Count)
Definition UnrealMemory.h:131
Definition MovieSceneAnimTypeID.h:20
UE::MovieScene::TMaskedBlendable< float, 4 > WorkingDataType
Definition MovieSceneMultiChannelBlending.h:408
UE::MovieScene::TMaskedBlendable< float, 2 > WorkingDataType
Definition MovieSceneMultiChannelBlending.h:403
UE::MovieScene::TMaskedBlendable< float, 4 > WorkingDataType
Definition MovieSceneMultiChannelBlending.h:405
UE::MovieScene::TMaskedBlendable< float, 3 > WorkingDataType
Definition MovieSceneMultiChannelBlending.h:404
UE::MovieScene::TMaskedBlendable< float, 1 > WorkingDataType
Definition MovieSceneMultiChannelBlending.h:402
UE::MovieScene::TMaskedBlendable< double, 1 > WorkingDataType
Definition MovieSceneMultiChannelBlending.h:401
Definition BlendableToken.h:93
Definition MovieSceneInitialValueStore.h:49
Definition Optional.h:131
constexpr OptionalType & GetValue()
Definition Optional.h:443
constexpr bool IsSet() const
Definition Optional.h:69
OptionalType & Emplace(ArgsType &&... Args)
Definition Optional.h:323
CORE_API TRotator< T > Rotator() const
CORE_API TVector< T > Euler() const
Definition UnrealMath.cpp:553
static CORE_API TRotator MakeFromEuler(const TVector< double > &Euler)
Definition UnrealMath.cpp:559
T Y
Definition Vector2D.h:52
T X
Definition Vector2D.h:49
T Y
Definition Vector4.h:46
T Z
Definition Vector4.h:49
T W
Definition Vector4.h:52
T X
Definition Vector4.h:43
T Z
Definition Vector.h:68
T Y
Definition Vector.h:65
T X
Definition Vector.h:62
Definition MovieSceneMultiChannelBlending.h:179
TMultiChannelValue< DataType, N > Additive
Definition MovieSceneMultiChannelBlending.h:192
ActualDataType Resolve(TMovieSceneInitialValueStore< ActualDataType > &InitialValueStore)
Definition MovieSceneMultiChannelBlending.h:202
TMultiChannelValue< DataType, N > Override
Definition MovieSceneMultiChannelBlending.h:195
TMaskedBlendable()
Definition MovieSceneMultiChannelBlending.h:180
TMultiChannelValue< DataType, N > Absolute
Definition MovieSceneMultiChannelBlending.h:187
float AbsoluteWeights[N]
Definition MovieSceneMultiChannelBlending.h:189
TOptional< TMultiChannelValue< DataType, N > > InitialValue
Definition MovieSceneMultiChannelBlending.h:198
Definition MovieSceneMultiChannelBlending.h:69
TMultiChannelValue()
Definition MovieSceneMultiChannelBlending.h:73
bool IsEmpty() const
Definition MovieSceneMultiChannelBlending.h:104
T Get(uint8 Index, T Default) const
Definition MovieSceneMultiChannelBlending.h:98
TMultiChannelValue(std::initializer_list< OtherType > InitList)
Definition MovieSceneMultiChannelBlending.h:79
bool IsSet(uint8 Index) const
Definition MovieSceneMultiChannelBlending.h:117
void Set(uint8 Index, T Value)
Definition MovieSceneMultiChannelBlending.h:124
void WeightedBlend(uint8 Index, T Value, float Weight)
Definition MovieSceneMultiChannelBlending.h:142
bool IsFull() const
Definition MovieSceneMultiChannelBlending.h:110
void Increment(uint8 Index, T Value)
Definition MovieSceneMultiChannelBlending.h:133
T operator[](uint8 Index) const
Definition MovieSceneMultiChannelBlending.h:91