park
<!-- zero:scaffolded-readme --> <!-- Replace the line below with what this module provides and who consumes it, then delete both comment lines. -->
park
<!-- zero:scaffolded-readme --> <!-- Replace the line below with what this module provides and who consumes it, then delete both comment lines. -->TODO: describe this module.
Interface
What this asset declares: the schema it conforms to, what it exposes, and the rendered structured payload.
conforms to
zero/source-extract/v2The terrain park on the run: snow kickers and a rail, built as geometry so their lips and edges are exact.
kickerSpec(x: number, z: number, run: number, lip: number, width: number) → Kicker
A kicker: an approach that rises to a lip, with a knuckle behind it. `z` is the lip; the ramp runs up from `z + run` against the fall line, and the skier leaves `lip` metres above the piste.
| arg | type | description |
|---|---|---|
| x | number | |
| z | number | |
| run | number | |
| lip | number | |
| width | number |
kickerLift(k: Kicker, u: number) → number
Deck height above the piste, `u` along the ramp from its foot to its lip. Eases in flat and steepens toward the lip, which is the shape that sends a skier up rather than out.
| arg | type | description |
|---|---|---|
| k | Kicker | |
| u | number |
kickerLiftAt(k: Kicker, z: number) → number
Deck height above the piste at a z, or nil off either end of the ramp.
| arg | type | description |
|---|---|---|
| k | Kicker | |
| z | number |
section(x: number, z: number, base: number, deck: number, width: number) → void
One cross-section of a snow feature: a deck of `width` at `y`, with shoulders that fall away to the snow either side of it and a base sunk below the surface so the feature is part of the piste, not a prop on it.
| arg | type | description |
|---|---|---|
| x | number | |
| z | number | |
| base | number | |
| deck | number | |
| width | number |
kickerMesh(k: Kicker, groundY: ?) → any
Build one kicker as an open surface with explicit normals. A kicker is a shape lying ON the piste, so only its upper surface is ever seen and every face of it points upward — which is exactly what makes it safe to state the normals outright rather than derive them from a winding. Derived normals came out pointing into the mound, and the approach the skier rides read as a black slab under a bright sky; a normal that is computed from the surface's own slope cannot be inside out, whichever way the triangles happen to be wound.
| arg | type | description |
|---|---|---|
| k | Kicker | |
| groundY | ? |
addRow(z: number, deck: number, base: number, width: number) → void
| arg | type | description |
|---|---|---|
| z | number | |
| deck | number | |
| base | number | |
| width | number |
_kickerSweptSolid(k: Kicker, groundY: ?) → any
| arg | type | description |
|---|---|---|
| k | Kicker | |
| groundY | ? |
kickerRise(k: Kicker, x: number, z: number) → number
How high a kicker's deck stands above the piste at a point, tapering to nothing across its width and off both ends. This is what a body in contact actually rides, so the take-off it leaves is the lip that was built.
| arg | type | description |
|---|---|---|
| k | Kicker | |
| x | number | |
| z | number |
railRise(r: Rail, x: number, z: number, groundY: ?) → number
How high a rail's top stands above the piste at a point, or zero off it.
| arg | type | description |
|---|---|---|
| r | Rail | |
| x | number | |
| z | number | |
| groundY | ? |
railSpec(x: number, z: number, length: number, height: number) → Rail
A rail: a steel tube on legs, running down the fall line.
| arg | type | description |
|---|---|---|
| x | number | |
| z | number | |
| length | number | |
| height | number |
railMesh(r: Rail, groundY: ?) → any
| arg | type | description |
|---|---|---|
| r | Rail | |
| groundY | ? |
Kicker = {Rail = {Sub-parts
Everything contained inside this part. Assets are composite children (clickable cards). Files are leaf payloads. Expand any row to view its source.
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.