Esempio n. 1
0
        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));
        }
Esempio n. 2
0
 private void Release()
 {
     while (CatchingTags.Count > 0)
     {
         PoolTag.Release(CatchingTags.Dequeue());
     }
 }
Esempio n. 3
0
        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);
        }
Esempio n. 4
0
 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>();
 }
Esempio n. 5
0
        public void Despawn(PoolTag poolTag, Transform poolObject)
        {
            PoolObjects pool;

            if (pools.TryGetValue(poolTag, out pool))
            {
                pool.Despawn(poolObject);
            }
        }
Esempio n. 6
0
    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);
    }
Esempio n. 7
0
    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);
    }
Esempio n. 8
0
 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);
 }
Esempio n. 9
0
 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);
 }
Esempio n. 10
0
        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);
        }
Esempio n. 11
0
    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);
    }
Esempio n. 12
0
    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);
        }
    }
Esempio n. 13
0
 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);
         }
     }
 }
Esempio n. 14
0
        public Transform Spawn(PoolTag poolTag, Vector3?position = null, Quaternion?rotation = null)
        {
            PoolObjects pool;

            return(pools.TryGetValue(poolTag, out pool) ? pool.Spawn(position, rotation) : null);
        }
Esempio n. 15
0
 public int GetPoolCount(PoolTag tag)
 {
     return(_poolsDictionary[tag].Count);
 }