@woosh/meep-engine
Version:
Pure JavaScript game engine. Fully featured and production ready.
46 lines (39 loc) • 1.18 kB
JavaScript
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
});
}