UNPKG

@woosh/meep-engine

Version:

Pure JavaScript game engine. Fully featured and production ready.

96 lines (83 loc) 2.22 kB
import List from "../../core/collection/list/List.js"; import ObservedBoolean from "../../core/model/ObservedBoolean.js"; import { promiseTask } from "../../core/process/task/util/promiseTask.js"; import { EntityComponentDataset } from "../ecs/EntityComponentDataset.js"; class Scene { /** * * @param {string} [name] * @constructor */ constructor(name = "Unnamed") { /** * * @type {string} */ this.name = name; /** * * @type {EntityComponentDataset} */ this.dataset = new EntityComponentDataset(); /** * @readonly * @type {ObservedBoolean} */ this.active = new ObservedBoolean(false); /** * Flag used to signal that the scene was been destroyed and should no longer be used * @type {boolean} */ this.destroyed = false; /** * Clock modifiers * @type {List<LinearModifier>} */ this.speedModifiers = new List(); } /** * Executed just before the scene is is activated */ handlePreActivation() { //implement in subclass } /** * Executed just after scene is activate */ handlePostActivation() { //implement in subclass } /** * Executed just before scene is deactivated */ handlePreDeactivation() { //implement in subclass } /** * Executed just after scene is deactivated */ handlePostDeactivation() { //implement in subclass } /** * * @param options * @param {Engine} engine * @param {function} success * @param {function} failure * @returns {Task|TaskGroup} */ setup(options, engine, success, failure) { //empty by default return promiseTask(new Promise(function (resolve, reject) { success(); resolve(); }), `${name} scene setup`); } teardown(engine, success, failure) { } clear() { this.dataset.clear(); } } export default Scene;