public ObjectOrientation(ObjectHorizontalVector horizontal, ObjectVerticalVector vertical)
 {
     Name = (horizontal, vertical) switch
     {
         (ObjectHorizontalVector.Left, ObjectVerticalVector.Down) => ObjectOrientationName.DownLeft,
         (ObjectHorizontalVector.Left, ObjectVerticalVector.Neutral) => ObjectOrientationName.Left,
         (ObjectHorizontalVector.Left, ObjectVerticalVector.Up) => ObjectOrientationName.UpLeft,
         (ObjectHorizontalVector.Neutral, ObjectVerticalVector.Down) => ObjectOrientationName.Down,
         (ObjectHorizontalVector.Neutral, ObjectVerticalVector.Up) => ObjectOrientationName.Up,
         (ObjectHorizontalVector.Right, ObjectVerticalVector.Down) => ObjectOrientationName.DownRight,
         (ObjectHorizontalVector.Right, ObjectVerticalVector.Neutral) => ObjectOrientationName.Right,
         (ObjectHorizontalVector.Right, ObjectVerticalVector.Up) => ObjectOrientationName.UpRight,
         _ => throw new ArgumentOutOfRangeException()
     };
 }
 public ObjectOrientation(ObjectOrientationName name)
 {
     Name = name;
 }