1 package net.mograsim.logic.core.timeline;
3 import java.util.function.LongSupplier;
5 public class PauseableTimeFunction implements LongSupplier
7 private boolean paused = false;
8 private long unpausedSysTime = 0, lastPausedInternalTime = 0;
9 private double speedFactor = 1;
15 lastPausedInternalTime = getAsLong();
25 unpausedSysTime = System.currentTimeMillis();
30 public long getAsLong()
32 return (long) (paused ? lastPausedInternalTime
33 : lastPausedInternalTime + (System.currentTimeMillis() - unpausedSysTime) * speedFactor);
36 public long simulTimeDeltaToRealTimeMillis(long simulTime)
38 return paused ? -1 : (long) (simulTime / speedFactor);
41 public void setSpeedFactor(double factor)
44 throw new IllegalArgumentException("time factor can't be smaller than 1");
50 this.speedFactor = factor;
53 public boolean isPaused()