Files
UnrealEngine/Engine/Plugins/Animation/ControlRig/Source/ControlRigEditor/Private/ControlRigBlueprintActions.h
2025-05-18 13:04:45 +08:00

43 lines
2.1 KiB
C++

// Copyright Epic Games, Inc. All Rights Reserved.
#pragma once
#include "CoreMinimal.h"
#include "Toolkits/IToolkitHost.h"
#include "AssetTypeActions/AssetTypeActions_Blueprint.h"
#include "ControlRigBlueprint.h"
class FMenuBuilder;
class UFactory;
class USkeletalMesh;
class AActor;
class FControlRigBlueprintActions : public FAssetTypeActions_Blueprint
{
public:
// IAssetTypeActions Implementation
virtual FText GetName() const override { return NSLOCTEXT("AssetTypeActions", "ControlRigBlueprintActions", "Control Rig"); }
virtual FColor GetTypeColor() const override { return FColor(140, 116, 0); }
virtual UClass* GetSupportedClass() const override { return UControlRigBlueprint::StaticClass(); }
virtual void OpenAssetEditor( const TArray<UObject*>& InObjects, TSharedPtr<class IToolkitHost> EditWithinLevelEditor = TSharedPtr<IToolkitHost>() ) override;
virtual uint32 GetCategories() override { return EAssetTypeCategories::Animation; }
virtual const TArray<FText>& GetSubMenus() const override;
virtual TSharedPtr<SWidget> GetThumbnailOverlay(const FAssetData& AssetData) const override;
virtual void PerformAssetDiff(UObject* Asset1, UObject* Asset2, const struct FRevisionInfo& OldRevision, const struct FRevisionInfo& NewRevision) const override;
// FAssetTypeActions_Blueprint interface
virtual UFactory* GetFactoryForBlueprintType(UBlueprint* InBlueprint) const override;
virtual bool CanCreateNewDerivedBlueprint() const override { return false; };
static void ExtendSketalMeshToolMenu();
static UControlRigBlueprint* CreateNewControlRigAsset(const FString& InDesiredPackagePath, const bool bModularRig);
static UControlRigBlueprint* CreateControlRigFromSkeletalMeshOrSkeleton(UObject* InSelectedObject, const bool bModularRig);
static USkeletalMesh* GetSkeletalMeshFromControlRigBlueprint(const FAssetData& InAsset);
static void PostSpawningSkeletalMeshActor(AActor* InSpawnedActor, UObject* InAsset);
static void OnSpawnedSkeletalMeshActorChanged(UObject* InObject, FPropertyChangedEvent& InEvent, UObject* InAsset);
static FDelegateHandle OnSpawnedSkeletalMeshActorChangedHandle;
};