// Copyright Epic Games, Inc. All Rights Reserved. #pragma once #include "CoreMinimal.h" #include "Stats/Stats.h" #include "UObject/ObjectMacros.h" #include "MovieSceneFwd.h" #include "Evaluation/MovieSceneEvalTemplate.h" #include "Sections/MovieSceneParameterSection.h" #include "IMovieScenePlayer.h" #include "MovieSceneParameterTemplate.generated.h" DECLARE_CYCLE_STAT(TEXT("Parameter Track Token Execute"), MovieSceneEval_ParameterTrack_TokenExecute, STATGROUP_MovieSceneEval); /** Evaluation structure that holds evaluated values */ struct FEvaluatedParameterSectionValues { FEvaluatedParameterSectionValues() = default; FEvaluatedParameterSectionValues(FEvaluatedParameterSectionValues&&) = default; FEvaluatedParameterSectionValues& operator=(FEvaluatedParameterSectionValues&&) = default; // Non-copyable FEvaluatedParameterSectionValues(const FEvaluatedParameterSectionValues&) = delete; FEvaluatedParameterSectionValues& operator=(const FEvaluatedParameterSectionValues&) = delete; /** Array of evaluated scalar values */ TArray> ScalarValues; /** Array of evaluated bool values */ TArray> BoolValues; /** Array of evaluated vector2D values */ TArray> Vector2DValues; /** Array of evaluated vector values */ TArray> VectorValues; /** Array of evaluated color values */ TArray> ColorValues; /** Array of evaluated transform values */ TArray> TransformValues; }; /** Template that performs evaluation of parameter sections */ USTRUCT() struct FMovieSceneParameterSectionTemplate : public FMovieSceneEvalTemplate { GENERATED_BODY() FMovieSceneParameterSectionTemplate() {} protected: /** Protected constructor to initialize from a parameter section */ MOVIESCENETRACKS_API FMovieSceneParameterSectionTemplate(const UMovieSceneParameterSection& Section); /** Evaluate our curves, outputting evaluated values into the specified container */ MOVIESCENETRACKS_API void EvaluateCurves(const FMovieSceneContext& Context, FEvaluatedParameterSectionValues& OutValues) const; protected: /** The scalar parameter names and their associated curves. */ UPROPERTY() TArray Scalars; /** The bool parameter names and their associated curves. */ UPROPERTY() TArray Bools; /** The vector parameter names and their associated curves. */ UPROPERTY() TArray Vector2Ds; /** The vector parameter names and their associated curves. */ UPROPERTY() TArray Vectors; /** The color parameter names and their associated curves. */ UPROPERTY() TArray Colors; UPROPERTY() TArray Transforms; };