mirror of
https://github.com/ClassiCube/MCGalaxy.git
synced 2025-09-23 20:53:40 -04:00
Fix /spin and rotating resulting in air no longer being pasted. (Thanks goodlyay)
This commit is contained in:
parent
08186c876c
commit
bd874937e4
@ -22,9 +22,9 @@ namespace MCGalaxy.Drawing {
|
||||
public static class Flip {
|
||||
|
||||
public static CopyState RotateX(CopyState state, int angle) {
|
||||
CopyState newState = Clone(state);
|
||||
newState.Height = angle == 180 ? state.Height : state.Length;
|
||||
newState.Length = angle == 180 ? state.Length : state.Height;
|
||||
CopyState newState = Clone(state);
|
||||
newState.Height = angle == 180 ? state.Height : state.Length;
|
||||
newState.Length = angle == 180 ? state.Length : state.Height;
|
||||
|
||||
int[] m = { posX, negZ, posY };
|
||||
if (angle == 180) { m[1] = negY; m[2] = negZ; }
|
||||
@ -33,9 +33,9 @@ namespace MCGalaxy.Drawing {
|
||||
}
|
||||
|
||||
public static CopyState RotateY(CopyState state, int angle) {
|
||||
CopyState newState = Clone(state);
|
||||
newState.Width = angle == 180 ? state.Width : state.Length;
|
||||
newState.Length = angle == 180 ? state.Length : state.Width;
|
||||
CopyState newState = Clone(state);
|
||||
newState.Width = angle == 180 ? state.Width : state.Length;
|
||||
newState.Length = angle == 180 ? state.Length : state.Width;
|
||||
|
||||
int[] m = { negZ, posY, posX };
|
||||
if (angle == 180) { m[0] = negX; m[2] = negZ; }
|
||||
@ -44,9 +44,9 @@ namespace MCGalaxy.Drawing {
|
||||
}
|
||||
|
||||
public static CopyState RotateZ(CopyState state, int angle) {
|
||||
CopyState newState = Clone(state);
|
||||
newState.Width = angle == 180 ? state.Width : state.Height;
|
||||
newState.Height = angle == 180 ? state.Height : state.Width;
|
||||
CopyState newState = Clone(state);
|
||||
newState.Width = angle == 180 ? state.Width : state.Height;
|
||||
newState.Height = angle == 180 ? state.Height : state.Width;
|
||||
|
||||
int[] m = { posY, negX, posZ };
|
||||
if (angle == 180) { m[0] = negX; m[1] = negY; }
|
||||
@ -73,7 +73,7 @@ namespace MCGalaxy.Drawing {
|
||||
return newState;
|
||||
}
|
||||
|
||||
const int posX = 0x100, negX = 0x200, posY = 0x010, negY = 0x020, posZ = 0x001, negZ = 0x002;
|
||||
const int posX = 0x100, negX = 0x200, posY = 0x010, negY = 0x020, posZ = 0x001, negZ = 0x002;
|
||||
static int Rotate(int row, int x, int y, int z, CopyState state) {
|
||||
switch (row) {
|
||||
case posX: return x;
|
||||
@ -86,12 +86,13 @@ namespace MCGalaxy.Drawing {
|
||||
return 0;
|
||||
}
|
||||
|
||||
static CopyState Clone(CopyState state) {
|
||||
CopyState newState = new CopyState(state.X, state.Y, state.Z,
|
||||
state.Width, state.Height, state.Length);
|
||||
newState.UsedBlocks = state.UsedBlocks;
|
||||
return newState;
|
||||
}
|
||||
static CopyState Clone(CopyState state) {
|
||||
CopyState newState = new CopyState(state.X, state.Y, state.Z,
|
||||
state.Width, state.Height, state.Length);
|
||||
newState.UsedBlocks = state.UsedBlocks;
|
||||
newState.PasteAir = state.PasteAir;
|
||||
return newState;
|
||||
}
|
||||
|
||||
|
||||
public static void MirrorX(CopyState state) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user