private IEnumerator AdvanceRoutine(Action onFinished)
        {
            // Fade in
            this.Log("Starting slide show...");
            backgroundComponent.CrossFadeAlpha(1f, transitionDuration / 2f, ignoreTimeScale);
            yield return(new WaitForSeconds(transitionDuration));

            // Set the slides
            for (int i = 0; i < asset.slides.Length; i++)
            {
                currentSlideNumber = i;
                StratusSlideshowAsset.Slide slide = asset.slides[i];

                // Set
                textComponent.text    = slide.text;
                imageComponent.sprite = slide.sprite;

                float transition = slide.transition > 0.0f
                                        ? slide.transition : slideTransitionDuration;

                // Fade in
                canvasGroup.CrossFade(true, transition);
                yield return(new WaitForSeconds(transition));

                // Fade out
                canvasGroup.CrossFade(false, transition);
                yield return(new WaitForSeconds(transition));
            }

            this.Log("Ending slide show...");
            yield return(new WaitForSeconds(transitionDuration / 2f));

            backgroundComponent.CrossFadeAlpha(0f, transitionDuration, ignoreTimeScale);
            yield return(new WaitForSeconds(transitionDuration / 2f));

            onFinished?.Invoke();
        }
 private void Set(StratusSlideshowAsset.Slide slide)
 {
     textComponent.text    = slide.text;
     imageComponent.sprite = slide.sprite;
 }