pub struct Frame {
pub node: NodeId,
pub lo: [i64; 3],
pub hi: [i64; 3],
}Expand description
What a piece owns: the box’s play space, grown FLOOR_COURSE downward
to take in the floor the walk plane stands on.
One derivation, Frame::of, and four readers that must not disagree: the
exactness check (DW0843), the face check (DW0844), the placement inside
Plan::build, and delvec allocation. Two of them computing “where does
this piece go” independently is how a builder and its observer come to agree
about a world neither describes — the failure PlacedBox’s own note records
one layer down.
What is not in here is as load-bearing as what is: every vertical party plane, every unshared shell face, every derived stair in an unbound host and every bar in a vertical-plane seam stay whole-owned. The piece dresses its side of a wall from within its own frame; the party plane is structure, and structure is the whole’s.
A seam’s FRAME is whole-owned on the same terms and with one recorded
exception: where two boxes stack, the horizontal party plane between them is
the upper box’s floor course, so a bound upper box owns the frame cut in it
along with the rest of its floor. That is spec-0050 §3’s own stacked-box
sentence; the reasoning is at blockout::Mass::holes, where the choice is
made.
Fields§
§node: NodeIdThe place this frames.
lo: [i64; 3]Inclusive low corner in world cells — the floor course.
hi: [i64; 3]Inclusive high corner in world cells — the top of the play space.
Implementations§
Source§impl Frame
impl Frame
Sourcepub fn of(b: &PlacedBox) -> Frame
pub fn of(b: &PlacedBox) -> Frame
The frame a detailed place’s piece must exactly fill.
The play space plus the floor course under it, and nothing else. A floor’s material is the place’s own voice — the datum convention already says the walk plane is the plan’s, so the handing states the datum in piece-local coordinates and the seam-rise proofs hold it.
Sourcepub fn extent(&self) -> [i64; 3]
pub fn extent(&self) -> [i64; 3]
The frame’s size in cells, [x, y, z] — what a piece’s structure size
must equal on every axis (DW0843).
Sourcepub fn datum_y(&self) -> i64
pub fn datum_y(&self) -> i64
The walk plane’s piece-local y — where the piece’s own floor
surface must be.
It is FLOOR_COURSE because the frame is the play space grown exactly
that many courses downward, so the number is a consequence of
Frame::of and moves with it rather than being a literal repeated at
four call sites.