/// <summary> /// Link the various nodes to each other. Do some initial processing on the path, like finding linking TVNs /// and determining whether junctions are facing or not. /// </summary> /// <param name="patFile">Patfile object containing the various unprocessed Track Path Nodes</param> /// <param name="Nodes">The list of as-of-yet unlinked processed path nodes</param> static private void LinkNodes(PathFile patFile, List <TrainpathNode> Nodes) { // Connect the various nodes to each other for (int i = 0; i < Nodes.Count; i++) { TrainpathNode node = Nodes[i]; TrPathNode tpn = patFile.TrPathNodes[i]; // find TvnIndex to next main node. if (tpn.HasNextMainNode) { node.NextMainNode = Nodes[(int)tpn.nextMainNode]; node.NextMainNode.PrevNode = node; node.NextMainTvnIndex = node.FindTvnIndex(node.NextMainNode); } // find TvnIndex to next siding node if (tpn.HasNextSidingNode) { node.NextSidingNode = Nodes[(int)tpn.nextSidingNode]; if (node.NextSidingNode.PrevNode == null) { node.NextSidingNode.PrevNode = node; } node.NextSidingTvnIndex = node.FindTvnIndex(node.NextSidingNode); } if (node.NextMainNode != null && node.NextSidingNode != null) { node.NodeType = TrainpathNodeType.SidingStart; } } }