# muludag718/mu.gametools architecture

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

- Interactive diagram: https://gitdiagram.com/muludag718/mu.gametools
- Repository: https://github.com/muludag718/mu.gametools

## Overview

MU.GameTools is a collection of game-asset and data-format tools, including a 3D editor/viewer, Prototype 1/2 Pure3D import/export, fight-data models, and supporting binary-format utilities. The main user workflow is opening or exporting game assets through the editor or format tools; internal format readers and writers handle the structured data. The README is empty, so capability coverage comes from the tree and source index. Edges are limited to relationships visible in indexed references or excerpts; unsampled subsystem wiring is not inferred.

Main entry points: [`MU.GameTools.IO/Endian.cs`](https://github.com/muludag718/mu.gametools/blob/master/MU.GameTools.IO/Endian.cs) (Endian Support), [`MU.GameTools.Common/Vector3.cs`](https://github.com/muludag718/mu.gametools/blob/master/MU.GameTools.Common/Vector3.cs) (Common Vector3), [`MU.GameTools.Prototype1/ImportP3D.cs`](https://github.com/muludag718/mu.gametools/blob/master/MU.GameTools.Prototype1/ImportP3D.cs) (P1 Import), [`MU.GameTools.Prototype2/ImportP3D.cs`](https://github.com/muludag718/mu.gametools/blob/master/MU.GameTools.Prototype2/ImportP3D.cs) (P2 Import)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_editor["3D Editor"]
  node_editor_app["Editor UI<br/>[Editor.cs]"]
  node_viewer["3D Viewer<br/>[ViewerTool.cs]"]
  node_rz_tool["RZ Tool<br/>[RZTool.cs]"]
end

subgraph group_assets["Asset Conversion"]
  node_p1_import["P1 Import<br/>[ImportP3D.cs]"]
  node_p1_mesh_export["P1 Mesh Export<br/>[Mesh.cs]"]
  node_p2_import["P2 Import<br/>[ImportP3D.cs]"]
  node_p2_mesh_import["P2 Mesh Import<br/>[Mesh.cs]"]
  node_p2_mesh_export["P2 Mesh Export<br/>[Mesh.cs]"]
end

subgraph group_formats["Format Models"]
  node_p3d_file["Pure3D Files<br/>[Pure3DFile.cs]"]
  node_format_models["Asset Primitives"]
  node_vector_converter["Vector Converter"]
  node_tod_metadata["TOD Metadata"]
  node_dds["DDS Codec<br/>[DDSFile.cs]"]
end

subgraph group_fight["Fight Data"]
  node_fight_models["Fight Model<br/>[BaseProperty.cs]"]
  node_fight_conditions["P1 Conditions<br/>[Condition]"]
  node_fight_tracks["P1 Tracks<br/>[Track]"]
end

subgraph group_shared["Shared Utilities"]
  node_endian["Endian Support<br/>[Endian.cs]"]
  node_vector3["Common Vector3<br/>[Vector3.cs]"]
  node_game_kind["Game Variant<br/>[PrototypeGame.cs]"]
end

node_artist(("Asset User"))

node_artist -->|"uses"| node_editor_app
node_editor_app -.->|"opens"| node_viewer
node_editor_app -->|"hosts"| node_rz_tool
node_rz_tool -->|"selects variant"| node_game_kind
node_p1_import -->|"reads"| node_p3d_file
node_p1_import -->|"uses"| node_endian
node_p1_import -->|"uses"| node_vector3
node_p1_mesh_export -->|"writes with"| node_endian
node_p1_mesh_export -->|"uses"| node_vector3
node_p2_import -->|"reads"| node_p3d_file
node_p2_import -->|"uses"| node_endian
node_p2_import -->|"uses"| node_vector3
node_p2_mesh_import -->|"reads"| node_p3d_file
node_p2_mesh_export -->|"writes with"| node_endian
node_p2_mesh_export -->|"uses"| node_vector3
node_vector_converter -->|"formats"| node_vector3
node_vector_converter -->|"formats"| node_format_models
node_fight_conditions -->|"uses properties"| node_fight_models
node_fight_conditions -->|"reads with"| node_endian
node_fight_tracks -->|"reads with"| node_endian
node_tod_metadata -->|"uses variant"| node_game_kind
node_dds -->|"reads with"| node_endian
node_dds -->|"uses color"| node_format_models

click node_editor_app "https://github.com/muludag718/mu.gametools/blob/master/MU.GameTools.Edit3D/Editor.cs"
click node_viewer "https://github.com/muludag718/mu.gametools/blob/master/MU.GameTools.Edit3D/Tools/Viewer/ViewerTool.cs"
click node_rz_tool "https://github.com/muludag718/mu.gametools/blob/master/MU.GameTools.Edit3D/Tools/RZTool.cs"
click node_p1_import "https://github.com/muludag718/mu.gametools/blob/master/MU.GameTools.Prototype1/ImportP3D.cs"
click node_p1_mesh_export "https://github.com/muludag718/mu.gametools/blob/master/MU.GameTools.Prototype1/Exporting/Mesh.cs"
click node_p2_import "https://github.com/muludag718/mu.gametools/blob/master/MU.GameTools.Prototype2/ImportP3D.cs"
click node_p2_mesh_import "https://github.com/muludag718/mu.gametools/blob/master/MU.GameTools.Prototype2/Importing/Mesh.cs"
click node_p2_mesh_export "https://github.com/muludag718/mu.gametools/blob/master/MU.GameTools.Prototype2/Exporting/Mesh.cs"
click node_p3d_file "https://github.com/muludag718/mu.gametools/blob/master/MU.GameTools.Prototype.FileFormats/Pure3DFile.cs"
click node_format_models "https://github.com/muludag718/mu.gametools/tree/master/MU.GameTools.Prototype.FileFormats"
click node_vector_converter "https://github.com/muludag718/mu.gametools/blob/master/MU.GameTools.Prototype.FileFormats/VectorTypeConverter.cs"
click node_fight_models "https://github.com/muludag718/mu.gametools/blob/master/MU.GameTools.Prototype.Fight/BaseProperty.cs"
click node_fight_conditions "https://github.com/muludag718/mu.gametools/tree/master/MU.GameTools.Prototype.Fight/Prototype1/Condition"
click node_fight_tracks "https://github.com/muludag718/mu.gametools/tree/master/MU.GameTools.Prototype.Fight/Prototype1/Track"
click node_tod_metadata "https://github.com/muludag718/mu.gametools/blob/master/MU.GameTools.Prototype.Tod/MetaObjectFactory.cs"
click node_dds "https://github.com/muludag718/mu.gametools/blob/master/MU.GameTools.Squish/DDSFile.cs"
click node_endian "https://github.com/muludag718/mu.gametools/blob/master/MU.GameTools.IO/Endian.cs"
click node_vector3 "https://github.com/muludag718/mu.gametools/blob/master/MU.GameTools.Common/Vector3.cs"
click node_game_kind "https://github.com/muludag718/mu.gametools/blob/master/MU.GameTools.Common/PrototypeGame.cs"

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_editor_app,node_viewer,node_rz_tool,node_artist toneBlue
class node_p1_import,node_p1_mesh_export,node_p2_import,node_p2_mesh_import,node_p2_mesh_export toneAmber
class node_p3d_file,node_format_models,node_vector_converter,node_tod_metadata,node_dds toneMint
class node_fight_models,node_fight_conditions,node_fight_tracks toneRose
class node_endian,node_vector3,node_game_kind toneIndigo
```

## Components

### 3D Editor

- [Editor UI](https://github.com/muludag718/mu.gametools/blob/master/MU.GameTools.Edit3D/Editor.cs): `MU.GameTools.Edit3D/Editor.cs`
- [3D Viewer](https://github.com/muludag718/mu.gametools/blob/master/MU.GameTools.Edit3D/Tools/Viewer/ViewerTool.cs): `MU.GameTools.Edit3D/Tools/Viewer/ViewerTool.cs`
- [RZ Tool](https://github.com/muludag718/mu.gametools/blob/master/MU.GameTools.Edit3D/Tools/RZTool.cs): `MU.GameTools.Edit3D/Tools/RZTool.cs`

### Asset Conversion

- [P1 Import](https://github.com/muludag718/mu.gametools/blob/master/MU.GameTools.Prototype1/ImportP3D.cs): `MU.GameTools.Prototype1/ImportP3D.cs`
- [P1 Mesh Export](https://github.com/muludag718/mu.gametools/blob/master/MU.GameTools.Prototype1/Exporting/Mesh.cs): `MU.GameTools.Prototype1/Exporting/Mesh.cs`
- [P2 Import](https://github.com/muludag718/mu.gametools/blob/master/MU.GameTools.Prototype2/ImportP3D.cs): `MU.GameTools.Prototype2/ImportP3D.cs`
- [P2 Mesh Import](https://github.com/muludag718/mu.gametools/blob/master/MU.GameTools.Prototype2/Importing/Mesh.cs): `MU.GameTools.Prototype2/Importing/Mesh.cs`
- [P2 Mesh Export](https://github.com/muludag718/mu.gametools/blob/master/MU.GameTools.Prototype2/Exporting/Mesh.cs): `MU.GameTools.Prototype2/Exporting/Mesh.cs`

### Format Models

- [Pure3D Files](https://github.com/muludag718/mu.gametools/blob/master/MU.GameTools.Prototype.FileFormats/Pure3DFile.cs): `MU.GameTools.Prototype.FileFormats/Pure3DFile.cs`
- [Asset Primitives](https://github.com/muludag718/mu.gametools/tree/master/MU.GameTools.Prototype.FileFormats): `MU.GameTools.Prototype.FileFormats`
- [Vector Converter](https://github.com/muludag718/mu.gametools/blob/master/MU.GameTools.Prototype.FileFormats/VectorTypeConverter.cs): `MU.GameTools.Prototype.FileFormats/VectorTypeConverter.cs`
- [TOD Metadata](https://github.com/muludag718/mu.gametools/blob/master/MU.GameTools.Prototype.Tod/MetaObjectFactory.cs): `MU.GameTools.Prototype.Tod/MetaObjectFactory.cs`
- [DDS Codec](https://github.com/muludag718/mu.gametools/blob/master/MU.GameTools.Squish/DDSFile.cs): `MU.GameTools.Squish/DDSFile.cs`

### Fight Data

- [Fight Model](https://github.com/muludag718/mu.gametools/blob/master/MU.GameTools.Prototype.Fight/BaseProperty.cs): `MU.GameTools.Prototype.Fight/BaseProperty.cs`
- [P1 Conditions](https://github.com/muludag718/mu.gametools/tree/master/MU.GameTools.Prototype.Fight/Prototype1/Condition): `MU.GameTools.Prototype.Fight/Prototype1/Condition`
- [P1 Tracks](https://github.com/muludag718/mu.gametools/tree/master/MU.GameTools.Prototype.Fight/Prototype1/Track): `MU.GameTools.Prototype.Fight/Prototype1/Track`

### Shared Utilities

- [Endian Support](https://github.com/muludag718/mu.gametools/blob/master/MU.GameTools.IO/Endian.cs): `MU.GameTools.IO/Endian.cs`
- [Common Vector3](https://github.com/muludag718/mu.gametools/blob/master/MU.GameTools.Common/Vector3.cs): `MU.GameTools.Common/Vector3.cs`
- [Game Variant](https://github.com/muludag718/mu.gametools/blob/master/MU.GameTools.Common/PrototypeGame.cs): `MU.GameTools.Common/PrototypeGame.cs`

### Other components

- **Asset User**

## Connections

- Asset User → Editor UI: uses
- Editor UI → 3D Viewer: opens
- Editor UI → RZ Tool: hosts (evidence: `MU.GameTools.Edit3D/Tools/RZTool.cs`)
- RZ Tool → Game Variant: selects variant (evidence: `MU.GameTools.Edit3D/Tools/RZTool.cs`)
- P1 Import → Pure3D Files: reads (evidence: `MU.GameTools.Prototype1/ImportP3D.cs`)
- P1 Import → Endian Support: uses (evidence: `MU.GameTools.Prototype1/ImportP3D.cs`)
- P1 Import → Common Vector3: uses (evidence: `MU.GameTools.Prototype1/ImportP3D.cs`)
- P1 Mesh Export → Endian Support: writes with (evidence: `MU.GameTools.Prototype1/Exporting/Mesh.cs`)
- P1 Mesh Export → Common Vector3: uses (evidence: `MU.GameTools.Prototype1/Exporting/Mesh.cs`)
- P2 Import → Pure3D Files: reads (evidence: `MU.GameTools.Prototype2/ImportP3D.cs`)
- P2 Import → Endian Support: uses (evidence: `MU.GameTools.Prototype2/ImportP3D.cs`)
- P2 Import → Common Vector3: uses (evidence: `MU.GameTools.Prototype2/ImportP3D.cs`)
- P2 Mesh Import → Pure3D Files: reads (evidence: `MU.GameTools.Prototype2/Importing/Mesh.cs`)
- P2 Mesh Export → Endian Support: writes with (evidence: `MU.GameTools.Prototype2/Exporting/Mesh.cs`)
- P2 Mesh Export → Common Vector3: uses (evidence: `MU.GameTools.Prototype2/Exporting/Mesh.cs`)
- Vector Converter → Common Vector3: formats (evidence: `MU.GameTools.Prototype.FileFormats/VectorTypeConverter.cs`)
- Vector Converter → Asset Primitives: formats (evidence: `MU.GameTools.Prototype.FileFormats/VectorTypeConverter.cs`)
- P1 Conditions → Fight Model: uses properties (evidence: `MU.GameTools.Prototype.Fight/Prototype1/Condition/SpatialQueryCondition.cs`)
- P1 Conditions → Endian Support: reads with (evidence: `MU.GameTools.Prototype.Fight/Prototype1/Condition/SpatialQueryCondition.cs`)
- P1 Tracks → Endian Support: reads with (evidence: `MU.GameTools.Prototype.Fight/Prototype1/Track/EnableRagdollTrack.cs`)
- TOD Metadata → Game Variant: uses variant (evidence: `MU.GameTools.Prototype.Tod/MetaObjectFactory.cs`)
- DDS Codec → Endian Support: reads with (evidence: `MU.GameTools.Squish/DDSFile.cs`)
- DDS Codec → Asset Primitives: uses color (evidence: `MU.GameTools.Squish/DDSFile.cs`)
