Project Architecture - Yhzan95/GettingUpModdingTool GitHub Wiki
Project Architecture
The main application project is located under:
src/GettingUpModTool/
Core
Core/Formats
Contains readers and parsers for supported game formats, including:
- MSH
- ST
- BNM
- MTM
- GAT
- BAN
Core/Animation
Handles skeleton binding and BNM animation playback.
This includes functionality related to animation compatibility and skeletal animation preview.
Core/Game
Handles game-related functionality such as:
- Game installation detection
- Asset indexing
- Resource compatibility data
Core/IO
Contains exporters and other technical I/O functionality, including:
- OBJ
- glTF
- GLB
- PNG
- Hex dump
Core/Models
Contains internal data models used by the application, including:
- Mesh data
- Skeleton data
- Material data
UI
Themes
Contains UI resources for the application theme, including:
- Colors
- Controls
- Scrollbars
- Tooltips
MainWindow.*.cs
Main-window logic is split by feature to keep individual components manageable.
Examples include:
- Library
- Viewer
- Export
Browser windows
Dedicated windows are used for browsing specific types of game resources.
Examples include:
- Character Browser
- Object Browser
- Texture Browser
Localization
The user interface currently supports:
- English
- French
- Russian
- Spanish
Translation entries and templates are maintained in the localization source files.
Development guidelines
When adding new functionality:
- Keep game-format parsing inside
Core/Formats. - Keep shared data structures inside
Core/Models. - Keep file and export operations inside
Core/IO. - Keep animation-specific functionality inside
Core/Animation. - Keep UI-specific functionality inside the UI layer.
This separation helps keep format parsing, application logic and the user interface independent.