public static NodeNetworkSave FromNodeNetwork(FlatRedBall.AI.Pathfinding.NodeNetwork nodeNetwork) { NodeNetworkSave nodeNetworkSave = new NodeNetworkSave(); foreach (FlatRedBall.AI.Pathfinding.PositionedNode positionedNode in nodeNetwork.Nodes) { nodeNetworkSave.PositionedNodes.Add( PositionedNodeSave.FromPositionedNode(positionedNode)); } return(nodeNetworkSave); }
public FlatRedBall.AI.Pathfinding.NodeNetwork ToNodeNetwork(out string errors) { errors = null; FlatRedBall.AI.Pathfinding.NodeNetwork nodeNetwork = new FlatRedBall.AI.Pathfinding.NodeNetwork(); foreach (PositionedNodeSave nodeSave in PositionedNodes) { PositionedNode node = nodeSave.ToPositionedNode(); nodeNetwork.AddNode(node); } List<PositionedNode> nodesAlreadyLinked = new List<PositionedNode>(PositionedNodes.Count); // Now that all of the nodes are set up, reestablish the links for (int i = 0; i < PositionedNodes.Count; i++) { foreach (LinkSave linkSave in PositionedNodes[i].Links) { if (linkSave.NodeLinkingTo == PositionedNodes[i].Name) { string nodeName = PositionedNodes[i].Name; if (string.IsNullOrEmpty(nodeName)) { nodeName = "<UNNAMED>"; } errors += "The node " + nodeName + " has a link to itself.\n"; break; } else { PositionedNode node = nodeNetwork.FindByName(linkSave.NodeLinkingTo); if (nodesAlreadyLinked.Contains(node) == false) { nodeNetwork.Nodes[i].LinkTo(node, linkSave.Cost); } } } nodesAlreadyLinked.Add(nodeNetwork.Nodes[i]); } return nodeNetwork; }
public FlatRedBall.AI.Pathfinding.NodeNetwork ToNodeNetwork(out string errors) { errors = null; FlatRedBall.AI.Pathfinding.NodeNetwork nodeNetwork = new FlatRedBall.AI.Pathfinding.NodeNetwork(); foreach (PositionedNodeSave nodeSave in PositionedNodes) { PositionedNode node = nodeSave.ToPositionedNode(); nodeNetwork.AddNode(node); } List <PositionedNode> nodesAlreadyLinked = new List <PositionedNode>(PositionedNodes.Count); // Now that all of the nodes are set up, reestablish the links for (int i = 0; i < PositionedNodes.Count; i++) { foreach (LinkSave linkSave in PositionedNodes[i].Links) { if (linkSave.NodeLinkingTo == PositionedNodes[i].Name) { string nodeName = PositionedNodes[i].Name; if (string.IsNullOrEmpty(nodeName)) { nodeName = "<UNNAMED>"; } errors += "The node " + nodeName + " has a link to itself.\n"; break; } else { PositionedNode node = nodeNetwork.FindByName(linkSave.NodeLinkingTo); if (nodesAlreadyLinked.Contains(node) == false) { nodeNetwork.Nodes[i].LinkTo(node, linkSave.Cost); } } } nodesAlreadyLinked.Add(nodeNetwork.Nodes[i]); } return(nodeNetwork); }