public static bool IsDiagonal(this Cardinal8 cardinal) { switch (cardinal) { case Cardinal8.NorthEast: return(true); case Cardinal8.NorthWest: return(true); case Cardinal8.SouthEast: return(true); case Cardinal8.SouthWest: return(true); } return(false); }
/// <summary> /// Returns the vector representation of this cardinal. /// </summary> /// <returns>This cardinal as a Vector2</returns> public static Vector2 ToVector(this Cardinal8 cardinal) { switch (cardinal) { case Cardinal8.North: return(Vector2.up); case Cardinal8.South: return(-Vector2.up); case Cardinal8.East: return(Vector2.right); case Cardinal8.West: return(-Vector2.right); case Cardinal8.NorthEast: return(new Vector2(1, 1).normalized); case Cardinal8.NorthWest: return(new Vector2(1, -1).normalized); case Cardinal8.SouthEast: return(new Vector2(1, -1).normalized); case Cardinal8.SouthWest: return(new Vector2(-1, -1).normalized); } throw new ArgumentException(); }
public static float Angle(this Cardinal8 cardinal) { switch (cardinal) { case Cardinal8.North: return(0f); case Cardinal8.South: return(180f); case Cardinal8.East: return(90f); case Cardinal8.West: return(270f); case Cardinal8.NorthEast: return(45f); case Cardinal8.NorthWest: return(315f); case Cardinal8.SouthEast: return(135f); case Cardinal8.SouthWest: return(225f); } throw new ArgumentException(); }
/// <summary> /// Returns this Cardinal8 as a Cardinal4, 45 degree cardinals are snapped to the cardinal that is 45 degrees anti-clockwise. /// </summary> /// <returns>This Cardinal8 as a Cardinal4</returns> public static Cardinal4 ToCardinal4(this Cardinal8 cardinal) { switch (cardinal) { case Cardinal8.North: return(Cardinal4.Up); case Cardinal8.South: return(Cardinal4.Down); case Cardinal8.East: return(Cardinal4.Right); case Cardinal8.West: return(Cardinal4.Left); case Cardinal8.NorthEast: return(Cardinal4.Up); case Cardinal8.NorthWest: return(Cardinal4.Left); case Cardinal8.SouthEast: return(Cardinal4.Right); case Cardinal8.SouthWest: return(Cardinal4.Down); } throw new ArgumentException(); }
/// <summary> /// Returns this cardinal rotated anti-clockwise by a certain number of 45 degree rotations. /// </summary> /// <param name="rotations">The number of 90 degree rotations to perform</param> /// <returns>The rotated cardinal</returns> public static Cardinal8 RotatedAntiClockwise(this Cardinal8 cardinal, int rotations = 1) { return((Cardinal8)MathUtils.Wrap((int)cardinal - rotations, 0, 7)); }