public virtual void ReturnItem(T item) { poolingItem <T> poolingItem = pooledItems.Find(i => i.item.Equals(item)); poolingItem.isActive = false; Debug.Log("Returned Item to pool"); }
private T CreateNewPooledItem() { poolingItem <T> poolItem = new poolingItem <T>(); poolItem.item = CreateItem(); poolItem.isActive = true; pooledItems.Add(poolItem); Debug.Log("Adding New Item to Pool"); return(poolItem.item); }
public virtual T GetItem() { if (pooledItems.Count > 0) { poolingItem <T> pooledItem = pooledItems.Find(i => !i.isActive); if (pooledItem != null) { pooledItem.isActive = true; Debug.Log("Got item from Pool"); return(pooledItem.item); } } return(CreateNewPooledItem()); }