示例#1
0
        private static void TryQueueNewNode(IPathNode pNewNode, PathLink pLink, AStarStack pNodesToVisit, IPathNode pGoal)
        {
            IPathNode previousNode = pLink.GetOtherNode(pNewNode);
            float     linkDistance = pLink.Distance;
            float     newPathCost  = previousNode.PathCostHere + pNewNode.CostMultiplier * linkDistance;

            if (pNewNode.LinkLeadingHere == null || (pNewNode.PathCostHere > newPathCost))
            {
                pNewNode.DistanceToGoal  = pNewNode.DistanceTo(pGoal) * 2f;
                pNewNode.PathCostHere    = newPathCost;
                pNewNode.LinkLeadingHere = pLink;
                pNodesToVisit.Push(pNewNode);
            }
        }
示例#2
0
        private void TryQueueNewTile(IPathNode pNewNode, PathLink pLink, AStarStack pNodesToVisit, IPathNode pGoal)
        {
            IPathNode previousNode = pLink.GetOtherNode(pNewNode);
            float     linkDistance = pLink.distance;
            float     newPathCost  = previousNode.pathCostHere + pNewNode.baseCost + linkDistance;

            if (pNewNode.linkLeadingHere == null || (pNewNode.pathCostHere > newPathCost))
            {
                pNewNode.distanceToGoal  = pNewNode.DistanceTo(pGoal) * 2f;
                pNewNode.pathCostHere    = newPathCost;
                pNewNode.linkLeadingHere = pLink;
                pNodesToVisit.Push(pNewNode);
            }
        }