47 lines
1.3 KiB
JavaScript
47 lines
1.3 KiB
JavaScript
shadow$provide.module$node_modules$pixi_DOT_js$lib$utils$pool$Pool = function(global, require, module, exports) {
|
|
class Pool {
|
|
constructor(ClassType, initialSize) {
|
|
this._pool = [];
|
|
this._index = this._count = 0;
|
|
this._classType = ClassType;
|
|
initialSize && this.prepopulate(initialSize);
|
|
}
|
|
prepopulate(total) {
|
|
for (let i = 0; i < total; i++) {
|
|
this._pool[this._index++] = new this._classType();
|
|
}
|
|
this._count += total;
|
|
}
|
|
get(data) {
|
|
let item;
|
|
0 < this._index ? item = this._pool[--this._index] : (item = new this._classType(), this._count++);
|
|
item.init?.(data);
|
|
return item;
|
|
}
|
|
return(item) {
|
|
item.reset?.();
|
|
this._pool[this._index++] = item;
|
|
}
|
|
get totalSize() {
|
|
return this._count;
|
|
}
|
|
get totalFree() {
|
|
return this._index;
|
|
}
|
|
get totalUsed() {
|
|
return this._count - this._index;
|
|
}
|
|
clear() {
|
|
if (0 < this._pool.length && this._pool[0].destroy) {
|
|
for (let i = 0; i < this._index; i++) {
|
|
this._pool[i].destroy();
|
|
}
|
|
}
|
|
this._index = this._count = this._pool.length = 0;
|
|
}
|
|
}
|
|
exports.Pool = Pool;
|
|
};
|
|
|
|
//# sourceMappingURL=module$node_modules$pixi_DOT_js$lib$utils$pool$Pool.js.map
|