Package mekanism.client.render.tileentity

Source Code of mekanism.client.render.tileentity.RenderTeleporter

package mekanism.client.render.tileentity;

import java.util.HashMap;

import mekanism.api.Coord4D;
import mekanism.api.EnumColor;
import mekanism.api.gas.GasRegistry;
import mekanism.client.render.MekanismRenderer;
import mekanism.client.render.MekanismRenderer.DisplayInteger;
import mekanism.client.render.MekanismRenderer.Model3D;
import mekanism.common.Mekanism;
import mekanism.common.tile.TileEntityTeleporter;

import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer;
import net.minecraft.init.Blocks;
import net.minecraft.tileentity.TileEntity;
import net.minecraftforge.common.util.ForgeDirection;

import org.lwjgl.opengl.GL11;

public class RenderTeleporter extends TileEntitySpecialRenderer
{
  private HashMap<Integer, DisplayInteger> cachedOverlays = new HashMap<Integer, DisplayInteger>();

  @Override
  public void renderTileEntityAt(TileEntity tileEntity, double x, double y, double z, float partialTick)
  {
    renderAModelAt((TileEntityTeleporter)tileEntity, x, y, z, partialTick);
  }

  public void renderAModelAt(TileEntityTeleporter tileEntity, double x, double y, double z, float partialTick)
  {
    if(tileEntity.shouldRender)
    {
      push();

      GL11.glColor4f(EnumColor.PURPLE.getColor(0), EnumColor.PURPLE.getColor(1), EnumColor.PURPLE.getColor(2), 0.75F);

      bindTexture(MekanismRenderer.getBlocksTexture());
      GL11.glTranslatef((float)x, (float)y, (float)z);

      Coord4D obj = Coord4D.get(tileEntity).getFromSide(ForgeDirection.WEST);
      int type = 0;

      if(obj.getBlock(tileEntity.getWorldObj()) == Mekanism.BasicBlock && obj.getMetadata(tileEntity.getWorldObj()) == 7)
      {
        type = 1;
      }

      int display = getOverlayDisplay(type).display;
      GL11.glCallList(display);

      pop();
    }
  }

  private void pop()
  {
    GL11.glPopAttrib();
    MekanismRenderer.glowOff();
    MekanismRenderer.blendOff();
    GL11.glPopMatrix();
  }

  private void push()
  {
    GL11.glPushMatrix();
    GL11.glPushAttrib(GL11.GL_ENABLE_BIT);
    GL11.glEnable(GL11.GL_CULL_FACE);
    GL11.glDisable(GL11.GL_LIGHTING);
    MekanismRenderer.glowOn();
    MekanismRenderer.blendOn();
  }

  private DisplayInteger getOverlayDisplay(Integer type)
  {
    if(cachedOverlays.containsKey(type))
    {
      return cachedOverlays.get(type);
    }

    Model3D toReturn = new Model3D();
    toReturn.baseBlock = Blocks.stone;
    toReturn.setTexture(GasRegistry.getGas("oxygen").getIcon());

    DisplayInteger display = DisplayInteger.createAndStart();

    if(cachedOverlays.containsKey(type))
    {
      cachedOverlays.get(type);
    }
    else {
      cachedOverlays.put(type, display);
    }

    switch(type)
    {
      case 0:
      {
        toReturn.minY = 1;
        toReturn.maxY = 3;

        toReturn.minX = 0.46;
        toReturn.minZ = 0;
        toReturn.maxX = 0.54;
        toReturn.maxZ = 1;
        break;
      }
      case 1:
      {
        toReturn.minY = 1;
        toReturn.maxY = 3;

        toReturn.minX = 0;
        toReturn.minZ = 0.46;
        toReturn.maxX = 1;
        toReturn.maxZ = 0.54;
        break;
      }
    }

    MekanismRenderer.renderObject(toReturn);
    display.endList();

    return display;
  }
}
TOP

Related Classes of mekanism.client.render.tileentity.RenderTeleporter

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.