protected void renderModel(float bladeRotatation, int face, int height) { float[] rot = ITorque.forgeDiretctionToRotationMatrix[face]; if (rot[0] != 0) { GL11.glRotatef(rot[0], 1, 0, 0); } if (rot[1] != 0) { GL11.glRotatef(rot[1], 0, 1, 0); } if (rot[2] != 0) { GL11.glRotatef(rot[2], 0, 0, 1); } float textureWidth = model.textureWidth(); float textureHeight = model.textureHeight(); GL11.glRotatef(bladeRotatation, 0, 0, 1); windmillShaft.render(model.textureWidth(), model.textureHeight()); for (int i = 0; i < 4; i++) { GL11.glRotatef(90, 0, 0, 1); GL11.glPushMatrix(); bladeShaft.render(textureWidth, textureHeight); for (int k = 1; k < height; k++) { blade.render(textureWidth, textureHeight); if (k == height - 1) { bladeJoint.render(textureWidth, textureHeight); } if (k < height - 1) { GL11.glTranslatef(0, 1, 0); } } GL11.glPopMatrix(); } }
public RenderWindmillBlades() { ModelLoader loader = new ModelLoader(); model = loader.loadModel( getClass() .getResourceAsStream( "/assets/ancientwarfare/models/automation/windmill_blade.m2f")); cube = loader.loadModel( getClass().getResourceAsStream("/assets/ancientwarfare/models/automation/cube.m2f")); windmillShaft = model.getPiece("windmillShaft"); blade = model.getPiece("blade"); bladeJoint = model.getPiece("bladeJoint"); bladeShaft = model.getPiece("bladeShaft"); texture = new ResourceLocation("ancientwarfare", "textures/model/automation/windmill_blade.png"); cubeTexture = new ResourceLocation( "ancientwarfare", "textures/model/automation/windmill_blade_block.png"); }
@Override public void renderItem(ItemRenderType type, ItemStack item, Object... data) { GL11.glPushMatrix(); GL11.glPushAttrib(GL11.GL_ALL_ATTRIB_BITS); bindTexture(texture); GL11.glTranslatef(0.5f, -0.25f, 0.5f); GL11.glEnable(GL12.GL_RESCALE_NORMAL); GL11.glScalef(0.35f, 0.35f, 0.35f); float[] rot = ITorque.forgeDiretctionToRotationMatrix[2]; if (rot[0] != 0) { GL11.glRotatef(rot[0], 1, 0, 0); } if (rot[1] != 0) { GL11.glRotatef(rot[1], 0, 1, 0); } if (rot[2] != 0) { GL11.glRotatef(rot[2], 0, 0, 1); } float textureWidth = model.textureWidth(); float textureHeight = model.textureHeight(); windmillShaft.setRotation(0, 0, 0); windmillShaft.render(textureWidth, textureHeight); int height = 5; bladeShaft.render(textureWidth, textureHeight); for (int k = 1; k < height; k++) { blade.render(textureWidth, textureHeight); if (k == height - 1) { bladeJoint.render(textureWidth, textureHeight); } if (k < height - 1) { GL11.glTranslatef(0, 1, 0); } } GL11.glPopAttrib(); GL11.glPopMatrix(); }
@Override public void renderTileEntityAt(TileEntity te, double x, double y, double z, float delta) { TileWindmillBlade blade = (TileWindmillBlade) te; if (blade.isControl) { GL11.glPushMatrix(); bindTexture(texture); GL11.glTranslated(x + 0.5d, y + 0.5d, z + 0.5d); renderModel( -getRotation(blade.rotation, blade.prevRotation, delta), blade.windmillDirection, (blade.windmillSize - 1) / 2); GL11.glPopMatrix(); } else if (blade.controlPos == null) { GL11.glPushMatrix(); bindTexture(cubeTexture); GL11.glTranslated(x + 0.5d, y + 0.5d, z + 0.5d); cube.renderModel(); GL11.glPopMatrix(); } }