Minecraft-Console-Client/MinecraftClient/Mapping/DirectionExtensions.cs

43 lines
1.1 KiB
C#
Raw Normal View History

2024-03-05 21:49:29 +05:00
using System;
namespace MinecraftClient.Mapping;
public static class DirectionExtensions
{
public static Direction GetOpposite(this Direction direction) => direction switch
{
Direction.SouthEast => Direction.NorthEast,
Direction.SouthWest => Direction.NorthWest,
Direction.NorthEast => Direction.SouthEast,
Direction.NorthWest => Direction.SouthWest,
Direction.West => Direction.East,
Direction.East => Direction.West,
Direction.North => Direction.South,
Direction.South => Direction.North,
Direction.Down => Direction.Up,
Direction.Up => Direction.Down,
_ => Direction.Up,
};
public static Direction[] HORIZONTAL =
[
Direction.South,
Direction.West,
Direction.North,
Direction.East,
];
public static Direction FromRotation(double rotation)
{
double floor = Math.Floor((rotation / 90.0) + 0.5);
int value = (int)floor & 3;
2024-03-05 21:49:29 +05:00
return FromHorizontal(value);
}
2024-03-05 21:49:29 +05:00
public static Direction FromHorizontal(int value)
{
return HORIZONTAL[Math.Abs(value % HORIZONTAL.Length)];
}
}