public static Dir8 GetDir(this Axis8 axis, int scalar) { if (scalar == 0 & axis.Validate()) { return(Dir8.None); } else { switch (axis) { case Axis8.None: return(Dir8.None); case Axis8.Horiz: return(scalar < 0 ? Dir8.Left : Dir8.Right); case Axis8.Vert: return(scalar < 0 ? Dir8.Up : Dir8.Down); case Axis8.DiagBack: return(scalar < 0 ? Dir8.UpLeft : Dir8.DownRight); case Axis8.DiagForth: return(scalar < 0 ? Dir8.DownLeft : Dir8.UpRight); default: throw new ArgumentOutOfRangeException(nameof(axis), axis, "Invalid enum value."); } } }