public static void RemoveWindow(HudWindow window)
 {
     s_ActiveWindows.Remove(window);
 }
        void OnGUI()
        {
            if (!isEnabled)
            {
                return;
            }

            // Initialize main HUD
            GUILayout.BeginVertical(GUI.skin.box, GUILayout.Width(300));

            foreach (Action element in s_HeaderContents.Values)
            {
                element();
            }

            GUILayout.BeginHorizontal();

            foreach (IHudTab tab in s_HUDTabs.Values)
            {
                var wasSelected = tab == m_SelectedTab;
                var selected    = GUILayout.Toggle(wasSelected, tab.Label, GUI.skin.button);
                if (selected != wasSelected)
                {
                    if (m_SelectedTab != null)
                    {
                        m_SelectedTab.OnDeselected();
                    }

                    m_SelectedTab = selected ? tab : null;

                    if (m_SelectedTab != null)
                    {
                        m_SelectedTab.OnSelected();
                    }
                }
            }

            GUILayout.EndHorizontal();

            if (m_SelectedTab != null)
            {
                m_SelectedTab.OnGUI(this);
            }

            GUILayout.EndVertical();

            // Draggable windows
            var current = Event.current;

            if (current.type == EventType.MouseDown)
            {
                for (var Idx = s_ActiveWindows.Count - 1; Idx >= 0; --Idx)
                {
                    var window = s_ActiveWindows[Idx];
                    if (s_ActiveWindows[Idx].TryDragWindow(current))
                    {
                        m_DraggingWindow = s_ActiveWindows[Idx];
                        break;
                    }
                }
            }
            else if (current.type == EventType.MouseDrag && m_DraggingWindow != null)
            {
                m_DraggingWindow.UpdateDragWindow(current);
            }
            else if (current.type == EventType.MouseUp && m_DraggingWindow != null)
            {
                m_DraggingWindow.EndDragWindow();
                m_DraggingWindow = null;
            }

            foreach (var window in s_ActiveWindows)
            {
                window.DrawWindow(this);
            }
        }
 public static void AddWindow(HudWindow window)
 {
     s_ActiveWindows.Add(window);
 }