public void OnDestroyObject(PoolableMonoBehaviour poolableMonoBehaviour) { var poolableClass = poolableMonoBehaviour.GetOriginalInstanceId(); if (!_pooledObjectDictionary.ContainsKey(poolableClass)) { Queue <PoolableMonoBehaviour> poolableQue = new Queue <PoolableMonoBehaviour>(); poolableQue.Enqueue(poolableMonoBehaviour); _pooledObjectDictionary.Add(poolableClass, poolableQue); } else { Queue <PoolableMonoBehaviour> poolableQueue = _pooledObjectDictionary[poolableClass]; poolableQueue.Enqueue(poolableMonoBehaviour); } }
public PoolableMonoBehaviour GetPoolableObject(PoolableMonoBehaviour original) { int instanceID = original.GetInstanceID(); PoolableMonoBehaviour objectToReturn = null; if (_pooledObjectDictionary.ContainsKey(instanceID)) { Queue <PoolableMonoBehaviour> poolableQueue = _pooledObjectDictionary[instanceID]; if (poolableQueue.Count > 0) { objectToReturn = poolableQueue.Dequeue(); } } if (objectToReturn == null) { objectToReturn = MonoBehaviour.Instantiate(original); } objectToReturn.SetActive(true); objectToReturn.SetOriginalInstanceId(original); return(objectToReturn); }
public void SetOriginalInstanceId(PoolableMonoBehaviour original) { OriginalInstanceId = original.GetInstanceID(); }
public static PoolableMonoBehaviour GetPoolable(PoolableMonoBehaviour original) { return(ObjectPoolingManager.GetInstance().GetPoolableObject(original)); }