/// <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); }