mirror of
https://github.com/HbmMods/Hbm-s-Nuclear-Tech-GIT.git
synced 2026-01-25 10:32:49 +00:00
173 lines
5.2 KiB
Java
173 lines
5.2 KiB
Java
package com.hbm.render.loader;
|
|
|
|
import org.lwjgl.opengl.GL11;
|
|
|
|
import com.hbm.main.ResourceManager;
|
|
|
|
import cpw.mods.fml.relauncher.Side;
|
|
import cpw.mods.fml.relauncher.SideOnly;
|
|
import net.minecraft.client.model.ModelBase;
|
|
import net.minecraft.client.model.ModelBox;
|
|
import net.minecraft.client.model.ModelRenderer;
|
|
import net.minecraft.client.renderer.GLAllocation;
|
|
import net.minecraft.client.renderer.Tessellator;
|
|
|
|
public class ModelRendererTest extends ModelRenderer {
|
|
|
|
//TODO: blow up mojank HQ with a JDAM
|
|
private boolean compiled;
|
|
private int displayList;
|
|
|
|
public ModelRendererTest(ModelBase p_i1173_1_) {
|
|
super(p_i1173_1_);
|
|
}
|
|
|
|
public ModelRendererTest(ModelBase p_i1174_1_, int p_i1174_2_, int p_i1174_3_) {
|
|
this(p_i1174_1_);
|
|
this.setTextureOffset(p_i1174_2_, p_i1174_3_);
|
|
}
|
|
|
|
@SideOnly(Side.CLIENT)
|
|
public void render(float p_78785_1_) {
|
|
if(!this.isHidden) {
|
|
if(this.showModel) {
|
|
if(!this.compiled) {
|
|
this.compileDisplayList(p_78785_1_);
|
|
}
|
|
|
|
GL11.glTranslatef(this.offsetX, this.offsetY, this.offsetZ);
|
|
int i;
|
|
|
|
if(this.rotateAngleX == 0.0F && this.rotateAngleY == 0.0F && this.rotateAngleZ == 0.0F) {
|
|
if(this.rotationPointX == 0.0F && this.rotationPointY == 0.0F && this.rotationPointZ == 0.0F) {
|
|
GL11.glCallList(this.displayList);
|
|
|
|
if(this.childModels != null) {
|
|
for(i = 0; i < this.childModels.size(); ++i) {
|
|
((ModelRenderer) this.childModels.get(i)).render(p_78785_1_);
|
|
}
|
|
}
|
|
} else {
|
|
GL11.glTranslatef(this.rotationPointX * p_78785_1_, this.rotationPointY * p_78785_1_, this.rotationPointZ * p_78785_1_);
|
|
GL11.glCallList(this.displayList);
|
|
|
|
if(this.childModels != null) {
|
|
for(i = 0; i < this.childModels.size(); ++i) {
|
|
((ModelRenderer) this.childModels.get(i)).render(p_78785_1_);
|
|
}
|
|
}
|
|
|
|
GL11.glTranslatef(-this.rotationPointX * p_78785_1_, -this.rotationPointY * p_78785_1_, -this.rotationPointZ * p_78785_1_);
|
|
}
|
|
} else {
|
|
GL11.glPushMatrix();
|
|
GL11.glTranslatef(this.rotationPointX * p_78785_1_, this.rotationPointY * p_78785_1_, this.rotationPointZ * p_78785_1_);
|
|
|
|
if(this.rotateAngleZ != 0.0F) {
|
|
GL11.glRotatef(this.rotateAngleZ * (180F / (float) Math.PI), 0.0F, 0.0F, 1.0F);
|
|
}
|
|
|
|
if(this.rotateAngleY != 0.0F) {
|
|
GL11.glRotatef(this.rotateAngleY * (180F / (float) Math.PI), 0.0F, 1.0F, 0.0F);
|
|
}
|
|
|
|
if(this.rotateAngleX != 0.0F) {
|
|
GL11.glRotatef(this.rotateAngleX * (180F / (float) Math.PI), 1.0F, 0.0F, 0.0F);
|
|
}
|
|
|
|
GL11.glPushMatrix();
|
|
GL11.glScaled(0.1, 0.1, 0.1);
|
|
ResourceManager.chemplant_body.renderAll();
|
|
GL11.glPopMatrix();
|
|
|
|
//GL11.glCallList(this.displayList);
|
|
|
|
if(this.childModels != null) {
|
|
for(i = 0; i < this.childModels.size(); ++i) {
|
|
((ModelRenderer) this.childModels.get(i)).render(p_78785_1_);
|
|
}
|
|
}
|
|
|
|
GL11.glPopMatrix();
|
|
}
|
|
|
|
GL11.glTranslatef(-this.offsetX, -this.offsetY, -this.offsetZ);
|
|
}
|
|
}
|
|
}
|
|
|
|
@SideOnly(Side.CLIENT)
|
|
public void renderWithRotation(float p_78791_1_) {
|
|
if(!this.isHidden) {
|
|
if(this.showModel) {
|
|
if(!this.compiled) {
|
|
this.compileDisplayList(p_78791_1_);
|
|
}
|
|
|
|
GL11.glPushMatrix();
|
|
GL11.glTranslatef(this.rotationPointX * p_78791_1_, this.rotationPointY * p_78791_1_, this.rotationPointZ * p_78791_1_);
|
|
|
|
if(this.rotateAngleY != 0.0F) {
|
|
GL11.glRotatef(this.rotateAngleY * (180F / (float) Math.PI), 0.0F, 1.0F, 0.0F);
|
|
}
|
|
|
|
if(this.rotateAngleX != 0.0F) {
|
|
GL11.glRotatef(this.rotateAngleX * (180F / (float) Math.PI), 1.0F, 0.0F, 0.0F);
|
|
}
|
|
|
|
if(this.rotateAngleZ != 0.0F) {
|
|
GL11.glRotatef(this.rotateAngleZ * (180F / (float) Math.PI), 0.0F, 0.0F, 1.0F);
|
|
}
|
|
|
|
GL11.glCallList(this.displayList);
|
|
GL11.glPopMatrix();
|
|
}
|
|
}
|
|
}
|
|
|
|
@SideOnly(Side.CLIENT)
|
|
public void postRender(float p_78794_1_) {
|
|
if(!this.isHidden) {
|
|
if(this.showModel) {
|
|
if(!this.compiled) {
|
|
this.compileDisplayList(p_78794_1_);
|
|
}
|
|
|
|
if(this.rotateAngleX == 0.0F && this.rotateAngleY == 0.0F && this.rotateAngleZ == 0.0F) {
|
|
if(this.rotationPointX != 0.0F || this.rotationPointY != 0.0F || this.rotationPointZ != 0.0F) {
|
|
GL11.glTranslatef(this.rotationPointX * p_78794_1_, this.rotationPointY * p_78794_1_, this.rotationPointZ * p_78794_1_);
|
|
}
|
|
} else {
|
|
GL11.glTranslatef(this.rotationPointX * p_78794_1_, this.rotationPointY * p_78794_1_, this.rotationPointZ * p_78794_1_);
|
|
|
|
if(this.rotateAngleZ != 0.0F) {
|
|
GL11.glRotatef(this.rotateAngleZ * (180F / (float) Math.PI), 0.0F, 0.0F, 1.0F);
|
|
}
|
|
|
|
if(this.rotateAngleY != 0.0F) {
|
|
GL11.glRotatef(this.rotateAngleY * (180F / (float) Math.PI), 0.0F, 1.0F, 0.0F);
|
|
}
|
|
|
|
if(this.rotateAngleX != 0.0F) {
|
|
GL11.glRotatef(this.rotateAngleX * (180F / (float) Math.PI), 1.0F, 0.0F, 0.0F);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
@SideOnly(Side.CLIENT)
|
|
private void compileDisplayList(float p_78788_1_) {
|
|
this.displayList = GLAllocation.generateDisplayLists(1);
|
|
GL11.glNewList(this.displayList, GL11.GL_COMPILE);
|
|
Tessellator tessellator = Tessellator.instance;
|
|
|
|
for(int i = 0; i < this.cubeList.size(); ++i) {
|
|
((ModelBox) this.cubeList.get(i)).render(tessellator, p_78788_1_);
|
|
}
|
|
|
|
GL11.glEndList();
|
|
this.compiled = true;
|
|
}
|
|
}
|