diff --git a/README.md b/README.md
index 0501d81..d2c0d8f 100644
--- a/README.md
+++ b/README.md
@@ -1,5 +1,5 @@
-
+
# StateBuddy
-dependencies, bla, bla
\ No newline at end of file
+dependencies, bla, bla
diff --git a/artwork/logo.pdf b/artwork/logo.pdf
new file mode 100644
index 0000000..758303c
Binary files /dev/null and b/artwork/logo.pdf differ
diff --git a/artwork/logo.svg b/artwork/logo.svg
new file mode 100644
index 0000000..7d48fd7
--- /dev/null
+++ b/artwork/logo.svg
@@ -0,0 +1,4593 @@
+
+
+
+
diff --git a/artwork/logo.xopp b/artwork/logo.xopp
new file mode 100644
index 0000000..661e50f
Binary files /dev/null and b/artwork/logo.xopp differ
diff --git a/logo.png b/artwork/old_logo.png
similarity index 67%
rename from logo.png
rename to artwork/old_logo.png
index 95a12d3..f765876 100644
Binary files a/logo.png and b/artwork/old_logo.png differ
diff --git a/src/App/TopPanel.tsx b/src/App/TopPanel.tsx
index 421756a..b8ab889 100644
--- a/src/App/TopPanel.tsx
+++ b/src/App/TopPanel.tsx
@@ -75,7 +75,7 @@ export function TopPanel({rt, rtIdx, time, setTime, onInit, onClear, onRaise, on
if (e.key === " ") {
e.preventDefault();
if (rt)
- onChangePaused(time.kind !== "paused", performance.now());
+ onChangePaused(time.kind !== "paused", Math.round(performance.now()));
};
if (e.key === "i") {
e.preventDefault();
@@ -122,15 +122,16 @@ export function TopPanel({rt, rtIdx, time, setTime, onInit, onClear, onRaise, on
}, [])
function updateDisplayedTime() {
- const now = performance.now();
+ const now = Math.round(performance.now());
const timeMs = getSimTime(time, now);
setDisplayTime(formatTime(timeMs));
}
useEffect(() => {
+ // This has no effect on statechart execution. In between events, the statechart is doing nothing. However, by updating the displayed time, we give the illusion of continuous progress.
const interval = setInterval(() => {
updateDisplayedTime();
- }, 20);
+ }, 43); // every X ms -> we want a value that makes the numbers 'dance' while not using too much CPU
return () => {
clearInterval(interval);
}
@@ -171,7 +172,7 @@ export function TopPanel({rt, rtIdx, time, setTime, onInit, onClear, onRaise, on
const nextTimedTransition: [number, TimerElapseEvent] | undefined = timers[0];
function onSkip() {
- const now = performance.now();
+ const now = Math.round(performance.now());
if (nextTimedTransition) {
setTime(time => {
if (time.kind === "paused") {
@@ -185,10 +186,10 @@ export function TopPanel({rt, rtIdx, time, setTime, onInit, onClear, onRaise, on
}
function onSlower() {
- onTimeScaleChange((timescale/2).toString(), performance.now());
+ onTimeScaleChange((timescale/2).toString(), Math.round(performance.now()));
}
function onFaster() {
- onTimeScaleChange((timescale*2).toString(), performance.now());
+ onTimeScaleChange((timescale*2).toString(), Math.round(performance.now()));
}
return <>
@@ -240,8 +241,8 @@ export function TopPanel({rt, rtIdx, time, setTime, onInit, onClear, onRaise, on
Space toggles>}>
-
-
+
+
@@ -250,7 +251,7 @@ export function TopPanel({rt, rtIdx, time, setTime, onInit, onClear, onRaise, on
S}>
- onTimeScaleChange(e.target.value, performance.now())}/>
+ onTimeScaleChange(e.target.value, Math.round(performance.now()))}/>
F}>