@hypersoniclabs/helix-cli 0.1.27-helix3.572 → 0.1.27-helix3.574

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 (33) hide show
  1. package/dist/city/colliders/apply.d.ts +0 -2
  2. package/dist/city/colliders/apply.js +7 -29
  3. package/dist/city/colliders/apply.js.map +1 -1
  4. package/dist/city/colliders/blockMesh.d.ts +14 -0
  5. package/dist/city/colliders/blockMesh.js +92 -0
  6. package/dist/city/colliders/blockMesh.js.map +1 -0
  7. package/dist/city/colliders/buildingBoxes.d.ts +7 -7
  8. package/dist/city/colliders/buildingBoxes.js +19 -13
  9. package/dist/city/colliders/buildingBoxes.js.map +1 -1
  10. package/dist/city/convert/canonicalDocs.d.ts +13 -0
  11. package/dist/city/convert/canonicalDocs.js +40 -0
  12. package/dist/city/convert/canonicalDocs.js.map +1 -0
  13. package/dist/city/convert/optimizations.js +2 -1
  14. package/dist/city/convert/optimizations.js.map +1 -1
  15. package/dist/city/convert/stages.js +18 -1
  16. package/dist/city/convert/stages.js.map +1 -1
  17. package/dist/tsconfig.build.tsbuildinfo +1 -1
  18. package/package.json +1 -1
  19. package/plugins/beamng-vehicle/bin/__pycache__/beamng_abs.cpython-312.pyc +0 -0
  20. package/plugins/beamng-vehicle/bin/__pycache__/beamng_audio.cpython-312.pyc +0 -0
  21. package/plugins/beamng-vehicle/bin/__pycache__/beamng_engine.cpython-312.pyc +0 -0
  22. package/plugins/beamng-vehicle/bin/__pycache__/beamng_expression.cpython-312.pyc +0 -0
  23. package/plugins/beamng-vehicle/bin/__pycache__/beamng_jbeam.cpython-312.pyc +0 -0
  24. package/plugins/beamng-vehicle/bin/__pycache__/beamng_materials.cpython-312.pyc +0 -0
  25. package/plugins/beamng-vehicle/bin/__pycache__/beamng_stock_events.cpython-312.pyc +0 -0
  26. package/plugins/beamng-vehicle/bin/__pycache__/fmod_studio.cpython-312.pyc +0 -0
  27. package/plugins/beamng-vehicle/bin/__pycache__/fsb5.cpython-312.pyc +0 -0
  28. package/plugins/beamng-vehicle/bin/__pycache__/sim_audio.cpython-312.pyc +0 -0
  29. package/plugins/beamng-vehicle/bin/__pycache__/sim_audio_ac.cpython-312.pyc +0 -0
  30. package/plugins/beamng-vehicle/bin/__pycache__/sim_audio_beamng.cpython-312.pyc +0 -0
  31. package/plugins/beamng-vehicle/bin/__pycache__/sim_audio_fixtures.cpython-312.pyc +0 -0
  32. package/plugins/beamng-vehicle/bin/__pycache__/test_beamng_engine.cpython-312.pyc +0 -0
  33. package/plugins/beamng-vehicle/bin/__pycache__/test_sim_audio.cpython-312.pyc +0 -0
@@ -5,8 +5,6 @@ export interface PrefixSource {
5
5
  readRange(path: string, offset: number, length: number): Promise<Uint8Array>;
6
6
  }
7
7
  export declare function prefixSource(base: string): PrefixSource;
8
- /** A 1 m unit cube centred on the origin: the one mesh every building box scales, rotates and places. */
9
- export declare function unitBoxGlb(): Promise<Uint8Array>;
10
8
  export interface ApplyOptions {
11
9
  source: PrefixSource;
12
10
  /** The root's folder name under `scene/`. */
@@ -10,13 +10,10 @@
10
10
  // relative paths, so uploading --out next to a copy of the old root folder is the whole publication.
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
12
  exports.prefixSource = prefixSource;
13
- exports.unitBoxGlb = unitBoxGlb;
14
13
  exports.applyColliders = applyColliders;
15
14
  exports.writeFiles = writeFiles;
16
15
  const promises_1 = require("node:fs/promises");
17
16
  const node_path_1 = require("node:path");
18
- const node_crypto_1 = require("node:crypto");
19
- const core_1 = require("@gltf-transform/core");
20
17
  const helix_manifest_1 = require("@hypersoniclabs/helix-manifest");
21
18
  const glbBounds_1 = require("./glbBounds");
22
19
  const buildingBoxes_1 = require("./buildingBoxes");
@@ -47,21 +44,6 @@ function prefixSource(base) {
47
44
  readRange: async (path, offset, length) => new Uint8Array((await (0, promises_1.readFile)((0, node_path_1.join)(base, path))).subarray(offset, offset + length)),
48
45
  };
49
46
  }
50
- /** A 1 m unit cube centred on the origin: the one mesh every building box scales, rotates and places. */
51
- async function unitBoxGlb() {
52
- const document = new core_1.Document();
53
- const buffer = document.createBuffer();
54
- const h = 0.5;
55
- const corners = [[-h, -h, -h], [h, -h, -h], [h, h, -h], [-h, h, -h], [-h, -h, h], [h, -h, h], [h, h, h], [-h, h, h]].flat();
56
- // Counter-clockwise outward faces.
57
- const quads = [[0, 3, 2, 1], [4, 5, 6, 7], [0, 1, 5, 4], [3, 7, 6, 2], [0, 4, 7, 3], [1, 2, 6, 5]];
58
- const indices = quads.flatMap(([a, b, c, d]) => [a, b, c, a, c, d]);
59
- const position = document.createAccessor().setType('VEC3').setArray(new Float32Array(corners)).setBuffer(buffer);
60
- const index = document.createAccessor().setType('SCALAR').setArray(new Uint16Array(indices)).setBuffer(buffer);
61
- const mesh = document.createMesh('unit-box').addPrimitive(document.createPrimitive().setAttribute('POSITION', position).setIndices(index));
62
- document.createScene('unit-box').addChild(document.createNode('unit-box').setMesh(mesh));
63
- return new core_1.NodeIO().writeBinary(document);
64
- }
65
47
  /** Whether (x, y, z) lies inside the oriented unit-cube box (position, rotation quaternion, scale). */
66
48
  function pointInBox(box, x, y, z) {
67
49
  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])
@@ -73,7 +55,6 @@ function pointInBox(box, x, y, z) {
73
55
  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
56
  return Math.abs(lx) <= box.scale[0] / 2 && Math.abs(ly) <= box.scale[1] / 2 && Math.abs(lz) <= box.scale[2] / 2;
75
57
  }
76
- const sha256 = (bytes) => (0, node_crypto_1.createHash)('sha256').update(bytes).digest('hex');
77
58
  const json = (value) => new TextEncoder().encode(JSON.stringify(value));
78
59
  async function pool(items, size, work) {
79
60
  const out = new Array(items.length);
@@ -139,23 +120,19 @@ async function applyColliders(options) {
139
120
  log(`buildings: mount ${mount.id} -> ${part.nodes.length} nodes, ${bounds.size}/${resourceIds.length} model bounds`);
140
121
  parts.push({ part, bounds });
141
122
  }
142
- const unit = await unitBoxGlb();
143
- const unitSha = sha256(unit);
144
- const unitUri = `colliders/unit-box.${unitSha.slice(0, 16)}.glb`;
145
123
  const planOptions = { ...buildingBoxes_1.DEFAULT_BUILDING_COLLIDER_OPTIONS, ...options.buildings };
146
124
  // Inline, the root's own sets (roads, decks) share the 256-set cap with the buildings'.
147
125
  // Each set is also a stream group, and a scene holds at most 512 of those (the roots mounts add one): the roads' groups count too.
148
126
  if (planOptions.inline)
149
127
  planOptions.maxSets = Math.min(planOptions.maxSets, 252 - next.collision.sets.length, 510 - next.streamGroups.length);
150
128
  const { boxes, stats } = (0, buildingBoxes_1.planBuildingBoxes)(parts, planOptions);
151
- const { scene: childUnsealed, stats: sets } = (0, buildingBoxes_1.buildColliderScene)(boxes, {
152
- ...planOptions, unitBox: { sha256: unitSha, bytes: unit.length, uri: unitUri }, adapters: root.adapters,
153
- });
129
+ const { scene: childUnsealed, stats: sets, files: blockFiles } = (0, buildingBoxes_1.buildColliderScene)(boxes, { ...planOptions, adapters: root.adapters });
154
130
  const child = (0, buildingBoxes_1.sealScene)(childUnsealed);
155
131
  if (planOptions.inline) {
156
- files.push({ path: `scene/${options.newRootName}/${unitUri}`, bytes: unit });
132
+ for (const block of blockFiles)
133
+ files.push({ path: `scene/${options.newRootName}/${block.uri}`, bytes: block.bytes });
157
134
  next = (0, buildingBoxes_1.inlineColliderChild)(next, child);
158
- report.buildings = { ...stats, ...sets, inline: true, rootCollisionSets: next.collision.sets.length, unitBox: buildingBoxes_1.UNIT_BOX_RESOURCE_ID, streamRadiusM: planOptions.streamRadiusM };
135
+ report.buildings = { ...stats, ...sets, inline: true, rootCollisionSets: next.collision.sets.length, blockFiles: blockFiles.length, streamRadiusM: planOptions.streamRadiusM };
159
136
  }
160
137
  else {
161
138
  const checked = (0, helix_manifest_1.validateSceneDocument)(child);
@@ -163,9 +140,10 @@ async function applyColliders(options) {
163
140
  throw new Error(`the collider child does not validate: ${checked.errors.slice(0, 5).join('; ')}`);
164
141
  const childBytes = json(child);
165
142
  files.push({ path: `scene/${child.integrity.sha256}/scene.helix-scene.json`, bytes: childBytes });
166
- files.push({ path: `scene/${child.integrity.sha256}/${unitUri}`, bytes: unit });
143
+ for (const block of blockFiles)
144
+ files.push({ path: `scene/${child.integrity.sha256}/${block.uri}`, bytes: block.bytes });
167
145
  next = (0, buildingBoxes_1.mountColliderChild)(next, child);
168
- report.buildings = { ...stats, ...sets, childSha256: child.integrity.sha256, childBytes: childBytes.length, unitBox: buildingBoxes_1.UNIT_BOX_RESOURCE_ID, streamRadiusM: planOptions.streamRadiusM };
146
+ report.buildings = { ...stats, ...sets, childSha256: child.integrity.sha256, childBytes: childBytes.length, blockFiles: blockFiles.length, streamRadiusM: planOptions.streamRadiusM };
169
147
  }
170
148
  // The lips are ramps at the foot of kerbs and deck edges: none may sit inside a building's box.
171
149
  if (deckCells.length > 0) {
@@ -1 +1 @@
1
- {"version":3,"file":"apply.js","sourceRoot":"","sources":["../../../src/city/colliders/apply.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"apply.js","sourceRoot":"","sources":["../../../src/city/colliders/apply.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ import type { PlannedBox } from './buildingBoxes';
2
+ export interface BlockMesh {
3
+ /** World-space vertices, 8 per box. */
4
+ positions: Float32Array;
5
+ /** 12 triangles per box. */
6
+ indices: Uint16Array | Uint32Array;
7
+ min: [number, number, number];
8
+ max: [number, number, number];
9
+ }
10
+ /** The boxes as one indexed triangle mesh in world coordinates (the box transform baked in). */
11
+ export declare function blockMesh(boxes: readonly PlannedBox[]): BlockMesh;
12
+ /** A minimal, deterministic GLB 2.0: one mesh, one triangle primitive, POSITION + indices, no material, no extensions. */
13
+ export declare function blockMeshGlb(mesh: BlockMesh): Uint8Array;
14
+ export declare const sha256Hex: (bytes: Uint8Array) => string;
@@ -0,0 +1,92 @@
1
+ "use strict";
2
+ // One merged triangle mesh per collision block: the oriented boxes of ~60 buildings written as a single GLB in world coordinates.
3
+ //
4
+ // Why a block is ONE collider and not sixty: Rapier 0.14 rebuilds its query BVH over every collider on every `world.step`
5
+ // (cost linear in the resident collider count, measured 0.52 ms per step for 1,500 colliders against 0.02 ms for the same boxes
6
+ // merged per block, native Rapier wasm). A root-inline building box set sits under the root profile's 1 km stream radius, which
7
+ // holds ~1,500 boxes around a dense downtown, and the character world, the shared world and every substep pay that each frame.
8
+ // The engine already turned each former `convex` unit box into its own 12-triangle trimesh, so merging changes the collider
9
+ // count, not what the character can touch.
10
+ Object.defineProperty(exports, "__esModule", { value: true });
11
+ exports.sha256Hex = void 0;
12
+ exports.blockMesh = blockMesh;
13
+ exports.blockMeshGlb = blockMeshGlb;
14
+ const node_crypto_1 = require("node:crypto");
15
+ /** Counter-clockwise outward quads of a cube whose corners run (-,-,-) (+,-,-) (+,+,-) (-,+,-) (-,-,+) (+,-,+) (+,+,+) (-,+,+). */
16
+ const QUADS = [[0, 3, 2, 1], [4, 5, 6, 7], [0, 1, 5, 4], [3, 7, 6, 2], [0, 4, 7, 3], [1, 2, 6, 5]];
17
+ const CORNERS = [[-1, -1, -1], [1, -1, -1], [1, 1, -1], [-1, 1, -1], [-1, -1, 1], [1, -1, 1], [1, 1, 1], [-1, 1, 1]];
18
+ function rotate(q, v) {
19
+ const [x, y, z, w] = q;
20
+ const tx = 2 * (y * v[2] - z * v[1]);
21
+ const ty = 2 * (z * v[0] - x * v[2]);
22
+ const tz = 2 * (x * v[1] - y * v[0]);
23
+ return [v[0] + w * tx + (y * tz - z * ty), v[1] + w * ty + (z * tx - x * tz), v[2] + w * tz + (x * ty - y * tx)];
24
+ }
25
+ /** The boxes as one indexed triangle mesh in world coordinates (the box transform baked in). */
26
+ function blockMesh(boxes) {
27
+ const positions = new Float32Array(boxes.length * 8 * 3);
28
+ const wide = boxes.length * 8 > 0xffff;
29
+ const indices = wide ? new Uint32Array(boxes.length * 36) : new Uint16Array(boxes.length * 36);
30
+ const min = [Infinity, Infinity, Infinity];
31
+ const max = [-Infinity, -Infinity, -Infinity];
32
+ boxes.forEach((box, b) => {
33
+ CORNERS.forEach((corner, c) => {
34
+ const local = rotate(box.rotation, [corner[0] * box.scale[0] / 2, corner[1] * box.scale[1] / 2, corner[2] * box.scale[2] / 2]);
35
+ for (let axis = 0; axis < 3; axis += 1) {
36
+ const value = Math.fround(box.position[axis] + local[axis]);
37
+ positions[(b * 8 + c) * 3 + axis] = value;
38
+ if (value < min[axis])
39
+ min[axis] = value;
40
+ if (value > max[axis])
41
+ max[axis] = value;
42
+ }
43
+ });
44
+ let at = b * 36;
45
+ for (const [a, q, r, s] of QUADS)
46
+ for (const index of [a, q, r, a, r, s])
47
+ indices[at++] = b * 8 + index;
48
+ });
49
+ return { positions, indices, min, max };
50
+ }
51
+ const pad4 = (n) => (n + 3) & ~3;
52
+ /** A minimal, deterministic GLB 2.0: one mesh, one triangle primitive, POSITION + indices, no material, no extensions. */
53
+ function blockMeshGlb(mesh) {
54
+ const positionBytes = mesh.positions.byteLength;
55
+ const indexBytes = mesh.indices.byteLength;
56
+ const indexOffset = pad4(positionBytes);
57
+ const binLength = pad4(indexOffset + indexBytes);
58
+ const json = {
59
+ asset: { version: '2.0', generator: 'helix city colliders' },
60
+ scene: 0, scenes: [{ nodes: [0] }], nodes: [{ mesh: 0, name: 'building-blocks' }],
61
+ meshes: [{ name: 'building-blocks', primitives: [{ attributes: { POSITION: 0 }, indices: 1, mode: 4 }] }],
62
+ accessors: [
63
+ { bufferView: 0, componentType: 5126, count: mesh.positions.length / 3, type: 'VEC3', min: mesh.min, max: mesh.max },
64
+ { bufferView: 1, componentType: mesh.indices instanceof Uint32Array ? 5125 : 5123, count: mesh.indices.length, type: 'SCALAR' },
65
+ ],
66
+ bufferViews: [
67
+ { buffer: 0, byteOffset: 0, byteLength: positionBytes, target: 34962 },
68
+ { buffer: 0, byteOffset: indexOffset, byteLength: indexBytes, target: 34963 },
69
+ ],
70
+ buffers: [{ byteLength: binLength }],
71
+ };
72
+ const jsonBytes = new TextEncoder().encode(JSON.stringify(json));
73
+ const jsonLength = pad4(jsonBytes.length);
74
+ const out = new Uint8Array(12 + 8 + jsonLength + 8 + binLength);
75
+ const view = new DataView(out.buffer);
76
+ view.setUint32(0, 0x46546c67, true);
77
+ view.setUint32(4, 2, true);
78
+ view.setUint32(8, out.length, true);
79
+ view.setUint32(12, jsonLength, true);
80
+ view.setUint32(16, 0x4e4f534a, true);
81
+ out.set(jsonBytes, 20);
82
+ out.fill(0x20, 20 + jsonBytes.length, 20 + jsonLength);
83
+ const bin = 20 + jsonLength;
84
+ view.setUint32(bin, binLength, true);
85
+ view.setUint32(bin + 4, 0x004e4942, true);
86
+ out.set(new Uint8Array(mesh.positions.buffer, mesh.positions.byteOffset, positionBytes), bin + 8);
87
+ out.set(new Uint8Array(mesh.indices.buffer, mesh.indices.byteOffset, indexBytes), bin + 8 + indexOffset);
88
+ return out;
89
+ }
90
+ const sha256Hex = (bytes) => (0, node_crypto_1.createHash)('sha256').update(bytes).digest('hex');
91
+ exports.sha256Hex = sha256Hex;
92
+ //# sourceMappingURL=blockMesh.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"blockMesh.js","sourceRoot":"","sources":["../../../src/city/colliders/blockMesh.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,6 @@
1
1
  import type { HelixSceneV2, SceneNode } from '@hypersoniclabs/helix-manifest';
2
2
  import type { Box3 } from './glbBounds';
3
3
  export declare const COLLIDER_CHILD_ID = "scene.city.building-colliders";
4
- export declare const UNIT_BOX_RESOURCE_ID = "res.collider.unit-box";
5
4
  export interface BuildingColliderOptions {
6
5
  /** Metres around the player within which colliders are resident (the child's `streamRadiusM`). */
7
6
  streamRadiusM: number;
@@ -13,12 +12,6 @@ export interface BuildingColliderOptions {
13
12
  minHeightM: number;
14
13
  /** Collider sets the root may still take (see `inline`); the child Scene itself is capped by `maxSets`. */
15
14
  inline?: boolean;
16
- /** The unit cube collider resource, already hashed and addressed by the caller. */
17
- unitBox: {
18
- sha256: string;
19
- bytes: number;
20
- uri: string;
21
- };
22
15
  adapters: HelixSceneV2['adapters'];
23
16
  title?: string;
24
17
  /** Skip instances whose resource id starts with one of these (e.g. trees) - rarely needed; models carry the filter in their bounds. */
@@ -66,9 +59,16 @@ export declare function planBuildingBoxes(parts: ReadonlyArray<{
66
59
  boxes: PlannedBox[];
67
60
  stats: Pick<BoxPlanStats, 'instances' | 'boxes' | 'skippedSmall' | 'skippedNoBounds'>;
68
61
  };
62
+ /** A block's merged GLB, addressed by the path it is written under (relative to the folder that holds the Scene document). */
63
+ export interface BlockFile {
64
+ uri: string;
65
+ bytes: Uint8Array;
66
+ sha256: string;
67
+ }
69
68
  export declare function buildColliderScene(boxes: readonly PlannedBox[], options: BuildingColliderOptions): {
70
69
  scene: HelixSceneV2;
71
70
  stats: BoxPlanStats;
71
+ files: BlockFile[];
72
72
  };
73
73
  /** The sealing order every Scene v2 builder uses: revision = first 16 hex of the digest with revision and integrity zeroed. */
74
74
  export declare function sealScene<T extends HelixSceneV2>(scene: T): T;
@@ -6,10 +6,11 @@
6
6
  // (colliders live 120 m around the player) is decoupled from the visual one (a kilometre of skyline) and phone memory and CPU
7
7
  // stay flat however large the city is. Colliders are streamed in spatial blocks of ~60 buildings.
8
8
  //
9
- // A box is a `convex` collider over one shared unit-cube collider resource with a per-collider transform
10
- // (position, rotation, scale), so a building is ~150 bytes of JSON and no per-building geometry exists anywhere.
9
+ // A block is ONE `triangle-mesh` collider over one merged GLB of its buildings' oriented boxes (blockMesh.ts), not one collider per
10
+ // building: the physics world rebuilds its query BVH over every resident collider on every step, so the resident COLLIDER count
11
+ // (not the triangle count) is what a dense downtown pays each frame. A block of 60 boxes is 720 triangles and ~15 KB.
11
12
  Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.MAX_BLOCK_EXTENT_M = exports.BLOCK_CELL_M = exports.DEFAULT_BUILDING_COLLIDER_OPTIONS = exports.UNIT_BOX_RESOURCE_ID = exports.COLLIDER_CHILD_ID = void 0;
13
+ exports.MAX_BLOCK_EXTENT_M = exports.BLOCK_CELL_M = exports.DEFAULT_BUILDING_COLLIDER_OPTIONS = exports.COLLIDER_CHILD_ID = void 0;
13
14
  exports.boxOfNode = boxOfNode;
14
15
  exports.splitBlocks = splitBlocks;
15
16
  exports.planBuildingBoxes = planBuildingBoxes;
@@ -18,8 +19,8 @@ exports.sealScene = sealScene;
18
19
  exports.mountColliderChild = mountColliderChild;
19
20
  exports.inlineColliderChild = inlineColliderChild;
20
21
  const helix_manifest_1 = require("@hypersoniclabs/helix-manifest");
22
+ const blockMesh_1 = require("./blockMesh");
21
23
  exports.COLLIDER_CHILD_ID = 'scene.city.building-colliders';
22
- exports.UNIT_BOX_RESOURCE_ID = 'res.collider.unit-box';
23
24
  exports.DEFAULT_BUILDING_COLLIDER_OPTIONS = Object.freeze({
24
25
  streamRadiusM: 120,
25
26
  buildingsPerBlock: 60,
@@ -147,6 +148,8 @@ function buildColliderScene(boxes, options) {
147
148
  const nodes = [];
148
149
  const groups = [];
149
150
  const sets = [];
151
+ const resources = [];
152
+ const files = [];
150
153
  let lo = [Infinity, Infinity, Infinity];
151
154
  let hi = [-Infinity, -Infinity, -Infinity];
152
155
  blocks.forEach((block, index) => {
@@ -165,12 +168,18 @@ function buildColliderScene(boxes, options) {
165
168
  id: group, mode: 'distance', priority: 50, dependencies: [], estimatedMemoryMiB: 1,
166
169
  cells: [{ id: `bc.c.${index}`, bounds: { min: bmin.map((v) => round(v, 2)), max: bmax.map((v) => round(v, 2)) }, nodes: [node] }],
167
170
  });
171
+ const bytes = (0, blockMesh_1.blockMeshGlb)((0, blockMesh_1.blockMesh)(block));
172
+ const sha256 = (0, blockMesh_1.sha256Hex)(bytes);
173
+ const resource = `res.collider.block.${index}`;
174
+ const uri = `colliders/block-${index}.${sha256.slice(0, 16)}.glb`;
175
+ files.push({ uri, bytes, sha256 });
176
+ resources.push({
177
+ id: resource, kind: 'collider', source: { kind: 'bundle', assetId: `colliders:building-block:${sha256}`, uri },
178
+ integrity: { sha256 }, bytes: bytes.length, mimeType: 'model/gltf-binary', required: true,
179
+ });
168
180
  sets.push({
169
181
  id: set, node,
170
- static: block.map((box) => ({
171
- id: `bc.${box.id}`, shape: 'convex', resource: exports.UNIT_BOX_RESOURCE_ID,
172
- transform: { position: box.position, rotation: box.rotation, scale: box.scale },
173
- })),
182
+ static: [{ id: `bc.block.${index}`, shape: 'triangle-mesh', resource, transform: { ...IDENTITY } }],
174
183
  });
175
184
  });
176
185
  if (!blocks.length)
@@ -187,10 +196,7 @@ function buildColliderScene(boxes, options) {
187
196
  },
188
197
  },
189
198
  scenes: [{ id: 'scene.root', nodes: nodes.map((node) => node.id), streamGroups: groups.map((group) => group.id) }],
190
- resources: [{
191
- id: exports.UNIT_BOX_RESOURCE_ID, kind: 'collider', source: { kind: 'bundle', assetId: `colliders:unit-box:${options.unitBox.sha256}`, uri: options.unitBox.uri },
192
- integrity: { sha256: options.unitBox.sha256 }, bytes: options.unitBox.bytes, mimeType: 'model/gltf-binary', required: true,
193
- }],
199
+ resources,
194
200
  nodes, itemDefinitions: [], itemInstances: [], terrain: { kind: 'none' },
195
201
  environment: { background: false, intensityScale: 1, rotationYDeg: 0, exposureEV100: 0, fallbackColor: '#20242b', required: false },
196
202
  lights: [],
@@ -201,7 +207,7 @@ function buildColliderScene(boxes, options) {
201
207
  surfaces: [], materials: [], behaviors: [], streamGroups: groups,
202
208
  capabilities: { required: ['helix.scene-collision/1'], optional: [] }, runtimeExtensions: [], adapters: options.adapters,
203
209
  };
204
- return { scene, stats: { instances: boxes.length, boxes: boxes.length, skippedSmall: 0, skippedNoBounds: 0, sets: sets.length, maxPerSet: Math.max(...blocks.map((block) => block.length)) } };
210
+ return { scene, stats: { instances: boxes.length, boxes: boxes.length, skippedSmall: 0, skippedNoBounds: 0, sets: sets.length, maxPerSet: Math.max(...blocks.map((block) => block.length)) }, files };
205
211
  }
206
212
  /** The sealing order every Scene v2 builder uses: revision = first 16 hex of the digest with revision and integrity zeroed. */
207
213
  function sealScene(scene) {
@@ -1 +1 @@
1
- {"version":3,"file":"buildingBoxes.js","sourceRoot":"","sources":["../../../src/city/colliders/buildingBoxes.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"buildingBoxes.js","sourceRoot":"","sources":["../../../src/city/colliders/buildingBoxes.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ export interface CanonicalDocsResult {
2
+ documents: number;
3
+ rewritten: number;
4
+ /** Documents whose own integrity did not match their content; left byte-for-byte alone. */
5
+ mismatched: string[];
6
+ }
7
+ /**
8
+ * Rewrite every sealed Scene document as its RFC 8785 text (sorted keys, no whitespace, no trailing newline). The integrity digest is
9
+ * defined over exactly those bytes minus the integrity member, so the engine can verify a document with one hash over the text it already
10
+ * holds instead of parsing, validating and re-canonicalising it (about 2.8 s of main thread on a phone for a city). The digest, and every
11
+ * mount that names a child by it, is unchanged: only the layout of the bytes changes.
12
+ */
13
+ export declare function canonicaliseSceneDocuments(root: string): CanonicalDocsResult;
@@ -0,0 +1,40 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.canonicaliseSceneDocuments = canonicaliseSceneDocuments;
4
+ const node_fs_1 = require("node:fs");
5
+ const node_path_1 = require("node:path");
6
+ const helix_manifest_1 = require("@hypersoniclabs/helix-manifest");
7
+ function* sceneDocuments(dir) {
8
+ for (const name of (0, node_fs_1.readdirSync)(dir)) {
9
+ const path = (0, node_path_1.join)(dir, name);
10
+ if ((0, node_fs_1.statSync)(path).isDirectory())
11
+ yield* sceneDocuments(path);
12
+ else if (name === 'scene.helix-scene.json')
13
+ yield path;
14
+ }
15
+ }
16
+ /**
17
+ * Rewrite every sealed Scene document as its RFC 8785 text (sorted keys, no whitespace, no trailing newline). The integrity digest is
18
+ * defined over exactly those bytes minus the integrity member, so the engine can verify a document with one hash over the text it already
19
+ * holds instead of parsing, validating and re-canonicalising it (about 2.8 s of main thread on a phone for a city). The digest, and every
20
+ * mount that names a child by it, is unchanged: only the layout of the bytes changes.
21
+ */
22
+ function canonicaliseSceneDocuments(root) {
23
+ const result = { documents: 0, rewritten: 0, mismatched: [] };
24
+ for (const path of sceneDocuments(root)) {
25
+ result.documents += 1;
26
+ const text = (0, node_fs_1.readFileSync)(path, 'utf8');
27
+ const doc = JSON.parse(text);
28
+ if ((0, helix_manifest_1.computeSceneDocumentIntegrity)(doc) !== doc.integrity?.sha256) {
29
+ result.mismatched.push(path);
30
+ continue;
31
+ }
32
+ const canonical = (0, helix_manifest_1.canonicalJsonString)(doc);
33
+ if (canonical === text)
34
+ continue;
35
+ (0, node_fs_1.writeFileSync)(path, canonical);
36
+ result.rewritten += 1;
37
+ }
38
+ return result;
39
+ }
40
+ //# sourceMappingURL=canonicalDocs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"canonicalDocs.js","sourceRoot":"","sources":["../../../src/city/convert/canonicalDocs.ts"],"names":[],"mappings":";;AAyBA,gEAaC;AAtCD,qCAA6E;AAC7E,yCAAiC;AACjC,mEAAoG;AASpG,QAAQ,CAAC,CAAC,cAAc,CAAC,GAAW;IAClC,KAAK,MAAM,IAAI,IAAI,IAAA,qBAAW,EAAC,GAAG,CAAC,EAAE,CAAC;QACpC,MAAM,IAAI,GAAG,IAAA,gBAAI,EAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QAC7B,IAAI,IAAA,kBAAQ,EAAC,IAAI,CAAC,CAAC,WAAW,EAAE;YAAE,KAAK,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;aACzD,IAAI,IAAI,KAAK,wBAAwB;YAAE,MAAM,IAAI,CAAC;IACzD,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,SAAgB,0BAA0B,CAAC,IAAY;IACrD,MAAM,MAAM,GAAwB,EAAE,SAAS,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC;IACnF,KAAK,MAAM,IAAI,IAAI,cAAc,CAAC,IAAI,CAAC,EAAE,CAAC;QACxC,MAAM,CAAC,SAAS,IAAI,CAAC,CAAC;QACtB,MAAM,IAAI,GAAG,IAAA,sBAAY,EAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QACxC,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAwC,CAAC;QACpE,IAAI,IAAA,8CAA6B,EAAC,GAAG,CAAC,KAAK,GAAG,CAAC,SAAS,EAAE,MAAM,EAAE,CAAC;YAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAAC,SAAS;QAAC,CAAC;QAC7G,MAAM,SAAS,GAAG,IAAA,oCAAmB,EAAC,GAAG,CAAC,CAAC;QAC3C,IAAI,SAAS,KAAK,IAAI;YAAE,SAAS;QACjC,IAAA,uBAAa,EAAC,IAAI,EAAE,SAAS,CAAC,CAAC;QAC/B,MAAM,CAAC,SAAS,IAAI,CAAC,CAAC;IACxB,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -35,8 +35,9 @@ exports.OPTIMIZATIONS = [
35
35
  { id: 'hlod.complete-bake', title: 'Complete HLOD over every part: the whole skyline is always drawn', ref: 'creator-cli #477 #485', stage: 'bake' },
36
36
  { id: 'compose.tier-roots', title: 'Per-tier World root mounting the baked parts (desktop 128 m near, phone 48 m near / 384 m stream)', ref: 'creator-cli #485', stage: 'compose' },
37
37
  { id: 'colliders.decks', roads: 'generated-roads', title: 'Collider cells for elevated decks, ramps and rails', ref: 'creator-cli #478', stage: 'colliders' },
38
- { id: 'colliders.building-boxes', title: 'One collision box per building, inline in the root', ref: 'creator-cli #478 #488', stage: 'colliders' },
38
+ { id: 'colliders.building-boxes', title: 'Building boxes merged into one collider per block, inline in the root (the physics step pays per resident collider)', ref: 'creator-cli #478 #488', stage: 'colliders' },
39
39
  { id: 'colliders.lips', roads: 'generated-roads', title: 'Kerb and deck-seam lips bevelled so wheels roll up', ref: 'creator-cli #487', stage: 'colliders' },
40
+ { id: 'publish.canonical-scene-text', title: 'Scene documents sealed as canonical (RFC 8785) text so the engine verifies each with one hash instead of parse, validate and re-canonicalise (about 2.8 s of phone main thread)', ref: 'engine sealedText / creator-cli canonical-docs', stage: 'canonical-docs' },
40
41
  { id: 'sea.ocean-bathymetry', title: 'Ocean bathymetry file (ocean.json + ocean.rgba): visual ocean, fly-landing guard and swim reset know the sea', ref: 'creator-cli #491', stage: 'world-data' },
41
42
  { id: 'visuals.derived-lighting', title: 'Per-map lighting (scene-visuals/<scene>.json): fog from the map extent, sun latitude, exposure compensation', ref: 'creator-cli #491', stage: 'world-data' },
42
43
  { id: 'publish.world-json', title: 'world.json names the desktop and phone documents; the shell boots a city from data, not source', ref: 'engine #1171', stage: 'world-data' },
@@ -1 +1 @@
1
- {"version":3,"file":"optimizations.js","sourceRoot":"","sources":["../../../src/city/convert/optimizations.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"optimizations.js","sourceRoot":"","sources":["../../../src/city/convert/optimizations.ts"],"names":[],"mappings":";AAAA,6HAA6H;AAC7H,iIAAiI;AACjI,gIAAgI;;;AAQnH,QAAA,aAAa,GAA4B;IACpD,EAAE,EAAE,EAAE,wBAAwB,EAAE,KAAK,EAAE,gDAAgD,EAAE,GAAG,EAAE,kBAAkB,EAAE,KAAK,EAAE,QAAQ,EAAE;IACnI,EAAE,EAAE,EAAE,sBAAsB,EAAE,KAAK,EAAE,gEAAgE,EAAE,GAAG,EAAE,kBAAkB,EAAE,KAAK,EAAE,QAAQ,EAAE;IACjJ,EAAE,EAAE,EAAE,6BAA6B,EAAE,KAAK,EAAE,+EAA+E,EAAE,GAAG,EAAE,kBAAkB,EAAE,KAAK,EAAE,QAAQ,EAAE;IACvK,EAAE,EAAE,EAAE,oBAAoB,EAAE,KAAK,EAAE,qGAAqG,EAAE,GAAG,EAAE,oBAAoB,EAAE,KAAK,EAAE,OAAO,EAAE;IACrL,EAAE,EAAE,EAAE,+BAA+B,EAAE,KAAK,EAAE,8CAA8C,EAAE,GAAG,EAAE,kBAAkB,EAAE,KAAK,EAAE,WAAW,EAAE;IAC3I,EAAE,EAAE,EAAE,iCAAiC,EAAE,KAAK,EAAE,kEAAkE,EAAE,GAAG,EAAE,kBAAkB,EAAE,KAAK,EAAE,aAAa,EAAE;IACnK,EAAE,EAAE,EAAE,wBAAwB,EAAE,KAAK,EAAE,qEAAqE,EAAE,GAAG,EAAE,kBAAkB,EAAE,KAAK,EAAE,WAAW,EAAE;IAC3J,EAAE,EAAE,EAAE,yBAAyB,EAAE,KAAK,EAAE,kDAAkD,EAAE,GAAG,EAAE,kBAAkB,EAAE,KAAK,EAAE,WAAW,EAAE;IACzI,EAAE,EAAE,EAAE,6BAA6B,EAAE,KAAK,EAAE,wEAAwE,EAAE,GAAG,EAAE,sCAAsC,EAAE,KAAK,EAAE,WAAW,EAAE;IACvL,EAAE,EAAE,EAAE,8BAA8B,EAAE,KAAK,EAAE,6DAA6D,EAAE,GAAG,EAAE,oBAAoB,EAAE,KAAK,EAAE,WAAW,EAAE;IAC3J,EAAE,EAAE,EAAE,kBAAkB,EAAE,KAAK,EAAE,yDAAyD,EAAE,GAAG,EAAE,kBAAkB,EAAE,KAAK,EAAE,WAAW,EAAE;IACzI,EAAE,EAAE,EAAE,6BAA6B,EAAE,KAAK,EAAE,8FAA8F,EAAE,GAAG,EAAE,4BAA4B,EAAE,KAAK,EAAE,WAAW,EAAE;IACnM,EAAE,EAAE,EAAE,2BAA2B,EAAE,KAAK,EAAE,4JAA4J,EAAE,GAAG,EAAE,WAAW,EAAE,KAAK,EAAE,WAAW,EAAE;IAC9O,EAAE,EAAE,EAAE,kBAAkB,EAAE,KAAK,EAAE,4DAA4D,EAAE,GAAG,EAAE,4BAA4B,EAAE,KAAK,EAAE,WAAW,EAAE;IACtJ,EAAE,EAAE,EAAE,iBAAiB,EAAE,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,iRAAiR,EAAE,GAAG,EAAE,WAAW,EAAE,KAAK,EAAE,aAAa,EAAE;IACjX,EAAE,EAAE,EAAE,iBAAiB,EAAE,KAAK,EAAE,iBAAiB,EAAE,KAAK,EAAE,0GAA0G,EAAE,GAAG,EAAE,4BAA4B,EAAE,KAAK,EAAE,WAAW,EAAE;IAC7N,EAAE,EAAE,EAAE,kBAAkB,EAAE,KAAK,EAAE,iBAAiB,EAAE,KAAK,EAAE,gNAAgN,EAAE,GAAG,EAAE,wDAAwD,EAAE,KAAK,EAAE,WAAW,EAAE;IAChW,EAAE,EAAE,EAAE,iBAAiB,EAAE,KAAK,EAAE,8IAA8I,EAAE,GAAG,EAAE,uBAAuB,EAAE,KAAK,EAAE,WAAW,EAAE;IAClO,EAAE,EAAE,EAAE,iBAAiB,EAAE,KAAK,EAAE,sGAAsG,EAAE,GAAG,EAAE,uBAAuB,EAAE,KAAK,EAAE,WAAW,EAAE;IAC1L,EAAE,EAAE,EAAE,0BAA0B,EAAE,KAAK,EAAE,iBAAiB,EAAE,KAAK,EAAE,6EAA6E,EAAE,GAAG,EAAE,uBAAuB,EAAE,KAAK,EAAE,WAAW,EAAE;IACpM,EAAE,EAAE,EAAE,8BAA8B,EAAE,KAAK,EAAE,0FAA0F,EAAE,GAAG,EAAE,kBAAkB,EAAE,KAAK,EAAE,YAAY,EAAE;IACvL,EAAE,EAAE,EAAE,0BAA0B,EAAE,KAAK,EAAE,sHAAsH,EAAE,GAAG,EAAE,4BAA4B,EAAE,KAAK,EAAE,YAAY,EAAE;IACzN,EAAE,EAAE,EAAE,qBAAqB,EAAE,KAAK,EAAE,4MAA4M,EAAE,GAAG,EAAE,iDAAiD,EAAE,KAAK,EAAE,YAAY,EAAE;IAC/T,EAAE,EAAE,EAAE,4BAA4B,EAAE,KAAK,EAAE,yOAAyO,EAAE,GAAG,EAAE,sFAAsF,EAAE,KAAK,EAAE,YAAY,EAAE;IACxY,EAAE,EAAE,EAAE,gCAAgC,EAAE,KAAK,EAAE,qJAAqJ,EAAE,GAAG,EAAE,6BAA6B,EAAE,KAAK,EAAE,YAAY,EAAE;IAC/P,EAAE,EAAE,EAAE,oBAAoB,EAAE,KAAK,EAAE,wGAAwG,EAAE,GAAG,EAAE,kCAAkC,EAAE,KAAK,EAAE,YAAY,EAAE;IAC3M,EAAE,EAAE,EAAE,qBAAqB,EAAE,KAAK,EAAE,oGAAoG,EAAE,GAAG,EAAE,uBAAuB,EAAE,KAAK,EAAE,OAAO,EAAE;IACxL,EAAE,EAAE,EAAE,oBAAoB,EAAE,KAAK,EAAE,kEAAkE,EAAE,GAAG,EAAE,uBAAuB,EAAE,KAAK,EAAE,MAAM,EAAE;IACpJ,EAAE,EAAE,EAAE,oBAAoB,EAAE,KAAK,EAAE,mGAAmG,EAAE,GAAG,EAAE,kBAAkB,EAAE,KAAK,EAAE,SAAS,EAAE;IACnL,EAAE,EAAE,EAAE,iBAAiB,EAAE,KAAK,EAAE,iBAAiB,EAAE,KAAK,EAAE,oDAAoD,EAAE,GAAG,EAAE,kBAAkB,EAAE,KAAK,EAAE,WAAW,EAAE;IAC7J,EAAE,EAAE,EAAE,0BAA0B,EAAE,KAAK,EAAE,qHAAqH,EAAE,GAAG,EAAE,uBAAuB,EAAE,KAAK,EAAE,WAAW,EAAE;IAClN,EAAE,EAAE,EAAE,gBAAgB,EAAE,KAAK,EAAE,iBAAiB,EAAE,KAAK,EAAE,oDAAoD,EAAE,GAAG,EAAE,kBAAkB,EAAE,KAAK,EAAE,WAAW,EAAE;IAC5J,EAAE,EAAE,EAAE,8BAA8B,EAAE,KAAK,EAAE,iLAAiL,EAAE,GAAG,EAAE,gDAAgD,EAAE,KAAK,EAAE,gBAAgB,EAAE;IAChT,EAAE,EAAE,EAAE,sBAAsB,EAAE,KAAK,EAAE,8GAA8G,EAAE,GAAG,EAAE,kBAAkB,EAAE,KAAK,EAAE,YAAY,EAAE;IACnM,EAAE,EAAE,EAAE,0BAA0B,EAAE,KAAK,EAAE,6GAA6G,EAAE,GAAG,EAAE,kBAAkB,EAAE,KAAK,EAAE,YAAY,EAAE;IACtM,EAAE,EAAE,EAAE,oBAAoB,EAAE,KAAK,EAAE,gGAAgG,EAAE,GAAG,EAAE,cAAc,EAAE,KAAK,EAAE,YAAY,EAAE;IAC/K,EAAE,EAAE,EAAE,sBAAsB,EAAE,KAAK,EAAE,6LAA6L,EAAE,GAAG,EAAE,gBAAgB,EAAE,KAAK,EAAE,YAAY,EAAE;IAChR,EAAE,EAAE,EAAE,sBAAsB,EAAE,KAAK,EAAE,qFAAqF,EAAE,GAAG,EAAE,kBAAkB,EAAE,KAAK,EAAE,UAAU,EAAE;IACxK,EAAE,EAAE,EAAE,uBAAuB,EAAE,KAAK,EAAE,oNAAoN,EAAE,GAAG,EAAE,sCAAsC,EAAE,KAAK,EAAE,eAAe,EAAE;IACjU,EAAE,EAAE,EAAE,wBAAwB,EAAE,KAAK,EAAE,6IAA6I,EAAE,GAAG,EAAE,sCAAsC,EAAE,KAAK,EAAE,gBAAgB,EAAE;IAC5P,EAAE,EAAE,EAAE,gBAAgB,EAAE,KAAK,EAAE,yGAAyG,EAAE,GAAG,EAAE,oBAAoB,EAAE,KAAK,EAAE,QAAQ,EAAE;IACtL,EAAE,EAAE,EAAE,mBAAmB,EAAE,KAAK,EAAE,4KAA4K,EAAE,GAAG,EAAE,gBAAgB,EAAE,KAAK,EAAE,QAAQ,EAAE;IACxP,EAAE,EAAE,EAAE,qBAAqB,EAAE,KAAK,EAAE,+HAA+H,EAAE,GAAG,EAAE,gBAAgB,EAAE,KAAK,EAAE,OAAO,EAAE;CAC7M,CAAC;AAEF,uHAAuH;AAC1G,QAAA,mBAAmB,GAAsB,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;AAQ7D,QAAA,SAAS,GAAuB;IAC3C;QACE,EAAE,EAAE,0BAA0B;QAC9B,KAAK,EAAE,wFAAwF;QAC/F,GAAG,EAAE,4eAA4e;QACjf,KAAK,EAAE,qHAAqH;QAC5H,QAAQ,EAAE,sNAAsN;KACjO;IACD;QACE,EAAE,EAAE,wBAAwB;QAC5B,KAAK,EAAE,sHAAsH;QAC7H,GAAG,EAAE,6gBAA6gB;QAClhB,KAAK,EAAE,yUAAyU;QAChV,QAAQ,EAAE,yJAAyJ;KACpK;IACD;QACE,EAAE,EAAE,uCAAuC;QAC3C,KAAK,EAAE,+EAA+E;QACtF,GAAG,EAAE,waAAwa;QAC7a,KAAK,EAAE,8RAA8R;QACrS,QAAQ,EAAE,qKAAqK;KAChL;CACF,CAAC;AAEK,MAAM,gBAAgB,GAAG,CAAC,EAAU,EAAgB,EAAE;IAC3D,MAAM,KAAK,GAAG,qBAAa,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;IACrD,IAAI,CAAC,KAAK;QAAE,MAAM,IAAI,KAAK,CAAC,yBAAyB,EAAE,GAAG,CAAC,CAAC;IAC5D,OAAO,KAAK,CAAC;AACf,CAAC,CAAC;AAJW,QAAA,gBAAgB,oBAI3B"}