Files
UnrealEngine/Engine/Source/Runtime/MovieScene/Private/Evaluation/Blending/MovieSceneInitialValueStore.cpp
2025-05-18 13:04:45 +08:00

69 lines
2.2 KiB
C++

// Copyright Epic Games, Inc. All Rights Reserved.
#include "Evaluation/Blending/MovieSceneInitialValueStore.h"
#include "Evaluation/Blending/MovieSceneBlendingActuator.h"
struct FMovieSceneRemoveInitialValueToken : IMovieScenePreAnimatedToken
{
FMovieSceneRemoveInitialValueToken(TWeakPtr<IMovieSceneBlendingActuator> InWeakActuator)
: WeakActuator(InWeakActuator)
{}
virtual void RestoreState(UObject& Object, const UE::MovieScene::FRestoreStateParams& Params) override
{
TSharedPtr<IMovieSceneBlendingActuator> Store = WeakActuator.Pin();
if (Store.IsValid())
{
Store->RemoveInitialValueForObject(FObjectKey(&Object));
}
}
private:
/** The store to remove the initial value from */
TWeakPtr<IMovieSceneBlendingActuator> WeakActuator;
};
struct FMovieSceneRemoveInitialGlobalValueToken : IMovieScenePreAnimatedGlobalToken
{
FMovieSceneRemoveInitialGlobalValueToken(TWeakPtr<IMovieSceneBlendingActuator> InWeakActuator)
: WeakActuator(InWeakActuator)
{}
virtual void RestoreState(const UE::MovieScene::FRestoreStateParams& Params) override
{
TSharedPtr<IMovieSceneBlendingActuator> Store = WeakActuator.Pin();
if (Store.IsValid())
{
Store->RemoveInitialValueForObject(FObjectKey());
}
}
private:
/** The store to remove the initial value from */
TWeakPtr<IMovieSceneBlendingActuator> WeakActuator;
};
FMovieSceneRemoveInitialValueTokenProducer::FMovieSceneRemoveInitialValueTokenProducer(TWeakPtr<IMovieSceneBlendingActuator> InWeakActuator)
: WeakActuator(InWeakActuator)
{
}
FMovieSceneRemoveInitialValueTokenProducer::~FMovieSceneRemoveInitialValueTokenProducer() = default;
IMovieScenePreAnimatedTokenPtr FMovieSceneRemoveInitialValueTokenProducer::CacheExistingState(UObject& Object) const
{
return FMovieSceneRemoveInitialValueToken(WeakActuator);
}
FMovieSceneRemoveInitialGlobalValueTokenProducer::FMovieSceneRemoveInitialGlobalValueTokenProducer(TWeakPtr<IMovieSceneBlendingActuator> InWeakActuator)
: WeakActuator(InWeakActuator)
{
}
FMovieSceneRemoveInitialGlobalValueTokenProducer::~FMovieSceneRemoveInitialGlobalValueTokenProducer() = default;
IMovieScenePreAnimatedGlobalTokenPtr FMovieSceneRemoveInitialGlobalValueTokenProducer::CacheExistingState() const
{
return FMovieSceneRemoveInitialGlobalValueToken(WeakActuator);
}