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.

105 lines (91 loc) 2.43 kB
import UpdateableManager from '../manager/UpdateableManager'; /** * Baseclass for objects that follow the same ECS pattern of the seed engine. * * Used in anything that should follow a create, update, end loop * handled by the Engine. * * Many things will need to update/start/end. If you derive something that * has the start()/update()/end()... functions, the children should fill in * their respective callbacks (onStart()/onUpdate()/onEnd()/...). */ export default class Updateable { constructor() { this.hasStarted = false; this.hasPaused = false; this.id = -1; this.deregister = UpdateableManager.registerUpdateable(this); } /** * Base call function for when this Updateable is to be started. */ start() { this.onStart(); this.hasStarted = true; } /** * Base call function for when this Updateable is to be updated. */ update() { if (this.hasPaused) return; if (!this.hasStarted) { this.start(); return; } this.onUpdate(); } /** * Base call function for when this Updateable is to be ended. */ end() { this.onEnd(); this.destructor(); } /** * Base call function for when this Updateable is to be paused. */ pause() { if (!this.hasPaused) { this.hasPaused = true; this.onPause(); } } /** * Base call function for when this Updateable is to be unpaused. */ unpause() { if (this.hasPaused) { this.hasPaused = false; this.onUnpause(); } } /** * Cleanup code for when destroying an Updateable. */ destructor() { this.deregister(); } /** * Called when the the object is first introduced. * * Managing code will call this on first iteration once introduced to the game loop. */ onStart() {} /** * Called on every update within the game, once the object has had onStart called. */ onUpdate() {} /** * Called when the object is being removed or cleaned up from usage. */ onEnd() {} /** * Called when the object is intended to be paused. */ onPause() {} /** * Called when the object is to be unpaused from paused state. */ onUnpause() {} }