Files
UnrealEngine/Engine/Source/Runtime/MovieSceneTracks/Private/Sections/MovieSceneCameraShakeSection.cpp
2025-05-18 13:04:45 +08:00

75 lines
2.2 KiB
C++

// Copyright Epic Games, Inc. All Rights Reserved.
#include "Sections/MovieSceneCameraShakeSection.h"
#include "UObject/SequencerObjectVersion.h"
#include "MovieSceneTracksComponentTypes.h"
#include UE_INLINE_GENERATED_CPP_BY_NAME(MovieSceneCameraShakeSection)
UMovieSceneCameraShakeSection::UMovieSceneCameraShakeSection(const FObjectInitializer& ObjectInitializer)
: Super( ObjectInitializer )
{
ShakeClass_DEPRECATED = nullptr;
PlayScale_DEPRECATED = 1.f;
PlaySpace_DEPRECATED = ECameraShakePlaySpace::CameraLocal;
UserDefinedPlaySpace_DEPRECATED = FRotator::ZeroRotator;
EvalOptions.EnableAndSetCompletionMode
(GetLinkerCustomVersion(FSequencerObjectVersion::GUID) < FSequencerObjectVersion::WhenFinishedDefaultsToProjectDefault ?
EMovieSceneCompletionMode::RestoreState :
EMovieSceneCompletionMode::ProjectDefault);
}
void UMovieSceneCameraShakeSection::PostLoad()
{
if (ShakeClass_DEPRECATED != nullptr)
{
ShakeData.ShakeClass = ShakeClass_DEPRECATED;
}
if (PlayScale_DEPRECATED != 1.f)
{
ShakeData.PlayScale = PlayScale_DEPRECATED;
}
if (PlaySpace_DEPRECATED != ECameraShakePlaySpace::CameraLocal)
{
ShakeData.PlaySpace = PlaySpace_DEPRECATED;
}
if (UserDefinedPlaySpace_DEPRECATED != FRotator::ZeroRotator)
{
ShakeData.UserDefinedPlaySpace = UserDefinedPlaySpace_DEPRECATED;
}
Super::PostLoad();
}
UObject* UMovieSceneCameraShakeSection::GetSourceObject() const
{
return ShakeData.ShakeClass;
}
void UMovieSceneCameraShakeSection::ImportEntityImpl(UMovieSceneEntitySystemLinker* EntityLinker, const FEntityImportParams& Params, FImportedEntity* OutImportedEntity)
{
using namespace UE::MovieScene;
if (!ShakeData.ShakeClass)
{
return;
}
const FBuiltInComponentTypes* BuiltInComponents = FBuiltInComponentTypes::Get();
const FMovieSceneTracksComponentTypes* TrackComponents = FMovieSceneTracksComponentTypes::Get();
const FGuid ObjectBindingID = Params.GetObjectBindingID();
FMovieSceneCameraShakeComponentData ComponentData(ShakeData, *this);
OutImportedEntity->AddBuilder(
FEntityBuilder()
.AddConditional(BuiltInComponents->GenericObjectBinding, ObjectBindingID, ObjectBindingID.IsValid())
.Add(TrackComponents->CameraShake, ComponentData)
);
}