From 8eeac9bd0747efa91b3dd654667d76dc09e61893 Mon Sep 17 00:00:00 2001 From: jyelon Date: Sat, 14 Mar 2026 00:16:26 -0400 Subject: [PATCH] Removing unnecessary uses of MCPAssets --- .../AnimBlueprint_SetBlendSpaceSamples.h | 7 ++-- .../BlueprintMCP/Handlers/Asset_Delete.h | 1 - .../BlueprintMCP/Handlers/Asset_Rename.h | 8 ++--- .../Handlers/Blueprint_AddInterface.h | 21 +++++------- .../Handlers/Blueprint_ChangeVariableType.h | 1 - .../BlueprintMCP/Handlers/Blueprint_Create.h | 16 ++++----- .../Handlers/Blueprint_Reparent.h | 19 +++++------ .../BlueprintMCP/Handlers/Enum_Create.h | 1 - .../Handlers/MaterialFunction_Create.h | 1 - .../Handlers/MaterialInstance_Create.h | 33 ++++--------------- .../BlueprintMCP/Handlers/Material_Create.h | 1 - .../BlueprintMCP/Handlers/Struct_Create.h | 1 - 12 files changed, 39 insertions(+), 71 deletions(-) diff --git a/Plugins/BlueprintMCP/Source/BlueprintMCP/Handlers/AnimBlueprint_SetBlendSpaceSamples.h b/Plugins/BlueprintMCP/Source/BlueprintMCP/Handlers/AnimBlueprint_SetBlendSpaceSamples.h index d91ecd11..9909caed 100644 --- a/Plugins/BlueprintMCP/Source/BlueprintMCP/Handlers/AnimBlueprint_SetBlendSpaceSamples.h +++ b/Plugins/BlueprintMCP/Source/BlueprintMCP/Handlers/AnimBlueprint_SetBlendSpaceSamples.h @@ -3,7 +3,6 @@ #include "CoreMinimal.h" #include "MCPServer.h" #include "MCPHandler.h" -#include "MCPAssets.h" #include "MCPFetcher.h" #include "MCPUtils.h" #include "Animation/AnimSequence.h" @@ -107,9 +106,9 @@ public: UAnimSequence* AnimSeq = nullptr; if (!Entry.AnimationAsset.IsEmpty()) { - MCPAssets AnimAssets; - if (!AnimAssets.Exact(Entry.AnimationAsset).ENone().Load()) return; - AnimSeq = AnimAssets.Object(); + MCPFetcher F2; + AnimSeq = F2.Asset(Entry.AnimationAsset).Cast(); + if (!AnimSeq) return; } FVector SampleValue(Entry.X, Entry.Y, 0.0f); diff --git a/Plugins/BlueprintMCP/Source/BlueprintMCP/Handlers/Asset_Delete.h b/Plugins/BlueprintMCP/Source/BlueprintMCP/Handlers/Asset_Delete.h index 656c6f1c..cf20bab2 100644 --- a/Plugins/BlueprintMCP/Source/BlueprintMCP/Handlers/Asset_Delete.h +++ b/Plugins/BlueprintMCP/Source/BlueprintMCP/Handlers/Asset_Delete.h @@ -3,7 +3,6 @@ #include "CoreMinimal.h" #include "MCPServer.h" #include "MCPHandler.h" -#include "MCPAssets.h" #include "MCPUtils.h" #include "Misc/PackageName.h" #include "AssetRegistry/AssetRegistryModule.h" diff --git a/Plugins/BlueprintMCP/Source/BlueprintMCP/Handlers/Asset_Rename.h b/Plugins/BlueprintMCP/Source/BlueprintMCP/Handlers/Asset_Rename.h index 97a00c14..c7d0ba65 100644 --- a/Plugins/BlueprintMCP/Source/BlueprintMCP/Handlers/Asset_Rename.h +++ b/Plugins/BlueprintMCP/Source/BlueprintMCP/Handlers/Asset_Rename.h @@ -3,7 +3,7 @@ #include "CoreMinimal.h" #include "MCPServer.h" #include "MCPHandler.h" -#include "MCPAssets.h" +#include "MCPFetcher.h" #include "MCPUtils.h" #include "AssetToolsModule.h" #include "IAssetTools.h" @@ -34,9 +34,9 @@ public: virtual void Handle() override { // Load the asset - MCPAssets Assets; - if (!Assets.Exact(AssetPath).AllContent().ENone().ETwo().Load()) return; - UObject* AssetObj = Assets.Object(); + MCPFetcher F; + UObject* AssetObj = F.Asset(AssetPath).GetObj(); + if (!AssetObj) return; // Parse new path into package path and asset name FString NewPackagePath = FPackageName::GetLongPackagePath(NewPath); diff --git a/Plugins/BlueprintMCP/Source/BlueprintMCP/Handlers/Blueprint_AddInterface.h b/Plugins/BlueprintMCP/Source/BlueprintMCP/Handlers/Blueprint_AddInterface.h index a8130255..f50dc4dc 100644 --- a/Plugins/BlueprintMCP/Source/BlueprintMCP/Handlers/Blueprint_AddInterface.h +++ b/Plugins/BlueprintMCP/Source/BlueprintMCP/Handlers/Blueprint_AddInterface.h @@ -2,7 +2,6 @@ #include "CoreMinimal.h" #include "MCPHandler.h" -#include "MCPAssets.h" #include "MCPFetcher.h" #include "MCPUtils.h" #include "MCPServer.h" @@ -25,7 +24,7 @@ public: UPROPERTY(meta=(Description="Blueprint package path")) FString Blueprint; - UPROPERTY(meta=(Description="Interface name (e.g. 'BPI_MyInterface') or native UInterface class name")) + UPROPERTY(meta=(Description="Native UInterface class name or Blueprint Interface package path")) FString InterfaceName; virtual FString GetDescription() const override @@ -82,7 +81,7 @@ public: private: // Resolve an interface name to a UClass. Tries loaded UInterface classes // first (for native interfaces), then falls back to loading a Blueprint - // Interface asset. + // Interface asset by package path. static UClass* FindInterfaceClass(const FString& Name) { // Strategy 1: Search loaded UInterface classes by name @@ -93,17 +92,13 @@ private: return *It; } - // Strategy 2: Try loading as a Blueprint Interface asset - MCPAssets IfaceAssets; - if (!IfaceAssets.Exact(Name).AllContent().ETwo().Load()) return nullptr; - if (!IfaceAssets.Objects().IsEmpty()) - { - UClass* GenClass = IfaceAssets.Object()->GeneratedClass; - if (GenClass && GenClass->IsChildOf(UInterface::StaticClass())) - return GenClass; - } + // Strategy 2: Try loading as a Blueprint Interface asset by package path + MCPFetcher F; + UBlueprint* IfaceBP = F.Asset(Name).Cast(); + if (IfaceBP && IfaceBP->GeneratedClass && IfaceBP->GeneratedClass->IsChildOf(UInterface::StaticClass())) + return IfaceBP->GeneratedClass; - UMCPServer::Printf(TEXT("ERROR: Interface '%s' not found. Provide a Blueprint Interface asset name (e.g. 'BPI_MyInterface') or a native UInterface class name.\n"), + UMCPServer::Printf(TEXT("ERROR: Interface '%s' not found. Provide a native UInterface class name or Blueprint Interface package path.\n"), *Name); return nullptr; } diff --git a/Plugins/BlueprintMCP/Source/BlueprintMCP/Handlers/Blueprint_ChangeVariableType.h b/Plugins/BlueprintMCP/Source/BlueprintMCP/Handlers/Blueprint_ChangeVariableType.h index 94d1a9a2..47e6c9ae 100644 --- a/Plugins/BlueprintMCP/Source/BlueprintMCP/Handlers/Blueprint_ChangeVariableType.h +++ b/Plugins/BlueprintMCP/Source/BlueprintMCP/Handlers/Blueprint_ChangeVariableType.h @@ -4,7 +4,6 @@ #include "MCPServer.h" #include "MCPHandler.h" #include "MCPFetcher.h" -#include "MCPAssets.h" #include "MCPUtils.h" #include "Engine/Blueprint.h" #include "EdGraph/EdGraphPin.h" diff --git a/Plugins/BlueprintMCP/Source/BlueprintMCP/Handlers/Blueprint_Create.h b/Plugins/BlueprintMCP/Source/BlueprintMCP/Handlers/Blueprint_Create.h index 10106d0c..c4ec163d 100644 --- a/Plugins/BlueprintMCP/Source/BlueprintMCP/Handlers/Blueprint_Create.h +++ b/Plugins/BlueprintMCP/Source/BlueprintMCP/Handlers/Blueprint_Create.h @@ -3,7 +3,7 @@ #include "CoreMinimal.h" #include "MCPServer.h" #include "MCPHandler.h" -#include "MCPAssets.h" +#include "MCPFetcher.h" #include "MCPUtils.h" #include "MCPPackageMaker.h" #include "Engine/Blueprint.h" @@ -24,7 +24,7 @@ public: UPROPERTY(meta=(Description="Full asset path for the new Blueprint (e.g. '/Game/Blueprints/BP_MyActor')")) FString AssetPath; - UPROPERTY(meta=(Description="Parent class name (C++ class name or Blueprint name)")) + UPROPERTY(meta=(Description="Parent class: C++ class name or Blueprint package path")) FString ParentClass; UPROPERTY(meta=(Optional, Description="Blueprint type: Normal, Interface, FunctionLibrary, or MacroLibrary (default: Normal)")) @@ -40,20 +40,20 @@ public: MCPPackageMaker Maker(AssetPath); if (!Maker.Ok()) return; - // Resolve parent class — try C++ class first, then Blueprint asset + // Resolve parent class — try C++ class first, then Blueprint package path UClass* ParentClassObj = MCPUtils::FindClassByName(ParentClass); if (!ParentClassObj) { - MCPAssets ParentAssets; - if (!ParentAssets.Exact(ParentClass).AllContent().ETwo().Load()) return; - if (!ParentAssets.Objects().IsEmpty() && ParentAssets.Object()->GeneratedClass) - ParentClassObj = ParentAssets.Object()->GeneratedClass; + MCPFetcher F; + UBlueprint* ParentBP = F.Asset(ParentClass).Cast(); + if (ParentBP && ParentBP->GeneratedClass) + ParentClassObj = ParentBP->GeneratedClass; } if (!ParentClassObj) { - UMCPServer::Printf(TEXT("ERROR: Could not find parent class '%s'. Provide a C++ class name (e.g. 'Actor', 'Pawn') or Blueprint name.\n"), + UMCPServer::Printf(TEXT("ERROR: Could not find parent class '%s'. Provide a C++ class name (e.g. 'Actor', 'Pawn') or Blueprint package path.\n"), *ParentClass); return; } diff --git a/Plugins/BlueprintMCP/Source/BlueprintMCP/Handlers/Blueprint_Reparent.h b/Plugins/BlueprintMCP/Source/BlueprintMCP/Handlers/Blueprint_Reparent.h index 071c352e..6da98bb8 100644 --- a/Plugins/BlueprintMCP/Source/BlueprintMCP/Handlers/Blueprint_Reparent.h +++ b/Plugins/BlueprintMCP/Source/BlueprintMCP/Handlers/Blueprint_Reparent.h @@ -3,7 +3,6 @@ #include "CoreMinimal.h" #include "MCPHandler.h" #include "MCPFetcher.h" -#include "MCPAssets.h" #include "MCPUtils.h" #include "MCPServer.h" #include "Engine/Blueprint.h" @@ -22,15 +21,15 @@ class UMCP_Blueprint_Reparent : public UObject, public IMCPHandler GENERATED_BODY() public: - UPROPERTY(meta=(Description="Blueprint name or package path")) + UPROPERTY(meta=(Description="Blueprint package path")) FString Blueprint; - UPROPERTY(meta=(Description="Name of the new parent class (C++ class name or Blueprint name)")) + UPROPERTY(meta=(Description="New parent class: C++ class name or Blueprint package path")) FString NewParentClass; virtual FString GetDescription() const override { - return TEXT("Change a Blueprint's parent class. Accepts C++ class names or Blueprint names."); + return TEXT("Change a Blueprint's parent class. Accepts C++ class names or Blueprint package paths."); } virtual void Handle() override @@ -42,20 +41,20 @@ public: FString OldParentName = BP->ParentClass ? MCPUtils::FormatName(BP->ParentClass) : TEXT("None"); - // Find the new parent class: try C++ classes first, then Blueprint assets + // Find the new parent class: try C++ classes first, then Blueprint package path UClass* NewParentClassObj = MCPUtils::FindClassByName(NewParentClass); if (!NewParentClassObj) { - MCPAssets ParentAssets; - if (!ParentAssets.Exact(NewParentClass).AllContent().ETwo().Load()) return; - if (!ParentAssets.Objects().IsEmpty() && ParentAssets.Object()->GeneratedClass) - NewParentClassObj = ParentAssets.Object()->GeneratedClass; + MCPFetcher F2; + UBlueprint* ParentBP = F2.Asset(NewParentClass).Cast(); + if (ParentBP && ParentBP->GeneratedClass) + NewParentClassObj = ParentBP->GeneratedClass; } if (!NewParentClassObj) { - UMCPServer::Printf(TEXT("ERROR: Could not find class '%s'. Provide a C++ class name or Blueprint name.\n"), + UMCPServer::Printf(TEXT("ERROR: Could not find class '%s'. Provide a C++ class name or Blueprint package path.\n"), *NewParentClass); return; } diff --git a/Plugins/BlueprintMCP/Source/BlueprintMCP/Handlers/Enum_Create.h b/Plugins/BlueprintMCP/Source/BlueprintMCP/Handlers/Enum_Create.h index 75425f94..f9687504 100644 --- a/Plugins/BlueprintMCP/Source/BlueprintMCP/Handlers/Enum_Create.h +++ b/Plugins/BlueprintMCP/Source/BlueprintMCP/Handlers/Enum_Create.h @@ -3,7 +3,6 @@ #include "CoreMinimal.h" #include "MCPServer.h" #include "MCPHandler.h" -#include "MCPAssets.h" #include "MCPUtils.h" #include "Engine/UserDefinedEnum.h" #include "Kismet2/EnumEditorUtils.h" diff --git a/Plugins/BlueprintMCP/Source/BlueprintMCP/Handlers/MaterialFunction_Create.h b/Plugins/BlueprintMCP/Source/BlueprintMCP/Handlers/MaterialFunction_Create.h index 1ef493ea..4073a5d8 100644 --- a/Plugins/BlueprintMCP/Source/BlueprintMCP/Handlers/MaterialFunction_Create.h +++ b/Plugins/BlueprintMCP/Source/BlueprintMCP/Handlers/MaterialFunction_Create.h @@ -3,7 +3,6 @@ #include "CoreMinimal.h" #include "MCPServer.h" #include "MCPHandler.h" -#include "MCPAssets.h" #include "MCPUtils.h" #include "Materials/MaterialFunction.h" #include "Factories/MaterialFunctionFactoryNew.h" diff --git a/Plugins/BlueprintMCP/Source/BlueprintMCP/Handlers/MaterialInstance_Create.h b/Plugins/BlueprintMCP/Source/BlueprintMCP/Handlers/MaterialInstance_Create.h index a96f71fc..dd4057d4 100644 --- a/Plugins/BlueprintMCP/Source/BlueprintMCP/Handlers/MaterialInstance_Create.h +++ b/Plugins/BlueprintMCP/Source/BlueprintMCP/Handlers/MaterialInstance_Create.h @@ -3,7 +3,7 @@ #include "CoreMinimal.h" #include "MCPServer.h" #include "MCPHandler.h" -#include "MCPAssets.h" +#include "MCPFetcher.h" #include "MCPUtils.h" #include "Materials/Material.h" #include "Materials/MaterialInterface.h" @@ -26,7 +26,7 @@ public: UPROPERTY(meta=(Description="Full asset path for the new Material Instance (e.g. '/Game/Materials/MI_GoldShiny')")) FString AssetPath; - UPROPERTY(meta=(Description="Parent material name or path (Material or Material Instance)")) + UPROPERTY(meta=(Description="Parent material package path (Material or Material Instance)")) FString ParentMaterial; virtual FString GetDescription() const override @@ -39,32 +39,13 @@ public: MCPPackageMaker Maker(AssetPath); if (!Maker.Ok()) return; - // Load parent material -- try as Material first, then as Material Instance. - UMaterialInterface* ParentMaterialObj = nullptr; - { - MCPAssets MatAssets; - if (MatAssets.Exact(ParentMaterial).ETwo().Load() && !MatAssets.Objects().IsEmpty()) - { - ParentMaterialObj = MatAssets.Object(); - } - else - { - MCPAssets MIAssets; - if (MIAssets.Exact(ParentMaterial).ETwo().Load() && !MIAssets.Objects().IsEmpty()) - { - ParentMaterialObj = MIAssets.Object(); - } - } - } - + // Load parent material by package path. + MCPFetcher F; + UObject* ParentObj = F.Asset(ParentMaterial).GetObj(); + UMaterialInterface* ParentMaterialObj = ParentObj ? Cast(ParentObj) : nullptr; if (!ParentMaterialObj) { - ParentMaterialObj = LoadObject(nullptr, *ParentMaterial); - } - - if (!ParentMaterialObj) - { - UMCPServer::Printf(TEXT("ERROR: Parent material '%s' not found\n"), *ParentMaterial); + UMCPServer::Printf(TEXT("ERROR: Parent material '%s' not found or not a material\n"), *ParentMaterial); return; } diff --git a/Plugins/BlueprintMCP/Source/BlueprintMCP/Handlers/Material_Create.h b/Plugins/BlueprintMCP/Source/BlueprintMCP/Handlers/Material_Create.h index 09fe3b68..39c9bd93 100644 --- a/Plugins/BlueprintMCP/Source/BlueprintMCP/Handlers/Material_Create.h +++ b/Plugins/BlueprintMCP/Source/BlueprintMCP/Handlers/Material_Create.h @@ -3,7 +3,6 @@ #include "CoreMinimal.h" #include "MCPServer.h" #include "MCPHandler.h" -#include "MCPAssets.h" #include "MCPUtils.h" #include "Materials/Material.h" #include "MaterialDomain.h" diff --git a/Plugins/BlueprintMCP/Source/BlueprintMCP/Handlers/Struct_Create.h b/Plugins/BlueprintMCP/Source/BlueprintMCP/Handlers/Struct_Create.h index 1479d6a5..c208aba5 100644 --- a/Plugins/BlueprintMCP/Source/BlueprintMCP/Handlers/Struct_Create.h +++ b/Plugins/BlueprintMCP/Source/BlueprintMCP/Handlers/Struct_Create.h @@ -3,7 +3,6 @@ #include "CoreMinimal.h" #include "MCPServer.h" #include "MCPHandler.h" -#include "MCPAssets.h" #include "MCPUtils.h" #include "StructUtils/UserDefinedStruct.h" #include "Kismet2/BlueprintEditorUtils.h"