UNPKG

@woosh/meep-engine

Version:

Pure JavaScript game engine. Fully featured and production ready.

46 lines (39 loc) 1.18 kB
import Task from "../Task.js"; import { TaskSignal } from "../TaskSignal.js"; import { clamp01 } from "../../../math/clamp01.js"; /** * * @param {number} delay in milliseconds * @param {string} [name] * @returns {Task} */ export function delayTask(delay, name = "unnamed") { let startTime = -1; const estimatedDuration = delay / 1000; return new Task({ name: `delay (${delay}ms): ${name}`, initializer() { startTime = Date.now(); }, cycleFunction() { if (Date.now() >= startTime + delay) { return TaskSignal.EndSuccess; } else { return TaskSignal.Yield; } }, computeProgress() { if (startTime === -1) { return 0; } const currentTime = Date.now(); const remainingTime = currentTime - startTime; let fraction = remainingTime / delay; if (Number.isNaN(fraction)) { fraction = 0; } return clamp01(fraction); }, estimatedDuration }); }