Engine.ObjectPool = class
{
constructor(objectClass)
{
this.objectClass = objectClass;
this.pool = [];
this.active = [];
this.haveMessaged = false;
}
getNextObject(constructorParam)
{
var obj = null;
if (this.pool.length > 0)
{
obj = this.pool[0];
this.pool.splice(0, 1);
} else {
if (constructorParam !== undefined)
{
obj = new this.objectClass(constructorParam);
} else {
obj = new this.objectClass();
}
}
this.active.push(obj);
if (this.activeCount > 105 && !this.haveMessaged)
{
Debug.Log(this.objectClass.constructor.name + " has over 105 active instances!!!");
this.haveMessaged = true;
}
return obj;
}
returnObject(obj)
{
if (obj !== undefined && obj !== null && !this.pool.contains(obj))
{
this.active.remove(obj);
this.pool.push(obj);
}
}
}