# Debug commands of @ferret/physics-rotor, @ferret/flow, @ferret/physics-media

Call with `world.commands.execute(name, args)`; `world.commands.list()` on the running game is the authority. Read from the sources of these packages.

- `edit.physics.rotor.list` — the rotor definitions of the level
- `edit.physics.rotor.remove` — remove a rotor: {name}
- `edit.physics.rotor.set` — add or replace a rotor: {name, node|shaft, axis, radius, elements, ...} (checked against the schema)
- `rotor.command` — the multiplier of the water into the buckets (a sluice): {name, command}
- `rotor.pitch` — set the pitch of a rotor's blades (rad or "5deg"): {name, pitch}
- `rotor.state` — speed, torque, power, thrust, tip-speed ratio, flow at the rotor, bucket fill: {name?}
- `edit.physics.flow.list` — the flow sources
- `edit.physics.flow.remove` — remove a flow source: {name}
- `edit.physics.flow.set` — add or replace a flow source: {name, kind, ...} (checked against the schema)
- `flow.at` — the flow at a point: {position:[x,y,z], medium?:"air"|"water", time?} -> {velocity, updraft?, turbulence?}
- `flow.funnels` — the vortices to draw as funnels: centre, core, height
- `flow.grid` — arrows for the inspector: {centre:[x,y,z], half, step, medium?, time?} -> [{at, velocity, speed, updraft?}] (at most 4096 points)
- `flow.move` — move a source along points: {name, path:[[x,y,z],...], speed}
- `flow.off` — switch a flow source off: {name}
- `flow.on` — switch a flow source on: {name}
- `flow.reach` — where each source is now and how far it reaches: rings for the inspector
- `flow.set` — change a flow source: {name, ...fields}
- `atmosphere.at` — the air at an altitude: {altitude} -> density, pressure, temperature
- `media.add` — add a medium: {name, density, viscosity, flow?, surface?, zone?}
- `media.at` — the medium at a point: {position:[x,y,z]} -> name, density, viscosity, flow
- `media.remove` — remove a medium: {name}
- `wind.set` — set the wind: {vector:[x,y,z], gust?:{amplitude, period, seed?}, scope?: "world"|"level"}
