package mekanism.generators.client.model; import net.minecraft.client.model.ModelBase; import net.minecraft.client.model.ModelRenderer; import net.minecraft.client.renderer.GlStateManager; public class ModelTurbine extends ModelBase { private static float BLADE_ROTATE = 0.418879F; public ModelRenderer rod; public ModelRenderer extension_north; public ModelRenderer blade_north; public ModelRenderer extension_south; public ModelRenderer extension_west; public ModelRenderer extension_east; public ModelRenderer blade_south; public ModelRenderer blade_east; public ModelRenderer blade_west; public ModelTurbine() { textureWidth = 64; textureHeight = 64; extension_south = new ModelRenderer(this, 0, 0); extension_south.setRotationPoint(0.0F, 20.0F, 0.0F); extension_south.addBox(-1.0F, 0.0F, 1.0F, 2, 1, 3, 0.0F); setRotateAngle(extension_south, 0.0F, 0.0F, -BLADE_ROTATE); extension_west = new ModelRenderer(this, 0, 4); extension_west.setRotationPoint(0.0F, 20.0F, 0.0F); extension_west.addBox(-4.0F, 0.0F, -1.0F, 3, 1, 2, 0.0F); setRotateAngle(extension_west, BLADE_ROTATE, 0.0F, 0.0F); blade_east = new ModelRenderer(this, 10, 5); blade_east.setRotationPoint(0.0F, 20.0F, 0.0F); blade_east.addBox(4.0F, 0.0F, -1.5F, 4, 1, 3, 0.0F); setRotateAngle(blade_east, -BLADE_ROTATE, 0.0F, 0.0F); blade_north = new ModelRenderer(this, 10, 0); blade_north.setRotationPoint(0.0F, 20.0F, 0.0F); blade_north.addBox(-1.5F, 0.0F, -8.0F, 3, 1, 4, 0.0F); setRotateAngle(blade_north, 0.0F, 0.0F, BLADE_ROTATE); extension_east = new ModelRenderer(this, 0, 4); extension_east.setRotationPoint(0.0F, 20.0F, 0.0F); extension_east.addBox(1.0F, 0.0F, -1.0F, 3, 1, 2, 0.0F); setRotateAngle(extension_east, -BLADE_ROTATE, 0.0F, 0.0F); rod = new ModelRenderer(this, 0, 44); rod.setRotationPoint(-2.0F, 8.0F, -2.0F); rod.addBox(0.0F, 0.0F, 0.0F, 4, 16, 4, 0.0F); blade_south = new ModelRenderer(this, 10, 0); blade_south.setRotationPoint(0.0F, 20.0F, 0.0F); blade_south.addBox(-1.5F, 0.0F, 4.0F, 3, 1, 4, 0.0F); setRotateAngle(blade_south, 0.0F, 0.0F, -BLADE_ROTATE); extension_north = new ModelRenderer(this, 0, 0); extension_north.setRotationPoint(0.0F, 20.0F, 0.0F); extension_north.addBox(-1.0F, 0.0F, -4.0F, 2, 1, 3, 0.0F); setRotateAngle(extension_north, 0.0F, 0.0F, BLADE_ROTATE); blade_west = new ModelRenderer(this, 10, 5); blade_west.setRotationPoint(0.0F, 20.0F, 0.0F); blade_west.addBox(-8.0F, 0.0F, -1.5F, 4, 1, 3, 0.0F); setRotateAngle(blade_west, BLADE_ROTATE, 0.0F, 0.0F); } public void render(float size, int index) { GlStateManager.pushMatrix(); GlStateManager.rotate(index*5, 0.0F, 1.0F, 0.0F); float scale = index*0.5F; float widthDiv = 16; extension_south.render(size); extension_west.render(size); extension_east.render(size); extension_north.render(size); GlStateManager.pushMatrix(); GlStateManager.translate(-0.25F, 0.0F, 0.0F); GlStateManager.scale(1.0F + scale, 1.0F, 1.0F + scale/widthDiv); GlStateManager.translate(0.25F, 0.0F, 0.0F); blade_west.render(size); GlStateManager.popMatrix(); GlStateManager.pushMatrix(); GlStateManager.translate(0.25F, 0.0F, 0.0F); GlStateManager.scale(1.0F + scale, 1.0F, 1.0F + scale/widthDiv); GlStateManager.translate(-0.25F, 0.0F, 0.0F); blade_east.render(size); GlStateManager.popMatrix(); GlStateManager.pushMatrix(); GlStateManager.translate(0.0F, 0.0F, -0.25F); GlStateManager.scale(1.0F + scale/widthDiv, 1.0F, 1.0F + scale); GlStateManager.translate(0.0F, 0.0F, 0.25F); blade_north.render(size); GlStateManager.popMatrix(); GlStateManager.pushMatrix(); GlStateManager.translate(0.0F, 0.0F, 0.25F); GlStateManager.scale(1.0F + scale/widthDiv, 1.0F, 1.0F + scale); GlStateManager.translate(0.0F, 0.0F, -0.25F); blade_south.render(size); GlStateManager.popMatrix(); GlStateManager.popMatrix(); } public void setRotateAngle(ModelRenderer modelRenderer, float x, float y, float z) { modelRenderer.rotateAngleX = x; modelRenderer.rotateAngleY = y; modelRenderer.rotateAngleZ = z; } }