# iyouthy/plugin-disassemble architecture

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

- Interactive diagram: https://gitdiagram.com/iyouthy/plugin-disassemble
- Repository: https://github.com/iyouthy/plugin-disassemble

## Overview

This is a Godot 4 GDExtension quickstart template, not a standalone application. The sample workflow is to launch the Godot project, load the configured native extension, register its example class, and exercise a method that prints a Variant type. The graph also preserves the template’s native entry point and sample project configuration. The README documents the end-to-end test, but the project script, scene, and extension configuration were not excerpted, so their internal wiring is not asserted.

Main entry points: [`project`](https://github.com/iyouthy/plugin-disassemble/tree/main/project) (Sample project), [`src/register_types.cpp`](https://github.com/iyouthy/plugin-disassemble/blob/main/src/register_types.cpp) (Type registration), [`src/example_class.h`](https://github.com/iyouthy/plugin-disassemble/blob/main/src/example_class.h) (Example class), [`project/example.tscn`](https://github.com/iyouthy/plugin-disassemble/blob/main/project/example.tscn) (Example scene)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_sample["Godot sample"]
  node_project["Sample project"]
  node_scene["Example scene<br/>[example.tscn]"]
  node_script["Example script<br/>[example.gd]"]
end

subgraph group_extension["Native extension"]
  node_entry["Library entry<br/>[register_types.cpp]"]
  node_registration["Type registration<br/>[register_types.cpp]"]
  node_registration_api["Registration API<br/>[register_types.h]"]
  node_example_class["Example class<br/>[example_class.h]"]
  node_example_method["Print type<br/>[example_class.cpp]"]
end

subgraph group_config["Extension setup"]
  node_extension_config["Extension config"]
end

node_user(("Godot user"))
node_console(("Godot console"))

node_user -->|"launches"| node_project
node_project -->|"launches scene"| node_scene
node_project -->|"loads library"| node_extension_config
node_scene -.->|"uses script"| node_script
node_script -.->|"calls method"| node_example_class
node_extension_config -->|"names entry point"| node_entry
node_entry -->|"registers types"| node_registration
node_registration -->|"registers class"| node_example_class
node_registration -->|"uses declarations"| node_registration_api
node_example_class -->|"implements method"| node_example_method
node_example_method -->|"prints type"| node_console

click node_project "https://github.com/iyouthy/plugin-disassemble/tree/main/project"
click node_scene "https://github.com/iyouthy/plugin-disassemble/blob/main/project/example.tscn"
click node_script "https://github.com/iyouthy/plugin-disassemble/blob/main/project/example.gd"
click node_extension_config "https://github.com/iyouthy/plugin-disassemble/blob/main/project/bin/example.gdextension"
click node_entry "https://github.com/iyouthy/plugin-disassemble/blob/main/src/register_types.cpp"
click node_registration "https://github.com/iyouthy/plugin-disassemble/blob/main/src/register_types.cpp"
click node_registration_api "https://github.com/iyouthy/plugin-disassemble/blob/main/src/register_types.h"
click node_example_class "https://github.com/iyouthy/plugin-disassemble/blob/main/src/example_class.h"
click node_example_method "https://github.com/iyouthy/plugin-disassemble/blob/main/src/example_class.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_project,node_scene,node_script,node_user toneBlue
class node_entry,node_registration,node_registration_api,node_example_class,node_example_method toneAmber
class node_extension_config toneMint
class node_console toneIndigo
```

## Components

### Godot sample

- [Sample project](https://github.com/iyouthy/plugin-disassemble/tree/main/project): `project`
- [Example scene](https://github.com/iyouthy/plugin-disassemble/blob/main/project/example.tscn): `project/example.tscn`
- [Example script](https://github.com/iyouthy/plugin-disassemble/blob/main/project/example.gd): `project/example.gd`

### Native extension

- [Library entry](https://github.com/iyouthy/plugin-disassemble/blob/main/src/register_types.cpp): `src/register_types.cpp`
- [Type registration](https://github.com/iyouthy/plugin-disassemble/blob/main/src/register_types.cpp): `src/register_types.cpp`
- [Registration API](https://github.com/iyouthy/plugin-disassemble/blob/main/src/register_types.h): `src/register_types.h`
- [Example class](https://github.com/iyouthy/plugin-disassemble/blob/main/src/example_class.h): `src/example_class.h`
- [Print type](https://github.com/iyouthy/plugin-disassemble/blob/main/src/example_class.cpp): `src/example_class.cpp`

### Extension setup

- [Extension config](https://github.com/iyouthy/plugin-disassemble/blob/main/project/bin/example.gdextension): `project/bin/example.gdextension`

### Other components

- **Godot user**
- **Godot console**

## Connections

- Godot user → Sample project: launches (evidence: `README.md`)
- Sample project → Example scene: launches scene (evidence: `README.md`)
- Sample project → Extension config: loads library (evidence: `README.md`)
- Example scene → Example script: uses script
- Example script → Example class: calls method
- Extension config → Library entry: names entry point (evidence: `README.md`)
- Library entry → Type registration: registers types (evidence: `src/register_types.cpp`)
- Type registration → Example class: registers class (evidence: `src/register_types.cpp`)
- Type registration → Registration API: uses declarations (evidence: `src/register_types.cpp`)
- Example class → Print type: implements method (evidence: `src/example_class.cpp`)
- Print type → Godot console: prints type (evidence: `src/example_class.cpp`)
