| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364 |
- import Phaser from "phaser";
- export default class UserComponent {
- /**
- * @param gameObject The entity.
- */
- constructor(gameObject: Phaser.GameObjects.GameObject) {
- this.scene = gameObject.scene;
- const listenAwake = this.awake !== UserComponent.prototype.awake;
- const listenStart = this.start !== UserComponent.prototype.start;
- const listenUpdate = this.update !== UserComponent.prototype.update;
- const listenDestroy = this.destroy !== UserComponent.prototype.destroy;
-
- if (listenAwake) {
- gameObject.once("components-awake", this.awake, this);
- }
- if (listenStart) {
- this.scene.events.once(Phaser.Scenes.Events.UPDATE, this.start, this);
- }
- if (listenUpdate) {
- this.scene.events.on(Phaser.Scenes.Events.UPDATE, this.update, this);
- }
- if (listenStart || listenUpdate || listenDestroy) {
- gameObject.on(Phaser.GameObjects.Events.DESTROY, () => {
- this.scene.events.off(Phaser.Scenes.Events.UPDATE, this.start, this);
- this.scene.events.off(Phaser.Scenes.Events.UPDATE, this.update, this);
- if (listenDestroy) {
- this.destroy();
- }
- });
- }
- }
- scene: Phaser.Scene;
- protected awake() {
- // override this
- }
- protected start() {
- // override this
- }
- protected update() {
- // override this
- }
- protected destroy() {
- // override this
- }
- }
|