using System.Collections.Generic;
using UnityEngine;
namespace MeadowGames.UINodeConnect4.UICSerialization
{
///
/// Class containing methods to help on the serialization of all or selected elements of a specific graph to JSON
///
public static class GraphSerializer
{
public static string ToJSON(GraphManager graphManager)
{
SerializableGraph serializableGraph = new SerializableGraph(graphManager.localNodes, graphManager.localConnections);
SerializationEvents.OnGraphSerialize.Invoke(serializableGraph);
return JsonUtility.ToJson(serializableGraph);
}
public static string ToJSON(List nodes, List connections)
{
SerializableGraph serializableGraph = new SerializableGraph(nodes, connections);
SerializationEvents.OnGraphSerialize.Invoke(serializableGraph);
return JsonUtility.ToJson(serializableGraph);
}
public static string ToJSON(List elements)
{
SerializableGraph serializableGraph = new SerializableGraph(elements);
SerializationEvents.OnGraphSerialize.Invoke(serializableGraph);
return JsonUtility.ToJson(serializableGraph);
}
public static string ToJSON(List elements)
{
SerializableGraph serializableGraph = new SerializableGraph(elements);
SerializationEvents.OnGraphSerialize.Invoke(serializableGraph);
return JsonUtility.ToJson(serializableGraph);
}
public static void FromJSONInstantiate(GraphManager graphManager, string jsonString, Transform parent, DeserializationTemplates deserializationTemplates)//, bool handleDuplicateSID = true)
{
SerializableGraph serializableGraph = JsonUtility.FromJson(jsonString);
FromSerializableInstantiate(serializableGraph, graphManager, parent, deserializationTemplates);
}
public static void FromSerializableInstantiate(SerializableGraph serializableGraph, GraphManager graphManager, Transform parent, DeserializationTemplates deserializationTemplates)//, bool handleDuplicateSID = true)
{
foreach (SerializableNode serializableNode in serializableGraph.serializableNodes)
{
NodeSerializer.FromSerializableInstantiate(serializableNode, parent, deserializationTemplates);
}
foreach (SerializableConnection serializableConnection in serializableGraph.serializableConnections)
{
ConnectionSerializer.FromSerializableInstantiate(serializableConnection, graphManager, false);
}
SerializationEvents.OnGraphDeserialize.Invoke(graphManager);
}
}
}