Example #1
0
        // Constructor with expected number of objects and instance and destroy functions specified.
        public ObjectPool(int size, InstanceFunction cfunc, DestroyFunction dfunc) : this()
        {
            m_InstanceFxn = cfunc;
            m_DestroyFxn  = dfunc;

            for (int i = 0; i < size; ++i)
            {
                PoolItem <T> newItem = new PoolItem <T>();
                newItem.m_object = m_InstanceFxn();
                if (newItem.m_object == null)
                {
                    newItem.m_state = ItemLife.Null;
                    ++m_NullObjects;
                }
                else
                {
                    newItem.m_state = ItemLife.Ready;
                    ++m_ReadyObjects;
                }

                m_objects.Add(newItem);
            }
        }
 public Task <TransactionReceipt> DestroyRequestAndWaitForReceiptAsync(DestroyFunction destroyFunction, CancellationTokenSource cancellationToken = null)
 {
     return(ContractHandler.SendRequestAndWaitForReceiptAsync(destroyFunction, cancellationToken));
 }
 public Task <string> DestroyRequestAsync(DestroyFunction destroyFunction)
 {
     return(ContractHandler.SendRequestAsync(destroyFunction));
 }
Example #4
0
 public void Alloc(GameObject prefab, int capacity, ResetFunction reset = null, DestroyFunction destroy = null)
 {
     Alloc(prefab, capacity, CreateGameObjectFunction, reset, destroy);
 }
Example #5
0
    public void Alloc(KEY type, int capacity, CreateFunction create, ResetFunction reset = null, DestroyFunction destroy = null)
    {
        Debug.Assert(capacity > 0);
        Debug.Assert(create != null);

        SubPool subPool;

        if (m_pool.TryGetValue(type, out subPool))
        {
            if (capacity > subPool.pool.Count)
            {
                subPool.capacity = capacity;
            }
            //Debug.AssertFormat(create == null && reset == null, "create and reset function are always ignored when realloc the subpool");
            capacity -= subPool.pool.Count;
        }
        else
        {
            subPool          = new SubPool();
            subPool.pool     = new Stack <object>();
            subPool.capacity = capacity;
            subPool.create   = create;
            subPool.reset    = reset;
            subPool.destroy  = destroy;
            m_pool.Add(type, subPool);
        }

        AllocSubPool(subPool, type, capacity);
    }
Example #6
0
 public void Alloc(GameObject prefab, int capacity, CreateFunction create, ResetFunction reset = null, DestroyFunction destroy = null)
 {
     BaseObjectPool <GameObject> .CreateFunction baseCreate = delegate(GameObject type) {
         return(create(type));
     };
     BaseObjectPool <GameObject> .ResetFunction baseReset;
     if (reset != null)
     {
         baseReset = delegate(object obj) {
             reset((GameObject)obj);
         };
     }
     else
     {
         baseReset = null;
     }
     BaseObjectPool <GameObject> .DestroyFunction baseDestroy;
     if (destroy != null)
     {
         baseDestroy = delegate(object obj) {
             destroy((GameObject)obj);
         };
     }
     else
     {
         baseDestroy = null;
     }
     Alloc(prefab, capacity, baseCreate, baseReset, baseDestroy);
 }
Example #7
0
 public void Alloc <TYPE>(int capacity, ResetFunction <TYPE> reset = null, DestroyFunction <TYPE> destroy = null)
     where TYPE : new()
 {
     Alloc(capacity, CreateObjectFunction <TYPE>, reset, destroy);
 }
Example #8
0
    public void Alloc <TYPE>(int capacity, CreateFunction <TYPE> create, ResetFunction <TYPE> reset = null, DestroyFunction <TYPE> destroy = null)
        where TYPE : new()
    {
        CreateFunction baseCreate = delegate(System.Type type) {
            return(create());
        };
        ResetFunction baseReset;

        if (reset != null)
        {
            baseReset = delegate(object obj) {
                reset((TYPE)obj);
            };
        }
        else
        {
            baseReset = null;
        }
        DestroyFunction baseDestroy;

        if (destroy != null)
        {
            baseDestroy = delegate(object obj) {
                destroy((TYPE)obj);
            };
        }
        else
        {
            baseDestroy = null;
        }
        Alloc(typeof(TYPE), capacity, baseCreate, baseReset, baseDestroy);
    }
Example #9
0
 public void Alloc(int capacity, ResetFunction reset = null, DestroyFunction destroy = null)
 {
     Alloc(capacity, CreateObjectFunction, reset, destroy);
 }
Example #10
0
 public void Alloc(int capacity, CreateFunction create, ResetFunction reset = null, DestroyFunction destroy = null)
 {
     BaseObjectPool <System.Type> .CreateFunction baseCreate = delegate(System.Type type) {
         return(create());
     };
     BaseObjectPool <System.Type> .ResetFunction baseReset;
     if (reset != null)
     {
         baseReset = delegate(object obj) {
             reset((TYPE)obj);
         };
     }
     else
     {
         baseReset = null;
     }
     BaseObjectPool <System.Type> .DestroyFunction baseDestroy;
     if (destroy != null)
     {
         baseDestroy = delegate(object obj) {
             destroy((TYPE)obj);
         };
     }
     else
     {
         baseDestroy = null;
     }
     Alloc(typeof(TYPE), capacity, baseCreate, baseReset, baseDestroy);
     m_subPool = m_pool[typeof(TYPE)];
 }