예제 #1
0
        public override void AddToGUIUpdateList(bool ignoreChildren = false, int order = 0)
        {
            if (!Visible)
            {
                return;
            }

            UpdateOrder = order;
            GUI.AddToUpdateList(this);

            if (ignoreChildren)
            {
                OnAddedToGUIUpdateList?.Invoke(this);
                return;
            }

            foreach (GUIComponent child in Content.Children)
            {
                if (!child.Visible)
                {
                    continue;
                }
                child.AddToGUIUpdateList(false, order);
            }
            OnAddedToGUIUpdateList?.Invoke(this);
        }
예제 #2
0
        public override void AddToGUIUpdateList(bool ignoreChildren = false, int order = 0)
        {
            if (!Visible)
            {
                return;
            }

            if (childrenNeedsRecalculation)
            {
                foreach (GUIComponent child in Content.Children)
                {
                    ClampChildMouseRects(child);
                }
                RepositionChildren();
                childrenNeedsRecalculation = false;
            }

            UpdateOrder = order;
            GUI.AddToUpdateList(this);

            if (ignoreChildren)
            {
                OnAddedToGUIUpdateList?.Invoke(this);
                return;
            }
            Content.AddToGUIUpdateList(true, order);
            int lastVisible = 0;

            for (int i = 0; i < Content.CountChildren; i++)
            {
                var child = Content.GetChild(i);
                if (!child.Visible)
                {
                    continue;
                }
                if (!IsChildInsideFrame(child))
                {
                    if (lastVisible > 0)
                    {
                        break;
                    }
                    continue;
                }
                lastVisible = i;
                child.AddToGUIUpdateList(false, order);
            }
            if (ScrollBar.Enabled)
            {
                ScrollBar.AddToGUIUpdateList(false, order);
            }
            OnAddedToGUIUpdateList?.Invoke(this);
        }
예제 #3
0
        public override void AddToGUIUpdateList(bool ignoreChildren = false, int order = 0)
        {
            if (!Visible)
            {
                return;
            }

            if (!ignoreChildren)
            {
                foreach (GUIComponent child in Children)
                {
                    if (child == Content || child == ScrollBar || child == ContentBackground)
                    {
                        continue;
                    }
                    child.AddToGUIUpdateList(ignoreChildren, order);
                }
            }

            foreach (GUIComponent child in Content.Children)
            {
                if (!childVisible.ContainsKey(child))
                {
                    childVisible[child] = child.Visible;
                }
                if (childVisible[child] != child.Visible)
                {
                    childVisible[child]         = child.Visible;
                    childrenNeedsRecalculation  = true;
                    scrollBarNeedsRecalculation = true;
                    break;
                }
            }

            if (childrenNeedsRecalculation)
            {
                RecalculateChildren();
                childVisible.Clear();
            }

            UpdateOrder = order;
            GUI.AddToUpdateList(this);

            if (ignoreChildren)
            {
                OnAddedToGUIUpdateList?.Invoke(this);
                return;
            }

            int lastVisible = 0;

            for (int i = 0; i < Content.CountChildren; i++)
            {
                var child = Content.GetChild(i);
                if (!child.Visible)
                {
                    continue;
                }
                if (!IsChildInsideFrame(child))
                {
                    if (lastVisible > 0)
                    {
                        break;
                    }
                    continue;
                }
                lastVisible = i;
                child.AddToGUIUpdateList(false, order);
            }
            if (ScrollBar.Enabled)
            {
                ScrollBar.AddToGUIUpdateList(false, order);
            }
            OnAddedToGUIUpdateList?.Invoke(this);
        }