예제 #1
0
    private IEnumerator openMenu()
    {
        if (BeforeMenuOpened != null)
        {
            BeforeMenuOpened(this);
        }
        host.Signal("OnBeforeMenuOpened", this);

        isAnimating = true;

        var animate =
            animateOpacity ||
            animateOpenAngle ||
            animateRadius;

        if (animate)
        {
            var time          = Mathf.Max(0.1f, animationLength);
            var animOpenAngle = new dfAnimatedFloat(animateOpenAngle ? 0 : openAngle, openAngle, time);
            var animRadius    = new dfAnimatedFloat(animateRadius ? 0 : radius, radius, time);
            var animOpacity   = new dfAnimatedFloat(this.animateOpacity ? 0 : 1, 1, time);

            var endTime = Time.realtimeSinceStartup + time;
            while (Time.realtimeSinceStartup < endTime)
            {
                arrangeButtons(this.startAngle, animRadius, animOpenAngle, animOpacity);
                yield return(null);
            }
        }

        arrangeButtons();
        isOpen      = true;
        isAnimating = false;

        if (MenuOpened != null)
        {
            MenuOpened(this);
        }

        host.Signal("OnMenuOpened", this);
    }