001 package net.minecraft.src; 002 003 import cpw.mods.fml.common.Side; 004 import cpw.mods.fml.common.asm.SideOnly; 005 006 @SideOnly(Side.CLIENT) 007 public class TexturedQuad 008 { 009 public PositionTextureVertex[] vertexPositions; 010 public int nVertices; 011 private boolean invertNormal; 012 013 public TexturedQuad(PositionTextureVertex[] par1ArrayOfPositionTextureVertex) 014 { 015 this.nVertices = 0; 016 this.invertNormal = false; 017 this.vertexPositions = par1ArrayOfPositionTextureVertex; 018 this.nVertices = par1ArrayOfPositionTextureVertex.length; 019 } 020 021 public TexturedQuad(PositionTextureVertex[] par1ArrayOfPositionTextureVertex, int par2, int par3, int par4, int par5, float par6, float par7) 022 { 023 this(par1ArrayOfPositionTextureVertex); 024 float var8 = 0.0F / par6; 025 float var9 = 0.0F / par7; 026 par1ArrayOfPositionTextureVertex[0] = par1ArrayOfPositionTextureVertex[0].setTexturePosition((float)par4 / par6 - var8, (float)par3 / par7 + var9); 027 par1ArrayOfPositionTextureVertex[1] = par1ArrayOfPositionTextureVertex[1].setTexturePosition((float)par2 / par6 + var8, (float)par3 / par7 + var9); 028 par1ArrayOfPositionTextureVertex[2] = par1ArrayOfPositionTextureVertex[2].setTexturePosition((float)par2 / par6 + var8, (float)par5 / par7 - var9); 029 par1ArrayOfPositionTextureVertex[3] = par1ArrayOfPositionTextureVertex[3].setTexturePosition((float)par4 / par6 - var8, (float)par5 / par7 - var9); 030 } 031 032 public void flipFace() 033 { 034 PositionTextureVertex[] var1 = new PositionTextureVertex[this.vertexPositions.length]; 035 036 for (int var2 = 0; var2 < this.vertexPositions.length; ++var2) 037 { 038 var1[var2] = this.vertexPositions[this.vertexPositions.length - var2 - 1]; 039 } 040 041 this.vertexPositions = var1; 042 } 043 044 public void draw(Tessellator par1Tessellator, float par2) 045 { 046 Vec3 var3 = this.vertexPositions[1].vector3D.subtract(this.vertexPositions[0].vector3D); 047 Vec3 var4 = this.vertexPositions[1].vector3D.subtract(this.vertexPositions[2].vector3D); 048 Vec3 var5 = var4.crossProduct(var3).normalize(); 049 par1Tessellator.startDrawingQuads(); 050 051 if (this.invertNormal) 052 { 053 par1Tessellator.setNormal(-((float)var5.xCoord), -((float)var5.yCoord), -((float)var5.zCoord)); 054 } 055 else 056 { 057 par1Tessellator.setNormal((float)var5.xCoord, (float)var5.yCoord, (float)var5.zCoord); 058 } 059 060 for (int var6 = 0; var6 < 4; ++var6) 061 { 062 PositionTextureVertex var7 = this.vertexPositions[var6]; 063 par1Tessellator.addVertexWithUV((double)((float)var7.vector3D.xCoord * par2), (double)((float)var7.vector3D.yCoord * par2), (double)((float)var7.vector3D.zCoord * par2), (double)var7.texturePositionX, (double)var7.texturePositionY); 064 } 065 066 par1Tessellator.draw(); 067 } 068 }