From ab58ae4c0c718c0cb7c2bf0deae2c08d63076da7 Mon Sep 17 00:00:00 2001 From: Thraka Date: Tue, 4 Jan 2022 10:10:11 -0800 Subject: [PATCH] temp checkin for editor/debug code --- .../ExtensionsColorNumerics.cs | 3 +- SadConsole.Debug.MonoGame/GuiOutputPreview.cs | 1 - SadConsole.Debug.MonoGame/GuiScreenObjects.cs | 1 - SadConsole.Debug.MonoGame/GuiState.cs | 1 - .../GuiSurfacePreview.cs | 1 - .../ImGuiObjects/ScreenObjectPanel.cs | 1 - .../ImGuiSystem/ImGuiExt.cs | 4 +- .../SadConsole.Debugger.MonoGame.xml | 38 ++++++------ SadConsoleEditor.sln | 49 +++++++++++++++ Samples/Editor/Editor.csproj | 11 ++-- Samples/Editor/GuiParts/GuiNewFileWindow.cs | 30 ++++++++-- Samples/Editor/GuiParts/GuiSidePane.cs | 33 ++++++++++ Samples/Editor/GuiParts/GuiTopBar.cs | 23 ++++++- Samples/Editor/ImGuiCore.cs | 34 +++++++++-- Samples/Editor/Model/Document.cs | 26 ++++++++ .../Editor/Model/DocumentSurfaceSettings.cs | 60 +++++++++++++++++++ Samples/Editor/Model/IDocumentSettings.cs | 10 ++++ 17 files changed, 281 insertions(+), 45 deletions(-) create mode 100644 SadConsoleEditor.sln create mode 100644 Samples/Editor/GuiParts/GuiSidePane.cs create mode 100644 Samples/Editor/Model/Document.cs create mode 100644 Samples/Editor/Model/DocumentSurfaceSettings.cs create mode 100644 Samples/Editor/Model/IDocumentSettings.cs diff --git a/SadConsole.Debug.MonoGame/ExtensionsColorNumerics.cs b/SadConsole.Debug.MonoGame/ExtensionsColorNumerics.cs index 4aeb19b47..6a75e9f3d 100644 --- a/SadConsole.Debug.MonoGame/ExtensionsColorNumerics.cs +++ b/SadConsole.Debug.MonoGame/ExtensionsColorNumerics.cs @@ -1,10 +1,9 @@ using System; using System.Collections.Generic; -using System.Numerics; using System.Text; using SadRogue.Primitives; -namespace SadConsole.Numerics +namespace System.Numerics { /// /// Extensions to convert to/from . diff --git a/SadConsole.Debug.MonoGame/GuiOutputPreview.cs b/SadConsole.Debug.MonoGame/GuiOutputPreview.cs index 59b9aba48..7cefcf255 100644 --- a/SadConsole.Debug.MonoGame/GuiOutputPreview.cs +++ b/SadConsole.Debug.MonoGame/GuiOutputPreview.cs @@ -3,7 +3,6 @@ using System.Numerics; using System.Text; using ImGuiNET; -using SadConsole.Numerics; using SadConsole.ImGuiSystem; namespace SadConsole.Debug.MonoGame diff --git a/SadConsole.Debug.MonoGame/GuiScreenObjects.cs b/SadConsole.Debug.MonoGame/GuiScreenObjects.cs index ca9326540..e3adb2a3b 100644 --- a/SadConsole.Debug.MonoGame/GuiScreenObjects.cs +++ b/SadConsole.Debug.MonoGame/GuiScreenObjects.cs @@ -4,7 +4,6 @@ using System.Reflection; using ImGuiNET; using System.Numerics; -using SadConsole.Numerics; using SadRogue.Primitives; using SadConsole.ImGuiSystem; diff --git a/SadConsole.Debug.MonoGame/GuiState.cs b/SadConsole.Debug.MonoGame/GuiState.cs index 1e3a5002f..e5d59630e 100644 --- a/SadConsole.Debug.MonoGame/GuiState.cs +++ b/SadConsole.Debug.MonoGame/GuiState.cs @@ -2,7 +2,6 @@ using System.Collections.Generic; using System.Numerics; using System.Text; -using SadConsole.Numerics; namespace SadConsole.Debug.MonoGame { diff --git a/SadConsole.Debug.MonoGame/GuiSurfacePreview.cs b/SadConsole.Debug.MonoGame/GuiSurfacePreview.cs index 6db673903..f281940e2 100644 --- a/SadConsole.Debug.MonoGame/GuiSurfacePreview.cs +++ b/SadConsole.Debug.MonoGame/GuiSurfacePreview.cs @@ -3,7 +3,6 @@ using System.Numerics; using System.Text; using ImGuiNET; -using SadConsole.Numerics; using SadConsole.ImGuiSystem; namespace SadConsole.Debug.MonoGame diff --git a/SadConsole.Debug.MonoGame/ImGuiObjects/ScreenObjectPanel.cs b/SadConsole.Debug.MonoGame/ImGuiObjects/ScreenObjectPanel.cs index 0e68cd3b3..ffd0a0683 100644 --- a/SadConsole.Debug.MonoGame/ImGuiObjects/ScreenObjectPanel.cs +++ b/SadConsole.Debug.MonoGame/ImGuiObjects/ScreenObjectPanel.cs @@ -4,7 +4,6 @@ using System.Numerics; using System.Text; using ImGuiNET; -using SadConsole.Numerics; using SadRogue.Primitives; namespace SadConsole.Debug.MonoGame.ImGuiObjects diff --git a/SadConsole.Debug.MonoGame/ImGuiSystem/ImGuiExt.cs b/SadConsole.Debug.MonoGame/ImGuiSystem/ImGuiExt.cs index 9b647a92a..d738bce1b 100644 --- a/SadConsole.Debug.MonoGame/ImGuiSystem/ImGuiExt.cs +++ b/SadConsole.Debug.MonoGame/ImGuiSystem/ImGuiExt.cs @@ -4,7 +4,6 @@ using System.Text; using ImGuiNET; using Microsoft.Xna.Framework.Graphics; -using SadConsole.Numerics; namespace SadConsole.ImGuiSystem { @@ -47,6 +46,7 @@ public static void DrawTextureChild(string id, bool border, int zoomMode, IntPtr ImGui.EndChild(); } - + public static void CenterNextWindow() => + ImGui.SetNextWindowPos(ImGui.GetIO().DisplaySize / 2f, ImGuiCond.Appearing, new System.Numerics.Vector2(0.5f, 0.5f)); } } diff --git a/SadConsole.Debug.MonoGame/SadConsole.Debugger.MonoGame.xml b/SadConsole.Debug.MonoGame/SadConsole.Debugger.MonoGame.xml index e8d8b054d..8ba6151c9 100644 --- a/SadConsole.Debug.MonoGame/SadConsole.Debugger.MonoGame.xml +++ b/SadConsole.Debug.MonoGame/SadConsole.Debugger.MonoGame.xml @@ -9,25 +9,6 @@ Initializes the debugger. - - - Extensions to convert to/from . - - - - - Converts a to a . - - The color to convert. - The representing the color. - - - - Converts a to a . - - The vector color to convert. - The representing the color. - Searches the object for a and returns its value. If not found, returns . @@ -111,5 +92,24 @@ Gets the geometry as set up by ImGui and sends it to the graphics device + + + Extensions to convert to/from . + + + + + Converts a to a . + + The color to convert. + The representing the color. + + + + Converts a to a . + + The vector color to convert. + The representing the color. + diff --git a/SadConsoleEditor.sln b/SadConsoleEditor.sln new file mode 100644 index 000000000..8e447d083 --- /dev/null +++ b/SadConsoleEditor.sln @@ -0,0 +1,49 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.0.31825.309 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SadConsole", "SadConsole\SadConsole.csproj", "{47532D92-BB78-493A-A693-CC3687F609F6}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SadConsole.Host.MonoGame", "SadConsole.Host.MonoGame\SadConsole.Host.MonoGame.csproj", "{F02A2B3B-706E-4277-9CE2-B47733CCB22F}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SadConsole.Extended", "SadConsole.Extended\SadConsole.Extended.csproj", "{33F13C14-A4E4-467A-BBBC-14A0F7408E77}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SadConsole.Debug.MonoGame", "SadConsole.Debug.MonoGame\SadConsole.Debug.MonoGame.csproj", "{3D40BD49-A118-4655-8452-8CFAE677847A}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Editor", "Samples\Editor\Editor.csproj", "{2972BDC7-1337-4BDC-8C37-99227A7861FD}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {47532D92-BB78-493A-A693-CC3687F609F6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {47532D92-BB78-493A-A693-CC3687F609F6}.Debug|Any CPU.Build.0 = Debug|Any CPU + {47532D92-BB78-493A-A693-CC3687F609F6}.Release|Any CPU.ActiveCfg = Release|Any CPU + {47532D92-BB78-493A-A693-CC3687F609F6}.Release|Any CPU.Build.0 = Release|Any CPU + {F02A2B3B-706E-4277-9CE2-B47733CCB22F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {F02A2B3B-706E-4277-9CE2-B47733CCB22F}.Debug|Any CPU.Build.0 = Debug|Any CPU + {F02A2B3B-706E-4277-9CE2-B47733CCB22F}.Release|Any CPU.ActiveCfg = Release|Any CPU + {F02A2B3B-706E-4277-9CE2-B47733CCB22F}.Release|Any CPU.Build.0 = Release|Any CPU + {33F13C14-A4E4-467A-BBBC-14A0F7408E77}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {33F13C14-A4E4-467A-BBBC-14A0F7408E77}.Debug|Any CPU.Build.0 = Debug|Any CPU + {33F13C14-A4E4-467A-BBBC-14A0F7408E77}.Release|Any CPU.ActiveCfg = Release|Any CPU + {33F13C14-A4E4-467A-BBBC-14A0F7408E77}.Release|Any CPU.Build.0 = Release|Any CPU + {3D40BD49-A118-4655-8452-8CFAE677847A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {3D40BD49-A118-4655-8452-8CFAE677847A}.Debug|Any CPU.Build.0 = Debug|Any CPU + {3D40BD49-A118-4655-8452-8CFAE677847A}.Release|Any CPU.ActiveCfg = Release|Any CPU + {3D40BD49-A118-4655-8452-8CFAE677847A}.Release|Any CPU.Build.0 = Release|Any CPU + {2972BDC7-1337-4BDC-8C37-99227A7861FD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {2972BDC7-1337-4BDC-8C37-99227A7861FD}.Debug|Any CPU.Build.0 = Debug|Any CPU + {2972BDC7-1337-4BDC-8C37-99227A7861FD}.Release|Any CPU.ActiveCfg = Release|Any CPU + {2972BDC7-1337-4BDC-8C37-99227A7861FD}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {55A32531-B44C-4843-9FC5-052AAE7525A3} + EndGlobalSection +EndGlobal diff --git a/Samples/Editor/Editor.csproj b/Samples/Editor/Editor.csproj index 3570a162a..fcc51d7e4 100644 --- a/Samples/Editor/Editor.csproj +++ b/Samples/Editor/Editor.csproj @@ -8,19 +8,22 @@ - true + false - - + + + - + + + diff --git a/Samples/Editor/GuiParts/GuiNewFileWindow.cs b/Samples/Editor/GuiParts/GuiNewFileWindow.cs index 139a7e1a6..c911605cd 100644 --- a/Samples/Editor/GuiParts/GuiNewFileWindow.cs +++ b/Samples/Editor/GuiParts/GuiNewFileWindow.cs @@ -11,28 +11,44 @@ namespace SadConsole.Editor.GuiParts public class GuiNewFileWindow: ImGuiWindow { private int _documentSelectedIndex; + private string _documentName = ""; + public Model.Document Document = new Model.Document() { DocumentType = Model.Document.Types.Surface, Settings = new Model.DocumentSurfaceSettings() }; public GuiNewFileWindow() { Title = "New file"; - } public override void BuildUI(ImGuiRenderer renderer) { if (IsOpen) { - if (ImGui.Begin(Title, ref IsOpen, ImGuiWindowFlags.Modal | ImGuiWindowFlags.AlwaysAutoResize | ImGuiWindowFlags.NoDocking | ImGuiWindowFlags.NoResize | ImGuiWindowFlags.NoCollapse)) + ImGui.OpenPopup(Title); + + ImGuiExt.CenterNextWindow(); + ImGui.SetNextWindowSize(new System.Numerics.Vector2(350, -1)); + if (ImGui.BeginPopupModal(Title, ref IsOpen, ImGuiWindowFlags.NoResize)) { ImGui.Text("Document Type:"); - if (ImGui.ListBox("##Document Type", ref _documentSelectedIndex, new[] { "Surface", "Animation" }, 2)) + ImGui.SetNextItemWidth(ImGui.GetContentRegionAvail().X); + if (ImGui.ListBox("##Document Type", ref _documentSelectedIndex, new[] { "Surface", "Scene", "Animation" }, 3)) { - + Document = _documentSelectedIndex switch + { + _ => new Model.Document() { DocumentType = Model.Document.Types.Surface, Settings = new Model.DocumentSurfaceSettings() }, + }; } - ImGui.Text($"id: {_documentSelectedIndex}"); + ImGui.Separator(); + + ImGui.Text("Name"); + ImGui.InputText("##name", ref Document.Name, 50); + ImGui.Separator(); + Document.Settings.BuildUINew(renderer); + + ImGui.Separator(); if (ImGui.Button("Cancel")) { DialogResult = false; IsOpen = false; } @@ -40,8 +56,10 @@ public override void BuildUI(ImGuiRenderer renderer) float pos = ImGui.GetItemRectSize().X + ImGui.GetStyle().ItemSpacing.X; ImGui.SameLine(ImGui.GetWindowWidth() - pos); if (ImGui.Button("Create")) { DialogResult = true; IsOpen = false; } + + + ImGui.EndPopup(); } - ImGui.End(); } else { diff --git a/Samples/Editor/GuiParts/GuiSidePane.cs b/Samples/Editor/GuiParts/GuiSidePane.cs new file mode 100644 index 000000000..a80420b28 --- /dev/null +++ b/Samples/Editor/GuiParts/GuiSidePane.cs @@ -0,0 +1,33 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Numerics; +using System.Text; +using System.Threading.Tasks; +using ImGuiNET; +using SadConsole.ImGuiSystem; + +namespace SadConsole.Editor.GuiParts +{ + public class GuiSidePane : ImGuiObjectBase + { + private int _selectedDocIndex; + + public override void BuildUI(ImGuiRenderer renderer) + { + ImGui.SetNextWindowSize(new Vector2(200, ImGui.GetIO().DisplaySize.Y / 3), ImGuiCond.Appearing); + + ImGui.Begin("Documents", ImGuiWindowFlags.NoCollapse); + { + + ImGui.ListBox("##documentslist", ref _selectedDocIndex, ImGuiCore.State.OpenDocumentTitles, ImGuiCore.State.OpenDocuments.Length); + + if (ImGuiCore.State.OpenDocuments.Length > 0) + { + ImGuiCore.State.OpenDocuments[ImGuiCore.State.SelectedDocumentIndex].Settings.BuildUIEdit(renderer, true); + } + } + ImGui.End(); + } + } +} diff --git a/Samples/Editor/GuiParts/GuiTopBar.cs b/Samples/Editor/GuiParts/GuiTopBar.cs index c426af900..3ab79ef18 100644 --- a/Samples/Editor/GuiParts/GuiTopBar.cs +++ b/Samples/Editor/GuiParts/GuiTopBar.cs @@ -8,10 +8,17 @@ namespace SadConsole.Editor.GuiParts { public class GuiTopBar : ImGuiObjectBase { - + private bool _showDemoWindow; + private bool _debug; public override void BuildUI(ImGuiRenderer renderer) { + if (_debug) + { + _debug = false; + System.Diagnostics.Debugger.Break(); + } + if (ImGui.BeginMainMenuBar()) { if (ImGui.BeginMenu("File")) @@ -25,7 +32,6 @@ public override void BuildUI(ImGuiRenderer renderer) } - ImGui.EndMenu(); } @@ -34,13 +40,26 @@ public override void BuildUI(ImGuiRenderer renderer) //if (ImGui.MenuItem("Show SadConsole game", "s", ref GuiState.ShowSadConsoleRendering, true)) // GuiState.RaiseShowSadConsoleRenderingChanged(); + ImGui.MenuItem("Show demo", "s", ref _showDemoWindow); + //ImGui.MenuItem("Show surface preview", "p", ref GuiState.ShowSurfacePreview, true); //ImGui.MenuItem("Show final output", "o", ref GuiState.GuiFinalOutputWindow.IsOpen, true); ImGui.EndMenu(); } + if (ImGui.BeginMenu("Debug")) + { + if (ImGui.MenuItem("Pause", "p")) + _debug = true; + + ImGui.EndMenu(); + } + ImGui.EndMainMenuBar(); } + + if (_showDemoWindow) + ImGui.ShowDemoWindow(); } } } diff --git a/Samples/Editor/ImGuiCore.cs b/Samples/Editor/ImGuiCore.cs index 7ee595422..3befd0dd3 100644 --- a/Samples/Editor/ImGuiCore.cs +++ b/Samples/Editor/ImGuiCore.cs @@ -28,8 +28,9 @@ public static bool IsOpened //private static CoolTheme coolTheme = new CoolTheme(); - public static GuiParts.GuiTopBar GuiTopBar; - public static GuiParts.GuiDockspace GuiDockspace; + public static GuiTopBar GuiTopBar; + public static GuiDockspace GuiDockspace; + public static GuiSidePane GuiSidePane; /// /// Initializes the debugger. @@ -64,12 +65,18 @@ public static void Start() //SadConsole.Game.Instance.MonoGameInstance.ClearScreenComponent.Enabled = false; _imGui = new ImGuiMonoGameComponent(SadConsole.Host.Global.GraphicsDeviceManager, Game.Instance.MonoGameInstance, true); - _imGui.Font = "Roboto-Regular.ttf"; - _imGui.fontSize = 14f; + _imGui.ImGuiRenderer.RebuildFontAtlas(); _imGui.HostClosed += _imGui_HostClosed; + //var ptr = ImGuiNET.ImGui.GetIO().Fonts.AddFontFromFileTTF(@"C:\Windows\Fonts\ARIAL.TTF", 13); + //_imGui.ImGuiRenderer.RebuildFontAtlas(); + //ImGuiNET.ImGui.PushFont(ptr); + + //ImGuiNET.ImGui.GetStyle().ScaleAllSizes(2f); + GuiTopBar = new(); GuiDockspace = new(); + GuiSidePane = new(); ResetUIList(); @@ -87,6 +94,7 @@ public static void ResetUIList() _imGui.UIComponents.Clear(); _imGui.UIComponents.Add(GuiTopBar); _imGui.UIComponents.Add(GuiDockspace); + _imGui.UIComponents.Add(GuiSidePane); } public static void ShowCreateDocument() @@ -96,7 +104,10 @@ public static void ShowCreateDocument() ImGuiCore.GuiComponents.Add(window); window.Closed += (s, e) => { - + if (window.DialogResult) + { + State.OpenDocuments = State.OpenDocuments.Append(window.Document).ToArray(); + } }; } @@ -118,5 +129,18 @@ public static void Stop() Settings.Input.DoKeyboard = true; Settings.Input.DoMouse = true; } + + public static class State + { + public static int SelectedDocumentIndex; + public static Model.Document[] OpenDocuments = Array.Empty(); + public static string[] OpenDocumentTitles => OpenDocuments.Select(d => d.Name).ToArray(); + + + public static class LayoutInfo + { + public static float ColorEditBoxWidth = 20; + } + } } } diff --git a/Samples/Editor/Model/Document.cs b/Samples/Editor/Model/Document.cs new file mode 100644 index 000000000..465122f10 --- /dev/null +++ b/Samples/Editor/Model/Document.cs @@ -0,0 +1,26 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace SadConsole.Editor.Model +{ + public class Document + { + public enum Types + { + Surface, + Scene, + Animation + } + + public string Name = "Document 1"; + + public Types DocumentType; + + public object Object; + + public IDocumentSettings Settings; + } +} diff --git a/Samples/Editor/Model/DocumentSurfaceSettings.cs b/Samples/Editor/Model/DocumentSurfaceSettings.cs new file mode 100644 index 000000000..bf82b2f7e --- /dev/null +++ b/Samples/Editor/Model/DocumentSurfaceSettings.cs @@ -0,0 +1,60 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Numerics; +using System.Text; +using System.Threading.Tasks; +using ImGuiNET; +using SadConsole.ImGuiSystem; +using SadRogue.Primitives; + +namespace SadConsole.Editor.Model +{ + public class DocumentSurfaceSettings : IDocumentSettings + { + public int Width = 80; + public int Height = 25; + + public Vector4 DefaultForeground = Color.White.ToVector4(); + public Vector4 DefaultBackground = Color.Black.ToVector4(); + + public void BuildUINew(ImGuiRenderer renderer) + { + float paddingX = ImGui.GetStyle().WindowPadding.X; + float windowWidth = ImGui.GetWindowWidth(); + + ImGui.Text("Width: "); + ImGui.SameLine(ImGui.CalcTextSize("Height: ").X + (ImGui.GetStyle().ItemSpacing.X * 2)); + ImGui.InputInt("##docwidth", ref Width); + + ImGui.Text("Height: "); + ImGui.SameLine(); + ImGui.InputInt("##docheight", ref Height); + + ImGui.Text("Def. Foreground: "); + ImGui.SameLine(windowWidth - paddingX - ImGuiCore.State.LayoutInfo.ColorEditBoxWidth); + ImGui.ColorEdit4("##fore", ref DefaultForeground, ImGuiColorEditFlags.NoInputs); + ImGuiCore.State.LayoutInfo.ColorEditBoxWidth = ImGui.GetItemRectSize().X; + + ImGui.Text("Def. Background: "); + ImGui.SameLine(windowWidth - paddingX - ImGuiCore.State.LayoutInfo.ColorEditBoxWidth); + ImGui.ColorEdit4("##back", ref DefaultBackground, ImGuiColorEditFlags.NoInputs); + } + + public void BuildUIEdit(ImGuiRenderer renderer, bool readOnly) + { + float paddingX = ImGui.GetStyle().WindowPadding.X; + float windowWidth = ImGui.GetWindowWidth(); + + ImGui.Text("Width: "); + ImGui.SameLine(windowWidth - paddingX - 100); + ImGui.SetNextItemWidth(100); + ImGui.Text(Width.ToString()); + + ImGui.Text("Height: "); + ImGui.SameLine(windowWidth - paddingX - 100); + ImGui.SetNextItemWidth(100); + ImGui.Text(Height.ToString()); + } + } +} diff --git a/Samples/Editor/Model/IDocumentSettings.cs b/Samples/Editor/Model/IDocumentSettings.cs new file mode 100644 index 000000000..0d39ad038 --- /dev/null +++ b/Samples/Editor/Model/IDocumentSettings.cs @@ -0,0 +1,10 @@ +using SadConsole.ImGuiSystem; + +namespace SadConsole.Editor.Model +{ + public interface IDocumentSettings + { + void BuildUIEdit(ImGuiRenderer renderer, bool readOnly); + void BuildUINew(ImGuiRenderer renderer); + } +}