Object
SceneObject
The evaluated-object shape, one for every objects[] entry after fold + placement assembly.
Used by: Block.
// This file was generated by [ts-rs](https://github.com/Aleph-Alpha/ts-rs). Do not edit this file manually.
import type { Behavior } from "./Behavior.js";
import type { Instance } from "./Instance.js";
import type { PieceData } from "./PieceData.js";
/**
* The evaluated-object shape, one for every `objects[]` entry after fold +
* placement assembly.
*/
export type SceneObject = {
/**
* identity — the `objects[]` key of the node that produced this
* object; model-wide unique at the top level, and inside a `Block` the
* DEFINITION's own key (two placements of one component repeat it).
* Pick/diff identity is (node id, cell ordinal), never this string.
*/
key: string,
/**
* intent — editor chrome for the definition. Absent = UI shows `key`.
*/
label?: string,
/**
* geometry — the placements: how many of this object there are and
* where each sits.
*/
instances: Array<Instance>,
/**
* geometry — the shared payload; its own shape says what type this is.
* A `Block` piece's data is not folded here: `data` holds exactly one
* `PieceData` — one node's output is one object.
*/
data: PieceData,
/**
* geometry — this object's own authored behaviors, evaluated. Carried
* through `bake_block` (`graph::fold::bake_block_leaves`) onto every
* leaf, so a component body's window still carries its opening when the
* block that contains it is baked or placed.
*/
behaviors: Array<Behavior>,
/**
* geometry — this object's own resolved placement pivot
* (`graph::property::place`), in this object's own local frame (the
* same frame the `pivot` property is authored in, before placement) —
* the SAME point `faceCamera` turns about (`graph::object::
* stamp_face_camera_pivot`) and `render::RenderChange.pivot` ships, so
* a host gizmo never re-derives it.
*/
pivot: [number, number, number], };| field | type | optional | class | doc |
|---|---|---|---|---|
key | string | no | identity | identity — the objects[] key of the node that produced this object; model-wide unique at the top level, and inside a Block the DEFINITION's own key (two placements of one component repeat it). Pick/diff identity is (node id, cell ordinal), never this string. |
label | string | yes | intent | intent — editor chrome for the definition. Absent = UI shows key. |
instances | Array<Instance> | no | geometry | geometry — the placements: how many of this object there are and where each sits. |
data | PieceData | no | geometry | geometry — the shared payload; its own shape says what type this is. A Block piece's data is not folded here: data holds exactly one PieceData — one node's output is one object. |
behaviors | Array<Behavior> | no | geometry | geometry — this object's own authored behaviors, evaluated. Carried through bake_block (graph::fold::bake_block_leaves) onto every leaf, so a component body's window still carries its opening when the block that contains it is baked or placed. |
pivot | [number, number, number] | no | geometry | geometry — this object's own resolved placement pivot (graph::property::place), in this object's own local frame (the same frame the pivot property is authored in, before placement) — the SAME point faceCamera turns about (graph::object:: stamp_face_camera_pivot) and render::RenderChange.pivot ships, so a host gizmo never re-derives it. |
Behavior
Used by: Block, SceneObject.
// This file was generated by [ts-rs](https://github.com/Aleph-Alpha/ts-rs). Do not edit this file manually.
import type { Mesh } from "./Mesh.js";
export type Behavior = { "method": "opening",
/**
* geometry — the void, in the carrying object's own local space.
*/
volume: Mesh, } | { "method": "faceCamera",
/**
* geometry — the turning point, in the carrying object's own local
* space: the object's own resolved pivot (`graph::property::
* placements`), stamped on at assembly — never an
* authored value.
*/
pivot: [number, number, number],
/**
* geometry — the unit normal that faces the viewer, in the
* carrying object's own local space.
*/
normal: [number, number, number], };Behavior — opening
| field | type | optional | class | doc |
|---|---|---|---|---|
method | "opening" | no | tag | — |
volume | Mesh | no | geometry | geometry — the void, in the carrying object's own local space. |
Behavior — faceCamera
| field | type | optional | class | doc |
|---|---|---|---|---|
method | "faceCamera" | no | tag | — |
pivot | [number, number, number] | no | geometry | geometry — the turning point, in the carrying object's own local space: the object's own resolved pivot (graph::property:: placements), stamped on at assembly — never an authored value. |
normal | [number, number, number] | no | geometry | geometry — the unit normal that faces the viewer, in the carrying object's own local space. |
Instance
One placement of a SceneObject. Coordinates are LOCAL to the object; index is stable across re-evaluation (mirrors an authored properties placement one-for-one).
Used by: RenderChange, SceneObject.
// This file was generated by [ts-rs](https://github.com/Aleph-Alpha/ts-rs). Do not edit this file manually.
import type { PerViewFlag } from "./PerViewFlag.js";
/**
* One placement of a `SceneObject`. Coordinates are LOCAL to the object;
* index is stable across re-evaluation (mirrors an authored `properties`
* placement one-for-one).
*/
export type Instance = {
/**
* geometry — column-major 4x4, translation at indices 12/13/14, mm.
* Identity on a record object (dimension / leader / hatch / image /
* section): its placement is mapped into its own fields at assembly.
*/
transformation: number[],
/**
* identity — this placement's own identity, distinct from the
* object's `label`. Absent = no name authored for this placement (a
* host names it another way, e.g. its own default).
*/
name?: string,
/**
* intent — key of a `materials[]` record, resolved by the renderer.
*/
material?: string,
/**
* intent — key of a `layers[]` record, resolved by the renderer.
*/
layer?: string,
/**
* intent — does it appear on screen, per view.
*/
visible?: PerViewFlag,
/**
* intent — free-form classification, per placement.
*/
attributes?: Record<string, unknown>, };| field | type | optional | class | doc |
|---|---|---|---|---|
transformation | number[] | no | geometry | geometry — column-major 4x4, translation at indices 12/13/14, mm. Identity on a record object (dimension / leader / hatch / image / section): its placement is mapped into its own fields at assembly. |
name | string | yes | identity | identity — this placement's own identity, distinct from the object's label. Absent = no name authored for this placement (a host names it another way, e.g. its own default). |
material | string | yes | intent | intent — key of a materials[] record, resolved by the renderer. |
layer | string | yes | intent | intent — key of a layers[] record, resolved by the renderer. |
visible | PerViewFlag | yes | intent | intent — does it appear on screen, per view. |
attributes | Record<string, unknown> | yes | intent | intent — free-form classification, per placement. |
PieceData
One document a chain step produced or is carrying. Never nested more than one level — a Block holds fully-assembled SceneObjects, each with its own Stream inside data.
Used by: SceneObject.
// This file was generated by [ts-rs](https://github.com/Aleph-Alpha/ts-rs). Do not edit this file manually.
import type { AngularDimensionRecord } from "./AngularDimensionRecord.js";
import type { Block } from "./Block.js";
import type { Curve } from "./Curve.js";
import type { HatchRecord } from "./HatchRecord.js";
import type { ImageRecord } from "./ImageRecord.js";
import type { LeaderRecord } from "./LeaderRecord.js";
import type { LinearDimensionRecord } from "./LinearDimensionRecord.js";
import type { Mesh } from "./Mesh.js";
import type { RadialDimensionRecord } from "./RadialDimensionRecord.js";
import type { SectionRecord } from "./SectionRecord.js";
/**
* One document a chain step produced or is carrying. Never nested more than
* one level — a `Block` holds fully-assembled `SceneObject`s, each with its
* own `Stream` inside `data`.
*/
export type PieceData = { "type": "curve" } & Curve | { "type": "mesh" } & Mesh | { "type": "block" } & Block | { "type": "section" } & SectionRecord | { "type": "hatch" } & HatchRecord | { "type": "linearDimension" } & LinearDimensionRecord | { "type": "radialDimension" } & RadialDimensionRecord | { "type": "angularDimension" } & AngularDimensionRecord | { "type": "leader" } & LeaderRecord | { "type": "image" } & ImageRecord;Discriminated by type; the rest of the object is the named type's own fields.
type | fields of |
|---|---|
"curve" | Curve |
"mesh" | Mesh |
"block" | Block |
"section" | SectionRecord |
"hatch" | HatchRecord |
"linearDimension" | LinearDimensionRecord |
"radialDimension" | RadialDimensionRecord |
"angularDimension" | AngularDimensionRecord |
"leader" | LeaderRecord |
"image" | ImageRecord |
PerViewFlag
intent — properties.visible: absent/true = every view, false = none, a list = exactly those view keys, an arrow (camera) => boolean = the cameras the function holds for (its source text, run at render resolve time against the session's camera by Sight::satisfies, because a component's own views are ignored once it is placed and the host's camera is unknown inside it). Empty list refused at evaluate. Render ships it as All(bool) against the session's Sight (render::placement_shown): the active view's pose, else the free camera the host reported; a list holds only in a named view, and with no pose at all nothing holds.
Used by: Instance, ResolvedLayer, SectionEntity.
// This file was generated by [ts-rs](https://github.com/Aleph-Alpha/ts-rs). Do not edit this file manually.
/**
* intent — `properties.visible`: absent/`true` = every view, `false` = none,
* a list = exactly those view keys, an arrow `(camera) => boolean` = the
* cameras the function holds for (its source text, run at render resolve time
* against the session's camera by `Sight::satisfies`, because a component's
* own `views` are ignored once it is placed and the host's camera is unknown
* inside it). Empty list refused at evaluate. Render ships it as `All(bool)`
* against the session's `Sight` (`render::placement_shown`): the active view's
* pose, else the free camera the host reported; a list holds only in a named
* view, and with no pose at all nothing holds.
*/
export type PerViewFlag = boolean | Array<string> | string;One of:
booleanArray<string>string