# trevor-cmd-cmd/project architecture

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

- Interactive diagram: https://gitdiagram.com/trevor-cmd-cmd/project
- Repository: https://github.com/trevor-cmd-cmd/project
- Video tour (about a minute): https://gitdiagram.com/trevor-cmd-cmd/project/video

## Overview

tinyGE is a small C++ graphics-engine library. Its exposed workflow is engine initialization, window creation, and event-driven ticking; rendering-related types provide meshes, shaders, textures, cameras, sprites, and object components. The sampled lifecycle implementation does not show a complete scene-rendering pipeline or connect those types to its tick loop, so the graph keeps those relationships separate. The README documents no capabilities beyond the project name; unsampled subsystem relationships are omitted rather than inferred.

Main entry points: [`tinyGE/include/core/object.h`](https://github.com/trevor-cmd-cmd/project/blob/main/tinyGE/include/core/object.h) (Objects), [`tinyGE/include/core/sprite.h`](https://github.com/trevor-cmd-cmd/project/blob/main/tinyGE/include/core/sprite.h) (Sprites), [`tinyGE/src/core/tinyGE.cpp`](https://github.com/trevor-cmd-cmd/project/blob/main/tinyGE/src/core/tinyGE.cpp) (Engine lifecycle), [`tinyGE/include/core/component.h`](https://github.com/trevor-cmd-cmd/project/blob/main/tinyGE/include/core/component.h) (Components)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_runtime["Engine runtime"]
  node_lifecycle["Engine lifecycle<br/>[tinyGE.cpp]"]
end

subgraph group_scene["Scene model"]
  node_object["Objects<br/>[object.h]"]
  node_component["Components<br/>[component.h]"]
  node_transform["Transforms<br/>[transform.h]"]
  node_vectors["Vector types<br/>[vector.h]"]
  node_sprite["Sprites<br/>[sprite.h]"]
end

subgraph group_graphics["Graphics"]
  node_camera["Camera<br/>[camera.cpp]"]
  node_mesh["Mesh rendering<br/>[mesh.cpp]"]
  node_shader["Shader programs<br/>[shaders.cpp]"]
  node_shaderfiles["Shader sources<br/>[vertex.glsl]"]
  node_texture["Texture loading<br/>[texture.cpp]"]
  node_image["Image decoder<br/>[stb_image.h]"]
end

node_user(("Engine user"))

node_user -->|"calls lifecycle"| node_lifecycle
node_object -->|"stores components"| node_component
node_object -->|"has transform"| node_transform
node_sprite -->|"uses mesh"| node_mesh
node_sprite -->|"uses texture"| node_texture
node_lifecycle -->|"constructs camera"| node_camera

click node_lifecycle "https://github.com/trevor-cmd-cmd/project/blob/main/tinyGE/src/core/tinyGE.cpp"
click node_object "https://github.com/trevor-cmd-cmd/project/blob/main/tinyGE/include/core/object.h"
click node_component "https://github.com/trevor-cmd-cmd/project/blob/main/tinyGE/include/core/component.h"
click node_transform "https://github.com/trevor-cmd-cmd/project/blob/main/tinyGE/include/components/transform.h"
click node_vectors "https://github.com/trevor-cmd-cmd/project/blob/main/tinyGE/include/components/vector.h"
click node_sprite "https://github.com/trevor-cmd-cmd/project/blob/main/tinyGE/include/core/sprite.h"
click node_camera "https://github.com/trevor-cmd-cmd/project/blob/main/tinyGE/src/graphics/camera.cpp"
click node_mesh "https://github.com/trevor-cmd-cmd/project/blob/main/tinyGE/src/graphics/mesh.cpp"
click node_shader "https://github.com/trevor-cmd-cmd/project/blob/main/tinyGE/src/graphics/shaders.cpp"
click node_shaderfiles "https://github.com/trevor-cmd-cmd/project/blob/main/tinyGE/assets/shaders/vertex.glsl"
click node_texture "https://github.com/trevor-cmd-cmd/project/blob/main/tinyGE/src/graphics/texture.cpp"
click node_image "https://github.com/trevor-cmd-cmd/project/blob/main/tinyGE/thirdparty/stb/stb_image.h"

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_lifecycle,node_user toneBlue
class node_object,node_component,node_transform,node_vectors,node_sprite toneAmber
class node_camera,node_mesh,node_shader,node_shaderfiles,node_texture,node_image toneMint
```

## Components

### Engine runtime

- [Engine lifecycle](https://github.com/trevor-cmd-cmd/project/blob/main/tinyGE/src/core/tinyGE.cpp): `tinyGE/src/core/tinyGE.cpp`

### Scene model

- [Objects](https://github.com/trevor-cmd-cmd/project/blob/main/tinyGE/include/core/object.h): `tinyGE/include/core/object.h`
- [Components](https://github.com/trevor-cmd-cmd/project/blob/main/tinyGE/include/core/component.h): `tinyGE/include/core/component.h`
- [Transforms](https://github.com/trevor-cmd-cmd/project/blob/main/tinyGE/include/components/transform.h): `tinyGE/include/components/transform.h`
- [Vector types](https://github.com/trevor-cmd-cmd/project/blob/main/tinyGE/include/components/vector.h): `tinyGE/include/components/vector.h`
- [Sprites](https://github.com/trevor-cmd-cmd/project/blob/main/tinyGE/include/core/sprite.h): `tinyGE/include/core/sprite.h`

### Graphics

- [Camera](https://github.com/trevor-cmd-cmd/project/blob/main/tinyGE/src/graphics/camera.cpp): `tinyGE/src/graphics/camera.cpp`
- [Mesh rendering](https://github.com/trevor-cmd-cmd/project/blob/main/tinyGE/src/graphics/mesh.cpp): `tinyGE/src/graphics/mesh.cpp`
- [Shader programs](https://github.com/trevor-cmd-cmd/project/blob/main/tinyGE/src/graphics/shaders.cpp): `tinyGE/src/graphics/shaders.cpp`
- [Shader sources](https://github.com/trevor-cmd-cmd/project/blob/main/tinyGE/assets/shaders/vertex.glsl): `tinyGE/assets/shaders/vertex.glsl`
- [Texture loading](https://github.com/trevor-cmd-cmd/project/blob/main/tinyGE/src/graphics/texture.cpp): `tinyGE/src/graphics/texture.cpp`
- [Image decoder](https://github.com/trevor-cmd-cmd/project/blob/main/tinyGE/thirdparty/stb/stb_image.h): `tinyGE/thirdparty/stb/stb_image.h`

### Other components

- **Engine user**

## Connections

- Engine user → Engine lifecycle: calls lifecycle
- Objects → Components: stores components (evidence: `tinyGE/include/core/object.h`)
- Objects → Transforms: has transform (evidence: `tinyGE/include/core/object.h`)
- Sprites → Mesh rendering: uses mesh (evidence: `tinyGE/include/core/sprite.h`)
- Sprites → Texture loading: uses texture (evidence: `tinyGE/include/core/sprite.h`)
- Engine lifecycle → Camera: constructs camera (evidence: `tinyGE/src/core/tinyGE.cpp`)
