Beispiel #1
0
        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);
        }
Beispiel #2
0
        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);
            }
        }