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 var26 = 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] = var26;
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[] {var26, 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, var26, 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, var26, 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 TexturedQuad[] var22 = this.quadList;
088 int var23 = var22.length;
089
090 for (int var24 = 0; var24 < var23; ++var24)
091 {
092 TexturedQuad var25 = var22[var24];
093 var25.flipFace();
094 }
095 }
096 }
097
098 /**
099 * Draw the six sided box defined by this ModelBox
100 */
101 @SideOnly(Side.CLIENT)
102 public void render(Tessellator par1Tessellator, float par2)
103 {
104 TexturedQuad[] var3 = this.quadList;
105 int var4 = var3.length;
106
107 for (int var5 = 0; var5 < var4; ++var5)
108 {
109 TexturedQuad var6 = var3[var5];
110 var6.draw(par1Tessellator, par2);
111 }
112 }
113
114 public ModelBox func_78244_a(String par1Str)
115 {
116 this.field_78247_g = par1Str;
117 return this;
118 }
119 }