// 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)); }
public void Alloc(GameObject prefab, int capacity, ResetFunction reset = null, DestroyFunction destroy = null) { Alloc(prefab, capacity, CreateGameObjectFunction, reset, destroy); }
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); }
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); }
public void Alloc <TYPE>(int capacity, ResetFunction <TYPE> reset = null, DestroyFunction <TYPE> destroy = null) where TYPE : new() { Alloc(capacity, CreateObjectFunction <TYPE>, reset, destroy); }
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); }
public void Alloc(int capacity, ResetFunction reset = null, DestroyFunction destroy = null) { Alloc(capacity, CreateObjectFunction, reset, destroy); }
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)]; }