Refactor MCPHandler to be a UINTERFACE
This commit is contained in:
@@ -862,8 +862,9 @@ bool FBlueprintMCPServer::ProcessOneRequest()
|
||||
GEditor->BeginTransaction(FText::FromString(FString::Printf(TEXT("BlueprintMCP: %s"), *Req->Endpoint)));
|
||||
}
|
||||
|
||||
TStrongObjectPtr<UMCPHandler> Handler(NewObject<UMCPHandler>(GetTransientPackage(), *HandlerClass));
|
||||
FString PopulateError = PopulateFromJson(Handler->GetClass(), Handler.Get(), Params.Get());
|
||||
TStrongObjectPtr<UObject> HandlerObj(NewObject<UObject>(GetTransientPackage(), *HandlerClass));
|
||||
IMCPHandler* Handler = Cast<IMCPHandler>(HandlerObj.Get());
|
||||
FString PopulateError = PopulateFromJson(HandlerObj->GetClass(), HandlerObj.Get(), Params.Get());
|
||||
if (PopulateError.IsEmpty())
|
||||
{
|
||||
Handler->Handle(Params.Get(), &*Result);
|
||||
@@ -1057,11 +1058,13 @@ void FBlueprintMCPServer::RegisterHandlers()
|
||||
|
||||
void FBlueprintMCPServer::BuildMCPHandlerRegistry()
|
||||
{
|
||||
TArray<UClass*> HandlerClasses;
|
||||
GetDerivedClasses(UMCPHandler::StaticClass(), HandlerClasses);
|
||||
|
||||
for (UClass* Class : HandlerClasses)
|
||||
for (TObjectIterator<UClass> It; It; ++It)
|
||||
{
|
||||
UClass* Class = *It;
|
||||
if (!Class->ImplementsInterface(UMCPHandler::StaticClass()))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
if (Class->HasAnyClassFlags(CLASS_Abstract))
|
||||
{
|
||||
continue;
|
||||
|
||||
Reference in New Issue
Block a user