Пример #1
0
        // public method for adding pathfinding requests
        public void AddPathFindRequest(MoveCommand command, bool queued, bool recalculatingCurrentPath, bool avoidUnits)
        {
            int distancePriority;

            if (!queued)
            {
                distancePriority = (int)Vector2.DistanceSquared(command.Unit.CenterPoint, command.Destination);

                if (!recalculatingCurrentPath)
                {
                    addHighPriorityPathFindRequest(command, distancePriority, avoidUnits);
                }
                else
                {
                    addLowPriorityPathFindRequest(command, command.Unit.CurrentPathNode, distancePriority, queued, avoidUnits);
                }
            }
            else
            {
                Vector2 beginLocation = command.Unit.FinalMoveDestination;

                distancePriority = (int)Vector2.DistanceSquared(beginLocation, command.Destination);

                addLowPriorityPathFindRequest(command, Tools.PathNodeAt(beginLocation), distancePriority, queued, avoidUnits);
            }
        }