package mods.eln.sixnode.electricalvumeter;
import mods.eln.sim.IProcess;
public class ElectricalVuMeterSlowProcess implements IProcess {
ElectricalVuMeterElement element;
double timeCounter = 0;
static final double refreshPeriode = 0.25;
boolean lastState;
public ElectricalVuMeterSlowProcess(ElectricalVuMeterElement element) {
this.element = element;
lastState = element.inputGate.stateHigh();
}
@Override
public void process(double time) {
if (element.descriptor.onOffOnly) {
if (lastState) {
if (element.inputGate.stateLow()) {
lastState = false;
element.needPublish();
}
} else {
if (element.inputGate.stateHigh()) {
lastState = true;
element.needPublish();
}
}
} else {
timeCounter += time;
if (timeCounter >= refreshPeriode) {
timeCounter -= refreshPeriode;
element.needPublish();
}
}
}
}