-
Notifications
You must be signed in to change notification settings - Fork 497
/
RenderLaser.java
82 lines (55 loc) · 1.79 KB
/
RenderLaser.java
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
77
78
79
80
81
82
package buildcraft.core.render;
import net.minecraft.client.model.ModelBase;
import net.minecraft.client.model.ModelRenderer;
import net.minecraft.client.renderer.entity.Render;
import net.minecraft.entity.Entity;
import org.lwjgl.opengl.GL11;
import buildcraft.api.core.Position;
import buildcraft.core.EntityLaser;
public class RenderLaser extends Render {
protected ModelBase model = new ModelBase() {
};
private ModelRenderer box;
public RenderLaser() {
box = new ModelRenderer(model, 0, 0);
box.addBox(0, -0.5F, -0.5F, 16, 1, 1);
box.rotationPointX = 0;
box.rotationPointY = 0;
box.rotationPointZ = 0;
}
@Override
public void doRender(Entity entity, double x, double y, double z, float f, float f1) {
doRender((EntityLaser) entity, x, y, z, f, f1);
entity.setAngles(45, 180);
}
private void doRender(EntityLaser laser, double x, double y, double z, float f, float f1) {
if (!laser.isVisible() || laser.getTexture() == null)
return;
GL11.glPushMatrix();
GL11.glPushAttrib(GL11.GL_ENABLE_BIT);
GL11.glDisable(GL11.GL_LIGHTING);
Position offset = laser.renderOffset();
GL11.glTranslated(x + offset.x, y + offset.y, z + offset.z);
GL11.glRotatef((float) laser.angleZ, 0, 1, 0);
GL11.glRotatef((float) laser.angleY, 0, 0, 1);
renderManager.renderEngine.bindTexture(laser.getTexture());
float factor = (float) (1.0 / 16.0);
float lasti = 0;
for (float i = 0; i <= laser.renderSize - 1; ++i) {
getBox(laser).render(factor);
GL11.glTranslated(1, 0, 0);
lasti = i;
}
lasti++;
GL11.glScalef(((float) laser.renderSize - lasti), 1, 1);
getBox(laser).render(factor);
iterate(laser);
GL11.glPopAttrib();
GL11.glPopMatrix();
}
protected void iterate(EntityLaser laser) {
}
protected ModelRenderer getBox(EntityLaser laser) {
return box;
}
}