ModularPowersuits/src/main/java/net/machinemuse/powersuits/client/render/block/TinkerTableModel.java

284 lines
10 KiB
Java

package net.machinemuse.powersuits.client.render.block;
import net.machinemuse.numina.render.RenderState;
import net.minecraft.client.model.ModelBase;
import net.minecraft.client.model.ModelRenderer;
import net.minecraft.entity.Entity;
import org.lwjgl.opengl.GL11;
import java.util.Random;
public class TinkerTableModel extends ModelBase {
// public float onGround;
// public boolean isRiding = false;
protected ModelBase model = new ModelBase() {
};
private static final Random random = new Random();
/**
* This is a list of all the boxes (ModelRenderer.class) in the current
* model.
*/
// public List boxList = new ArrayList();
// public boolean isChild = true;
/**
* A mapping for all texture offsets
*/
// private Map modelTextureMap = new HashMap();
// public int textureWidth = 64;
// public int textureHeight = 32;
ModelRenderer cube;
ModelRenderer screen3;
ModelRenderer screen2;
ModelRenderer screen1;
ModelRenderer middletable;
ModelRenderer uppertable;
ModelRenderer particles;
ModelRenderer footbase;
ModelRenderer foot1;
ModelRenderer fatfoot2;
ModelRenderer fatfoot1;
ModelRenderer backsupport;
ModelRenderer tank3;
ModelRenderer tank2;
ModelRenderer tank1;
ModelRenderer wireshort4;
ModelRenderer wireshort3;
ModelRenderer wireshort2;
ModelRenderer Wireshort1;
ModelRenderer Wirelong1;
/**
*
*/
public TinkerTableModel() {
textureWidth = 112;
textureHeight = 70;
cube = new ModelRenderer(this, 96, 20);
cube.addBox(-2F, -2F, -2F, 4, 4, 4);
cube.setTextureSize(112, 70);
cube.mirror = true;
screen3 = new ModelRenderer(this, 1, 1);
screen3.addBox(0F, 0F, 0F, 11, 0, 14);
screen3.setRotationPoint(-9.666667F, 3.466667F, -7F);
screen3.setTextureSize(112, 70);
screen3.mirror = true;
screen2 = new ModelRenderer(this, 0, 32);
screen2.addBox(0F, 0F, 0F, 8, 0, 11);
screen2.setRotationPoint(2F, 4.966667F, -6F);
screen2.setTextureSize(112, 70);
screen2.mirror = true;
screen1 = new ModelRenderer(this, 3, 20);
screen1.addBox(0F, 0F, 0F, 14, 0, 7);
screen1.setRotationPoint(-6F, 2.466667F, 3F);
screen1.setTextureSize(112, 70);
screen1.mirror = true;
setRotation(screen1, 0F, 0F, 0F);
middletable = new ModelRenderer(this, 40, 49);
middletable.addBox(-5F, 1F, -5F, 17, 3, 18);
middletable.setRotationPoint(-4F, 10F, -4F);
middletable.setTextureSize(112, 70);
middletable.mirror = true;
setRotation(middletable, 0F, 0F, 0F);
uppertable = new ModelRenderer(this, 56, 28);
uppertable.addBox(0F, 0F, 0F, 12, 5, 16);
uppertable.setRotationPoint(-8F, 10F, -8F);
uppertable.setTextureSize(112, 70);
uppertable.mirror = true;
setRotation(uppertable, 0F, 0F, 0F);
particles = new ModelRenderer(this, 90, 0);
particles.addBox(0F, 0F, 0F, 6, 7, 5);
particles.setRotationPoint(-3F, 15F, -3F);
particles.setTextureSize(112, 70);
particles.mirror = true;
setRotation(particles, 0F, 0F, 0F);
footbase = new ModelRenderer(this, 0, 54);
footbase.addBox(-5F, 8F, -5F, 12, 2, 11);
footbase.setRotationPoint(-1F, 14F, -1F);
footbase.setTextureSize(112, 70);
footbase.mirror = true;
setRotation(footbase, 0F, 0F, 0F);
foot1 = new ModelRenderer(this, 82, 13);
foot1.addBox(-5F, 8F, -5F, 4, 3, 3);
foot1.setRotationPoint(-2F, 13F, 3F);
foot1.setTextureSize(112, 70);
foot1.mirror = true;
setRotation(foot1, 0F, 0F, 0F);
fatfoot2 = new ModelRenderer(this, 96, 13);
fatfoot2.addBox(-5F, 8F, -5F, 4, 3, 4);
fatfoot2.setRotationPoint(3F, 13F, 1F);
fatfoot2.setTextureSize(112, 70);
fatfoot2.mirror = true;
setRotation(fatfoot2, 0F, 1.570796F, 0F);
fatfoot1 = new ModelRenderer(this, 96, 13);
fatfoot1.addBox(-5F, 8F, -5F, 4, 3, 4);
fatfoot1.setRotationPoint(3F, 13F, -8F);
fatfoot1.setTextureSize(112, 70);
fatfoot1.mirror = true;
setRotation(fatfoot1, 0F, 1.570796F, 0F);
backsupport = new ModelRenderer(this, 38, 34);
backsupport.addBox(0F, 0F, -2F, 2, 8, 7);
backsupport.setRotationPoint(3F, 14F, -2F);
backsupport.setTextureSize(112, 70);
backsupport.mirror = true;
setRotation(backsupport, 0F, 0F, 0F);
tank3 = new ModelRenderer(this, 51, 18);
tank3.addBox(0F, 0F, 0F, 3, 5, 3);
tank3.setRotationPoint(6F, 10F, 3F);
tank3.setTextureSize(112, 70);
tank3.mirror = true;
setRotation(tank3, 0F, 0F, 0F);
tank2 = new ModelRenderer(this, 51, 18);
tank2.addBox(0F, 0F, 0F, 3, 5, 3);
tank2.setRotationPoint(6F, 10F, -2F);
tank2.setTextureSize(112, 70);
tank2.mirror = true;
setRotation(tank2, 0F, 0F, 0F);
tank1 = new ModelRenderer(this, 51, 18);
tank1.addBox(0F, 0F, 0F, 3, 5, 3);
tank1.setRotationPoint(6F, 10F, -7F);
tank1.setTextureSize(112, 70);
tank1.mirror = true;
setRotation(tank1, 0F, 0F, 0F);
wireshort4 = new ModelRenderer(this, 71, 15);
wireshort4.addBox(0F, 0F, 5F, 1, 2, 1);
wireshort4.setRotationPoint(7F, 15F, -1F);
wireshort4.setTextureSize(112, 70);
wireshort4.mirror = true;
setRotation(wireshort4, 0F, 0F, 0F);
wireshort3 = new ModelRenderer(this, 71, 15);
wireshort3.addBox(0F, 0F, 0F, 1, 2, 1);
wireshort3.setRotationPoint(7F, 15F, -6F);
wireshort3.setTextureSize(112, 70);
wireshort3.mirror = true;
setRotation(wireshort3, 0F, 0F, 0F);
wireshort2 = new ModelRenderer(this, 69, 13);
wireshort2.addBox(0F, 0F, 0F, 2, 1, 1);
wireshort2.setRotationPoint(5F, 17F, -1F);
wireshort2.setTextureSize(112, 70);
wireshort2.mirror = true;
setRotation(wireshort2, 0F, 0F, 0F);
Wireshort1 = new ModelRenderer(this, 71, 15);
Wireshort1.addBox(0F, 0F, 0F, 1, 2, 1);
Wireshort1.setRotationPoint(7F, 15F, -1F);
Wireshort1.setTextureSize(112, 70);
Wireshort1.mirror = true;
setRotation(Wireshort1, 0F, 0F, 0F);
Wirelong1 = new ModelRenderer(this, 77, 1);
Wirelong1.addBox(0F, 0F, 0F, 1, 1, 11);
Wirelong1.setRotationPoint(7F, 17F, -6F);
Wirelong1.setTextureSize(112, 70);
Wirelong1.mirror = true;
setRotation(Wirelong1, 0F, 0F, 0F);
}
public void doRender(Entity entity, double x, double y, double z, float f,
float f1) {
f = 0.0625f;
RenderState.blendingOn();
int timestep = (int) ((System.currentTimeMillis()) % 10000);
double angle = timestep * Math.PI / 5000.0;
GL11.glPushMatrix();
GL11.glRotatef(180.0f, 1.0f, 0, 0);
GL11.glTranslatef(0.5f, -1.5f, -0.5f);
middletable.render(f);
uppertable.render(f);
footbase.render(f);
foot1.render(f);
fatfoot2.render(f);
fatfoot1.render(f);
backsupport.render(f);
tank3.render(f);
tank2.render(f);
tank1.render(f);
wireshort4.render(f);
wireshort3.render(f);
wireshort2.render(f);
Wireshort1.render(f);
Wirelong1.render(f);
RenderState.glowOn();
GL11.glPopMatrix();
GL11.glPushMatrix();
GL11.glTranslated(0.5f, 1.05f, 0.5f);
GL11.glTranslated(0, 0.02f * Math.sin(angle * 3), 0);
// GLRotate uses degrees instead of radians for some reason grr
GL11.glRotatef((float) (angle * 57.2957795131), 0.0f, 1.0f, 0.0f);
GL11.glRotatef(45f, 1.0f, 0.0f, 0.0f);
// arctangent of 0.5.
GL11.glRotatef(35.2643897f, 0, 1, 1);
// cube.render(0.0625f);
GL11.glColor4d(1, 1, 1, 0.8);
cube.render(f / 2.0f);
// cube.render(0.016000f);
GL11.glPopMatrix();
GL11.glPushMatrix();
GL11.glRotatef(180.0f, 1.0f, 0, 0);
GL11.glTranslatef(0.5f, -1.5f, -0.5f);
screen3.render(f);
screen2.render(f);
screen1.render(f);
particles.render(f);
GL11.glPopMatrix();
// GL11.glPushMatrix();
// if (Minecraft.getMinecraft().isFancyGraphicsEnabled()) {
// if (f1 != 0) {
// GL11.glDisable(GL11.GL_CULL_FACE);
// for (int i = 0; i < 1; i++) {
// drawScanLine(angle);
// }
// }
// }
// GL11.glPopMatrix();
RenderState.glowOff();
RenderState.blendingOff();
}
private void drawScanLine(double angle) {
float xtarg = random.nextFloat();
float ytarg = random.nextFloat();
GL11.glLineWidth(2);
GL11.glBegin(GL11.GL_LINES);
GL11.glColor4d(0.0, 1.0, 0.2, 1.0);
GL11.glVertex3d(0.5, 1.05 + 0.02f * Math.sin(angle * 3), 0.5);
GL11.glVertex3d(xtarg, 1.2f, ytarg);
GL11.glEnd();
// MuseRenderer.drawGradientRect3D(
// Vec3.createVectorHelper(Math.floor(xtarg * 16.0) / 16.0, 1.201,
// Math.floor(ytarg * 16.0) / 16.0),
// Vec3.createVectorHelper(1.0 / 16.0, 0, 1.0 / 16.0),
// new Colour(0.0f, 1.0f, 0.0f, 0.4f),
// new Colour(0.0f, 1.0f, 0.0f, 0.4f));
}
/**
* Sets the model's various rotation angles then renders the model.
*/
@Override
public void render(Entity par1Entity, float par2, float par3, float par4,
float par5, float par6, float par7) {
model.render(par1Entity, par2, par3, par4, par5, par6, par7);
}
// @Override
// protected void setTextureOffset(String par1Str, int par2, int par3)
// {
// this.modelTextureMap.put(par1Str, new TextureOffset(par2, par3));
// }
//
// @Override
// public TextureOffset getTextureOffset(String par1Str)
// {
// return (TextureOffset) this.modelTextureMap.get(par1Str);
// }
private void setRotation(ModelRenderer model, float x, float y, float z) {
model.rotateAngleX = x;
model.rotateAngleY = y;
model.rotateAngleZ = z;
}
}