public DebugColorItemUI(GameObject parent, DebugItem debugItem, string name)
            : base(debugItem)
        {
            m_DebugItem = debugItem;

            m_Root = DebugMenuUI.CreateHorizontalLayoutGroup(name, true, true, false, false, parent);

            m_Name = DebugMenuUI.CreateTextElement(m_DebugItem.name, name, 10, TextAnchor.MiddleLeft, m_Root);
            var layoutElemName = m_Name.AddComponent <UI.LayoutElement>();

            layoutElemName.minWidth = DebugMenuUI.kDebugItemNameWidth;

            // Force layout because we need the right height for the color rect element afterward.
            UI.LayoutRebuilder.ForceRebuildLayoutImmediate(m_Root.GetComponent <RectTransform>());
            RectTransform nameRect = m_Name.GetComponent <RectTransform>();

            m_ColorRect = new GameObject();
            m_ColorRect.transform.SetParent(m_Root.transform, false);
            m_ColorRect.AddComponent <UI.Image>();
            UI.LayoutElement layoutElem = m_ColorRect.AddComponent <UI.LayoutElement>();
            // We need to set min width/height because without an image, the size would be zero.
            layoutElem.minHeight = nameRect.rect.height;
            layoutElem.minWidth  = 40.0f;

            Update();
        }
Пример #2
0
        // Default Implementation: just build all items with provided handler.
        public virtual void BuildGUIImpl(GameObject parent)
        {
            DebugMenuUI.CreateTextElement(string.Format("{0} Title", m_DebugPanel.name), m_DebugPanel.name, 14, TextAnchor.MiddleLeft, parent);

            for (int i = 0; i < m_DebugPanel.itemCount; i++)
            {
                DebugItem item = m_DebugPanel.GetDebugItem(i);
                AddDebugItemUI(item, parent);
            }
        }
        protected DebugSimpleItemUI(GameObject parent, DebugItem debugItem, string name)
            : base(debugItem)
        {
            m_Root = DebugMenuUI.CreateHorizontalLayoutGroup("", true, true, false, false, parent);
            m_Name = DebugMenuUI.CreateTextElement(m_DebugItem.name, name, 10, TextAnchor.MiddleLeft, m_Root);
            var layoutElem = m_Name.AddComponent <UI.LayoutElement>();

            layoutElem.minWidth = DebugMenuUI.kDebugItemNameWidth;
            m_Value             = DebugMenuUI.CreateTextElement(string.Format("{0} value", name), "", 10, TextAnchor.MiddleLeft, m_Root);
        }
Пример #4
0
        private void RebuildGUI()
        {
            m_Root.transform.DetachChildren();

            DebugMenuUI.CreateTextElement(string.Format("{0} Title", m_Name), m_Name, 14, TextAnchor.MiddleLeft, m_Root);

            m_ItemsUI.Clear();
            foreach (DebugMenuItem menuItem in m_Items)
            {
                DebugItemDrawer drawer = menuItem.drawer; // Should never be null, we have at least the default drawer
                m_ItemsUI.Add(drawer.BuildGUI(m_Root, menuItem));
            }
        }
Пример #5
0
        // Default Implementation: just build all items with provided handler.
        public virtual void BuildGUIImpl(GameObject parent)
        {
            DebugMenuUI.CreateTextElement(string.Format("{0} Title", m_DebugPanel.name), m_DebugPanel.name, 14, TextAnchor.MiddleLeft, parent);

            m_ItemsUI.Clear();
            for (int i = 0; i < m_DebugPanel.itemCount; i++)
            {
                DebugItem item = m_DebugPanel.GetDebugItem(i);
                if (!((item.flags & DebugItemFlag.EditorOnly) != 0))
                {
                    DebugItemHandler handler = item.handler; // Should never be null, we have at least the default handler
                    m_ItemsUI.Add(handler.BuildGUI(parent));
                }
            }
        }
        DebugMenuManager()
        {
            m_PersistentDebugPanel = new DebugPanel <DebugPanelUI>("Persistent");
            m_DebugMenuUI          = new DebugMenuUI(this);

            LookUpDebugPanelClasses();

            var updater = GameObject.Find("DebugMenuUpdater");

            if (updater == null)
            {
                GameObject go = new GameObject("DebugMenuUpdater");
                go.hideFlags = HideFlags.HideAndDontSave;
                go.AddComponent <DebugMenuUpdater>();
            }
        }
        void OnGUI()
        {
            if (m_DebugMenu == null)
            {
                return;
            }

            // Contrary to the menu in the player, here we always render the menu wether it's enabled or not. This is a separate window so user can manage it however they want.
            EditorGUI.BeginChangeCheck();
            DebugMenuUI debugMenuUI      = m_DebugMenu.menuUI;
            int         debugMenuCount   = m_DebugMenu.panelCount;
            int         activePanelIndex = debugMenuUI.activePanelIndex;

            using (new EditorGUILayout.HorizontalScope())
            {
                for (int i = 0; i < debugMenuCount; ++i)
                {
                    GUIStyle style = EditorStyles.miniButtonMid;
                    if (i == 0)
                    {
                        style = EditorStyles.miniButtonLeft;
                    }
                    if (i == debugMenuCount - 1)
                    {
                        style = EditorStyles.miniButtonRight;
                    }

                    string name = m_DebugMenu.GetDebugPanel(i).name;
                    if (GUILayout.Toggle(i == activePanelIndex, new GUIContent(name), style))
                    {
                        activePanelIndex = i;
                    }
                }
            }
            if (EditorGUI.EndChangeCheck())
            {
                debugMenuUI.activePanelIndex = activePanelIndex;
            }

            debugMenuUI.OnEditorGUI();
        }
Пример #8
0
        public void BuildGUI()
        {
            if (m_Root != null)
            {
                return;
            }

            float kBorderSize = 5.0f;

            m_Root = new GameObject("DebugMenu Root");
            Canvas canvas = m_Root.AddComponent <Canvas>();

            canvas.renderMode = RenderMode.ScreenSpaceOverlay;
            UI.CanvasScaler canvasScaler = m_Root.AddComponent <UI.CanvasScaler>();
            canvasScaler.uiScaleMode         = UI.CanvasScaler.ScaleMode.ScaleWithScreenSize;
            canvasScaler.referenceResolution = new Vector2(800.0f, 600.0f);

            // TODO: Move background an layout to the menu itself.
            m_MainMenuRoot = new GameObject("Background");
            m_MainMenuRoot.AddComponent <CanvasRenderer>();
            var image = m_MainMenuRoot.AddComponent <UI.Image>();

            m_MainMenuRoot.transform.SetParent(m_Root.transform, false);
            image.rectTransform.pivot            = new Vector2(0.0f, 0.0f);
            image.rectTransform.localPosition    = Vector3.zero;
            image.rectTransform.localScale       = Vector3.one;
            image.rectTransform.anchorMin        = new Vector2(0.0f, 0.0f);
            image.rectTransform.anchorMax        = new Vector2(0.5f, 1.0f);
            image.rectTransform.anchoredPosition = new Vector2(kBorderSize, kBorderSize);
            image.rectTransform.sizeDelta        = new Vector2(-(kBorderSize * 2.0f), -(kBorderSize * 2.0f));
            image.color = kBackgroundColor;

            GameObject    goVL = DebugMenuUI.CreateVerticalLayoutGroup("DebugMenu VLayout", true, true, true, false, 5.0f, m_MainMenuRoot);
            RectTransform menuVLRectTransform = goVL.GetComponent <RectTransform>();

            menuVLRectTransform.pivot            = new Vector2(0.0f, 0.0f);
            menuVLRectTransform.localPosition    = Vector3.zero;
            menuVLRectTransform.localScale       = Vector3.one;
            menuVLRectTransform.anchorMin        = new Vector2(0.0f, 0.0f);
            menuVLRectTransform.anchorMax        = new Vector2(1.0f, 1.0f);
            menuVLRectTransform.anchoredPosition = new Vector2(kBorderSize, kBorderSize);
            menuVLRectTransform.sizeDelta        = new Vector2(-(kBorderSize * 2.0f), -(kBorderSize * 2.0f));

            // TODO: Move background an layout to the menu itself.
            m_PersistentMenuRoot = new GameObject("Background_Persistent");
            m_PersistentMenuRoot.AddComponent <CanvasRenderer>();
            image = m_PersistentMenuRoot.AddComponent <UI.Image>();
            m_PersistentMenuRoot.transform.SetParent(m_Root.transform, false);
            image.rectTransform.pivot            = new Vector2(0.0f, 0.0f);
            image.rectTransform.localPosition    = Vector3.zero;
            image.rectTransform.localScale       = Vector3.one;
            image.rectTransform.anchorMin        = new Vector2(0.7f, 0.8f);
            image.rectTransform.anchorMax        = new Vector2(1.0f, 1.0f);
            image.rectTransform.anchoredPosition = new Vector2(kBorderSize, kBorderSize);
            image.rectTransform.sizeDelta        = new Vector2(-(kBorderSize * 2.0f), -(kBorderSize * 2.0f));
            image.color = kBackgroundColor;

            GameObject goVL2 = DebugMenuUI.CreateVerticalLayoutGroup("DebugMenu VLayout", true, true, true, false, 5.0f, m_PersistentMenuRoot);

            menuVLRectTransform                  = goVL2.GetComponent <RectTransform>();
            menuVLRectTransform.pivot            = new Vector2(0.0f, 0.0f);
            menuVLRectTransform.localPosition    = Vector3.zero;
            menuVLRectTransform.localScale       = Vector3.one;
            menuVLRectTransform.anchorMin        = new Vector2(0.0f, 0.0f);
            menuVLRectTransform.anchorMax        = new Vector2(1.0f, 1.0f);
            menuVLRectTransform.anchoredPosition = new Vector2(kBorderSize, kBorderSize);
            menuVLRectTransform.sizeDelta        = new Vector2(-(kBorderSize * 2.0f), -(kBorderSize * 2.0f));

            m_PersistentMenuRoot.SetActive(false);

            DebugMenuUI.CreateTextElement("DebugMenuTitle", "Debug Menu", 14, TextAnchor.MiddleCenter, goVL);

            int menuCount = m_DebugMenuManager.menuCount;

            m_MenuRoots = new GameObject[menuCount];
            for (int i = 0; i < menuCount; ++i)
            {
                m_MenuRoots[i] = m_DebugMenuManager.GetDebugMenu(i).BuildGUI(goVL);
            }

            m_DebugMenuManager.GetPersistentDebugMenu().BuildGUI(goVL2);
        }
Пример #9
0
 DebugMenuManager()
 {
     LookUpDebugMenuClasses();
     m_PersistentDebugMenu = new DebugMenu("Persistent");
     m_DebugMenuUI         = new DebugMenuUI(this);
 }