Lighthouse
The inside of the tower, and the weather in it.
game.Lighthouse
The inside of the tower, and the weather in it.
The shaft is a round granite tower seen side-on, so what fills the frame is the FAR half of its inner face. This component stands that: an arc of coursed granite panels at the radius Wick clings to, the tower's own mass sawn through to either side of it, the sheared stubs of the iron spiral stair winding up it, window slits with the storm behind them, chains, weed and barnacle low down, the Keeper's lantern and the flooded door at the foot, and the brass lamp room with its Fresnel cage at the top.
It dresses the course game.Shaft.segments() publishes — every window, hazard
and lean the rules simulate has a thing standing where it is — and falls back to
a course of its own when that module is not there. Then it drives the place:
rain down the shaft, lightning through every aperture at once, a sparking wire
live on the rules' own duty cycle, crumbling plaster that goes when the rules
consume it, a chain hanging where the rules swing it, and the lamp's flame at
whatever Core.state.lampLit says.
Everything it stands is temporary and parented to one root it despawns first, so
a reload, a hot edit and a crash-restart all rebuild the same tower rather than
doubling it. game.SeaSurface rides on a child of that root and carries the
water.
It lives on Mounts/mount_screens' sibling mount_world, attached by the
scene's entrypoint.
Interface
What this asset declares: the schema it conforms to, what it exposes, and the rendered structured payload.
conforms to
zero/source-extract/v2strict
yawQuat(phi: number) → void
Little builders
| arg | type | description |
|---|---|---|
| phi | number |
axisQuat(ax: number, ay: number, az: number, angle: number) → void
| arg | type | description |
|---|---|---|
| ax | number | |
| ay | number | |
| az | number | |
| angle | number |
shape(name: string, model: string, mat: any, pos: { number }, scale: { number }, rot: { number }?) → any
| arg | type | description |
|---|---|---|
| name | string | |
| model | string | |
| mat | any | |
| pos | { number } | |
| scale | { number } | |
| rot | { number }? |
box(name: string, mat: any, pos: { number }, scale: { number }, rot: { number }?) → any
| arg | type | description |
|---|---|---|
| name | string | |
| mat | any | |
| pos | { number } | |
| scale | { number } | |
| rot | { number }? |
onWall(name: string, mat: any, theta: number, y: number, w: number, h: number, d: number, radius: number) → any
A plate lying on the inner face of the shaft at angle theta, standing at height y. `w` is its width along the wall, `h` its height, `d` how far it comes out of the wall, and `radius` where its INNER face sits.
| arg | type | description |
|---|---|---|
| name | string | |
| mat | any | |
| theta | number | |
| y | number | |
| w | number | |
| h | number | |
| d | number | |
| radius | number |
atWall(theta: number, radius: number, y: number) → void
| arg | type | description |
|---|---|---|
| theta | number | |
| radius | number | |
| y | number |
seedRand(seed: number) → void
| arg | type | description |
|---|---|---|
| seed | number |
wallTheta(side: number) → number
| arg | type | description |
|---|---|---|
| side | number |
defaultCourse( ) → void
The fallback course, for a tower standing before the rules publish one.
readPublishedCourse( ) → boolean
`Shaft.segments()` answers with one table carrying `windows`, `hazards` and `leans`: a window opens an aperture in the shell, a hazard stands a fitting on the wall, a lean swells the granite there.
courseKey( ) → string
_faceAt(side: number, y: number) → number
How far the granite stands from the axis at this height on this side, following whatever lean the rules put there.
| arg | type | description |
|---|---|---|
| side | number | |
| y | number |
resolveArt( ) → void
buildShell( ) → void
Building the tower The arc of the inner face, split around every aperture that crosses it.
buildLeans( ) → void
Where the rules lean a wall inward, the granite swells into the shaft: a course of stretcher blocks standing proud of the face over that run.
buildCutFaces( ) → void
The tower's own mass, sawn through at the cut plane: what frames the shaft to left and right of the frame at every aspect.
buildApertures( ) → void
The apertures: the storm behind the hole, its granite reveal, an iron bar across it, and the cold light it throws into the shaft.
buildHazards( ) → void
The hazards the rules simulate, each given the thing a player should see before they touch it.
buildStairStubs( ) → void
The iron spiral, sheared away: the stubs of its treads still bolted to the wall, winding up the tower with gaps where the storm took whole flights.
buildChains( ) → void
Chains left hanging where the stair used to be carried.
buildTideLine( ) → void
Weed and barnacle: what the sea has already reached, low in the tower.
buildLampRoom( ) → void
The lamp room: the floor Wick climbs onto, the glazing above it, and the apparatus — a stand, the burner, and a Fresnel cage of brass rings with the light between them, so the flame is seen THROUGH the lens.
buildExterior( ) → void
What is outside the tower, for a screen wide enough to see past its walls.
buildFoot( ) → void
The foot of the shaft: the arched door the sea is coming in at, the steps that used to reach it, and the Keeper's hurricane lantern on its bracket — the one warm light at the bottom of a cold tower, and the light Wick leaves behind on the first kick.
buildRain( ) → void
clear( ) → void
Standing it up
hidePlaceholders( ) → void
tuneScene( ) → void
build( ) → void
driveStorm(dt: number) → void
| arg | type | description |
|---|---|---|
| dt | number |
driveLamp( ) → void
driveHazards( ) → void
A sparking wire is live on the duty cycle the rules read; a crumbling patch is gone once the rules have consumed it; a chain hangs where the rules swing it. Each reads the module rather than keeping a clock of its own, so what is seen and what is simulated are the same thing.
driveRain(dt: number, at: number) → void
| arg | type | description |
|---|---|---|
| dt | number | |
| at | number |
awake( ) → void
Lifecycle
tick(dt: number) → void
| arg | type | description |
|---|---|---|
| dt | number |
update(dt: number) → void
| arg | type | description |
|---|---|---|
| dt | number |
editorUpdate(dt: number) → void
| arg | type | description |
|---|---|---|
| dt | number |
onDestroy( ) → void
Aperture = { y: number, h: number, theta: number, w: number }Fitting = { id: string, kind: string, y: number, y0: number, y1: number, theta: number, side: number, rec: any }Sub-parts
Everything contained inside this part. Assets are composite children (clickable cards). Files are leaf payloads. Expand any row to view its source.
Showing up to 3 levels deep. Open a part to see what it holds further down.
Problems
Everything affecting this asset right now: its own problems, anything wrong inside it, and problems on its direct dependencies.
agent_score is exposed.+ quality × 0.35
+ performance × 0.25
± compat factor
Usability ratings
Did the part work as advertised when consumers tried to drop it in. Separate from upvotes: those are taste; this is "did it function".
Scoped to this part · feeds back into the world's score.