public static Dictionary <string, object> SerializeTask(Task task, bool serializeChildren, ref List <UnityEngine.Object> unityObjects) { Dictionary <string, object> dictionary = new Dictionary <string, object>(); dictionary.Add("ObjectType", task.GetType()); dictionary.Add("NodeData", SerializeJSON.SerializeNodeData(task.NodeData)); dictionary.Add("ID", task.ID); dictionary.Add("Name", task.FriendlyName); dictionary.Add("Instant", task.IsInstant); SerializeJSON.SerializeFields(task, ref dictionary, ref unityObjects); if (serializeChildren && task is ParentTask) { ParentTask parentTask = task as ParentTask; if (parentTask.Children != null && parentTask.Children.Count > 0) { Dictionary <string, object>[] array = new Dictionary <string, object> [parentTask.Children.Count]; for (int i = 0; i < parentTask.Children.Count; i++) { array[i] = SerializeJSON.SerializeTask(parentTask.Children[i], serializeChildren, ref unityObjects); } dictionary.Add("Children", array); } } return(dictionary); }
public static void Save(BehaviorSource behaviorSource) { behaviorSource.CheckForSerialization(false, null); SerializeJSON.taskSerializationData = new TaskSerializationData(); SerializeJSON.fieldSerializationData = SerializeJSON.taskSerializationData.fieldSerializationData; Dictionary <string, object> dictionary = new Dictionary <string, object>(); if (behaviorSource.EntryTask != null) { dictionary.Add("EntryTask", SerializeJSON.SerializeTask(behaviorSource.EntryTask, true, ref SerializeJSON.fieldSerializationData.unityObjects)); } if (behaviorSource.RootTask != null) { dictionary.Add("RootTask", SerializeJSON.SerializeTask(behaviorSource.RootTask, true, ref SerializeJSON.fieldSerializationData.unityObjects)); } if (behaviorSource.DetachedTasks != null && behaviorSource.DetachedTasks.Count > 0) { Dictionary <string, object>[] array = new Dictionary <string, object> [behaviorSource.DetachedTasks.Count]; for (int i = 0; i < behaviorSource.DetachedTasks.Count; i++) { array[i] = SerializeJSON.SerializeTask(behaviorSource.DetachedTasks[i], true, ref SerializeJSON.fieldSerializationData.unityObjects); } dictionary.Add("DetachedTasks", array); } if (behaviorSource.Variables != null && behaviorSource.Variables.Count > 0) { dictionary.Add("Variables", SerializeJSON.SerializeVariables(behaviorSource.Variables, ref SerializeJSON.fieldSerializationData.unityObjects)); } SerializeJSON.taskSerializationData.JSONSerialization = MiniJSON.Serialize(dictionary); behaviorSource.TaskData = SerializeJSON.taskSerializationData; if (behaviorSource.Owner != null) { EditorUtility.SetDirty(behaviorSource.Owner.GetObject()); } }
public static TaskSerializer CopySerialized(Task task) { TaskSerializer taskSerializer = new TaskSerializer(); taskSerializer.offset = (task.NodeData.NodeDesigner as NodeDesigner).GetAbsolutePosition() + new Vector2(10f, 10f); taskSerializer.unityObjects = new List <UnityEngine.Object>(); taskSerializer.serialization = MiniJSON.Serialize(SerializeJSON.SerializeTask(task, false, ref taskSerializer.unityObjects)); return(taskSerializer); }