package openmods.renderer.rotations;
import net.minecraft.client.renderer.RenderBlocks;
import openmods.geometry.Orientation;
public class SideRotationConfigurator {
public static final int ROTATE_CW = 1;
public static final int ROTATE_CCW = 2;
public static final int INVERT = 3;
public void setupFaces(RenderBlocks renderer, Orientation orientation) {
switch (orientation) {
// TOP = X+
case ZP_XP:
renderer.uvRotateTop = ROTATE_CW;
renderer.uvRotateBottom = ROTATE_CCW;
renderer.uvRotateNorth = INVERT;
renderer.uvRotateSouth = INVERT;
renderer.uvRotateWest = ROTATE_CW;
renderer.uvRotateEast = ROTATE_CCW;
break;
case ZN_XP:
renderer.uvRotateTop = ROTATE_CW;
renderer.uvRotateBottom = ROTATE_CCW;
renderer.uvRotateWest = ROTATE_CW;
renderer.uvRotateEast = ROTATE_CCW;
break;
case YP_XP:
renderer.uvRotateTop = ROTATE_CW;
renderer.uvRotateBottom = ROTATE_CCW;
renderer.uvRotateNorth = ROTATE_CW;
renderer.uvRotateSouth = ROTATE_CCW;
renderer.uvRotateWest = ROTATE_CW;
renderer.uvRotateEast = ROTATE_CCW;
break;
case YN_XP:
renderer.uvRotateTop = ROTATE_CW;
renderer.uvRotateBottom = ROTATE_CCW;
renderer.uvRotateNorth = ROTATE_CCW;
renderer.uvRotateSouth = ROTATE_CW;
renderer.uvRotateWest = ROTATE_CW;
renderer.uvRotateEast = ROTATE_CCW;
break;
// TOP = X-
case ZP_XN:
renderer.uvRotateTop = ROTATE_CCW;
renderer.uvRotateBottom = ROTATE_CW;
renderer.uvRotateWest = ROTATE_CCW;
renderer.uvRotateEast = ROTATE_CW;
break;
case ZN_XN:
renderer.uvRotateTop = ROTATE_CCW;
renderer.uvRotateBottom = ROTATE_CW;
renderer.uvRotateNorth = INVERT;
renderer.uvRotateSouth = INVERT;
renderer.uvRotateWest = ROTATE_CCW;
renderer.uvRotateEast = ROTATE_CW;
break;
case YN_XN:
renderer.uvRotateTop = ROTATE_CCW;
renderer.uvRotateBottom = ROTATE_CW;
renderer.uvRotateNorth = ROTATE_CW;
renderer.uvRotateSouth = ROTATE_CCW;
renderer.uvRotateWest = ROTATE_CCW;
renderer.uvRotateEast = ROTATE_CW;
break;
case YP_XN:
renderer.uvRotateTop = ROTATE_CCW;
renderer.uvRotateBottom = ROTATE_CW;
renderer.uvRotateNorth = ROTATE_CCW;
renderer.uvRotateSouth = ROTATE_CW;
renderer.uvRotateWest = ROTATE_CCW;
renderer.uvRotateEast = ROTATE_CW;
break;
// TOP = Y+
case ZP_YP:
renderer.uvRotateTop = ROTATE_CW;
renderer.uvRotateBottom = ROTATE_CCW;
break;
case ZN_YP:
renderer.uvRotateTop = ROTATE_CCW;
renderer.uvRotateBottom = ROTATE_CW;
break;
case XN_YP:
renderer.uvRotateTop = INVERT;
renderer.uvRotateBottom = INVERT;
break;
case XP_YP:
break;
// TOP = Y-
case ZP_YN:
renderer.uvRotateTop = ROTATE_CCW;
renderer.uvRotateBottom = ROTATE_CW;
renderer.uvRotateNorth = INVERT;
renderer.uvRotateSouth = INVERT;
renderer.uvRotateWest = INVERT;
renderer.uvRotateEast = INVERT;
break;
case ZN_YN:
renderer.uvRotateTop = ROTATE_CW;
renderer.uvRotateBottom = ROTATE_CCW;
renderer.uvRotateNorth = INVERT;
renderer.uvRotateSouth = INVERT;
renderer.uvRotateWest = INVERT;
renderer.uvRotateEast = INVERT;
break;
case XP_YN:
renderer.uvRotateTop = INVERT;
renderer.uvRotateBottom = INVERT;
renderer.uvRotateNorth = INVERT;
renderer.uvRotateSouth = INVERT;
renderer.uvRotateWest = INVERT;
renderer.uvRotateEast = INVERT;
break;
case XN_YN:
renderer.uvRotateNorth = INVERT;
renderer.uvRotateSouth = INVERT;
renderer.uvRotateWest = INVERT;
renderer.uvRotateEast = INVERT;
break;
// TOP = Z+
case YN_ZP:
renderer.uvRotateTop = INVERT;
renderer.uvRotateBottom = INVERT;
renderer.uvRotateNorth = ROTATE_CW;
renderer.uvRotateSouth = ROTATE_CCW;
renderer.uvRotateWest = ROTATE_CW;
renderer.uvRotateEast = ROTATE_CCW;
break;
case YP_ZP:
renderer.uvRotateTop = INVERT;
renderer.uvRotateBottom = INVERT;
renderer.uvRotateNorth = ROTATE_CW;
renderer.uvRotateSouth = ROTATE_CCW;
renderer.uvRotateWest = ROTATE_CCW;
renderer.uvRotateEast = ROTATE_CW;
break;
case XN_ZP:
renderer.uvRotateTop = INVERT;
renderer.uvRotateBottom = INVERT;
renderer.uvRotateNorth = ROTATE_CW;
renderer.uvRotateSouth = ROTATE_CCW;
renderer.uvRotateWest = INVERT;
renderer.uvRotateEast = INVERT;
break;
case XP_ZP:
renderer.uvRotateTop = INVERT;
renderer.uvRotateBottom = INVERT;
renderer.uvRotateNorth = ROTATE_CW;
renderer.uvRotateSouth = ROTATE_CCW;
break;
// TOP = Z-
case YP_ZN:
renderer.uvRotateNorth = ROTATE_CCW;
renderer.uvRotateSouth = ROTATE_CW;
renderer.uvRotateWest = ROTATE_CW;
renderer.uvRotateEast = ROTATE_CCW;
break;
case YN_ZN:
renderer.uvRotateNorth = ROTATE_CCW;
renderer.uvRotateSouth = ROTATE_CW;
renderer.uvRotateWest = ROTATE_CCW;
renderer.uvRotateEast = ROTATE_CW;
break;
case XN_ZN:
renderer.uvRotateNorth = ROTATE_CCW;
renderer.uvRotateSouth = ROTATE_CW;
break;
case XP_ZN:
renderer.uvRotateNorth = ROTATE_CCW;
renderer.uvRotateSouth = ROTATE_CW;
renderer.uvRotateWest = INVERT;
renderer.uvRotateEast = INVERT;
break;
}
}
public static void resetFaces(RenderBlocks renderer) {
renderer.uvRotateBottom = 0;
renderer.uvRotateEast = 0;
renderer.uvRotateNorth = 0;
renderer.uvRotateSouth = 0;
renderer.uvRotateTop = 0;
renderer.uvRotateWest = 0;
}
}