public Vector2 GetClosestEvadePoint(Vector2 from) { var polygons = ClippedPolygons.Where(p => p.IsInside(from)).ToArray(); var polPoints = polygons.Select(pol => pol.ToDetailedPolygon()) .SelectMany(pol => pol.Points) .OrderByDescending(p => p.Distance(from, true)); return(!polPoints.Any() ? Vector2.Zero : polPoints.Last()); }
public IOrderedEnumerable <Vector2> GetCloserEvadePoints(Vector2 closestNormalEvadePoint) { float closestNormalDistance = closestNormalEvadePoint.Distance(Player.Instance); var polygons = ClippedPolygons.Where(p => p.IsInside(Player.Instance)).ToArray(); var polPoints = polygons.Select(pol => pol.ToDetailedPolygon()) .SelectMany(pol => pol.Points) .Where(p => p.Distance(Player.Instance) < closestNormalDistance) .OrderByDescending(p => p.Distance(Player.Instance)); return(polPoints); }
public bool IsPointSafe(Vector2 point) { return(!ClippedPolygons.Any(p => p.IsInside(point))); }