util_task_task_manager.js
/**
* @module TaskManager
* @fileoverview Contains TaskManager class.
*/
/**
* @class
* Object to manage tasks that are running in the engine.
*/
class TaskManager {
/**
* Create a new task manager.
* @constructor
*/
constructor() {
this._tasks = new Set();
}
// Updating
/**
* Update the task manager and all its tasks.
* @param {number} elapsed Time since last update cycle
*/
update(elapsed) {
for (const task of this._tasks.values()) {
task.update(elapsed);
if (task.isDone())
this._tasks.delete(task);
}
}
// Adding and removing
/**
* Add a task to the manager to run.
* @param {Task} task Task to add
* @returns {Task} Task that was added
*/
add(task) {
this._tasks.add(task);
task.init();
return task;
}
/**
* Delete a task from the manager.
* @param {Task} task Task to remove
*/
delete(task) {
this._tasks.delete(task);
}
}
export default TaskManager;