// Copyright Epic Games, Inc. All Rights Reserved. #include "Channels/MovieSceneTextChannel.h" #if WITH_EDITOR #include "UObject/Package.h" #endif #include UE_INLINE_GENERATED_CPP_BY_NAME(MovieSceneTextChannel) #if WITH_EDITOR void FMovieSceneTextChannel::SetPackage(UPackage* InPackage) { Package = InPackage; } UPackage* FMovieSceneTextChannel::GetPackage() const { return Package.Get(); } #endif const FText* FMovieSceneTextChannel::Evaluate(FFrameTime InTime) const { if (Times.Num()) { const int32 Index = FMath::Max(0, Algo::UpperBound(Times, InTime.FrameNumber)-1); return &Values[Index]; } return bHasDefaultValue ? &DefaultValue : nullptr; } void FMovieSceneTextChannel::GetKeys(const TRange& WithinRange , TArray* OutKeyTimes , TArray* OutKeyHandles) { GetData().GetKeys(WithinRange, OutKeyTimes, OutKeyHandles); } void FMovieSceneTextChannel::GetKeyTimes(TArrayView InHandles, TArrayView OutKeyTimes) { GetData().GetKeyTimes(InHandles, OutKeyTimes); } void FMovieSceneTextChannel::SetKeyTimes(TArrayView InHandles, TArrayView InKeyTimes) { GetData().SetKeyTimes(InHandles, InKeyTimes); } void FMovieSceneTextChannel::DuplicateKeys(TArrayView InHandles, TArrayView OutNewHandles) { GetData().DuplicateKeys(InHandles, OutNewHandles); } void FMovieSceneTextChannel::DeleteKeys(TArrayView InHandles) { GetData().DeleteKeys(InHandles); } void FMovieSceneTextChannel::DeleteKeysFrom(FFrameNumber InTime, bool bDeleteKeysBefore) { // Insert a key at the current time to maintain evaluation if (GetData().GetTimes().Num() > 0) { if (const FText* CurrentValue = Evaluate(InTime)) { FText Value(*CurrentValue); GetData().UpdateOrAddKey(InTime, Value); } } GetData().DeleteKeysFrom(InTime, bDeleteKeysBefore); } void FMovieSceneTextChannel::RemapTimes(const UE::MovieScene::IRetimingInterface& Retimer) { GetData().RemapTimes(Retimer); } TRange FMovieSceneTextChannel::ComputeEffectiveRange() const { return GetData().GetTotalRange(); } int32 FMovieSceneTextChannel::GetNumKeys() const { return Times.Num(); } void FMovieSceneTextChannel::Reset() { Times.Reset(); Values.Reset(); KeyHandles.Reset(); bHasDefaultValue = false; } void FMovieSceneTextChannel::Offset(FFrameNumber DeltaPosition) { GetData().Offset(DeltaPosition); } void FMovieSceneTextChannel::Optimize(const FKeyDataOptimizationParams& InParameters) { UE::MovieScene::Optimize(this, InParameters); } void FMovieSceneTextChannel::ClearDefault() { bHasDefaultValue = false; }