diff --git a/Source/FLESH/Private/DismembermentGraph/DismembermentGraphBase.cpp b/Source/FLESH/Private/DismembermentGraph/DismembermentGraphBase.cpp index 855b2c5..8cd7f6c 100644 --- a/Source/FLESH/Private/DismembermentGraph/DismembermentGraphBase.cpp +++ b/Source/FLESH/Private/DismembermentGraph/DismembermentGraphBase.cpp @@ -5,6 +5,8 @@ UDismembermentGraphBase::UDismembermentGraphBase() : bCompiled(false) { + Layers = {TEXT("Bone"), TEXT("Organ"), TEXT("Skin")}; // Default layers + LayerPatchData.Empty(); } void UDismembermentGraphBase::ClearGraph() @@ -12,6 +14,7 @@ void UDismembermentGraphBase::ClearGraph() // Clear all nodes Nodes.Empty(); bCompiled = false; + LayerPatchData.Empty(); } UEdGraphNode* UDismembermentGraphBase::AddNode(TSubclassOf NodeClass, const FVector2D& Position) @@ -23,11 +26,9 @@ UEdGraphNode* UDismembermentGraphBase::AddNode(TSubclassOf NodeCla // Set node position NewNode->NodePosX = Position.X; NewNode->NodePosY = Position.Y; - // Add to node list Nodes.Add(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 - if (A && B) + // Serialize the graph structure to a string (for debugging/versioning) + FString Result = TEXT("Graph Nodes:\n"); + for (const TObjectPtr& 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; }