Renaming to UE Wingman begins

This commit is contained in:
2026-03-18 10:17:58 -04:00
parent 42fb0a8453
commit d910f9f14a
111 changed files with 1519 additions and 1871 deletions

View File

@@ -1,6 +1,6 @@
#include "GraphExport.h"
#include "MCPTypes.h"
#include "MCPUtils.h"
#include "WingTypes.h"
#include "WingUtils.h"
#include "Engine/Blueprint.h"
#include "EdGraph/EdGraph.h"
#include "EdGraph/EdGraphNode.h"
@@ -14,7 +14,7 @@
#include "FunctionArgs.h"
#include "MaterialGraph/MaterialGraphNode.h"
MCPGraphExport::MCPGraphExport(UEdGraph* InGraph)
WingGraphExport::WingGraphExport(UEdGraph* InGraph)
: Graph(InGraph)
{
SortNodes();
@@ -24,7 +24,7 @@ MCPGraphExport::MCPGraphExport(UEdGraph* InGraph)
EmitComments();
}
MCPGraphExport::MCPGraphExport(UEdGraphNode* InNode)
WingGraphExport::WingGraphExport(UEdGraphNode* InNode)
: Graph(InNode->GetGraph())
{
SortedNodes.Add(InNode);
@@ -41,7 +41,7 @@ MCPGraphExport::MCPGraphExport(UEdGraphNode* InNode)
//
////////////////////////////////////////////////////////
UEdGraphPin* MCPGraphExport::GetLinkedTo(UEdGraphPin* Pin)
UEdGraphPin* WingGraphExport::GetLinkedTo(UEdGraphPin* Pin)
{
while (true)
{
@@ -53,7 +53,7 @@ UEdGraphPin* MCPGraphExport::GetLinkedTo(UEdGraphPin* Pin)
}
}
bool MCPGraphExport::IsDefaultToSelf(UEdGraphPin* Pin)
bool WingGraphExport::IsDefaultToSelf(UEdGraphPin* Pin)
{
// Only valid call-function nodes can have default-to-self.
UK2Node_CallFunction* CallNode = Cast<UK2Node_CallFunction>(Pin->GetOwningNode());
@@ -72,7 +72,7 @@ bool MCPGraphExport::IsDefaultToSelf(UEdGraphPin* Pin)
return Pin->PinName.ToString() == DefaultToSelfPinName;
}
TArray<UEdGraphPin*> MCPGraphExport::FilterPins(UEdGraphNode* Node, EEdGraphPinDirection Direction, FName Category)
TArray<UEdGraphPin*> WingGraphExport::FilterPins(UEdGraphNode* Node, EEdGraphPinDirection Direction, FName Category)
{
TArray<UEdGraphPin*> Result;
for (UEdGraphPin* Pin : Node->Pins)
@@ -84,12 +84,12 @@ TArray<UEdGraphPin*> MCPGraphExport::FilterPins(UEdGraphNode* Node, EEdGraphPinD
return Result;
}
bool MCPGraphExport::HasExecPin(UEdGraphNode* Node, EEdGraphPinDirection Direction)
bool WingGraphExport::HasExecPin(UEdGraphNode* Node, EEdGraphPinDirection Direction)
{
return FilterPins(Node, Direction, UEdGraphSchema_K2::PC_Exec).Num() > 0;
}
UEdGraphPin* MCPGraphExport::FindFirstPin(UEdGraphNode* Node, EEdGraphPinDirection Direction)
UEdGraphPin* WingGraphExport::FindFirstPin(UEdGraphNode* Node, EEdGraphPinDirection Direction)
{
for (UEdGraphPin* Pin : Node->Pins)
{
@@ -105,7 +105,7 @@ UEdGraphPin* MCPGraphExport::FindFirstPin(UEdGraphNode* Node, EEdGraphPinDirecti
//
////////////////////////////////////////////////////////
FString MCPGraphExport::FormatPinSource(UEdGraphPin* Pin)
FString WingGraphExport::FormatPinSource(UEdGraphPin* Pin)
{
// If connected, show source node.pin
UEdGraphPin* LinkedTo = GetLinkedTo(Pin);
@@ -115,10 +115,10 @@ FString MCPGraphExport::FormatPinSource(UEdGraphPin* Pin)
// For variable get nodes, just show the variable name.
if (UK2Node_VariableGet* VarGet = Cast<UK2Node_VariableGet>(LinkedToNode))
return MCPUtils::FormatName(VarGet->VariableReference);
return WingUtils::FormatName(VarGet->VariableReference);
FString PinLabel = MCPUtils::FormatName(LinkedTo);
return FString::Printf(TEXT("%s.%s"), *MCPUtils::FormatName(LinkedToNode), *PinLabel);
FString PinLabel = WingUtils::FormatName(LinkedTo);
return FString::Printf(TEXT("%s.%s"), *WingUtils::FormatName(LinkedToNode), *PinLabel);
}
// String pins: always show in quotes (even if empty).
@@ -156,7 +156,7 @@ FString MCPGraphExport::FormatPinSource(UEdGraphPin* Pin)
}
}
void MCPGraphExport::Traverse(UEdGraphNode* Node)
void WingGraphExport::Traverse(UEdGraphNode* Node)
{
if (Visited.Contains(Node)) return;
Visited.Add(Node);
@@ -177,7 +177,7 @@ void MCPGraphExport::Traverse(UEdGraphNode* Node)
Traverse(LinkedPin->GetOwningNode());
}
void MCPGraphExport::SortNodes()
void WingGraphExport::SortNodes()
{
// Find starter nodes: have exec output but no exec input.
TArray<UEdGraphNode*> Starters;
@@ -208,15 +208,15 @@ void MCPGraphExport::SortNodes()
}
}
void MCPGraphExport::EmitNode(UEdGraphNode* Node)
void WingGraphExport::EmitNode(UEdGraphNode* Node)
{
if (Node->IsA<UEdGraphNode_Comment>()) return;
Output.Appendf(TEXT("\nnode %s: %s\n"), *MCPUtils::FormatName(Node), *MCPUtils::FormatNodeTitle(Node));
Output.Appendf(TEXT("\nnode %s: %s\n"), *WingUtils::FormatName(Node), *WingUtils::FormatNodeTitle(Node));
// Emit function args (if applicable).
if (MCPFunctionArgs::HasArgs(Node))
Output.Appendf(TEXT(" args %s\n"), *MCPFunctionArgs::GetArgs(Node));
if (WingFunctionArgs::HasArgs(Node))
Output.Appendf(TEXT(" args %s\n"), *WingFunctionArgs::GetArgs(Node));
// Emit material expression properties (if applicable).
EmitMaterialProperties(Node, Output, true);
@@ -228,8 +228,8 @@ void MCPGraphExport::EmitNode(UEdGraphNode* Node)
if (Pin->bHidden) continue;
Output.Appendf(TEXT(" input %s %s = %s\n"),
*UMCPTypes::TypeToText(Pin->PinType),
*MCPUtils::FormatName(Pin),
*UWingTypes::TypeToText(Pin->PinType),
*WingUtils::FormatName(Pin),
*FormatPinSource(Pin));
}
@@ -240,7 +240,7 @@ void MCPGraphExport::EmitNode(UEdGraphNode* Node)
if (Pin->PinType.PinCategory == UEdGraphSchema_K2::PC_Exec) continue;
if (Pin->bHidden) continue;
if (!ReturnPins.IsEmpty()) ReturnPins += TEXT(", ");
ReturnPins += MCPUtils::FormatName(Pin);
ReturnPins += WingUtils::FormatName(Pin);
}
if (!ReturnPins.IsEmpty())
{
@@ -254,18 +254,18 @@ void MCPGraphExport::EmitNode(UEdGraphNode* Node)
UEdGraphPin* LinkedTo = GetLinkedTo(Pin);
if (!LinkedTo) continue;
FString Target = MCPUtils::FormatName(LinkedTo->GetOwningNode());
FString Target = WingUtils::FormatName(LinkedTo->GetOwningNode());
if (ExecOuts.Num() == 1)
Output.Appendf(TEXT(" goto %s\n"), *Target);
else
Output.Appendf(TEXT(" goto-if %s %s\n"), *MCPUtils::FormatName(Pin), *Target);
Output.Appendf(TEXT(" goto-if %s %s\n"), *WingUtils::FormatName(Pin), *Target);
}
}
void MCPGraphExport::EmitMaterialProperty(UMaterialExpression* Expression, FProperty* Prop, FStringBuilderBase& Out)
void WingGraphExport::EmitMaterialProperty(UMaterialExpression* Expression, FProperty* Prop, FStringBuilderBase& Out)
{
FString ValueStr = MCPUtils::GetPropertyValueText(Expression, Prop);
FString ValueStr = WingUtils::GetPropertyValueText(Expression, Prop);
ValueStr.ReplaceInline(TEXT("\r\n"), TEXT(" "));
ValueStr.ReplaceInline(TEXT("\n"), TEXT(" "));
if (ValueStr.Len() > 80)
@@ -274,19 +274,19 @@ void MCPGraphExport::EmitMaterialProperty(UMaterialExpression* Expression, FProp
bool bEditable = !Prop->HasAnyPropertyFlags(CPF_EditConst);
Out.Appendf(TEXT(" %s %s %s = %s\n"),
bEditable ? TEXT("mxeditable") : TEXT("mxreadonly"),
*UMCPTypes::TypeToText(Prop),
*MCPUtils::FormatName(Prop),
*UWingTypes::TypeToText(Prop),
*WingUtils::FormatName(Prop),
*ValueStr);
}
void MCPGraphExport::EmitMaterialProperties(UEdGraphNode* Node, FStringBuilderBase& Out, bool bPrimary)
void WingGraphExport::EmitMaterialProperties(UEdGraphNode* Node, FStringBuilderBase& Out, bool bPrimary)
{
UMaterialGraphNode* MatNode = Cast<UMaterialGraphNode>(Node);
if (!MatNode || !MatNode->MaterialExpression) return;
UMaterialExpression* Expression = MatNode->MaterialExpression;
FString PrimaryCategory = Expression->GetClass()->GetName();
TArray<FProperty*> Props = MCPUtils::SearchProperties(Expression, FString(), CPF_Edit, false);
TArray<FProperty*> Props = WingUtils::SearchProperties(Expression, FString(), CPF_Edit, false);
for (FProperty* Prop : Props)
{
@@ -296,7 +296,7 @@ void MCPGraphExport::EmitMaterialProperties(UEdGraphNode* Node, FStringBuilderBa
}
}
void MCPGraphExport::EmitLocalVariables()
void WingGraphExport::EmitLocalVariables()
{
for (UEdGraphNode* Node : Graph->Nodes)
{
@@ -307,15 +307,15 @@ void MCPGraphExport::EmitLocalVariables()
{
FString Default = Var.DefaultValue.IsEmpty() ? TEXT("<default>") : Var.DefaultValue;
Output.Appendf(TEXT("local %s %s = %s\n"),
*UMCPTypes::TypeToText(Var.VarType),
*MCPUtils::FormatName(Var),
*UWingTypes::TypeToText(Var.VarType),
*WingUtils::FormatName(Var),
*Default);
}
break;
}
}
void MCPGraphExport::EmitGraph()
void WingGraphExport::EmitGraph()
{
for (UEdGraphNode* Node : SortedNodes)
{
@@ -326,21 +326,21 @@ void MCPGraphExport::EmitGraph()
Output.Append(TEXT("\n"));
}
void MCPGraphExport::EmitDetails()
void WingGraphExport::EmitDetails()
{
for (UEdGraphNode* Node : SortedNodes)
{
if (Node->IsA<UK2Node_Knot>()) continue;
if (Node->IsA<UEdGraphNode_Comment>()) continue;
if (Node->IsA<UK2Node_VariableGet>()) continue;
Details.Appendf(TEXT("\ndetails %s\n"), *MCPUtils::FormatName(Node));
Details.Appendf(TEXT("\ndetails %s\n"), *WingUtils::FormatName(Node));
Details.Appendf(TEXT(" pos %d, %d\n"), Node->NodePosX, Node->NodePosY);
EmitMaterialProperties(Node, Details, false);
}
}
void MCPGraphExport::EmitComments()
void WingGraphExport::EmitComments()
{
for (UEdGraphNode* CommentNode : SortedNodes)
{
@@ -352,10 +352,10 @@ void MCPGraphExport::EmitComments()
int32 CH = CommentNode->NodeHeight;
// Emit header.
Output.Appendf(TEXT("\ncomment %s:\n"), *MCPUtils::FormatName(CommentNode));
Output.Appendf(TEXT("\ncomment %s:\n"), *WingUtils::FormatName(CommentNode));
// Emit wrapped, indented body.
Output.Append(MCPUtils::WrapText(CommentNode->NodeComment, 70, TEXT(" - ")));
Output.Append(WingUtils::WrapText(CommentNode->NodeComment, 70, TEXT(" - ")));
Output.Append(TEXT("\n"));
// Find contained nodes.
@@ -366,7 +366,7 @@ void MCPGraphExport::EmitComments()
int32 NX = Node->NodePosX;
int32 NY = Node->NodePosY;
if (NX >= CX && NY >= CY && NX <= CX + CW && NY <= CY + CH)
ContainedNames.Add(MCPUtils::FormatName(Node));
ContainedNames.Add(WingUtils::FormatName(Node));
}
if (ContainedNames.Num() > 0)