Example #1
0
        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);
        }
Example #2
0
 public void On_ReturnAllInPool()
 {
     for (int i = 0, l = m_TrackedObject.Count; i < l; ++i)
     {
         PoolTracker poolTracker = m_TrackedObject.Dequeue();
         poolTracker?.ResetTrackedObject();
     }
 }
Example #3
0
        void CheckPoolTrackerOnResetObject(GameObject objectToReturn)
        {
            PoolTracker poolTracker = objectToReturn.GetComponent <PoolTracker>();

            if (poolTracker != null)
            {
                Destroy(poolTracker);
            }
        }
Example #4
0
        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);
        }
Example #5
0
        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);
        }