public static SerializableNode NewLink(int id, Link link) { SerializableNode newNode = new SerializableNode(id, null, link); newNode.isLink = true; return(newNode); }
public static SerializableNode NewNode(int id, NodeData data) { SerializableNode newNode = new SerializableNode(id, data, null); newNode.isLink = false; newNode.children = new List <int>(); return(newNode); }
private void ImportChildNodes(Node node, SerializableNode parent) { foreach (int childID in parent.children) { SerializableNode child = nodes[childID]; if (child.isLink) { Link newLink = node.AddLink(null); child.node = newLink; } else { Node newNode = node.AddNode(child.data); child.node = newNode; ImportChildNodes(newNode, child); } } }
private SerializableNode ExportNode(BaseNode node) { SerializableNode newNode; if (node.isLink) { newNode = SerializableNode.NewLink(nodes.Count, (Link)node); nodes.Add(newNode); links.Add(newNode); } else { newNode = SerializableNode.NewNode(nodes.Count, node.Data); nodes.Add(newNode); tempNodes.Add((Node)node, newNode); foreach (BaseNode child in ((Node)node).Children) { newNode.children.Add(nodes.Count); ExportNode(child); } } return(newNode); }