2020-08-11 01:36:57 -04:00
|
|
|
// Copyright Epic Games, Inc. All Rights Reserved.
|
|
|
|
|
|
|
|
|
|
#include "Systems/MovieScenePiecewiseFloatBlenderSystem.h"
|
|
|
|
|
#include "EntitySystem/BuiltInComponentTypes.h"
|
|
|
|
|
#include "EntitySystem/MovieSceneEntitySystemLinker.h"
|
2021-08-23 18:25:30 -04:00
|
|
|
#include "EntitySystem/MovieSceneEntitySystemTask.h"
|
2020-08-11 01:36:57 -04:00
|
|
|
#include "Systems/FloatChannelEvaluatorSystem.h"
|
2021-09-02 13:13:24 -04:00
|
|
|
#include "Systems/MovieSceneBaseValueEvaluatorSystem.h"
|
2021-08-23 18:25:30 -04:00
|
|
|
#include "Systems/MovieScenePiecewiseBlenderSystemImpl.h"
|
2020-08-11 01:36:57 -04:00
|
|
|
#include "Systems/MovieSceneQuaternionInterpolationRotationSystem.h"
|
|
|
|
|
#include "Systems/WeightAndEasingEvaluatorSystem.h"
|
|
|
|
|
|
|
|
|
|
|
2021-08-23 18:25:30 -04:00
|
|
|
DECLARE_CYCLE_STAT(TEXT("Piecewise Float Blender System"), MovieSceneEval_PiecewiseFloatBlenderSystem, STATGROUP_MovieSceneECS);
|
2020-08-11 01:36:57 -04:00
|
|
|
DECLARE_CYCLE_STAT(TEXT("Blend float values"), MovieSceneEval_BlendFloatValues, STATGROUP_MovieSceneECS);
|
|
|
|
|
DECLARE_CYCLE_STAT(TEXT("Default combine blended float values"), MovieSceneEval_BlendCombineFloatValues, STATGROUP_MovieSceneECS);
|
2020-11-24 18:42:39 -04:00
|
|
|
|
2020-08-11 01:36:57 -04:00
|
|
|
|
|
|
|
|
UMovieScenePiecewiseFloatBlenderSystem::UMovieScenePiecewiseFloatBlenderSystem(const FObjectInitializer& ObjInit)
|
|
|
|
|
: Super(ObjInit)
|
|
|
|
|
{
|
|
|
|
|
if (HasAnyFlags(RF_ClassDefaultObject))
|
|
|
|
|
{
|
|
|
|
|
DefineImplicitPrerequisite(UFloatChannelEvaluatorSystem::StaticClass(), GetClass());
|
2021-09-02 13:13:24 -04:00
|
|
|
DefineImplicitPrerequisite(UMovieSceneBaseValueEvaluatorSystem::StaticClass(), GetClass());
|
2020-08-11 01:36:57 -04:00
|
|
|
DefineImplicitPrerequisite(UMovieSceneQuaternionInterpolationRotationSystem::StaticClass(), GetClass());
|
|
|
|
|
DefineImplicitPrerequisite(UWeightAndEasingEvaluatorSystem::StaticClass(), GetClass());
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void UMovieScenePiecewiseFloatBlenderSystem::OnRun(FSystemTaskPrerequisites& InPrerequisites, FSystemSubsequentTasks& Subsequents)
|
|
|
|
|
{
|
|
|
|
|
using namespace UE::MovieScene;
|
|
|
|
|
|
2021-08-23 18:25:30 -04:00
|
|
|
SCOPE_CYCLE_COUNTER(MovieSceneEval_PiecewiseFloatBlenderSystem)
|
2020-08-11 01:36:57 -04:00
|
|
|
|
2021-02-18 18:13:28 -04:00
|
|
|
CompactBlendChannels();
|
2020-08-11 01:36:57 -04:00
|
|
|
|
2021-08-23 18:25:30 -04:00
|
|
|
FPiecewiseBlenderSystemImplRunParams Params;
|
|
|
|
|
Params.MaximumNumBlends = AllocatedBlendChannels.Num();
|
|
|
|
|
Params.BlendValuesStatId = GET_STATID(MovieSceneEval_BlendFloatValues);
|
|
|
|
|
Params.CombineBlendsStatId = GET_STATID(MovieSceneEval_BlendCombineFloatValues);
|
|
|
|
|
Impl.Run(Params, Linker->EntityManager, InPrerequisites, Subsequents);
|
2020-11-24 18:42:39 -04:00
|
|
|
}
|
|
|
|
|
|
2021-08-23 18:25:30 -04:00
|
|
|
FGraphEventRef UMovieScenePiecewiseFloatBlenderSystem::DispatchDecomposeTask(const UE::MovieScene::FValueDecompositionParams& Params, UE::MovieScene::FAlignedDecomposedValue* Output)
|
2020-11-24 18:42:39 -04:00
|
|
|
{
|
2021-08-23 18:25:30 -04:00
|
|
|
return Impl.DispatchDecomposeTask(Linker->EntityManager, Params, Output);
|
2020-11-24 18:42:39 -04:00
|
|
|
}
|
2020-08-11 01:36:57 -04:00
|
|
|
|