diff --git a/Plugins/BlueprintMCP/Source/BlueprintMCP/Private/MCPUtils.cpp b/Plugins/BlueprintMCP/Source/BlueprintMCP/Private/MCPUtils.cpp index 4f51072f..9b62f9a0 100644 --- a/Plugins/BlueprintMCP/Source/BlueprintMCP/Private/MCPUtils.cpp +++ b/Plugins/BlueprintMCP/Source/BlueprintMCP/Private/MCPUtils.cpp @@ -672,72 +672,9 @@ TSharedRef MCPUtils::SerializeBlueprint(UBlueprint* BP) } J->SetArrayField(TEXT("interfaces"), Ifaces); - // Graphs - TArray> GraphArr; - TArray AllGraphs; - BP->GetAllGraphs(AllGraphs); - for (UEdGraph* Graph : AllGraphs) - { - if (!Graph) continue; - TSharedPtr GJ = SerializeGraph(Graph); - if (GJ.IsValid()) - GraphArr.Add(MakeShared(GJ.ToSharedRef())); - } - J->SetArrayField(TEXT("graphs"), GraphArr); return J; } -TSharedPtr MCPUtils::SerializeGraph(UEdGraph* Graph) -{ - TSharedRef GJ = MakeShared(); - GJ->SetStringField(TEXT("name"), Graph->GetName()); - GJ->SetStringField(TEXT("schema"), Graph->Schema ? Graph->Schema->GetClass()->GetName() : TEXT("Unknown")); - - // Detect animation graph subtypes - if (Cast(Graph)) - { - GJ->SetStringField(TEXT("graphType"), TEXT("StateMachine")); - // Find entry state by following entry node's output pin - for (UEdGraphNode* Node : Graph->Nodes) - { - if (UAnimStateEntryNode* EntryNode = Cast(Node)) - { - for (UEdGraphPin* Pin : EntryNode->Pins) - { - if (Pin->Direction == EGPD_Output && Pin->LinkedTo.Num() > 0) - { - UEdGraphNode* LinkedNode = Pin->LinkedTo[0]->GetOwningNode(); - if (UAnimStateNode* StateNode = Cast(LinkedNode)) - { - GJ->SetStringField(TEXT("entryState"), StateNode->GetStateName()); - } - } - } - break; - } - } - } - else if (Cast(Graph)) - { - GJ->SetStringField(TEXT("graphType"), TEXT("AnimGraph")); - } - else if (Cast(Graph)) - { - GJ->SetStringField(TEXT("graphType"), TEXT("TransitionRule")); - } - - TArray> Nodes; - for (UEdGraphNode* Node : Graph->Nodes) - { - if (!Node) continue; - TSharedPtr NJ = SerializeNode(Node); - if (NJ.IsValid()) - Nodes.Add(MakeShared(NJ.ToSharedRef())); - } - GJ->SetArrayField(TEXT("nodes"), Nodes); - return GJ; -} - TSharedPtr MCPUtils::SerializeNode(UEdGraphNode* Node) { TSharedRef NJ = MakeShared(); diff --git a/Plugins/BlueprintMCP/Source/BlueprintMCP/Public/MCPUtils.h b/Plugins/BlueprintMCP/Source/BlueprintMCP/Public/MCPUtils.h index d4e1fc0c..62aed7ed 100644 --- a/Plugins/BlueprintMCP/Source/BlueprintMCP/Public/MCPUtils.h +++ b/Plugins/BlueprintMCP/Source/BlueprintMCP/Public/MCPUtils.h @@ -252,7 +252,6 @@ public: // ----- Serialization ----- static TSharedRef SerializeBlueprint(UBlueprint* BP); - static TSharedPtr SerializeGraph(UEdGraph* Graph); static TSharedPtr SerializeNode(UEdGraphNode* Node); static TSharedPtr SerializePin(UEdGraphPin* Pin); static TSharedPtr SerializeMaterialExpression(UMaterialExpression* Expression);