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);
		}
	}
}