IEnumerator DoPlay()
        {
            fx.UpdateTime(0f);

            float curTime = 0f;

            while (curTime < delay)
            {
                yield return(null);

                curTime += isTimeScaled ? Time.deltaTime : Time.unscaledDeltaTime;

                mCurT = Mathf.Clamp01(curTime / delay);

                fx.UpdateTime(mCurT);
            }

            if (signalEnded)
            {
                signalEnded.Invoke();
            }

            if (endCallback != null)
            {
                endCallback();
            }

            yield return(null);

            fx.End();

            mPlayRout = null;
        }
        IEnumerator SceneManager.ITransition.Out()
        {
            if (transitionOut)
            {
                float curTime = 0f;
                while (curTime < delay)
                {
                    yield return(null);

                    curTime += isTimeScaled ? Time.deltaTime : Time.unscaledDeltaTime;
                    transitionOut.UpdateTime(curTime / delay);
                }
            }
            else if (transitionIn)
            {
                transitionIn.UpdateTime(0f);
            }
        }