public FlatRedBall.AI.Pathfinding.PositionedNode ToPositionedNode()
        {
            FlatRedBall.AI.Pathfinding.PositionedNode positionedNode = new FlatRedBall.AI.Pathfinding.PositionedNode();

            positionedNode.Name       = Name;
            positionedNode.Position.X = X;
            positionedNode.Position.Y = Y;
            positionedNode.Position.Z = Z;

            // links will be established by the NodeNetworkSave.ToNodeNetwork method
            // We've done all we can do here.
            return(positionedNode);
        }
Exemplo n.º 2
0
        public FlatRedBall.AI.Pathfinding.PositionedNode ToPositionedNode()
        {
            FlatRedBall.AI.Pathfinding.PositionedNode positionedNode = new FlatRedBall.AI.Pathfinding.PositionedNode();

            positionedNode.Name = Name;
            positionedNode.Position.X = X;
            positionedNode.Position.Y = Y;
            positionedNode.Position.Z = Z;

            // links will be established by the NodeNetworkSave.ToNodeNetwork method
            // We've done all we can do here.
            return positionedNode;
        }
        public static PositionedNodeSave FromPositionedNode(FlatRedBall.AI.Pathfinding.PositionedNode positionedNode)
        {
            PositionedNodeSave nodeSave = new PositionedNodeSave();

            nodeSave.Name = positionedNode.Name;
            nodeSave.X    = positionedNode.Position.X;
            nodeSave.Y    = positionedNode.Position.Y;
            nodeSave.Z    = positionedNode.Position.Z;

            foreach (FlatRedBall.AI.Pathfinding.Link link in positionedNode.Links)
            {
                nodeSave.Links.Add(
                    LinkSave.FromLink(link));
            }

            return(nodeSave);
        }
Exemplo n.º 4
0
        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);
        }