public GameObject SpawnFXFromPool(FxType FXType, Vector3 position, Quaternion rotation) { if (!m_FxPoolDictionary.ContainsKey(FXType)) { Debug.LogError("Pool of " + FXType + " dosen't exist."); return(null); } if (m_FxPoolDictionary[FXType].Count == 0) { Debug.LogError(FXType.ToString() + " pool is empty!"); return(null); } GameObject objectToSpawn = m_FxPoolDictionary[FXType].Dequeue(); objectToSpawn.transform.position = position; objectToSpawn.transform.rotation = rotation; objectToSpawn.SetActive(true); PoolTracker poolTracker = AddPoolTrackerComponent(objectToSpawn, PoolType.FxType); poolTracker.FxType = FXType; m_TrackedObject.Enqueue(poolTracker); return(objectToSpawn); }
public void On_ReturnAllInPool() { for (int i = 0, l = m_TrackedObject.Count; i < l; ++i) { PoolTracker poolTracker = m_TrackedObject.Dequeue(); poolTracker?.ResetTrackedObject(); } }
void CheckPoolTrackerOnResetObject(GameObject objectToReturn) { PoolTracker poolTracker = objectToReturn.GetComponent <PoolTracker>(); if (poolTracker != null) { Destroy(poolTracker); } }
PoolTracker AddPoolTrackerComponent(GameObject objectToSpawn, PoolType poolType) { // PoolTracker poolTracker = objectToSpawn.GetComponent<PoolTracker>(); // if(poolTracker == null){ PoolTracker poolTracker = objectToSpawn.AddComponent <PoolTracker>().GetComponent <PoolTracker>(); // } poolTracker.PoolType = poolType; return(poolTracker); }
public GameObject SpawnObjectFromPool(ObjectType objectType, Vector3 position, Quaternion rotation, Transform parent = null) { if (!m_ObjectPoolDictionary.ContainsKey(objectType)) { Debug.LogError("Pool of " + objectType + " dosen't exist."); return(null); } if (m_ObjectPoolDictionary[objectType].Count == 0) { Debug.LogError(objectType.ToString() + " pool is empty!"); return(null); } GameObject objectToSpawn = m_ObjectPoolDictionary[objectType].Dequeue(); if (objectToSpawn == null) { return(null); } objectToSpawn.transform.position = position; objectToSpawn.transform.rotation = rotation; if (parent != null) { if (objectToSpawn.transform.parent != parent) { objectToSpawn.transform.SetParent(parent); } } objectToSpawn.SetActive(true); PoolTracker poolTracker = AddPoolTrackerComponent(objectToSpawn, PoolType.ObjectType); poolTracker.ObjectType = objectType; m_TrackedObject.Enqueue(poolTracker); return(objectToSpawn); }