fl_feather_burst
What is left of a crowned pigeon the instant something takes her off the floor. Authored for *First Light: Goura*; played by `game.staging.moments` on `FL.EVENTS.caught`.
fl_feather_burst
What is left of a crowned pigeon the instant something takes her off the floor.
Authored for First Light: Goura; played by game.staging.moments on
FL.EVENTS.caught.
effects.play("fl_feather_burst", { position = { 0, 0.35, -40 } })
Two emitters, thrown from one point:
- Body feathers leave fast in a 74° cone, spinning hard, and lose almost all of that speed inside half a second — a feather has no mass and a great deal of drag, which is the whole reason it reads as a feather rather than as debris. They run from the slate of a Victoria crowned pigeon's back into the maroon of her breast, so the burst carries the bird's own two colours.
- Down is barely thrown at all, falls at a quarter of the weight, and is still hanging in the air when the rest has landed. That is the part that says a bird was here a second ago.
Parameters
| Name | Default | What it changes |
|---|---|---|
count | 30 | Body feathers thrown. The down is 55% of this, so one number sets the weight of the whole burst. |
scale | 1.0 | Feather size, as a multiple of a crowned pigeon's own. |
speed | 4.6 | Metres per second the fastest body feathers leave at. |
plumeColor | slate | The back and the wing coverts. |
breastColor | maroon | The colour the feathers end on. |
downColor | bone | The crest lace and the down. |
lifetime | 1.0 | Stretches both falls together; the down always outlasts the plumes. |
Why it is at the root of /source
Everything else this slice owns lives under /source/game/staging/. This does
not, and cannot: an effect authored in a subfolder lists in
effects.list(), answers describe() with its full declaration, and then
refuses to play — could not load its definition from '@local.<identity>': module not found. The same three files at the source root load and play.
Filed as OrigoZero/zero#11944. The fl_ prefix keeps it from colliding with
anything else that ends up at the root.
What it costs, and what it currently draws
0.01 ms GPU and no bytes of its own at the declared defaults — the figures in
effect.yaml's cost block. It leases two pooled emitters and no geometry,
material or decal, so what it holds is the pool's and firing it again re-seats
the same slots. The span sits below the resolution of profiler.gpuFrame() on
the machine it was measured on, so 0.01 is the bound that instrument supports
rather than a resolved figure.
It is currently drawn by nothing. Played, the handle reports
state = "playing", leases its two emitters, reports 30 plumes and 17 down
emitted, and answers whySilent() with backendSilent / simulationNeverStepped for the whole of its life — while a builtin emitter
effect played in the same frame of the same engine simulates normally, and a
minimal authored effect leasing one emitter behaves the way this one does.
Evidence is on OrigoZero/zero#10047. game.staging.moments therefore throws a
pair of builtin bursts to carry the moment and plays this one beside them, so
the authored burst appears of its own accord the day the runtime steps it.
Scoped to this part · feeds back into the world's score.