UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
BlendableTokenStack.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
5#include "MovieSceneFwd.h"
8#include "Misc/InlineValue.h"
12#include "IMovieScenePlayer.h"
14
18template<typename T> struct TMovieSceneBlendingActuator;
19
26{
27 // Always assert on instantiation
28 static_assert(std::is_same_v<T, void>, "GetBlendingDataType must be specialized for a type in order to use it with an accumulator.");
30}
31
77
81template<typename DataType>
83{
86
89
91
98 {
100
101 if (TokenToAdd->HierarchicalBias > CurrentBias)
102 {
103 Tokens.Reset();
104 CurrentBias = TokenToAdd->HierarchicalBias;
105 }
106
107 if (TokenToAdd->HierarchicalBias == CurrentBias)
108 {
109 // Just add the token
111 }
112 }
113
114public:
115
127
138
145 template<typename...T>
147 {
148 SavePreAnimatedStateImpl(Player, EMovieSceneCompletionMode::RestoreState, Args...);
149 }
150
157 template<typename...T>
158 void SavePreAnimatedState(IMovieScenePlayer& Player, T&&... Args) const
159 {
160 SavePreAnimatedStateImpl(Player, TOptional<EMovieSceneCompletionMode>(), Args...);
161 }
162
163private:
164
165 template<typename...T>
166 void SavePreAnimatedStateImpl(IMovieScenePlayer& Player, TOptional<EMovieSceneCompletionMode> CompletionModeOverride, T&&... Args) const
167 {
168 bool bSavedState = false;
169 for (const TBlendableToken<DataType>* Token : Tokens)
170 {
171 if (CompletionModeOverride.Get(Token->AnimatingScope.CompletionMode) == EMovieSceneCompletionMode::RestoreState)
172 {
173 FScopedPreAnimatedCaptureSource CaptureSource(&Player.PreAnimatedState, Token->AnimatingScope.Key, true);
174 Player.SavePreAnimatedState(Forward<T>(Args)...);
175 bSavedState = true;
176 }
177 }
178
179 // Save global state if nothing else did
180 if (!bSavedState)
181 {
182 Player.SavePreAnimatedState(Forward<T>(Args)...);
183 }
184 }
185};
#define check(expr)
Definition AssertionMacros.h:314
FMovieSceneAnimTypeID GetBlendingDataType()
Definition BlendableTokenStack.h:25
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
Definition IMovieScenePlayer.h:90
void SavePreAnimatedState(UObject &InObject, FMovieSceneAnimTypeID InTokenType, const IMovieScenePreAnimatedTokenProducer &InProducer)
Definition IMovieScenePlayer.h:321
FMovieScenePreAnimatedState PreAnimatedState
Definition IMovieScenePlayer.h:442
Definition Array.h:670
void Reset(SizeType NewSize=0)
Definition Array.h:2246
UE_NODEBUG UE_FORCEINLINE_HINT SizeType Add(ElementType &&Item)
Definition Array.h:2696
Definition Object.h:95
Definition MovieSceneAnimTypeID.h:20
static MOVIESCENE_API FMovieSceneAnimTypeID Unique()
Definition MovieSceneAnimTypeID.cpp:37
Definition MovieSceneBlendingAccumulator.h:26
Definition MovieSceneBlendingActuatorID.h:8
Definition MovieScenePlayback.h:184
Definition MovieSceneTemplateInterrogation.h:70
Definition PersistentEvaluationData.h:91
Definition MovieScenePreAnimatedCaptureSource.h:40
Definition BlendableTokenStack.h:36
virtual ~IBlendableTokenStack()
Definition BlendableTokenStack.h:49
virtual void Interrogate(UObject *AnimatedObject, FMovieSceneInterrogationData &InterrogationData, FMovieSceneBlendingAccumulator &Accumulator, FMovieSceneBlendingActuatorID ActuatorTypeID, const FMovieSceneContext &Context)=0
IBlendableTokenStack(FMovieSceneAnimTypeID InDataTypeID)
Definition BlendableTokenStack.h:42
virtual void ComputeAndActuate(UObject *InObject, FMovieSceneBlendingAccumulator &Accumulator, FMovieSceneBlendingActuatorID ActuatorTypeID, const FMovieSceneContext &Context, FPersistentEvaluationData &PersistentData, IMovieScenePlayer &Player)=0
FMovieSceneAnimTypeID DataTypeID
Definition BlendableTokenStack.h:75
Definition BlendableTokenStack.h:83
void SavePreAnimatedStateForAllEntities(IMovieScenePlayer &Player, T &&... Args) const
Definition BlendableTokenStack.h:146
virtual void ComputeAndActuate(UObject *InObject, FMovieSceneBlendingAccumulator &Accumulator, FMovieSceneBlendingActuatorID InActuatorType, const FMovieSceneContext &Context, FPersistentEvaluationData &PersistentData, IMovieScenePlayer &Player) override final
Definition MovieSceneBlendingAccumulator.inl:9
virtual void Interrogate(UObject *AnimatedObject, FMovieSceneInterrogationData &InterrogationData, FMovieSceneBlendingAccumulator &Accumulator, FMovieSceneBlendingActuatorID ActuatorTypeID, const FMovieSceneContext &Context) override final
Definition MovieSceneBlendingAccumulator.inl:45
TArray< const TBlendableToken< DataType > * > Tokens
Definition BlendableTokenStack.h:85
void SavePreAnimatedState(IMovieScenePlayer &Player, T &&... Args) const
Definition BlendableTokenStack.h:158
int32 CurrentBias
Definition BlendableTokenStack.h:88
TBlendableTokenStack()
Definition BlendableTokenStack.h:90
void AddToken(const TBlendableToken< DataType > *TokenToAdd)
Definition BlendableTokenStack.h:97
Definition BlendableToken.h:100
Definition MovieSceneBlendingActuator.h:40
Definition NumericLimits.h:41
Definition Optional.h:131