/// <summary> /// Returns the minimum available grid point. /// </summary> /// <returns> /// A Vector3 point. /// </returns> public Vector3 AvailableMin() { var minX = Available.First().X; var minY = Available.First().Y; foreach (Vector3 point in Available) { if (point.X + point.Y < minX + minY) { minX = point.X; minY = point.Y; } } return(new Vector3(minX, minY)); }
/// <summary> /// Returns the maximum available grid point. /// </summary> /// <returns> /// A Vector3 point. /// </returns> public Vector3 AvailableMax() { var maxX = Available.First().X; var maxY = Available.First().Y; foreach (Vector3 point in Available) { if (point.X + point.Y > maxX + maxY) { maxX = point.X; maxY = point.Y; } } return(new Vector3(maxX, maxY)); }
/// <summary> /// Returns the available grid point nearest to the supplied Vector3 point. /// </summary> /// <param name="point">The Vector3 point to compare.</param> /// <returns> /// A Vector3 point. /// </returns> public Vector3 AvailableNearTo(Vector3 point) { var x = Available.First().X; var y = Available.First().Y; foreach (Vector3 aPoint in Available) { var xDelta = Math.Abs(point.X - aPoint.X); var yDelta = Math.Abs(point.Y - aPoint.Y); if (xDelta <= Math.Abs(x - aPoint.X) || yDelta <= Math.Abs(y - aPoint.Y)) { x = aPoint.X; y = aPoint.Y; } } return(new Vector3(x, y)); }