How ackermanngue/rusty-ballistics works
Rusty Ballistic is a Bevy-based 2D ballistic and rigid-body sandbox. Users configure and spawn polygonal projectiles, then observe their motion, collisions, and optional interceptor defense in the simulation. The graph follows the app’s explicit system scheduling and the README’s documented collision stages; several internal system implementations were not sampled, so uncertain connections are omitted.
Main entry points: main.rs App setup · defense.rs Defense systems · input.rs Input systems · simulation.rs Simulation systems
Components 28
App and controls
- App setup
src/main.rs - Input systems
src/systems/input.rs - Simulation UI
src/systems/ui.rs - Camera control
src/systems/camera_controller.rs
Projectiles and shapes
- Spawn settings
src/resources/bullet_spawn_settings.rs - Selected shape
src/resources/selected_shape.rs - Shape library
src/resources/shape_library.rs - Shape loader
src/loaders/shape_loader.rs - Bullet factory
src/factories/bullet_factory.rs - Bullet model
src/models/bullet.rs - Polygon geometry
src/geometry/mod.rs
Physics and collision
- Simulation systems
src/systems/simulation.rs - Physics state
src/models/physics.rs - Wind model
src/models/wind.rs - Broad phase
src/collision/broad_phase.rs - Narrow phase
src/collision/narrow_phase.rs - SAT collision
src/collision/separating_axis_theorem.rs - Contact manifolds
src/collision/contact_manifold.rs - Impulse solver
src/collision/solver.rs
Interceptor defense
- Defense systems
src/systems/defense.rs - Defense system
src/defense/defense_system.rs - Threat detection
src/defense/threat_detection.rs - Interceptor
src/defense/interceptor.rs
Rendering and debug
- Bullet renderer
src/rendering/bullet_renderer.rs - Debug renderer
src/rendering/debug_renderer.rs - Defense renderer
src/rendering/defense_renderer.rs - Debug visibility
src/resources/debug_visibility.rs
Other components
- User
Connections 29
- User → Input systems: provides input
- User → Simulation UI: adjusts controls
- App setup → Input systems: schedules
- App setup → Simulation UI: schedules
- App setup → Camera control: schedules
- App setup → Simulation systems: schedules
- App setup → Defense systems: schedules
- App setup → Bullet renderer: schedules
- App setup → Debug renderer: schedules
- App setup → Defense renderer: schedules
- App setup → Shape library: loads
- App setup → Spawn settings: initializes
- App setup → Selected shape: initializes
- App setup → Debug visibility: initializes
- Input systems → Spawn settings: updates
- Input systems → Selected shape: updates
- Shape library → Shape loader: loads shapes
- Bullet factory → Bullet model: creates
- Bullet factory → Polygon geometry: uses shape data
- Simulation systems → Physics state: updates
- Simulation systems → Wind model: uses
- Broad phase → Narrow phase: candidate pairs
- Narrow phase → SAT collision: tests axes
- Narrow phase → Contact manifolds: generates contacts
- Impulse solver → Contact manifolds: solves contacts
- Defense systems → Defense system: updates
- Defense systems → Threat detection: detects threats
- Defense systems → Interceptor: guides interceptors
- Debug renderer → Debug visibility: checks visibility