# Debug commands of @ferret/flow, @ferret/flow-solver, @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.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}
- `edit.physics.flowBoxes.remove` — remove a flow box: {name}
- `edit.physics.flowBoxes.set` — add or replace a flow box (checked against the schema): {name, origin, size, cell, ...}
- `flowbox.at` — velocity, pressure and dynamic pressure at a point: {name, position:[x,y,z]}
- `flowbox.sleep` — put a box to sleep (the analytic field stays): {name}
- `flowbox.slice` — the field on the slice for the inspector: {name, every?} -> [{at, velocity, speed, pressure, solid}] (at most 4096)
- `flowbox.state` — a flow box (or all): size, cells, degraded, sleeping, divergence, body forces: {name?}
- `flowbox.wake` — wake a sleeping box: {name}
- `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"}
