package net.tropicraft.client.entity.render;
import net.minecraft.client.renderer.Tessellator;
import net.minecraft.client.renderer.entity.Render;
import net.minecraft.entity.Entity;
import net.minecraft.util.ResourceLocation;
import net.minecraftforge.common.util.ForgeDirection;
import net.tropicraft.entity.placeable.EntitySnareTrap;
import org.lwjgl.opengl.GL11;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
@SideOnly(Side.CLIENT)
public class RenderSnareTrap extends Render {
public RenderSnareTrap() {
this.shadowSize = 0.0f;
}
@Override
public void doRender(Entity var1, double var2, double var4, double var6, float var8, float var9) {
doRenderTrap((EntitySnareTrap)var1, var2, var4, var6, var8, var9);
}
private void doRenderTrap(EntitySnareTrap trap, double x, double y, double z, float yaw, float ticks) {
double xPos = trap.trapPosX-renderManager.renderPosX;
double yPos = trap.trapPosY-renderManager.renderPosY;
double zPos = trap.trapPosZ-renderManager.renderPosZ;
int height = trap.trapHeight;
ForgeDirection dir = trap.trapDirection;
boolean full = trap.getFull();
float entityHeight = trap.getEntityHeight();
float vOff = 0.05f;
float hOff = 0.2f;
//GL11.glPushMatrix();
//renderOffsetAABB(trap.boundingBox, x-trap.lastTickPosX, y-trap.lastTickPosY, z-trap.lastTickPosZ);
//GL11.glPopMatrix();
GL11.glDisable(GL11.GL_TEXTURE_2D);
GL11.glDisable(GL11.GL_LIGHTING);
Tessellator tessellator = Tessellator.instance;
if (!full) {
tessellator.startDrawing(3);
tessellator.setColorRGBA_F(0.75f, 0.75f, 0.75f, 0.25f);
tessellator.addVertex(xPos+hOff, yPos+vOff, zPos+hOff);
tessellator.addVertex(xPos+1-hOff, yPos+vOff, zPos+hOff);
tessellator.addVertex(xPos+1-hOff, yPos+vOff, zPos+1-hOff);
tessellator.addVertex(xPos+hOff, yPos+vOff, zPos+1-hOff);
tessellator.addVertex(xPos+hOff, yPos+vOff, zPos+hOff);
tessellator.draw();
tessellator.startDrawing(3);
tessellator.setColorRGBA_F(0.75f, 0.75f, 0.75f, 0.5f);
double startX = xPos+0.5-dir.offsetX*(1-2*hOff)/2.0;
double startY = yPos+vOff;
double startZ = zPos+0.5-dir.offsetZ*(1-2*hOff)/2.0;
double dx = xPos+0.5-dir.offsetX/2.0-startX;
double dy = yPos+height-0.5-startY;
double dz = zPos+0.5-dir.offsetZ/2.0-startZ;
int steps = 5;
for (int i = 0; i <= steps; ++i) {
float step = i/(float)steps;
tessellator.addVertex(startX+step*dx, startY+step*dy, startZ+step*dz);
}
tessellator.draw();
} else {
tessellator.startDrawing(3);
tessellator.setColorRGBA_F(0.75f, 0.75f, 0.75f, 0.5f);
double startX = xPos+0.5;
double startY = yPos+entityHeight;
double startZ = zPos+0.5;
double dx = xPos+0.5-dir.offsetX/2.0-startX;
double dy = yPos+height-0.5-startY;
double dz = zPos+0.5-dir.offsetZ/2.0-startZ;
int steps = 5;
for (int i = 0; i <= steps; ++i) {
float step = i/(float)steps;
tessellator.addVertex(startX+step*dx, startY+step*dy, startZ+step*dz);
}
tessellator.draw();
}
GL11.glEnable(GL11.GL_LIGHTING);
GL11.glEnable(GL11.GL_TEXTURE_2D);
}
@Override
/**
* Returns the location of an entity's texture. Doesn't seem to be called unless you call Render.bindEntityTexture.
*/
protected ResourceLocation getEntityTexture(Entity entity) {
// TODO Auto-generated method stub
return null;
}
}