public T Spawn(T gameObject, Vector3 position, Quaternion rotation)
        {
            if (!poolDictionary.ContainsKey(gameObject))
            {
                poolDictionary.Add(gameObject, new List <T>());
            }

            T objectToSpawn = poolDictionary[gameObject].Find(foundObject => !GetGameObject(foundObject).activeSelf);

            if (objectToSpawn == null)
            {
                if (useZenject)
                {
                    objectToSpawn = ZenjectUtilities.Instantiate(gameObject, position, rotation, parent);
                }
                else
                {
                    objectToSpawn = Instantiate(gameObject, position, rotation, parent);
                }

                poolDictionary[gameObject].Add(objectToSpawn);
            }
            else
            {
                var gameObjectToSpawn = GetGameObject(objectToSpawn);
                gameObjectToSpawn.transform.position = position;
                gameObjectToSpawn.transform.rotation = rotation;
                gameObjectToSpawn.SetActive(true);
            }

            return(objectToSpawn);
        }
Exemple #2
0
        private void CreateTower()
        {
            var pivot = transform.parent;
            var tower = ZenjectUtilities.Instantiate(towerPrefab, pivot.position, towerPrefab.transform.rotation, pivot);

            towerSpot.SetTower(tower);
            Close();
        }