39 lines
1.3 KiB
JavaScript
39 lines
1.3 KiB
JavaScript
shadow$provide.module$node_modules$pixi_DOT_js$lib$utils$data$GCManagedHash = function(global, require, module, exports) {
|
|
class GCManagedHash {
|
|
constructor(options) {
|
|
this.items = Object.create(null);
|
|
const {renderer, type, onUnload, priority, name} = options;
|
|
this._renderer = renderer;
|
|
renderer.gc.addResourceHash(this, "items", type, priority ?? 0);
|
|
this._onUnload = onUnload;
|
|
this.name = name;
|
|
}
|
|
add(item) {
|
|
if (this.items[item.uid]) {
|
|
return !1;
|
|
}
|
|
this.items[item.uid] = item;
|
|
item.once("unload", this.remove, this);
|
|
item._gcLastUsed = this._renderer.gc.now;
|
|
return !0;
|
|
}
|
|
remove(item, ...args) {
|
|
if (this.items[item.uid]) {
|
|
var gpuData = item._gpuData[this._renderer.uid];
|
|
gpuData && (this._onUnload?.(item, ...args), gpuData.destroy(), item._gpuData[this._renderer.uid] = null, this.items[item.uid] = null);
|
|
}
|
|
}
|
|
removeAll(...args) {
|
|
Object.values(this.items).forEach(item => item && this.remove(item, ...args));
|
|
}
|
|
destroy(...args) {
|
|
this.removeAll(...args);
|
|
this.items = Object.create(null);
|
|
this._onUnload = this._renderer = null;
|
|
}
|
|
}
|
|
exports.GCManagedHash = GCManagedHash;
|
|
};
|
|
|
|
//# sourceMappingURL=module$node_modules$pixi_DOT_js$lib$utils$data$GCManagedHash.js.map
|