public static List <NodeEditor> UnpackData(PackedNodeData data) { //List<Node> ret = new List<Node>(); Dictionary <NodeEditor, int> instances = new Dictionary <NodeEditor, int>(); // Dictionary<int, SocketsData> socketInstances = new Dictionary<int, SocketsData>(); int i = 0; foreach (var x in data.nodeData) { NodeEditor node; if (typeof(LeafEditor).ToString().Equals(x.type)) { var lst = Convert(x.argsBool, x.argsNum, x.argsStr); //lst.AddRange (x.argsStr.ConvertAll<object>(y => (object)y)); //lst.AddRange (x.argsNum.ConvertAll<object> (y => (object)y)); //lst.AddRange (x.argsBool.ConvertAll<object> (y => (object)y)); node = CreateLeafNode(x.title, x.window, Type.GetType(x.handledLeaf) , lst); } else if (typeof(ParallelEditor).ToString().Equals(x.type) || typeof(ParallelRunningEditor).ToString().Equals(x.type)) { node = (NodeEditor)Activator.CreateInstance(Type.GetType(x.type), new object[] { x.title, x.window, x.name, x.reqFail, x.reqSucc }); } else if (typeof(SequenceEditor).ToString().Equals(x.type) || typeof(SelectorEditor).ToString().Equals(x.type) || typeof(SequenceRandomEditor).ToString().Equals(x.type) || typeof(SelectorRandomEditor).ToString().Equals(x.type)) { node = (NodeEditor)Activator.CreateInstance(Type.GetType(x.type), new object[] { x.title, x.window, x.name }); } else { node = (NodeEditor)Activator.CreateInstance(Type.GetType(x.type), new object[] { x.title, x.window }); } instances.Add(node, i++); //socketInstances.Add(i, x.sockets); } i = 0; foreach (var x in instances.Keys) { var node = x as NodeEditor; node.SetSockets(FromData(data.nodeData[i++].sockets, instances)); } foreach (var node in instances.Keys.ToList()) { node.UpdateNodesFromSockets(); } return(new List <NodeEditor>(instances.Keys)); }
static public PackedNodeData PackData(List <NodeEditor> nodes) { PackedNodeData ret = new PackedNodeData(); ret.nodeData = new List <NodeData>(); Dictionary <NodeEditor, int> instances = GenerateInstance(nodes); foreach (var node in nodes) { ret.nodeData.Add(ToData(node, instances)); } return(ret); }