public void OpenEditor() { var nativeWindowSettings = new NativeWindowSettings() { Size = new OpenTK.Mathematics.Vector2i(800, 600), Title = "ZigZag Editor", AutoLoadBindings = true }; m_nativeWindow = new NativeWindow(nativeWindowSettings); m_nativeWindow.Context.MakeCurrent(); GLFW.SwapInterval(1); m_imguiContext = ImGui.CreateContext(); ImGui.SetCurrentContext(m_imguiContext); ImGui.GetIO().ConfigFlags |= ImGuiConfigFlags.DockingEnable; unsafe { fixed(byte *ptr = Resources.Fonts.WorkSans_Regular) { ImGui.GetIO().Fonts.AddFontFromMemoryTTF((IntPtr)ptr, Resources.Fonts.WorkSans_Regular.Length, 28); } } ImGuiPlatformIntegration.SetupKeys(); ImGuiRendererIntegration.Initialize(); ImGuiRendererIntegration.CreateFontsTexture(); m_mainMenu = new MainMenu(); m_hierarchyWindow = new HierarchyWindow("Hierarchy"); m_historyWindow = new HistoryWindow("History"); m_mainMenu.HierarchyWindow = m_hierarchyWindow; m_mainMenu.HistoryWindow = m_historyWindow; }
public void Update() { m_nativeWindow.ProcessEvents(); ImGuiPlatformIntegration.UpdateIO(m_nativeWindow); GL.Viewport(0, 0, m_nativeWindow.Size.X, m_nativeWindow.Size.Y); GL.ClearColor(0, 0, 0, 1); GL.Clear(ClearBufferMask.ColorBufferBit); var activeStyle = ActiveStyle; activeStyle.BeginOverall(); ImGui.NewFrame(); m_mainMenu.Draw(activeStyle); var mainWindowPos = ImGui.GetCursorPos() - ImGui.GetStyle().WindowPadding; var mainWindowSize = ImGui.GetIO().DisplaySize - mainWindowPos; ImGui.SetNextWindowPos(mainWindowPos); ImGui.SetNextWindowSize(mainWindowSize); if (ImGui.Begin("mainWindow", ImGuiWindowFlags.NoDecoration | ImGuiWindowFlags.NoResize | ImGuiWindowFlags.NoMove | ImGuiWindowFlags.NoBringToFrontOnFocus)) { Drawing.DrawVariableThicknessRectangle(ImGui.GetWindowDrawList(), mainWindowPos, mainWindowPos + mainWindowSize, 5, 5, 5, 5, ((FlatStyle)ActiveStyle).ApplicationBackgroundColor); ImGui.SetCursorPos(new Vector2(5, 5)); ImGui.DockSpace(123, mainWindowSize - new Vector2(10, 10), (ImGuiDockNodeFlags)dockNodeFlags); } ImGui.End(); if (m_hierarchyWindow.IsOpen) { m_hierarchyWindow.Draw(activeStyle); } if (m_historyWindow.IsOpen) { m_historyWindow.Draw(activeStyle); } ImGui.ShowDemoWindow(); ImGui.EndFrame(); activeStyle.EndOverall(); ImGui.Render(); ImGuiRendererIntegration.Render(ImGui.GetDrawData(), m_nativeWindow.Size.X, m_nativeWindow.Size.Y); m_nativeWindow.Context.SwapBuffers(); }