Phase 1: Establish Hazel-style UI:: namespace helpers#26
Draft
Phase 1: Establish Hazel-style UI:: namespace helpers#26
Conversation
…Ex.h includes Agent-Logs-Url: https://github.com/starbounded-dev/LuxEngine/sessions/6dd2cc57-3cd7-44f6-b72a-901b8e701a30 Co-authored-by: sheazywi <73042839+sheazywi@users.noreply.github.com>
Copilot
AI
changed the title
[WIP] Execute Phase 1 of Hazel Editor plan for LuxEngine
Phase 1: Establish Hazel-style UI:: namespace helpers
Apr 11, 2026
… controls Agent-Logs-Url: https://github.com/starbounded-dev/LuxEngine/sessions/b51ce09c-9fb1-4afe-b601-b42cd02bbf2f Co-authored-by: sheazywi <73042839+sheazywi@users.noreply.github.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Original prompt
Execute Phase 1 of the Hazel Editor plan for LuxEngine. Establish the Hazel visual language, fonts, and ImGui configuration.
Please implement the following:
Look at the relevant ImGui setup files, editor layer, and UI utility files to implement these foundational features.
The following is the prior conversation context from the user's chat exploration (may be truncated):
User: Could you make a plan for the Copilot agent, to make my LuxEngine's Editor exactly looking like and feeling like the Hazel Editor's
Assistant: Here is a comprehensive, step-by-step plan for the GitHub Copilot coding agent to transform LuxEngine's editor into a Hazel-style Editor. This plan breaks down the massive
EditorLayer.cppandEditorLayer.himplementation into manageable, sequential phases that an AI agent can implement via separate Pull Requests (PRs).Phase 1: Foundational UI & Theming Setup
Goal: Establish the Hazel visual language, fonts, and ImGui configuration.
ImGuiConfigFlags_DockingEnableandImGuiConfigFlags_ViewportsEnableactive.Texture2Dresources (Play, Stop, Pause, Translate, Rotate, Scale, Gears, File/Folder icons).Colors::Themenamespace/struct mapping exactly to Hazel's dark theme (e.g.,titlebar,titlebarGreen,backgroundDark,text,muted,accent).UI::namespace helpers (e.g.,UI::ScopedStyle,UI::ScopedColour,UI::ShiftCursorY,UI::DrawButtonImage) used heavily throughout Hazel.Phase 2: Custom Titlebar & Frameless Window
Goal: Remove the OS window borders and implement the custom draggable Hazel titlebar.
OnImGuiRenderwith zero padding and no background.UI_DrawTitlebar(). Include the engine logo, project name, current scene name, and right-aligned custom Window control buttons (Minimize, Maximize, Close).UI_DrawMenubar()to embed the File, Edit, View, Tools, and Help menus directly into the custom titlebar.Phase 3: The Viewport & Render Targets
Goal: Set up the main central viewport where the game scene is rendered.
ImGui::Image.m_ViewportBounds) to allow for accurate mouse picking and raycasting.EditorCamerato handle Maya-style panning, zooming, and orbiting when the viewport is hovered/focused.EditorCamerawhen the ImGui Viewport panel size changes.Phase 4: Overlaid Toolbars (Floating UI)
Goal: Add the floating transparent toolbars inside the viewport.
UI_GizmosToolbar(). Render a small borderless window in the top-left of the viewport containing Select, Translate, Rotate, and Scale icons.UI_CentralToolbar(). Render a centered overlay at the top of the viewport containing Play, Simulate, and Stop buttons to toggle theSceneState.UI_ViewportSettings(). Add the gear icon overlay in the top-right that opens a popup for grid snapping, bounding box rendering, and display modes.Phase 5: ImGuizmo & Scene Interaction
Goal: Enable visual scene manipulation.
ImGuizmo::BeginFrame(),ImGuizmo::SetOrthographic(false), andImGuizmo::SetRect()tied to the Viewport bounds.UI_DrawGizmos(). Fetch the selected entity's transform, pass it toImGuizmo::Manipulate, and decompose the resulting matrix back into the entity's Local Translation, Rotation, and Scale.This pull request was created from Copilot chat.