How sheepylord/gmod-model-hotloader-with-vulkan works
GSCMI-SS is a Garry’s Mod native addon for hotloading static and character models, rendering them in-game, and simulating secondary physics. The main flow starts in Garry’s Mod’s Lua-facing native module, which exposes import and model operations; imported assets are prepared as props or characters, then rendered and simulated. The README also documents model sharing/export and renderer/installation choices. Several implementation files are indexed but unsampled, so edges between those subsystems are included only where the index or README supports them.
Main entry points: module.cpp Native Lua API · worker.cpp Import worker · secondary.cpp Secondary physics · model.cpp Model deformation
Components 22
Addon interface
- Native Lua API
native/module.cpp - Import worker
native/worker.cpp
Asset preparation
- Asset bundles
native/props/core.cpp - Format import
native/props/import.cpp - Blender reader
native/props/blend.cpp - Texture resolver
native/props/texture_resolver.cpp - Material processing
native/props/material_processing.cpp
Character runtime
- Rig fitting
native/rig.cpp - VRM support
native/vrm.cpp - Model deformation
native/model.cpp - Rig animation
native/rig_animation.cpp
Rendering and physics
- Native renderer
native/renderer.cpp - Physics integration
native/physics.cpp - Secondary physics
native/secondary.cpp - Compute solver
native/compute_solver.cpp - Vulkan solver
native/vulkan_solver.cpp - Job system
native/jobs.hpp
Sharing and setup
- Workshop packages
native/packages.cpp - Model sharing
native/sharing.cpp - Installation status
native/installation.cpp - Compatibility profiles
native/compatibility.cpp
Other components
- Garry’s Mod
Connections 33
- Garry’s Mod → Native Lua API: calls native API
README.md - Native Lua API → Import worker: dispatches imports
native/module.cpp - Import worker → Asset bundles: uses bundle API
native/worker.cpp - Import worker → Rig fitting: uses rig API
native/worker.cpp - Import worker → VRM support: uses VRM API
native/worker.cpp - Import worker → Compute solver: uses solver API
native/worker.cpp - Import worker → Vulkan solver: uses solver API
native/worker.cpp - Import worker → Installation status: uses status API
native/worker.cpp - Format import → Asset bundles: builds assets
native/props/import.cpp - Blender reader → Texture resolver: resolves images
native/props/blend.cpp - Format import → Texture resolver: uses resolver
native/props/import.cpp - Format import → Material processing: uses processing
native/props/import.cpp - Rig fitting → Model deformation: fits model
native/rig.cpp - VRM support → Model deformation: supports model
native/vrm.cpp - Model deformation → Secondary physics: uses physics
native/model.cpp - Model deformation → Job system: parallel work
native/model.cpp - Native renderer → Model deformation: renders deformation
- Native renderer → Job system: uses worker pool
native/renderer.cpp - Physics integration → Secondary physics: steps worlds
native/physics.cpp - Physics integration → Compute solver: uses solver
native/physics.cpp - Secondary physics → Compute solver: uses solver
native/secondary.cpp - Secondary physics → Vulkan solver: uses solver
native/secondary.cpp - Secondary physics → Job system: queues background work
native/secondary.cpp - Native Lua API → Native renderer: registers renderer
native/module.cpp - Native Lua API → Rig animation: registers animation
native/module.cpp - Native Lua API → Model sharing: registers sharing
native/module.cpp - Native Lua API → Workshop packages: registers packages
native/module.cpp - Native Lua API → Compatibility profiles: registers compatibility
native/module.cpp - Native Lua API → Installation status: registers status
native/module.cpp - Workshop packages → Garry’s Mod: installs Workshop models
README.md - Model sharing → Garry’s Mod: exports shared models
README.md - Garry’s Mod → Installation status: displays renderer status
README.md - Garry’s Mod → Vulkan solver: may select GPU physics
README.md