# escartem/animestudio architecture

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

- Interactive diagram: https://gitdiagram.com/escartem/animestudio
- Repository: https://github.com/escartem/animestudio

## Overview

Anime Studio is a Unity asset extraction tool with GUI and CLI entry points. The principal workflow selects a game format, loads Unity bundle or directory inputs, parses and browses assets, then previews or exports chosen content. A separate asset-map workflow builds, saves, relocates, and compares maps for large installs. The tree and excerpts support the CLI, game-format selection, asset loading, and animation decompression layers; GUI internals and several documented capabilities are represented only at their enclosing source directories because their implementations were not sampled.

Main entry points: [`AnimeStudio.CLI/Program.cs`](https://github.com/escartem/animestudio/blob/master/AnimeStudio.CLI/Program.cs) (CLI runner), [`AnimeStudio/AssetsManager.cs`](https://github.com/escartem/animestudio/blob/master/AnimeStudio/AssetsManager.cs) (Asset loader), [`AnimeStudio`](https://github.com/escartem/animestudio/tree/master/AnimeStudio) (Browse and filter), [`AnimeStudio.GUI/Program.cs`](https://github.com/escartem/animestudio/blob/master/AnimeStudio.GUI/Program.cs) (GUI app)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_entry["User entry points"]
  node_gui["GUI app<br/>[Program.cs]"]
  node_cli["CLI runner<br/>[Program.cs]"]
end

subgraph group_ingest["Game and ingestion"]
  node_game["Game profiles<br/>[GameManager.cs]"]
  node_loader["Asset loader<br/>[AssetsManager.cs]"]
  node_parsed["Parsed assets<br/>[AssetsManager.cs]"]
end

subgraph group_assets["Asset workflows"]
  node_browse["Browse and filter"]
  node_preview["Asset preview"]
  node_export["Asset export"]
  node_mapbuild["Map building"]
  node_mapfiles["Saved asset maps"]
  node_compare["Map comparison"]
end

subgraph group_runtime["Decode runtime"]
  node_acl["Animation decode<br/>[decompress.h]"]
end

node_user(("User"))
node_inputs["Bundles and files"]
node_animdata["Animation data"]

node_user -->|"opens"| node_gui
node_user -->|"runs"| node_cli
node_cli -->|"selects format"| node_game
node_cli -->|"selects input"| node_inputs
node_gui -->|"loads input"| node_inputs
node_loader -->|"uses format"| node_game
node_loader -->|"reads"| node_inputs
node_loader -->|"parses"| node_parsed
node_cli -->|"loads assets"| node_loader
node_parsed -->|"supplies assets"| node_browse
node_browse -->|"selects for preview"| node_preview
node_browse -->|"selects for export"| node_export
node_cli -->|"requests export"| node_export
node_cli -->|"requests map"| node_mapbuild
node_mapbuild -->|"scans"| node_inputs
node_mapbuild -->|"writes"| node_mapfiles
node_mapfiles -->|"loads maps"| node_compare
node_parsed -->|"animation payload"| node_acl
node_acl -->|"decompresses"| node_animdata

click node_gui "https://github.com/escartem/animestudio/blob/master/AnimeStudio.GUI/Program.cs"
click node_cli "https://github.com/escartem/animestudio/blob/master/AnimeStudio.CLI/Program.cs"
click node_game "https://github.com/escartem/animestudio/blob/master/AnimeStudio/GameManager.cs"
click node_loader "https://github.com/escartem/animestudio/blob/master/AnimeStudio/AssetsManager.cs"
click node_parsed "https://github.com/escartem/animestudio/blob/master/AnimeStudio/AssetsManager.cs"
click node_browse "https://github.com/escartem/animestudio/tree/master/AnimeStudio"
click node_preview "https://github.com/escartem/animestudio/tree/master/AnimeStudio"
click node_export "https://github.com/escartem/animestudio/tree/master/AnimeStudio"
click node_mapbuild "https://github.com/escartem/animestudio/tree/master/AnimeStudio"
click node_mapfiles "https://github.com/escartem/animestudio/tree/master/AnimeStudio"
click node_compare "https://github.com/escartem/animestudio/tree/master/AnimeStudio"
click node_acl "https://github.com/escartem/animestudio/blob/master/AnimeStudio.ACL/AnimeStudio.ACL.SR/acl/decompression/decompress.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_gui,node_cli,node_user toneBlue
class node_game,node_loader,node_parsed toneAmber
class node_browse,node_preview,node_export,node_mapbuild,node_mapfiles,node_compare toneMint
class node_acl toneRose
class node_inputs,node_animdata toneIndigo
```

## Components

### User entry points

- [GUI app](https://github.com/escartem/animestudio/blob/master/AnimeStudio.GUI/Program.cs): `AnimeStudio.GUI/Program.cs`
- [CLI runner](https://github.com/escartem/animestudio/blob/master/AnimeStudio.CLI/Program.cs): `AnimeStudio.CLI/Program.cs`

### Game and ingestion

- [Game profiles](https://github.com/escartem/animestudio/blob/master/AnimeStudio/GameManager.cs): `AnimeStudio/GameManager.cs`
- [Asset loader](https://github.com/escartem/animestudio/blob/master/AnimeStudio/AssetsManager.cs): `AnimeStudio/AssetsManager.cs`
- [Parsed assets](https://github.com/escartem/animestudio/blob/master/AnimeStudio/AssetsManager.cs): `AnimeStudio/AssetsManager.cs`

### Asset workflows

- [Browse and filter](https://github.com/escartem/animestudio/tree/master/AnimeStudio): `AnimeStudio`
- [Asset preview](https://github.com/escartem/animestudio/tree/master/AnimeStudio): `AnimeStudio`
- [Asset export](https://github.com/escartem/animestudio/tree/master/AnimeStudio): `AnimeStudio`
- [Map building](https://github.com/escartem/animestudio/tree/master/AnimeStudio): `AnimeStudio`
- [Saved asset maps](https://github.com/escartem/animestudio/tree/master/AnimeStudio): `AnimeStudio`
- [Map comparison](https://github.com/escartem/animestudio/tree/master/AnimeStudio): `AnimeStudio`

### Decode runtime

- [Animation decode](https://github.com/escartem/animestudio/blob/master/AnimeStudio.ACL/AnimeStudio.ACL.SR/acl/decompression/decompress.h): `AnimeStudio.ACL/AnimeStudio.ACL.SR/acl/decompression/decompress.h`

### Other components

- **User**
- **Bundles and files**
- **Animation data**

## Connections

- User → GUI app: opens
- User → CLI runner: runs
- CLI runner → Game profiles: selects format
- CLI runner → Bundles and files: selects input
- GUI app → Bundles and files: loads input
- Asset loader → Game profiles: uses format
- Asset loader → Bundles and files: reads
- Asset loader → Parsed assets: parses
- CLI runner → Asset loader: loads assets
- Parsed assets → Browse and filter: supplies assets
- Browse and filter → Asset preview: selects for preview
- Browse and filter → Asset export: selects for export
- CLI runner → Asset export: requests export
- CLI runner → Map building: requests map
- Map building → Bundles and files: scans
- Map building → Saved asset maps: writes
- Saved asset maps → Map comparison: loads maps
- Parsed assets → Animation decode: animation payload
- Animation decode → Animation data: decompresses
