@hypersoniclabs/helix-cli 0.1.27-helix3.548 → 0.1.27-helix3.550

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (45) hide show
  1. package/dist/city/assemble/create.js +7 -1
  2. package/dist/city/assemble/create.js.map +1 -1
  3. package/dist/city/assemble/plan.d.ts +15 -1
  4. package/dist/city/assemble/plan.js +2 -0
  5. package/dist/city/assemble/plan.js.map +1 -1
  6. package/dist/city/assemble/spawn.d.ts +14 -0
  7. package/dist/city/assemble/spawn.js +9 -0
  8. package/dist/city/assemble/spawn.js.map +1 -1
  9. package/dist/city/assemble/terrain.d.ts +7 -0
  10. package/dist/city/assemble/terrain.js +45 -3
  11. package/dist/city/assemble/terrain.js.map +1 -1
  12. package/dist/city/colliders/apply.js +49 -13
  13. package/dist/city/colliders/apply.js.map +1 -1
  14. package/dist/city/colliders/buildingBoxes.d.ts +15 -1
  15. package/dist/city/colliders/buildingBoxes.js +54 -14
  16. package/dist/city/colliders/buildingBoxes.js.map +1 -1
  17. package/dist/city/colliders/command.js +4 -2
  18. package/dist/city/colliders/command.js.map +1 -1
  19. package/dist/city/colliders/deckColliders.d.ts +48 -1
  20. package/dist/city/colliders/deckColliders.js +232 -52
  21. package/dist/city/colliders/deckColliders.js.map +1 -1
  22. package/dist/city/colliders/lips.d.ts +85 -0
  23. package/dist/city/colliders/lips.js +350 -0
  24. package/dist/city/colliders/lips.js.map +1 -0
  25. package/dist/city/vegetation/index.d.ts +3 -0
  26. package/dist/city/vegetation/index.js +3 -1
  27. package/dist/city/vegetation/index.js.map +1 -1
  28. package/dist/tsconfig.build.tsbuildinfo +1 -1
  29. package/docs/scene-create.md +2 -0
  30. package/package.json +2 -2
  31. package/plugins/beamng-vehicle/bin/__pycache__/beamng_abs.cpython-312.pyc +0 -0
  32. package/plugins/beamng-vehicle/bin/__pycache__/beamng_audio.cpython-312.pyc +0 -0
  33. package/plugins/beamng-vehicle/bin/__pycache__/beamng_engine.cpython-312.pyc +0 -0
  34. package/plugins/beamng-vehicle/bin/__pycache__/beamng_expression.cpython-312.pyc +0 -0
  35. package/plugins/beamng-vehicle/bin/__pycache__/beamng_jbeam.cpython-312.pyc +0 -0
  36. package/plugins/beamng-vehicle/bin/__pycache__/beamng_materials.cpython-312.pyc +0 -0
  37. package/plugins/beamng-vehicle/bin/__pycache__/beamng_stock_events.cpython-312.pyc +0 -0
  38. package/plugins/beamng-vehicle/bin/__pycache__/fmod_studio.cpython-312.pyc +0 -0
  39. package/plugins/beamng-vehicle/bin/__pycache__/fsb5.cpython-312.pyc +0 -0
  40. package/plugins/beamng-vehicle/bin/__pycache__/sim_audio.cpython-312.pyc +0 -0
  41. package/plugins/beamng-vehicle/bin/__pycache__/sim_audio_ac.cpython-312.pyc +0 -0
  42. package/plugins/beamng-vehicle/bin/__pycache__/sim_audio_beamng.cpython-312.pyc +0 -0
  43. package/plugins/beamng-vehicle/bin/__pycache__/sim_audio_fixtures.cpython-312.pyc +0 -0
  44. package/plugins/beamng-vehicle/bin/__pycache__/test_beamng_engine.cpython-312.pyc +0 -0
  45. package/plugins/beamng-vehicle/bin/__pycache__/test_sim_audio.cpython-312.pyc +0 -0
@@ -64,6 +64,8 @@ const margin_1 = require("../terrain/margin");
64
64
  /** The activation radius at which a dense city cell stays within the mobile draw-call limit (P06, 150). */
65
65
  exports.MOBILE_STREAM_RADIUS_M = 300;
66
66
  exports.SCENE_REPORT_SCHEMA = 'helix.scene-create-report/1';
67
+ /** No tree stands this close to the spawn: a branch in the first frame is not a place to start. */
68
+ const SPAWN_TREE_CLEAR_M = 12;
67
69
  const slug = (value) => value.toLowerCase().replace(/[^a-z0-9]+/g, '-').replace(/^-+|-+$/g, '') || 'city';
68
70
  async function walkSize(dir) {
69
71
  let bytes = 0, files = 0;
@@ -98,6 +100,10 @@ async function createCityScene(options) {
98
100
  const loaded = await lap('read source', async () => (0, source_2.applyOverrides)(await (0, source_2.readCitySource)(sourceDir)).source);
99
101
  const identity = await (0, source_2.readCitySourceIdentity)(sourceDir);
100
102
  const plan = options.plan ?? (0, plan_1.defaultScenePlan)(sourceDir);
103
+ if (plan.terrain.demEdgeRepair) {
104
+ const repaired = (0, terrain_1.repairDemEdges)(loaded, plan.terrain.demEdgeRepair);
105
+ log(`terrain: repaired ${repaired} border samples of the source DEM`);
106
+ }
101
107
  const sceneId = plan.id ?? `scene.${slug(loaded.manifest.id)}`;
102
108
  const title = plan.title ?? loaded.manifest.id;
103
109
  const tiers = plan.tiers;
@@ -129,7 +135,7 @@ async function createCityScene(options) {
129
135
  props.report.skippedByReason = placedProps.skippedByReason;
130
136
  }
131
137
  const vegetation = plan.vegetation.enabled
132
- ? await lap('vegetation', () => (0, vegetation_1.buildVegetation)(loaded, { dir: (0, node_path_1.join)(work, 'placements'), terrainDir: (0, node_path_1.join)(work, 'terrain'), heightAt: terrain.heightAt, maxTrees: plan.vegetation.maxTrees, streetTrees: plan.vegetation.streetTrees !== false, log, ...(placedProps?.records.length ? { props: placedProps } : {}) }))
138
+ ? await lap('vegetation', () => (0, vegetation_1.buildVegetation)(loaded, { dir: (0, node_path_1.join)(work, 'placements'), terrainDir: (0, node_path_1.join)(work, 'terrain'), heightAt: terrain.heightAt, maxTrees: plan.vegetation.maxTrees, streetTrees: plan.vegetation.streetTrees !== false, log, clearings: [[spawn.position[0], spawn.position[2], plan.spawn?.clearM ?? SPAWN_TREE_CLEAR_M]], ...(placedProps?.records.length ? { props: placedProps } : {}) }))
133
139
  : null;
134
140
  // The ring of ground beyond the bounds (low detail, from the DEM), so the city is not a slab that stops at its bounding box.
135
141
  const marginM = plan.terrain.marginM ?? 0;
@@ -1 +1 @@
1
- {"version":3,"file":"create.js","sourceRoot":"","sources":["../../../src/city/assemble/create.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"create.js","sourceRoot":"","sources":["../../../src/city/assemble/create.ts"],"names":[],"mappings":"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"}
@@ -11,10 +11,21 @@ export interface ScenePlan {
11
11
  id?: string;
12
12
  title?: string;
13
13
  tiers: SceneTierName[];
14
- /** Plan metres; omitted, the nearest street to the densest building cell. */
14
+ /**
15
+ * Plan metres; omitted, the nearest street to the densest building cell. By default the spawn snaps to the nearest street segment and faces along it.
16
+ * `exact` keeps (x, z) where it is; `yawDeg` (rotation about Y; 0 faces -z) or `faceTowards` (a plan point to look at) sets the heading;
17
+ * `clearM` keeps the trees (and nothing else) out of that radius around the spawn (default 12 m).
18
+ */
15
19
  spawn?: {
16
20
  x: number;
17
21
  z: number;
22
+ exact?: boolean;
23
+ yawDeg?: number;
24
+ faceTowards?: {
25
+ x: number;
26
+ z: number;
27
+ };
28
+ clearM?: number;
18
29
  };
19
30
  budgetMiB: Record<SceneTierName, number>;
20
31
  /** Distance groups activate inside this radius (metres). */
@@ -27,11 +38,14 @@ export interface ScenePlan {
27
38
  /**
28
39
  * `marginM`: low-detail ground out to this far beyond the city's bounds, from the DEM (default 4096; 0 leaves the city a slab).
29
40
  * `ground`: `natural` paints the land no area maps (and that lies off every street) as grass and shore sand; `urban` (default) leaves it paved.
41
+ * `demEdgeRepair`: replace the outermost N source DEM samples of every edge by the sample N in when they differ from it by more than 3 m. A
42
+ * Cities: Skylines II height map carries a few samples of bogus land along its border; left in, the coarse layer extrudes them past the map as a hard rectangle.
30
43
  */
31
44
  terrain: {
32
45
  metresPerSample: 1 | 2 | 4;
33
46
  marginM?: number;
34
47
  ground?: 'urban' | 'natural';
48
+ demEdgeRepair?: number;
35
49
  };
36
50
  /** `streetTrees`: plant the sidewalks of ground-level streets by road class and land use (default on). */
37
51
  vegetation: {
@@ -46,6 +46,8 @@ function readScenePlan(file) {
46
46
  throw new Error(`${file}: source.path is required`);
47
47
  if (!merged.tiers?.length || merged.tiers.some((t) => t !== 'desktop' && t !== 'mobile'))
48
48
  throw new Error(`${file}: tiers must list desktop and/or mobile`);
49
+ if (merged.terrain.demEdgeRepair !== undefined && !(Number.isInteger(merged.terrain.demEdgeRepair) && merged.terrain.demEdgeRepair >= 0 && merged.terrain.demEdgeRepair <= 16))
50
+ throw new Error(`${file}: terrain.demEdgeRepair must be an integer from 0 to 16`);
49
51
  if (merged.terrain.ground !== undefined && merged.terrain.ground !== 'urban' && merged.terrain.ground !== 'natural')
50
52
  throw new Error(`${file}: terrain.ground must be urban or natural`);
51
53
  if (![256, 512].includes(merged.buildings.cellM) && ![128, 1024].includes(merged.buildings.cellM))
@@ -1 +1 @@
1
- {"version":3,"file":"plan.js","sourceRoot":"","sources":["../../../src/city/assemble/plan.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"plan.js","sourceRoot":"","sources":["../../../src/city/assemble/plan.ts"],"names":[],"mappings":"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"}
@@ -5,7 +5,21 @@ export interface SpawnPick {
5
5
  rotationYDeg: number;
6
6
  reason: string;
7
7
  }
8
+ /** Rotation about Y (0 faces -z) of a body at `from` looking at `to`. */
9
+ export declare function headingTowards(from: {
10
+ x: number;
11
+ z: number;
12
+ }, to: {
13
+ x: number;
14
+ z: number;
15
+ }): number;
8
16
  export declare function pickSpawn(source: CitySource, buildings: BuildingsManifest, heightAt: (x: number, z: number) => number, given?: {
9
17
  x: number;
10
18
  z: number;
19
+ exact?: boolean;
20
+ yawDeg?: number;
21
+ faceTowards?: {
22
+ x: number;
23
+ z: number;
24
+ };
11
25
  }): SpawnPick;
@@ -1,8 +1,17 @@
1
1
  "use strict";
2
2
  // Where a visitor lands: on a street in the densest building cell, facing along it, a metre above the ground.
3
3
  Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.headingTowards = headingTowards;
4
5
  exports.pickSpawn = pickSpawn;
6
+ /** Rotation about Y (0 faces -z) of a body at `from` looking at `to`. */
7
+ function headingTowards(from, to) {
8
+ return (Math.atan2(-(to.x - from.x), -(to.z - from.z)) * 180) / Math.PI;
9
+ }
5
10
  function pickSpawn(source, buildings, heightAt, given) {
11
+ if (given?.exact) {
12
+ const yaw = given.yawDeg ?? (given.faceTowards ? headingTowards(given, given.faceTowards) : 0);
13
+ return { position: [Number(given.x.toFixed(2)), Number((heightAt(given.x, given.z) + 1).toFixed(2)), Number(given.z.toFixed(2))], rotationYDeg: Number(yaw.toFixed(1)), reason: 'plan spawn (exact)' };
14
+ }
6
15
  const cells = buildings.cells;
7
16
  const densest = [...cells].sort((a, b) => b.buildings - a.buildings || a.iz - b.iz || a.ix - b.ix)[0];
8
17
  const target = given
@@ -1 +1 @@
1
- {"version":3,"file":"spawn.js","sourceRoot":"","sources":["../../../src/city/assemble/spawn.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"spawn.js","sourceRoot":"","sources":["../../../src/city/assemble/spawn.ts"],"names":[],"mappings":"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"}
@@ -35,6 +35,13 @@ export declare function decodeCityDem(source: CitySource): {
35
35
  ox: number;
36
36
  oz: number;
37
37
  } | null;
38
+ /**
39
+ * Replaces the outermost `n` samples of every edge of the source DEM by the sample `n` in wherever they differ from it by more than
40
+ * {@link DEM_EDGE_JUMP_M}. A Cities: Skylines II height map carries a few samples of bogus land along its border (9.8 m of "land" in the
41
+ * sea, 28 to 56 m wide), which the coarse layer's padding then extrudes past the map as a hard rectangle. Edits the raster in place and
42
+ * returns how many samples changed.
43
+ */
44
+ export declare function repairDemEdges(source: CitySource, n: number): number;
38
45
  /** The grid is aligned to the source's `boundsXZ`, which sits on the 256 m city grid, so tiles and building cells nest. */
39
46
  export declare function terrainGridFor(source: CitySource, metresPerSample: number, conformed?: ConformedTerrain | null): HeightGrid;
40
47
  export declare function buildCityTerrain(source: CitySource, dir: string, options?: CityTerrainOptions): Promise<CityTerrainResult>;
@@ -6,6 +6,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.URBAN_TERRAIN_PRESET = void 0;
7
7
  exports.heightSampler = heightSampler;
8
8
  exports.decodeCityDem = decodeCityDem;
9
+ exports.repairDemEdges = repairDemEdges;
9
10
  exports.terrainGridFor = terrainGridFor;
10
11
  exports.buildCityTerrain = buildCityTerrain;
11
12
  const promises_1 = require("node:fs/promises");
@@ -20,11 +21,12 @@ exports.URBAN_TERRAIN_PRESET = (0, presets_1.validateTerrainPreset)({
20
21
  pack: { slug: 'helix-terrain-materials', version: '0.1.0' },
21
22
  preset: 'urban',
22
23
  layers: [
23
- // Pavement and the blocks between streets: concrete, darker than the pack's mean under a high sun (it read as blank white).
24
- { role: 'base', material: 'concrete-pavement', tilingMetres: 4, tint: '#8b8984' },
24
+ // Pavement and the blocks between streets: concrete as the pack ships it. A `tint` multiplies the LINEAR albedo, so the mid grey that
25
+ // used to be here (#8b8984, 0.26 linear) quartered a pack mean that is already dark (0.12 linear) and every plaza, port and lot read near black.
26
+ { role: 'base', material: 'concrete-pavement', tilingMetres: 4 },
25
27
  { role: 'slope', material: 'granite', tilingMetres: 3, triplanar: true },
26
28
  { role: 'low', material: 'sand', tilingMetres: 3, tint: '#bfae92' },
27
- { role: 'cavity', material: 'asphalt', tilingMetres: 4, tint: '#8d8d8b' },
29
+ { role: 'cavity', material: 'asphalt', tilingMetres: 4 },
28
30
  // Parks and pitches: the olive leafy grass, muted. The pack's `grass` is a saturated lime (#61802b) and under tint it blobbed.
29
31
  { role: 'accent', material: 'leafy-grass', tilingMetres: 3, tint: '#9ba483' },
30
32
  ],
@@ -72,6 +74,46 @@ function decodeCityDem(source) {
72
74
  values[i] = lo + (view.getUint16(i * 2, true) / 65535) * (hi - lo);
73
75
  return { values, w, h, mps: meta.metresPerSample, ox: meta.originXZ[0], oz: meta.originXZ[1] };
74
76
  }
77
+ /** A border sample this far (metres) from the sample `n` in counts as bogus land or sea and is replaced by it. */
78
+ const DEM_EDGE_JUMP_M = 3;
79
+ /**
80
+ * Replaces the outermost `n` samples of every edge of the source DEM by the sample `n` in wherever they differ from it by more than
81
+ * {@link DEM_EDGE_JUMP_M}. A Cities: Skylines II height map carries a few samples of bogus land along its border (9.8 m of "land" in the
82
+ * sea, 28 to 56 m wide), which the coarse layer's padding then extrudes past the map as a hard rectangle. Edits the raster in place and
83
+ * returns how many samples changed.
84
+ */
85
+ function repairDemEdges(source, n) {
86
+ const terrain = source.terrain;
87
+ if (!terrain || terrain.kind !== 'dem' || n < 1)
88
+ return 0;
89
+ const { meta, r16 } = terrain.dem;
90
+ const [w, h] = meta.samples;
91
+ if (w <= 2 * n + 1 || h <= 2 * n + 1)
92
+ return 0;
93
+ const view = new DataView(r16.buffer, r16.byteOffset, r16.byteLength);
94
+ const get = (i, j) => view.getUint16((j * w + i) * 2, true);
95
+ const jump = (DEM_EDGE_JUMP_M / Math.max(1e-9, meta.heightRangeM[1] - meta.heightRangeM[0])) * 65535;
96
+ let changed = 0;
97
+ const fix = (i, j, ri, rj) => {
98
+ const ref = get(ri, rj);
99
+ if (Math.abs(get(i, j) - ref) > jump) {
100
+ view.setUint16((j * w + i) * 2, ref, true);
101
+ changed += 1;
102
+ }
103
+ };
104
+ // Read every reference from the untouched interior (sample n in), so the order of the edges does not matter.
105
+ for (let d = 0; d < n; d += 1) {
106
+ for (let j = 0; j < h; j += 1) {
107
+ fix(d, j, n, Math.min(h - 1 - n, Math.max(n, j)));
108
+ fix(w - 1 - d, j, w - 1 - n, Math.min(h - 1 - n, Math.max(n, j)));
109
+ }
110
+ for (let i = 0; i < w; i += 1) {
111
+ fix(i, d, Math.min(w - 1 - n, Math.max(n, i)), n);
112
+ fix(i, h - 1 - d, Math.min(w - 1 - n, Math.max(n, i)), h - 1 - n);
113
+ }
114
+ }
115
+ return changed;
116
+ }
75
117
  /** The conformed raster in the same shape as the decoded source DEM. */
76
118
  function decodeConformed(conformed) {
77
119
  const [w, h] = conformed.meta.samples;
@@ -1 +1 @@
1
- {"version":3,"file":"terrain.js","sourceRoot":"","sources":["../../../src/city/assemble/terrain.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"terrain.js","sourceRoot":"","sources":["../../../src/city/assemble/terrain.ts"],"names":[],"mappings":"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"}
@@ -62,6 +62,17 @@ async function unitBoxGlb() {
62
62
  document.createScene('unit-box').addChild(document.createNode('unit-box').setMesh(mesh));
63
63
  return new core_1.NodeIO().writeBinary(document);
64
64
  }
65
+ /** Whether (x, y, z) lies inside the oriented unit-cube box (position, rotation quaternion, scale). */
66
+ function pointInBox(box, x, y, z) {
67
+ if (x < box.min[0] || x > box.max[0] || y < box.min[1] || y > box.max[1] || z < box.min[2] || z > box.max[2])
68
+ return false;
69
+ const [qx, qy, qz, qw] = box.rotation;
70
+ // Rotate (p - position) by the inverse (conjugate) quaternion.
71
+ const px = x - box.position[0], py = y - box.position[1], pz = z - box.position[2];
72
+ const tx = 2 * (-qy * pz + qz * py), ty = 2 * (-qz * px + qx * pz), tz = 2 * (-qx * py + qy * px);
73
+ const lx = px + qw * tx + (-qy * tz + qz * ty), ly = py + qw * ty + (-qz * tx + qx * tz), lz = pz + qw * tz + (-qx * ty + qy * tx);
74
+ return Math.abs(lx) <= box.scale[0] / 2 && Math.abs(ly) <= box.scale[1] / 2 && Math.abs(lz) <= box.scale[2] / 2;
75
+ }
65
76
  const sha256 = (bytes) => (0, node_crypto_1.createHash)('sha256').update(bytes).digest('hex');
66
77
  const json = (value) => new TextEncoder().encode(JSON.stringify(value));
67
78
  async function pool(items, size, work) {
@@ -81,22 +92,24 @@ async function applyColliders(options) {
81
92
  const files = [];
82
93
  const report = { root: options.rootName, newRoot: options.newRootName, rootRevision: root.revision };
83
94
  let next = root;
95
+ let deckCells = [];
84
96
  if (options.decks.enabled) {
85
- const resources = root.resources.filter((resource) => resource.kind === 'model' || resource.kind === 'collider');
86
- const under = (dir) => resources.map((resource) => resource.source.uri ?? '').filter((uri) => uri.startsWith(dir)).sort();
97
+ const { render, collision, cellOf, setOfCell } = (0, deckColliders_1.indexRoadCells)(root);
87
98
  const roads = {
99
+ cellOf,
88
100
  cellSizeM: options.decks.roadCellM,
89
101
  originX: root.terrain.kind === 'heightfield' ? root.terrain.grid.originX : 0,
90
102
  originZ: root.terrain.kind === 'heightfield' ? root.terrain.grid.originZ : 0,
91
- render: under('roads/render/'),
92
- collision: under('roads/collider/'),
103
+ render,
104
+ collision,
93
105
  read: (path) => source.read(`scene/${options.rootName}/${path}`),
94
106
  };
95
107
  log(`decks: ${roads.render.length} render cells, ${roads.collision.length} collider cells, origin ${roads.originX},${roads.originZ}, cell ${roads.cellSizeM} m`);
96
108
  const { cells, report: deck } = await (0, deckColliders_1.buildDeckColliders)(roads, { ...options.decks, log });
109
+ deckCells = cells;
97
110
  for (const cell of cells)
98
111
  files.push({ path: `scene/${options.newRootName}/roads/${cell.file}`, bytes: cell.bytes });
99
- next = (0, deckColliders_1.patchSceneDeckColliders)(next, cells, 'roads').scene;
112
+ next = (0, deckColliders_1.patchSceneDeckColliders)(next, cells, 'roads', (cx, cz) => setOfCell.get(`${cx},${cz}`)).scene;
100
113
  report.decks = deck;
101
114
  }
102
115
  if (options.buildings.enabled) {
@@ -130,19 +143,42 @@ async function applyColliders(options) {
130
143
  const unitSha = sha256(unit);
131
144
  const unitUri = `colliders/unit-box.${unitSha.slice(0, 16)}.glb`;
132
145
  const planOptions = { ...buildingBoxes_1.DEFAULT_BUILDING_COLLIDER_OPTIONS, ...options.buildings };
146
+ // Inline, the root's own sets (roads, decks) share the 256-set cap with the buildings'.
147
+ if (planOptions.inline)
148
+ planOptions.maxSets = Math.min(planOptions.maxSets, 252 - next.collision.sets.length);
133
149
  const { boxes, stats } = (0, buildingBoxes_1.planBuildingBoxes)(parts, planOptions);
134
150
  const { scene: childUnsealed, stats: sets } = (0, buildingBoxes_1.buildColliderScene)(boxes, {
135
151
  ...planOptions, unitBox: { sha256: unitSha, bytes: unit.length, uri: unitUri }, adapters: root.adapters,
136
152
  });
137
153
  const child = (0, buildingBoxes_1.sealScene)(childUnsealed);
138
- const checked = (0, helix_manifest_1.validateSceneDocument)(child);
139
- if (!checked.valid)
140
- throw new Error(`the collider child does not validate: ${checked.errors.slice(0, 5).join('; ')}`);
141
- const childBytes = json(child);
142
- files.push({ path: `scene/${child.integrity.sha256}/scene.helix-scene.json`, bytes: childBytes });
143
- files.push({ path: `scene/${child.integrity.sha256}/${unitUri}`, bytes: unit });
144
- next = (0, buildingBoxes_1.mountColliderChild)(next, child);
145
- report.buildings = { ...stats, ...sets, childSha256: child.integrity.sha256, childBytes: childBytes.length, unitBox: buildingBoxes_1.UNIT_BOX_RESOURCE_ID, streamRadiusM: planOptions.streamRadiusM };
154
+ if (planOptions.inline) {
155
+ files.push({ path: `scene/${options.newRootName}/${unitUri}`, bytes: unit });
156
+ next = (0, buildingBoxes_1.inlineColliderChild)(next, child);
157
+ report.buildings = { ...stats, ...sets, inline: true, rootCollisionSets: next.collision.sets.length, unitBox: buildingBoxes_1.UNIT_BOX_RESOURCE_ID, streamRadiusM: planOptions.streamRadiusM };
158
+ }
159
+ else {
160
+ const checked = (0, helix_manifest_1.validateSceneDocument)(child);
161
+ if (!checked.valid)
162
+ throw new Error(`the collider child does not validate: ${checked.errors.slice(0, 5).join('; ')}`);
163
+ const childBytes = json(child);
164
+ files.push({ path: `scene/${child.integrity.sha256}/scene.helix-scene.json`, bytes: childBytes });
165
+ files.push({ path: `scene/${child.integrity.sha256}/${unitUri}`, bytes: unit });
166
+ next = (0, buildingBoxes_1.mountColliderChild)(next, child);
167
+ report.buildings = { ...stats, ...sets, childSha256: child.integrity.sha256, childBytes: childBytes.length, unitBox: buildingBoxes_1.UNIT_BOX_RESOURCE_ID, streamRadiusM: planOptions.streamRadiusM };
168
+ }
169
+ // The lips are ramps at the foot of kerbs and deck edges: none may sit inside a building's box.
170
+ if (deckCells.length > 0) {
171
+ const inside = (x, y, z) => boxes.some((box) => pointInBox(box, x, y, z));
172
+ let lipTrianglesInBuildings = 0, checkedLips = 0;
173
+ for (const cell of deckCells)
174
+ for (let at = 0; at < cell.lipVertices.length; at += 9) {
175
+ const v = cell.lipVertices;
176
+ checkedLips += 1;
177
+ if (inside((v[at] + v[at + 3] + v[at + 6]) / 3, (v[at + 1] + v[at + 4] + v[at + 7]) / 3, (v[at + 2] + v[at + 5] + v[at + 8]) / 3))
178
+ lipTrianglesInBuildings += 1;
179
+ }
180
+ report.decks.lipTrianglesInsideBuildingBoxes = { checked: checkedLips, inside: lipTrianglesInBuildings };
181
+ }
146
182
  }
147
183
  next = (0, buildingBoxes_1.sealScene)(next);
148
184
  const checked = (0, helix_manifest_1.validateSceneDocument)(next);
@@ -1 +1 @@
1
- {"version":3,"file":"apply.js","sourceRoot":"","sources":["../../../src/city/colliders/apply.ts"],"names":[],"mappings":";AAAA,sHAAsH;AACtH,EAAE;AACF,yGAAyG;AACzG,uGAAuG;AACvG,EAAE;AACF,2HAA2H;AAC3H,uHAAuH;AACvH,gIAAgI;AAChI,qGAAqG;;AAmBrG,oCAmBC;AAGD,gCAaC;AA+BD,wCA+EC;AAED,gCAMC;AA1KD,+CAA8D;AAC9D,yCAA0C;AAC1C,6CAAyC;AACzC,+CAAwD;AACxD,mEAA0F;AAC1F,2CAAmD;AACnD,mDAGyB;AACzB,mDAA6H;AAO7H,SAAgB,YAAY,CAAC,IAAY;IACvC,IAAI,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QAC9B,MAAM,GAAG,GAAG,CAAC,IAAY,EAAU,EAAE,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC;QAC3E,MAAM,OAAO,GAAG,EAAE,YAAY,EAAE,uBAAuB,EAAE,CAAC;QAC1D,MAAM,GAAG,GAAG,KAAK,EAAE,IAAY,EAAE,QAAgC,EAAE,EAAuB,EAAE;YAC1F,KAAK,IAAI,OAAO,GAAG,CAAC,GAAI,OAAO,IAAI,CAAC,EAAE,CAAC;gBACrC,IAAI,CAAC;oBACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,OAAO,EAAE,EAAE,GAAG,OAAO,EAAE,GAAG,KAAK,EAAE,EAAE,CAAC,CAAC;oBAC/E,IAAI,CAAC,QAAQ,CAAC,EAAE,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG;wBAAE,MAAM,IAAI,KAAK,CAAC,GAAG,QAAQ,CAAC,MAAM,IAAI,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;oBAChG,OAAO,IAAI,UAAU,CAAC,MAAM,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAC;gBACtD,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBAAC,IAAI,OAAO,IAAI,CAAC;wBAAE,MAAM,KAAK,CAAC;oBAAC,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;gBAAC,CAAC;YAClH,CAAC;QACH,CAAC,CAAC;QACF,OAAO,EAAE,IAAI,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,SAAS,MAAM,IAAI,MAAM,GAAG,MAAM,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;IAC5I,CAAC;IACD,OAAO;QACL,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,UAAU,CAAC,MAAM,IAAA,mBAAQ,EAAC,IAAA,gBAAI,EAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;QACtE,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,CAAC,IAAI,UAAU,CAAC,CAAC,MAAM,IAAA,mBAAQ,EAAC,IAAA,gBAAI,EAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,CAAC;KAChI,CAAC;AACJ,CAAC;AAED,yGAAyG;AAClG,KAAK,UAAU,UAAU;IAC9B,MAAM,QAAQ,GAAG,IAAI,eAAQ,EAAE,CAAC;IAChC,MAAM,MAAM,GAAG,QAAQ,CAAC,YAAY,EAAE,CAAC;IACvC,MAAM,CAAC,GAAG,GAAG,CAAC;IACd,MAAM,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAC5H,mCAAmC;IACnC,MAAM,KAAK,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IACnG,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IACpE,MAAM,QAAQ,GAAG,QAAQ,CAAC,cAAc,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,IAAI,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IACjH,MAAM,KAAK,GAAG,QAAQ,CAAC,cAAc,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,IAAI,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IAC/G,MAAM,IAAI,GAAG,QAAQ,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,YAAY,CAAC,QAAQ,CAAC,eAAe,EAAE,CAAC,YAAY,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC;IAC3I,QAAQ,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;IACzF,OAAO,IAAI,aAAM,EAAE,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;AAC5C,CAAC;AAmBD,MAAM,MAAM,GAAG,CAAC,KAAiB,EAAU,EAAE,CAAC,IAAA,wBAAU,EAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC/F,MAAM,IAAI,GAAG,CAAC,KAAc,EAAc,EAAE,CAAC,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;AAE7F,KAAK,UAAU,IAAI,CAAO,KAAmB,EAAE,IAAY,EAAE,IAA6B;IACxF,MAAM,GAAG,GAAG,IAAI,KAAK,CAAI,KAAK,CAAC,MAAM,CAAC,CAAC;IACvC,IAAI,IAAI,GAAG,CAAC,CAAC;IACb,MAAM,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,IAAI,EAAE;QAChF,KAAK,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,EAAE,GAAG,KAAK,CAAC,MAAM,EAAE,EAAE,GAAG,IAAI,EAAE;YAAE,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;IACxF,CAAC,CAAC,CAAC,CAAC;IACJ,OAAO,GAAG,CAAC;AACb,CAAC;AAEM,KAAK,UAAU,cAAc,CAAC,OAAqB;IACxD,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC;IAChC,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,IAAI,EAAE,CAAC;IAC9C,MAAM,QAAQ,GAAG,SAAS,OAAO,CAAC,QAAQ,yBAAyB,CAAC;IACpE,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,MAAM,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAiB,CAAC;IAC/F,MAAM,KAAK,GAAyB,EAAE,CAAC;IACvC,MAAM,MAAM,GAA4B,EAAE,IAAI,EAAE,OAAO,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,CAAC,WAAW,EAAE,YAAY,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC;IAC9H,IAAI,IAAI,GAAiB,IAAI,CAAC;IAE9B,IAAI,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;QAC1B,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,KAAK,OAAO,IAAI,QAAQ,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC;QACjH,MAAM,KAAK,GAAG,CAAC,GAAW,EAAY,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAE,QAAQ,CAAC,MAA2B,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QAClK,MAAM,KAAK,GAAmB;YAC5B,SAAS,EAAE,OAAO,CAAC,KAAK,CAAC,SAAS;YAClC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,KAAK,aAAa,CAAC,CAAC,CAAE,IAAI,CAAC,OAAyC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;YAC/G,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,KAAK,aAAa,CAAC,CAAC,CAAE,IAAI,CAAC,OAAyC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;YAC/G,MAAM,EAAE,KAAK,CAAC,eAAe,CAAC;YAC9B,SAAS,EAAE,KAAK,CAAC,iBAAiB,CAAC;YACnC,IAAI,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,OAAO,CAAC,QAAQ,IAAI,IAAI,EAAE,CAAC;SACjE,CAAC;QACF,GAAG,CAAC,UAAU,KAAK,CAAC,MAAM,CAAC,MAAM,kBAAkB,KAAK,CAAC,SAAS,CAAC,MAAM,2BAA2B,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,OAAO,UAAU,KAAK,CAAC,SAAS,IAAI,CAAC,CAAC;QACjK,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAA,kCAAkB,EAAC,KAAK,EAAE,EAAE,GAAG,OAAO,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;QAC3F,KAAK,MAAM,IAAI,IAAI,KAAK;YAAE,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,SAAS,OAAO,CAAC,WAAW,UAAU,IAAI,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;QACrH,IAAI,GAAG,IAAA,uCAAuB,EAAC,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC,KAAK,CAAC;QAC3D,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC;IACtB,CAAC;IAED,IAAI,OAAO,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;QAC9B,MAAM,QAAQ,GAAG,CAAC,IAAI,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC;QAC3D,MAAM,KAAK,GAA6D,EAAE,CAAC;QAC3E,MAAM,WAAW,GAAG,IAAI,GAAG,EAAgB,CAAC;QAC5C,KAAK,MAAM,KAAK,IAAI,QAAQ,EAAE,CAAC;YAC7B,MAAM,MAAM,GAAG,SAAS,KAAK,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC;YACjD,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,MAAM,MAAM,CAAC,IAAI,CAAC,GAAG,MAAM,yBAAyB,CAAC,CAAC,CAAiB,CAAC;YACzH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,aAAa,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,QAAS,CAAC,CAAC;YAClJ,MAAM,WAAW,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;YACzC,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,EAAE,EAAE,QAAQ,CAAU,CAAC,CAAC,CAAC;YACzF,MAAM,MAAM,GAAG,IAAI,GAAG,EAAgB,CAAC;YACvC,MAAM,IAAI,CAAC,WAAW,EAAE,WAAW,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE;gBAChD,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;gBAC9B,MAAM,GAAG,GAAI,QAAQ,EAAE,MAAuC,EAAE,GAAG,CAAC;gBACpE,IAAI,CAAC,QAAQ,IAAI,CAAC,GAAG,IAAI,QAAQ,CAAC,IAAI,KAAK,OAAO;oBAAE,OAAO;gBAC3D,MAAM,GAAG,GAAG,GAAG,QAAQ,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC;gBAC3C,IAAI,GAAG,GAAG,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;gBAC/B,IAAI,CAAC,GAAG,EAAE,CAAC;oBAAC,GAAG,GAAG,MAAM,IAAA,qBAAS,EAAC,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,MAAM,IAAI,GAAG,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;oBAAC,WAAW,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;gBAAC,CAAC;gBACzI,MAAM,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;YACtB,CAAC,CAAC,CAAC;YACH,GAAG,CAAC,oBAAoB,KAAK,CAAC,EAAE,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,WAAW,MAAM,CAAC,IAAI,IAAI,WAAW,CAAC,MAAM,eAAe,CAAC,CAAC;YACrH,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;QAC/B,CAAC;QACD,MAAM,IAAI,GAAG,MAAM,UAAU,EAAE,CAAC;QAChC,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;QAC7B,MAAM,OAAO,GAAG,sBAAsB,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC;QACjE,MAAM,WAAW,GAAG,EAAE,GAAG,iDAAiC,EAAE,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;QACnF,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,IAAA,iCAAiB,EAAC,KAAK,EAAE,WAAW,CAAC,CAAC;QAC/D,MAAM,EAAE,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,IAAA,kCAAkB,EAAC,KAAK,EAAE;YACtE,GAAG,WAAW,EAAE,OAAO,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ;SACxG,CAAC,CAAC;QACH,MAAM,KAAK,GAAG,IAAA,yBAAS,EAAC,aAAa,CAAC,CAAC;QACvC,MAAM,OAAO,GAAG,IAAA,sCAAqB,EAAC,KAAK,CAAC,CAAC;QAC7C,IAAI,CAAC,OAAO,CAAC,KAAK;YAAE,MAAM,IAAI,KAAK,CAAC,yCAAyC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACtH,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;QAC/B,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,SAAS,KAAK,CAAC,SAAS,CAAC,MAAM,yBAAyB,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC,CAAC;QAClG,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,SAAS,KAAK,CAAC,SAAS,CAAC,MAAM,IAAI,OAAO,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QAChF,IAAI,GAAG,IAAA,kCAAkB,EAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QACvC,MAAM,CAAC,SAAS,GAAG,EAAE,GAAG,KAAK,EAAE,GAAG,IAAI,EAAE,WAAW,EAAE,KAAK,CAAC,SAAS,CAAC,MAAM,EAAE,UAAU,EAAE,UAAU,CAAC,MAAM,EAAE,OAAO,EAAE,oCAAoB,EAAE,aAAa,EAAE,WAAW,CAAC,aAAa,EAAE,CAAC;IACxL,CAAC;IAED,IAAI,GAAG,IAAA,yBAAS,EAAC,IAAI,CAAC,CAAC;IACvB,MAAM,OAAO,GAAG,IAAA,sCAAqB,EAAC,IAAI,CAAC,CAAC;IAC5C,IAAI,CAAC,OAAO,CAAC,KAAK;QAAE,MAAM,IAAI,KAAK,CAAC,uCAAuC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACpH,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;IAC7B,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,SAAS,OAAO,CAAC,WAAW,yBAAyB,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;IAC9F,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,MAAM,MAAM,CAAC,IAAI,CAAC,SAAS,OAAO,CAAC,QAAQ,WAAW,CAAC,CAAC,CAA4B,CAAC;IACxI,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,SAAS,OAAO,CAAC,WAAW,WAAW,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,GAAG,MAAM,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,SAAS,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC;IACjK,MAAM,CAAC,eAAe,GAAG,IAAI,CAAC,QAAQ,CAAC;IACvC,MAAM,CAAC,aAAa,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;IAC7C,MAAM,CAAC,YAAY,GAAG,SAAS,CAAC,MAAM,CAAC;IACvC,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;AAC3B,CAAC;AAEM,KAAK,UAAU,UAAU,CAAC,GAAW,EAAE,KAA2B;IACvE,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,MAAM,GAAG,IAAA,gBAAI,EAAC,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QACpC,MAAM,IAAA,gBAAK,EAAC,IAAA,mBAAO,EAAC,MAAM,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAClD,MAAM,IAAA,oBAAS,EAAC,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IACtC,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"apply.js","sourceRoot":"","sources":["../../../src/city/colliders/apply.ts"],"names":[],"mappings":"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"}
@@ -11,6 +11,8 @@ export interface BuildingColliderOptions {
11
11
  /** Models smaller than this (footprint m2, or height m) are props, not buildings, and are left non-solid. */
12
12
  minFootprintM2: number;
13
13
  minHeightM: number;
14
+ /** Collider sets the root may still take (see `inline`); the child Scene itself is capped by `maxSets`. */
15
+ inline?: boolean;
14
16
  /** The unit cube collider resource, already hashed and addressed by the caller. */
15
17
  unitBox: {
16
18
  sha256: string;
@@ -26,6 +28,8 @@ export declare const DEFAULT_BUILDING_COLLIDER_OPTIONS: Readonly<{
26
28
  streamRadiusM: 120;
27
29
  buildingsPerBlock: 60;
28
30
  maxSets: 240;
31
+ /** Put the building collision sets in the root document instead of a mounted child Scene (a document near its memory cap cannot afford another mount). */
32
+ inline: false;
29
33
  minFootprintM2: 4;
30
34
  minHeightM: 2;
31
35
  }>;
@@ -49,7 +53,11 @@ export interface BoxPlanStats {
49
53
  }
50
54
  /** The box of one placed model: the node's transform applied to the model's local AABB. */
51
55
  export declare function boxOfNode(node: SceneNode, bounds: Box3, id: string): PlannedBox;
52
- /** Median-split the boxes on the longer horizontal side until each block holds at most `perBlock`. */
56
+ /** The scene perf gate (P05) refuses a streamed cell wider than 1,024 m, so a block never spans more than one cell of this grid. */
57
+ export declare const BLOCK_CELL_M = 800;
58
+ /** What a block's boxes (their whole extent, not their centres) may span. */
59
+ export declare const MAX_BLOCK_EXTENT_M = 1000;
60
+ /** Buckets the boxes into a 1 km grid (so no block is wider than the gate allows, however sparse the land), then median-splits each bucket on its longer side until each block holds at most `perBlock`. */
53
61
  export declare function splitBlocks(boxes: readonly PlannedBox[], perBlock: number): PlannedBox[][];
54
62
  export declare function planBuildingBoxes(parts: ReadonlyArray<{
55
63
  part: HelixSceneV2;
@@ -69,3 +77,9 @@ export declare function sealScene<T extends HelixSceneV2>(scene: T): T;
69
77
  * (so it is resident whenever the city is), and the group's declared memory. Returns a new, resealed root.
70
78
  */
71
79
  export declare function mountColliderChild(root: HelixSceneV2, child: HelixSceneV2, budgetMiB?: number): HelixSceneV2;
80
+ /**
81
+ * The same collision sets, nodes and groups as `mountColliderChild`, but written into the root document itself: no mount, so no
82
+ * 32 MiB mount commitment (a phone document sits within 20 MiB of its 192 MiB cap). The unit box rides in the root's own folder.
83
+ * Throws when the root's collision sets plus the child's would pass the 256-set document cap.
84
+ */
85
+ export declare function inlineColliderChild(root: HelixSceneV2, child: HelixSceneV2): HelixSceneV2;