| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283 | 
							- using System.Collections;
 
- using System.Collections.Generic;
 
- using System;
 
- using UnityEngine;
 
- using System.Reflection;
 
- #if UNITY_EDITOR
 
- using UnityEditor;
 
- #endif
 
- // Warning, the current serialization code does not handle unity objects
 
- // in play mode outside of the editor (because of JsonUtility)
 
- namespace GraphProcessor
 
- {
 
- 	[Serializable]
 
- 	public struct JsonElement
 
- 	{
 
- 		public string		type;
 
- 		public string		jsonDatas;
 
- 		public override string ToString()
 
- 		{
 
- 			return "type: " + type + " | JSON: " + jsonDatas;
 
- 		}
 
- 	}
 
- 	public static class JsonSerializer
 
- 	{
 
- 		public static JsonElement	Serialize(object obj)
 
- 		{
 
- 			JsonElement	elem = new JsonElement();
 
- 			elem.type = obj.GetType().AssemblyQualifiedName;
 
- #if UNITY_EDITOR
 
- 			elem.jsonDatas = EditorJsonUtility.ToJson(obj);
 
- #else
 
- 			elem.jsonDatas = JsonUtility.ToJson(obj);
 
- #endif
 
- 			return elem;
 
- 		}
 
- 		public static T	Deserialize< T >(JsonElement e)
 
- 		{
 
- 			if (typeof(T) != Type.GetType(e.type))
 
- 				throw new ArgumentException("Deserializing type is not the same than Json element type");
 
- 			var obj = Activator.CreateInstance< T >();
 
- #if UNITY_EDITOR
 
- 			EditorJsonUtility.FromJsonOverwrite(e.jsonDatas, obj);
 
- #else
 
- 			JsonUtility.FromJsonOverwrite(e.jsonDatas, obj);
 
- #endif
 
- 			return obj;
 
- 		}
 
- 		public static JsonElement	SerializeNode(BaseNode node)
 
- 		{
 
- 			return Serialize(node);
 
- 		}
 
- 		public static BaseNode	DeserializeNode(JsonElement e)
 
- 		{
 
- 			try {
 
- 				var baseNodeType = Type.GetType(e.type);
 
- 				if (e.jsonDatas == null)
 
- 					return null;
 
- 				var node = Activator.CreateInstance(baseNodeType) as BaseNode;
 
- #if UNITY_EDITOR
 
- 				EditorJsonUtility.FromJsonOverwrite(e.jsonDatas, node);
 
- #else
 
- 				JsonUtility.FromJsonOverwrite(e.jsonDatas, node);
 
- #endif
 
- 				return node;
 
- 			} catch {
 
- 				return null;
 
- 			}
 
- 		}
 
- 	}
 
- }
 
 
  |