package mods.eln.transparentnode.electricalmachine; import mods.eln.cable.CableRenderDescriptor; import mods.eln.misc.Obj3D; import mods.eln.misc.Obj3D.Obj3DPart; import mods.eln.misc.RcInterpolator; import mods.eln.misc.RecipesList; import mods.eln.misc.UtilsClient; import mods.eln.sim.ThermalLoadInitializer; import mods.eln.sixnode.electricalcable.ElectricalCableDescriptor; import net.minecraft.entity.item.EntityItem; import org.lwjgl.opengl.GL11; public class MagnetizerDescriptor extends ElectricalMachineDescriptor { private Obj3DPart main; private Obj3DPart rot; public MagnetizerDescriptor(String name, Obj3D obj, double nominalU, double nominalP, double maximalU, ThermalLoadInitializer thermal, ElectricalCableDescriptor cable, RecipesList recipe) { super(name, nominalU, nominalP, maximalU, thermal, cable, recipe); if (obj != null) { rot = obj.getPart("rot"); main = obj.getPart("main"); } } class MaceratorDescriptorHandle { float counter = 0; float itemCounter = 0; final RcInterpolator interpolator = new RcInterpolator(0.5f); } @Override Object newDrawHandle() { return new MaceratorDescriptorHandle(); } @Override void draw(ElectricalMachineRender render, Object handleO, EntityItem inEntity, EntityItem outEntity, float powerFactor, float processState) { MaceratorDescriptorHandle handle = (MaceratorDescriptorHandle) handleO; main.draw(); rot.draw(handle.counter, 0f, 0f, 1f); GL11.glScalef(0.5f, 0.5f, 0.5f); UtilsClient.drawEntityItem(inEntity, 0.0, 0.25f, 0f, handle.itemCounter, 1f); } @Override void refresh(float deltaT, ElectricalMachineRender render, Object handleO, EntityItem inEntity, EntityItem outEntity, float powerFactor, float processState) { MaceratorDescriptorHandle handle = (MaceratorDescriptorHandle) handleO; handle.interpolator.setTarget(powerFactor); handle.interpolator.step(deltaT); handle.counter += deltaT * handle.interpolator.get() * 360; while (handle.counter >= 360f) handle.counter -= 360; handle.itemCounter += deltaT * 90; while (handle.itemCounter >= 360f) handle.itemCounter -= 360; } @Override public boolean drawCable() { return true; } @Override CableRenderDescriptor getPowerCableRender() { return cable.render; } }