@awayjs/core
Version:
AwayJS core classes
48 lines (47 loc) • 1.42 kB
JavaScript
var USE_WEAK = ('WeakRef' in self);
var WeakAssetSet = /** @class */ (function () {
function WeakAssetSet() {
this._assets = {};
this._numAssets = 0;
}
Object.defineProperty(WeakAssetSet.prototype, "numAssets", {
get: function () {
return this._numAssets;
},
enumerable: false,
configurable: true
});
WeakAssetSet.prototype.add = function (asset) {
if (!asset || this._assets[asset.id])
return;
this._assets[asset.id] = USE_WEAK ? new self.WeakRef(asset) : asset;
this._numAssets++;
};
WeakAssetSet.prototype.remove = function (asset) {
if (!asset || !this._assets[asset.id])
return;
this._numAssets--;
delete this._assets[asset.id];
};
WeakAssetSet.prototype.clear = function () {
this._assets = {};
this._numAssets = 0;
};
WeakAssetSet.prototype.forEach = function (callback) {
var asset;
for (var key in this._assets) {
asset = this._assets[key];
if (USE_WEAK) {
asset = asset.deref();
if (!asset) {
this._numAssets--;
delete this._assets[key];
continue;
}
}
callback(asset);
}
};
return WeakAssetSet;
}());
export { WeakAssetSet };