public EnumFacing rotate(@Nonnull EnumFacing dir) { if (dir.getFrontOffsetY() != 0) { return dir; } if (getAngle() == ROTATION_AMOUNT) { return dir.rotateAround(Axis.Y); } if (getAngle() == ROTATION_AMOUNT * 2) { return dir.getOpposite(); } if (getAngle() == ROTATION_AMOUNT * 3) { return dir.rotateAround(Axis.Y).rotateAround(Axis.Y).rotateAround(Axis.Y); } return dir; } }
EnumFacing rotate(VertexTransform xForm, EnumFacing dir) { if (xForm instanceof VertexRotationFacing) { double angle = ((VertexRotationFacing) xForm).getAngle(); if (angle < ROTATION_AMOUNT * 0.5 || angle >= ROTATION_AMOUNT * 3.5) { return dir; } else if (angle >= ROTATION_AMOUNT * 0.5 && angle < ROTATION_AMOUNT * 1.5) { return dir.rotateY(); } else if (angle >= ROTATION_AMOUNT * 1.5 && angle < ROTATION_AMOUNT * 2.5) { return dir.getOpposite(); } else if (angle >= ROTATION_AMOUNT * 2.5 && angle < ROTATION_AMOUNT * 3.5) { return dir.rotateYCCW(); } } return dir; }