namespace BattleBitAPI.Pooling { public class ItemPooling { private Queue.List> mPool; private int mDefaultCount; public ItemPooling(int defaultCount) { this.mPool = new Queue.List>(6); this.mDefaultCount = defaultCount; } public ItemPooling.List Get() { lock (mPool) { if (mPool.Count > 0) return mPool.Dequeue(); } return new ItemPooling.List(this, mDefaultCount); } public void Post(ItemPooling.List item) { lock (mPool) mPool.Enqueue(item); } public class List : IDisposable { private ItemPooling mParent; public List ListItems; public List(ItemPooling parent, int count) { this.mParent = parent; this.ListItems = new List(count); } public void Dispose() { ListItems.Clear(); mParent.Post(this); } } } }