Stop motion while paused
This commit is contained in:
23
main.js
23
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));
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user