EpochGui is the C++23 module/static-library surface for the reusable Epoch GUI
layout library. The current mirror metadata tracks the EpochEngine v0.87.43
source line. The canonical EpochEngine source still lives in the engine tree:
Engine/lib/EpochGui/modules/epoch.gui.ixxEngine/include/epoch/gui/*.hppEngine/src/epochgui/*.cpp
This directory owns the mirror build and documentation files for
Autodidac/EpochGui; it must not fork, duplicate, or wrap editor/runtime code.
The first bounded payload is a versioned static library with backend-neutral
geometry and layout helpers exported by epoch.gui:
modules/epoch.gui.ixxas the module interfaceepoch/gui/floating_window.hppplussrc/epochgui/floating_window.cppepoch/gui/layout_primitives.hppbacked bysrc/epochgui/floating_window.cppepoch/gui/popup_layout.hppplussrc/epochgui/popup_layout.cppepoch/gui/dock_layout.hppplussrc/epochgui/dock_layout.cppepoch/gui/dockable_window.hppplussrc/epochgui/dockable_window.cppepoch/gui/version.hppfor the mirror name and0.87.43version constants
The public namespace is epochnamespace::gui_lib. New integrations should
prefer:
import epoch.gui;Compatibility headers remain for the current engine adapter while call sites
move over. The implementation is module-owned and includes OOP controllers such
as FloatingWindowController, PopupLayoutController,
LayoutPrimitiveController, DockLayoutController, and
DockableWindowController, all deriving from LayoutController. It does not
include editor.cpp, engine.cpp, context sources, renderer backends, runtime
assets, generated output, or Engine/src/engine.gui.cpp.
LayoutPrimitiveController currently covers splitters, progress bars,
loading-screen layout, and selectable-list row math. The loading-screen layout
is deliberately backend-neutral: the library returns panel/title/message/
progress/status/action rectangles and progress fraction only. EpochEngine owns
font rendering, theme colors, modal input capture, and update or launcher
behavior above that layout.
Native popout windows, desktop docking hosts, editor tool panes, and routed contexts are integration-layer features outside this library. Games, mobile apps, console targets, and headless tools can link only the portable layout/state primitives and omit floating GUI host routes entirely.
The CMake and MSVC files support two source layouts:
- In-tree EpochEngine checkout: this directory is
Engine/lib/EpochGui, and the source root is detected two directories above it. - Standalone mirror checkout: place
modules,include/epoch/gui, andsrc/epochguibeside this README, and the source root is the repository root.
If neither layout applies, pass an explicit source root to CMake:
cmake -S Engine/lib/EpochGui -B build/EpochGui -DEPOCHGUI_SOURCE_ROOT=EngineFrom an EpochEngine checkout:
cmake -S Engine/lib/EpochGui -B build/EpochGui
cmake --build build/EpochGui --target EpochGui --config DebugFrom a standalone Autodidac/EpochGui checkout:
cmake -S . -B build
cmake --build build --target EpochGui --config DebugThe CMake target is EpochGui. Compatibility aliases are also provided as
epoch_gui and Autodidac::EpochGui.
The CMake project version is 0.87.43, matching the engine source line that
keeps reusable GUI layout state separate from editor/runtime context ownership
while the packaged-release updater reports runtime payload handoff evidence
without owning launcher-specific behavior.
From an EpochEngine checkout:
& "C:\Program Files\Microsoft Visual Studio\2022\Community\MSBuild\Current\Bin\MSBuild.exe" Engine/lib/EpochGui/EpochGui.vcxproj /p:Configuration=Debug /p:Platform=x64 /m:1From a standalone mirror checkout, open or build EpochGui.vcxproj from the
repository root after placing include/epoch/gui and src/epochgui beside it.
- Keep the mirror source-only. Do not check in build output, packages, caches, captures, generated projects, or editor/runtime assets.
- Keep
.gitattributes,.gitignore,LICENSE, CMake, MSVC, and this README with the standaloneAutodidac/EpochGuirepository. - Keep reusable GUI implementation in
include/epoch/guiandsrc/epochgui. - Keep the module interface in
modules/epoch.gui.ixx. - Keep this directory focused on standalone build metadata and mirror docs.
- Promote new reusable controls through EpochEngine first, then update the mirror payload once the source and build evidence are real.
- Promotion is mechanical and must move as one focused batch: update public
headers under
Engine/include/epoch/gui, implementation files underEngine/src/epochgui,modules/epoch.gui.ixx, in-tree CMake, standalone CMake, MSVC.vcxproj/.filters, the engine adapter imports/wrappers, this README, and the standaloneAutodidac/EpochGuimirror. Build the in-tree and standalone Debug/Release library targets before claiming the payload changed. - Carry the EpochEngine license terms into the standalone mirror root.