Пример #1
0
    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--;
            }
        }
    }
Пример #2
0
    public IPoolable PoolOut()
    {
        IPoolable item = null;

        if (_stack.Count == 0)
        {
            item = _spawner.SpawnNew <IPoolable>();
        }
        else
        {
            item = _stack.Pop();
        }

        item.Active();

        return(item);
    }