@hypersoniclabs/helix-cli 0.1.25-helix3.488 → 0.1.25-helix3.489

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 (62) hide show
  1. package/dist/cs2/index.d.ts +1 -1
  2. package/dist/cs2/index.js.map +1 -1
  3. package/dist/cs2/inspect.d.ts +1 -1
  4. package/dist/cs2/inspect.js +2 -2
  5. package/dist/cs2/inspect.js.map +1 -1
  6. package/dist/cs2/restyle/bakedCell.d.ts +18 -0
  7. package/dist/cs2/restyle/bakedCell.js +102 -0
  8. package/dist/cs2/restyle/bakedCell.js.map +1 -0
  9. package/dist/cs2/restyle/cellGlb.d.ts +34 -0
  10. package/dist/cs2/restyle/cellGlb.js +132 -0
  11. package/dist/cs2/restyle/cellGlb.js.map +1 -0
  12. package/dist/cs2/restyle/classify.d.ts +22 -0
  13. package/dist/cs2/restyle/classify.js +43 -0
  14. package/dist/cs2/restyle/classify.js.map +1 -0
  15. package/dist/cs2/restyle/command.d.ts +6 -0
  16. package/dist/cs2/restyle/command.js +93 -0
  17. package/dist/cs2/restyle/command.js.map +1 -0
  18. package/dist/cs2/restyle/far.d.ts +45 -0
  19. package/dist/cs2/restyle/far.js +147 -0
  20. package/dist/cs2/restyle/far.js.map +1 -0
  21. package/dist/cs2/restyle/format.d.ts +2 -0
  22. package/dist/cs2/restyle/format.js +17 -0
  23. package/dist/cs2/restyle/format.js.map +1 -0
  24. package/dist/cs2/restyle/grow.d.ts +34 -0
  25. package/dist/cs2/restyle/grow.js +74 -0
  26. package/dist/cs2/restyle/grow.js.map +1 -0
  27. package/dist/cs2/restyle/refine.d.ts +15 -0
  28. package/dist/cs2/restyle/refine.js +118 -0
  29. package/dist/cs2/restyle/refine.js.map +1 -0
  30. package/dist/cs2/restyle/restyle.d.ts +91 -0
  31. package/dist/cs2/restyle/restyle.js +437 -0
  32. package/dist/cs2/restyle/restyle.js.map +1 -0
  33. package/dist/cs2/restyle/scenePatch.d.ts +27 -0
  34. package/dist/cs2/restyle/scenePatch.js +104 -0
  35. package/dist/cs2/restyle/scenePatch.js.map +1 -0
  36. package/dist/cs2/restyle/walk.d.ts +48 -0
  37. package/dist/cs2/restyle/walk.js +77 -0
  38. package/dist/cs2/restyle/walk.js.map +1 -0
  39. package/dist/cs2/roads.d.ts +11 -6
  40. package/dist/cs2/roads.js +27 -19
  41. package/dist/cs2/roads.js.map +1 -1
  42. package/dist/cs2/types.d.ts +2 -1
  43. package/dist/index.js +2 -0
  44. package/dist/index.js.map +1 -1
  45. package/dist/tsconfig.build.tsbuildinfo +1 -1
  46. package/docs/scene-perf.md +5 -0
  47. package/package.json +1 -1
  48. package/plugins/beamng-vehicle/bin/__pycache__/beamng_abs.cpython-312.pyc +0 -0
  49. package/plugins/beamng-vehicle/bin/__pycache__/beamng_audio.cpython-312.pyc +0 -0
  50. package/plugins/beamng-vehicle/bin/__pycache__/beamng_engine.cpython-312.pyc +0 -0
  51. package/plugins/beamng-vehicle/bin/__pycache__/beamng_expression.cpython-312.pyc +0 -0
  52. package/plugins/beamng-vehicle/bin/__pycache__/beamng_jbeam.cpython-312.pyc +0 -0
  53. package/plugins/beamng-vehicle/bin/__pycache__/beamng_materials.cpython-312.pyc +0 -0
  54. package/plugins/beamng-vehicle/bin/__pycache__/beamng_stock_events.cpython-312.pyc +0 -0
  55. package/plugins/beamng-vehicle/bin/__pycache__/fmod_studio.cpython-312.pyc +0 -0
  56. package/plugins/beamng-vehicle/bin/__pycache__/fsb5.cpython-312.pyc +0 -0
  57. package/plugins/beamng-vehicle/bin/__pycache__/sim_audio.cpython-312.pyc +0 -0
  58. package/plugins/beamng-vehicle/bin/__pycache__/sim_audio_ac.cpython-312.pyc +0 -0
  59. package/plugins/beamng-vehicle/bin/__pycache__/sim_audio_beamng.cpython-312.pyc +0 -0
  60. package/plugins/beamng-vehicle/bin/__pycache__/sim_audio_fixtures.cpython-312.pyc +0 -0
  61. package/plugins/beamng-vehicle/bin/__pycache__/test_beamng_engine.cpython-312.pyc +0 -0
  62. package/plugins/beamng-vehicle/bin/__pycache__/test_sim_audio.cpython-312.pyc +0 -0
@@ -5,7 +5,7 @@ export { CSM2_GROUPED_HEADER_BYTES, CSM2_GROUP_BYTES, CSM2_HEADER_BYTES, CSM2_LO
5
5
  export { PLACEMENT_LOT_SIZE_STRIDE, PLACEMENT_RECORD_STRIDE, PLACEMENT_TRANSFORM_STRIDE, iterate, prefabName, readCs2Placements, tileBoundsWorld, tileRange, type Cs2Placement, type Cs2PlacementCollection, type Cs2Placements, type Cs2TileBounds, } from './placements';
6
6
  export { loadCs2TerrainGrid, loadCs2TerrainSplat, metresPerSampleForRes, readCs2Terrain, type Cs2Terrain, type Cs2TerrainGrid, type Cs2TerrainSplat, } from './terrain';
7
7
  export { readCs2Water, sampleToWorld, worldToSample, type Cs2WaterField, type Cs2WaterSample } from './water';
8
- export { ROAD_CURVE_STRIDE, ROAD_EDGE_SURFACE_STRIDE, ROAD_FLAGS, ROAD_KINDS, ROAD_LANE_STRIDE, ROAD_OWNER_KINDS, curveAt, edgeSurfaceAt, iterateRoadEdges, laneAt, readAppliedCompositions, readCs2RoadBins, readEdgeRenderParameters, readRoadNodes, readRoadsHeader, roadFlagNames, roadKindName, type Cs2RoadBins, type Cs2RoadCurve, type Cs2RoadEdgeSurface, type Cs2RoadFlagName, type Cs2RoadLane, } from './roads';
8
+ export { ROAD_CURVE_STRIDE, ROAD_EDGE_SURFACE_STRIDE, ROAD_FLAGS, ROAD_KINDS, ROAD_LANE_STRIDE, ROAD_OWNER_KINDS, curveAt, edgeSurfaceAt, iterateRoadEdges, laneAt, readAppliedCompositions, readCs2RoadBins, readEdgeRenderParameters, readRoadNodes, readRoadsHeader, roadFlagNames, roadKindName, type Cs2RoadBins, type Cs2RoadCurve, type Cs2RoadEdgeSurface, type Cs2RoadFlagName, type Cs2RoadLane, type Cs2RoadsReadOptions, } from './roads';
9
9
  export { GENERATED_VERTEX_STRIDE, TERRAIN_CONFORMANCE_LIFT_METRES, TERRAIN_CONFORMANCE_LIMIT_METRES, decodeVertex, deformInstance, evalTerrainConformance, readCs2RoadPieces, type Cs2DeformedInstance, type Cs2GeneratedMesh, type Cs2GeneratedVertex, type Cs2RoadPieces, type Cs2TerrainConformance, } from './roadPieces';
10
10
  export { AREA_POSITION_STRIDE, AREA_RECORD_STRIDE, AREA_Y_LIFT_METRES, areaRecord, readCs2Areas, triangleNormal, triangles, type Cs2AreaRecord, type Cs2AreaTriangle, type Cs2Areas, } from './areas';
11
11
  export { IDENTITY_MAP_CHROMA, IDENTITY_MAP_PURITY, bindingKey, contentKey, distinctTextureFiles, isDecalShader, isIdentityMap, materialForGroup, readCs2MaterialBundle, resolveTextureRoles, textureFileBytes, textureRoleScore, type Cs2MaterialBundle, type Cs2SelectedTexture, type Cs2TextureRole, } from './materials';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cs2/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cs2/index.ts"],"names":[],"mappings":"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"}
@@ -33,7 +33,7 @@ export interface Cs2BundleReport {
33
33
  roadSlots: number;
34
34
  };
35
35
  roads: {
36
- captureId: string;
36
+ captureId?: string;
37
37
  lanes: number;
38
38
  curves: number;
39
39
  edgeSurfaces: number;
@@ -59,7 +59,7 @@ async function inspectCs2Bundle(root) {
59
59
  const generated = await (0, binary_1.readJsonFile)((0, node_path_1.join)(root, 'road-pieces', 'road-composition-generated.json'), 'inspectCs2Bundle');
60
60
  (0, binary_1.assertSchema)(generated.schema, types_1.CS2_ROAD_GENERATED_SCHEMA, 'inspectCs2Bundle: road-composition-generated.json');
61
61
  schemas.roadPieces = generated.schema;
62
- if (generated.captureId !== roads.captureId)
62
+ if (roads.captureId !== undefined && generated.captureId !== roads.captureId)
63
63
  warnings.push(`captureId mismatch: roads "${roads.captureId}" vs road-pieces "${generated.captureId}"`);
64
64
  const areas = await (0, binary_1.readJsonFile)((0, node_path_1.join)(root, 'areas', 'areas.json'), 'inspectCs2Bundle');
65
65
  (0, binary_1.assertSchema)(areas.schema, types_1.CS2_AREAS_SCHEMA, 'inspectCs2Bundle: areas.json');
@@ -109,7 +109,7 @@ async function inspectCs2Bundle(root) {
109
109
  roadSlots: roadMaterialBundle.manifest.entries.length,
110
110
  },
111
111
  roads: {
112
- captureId: roads.captureId,
112
+ ...(roads.captureId === undefined ? {} : { captureId: roads.captureId }),
113
113
  lanes: roads.lanes.count,
114
114
  curves: roads.curves.count,
115
115
  edgeSurfaces: roads.edgeSurfaces.count,
@@ -1 +1 @@
1
- {"version":3,"file":"inspect.js","sourceRoot":"","sources":["../../src/cs2/inspect.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"inspect.js","sourceRoot":"","sources":["../../src/cs2/inspect.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ export interface BakedPrimitive {
2
+ /** The slot material the bake named, `road-<slot>` for a surface and `marking*` for paint. */
3
+ material: string;
4
+ /** World metres, x/y/z interleaved: the node transform is already applied. */
5
+ positions: Float32Array;
6
+ normals: Float32Array;
7
+ /** Absent on a collider. */
8
+ uvs?: Float32Array;
9
+ /** Linear RGB, three floats per vertex; only on variant A markings. */
10
+ colours?: Float32Array;
11
+ indices: Uint32Array;
12
+ }
13
+ export interface BakedCell {
14
+ primitives: BakedPrimitive[];
15
+ }
16
+ /** Rewrites the JSON chunk without images, textures or samplers, so the document stands alone. */
17
+ export declare function withoutImages(glb: Uint8Array): Uint8Array;
18
+ export declare function readBakedCell(glb: Uint8Array): Promise<BakedCell>;
@@ -0,0 +1,102 @@
1
+ "use strict";
2
+ // Reads one baked CS2 road cell (the GLBs `bakeCs2Roads` wrote: meshopt payloads, quantized positions behind a node
3
+ // transform, KTX2 images named by bare file name) back into plain world-space arrays. The restyle never needs the
4
+ // textures, so the image references are cut out of the container before gltf-transform sees them: they would otherwise
5
+ // have to resolve to files that live in a sibling folder.
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.withoutImages = withoutImages;
8
+ exports.readBakedCell = readBakedCell;
9
+ const core_1 = require("@gltf-transform/core");
10
+ const extensions_1 = require("@gltf-transform/extensions");
11
+ const meshoptimizer_1 = require("meshoptimizer");
12
+ const GLB_JSON = 0x4e4f534a;
13
+ /** Rewrites the JSON chunk without images, textures or samplers, so the document stands alone. */
14
+ function withoutImages(glb) {
15
+ const view = new DataView(glb.buffer, glb.byteOffset, glb.byteLength);
16
+ if (view.getUint32(0, true) !== 0x46546c67)
17
+ throw new Error('not a GLB container');
18
+ const jsonLength = view.getUint32(12, true);
19
+ if (view.getUint32(16, true) !== GLB_JSON)
20
+ throw new Error('GLB: first chunk is not JSON');
21
+ const json = JSON.parse(new TextDecoder().decode(glb.subarray(20, 20 + jsonLength)));
22
+ for (const material of json.materials ?? [])
23
+ if (material.pbrMetallicRoughness)
24
+ delete material.pbrMetallicRoughness.baseColorTexture;
25
+ delete json.images;
26
+ delete json.textures;
27
+ delete json.samplers;
28
+ json.extensionsUsed = (json.extensionsUsed ?? []).filter((name) => name !== 'KHR_texture_basisu');
29
+ json.extensionsRequired = (json.extensionsRequired ?? []).filter((name) => name !== 'KHR_texture_basisu');
30
+ const text = new TextEncoder().encode(JSON.stringify(json));
31
+ const padded = new Uint8Array(Math.ceil(text.length / 4) * 4).fill(0x20);
32
+ padded.set(text);
33
+ const rest = glb.subarray(20 + jsonLength);
34
+ const out = new Uint8Array(12 + 8 + padded.length + rest.length);
35
+ const outView = new DataView(out.buffer);
36
+ out.set(glb.subarray(0, 12), 0);
37
+ outView.setUint32(8, out.length, true);
38
+ outView.setUint32(12, padded.length, true);
39
+ outView.setUint32(16, GLB_JSON, true);
40
+ out.set(padded, 20);
41
+ out.set(rest, 20 + padded.length);
42
+ return out;
43
+ }
44
+ let sharedIo = null;
45
+ async function io() {
46
+ await meshoptimizer_1.MeshoptDecoder.ready;
47
+ sharedIo ??= new core_1.NodeIO()
48
+ .setLogger(new core_1.Logger(core_1.Logger.Verbosity.ERROR))
49
+ .registerExtensions([extensions_1.KHRMeshQuantization, extensions_1.EXTMeshoptCompression])
50
+ .registerDependencies({ 'meshopt.decoder': meshoptimizer_1.MeshoptDecoder });
51
+ return sharedIo;
52
+ }
53
+ async function readBakedCell(glb) {
54
+ const document = await (await io()).readBinary(withoutImages(glb));
55
+ const nodes = document.getRoot().listNodes();
56
+ const primitives = [];
57
+ for (const node of nodes) {
58
+ const mesh = node.getMesh();
59
+ if (!mesh)
60
+ continue;
61
+ const translation = node.getTranslation();
62
+ const scale = node.getScale();
63
+ for (const primitive of mesh.listPrimitives()) {
64
+ const positionAccessor = primitive.getAttribute('POSITION');
65
+ const indexAccessor = primitive.getIndices();
66
+ if (!positionAccessor || !indexAccessor)
67
+ throw new Error('baked cell primitive has no POSITION or indices');
68
+ const read = (semantic, width) => {
69
+ const accessor = primitive.getAttribute(semantic);
70
+ if (!accessor)
71
+ return undefined;
72
+ const out = new Float32Array(accessor.getCount() * width);
73
+ const element = [];
74
+ for (let at = 0; at < accessor.getCount(); at += 1) {
75
+ accessor.getElement(at, element);
76
+ for (let lane = 0; lane < width; lane += 1)
77
+ out[at * width + lane] = element[lane];
78
+ }
79
+ return out;
80
+ };
81
+ const positions = read('POSITION', 3);
82
+ for (let at = 0; at < positions.length; at += 3) {
83
+ positions[at] = positions[at] * scale[0] + translation[0];
84
+ positions[at + 1] = positions[at + 1] * scale[1] + translation[1];
85
+ positions[at + 2] = positions[at + 2] * scale[2] + translation[2];
86
+ }
87
+ const normals = read('NORMAL', 3);
88
+ const uvs = read('TEXCOORD_0', 2);
89
+ const colours = read('COLOR_0', 3);
90
+ primitives.push({
91
+ material: primitive.getMaterial()?.getName() ?? '',
92
+ positions,
93
+ normals: normals ?? new Float32Array(positions.length),
94
+ ...(uvs ? { uvs } : {}),
95
+ ...(colours ? { colours } : {}),
96
+ indices: Uint32Array.from(indexAccessor.getArray()),
97
+ });
98
+ }
99
+ }
100
+ return { primitives };
101
+ }
102
+ //# sourceMappingURL=bakedCell.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bakedCell.js","sourceRoot":"","sources":["../../../src/cs2/restyle/bakedCell.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,34 @@
1
+ export declare const CITY_MATERIALS_GLTF_EXTENSION = "HELIX_materials_city";
2
+ export declare const ROAD_ATTRIBUTE = "_ROAD";
3
+ export declare const LATTICE_PER_M = 60;
4
+ export declare const SURFACE_FALLBACK_LINEAR: Readonly<Record<number, [number, number, number]>>;
5
+ export interface CellMeshInput {
6
+ /** Cell-local metres (0 to 1,024 on x and z): the node translation is added back by the reader. */
7
+ positions: Float32Array;
8
+ normals: Float32Array;
9
+ indices: Uint32Array;
10
+ /** `_ROAD` bytes, four per vertex. */
11
+ road: Uint8Array;
12
+ /** `COLOR_0` bytes, four per vertex. */
13
+ colour: Uint8Array;
14
+ /** Atlas UVs in 0..1, two per vertex (markings only). */
15
+ uvs?: Float32Array;
16
+ }
17
+ export interface CellGlbResult {
18
+ bytes: Uint8Array;
19
+ triangles: number;
20
+ vertices: number;
21
+ /** World bounds of the lattice-snapped geometry, which is what the file really holds. */
22
+ bounds: {
23
+ min: [number, number, number];
24
+ max: [number, number, number];
25
+ };
26
+ }
27
+ /** Marks the material with the extension. gltf-transform has no model of `HELIX_materials_city`, so the JSON chunk is patched. */
28
+ export declare function patchCityMaterialExtension(glb: Uint8Array, kinds: readonly string[]): Uint8Array;
29
+ /**
30
+ * One mesh with one primitive (`asphalt` or `markings`). `origin` is the cell's world corner on x and z; `name` names the
31
+ * node. Every vertex snaps to the 1/60 m lattice, so a border vertex that sits on a cell plane (a multiple of 1,024 m,
32
+ * hence of the lattice step) lands on the same point in both neighbours.
33
+ */
34
+ export declare function writeCityCellGlb(name: string, kind: 'asphalt' | 'markings', origin: readonly [number, number], mesh: CellMeshInput, latticePerM?: number): Promise<CellGlbResult>;
@@ -0,0 +1,132 @@
1
+ "use strict";
2
+ // The restyled cell writer: the engine's city-material cell contract (the same one `helix city roads build` writes).
3
+ // Positions are uint16 on a 1/60 m lattice behind a uniform node scale, normals int8, `_ROAD` and `COLOR_0` uint8, atlas
4
+ // UVs uint16, everything through EXT_meshopt_compression. `HELIX_materials_city` is listed in `extensionsUsed`, never
5
+ // required, so a runtime that ignores it still draws every primitive's plain PBR colour.
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.SURFACE_FALLBACK_LINEAR = exports.LATTICE_PER_M = exports.ROAD_ATTRIBUTE = exports.CITY_MATERIALS_GLTF_EXTENSION = void 0;
8
+ exports.patchCityMaterialExtension = patchCityMaterialExtension;
9
+ exports.writeCityCellGlb = writeCityCellGlb;
10
+ const core_1 = require("@gltf-transform/core");
11
+ const extensions_1 = require("@gltf-transform/extensions");
12
+ const meshoptimizer_1 = require("meshoptimizer");
13
+ const classify_1 = require("./classify");
14
+ exports.CITY_MATERIALS_GLTF_EXTENSION = 'HELIX_materials_city';
15
+ exports.ROAD_ATTRIBUTE = '_ROAD';
16
+ exports.LATTICE_PER_M = 60;
17
+ /** The engine's `ROAD_SURFACE` kinds' portable fallback colours (`roadFallbackColor`), linear RGB. */
18
+ const srgb = (value) => {
19
+ const c = value / 255;
20
+ return c <= 0.04045 ? c / 12.92 : ((c + 0.055) / 1.055) ** 2.4;
21
+ };
22
+ const fallback = (r, g, b) => [srgb(r), srgb(g), srgb(b)];
23
+ exports.SURFACE_FALLBACK_LINEAR = {
24
+ [classify_1.CITY_SURFACE.ASPHALT]: fallback(86, 86, 85),
25
+ [classify_1.CITY_SURFACE.CONCRETE]: fallback(150, 148, 144),
26
+ [classify_1.CITY_SURFACE.SETT]: fallback(112, 104, 96),
27
+ [classify_1.CITY_SURFACE.GRAVEL]: fallback(138, 128, 112),
28
+ [classify_1.CITY_SURFACE.KERB]: fallback(136, 133, 129),
29
+ [classify_1.CITY_SURFACE.SIDEWALK]: fallback(159, 156, 151),
30
+ [classify_1.CITY_SURFACE.MEDIAN]: fallback(104, 112, 92),
31
+ };
32
+ let sharedIo = null;
33
+ function io() {
34
+ sharedIo ??= new core_1.NodeIO().setLogger(new core_1.Logger(core_1.Logger.Verbosity.ERROR)).registerExtensions([extensions_1.KHRMeshQuantization, extensions_1.EXTMeshoptCompression])
35
+ .registerDependencies({ 'meshopt.encoder': meshoptimizer_1.MeshoptEncoder });
36
+ return sharedIo;
37
+ }
38
+ /** Marks the material with the extension. gltf-transform has no model of `HELIX_materials_city`, so the JSON chunk is patched. */
39
+ function patchCityMaterialExtension(glb, kinds) {
40
+ const view = new DataView(glb.buffer, glb.byteOffset, glb.byteLength);
41
+ const jsonLength = view.getUint32(12, true);
42
+ const json = JSON.parse(new TextDecoder().decode(glb.subarray(20, 20 + jsonLength)));
43
+ (json.materials ?? []).forEach((material, index) => {
44
+ material.extensions = { ...material.extensions, [exports.CITY_MATERIALS_GLTF_EXTENSION]: { kind: kinds[index], version: 1 } };
45
+ });
46
+ json.extensionsUsed = [...new Set([...(json.extensionsUsed ?? []), exports.CITY_MATERIALS_GLTF_EXTENSION])];
47
+ const patched = new TextEncoder().encode(JSON.stringify(json));
48
+ const padded = new Uint8Array(Math.ceil(patched.length / 4) * 4).fill(0x20);
49
+ padded.set(patched);
50
+ const rest = glb.subarray(20 + jsonLength);
51
+ const out = new Uint8Array(12 + 8 + padded.length + rest.length);
52
+ const outView = new DataView(out.buffer);
53
+ out.set(glb.subarray(0, 12), 0);
54
+ outView.setUint32(8, out.length, true);
55
+ outView.setUint32(12, padded.length, true);
56
+ outView.setUint32(16, 0x4e4f534a, true);
57
+ out.set(padded, 20);
58
+ out.set(rest, 20 + padded.length);
59
+ return out;
60
+ }
61
+ /**
62
+ * One mesh with one primitive (`asphalt` or `markings`). `origin` is the cell's world corner on x and z; `name` names the
63
+ * node. Every vertex snaps to the 1/60 m lattice, so a border vertex that sits on a cell plane (a multiple of 1,024 m,
64
+ * hence of the lattice step) lands on the same point in both neighbours.
65
+ */
66
+ async function writeCityCellGlb(name, kind, origin, mesh, latticePerM = exports.LATTICE_PER_M) {
67
+ await meshoptimizer_1.MeshoptEncoder.ready;
68
+ const vertices = mesh.positions.length / 3;
69
+ if (vertices === 0 || mesh.indices.length === 0)
70
+ throw new Error(`writeCityCellGlb: ${name} is empty`);
71
+ const lattice = new Int32Array(mesh.positions.length);
72
+ let minY = Infinity;
73
+ for (let at = 0; at < vertices; at += 1) {
74
+ lattice[at * 3] = Math.round(mesh.positions[at * 3] * latticePerM);
75
+ lattice[at * 3 + 1] = Math.round(mesh.positions[at * 3 + 1] * latticePerM);
76
+ lattice[at * 3 + 2] = Math.round(mesh.positions[at * 3 + 2] * latticePerM);
77
+ minY = Math.min(minY, lattice[at * 3 + 1]);
78
+ }
79
+ const position = new Uint16Array(mesh.positions.length);
80
+ let maxX = 0, maxY = 0, maxZ = 0, minX = Infinity, minZ = Infinity;
81
+ for (let at = 0; at < vertices; at += 1) {
82
+ const ix = lattice[at * 3], iy = lattice[at * 3 + 1] - minY, iz = lattice[at * 3 + 2];
83
+ if (ix < 0 || ix > 65535 || iz < 0 || iz > 65535 || iy > 65535) {
84
+ throw new Error(`${name}: vertex ${at} is outside the 16-bit lattice (${ix}, ${iy}, ${iz}): the cell spans more than ${Math.floor(65535 / latticePerM)} m`);
85
+ }
86
+ position[at * 3] = ix;
87
+ position[at * 3 + 1] = iy;
88
+ position[at * 3 + 2] = iz;
89
+ minX = Math.min(minX, ix);
90
+ maxX = Math.max(maxX, ix);
91
+ maxY = Math.max(maxY, iy);
92
+ minZ = Math.min(minZ, iz);
93
+ maxZ = Math.max(maxZ, iz);
94
+ }
95
+ const normal = new Int8Array(mesh.normals.length);
96
+ for (let at = 0; at < mesh.normals.length; at += 1)
97
+ normal[at] = Math.max(-127, Math.min(127, Math.round(mesh.normals[at] * 127)));
98
+ const uv = mesh.uvs ? new Uint16Array(mesh.uvs.length) : null;
99
+ if (uv && mesh.uvs)
100
+ for (let at = 0; at < uv.length; at += 1)
101
+ uv[at] = Math.max(0, Math.min(65535, Math.round(mesh.uvs[at] * 65535)));
102
+ const indices = vertices > 65535 ? mesh.indices : Uint16Array.from(mesh.indices);
103
+ const document = new core_1.Document().setLogger(new core_1.Logger(core_1.Logger.Verbosity.ERROR));
104
+ const buffer = document.createBuffer();
105
+ document.createExtension(extensions_1.KHRMeshQuantization).setRequired(true);
106
+ document.createExtension(extensions_1.EXTMeshoptCompression).setRequired(true).setEncoderOptions({ method: extensions_1.EXTMeshoptCompression.EncoderMethod.QUANTIZE });
107
+ const accessor = (array, type, normalized) => document.createAccessor().setBuffer(buffer).setArray(array).setType(type).setNormalized(normalized);
108
+ const material = document.createMaterial(kind === 'asphalt' ? 'road-asphalt' : 'road-markings')
109
+ .setBaseColorFactor([1, 1, 1, 1]).setMetallicFactor(0).setRoughnessFactor(kind === 'asphalt' ? 0.92 : 0.7)
110
+ .setDoubleSided(kind === 'markings');
111
+ if (kind === 'markings')
112
+ material.setAlphaMode('BLEND');
113
+ const primitive = document.createPrimitive().setMaterial(material)
114
+ .setAttribute('POSITION', accessor(position, 'VEC3', false))
115
+ .setAttribute('NORMAL', accessor(normal, 'VEC3', true))
116
+ .setAttribute('COLOR_0', accessor(mesh.colour, 'VEC4', true))
117
+ .setAttribute(exports.ROAD_ATTRIBUTE, accessor(mesh.road, 'VEC4', true))
118
+ .setIndices(accessor(indices, 'SCALAR', false));
119
+ if (uv)
120
+ primitive.setAttribute('TEXCOORD_0', accessor(uv, 'VEC2', true));
121
+ const step = 1 / latticePerM;
122
+ document.createScene().addChild(document.createNode(name).setMesh(document.createMesh(name).addPrimitive(primitive))
123
+ .setTranslation([origin[0], minY * step, origin[1]]).setScale([step, step, step]));
124
+ const bytes = patchCityMaterialExtension(await io().writeBinary(document), [kind]);
125
+ return {
126
+ bytes,
127
+ triangles: mesh.indices.length / 3,
128
+ vertices,
129
+ bounds: { min: [origin[0] + minX * step, minY * step, origin[1] + minZ * step], max: [origin[0] + maxX * step, (minY + maxY) * step, origin[1] + maxZ * step] },
130
+ };
131
+ }
132
+ //# sourceMappingURL=cellGlb.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cellGlb.js","sourceRoot":"","sources":["../../../src/cs2/restyle/cellGlb.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ import { type Cs2RoadFamily } from '../convert/roadBake';
2
+ /** `_ROAD.x`, the engine's surface kinds (`systems/scene/src/materials/city/params.ts` ROAD_SURFACE). Pinned by the spec. */
3
+ export declare const CITY_SURFACE: {
4
+ readonly ASPHALT: 0;
5
+ readonly CONCRETE: 1;
6
+ readonly SETT: 2;
7
+ readonly GRAVEL: 3;
8
+ readonly KERB: 4;
9
+ readonly SIDEWALK: 5;
10
+ readonly MEDIAN: 6;
11
+ };
12
+ export type CitySurface = (typeof CITY_SURFACE)[keyof typeof CITY_SURFACE];
13
+ /** Slope bands on the averaged vertex normal's Y: the asphalt shader treats N.y < 0.6 as a vertical face. */
14
+ export declare const FACE_UP_MIN = 0.6;
15
+ export declare const FACE_DOWN_MAX = -0.6;
16
+ /** The family of a baked material name, or null when it is not a road slot (a marking, a collider). */
17
+ export declare function familyOfMaterial(name: string): Cs2RoadFamily | null;
18
+ /**
19
+ * `ny` is the averaged vertex normal's Y of the triangle. A structure is concrete on every face (deck, girder, wall,
20
+ * underside); any other family is its own surface on top, granite kerb on a vertical face and concrete underneath.
21
+ */
22
+ export declare function surfaceFor(family: Cs2RoadFamily, ny: number): CitySurface;
@@ -0,0 +1,43 @@
1
+ "use strict";
2
+ // What each baked triangle becomes under the engine's city asphalt material. The bake kept the game's own geometry
3
+ // and named a material per CS2 composition slot (`road-<slot>`); the slot decides the family, the face's slope decides
4
+ // whether it is a walking or driving surface, a kerb face or an underside.
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.FACE_DOWN_MAX = exports.FACE_UP_MIN = exports.CITY_SURFACE = void 0;
7
+ exports.familyOfMaterial = familyOfMaterial;
8
+ exports.surfaceFor = surfaceFor;
9
+ const roadBake_1 = require("../convert/roadBake");
10
+ /** `_ROAD.x`, the engine's surface kinds (`systems/scene/src/materials/city/params.ts` ROAD_SURFACE). Pinned by the spec. */
11
+ exports.CITY_SURFACE = { ASPHALT: 0, CONCRETE: 1, SETT: 2, GRAVEL: 3, KERB: 4, SIDEWALK: 5, MEDIAN: 6 };
12
+ /** Slope bands on the averaged vertex normal's Y: the asphalt shader treats N.y < 0.6 as a vertical face. */
13
+ exports.FACE_UP_MIN = 0.6;
14
+ exports.FACE_DOWN_MAX = -0.6;
15
+ const TOP_SURFACE = {
16
+ road: exports.CITY_SURFACE.ASPHALT,
17
+ parking: exports.CITY_SURFACE.ASPHALT,
18
+ structure: exports.CITY_SURFACE.CONCRETE,
19
+ sidewalk: exports.CITY_SURFACE.SIDEWALK,
20
+ gravel: exports.CITY_SURFACE.GRAVEL,
21
+ // A track bed is ballast.
22
+ track: exports.CITY_SURFACE.GRAVEL,
23
+ grass: exports.CITY_SURFACE.MEDIAN,
24
+ };
25
+ /** The family of a baked material name, or null when it is not a road slot (a marking, a collider). */
26
+ function familyOfMaterial(name) {
27
+ const match = /^road-(\d+)$/.exec(name);
28
+ return match ? (0, roadBake_1.roadSlotFamily)(Number(match[1])) : null;
29
+ }
30
+ /**
31
+ * `ny` is the averaged vertex normal's Y of the triangle. A structure is concrete on every face (deck, girder, wall,
32
+ * underside); any other family is its own surface on top, granite kerb on a vertical face and concrete underneath.
33
+ */
34
+ function surfaceFor(family, ny) {
35
+ if (family === 'structure')
36
+ return exports.CITY_SURFACE.CONCRETE;
37
+ if (ny >= exports.FACE_UP_MIN)
38
+ return TOP_SURFACE[family];
39
+ if (ny <= exports.FACE_DOWN_MAX)
40
+ return exports.CITY_SURFACE.CONCRETE;
41
+ return exports.CITY_SURFACE.KERB;
42
+ }
43
+ //# sourceMappingURL=classify.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"classify.js","sourceRoot":"","sources":["../../../src/cs2/restyle/classify.ts"],"names":[],"mappings":";AAAA,mHAAmH;AACnH,uHAAuH;AACvH,2EAA2E;;;AAwB3E,4CAGC;AAMD,gCAKC;AApCD,kDAAyE;AAEzE,6HAA6H;AAChH,QAAA,YAAY,GAAG,EAAE,OAAO,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAW,CAAC;AAGtH,6GAA6G;AAChG,QAAA,WAAW,GAAG,GAAG,CAAC;AAClB,QAAA,aAAa,GAAG,CAAC,GAAG,CAAC;AAElC,MAAM,WAAW,GAAiD;IAChE,IAAI,EAAE,oBAAY,CAAC,OAAO;IAC1B,OAAO,EAAE,oBAAY,CAAC,OAAO;IAC7B,SAAS,EAAE,oBAAY,CAAC,QAAQ;IAChC,QAAQ,EAAE,oBAAY,CAAC,QAAQ;IAC/B,MAAM,EAAE,oBAAY,CAAC,MAAM;IAC3B,0BAA0B;IAC1B,KAAK,EAAE,oBAAY,CAAC,MAAM;IAC1B,KAAK,EAAE,oBAAY,CAAC,MAAM;CAC3B,CAAC;AAEF,uGAAuG;AACvG,SAAgB,gBAAgB,CAAC,IAAY;IAC3C,MAAM,KAAK,GAAG,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACxC,OAAO,KAAK,CAAC,CAAC,CAAC,IAAA,yBAAc,EAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AACzD,CAAC;AAED;;;GAGG;AACH,SAAgB,UAAU,CAAC,MAAqB,EAAE,EAAU;IAC1D,IAAI,MAAM,KAAK,WAAW;QAAE,OAAO,oBAAY,CAAC,QAAQ,CAAC;IACzD,IAAI,EAAE,IAAI,mBAAW;QAAE,OAAO,WAAW,CAAC,MAAM,CAAC,CAAC;IAClD,IAAI,EAAE,IAAI,qBAAa;QAAE,OAAO,oBAAY,CAAC,QAAQ,CAAC;IACtD,OAAO,oBAAY,CAAC,IAAI,CAAC;AAC3B,CAAC"}
@@ -0,0 +1,6 @@
1
+ import type { Command } from 'commander';
2
+ /**
3
+ * `helix city roads restyle-cs2`, attached to the `city roads` group. `src/city/roads/command.ts` creates the group;
4
+ * this registers after it and adds one subcommand without editing that file. Heavy modules load inside the action.
5
+ */
6
+ export declare function registerCityRoadsRestyleCs2(city: Command, fail: (message: string) => never): void;
@@ -0,0 +1,93 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.registerCityRoadsRestyleCs2 = registerCityRoadsRestyleCs2;
37
+ /**
38
+ * `helix city roads restyle-cs2`, attached to the `city roads` group. `src/city/roads/command.ts` creates the group;
39
+ * this registers after it and adds one subcommand without editing that file. Heavy modules load inside the action.
40
+ */
41
+ function registerCityRoadsRestyleCs2(city, fail) {
42
+ const roads = city.commands.find((command) => command.name() === 'roads') ?? city.command('roads').description('Road cells');
43
+ roads
44
+ .command('restyle-cs2')
45
+ .description('Rewrite baked CS2 road cells onto the engine city materials: procedural asphalt, kerb and sidewalk, the game\'s paint ribbons, cells clipped at 1,024 m, colliders welded to 60k triangles')
46
+ .argument('<roadsDir>', 'baked road folder holding mesh-cells.json (Scene `roads/`)')
47
+ .requiredOption('--out <dir>', 'folder to write: roads/ (render, collider, markings-a, mesh-cells.json) and, with --scene, the patched document')
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('--library <dir>', 'city material library pack (default: the CLI\'s own assets/city-materials/v1)')
50
+ .option('--collider-max-triangles <n>', 'collider triangle budget per cell', '60000')
51
+ .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)')
52
+ .option('--far-error <metres>', 'far layer simplifier tolerance', '0.3')
53
+ .option('--json', 'print the full report as JSON')
54
+ .option('--force', 'overwrite an existing roads/ in --out')
55
+ .action(async (roadsDir, opts) => {
56
+ try {
57
+ const { existsSync } = await Promise.resolve().then(() => __importStar(require('node:fs')));
58
+ const { join, resolve } = await Promise.resolve().then(() => __importStar(require('node:path')));
59
+ const { restyleCs2Roads } = await Promise.resolve().then(() => __importStar(require('./restyle')));
60
+ const out = resolve(opts.out);
61
+ const target = join(out, 'roads');
62
+ if (!opts.force && existsSync(join(target, 'mesh-cells.json')))
63
+ fail(`✖ ${target} already holds restyled road cells - pass --force to overwrite them`);
64
+ const budget = Number(opts.colliderMaxTriangles);
65
+ if (!Number.isInteger(budget) || budget < 1000)
66
+ fail('✖ --collider-max-triangles must be an integer of at least 1000');
67
+ const farError = Number(opts.farError);
68
+ if (!(farError > 0 && farError <= 5))
69
+ fail('✖ --far-error must be a tolerance between 0 and 5 metres');
70
+ const started = Date.now();
71
+ const report = await restyleCs2Roads(resolve(roadsDir), target, {
72
+ colliderMaxTriangles: budget, farErrorM: farError, log: (message) => console.error(message),
73
+ ...(opts.far ? { farOut: join(out, 'roads-lod') } : {}),
74
+ });
75
+ let scene;
76
+ if (opts.scene) {
77
+ const { patchSceneRoads } = await Promise.resolve().then(() => __importStar(require('./scenePatch')));
78
+ scene = await patchSceneRoads({ sceneFile: resolve(opts.scene), out, ...(opts.library ? { library: resolve(opts.library) } : {}) });
79
+ }
80
+ const seconds = ((Date.now() - started) / 1000).toFixed(0);
81
+ if (opts.json) {
82
+ console.log(JSON.stringify({ report, ...(scene ? { scene } : {}) }, null, 2));
83
+ return;
84
+ }
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`);
87
+ }
88
+ catch (error) {
89
+ fail(`✖ ${error instanceof Error ? error.message : String(error)}`);
90
+ }
91
+ });
92
+ }
93
+ //# sourceMappingURL=command.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"command.js","sourceRoot":"","sources":["../../../src/cs2/restyle/command.ts"],"names":[],"mappings":"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"}