EconomistAi TakeFromBusinessPool() { foreach (EconomistAi p in m_BusinessCrowdPool) { if (!p.gameObject.activeInHierarchy) { return(p); } } GameObject obj = Instantiate(BusinessPersonPrefab, transform.GetChild(0).transform, true); obj.SetActive(false); EconomistAi economistAi = obj.GetComponent <EconomistAi>(); m_BusinessCrowdPool.Add(economistAi); return(economistAi); }
// call this func every wave public void GenerateActiveCrowd(int waveSize, float businessPercentage, float environmentalPercentage, Lane currentLane) { for (int i = 0; i < waveSize; i++) { // grab a business person if (Random.Range(0f, 1f) < businessPercentage) { EconomistAi p = TakeFromBusinessPool(); currentLane.AddAiController(p, currentLane.transform.position); m_ActiveBusinessCrowd.Add(p); } // grab a environmental person else { EnvironmentalistAi p = TakeFromEnvironmentalPool(); currentLane.AddAiController(p, currentLane.transform.position); m_ActiveEnvironmentalCrowd.Add(p); } } }