@hypersoniclabs/helix-cli 0.1.27-helix3.545 → 0.1.27-helix3.547

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/compose.d.ts +3 -0
  2. package/dist/city/assemble/compose.js +51 -15
  3. package/dist/city/assemble/compose.js.map +1 -1
  4. package/dist/city/assemble/create.js +5 -0
  5. package/dist/city/assemble/create.js.map +1 -1
  6. package/dist/city/assemble/sea.d.ts +13 -0
  7. package/dist/city/assemble/sea.js +34 -0
  8. package/dist/city/assemble/sea.js.map +1 -0
  9. package/dist/cs2/convert/buildingCompose.d.ts +55 -0
  10. package/dist/cs2/convert/buildingCompose.js +137 -0
  11. package/dist/cs2/convert/buildingCompose.js.map +1 -0
  12. package/dist/cs2/convert/buildingMeshCommand.d.ts +17 -0
  13. package/dist/cs2/convert/buildingMeshCommand.js +160 -0
  14. package/dist/cs2/convert/buildingMeshCommand.js.map +1 -0
  15. package/dist/cs2/convert/buildingParts.d.ts +60 -0
  16. package/dist/cs2/convert/buildingParts.js +281 -0
  17. package/dist/cs2/convert/buildingParts.js.map +1 -0
  18. package/dist/cs2/convert/buildingPrototypes.d.ts +121 -0
  19. package/dist/cs2/convert/buildingPrototypes.js +519 -0
  20. package/dist/cs2/convert/buildingPrototypes.js.map +1 -0
  21. package/dist/index.js +2 -0
  22. package/dist/index.js.map +1 -1
  23. package/dist/sceneHlod/basisEncoder.d.ts +9 -0
  24. package/dist/sceneHlod/basisEncoder.js +38 -0
  25. package/dist/sceneHlod/basisEncoder.js.map +1 -1
  26. package/dist/sceneHlod/cellArtifact.js +5 -2
  27. package/dist/sceneHlod/cellArtifact.js.map +1 -1
  28. package/dist/tsconfig.build.tsbuildinfo +1 -1
  29. package/docs/scene-create.md +2 -1
  30. package/package.json +1 -1
  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
@@ -2,6 +2,7 @@ import { type HelixSceneV2, type SceneBounds } from '@hypersoniclabs/helix-manif
2
2
  import type { BuildingsManifest, CellEntry, FarEntry } from '../buildings';
3
3
  import type { RoadCell } from '../roads';
4
4
  import type { BundleFile, PackagedCityLibrary } from './materials';
5
+ import { type CitySea } from './sea';
5
6
  export declare const CITY_HLOD_LAYER = "buildings";
6
7
  /** P10: terrain collision must reach this far where streets are drivable and walkable. */
7
8
  export declare const ROAD_TERRAIN_COLLIDER_RADIUS_M = 256;
@@ -24,6 +25,8 @@ export interface ComposeInput {
24
25
  bounds: SceneBounds;
25
26
  triangles: number;
26
27
  };
28
+ /** The open sea the source declares (`citySeaFromWater`): one `water.sea` box over the terrain footprint and an apron. Absent: no sea node. */
29
+ sea?: CitySea;
27
30
  memoryBudgetMiB: number;
28
31
  streamRadiusM: number;
29
32
  spawn: {
@@ -12,6 +12,7 @@ const node_path_1 = require("node:path");
12
12
  const helix_manifest_1 = require("@hypersoniclabs/helix-manifest");
13
13
  const compiler_1 = require("../../sceneElements/compiler");
14
14
  const glbParts_1 = require("./glbParts");
15
+ const sea_1 = require("./sea");
15
16
  const MIB = 1024 * 1024;
16
17
  exports.CITY_HLOD_LAYER = 'buildings';
17
18
  /** P10: terrain collision must reach this far where streets are drivable and walkable. */
@@ -70,8 +71,8 @@ class ResourceTable {
70
71
  }
71
72
  async function composeCityScene(input) {
72
73
  const { buildings, buildingsDir } = input;
73
- if (!buildings.cells.length)
74
- throw new Error('scene create city: the source has no buildings; a city scene needs at least one building cell');
74
+ // A landscape-only source (no buildings at all) is a valid root: terrain, roads and vegetation, to which building parts are mounted.
75
+ const landscapeOnly = !buildings.cells.length;
75
76
  // 1. Terrain (and placements) through the same compiler every scene uses.
76
77
  const baseDir = (0, node_path_1.dirname)((0, node_path_1.resolve)(input.terrainDir));
77
78
  const doc = {
@@ -89,8 +90,8 @@ async function composeCityScene(input) {
89
90
  for (const file of base.bundleFiles)
90
91
  files.set(file.uri, { uri: file.uri, path: file.path, bytes: file.bytes, sha256: file.sha256 });
91
92
  // 2. One node per building cell, with its box-level collider, in its own distance group.
92
- const minIx = Math.min(...buildings.cells.map((c) => c.ix)), minIz = Math.min(...buildings.cells.map((c) => c.iz));
93
- const farMinX = Math.min(...buildings.far.map((c) => c.ix)), farMinZ = Math.min(...buildings.far.map((c) => c.iz));
93
+ const minIx = landscapeOnly ? 0 : Math.min(...buildings.cells.map((c) => c.ix)), minIz = landscapeOnly ? 0 : Math.min(...buildings.cells.map((c) => c.iz));
94
+ const farMinX = landscapeOnly ? 0 : Math.min(...buildings.far.map((c) => c.ix)), farMinZ = landscapeOnly ? 0 : Math.min(...buildings.far.map((c) => c.iz));
94
95
  const index = (cell) => cellId(cell.ix - minIx, cell.iz - minIz);
95
96
  const identity = { position: [0, 0, 0], rotation: [0, 0, 0, 1], scale: [1, 1, 1] };
96
97
  const nodes = [];
@@ -101,7 +102,7 @@ async function composeCityScene(input) {
101
102
  const sortedCells = [...buildings.cells].sort((a, b) => a.iz - b.iz || a.ix - b.ix);
102
103
  const roadSetCount = (input.roads ?? []).filter((c) => c.collider).length;
103
104
  const nearCells = sortedCells.filter((c) => c.near);
104
- const nearMinIx = Math.min(...nearCells.map((c) => c.ix)), nearMinIz = Math.min(...nearCells.map((c) => c.iz));
105
+ const nearMinIx = nearCells.length ? Math.min(...nearCells.map((c) => c.ix)) : 0, nearMinIz = nearCells.length ? Math.min(...nearCells.map((c) => c.iz)) : 0;
105
106
  const blockSize = colliderBlockSize(nearCells, exports.MAX_COLLISION_SETS - scene.collision.sets.length - roadSetCount - COLLISION_SET_RESERVE);
106
107
  const blocks = new Map();
107
108
  for (const cell of sortedCells) {
@@ -221,9 +222,40 @@ async function composeCityScene(input) {
221
222
  marginTriangles = input.margin.triangles;
222
223
  marginBytes = input.margin.glb.length;
223
224
  }
225
+ // 2d. The open sea: one water volume over the terrain footprint (core, tiles and margin) plus an apron, in the root group so it is resident from the start.
226
+ const seaNodeIds = [];
227
+ if (input.sea) {
228
+ const rootGroup = scene.streamGroups.find((g) => g.id === 'stream.root');
229
+ const rootCell = rootGroup?.cells[0];
230
+ if (!rootCell)
231
+ throw new Error('scene create city: the compiled terrain has no stream.root cell to hold the sea');
232
+ let x0 = Infinity, z0 = Infinity, x1 = -Infinity, z1 = -Infinity;
233
+ for (const group of [...scene.streamGroups, ...groups]) {
234
+ if (!group.id.startsWith('stream.terrain'))
235
+ continue;
236
+ for (const cell of group.cells) {
237
+ x0 = Math.min(x0, cell.bounds.min[0]);
238
+ z0 = Math.min(z0, cell.bounds.min[2]);
239
+ x1 = Math.max(x1, cell.bounds.max[0]);
240
+ z1 = Math.max(z1, cell.bounds.max[2]);
241
+ }
242
+ }
243
+ if (!Number.isFinite(x0))
244
+ throw new Error('scene create city: the compiled terrain has no stream cells to size the sea from');
245
+ const level = input.sea.surfaceHeightM;
246
+ nodes.push({
247
+ id: 'water.sea', transform: identity, streamGroup: 'stream.root',
248
+ components: [{
249
+ type: 'water.volume', shape: 'box', surfaceHeight: level,
250
+ bounds: { min: [x0 - sea_1.SEA_APRON_M, level - sea_1.SEA_DEPTH_M, z0 - sea_1.SEA_APRON_M], max: [x1 + sea_1.SEA_APRON_M, level, z1 + sea_1.SEA_APRON_M] },
251
+ }],
252
+ });
253
+ rootCell.nodes = [...rootCell.nodes, 'water.sea'];
254
+ seaNodeIds.push('water.sea');
255
+ }
224
256
  // 3. The generator's far layer is the complete HLOD v2 layer: one cluster per far entry, sources in `cells` order.
225
257
  const carrier = await (0, glbParts_1.facadeMaterialCarrierGlb)([0.62, 0.58, 0.52]);
226
- const materialId = table.add('res.hlod.material', 'model', 'model/gltf-binary', `hlod-complete/${(0, glbParts_1.sha256Hex)(carrier.bytes)}.glb`, carrier.bytes);
258
+ const materialId = landscapeOnly ? '' : table.add('res.hlod.material', 'model', 'model/gltf-binary', `hlod-complete/${(0, glbParts_1.sha256Hex)(carrier.bytes)}.glb`, carrier.bytes);
227
259
  const clusters = [];
228
260
  let hlodTriangles = 0, hlodBytes = 0;
229
261
  for (const far of [...buildings.far].sort((a, b) => a.iz - b.iz || a.ix - b.ix)) {
@@ -264,24 +296,28 @@ async function composeCityScene(input) {
264
296
  scene.streamGroups = [...scene.streamGroups, ...groups];
265
297
  scene.scenes = scene.scenes.map((root) => ({ ...root, nodes: [...root.nodes, ...nodes.map((n) => n.id)], streamGroups: [...root.streamGroups, ...groups.map((g) => g.id)] }));
266
298
  scene.collision = { sets: [...scene.collision.sets, ...collisionSets] };
267
- scene.hlod = {
268
- version: 2, defaultLayer: exports.CITY_HLOD_LAYER,
269
- layers: [{ id: exports.CITY_HLOD_LAYER, distanceM: 128, maxDistanceM: 8192, fadeMs: 350, triangleRatio: 1, maxErrorM: 0.02, atlasSize: 512, residency: 'complete' }],
270
- clusters,
271
- sharedMaterials: [{ resource: materialId, estimatedBytes: carrier.estimatedBytes, extension: 'HELIX_materials_city' }],
272
- bake: { cellSizeM: buildings.options.farCellM, voxelSizeM: 2, texelsPerM: 1, minTileSize: 64, maxTileSize: 256 },
273
- };
299
+ if (!landscapeOnly)
300
+ scene.hlod = {
301
+ version: 2, defaultLayer: exports.CITY_HLOD_LAYER,
302
+ layers: [{ id: exports.CITY_HLOD_LAYER, distanceM: 128, maxDistanceM: 8192, fadeMs: 350, triangleRatio: 1, maxErrorM: 0.02, atlasSize: 512, residency: 'complete' }],
303
+ clusters,
304
+ sharedMaterials: [{ resource: materialId, estimatedBytes: carrier.estimatedBytes, extension: 'HELIX_materials_city' }],
305
+ bake: { cellSizeM: buildings.options.farCellM, voxelSizeM: 2, texelsPerM: 1, minTileSize: 64, maxTileSize: 256 },
306
+ };
274
307
  scene.runtimeExtensions = [
275
308
  ...scene.runtimeExtensions,
276
309
  { id: 'ext.city-materials', extension: 'web.city-materials/1', runtime: 'web', targetNodes: [], required: false, fallback: 'portable', parameters: { version: 1, library: input.library.manifestResourceId } },
277
310
  ];
278
311
  const required = new Set(scene.capabilities.required);
279
312
  required.add('render.mesh/1');
280
- required.add(helix_manifest_1.SCENE_HLOD_COMPLETE_CAPABILITY);
313
+ if (!landscapeOnly)
314
+ required.add(helix_manifest_1.SCENE_HLOD_COMPLETE_CAPABILITY);
315
+ if (seaNodeIds.length)
316
+ required.add(helix_manifest_1.HELIX_SCENE_WATER_CAPABILITY);
281
317
  scene.capabilities = { ...scene.capabilities, required: [...required].sort() };
282
318
  // The shared hasher reads nodes, cells, resources and extensions, so it runs once everything above is in place.
283
319
  const hasher = (0, helix_manifest_1.createSceneHlodSourceHasher)(scene);
284
- for (const cluster of scene.hlod.clusters)
320
+ for (const cluster of scene.hlod?.clusters ?? [])
285
321
  cluster.sourceHash = hasher(cluster);
286
322
  // Dedupe: a resource id appears once.
287
323
  const seen = new Set();
@@ -1 +1 @@
1
- {"version":3,"file":"compose.js","sourceRoot":"","sources":["../../../src/city/assemble/compose.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"compose.js","sourceRoot":"","sources":["../../../src/city/assemble/compose.ts"],"names":[],"mappings":"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"}
@@ -51,6 +51,7 @@ const format_1 = require("../../scenePerf/format");
51
51
  const buildings_1 = require("../buildings");
52
52
  const source_2 = require("../source");
53
53
  const compose_1 = require("./compose");
54
+ const sea_1 = require("./sea");
54
55
  const materials_1 = require("./materials");
55
56
  const plan_1 = require("./plan");
56
57
  const terrain_1 = require("./terrain");
@@ -135,9 +136,13 @@ async function createCityScene(options) {
135
136
  const margin = marginM > 0 ? await lap('terrain margin', () => (0, margin_1.buildTerrainMargin)(loaded, { sourceDir, ...(options.marginCache ? { cacheDir: (0, node_path_1.resolve)(options.marginCache) } : {}), marginM, ...(options.offline ? { offline: true } : {}), coreHeightAt: terrain.heightAt, log })) : null;
136
137
  if (margin?.note)
137
138
  log(`terrain margin: ${margin.note}`);
139
+ const sea = (0, sea_1.citySeaFromWater)(loaded.areas?.water);
140
+ if (sea)
141
+ log(`sea: open water at y ${sea.surfaceHeightM} m`);
138
142
  const composed = await lap('compose', () => (0, compose_1.composeCityScene)({
139
143
  sceneId, title, terrainDir: (0, node_path_1.join)(work, 'terrain'), ...(vegetation?.placementsDir ? { placementsDir: vegetation.placementsDir } : {}),
140
144
  buildingsDir: (0, node_path_1.join)(work, 'buildings'), buildings: built.manifest, library: (0, materials_1.packageCityLibrary)(), ...(roads ? { roads: roads.cells } : {}),
145
+ ...(sea ? { sea } : {}),
141
146
  ...(margin?.mesh ? { margin: { glb: margin.mesh.glb, bounds: margin.mesh.bounds, triangles: margin.mesh.triangles } } : {}), memoryBudgetMiB, streamRadiusM,
142
147
  spawn: { position: spawn.position, rotationYDeg: spawn.rotationYDeg },
143
148
  }));
@@ -1 +1 @@
1
- {"version":3,"file":"create.js","sourceRoot":"","sources":["../../../src/city/assemble/create.ts"],"names":[],"mappings":";AAAA,gHAAgH;AAChH,EAAE;AACF,mGAAmG;AACnG,iHAAiH;AACjH,4EAA4E;AAC5E,gGAAgG;AAChG,gHAAgH;AAChH,2HAA2H;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA8E3H,0CAwGC;AApLD,+CAA2E;AAC3E,yCAAmD;AAEnD,6CAAmD;AACnD,mDAAyD;AACzD,mDAA+D;AAC/D,4CAAgF;AAChF,sCAAoG;AACpG,uCAAgE;AAChE,2CAAiD;AACjD,iCAA8E;AAC9E,uCAAqE;AACrE,8CAAuE;AACvE,oCAAwF;AACxF,4CAAsD;AACtD,mCAAoC;AACpC,mCAA0C;AAC1C,8CAAuD;AAEvD,2GAA2G;AAC9F,QAAA,sBAAsB,GAAG,GAAG,CAAC;AAC7B,QAAA,mBAAmB,GAAG,6BAAsC,CAAC;AAsC1E,MAAM,IAAI,GAAG,CAAC,KAAa,EAAU,EAAE,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,aAAa,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,IAAI,MAAM,CAAC;AAE1H,KAAK,UAAU,QAAQ,CAAC,GAAW;IACjC,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC;IACzB,MAAM,EAAE,IAAI,EAAE,GAAG,wDAAa,kBAAkB,GAAC,CAAC;IAClD,KAAK,MAAM,KAAK,IAAI,MAAM,IAAA,kBAAO,EAAC,GAAG,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;QAChE,MAAM,IAAI,GAAG,IAAA,gBAAI,EAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QACnC,IAAI,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;YACxB,MAAM,KAAK,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,CAAC;YACnC,KAAK,IAAI,KAAK,CAAC,KAAK,CAAC;YAAC,KAAK,IAAI,KAAK,CAAC,KAAK,CAAC;QAC7C,CAAC;aAAM,CAAC;YACN,KAAK,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;YAAC,KAAK,IAAI,CAAC,CAAC;QAC/C,CAAC;IACH,CAAC;IACD,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;AAC1B,CAAC;AAEM,KAAK,UAAU,eAAe,CAAC,OAA0B;IAC9D,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;IAC7C,MAAM,GAAG,GAAG,IAAA,mBAAO,EAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACjC,MAAM,IAAI,GAAG,IAAA,mBAAO,EAAC,OAAO,CAAC,IAAI,IAAI,GAAG,GAAG,OAAO,CAAC,CAAC;IACpD,MAAM,SAAS,GAAG,IAAA,mBAAO,EAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAC1C,MAAM,OAAO,GAA2B,EAAE,CAAC;IAC3C,MAAM,GAAG,GAAG,KAAK,EAAK,IAAY,EAAE,GAAyB,EAAc,EAAE;QAC3E,MAAM,EAAE,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;QAC7B,MAAM,KAAK,GAAG,MAAM,GAAG,EAAE,CAAC;QAC1B,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;QACnD,GAAG,CAAC,GAAG,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QACvD,OAAO,KAAK,CAAC;IACf,CAAC,CAAC;IAEF,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,aAAa,EAAE,KAAK,IAAI,EAAE,CAAC,IAAA,uBAAc,EAAC,MAAM,IAAA,uBAAc,EAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;IAC5G,MAAM,QAAQ,GAAG,MAAM,IAAA,+BAAsB,EAAC,SAAS,CAAC,CAAC;IACzD,MAAM,IAAI,GAAc,OAAO,CAAC,IAAI,IAAI,IAAA,uBAAgB,EAAC,SAAS,CAAC,CAAC;IACpE,MAAM,OAAO,GAAG,IAAI,CAAC,EAAE,IAAI,SAAS,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC;IAC/D,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;IAC/C,MAAM,KAAK,GAAG,IAAI,CAAC,KAAwB,CAAC;IAC5C,iJAAiJ;IACjJ,MAAM,eAAe,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAgB,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7F,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,EAAE,8BAAsB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC;IAEhI,MAAM,IAAA,aAAE,EAAC,IAAI,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IACjD,MAAM,IAAA,gBAAK,EAAC,IAAI,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAEvC,2EAA2E;IAC3E,MAAM,KAAK,GAAG,MAAM,GAAG,CAAC,WAAW,EAAE,GAAG,EAAE,CAAC,IAAA,oCAAwB,EAAC,MAAM,EAAE,QAAQ,EAAE;QACpF,GAAG,EAAE,IAAA,gBAAI,EAAC,IAAI,EAAE,WAAW,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC,YAAY,KAAK,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,YAAY;KAC7L,CAAC,CAAC,CAAC;IACJ,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,IAAA,uBAAe,EAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAC1H,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,SAAS,EAAE,GAAG,EAAE,CAAC,IAAA,0BAAgB,EAAC,MAAM,EAAE,IAAA,gBAAI,EAAC,IAAI,EAAE,SAAS,CAAC,EAAE,EAAE,eAAe,EAAE,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC;IAC5K,MAAM,KAAK,GAAG,IAAA,iBAAS,EAAC,MAAM,EAAE,KAAK,CAAC,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IAC9E,GAAG,CAAC,UAAU,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;IAEtF,qGAAqG;IACrG,+HAA+H;IAC/H,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC,UAAU,KAAK,KAAK,CAAC,CAAC,CAAC,IAAA,4BAAmB,EAAC,MAAM,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAC7J,MAAM,UAAU,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,GAAG,MAAM,EAAE,IAAI,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC,EAAE,GAAG,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC;IAC7G,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,IAAA,oBAAY,EAAC,UAAU,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAChI,IAAI,WAAW,GAAuB,IAAI,CAAC;IAC3C,IAAI,KAAK,IAAI,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;QACrC,WAAW,GAAG,MAAM,GAAG,CAAC,iBAAiB,EAAE,GAAG,EAAE,CAAC,IAAA,kBAAU,EAAC,UAAU,EAAE,KAAK,CAAC,QAAQ,EAAE,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;QACtK,KAAK,CAAC,MAAM,CAAC,MAAM,GAAG,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC;QACjD,KAAK,CAAC,MAAM,CAAC,UAAU,GAAG,WAAW,CAAC,UAAU,CAAC,MAAM,CAAC;QACxD,KAAK,CAAC,MAAM,CAAC,YAAY,GAAG,WAAW,CAAC,YAAY,CAAC;QACrD,KAAK,CAAC,MAAM,CAAC,cAAc,GAAG,WAAW,CAAC,QAAQ,CAAC;QACnD,KAAK,CAAC,MAAM,CAAC,eAAe,GAAG,WAAW,CAAC,eAAe,CAAC;IAC7D,CAAC;IACD,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO;QACxC,CAAC,CAAC,MAAM,GAAG,CAAC,YAAY,EAAE,GAAG,EAAE,CAAC,IAAA,4BAAe,EAAC,MAAM,EAAE,EAAE,GAAG,EAAE,IAAA,gBAAI,EAAC,IAAI,EAAE,YAAY,CAAC,EAAE,UAAU,EAAE,IAAA,gBAAI,EAAC,IAAI,EAAE,SAAS,CAAC,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,QAAQ,EAAE,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,WAAW,EAAE,IAAI,CAAC,UAAU,CAAC,WAAW,KAAK,KAAK,EAAE,GAAG,EAAE,GAAG,CAAC,WAAW,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QACvT,CAAC,CAAC,IAAI,CAAC;IAET,6HAA6H;IAC7H,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,IAAI,CAAC,CAAC;IAC1C,MAAM,MAAM,GAAG,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,gBAAgB,EAAE,GAAG,EAAE,CAAC,IAAA,2BAAkB,EAAC,MAAM,EAAE,EAAE,SAAS,EAAE,GAAG,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAA,mBAAO,EAAC,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,YAAY,EAAE,OAAO,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAC1R,IAAI,MAAM,EAAE,IAAI;QAAE,GAAG,CAAC,mBAAmB,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;IAExD,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAC,SAAS,EAAE,GAAG,EAAE,CAAC,IAAA,0BAAgB,EAAC;QAC3D,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,IAAA,gBAAI,EAAC,IAAI,EAAE,SAAS,CAAC,EAAE,GAAG,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,UAAU,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACpI,YAAY,EAAE,IAAA,gBAAI,EAAC,IAAI,EAAE,WAAW,CAAC,EAAE,SAAS,EAAE,KAAK,CAAC,QAAQ,EAAE,OAAO,EAAE,IAAA,8BAAkB,GAAE,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACzI,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,eAAe,EAAE,aAAa;QAC3J,KAAK,EAAE,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,YAAY,EAAE,KAAK,CAAC,YAAY,EAAE;KACtE,CAAC,CAAC,CAAC;IAEJ,MAAM,GAAG,CAAC,eAAe,EAAE,KAAK,IAAI,EAAE;QACpC,MAAM,IAAA,aAAE,EAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QAChD,MAAM,IAAA,gBAAK,EAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACtC,KAAK,MAAM,IAAI,IAAI,QAAQ,CAAC,KAAK,EAAE,CAAC;YAClC,MAAM,MAAM,GAAG,IAAA,gBAAI,EAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;YACnC,MAAM,IAAA,gBAAK,EAAC,IAAA,mBAAO,EAAC,MAAM,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YAClD,IAAI,IAAI,CAAC,IAAI;gBAAE,MAAM,IAAA,mBAAQ,EAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;iBAC5C,IAAI,IAAI,CAAC,IAAI;gBAAE,MAAM,IAAA,oBAAS,EAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;;gBAClD,MAAM,IAAI,KAAK,CAAC,sBAAsB,IAAI,CAAC,GAAG,+BAA+B,CAAC,CAAC;QACtF,CAAC;QACD,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC;QAC7B,MAAM,IAAA,oBAAS,EAAC,IAAA,gBAAI,EAAC,GAAG,EAAE,wBAAwB,CAAC,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACnF,MAAM,IAAA,oBAAS,EAAC,IAAA,gBAAI,EAAC,GAAG,EAAE,UAAU,CAAC,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;QACjK,MAAM,IAAA,oBAAS,EAAC,IAAA,gBAAI,EAAC,GAAG,EAAE,iBAAiB,CAAC,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,GAAG,IAAI,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;IAC/I,CAAC,CAAC,CAAC;IAEH,IAAI,IAAI,GAA2B,IAAI,CAAC;IACxC,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;QACtB,IAAI,GAAG,MAAM,GAAG,CAAC,WAAW,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,MAAM,IAAA,kBAAY,EAAC,EAAE,KAAK,EAAE,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,IAAA,wBAAe,EAAC,GAAG,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;QACvI,GAAG,CAAC,IAAA,8BAAqB,EAAC,IAAI,CAAC,CAAC,CAAC;IACnC,CAAC;IAED,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,GAAG,CAAC,CAAC;IACjC,MAAM,MAAM,GAAqB;QAC/B,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,CAAC,KAAK,CAAC,QAAQ,IAAI,EAAE,EAAE,SAAS,EAAE,QAAQ,CAAC,KAAK,CAAC,SAAS,EAAE,MAAM,IAAI,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,CAAC,KAAK;QAC7I,OAAO,EAAE,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,eAAe,EAAE,OAAO,CAAC,eAAe,EAAE,YAAY,EAAE,OAAO,CAAC,YAAY,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI;YAC/N,GAAG,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,IAAI,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,CAAC,MAAM,IAAI,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,IAAI,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE;QAC9S,UAAU,EAAE,UAAU,EAAE,MAAM,IAAI,EAAE,OAAO,EAAE,KAAK,EAAgC;QAClF,KAAK,EAAE,KAAK,EAAE,MAAM,IAAI,EAAE,OAAO,EAAE,KAAK,EAA2B;QACnE,KAAK,EAAE,KAAK;YACV,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,eAAe,EAAE,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,eAAe,EAAE,CAAC,CAAC,EAAE,iBAAiB,EAAE,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,iBAAiB,EAAE,CAAC,CAAC,EAAE,SAAS,EAAE,KAAK,CAAC,MAAM,CAAC,SAAS,EAAE,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,aAAa,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE;YAChV,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,EAAE,eAAe,EAAE,CAAC,EAAE,iBAAiB,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE;QAC5G,SAAS,EAAE,EAAE,GAAG,KAAK,CAAC,QAAQ,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,EAAE;QAC3E,YAAY,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO;KACtE,CAAC;IACF,0GAA0G;IAC1G,MAAM,IAAA,oBAAS,EAAC,IAAA,gBAAI,EAAC,IAAI,EAAE,0BAA0B,CAAC,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,2BAAmB,EAAE,GAAG,MAAM,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;IAC1I,OAAO,MAAM,CAAC;AAChB,CAAC"}
1
+ {"version":3,"file":"create.js","sourceRoot":"","sources":["../../../src/city/assemble/create.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import type { CityWater } from '../source';
2
+ /** The CS2 importer's own bar for `sea`; a smaller `sea` body (an OSM harbour or bay) is a lake-sized feature, not the open sea. */
3
+ export declare const OPEN_SEA_MIN_AREA_M2 = 20000000;
4
+ /** How far the sea box reaches past the terrain's XZ footprint. */
5
+ export declare const SEA_APRON_M = 4000;
6
+ /** How far below the surface the sea box reaches. */
7
+ export declare const SEA_DEPTH_M = 80;
8
+ export interface CitySea {
9
+ /** Scene Y of the water surface: the largest sea body's own `levelM` (the frame is sea level, so 0 unless the source says otherwise). */
10
+ surfaceHeightM: number;
11
+ }
12
+ /** The open sea a source declares, or null when its water layer holds none (then the scene carries no sea node). */
13
+ export declare function citySeaFromWater(water: readonly CityWater[] | undefined): CitySea | null;
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+ // The open sea of a city scene. A city-source whose water layer holds a sea body (the CS2 importer names a body `sea` when it
3
+ // touches the edge of the map and is over 20 km2; an OSM coastline polygon is `ocean`) gets one `water.volume` box that fills
4
+ // the terrain footprint and a wide apron beyond it, so the sea is water to the horizon instead of paint in the splat.
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.SEA_DEPTH_M = exports.SEA_APRON_M = exports.OPEN_SEA_MIN_AREA_M2 = void 0;
7
+ exports.citySeaFromWater = citySeaFromWater;
8
+ const geometry_1 = require("../source/geometry");
9
+ /** The CS2 importer's own bar for `sea`; a smaller `sea` body (an OSM harbour or bay) is a lake-sized feature, not the open sea. */
10
+ exports.OPEN_SEA_MIN_AREA_M2 = 20e6;
11
+ /** How far the sea box reaches past the terrain's XZ footprint. */
12
+ exports.SEA_APRON_M = 4000;
13
+ /** How far below the surface the sea box reaches. */
14
+ exports.SEA_DEPTH_M = 80;
15
+ const bodyArea = (water) => {
16
+ if (!water.ring)
17
+ return 0;
18
+ return Math.abs((0, geometry_1.ringAreaFromAbove)(water.ring)) - (water.holes ?? []).reduce((sum, hole) => sum + Math.abs((0, geometry_1.ringAreaFromAbove)(hole)), 0);
19
+ };
20
+ /** The open sea a source declares, or null when its water layer holds none (then the scene carries no sea node). */
21
+ function citySeaFromWater(water) {
22
+ let best = null;
23
+ for (const body of water ?? []) {
24
+ if (body.kind !== 'sea' && body.kind !== 'ocean')
25
+ continue;
26
+ const area = bodyArea(body);
27
+ if (body.kind === 'sea' && area < exports.OPEN_SEA_MIN_AREA_M2)
28
+ continue;
29
+ if (!best || area > best.area)
30
+ best = { area, level: body.levelM ?? 0 };
31
+ }
32
+ return best ? { surfaceHeightM: best.level } : null;
33
+ }
34
+ //# sourceMappingURL=sea.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sea.js","sourceRoot":"","sources":["../../../src/city/assemble/sea.ts"],"names":[],"mappings":";AAAA,8HAA8H;AAC9H,8HAA8H;AAC9H,sHAAsH;;;AAuBtH,4CASC;AA7BD,iDAAuD;AAEvD,oIAAoI;AACvH,QAAA,oBAAoB,GAAG,IAAI,CAAC;AACzC,mEAAmE;AACtD,QAAA,WAAW,GAAG,IAAI,CAAC;AAChC,qDAAqD;AACxC,QAAA,WAAW,GAAG,EAAE,CAAC;AAO9B,MAAM,QAAQ,GAAG,CAAC,KAAgB,EAAU,EAAE;IAC5C,IAAI,CAAC,KAAK,CAAC,IAAI;QAAE,OAAO,CAAC,CAAC;IAC1B,OAAO,IAAI,CAAC,GAAG,CAAC,IAAA,4BAAiB,EAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,IAAA,4BAAiB,EAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACzI,CAAC,CAAC;AAEF,oHAAoH;AACpH,SAAgB,gBAAgB,CAAC,KAAuC;IACtE,IAAI,IAAI,GAA2C,IAAI,CAAC;IACxD,KAAK,MAAM,IAAI,IAAI,KAAK,IAAI,EAAE,EAAE,CAAC;QAC/B,IAAI,IAAI,CAAC,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO;YAAE,SAAS;QAC3D,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;QAC5B,IAAI,IAAI,CAAC,IAAI,KAAK,KAAK,IAAI,IAAI,GAAG,4BAAoB;YAAE,SAAS;QACjE,IAAI,CAAC,IAAI,IAAI,IAAI,GAAG,IAAI,CAAC,IAAI;YAAE,IAAI,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;IAC1E,CAAC;IACD,OAAO,IAAI,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;AACtD,CAAC"}
@@ -0,0 +1,55 @@
1
+ import { type HelixSceneV2 } from '@hypersoniclabs/helix-manifest';
2
+ export declare const MOUNT_CAPABILITY = "helix.scene-mount/1";
3
+ export interface ComposeTier {
4
+ budgetMiB: number;
5
+ nearAllowanceMiB: number;
6
+ nearRadiusM: number;
7
+ /** Fraction of the bake's uncompressed-RGBA worst case the shared HLOD atlas is declared at (it ships KTX2). */
8
+ hlodMaterialScale: number;
9
+ streamRadiusM?: number;
10
+ }
11
+ export declare const COMPOSE_TIERS: Record<'desktop' | 'mobile', ComposeTier>;
12
+ export declare function reseal(scene: HelixSceneV2): HelixSceneV2;
13
+ /** The part with its own allowance and near radius, sealed again. */
14
+ export declare function retargetPart(part: HelixSceneV2, tier: ComposeTier): HelixSceneV2;
15
+ export declare const mountCommitmentMiB: (child: HelixSceneV2) => number;
16
+ export declare function mountParts(base: HelixSceneV2, children: HelixSceneV2[], options: {
17
+ id: string;
18
+ title: string;
19
+ tier: ComposeTier;
20
+ mountMode?: 'eager' | 'distance';
21
+ }): HelixSceneV2;
22
+ export interface ComposeOptions {
23
+ /** The landscape package (`scene create city` output). */
24
+ land: string;
25
+ /** The data root holding the baked `part.<n>.scene.json`, `buildings/` and `hlod-complete/`. */
26
+ data: string;
27
+ out: string;
28
+ name: string;
29
+ tier: 'desktop' | 'mobile';
30
+ /** Root scene id; omitted, the landscape's. */
31
+ id?: string;
32
+ title?: string;
33
+ log?: (line: string) => void;
34
+ }
35
+ export interface ComposeReport {
36
+ root: {
37
+ dir: string;
38
+ id: string;
39
+ revision: string;
40
+ documentBytes: number;
41
+ documentCapBytes: number;
42
+ };
43
+ parts: Array<{
44
+ id: string;
45
+ dir: string;
46
+ revision: string;
47
+ nodes: number;
48
+ clusters: number;
49
+ groups: number;
50
+ largestGroupMiB: number;
51
+ commitmentMiB: number;
52
+ allowanceMiB: number;
53
+ }>;
54
+ }
55
+ export declare function composeWorld(options: ComposeOptions): ComposeReport;
@@ -0,0 +1,137 @@
1
+ "use strict";
2
+ // Composes a World root: a landscape Scene (terrain, roads, trees, props) that MOUNTS the baked building parts.
3
+ //
4
+ // <out>/<root name>/ the landscape package, its document now mounting every part (+ pin.json)
5
+ // <out>/<part sha256>/ one folder per mounted part: the sealed document, `buildings/` and `hlod-complete/` linked
6
+ //
7
+ // The engine resolves a mount at `../<sha256>/scene.helix-scene.json` beside the root document, exactly as Granit's compose
8
+ // script lays it out. Policy (memory allowance, near radius, mount budgets) is the only thing changed in a part; content is
9
+ // never touched. Sealing order is the manifest's: revision from a zeroed digest, then integrity over the document.
10
+ Object.defineProperty(exports, "__esModule", { value: true });
11
+ exports.mountCommitmentMiB = exports.COMPOSE_TIERS = exports.MOUNT_CAPABILITY = void 0;
12
+ exports.reseal = reseal;
13
+ exports.retargetPart = retargetPart;
14
+ exports.mountParts = mountParts;
15
+ exports.composeWorld = composeWorld;
16
+ const node_fs_1 = require("node:fs");
17
+ const node_path_1 = require("node:path");
18
+ const helix_manifest_1 = require("@hypersoniclabs/helix-manifest");
19
+ exports.MOUNT_CAPABILITY = 'helix.scene-mount/1';
20
+ exports.COMPOSE_TIERS = {
21
+ desktop: { budgetMiB: 512, nearAllowanceMiB: 320, nearRadiusM: 128, hlodMaterialScale: 0.4 },
22
+ mobile: { budgetMiB: 192, nearAllowanceMiB: 8, nearRadiusM: 48, hlodMaterialScale: 1, streamRadiusM: 384 },
23
+ };
24
+ function reseal(scene) {
25
+ scene.revision = '0'.repeat(16);
26
+ scene.integrity = { sha256: '0'.repeat(64) };
27
+ scene.revision = (0, helix_manifest_1.computeSceneDocumentIntegrity)(scene).slice(0, 16);
28
+ scene.integrity = { sha256: (0, helix_manifest_1.computeSceneDocumentIntegrity)(scene) };
29
+ if (!(0, helix_manifest_1.verifySceneDocumentIntegrity)(scene))
30
+ throw new Error(`${scene.id}: sealed integrity does not verify`);
31
+ return scene;
32
+ }
33
+ /** The part with its own allowance and near radius, sealed again. */
34
+ function retargetPart(part, tier) {
35
+ const child = structuredClone(part);
36
+ const resourceBytes = new Map(child.resources.map((r) => [r.id, r.bytes ?? 0]));
37
+ for (const material of child.hlod?.sharedMaterials ?? []) {
38
+ material.estimatedBytes = Math.max(resourceBytes.get(material.resource) ?? 0, Math.ceil(material.estimatedBytes * tier.hlodMaterialScale));
39
+ }
40
+ const largestGroupMiB = Math.max(...child.streamGroups.map((g) => g.estimatedMemoryMiB));
41
+ const coarseMiB = (child.hlod?.clusters ?? []).reduce((sum, c) => sum + (c.estimatedBytes ?? 0), 0) / 1048576;
42
+ const atlasMiB = Math.max(0, ...(child.hlod?.sharedMaterials ?? []).map((m) => m.estimatedBytes)) / 1048576;
43
+ const allowanceMiB = Math.max(32, Math.ceil(largestGroupMiB + coarseMiB + atlasMiB + tier.nearAllowanceMiB));
44
+ for (const profile of Object.values(child.profiles)) {
45
+ profile.runtimePolicy.memoryBudgetMiB = allowanceMiB;
46
+ profile.runtimePolicy.streamRadiusM = tier.nearRadiusM;
47
+ }
48
+ return reseal(child);
49
+ }
50
+ const mountCommitmentMiB = (child) => Math.max(32, ...Object.keys(child.profiles).map((id) => (0, helix_manifest_1.sceneProfileMemoryCommitmentMiB)(child, id)));
51
+ exports.mountCommitmentMiB = mountCommitmentMiB;
52
+ function mountParts(base, children, options) {
53
+ const root = structuredClone(base);
54
+ root.id = options.id;
55
+ root.title = options.title;
56
+ for (const profile of Object.values(root.profiles)) {
57
+ profile.runtimePolicy.memoryBudgetMiB = options.tier.budgetMiB;
58
+ if (options.tier.streamRadiusM)
59
+ profile.runtimePolicy.streamRadiusM = options.tier.streamRadiusM;
60
+ }
61
+ const mounts = root.mounts ? [...root.mounts] : [];
62
+ const nodeIds = [];
63
+ const commitments = children.map(exports.mountCommitmentMiB);
64
+ children.forEach((child, index) => {
65
+ const mount = `mount.city.part.${index}`;
66
+ const node = `node.city.part.${index}`;
67
+ mounts.push({ id: mount, scene: { id: child.id, revision: child.revision }, integrity: { sha256: child.integrity.sha256 }, profile: 'world', budgetMiB: commitments[index], depth: 0 });
68
+ root.nodes.push({ id: node, streamGroup: 'stream.city', transform: { position: [0, 0, 0], rotation: [0, 0, 0, 1], scale: [1, 1, 1] }, components: [{ type: 'scene.mount', mount }] });
69
+ nodeIds.push(node);
70
+ });
71
+ root.mounts = mounts;
72
+ root.mountDepth = 1;
73
+ root.scenes[0].nodes.push(...nodeIds);
74
+ root.scenes[0].streamGroups.push('stream.city');
75
+ const mode = options.mountMode ?? 'eager';
76
+ const span = root.placement?.bounds ?? { min: [-8192, -1024, -8192], max: [8192, 2048, 8192] };
77
+ root.streamGroups.push({
78
+ id: 'stream.city', mode, priority: mode === 'eager' ? 100 : 20, dependencies: ['stream.root'],
79
+ estimatedMemoryMiB: commitments.reduce((sum, v) => sum + v, 0),
80
+ cells: [{ id: 'cell.city', bounds: { min: [...span.min], max: [...span.max] }, nodes: nodeIds }],
81
+ });
82
+ for (const capability of [exports.MOUNT_CAPABILITY, 'render.mesh/1', 'helix.scene-hlod/2']) {
83
+ if (!root.capabilities.required.includes(capability))
84
+ root.capabilities.required.push(capability);
85
+ }
86
+ root.capabilities.required.sort();
87
+ return reseal(root);
88
+ }
89
+ const link = (target, at) => { (0, node_fs_1.rmSync)(at, { recursive: true, force: true }); (0, node_fs_1.symlinkSync)(target, at); };
90
+ function composeWorld(options) {
91
+ const tier = exports.COMPOSE_TIERS[options.tier];
92
+ const base = JSON.parse((0, node_fs_1.readFileSync)((0, node_path_1.join)(options.land, 'scene.helix-scene.json'), 'utf8'));
93
+ const partFiles = [];
94
+ for (let i = 0; (0, node_fs_1.existsSync)((0, node_path_1.join)(options.data, `part.${i}.scene.json`)); i += 1)
95
+ partFiles.push((0, node_path_1.join)(options.data, `part.${i}.scene.json`));
96
+ if (!partFiles.length)
97
+ throw new Error(`composeWorld: no part.<n>.scene.json in ${options.data}`);
98
+ const children = partFiles.map((file) => retargetPart(JSON.parse((0, node_fs_1.readFileSync)(file, 'utf8')), tier));
99
+ const root = mountParts(base, children, { id: options.id ?? base.id, title: options.title ?? base.title, tier });
100
+ const rootValidation = (0, helix_manifest_1.validateSceneDocument)(root);
101
+ if (!rootValidation.valid)
102
+ throw new Error(`root document invalid: ${rootValidation.errors.slice(0, 8).join('; ')}`);
103
+ for (const child of children) {
104
+ const result = (0, helix_manifest_1.validateSceneDocument)(child);
105
+ if (!result.valid)
106
+ throw new Error(`${child.id} invalid: ${result.errors.slice(0, 8).join('; ')}`);
107
+ }
108
+ const out = (0, node_path_1.resolve)(options.out);
109
+ const rootDir = (0, node_path_1.join)(out, options.name);
110
+ (0, node_fs_1.rmSync)(out, { recursive: true, force: true }); // part folders are named by digest, so a stale set would linger beside the new one
111
+ (0, node_fs_1.mkdirSync)(out, { recursive: true });
112
+ // The landscape package is cloned (copy-on-write where the filesystem has it), then its document is replaced.
113
+ (0, node_fs_1.cpSync)(options.land, rootDir, { recursive: true, ...(process.platform === 'darwin' ? { mode: 1 } : {}) });
114
+ const serialized = `${JSON.stringify(root)}\n`;
115
+ (0, node_fs_1.writeFileSync)((0, node_path_1.join)(rootDir, 'scene.helix-scene.json'), serialized);
116
+ (0, node_fs_1.writeFileSync)((0, node_path_1.join)(rootDir, 'pin.json'), `${JSON.stringify({ kind: 'scene-v2', id: root.id, revision: root.revision, integrity: root.integrity }, null, 2)}\n`);
117
+ const report = {
118
+ root: { dir: rootDir, id: root.id, revision: root.revision, documentBytes: Buffer.byteLength(serialized), documentCapBytes: 4194304 },
119
+ parts: [],
120
+ };
121
+ children.forEach((child) => {
122
+ const dir = (0, node_path_1.join)(out, child.integrity.sha256);
123
+ (0, node_fs_1.mkdirSync)(dir, { recursive: true });
124
+ for (const sub of ['buildings', 'hlod-complete'])
125
+ if ((0, node_fs_1.existsSync)((0, node_path_1.join)(options.data, sub)))
126
+ link((0, node_path_1.join)(options.data, sub), (0, node_path_1.join)(dir, sub));
127
+ (0, node_fs_1.writeFileSync)((0, node_path_1.join)(dir, 'scene.helix-scene.json'), `${JSON.stringify(child)}\n`);
128
+ report.parts.push({
129
+ id: child.id, dir, revision: child.revision, nodes: child.nodes.length, clusters: child.hlod?.clusters.length ?? 0, groups: child.streamGroups.length,
130
+ largestGroupMiB: Math.max(...child.streamGroups.map((g) => g.estimatedMemoryMiB)), commitmentMiB: (0, exports.mountCommitmentMiB)(child),
131
+ allowanceMiB: Math.max(...Object.values(child.profiles).map((p) => p.runtimePolicy.memoryBudgetMiB)),
132
+ });
133
+ });
134
+ void node_fs_1.lstatSync;
135
+ return report;
136
+ }
137
+ //# sourceMappingURL=buildingCompose.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"buildingCompose.js","sourceRoot":"","sources":["../../../src/cs2/convert/buildingCompose.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ import type { Command } from 'commander';
2
+ /**
3
+ * `helix cs2 mesh-buildings`: the real CS2 prefab meshes for a city's buildings, as a World root plus building part Scenes
4
+ * (Granit's storage pattern). Four stages, each reading the previous one's folder:
5
+ *
6
+ * prototypes one prototype GLB per prefab and colourway (KTX2 textures shared by name), plus a small self-contained bake GLB
7
+ * merge joins the `prototypes.shard.<i>.json` indices of a sharded run into `prototypes.json`
8
+ * parts the `part.<n>.scene.json` documents for a `helix.city-source/1` whose buildings carry `mesh` pointers
9
+ * compose mounts sealed parts into a landscape package (`helix scene create city` output) for one tier
10
+ *
11
+ * The complete HLOD bake between `parts` and `compose` is the existing `helix scene hlod bake-complete`.
12
+ */
13
+ export declare function mergePrototypeIndices(data: string): {
14
+ prefabs: number;
15
+ failed: number;
16
+ };
17
+ export declare function registerCs2MeshBuildings(parent: Command, fail: (message: string) => never): void;