Package mekanism.client.model

Source Code of mekanism.client.model.ModelBoxSelectiveFace

package mekanism.client.model;

import net.minecraft.client.model.PositionTextureVertex;
import net.minecraft.client.model.TexturedQuad;
import net.minecraft.client.renderer.Tessellator;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;

@SideOnly(Side.CLIENT)
public class ModelBoxSelectiveFace
{
  private PositionTextureVertex[] vertexPositions;

  private TexturedQuad[] quadList;

  public final float posX1;
  public final float posY1;
  public final float posZ1;

  public final float posX2;
  public final float posY2;
  public final float posZ2;

  public ModelBoxSelectiveFace(ModelRendererSelectiveFace modelRenderer, int textureOffsetU, int textureOffsetV, float xMin, float yMin, float zMin, int xSize, int ySize, int zSize, float scaleFactor)
  {
    posX1 = xMin;
    posY1 = yMin;
    posZ1 = zMin;

    posX2 = xMin + xSize;
    posY2 = yMin + ySize;
    posZ2 = zMin + zSize;

    vertexPositions = new PositionTextureVertex[8];

    quadList = new TexturedQuad[6];

    float xMax = xMin + xSize;
    float yMax = yMin + ySize;
    float zMax = zMin + zSize;

    xMin -= scaleFactor;
    yMin -= scaleFactor;
    zMin -= scaleFactor;

    xMax += scaleFactor;
    yMax += scaleFactor;
    zMax += scaleFactor;

    if(modelRenderer.mirror)
    {
      float placeholder = xMax;
      xMax = xMin;
      xMin = placeholder;
    }

    PositionTextureVertex positiontexturevertex0 = new PositionTextureVertex(xMin, yMin, zMin, 0.0F, 0.0F);
    PositionTextureVertex positiontexturevertex1 = new PositionTextureVertex(xMax, yMin, zMin, 0.0F, 8.0F);
    PositionTextureVertex positiontexturevertex2 = new PositionTextureVertex(xMax, yMax, zMin, 8.0F, 8.0F);
    PositionTextureVertex positiontexturevertex3 = new PositionTextureVertex(xMin, yMax, zMin, 8.0F, 0.0F);
    PositionTextureVertex positiontexturevertex4 = new PositionTextureVertex(xMin, yMin, zMax, 0.0F, 0.0F);
    PositionTextureVertex positiontexturevertex5 = new PositionTextureVertex(xMax, yMin, zMax, 0.0F, 8.0F);
    PositionTextureVertex positiontexturevertex6 = new PositionTextureVertex(xMax, yMax, zMax, 8.0F, 8.0F);
    PositionTextureVertex positiontexturevertex7 = new PositionTextureVertex(xMin, yMax, zMax, 8.0F, 0.0F);

    vertexPositions[0] = positiontexturevertex0;
    vertexPositions[1] = positiontexturevertex1;
    vertexPositions[2] = positiontexturevertex2;
    vertexPositions[3] = positiontexturevertex3;
    vertexPositions[4] = positiontexturevertex4;
    vertexPositions[5] = positiontexturevertex5;
    vertexPositions[6] = positiontexturevertex6;
    vertexPositions[7] = positiontexturevertex7;

    quadList[0] = new TexturedQuad(new PositionTextureVertex[] {positiontexturevertex2, positiontexturevertex3, positiontexturevertex7, positiontexturevertex6}, textureOffsetU + zSize + xSize, textureOffsetV + zSize, textureOffsetU + zSize + xSize + xSize, textureOffsetV, modelRenderer.textureWidth, modelRenderer.textureHeight);
    quadList[1] = new TexturedQuad(new PositionTextureVertex[] {positiontexturevertex5, positiontexturevertex4, positiontexturevertex0, positiontexturevertex1}, textureOffsetU + zSize, textureOffsetV, textureOffsetU + zSize + xSize, textureOffsetV + zSize, modelRenderer.textureWidth, modelRenderer.textureHeight);
    quadList[2] = new TexturedQuad(new PositionTextureVertex[] {positiontexturevertex4, positiontexturevertex5, positiontexturevertex6, positiontexturevertex7}, textureOffsetU + zSize + xSize + zSize, textureOffsetV + zSize, textureOffsetU + zSize + xSize + zSize + xSize, textureOffsetV + zSize + ySize, modelRenderer.textureWidth, modelRenderer.textureHeight);
    quadList[3] = new TexturedQuad(new PositionTextureVertex[] {positiontexturevertex1, positiontexturevertex0, positiontexturevertex3, positiontexturevertex2}, textureOffsetU + zSize, textureOffsetV + zSize, textureOffsetU + zSize + xSize, textureOffsetV + zSize + ySize, modelRenderer.textureWidth, modelRenderer.textureHeight);
    quadList[4] = new TexturedQuad(new PositionTextureVertex[] {positiontexturevertex0, positiontexturevertex4, positiontexturevertex7, positiontexturevertex3}, textureOffsetU, textureOffsetV + zSize, textureOffsetU + zSize, textureOffsetV + zSize + ySize, modelRenderer.textureWidth, modelRenderer.textureHeight);
    quadList[5] = new TexturedQuad(new PositionTextureVertex[] {positiontexturevertex5, positiontexturevertex1, positiontexturevertex2, positiontexturevertex6}, textureOffsetU + zSize + xSize, textureOffsetV + zSize, textureOffsetU + zSize + xSize + zSize, textureOffsetV + zSize + ySize, modelRenderer.textureWidth, modelRenderer.textureHeight);

    if(modelRenderer.mirror)
    {
      for(int quad = 0; quad < quadList.length; quad++)
      {
        quadList[quad].flipFace();
      }
    }
  }

  @SideOnly(Side.CLIENT)
  public void render(Tessellator tessellator, boolean[] skippedFaces, float scaleFactor)
  {
    if(skippedFaces.length == quadList.length)
    {
      for(int i = 0; i < skippedFaces.length; ++i)
      {
        if(!skippedFaces[i])
        {
          quadList[i].draw(tessellator, scaleFactor);
        }
      }
    }
  }
}
TOP

Related Classes of mekanism.client.model.ModelBoxSelectiveFace

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.