From c1b40448ee965414dd678fb1d6e847d824302720 Mon Sep 17 00:00:00 2001 From: Daddy32 Date: Fri, 12 Dec 2025 21:28:00 +0100 Subject: [PATCH] Stop motion while paused --- main.js | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/main.js b/main.js index f1dde75..bc181f9 100644 --- a/main.js +++ b/main.js @@ -69,6 +69,21 @@ const runner = Runner.create(); Runner.run(runner, engine); + let runnerActive = true; + + const startRunner = () => { + if (!runnerActive) { + Runner.run(runner, engine); + runnerActive = true; + } + }; + + const stopRunner = () => { + if (runnerActive) { + Runner.stop(runner); + runnerActive = false; + } + }; // Static boundaries and scene-specific obstacles. let boundaries = []; @@ -213,6 +228,7 @@ isPaused = false; resetChainVisuals(); stopSpawner(); + stopRunner(); engine.timing.timeScale = 0; pauseOverlay.classList.remove("visible"); pauseBtn.textContent = "Pause"; @@ -234,6 +250,7 @@ pauseOverlay.classList.remove("visible"); pauseBtn.textContent = "Pause"; engine.timing.timeScale = 1; + startRunner(); updateHud(); startSpawner(); }; @@ -252,8 +269,10 @@ if (isPaused) { resetChainVisuals(); stopSpawner(); + stopRunner(); engine.timing.timeScale = 0; } else { + startRunner(); startSpawner(); engine.timing.timeScale = 1; } @@ -520,10 +539,12 @@ }); // Rotate any scene rotators slowly. const dt = (engine.timing && engine.timing.delta) || 16; + const timeScale = engine.timing?.timeScale ?? 1; + if (isPaused || gameOver || timeScale === 0) return; rotators.forEach((b) => { const speed = b.plugin.rotSpeed || 0; if (speed !== 0) { - Body.rotate(b, speed * (dt / 1000)); + Body.rotate(b, speed * ((dt * timeScale) / 1000)); } }); });