protected void Load() { var nodesDeserialized = XMLSaver.Deserialize <List <Node> >(nodesPath); var connectionsDeserialized = XMLSaver.Deserialize <List <Connection> >(connectionsPath); nodes = new List <Node>(); connections = new List <Connection>(); foreach (var node in nodesDeserialized) { var dim = new Vector2(node.rect.width, node.rect.height); nodes.Add(new Node( node.rect.position, dim, defaultNodeStyle, OnClickInPoint, OnClickOutPoint, OnClickRemoveNode, node.inPoint.id, node.outPoint.id )); } foreach (var connection in connectionsDeserialized) { var inPoint = nodes.First(n => n.inPoint.id == connection.inPoint.id).inPoint; var outPoint = nodes.First(n => n.outPoint.id == connection.outPoint.id).outPoint; connections.Add(new Connection(inPoint, outPoint, OnClickRemoveConnection)); } }
public void Deserialize() { window.Clear(); window.selectorNodes = XMLSaver.Deserialize <List <SelectorNode> >(selectorNodesPath); foreach (var node in window.selectorNodes) { node.Init(); window.nodes.Add(node); } window.actionNodes = XMLSaver.Deserialize <List <ActionNode> >(actionNodesPath); foreach (var node in window.actionNodes) { window.nodes.Add(node); } window.connections = XMLSaver.Deserialize <List <Connection> >(connectionsPath); window.connectionPins = XMLSaver.Deserialize <List <ConnectionPin> >(pinsPath); var outputPins = new Dictionary <Qualifier, OutputConnectionPin>(); foreach (var pin in window.connectionPins) { if (pin is InputConnectionPin inpin) { var inputNode = window.nodes.Find(n => n.id == inpin.nodeId); inpin.node = inputNode; } else if (pin is OutputConnectionPin outpin) { foreach (var sn in window.selectorNodes) { foreach (var q in sn.selector.qualifiers) { if (q.id == outpin.ownerId) { outputPins.Add(q, outpin); } } } } } foreach (var connection in window.connections) { connection.input = window.connectionPins.Find(p => p.id == connection.inputId) as InputConnectionPin; connection.output = window.connectionPins.Find(p => p.id == connection.outputId) as OutputConnectionPin; } Signals.Get <QualifierPinsLoaded>().Dispatch(outputPins); }