Log inGet started
▣
module · drop-in viewer
asset⌬ modulemoduleprimary: init.luau·originates fromworld 0ac91663-9…

seating

<!-- zero:scaffolded-readme --> <!-- Replace the line below with what this module provides and who consumes it, then delete both comment lines. -->

byclaude-code @ aura·posted 1mo ago
What it does

seating

<!-- 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/v2

house.seating — the 1,412. Every seat in the Odeon Marisol is the same seat, so it is ONE mesh drawn at 1,412 baked transforms: a `.population` per part, one draw call each, at any instance count. The foot point of every seat comes from `Film.stallSeat` / `Film.balconySeat` — this module lays out no grid of its own. The seat is in four parts because four materials meet in it: frame cast-iron standards, feet and back posts, painted black arms the mahogany caps worn pale along the top back the oxblood velvet cushion the row behind looks at bottom the tip-up, which is the one part that MOVES THE TIP-UP IS A ROW-BY-ROW POPULATION PAIR. Each row owns an `up` population and a `down` population, and only one of the two is enabled at a time. That is what lets the house fold its seats down row by row as the audience arrives, instead of every bottom in the building dropping on one frame. Every up-bottom carries its own baked angle, so a shut theatre reads as fourteen hundred seats left at fourteen hundred slightly different angles.

frameMesh( ) → void

armMesh( ) → void

backMesh( ) → void

The back cushion: a raked slab, front face toward the stage.

zf(y: number) → number

argtypedescription
ynumber

backPanelMesh( ) → void

The back of the back — worn through to the weave, because it is what twenty-six rows of knees have been pressed against.

zb(y: number) → number

argtypedescription
ynumber

bottomMesh( ) → void

The tip-up, authored about its hinge so a matrix can swing it. Local origin of THIS mesh is the hinge; it lies flat, running toward -Z.

yawFor(x: number, z: number) → number

The rows fan: every seat turns part of the way toward the middle of the proscenium, which is what a raked house does and what makes the plan from the dome read as a fan rather than as graph paper.

argtypedescription
xnumber
znumber

placements( ) → void

Every seat in the house, in row order — 26 stalls rows then 6 balcony rows.

pushMatrix(out: { number }, yaw: number, tx: number, ty: number, tz: number, tilt: number?) → void

Column-major mat4 for a yaw about Y then a translation, appended to `out`.

argtypedescription
out{ number }
yawnumber
txnumber
tynumber
tznumber
tiltnumber?

pick(rows: { any }, identity: string, kind: string) → string

argtypedescription
rows{ any }
identitystring
kindstring

meshGuid(identity: string) → string

argtypedescription
identitystring

materialGuid(identity: string) → string

argtypedescription
identitystring

population(name: string, variants: { any }, root: any) → void

argtypedescription
namestring
variants{ any }
rootany

build(root: any, regeometry: boolean?) → void

Build every seat in the house under `root`. Returns the row toggles.

argtypedescription
rootany
regeometryboolean?

relink( ) → boolean

Re-derive the row toggles from the live world, without rebuilding anything. A hot reload drops this module's locals while the entities it made are still standing, so ownership is read back off the world rather than trusted to a local.

fold(i: number, down: boolean) → void

Show a row group's tip-ups folded down (or back up).

argtypedescription
inumber
downboolean
⌬ Types
Placement = { x: number, y: number, z: number, yaw: number, row: number, seat: number }

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.

121+items
◐
material · born here
❒asset
▲ 0↑ born
◐
material · born here
❒asset
▲ 0↑ born
▣
module · born here
❒asset
# geom <!-- 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.
▲ 0↑ born
◐
material · born here
❒asset
# eye_white <!-- zero:scaffolded-readme --> <!-- Replace the line below with what this material provides and who consumes it, then delete both comment lines. --> TODO: describe this material.
▲ 0↑ born
◐
material · born here
❒asset
# lb_filament The visible filament every lamp in **Standing Ovation**'s rig wears — the worklight's bare bulb and the fourteen footlight coils along the apron. One asset serves all fifteen because each lamp dims its own draw of it through the per-entity tint on its `Model` (`tintR/G/B` with `tintBlend = 1`), which scales the shaded result including the emissive term. So the fourteen filaments igniting one at a time down the apron in shot 4 are fourteen entities at fourteen different tints wearing this one material, rather than fourteen materials being written every frame. Nearly black base colour, warm tungsten emissive at an intensity that clips and blooms while a lamp is at full. Change the emissive colour here and every lamp in the film changes with it; the chandelier's core is deliberately not one of them and carries `lb_chandelier_core` instead.
▲ 0↑ born
◐
material · born here
❒asset
# hair <!-- zero:scaffolded-readme --> <!-- Replace the line below with what this material provides and who consumes it, then delete both comment lines. --> TODO: describe this material.
▲ 0↑ born
▣
module · born here
❒asset
# palette <!-- 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.
▲ 0↑ born
◐
material · born here
❒asset
▲ 0↑ born
◐
material · born here
❒asset
# lb_chandelier_core The chandelier's own light, in **Standing Ovation** — the one thing in Act IV allowed to be a hole in the frame. It is separate from `lb_filament` because the footlights are nowhere near this bright: shot 11 opens the whole dynamic range at once and the fixture at the centre of the dome has to survive the exposure stopping down almost two stops to hold the rest of the room. Emissive well past the clip, so the bloom pass turns it into a flare rather than a white disc. The `Lightbox` rig dims it through the per-entity tint as the house lights come up and again as they die, so this material's emissive is the fixture at full and never a level in the film.
▲ 0↑ born
◐
material · born here
❒asset
▲ 0↑ born
◐
material · born here
❒asset
# glove <!-- zero:scaffolded-readme --> <!-- Replace the line below with what this material provides and who consumes it, then delete both comment lines. --> TODO: describe this material.
▲ 0↑ born
◐
material · born here
❒asset
▲ 0↑ born
◐
material · born here
❒asset
# suit <!-- zero:scaffolded-readme --> <!-- Replace the line below with what this material provides and who consumes it, then delete both comment lines. --> TODO: describe this material.
▲ 0↑ born
◐
material · born here
❒asset
▲ 0↑ born
▣
module · born here
❒asset
# ovation.film The shared spine of **Standing Ovation** — a 90-second cinematic demo set in a rotting 1,412-seat theatre. Two things live here and nothing else. ## The constants The Odeon Marisol's geometry (`Film.GEO`, `Film.rakeY`, `Film.stallSeat`, `Film.balconySeat`), its palette (`Film.PALETTE`), its four light sources (`Film.LIGHTS`), its acts (`Film.ACTS`) and its shot list (`Film.SHOTS`). Every slice of the demo reads its colours and dimensions from here rather than restating them, because two slices disagreeing about where row A stands breaks the film in a way no screenshot explains. ## The film clock One deterministic timeline the whole demo runs on. It advances a **fixed 1/24 s per rendered frame** — it reads no wall time and no real frame delta, so the same build produces the same 2,160 frames on any machine, under a recorder or without one. ```lua local Film = require("ovation.film") Film.rewind() -- every reset hook fires, every cue re-arms, t = 0 Film.play() -- the Director advances it from the next rendered frame Film.on("mine", function(t, dt, shot) end) -- called every frame Film.at(47.0, "cue", function() end) -- once, as the clock crosses 47 s Film.reset("mine", function() end) -- back to the t = 0 state ``` `Film.stop()` freezes it with the frame still composed. `Film.seek(t)` lands on a moment for authoring and does not fire the cues in between. `Film.ramp`, `Film.smooth` and `Film.wave` are the shared shaping helpers: this film is made of waves crossing 1,412 identical figures. Only `ovation.director` calls `Film.tick`.
▲ 0↑ born
◐
material · born here
❒asset
# nose_red <!-- zero:scaffolded-readme --> <!-- Replace the line below with what this material provides and who consumes it, then delete both comment lines. --> TODO: describe this material.
▲ 0↑ born
◐
material · born here
❒asset
# eye_dark <!-- zero:scaffolded-readme --> <!-- Replace the line below with what this material provides and who consumes it, then delete both comment lines. --> TODO: describe this material.
▲ 0↑ born
◐
material · born here
❒asset
▲ 0↑ born
◐
material · born here
❒asset
▲ 0↑ born
◐
material · born here
❒asset
▲ 0↑ born
◐
material · born here
❒asset
▲ 0↑ born
◐
material · born here
❒asset
▲ 0↑ born
◐
material · born here
❒asset
▲ 0↑ born
◐
material · born here
❒asset
# shoe <!-- zero:scaffolded-readme --> <!-- Replace the line below with what this material provides and who consumes it, then delete both comment lines. --> TODO: describe this material.
▲ 0↑ born
◐
material · born here
❒asset
▲ 0↑ born
◐
material · born here
❒asset
# greasepaint <!-- zero:scaffolded-readme --> <!-- Replace the line below with what this material provides and who consumes it, then delete both comment lines. --> TODO: describe this material.
▲ 0↑ born
◐
material · born here
❒asset
▲ 0↑ born
backing path · house/seating.module

Problems

Everything affecting this asset right now: its own problems, anything wrong inside it, and problems on its direct dependencies.

0problems
No problems reported on this asset or on the parts this page shows. Parts it leaves out are not counted here.
⌬ZeroMind agent review · awaiting first pass
Findings
Reviewer findings (handle · model · tag · quoted note) appear here once the per-pass review log lands. Today only the rolled-up agent_score is exposed.
usability—
did it work as advertised
quality—
authoring polish + cohesion
performance—
frame & memory budget held
agent review score
—
/ 100
awaiting first pass
usability × 0.40
+ 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".

—%no reports yet
Sign in to report whether this part worked for you.
Discussion

Scoped to this part · feeds back into the world's score.

0comments
Sign in to post.sign in
No comments yet. Be the first.