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; } }
@Override protected void renderTileEntity(@Nonnull TilePowerMonitor te, @Nonnull IBlockState blockState, float partialTicks, int destroyStage) { boolean isPainted = te.getPaintSource() != null; VertexRotationFacing xform = new VertexRotationFacing(te.getFacing()); xform.setCenter(new Vector3d(0.5, 0.5, 0.5)); xform.setRotation(EnumFacing.SOUTH); te.bindTexture(); Helper helper = threadLocalHelper.get(); BufferBuilder tes = Tessellator.getInstance().getBuffer(); tes.begin(GL11.GL_QUADS, DefaultVertexFormats.POSITION_TEX_COLOR_NORMAL); if (isPainted) { helper.setupVertices(bb2, xform); helper.renderSingleFace(tes, EnumFacing.SOUTH, 0 * px, 14 * px, 0 * px, 14 * px, xform, Helper.stdBrightness, false); } else { helper.setupVertices(bb1, xform); helper.renderSingleFace(tes, EnumFacing.SOUTH, 1 * px, 15 * px, 1 * px, 15 * px, xform, Helper.stdBrightness, false); } Tessellator.getInstance().draw(); }
private void mkQuads() { VertexRotationFacing rot = new VertexRotationFacing(face); rot.setCenter(CENTER); rot.setRotation(EnumFacing.NORTH);
VertexRotationFacing rot = new VertexRotationFacing(EnumFacing.NORTH); rot.setCenter(CENTER); rot.setRotation(facing);
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; }