// ---------------------------------------------------------------- // IEnumerator: EndLevelSequence() // Description: Stops enemies spawning, disables user input, // ragdolls all active enemies, fades to the score counter // screen and disables user cameras // ---------------------------------------------------------------- public IEnumerator EndLevelSequence() { _spawnScript.StopAllCoroutines(); _spawnScript.CancelInvoke(); DisableUserInput(); RagdollManager[] enemies = FindObjectsOfType <RagdollManager>(); foreach (RagdollManager enemy in enemies) { enemy.EnableRagdoll(); // enable each enemy ragdoll yield return(new WaitForEndOfFrame()); // put 1 frame between each ragdoll } Camera[] playerCams = new Camera[2]; playerCams = _player.GetComponentsInChildren <Camera>(); AlphaFade.GetComponent <Animator>().SetTrigger("Fade"); yield return(new WaitUntil(() => AlphaFade.color.a == 1)); // fade screen to black _player.gameObject.SetActive(false); _levelEndCamera.GetComponent <AudioListener>().enabled = true; _levelEndCamera.enabled = true; playerCams[0].enabled = false; playerCams[1].enabled = false; AlphaFade.GetComponent <Animator>().SetTrigger("Fade"); yield return(new WaitUntil(() => AlphaFade.color.a == 0)); // fade screen to clear _endLevelCanvas.gameObject.SetActive(true); // activate the score counter canvas object Cursor.lockState = CursorLockMode.None; Cursor.visible = true; }