ffe.ordnance — SLICE: effects and weather.
Shots served: 1, 2, 5, 6, 7, 9, 10, 11, 12, 13, 14, 15, 16.
What is in the air, and what the firing does to the ground and to the
sky-floor. Muzzle flash and the light it throws, two blast rings and the
snow ground-wave, gun smoke, steam off hot tubes, gun-gas, embers, the
crest wind streaming snow off the ridge, soot darkening the snow as
`Film.ruin` climbs, the cloud deck's churn and its pour over the lip, its
TEARING into six holes, the orange welling up through them, the smoke
columns rising through the holes and shearing off downwind, and the raven.
THE CLOCK. Nothing here reads wall time. Every emitter is created with
`autoUpdate = false` and stepped by exactly `dt` out of `tick`, so the film
advances 1/24 s per rendered frame and reads the same on a second take.
THE PARTS
ffe.ordnance.ordFx emitters, lights, decals, deterministic maths
ffe.ordnance.ordSched when each round is fired and each hole tears open
ffe.ordnance.ordGuns muzzle flash, rings, ground-wave, smoke, steam
ffe.ordnance.ordDeck the deck's churn, its six holes, the columns
ffe.ordnance.ordSnow crest snow, soot on the ground, blown-flat snow
ffe.ordnance.ordBird the raven, crossing in shot 1 and back in shot 16
build(root: any) → void
| arg | type | description |
|---|
| root | any | |
tick(t: number, dt: number) → void
| arg | type | description |
|---|
| t | number | |
| dt | number | |
holes( ) → void
What this slice publishes to the other three
The six holes in the deck: where each one is, when it tears open and how
wide it ends up. `ridge` may cut real geometry to these; `cinema` may hang
the LUT's turn on `holesOpen`.
holesOpen(t: number) → number
| arg | type | description |
|---|
| t | number | |
rounds( ) → void
Every round the film fires, in order: { t, gun }. `battery` cycles a
breech against the same list rather than agreeing with it by hand.
report( ) → void
What every emitter this slice owns is producing right now. The read that
separates "the call returned" from "it is on screen".
invalidate( ) → void
Force a rebuild on the next build() — for authoring, after an edit.