public SimpleObjectPool(PoolManager poolManager, int capacity, IPooledObjectInstantiator <T> objectInstantiator) { _capacity = capacity; _poolManager = poolManager; _objects = new Queue <T>(capacity); _objectInstantiator = objectInstantiator ?? throw new ArgumentNullException("objectInstantiator"); }
public Pool AddPool(object id, GameObject original, IPooledObjectInstantiator instantiator = null, int maxPrewarmCount = DEFAULT_PREWARM_COUNT, bool isPersistent = false) { Pool existingPool = GetPool(id); if (existingPool != null && !existingPool.IsValid()) { RemovePool(id); } if (ContainsPool(id)) { if (Pool.FindPoolInGameObject(original, out Pool poolAlreadyExists)) { Debug.LogWarning("WARNING: Object is already being contained in an existing pool!. Returning it."); poolAlreadyExists.persistent = isPersistent; return(poolAlreadyExists); } Pool result = GetPool(id); result.AddToPool(original); result.persistent = isPersistent; return(result); } if (!enablePrewarm) { maxPrewarmCount = 0; } Pool pool = new Pool(id.ToString(), maxPrewarmCount); pool.id = id; pool.original = original; pool.persistent = isPersistent; if (USE_POOL_CONTAINERS) { pool.container.transform.parent = container.transform; pool.original.name = "Original"; pool.original.transform.SetParent(pool.container.transform, true); } else { pool.original.transform.SetParent(null, true); } pool.original.SetActive(false); pool.instantiator = instantiator; pools.Add(id, pool); return(pool); }
public AssetLibrary_Poolable(IPooledObjectInstantiator instantiator) { this.instantiator = instantiator; }
public PoolingOptions(IPooledObjectInstantiator <T> objectInstantiator, int initialCapacity = 100) { InitialCapacity = initialCapacity; ServingCapabilityBorderline = 0.8f; Instantiator = objectInstantiator ?? throw new ArgumentNullException(nameof(objectInstantiator)); }
public PoolingOptions(IPooledObjectInstantiator <T> objectInstantiator) : this(objectInstantiator, 100, 0.8f) { }