Convert handlers to MCPFetcher
This commit is contained in:
@@ -3,7 +3,7 @@
|
|||||||
#include "CoreMinimal.h"
|
#include "CoreMinimal.h"
|
||||||
#include "MCPServer.h"
|
#include "MCPServer.h"
|
||||||
#include "MCPHandler.h"
|
#include "MCPHandler.h"
|
||||||
#include "MCPAssets.h"
|
#include "MCPFetcher.h"
|
||||||
#include "MCPUtils.h"
|
#include "MCPUtils.h"
|
||||||
#include "MCPPackageMaker.h"
|
#include "MCPPackageMaker.h"
|
||||||
#include "Animation/AnimBlueprint.h"
|
#include "Animation/AnimBlueprint.h"
|
||||||
@@ -27,7 +27,7 @@ public:
|
|||||||
UPROPERTY(meta=(Description="Full asset path for the new Animation Blueprint (e.g. '/Game/AnimBP/ABP_Character')"))
|
UPROPERTY(meta=(Description="Full asset path for the new Animation Blueprint (e.g. '/Game/AnimBP/ABP_Character')"))
|
||||||
FString AssetPath;
|
FString AssetPath;
|
||||||
|
|
||||||
UPROPERTY(meta=(Description="Name or path of the skeleton asset to use"))
|
UPROPERTY(meta=(Description="Skeleton asset package path"))
|
||||||
FString Skeleton;
|
FString Skeleton;
|
||||||
|
|
||||||
UPROPERTY(meta=(Optional, Description="Parent class name (default: AnimInstance)"))
|
UPROPERTY(meta=(Optional, Description="Parent class name (default: AnimInstance)"))
|
||||||
@@ -44,9 +44,9 @@ public:
|
|||||||
if (!Maker.Ok()) return;
|
if (!Maker.Ok()) return;
|
||||||
|
|
||||||
// Resolve skeleton
|
// Resolve skeleton
|
||||||
MCPAssets<USkeleton> SkeletonAssets;
|
MCPFetcher SkeletonFetcher;
|
||||||
if (!SkeletonAssets.Exact(Skeleton).ENone().ETwo().Load()) return;
|
USkeleton* SkeletonObj = SkeletonFetcher.Asset(Skeleton).Cast<USkeleton>();
|
||||||
USkeleton* SkeletonObj = SkeletonAssets.Object();
|
if (!SkeletonObj) return;
|
||||||
|
|
||||||
// Resolve parent class (default: UAnimInstance)
|
// Resolve parent class (default: UAnimInstance)
|
||||||
UClass* ParentClassObj = UAnimInstance::StaticClass();
|
UClass* ParentClassObj = UAnimInstance::StaticClass();
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
#include "CoreMinimal.h"
|
#include "CoreMinimal.h"
|
||||||
#include "MCPServer.h"
|
#include "MCPServer.h"
|
||||||
#include "MCPHandler.h"
|
#include "MCPHandler.h"
|
||||||
#include "MCPAssets.h"
|
#include "MCPFetcher.h"
|
||||||
#include "MCPUtils.h"
|
#include "MCPUtils.h"
|
||||||
#include "Animation/AnimBlueprint.h"
|
#include "Animation/AnimBlueprint.h"
|
||||||
#include "AnimGraphNode_Base.h"
|
#include "AnimGraphNode_Base.h"
|
||||||
@@ -20,7 +20,7 @@ class UMCP_AnimBlueprint_ListSlotNames : public UObject, public IMCPHandler
|
|||||||
GENERATED_BODY()
|
GENERATED_BODY()
|
||||||
|
|
||||||
public:
|
public:
|
||||||
UPROPERTY(meta=(Description="Animation Blueprint name or package path"))
|
UPROPERTY(meta=(Description="Animation Blueprint package path"))
|
||||||
FString Blueprint;
|
FString Blueprint;
|
||||||
|
|
||||||
virtual FString GetDescription() const override
|
virtual FString GetDescription() const override
|
||||||
@@ -30,9 +30,9 @@ public:
|
|||||||
|
|
||||||
virtual void Handle() override
|
virtual void Handle() override
|
||||||
{
|
{
|
||||||
MCPAssets<UAnimBlueprint> Assets;
|
MCPFetcher F;
|
||||||
if (!Assets.Exact(Blueprint).ENone().ETwo().Load()) return;
|
UAnimBlueprint* AnimBP = F.Asset(Blueprint).Cast<UAnimBlueprint>();
|
||||||
UAnimBlueprint* AnimBP = Assets.Object();
|
if (!AnimBP) return;
|
||||||
|
|
||||||
// Walk all anim nodes to collect slot names
|
// Walk all anim nodes to collect slot names
|
||||||
TSet<FString> SlotNames;
|
TSet<FString> SlotNames;
|
||||||
|
|||||||
@@ -36,7 +36,7 @@ class UMCP_AnimBlueprint_SetBlendSpaceSamples : public UObject, public IMCPHandl
|
|||||||
GENERATED_BODY()
|
GENERATED_BODY()
|
||||||
|
|
||||||
public:
|
public:
|
||||||
UPROPERTY(meta=(Description="Blend Space asset name or package path"))
|
UPROPERTY(meta=(Description="Blend Space package path"))
|
||||||
FString BlendSpace;
|
FString BlendSpace;
|
||||||
|
|
||||||
UPROPERTY(meta=(Optional, Description="Display name for the X axis"))
|
UPROPERTY(meta=(Optional, Description="Display name for the X axis"))
|
||||||
@@ -69,9 +69,9 @@ public:
|
|||||||
virtual void Handle() override
|
virtual void Handle() override
|
||||||
{
|
{
|
||||||
// Load the blend space
|
// Load the blend space
|
||||||
MCPAssets<UBlendSpace> Assets;
|
MCPFetcher F;
|
||||||
if (!Assets.Exact(BlendSpace).ENone().ETwo().Load()) return;
|
UBlendSpace* BS = F.Asset(BlendSpace).Cast<UBlendSpace>();
|
||||||
UBlendSpace* BS = Assets.Object();
|
if (!BS) return;
|
||||||
|
|
||||||
// Set axis parameters
|
// Set axis parameters
|
||||||
const FBlendParameter& ParamX = BS->GetBlendParameter(0);
|
const FBlendParameter& ParamX = BS->GetBlendParameter(0);
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
#include "CoreMinimal.h"
|
#include "CoreMinimal.h"
|
||||||
#include "MCPServer.h"
|
#include "MCPServer.h"
|
||||||
#include "MCPHandler.h"
|
#include "MCPHandler.h"
|
||||||
#include "MCPAssets.h"
|
#include "MCPFetcher.h"
|
||||||
#include "MCPUtils.h"
|
#include "MCPUtils.h"
|
||||||
#include "MCPPackageMaker.h"
|
#include "MCPPackageMaker.h"
|
||||||
#include "Animation/Skeleton.h"
|
#include "Animation/Skeleton.h"
|
||||||
@@ -24,7 +24,7 @@ public:
|
|||||||
UPROPERTY(meta=(Description="Full asset path for the new Blend Space (e.g. '/Game/BlendSpaces/BS_Locomotion')"))
|
UPROPERTY(meta=(Description="Full asset path for the new Blend Space (e.g. '/Game/BlendSpaces/BS_Locomotion')"))
|
||||||
FString AssetPath;
|
FString AssetPath;
|
||||||
|
|
||||||
UPROPERTY(meta=(Description="Name or path of the skeleton asset to use"))
|
UPROPERTY(meta=(Description="Skeleton asset package path"))
|
||||||
FString Skeleton;
|
FString Skeleton;
|
||||||
|
|
||||||
virtual FString GetDescription() const override
|
virtual FString GetDescription() const override
|
||||||
@@ -38,9 +38,9 @@ public:
|
|||||||
if (!Maker.Ok()) return;
|
if (!Maker.Ok()) return;
|
||||||
|
|
||||||
// Resolve skeleton.
|
// Resolve skeleton.
|
||||||
MCPAssets<USkeleton> SkeletonAssets;
|
MCPFetcher SkeletonFetcher;
|
||||||
if (!SkeletonAssets.Exact(Skeleton).ENone().ETwo().Load()) return;
|
USkeleton* SkeletonObj = SkeletonFetcher.Asset(Skeleton).Cast<USkeleton>();
|
||||||
USkeleton* SkeletonObj = SkeletonAssets.Object();
|
if (!SkeletonObj) return;
|
||||||
|
|
||||||
// Create the package and Blend Space.
|
// Create the package and Blend Space.
|
||||||
if (!Maker.Make()) return;
|
if (!Maker.Make()) return;
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
#include "CoreMinimal.h"
|
#include "CoreMinimal.h"
|
||||||
#include "MCPHandler.h"
|
#include "MCPHandler.h"
|
||||||
#include "MCPAssets.h"
|
#include "MCPFetcher.h"
|
||||||
#include "MCPUtils.h"
|
#include "MCPUtils.h"
|
||||||
#include "MCPServer.h"
|
#include "MCPServer.h"
|
||||||
#include "Engine/Blueprint.h"
|
#include "Engine/Blueprint.h"
|
||||||
@@ -22,7 +22,7 @@ class UMCP_Blueprint_AddComponent : public UObject, public IMCPHandler
|
|||||||
GENERATED_BODY()
|
GENERATED_BODY()
|
||||||
|
|
||||||
public:
|
public:
|
||||||
UPROPERTY(meta=(Description="Blueprint name or package path"))
|
UPROPERTY(meta=(Description="Blueprint package path"))
|
||||||
FString Blueprint;
|
FString Blueprint;
|
||||||
|
|
||||||
UPROPERTY(meta=(Description="Component class name (e.g. StaticMeshComponent, SceneComponent)"))
|
UPROPERTY(meta=(Description="Component class name (e.g. StaticMeshComponent, SceneComponent)"))
|
||||||
@@ -42,9 +42,9 @@ public:
|
|||||||
|
|
||||||
virtual void Handle() override
|
virtual void Handle() override
|
||||||
{
|
{
|
||||||
MCPAssets<UBlueprint> Assets;
|
MCPFetcher F;
|
||||||
if (!Assets.Exact(Blueprint).ENone().ETwo().Load()) return;
|
UBlueprint* BP = F.Asset(Blueprint).Cast<UBlueprint>();
|
||||||
UBlueprint* BP = Assets.Object();
|
if (!BP) return;
|
||||||
|
|
||||||
USimpleConstructionScript* SCS = BP->SimpleConstructionScript;
|
USimpleConstructionScript* SCS = BP->SimpleConstructionScript;
|
||||||
if (!SCS)
|
if (!SCS)
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
#include "CoreMinimal.h"
|
#include "CoreMinimal.h"
|
||||||
#include "MCPHandler.h"
|
#include "MCPHandler.h"
|
||||||
#include "MCPAssets.h"
|
#include "MCPFetcher.h"
|
||||||
#include "MCPUtils.h"
|
#include "MCPUtils.h"
|
||||||
#include "MCPServer.h"
|
#include "MCPServer.h"
|
||||||
#include "Engine/Blueprint.h"
|
#include "Engine/Blueprint.h"
|
||||||
@@ -25,7 +25,7 @@ class UMCP_Blueprint_AddFunctionParameter : public UObject, public IMCPHandler
|
|||||||
GENERATED_BODY()
|
GENERATED_BODY()
|
||||||
|
|
||||||
public:
|
public:
|
||||||
UPROPERTY(meta=(Description="Blueprint name or package path"))
|
UPROPERTY(meta=(Description="Blueprint package path"))
|
||||||
FString Blueprint;
|
FString Blueprint;
|
||||||
|
|
||||||
UPROPERTY(meta=(Description="Name of the function, custom event, or event dispatcher"))
|
UPROPERTY(meta=(Description="Name of the function, custom event, or event dispatcher"))
|
||||||
@@ -44,9 +44,9 @@ public:
|
|||||||
|
|
||||||
virtual void Handle() override
|
virtual void Handle() override
|
||||||
{
|
{
|
||||||
MCPAssets<UBlueprint> Assets;
|
MCPFetcher F;
|
||||||
if (!Assets.Exact(Blueprint).ENone().ETwo().Load()) return;
|
UBlueprint* BP = F.Asset(Blueprint).Cast<UBlueprint>();
|
||||||
UBlueprint* BP = Assets.Object();
|
if (!BP) return;
|
||||||
|
|
||||||
// Resolve param type
|
// Resolve param type
|
||||||
FEdGraphPinType PinType;
|
FEdGraphPinType PinType;
|
||||||
|
|||||||
@@ -3,6 +3,7 @@
|
|||||||
#include "CoreMinimal.h"
|
#include "CoreMinimal.h"
|
||||||
#include "MCPHandler.h"
|
#include "MCPHandler.h"
|
||||||
#include "MCPAssets.h"
|
#include "MCPAssets.h"
|
||||||
|
#include "MCPFetcher.h"
|
||||||
#include "MCPUtils.h"
|
#include "MCPUtils.h"
|
||||||
#include "MCPServer.h"
|
#include "MCPServer.h"
|
||||||
#include "Engine/Blueprint.h"
|
#include "Engine/Blueprint.h"
|
||||||
@@ -21,7 +22,7 @@ class UMCP_Blueprint_AddInterface : public UObject, public IMCPHandler
|
|||||||
GENERATED_BODY()
|
GENERATED_BODY()
|
||||||
|
|
||||||
public:
|
public:
|
||||||
UPROPERTY(meta=(Description="Blueprint name or package path"))
|
UPROPERTY(meta=(Description="Blueprint package path"))
|
||||||
FString Blueprint;
|
FString Blueprint;
|
||||||
|
|
||||||
UPROPERTY(meta=(Description="Interface name (e.g. 'BPI_MyInterface') or native UInterface class name"))
|
UPROPERTY(meta=(Description="Interface name (e.g. 'BPI_MyInterface') or native UInterface class name"))
|
||||||
@@ -35,9 +36,9 @@ public:
|
|||||||
|
|
||||||
virtual void Handle() override
|
virtual void Handle() override
|
||||||
{
|
{
|
||||||
MCPAssets<UBlueprint> Assets;
|
MCPFetcher F;
|
||||||
if (!Assets.Exact(Blueprint).ENone().ETwo().Load()) return;
|
UBlueprint* BP = F.Asset(Blueprint).Cast<UBlueprint>();
|
||||||
UBlueprint* BP = Assets.Object();
|
if (!BP) return;
|
||||||
|
|
||||||
// Resolve the interface class
|
// Resolve the interface class
|
||||||
UClass* InterfaceClass = FindInterfaceClass(InterfaceName);
|
UClass* InterfaceClass = FindInterfaceClass(InterfaceName);
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
#include "CoreMinimal.h"
|
#include "CoreMinimal.h"
|
||||||
#include "MCPHandler.h"
|
#include "MCPHandler.h"
|
||||||
#include "MCPAssets.h"
|
#include "MCPFetcher.h"
|
||||||
#include "MCPUtils.h"
|
#include "MCPUtils.h"
|
||||||
#include "MCPServer.h"
|
#include "MCPServer.h"
|
||||||
#include "Engine/Blueprint.h"
|
#include "Engine/Blueprint.h"
|
||||||
@@ -45,9 +45,9 @@ public:
|
|||||||
|
|
||||||
virtual void Handle() override
|
virtual void Handle() override
|
||||||
{
|
{
|
||||||
MCPAssets<UBlueprint> Assets;
|
MCPFetcher F;
|
||||||
if (!Assets.Exact(Blueprint).ENone().ETwo().Load()) return;
|
UBlueprint* BP = F.Asset(Blueprint).Cast<UBlueprint>();
|
||||||
UBlueprint* BP = Assets.Object();
|
if (!BP) return;
|
||||||
|
|
||||||
// Check for duplicate variable name
|
// Check for duplicate variable name
|
||||||
FName VarFName(*VariableName);
|
FName VarFName(*VariableName);
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
#include "CoreMinimal.h"
|
#include "CoreMinimal.h"
|
||||||
#include "MCPHandler.h"
|
#include "MCPHandler.h"
|
||||||
#include "MCPAssets.h"
|
#include "MCPFetcher.h"
|
||||||
#include "MCPUtils.h"
|
#include "MCPUtils.h"
|
||||||
#include "MCPServer.h"
|
#include "MCPServer.h"
|
||||||
#include "Engine/Blueprint.h"
|
#include "Engine/Blueprint.h"
|
||||||
@@ -25,7 +25,7 @@ class UMCP_Blueprint_ChangeFunctionParameterType : public UObject, public IMCPHa
|
|||||||
GENERATED_BODY()
|
GENERATED_BODY()
|
||||||
|
|
||||||
public:
|
public:
|
||||||
UPROPERTY(meta=(Description="Blueprint name or package path"))
|
UPROPERTY(meta=(Description="Blueprint package path"))
|
||||||
FString Blueprint;
|
FString Blueprint;
|
||||||
|
|
||||||
UPROPERTY(meta=(Description="Name of the function or custom event"))
|
UPROPERTY(meta=(Description="Name of the function or custom event"))
|
||||||
@@ -47,9 +47,9 @@ public:
|
|||||||
|
|
||||||
virtual void Handle() override
|
virtual void Handle() override
|
||||||
{
|
{
|
||||||
MCPAssets<UBlueprint> Assets;
|
MCPFetcher F;
|
||||||
if (!Assets.Exact(Blueprint).ENone().ETwo().Load()) return;
|
UBlueprint* BP = F.Asset(Blueprint).Cast<UBlueprint>();
|
||||||
UBlueprint* BP = Assets.Object();
|
if (!BP) return;
|
||||||
|
|
||||||
// Resolve the new type using the shared resolver (supports primitives, structs, enums, and object references)
|
// Resolve the new type using the shared resolver (supports primitives, structs, enums, and object references)
|
||||||
FEdGraphPinType NewPinType;
|
FEdGraphPinType NewPinType;
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
#include "CoreMinimal.h"
|
#include "CoreMinimal.h"
|
||||||
#include "MCPServer.h"
|
#include "MCPServer.h"
|
||||||
#include "MCPHandler.h"
|
#include "MCPHandler.h"
|
||||||
#include "MCPAssets.h"
|
#include "MCPFetcher.h"
|
||||||
#include "MCPUtils.h"
|
#include "MCPUtils.h"
|
||||||
#include "Engine/Blueprint.h"
|
#include "Engine/Blueprint.h"
|
||||||
#include "EdGraph/EdGraph.h"
|
#include "EdGraph/EdGraph.h"
|
||||||
@@ -22,10 +22,10 @@ class UMCP_Blueprint_Diff : public UObject, public IMCPHandler
|
|||||||
GENERATED_BODY()
|
GENERATED_BODY()
|
||||||
|
|
||||||
public:
|
public:
|
||||||
UPROPERTY(meta=(Description="First blueprint name or package path"))
|
UPROPERTY(meta=(Description="First blueprint package path"))
|
||||||
FString BlueprintA;
|
FString BlueprintA;
|
||||||
|
|
||||||
UPROPERTY(meta=(Description="Second blueprint name or package path"))
|
UPROPERTY(meta=(Description="Second blueprint package path"))
|
||||||
FString BlueprintB;
|
FString BlueprintB;
|
||||||
|
|
||||||
UPROPERTY(meta=(Optional, Description="Filter to a specific graph name"))
|
UPROPERTY(meta=(Optional, Description="Filter to a specific graph name"))
|
||||||
@@ -41,13 +41,13 @@ public:
|
|||||||
virtual void Handle() override
|
virtual void Handle() override
|
||||||
{
|
{
|
||||||
// Load both blueprints
|
// Load both blueprints
|
||||||
MCPAssets<UBlueprint> AssetsA;
|
MCPFetcher FA;
|
||||||
if (!AssetsA.Exact(BlueprintA).ENone().ETwo().Load()) return;
|
UBlueprint* BPA = FA.Asset(BlueprintA).Cast<UBlueprint>();
|
||||||
UBlueprint* BPA = AssetsA.Object();
|
if (!BPA) return;
|
||||||
|
|
||||||
MCPAssets<UBlueprint> AssetsB;
|
MCPFetcher FB;
|
||||||
if (!AssetsB.Exact(BlueprintB).ENone().ETwo().Load()) return;
|
UBlueprint* BPB = FB.Asset(BlueprintB).Cast<UBlueprint>();
|
||||||
UBlueprint* BPB = AssetsB.Object();
|
if (!BPB) return;
|
||||||
|
|
||||||
// Gather graphs, optionally filtering by name
|
// Gather graphs, optionally filtering by name
|
||||||
auto GatherGraphs = [this](UBlueprint* BP) -> TArray<UEdGraph*>
|
auto GatherGraphs = [this](UBlueprint* BP) -> TArray<UEdGraph*>
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
#include "CoreMinimal.h"
|
#include "CoreMinimal.h"
|
||||||
#include "MCPServer.h"
|
#include "MCPServer.h"
|
||||||
#include "MCPHandler.h"
|
#include "MCPHandler.h"
|
||||||
#include "MCPAssets.h"
|
#include "MCPFetcher.h"
|
||||||
#include "MCPUtils.h"
|
#include "MCPUtils.h"
|
||||||
#include "Engine/Blueprint.h"
|
#include "Engine/Blueprint.h"
|
||||||
#include "EdGraph/EdGraph.h"
|
#include "EdGraph/EdGraph.h"
|
||||||
@@ -23,7 +23,7 @@ class UMCP_Blueprint_RefreshAllNodes : public UObject, public IMCPHandler
|
|||||||
GENERATED_BODY()
|
GENERATED_BODY()
|
||||||
|
|
||||||
public:
|
public:
|
||||||
UPROPERTY(meta=(Description="Blueprint name or package path"))
|
UPROPERTY(meta=(Description="Blueprint package path"))
|
||||||
FString Blueprint;
|
FString Blueprint;
|
||||||
|
|
||||||
virtual FString GetDescription() const override
|
virtual FString GetDescription() const override
|
||||||
@@ -35,9 +35,9 @@ public:
|
|||||||
virtual void Handle() override
|
virtual void Handle() override
|
||||||
{
|
{
|
||||||
// Load Blueprint
|
// Load Blueprint
|
||||||
MCPAssets<UBlueprint> Assets;
|
MCPFetcher F;
|
||||||
if (!Assets.Exact(Blueprint).ENone().ETwo().Load()) return;
|
UBlueprint* BP = F.Asset(Blueprint).Cast<UBlueprint>();
|
||||||
UBlueprint* BP = Assets.Object();
|
if (!BP) return;
|
||||||
|
|
||||||
int32 GraphCount = MCPUtils::AllGraphs(BP).Num();
|
int32 GraphCount = MCPUtils::AllGraphs(BP).Num();
|
||||||
int32 NodeCount = MCPUtils::AllNodes(BP).Num();
|
int32 NodeCount = MCPUtils::AllNodes(BP).Num();
|
||||||
|
|||||||
@@ -4,7 +4,6 @@
|
|||||||
#include "MCPServer.h"
|
#include "MCPServer.h"
|
||||||
#include "MCPHandler.h"
|
#include "MCPHandler.h"
|
||||||
#include "MCPFetcher.h"
|
#include "MCPFetcher.h"
|
||||||
#include "MCPAssets.h"
|
|
||||||
#include "MCPUtils.h"
|
#include "MCPUtils.h"
|
||||||
#include "K2Node_FunctionEntry.h"
|
#include "K2Node_FunctionEntry.h"
|
||||||
#include "K2Node_CustomEvent.h"
|
#include "K2Node_CustomEvent.h"
|
||||||
@@ -23,7 +22,7 @@ class UMCP_Blueprint_RemoveFunctionParameter : public UObject, public IMCPHandle
|
|||||||
GENERATED_BODY()
|
GENERATED_BODY()
|
||||||
|
|
||||||
public:
|
public:
|
||||||
UPROPERTY(meta=(Description="Blueprint name or package path"))
|
UPROPERTY(meta=(Description="Blueprint package path"))
|
||||||
FString Blueprint;
|
FString Blueprint;
|
||||||
|
|
||||||
UPROPERTY(meta=(Description="Name of the function or custom event"))
|
UPROPERTY(meta=(Description="Name of the function or custom event"))
|
||||||
@@ -39,9 +38,9 @@ public:
|
|||||||
|
|
||||||
virtual void Handle() override
|
virtual void Handle() override
|
||||||
{
|
{
|
||||||
MCPAssets<UBlueprint> Assets;
|
MCPFetcher F;
|
||||||
if (!Assets.Exact(Blueprint).ENone().ETwo().Load()) return;
|
UBlueprint* BP = F.Asset(Blueprint).Cast<UBlueprint>();
|
||||||
UBlueprint* BP = Assets.Object();
|
if (!BP) return;
|
||||||
|
|
||||||
// Find the entry node (function entry or custom event)
|
// Find the entry node (function entry or custom event)
|
||||||
UK2Node_EditablePinBase* EntryNode = nullptr;
|
UK2Node_EditablePinBase* EntryNode = nullptr;
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
#include "CoreMinimal.h"
|
#include "CoreMinimal.h"
|
||||||
#include "MCPHandler.h"
|
#include "MCPHandler.h"
|
||||||
#include "MCPAssets.h"
|
#include "MCPFetcher.h"
|
||||||
#include "MCPUtils.h"
|
#include "MCPUtils.h"
|
||||||
#include "MCPServer.h"
|
#include "MCPServer.h"
|
||||||
#include "Engine/Blueprint.h"
|
#include "Engine/Blueprint.h"
|
||||||
@@ -37,9 +37,9 @@ public:
|
|||||||
|
|
||||||
virtual void Handle() override
|
virtual void Handle() override
|
||||||
{
|
{
|
||||||
MCPAssets<UBlueprint> Assets;
|
MCPFetcher F;
|
||||||
if (!Assets.Exact(Blueprint).ENone().ETwo().Load()) return;
|
UBlueprint* BP = F.Asset(Blueprint).Cast<UBlueprint>();
|
||||||
UBlueprint* BP = Assets.Object();
|
if (!BP) return;
|
||||||
|
|
||||||
// Find the interface by name
|
// Find the interface by name
|
||||||
UClass* FoundInterface = nullptr;
|
UClass* FoundInterface = nullptr;
|
||||||
|
|||||||
@@ -36,9 +36,9 @@ public:
|
|||||||
virtual void Handle() override
|
virtual void Handle() override
|
||||||
{
|
{
|
||||||
// Load Blueprint
|
// Load Blueprint
|
||||||
MCPAssets<UBlueprint> Assets;
|
MCPFetcher F;
|
||||||
if (!Assets.Exact(Blueprint).ENone().ETwo().Load()) return;
|
UBlueprint* BP = F.Asset(Blueprint).Cast<UBlueprint>();
|
||||||
UBlueprint* BP = Assets.Object();
|
if (!BP) return;
|
||||||
|
|
||||||
FString OldParentName = BP->ParentClass ? MCPUtils::FormatName(BP->ParentClass) : TEXT("None");
|
FString OldParentName = BP->ParentClass ? MCPUtils::FormatName(BP->ParentClass) : TEXT("None");
|
||||||
|
|
||||||
|
|||||||
@@ -3,7 +3,6 @@
|
|||||||
#include "CoreMinimal.h"
|
#include "CoreMinimal.h"
|
||||||
#include "MCPServer.h"
|
#include "MCPServer.h"
|
||||||
#include "MCPHandler.h"
|
#include "MCPHandler.h"
|
||||||
#include "MCPAssets.h"
|
|
||||||
#include "MCPFetcher.h"
|
#include "MCPFetcher.h"
|
||||||
#include "MCPUtils.h"
|
#include "MCPUtils.h"
|
||||||
#include "EdGraph/EdGraph.h"
|
#include "EdGraph/EdGraph.h"
|
||||||
@@ -26,7 +25,7 @@ class UMCP_StateMachine_AddState : public UObject, public IMCPHandler
|
|||||||
GENERATED_BODY()
|
GENERATED_BODY()
|
||||||
|
|
||||||
public:
|
public:
|
||||||
UPROPERTY(meta=(Description="Animation Blueprint name or package path"))
|
UPROPERTY(meta=(Description="Animation Blueprint package path"))
|
||||||
FString Blueprint;
|
FString Blueprint;
|
||||||
|
|
||||||
UPROPERTY(meta=(Description="State machine graph name"))
|
UPROPERTY(meta=(Description="State machine graph name"))
|
||||||
@@ -41,7 +40,7 @@ public:
|
|||||||
UPROPERTY(meta=(Optional, Description="Y position of the new state node"))
|
UPROPERTY(meta=(Optional, Description="Y position of the new state node"))
|
||||||
int32 PosY = 0;
|
int32 PosY = 0;
|
||||||
|
|
||||||
UPROPERTY(meta=(Optional, Description="Animation asset name to assign to the state"))
|
UPROPERTY(meta=(Optional, Description="Animation asset package path to assign to the state"))
|
||||||
FString AnimationAsset;
|
FString AnimationAsset;
|
||||||
|
|
||||||
virtual FString GetDescription() const override
|
virtual FString GetDescription() const override
|
||||||
@@ -94,14 +93,15 @@ public:
|
|||||||
// Optionally set animation asset
|
// Optionally set animation asset
|
||||||
if (!AnimationAsset.IsEmpty() && NewState->GetBoundGraph())
|
if (!AnimationAsset.IsEmpty() && NewState->GetBoundGraph())
|
||||||
{
|
{
|
||||||
MCPAssets<UAnimSequence> AnimAssets;
|
MCPFetcher F2;
|
||||||
if (!AnimAssets.Exact(AnimationAsset).ENone().ETwo().Load()) return;
|
UAnimSequence* AnimSeq = F2.Asset(AnimationAsset).Cast<UAnimSequence>();
|
||||||
|
if (!AnimSeq) return;
|
||||||
|
|
||||||
UAnimGraphNode_SequencePlayer* SeqNode = NewObject<UAnimGraphNode_SequencePlayer>(NewState->GetBoundGraph());
|
UAnimGraphNode_SequencePlayer* SeqNode = NewObject<UAnimGraphNode_SequencePlayer>(NewState->GetBoundGraph());
|
||||||
SeqNode->CreateNewGuid();
|
SeqNode->CreateNewGuid();
|
||||||
SeqNode->PostPlacedNewNode();
|
SeqNode->PostPlacedNewNode();
|
||||||
SeqNode->AllocateDefaultPins();
|
SeqNode->AllocateDefaultPins();
|
||||||
SeqNode->SetAnimationAsset(AnimAssets.Object());
|
SeqNode->SetAnimationAsset(AnimSeq);
|
||||||
SeqNode->NodePosX = 0;
|
SeqNode->NodePosX = 0;
|
||||||
SeqNode->NodePosY = 0;
|
SeqNode->NodePosY = 0;
|
||||||
NewState->GetBoundGraph()->AddNode(SeqNode, false, false);
|
NewState->GetBoundGraph()->AddNode(SeqNode, false, false);
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
#include "CoreMinimal.h"
|
#include "CoreMinimal.h"
|
||||||
#include "MCPServer.h"
|
#include "MCPServer.h"
|
||||||
#include "MCPHandler.h"
|
#include "MCPHandler.h"
|
||||||
#include "MCPAssets.h"
|
#include "MCPFetcher.h"
|
||||||
#include "MCPUtils.h"
|
#include "MCPUtils.h"
|
||||||
#include "Kismet2/KismetEditorUtilities.h"
|
#include "Kismet2/KismetEditorUtilities.h"
|
||||||
#include "Animation/AnimBlueprint.h"
|
#include "Animation/AnimBlueprint.h"
|
||||||
@@ -23,7 +23,7 @@ class UMCP_StateMachine_AddTransition : public UObject, public IMCPHandler
|
|||||||
GENERATED_BODY()
|
GENERATED_BODY()
|
||||||
|
|
||||||
public:
|
public:
|
||||||
UPROPERTY(meta=(Description="Animation Blueprint name or package path"))
|
UPROPERTY(meta=(Description="Animation Blueprint package path"))
|
||||||
FString Blueprint;
|
FString Blueprint;
|
||||||
|
|
||||||
UPROPERTY(meta=(Description="State machine graph name"))
|
UPROPERTY(meta=(Description="State machine graph name"))
|
||||||
@@ -51,9 +51,9 @@ public:
|
|||||||
|
|
||||||
virtual void Handle() override
|
virtual void Handle() override
|
||||||
{
|
{
|
||||||
MCPAssets<UAnimBlueprint> Assets;
|
MCPFetcher F;
|
||||||
if (!Assets.Exact(Blueprint).ENone().ETwo().Load()) return;
|
UAnimBlueprint* AnimBP = F.Asset(Blueprint).Cast<UAnimBlueprint>();
|
||||||
UAnimBlueprint* AnimBP = Assets.Object();
|
if (!AnimBP) return;
|
||||||
|
|
||||||
UAnimationStateMachineGraph* SMGraph = MCPUtils::FindStateMachineGraph(AnimBP, Graph);
|
UAnimationStateMachineGraph* SMGraph = MCPUtils::FindStateMachineGraph(AnimBP, Graph);
|
||||||
if (!SMGraph)
|
if (!SMGraph)
|
||||||
|
|||||||
@@ -3,7 +3,6 @@
|
|||||||
#include "CoreMinimal.h"
|
#include "CoreMinimal.h"
|
||||||
#include "MCPServer.h"
|
#include "MCPServer.h"
|
||||||
#include "MCPHandler.h"
|
#include "MCPHandler.h"
|
||||||
#include "MCPAssets.h"
|
|
||||||
#include "MCPFetcher.h"
|
#include "MCPFetcher.h"
|
||||||
#include "MCPUtils.h"
|
#include "MCPUtils.h"
|
||||||
#include "EdGraph/EdGraph.h"
|
#include "EdGraph/EdGraph.h"
|
||||||
@@ -27,7 +26,7 @@ class UMCP_StateMachine_SetAnimation : public UObject, public IMCPHandler
|
|||||||
GENERATED_BODY()
|
GENERATED_BODY()
|
||||||
|
|
||||||
public:
|
public:
|
||||||
UPROPERTY(meta=(Description="Animation Blueprint name or package path"))
|
UPROPERTY(meta=(Description="Animation Blueprint package path"))
|
||||||
FString Blueprint;
|
FString Blueprint;
|
||||||
|
|
||||||
UPROPERTY(meta=(Description="State machine graph name"))
|
UPROPERTY(meta=(Description="State machine graph name"))
|
||||||
@@ -36,7 +35,7 @@ public:
|
|||||||
UPROPERTY(meta=(Description="Name of the state to modify"))
|
UPROPERTY(meta=(Description="Name of the state to modify"))
|
||||||
FString StateName;
|
FString StateName;
|
||||||
|
|
||||||
UPROPERTY(meta=(Description="Animation asset name to assign"))
|
UPROPERTY(meta=(Description="Animation asset package path to assign"))
|
||||||
FString AnimationAsset;
|
FString AnimationAsset;
|
||||||
|
|
||||||
virtual FString GetDescription() const override
|
virtual FString GetDescription() const override
|
||||||
@@ -71,9 +70,9 @@ public:
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Find the animation asset
|
// Find the animation asset
|
||||||
MCPAssets<UAnimSequence> AnimAssets;
|
MCPFetcher F2;
|
||||||
if (!AnimAssets.Exact(AnimationAsset).ENone().ETwo().Load()) return;
|
UAnimSequence* AnimSeq = F2.Asset(AnimationAsset).Cast<UAnimSequence>();
|
||||||
UAnimSequence* AnimSeq = AnimAssets.Object();
|
if (!AnimSeq) return;
|
||||||
|
|
||||||
// Find existing SequencePlayer or create one
|
// Find existing SequencePlayer or create one
|
||||||
UAnimGraphNode_SequencePlayer* SeqNode = nullptr;
|
UAnimGraphNode_SequencePlayer* SeqNode = nullptr;
|
||||||
|
|||||||
@@ -3,7 +3,6 @@
|
|||||||
#include "CoreMinimal.h"
|
#include "CoreMinimal.h"
|
||||||
#include "MCPServer.h"
|
#include "MCPServer.h"
|
||||||
#include "MCPHandler.h"
|
#include "MCPHandler.h"
|
||||||
#include "MCPAssets.h"
|
|
||||||
#include "MCPFetcher.h"
|
#include "MCPFetcher.h"
|
||||||
#include "MCPUtils.h"
|
#include "MCPUtils.h"
|
||||||
#include "EdGraph/EdGraph.h"
|
#include "EdGraph/EdGraph.h"
|
||||||
@@ -30,7 +29,7 @@ class UMCP_StateMachine_SetBlendSpace : public UObject, public IMCPHandler
|
|||||||
GENERATED_BODY()
|
GENERATED_BODY()
|
||||||
|
|
||||||
public:
|
public:
|
||||||
UPROPERTY(meta=(Description="Animation Blueprint name or package path"))
|
UPROPERTY(meta=(Description="Animation Blueprint package path"))
|
||||||
FString Blueprint;
|
FString Blueprint;
|
||||||
|
|
||||||
UPROPERTY(meta=(Description="State machine graph name"))
|
UPROPERTY(meta=(Description="State machine graph name"))
|
||||||
@@ -39,7 +38,7 @@ public:
|
|||||||
UPROPERTY(meta=(Description="Name of the state to modify"))
|
UPROPERTY(meta=(Description="Name of the state to modify"))
|
||||||
FString StateName;
|
FString StateName;
|
||||||
|
|
||||||
UPROPERTY(meta=(Description="Blend Space asset name or path"))
|
UPROPERTY(meta=(Description="Blend Space asset package path"))
|
||||||
FString BlendSpace;
|
FString BlendSpace;
|
||||||
|
|
||||||
UPROPERTY(meta=(Optional, Description="Blueprint variable name to wire to the X axis input"))
|
UPROPERTY(meta=(Optional, Description="Blueprint variable name to wire to the X axis input"))
|
||||||
@@ -57,9 +56,9 @@ public:
|
|||||||
virtual void Handle() override
|
virtual void Handle() override
|
||||||
{
|
{
|
||||||
// Load the anim blueprint
|
// Load the anim blueprint
|
||||||
MCPAssets<UAnimBlueprint> Assets;
|
MCPFetcher F;
|
||||||
if (!Assets.Exact(Blueprint).ENone().ETwo().Load()) return;
|
UAnimBlueprint* AnimBP = F.Asset(Blueprint).Cast<UAnimBlueprint>();
|
||||||
UAnimBlueprint* AnimBP = Assets.Object();
|
if (!AnimBP) return;
|
||||||
|
|
||||||
// Find the state machine graph and state
|
// Find the state machine graph and state
|
||||||
UAnimationStateMachineGraph* SMGraph = MCPUtils::FindStateMachineGraph(AnimBP, Graph);
|
UAnimationStateMachineGraph* SMGraph = MCPUtils::FindStateMachineGraph(AnimBP, Graph);
|
||||||
@@ -72,9 +71,9 @@ public:
|
|||||||
if (!InnerGraph) { UMCPServer::Printf(TEXT("ERROR: State '%s' has no bound graph\n"), *StateName); return; }
|
if (!InnerGraph) { UMCPServer::Printf(TEXT("ERROR: State '%s' has no bound graph\n"), *StateName); return; }
|
||||||
|
|
||||||
// Load the blend space asset
|
// Load the blend space asset
|
||||||
MCPAssets<UBlendSpace> BlendSpaceAssets;
|
MCPFetcher F2;
|
||||||
if (!BlendSpaceAssets.Exact(BlendSpace).ENone().ETwo().Load()) return;
|
UBlendSpace* BlendSpaceAsset = F2.Asset(BlendSpace).Cast<UBlendSpace>();
|
||||||
UBlendSpace* BlendSpaceAsset = BlendSpaceAssets.Object();
|
if (!BlendSpaceAsset) return;
|
||||||
|
|
||||||
// Find existing BlendSpacePlayer or create one
|
// Find existing BlendSpacePlayer or create one
|
||||||
UAnimGraphNode_BlendSpacePlayer* BSNode = nullptr;
|
UAnimGraphNode_BlendSpacePlayer* BSNode = nullptr;
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
#include "CoreMinimal.h"
|
#include "CoreMinimal.h"
|
||||||
#include "MCPServer.h"
|
#include "MCPServer.h"
|
||||||
#include "MCPHandler.h"
|
#include "MCPHandler.h"
|
||||||
#include "MCPAssets.h"
|
#include "MCPFetcher.h"
|
||||||
#include "MCPUtils.h"
|
#include "MCPUtils.h"
|
||||||
#include "Kismet2/KismetEditorUtilities.h"
|
#include "Kismet2/KismetEditorUtilities.h"
|
||||||
#include "Animation/AnimBlueprint.h"
|
#include "Animation/AnimBlueprint.h"
|
||||||
@@ -22,7 +22,7 @@ class UMCP_StateMachine_SetTransitionRule : public UObject, public IMCPHandler
|
|||||||
GENERATED_BODY()
|
GENERATED_BODY()
|
||||||
|
|
||||||
public:
|
public:
|
||||||
UPROPERTY(meta=(Description="Animation Blueprint name or package path"))
|
UPROPERTY(meta=(Description="Animation Blueprint package path"))
|
||||||
FString Blueprint;
|
FString Blueprint;
|
||||||
|
|
||||||
UPROPERTY(meta=(Description="State machine graph name"))
|
UPROPERTY(meta=(Description="State machine graph name"))
|
||||||
@@ -56,9 +56,9 @@ public:
|
|||||||
|
|
||||||
virtual void Handle() override
|
virtual void Handle() override
|
||||||
{
|
{
|
||||||
MCPAssets<UAnimBlueprint> Assets;
|
MCPFetcher F;
|
||||||
if (!Assets.Exact(Blueprint).ENone().ETwo().Load()) return;
|
UAnimBlueprint* AnimBP = F.Asset(Blueprint).Cast<UAnimBlueprint>();
|
||||||
UAnimBlueprint* AnimBP = Assets.Object();
|
if (!AnimBP) return;
|
||||||
|
|
||||||
UAnimationStateMachineGraph* SMGraph = MCPUtils::FindStateMachineGraph(AnimBP, Graph);
|
UAnimationStateMachineGraph* SMGraph = MCPUtils::FindStateMachineGraph(AnimBP, Graph);
|
||||||
if (!SMGraph)
|
if (!SMGraph)
|
||||||
|
|||||||
@@ -50,6 +50,9 @@ void MCPNotifier::SendNotifications()
|
|||||||
for (UBlueprint *Blueprint : Blueprints)
|
for (UBlueprint *Blueprint : Blueprints)
|
||||||
FBlueprintEditorUtils::MarkBlueprintAsStructurallyModified(Blueprint);
|
FBlueprintEditorUtils::MarkBlueprintAsStructurallyModified(Blueprint);
|
||||||
|
|
||||||
|
// FBlueprintEditorUtils::RefreshAllNodes(BP);
|
||||||
|
// FKismetEditorUtilities::CompileBlueprint(BP);
|
||||||
|
|
||||||
if (GEditor)
|
if (GEditor)
|
||||||
GEditor->RedrawAllViewports();
|
GEditor->RedrawAllViewports();
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user