rs_airship
The `airship` slice: the handle the rest of *Red String Over the Atlantic* holds the *Weltmeer* by.
rs_airship
The airship slice: the handle the rest of Red String Over the Atlantic holds
the Weltmeer by.
Her geometry is /source/world/Airship.sceneModule, which the scene places at
Core.EXTERIOR_ORIGIN. This module adds the two things code wants from her —
somewhere to put the camera, and airscrews that turn.
local air = Core.need("airship") -- nil until the slice has installed
if air then
air.toShot("establish") -- cut to the opening framing
air.toShot("beam", 4.5) -- or glide there; returns the handle
air.moveBetween("distant", "beam", 8.0)
end
The framings
Each is a composed shot on her, returned in world coordinates as
{ eye, look, fov, blurb }.
| Name | What it sees |
|---|---|
establish | High three-quarter off the starboard bow — the trailer's first frame. |
beam | Full broadside: her name, the lit window band, the engine cars. |
windows | Close on the promenade glass. |
gondola | Under the bow, looking up at the control car. |
engines | Alongside the after cars, the hull running away behind. |
stern | Astern and above, on the cruciform tail. |
bow | Head on, off the stem. |
distant | A long way off, small in a lot of weather. |
Airship.SHOT_NAMES is the list in that order; Airship.shots() returns them
all at once.
The airscrews
Airship.spin(true, rpm) drives all five through one Core.tick. It is
idempotent — a second call replaces the driver rather than adding another — and
Airship.spin(false) stops it. install starts it once she is in the scene.
The rest
Airship.entity()— her root entity, or nil while the placement has not run.Airship.present()— whether the geometry is actually there.Airship.NAME/LENGTH/BEAM— for anything that wants to print them.
Scoped to this part · feeds back into the world's score.