Beispiel #1
0
    /// <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);
        }
    }
Beispiel #2
0
 /// <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);
     }
 }
Beispiel #3
0
 /// <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);
     }
 }
Beispiel #4
0
    /// <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);
        }
    }