package pneumaticCraft.client.model;
import net.minecraft.client.model.ModelBase;
import net.minecraft.client.model.ModelRenderer;
import net.minecraft.entity.Entity;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.ResourceLocation;
import org.lwjgl.opengl.GL11;
import pneumaticCraft.common.tileentity.TileEntityPneumaticDoor;
import pneumaticCraft.lib.Textures;
public class ModelPneumaticDoor extends ModelBase implements IBaseModel{
//fields
ModelRenderer Shape1;
ModelRenderer Shape2;
ModelRenderer Shape3;
ModelRenderer Shape4;
ModelRenderer Shape5;
ModelRenderer Shape6;
ModelRenderer Shape7;
ModelRenderer Shape8;
ModelRenderer Shape9;
public ModelPneumaticDoor(){
textureWidth = 64;
textureHeight = 32;
Shape1 = new ModelRenderer(this, 0, 24);
Shape1.addBox(0F, 0F, 0F, 16, 3, 3);
Shape1.setRotationPoint(-8F, -8F, -8F);
Shape1.setTextureSize(64, 32);
Shape1.mirror = true;
setRotation(Shape1, 0F, 0F, 0F);
Shape2 = new ModelRenderer(this, 38, 0);
Shape2.addBox(0F, 0F, 0F, 3, 3, 3);
Shape2.setRotationPoint(-8F, -5F, -8F);
Shape2.setTextureSize(64, 32);
Shape2.mirror = true;
setRotation(Shape2, 0F, 0F, 0F);
Shape3 = new ModelRenderer(this, 50, 0);
Shape3.addBox(0F, 0F, 0F, 2, 3, 3);
Shape3.setRotationPoint(-1F, -5F, -8F);
Shape3.setTextureSize(64, 32);
Shape3.mirror = true;
setRotation(Shape3, 0F, 0F, 0F);
Shape4 = new ModelRenderer(this, 38, 6);
Shape4.addBox(0F, 0F, 0F, 3, 3, 3);
Shape4.setRotationPoint(5F, -5F, -8F);
Shape4.setTextureSize(64, 32);
Shape4.mirror = true;
setRotation(Shape4, 0F, 0F, 0F);
Shape5 = new ModelRenderer(this, 0, 24);
Shape5.addBox(0F, 0F, 0F, 16, 2, 3);
Shape5.setRotationPoint(-8F, -2F, -8F);
Shape5.setTextureSize(64, 32);
Shape5.mirror = true;
setRotation(Shape5, 0F, 0F, 0F);
Shape6 = new ModelRenderer(this, 38, 12);
Shape6.addBox(0F, 0F, 0F, 3, 3, 3);
Shape6.setRotationPoint(-8F, 0F, -8F);
Shape6.setTextureSize(64, 32);
Shape6.mirror = true;
setRotation(Shape6, 0F, 0F, 0F);
Shape7 = new ModelRenderer(this, 50, 12);
Shape7.addBox(0F, 0F, 0F, 2, 3, 3);
Shape7.setRotationPoint(-1F, 0F, -8F);
Shape7.setTextureSize(64, 32);
Shape7.mirror = true;
setRotation(Shape7, 0F, 0F, 0F);
Shape8 = new ModelRenderer(this, 38, 18);
Shape8.addBox(0F, 0F, 0F, 3, 3, 3);
Shape8.setRotationPoint(5F, 0F, -8F);
Shape8.setTextureSize(64, 32);
Shape8.mirror = true;
setRotation(Shape8, 0F, 0F, 0F);
Shape9 = new ModelRenderer(this, 0, 0);
Shape9.addBox(0F, 0F, 0F, 16, 21, 3);
Shape9.setRotationPoint(-8F, 3F, -8F);
Shape9.setTextureSize(64, 32);
Shape9.mirror = true;
setRotation(Shape9, 0F, 0F, 0F);
}
@Override
public void render(Entity entity, float f, float f1, float f2, float f3, float f4, float f5){
super.render(entity, f, f1, f2, f3, f4, f5);
setRotationAngles(f, f1, f2, f3, f4, f5, entity);
Shape1.render(f5);
Shape2.render(f5);
Shape3.render(f5);
Shape4.render(f5);
Shape5.render(f5);
Shape6.render(f5);
Shape7.render(f5);
Shape8.render(f5);
Shape9.render(f5);
}
public void renderModel(float size){
Shape1.render(size);
Shape2.render(size);
Shape3.render(size);
Shape4.render(size);
Shape5.render(size);
Shape6.render(size);
Shape7.render(size);
Shape8.render(size);
Shape9.render(size);
}
private void setRotation(ModelRenderer model, float x, float y, float z){
model.rotateAngleX = x;
model.rotateAngleY = y;
model.rotateAngleZ = z;
}
@Override
public void renderStatic(float size, TileEntity tile){
}
@Override
public ResourceLocation getModelTexture(TileEntity tile){
return Textures.MODEL_PNEUMATIC_DOOR;
}
@Override
public boolean rotateModelBasedOnBlockMeta(){
return true;
}
@Override
public void renderDynamic(float size, TileEntity tile, float partialTicks){
if(tile instanceof TileEntityPneumaticDoor) {
float rotation = ((TileEntityPneumaticDoor)tile).oldRotation + (((TileEntityPneumaticDoor)tile).rotation - ((TileEntityPneumaticDoor)tile).oldRotation) * partialTicks;
boolean rightGoing = ((TileEntityPneumaticDoor)tile).rightGoing;
GL11.glTranslatef((rightGoing ? -1 : 1) * 6.5F / 16F, 0, -6.5F / 16F);
GL11.glRotatef(rotation, 0, rightGoing ? -1 : 1, 0);
GL11.glTranslatef((rightGoing ? -1 : 1) * -6.5F / 16F, 0, 6.5F / 16F);
if(tile.getBlockMetadata() < 6) renderModel(size);
} else {
GL11.glTranslated(0, 0.5, 0);
GL11.glScalef(0.5F, 0.5F, 0.5F);
renderModel(size);
}
}
}