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); } }
public override PoolObjectSettings PoolSettings() { PoolObjectSettings settings = new PoolObjectSettings(poolTag, limit); return(settings); }