@hypersoniclabs/helix-cli 0.1.25-helix3.491 → 0.1.25-helix3.492

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/assets/city-materials/cs2-asphalt/asphalt_col.ktx2 +0 -0
  2. package/assets/city-materials/cs2-asphalt/overrides.json +6 -0
  3. package/dist/cs2/convert/terrainConform.d.ts +6 -0
  4. package/dist/cs2/convert/terrainConform.js +2 -1
  5. package/dist/cs2/convert/terrainConform.js.map +1 -1
  6. package/dist/cs2/restyle/command.js +16 -5
  7. package/dist/cs2/restyle/command.js.map +1 -1
  8. package/dist/cs2/restyle/format.d.ts +3 -0
  9. package/dist/cs2/restyle/format.js +18 -0
  10. package/dist/cs2/restyle/format.js.map +1 -1
  11. package/dist/cs2/restyle/library.d.ts +11 -0
  12. package/dist/cs2/restyle/library.js +51 -0
  13. package/dist/cs2/restyle/library.js.map +1 -0
  14. package/dist/cs2/restyle/restyle.d.ts +11 -2
  15. package/dist/cs2/restyle/restyle.js +50 -5
  16. package/dist/cs2/restyle/restyle.js.map +1 -1
  17. package/dist/cs2/restyle/ribbons.d.ts +21 -0
  18. package/dist/cs2/restyle/ribbons.js +156 -0
  19. package/dist/cs2/restyle/ribbons.js.map +1 -0
  20. package/dist/cs2/restyle/scenePatch.d.ts +11 -1
  21. package/dist/cs2/restyle/scenePatch.js +85 -1
  22. package/dist/cs2/restyle/scenePatch.js.map +1 -1
  23. package/dist/cs2/restyle/terrainCarve.d.ts +68 -0
  24. package/dist/cs2/restyle/terrainCarve.js +222 -0
  25. package/dist/cs2/restyle/terrainCarve.js.map +1 -0
  26. package/dist/cs2/restyle/terrainPack.d.ts +16 -0
  27. package/dist/cs2/restyle/terrainPack.js +78 -0
  28. package/dist/cs2/restyle/terrainPack.js.map +1 -0
  29. package/dist/tsconfig.build.tsbuildinfo +1 -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
@@ -0,0 +1,6 @@
1
+ {
2
+ "schema": "helix.city-materials-overrides/1",
3
+ "textures": {
4
+ "asphaltCol": { "file": "asphalt_col.ktx2", "width": 2048, "height": 2048, "srgb": true }
5
+ }
6
+ }
@@ -17,6 +17,12 @@ export interface TerrainConformOptions {
17
17
  maxDeviationMetres?: number;
18
18
  /** Default 0.7. */
19
19
  minUpFacing?: number;
20
+ /**
21
+ * Skip the pass that moves the samples under a surface onto it, and only hold the corners of every cell the surface
22
+ * crosses below it (never raising anything). This is what a COARSER lattice of the same field needs: its cells are 2, 4
23
+ * or 8 times wider than the posting the roads were conformed at, so a cell's corners sit beside the road, not under it.
24
+ */
25
+ holdOnly?: boolean;
20
26
  }
21
27
  export interface TerrainConformStats {
22
28
  samplesConformed: number;
@@ -29,6 +29,7 @@ function conformGridToSurfaces(grid, surfaces, options = {}) {
29
29
  const clearance = options.clearanceMetres ?? exports.TERRAIN_CONFORM_CLEARANCE_METRES;
30
30
  const maxDeviation = options.maxDeviationMetres ?? exports.TERRAIN_CONFORM_MAX_DEVIATION_METRES;
31
31
  const minUpFacing = options.minUpFacing ?? exports.TERRAIN_CONFORM_MIN_UP_FACING;
32
+ const holdOnly = options.holdOnly === true;
32
33
  const { heights, samplesX, samplesZ, originX, originZ, metresPerSample } = grid;
33
34
  const halfCell = metresPerSample / 2;
34
35
  const original = Float32Array.from(heights);
@@ -81,7 +82,7 @@ function conformGridToSurfaces(grid, surfaces, options = {}) {
81
82
  const i1 = Math.min(samplesX - 1, Math.floor((Math.max(ax, bx, cx) - originX) / metresPerSample));
82
83
  const j0 = Math.max(0, Math.ceil((Math.min(az, bz, cz) - originZ) / metresPerSample));
83
84
  const j1 = Math.min(samplesZ - 1, Math.floor((Math.max(az, bz, cz) - originZ) / metresPerSample));
84
- for (let j = j0; j <= j1; j += 1) {
85
+ for (let j = j0; !holdOnly && j <= j1; j += 1) {
85
86
  const pz = originZ + j * metresPerSample;
86
87
  for (let i = i0; i <= i1; i += 1) {
87
88
  const px = originX + i * metresPerSample;
@@ -1 +1 @@
1
- {"version":3,"file":"terrainConform.js","sourceRoot":"","sources":["../../../src/cs2/convert/terrainConform.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"terrainConform.js","sourceRoot":"","sources":["../../../src/cs2/convert/terrainConform.ts"],"names":[],"mappings":"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"}
@@ -46,6 +46,9 @@ function registerCityRoadsRestyleCs2(city, fail) {
46
46
  .argument('<roadsDir>', 'baked road folder holding mesh-cells.json (Scene `roads/`)')
47
47
  .requiredOption('--out <dir>', 'folder to write: roads/ (render, collider, markings-a, mesh-cells.json) and, with --scene, the patched document')
48
48
  .option('--scene <file>', 'a sealed Scene v2 document whose roads.* elements are replaced by the restyled cells (and the city material library added)')
49
+ .option('--terrain <dir>', 'terrain source folder to carve under the roads at every stride the engine draws it at (default: the folder beside --scene when it holds terrain.json); written to <out>/terrain')
50
+ .option('--no-carve', 'leave the terrain as it is')
51
+ .option('--engine-asphalt', 'keep the engine\'s own asphalt textures (calibrated to the engine goldens\' lighting) instead of the CS2 calibration for the Granit shell\'s lighting')
49
52
  .option('--library <dir>', 'city material library pack (default: the CLI\'s own assets/city-materials/v1)')
50
53
  .option('--collider-max-triangles <n>', 'collider triangle budget per cell', '60000')
51
54
  .option('--no-far', 'skip the far road layer (roads-lod/: simplified driving surface merged into 2,048 m cells, eager, so roads read from altitude)')
@@ -55,7 +58,7 @@ function registerCityRoadsRestyleCs2(city, fail) {
55
58
  .action(async (roadsDir, opts) => {
56
59
  try {
57
60
  const { existsSync } = await Promise.resolve().then(() => __importStar(require('node:fs')));
58
- const { join, resolve } = await Promise.resolve().then(() => __importStar(require('node:path')));
61
+ const { dirname, join, resolve } = await Promise.resolve().then(() => __importStar(require('node:path')));
59
62
  const { restyleCs2Roads } = await Promise.resolve().then(() => __importStar(require('./restyle')));
60
63
  const out = resolve(opts.out);
61
64
  const target = join(out, 'roads');
@@ -72,18 +75,26 @@ function registerCityRoadsRestyleCs2(city, fail) {
72
75
  colliderMaxTriangles: budget, farErrorM: farError, log: (message) => console.error(message),
73
76
  ...(opts.far ? { farOut: join(out, 'roads-lod') } : {}),
74
77
  });
78
+ const terrainSource = opts.carve ? opts.terrain ? resolve(opts.terrain) : opts.scene && existsSync(join(dirname(resolve(opts.scene)), 'terrain', 'terrain.json')) ? join(dirname(resolve(opts.scene)), 'terrain') : undefined : undefined;
79
+ let terrain;
80
+ if (terrainSource) {
81
+ const { readRoadSurfaces } = await Promise.resolve().then(() => __importStar(require('./terrainCarve')));
82
+ const { carveTerrainFolder } = await Promise.resolve().then(() => __importStar(require('./terrainPack')));
83
+ const surfaces = await readRoadSurfaces(resolve(roadsDir), (message) => console.error(message));
84
+ terrain = await carveTerrainFolder(terrainSource, join(out, 'terrain'), surfaces);
85
+ }
75
86
  let scene;
76
87
  if (opts.scene) {
77
88
  const { patchSceneRoads } = await Promise.resolve().then(() => __importStar(require('./scenePatch')));
78
- scene = await patchSceneRoads({ sceneFile: resolve(opts.scene), out, ...(opts.library ? { library: resolve(opts.library) } : {}) });
89
+ scene = await patchSceneRoads({ sceneFile: resolve(opts.scene), out, ...(opts.library ? { library: resolve(opts.library) } : {}), ...(opts.engineAsphalt ? { engineAsphalt: true } : {}), ...(terrain ? { terrainDir: join(out, 'terrain') } : {}) });
79
90
  }
80
91
  const seconds = ((Date.now() - started) / 1000).toFixed(0);
81
92
  if (opts.json) {
82
- console.log(JSON.stringify({ report, ...(scene ? { scene } : {}) }, null, 2));
93
+ console.log(JSON.stringify({ report, ...(terrain ? { terrain } : {}), ...(scene ? { scene } : {}) }, null, 2));
83
94
  return;
84
95
  }
85
- const { formatRestyleReport } = await Promise.resolve().then(() => __importStar(require('./format')));
86
- console.log(`✔ ${target}\n${formatRestyleReport(report)}${scene ? `\n scene ${scene.sceneFile} (${scene.validation})` : ''}\n ${seconds} s`);
96
+ const { formatRestyleReport, formatTerrainCarveReport } = await Promise.resolve().then(() => __importStar(require('./format')));
97
+ console.log(`✔ ${target}\n${formatRestyleReport(report)}${terrain ? `\n${formatTerrainCarveReport(terrain)}` : ''}${scene ? `\n scene ${scene.sceneFile} (${scene.validation}${scene.libraryOverridden.length ? `; library: ${scene.libraryOverridden.join(', ')} calibrated for CS2` : ''})` : ''}\n ${seconds} s`);
87
98
  }
88
99
  catch (error) {
89
100
  fail(`✖ ${error instanceof Error ? error.message : String(error)}`);
@@ -1 +1 @@
1
- {"version":3,"file":"command.js","sourceRoot":"","sources":["../../../src/cs2/restyle/command.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"command.js","sourceRoot":"","sources":["../../../src/cs2/restyle/command.ts"],"names":[],"mappings":"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"}
@@ -1,2 +1,5 @@
1
1
  import type { RestyleReport } from './restyle';
2
+ import type { CarvedTerrainReport } from './terrainPack';
2
3
  export declare function formatRestyleReport(report: RestyleReport): string;
4
+ /** Share of road vertices under the drawn terrain at each stride, before and after the carve. */
5
+ export declare function formatTerrainCarveReport(report: CarvedTerrainReport): string;
@@ -1,6 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.formatRestyleReport = formatRestyleReport;
4
+ exports.formatTerrainCarveReport = formatTerrainCarveReport;
5
+ const ribbons_1 = require("./ribbons");
4
6
  const mib = (bytes) => `${(bytes / 1048576).toFixed(1)} MiB`;
5
7
  function formatRestyleReport(report) {
6
8
  const { before, after } = report;
@@ -9,9 +11,25 @@ function formatRestyleReport(report) {
9
11
  ` render ${before.render.cells} -> ${after.render.cells} cells (${after.render.refinedCells} from splitting crowded cells, densest ${after.render.maxCellTriangles} triangles), ${before.render.triangles} -> ${after.render.triangles} triangles, ${mib(before.render.bytes)} -> ${mib(after.render.bytes)}, widest ${before.render.maxSideM.toFixed(0)} -> ${after.render.maxSideM.toFixed(1)} m, ${before.render.materials} draws -> 1 per cell`,
10
12
  ` surfaces ${surfaces}`,
11
13
  ` markings ${before.markings.cells} -> ${after.markings.cells} cells, ${mib(before.markings.bytes)} -> ${mib(after.markings.bytes)}, ${after.markings.droppedTriangles} triangles dropped (no road under them)`,
14
+ ` paint ${report.ribbons.ribbons} ribbons widened: ${report.ribbons.lane} lane and centre lines to ${ribbons_1.MARKING_WIDTH_M.lane} m, ${report.ribbons.edge} edge lines to ${ribbons_1.MARKING_WIDTH_M.edge} m, ${report.ribbons.stop} stop lines and crossing bars to ${ribbons_1.MARKING_WIDTH_M.stop} m, ${report.ribbons.untouched} as drawn`,
12
15
  ` collider ${before.collider.cells} -> ${after.collider.cells} cells, ${before.collider.triangles} -> ${after.collider.triangles} triangles, max ${before.collider.maxTriangles} -> ${after.collider.maxTriangles}, over budget ${before.collider.overBudget} -> ${after.collider.overBudget}, widest ${before.collider.maxSideM.toFixed(0)} -> ${after.collider.maxSideM.toFixed(1)} m, worst simplify error ${after.collider.maxErrorM.toFixed(2)} m`,
13
16
  ...(report.far ? [` far ${report.far.cells} cells of ${report.far.cellSizeM} m, ${report.far.trianglesBefore} -> ${report.far.triangles} triangles at ${report.far.errorM} m (worst ${report.far.maxErrorM.toFixed(2)} m), ${mib(report.far.bytes)}, eager`] : []),
14
17
  ` clipped ${report.clippedTriangles} triangles crossed a cell plane; ${report.outsideGridTriangles} fell outside the grid`,
15
18
  ].join('\n');
16
19
  }
20
+ const pct = (share) => `${(share * 100).toFixed(2)}%`;
21
+ /** Share of road vertices under the drawn terrain at each stride, before and after the carve. */
22
+ function formatTerrainCarveReport(report) {
23
+ const { before, after, carve } = report;
24
+ const rows = before.lods.map((lod, at) => {
25
+ const next = after.lods[at];
26
+ const name = lod.stride === 8 ? 'stride 8 (32 m, the coarse layer)' : `stride ${lod.stride} (${lod.stride * 4} m)`;
27
+ return ` ${name.padEnd(34)} >= 5 cm ${pct(lod.share5cm)} -> ${pct(next.share5cm)} >= 50 cm ${pct(lod.share50cm)} -> ${pct(next.share50cm)}`;
28
+ });
29
+ return [
30
+ ` terrain carved under ${before.roadVertices} road vertices (${before.covered} under tunnels or deep trenches left out, ${before.elevated} on decks counted as clear)`,
31
+ ...rows,
32
+ ` lowered ${carve.samplesLowered} samples (p99 ${carve.p99LoweredMetres.toFixed(2)} m, max ${carve.maxLoweredMetres.toFixed(2)} m); rewrote ${report.tilesRewritten} of ${report.tiles} tiles${report.coarseRewritten ? ' and the coarse layer' : ''}`,
33
+ ].join('\n');
34
+ }
17
35
  //# sourceMappingURL=format.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"format.js","sourceRoot":"","sources":["../../../src/cs2/restyle/format.ts"],"names":[],"mappings":";;AAIA,kDAWC;AAbD,MAAM,GAAG,GAAG,CAAC,KAAa,EAAU,EAAE,CAAC,GAAG,CAAC,KAAK,GAAG,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC;AAE7E,SAAgB,mBAAmB,CAAC,MAAqB;IACvD,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,CAAC;IACjC,MAAM,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,GAAG,IAAI,IAAI,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAClJ,OAAO;QACL,eAAe,MAAM,CAAC,MAAM,CAAC,KAAK,OAAO,KAAK,CAAC,MAAM,CAAC,KAAK,WAAW,KAAK,CAAC,MAAM,CAAC,YAAY,0CAA0C,KAAK,CAAC,MAAM,CAAC,gBAAgB,gBAAgB,MAAM,CAAC,MAAM,CAAC,SAAS,OAAO,KAAK,CAAC,MAAM,CAAC,SAAS,eAAe,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,YAAY,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,MAAM,CAAC,MAAM,CAAC,SAAS,sBAAsB;QACvb,eAAe,QAAQ,EAAE;QACzB,eAAe,MAAM,CAAC,QAAQ,CAAC,KAAK,OAAO,KAAK,CAAC,QAAQ,CAAC,KAAK,WAAW,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,gBAAgB,yCAAyC;QACjN,eAAe,MAAM,CAAC,QAAQ,CAAC,KAAK,OAAO,KAAK,CAAC,QAAQ,CAAC,KAAK,WAAW,MAAM,CAAC,QAAQ,CAAC,SAAS,OAAO,KAAK,CAAC,QAAQ,CAAC,SAAS,mBAAmB,MAAM,CAAC,QAAQ,CAAC,YAAY,OAAO,KAAK,CAAC,QAAQ,CAAC,YAAY,iBAAiB,MAAM,CAAC,QAAQ,CAAC,UAAU,OAAO,KAAK,CAAC,QAAQ,CAAC,UAAU,YAAY,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,4BAA4B,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI;QACzb,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,eAAe,MAAM,CAAC,GAAG,CAAC,KAAK,aAAa,MAAM,CAAC,GAAG,CAAC,SAAS,OAAO,MAAM,CAAC,GAAG,CAAC,eAAe,OAAO,MAAM,CAAC,GAAG,CAAC,SAAS,iBAAiB,MAAM,CAAC,GAAG,CAAC,MAAM,aAAa,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACzQ,eAAe,MAAM,CAAC,gBAAgB,oCAAoC,MAAM,CAAC,oBAAoB,wBAAwB;KAC9H,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC"}
1
+ {"version":3,"file":"format.js","sourceRoot":"","sources":["../../../src/cs2/restyle/format.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ export declare const CS2_LIBRARY_OVERRIDES_SCHEMA = "helix.city-materials-overrides/1";
2
+ export declare function cs2AsphaltOverridesDir(): string;
3
+ export interface Cs2LibraryPack {
4
+ /** A folder `packageCityLibrary` reads. */
5
+ dir: string;
6
+ /** Slots that differ from the engine's pack. */
7
+ overridden: string[];
8
+ cleanup(): void;
9
+ }
10
+ /** The engine's pack with the CS2 asphalt textures substituted. With no override folder it is the engine's pack itself. */
11
+ export declare function cs2CityLibraryPack(base?: string, overridesDir?: string): Cs2LibraryPack;
@@ -0,0 +1,51 @@
1
+ "use strict";
2
+ // The city material library as a CS2 city wants it. The engine's pack (`assets/city-materials/v1`) is calibrated to the
3
+ // engine's own city goldens; a CS2 city is lit by the Granit shell, a much hotter sun and sky, and the same asphalt
4
+ // texture read twice as bright there (sunlit mean sRGB 171 against the golden's 85, pale and gravelly). The asphalt
5
+ // colour (and the roughness its normal map carries) are re-encoded, darker and flatter, in `assets/city-materials/cs2-asphalt`;
6
+ // every other texture is the engine's, byte for byte. The pack is assembled in a temporary folder (symlinks and the
7
+ // overrides, one rewritten `library.json`) because `packageCityLibrary` reads a folder.
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.CS2_LIBRARY_OVERRIDES_SCHEMA = void 0;
10
+ exports.cs2AsphaltOverridesDir = cs2AsphaltOverridesDir;
11
+ exports.cs2CityLibraryPack = cs2CityLibraryPack;
12
+ const node_crypto_1 = require("node:crypto");
13
+ const node_fs_1 = require("node:fs");
14
+ const node_os_1 = require("node:os");
15
+ const node_path_1 = require("node:path");
16
+ const materials_1 = require("../../city/assemble/materials");
17
+ exports.CS2_LIBRARY_OVERRIDES_SCHEMA = 'helix.city-materials-overrides/1';
18
+ function cs2AsphaltOverridesDir() {
19
+ return (0, node_path_1.resolve)(__dirname, '..', '..', '..', 'assets', 'city-materials', 'cs2-asphalt');
20
+ }
21
+ /** The engine's pack with the CS2 asphalt textures substituted. With no override folder it is the engine's pack itself. */
22
+ function cs2CityLibraryPack(base = (0, materials_1.defaultCityMaterialsPack)(), overridesDir = cs2AsphaltOverridesDir()) {
23
+ const manifestFile = (0, node_path_1.join)(overridesDir, 'overrides.json');
24
+ if (!(0, node_fs_1.existsSync)(manifestFile))
25
+ return { dir: base, overridden: [], cleanup: () => undefined };
26
+ const overrides = JSON.parse((0, node_fs_1.readFileSync)(manifestFile, 'utf8'));
27
+ if (overrides.schema !== exports.CS2_LIBRARY_OVERRIDES_SCHEMA)
28
+ throw new Error(`${manifestFile}: not a ${exports.CS2_LIBRARY_OVERRIDES_SCHEMA} file`);
29
+ const pack = JSON.parse((0, node_fs_1.readFileSync)((0, node_path_1.join)(base, 'library.json'), 'utf8'));
30
+ const dir = (0, node_fs_1.mkdtempSync)((0, node_path_1.join)((0, node_os_1.tmpdir)(), 'helix-cs2-library-'));
31
+ (0, node_fs_1.mkdirSync)((0, node_path_1.join)(dir, 'tex'), { recursive: true });
32
+ const textures = {};
33
+ for (const [slot, entry] of Object.entries(pack.textures)) {
34
+ const override = overrides.textures[slot];
35
+ if (!override) {
36
+ (0, node_fs_1.symlinkSync)((0, node_path_1.join)(base, entry.path), (0, node_path_1.join)(dir, entry.path));
37
+ textures[slot] = entry;
38
+ continue;
39
+ }
40
+ const source = (0, node_path_1.join)(overridesDir, override.file);
41
+ const data = (0, node_fs_1.readFileSync)(source);
42
+ (0, node_fs_1.symlinkSync)(source, (0, node_path_1.join)(dir, entry.path));
43
+ textures[slot] = { ...entry, bytes: data.length, sha256: (0, node_crypto_1.createHash)('sha256').update(data).digest('hex'), width: override.width, height: override.height, srgb: override.srgb };
44
+ }
45
+ for (const slot of Object.keys(overrides.textures))
46
+ if (!pack.textures[slot])
47
+ throw new Error(`${manifestFile}: the engine's pack has no texture slot "${slot}"`);
48
+ (0, node_fs_1.writeFileSync)((0, node_path_1.join)(dir, 'library.json'), `${JSON.stringify({ ...pack, textures }, null, 2)}\n`, 'utf8');
49
+ return { dir, overridden: Object.keys(overrides.textures), cleanup: () => (0, node_fs_1.rmSync)(dir, { recursive: true, force: true }) };
50
+ }
51
+ //# sourceMappingURL=library.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"library.js","sourceRoot":"","sources":["../../../src/cs2/restyle/library.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  import { type CellGlbResult } from './cellGlb';
2
+ import { type RibbonStats } from './ribbons';
2
3
  export declare const RESTYLE_COLLIDER_MAX_TRIANGLES = 60000;
3
4
  /** Scene perf rule P05 refuses a streamed cell over 300,000 triangles; a cell (surface and paint) is split before 250,000. */
4
5
  export declare const RESTYLE_CELL_MAX_TRIANGLES = 250000;
@@ -14,8 +15,14 @@ export declare const MARKING_PAINT: {
14
15
  readonly white: readonly [0.92, 0.92, 0.9];
15
16
  readonly yellow: readonly [0.85, 0.62, 0.12];
16
17
  };
17
- /** `_ROAD.w` of paint: how worn it reads (the shader scales chipping and wear by 0.35 + 1.3 x this). */
18
- export declare const MARKING_AGE = 0.12;
18
+ /** `_ROAD.w` of paint: how worn it reads (the shader scales chipping and wear by 0.35 + 1.3 x this). Fresh paint: worn lines vanish at 60 m. */
19
+ export declare const MARKING_AGE = 0.04;
20
+ /**
21
+ * The solid core of the `line` tile across its width, as a fraction: texels 12 to 55 of 64 are paint (about 80 % alpha), the
22
+ * rest is a transparent margin, so a ribbon mapped edge to edge paints only 69 % of its width. Rails map to the core instead,
23
+ * a texel and a half inside it, so the painted width is the ribbon's width.
24
+ */
25
+ export declare const MARKING_LINE_CORE: readonly [0.22, 0.84];
19
26
  export interface RestyleOptions {
20
27
  colliderMaxTriangles?: number;
21
28
  /** Triangles above which a render cell is split into quarters (default RESTYLE_CELL_MAX_TRIANGLES). */
@@ -72,6 +79,8 @@ export interface RestyleReport {
72
79
  outsideGridTriangles: number;
73
80
  textures: number;
74
81
  colliders: RestyleColliderReport[];
82
+ /** Paint ribbons by class (`ribbons.ts`). */
83
+ ribbons: RibbonStats;
75
84
  /** The far layer, when asked for. */
76
85
  far?: {
77
86
  cells: number;
@@ -8,7 +8,7 @@
8
8
  // * every cell is clipped at the 1,024 m grid (a baked piece overhangs its cell by up to 70 m, which is what scene perf
9
9
  // rule P05 refuses) and the collider tier is welded and simplified to 60k triangles.
10
10
  Object.defineProperty(exports, "__esModule", { value: true });
11
- exports.MARKING_AGE = exports.MARKING_PAINT = exports.MARKING_LINE_TILE = exports.RESTYLE_COLLIDER_ERROR_CAP_M = exports.RESTYLE_COLLIDER_ERROR_M = exports.RESTYLE_CELL_MIN_SIZE_M = exports.RESTYLE_CELL_MAX_TRIANGLES = exports.RESTYLE_COLLIDER_MAX_TRIANGLES = void 0;
11
+ exports.MARKING_LINE_CORE = exports.MARKING_AGE = exports.MARKING_PAINT = exports.MARKING_LINE_TILE = exports.RESTYLE_COLLIDER_ERROR_CAP_M = exports.RESTYLE_COLLIDER_ERROR_M = exports.RESTYLE_CELL_MIN_SIZE_M = exports.RESTYLE_CELL_MAX_TRIANGLES = exports.RESTYLE_COLLIDER_MAX_TRIANGLES = void 0;
12
12
  exports.restyleCs2Roads = restyleCs2Roads;
13
13
  const node_crypto_1 = require("node:crypto");
14
14
  const promises_1 = require("node:fs/promises");
@@ -18,9 +18,11 @@ const glb_1 = require("../convert/glb");
18
18
  const bakedCell_1 = require("./bakedCell");
19
19
  const cellGlb_1 = require("./cellGlb");
20
20
  const classify_1 = require("./classify");
21
+ const terrainConform_1 = require("../convert/terrainConform");
21
22
  const far_1 = require("./far");
22
23
  const grow_1 = require("./grow");
23
24
  const refine_1 = require("./refine");
25
+ const ribbons_1 = require("./ribbons");
24
26
  const walk_1 = require("./walk");
25
27
  exports.RESTYLE_COLLIDER_MAX_TRIANGLES = 60_000;
26
28
  /** Scene perf rule P05 refuses a streamed cell over 300,000 triangles; a cell (surface and paint) is split before 250,000. */
@@ -34,8 +36,14 @@ exports.RESTYLE_COLLIDER_ERROR_CAP_M = 0.8;
34
36
  exports.MARKING_LINE_TILE = [0.5, 0.5, 0.0625, 0.5];
35
37
  /** The engine's `MARKING_PAINT`. */
36
38
  exports.MARKING_PAINT = { white: [0.92, 0.92, 0.9], yellow: [0.85, 0.62, 0.12] };
37
- /** `_ROAD.w` of paint: how worn it reads (the shader scales chipping and wear by 0.35 + 1.3 x this). */
38
- exports.MARKING_AGE = 0.12;
39
+ /** `_ROAD.w` of paint: how worn it reads (the shader scales chipping and wear by 0.35 + 1.3 x this). Fresh paint: worn lines vanish at 60 m. */
40
+ exports.MARKING_AGE = 0.04;
41
+ /**
42
+ * The solid core of the `line` tile across its width, as a fraction: texels 12 to 55 of 64 are paint (about 80 % alpha), the
43
+ * rest is a transparent margin, so a ribbon mapped edge to edge paints only 69 % of its width. Rails map to the core instead,
44
+ * a texel and a half inside it, so the painted width is the ribbon's width.
45
+ */
46
+ exports.MARKING_LINE_CORE = [0.22, 0.84];
39
47
  /** `_ROAD` of asphalt: lateral 0.5, no lane structure (the baked pieces are lane fragments), wear 0.5. */
40
48
  const ASPHALT_ROAD = [0, 128, 0, 128];
41
49
  // ---------------------------------------------------------------------------------------------------- surfaces
@@ -91,6 +99,38 @@ function addSurface(prim, grid, cells, tally, bySurface) {
91
99
  cell.indices.push3(base, base + 1, base + 2);
92
100
  });
93
101
  }
102
+ /** A world-space index of the asphalt triangles (the edge-line test asks it whether a point beside a ribbon is still road). */
103
+ function asphaltIndex(surfaces, grid) {
104
+ let triangles = 0;
105
+ for (const cell of surfaces.values()) {
106
+ const kinds = cell.kinds.view(), indices = cell.indices.view();
107
+ for (let at = 0; at < indices.length; at += 3)
108
+ if (kinds[indices[at]] === classify_1.CITY_SURFACE.ASPHALT && kinds[indices[at + 1]] === classify_1.CITY_SURFACE.ASPHALT && kinds[indices[at + 2]] === classify_1.CITY_SURFACE.ASPHALT)
109
+ triangles += 1;
110
+ }
111
+ if (triangles === 0)
112
+ return null;
113
+ const positions = new Float32Array(triangles * 9);
114
+ const indices = new Uint32Array(triangles * 3);
115
+ let out = 0;
116
+ for (const [cx, cz, cell] of ordered(surfaces)) {
117
+ const kinds = cell.kinds.view(), ids = cell.indices.view(), local = cell.positions.view();
118
+ const ox = cx * grid.size + grid.originX, oz = cz * grid.size + grid.originZ;
119
+ for (let at = 0; at < ids.length; at += 3) {
120
+ if (kinds[ids[at]] !== classify_1.CITY_SURFACE.ASPHALT || kinds[ids[at + 1]] !== classify_1.CITY_SURFACE.ASPHALT || kinds[ids[at + 2]] !== classify_1.CITY_SURFACE.ASPHALT)
121
+ continue;
122
+ for (let k = 0; k < 3; k += 1) {
123
+ const id = ids[at + k];
124
+ positions[out * 3] = local[id * 3] + ox;
125
+ positions[out * 3 + 1] = local[id * 3 + 1];
126
+ positions[out * 3 + 2] = local[id * 3 + 2] + oz;
127
+ indices[out] = out;
128
+ out += 1;
129
+ }
130
+ }
131
+ }
132
+ return (0, terrainConform_1.buildSurfaceHeightIndex)([{ positions, indices }]);
133
+ }
94
134
  function surfaceMesh(cell) {
95
135
  const kinds = cell.kinds.view();
96
136
  const road = new Uint8Array(kinds.length * 4);
@@ -153,7 +193,7 @@ function markingMesh(cell) {
153
193
  const age = Math.round(exports.MARKING_AGE * 255);
154
194
  for (let at = 0; at < sides.length; at += 1) {
155
195
  // Across the ribbon from rail to rail; along it the middle of the tile, which is solid paint at any length.
156
- uvs[at * 2] = u0 + sides[at] * du;
196
+ uvs[at * 2] = u0 + du * (exports.MARKING_LINE_CORE[0] + sides[at] * (exports.MARKING_LINE_CORE[1] - exports.MARKING_LINE_CORE[0]));
157
197
  uvs[at * 2 + 1] = v0 + dv * 0.5;
158
198
  road[at * 4 + 3] = age;
159
199
  const paint = yellow[at] ? exports.MARKING_PAINT.yellow : exports.MARKING_PAINT.white;
@@ -263,6 +303,7 @@ async function restyleCs2Roads(source, out, options = {}) {
263
303
  outsideGridTriangles: 0,
264
304
  textures: 0,
265
305
  colliders: [],
306
+ ribbons: (0, ribbons_1.emptyRibbonStats)(),
266
307
  };
267
308
  // ---- render and paint tiers, built in memory at the source grid
268
309
  const surfaces = new Map();
@@ -274,10 +315,14 @@ async function restyleCs2Roads(source, out, options = {}) {
274
315
  log(`render ${at + 1}/${index.render.length}`);
275
316
  }
276
317
  const markings = new Map();
318
+ const asphalt = asphaltIndex(surfaces, grid);
319
+ const onAsphalt = (x, y, z) => { const h = asphalt?.heightAt(x, z, y); return h !== null && h !== undefined && Math.abs(h - y) < 0.5; };
277
320
  for (const cell of markingCells) {
278
321
  const baked = await (0, bakedCell_1.readBakedCell)(new Uint8Array(await (0, promises_1.readFile)((0, node_path_1.join)(source, cell.file))));
279
- for (const prim of baked.primitives)
322
+ for (const prim of baked.primitives) {
323
+ (0, ribbons_1.widenRibbons)(prim, asphalt ? onAsphalt : null, report.ribbons);
280
324
  addMarking(prim, grid, markings, tally);
325
+ }
281
326
  }
282
327
  // ---- far layer: the driving surface of the cells above, welded across their borders and simplified.
283
328
  if (options.farOut) {