/// <summary>
        /// Register a display for the UI
        /// </summary>
        /// <param name="settings"><see cref="IDebugDisplaySettings"/> to be registered</param>
        public void RegisterDebug(IDebugDisplaySettings settings)
        {
            DebugManager debugManager = DebugManager.instance;
            List <IDebugDisplaySettingsPanelDisposable> panels = new List <IDebugDisplaySettingsPanelDisposable>();

            debugManager.RegisterData(this);

            m_Settings         = settings;
            m_DisposablePanels = panels;

            Action <IDebugDisplaySettingsData> onExecute = (data) =>
            {
                IDebugDisplaySettingsPanelDisposable disposableSettingsPanel = data.CreatePanel();
                DebugUI.Widget[] panelWidgets = disposableSettingsPanel.Widgets;
                string           panelId      = disposableSettingsPanel.PanelName;
                DebugUI.Panel    panel        = debugManager.GetPanel(panelId, true);
                ObservableList <DebugUI.Widget> panelChildren = panel.children;

                panel.flags = disposableSettingsPanel.Flags;
                panels.Add(disposableSettingsPanel);
                panelChildren.Add(panelWidgets);
            };

            m_Settings.ForEach(onExecute);
        }
        /// <summary>
        /// Unregister the debug panels
        /// </summary>
        public void UnregisterDebug()
        {
            DebugManager debugManager = DebugManager.instance;

            foreach (IDebugDisplaySettingsPanelDisposable disposableSettingsPanel in m_DisposablePanels)
            {
                DebugUI.Widget[] panelWidgets = disposableSettingsPanel.Widgets;
                string           panelId      = disposableSettingsPanel.PanelName;
                DebugUI.Panel    panel        = debugManager.GetPanel(panelId, true);
                ObservableList <DebugUI.Widget> panelChildren = panel.children;

                disposableSettingsPanel.Dispose();
                panelChildren.Remove(panelWidgets);
            }

            m_DisposablePanels = null;

            debugManager.UnregisterData(this);
        }