private IEnumerator AsteroidWaveControllerCoroutine() { var spawner = FindObjectOfType <AsteroidSpawner>(); while (true) { if (OnWaveStarted != null) { OnWaveStarted.Invoke(CurrentWaveNumber); } spawner.AsteroidTypeLevel = CurrentWaveNumber; spawner.Spawning = true; yield return(new WaitForSeconds(WaveDuration)); spawner.Spawning = false; yield return(new WaitForSeconds(CooldownDuration)); if (OnWaveEnded != null) { OnWaveEnded.Invoke(CurrentWaveNumber); } yield return(new WaitForSeconds(BreakDuration)); CurrentWaveNumber += 1; } }