public PoolObjectComponent GetItem(PoolObjectComponent PrefabRef) { if (PrefabRef == null) { Debug.LogError("Get null ref"); return(null); } else if (_mapPools.ContainsKey(PrefabRef) == false) { Debug.LogWarning("[" + PrefabRef + "] not present in pool"); CreatePool(PrefabRef, 10); } return(_mapPools[PrefabRef].GetItem()); }
public void CreatePool(PoolObjectComponent PrefabToPool, int Size) { if (_mapPools.ContainsKey(PrefabToPool)) { Debug.LogWarning("[" + PrefabToPool.gameObject.name + "] is already in it"); return; } GameObject goContainer = new GameObject("[" + PrefabToPool.name + "]"); Transform transContainer = goContainer.transform; transContainer.parent = _container; _mapPools[PrefabToPool] = new PoolPrefab(PrefabToPool, transContainer, Size); }
private void GetBehaviours() { _shootComp = GetComponent <ShootComponent>(); _moveComp = GetComponent <MoveComponent>(); _bodyComp = GetComponent <BodyComponent>(); _poolObjectComponent = GetComponent <PoolObjectComponent>(); if (_poolObjectComponent) { _poolObjectComponent.OnResetBeforeBackToPool += ResetAfterDisable; } if (_moveComp) { _moveComp.OnOutOfBounds += SelfDestroy; } if (_bodyComp) { _bodyComp.OnDeath += SelfDestroy; } }
public DataPool(PoolObjectComponent Prefab, int SizePreload) { this.Prefab = Prefab; this.SizePreload = SizePreload; }
public void BackToPool(PoolObjectComponent Object) { _poolAvailable.Push(Object); Object.gameObject.SetActive(false); }
public PoolPrefab(PoolObjectComponent Prefab, Transform Container, int Size) { _prefab = Prefab.gameObject; _container = Container; FillPool(Size); }
public T GetItem <T>(PoolObjectComponent PrefabRef) { return(GetItem(PrefabRef).GetComponent <T>()); }