# beefyandtheducks/nitronic architecture

> Architecture diagram of the GitHub repository beefyandtheducks/nitronic, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-25). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/beefyandtheducks/nitronic
- Repository: https://github.com/beefyandtheducks/nitronic

## Overview

Nitronic is a C++ real-time 3D engine with an editor and sandbox application. The runtime workflow initializes a window, events, input and renderer; layers update a scene, which the renderer draws and presents each frame. The editor’s hierarchy and component panels provide scene authoring, while the sandbox demonstrates importing a mesh and adding a model. The README is empty, and several subsystems are represented only by filenames; links among those unsampled modules are omitted rather than inferred.

Main entry points: [`engine/src/engine/core/Engine.cpp`](https://github.com/beefyandtheducks/nitronic/blob/main/engine/src/engine/core/Engine.cpp) (Engine), [`engine/src/engine/renderer/Renderer.cpp`](https://github.com/beefyandtheducks/nitronic/blob/main/engine/src/engine/renderer/Renderer.cpp) (Renderer), [`editor/src/Editor.cpp`](https://github.com/beefyandtheducks/nitronic/blob/main/editor/src/Editor.cpp) (Editor), [`engine/src/engine/core/Window.cpp`](https://github.com/beefyandtheducks/nitronic/blob/main/engine/src/engine/core/Window.cpp) (Window)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_runtime["Engine Runtime"]
  node_engine["Engine<br/>[Engine.cpp]"]
  node_eventbus["Event Bus<br/>[EventBus.hpp]"]
  node_window["Window<br/>[Window.cpp]"]
  node_input["Input<br/>[Input.cpp]"]
  node_layers["Layers<br/>[Layer.hpp]"]
  node_scene["Scene ECS<br/>[Engine.hpp]"]
  node_importer["Asset Importer<br/>[AssetImporter.cpp]"]
end

subgraph group_rendering["Rendering"]
  node_renderer["Renderer<br/>[Renderer.cpp]"]
  node_device["Graphics Device<br/>[Device.cpp]"]
  node_backend["API Backends<br/>[RendererVK.cpp]"]
  node_shadercache["Shader Cache<br/>[ShaderCache.hpp]"]
  node_psocache["PSO Cache<br/>[PSOCache.hpp]"]
  node_mesh["Mesh<br/>[Mesh.hpp]"]
end

subgraph group_authoring["Editor Authoring"]
  node_editor["Editor<br/>[Editor.cpp]"]
  node_hierarchy["Hierarchy Panel<br/>[Hierarchy.hpp]"]
  node_components["Components Panel"]
  node_sceneview["Scene View<br/>[SceneView.hpp]"]
end

subgraph group_apps["Applications"]
  node_sandbox["Sandbox Layer<br/>[Sandbox.cpp]"]
end

node_developer(("Developer"))

node_developer -->|"authors scene"| node_editor
node_developer -->|"runs demo"| node_sandbox
node_engine -->|"creates"| node_eventbus
node_engine -->|"creates"| node_window
node_engine -->|"creates"| node_renderer
node_engine -->|"creates"| node_input
node_engine -->|"flushes events"| node_eventbus
node_engine -->|"polls events"| node_window
node_engine -->|"updates"| node_layers
node_engine -->|"renders scene"| node_scene
node_engine -->|"draws scene"| node_renderer
node_engine -->|"ends frame"| node_input
node_window -->|"publishes events"| node_eventbus
node_renderer -->|"creates"| node_device
node_renderer -->|"creates"| node_shadercache
node_renderer -->|"creates"| node_psocache
node_renderer -->|"dispatches API"| node_backend
node_renderer -->|"initializes meshes"| node_mesh
node_sandbox -->|"imports mesh"| node_importer
node_editor --> node_hierarchy
node_editor --> node_components
node_editor --> node_sceneview
node_hierarchy -->|"edits entities"| node_scene
node_components -->|"edits components"| node_scene

click node_engine "https://github.com/beefyandtheducks/nitronic/blob/main/engine/src/engine/core/Engine.cpp"
click node_eventbus "https://github.com/beefyandtheducks/nitronic/blob/main/engine/include/engine/EventBus.hpp"
click node_window "https://github.com/beefyandtheducks/nitronic/blob/main/engine/src/engine/core/Window.cpp"
click node_input "https://github.com/beefyandtheducks/nitronic/blob/main/engine/src/engine/core/Input.cpp"
click node_layers "https://github.com/beefyandtheducks/nitronic/blob/main/engine/include/engine/Layer.hpp"
click node_scene "https://github.com/beefyandtheducks/nitronic/blob/main/engine/include/engine/Engine.hpp"
click node_importer "https://github.com/beefyandtheducks/nitronic/blob/main/engine/src/engine/core/AssetImporter.cpp"
click node_renderer "https://github.com/beefyandtheducks/nitronic/blob/main/engine/src/engine/renderer/Renderer.cpp"
click node_device "https://github.com/beefyandtheducks/nitronic/blob/main/engine/src/engine/renderer/Device.cpp"
click node_backend "https://github.com/beefyandtheducks/nitronic/blob/main/engine/src/platform/vulkan/renderer/RendererVK.cpp"
click node_shadercache "https://github.com/beefyandtheducks/nitronic/blob/main/engine/include/renderer/ShaderCache.hpp"
click node_psocache "https://github.com/beefyandtheducks/nitronic/blob/main/engine/include/renderer/PSOCache.hpp"
click node_mesh "https://github.com/beefyandtheducks/nitronic/blob/main/engine/include/renderer/Mesh.hpp"
click node_editor "https://github.com/beefyandtheducks/nitronic/blob/main/editor/src/Editor.cpp"
click node_hierarchy "https://github.com/beefyandtheducks/nitronic/blob/main/editor/src/Hierarchy.hpp"
click node_components "https://github.com/beefyandtheducks/nitronic/blob/main/editor/src/ComponentsWindow.hpp"
click node_sceneview "https://github.com/beefyandtheducks/nitronic/blob/main/editor/src/SceneView.hpp"
click node_sandbox "https://github.com/beefyandtheducks/nitronic/blob/main/sandbox/src/Sandbox.cpp"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_engine,node_eventbus,node_window,node_input,node_layers,node_scene,node_importer toneBlue
class node_renderer,node_device,node_backend,node_shadercache,node_psocache,node_mesh toneAmber
class node_editor,node_hierarchy,node_components,node_sceneview toneMint
class node_sandbox toneRose
class node_developer toneIndigo
```

## Components

### Engine Runtime

- [Engine](https://github.com/beefyandtheducks/nitronic/blob/main/engine/src/engine/core/Engine.cpp): `engine/src/engine/core/Engine.cpp`
- [Event Bus](https://github.com/beefyandtheducks/nitronic/blob/main/engine/include/engine/EventBus.hpp): `engine/include/engine/EventBus.hpp`
- [Window](https://github.com/beefyandtheducks/nitronic/blob/main/engine/src/engine/core/Window.cpp): `engine/src/engine/core/Window.cpp`
- [Input](https://github.com/beefyandtheducks/nitronic/blob/main/engine/src/engine/core/Input.cpp): `engine/src/engine/core/Input.cpp`
- [Layers](https://github.com/beefyandtheducks/nitronic/blob/main/engine/include/engine/Layer.hpp): `engine/include/engine/Layer.hpp`
- [Scene ECS](https://github.com/beefyandtheducks/nitronic/blob/main/engine/include/engine/Engine.hpp): `engine/include/engine/Engine.hpp`
- [Asset Importer](https://github.com/beefyandtheducks/nitronic/blob/main/engine/src/engine/core/AssetImporter.cpp): `engine/src/engine/core/AssetImporter.cpp`

### Rendering

- [Renderer](https://github.com/beefyandtheducks/nitronic/blob/main/engine/src/engine/renderer/Renderer.cpp): `engine/src/engine/renderer/Renderer.cpp`
- [Graphics Device](https://github.com/beefyandtheducks/nitronic/blob/main/engine/src/engine/renderer/Device.cpp): `engine/src/engine/renderer/Device.cpp`
- [API Backends](https://github.com/beefyandtheducks/nitronic/blob/main/engine/src/platform/vulkan/renderer/RendererVK.cpp): `engine/src/platform/vulkan/renderer/RendererVK.cpp`
- [Shader Cache](https://github.com/beefyandtheducks/nitronic/blob/main/engine/include/renderer/ShaderCache.hpp): `engine/include/renderer/ShaderCache.hpp`
- [PSO Cache](https://github.com/beefyandtheducks/nitronic/blob/main/engine/include/renderer/PSOCache.hpp): `engine/include/renderer/PSOCache.hpp`
- [Mesh](https://github.com/beefyandtheducks/nitronic/blob/main/engine/include/renderer/Mesh.hpp): `engine/include/renderer/Mesh.hpp`

### Editor Authoring

- [Editor](https://github.com/beefyandtheducks/nitronic/blob/main/editor/src/Editor.cpp): `editor/src/Editor.cpp`
- [Hierarchy Panel](https://github.com/beefyandtheducks/nitronic/blob/main/editor/src/Hierarchy.hpp): `editor/src/Hierarchy.hpp`
- [Components Panel](https://github.com/beefyandtheducks/nitronic/blob/main/editor/src/ComponentsWindow.hpp): `editor/src/ComponentsWindow.hpp`
- [Scene View](https://github.com/beefyandtheducks/nitronic/blob/main/editor/src/SceneView.hpp): `editor/src/SceneView.hpp`

### Applications

- [Sandbox Layer](https://github.com/beefyandtheducks/nitronic/blob/main/sandbox/src/Sandbox.cpp): `sandbox/src/Sandbox.cpp`

### Other components

- **Developer**

## Connections

- Developer → Editor: authors scene
- Developer → Sandbox Layer: runs demo
- Engine → Event Bus: creates
- Engine → Window: creates
- Engine → Renderer: creates
- Engine → Input: creates
- Engine → Event Bus: flushes events
- Engine → Window: polls events
- Engine → Layers: updates
- Engine → Scene ECS: renders scene
- Engine → Renderer: draws scene
- Engine → Input: ends frame
- Window → Event Bus: publishes events
- Renderer → Graphics Device: creates
- Renderer → Shader Cache: creates
- Renderer → PSO Cache: creates
- Renderer → API Backends: dispatches API
- Renderer → Mesh: initializes meshes
- Sandbox Layer → Asset Importer: imports mesh
- Editor → Hierarchy Panel
- Editor → Components Panel
- Editor → Scene View
- Hierarchy Panel → Scene ECS: edits entities
- Components Panel → Scene ECS: edits components
