package mods.eln.sixnode.electricalgatesource; import mods.eln.misc.Obj3D; import mods.eln.misc.Obj3D.Obj3DPart; import mods.eln.misc.UtilsClient; import mods.eln.sixnode.electricalgatesource.ElectricalGateSourceDescriptor.ObjType; import net.minecraft.tileentity.TileEntity; import org.lwjgl.opengl.GL11; import java.awt.*; public class ElectricalGateSourceRenderObj { private Obj3DPart rot; private Obj3DPart main; private Obj3D obj; private Obj3DPart lever; private Obj3DPart led; private Obj3DPart halo; ObjType objType; float leverTx; private float rotAlphaOn, rotAlphaOff; public float speed; public ElectricalGateSourceRenderObj(Obj3D obj) { this.obj = obj; if (obj != null) { main = obj.getPart("main"); if (obj.getString("type").equals("pot")) { objType = ObjType.Pot; rot = obj.getPart("rot"); if (rot != null) { rotAlphaOff = rot.getFloat("alphaOff"); rotAlphaOn = rot.getFloat("alphaOn"); speed = rot.getFloat("speed"); } } if (obj.getString("type").equals("button")) { lever = obj.getPart("button"); led = obj.getPart("led"); halo = obj.getPart("halo"); objType = ObjType.Button; if (lever != null) { speed = lever.getFloat("speed"); leverTx = lever.getFloat("tx"); } } } } public void draw(float factor, float distance, TileEntity e) { switch (objType) { case Button: if (main != null) main.draw(); GL11.glTranslatef(leverTx * factor, 0f, 0f); if (lever != null) lever.draw(); UtilsClient.ledOnOffColor(factor > 0.5f); UtilsClient.disableLight(); if (led != null) led.draw(); UtilsClient.enableBlend(); if (halo != null) { if (e == null) UtilsClient.drawLight(halo); else { Color c = UtilsClient.ledOnOffColorC(factor > 0.5f); UtilsClient.drawHaloNoLightSetup(halo, c.getRed() / 255f, c.getGreen() / 255f, c.getBlue() / 255f, e, false); } } UtilsClient.disableBlend(); UtilsClient.enableLight(); break; case Pot: if (main != null) main.draw(); if (rot != null) rot.draw(factor * (rotAlphaOn - rotAlphaOff) + rotAlphaOff, 1f, 0f, 0f); break; } } }