package mods.eln.sixnode.electricalvumeter;
import mods.eln.Eln;
import mods.eln.cable.CableRenderDescriptor;
import mods.eln.misc.Direction;
import mods.eln.misc.LRDU;
import mods.eln.misc.PhysicalInterpolator;
import mods.eln.misc.UtilsClient;
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 ElectricalVuMeterRender extends SixNodeElementRender {
ElectricalVuMeterDescriptor descriptor;
PhysicalInterpolator interpolator;
float factor;
LRDU front;
boolean boot = true;
public ElectricalVuMeterRender(SixNodeEntity tileEntity, Direction side, SixNodeDescriptor descriptor) {
super(tileEntity, side, descriptor);
this.descriptor = (ElectricalVuMeterDescriptor) descriptor;
interpolator = new PhysicalInterpolator(0.4f, 2.0f, 1.5f, 0.2f);
}
@Override
public void draw() {
super.draw();
drawSignalPin(front, descriptor.pinDistance);
if (side.isY()) {
front.right().glRotateOnX();
}
descriptor.draw(descriptor.onOffOnly ? interpolator.getTarget() : interpolator.get(), UtilsClient.distanceFromClientPlayer(tileEntity), tileEntity);
}
@Override
public void refresh(float deltaT) {
interpolator.step(deltaT);
}
@Override
public boolean cameraDrawOptimisation() {
return false;
}
@Override
public void publishUnserialize(DataInputStream stream) {
super.publishUnserialize(stream);
try {
Byte b;
b = stream.readByte();
front = LRDU.fromInt((b >> 4) & 3);
if (boot) {
interpolator.setPos(stream.readFloat());
} else {
interpolator.setTarget(stream.readFloat());
}
} catch (IOException e) {
e.printStackTrace();
}
if (boot) {
boot = false;
}
}
@Override
public CableRenderDescriptor getCableRender(LRDU lrdu) {
return Eln.instance.signalCableDescriptor.render;
}
}