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