001 package net.minecraft.src;
002
003 import cpw.mods.fml.common.Side;
004 import cpw.mods.fml.common.asm.SideOnly;
005
006 public class ModelBox
007 {
008 /**
009 * The (x,y,z) vertex positions and (u,v) texture coordinates for each of the 8 points on a cube
010 */
011 private PositionTextureVertex[] vertexPositions;
012
013 /** An array of 6 TexturedQuads, one for each face of a cube */
014 private TexturedQuad[] quadList;
015
016 /** X vertex coordinate of lower box corner */
017 public final float posX1;
018
019 /** Y vertex coordinate of lower box corner */
020 public final float posY1;
021
022 /** Z vertex coordinate of lower box corner */
023 public final float posZ1;
024
025 /** X vertex coordinate of upper box corner */
026 public final float posX2;
027
028 /** Y vertex coordinate of upper box corner */
029 public final float posY2;
030
031 /** Z vertex coordinate of upper box corner */
032 public final float posZ2;
033 public String field_78247_g;
034
035 public ModelBox(ModelRenderer par1ModelRenderer, int par2, int par3, float par4, float par5, float par6, int par7, int par8, int par9, float par10)
036 {
037 this.posX1 = par4;
038 this.posY1 = par5;
039 this.posZ1 = par6;
040 this.posX2 = par4 + (float)par7;
041 this.posY2 = par5 + (float)par8;
042 this.posZ2 = par6 + (float)par9;
043 this.vertexPositions = new PositionTextureVertex[8];
044 this.quadList = new TexturedQuad[6];
045 float var11 = par4 + (float)par7;
046 float var12 = par5 + (float)par8;
047 float var13 = par6 + (float)par9;
048 par4 -= par10;
049 par5 -= par10;
050 par6 -= par10;
051 var11 += par10;
052 var12 += par10;
053 var13 += par10;
054
055 if (par1ModelRenderer.mirror)
056 {
057 float var14 = var11;
058 var11 = par4;
059 par4 = var14;
060 }
061
062 PositionTextureVertex var23 = new PositionTextureVertex(par4, par5, par6, 0.0F, 0.0F);
063 PositionTextureVertex var15 = new PositionTextureVertex(var11, par5, par6, 0.0F, 8.0F);
064 PositionTextureVertex var16 = new PositionTextureVertex(var11, var12, par6, 8.0F, 8.0F);
065 PositionTextureVertex var17 = new PositionTextureVertex(par4, var12, par6, 8.0F, 0.0F);
066 PositionTextureVertex var18 = new PositionTextureVertex(par4, par5, var13, 0.0F, 0.0F);
067 PositionTextureVertex var19 = new PositionTextureVertex(var11, par5, var13, 0.0F, 8.0F);
068 PositionTextureVertex var20 = new PositionTextureVertex(var11, var12, var13, 8.0F, 8.0F);
069 PositionTextureVertex var21 = new PositionTextureVertex(par4, var12, var13, 8.0F, 0.0F);
070 this.vertexPositions[0] = var23;
071 this.vertexPositions[1] = var15;
072 this.vertexPositions[2] = var16;
073 this.vertexPositions[3] = var17;
074 this.vertexPositions[4] = var18;
075 this.vertexPositions[5] = var19;
076 this.vertexPositions[6] = var20;
077 this.vertexPositions[7] = var21;
078 this.quadList[0] = new TexturedQuad(new PositionTextureVertex[] {var19, var15, var16, var20}, par2 + par9 + par7, par3 + par9, par2 + par9 + par7 + par9, par3 + par9 + par8, par1ModelRenderer.textureWidth, par1ModelRenderer.textureHeight);
079 this.quadList[1] = new TexturedQuad(new PositionTextureVertex[] {var23, var18, var21, var17}, par2, par3 + par9, par2 + par9, par3 + par9 + par8, par1ModelRenderer.textureWidth, par1ModelRenderer.textureHeight);
080 this.quadList[2] = new TexturedQuad(new PositionTextureVertex[] {var19, var18, var23, var15}, par2 + par9, par3, par2 + par9 + par7, par3 + par9, par1ModelRenderer.textureWidth, par1ModelRenderer.textureHeight);
081 this.quadList[3] = new TexturedQuad(new PositionTextureVertex[] {var16, var17, var21, var20}, par2 + par9 + par7, par3 + par9, par2 + par9 + par7 + par7, par3, par1ModelRenderer.textureWidth, par1ModelRenderer.textureHeight);
082 this.quadList[4] = new TexturedQuad(new PositionTextureVertex[] {var15, var23, var17, var16}, par2 + par9, par3 + par9, par2 + par9 + par7, par3 + par9 + par8, par1ModelRenderer.textureWidth, par1ModelRenderer.textureHeight);
083 this.quadList[5] = new TexturedQuad(new PositionTextureVertex[] {var18, var19, var20, var21}, par2 + par9 + par7 + par9, par3 + par9, par2 + par9 + par7 + par9 + par7, par3 + par9 + par8, par1ModelRenderer.textureWidth, par1ModelRenderer.textureHeight);
084
085 if (par1ModelRenderer.mirror)
086 {
087 for (int var22 = 0; var22 < this.quadList.length; ++var22)
088 {
089 this.quadList[var22].flipFace();
090 }
091 }
092 }
093
094 /**
095 * Draw the six sided box defined by this ModelBox
096 */
097 @SideOnly(Side.CLIENT)
098 public void render(Tessellator par1Tessellator, float par2)
099 {
100 for (int var3 = 0; var3 < this.quadList.length; ++var3)
101 {
102 this.quadList[var3].draw(par1Tessellator, par2);
103 }
104 }
105
106 public ModelBox func_78244_a(String par1Str)
107 {
108 this.field_78247_g = par1Str;
109 return this;
110 }
111 }