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); } } }