Removing unnecessary uses of MCPAssets

This commit is contained in:
2026-03-14 00:16:26 -04:00
parent f255fe81ea
commit 8eeac9bd07
12 changed files with 39 additions and 71 deletions

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 "Animation/AnimSequence.h" #include "Animation/AnimSequence.h"
@@ -107,9 +106,9 @@ public:
UAnimSequence* AnimSeq = nullptr; UAnimSequence* AnimSeq = nullptr;
if (!Entry.AnimationAsset.IsEmpty()) if (!Entry.AnimationAsset.IsEmpty())
{ {
MCPAssets<UAnimSequence> AnimAssets; MCPFetcher F2;
if (!AnimAssets.Exact(Entry.AnimationAsset).ENone().Load()) return; AnimSeq = F2.Asset(Entry.AnimationAsset).Cast<UAnimSequence>();
AnimSeq = AnimAssets.Object(); if (!AnimSeq) return;
} }
FVector SampleValue(Entry.X, Entry.Y, 0.0f); FVector SampleValue(Entry.X, Entry.Y, 0.0f);

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 "MCPUtils.h" #include "MCPUtils.h"
#include "Misc/PackageName.h" #include "Misc/PackageName.h"
#include "AssetRegistry/AssetRegistryModule.h" #include "AssetRegistry/AssetRegistryModule.h"

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 "AssetToolsModule.h" #include "AssetToolsModule.h"
#include "IAssetTools.h" #include "IAssetTools.h"
@@ -34,9 +34,9 @@ public:
virtual void Handle() override virtual void Handle() override
{ {
// Load the asset // Load the asset
MCPAssets<UObject> Assets; MCPFetcher F;
if (!Assets.Exact(AssetPath).AllContent().ENone().ETwo().Load()) return; UObject* AssetObj = F.Asset(AssetPath).GetObj();
UObject* AssetObj = Assets.Object(); if (!AssetObj) return;
// Parse new path into package path and asset name // Parse new path into package path and asset name
FString NewPackagePath = FPackageName::GetLongPackagePath(NewPath); FString NewPackagePath = FPackageName::GetLongPackagePath(NewPath);

View File

@@ -2,7 +2,6 @@
#include "CoreMinimal.h" #include "CoreMinimal.h"
#include "MCPHandler.h" #include "MCPHandler.h"
#include "MCPAssets.h"
#include "MCPFetcher.h" #include "MCPFetcher.h"
#include "MCPUtils.h" #include "MCPUtils.h"
#include "MCPServer.h" #include "MCPServer.h"
@@ -25,7 +24,7 @@ public:
UPROPERTY(meta=(Description="Blueprint 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="Native UInterface class name or Blueprint Interface package path"))
FString InterfaceName; FString InterfaceName;
virtual FString GetDescription() const override virtual FString GetDescription() const override
@@ -82,7 +81,7 @@ public:
private: private:
// Resolve an interface name to a UClass. Tries loaded UInterface classes // Resolve an interface name to a UClass. Tries loaded UInterface classes
// first (for native interfaces), then falls back to loading a Blueprint // first (for native interfaces), then falls back to loading a Blueprint
// Interface asset. // Interface asset by package path.
static UClass* FindInterfaceClass(const FString& Name) static UClass* FindInterfaceClass(const FString& Name)
{ {
// Strategy 1: Search loaded UInterface classes by name // Strategy 1: Search loaded UInterface classes by name
@@ -93,17 +92,13 @@ private:
return *It; return *It;
} }
// Strategy 2: Try loading as a Blueprint Interface asset // Strategy 2: Try loading as a Blueprint Interface asset by package path
MCPAssets<UBlueprint> IfaceAssets; MCPFetcher F;
if (!IfaceAssets.Exact(Name).AllContent().ETwo().Load()) return nullptr; UBlueprint* IfaceBP = F.Asset(Name).Cast<UBlueprint>();
if (!IfaceAssets.Objects().IsEmpty()) if (IfaceBP && IfaceBP->GeneratedClass && IfaceBP->GeneratedClass->IsChildOf(UInterface::StaticClass()))
{ return IfaceBP->GeneratedClass;
UClass* GenClass = IfaceAssets.Object()->GeneratedClass;
if (GenClass && GenClass->IsChildOf(UInterface::StaticClass()))
return GenClass;
}
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); *Name);
return nullptr; return nullptr;
} }

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 "Engine/Blueprint.h" #include "Engine/Blueprint.h"
#include "EdGraph/EdGraphPin.h" #include "EdGraph/EdGraphPin.h"

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 "Engine/Blueprint.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')")) UPROPERTY(meta=(Description="Full asset path for the new Blueprint (e.g. '/Game/Blueprints/BP_MyActor')"))
FString AssetPath; 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; FString ParentClass;
UPROPERTY(meta=(Optional, Description="Blueprint type: Normal, Interface, FunctionLibrary, or MacroLibrary (default: Normal)")) UPROPERTY(meta=(Optional, Description="Blueprint type: Normal, Interface, FunctionLibrary, or MacroLibrary (default: Normal)"))
@@ -40,20 +40,20 @@ public:
MCPPackageMaker Maker(AssetPath); MCPPackageMaker Maker(AssetPath);
if (!Maker.Ok()) return; 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); UClass* ParentClassObj = MCPUtils::FindClassByName(ParentClass);
if (!ParentClassObj) if (!ParentClassObj)
{ {
MCPAssets<UBlueprint> ParentAssets; MCPFetcher F;
if (!ParentAssets.Exact(ParentClass).AllContent().ETwo().Load()) return; UBlueprint* ParentBP = F.Asset(ParentClass).Cast<UBlueprint>();
if (!ParentAssets.Objects().IsEmpty() && ParentAssets.Object()->GeneratedClass) if (ParentBP && ParentBP->GeneratedClass)
ParentClassObj = ParentAssets.Object()->GeneratedClass; ParentClassObj = ParentBP->GeneratedClass;
} }
if (!ParentClassObj) 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); *ParentClass);
return; return;
} }

View File

@@ -3,7 +3,6 @@
#include "CoreMinimal.h" #include "CoreMinimal.h"
#include "MCPHandler.h" #include "MCPHandler.h"
#include "MCPFetcher.h" #include "MCPFetcher.h"
#include "MCPAssets.h"
#include "MCPUtils.h" #include "MCPUtils.h"
#include "MCPServer.h" #include "MCPServer.h"
#include "Engine/Blueprint.h" #include "Engine/Blueprint.h"
@@ -22,15 +21,15 @@ class UMCP_Blueprint_Reparent : 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 new parent class (C++ class name or Blueprint name)")) UPROPERTY(meta=(Description="New parent class: C++ class name or Blueprint package path"))
FString NewParentClass; FString NewParentClass;
virtual FString GetDescription() const override 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 virtual void Handle() override
@@ -42,20 +41,20 @@ public:
FString OldParentName = BP->ParentClass ? MCPUtils::FormatName(BP->ParentClass) : TEXT("None"); 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); UClass* NewParentClassObj = MCPUtils::FindClassByName(NewParentClass);
if (!NewParentClassObj) if (!NewParentClassObj)
{ {
MCPAssets<UBlueprint> ParentAssets; MCPFetcher F2;
if (!ParentAssets.Exact(NewParentClass).AllContent().ETwo().Load()) return; UBlueprint* ParentBP = F2.Asset(NewParentClass).Cast<UBlueprint>();
if (!ParentAssets.Objects().IsEmpty() && ParentAssets.Object()->GeneratedClass) if (ParentBP && ParentBP->GeneratedClass)
NewParentClassObj = ParentAssets.Object()->GeneratedClass; NewParentClassObj = ParentBP->GeneratedClass;
} }
if (!NewParentClassObj) 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); *NewParentClass);
return; return;
} }

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 "MCPUtils.h" #include "MCPUtils.h"
#include "Engine/UserDefinedEnum.h" #include "Engine/UserDefinedEnum.h"
#include "Kismet2/EnumEditorUtils.h" #include "Kismet2/EnumEditorUtils.h"

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 "MCPUtils.h" #include "MCPUtils.h"
#include "Materials/MaterialFunction.h" #include "Materials/MaterialFunction.h"
#include "Factories/MaterialFunctionFactoryNew.h" #include "Factories/MaterialFunctionFactoryNew.h"

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 "Materials/Material.h" #include "Materials/Material.h"
#include "Materials/MaterialInterface.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')")) UPROPERTY(meta=(Description="Full asset path for the new Material Instance (e.g. '/Game/Materials/MI_GoldShiny')"))
FString AssetPath; 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; FString ParentMaterial;
virtual FString GetDescription() const override virtual FString GetDescription() const override
@@ -39,32 +39,13 @@ public:
MCPPackageMaker Maker(AssetPath); MCPPackageMaker Maker(AssetPath);
if (!Maker.Ok()) return; if (!Maker.Ok()) return;
// Load parent material -- try as Material first, then as Material Instance. // Load parent material by package path.
UMaterialInterface* ParentMaterialObj = nullptr; MCPFetcher F;
{ UObject* ParentObj = F.Asset(ParentMaterial).GetObj();
MCPAssets<UMaterial> MatAssets; UMaterialInterface* ParentMaterialObj = ParentObj ? Cast<UMaterialInterface>(ParentObj) : nullptr;
if (MatAssets.Exact(ParentMaterial).ETwo().Load() && !MatAssets.Objects().IsEmpty())
{
ParentMaterialObj = MatAssets.Object();
}
else
{
MCPAssets<UMaterialInstanceConstant> MIAssets;
if (MIAssets.Exact(ParentMaterial).ETwo().Load() && !MIAssets.Objects().IsEmpty())
{
ParentMaterialObj = MIAssets.Object();
}
}
}
if (!ParentMaterialObj) if (!ParentMaterialObj)
{ {
ParentMaterialObj = LoadObject<UMaterialInterface>(nullptr, *ParentMaterial); UMCPServer::Printf(TEXT("ERROR: Parent material '%s' not found or not a material\n"), *ParentMaterial);
}
if (!ParentMaterialObj)
{
UMCPServer::Printf(TEXT("ERROR: Parent material '%s' not found\n"), *ParentMaterial);
return; return;
} }

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 "MCPUtils.h" #include "MCPUtils.h"
#include "Materials/Material.h" #include "Materials/Material.h"
#include "MaterialDomain.h" #include "MaterialDomain.h"

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 "MCPUtils.h" #include "MCPUtils.h"
#include "StructUtils/UserDefinedStruct.h" #include "StructUtils/UserDefinedStruct.h"
#include "Kismet2/BlueprintEditorUtils.h" #include "Kismet2/BlueprintEditorUtils.h"