# loomirr/batcomputer architecture

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

- Interactive diagram: https://gitdiagram.com/loomirr/batcomputer
- Repository: https://github.com/loomirr/batcomputer

## Overview

Batcomputer is a Windows modding workbench for LEGO Batman: Legacy of the Dark Knight. A user configures local game assets, creates or opens a project, chooses a visual base and gameplay donor, edits and previews content, then checks, builds, and installs or exports a mod. The graph also preserves documented animation, abilities, equipment, character, vehicle, and experimental skinned-mesh workflows. Source excerpts establish preview and persistence details; several broader capability links come from the README, so unsampled implementation relationships are not expanded.

Main entry points: [`src/Batcomputer/Forms/MainForm.cs`](https://github.com/loomirr/batcomputer/blob/main/src/Batcomputer/Forms/MainForm.cs) (Main workspace), [`src/Batcomputer/Controls/ModelPreviewControl.cs`](https://github.com/loomirr/batcomputer/blob/main/src/Batcomputer/Controls/ModelPreviewControl.cs) (Preview interactions), [`src/Batcomputer/Services/ModelPreviewService.cs`](https://github.com/loomirr/batcomputer/blob/main/src/Batcomputer/Services/ModelPreviewService.cs) (3D model preview), [`src/Batcomputer/Program.cs`](https://github.com/loomirr/batcomputer/blob/main/src/Batcomputer/Program.cs) (Application entry)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_app["Desktop application"]
  node_program["Application entry<br/>[Program.cs]"]
  node_setup["First-run setup<br/>[FirstRunWizard.cs]"]
  node_main["Main workspace<br/>[MainForm.cs]"]
  node_settings["Tool settings<br/>[AppSettings.cs]"]
end

subgraph group_project["Projects and assets"]
  node_gameassets[("Game asset catalogs<br/>[GameDataService.cs]")]
  node_suitproject["Suit project state"]
end

subgraph group_workshops["Creation workshops"]
  node_character["Character creation"]
  node_parts["Parts and materials"]
  node_equipment["Equipment workshop"]
  node_abilities["Abilities and styles"]
  node_animations["Animation editing"]
  node_vehicles["Vehicle workshop"]
  node_skinned["Skinned mesh import"]
end

subgraph group_preview["Preview and export"]
  node_viewer["3D model preview"]
  node_previewui["Embedded preview window"]
  node_previewcontrol["Preview interactions"]
  node_animpreview["Animation preview"]
  node_gltf["Skinned GLB export"]
end

subgraph group_delivery["Mod delivery"]
  node_package["Mod packaging"]
  node_install["Mod installation"]
  node_updates["App updates"]
end

node_user(("Mod author"))

node_user -->|"launches"| node_program
node_program -->|"opens when needed"| node_setup
node_user -->|"edits projects"| node_main
node_setup -.->|"configures paths"| node_settings
node_main -.->|"uses configured paths"| node_settings
node_main -.->|"browses game data"| node_gameassets
node_main -.->|"creates and saves"| node_suitproject
node_main -->|"creates characters"| node_character
node_main -->|"edits suit parts"| node_parts
node_main -->|"customizes equipment"| node_equipment
node_main -->|"changes abilities"| node_abilities
node_main -->|"imports and replaces"| node_animations
node_main -.->|"customizes vehicles"| node_vehicles
node_main -->|"imports experimental meshes"| node_skinned
node_main -->|"requests preview"| node_viewer
node_viewer -->|"serves preview"| node_previewui
node_previewui -->|"hosts interactions"| node_previewcontrol
node_previewcontrol -->|"loads animation bundle"| node_animpreview
node_previewcontrol -.->|"requests model preview"| node_viewer
node_skinned -.->|"exports GLB"| node_gltf
node_main -->|"builds mod"| node_package
node_package -->|"installs release"| node_install
node_user -->|"checks for updates"| node_updates

click node_program "https://github.com/loomirr/batcomputer/blob/main/src/Batcomputer/Program.cs"
click node_setup "https://github.com/loomirr/batcomputer/blob/main/src/Batcomputer/Forms/FirstRunWizard.cs"
click node_main "https://github.com/loomirr/batcomputer/blob/main/src/Batcomputer/Forms/MainForm.cs"
click node_settings "https://github.com/loomirr/batcomputer/blob/main/src/Batcomputer/Util/AppSettings.cs"
click node_gameassets "https://github.com/loomirr/batcomputer/blob/main/src/Batcomputer/Catalog/GameDataService.cs"
click node_suitproject "https://github.com/loomirr/batcomputer/blob/main/src/Batcomputer/Services/SuitProjectService.cs"
click node_character "https://github.com/loomirr/batcomputer/blob/main/src/Batcomputer/Services/CustomCharacterProjectService.cs"
click node_parts "https://github.com/loomirr/batcomputer/blob/main/src/Batcomputer/Services/PartIndexService.cs"
click node_equipment "https://github.com/loomirr/batcomputer/blob/main/src/Batcomputer/Services/EquipmentAssetService.cs"
click node_abilities "https://github.com/loomirr/batcomputer/blob/main/src/Batcomputer/Services/AbilityCatalogService.cs"
click node_animations "https://github.com/loomirr/batcomputer/blob/main/src/Batcomputer/Services/AnimationDraftLibraryService.cs"
click node_vehicles "https://github.com/loomirr/batcomputer/blob/main/src/Batcomputer/Services/VehicleWorkshopService.cs"
click node_skinned "https://github.com/loomirr/batcomputer/blob/main/src/Batcomputer/Services/SkinnedMeshStageService.cs"
click node_viewer "https://github.com/loomirr/batcomputer/blob/main/src/Batcomputer/Services/ModelPreviewService.cs"
click node_previewui "https://github.com/loomirr/batcomputer/blob/main/src/Batcomputer/Forms/ModelPreviewForm.cs"
click node_previewcontrol "https://github.com/loomirr/batcomputer/blob/main/src/Batcomputer/Controls/ModelPreviewControl.cs"
click node_animpreview "https://github.com/loomirr/batcomputer/blob/main/src/Batcomputer/Services/CharacterAnimationPreviewService.cs"
click node_gltf "https://github.com/loomirr/batcomputer/blob/main/src/Batcomputer/Services/SkinnedGlbExportService.cs"
click node_package "https://github.com/loomirr/batcomputer/blob/main/src/Batcomputer/Services/ModProjectService.cs"
click node_install "https://github.com/loomirr/batcomputer/blob/main/src/Batcomputer/Services/ModInstallTransactionService.cs"
click node_updates "https://github.com/loomirr/batcomputer/blob/main/src/Batcomputer/Services/AppUpdateService.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_program,node_setup,node_main,node_settings toneBlue
class node_gameassets,node_suitproject toneAmber
class node_character,node_parts,node_equipment,node_abilities,node_animations,node_vehicles,node_skinned toneMint
class node_viewer,node_previewui,node_previewcontrol,node_animpreview,node_gltf toneRose
class node_package,node_install,node_updates,node_user toneIndigo
```

## Components

### Desktop application

- [Application entry](https://github.com/loomirr/batcomputer/blob/main/src/Batcomputer/Program.cs): `src/Batcomputer/Program.cs`
- [First-run setup](https://github.com/loomirr/batcomputer/blob/main/src/Batcomputer/Forms/FirstRunWizard.cs): `src/Batcomputer/Forms/FirstRunWizard.cs`
- [Main workspace](https://github.com/loomirr/batcomputer/blob/main/src/Batcomputer/Forms/MainForm.cs): `src/Batcomputer/Forms/MainForm.cs`
- [Tool settings](https://github.com/loomirr/batcomputer/blob/main/src/Batcomputer/Util/AppSettings.cs): `src/Batcomputer/Util/AppSettings.cs`

### Projects and assets

- [Game asset catalogs](https://github.com/loomirr/batcomputer/blob/main/src/Batcomputer/Catalog/GameDataService.cs): `src/Batcomputer/Catalog/GameDataService.cs`
- [Suit project state](https://github.com/loomirr/batcomputer/blob/main/src/Batcomputer/Services/SuitProjectService.cs): `src/Batcomputer/Services/SuitProjectService.cs`

### Creation workshops

- [Character creation](https://github.com/loomirr/batcomputer/blob/main/src/Batcomputer/Services/CustomCharacterProjectService.cs): `src/Batcomputer/Services/CustomCharacterProjectService.cs`
- [Parts and materials](https://github.com/loomirr/batcomputer/blob/main/src/Batcomputer/Services/PartIndexService.cs): `src/Batcomputer/Services/PartIndexService.cs`
- [Equipment workshop](https://github.com/loomirr/batcomputer/blob/main/src/Batcomputer/Services/EquipmentAssetService.cs): `src/Batcomputer/Services/EquipmentAssetService.cs`
- [Abilities and styles](https://github.com/loomirr/batcomputer/blob/main/src/Batcomputer/Services/AbilityCatalogService.cs): `src/Batcomputer/Services/AbilityCatalogService.cs`
- [Animation editing](https://github.com/loomirr/batcomputer/blob/main/src/Batcomputer/Services/AnimationDraftLibraryService.cs): `src/Batcomputer/Services/AnimationDraftLibraryService.cs`
- [Vehicle workshop](https://github.com/loomirr/batcomputer/blob/main/src/Batcomputer/Services/VehicleWorkshopService.cs): `src/Batcomputer/Services/VehicleWorkshopService.cs`
- [Skinned mesh import](https://github.com/loomirr/batcomputer/blob/main/src/Batcomputer/Services/SkinnedMeshStageService.cs): `src/Batcomputer/Services/SkinnedMeshStageService.cs`

### Preview and export

- [3D model preview](https://github.com/loomirr/batcomputer/blob/main/src/Batcomputer/Services/ModelPreviewService.cs): `src/Batcomputer/Services/ModelPreviewService.cs`
- [Embedded preview window](https://github.com/loomirr/batcomputer/blob/main/src/Batcomputer/Forms/ModelPreviewForm.cs): `src/Batcomputer/Forms/ModelPreviewForm.cs`
- [Preview interactions](https://github.com/loomirr/batcomputer/blob/main/src/Batcomputer/Controls/ModelPreviewControl.cs): `src/Batcomputer/Controls/ModelPreviewControl.cs`
- [Animation preview](https://github.com/loomirr/batcomputer/blob/main/src/Batcomputer/Services/CharacterAnimationPreviewService.cs): `src/Batcomputer/Services/CharacterAnimationPreviewService.cs`
- [Skinned GLB export](https://github.com/loomirr/batcomputer/blob/main/src/Batcomputer/Services/SkinnedGlbExportService.cs): `src/Batcomputer/Services/SkinnedGlbExportService.cs`

### Mod delivery

- [Mod packaging](https://github.com/loomirr/batcomputer/blob/main/src/Batcomputer/Services/ModProjectService.cs): `src/Batcomputer/Services/ModProjectService.cs`
- [Mod installation](https://github.com/loomirr/batcomputer/blob/main/src/Batcomputer/Services/ModInstallTransactionService.cs): `src/Batcomputer/Services/ModInstallTransactionService.cs`
- [App updates](https://github.com/loomirr/batcomputer/blob/main/src/Batcomputer/Services/AppUpdateService.cs): `src/Batcomputer/Services/AppUpdateService.cs`

### Other components

- **Mod author**

## Connections

- Mod author → Application entry: launches (evidence: `src/Batcomputer/Program.cs`)
- Application entry → First-run setup: opens when needed (evidence: `src/Batcomputer/Program.cs`)
- Mod author → Main workspace: edits projects (evidence: `README.md`)
- First-run setup → Tool settings: configures paths
- Main workspace → Tool settings: uses configured paths
- Main workspace → Game asset catalogs: browses game data
- Main workspace → Suit project state: creates and saves
- Main workspace → Character creation: creates characters (evidence: `README.md`)
- Main workspace → Parts and materials: edits suit parts (evidence: `README.md`)
- Main workspace → Equipment workshop: customizes equipment (evidence: `README.md`)
- Main workspace → Abilities and styles: changes abilities (evidence: `README.md`)
- Main workspace → Animation editing: imports and replaces (evidence: `README.md`)
- Main workspace → Vehicle workshop: customizes vehicles
- Main workspace → Skinned mesh import: imports experimental meshes (evidence: `README.md`)
- Main workspace → 3D model preview: requests preview (evidence: `README.md`)
- 3D model preview → Embedded preview window: serves preview (evidence: `src/Batcomputer/Program.cs`)
- Embedded preview window → Preview interactions: hosts interactions (evidence: `src/Batcomputer/Forms/ModelPreviewForm.cs`)
- Preview interactions → Animation preview: loads animation bundle (evidence: `src/Batcomputer/Controls/ModelPreviewControl.cs`)
- Preview interactions → 3D model preview: requests model preview
- Skinned mesh import → Skinned GLB export: exports GLB
- Main workspace → Mod packaging: builds mod (evidence: `README.md`)
- Mod packaging → Mod installation: installs release (evidence: `README.md`)
- Mod author → App updates: checks for updates (evidence: `README.md`)
