public static void MarkLayoutForRebuild(RectTransform rect)
        {
            if (!(rect == null))
            {
                List <Component> list = ListPool <Component> .Get();

                RectTransform rectTransform = rect;
                while (true)
                {
                    RectTransform rectTransform2 = rectTransform.parent as RectTransform;
                    if (!LayoutRebuilder.ValidLayoutGroup(rectTransform2, list))
                    {
                        break;
                    }
                    rectTransform = rectTransform2;
                }
                if (rectTransform == rect && !LayoutRebuilder.ValidController(rectTransform, list))
                {
                    ListPool <Component> .Release(list);
                }
                else
                {
                    LayoutRebuilder.MarkLayoutRootForRebuild(rectTransform);
                    ListPool <Component> .Release(list);
                }
            }
        }
        /// <summary>
        ///   <para>Mark the given RectTransform as needing it's layout to be recalculated during the next layout pass.</para>
        /// </summary>
        /// <param name="rect">Rect to rebuild.</param>
        public static void MarkLayoutForRebuild(RectTransform rect)
        {
            if ((UnityEngine.Object)rect == (UnityEngine.Object)null)
            {
                return;
            }
            List <Component> componentList = ListPool <Component> .Get();

            RectTransform rectTransform = rect;

            while (true)
            {
                RectTransform parent = rectTransform.parent as RectTransform;
                if (LayoutRebuilder.ValidLayoutGroup(parent, componentList))
                {
                    rectTransform = parent;
                }
                else
                {
                    break;
                }
            }
            if ((UnityEngine.Object)rectTransform == (UnityEngine.Object)rect && !LayoutRebuilder.ValidController(rectTransform, componentList))
            {
                ListPool <Component> .Release(componentList);
            }
            else
            {
                LayoutRebuilder.MarkLayoutRootForRebuild(rectTransform);
                ListPool <Component> .Release(componentList);
            }
        }
Esempio n. 3
0
        public static void MarkLayoutForRebuild(RectTransform rect)
        {
            if (!(rect == null) && !(rect.gameObject == null))
            {
                List <Component> list = ListPool <Component> .Get();

                bool          flag           = true;
                RectTransform rectTransform  = rect;
                RectTransform rectTransform2 = rectTransform.parent as RectTransform;
                while (flag && !(rectTransform2 == null) && !(rectTransform2.gameObject == null))
                {
                    flag = false;
                    rectTransform2.GetComponents(typeof(ILayoutGroup), list);
                    for (int i = 0; i < list.Count; i++)
                    {
                        Component component = list[i];
                        if (component != null && component is Behaviour && ((Behaviour)component).isActiveAndEnabled)
                        {
                            flag          = true;
                            rectTransform = rectTransform2;
                            break;
                        }
                    }
                    rectTransform2 = (rectTransform2.parent as RectTransform);
                }
                if (rectTransform == rect && !LayoutRebuilder.ValidController(rectTransform, list))
                {
                    ListPool <Component> .Release(list);
                }
                else
                {
                    LayoutRebuilder.MarkLayoutRootForRebuild(rectTransform);
                    ListPool <Component> .Release(list);
                }
            }
        }