@awayjs/core
Version:
AwayJS core classes
47 lines (46 loc) • 1.51 kB
JavaScript
var USE_WEAK = ('WeakRef' in self);
var WeakAssetSet = /** @class */ (function () {
function WeakAssetSet(className) {
if (className === void 0) { className = 'WeakAssetSet'; }
this._assets = {};
this._numAssets = 0;
this._className = className;
}
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.forEach = function (callback) {
var asset;
for (var key in this._assets) {
asset = this._assets[key];
if (USE_WEAK) {
asset = asset.deref();
if (!asset) {
console.debug('[' + this._className + '] asset was deleted by GC:', key);
this._numAssets--;
delete this._assets[key];
continue;
}
}
callback(asset);
}
};
return WeakAssetSet;
}());
export { WeakAssetSet };