1
0

California gets roads, traffic, and a car to follow

This commit is contained in:
2026-08-11 18:24:53 -07:00
parent 9c9e78f6f9
commit fe58290728
43 changed files with 5593 additions and 68 deletions
+33
View File
@@ -255,6 +255,37 @@ export interface Pin {
blurb?: string;
}
/**
* A small, map-scale building drawn in place of a pin.
*
* This is deliberately a glyph rather than an architectural model. A city is
* normally viewed from kilometres away, so loading a façade kit with one mesh
* per window buys triangles nobody can see and gives up the one-draw-call city
* that `blocks.ts` works hard to preserve. The glyph keeps the useful grammar
* — a ground floor, repeated bays, a roof line and a deterministic silhouette
* — and expresses it in a handful of procedural meshes.
*
* Metres are used here because these values describe a real building even
* though the city scene does not: `World` converts horizontal metres with
* `metresPerUnit` and vertical metres with the city's exaggeration.
*/
export interface BuildingGlyph {
kind: "building";
width: number;
depth: number;
height: number;
/** Approximate occupied floors; used to choose the façade rhythm. */
storeys: number;
/** Compass bearing of local Z, degrees clockwise from true north. */
heading: number;
/** The silhouette family, not a tenant or product category. */
profile: "tower" | "hangar" | "courtyard" | "block";
/** Stable variation for bay widths and lit panes. */
seed?: number;
/** Neutral shell colour. The marker palette still supplies the door/accent. */
bodyColor?: number;
}
/** A `Pin` placed on a city, in degrees. */
export interface Marker extends Pin {
lat: number;
@@ -265,6 +296,8 @@ export interface Marker extends Pin {
* is that it is real is worse than admitting the gap.
*/
located?: boolean;
/** Optional map-scale representation. Omit it for the ordinary pin. */
glyph?: BuildingGlyph;
}
/** Caller-supplied `colorKey` -> colour. */