public static Dir4 Rotate(this Dir4 dir, int n) { if (!dir.Validate()) { throw new ArgumentOutOfRangeException(nameof(dir), dir, "Invalid enum value."); } if (dir == Dir4.None) { return(Dir4.None); } return((Dir4)(((int)dir + n) & (DIR4_COUNT - 1))); }
public static Dir4 AddAngles(Dir4 dir1, Dir4 dir2) { // dir1 is validated by Dir4.Rotate if (!dir2.Validate()) { throw new ArgumentOutOfRangeException(nameof(dir2), dir2, "Invalid enum value."); } if (dir1 == Dir4.None || dir2 == Dir4.None) { return(Dir4.None); } return(dir1.Rotate((int)dir2)); }