1 line
6.2 KiB
Plaintext
1 line
6.2 KiB
Plaintext
{"version":3,"file":"TickerPlugin.mjs","sources":["../../src/app/TickerPlugin.ts"],"sourcesContent":["import { ExtensionType } from '../extensions/Extensions';\nimport { UPDATE_PRIORITY } from '../ticker/const';\nimport { Ticker } from '../ticker/Ticker';\n\nimport type { ExtensionMetadata } from '../extensions/Extensions';\n\n/**\n * Application options for the {@link app.TickerPlugin}.\n * @memberof app\n * @property {boolean} [autoStart=true] - Automatically starts the rendering after the construction.\n * **Note**: Setting this parameter to `false` does NOT stop the shared ticker even if you set\n * `options.sharedTicker` to `true` in case that it is already started. Stop it by your own.\n * @property {boolean} [sharedTicker=false] - Set`true` to use `Ticker.shared`, `false` to create new ticker.\n * If set to `false`, you cannot register a handler to occur before anything that runs on the shared ticker.\n * The system ticker will always run before both the shared ticker and the app ticker.\n */\nexport interface TickerPluginOptions\n{\n /**\n * Automatically starts the rendering after the construction.\n * **Note**: Setting this parameter to `false` does NOT stop the shared ticker even if you set\n * `options.sharedTicker` to `true` in case that it is already started. Stop it by your own.\n * @memberof app.ApplicationOptions\n * @default true\n */\n autoStart?: boolean;\n /**\n * Set`true` to use `Ticker.shared`, `false` to create new ticker.\n * If set to `false`, you cannot register a handler to occur before anything that runs on the shared ticker.\n * The system ticker will always run before both the shared ticker and the app ticker.\n * @memberof app.ApplicationOptions\n * @default false\n */\n sharedTicker?: boolean;\n}\n\n/**\n * Middleware for Application's {@link ticker.Ticker} functionality.\n *\n * Adds the following methods to {@link app.Application}:\n * * {@link app.Application#start}\n * * {@link app.Application#stop}\n * * {@link app.Application#ticker}\n * @example\n * import { extensions, TickerPlugin } from 'pixi.js';\n *\n * extensions.add(TickerPlugin);\n * @memberof app\n */\nexport class TickerPlugin\n{\n /** @ignore */\n public static extension: ExtensionMetadata = ExtensionType.Application;\n\n public static start: () => void;\n public static stop: () => void;\n private static _ticker: Ticker;\n public static ticker: Ticker;\n\n /**\n * Initialize the plugin with scope of application instance\n * @static\n * @private\n * @param {object} [options] - See application options\n */\n public static init(options?: PixiMixins.ApplicationOptions): void\n {\n // Set default\n options = Object.assign({\n autoStart: true,\n sharedTicker: false,\n }, options);\n\n // Create ticker setter\n Object.defineProperty(this, 'ticker',\n {\n set(ticker)\n {\n if (this._ticker)\n {\n this._ticker.remove(this.render, this);\n }\n this._ticker = ticker;\n if (ticker)\n {\n ticker.add(this.render, this, UPDATE_PRIORITY.LOW);\n }\n },\n get()\n {\n return this._ticker;\n },\n });\n\n /**\n * Convenience method for stopping the render.\n * @method\n * @memberof app.Application\n * @instance\n */\n this.stop = (): void =>\n {\n this._ticker.stop();\n };\n\n /**\n * Convenience method for starting the render.\n * @method\n * @memberof app.Application\n * @instance\n */\n this.start = (): void =>\n {\n this._ticker.start();\n };\n\n /**\n * Internal reference to the ticker.\n * @type {Ticker}\n * @name _ticker\n * @memberof app.Application#\n * @private\n */\n this._ticker = null;\n\n /**\n * Ticker for doing render updates.\n * @type {ticker.Ticker}\n * @name ticker\n * @memberof app.Application#\n * @default Ticker.shared\n */\n this.ticker = options.sharedTicker ? Ticker.shared : new Ticker();\n\n // Start the rendering\n if (options.autoStart)\n {\n this.start();\n }\n }\n\n /**\n * Clean up the ticker, scoped to application.\n * @static\n * @private\n */\n public static destroy(): void\n {\n if (this._ticker)\n {\n const oldTicker = this._ticker;\n\n this.ticker = null;\n oldTicker.destroy();\n }\n }\n}\n"],"names":[],"mappings":";;;;;AAiDO,MAAM,YACb,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAeI,OAAc,KAAK,OACnB,EAAA;AAEI,IAAA,OAAA,GAAU,OAAO,MAAO,CAAA;AAAA,MACpB,SAAW,EAAA,IAAA;AAAA,MACX,YAAc,EAAA,KAAA;AAAA,OACf,OAAO,CAAA,CAAA;AAGV,IAAO,MAAA,CAAA,cAAA;AAAA,MAAe,IAAA;AAAA,MAAM,QAAA;AAAA,MACxB;AAAA,QACI,IAAI,MACJ,EAAA;AACI,UAAA,IAAI,KAAK,OACT,EAAA;AACI,YAAA,IAAA,CAAK,OAAQ,CAAA,MAAA,CAAO,IAAK,CAAA,MAAA,EAAQ,IAAI,CAAA,CAAA;AAAA,WACzC;AACA,UAAA,IAAA,CAAK,OAAU,GAAA,MAAA,CAAA;AACf,UAAA,IAAI,MACJ,EAAA;AACI,YAAA,MAAA,CAAO,GAAI,CAAA,IAAA,CAAK,MAAQ,EAAA,IAAA,EAAM,gBAAgB,GAAG,CAAA,CAAA;AAAA,WACrD;AAAA,SACJ;AAAA,QACA,GACA,GAAA;AACI,UAAA,OAAO,IAAK,CAAA,OAAA,CAAA;AAAA,SAChB;AAAA,OACJ;AAAA,KAAC,CAAA;AAQL,IAAA,IAAA,CAAK,OAAO,MACZ;AACI,MAAA,IAAA,CAAK,QAAQ,IAAK,EAAA,CAAA;AAAA,KACtB,CAAA;AAQA,IAAA,IAAA,CAAK,QAAQ,MACb;AACI,MAAA,IAAA,CAAK,QAAQ,KAAM,EAAA,CAAA;AAAA,KACvB,CAAA;AASA,IAAA,IAAA,CAAK,OAAU,GAAA,IAAA,CAAA;AASf,IAAA,IAAA,CAAK,SAAS,OAAQ,CAAA,YAAA,GAAe,MAAO,CAAA,MAAA,GAAS,IAAI,MAAO,EAAA,CAAA;AAGhE,IAAA,IAAI,QAAQ,SACZ,EAAA;AACI,MAAA,IAAA,CAAK,KAAM,EAAA,CAAA;AAAA,KACf;AAAA,GACJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,OAAc,OACd,GAAA;AACI,IAAA,IAAI,KAAK,OACT,EAAA;AACI,MAAA,MAAM,YAAY,IAAK,CAAA,OAAA,CAAA;AAEvB,MAAA,IAAA,CAAK,MAAS,GAAA,IAAA,CAAA;AACd,MAAA,SAAA,CAAU,OAAQ,EAAA,CAAA;AAAA,KACtB;AAAA,GACJ;AACJ,CAAA;AAAA;AA3Ga,YAAA,CAGK,YAA+B,aAAc,CAAA,WAAA;;;;"} |