X-Git-Url: https://mograsim.net/gitweb/?a=blobdiff_plain;f=plugins%2Fnet.mograsim.logic.core%2Fsrc%2Fnet%2Fmograsim%2Flogic%2Fcore%2Ftimeline%2FPauseableTimeFunction.java;fp=plugins%2Fnet.mograsim.logic.core%2Fsrc%2Fnet%2Fmograsim%2Flogic%2Fcore%2Ftimeline%2FPauseableTimeFunction.java;h=4a99310c38dec9207ff8e0599155bea86a69df00;hb=26eb7899013bc52e4501ee97422d79d6e1ea2b9c;hp=86f4ce996d990ba4c8fc7b3fee833fc37719a9ba;hpb=e7a86660ec5342ff4a7a9056b3e4b1d05a1ed63c;p=Mograsim.git diff --git a/plugins/net.mograsim.logic.core/src/net/mograsim/logic/core/timeline/PauseableTimeFunction.java b/plugins/net.mograsim.logic.core/src/net/mograsim/logic/core/timeline/PauseableTimeFunction.java index 86f4ce99..4a99310c 100644 --- a/plugins/net.mograsim.logic.core/src/net/mograsim/logic/core/timeline/PauseableTimeFunction.java +++ b/plugins/net.mograsim.logic.core/src/net/mograsim/logic/core/timeline/PauseableTimeFunction.java @@ -6,7 +6,7 @@ public class PauseableTimeFunction implements LongSupplier { private boolean paused = false; private long unpausedSysTime = 0, lastPausedInternalTime = 0; - private int speedPercentage = 100; + private double speedFactor = 1; public void pause() { @@ -29,18 +29,25 @@ public class PauseableTimeFunction implements LongSupplier @Override public long getAsLong() { - return paused ? lastPausedInternalTime - : lastPausedInternalTime + ((System.currentTimeMillis() - unpausedSysTime) * speedPercentage) / 100; + return (long) (paused ? lastPausedInternalTime + : lastPausedInternalTime + (System.currentTimeMillis() - unpausedSysTime) * speedFactor); } - public void setSpeedPercentage(int percentage) + public long simulTimeDeltaToRealTimeMillis(long simulTime) { + return paused ? -1 : (long) (simulTime / speedFactor); + } + + public void setSpeedFactor(double factor) + { + if (factor <= 0) + throw new IllegalArgumentException("time factor can't be smaller than 1"); if (!paused) { pause(); unpause(); } - this.speedPercentage = Integer.min(100, Integer.max(percentage, 1)); + this.speedFactor = factor; } public boolean isPaused()