package mods.eln.sixnode.electricalswitch; import mods.eln.cable.CableRenderDescriptor; import mods.eln.misc.Direction; import mods.eln.misc.LRDU; import mods.eln.misc.RcInterpolator; import mods.eln.misc.UtilsClient; import mods.eln.node.NodeBase; import mods.eln.node.six.SixNodeDescriptor; import mods.eln.node.six.SixNodeElementRender; import mods.eln.node.six.SixNodeEntity; import java.io.DataInputStream; import java.io.IOException; public class ElectricalSwitchRender extends SixNodeElementRender { ElectricalSwitchDescriptor descriptor; double voltageAnode = 0, voltageCatode = 0, current = 0, temperature = 0; RcInterpolator interpol; boolean boot = true; float switchAlpha = 0; boolean switchState; public ElectricalSwitchRender(SixNodeEntity tileEntity, Direction side, SixNodeDescriptor descriptor) { super(tileEntity, side, descriptor); this.descriptor = (ElectricalSwitchDescriptor) descriptor; interpol = new RcInterpolator(this.descriptor.speed); } @Override public void draw() { super.draw(); front.glRotateOnX(); if (descriptor.signalSwitch) { drawSignalPin(LRDU.Left, descriptor.pinDistance); drawSignalPin(LRDU.Right, descriptor.pinDistance); } else { drawPowerPin(LRDU.Left, descriptor.pinDistance); drawPowerPin(LRDU.Right, descriptor.pinDistance); } descriptor.draw(interpol.get(), UtilsClient.distanceFromClientPlayer(tileEntity), tileEntity); } @Override public void refresh(float deltaT) { interpol.setTarget(switchState ? 1f : 0f); interpol.step(deltaT); } @Override public CableRenderDescriptor getCableRender(LRDU lrdu) { return descriptor.cableRender; } @Override public void glListDraw() { } @Override public boolean glListEnable() { return false; } @Override public void publishUnserialize(DataInputStream stream) { super.publishUnserialize(stream); try { switchState = stream.readBoolean(); voltageAnode = stream.readShort() / NodeBase.networkSerializeUFactor; voltageCatode = stream.readShort() / NodeBase.networkSerializeUFactor; current = stream.readShort() / NodeBase.networkSerializeIFactor; temperature = stream.readShort() / NodeBase.networkSerializeTFactor; } catch (IOException e) { e.printStackTrace(); } if (boot) { interpol.setValue(switchState ? 1f : 0f); } boot = false; } }