Ejemplo n.º 1
0
    //TODO write docs
    /// <summary>
    ///
    /// </summary>
    /// <param name="poolSize"></param>
    /// <param name="itemPrefab"></param>
    /// <exception cref="TypeLoadException"></exception>
    public void Init(int poolSize, ObjectPoolItem itemPrefab)
    {
        _poolSize     = poolSize;
        _objectPrefab = itemPrefab;
        _pool         = new Queue <ObjectPoolItem>(_poolSize);

        if (_objectPrefab == null)
        {
            throw new TypeLoadException();
        }

        for (int i = 0; i < _poolSize; i++)
        {
            ObjectPoolItem newItem = Instantiate(_objectPrefab);
            newItem.transform.SetParent(transform);
            newItem.Disable();
            _pool.Enqueue(newItem);
        }
    }
Ejemplo n.º 2
0
 /// <summary>
 /// Deactives and adds an item back into the pool.
 /// </summary>
 /// <param name="sender"></param>
 public void Remove(ObjectPoolItem sender)
 {
     sender.Disable();
     sender.transform.SetParent(transform);
     _pool.Enqueue(sender);
 }