Exemple #1
0
    private pooledObject AddObjectToPool()
    {
        pooledObject newObj = new pooledObject(CreateObject());

        pool.Add(newObj);
        return(newObj);
    }
Exemple #2
0
 void Start()
 {
     onOff     = true;
     explosion = Statics.explosionPool[0];
     me        = GetComponent <pooledObject>();
     blinker   = transform.GetChild(0).gameObject;
 }
Exemple #3
0
    /// <summary>
    /// Gets an object out of the pool. Depending on the pool's configuration,
    /// THIS COULD BE NULL!
    ///
    /// Furthermore, the retrieved object should be used/activated immediately after
    /// calling this function. (What that means is up to the pooler; check its
    /// documentation.) Otherwise, subsequent method calls may yield control of the
    /// pooled object to someone else.
    ///
    /// Also, it's a bad idea to maintain a reference to a pooled object after it
    /// becomes inactive. Use repoolDelegate if you plan on maintaining a reference
    /// to the given object beyond the scope of one function.
    /// </summary>
    ///
    /// <returns>One of the objects ouf of the pool or null.</returns>
    ///
    /// <param name="repoolDelegate">
    /// Optional delegate which gets called as soon as the object is called up again.
    /// Please avoid calling GetPooledObject within the delegate.
    /// </param>
    public TObj GetPooledObject(ObjectRepooler repoolDelegate = null)
    {
        pooledObject grabbedObj = null;

        int index = 0;

        while (index < pool.Count && grabbedObj == null)
        {
            if (pool[index].obj == null)
            {
                // One of the elements of the list is null; repopulate that element.
                grabbedObj  = new pooledObject(CreateObject());
                pool[index] = grabbedObj;
            }
            else if (IsObjectInPool(pool[index].obj))
            {
                grabbedObj = pool[index];
            }
            else
            {
                index++;
            }
        }

        if (grabbedObj == null && willGrow)
        {
            grabbedObj = AddObjectToPool();
        }

        if (grabbedObj.returnToPool != null)
        {
            grabbedObj.returnToPool(grabbedObj.obj);
        }

        grabbedObj.returnToPool = repoolDelegate;

        return(grabbedObj.obj);
    }
Exemple #4
0
 // Use this for initialization
 void Start()
 {
     explosion     = Statics.explosionPool[0];
     weakExplosion = Statics.explosionPool[1];
     me            = GetComponent <pooledObject>();
 }