public Pooling(int startSize, ISpawner spawner, bool prewarm) { _stack = new Stack <IPoolable>(startSize); _spawner = spawner; if (prewarm) { int count = startSize; while (count > 0) { PoolIn(_spawner.SpawnNew <IPoolable>()); count--; } } }
public IPoolable PoolOut() { IPoolable item = null; if (_stack.Count == 0) { item = _spawner.SpawnNew <IPoolable>(); } else { item = _stack.Pop(); } item.Active(); return(item); }