protected virtual void Load() { string savePath = OpenFileDialogue(); if (savePath == "") { return; } Graph <NodeType, ConnectionType> graphDeserialized = XMLSerializerHelper.Deserialize <Graph <NodeType, ConnectionType> >(savePath); m_Graph.m_Nodes = new List <NodeType>(); m_Graph.m_Connections = new List <ConnectionType>(); foreach (var nodeDeserialized in graphDeserialized.m_Nodes) { m_Graph.m_Nodes.Add(GetAsFinalType().DeserializeNode(nodeDeserialized)); } foreach (var connectionDeserialized in graphDeserialized.m_Connections) { ConnectionPoint outPoint = null; foreach (Node n in m_Graph.m_Nodes) { outPoint = n.GetConnectionPoint(connectionDeserialized.m_OutPoint.m_Id); if (outPoint != null) { break; } } ConnectionPoint inPoint = null; foreach (Node n in m_Graph.m_Nodes) { inPoint = n.GetConnectionPoint(connectionDeserialized.m_InPoint.m_Id); if (inPoint != null) { break; } } Connection connectionBase = new Connection(inPoint, outPoint, OnClickRemoveConnection); ConnectionType connection = GetAsFinalType().CreateConnection(connectionBase); m_Graph.m_Connections.Add(connection); inPoint.OnConnectionMade(connection); outPoint.OnConnectionMade(connection); outPoint.GetNode().OnConnectionMade(connection); inPoint.GetNode().OnConnectionMade(connection); } }