@awayjs/core
Version:
AwayJS core classes
42 lines (41 loc) • 1.6 kB
JavaScript
var AbstractionSet = /** @class */ (function () {
function AbstractionSet(pool) {
this.pool = pool;
this._abstractions = {};
}
Object.defineProperty(AbstractionSet.prototype, "finalizer", {
get: function () {
var _this = this;
return this.__finalizer || (this.__finalizer = new FinalizationRegistry(function (id) {
var abstraction = _this._abstractions[id];
if (abstraction) { // check abstraction hasn't already been cleared
abstraction.onClear();
}
}));
},
enumerable: false,
configurable: true
});
AbstractionSet.prototype.forEach = function (callback) {
for (var key in this._abstractions)
callback(this._abstractions[key]);
};
AbstractionSet.prototype.getAbstraction = function (asset) {
return this._abstractions[asset.id]
|| (this._abstractions[asset.id] = this.getNewAbstraction(asset));
};
AbstractionSet.prototype.checkAbstraction = function (asset) {
return this._abstractions[asset.id];
};
AbstractionSet.prototype.clearAbstraction = function (id, assetType) {
this.pool.storeAbstraction(this._abstractions[id], assetType);
delete this._abstractions[id];
};
AbstractionSet.prototype.getNewAbstraction = function (asset) {
var abstraction = this.pool.requestAbstraction(asset);
abstraction.init(asset, this.pool);
return abstraction;
};
return AbstractionSet;
}());
export { AbstractionSet };