internal void DeActivatePoolObject(GameObject defaultParent)
        {
            if (this._object != null)
            {
                if (this._object.transform.parent != defaultParent)
                {
                    if (defaultParent != null)
                    {
                        this._object.transform.SetParent(defaultParent.transform);
                    }
                    else
                    {
                        this._object.transform.SetParent(null);
                    }
                }

                this._object.SetActive(false);
            }
            else
            {
                Debug.Log("_object was null!");
            }

            this.objectSettings = null;
        }
    public GameObject GetPooledObject(GameObject prefabToUse, PoolObjectSettings settings)
    {
        if (prefabToUse != null)
        {
            if (this.poolPrefabManagerDictionary.ContainsKey(prefabToUse))
            {
                return(this.poolPrefabManagerDictionary[prefabToUse].GetObjectFromPool(settings));
            }
            else
            {
                TypePoolManager typePoolManager = new TypePoolManager();
                typePoolManager.poolPrefabToUse = new PoolPrefab()
                {
                    prefab = prefabToUse
                };
                this.activePoolManagers.Add(typePoolManager);
                this.poolPrefabManagerDictionary.Add(prefabToUse, typePoolManager);
                return(typePoolManager.GetObjectFromPool(settings));
            }
        }
        else
        {
            Debug.Log("Call to PoolManager with null prefab!");
        }

        return(null);
    }
        internal GameObject GetObjectFromPool(PoolObjectSettings settings)
        {
            if (settings != null)
            {
                PoolObject poolObject = TakeObjectFromPool();

                if (poolObject != null)
                {
                    poolObject.objectSettings = settings;
                    settings.startTime        = Time.time;

                    if (settings != null && settings.appearanceTime <= 0)
                    {
                        this._idlePool.Remove(poolObject);
                        this._activePool.Add(poolObject);
                        poolObject.ActivatePoolObject();
                    }
                    else
                    {
                        this._idlePool.Remove(poolObject);
                        this._waitingForActivationPool.Add(poolObject);
                    }

                    return(poolObject._object);
                }
            }

            return(null);
        }
    private void SetBulletSettings(PoolObjectSettings settings, PoolObjectSettings newSettings)
    {
        settings.setRigidBodyForce   = true;
        settings.rigidbodyForceToSet = newSettings.rigidbodyForceToSet;

        settings.positionToSet = newSettings.positionToSet;
        settings.rotationToSet = newSettings.rotationToSet;
    }
    public virtual void SetPoolSettings(PoolObjectSettings setPoolObjectSettings)
    {
        poolObjectSettings = setPoolObjectSettings;

        if (poolObjectSettings != null)
        {
            SetReturnToPoolTime(poolObjectSettings.timeBeforeReturningToPool);
        }
    }
    public GameObject GetPooledObject(string type, PoolObjectSettings settings)
    {
        if (this.poolTypeManagerDictionary.ContainsKey(type))
        {
            return(this.poolTypeManagerDictionary[type].GetObjectFromPool(settings));
        }

        Debug.Log("Call to non existant type of Pool Manager with string: " + type);
        return(null);
    }
    protected virtual void DetermineNewBulletSettings(PoolObjectSettings settingsToSet)
    {
        Vector3 forward = this.shooter.transform.forward;

        Vector3 forceToSet = new Vector3(forward.x * this.shootForce, 0, forward.z * this.shootForce);

        settingsToSet.setRigidBodyForce   = true;
        settingsToSet.rigidbodyForceToSet = forceToSet;

        Vector3 shootPosition = this.shootFrom.transform.position;

        settingsToSet.positionToSet = shootPosition;

        Vector3 rotationToSet = this.shootFrom.transform.eulerAngles;

        rotationToSet.x = 0;
        rotationToSet.z = 0;

        settingsToSet.rotationToSet = Quaternion.Euler(rotationToSet);
    }
        internal GameObject GetAndActivateObjectFromPool(PoolObjectSettings settings)
        {
            if (settings != null)
            {
                PoolObject poolObject = TakeObjectFromPool();

                if (poolObject != null)
                {
                    poolObject.objectSettings = settings;
                    settings.startTime        = Time.time;
                    this._idlePool.Remove(poolObject);
                    poolObject.ActivatePoolObject();
                    this._activePool.Add(poolObject);
                    return(poolObject._object);
                }
            }

            Debug.Log("Got null from pool!");
            return(null);
        }
    protected virtual void CreateBullet()
    {
        if (PoolManager.Instance == null)
        {
            return;
        }

        PoolObjectSettings settings = new PoolObjectSettings()
        {
            timeBeforeReturningToPool = 5f,
            appearanceTime            = 0.01f
        };



        PoolObjectSettings settingsToSet = new PoolObjectSettings();

        DetermineNewBulletSettings(settingsToSet);
        SetBulletSettings(settings, settingsToSet);

        GameObject bulletObject = null;

        if (!string.IsNullOrEmpty(bulletPoolString))
        {
            bulletObject = PoolManager.Instance.GetPooledObject(bulletPoolString, settings);
        }
        else if (bulletPrefab)
        {
            bulletObject = PoolManager.Instance.GetPooledObject(bulletPrefab, settings);
        }

        if (bulletObject)
        {
            BulletBase bulletBase = bulletObject.GetComponent <BulletBase>();
            if (bulletBase)
            {
                bulletBase.InitalizeBullet(this);
            }
        }
    }
    protected IEnumerator SpawnCoroutine()
    {
        if (NullCheck() == false)
        {
            yield break;
        }
        List <Transform> enemySpawnPositions = new List <Transform>();

        foreach (Transform child in this.enemyHolder)
        {
            enemySpawnPositions.Add(child);
        }
        for (int i = 0; i < this.enemiesToSpawn; i++)
        {
            Transform spawnPoint = RandomSpawnPoint(enemySpawnPositions);

            yield return(new WaitForSeconds(Random.Range(0.01f, 0.05f)));

            if (PoolManager.Instance == null)
            {
                continue;
            }

            Vector3 enemyPosition = spawnPoint.position + PositionUtils.RandomPositionInArea(this.spawnArea);

            PoolObjectSettings enemySettings = new PoolObjectSettings();
            enemySettings.positionToSet = enemyPosition;
            enemySettings.parentToSet   = spawnPoint.gameObject;

            string randomEnemyType = GetRandomEnemyType(0);


            GameObject randomEnemy = PoolManager.Instance.GetPooledObject(randomEnemyType, enemySettings);

            AssignEnemySettings(randomEnemy);
        }
    }
Beispiel #11
0
    public override PoolObjectSettings PoolSettings()
    {
        PoolObjectSettings settings = new PoolObjectSettings(poolTag, limit);

        return(settings);
    }