## ADDED Requirements ### Requirement: Docking is enabled at compile time The build system SHALL define `IMGUI_HAS_DOCK` prior to compiling any translation unit that includes `imgui.h`. #### Scenario: ImGui compiled with docking support - **WHEN** the project is compiled with CMake - **THEN** `IMGUI_HAS_DOCK` is defined for all imgui source files and any file including `imgui.h` ### Requirement: Docking is enabled at runtime The application SHALL set `ImGuiConfigFlags_DockingEnable` in the ImGui IO configuration during initialization. #### Scenario: Docking flag set on startup - **WHEN** the application starts and `ImGuiContext::Initialize()` is called - **THEN** `io.ConfigFlags` includes `ImGuiConfigFlags_DockingEnable` ### Requirement: Main dockspace spans the application window The application SHALL create a full-viewport dockspace via `ImGui::DockSpaceOverViewport()` at the start of each frame's UI rendering. #### Scenario: Dockspace created each frame - **WHEN** `Application::RenderUI()` executes - **THEN** `ImGui::DockSpaceOverViewport()` is called after `NewFrame()` and before any panel `Begin/End` calls #### Scenario: Dockspace fills the entire viewport - **WHEN** the application window is resized - **THEN** the dockspace automatically fills the new window dimensions ### Requirement: All panels are dockable All application panels SHALL be created as dockable ImGui windows that integrate with the dockspace. #### Scenario: Panel windows use standard Begin/End - **WHEN** any panel window is rendered - **THEN** its `ImGui::Begin()` call does not include `SetNextWindowPos` or `SetNextWindowSize` calls - **AND** the window can be dragged, docked, tabbed, or floated by the user #### Scenario: Core panels cannot be collapsed - **WHEN** the Scene Hierarchy, Layer Panel, Viewport, or Property Panel windows are rendered - **THEN** each window is created with `ImGuiWindowFlags_NoCollapse` ### Requirement: Window visibility toggles persist Existing View menu toggles for Stage Info and Demo Window SHALL continue to control window visibility. #### Scenario: Toggle Stage Info visibility - **WHEN** the user clicks "Stage Info" in the View menu - **THEN** the Stage Info window appears or disappears - **AND** the toggle state is reflected by the checkmark in the menu item #### Scenario: Toggle Demo Window visibility - **WHEN** the user clicks "ImGui Demo" in the View menu - **THEN** the ImGui Demo Window appears or disappears - **AND** the toggle state is reflected by the checkmark in the menu item ### Requirement: Dock layout persists across sessions The docking layout SHALL be saved to and restored from `imgui.ini` automatically by ImGui's built-in persistence. #### Scenario: Layout restored on restart - **WHEN** the user arranges panels into a custom docking layout and restarts the application - **THEN** the previous docking layout is restored