Files
UnrealEngine/Engine/Source/Runtime/MovieSceneTracks/Public/Systems/MovieSceneMaterialParameterCollectionSystem.h
2025-05-18 13:04:45 +08:00

51 lines
1.5 KiB
C++

// Copyright Epic Games, Inc. All Rights Reserved.
#pragma once
#include "EntitySystem/MovieSceneEntitySystem.h"
#include "EntitySystem/BuiltInComponentTypes.h"
#include "Evaluation/PreAnimatedState/MovieScenePreAnimatedStateStorage.h"
#include "Systems/MovieSceneMaterialSystem.h"
#include "MovieSceneMaterialParameterCollectionSystem.generated.h"
namespace UE::MovieScene
{
struct FPreAnimatedScalarMaterialParameterStorage;
struct FPreAnimatedVectorMaterialParameterStorage;
} // namespace UE::MovieScene
/**
* System that resolves MPC components into BoundMaterial components that can be used by downstream
* parameter systems
*/
UCLASS(MinimalAPI)
class UMovieSceneMaterialParameterCollectionSystem
: public UMovieSceneEntitySystem
{
public:
GENERATED_BODY()
UMovieSceneMaterialParameterCollectionSystem(const FObjectInitializer& ObjInit);
private:
virtual void OnLink() override;
virtual void OnUnlink() override;
virtual void OnRun(FSystemTaskPrerequisites& InPrerequisites, FSystemSubsequentTasks& Subsequents) override;
private:
/** Holds pre-animated values for scalar MPC values */
TSharedPtr<UE::MovieScene::FPreAnimatedScalarMaterialParameterStorage> ScalarParameterStorage;
/** Holds pre-animated values for vector or color MPC values */
TSharedPtr<UE::MovieScene::FPreAnimatedVectorMaterialParameterStorage> VectorParameterStorage;
/** Registered key for the grouping policy that groups MPC tracks together */
UE::MovieScene::FEntityGroupingPolicyKey GroupingKey;
};