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