How notfeylo/propwash works
PROPWASH is a browser-based FPV drone simulator. The principal workflow is: a pilot supplies keyboard, gamepad, or radio controls; the app sends them through a flight controller into the fixed-step flight simulation; the resulting flight drives the drone, camera views, audio, and on-screen displays. Recordings can be replayed deterministically, while blackbox data supports Flight Lab analysis and CSV export or real-log import. The README documents several capabilities whose wiring is not shown in the sampled excerpts, so only documented or source-supported relationships are drawn.
Main entry points: App.ts App Orchestrator · FlightSim.ts Flight Simulator · FlightLabPanel.ts Flight Lab · InputManager.ts Input Manager
Components 21
Pilot Interface
- App Orchestrator
src/app/App.ts - Input Manager
src/input/InputManager.ts - Flight Controls
src/ui/SettingsPanel.ts - Flight UI
src/ui/Hud.ts - Flight Lab
src/ui/FlightLabPanel.ts
Flight Simulation
- Flight Simulator
src/sim/flight/FlightSim.ts - Flight Controller
src/sim/fc/FlightController.ts - Powertrain
src/sim/Powertrain.ts - Airframe Config
src/config/airframes/index.ts - Field And Terrain
src/world/fieldLayout.ts - Rapier Physics
Flight Data
- Blackbox
src/sim/blackbox.ts - Flight Recorder
src/sim/recorder.ts - Log Import Export
src/sim/blackbox.ts
Visual Output
- Drone Model
src/drone/DroneModel.ts - Camera Director
src/cameras/CameraDirector.ts - Render Pipeline
src/render/pipeline.ts - World Rendering
src/render/field.ts
Audio
- Audio Engine
src/audio/AudioEngine.ts - Web Audio
Other components
- Pilot
Connections 28
- Pilot → Input Manager: provides controls
- Input Manager → App Orchestrator: supplies control state
- Pilot → Flight Controls: adjusts settings
- Flight Controls → App Orchestrator: updates settings
- App Orchestrator → Flight Simulator: steps simulation
- App Orchestrator → Flight Controller: applies FC settings
- Flight Simulator → Flight Controller: runs each step
- Flight Simulator → Powertrain: models power
- Flight Simulator → Airframe Config: uses airframe
- Flight Simulator → Field And Terrain: uses field data
- Flight Simulator → Rapier Physics: steps rigid body
- App Orchestrator → Rapier Physics: initializes physics
- App Orchestrator → Blackbox: records flight
- App Orchestrator → Flight Recorder: records flight
- App Orchestrator → Log Import Export: imports real logs
- Flight Lab → App Orchestrator: requests log import
- App Orchestrator → Flight Lab: updates analysis
- Blackbox → Flight Lab: supplies flight data
- Flight Recorder → App Orchestrator: provides replay data
- Flight Simulator → Drone Model: supplies flight state
- App Orchestrator → Camera Director: updates camera view
- Camera Director → Render Pipeline: selects camera look
- App Orchestrator → Render Pipeline: renders frames
- Flight Simulator → World Rendering: supplies field state
- App Orchestrator → World Rendering: renders field
- Flight Simulator → Audio Engine: supplies flight audio state
- Audio Engine → Web Audio: outputs sound
- App Orchestrator → Flight UI: updates displays