Skip to main content

PlanBox

Struct PlanBox 

Source
pub struct PlanBox {
    pub node: NodeId,
    pub min: Option<[i64; 2]>,
    pub extent: [NonZeroU32; 2],
    pub floor: Floor,
    pub ceiling: Ceiling,
    pub atmosphere: Option<AtmosphereId>,
}
Expand description

One place, embedded: a footprint standing on a plane.

A box is a plan, not a prism. Its min/extent are the two horizontal axes and its vertical position is PlanBox::floor — one authority for the plane, where a y inside min beside a declared floor would have been two numbers with no rule about which the derivation believes.

A box is the PLAY SPACE, and connected boxes are separated by exactly one cell. extent is the interior a body can stand in; the shell the blockout derivation builds is not inside it. That shell stands in the one-cell gap between two neighbours, and on the course under the floor and over the ceiling. So two places that connect are placed one cell apart on the face they share — that cell is the wall they have in common, written once — and two boxes placed flush have no wall for a seam to be cut through, which DW0828 refuses. Worked: a box at min: [4, 4] with extent: [4, 4] occupies x 4..7, so its eastern neighbour’s min x is 9, never 8.

Two consequences follow, and they are what make the checks say what they look like they say: the size-class ladder judges extent directly (DW0832), its smallest rung 4 × 4 being exactly one kit quantum; and a plan never states a wall’s thickness anywhere, because the gap is where the wall is.

Fields§

§node: NodeId

The graph node this box embeds.

The ordering tooth, at the type level: there is no way to write a box that does not name a place, so a site plan cannot describe a space the layout graph has not declared (spec-0049 §7.1).

§min: Option<[i64; 2]>

A pin: the low corner [x, z] in world coordinates, when the author chooses where this box stands. Optional (spec-0059 §2): a box with no pin stands where the packing puts it — one cell beyond the face of the box its first seam in document order hangs it off. At least one box of every connected component of the seam graph is pinned, or nothing places the component (DW0883); a pinned box the packing also reaches at a different corner is refused naming both (DW0883). Two horizontal numbers, never three — the vertical position is floor.

§extent: [NonZeroU32; 2]

Interior footprint [dx, dz], in blocks, on the kit grid (DW0825). Two horizontal numbers, never three — the vertical size is ceiling.

This is play space, not the building. The box covers min to min + extent - 1 inclusive, and the walls stand outside it, in the one-cell gap that separates connected places (DW0828).

§floor: Floor

The walk plane.

§ceiling: Ceiling

What closes it overhead.

§atmosphere: Option<AtmosphereId>

The sky this place stands under from the first tick (spec-0080 §3.2): one of world.atmospheres[], painted at world setup over the box’s play space grown as far as the client’s biome blend reads — the same capability areas[].atmosphere is, on the other class of place with a world box. Absent: the horizon’s biome.

Trait Implementations§

Source§

impl Clone for PlanBox

Source§

fn clone(&self) -> Self

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for PlanBox

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl<'de> Deserialize<'de> for PlanBox

Source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
Source§

impl JsonSchema for PlanBox

Source§

fn schema_name() -> Cow<'static, str>

The name of the generated JSON Schema. Read more
Source§

fn schema_id() -> Cow<'static, str>

Returns a string that uniquely identifies the schema produced by this type. Read more
Source§

fn json_schema(generator: &mut SchemaGenerator) -> Schema

Generates a JSON Schema for this type. Read more
Source§

fn inline_schema() -> bool

Whether JSON Schemas generated for this type should be included directly in parent schemas, rather than being re-used where possible using the $ref keyword. Read more
Source§

impl PartialEq for PlanBox

Source§

fn eq(&self, other: &Self) -> bool

Equality operator ==. Read more
1.0.0 (const: unstable) · Source§

fn ne(&self, other: &Rhs) -> bool

Inequality operator !=. Read more
Source§

impl Serialize for PlanBox

Source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more
Source§

impl StructuralPartialEq for PlanBox

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> DeserializeOwned for T
where T: for<'de> Deserialize<'de>,

Source§

impl<T> DynClone for T
where T: Clone,

Source§

fn __clone_box(&self, _: Private) -> *mut ()

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = !

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, !>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.