/// <summary> /// Поворачивает направление на угол между двумя другими направлениями. /// </summary> public static MoveDirection RotateDirection(this MoveDirection source, MoveDirection dir1, MoveDirection dir2) { var directions = GetDirectionsArray(); int angle = dir1.CalculateAngle(dir2) / 45; if (angle < 0) { angle = directions.Length + angle; } if (angle > directions.Length) { angle %= directions.Length; } int curr = 0; for (int i = 0; i < directions.Length; i++) { if (directions[i] == source) { curr = i; break; } } curr += angle; if (curr > directions.Length) { curr %= directions.Length; } return(directions[curr]); }