@hypersoniclabs/helix-cli 0.1.27-helix3.565 → 0.1.27-helix3.567
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.
- package/dist/city/assemble/sceneVisuals.d.ts +7 -4
- package/dist/city/assemble/sceneVisuals.js +9 -6
- package/dist/city/assemble/sceneVisuals.js.map +1 -1
- package/dist/city/assemble/splat.d.ts +10 -0
- package/dist/city/assemble/splat.js +128 -1
- package/dist/city/assemble/splat.js.map +1 -1
- package/dist/city/convert/config.d.ts +3 -0
- package/dist/city/convert/config.js +3 -0
- package/dist/city/convert/config.js.map +1 -1
- package/dist/city/convert/districts.d.ts +54 -0
- package/dist/city/convert/districts.js +235 -0
- package/dist/city/convert/districts.js.map +1 -0
- package/dist/city/convert/optimizations.js +3 -0
- package/dist/city/convert/optimizations.js.map +1 -1
- package/dist/city/convert/publish.js +6 -1
- package/dist/city/convert/publish.js.map +1 -1
- package/dist/city/convert/stages.js +17 -5
- package/dist/city/convert/stages.js.map +1 -1
- package/dist/cs2/convert/buildingColors.d.ts +62 -0
- package/dist/cs2/convert/buildingColors.js +137 -0
- package/dist/cs2/convert/buildingColors.js.map +1 -0
- package/dist/cs2/convert/buildingMeshCommand.js +26 -4
- package/dist/cs2/convert/buildingMeshCommand.js.map +1 -1
- package/dist/cs2/convert/buildingParts.js +8 -1
- package/dist/cs2/convert/buildingParts.js.map +1 -1
- package/dist/cs2/convert/buildingPrototypes.d.ts +19 -0
- package/dist/cs2/convert/buildingPrototypes.js +50 -12
- package/dist/cs2/convert/buildingPrototypes.js.map +1 -1
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/package.json +1 -1
- package/plugins/beamng-vehicle/bin/__pycache__/beamng_abs.cpython-312.pyc +0 -0
- package/plugins/beamng-vehicle/bin/__pycache__/beamng_audio.cpython-312.pyc +0 -0
- package/plugins/beamng-vehicle/bin/__pycache__/beamng_engine.cpython-312.pyc +0 -0
- package/plugins/beamng-vehicle/bin/__pycache__/beamng_expression.cpython-312.pyc +0 -0
- package/plugins/beamng-vehicle/bin/__pycache__/beamng_jbeam.cpython-312.pyc +0 -0
- package/plugins/beamng-vehicle/bin/__pycache__/beamng_materials.cpython-312.pyc +0 -0
- package/plugins/beamng-vehicle/bin/__pycache__/beamng_stock_events.cpython-312.pyc +0 -0
- package/plugins/beamng-vehicle/bin/__pycache__/fmod_studio.cpython-312.pyc +0 -0
- package/plugins/beamng-vehicle/bin/__pycache__/fsb5.cpython-312.pyc +0 -0
- package/plugins/beamng-vehicle/bin/__pycache__/sim_audio.cpython-312.pyc +0 -0
- package/plugins/beamng-vehicle/bin/__pycache__/sim_audio_ac.cpython-312.pyc +0 -0
- package/plugins/beamng-vehicle/bin/__pycache__/sim_audio_beamng.cpython-312.pyc +0 -0
- package/plugins/beamng-vehicle/bin/__pycache__/sim_audio_fixtures.cpython-312.pyc +0 -0
- package/plugins/beamng-vehicle/bin/__pycache__/test_beamng_engine.cpython-312.pyc +0 -0
- package/plugins/beamng-vehicle/bin/__pycache__/test_sim_audio.cpython-312.pyc +0 -0
|
@@ -55,9 +55,12 @@ export interface CityDayLook {
|
|
|
55
55
|
* The shade of a CS2 street. The engine's `day` look cools its shadows (shadow tint 0.9 / 0.97 / 1.1, toning 0.35) and keeps the display
|
|
56
56
|
* toe closed, which suits open country; under a canyon of towers every street is shade, lit by the (blue) sky alone, and a
|
|
57
57
|
* dark asphalt in it reads blue-black (measured: B - R = +24 in the shade, +23 in the sun, against Granit's -4 and -17). Neutralise
|
|
58
|
-
* the cool shadow tint
|
|
59
|
-
*
|
|
60
|
-
*
|
|
58
|
+
* the cool shadow tint and open the toe (`finish.lift`: "so a shadowed street keeps its texture"); the sky's own contribution to the
|
|
59
|
+
* light is eased to 0.8 so the blue does not return in the canyon.
|
|
60
|
+
* The highlights stay neutral, with the engine's own toning (0.35) and full saturation. A warm highlight tint (1.12 / 1.0 / 0.82)
|
|
61
|
+
* with toning 0.7 and saturation 0.92 was the cream-and-yellow wash over the whole terrain seen from the air (Leonida round 2:
|
|
62
|
+
* green country read as sand, haze as cream) and bought nothing in the street, whose cast is set by the shadow tint and the lift.
|
|
63
|
+
* Measured on Leonida's downtown asphalt (live shell, 3 poses): B - R in the shade +1.4 (was -21 warm), in the sun -23, against Granit's -4..-7 and -9..-19.
|
|
61
64
|
*/
|
|
62
65
|
export declare const CS2_DAY_LOOK: CityDayLook;
|
|
63
66
|
/** What the far edge of the map keeps of its contrast through the fog. */
|
|
@@ -67,7 +70,7 @@ export declare const GROUND_FOG_RATIO = 1.8;
|
|
|
67
70
|
/** The latitude and hour of a map that has no place on Earth. */
|
|
68
71
|
export declare const FICTIONAL_LATITUDE_DEG = 37.8;
|
|
69
72
|
export declare const DEFAULT_HOURS = 14;
|
|
70
|
-
export declare const CS2_EXPOSURE_COMPENSATION =
|
|
73
|
+
export declare const CS2_EXPOSURE_COMPENSATION = 0.75;
|
|
71
74
|
/** The scene visuals a city source gets. `scale` multiplies the fog densities (default 1). Pure: same manifest, same JSON. */
|
|
72
75
|
export declare function deriveSceneVisuals(manifest: Pick<CitySourceManifest, 'frame'>, scale?: number): SceneVisualsConfig;
|
|
73
76
|
/** Writes `<dir>/scene-visuals/<sceneName>.json` (the path the shell fetches under its data prefix) and returns it. */
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
// fog exp(-density x extent) = 0.2: the far edge of the map keeps a fifth of its contrast, so a skyline reads from
|
|
15
15
|
// the air at any map size (Leonida, 14,336 m: 0.00011; a 6.4 km map comes out at 0.00025, the value Granit's file has).
|
|
16
16
|
// Ground fog (`heightDensity`) is 1.8 x that. `scale` multiplies both (an art knob; 1 keeps the rule).
|
|
17
|
-
// exposure CS2 buildings come from a game that exposes its HDR; +
|
|
17
|
+
// exposure CS2 buildings come from a game that exposes its HDR; +0.75 EV keeps the converted facades from reading dim.
|
|
18
18
|
// look a CS2 map's `day` look is overridden for the shade of its streets (`CS2_DAY_LOOK`).
|
|
19
19
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
20
20
|
exports.CS2_EXPOSURE_COMPENSATION = exports.DEFAULT_HOURS = exports.FICTIONAL_LATITUDE_DEG = exports.GROUND_FOG_RATIO = exports.FOG_FAR_EDGE_TRANSMITTANCE = exports.CS2_DAY_LOOK = void 0;
|
|
@@ -26,12 +26,15 @@ const node_path_1 = require("node:path");
|
|
|
26
26
|
* The shade of a CS2 street. The engine's `day` look cools its shadows (shadow tint 0.9 / 0.97 / 1.1, toning 0.35) and keeps the display
|
|
27
27
|
* toe closed, which suits open country; under a canyon of towers every street is shade, lit by the (blue) sky alone, and a
|
|
28
28
|
* dark asphalt in it reads blue-black (measured: B - R = +24 in the shade, +23 in the sun, against Granit's -4 and -17). Neutralise
|
|
29
|
-
* the cool shadow tint
|
|
30
|
-
*
|
|
31
|
-
*
|
|
29
|
+
* the cool shadow tint and open the toe (`finish.lift`: "so a shadowed street keeps its texture"); the sky's own contribution to the
|
|
30
|
+
* light is eased to 0.8 so the blue does not return in the canyon.
|
|
31
|
+
* The highlights stay neutral, with the engine's own toning (0.35) and full saturation. A warm highlight tint (1.12 / 1.0 / 0.82)
|
|
32
|
+
* with toning 0.7 and saturation 0.92 was the cream-and-yellow wash over the whole terrain seen from the air (Leonida round 2:
|
|
33
|
+
* green country read as sand, haze as cream) and bought nothing in the street, whose cast is set by the shadow tint and the lift.
|
|
34
|
+
* Measured on Leonida's downtown asphalt (live shell, 3 poses): B - R in the shade +1.4 (was -21 warm), in the sun -23, against Granit's -4..-7 and -9..-19.
|
|
32
35
|
*/
|
|
33
36
|
exports.CS2_DAY_LOOK = {
|
|
34
|
-
finish: { shadowTint: [1.1, 0.98, 0.8], highlightTint: [1.
|
|
37
|
+
finish: { shadowTint: [1.1, 0.98, 0.8], highlightTint: [1.0, 1.0, 1.0], toning: 0.35, saturation: 1.0, lift: 1.0 },
|
|
35
38
|
sky: { gain: 0.8 },
|
|
36
39
|
};
|
|
37
40
|
/** What the far edge of the map keeps of its contrast through the fog. */
|
|
@@ -41,7 +44,7 @@ exports.GROUND_FOG_RATIO = 1.8;
|
|
|
41
44
|
/** The latitude and hour of a map that has no place on Earth. */
|
|
42
45
|
exports.FICTIONAL_LATITUDE_DEG = 37.8;
|
|
43
46
|
exports.DEFAULT_HOURS = 14;
|
|
44
|
-
exports.CS2_EXPOSURE_COMPENSATION =
|
|
47
|
+
exports.CS2_EXPOSURE_COMPENSATION = 0.75;
|
|
45
48
|
const round5 = (value) => Math.round(value * 1e5) / 1e5;
|
|
46
49
|
/** The scene visuals a city source gets. `scale` multiplies the fog densities (default 1). Pure: same manifest, same JSON. */
|
|
47
50
|
function deriveSceneVisuals(manifest, scale = 1) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sceneVisuals.js","sourceRoot":"","sources":["../../../src/city/assemble/sceneVisuals.ts"],"names":[],"mappings":";AAAA,+HAA+H;AAC/H,oIAAoI;AACpI,8HAA8H;AAC9H,6HAA6H;AAC7H,EAAE;AACF,kIAAkI;AAClI,uIAAuI;AACvI,EAAE;AACF,mIAAmI;AACnI,2HAA2H;AAC3H,6EAA6E;AAC7E,oGAAoG;AACpG,kIAAkI;AAClI,2IAA2I;AAC3I,0HAA0H;AAC1H,
|
|
1
|
+
{"version":3,"file":"sceneVisuals.js","sourceRoot":"","sources":["../../../src/city/assemble/sceneVisuals.ts"],"names":[],"mappings":"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"}
|
|
@@ -36,5 +36,15 @@ export declare const CITY_SPLAT_ROLES: {
|
|
|
36
36
|
};
|
|
37
37
|
/** Carriageway width kerb to kerb when the source has none: lanes x 3.2 m, else a class table. */
|
|
38
38
|
export declare function roadWidthM(edge: RoadEdge): number;
|
|
39
|
+
/** Where grass meets sand the edge is feathered over this many metres each side, and wobbled by up to the same, so a rectangular lot of sand does not read as a ruled seam (16 m: the terrain bakes the splat at 4 m a texel, so anything narrower is one hard texel). */
|
|
40
|
+
export declare const NATURAL_FEATHER_M = 16;
|
|
41
|
+
/**
|
|
42
|
+
* Soften the grass / sand boundary. The painted picture is one class per pixel, so a CS2 beach (a rectangle of sand surface) meets the grass along a
|
|
43
|
+
* ruled line, and the terrain's own height blend then draws it as a seam (Leonida, the beach sweep: a cream rectangle with square corners on a lawn).
|
|
44
|
+
* Here the boundary is domain-warped by a value noise (up to `radiusPx` pixels) and the two weights are then the share of sand among the grass and
|
|
45
|
+
* sand pixels around each pixel (a box of `radiusPx`), so the edge is a wavy ramp some 16 m wide. Streets, pavement and parks keep their crisp, one-class
|
|
46
|
+
* edges: only pixels that are grass, base ground or sand take part, and only where both classes are near. Works tile by tile so a 7,168 px canvas stays cheap.
|
|
47
|
+
*/
|
|
48
|
+
export declare function featherNaturalEdges(data: Uint8Array, size: number, radiusPx: number): number;
|
|
39
49
|
/** Paint the splat for a city source. Order: areas, water, then streets on top. */
|
|
40
50
|
export declare function paintCitySplat(source: CitySource, options: CitySplatOptions): TerrainSplatSource;
|
|
@@ -3,8 +3,9 @@
|
|
|
3
3
|
// parks and pitches, sand and shore where there is water. With roads the generator's own roles (`src/city/terrain`
|
|
4
4
|
// conform) replace the painted streets; without them the streets are strokes of the source's road graph.
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.CITY_SPLAT_ROLES = exports.NATURAL_SHORE_M = exports.NATURAL_ROAD_BUFFER_M = void 0;
|
|
6
|
+
exports.NATURAL_FEATHER_M = exports.CITY_SPLAT_ROLES = exports.NATURAL_SHORE_M = exports.NATURAL_ROAD_BUFFER_M = void 0;
|
|
7
7
|
exports.roadWidthM = roadWidthM;
|
|
8
|
+
exports.featherNaturalEdges = featherNaturalEdges;
|
|
8
9
|
exports.paintCitySplat = paintCitySplat;
|
|
9
10
|
/** Unmapped ground within this many metres of a street stays the paved base (verges, car parks, lots too small to be mapped). */
|
|
10
11
|
exports.NATURAL_ROAD_BUFFER_M = 24;
|
|
@@ -175,6 +176,128 @@ function paintRoadRoles(canvas, roads, size, o) {
|
|
|
175
176
|
}
|
|
176
177
|
}
|
|
177
178
|
}
|
|
179
|
+
/** Where grass meets sand the edge is feathered over this many metres each side, and wobbled by up to the same, so a rectangular lot of sand does not read as a ruled seam (16 m: the terrain bakes the splat at 4 m a texel, so anything narrower is one hard texel). */
|
|
180
|
+
exports.NATURAL_FEATHER_M = 16;
|
|
181
|
+
const FEATHER_TILE_PX = 256;
|
|
182
|
+
/** A hash noise in [0, 1) of an integer lattice point (no state, so the same source paints the same splat). */
|
|
183
|
+
function lattice(ix, iz, seed) {
|
|
184
|
+
let h = Math.imul(ix, 374761393) ^ Math.imul(iz, 668265263) ^ Math.imul(seed, 2147483647);
|
|
185
|
+
h = Math.imul(h ^ (h >>> 13), 1274126177);
|
|
186
|
+
return ((h ^ (h >>> 16)) >>> 0) / 4294967296;
|
|
187
|
+
}
|
|
188
|
+
/** Smooth value noise in [-1, 1] at pixel (x, z) with lattice cells of `cell` pixels. */
|
|
189
|
+
function valueNoise(x, z, cell, seed) {
|
|
190
|
+
const fx = x / cell, fz = z / cell;
|
|
191
|
+
const ix = Math.floor(fx), iz = Math.floor(fz);
|
|
192
|
+
const tx = fx - ix, tz = fz - iz;
|
|
193
|
+
const ux = tx * tx * (3 - 2 * tx), uz = tz * tz * (3 - 2 * tz);
|
|
194
|
+
const a = lattice(ix, iz, seed), b = lattice(ix + 1, iz, seed), c = lattice(ix, iz + 1, seed), d = lattice(ix + 1, iz + 1, seed);
|
|
195
|
+
return ((a * (1 - ux) + b * ux) * (1 - uz) + (c * (1 - ux) + d * ux) * uz) * 2 - 1;
|
|
196
|
+
}
|
|
197
|
+
/**
|
|
198
|
+
* Soften the grass / sand boundary. The painted picture is one class per pixel, so a CS2 beach (a rectangle of sand surface) meets the grass along a
|
|
199
|
+
* ruled line, and the terrain's own height blend then draws it as a seam (Leonida, the beach sweep: a cream rectangle with square corners on a lawn).
|
|
200
|
+
* Here the boundary is domain-warped by a value noise (up to `radiusPx` pixels) and the two weights are then the share of sand among the grass and
|
|
201
|
+
* sand pixels around each pixel (a box of `radiusPx`), so the edge is a wavy ramp some 16 m wide. Streets, pavement and parks keep their crisp, one-class
|
|
202
|
+
* edges: only pixels that are grass, base ground or sand take part, and only where both classes are near. Works tile by tile so a 7,168 px canvas stays cheap.
|
|
203
|
+
*/
|
|
204
|
+
function featherNaturalEdges(data, size, radiusPx) {
|
|
205
|
+
if (radiusPx < 1)
|
|
206
|
+
return 0;
|
|
207
|
+
const GRASS = CHANNEL.grass, SAND = CHANNEL.sand, BASE = CHANNEL.base;
|
|
208
|
+
// 1 sand, 0 grass, 2 base ground (a CS2 beach lot sits on base ground as often as on lawn), -1 anything else (asphalt, mixed pixels).
|
|
209
|
+
const klass = (i) => (data[i * 4 + SAND] === 255 ? 1 : data[i * 4 + GRASS] === 255 ? 0 : data[i * 4 + BASE] === 255 && data[i * 4 + 1] === 0 ? 2 : -1);
|
|
210
|
+
const margin = radiusPx * 2 + 1;
|
|
211
|
+
let changed = 0;
|
|
212
|
+
for (let ty = 0; ty < size; ty += FEATHER_TILE_PX) {
|
|
213
|
+
for (let tx = 0; tx < size; tx += FEATHER_TILE_PX) {
|
|
214
|
+
const x0 = Math.max(0, tx - margin), z0 = Math.max(0, ty - margin), x1 = Math.min(size, tx + FEATHER_TILE_PX + margin), z1 = Math.min(size, ty + FEATHER_TILE_PX + margin);
|
|
215
|
+
const w = x1 - x0, h = z1 - z0;
|
|
216
|
+
// Skip a tile where the two classes never touch (most of the map).
|
|
217
|
+
let boundary = false;
|
|
218
|
+
for (let y = z0; y < z1 - 1 && !boundary; y += 1) {
|
|
219
|
+
for (let x = x0; x < x1 - 1; x += 1) {
|
|
220
|
+
const k = klass(y * size + x);
|
|
221
|
+
if (k < 0)
|
|
222
|
+
continue;
|
|
223
|
+
const r = klass(y * size + x + 1), d = klass((y + 1) * size + x);
|
|
224
|
+
if ((r >= 0 && r !== k && (r === 1 || k === 1)) || (d >= 0 && d !== k && (d === 1 || k === 1))) {
|
|
225
|
+
boundary = true;
|
|
226
|
+
break;
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
if (!boundary)
|
|
231
|
+
continue;
|
|
232
|
+
// The warped indicator of the tile and its margin: sand 1, grass 0, anything else -1.
|
|
233
|
+
const warped = new Int8Array(w * h);
|
|
234
|
+
for (let y = 0; y < h; y += 1) {
|
|
235
|
+
for (let x = 0; x < w; x += 1) {
|
|
236
|
+
const gx = x0 + x, gz = z0 + y;
|
|
237
|
+
const dx = Math.round((valueNoise(gx, gz, 14, 1) * 0.7 + valueNoise(gx, gz, 5, 2) * 0.3) * radiusPx);
|
|
238
|
+
const dz = Math.round((valueNoise(gx, gz, 14, 3) * 0.7 + valueNoise(gx, gz, 5, 4) * 0.3) * radiusPx);
|
|
239
|
+
const sx = Math.min(size - 1, Math.max(0, gx + dx)), sz = Math.min(size - 1, Math.max(0, gz + dz));
|
|
240
|
+
warped[y * w + x] = klass(sz * size + sx);
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
// Box means of the sand share over the grass and sand pixels (separable: sums, then counts).
|
|
244
|
+
const sum = new Int32Array(w * h), cnt = new Int32Array(w * h), grassCount = new Int32Array(w * h);
|
|
245
|
+
const tmpS = new Int32Array(w * h), tmpC = new Int32Array(w * h), tmpG = new Int32Array(w * h);
|
|
246
|
+
for (let y = 0; y < h; y += 1) {
|
|
247
|
+
for (let x = 0; x < w; x += 1) {
|
|
248
|
+
let s = 0, c = 0, g = 0;
|
|
249
|
+
for (let k = Math.max(0, x - radiusPx); k <= Math.min(w - 1, x + radiusPx); k += 1) {
|
|
250
|
+
const v = warped[y * w + k];
|
|
251
|
+
if (v >= 0) {
|
|
252
|
+
if (v === 1)
|
|
253
|
+
s += 1;
|
|
254
|
+
else if (v === 0)
|
|
255
|
+
g += 1;
|
|
256
|
+
c += 1;
|
|
257
|
+
}
|
|
258
|
+
}
|
|
259
|
+
tmpS[y * w + x] = s;
|
|
260
|
+
tmpC[y * w + x] = c;
|
|
261
|
+
tmpG[y * w + x] = g;
|
|
262
|
+
}
|
|
263
|
+
}
|
|
264
|
+
for (let y = 0; y < h; y += 1) {
|
|
265
|
+
for (let x = 0; x < w; x += 1) {
|
|
266
|
+
let s = 0, c = 0, g = 0;
|
|
267
|
+
for (let k = Math.max(0, y - radiusPx); k <= Math.min(h - 1, y + radiusPx); k += 1) {
|
|
268
|
+
s += tmpS[k * w + x];
|
|
269
|
+
c += tmpC[k * w + x];
|
|
270
|
+
g += tmpG[k * w + x];
|
|
271
|
+
}
|
|
272
|
+
sum[y * w + x] = s;
|
|
273
|
+
cnt[y * w + x] = c;
|
|
274
|
+
grassCount[y * w + x] = g;
|
|
275
|
+
}
|
|
276
|
+
}
|
|
277
|
+
for (let y = Math.max(ty, z0); y < Math.min(ty + FEATHER_TILE_PX, z1); y += 1) {
|
|
278
|
+
for (let x = Math.max(tx, x0); x < Math.min(tx + FEATHER_TILE_PX, x1); x += 1) {
|
|
279
|
+
const at = y * size + x;
|
|
280
|
+
if (klass(at) < 0)
|
|
281
|
+
continue;
|
|
282
|
+
const li = (y - z0) * w + (x - x0);
|
|
283
|
+
if (cnt[li] === 0)
|
|
284
|
+
continue;
|
|
285
|
+
const own = klass(at), sand = Math.round((255 * sum[li]) / cnt[li]);
|
|
286
|
+
if (sand === (own === 1 ? 255 : 0))
|
|
287
|
+
continue;
|
|
288
|
+
// The rest of the weight goes to the pixel's own non-sand class; a sand pixel takes the commoner of its neighbours' (grass, else base).
|
|
289
|
+
const other = own === 0 ? GRASS : own === 2 ? BASE : 2 * grassCount[li] > cnt[li] - sum[li] ? GRASS : BASE;
|
|
290
|
+
data[at * 4 + SAND] = sand;
|
|
291
|
+
data[at * 4 + GRASS] = 0;
|
|
292
|
+
data[at * 4 + BASE] = 0;
|
|
293
|
+
data[at * 4 + other] = 255 - sand;
|
|
294
|
+
changed += 1;
|
|
295
|
+
}
|
|
296
|
+
}
|
|
297
|
+
}
|
|
298
|
+
}
|
|
299
|
+
return changed;
|
|
300
|
+
}
|
|
178
301
|
/** Paint the splat for a city source. Order: areas, water, then streets on top. */
|
|
179
302
|
function paintCitySplat(source, options) {
|
|
180
303
|
const size = Math.round(options.spanM / options.metresPerPixel);
|
|
@@ -197,6 +320,8 @@ function paintCitySplat(source, options) {
|
|
|
197
320
|
paintNaturalGround(source, canvas, options, options.natural.heightAt);
|
|
198
321
|
if (options.roads) {
|
|
199
322
|
paintRoadRoles(canvas, options.roads, size, options);
|
|
323
|
+
if (options.natural)
|
|
324
|
+
featherNaturalEdges(canvas.data, size, Math.max(1, Math.round(exports.NATURAL_FEATHER_M / options.metresPerPixel)));
|
|
200
325
|
return { width: size, height: size, channels: 4, data: canvas.data, roles: { ...exports.CITY_SPLAT_ROLES } };
|
|
201
326
|
}
|
|
202
327
|
// Streets last, widest first, so a service road never overpaints the avenue it joins.
|
|
@@ -205,6 +330,8 @@ function paintCitySplat(source, options) {
|
|
|
205
330
|
.sort((a, b) => roadWidthM(b) - roadWidthM(a) || (a.id < b.id ? -1 : 1));
|
|
206
331
|
for (const edge of edges)
|
|
207
332
|
canvas.stroke(edge.pts, roadWidthM(edge) + 3, CHANNEL.asphalt);
|
|
333
|
+
if (options.natural)
|
|
334
|
+
featherNaturalEdges(canvas.data, size, Math.max(1, Math.round(exports.NATURAL_FEATHER_M / options.metresPerPixel)));
|
|
208
335
|
return { width: size, height: size, channels: 4, data: canvas.data, roles: { ...exports.CITY_SPLAT_ROLES } };
|
|
209
336
|
}
|
|
210
337
|
//# sourceMappingURL=splat.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"splat.js","sourceRoot":"","sources":["../../../src/city/assemble/splat.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"splat.js","sourceRoot":"","sources":["../../../src/city/assemble/splat.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { PlaceOverride } from './districts';
|
|
1
2
|
export declare const CONVERT_CONFIG_SCHEMA: "helix.city-convert/1";
|
|
2
3
|
export type ConvertTier = 'desktop' | 'mobile';
|
|
3
4
|
export interface ConvertSpawn {
|
|
@@ -21,6 +22,8 @@ export interface ConvertConfig {
|
|
|
21
22
|
bounds?: [number, number, number, number];
|
|
22
23
|
/** Omitted: the stage `spawn` picks a clear street-level point near the densest downtown. */
|
|
23
24
|
spawn?: ConvertSpawn;
|
|
25
|
+
/** Names for the derived places (`districts.ts`: downtown, port, airport, beach, islands) or places only a person knows: `{ id, label?, x?, z? }`. */
|
|
26
|
+
places?: PlaceOverride[];
|
|
24
27
|
tiers: ConvertTier[];
|
|
25
28
|
/** Desktop stream radius of the landscape (m). 1024 keeps the road network and terrain loaded to the far road layer, as Granit does; the phone root overrides it (384). */
|
|
26
29
|
streamRadiusM: number;
|
|
@@ -34,6 +34,9 @@ function validateConvertConfig(config, where = 'convert config') {
|
|
|
34
34
|
throw new Error(`${where}: tiers must list desktop and/or mobile`);
|
|
35
35
|
if (config.bounds && (config.bounds.length !== 4 || config.bounds.some((n) => !Number.isFinite(n))))
|
|
36
36
|
throw new Error(`${where}: bounds must be [minX, minZ, maxX, maxZ] in metres`);
|
|
37
|
+
for (const place of config.places ?? [])
|
|
38
|
+
if (typeof place.id !== 'string' || !/^[a-z0-9][a-z0-9-]*$/.test(place.id) || (place.x !== undefined && place.z === undefined) || (place.z !== undefined && place.x === undefined))
|
|
39
|
+
throw new Error(`${where}: each place needs a lowercase id, and x with z when it gives a point`);
|
|
37
40
|
if (config.spawn && !(Number.isFinite(config.spawn.x) && Number.isFinite(config.spawn.z)))
|
|
38
41
|
throw new Error(`${where}: spawn needs numeric x and z`);
|
|
39
42
|
if (![1, 2, 4].includes(config.terrain.metresPerSample))
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/city/convert/config.ts"],"names":[],"mappings":";AAAA,+HAA+H;AAC/H,+HAA+H;AAC/H,gHAAgH;;;
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/city/convert/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import type { CitySource } from '../source';
|
|
2
|
+
export type PlaceId = 'downtown' | 'port' | 'airport' | 'beach' | 'islands';
|
|
3
|
+
export interface DerivedPlace {
|
|
4
|
+
id: string;
|
|
5
|
+
label: string;
|
|
6
|
+
x: number;
|
|
7
|
+
z: number;
|
|
8
|
+
/** Metres above the ground the view stands at. */
|
|
9
|
+
agl: number;
|
|
10
|
+
yawDeg: number;
|
|
11
|
+
pitchDeg: number;
|
|
12
|
+
/** Why this point: the data it came from. */
|
|
13
|
+
why: string;
|
|
14
|
+
}
|
|
15
|
+
/** A convert.json place: a name for a derived place (`id`), or a new place at `x`, `z`. */
|
|
16
|
+
export interface PlaceOverride {
|
|
17
|
+
id: string;
|
|
18
|
+
label?: string;
|
|
19
|
+
x?: number;
|
|
20
|
+
z?: number;
|
|
21
|
+
agl?: number;
|
|
22
|
+
yawDeg?: number;
|
|
23
|
+
pitchDeg?: number;
|
|
24
|
+
}
|
|
25
|
+
export interface CityView {
|
|
26
|
+
label: string;
|
|
27
|
+
title: string;
|
|
28
|
+
x: number;
|
|
29
|
+
z: number;
|
|
30
|
+
agl: number;
|
|
31
|
+
yaw: number;
|
|
32
|
+
pitch: number;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Land masses of the DEM: 4-connected components of the cells above `dryM`, sampled every `stepM`. Returns every component with its area (cells x step^2)
|
|
36
|
+
* and the centre of its cells; the biggest is the mainland.
|
|
37
|
+
*/
|
|
38
|
+
export declare function landMasses(height: (x: number, z: number) => number, bounds: [[number, number], [number, number]], stepM?: number, dryM?: number): {
|
|
39
|
+
areaM2: number;
|
|
40
|
+
x: number;
|
|
41
|
+
z: number;
|
|
42
|
+
}[];
|
|
43
|
+
/** A landmass is an island of a chain when it is this small (m2) and this big at least (a rock is not a key). */
|
|
44
|
+
export declare const ISLAND_MAX_M2 = 4000000;
|
|
45
|
+
export declare const ISLAND_MIN_M2 = 3000;
|
|
46
|
+
/** The group of islands is read in squares of this side. */
|
|
47
|
+
export declare const ISLAND_CELL_M = 1500;
|
|
48
|
+
/** Fewer islands than this in the best group is not an archipelago, so there is no `islands` place. */
|
|
49
|
+
export declare const MIN_ISLANDS_FOR_PLACE = 5;
|
|
50
|
+
export declare function derivePlaces(source: CitySource, overrides?: readonly PlaceOverride[]): DerivedPlace[];
|
|
51
|
+
/** The shell's `city-views.json`: `{ views }`, each a camera at `agl` metres over the place (worldData.ts `parseCityViews`). */
|
|
52
|
+
export declare function cityViewsFile(places: readonly DerivedPlace[]): {
|
|
53
|
+
views: CityView[];
|
|
54
|
+
};
|