Convert handlers to MCPFetcher

This commit is contained in:
2026-03-14 00:02:00 -04:00
parent 2ffc493e91
commit f255fe81ea
20 changed files with 100 additions and 99 deletions

View File

@@ -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();

View File

@@ -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;

View File

@@ -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);

View File

@@ -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;

View File

@@ -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)

View File

@@ -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;

View File

@@ -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);

View File

@@ -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);

View File

@@ -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;

View File

@@ -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*>

View File

@@ -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();

View File

@@ -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;

View File

@@ -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;

View File

@@ -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");

View File

@@ -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);

View File

@@ -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)

View File

@@ -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;

View File

@@ -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;

View File

@@ -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)

View File

@@ -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();