Skip to content
ParaShape

Settings

ModelJson.settings.

// This file was generated by [ts-rs](https://github.com/Aleph-Alpha/ts-rs). Do not edit this file manually.
import type { Environment } from "./Environment.js";
import type { UnitConfig } from "./UnitConfig.js";

/**
 * Model-level settings — one document-config block. Permanent conventions
 * (Z-up, internal mm, display chord deflection as a `render()` argument,
 * never a setting) are not fields here.
 */
export type ModelSettings = { 
/**
 * intent — absent = `{length: "mm"}`, the one place that default is written.
 */
units?: UnitConfig, 
/**
 * intent — the sun, sky and HDRI; absent = the host's neutral default.
 */
environment?: Environment, };
// This file was generated by [ts-rs](https://github.com/Aleph-Alpha/ts-rs). Do not edit this file manually.
import type { LengthUnit } from "./LengthUnit.js";

/**
 * `length` is REQUIRED, no default: validate is not a normalizer.
 */
export type UnitConfig = { 
/**
 * intent — the display/input unit a surface shows length values in.
 */
length: LengthUnit, };
// This file was generated by [ts-rs](https://github.com/Aleph-Alpha/ts-rs). Do not edit this file manually.

/**
 * The display/input unit a surface shows length values in. The document's
 * numbers are ALWAYS millimetres; this names only the edge conversion.
 * DERIVED from `LENGTH_UNITS` (`document/vocabulary.rs`) — the same five
 * units, as a closed enum instead of a string list.
 */
export type LengthUnit = "mm" | "cm" | "m" | "in" | "ft";
// This file was generated by [ts-rs](https://github.com/Aleph-Alpha/ts-rs). Do not edit this file manually.
import type { EnvironmentHdri } from "./EnvironmentHdri.js";
import type { Site } from "./Site.js";
import type { SunMoment } from "./SunMoment.js";

/**
 * The light that has no place in space — the sun, sky and an HDRI. ONE per
 * document. The sun is DERIVED from `site` + `moment`, never authored.
 */
export type Environment = { 
/**
 * intent — where the model stands on Earth; absent means `sun_lux`/
 * `sun_kelvin` name the sun directly with no site to derive it from.
 */
site?: Site, 
/**
 * intent — the moment the sun is computed for.
 */
moment?: SunMoment, 
/**
 * intent — sun illuminance in lux; absent lets `site`+`moment` derive it.
 */
sunLux?: number, 
/**
 * intent — sun color temperature in kelvin; absent = the resolver's default.
 */
sunKelvin?: number, 
/**
 * intent — the sky-fill color; absent = the resolver's default.
 */
skyColor?: string, 
/**
 * intent — the ground-fill color; absent = the resolver's default.
 */
groundColor?: string, 
/**
 * intent — sky illuminance in lux; absent = the resolver's default.
 */
skyLux?: number, 
/**
 * intent — image-based lighting; absent = the host's neutral built-in room.
 */
hdri?: EnvironmentHdri, };
// This file was generated by [ts-rs](https://github.com/Aleph-Alpha/ts-rs). Do not edit this file manually.

/**
 * Where the model stands on Earth.
 */
export type Site = { 
/**
 * geometry — degrees north of the equator (WGS84); negative is south.
 */
latitude: number, 
/**
 * geometry — degrees east of Greenwich (WGS84); negative is west.
 */
longitude: number, 
/**
 * intent — compass bearing of the model's +Y axis, degrees clockwise
 * from true north. Absent = 0 (+Y points true north).
 */
northAngle?: number, };
// This file was generated by [ts-rs](https://github.com/Aleph-Alpha/ts-rs). Do not edit this file manually.

/**
 * The moment the sun is computed for — a document FACT, never the wall
 * clock. `hour` is local solar time. A moment carries no year, so February
 * closes at 28 (`crate::document::vocabulary::days_in_month`).
 */
export type SunMoment = { 
/**
 * intent — 1-12.
 */
month: number, 
/**
 * intent — 1-31, clamped to the month's real length (no year, so
 * February always closes at 28).
 */
day: number, 
/**
 * intent — local solar time, 0-24.
 */
hour: number, };
// This file was generated by [ts-rs](https://github.com/Aleph-Alpha/ts-rs). Do not edit this file manually.

/**
 * Image-based lighting. Absent = the host's neutral built-in room. Exactly
 * one of `parameter`/`url` is set (checked post-deserialize,
 * `validate::lanes::environment_errors`) — H6: the old single `name` field
 * told the two apart by sniffing `https:`/`data:`, an implicit pairing.
 */
export type EnvironmentHdri = { 
/**
 * identity — the KEY of a `url`-method parameter (checked at validate).
 */
parameter?: string, 
/**
 * identity — a direct https:/data: address.
 */
url?: string, 
/**
 * intent — absent = the resolver's own default intensity.
 */
intensity?: number, };

settings is plain data, not a chain: no engine_catalog node carries "settings" in its context, so there is no catalog table to generate here.

📖 1 min read