IEnumerator CameraEvent()
    {
        TimeManager.SetPaused(true);
        Camera        newCamera   = curObjective.objectiveObj.GetComponent <Camera> ();
        bool          movesCamera = newCamera == null;
        AudioListener oldListener = GameObject.FindObjectOfType <AudioListener> ();
        AudioListener newListener = null;

        if (movesCamera)
        {
            yield return(StartCoroutine(CameraController.instance.ShowTarget(curObjective.objectiveObj.transform)));
        }
        else
        {
            yield return(StartCoroutine(SceneFader.FadeToCameraAndWait(newCamera, curObjective.fadeInColor)));

            oldListener.enabled = false;
            newListener         = newCamera.gameObject.AddComponent <AudioListener> ();
        }

        if (curObjective.animation != null)
        {
            curObjective.animation.SetTrigger("Play");
        }

        yield return(new WaitForSecondsRealtime(curObjective.time));

        TimeManager.SetPaused(false);
        if (curObjectiveId < objectives.Count - 1)
        {
            if (movesCamera)
            {
                CameraController.instance.Resume();
            }
            else
            {
                oldListener.enabled = true;
                Destroy(newListener);
                yield return(StartCoroutine(SceneFader.FadeToCameraAndWait(CameraController.instance.GetComponent <Camera> (), curObjective.fadeOutColor)));
            }
        }

        CompleteObjective();
    }
    IEnumerator GameOverAnimationSequence()
    {
        TimeManager.SetPaused(true);
        gameOverAnim.GetComponent <AnimationTrigger> ().actions += SetUpGameOver;

        if (LevelProgressManager.instance != null)
        {
            LevelProgressManager.instance.HideAllUI();
        }

        foreach (GameObject go in objectsToDisableOnAnimation)
        {
            go.SetActive(false);
        }

        if (gameOverCam != null)
        {
            yield return(StartCoroutine(SceneFader.FadeToCameraAndWait(gameOverCam, Color.black)));
        }

        gameOverAnim.SetTrigger("GameOver");
        yield break;
    }