The Editor UI system works like this

  1. The engine runtime is initiated
  2. The editor is started (Editor.cpp)
  3. Resources such as textures and thumbnails are loaded (Editor.cpp)
  4. A Dear ImGui context is created (Editor.cpp)
  5. A theme is loaded if the user has one (Editor.cpp)
  6. Tick starts
  7. The Dear ImGui context is updated (Editor.cpp)
  8. All the widgets are updated (Editor.cpp)
  9. Frame finishes


Only the most notable widgets will be listed

Asset slot

The asset slot accepts an asset discriminator to sort assets by type. Asset slots are used for the Details Panel where they come particularly handy for easy asset assignment.

Editor Viewport

Contains the functionality for displaying the game preview to a Dear ImGui window, as well as the whole transformation gizmo system


Controls the Filesystem widget and everything related to it. Notable for being a very complicated class that needs a refactor.

Memory Editor

The memory editor is your standard hex/binary editor, that is going to be used for inspecting the Vulkan shader cache but is currently not able to do that


Lists all the GUI settings functions


Used for shipping your production ready application


Uses many types of charts to highlight statistics. Notable for both not being performant and being hard to refactor.

Terminal emulator

A soon-to-be released terminal emulator widget


Contains all warning messages


The UI works exactly the same as the Editor UI, setup and functionality wise. However, it needs to be kept in mind that the UI uses an event queue, while the regular Editor UI has its widgets baked in the code