private static int AdjacentHexagonHeight(AdjBlendTile adj_tile) { int height = 0; switch (adj_tile) { case AdjBlendTile.L: case AdjBlendTile.LC: case AdjBlendTile.lc: height = -1; break; case AdjBlendTile.H1: height = 1; break; case AdjBlendTile.H2: height = 2; break; case AdjBlendTile.H3: height = 3; break; case AdjBlendTile.H4: height = 4; break; case AdjBlendTile.X: height = 6; break; } return(height); }
public void ShiftReverse() { AdjBlendTile storage = _adj_tiles[0]; for (int d = 0; d < 5; d++) { _adj_tiles[d] = _adj_tiles[d + 1]; } _adj_tiles[5] = storage; }
public void ShiftForward() { AdjBlendTile storage = _adj_tiles[5]; for (int d = 5; d > 0; d--) { _adj_tiles[d] = _adj_tiles[d - 1]; } _adj_tiles[0] = storage; }
private static BlendTile ClassifyAdjacentTile(AdjBlendTile adj_tile) { BlendTile tile = BlendTile.None; switch (adj_tile) { case AdjBlendTile.BC: tile = BlendTile.Triple; break; case AdjBlendTile.bc: case AdjBlendTile.LC: case AdjBlendTile.lc: tile = BlendTile.Single; break; } return(tile); }
private static int CalculateAdjacentShift(BlendTile tile, AdjBlendTile adj_tile, int d) { if (tile == BlendTile.Triple) { return(MeshGeneration.D[5, d]); } else if (tile == BlendTile.Single) { if (adj_tile == AdjBlendTile.bc || adj_tile == AdjBlendTile.lc) { return(MeshGeneration.D[4, d]); } else { return(MeshGeneration.D[3, d]); } } else { return(0); } }
public static char Key(this AdjBlendTile rule_flag) { switch (rule_flag) { case AdjBlendTile.BC: return('b'); case AdjBlendTile.bc: return('c'); case AdjBlendTile.L: return('d'); case AdjBlendTile.LC: return('e'); case AdjBlendTile.lc: return('f'); case AdjBlendTile.H1: return('g'); case AdjBlendTile.H2: return('h'); case AdjBlendTile.H3: return('i'); case AdjBlendTile.H4: return('j'); case AdjBlendTile.X: return('k'); default: return('a'); } }