void WaitTimePre(bool isEntering, TransitionDataOLD t)
 {
     StartCoroutine(Coroutines.WaitTime(t.preDelay, (complete) => {
         if (complete)
         {
             RunTransition(isEntering, t);
         }
     }));
 }
    void RunTransition(bool isEntering, TransitionDataOLD t)
    {
        _img.SetAlpha(1f);
        bool  triggered     = false;
        float expectedValue = t.curve[t.curve.length - 1].value;

        StartCoroutine(Coroutines.InterpolateCurve(t.curve, t.timeLength, (value) => {
            if (fade)
            {
                _img.SetAlpha(isEntering ? 1f - value : value);
            }
            else
            {
                _rt.anchorMin = new Vector2(isEntering ? value : value - 1f, _rt.anchorMin.y);
                _rt.anchorMax = new Vector2(isEntering ? value + 1: value, _rt.anchorMax.y);
            }

            if (!triggered && value == expectedValue)
            {
                triggered = true;
                WaitTimePost(isEntering, t.postDelay);
            }
        }));
    }