Stop motion while paused

This commit is contained in:
Daddy32
2025-12-12 21:28:00 +01:00
parent 68ac1683c8
commit c1b40448ee

23
main.js
View File

@@ -69,6 +69,21 @@
const runner = Runner.create(); const runner = Runner.create();
Runner.run(runner, engine); 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. // Static boundaries and scene-specific obstacles.
let boundaries = []; let boundaries = [];
@@ -213,6 +228,7 @@
isPaused = false; isPaused = false;
resetChainVisuals(); resetChainVisuals();
stopSpawner(); stopSpawner();
stopRunner();
engine.timing.timeScale = 0; engine.timing.timeScale = 0;
pauseOverlay.classList.remove("visible"); pauseOverlay.classList.remove("visible");
pauseBtn.textContent = "Pause"; pauseBtn.textContent = "Pause";
@@ -234,6 +250,7 @@
pauseOverlay.classList.remove("visible"); pauseOverlay.classList.remove("visible");
pauseBtn.textContent = "Pause"; pauseBtn.textContent = "Pause";
engine.timing.timeScale = 1; engine.timing.timeScale = 1;
startRunner();
updateHud(); updateHud();
startSpawner(); startSpawner();
}; };
@@ -252,8 +269,10 @@
if (isPaused) { if (isPaused) {
resetChainVisuals(); resetChainVisuals();
stopSpawner(); stopSpawner();
stopRunner();
engine.timing.timeScale = 0; engine.timing.timeScale = 0;
} else { } else {
startRunner();
startSpawner(); startSpawner();
engine.timing.timeScale = 1; engine.timing.timeScale = 1;
} }
@@ -520,10 +539,12 @@
}); });
// Rotate any scene rotators slowly. // Rotate any scene rotators slowly.
const dt = (engine.timing && engine.timing.delta) || 16; const dt = (engine.timing && engine.timing.delta) || 16;
const timeScale = engine.timing?.timeScale ?? 1;
if (isPaused || gameOver || timeScale === 0) return;
rotators.forEach((b) => { rotators.forEach((b) => {
const speed = b.plugin.rotSpeed || 0; const speed = b.plugin.rotSpeed || 0;
if (speed !== 0) { if (speed !== 0) {
Body.rotate(b, speed * (dt / 1000)); Body.rotate(b, speed * ((dt * timeScale) / 1000));
} }
}); });
}); });