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); }
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); }
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); }
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); }
// Returns `true` if selection is allowed, `false` to skip to the next/previous item public virtual bool OnSelection(bool fromNext, DebugUIHandlerWidget previous) { return(true); }