// Copyright Epic Games, Inc. All Rights Reserved. #include "Evaluation/MovieScenePropertyTemplates.h" #include "Sections/MovieSceneBoolSection.h" #include "Sections/MovieSceneFloatSection.h" #include "Sections/MovieSceneByteSection.h" #include "Sections/MovieSceneEnumSection.h" #include "Sections/MovieSceneIntegerSection.h" #include "Sections/MovieSceneVectorSection.h" #include "Sections/MovieScene3DTransformSection.h" #include "Tracks/MovieScenePropertyTrack.h" #include "MovieScene.h" #include "Evaluation/MovieSceneEvaluation.h" #include "MovieSceneTemplateCommon.h" #include "Evaluation/Blending/MovieSceneMultiChannelBlending.h" #include UE_INLINE_GENERATED_CPP_BY_NAME(MovieScenePropertyTemplates) namespace { FName SanitizeBoolPropertyName(FName InPropertyName) { FString PropertyVarName = InPropertyName.ToString(); PropertyVarName.RemoveFromStart("b", ESearchCase::CaseSensitive); return FName(*PropertyVarName); } } // ---------------------------------------------------------------------------- // Boolean Property Template FMovieSceneBoolPropertySectionTemplate::FMovieSceneBoolPropertySectionTemplate(const UMovieSceneBoolSection& Section, const UMovieScenePropertyTrack& Track) : FMovieScenePropertySectionTemplate(Track.GetPropertyName(), Track.GetPropertyPath().ToString()) , BoolCurve(Section.GetChannel()) { PropertyData.PropertyName = SanitizeBoolPropertyName(PropertyData.PropertyName); } void FMovieSceneBoolPropertySectionTemplate::Evaluate(const FMovieSceneEvaluationOperand& Operand, const FMovieSceneContext& Context, const FPersistentEvaluationData& PersistentData, FMovieSceneExecutionTokens& ExecutionTokens) const { // Only evaluate if the curve has any data bool Result = false; if (BoolCurve.Evaluate(Context.GetTime(), Result)) { ExecutionTokens.Add(TPropertyTrackExecutionToken(Result)); } }