更新 Source/FLESH/Private/DismembermentGraph/DismembermentGraphBase.cpp

This commit is contained in:
2025-04-18 18:06:43 +08:00
parent 67d849a654
commit be5af35c9c

View File

@@ -5,6 +5,8 @@
UDismembermentGraphBase::UDismembermentGraphBase() UDismembermentGraphBase::UDismembermentGraphBase()
: bCompiled(false) : bCompiled(false)
{ {
Layers = {TEXT("Bone"), TEXT("Organ"), TEXT("Skin")}; // Default layers
LayerPatchData.Empty();
} }
void UDismembermentGraphBase::ClearGraph() void UDismembermentGraphBase::ClearGraph()
@@ -12,6 +14,7 @@ void UDismembermentGraphBase::ClearGraph()
// Clear all nodes // Clear all nodes
Nodes.Empty(); Nodes.Empty();
bCompiled = false; bCompiled = false;
LayerPatchData.Empty();
} }
UEdGraphNode* UDismembermentGraphBase::AddNode(TSubclassOf<UEdGraphNode> NodeClass, const FVector2D& Position) UEdGraphNode* UDismembermentGraphBase::AddNode(TSubclassOf<UEdGraphNode> NodeClass, const FVector2D& Position)
@@ -23,11 +26,9 @@ UEdGraphNode* UDismembermentGraphBase::AddNode(TSubclassOf<UEdGraphNode> NodeCla
// Set node position // Set node position
NewNode->NodePosX = Position.X; NewNode->NodePosX = Position.X;
NewNode->NodePosY = Position.Y; NewNode->NodePosY = Position.Y;
// Add to node list // Add to node list
Nodes.Add(NewNode); Nodes.Add(NewNode);
} }
return NewNode; return NewNode;
} }
@@ -40,11 +41,36 @@ void UDismembermentGraphBase::RemoveNode(UEdGraphNode* Node)
} }
} }
void UDismembermentGraphBase::CreateConnection(UEdGraphPin* A, UEdGraphPin* B) #if WITH_EDITOR
// void UDismembermentGraphBase::CreateConnection(UEdGraphPin* A, UEdGraphPin* B)
// {
// if (A && B)
// {
// A->MakeLinkTo(B);
// }
// }
#endif
FString UDismembermentGraphBase::SerializeGraph() const
{ {
// Create connection // Serialize the graph structure to a string (for debugging/versioning)
if (A && B) FString Result = TEXT("Graph Nodes:\n");
for (const TObjectPtr<UEdGraphNode>& Node : Nodes)
{ {
A->MakeLinkTo(B); if (Node)
{
Result += FString::Printf(TEXT("- %s at (%d, %d)\n"), *Node->GetName(), Node->NodePosX, Node->NodePosY);
}
} }
Result += TEXT("Layers:\n");
for (const FName& Layer : Layers)
{
Result += FString::Printf(TEXT("- %s\n"), *Layer.ToString());
}
Result += TEXT("Patch Data:\n");
for (const auto& Elem : LayerPatchData)
{
Result += FString::Printf(TEXT("- %s: %s\n"), *Elem.Key.ToString(), *Elem.Value);
}
return Result;
} }