public PoolableList(Poolable poolable, Transform transform) { poolables = new LinkedList <Poolable>(); prefab = poolable.prefab; deactivatedObjectsParent = transform; poolableData = new PoolableData(); poolableData.objectName = poolable.objectName; poolableData.defaultCount = 1; poolableData.maxCount = 10; CreateParent(); InsertPoolable(poolable); }
public PoolableList(PoolableData data, Poolable poolable, Transform transform) { poolables = new LinkedList <Poolable>(); poolableData = data; prefab = poolable.prefab; deactivatedObjectsParent = transform; CreateParent(); for (int index = 0; index < poolableData.defaultCount; index++) { var gObject = GameObject.Instantiate(poolable.prefab); var poolableAtGameObject = gObject.GetComponent <Poolable>(); InsertPoolable(poolableAtGameObject); } }
public static void AddToPool(PoolableData data, Poolable poolable) { poolable.gameObject.SetActive(false); if (poolsDictionary.ContainsKey(data.objectName)) { var poolableList = poolsDictionary[data.objectName]; if (!poolableList.InsertPoolable(poolable)) { GameObject.Destroy(poolable.gameObject); } } else { var poolableList = new PoolableList(data, poolable, deactivatedObjectsParent.transform); poolsDictionary[data.objectName] = poolableList; } }
public static void InitPool <T>(T objectPrefab) where T : MonoBehaviour, IPoolable { _poolables[typeof(T)] = new PoolableData(objectPrefab.gameObject); _poolables[typeof(T)].Parent = new GameObject(typeof(T).ToString()).transform; _poolables[typeof(T)].Parent.SetParent(_transform); }