summaryrefslogtreecommitdiff
path: root/src/main/java/ihl/flexible_cable/NodeRender.java
blob: c27f11ac4ad59f5c3013d10a8d3e5614f7f8e01d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
package ihl.flexible_cable;

import org.lwjgl.opengl.GL11;

import ihl.IHLModInfo;
import ihl.model.ModelTube;
import net.minecraft.client.renderer.Tessellator;
import net.minecraft.client.renderer.entity.Render;
import net.minecraft.client.renderer.entity.RenderManager;
import net.minecraft.entity.Entity;
import net.minecraft.util.ResourceLocation;
import net.minecraftforge.common.util.ForgeDirection;

public class NodeRender extends Render
{
	
	private ModelTube model;
	private ModelTube modelThin;
	private ResourceLocation tex;
	private float scale;
    
	public NodeRender() 
	{
			super();
			scale = 1F/16F;
			model=new ModelTube(null, 0, 0, -4F, -4F, -3F, 8, 8, 6,0f, 0.5f,0.99f, ForgeDirection.NORTH);
			modelThin=new ModelTube(null, 0, 0, -1F, -1F, -3F, 2, 2, 6,0f, 0f,0.99f, ForgeDirection.NORTH);
			tex = new ResourceLocation(IHLModInfo.MODID+":textures/blocks/junctionBox.png");
	}

	@Override
	public void doRender(Entity entity, double x1, double y1, double z1, float rotationYaw, float iFrame) 
	{	
			bindTexture(tex);
			GL11.glPushMatrix();
			NodeEntity ne = (NodeEntity) entity;
			float x = (float) (ne.lastTickRenderPosX + (ne.renderPosX-ne.lastTickRenderPosX)*iFrame-RenderManager.renderPosX);
			float y = (float) (ne.lastTickRenderPosY + (ne.renderPosY-ne.lastTickRenderPosY)*iFrame-RenderManager.renderPosY);
			float z = (float) (ne.lastTickRenderPosZ + (ne.renderPosZ-ne.lastTickRenderPosZ)*iFrame-RenderManager.renderPosZ);
			GL11.glTranslatef(x, y, z);
			GL11.glScalef(0.25F, -0.25F, -0.25F);
			int red = ne.colorIndex>>16;
			int green = (ne.colorIndex>>8) & 255;
			int blue = ne.colorIndex & 255;
			for(int i=0;i<ne.n;i+=ne.renderEvery)
			{
				GL11.glRotatef(-ne.rotationPitchArray[i] * (180F / (float)Math.PI), 0.0F, 1.0F, 0.0F);
	            GL11.glRotatef(ne.rotationYawArray[i] * (180F / (float)Math.PI), 1.0F, 0.0F, 0.0F);
	            float cc=ne.rotationYawArray[i]*0.25f;
	            float red1 = Math.min(Math.max(red/255f+cc,red/511f),1f);
	            float green1 = Math.min(Math.max(green/255f+cc,green/511f),1f);
	            float blue1 = Math.min(Math.max(blue/255f+cc,blue/511f),1f);
	            GL11.glColor3f(red1, green1, blue1);
	            if(ne.type==0)
	            {
	            	modelThin.renderCached(Tessellator.instance, scale);
	            }
	            else
	            {
					model.renderCached(Tessellator.instance, scale);
	            }
	            GL11.glRotatef(-ne.rotationYawArray[i] * (180F / (float)Math.PI), 1.0F, 0.0F, 0.0F);
	            GL11.glRotatef(ne.rotationPitchArray[i] * (180F / (float)Math.PI), 0.0F, 1.0F, 0.0F);
				GL11.glTranslatef(-ne.translationX[i]*4f, ne.translationY[i]*4f, ne.translationZ[i]*4f);
			}

			GL11.glPopMatrix(); //end
	}

	@Override
	protected ResourceLocation getEntityTexture(Entity arg0) 
	{
		return this.tex;
	}
}