Files
UnrealEngine/Engine/Plugins/Experimental/AnimNextAnimGraph/Source/AnimNextAnimGraphUncookedOnly/Internal/Entries/AnimNextAnimationGraphEntry.h
2025-05-18 13:04:45 +08:00

75 lines
2.5 KiB
C++

// Copyright Epic Games, Inc. All Rights Reserved.
#pragma once
#include "CoreMinimal.h"
#include "Entries/AnimNextRigVMAssetEntry.h"
#include "IAnimNextRigVMExportInterface.h"
#include "IAnimNextRigVMGraphInterface.h"
#include "Kismet/BlueprintFunctionLibrary.h"
#include "AnimNextAnimationGraphEntry.generated.h"
class UAnimNextRigVMAssetEditorData;
class UAnimNextEdGraph;
enum class ERigVMGraphNotifType : uint8;
namespace UE::AnimNext::Editor
{
struct FUtils;
class FAnimNextAnimGraphEditorModule;
}
namespace UE::AnimNext::Tests
{
class FEditor_Graphs;
class FEditor_AnimGraph_Graphs;
}
/** An Animation Graph entry in an AnimNext module asset */
UCLASS(MinimalAPI, Category = "Animation Graphs", DisplayName = "Animation Graph")
class UAnimNextAnimationGraphEntry : public UAnimNextRigVMAssetEntry, public IAnimNextRigVMGraphInterface, public IAnimNextRigVMExportInterface
{
GENERATED_BODY()
friend class UAnimNextAnimationGraph_EditorData;
friend struct UE::AnimNext::Editor::FUtils;
friend class UE::AnimNext::Editor::FAnimNextAnimGraphEditorModule;
friend class UE::AnimNext::Tests::FEditor_Graphs;
friend class UE::AnimNext::Tests::FEditor_AnimGraph_Graphs;
// IAnimNextRigVMExportInterface interface
virtual FAnimNextParamType GetExportType() const override;
virtual FName GetExportName() const override;
virtual EAnimNextExportAccessSpecifier GetExportAccessSpecifier() const override;
virtual void SetExportAccessSpecifier(EAnimNextExportAccessSpecifier InAccessSpecifier, bool bSetupUndoRedo = true) override;
// UAnimNextRigVMAssetEntry interface
virtual FName GetEntryName() const override;
virtual void SetEntryName(FName InName, bool bSetupUndoRedo = true) override;
// IAnimNextRigVMGraphInterface interface
virtual const FName& GetGraphName() const override;
virtual URigVMGraph* GetRigVMGraph() const override;
virtual URigVMEdGraph* GetEdGraph() const override;
virtual void SetRigVMGraph(URigVMGraph* InGraph) override;
virtual void SetEdGraph(URigVMEdGraph* InGraph) override;
protected:
/** Access specifier - whether the graph's entry point is visible external to this asset */
UPROPERTY(EditAnywhere, Category = AnimationGraph)
EAnimNextExportAccessSpecifier Access = EAnimNextExportAccessSpecifier::Private;
/** The name of the graph */
UPROPERTY(VisibleAnywhere, Category = AnimationGraph)
FName GraphName;
/** RigVM graph */
UPROPERTY()
TObjectPtr<URigVMGraph> Graph;
/** Editor graph */
UPROPERTY()
TObjectPtr<UAnimNextEdGraph> EdGraph;
};