private void ForceStartSlideIn(Button button, bool force)
    {
        MenuItem item = FindItemFrom(button);

        if (item == null)
        {
            Debug.LogError("StartSlideIn fail " + button.name);
            return;
        }

        if (!force && firstCircleItem != item)
        {
            Debug.LogWarning("StartSlideIn not selected " + button.name);
            return;
        }

        AnimSlideIn a = new AnimSlideIn();

        if (a.StartAnim(item))
        {
            lock (animParallel)
            {
                animParallel.Add(a);
            }
        }
    }
    public void StartCollapse(Button button)
    {
        MenuItem item = FindItemFrom(button);

        if (item == null)
        {
            Debug.LogError("StartCollapse fail " + button.name);
            return;
        }


        bool hasSequence = false;

        if (firstCircleItem != null)
        {
            AnimSlideIn b = new AnimSlideIn();
            if (b.StartAnim(firstCircleItem))
            {
                hasSequence = true;
                LinkedList <Anim> sequence = new LinkedList <Anim>();

                lock (animParallelSequence)
                {
                    sequence.AddLast(b);

                    AnimCollapse c = new AnimCollapse();
                    if (c.StartAnim(item))
                    {
                        sequence.AddLast(c);
                    }

                    animParallelSequence.Add(sequence);
                }
            }

            firstCircleItem = null;
        }


        if (!hasSequence)
        {
            AnimCollapse a = new AnimCollapse();
            if (a.StartAnim(item))
            {
                lock (animParallel)
                {
                    animParallel.Add(a);
                }
            }
        }
    }