public Vector2?GetNearestPointOnContour(Vector2 point, out Vector2 tangent) { var result = GetNearestPointOnContour(point); tangent = new Vector2(); for (int i = 0, count = _Contour.Count; i < count; i++) { RoomVert v1 = _Contour[i], v2 = _Contour[(i + 1) % count]; if (MathUtils.IsPointInsideLineSegment(result.Value, v1.Position, v2.Position)) { tangent = MathUtils.CalculateTangent(v1.Position, v2.Position); } } return(result); }
public RoomVert GetVertInPos(Vector2 point, Room excludeRoom = null) { RoomVert vert = null; foreach (var room in _Rooms) { if (room == excludeRoom) { continue; } vert = room.GetVertInPos(point); if (vert != null) { break; } } return(vert); }