UNPKG

@pixi/core

Version:
100 lines (99 loc) 2.89 kB
import { Runner } from "@pixi/runner"; class Resource { /** * @param width - Width of the resource * @param height - Height of the resource */ constructor(width = 0, height = 0) { this._width = width, this._height = height, this.destroyed = !1, this.internal = !1, this.onResize = new Runner("setRealSize"), this.onUpdate = new Runner("update"), this.onError = new Runner("onError"); } /** * Bind to a parent BaseTexture * @param baseTexture - Parent texture */ bind(baseTexture) { this.onResize.add(baseTexture), this.onUpdate.add(baseTexture), this.onError.add(baseTexture), (this._width || this._height) && this.onResize.emit(this._width, this._height); } /** * Unbind to a parent BaseTexture * @param baseTexture - Parent texture */ unbind(baseTexture) { this.onResize.remove(baseTexture), this.onUpdate.remove(baseTexture), this.onError.remove(baseTexture); } /** * Trigger a resize event * @param width - X dimension * @param height - Y dimension */ resize(width, height) { (width !== this._width || height !== this._height) && (this._width = width, this._height = height, this.onResize.emit(width, height)); } /** * Has been validated * @readonly */ get valid() { return !!this._width && !!this._height; } /** Has been updated trigger event. */ update() { this.destroyed || this.onUpdate.emit(); } /** * This can be overridden to start preloading a resource * or do any other prepare step. * @protected * @returns Handle the validate event */ load() { return Promise.resolve(this); } /** * The width of the resource. * @readonly */ get width() { return this._width; } /** * The height of the resource. * @readonly */ get height() { return this._height; } /** * Set the style, optional to override * @param _renderer - yeah, renderer! * @param _baseTexture - the texture * @param _glTexture - texture instance for this webgl context * @returns - `true` is success */ style(_renderer, _baseTexture, _glTexture) { return !1; } /** Clean up anything, this happens when destroying is ready. */ dispose() { } /** * Call when destroying resource, unbind any BaseTexture object * before calling this method, as reference counts are maintained * internally. */ destroy() { this.destroyed || (this.destroyed = !0, this.dispose(), this.onError.removeAll(), this.onError = null, this.onResize.removeAll(), this.onResize = null, this.onUpdate.removeAll(), this.onUpdate = null); } /** * Abstract, used to auto-detect resource type. * @param {*} _source - The source object * @param {string} _extension - The extension of source, if set */ static test(_source, _extension) { return !1; } } export { Resource }; //# sourceMappingURL=Resource.mjs.map