/// <summary> /// /// </summary> /// <param name="objectPoolLibrary">Библиотека пулов. Используется для нахождения пула объекта по объекту или его префабу</param> /// <param name="poolCreator">Создатель пулов. Переопределяется при необходимости переопределения конструктора пулов</param> public PoolSpawner(int objectsCount = DefaultObjectsCount, IObjectPoolLibrary objectPoolLibrary = null, IPoolCreator poolCreator = null) { _objectPoolLibrary = objectPoolLibrary ?? new DictionaryPoolLibrary(); _poolCreator = poolCreator ?? new DefaultPoolCreator(); _objectsCount = objectsCount; }
//private ConcurrentStack<T> m_IdleList; public AllocBasePool(int count, IPoolCreator <T> creator) { m_TotalCount = count; m_IdleCount = count; m_PoolCreator = creator; m_AllocList = new List <T>(count); foreach (var v in creator.Create(count)) { m_AllocList.Add(v); } //m_IdleList = new ConcurrentStack<T>(m_AllocList); m_IdleList = new List <T>(m_AllocList); }
public virtual void dispose() { if (m_IdleList != null) { m_IdleCount = 0; m_IdleList.Clear(); m_IdleList = null; } if (m_AllocList != null) { m_TotalCount = 0; m_AllocList.Clear(); m_AllocList = null; } m_PoolCreator = null; }