/// <summary> /// Creates a pool holder with a start size. /// </summary> /// <returns>The pool holder.</returns> /// <param name="prefab">Prefab.</param> /// <param name="startSize">Pool initial size.</param> public static PoolHolder CreatePoolHolder(GameObject prefab, int startSize) { int prefabID = prefab.GetInstanceID(); if (new StackFrame(1, true).GetMethod().Name == "Awake") { UnityEngine.Debug.LogWarning("Making a PoolHolder in 'Awake()' may result in errors try using 'Start() instead'", prefab); } if (poolHolders.ContainsKey(prefabID)) { UnityEngine.Debug.Log("Pool already exists", poolHolders[prefabID]); return(poolHolders[prefabID]); } else { GameObject newPool = new GameObject(prefab.name + "Pool"); newPool.transform.parent = poolManager.transform; PoolHolder newPoolHolder = newPool.AddComponent <PoolHolder>(); newPoolHolder.SetPoolPrefab(prefab); if (startSize > 0) { newPoolHolder.awakeSize = startSize; } return(newPoolHolder); } }
/// <summary> /// Adds the existing pool holder. /// </summary> /// <returns>The existing pool holder.</returns> /// <param name="poolHolder">Pool holder.</param> public static PoolHolder AddExistingPoolHolder(PoolHolder poolHolder) { if (poolHolders.ContainsKey(poolHolder.prefabID)) { UnityEngine.Debug.LogWarning("The pool of '" + poolHolder.prefab.name + "' already exist", poolHolder); return(poolHolders[poolHolder.prefabID]); } else { poolHolders.Add(poolHolder.prefabID, poolHolder); return(poolHolder); } }
/// <summary> /// Sets the pool holder. /// </summary> /// <param name="pool">Pool.</param> public void SetPoolHolder(PoolHolder pool) { if (poolHolder == null) { if (pool) { poolHolder = pool; } } else { Debug.LogWarning("PoolHolder is already setted. Ignoring...", gameObject); } }
/// <summary> /// Adds a PoolHolder to a given GameObject with a start size. /// </summary> /// <returns>The added pool holder.</returns> /// <param name="prefab">Prefab.</param> /// <param name="parent">Parent.</param> /// <param name="poolSize">Pool size.</param> public static PoolHolder AddPoolHolder(GameObject prefab, GameObject parent, int poolSize) { int prefabID = prefab.GetInstanceID(); if (poolHolders.ContainsKey(prefabID)) { UnityEngine.Debug.LogWarning("The pool of '" + prefab.name + "' already exist", poolHolders[prefabID]); return(poolHolders[prefabID]); } else { PoolHolder newPoolHolder = parent.AddComponent <PoolHolder>(); newPoolHolder.SetPoolPrefab(prefab); newPoolHolder.Add(poolSize); poolHolders.Add(prefabID, newPoolHolder); return(newPoolHolder); } }