UNPKG

seed-engine

Version:

A Lightweight 2D game engine using WebGL2. The engine is designed on the focus of creating a bridge between creating and publishing games to the Seed Network as modules.

74 lines (67 loc) 2.15 kB
import Manager from './Manager'; /** * Manages all Persistent Objects in the Engine. A PersistentObject is a child of * GameObject, and sibling of SceneObjects. * * PersistentObjects exist and update in all scenes, changing scenes will not inturrupt this object. */ export class _PersistentManager extends Manager { constructor() { super(); this.persistentObjects = {}; } /** * When a PersistentObject is created, it is assigned to the PersistentManager through this function. * The manager will keep reference to the Object and handle Engine events. * * @param {persistentObject} persistentObject A PersistentObject. */ registerPersistentObject(persistentObject) { this.persistentObjects[persistentObject.id] = persistentObject; let deregisterCallback = () => { delete this.persistentObjects[persistentObject.id]; } return deregisterCallback; } /** * Calls update on all Persistent Objects. */ update() { let objKeys = Object.keys(this.persistentObjects); for (let i = 0; i < objKeys.length; i++) { this.persistentObjects[objKeys[i]].update(); } } /** * Calls end on all Persistent Objects. */ end() { let objKeys = Object.keys(this.persistentObjects); for (let i = 0; i < objKeys.length; i++) { this.persistentObjects[objKeys[i]].end(); } } /** * Calls pause on all Persistent Objects. */ pause() { let objKeys = Object.keys(this.persistentObjects); for (let i = 0; i < objKeys.length; i++) { this.persistentObjects[objKeys[i]].pause(); } } /** * Calls unpause on all Persistent Objects. */ unpause() { let objKeys = Object.keys(this.persistentObjects); for (let i = 0; i < objKeys.length; i++) { this.persistentObjects[objKeys[i]].unpause(); } } } /** * Singleton reference to the Persistent Objects Manager. */ const PersistentManager = new _PersistentManager(); export default PersistentManager;