Пример #1
0
        void ActivatePanel(int index, bool tryAndKeepSelection = false)
        {
            if (m_UIPanels.Count == 0)
            {
                return;
            }

            if (index >= m_UIPanels.Count)
            {
                index = m_UIPanels.Count - 1;
            }

            m_UIPanels.ForEach(p => p.gameObject.SetActive(false));
            m_UIPanels[index].gameObject.SetActive(true);
            m_SelectedPanel = index;

            DebugUIHandlerWidget widget = null;

            if (tryAndKeepSelection && !string.IsNullOrEmpty(m_CurrentQueryPath))
            {
                widget = m_UIPanels[m_SelectedPanel]
                         .GetComponentsInChildren <DebugUIHandlerWidget>()
                         .FirstOrDefault(w => w.GetWidget().queryPath == m_CurrentQueryPath);
            }

            if (widget == null)
            {
                widget = m_UIPanels[index].GetFirstItem();
            }

            ChangeSelection(widget, true);
        }
        internal bool IsDirectChild(DebugUIHandlerWidget widget)
        {
            if (contentHolder.childCount == 0)
            {
                return(false);
            }

            return(GetActiveChildren()
                   .Count(x => x == widget) > 0);
        }
Пример #3
0
        public override bool OnSelection(bool fromNext, DebugUIHandlerWidget previous)
        {
            if (!fromNext && !m_Container.IsDirectChild(previous))
            {
                var lastItem = m_Container.GetLastItem();
                DebugManager.instance.ChangeSelection(lastItem, false);
                return(true);
            }

            return(false);
        }
Пример #4
0
        void Traverse(DebugUI.IContainer container, Transform parentTransform, DebugUIHandlerWidget parentUIHandler)
        {
            DebugUIHandlerWidget previousUIHandler = null;

            for (int i = 0; i < container.children.Count; i++)
            {
                var child = container.children[i];

                if (child.isEditorOnly)
                {
                    continue;
                }

                Transform prefab;

                if (!m_PrefabsMap.TryGetValue(child.GetType(), out prefab))
                {
                    Debug.LogWarning("DebugUI widget doesn't have a prefab: " + child.GetType());
                    continue;
                }

                var go = Instantiate(prefab, parentTransform, false).gameObject;
                go.name = child.displayName;
                var uiHandler = go.GetComponent <DebugUIHandlerWidget>();

                if (uiHandler == null)
                {
                    Debug.LogWarning("DebugUI prefab is missing a DebugUIHandler for: " + child.GetType());
                    continue;
                }

                if (previousUIHandler != null)
                {
                    previousUIHandler.nextUIHandler = uiHandler;
                }
                uiHandler.previousUIHandler = previousUIHandler;
                previousUIHandler           = uiHandler;
                uiHandler.parentUIHandler   = parentUIHandler;
                uiHandler.SetWidget(child);

                var childContainer = go.GetComponent <DebugUIHandlerContainer>();
                if (childContainer != null && child is DebugUI.IContainer)
                {
                    Traverse(child as DebugUI.IContainer, childContainer.contentHolder, uiHandler);
                }
            }
        }
        // TODO: Jumps around with foldouts and the likes, fix me
        internal void ScrollTo(DebugUIHandlerWidget target)
        {
            if (target == null)
            {
                return;
            }

            var targetTransform = target.GetComponent <RectTransform>();

            float itemY           = GetYPosInScroll(targetTransform);
            float targetY         = GetYPosInScroll(m_MaskTransform);
            float normalizedDiffY = (targetY - itemY) / (m_ContentTransform.rect.size.y - m_ScrollTransform.rect.size.y);
            float normalizedPosY  = scrollRect.verticalNormalizedPosition - normalizedDiffY;

            normalizedPosY = Mathf.Clamp01(normalizedPosY);
            scrollRect.verticalNormalizedPosition = Mathf.Lerp(scrollRect.verticalNormalizedPosition, normalizedPosY, Time.deltaTime * 10f);
        }
        public override bool OnSelection(bool fromNext, DebugUIHandlerWidget previous)
        {
            if (fromNext || valueToggle.isOn == false)
            {
                nameLabel.color = colorSelected;
            }
            else if (valueToggle.isOn)
            {
                if (m_Container.IsDirectChild(previous))
                {
                    nameLabel.color = colorSelected;
                }
                else
                {
                    var lastItem = m_Container.GetLastItem();
                    DebugManager.instance.ChangeSelection(lastItem, false);
                }
            }

            return(true);
        }
Пример #7
0
        public void ChangeSelection(DebugUIHandlerWidget widget, bool fromNext)
        {
            if (widget == null)
            {
                return;
            }

            if (m_SelectedWidget != null)
            {
                m_SelectedWidget.OnDeselection();
            }

            var prev = m_SelectedWidget;

            m_SelectedWidget = widget;

            if (!m_SelectedWidget.OnSelection(fromNext, prev))
            {
                if (fromNext)
                {
                    SelectNextItem();
                }
                else
                {
                    SelectPreviousItem();
                }
            }
            else
            {
                if (m_SelectedWidget == null || m_SelectedWidget.GetWidget() == null)
                {
                    m_CurrentQueryPath = string.Empty;
                }
                else
                {
                    m_CurrentQueryPath = m_SelectedWidget.GetWidget().queryPath;
                }
            }
        }
 public override bool OnSelection(bool fromNext, DebugUIHandlerWidget previous)
 {
     nameLabel.color  = colorSelected;
     valueLabel.color = colorSelected;
     return(true);
 }
Пример #9
0
 // Returns `true` if selection is allowed, `false` to skip to the next/previous item
 public virtual bool OnSelection(bool fromNext, DebugUIHandlerWidget previous)
 {
     return(true);
 }