/*
* Copyright (c) CovertJaguar, 2014 http://railcraft.info
*
* This code is the property of CovertJaguar
* and may only be used with explicit written
* permission unless otherwise specified on the
* license page at http://railcraft.info/wiki/info:license.
*/
package mods.railcraft.client.render;
import mods.railcraft.client.render.models.ModelSimple;
import mods.railcraft.client.render.models.tracks.ModelBufferStop;
import mods.railcraft.common.blocks.tracks.TileTrack;
import mods.railcraft.common.blocks.tracks.TrackBufferStop;
import mods.railcraft.common.core.RailcraftConstants;
import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.ResourceLocation;
import org.lwjgl.opengl.GL11;
/**
*
* @author CovertJaguar <http://www.railcraft.info>
*/
public class RenderTrackBuffer extends TileEntitySpecialRenderer {
// private static final RenderInfo board, bumper1, bumper2, baseBig, baseSmall;
//
// static {
// IIcon[] icons = TrackTextureLoader.INSTANCE.getTrackIcons(EnumTrack.BUFFER_STOP.getTrackSpec());
// float pix = RenderTools.PIXEL;
// board = new RenderInfo();
// board.texture = new IIcon[]{icons[2]};
// board.minX = pix * 2;
// board.minY = pix * 6;
// board.minZ = pix * 4;
// board.maxX = pix * 14;
// board.maxY = pix * 10;
// board.maxZ = pix * 6;
//
// bumper1 = new RenderInfo();
// bumper1.texture = new IIcon[]{icons[4]};
// bumper1.minX = pix * 3;
// bumper1.minY = pix * 7;
// bumper1.minZ = pix * 3;
// bumper1.maxX = pix * 5;
// bumper1.maxY = pix * 9;
// bumper1.maxZ = pix * 4;
//
// bumper2 = new RenderInfo();
// bumper2.texture = new IIcon[]{icons[4]};
// bumper2.minX = pix * 11;
// bumper2.minY = pix * 7;
// bumper2.minZ = pix * 3;
// bumper2.maxX = pix * 13;
// bumper2.maxY = pix * 9;
// bumper2.maxZ = pix * 4;
//
// baseBig = new RenderInfo();
// baseBig.texture = new IIcon[]{icons[4]};
// baseBig.minX = pix * 4;
// baseBig.minY = pix * 0;
// baseBig.minZ = pix * 5;
// baseBig.maxX = pix * 12;
// baseBig.maxY = pix * 9;
// baseBig.maxZ = pix * 9;
//
// baseSmall = new RenderInfo();
// baseSmall.texture = new IIcon[]{icons[4]};
// baseSmall.minX = pix * 5;
// baseSmall.minY = pix * 0;
// baseSmall.minZ = pix * 9;
// baseSmall.maxX = pix * 11;
// baseSmall.maxY = pix * 7;
// baseSmall.maxZ = pix * 13;
// }
//
// public static void render(RenderBlocks render, TrackBufferStop track, IBlockAccess world, int x, int y, int z, int meta) {
//
//// if (meta == 0) {
//// if (!track.isReversed()) {
//// board.reverseZ();
//// bumper1.reverseZ();
//// bumper2.reverseZ();
//// baseBig.reverseZ();
//// baseSmall.reverseZ();
//// }
//// } else {
//// board.texture = new int[]{68, 68, 69, 69, 69, 69};
//// board.rotate();
//// bumper1.rotate();
//// bumper2.rotate();
//// baseBig.rotate();
//// baseSmall.rotate();
////
//// if (track.isReversed()) {
//// board.reverseX();
//// bumper1.reverseX();
//// bumper2.reverseX();
//// baseBig.reverseX();
//// baseSmall.reverseX();
//// }
//// }
//
// GL11.glPushMatrix();
// Tessellator tess = Tessellator.instance;
// tess.draw();
// tess.startDrawingQuads();
// GL11.glTranslatef(-8, 0, -8);
// GL11.glRotatef(90, 0, 1, 0);
// GL11.glTranslatef(8, 0, (float) y % 16);
// RenderFakeBlock.renderBlock(board, world, x, y, z, true, false);
// RenderFakeBlock.renderBlock(bumper1, world, x, y, z, true, false);
// RenderFakeBlock.renderBlock(bumper2, world, x, y, z, true, false);
// RenderFakeBlock.renderBlock(baseBig, world, x, y, z, true, false);
// RenderFakeBlock.renderBlock(baseSmall, world, x, y, z, true, false);
// tess.draw();
// tess.startDrawingQuads();
// GL11.glPopMatrix();
// }
private static ModelSimple model = new ModelBufferStop();
private static ResourceLocation TEXTURE = new ResourceLocation(RailcraftConstants.TESR_TEXTURE_FOLDER + "track_buffer_stop.png");
@Override
public void renderTileEntityAt(TileEntity tile, double x, double y, double z, float time) {
if (tile instanceof TileTrack) {
if (((TileTrack) tile).getTrackInstance() instanceof TrackBufferStop) {
TrackBufferStop track = (TrackBufferStop) ((TileTrack) tile).getTrackInstance();
GL11.glPushMatrix();
GL11.glPushAttrib(GL11.GL_ENABLE_BIT);
GL11.glEnable(GL11.GL_LIGHTING);
GL11.glDisable(GL11.GL_BLEND);
GL11.glEnable(GL11.GL_CULL_FACE);
GL11.glColor3f(1, 1, 1);
GL11.glTranslatef((float) x, (float) y, (float) z);
model.resetRotation();
int meta = tile.getBlockMetadata();
if (meta == 1) {
model.rotateY((float) (Math.PI / 2.0));
}
if (meta == 0 != track.isReversed()) {
model.rotateY((float) Math.PI);
}
bindTexture(TEXTURE);
model.render(1f / 16f);
GL11.glPopAttrib();
GL11.glPopMatrix();
}
}
}
}