public static PoolObjects Create(PoolTag poolTag, GameObject poolPrefab, int size = 0) { var parent = GetPoolTagTransform(poolTag); var list = SpawnPoolObjects(poolPrefab, size, parent); return(new PoolObjects(poolTag, poolPrefab, list, parent)); }
private void Release() { while (CatchingTags.Count > 0) { PoolTag.Release(CatchingTags.Dequeue()); } }
private static Transform GetPoolTagTransform(PoolTag poolTag) { var rootPool = (GameObject.Find("[POOL]") ?? new GameObject("[POOL]")).transform; var pool = new GameObject(poolTag.ToString()); pool.transform.parent = rootPool; return(pool.transform); }
private PoolObjects(PoolTag poolTag, GameObject poolObject, Queue <Transform> poolObjects, Transform parent) { this.PoolTag = poolTag; this.poolObject = poolObject; this.poolObjects = poolObjects; this.parent = parent; usingPoolObjects = new HashSet <Transform>(); }
public void Despawn(PoolTag poolTag, Transform poolObject) { PoolObjects pool; if (pools.TryGetValue(poolTag, out pool)) { pool.Despawn(poolObject); } }
public void ReturnToPool(PoolTag tag, GameObject objectToReturn) { if (_poolsDictionary[tag] == null) { throw new NullReferenceException("This tag doesn't exist in PoolsDictionary"); } objectToReturn.SetActive(false); _poolsDictionary[tag].Enqueue(objectToReturn); }
public GameObject GetFromPool(PoolTag tag) { if (_poolsDictionary[tag] == null) { throw new NullReferenceException("This tag doesn't exist in PoolsDictionary"); } GameObject objectFromPool = _poolsDictionary[tag].Dequeue(); objectFromPool.SetActive(true); return(objectFromPool); }
public GameObject GetObjectOfTypeFromPool(PoolTag tag, Vector3 position, Quaternion rotation) { for (int i = 0; i < pools.Count; i++) { if (pools[i].tag == tag) { objectFromPool = pools[i].GetNextInQueue(); objectFromPool.transform.position = position; objectFromPool.transform.rotation = rotation; objectFromPool.gameObject.SetActive(true); pools[i].PlaceInQueue(objectFromPool); return(objectFromPool.gameObject); } } return(null); }
public GameObject GetObjectFromPoolWithLifeTime(PoolTag tag, Vector3 position, Quaternion rotation, Vector3 scale, float lifeTime) { for (int i = 0; i < pools.Count; i++) { if (pools[i].tag == tag) { objectFromPool = pools[i].GetNextInQueue(); objectFromPool.lifeTime = lifeTime; objectFromPool.transform.position = position; objectFromPool.transform.rotation = rotation; objectFromPool.transform.localScale = scale; objectFromPool.gameObject.SetActive(true); pools[i].PlaceInQueue(objectFromPool); return(objectFromPool.gameObject); } } return(null); }
public GameObject Spawn(PoolTag tag, Vector3 position = default) { if (!poolGroup.ContainsKey(tag)) { Debug.LogError($"PoolTag of type {tag.ToString()} doesn't exist!"); return(null); } GameObject objectToSpawn = poolGroup[tag].Dequeue(); objectToSpawn.SetActive(true); objectToSpawn.transform.position = position; objectToSpawn.transform.rotation = Quaternion.identity; poolGroup[tag].Enqueue(objectToSpawn); return(objectToSpawn); }
public GameObject Spawn(PoolTag tag, Vector3 position, Quaternion rotation) { GameObject spawnedObject = poolDictionary[tag].Dequeue(); spawnedObject.SetActive(true); spawnedObject.transform.position = position; spawnedObject.transform.rotation = rotation; IPooledObject pooledObject = spawnedObject.GetComponent <IPooledObject>(); if (pooledObject != null) { pooledObject.OnObjectSpawned(); } poolDictionary[tag].Enqueue(spawnedObject); return(spawnedObject); }
private void LoadAllRequest() { ReadOnlyCollection <GuildMemberRow> members = guildSys.GuildTable.ReadOnlyRows; int count = members.Count; for (int i = 0; i < count; i++) { int capture = i; ApplyTag tag = PoolTag.GetItem(); tag.UserName.text = members[capture].NameInGame; tag.AcceptBtn.OnClickEvents += () => S_ACCEPT_APPLY(members[capture]); tag.RejectBtn.OnClickEvents += () => S_REJECT_APPLY(members[capture]); CatchingTags.Enqueue(tag); tag.gameObject.SetActive(true); } }
private void AddPoolTag(Pool pool, List <string> tags) { if (pool.Id > 0) { _poolTagRepository.DeleteMulti(x => x.PoolId == pool.Id); } else { pool.PoolTags = new List <PoolTag>(); } if (tags.Count > 0) { foreach (var newTag in tags) { var tag = new PoolTag(); tag.Tag = newTag; pool.PoolTags.Add(tag); } } }
public Transform Spawn(PoolTag poolTag, Vector3?position = null, Quaternion?rotation = null) { PoolObjects pool; return(pools.TryGetValue(poolTag, out pool) ? pool.Spawn(position, rotation) : null); }
public int GetPoolCount(PoolTag tag) { return(_poolsDictionary[tag].Count); }