Beispiel #1
0
        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);
        }
Beispiel #2
0
        /// <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();
        }
Beispiel #3
0
        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();
        }
Beispiel #4
0
        /// <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();
        }
Beispiel #5
0
 /// <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));
 }