private IEnumerator TransitConsole(float yInit, float yLast, float time, UDEMath.TimeFunction ease, Action lastAction)
        {
            consoleStateChangable = false;

            UDEMath.TimeFunction yFunc = t => yInit + t * (yLast - yInit);
            yFunc = yFunc.Composite(ease).Composite(t => t / time);

            float acct = 0;

            while (true)
            {
                acct += Time.deltaTime;

                Vector3 pos = rectTransform.anchoredPosition3D;
                pos.y = yFunc(acct);
                if (acct > time)
                {
                    pos.y = yLast;
                }
                rectTransform.anchoredPosition3D = pos;
                if (acct > time)
                {
                    break;
                }

                yield return(null);
            }

            lastAction.Invoke();

            consoleStateChangable = true;

            yield return(null);
        }
Example #2
0
        private IEnumerator RotateCircle(RectTransform circle, float period, float waitTime, float radius)
        {
            UDEMath.TimeFunction func = UDETransitionHelper.easeInOutCubic.Composite(t => t / period);

            float accTime = 0;

            while (true)
            {
                float angle = -90 + 360 * func(accTime);
                if (accTime > period)
                    angle = 270;
                (float x, float y) = UDEMath.Polar2Cartesian(radius, angle);

                circle.anchoredPosition = new Vector2(x, y);

                accTime += Time.deltaTime;
                if (accTime > period + waitTime)
                    accTime = 0;

                yield return null;
            }
        }