public static Vector3 ToRotation(this HexDirection3D direction) { if ((int)direction < 6) { return(new Vector3(0, 30 + (int)direction * 60, 0)); } return(new Vector3(0, 0, 0)); }
public HexCoordinates DirectionTransform(HexDirection3D dir) { if (dir == HexDirection3D.DOWN) { return(new HexCoordinates(this.X, this.Z, this.Depth - 1)); } if (dir == HexDirection3D.UP) { return(new HexCoordinates(this.X, this.Z, this.Depth + 1)); } return(DirectionTransform((HexDirection)dir, 0)); }
public static HexDirection3D Next(this HexDirection3D direction) //clockwise { if ((int)direction < 6) { return(direction == HexDirection3D.NW ? HexDirection3D.NE : (direction + 1)); //has specific check for the final index } if (direction == HexDirection3D.UP) { return(HexDirection3D.DOWN); } { return(HexDirection3D.UP); } }
public static HexDirection3D Previous(this HexDirection3D direction) //counterclockwise { if ((int)direction < 6) { return(direction == HexDirection3D.NE ? HexDirection3D.NW : (direction - 1)); //does what youd expect } if (direction == HexDirection3D.UP) { return(HexDirection3D.DOWN); } { return(HexDirection3D.UP); } }
public static HexDirection3D Opposite(this HexDirection3D direction) { if ((int)direction < 3) //still works, ish { return(direction + 3); // 0->3, 1->4, 2->5 } if ((int)direction < 6) { return(direction - 3); //etc } if (direction == HexDirection3D.UP) { return(HexDirection3D.DOWN); } return(HexDirection3D.UP); }
public static HexDirection3DFlags ConvertToFlag(this HexDirection3D value) { return((HexDirection3DFlags)(1 << (int)value)); }
public static bool CompareToNotFlag(this HexDirection3DFlags a, HexDirection3D b) { return((a & b.ConvertToFlag()) == b.ConvertToFlag()); }