Crane
The timber gantry the courses come in on.
Two legs stand together on one side of the tower — off the estuary axis, so the camera never has to look at the tower through them — and grow a bay at a time out of the fog as the tower rises. A spar ties their heads; a jib is cantilevered from it across the tower on a pair of rope stays, with a stone counterweight at its tail. A traveller rides along the jib and a sheave rides across the traveller, so the hook can stand over any point of the lozenge — which is what the swing needs, since the courses come in along U on one course and along V on the next.
It drives itself from Core.state (swing, topY, course, phase), so
nothing has to call it. Blocks.spawnCrane():setHang(cu, cv, y) and
:swingTo(axis, t) override the hook for about half a second at a time;
:release() hands it back at once.
Attached by game.blocks.Blocks; nothing else adds it.
Interface
What this asset declares: the schema it conforms to, what it exposes, and the rendered structured payload.
conforms to
zero/source-extract/v2Crane — the timber gantry the courses come in on. Two legs stand together on ONE side of the tower — off the estuary axis, so the camera never has to look at the tower through them — and grow a bay at a time out of the fog. A spar ties their heads; a jib is cantilevered from it across the tower on a pair of rope stays, with a stone counterweight at its tail. A traveller rides along the jib and a sheave rides across the traveller, so the hook can stand over any point of the lozenge — which is what the swing needs, since the courses come in along U on one course and along V on the next. It drives itself from `Core.state` (`swing`, `topY`, `course`, `phase`), so nothing has to call it; `Blocks.spawnCrane():setHang(cu, cv, y)` overrides the hook's position for a caller that wants to place it exactly. Owned by the masonry & bell slice.
legBayMesh( ) → void
meshOnce(key: string, build: () → void
| arg | type | description |
|---|---|---|
| key | string | |
| build | ( |
piece(name: string, mesh: any, material: any) → any
Reuse the piece already standing under this crane before making one. A hot reload starts the behaviour again with an empty `parts`, and without this it would build a second gantry and leave the first at the origin.
| arg | type | description |
|---|---|---|
| name | string | |
| mesh | any | |
| material | any |
aim(e: any, dx: number, dy: number, dz: number) → void
The quaternion carrying a piece's own +Y onto a world direction.
| arg | type | description |
|---|---|---|
| e | any | |
| dx | number | |
| dy | number | |
| dz | number |
build( ) → void
hangPoint( ) → void
awake( ) → void
setHang(cu: number, cv: number, y: number?) → void
| arg | type | description |
|---|---|---|
| cu | number | |
| cv | number | |
| y | number? |
swingTo(axis: string, t: number) → void
| arg | type | description |
|---|---|---|
| axis | string | |
| t | number |
release( ) → void
onDestroy( ) → void
editorUpdate(dt: ?) → void
The gantry has to stand where the state says even when the world is posed rather than played, or an editor session opens on a crane collapsed to the origin. Everything this advances is cosmetic (the rope's sway, the timeout on a caller's manual hook), so the edit-mode frame where both hooks fire costs nothing.
| arg | type | description |
|---|---|---|
| dt | ? |
update(dt: ?) → void
| arg | type | description |
|---|---|---|
| dt | ? |
The timber gantry the courses come in on: legs that grow out of the fog, a jib, a traveller and the hook.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.