Objects
ModelJson.objects. method decides the body: createObject → steps, createBlock → objects. Neither carries a placement arg — placement (pivot/translation/rotation/scale/copies) is properties, the same as paint and identity, for every object alike (see Instance).
// This file was generated by [ts-rs](https://github.com/Aleph-Alpha/ts-rs). Do not edit this file manually.
import type { Argument } from "./Argument.js";
import type { BehaviorNode } from "./BehaviorNode.js";
import type { ObjectMethod } from "./ObjectMethod.js";
import type { PropertyNode } from "./PropertyNode.js";
import type { StepNode } from "./StepNode.js";
/**
* ONE node type per lane: `{key, method, args?}` plus `steps` (`Object` =
* `createObject`, a data chain) or `objects` (`Block` = `createBlock`, a
* nest, recursive) — `method` alone decides which body is legal; a node
* naming neither, or the wrong body for its method, fails validate by name.
*/
export type ObjectNode = {
/**
* identity — unique in the document's one key namespace, every lane,
* nested children included.
*/
key: string,
/**
* intent — editor-chrome display text, printed verbatim; absent falls
* back to `key`.
*/
label?: string,
/**
* intent — `createObject` (body `steps`) or `createBlock` (body `objects`).
*/
method: ObjectMethod,
/**
* intent — every object's args stay empty: `createBlock` and
* `createObject` alike take no args of their own. Placement
* (`pivot`/`translation`/`rotation`/`scale`/`copies`) is INSTANCE and
* lives in `properties` below, same as every other object.
*/
args?: Array<Argument>,
/**
* intent — placement (`pivot`/`translation`/`rotation`/`scale`/
* `copies`) plus paint and identity (`name`/`material`/`layer`/
* `visible`/`attributes`) on this object itself.
*/
properties?: Array<PropertyNode>,
/**
* intent — a verb the engine performs on this object's siblings once
* the parent set evaluates (AGENTS.md "Behaviors"); each method at
* most once.
*/
behaviors?: Array<BehaviorNode>,
/**
* intent — the data chain, legal only on `method: createObject`.
*/
steps?: Array<StepNode>,
/**
* intent — the nested children, legal only on `method: createBlock`.
*/
objects?: Array<ObjectNode>, };// This file was generated by [ts-rs](https://github.com/Aleph-Alpha/ts-rs). Do not edit this file manually.
/**
* The two structural object methods, a closed enum — `Object` admits only
* `steps` (a data chain), `Block` admits only `objects` (a nest). A record
* producer (`dimensionLinear`/`hatch`/`sectionPlane`/…) is no longer a
* third object-tier shape: it is an ordinary `steps[]` producer step.
*/
export type ObjectMethod = "createObject" | "createBlock";// This file was generated by [ts-rs](https://github.com/Aleph-Alpha/ts-rs). Do not edit this file manually.
import type { Argument } from "./Argument.js";
/**
* One step of a data-streaming chain — no key (nothing references a step;
* a reference names an object) and no `enabled` (every arg is already an
* expression).
*/
export type StepNode = {
/**
* intent — editor-chrome display text for this step, printed verbatim;
* absent falls back to the registry's friendly name for `method`.
*/
label?: string,
/**
* intent — the catalog method this step invokes.
*/
method: string,
/**
* intent — the method's arguments.
*/
args?: Array<Argument>, };// This file was generated by [ts-rs](https://github.com/Aleph-Alpha/ts-rs). Do not edit this file manually.
import type { Argument } from "./Argument.js";
/**
* One entry of a `properties` list — `{ method, args? }`, OPEN at the shape
* tier: which methods are legal in which home is a registry check
* (`crate::validate::registry`), never a schema enum.
*/
export type PropertyNode = {
/**
* intent — the registry-checked property method.
*/
method: string,
/**
* intent — the method's arguments.
*/
args?: Array<Argument>, };// This file was generated by [ts-rs](https://github.com/Aleph-Alpha/ts-rs). Do not edit this file manually.
/**
* One value + its domain — the shape of every arg (a parameter's value, a
* step arg, a properties arg). `min`/`max` are numeric-only; `options`, when
* present, is the arg's whole domain.
*/
export type Argument = {
/**
* identity — the arg's name, unique among its owning node's `args`.
*/
key: string,
/**
* geometry — an expression string; may be empty (an unselected file
* parameter authors nothing, so this arg's min/max/options do not apply).
*/
input: string,
/**
* intent — expression → number, inclusive lower bound.
*/
min?: string,
/**
* intent — expression → number, inclusive upper bound.
*/
max?: string,
/**
* intent — expression → non-empty array, the arg's whole domain.
*/
options?: string, };Catalog methods
Every engine_catalog node whose context names "objects" — the two heads only (createObject/createBlock). A createObject's own steps run under a data-kind context instead (curve/mesh/pointCloud/block), and properties/behaviors under their own context tags — both are catalog data too, grouped by nodeType on Nodes rather than duplicated here.
2 catalog method(s) whose context names "objects".
createBlock
Create Block · step · returns blockData[] · context: objects
Default key: block.
A nest of objects.
No args.
createObject
Create Object · step · returns objectData[] · context: objects
Default key: object.
An ordinary objects[] entry, its own data chain folded from empty.
No args.