public static void AddSingleVoxel(ref Schematic schematic, int x, int y, int z, Color color, RotationMode rotationMode, bool reverse) { Voxel voxel; ushort finalY; ushort finalX; ushort finalZ; switch (rotationMode) { case RotationMode.X: finalY = (ushort)(!reverse ? y : Schematic.MAX_WORLD_WIDTH - y); finalX = (ushort)(x); finalZ = (ushort)(z); voxel = new Voxel(finalY, finalZ, finalX, color.ColorToUInt()); break; case RotationMode.Y: //historic finalX = (ushort)(x); finalY = (ushort)(!reverse ? y : Schematic.MAX_WORLD_HEIGHT - y); finalZ = (ushort)(z); voxel = new Voxel(finalX, finalY, finalZ, color.ColorToUInt()); break; case RotationMode.Z: finalX = (ushort)(x); finalY = (ushort)(!reverse ? y : Schematic.MAX_WORLD_LENGTH - y); finalZ = (ushort)(z); voxel = new Voxel(finalZ, finalX, finalY, color.ColorToUInt()); break; default: throw new ArgumentOutOfRangeException(nameof(rotationMode), rotationMode, null); } AddBlock(ref schematic, voxel); }
public static void AddMultipleBlocks(ref Schematic schematic, int min, int max, int x, int y, Color color, RotationMode rotationMode) { switch (rotationMode) { case RotationMode.X: for (int i = min; i < max; i++) { AddBlock(ref schematic, new Voxel((ushort)i, (ushort)y, (ushort)x, color.ColorToUInt())); } break; case RotationMode.Y: for (int i = min; i < max; i++) { AddBlock(ref schematic, new Voxel((ushort)x, (ushort)i, (ushort)y, color.ColorToUInt())); } break; case RotationMode.Z: for (int i = min; i < max; i++) { AddBlock(ref schematic, new Voxel((ushort)y, (ushort)x, (ushort)i, color.ColorToUInt())); } break; default: throw new ArgumentOutOfRangeException(nameof(rotationMode), rotationMode, null); } }