In this page, we will list and explain what each of these core files does.

Core/Components

The Components directory has the following files:

  1. InlineComponent - Defines the abstract class for inline components. Documentation
  2. WindowComponent - Defines the abstract class for window components. Documentation
  3. TitlebarComponent - Defines the abstract class for title bar components. Documentation
  4. Instance - Defines the base Instance class. Documentation

Core/Events

The Events directory contains the following files:

  1. Input - Defines the Input interface. Documentation

Core/Interfaces

The Interfaces directory contains the following files:

  1. RendererInterface - Defines the Renderer interface. Documentation
  2. WindowInterface - Defines the Window. Documentation

Core/Platform

The Platform directory contains the following files:

  1. WASM - Platform-specific function when targeting WASM

Core/

The Core directory contains the following files:

  1. Core.hpp - A bunch of header files that are widely used internally
  2. Defines.hpp - Defines and constants that are used internally. Documentation
  3. Global - Defines the global internal variable. Documentation
  4. Types.hpp - Contains many type definitions and aliases. Documentation
  5. Utilities - The Utilities interface is defined here. Documentation
  6. CDeallocation.hpp - A header containing a struct that stores intermediate data for the C API. Documentation

Modules/

The Modules folder contains the modules + Modules.hpp which includes all modules. Documentation

Modules/Manager

The Manager folder contains the Modules interface and the ModulesManager internal classes. Documentation, Internal Documentation

Renderer

The Renderer folder contains the rendering code. The Renderer files define the internal renderer and the RendererData struct. Documentation

The Texture files defined the user-facing Texture class.

Renderer/ImGui/ImGui

This class defines internal code that sets up dear imgui. Documentation

Renderer/ImGui/UImGuiExtensions

This class defines some glue code that integrates dear imgui with our own custom types. They currently implement:

  1. imgui_stdlib functions for our own custom FString type

Renderer/GenericRenderer, Renderer/OpenGL, Renderer/Vulkan & Renderer/WebGPU

The Renderer/GenericRenderer folder contains a generic renderer interface, as well as a texturing interface, that are then inherited by the OpenGL, Vulkan and WebGPU renderers respectively.

Each folder has the following classes:

  1. <backend name>Renderer - Contains rendering code for the given backend
  2. <backend name>Texture - Contains texture code for the given backend

Documentation.

Renderer/Window

The Renderer/Window folder contains the code for the internal window management class. Documentation.

The following translation units are used to separate the window code into logical multiple modules:

  1. Callbacks.cpp - contains all callback code
  2. Monitors.cpp - contains all code related to monitors and monitor handling
  3. Platform.cpp - contains all platform functions. On macOS, this code calls the functions from the macOS subdirectory
  4. Window.cpp - all remaining generic window code

It also contains a macOS subdirectory that provides us with the platform-specific functionality for the Window interface, by calling Objective-C code.

Framework.hpp

Includes header files that are going to be used by all files generated under the Source directory.

C/UImGuiCAPI.h

Includes all header files part of the C API. Included by Framework.hpp.