public ObjectPool(Func <T> instantiationFunc, int capacity = 16, ObjectPoolIsFullPolicy isFullPolicy = ObjectPoolIsFullPolicy.ReturnNull) { _instantiationFunction = instantiationFunc ?? throw new ArgumentNullException(nameof(instantiationFunc)); _returnToPoolDelegate = Return; _freeItems = new Deque <T>(capacity); IsFullPolicy = isFullPolicy; }
public ObjectPool(Func <T> instantiationFunc, int capacity = 16, ObjectPoolIsFullPolicy isFullPolicy = ObjectPoolIsFullPolicy.ReturnNull) { if (instantiationFunc == null) { throw new ArgumentNullException(nameof(instantiationFunc)); } _returnToPoolDelegate = Return; _instantiationFunction = instantiationFunc; _freeItems = new Deque <T>(capacity); IsFullPolicy = isFullPolicy; //while (_freeItems.Count < capacity) //{ // Capacity++; // _freeItems.AddToBack(CreateObject()); //} }
private void CreateComponentPool(EntityComponentType componentType, int initialSize, ObjectPoolIsFullPolicy isFullPolicy) { Debug.Assert(componentType != null); Debug.Assert(initialSize > 0); Debug.Assert(!_componentPoolsByComponentTypeIndex.ContainsKey(componentType.Index)); var poolType = typeof(ComponentPool <>).MakeGenericType(componentType.Type); var componentPool = (IComponentPool)_dependencyResolver.Resolve(poolType, initialSize, isFullPolicy); _componentPoolsByComponentTypeIndex.Add(componentType.Index, componentPool); }
public ComponentPool(int intitialSize = 16, ObjectPoolIsFullPolicy isFullPolicy = ObjectPoolIsFullPolicy.ReturnNull) : base(CreateObject, intitialSize, isFullPolicy) { }