@pixi/core
Version:
Core PixiJS
100 lines (99 loc) • 2.89 kB
JavaScript
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