UNPKG

@robotlegsjs/phaser

Version:

RobotlegsJS integration with Phaser Scene Manager

59 lines 3.1 kB
"use strict"; // ------------------------------------------------------------------------------ // Copyright (c) 2017-present, RobotlegsJS. All Rights Reserved. // // NOTICE: You are permitted to use, modify, and distribute this file // in accordance with the terms of the license agreement accompanying it. // ------------------------------------------------------------------------------ Object.defineProperty(exports, "__esModule", { value: true }); exports.SceneManagerObserverExtension = void 0; var SceneManagerObserver_1 = require("./impl/SceneManagerObserver"); var SceneRegistry_1 = require("./impl/SceneRegistry"); var installCount = 0; /** * This extension install an automatic Scene Manager Observer */ var SceneManagerObserverExtension = /** @class */ (function () { function SceneManagerObserverExtension() { } /*============================================================================*/ /* Public Functions */ /*============================================================================*/ /** * @inheritDoc */ SceneManagerObserverExtension.prototype.extend = function (context) { context.whenInitializing(this._whenInitializing.bind(this)); context.whenDestroying(this._whenDestroying.bind(this)); installCount++; this._injector = context.injector; this._logger = context.getLogger(this); }; /*============================================================================*/ /* Private Functions */ /*============================================================================*/ SceneManagerObserverExtension.prototype._whenInitializing = function () { // Hark, an actual Singleton! if (!SceneManagerObserverExtension._sceneObserver) { var containerRegistry = this._injector.get(SceneRegistry_1.SceneRegistry); this._logger.debug("Creating genuine SceneManagerObserver Singleton"); SceneManagerObserverExtension._sceneObserver = new SceneManagerObserver_1.SceneManagerObserver(containerRegistry); } }; SceneManagerObserverExtension.prototype._whenDestroying = function () { installCount--; if (installCount === 0) { this._logger.debug("Destroying genuine SceneManagerObserver Singleton"); SceneManagerObserverExtension._sceneObserver.destroy(); SceneManagerObserverExtension._sceneObserver = null; } }; /*============================================================================*/ /* Private Static Properties */ /*============================================================================*/ // Really? Yes, there can be only one. SceneManagerObserverExtension._sceneObserver = null; return SceneManagerObserverExtension; }()); exports.SceneManagerObserverExtension = SceneManagerObserverExtension; //# sourceMappingURL=SceneManagerObserverExtension.js.map