AStarCollisionMap.Collision.CollisionMap.ClosestNodeInLOS C# (CSharp) Метод

ClosestNodeInLOS() публичный Метод

Gets the closest node in line of sight from the given point.
public ClosestNodeInLOS ( Point p ) : AStarCollisionMap.Pathfinding.PathfindingNode
p Point The point.
Результат AStarCollisionMap.Pathfinding.PathfindingNode
        public PathfindingNode ClosestNodeInLOS(Point p)
        {
            PathfindingNodeManager manager = PathfindingNodeManager.GetInstance();
            CustomArrayList<PathfindingNode> inRangeNodes = new CustomArrayList<PathfindingNode>();
            for( int i = 0; i < manager.GetNodeCount(); i++)
            {
                PathfindingNode node = manager.GetNodeAt(i);
                if (this.IsCollisionBetween(p, node.GetLocation()))
                {
                    inRangeNodes.AddLast(node);
                }
            }
            PathfindingNode closestNode = inRangeNodes.ElementAt(0);
            double closestDistance = Double.MaxValue;
            for( int i = 0; i < inRangeNodes.Count(); i++ ){
                PathfindingNode node = inRangeNodes.ElementAt(i);

                double newDistance = PathfindingUtil.GetHypoteneuseLength(closestNode.GetLocation(), node.GetLocation());
                if (closestDistance > newDistance)
                {
                    closestDistance = newDistance;
                    closestNode = node;
                }
            }
            return closestNode;
        }