s3m-three 0.4.26 → 0.4.27
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/browser/assets/{s3mWorker-DHOVIrAU.js → s3mWorker-BfSBNvF5.js} +1 -1
- package/dist/browser/s3m-three.iife.ext-three.js +52 -40
- package/dist/browser/s3m-three.iife.js +52 -40
- package/dist/core/BakeMercator.d.ts +54 -0
- package/dist/core/BakeMercator.d.ts.map +1 -0
- package/dist/core/BakeMercator.js +65 -0
- package/dist/core/BakeMercator.js.map +1 -0
- package/dist/core/TileGeometry.d.ts +7 -0
- package/dist/core/TileGeometry.d.ts.map +1 -1
- package/dist/core/TileGeometry.js +20 -0
- package/dist/core/TileGeometry.js.map +1 -1
- package/dist/index.d.ts +4 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -1
- package/dist/render/DatasetManager.d.ts +27 -0
- package/dist/render/DatasetManager.d.ts.map +1 -1
- package/dist/render/DatasetManager.js +18 -4
- package/dist/render/DatasetManager.js.map +1 -1
- package/dist/render/GeoAdapter.d.ts +49 -24
- package/dist/render/GeoAdapter.d.ts.map +1 -1
- package/dist/render/GeoAdapter.js +96 -8
- package/dist/render/GeoAdapter.js.map +1 -1
- package/dist/render/GeometryBuilder.d.ts +17 -0
- package/dist/render/GeometryBuilder.d.ts.map +1 -1
- package/dist/render/GeometryBuilder.js +31 -2
- package/dist/render/GeometryBuilder.js.map +1 -1
- package/dist/render/S3MViewer.d.ts +72 -2
- package/dist/render/S3MViewer.d.ts.map +1 -1
- package/dist/render/S3MViewer.js +269 -9
- package/dist/render/S3MViewer.js.map +1 -1
- package/dist/render/StyleMaterial.d.ts +5 -0
- package/dist/render/StyleMaterial.d.ts.map +1 -1
- package/dist/render/StyleMaterial.js +21 -0
- package/dist/render/StyleMaterial.js.map +1 -1
- package/dist/render/tilePlacement.d.ts +84 -0
- package/dist/render/tilePlacement.d.ts.map +1 -0
- package/dist/render/tilePlacement.js +71 -0
- package/dist/render/tilePlacement.js.map +1 -0
- package/dist/render/viewer/EdgeDecorator.d.ts +1 -0
- package/dist/render/viewer/EdgeDecorator.d.ts.map +1 -1
- package/dist/render/viewer/EdgeDecorator.js +3 -0
- package/dist/render/viewer/EdgeDecorator.js.map +1 -1
- package/dist/render/viewer/PickService.d.ts +13 -0
- package/dist/render/viewer/PickService.d.ts.map +1 -1
- package/dist/render/viewer/PickService.js +24 -15
- package/dist/render/viewer/PickService.js.map +1 -1
- package/dist/render/viewer/types.d.ts +53 -0
- package/dist/render/viewer/types.d.ts.map +1 -1
- package/dist/render/viewer/types.js.map +1 -1
- package/dist/tileset/S3MTileset.d.ts +43 -1
- package/dist/tileset/S3MTileset.d.ts.map +1 -1
- package/dist/tileset/S3MTileset.js +202 -2
- package/dist/tileset/S3MTileset.js.map +1 -1
- package/dist/worker/s3mWorker.js +115 -62
- package/dist/worker/s3mWorker.js.map +1 -1
- package/docs/API.md +18 -0
- package/package.json +1 -1
- package/src/core/BakeMercator.ts +96 -0
- package/src/core/TileGeometry.ts +26 -0
- package/src/index.ts +11 -1
- package/src/render/DatasetManager.ts +43 -5
- package/src/render/GeoAdapter.ts +139 -11
- package/src/render/GeometryBuilder.ts +53 -2
- package/src/render/S3MViewer.ts +306 -13
- package/src/render/StyleMaterial.ts +26 -0
- package/src/render/tilePlacement.ts +121 -0
- package/src/render/viewer/EdgeDecorator.ts +3 -0
- package/src/render/viewer/PickService.ts +44 -16
- package/src/render/viewer/types.ts +51 -0
- package/src/tileset/S3MTileset.ts +226 -3
package/dist/worker/s3mWorker.js
CHANGED
|
@@ -3480,10 +3480,49 @@ async function Gn(e, t = {}) {
|
|
|
3480
3480
|
kind: `unsupported(${e.compressType}/${e.pixelFormat})`
|
|
3481
3481
|
};
|
|
3482
3482
|
}
|
|
3483
|
-
|
|
3483
|
+
// src/render/GeoAdapter.ts
|
|
3484
|
+
var Kn = 6378137, qn = 1 / 298.257223563, Jn = 2 * qn - qn * qn;
|
|
3485
|
+
function Yn(e) {
|
|
3486
|
+
let t = Math.sin(e);
|
|
3487
|
+
return Kn / Math.sqrt(1 - Jn * t * t);
|
|
3488
|
+
}
|
|
3489
|
+
function Xn(e) {
|
|
3490
|
+
let t = Math.sin(e), n = 1 - Jn * t * t;
|
|
3491
|
+
return Kn * .9933056200098587 / (n * Math.sqrt(n));
|
|
3492
|
+
}
|
|
3493
|
+
function Zn(e, t, n, r) {
|
|
3494
|
+
let i = t * Math.PI / 180, a = i + r / Xn(i + r / Xn(i) * .5), o = Yn(a), s = Math.cos(a);
|
|
3495
|
+
return [e + (Math.abs(s) < 1e-12 ? 0 : n / (o * s)) * 180 / Math.PI, a * 180 / Math.PI];
|
|
3496
|
+
}
|
|
3497
|
+
function Qn(e, t, n = 0) {
|
|
3498
|
+
let r = t * Math.PI / 180, i = Math.sin(r), a = Math.max(Math.abs(Math.cos(r)), 1e-12), o = (180 + e) / 360, s = .5 - .25 * Math.log((1 + i) / (1 - i)) / Math.PI, c = Yn(r), l = Xn(r), u = 1 / (2 * Math.PI * c * a), d = 1 / (2 * Math.PI * l * a), f = u;
|
|
3499
|
+
return {
|
|
3500
|
+
x: o,
|
|
3501
|
+
y: s,
|
|
3502
|
+
z: n * f,
|
|
3503
|
+
meterInMercatorEast: u,
|
|
3504
|
+
meterInMercatorNorth: d,
|
|
3505
|
+
meterInMercatorUp: f,
|
|
3506
|
+
meterInMercator: u,
|
|
3507
|
+
altitude: n
|
|
3508
|
+
};
|
|
3509
|
+
}
|
|
3510
|
+
// src/core/BakeMercator.ts
|
|
3511
|
+
function $n(e, t, n) {
|
|
3512
|
+
return Zn(e.lon, e.lat, t, n);
|
|
3513
|
+
}
|
|
3514
|
+
function er(e, t, n, r, i = 3, a) {
|
|
3515
|
+
let o = a && a.length >= t * 3 ? a : new Float32Array(t * 3), s = (n.height ?? 0) + (r.z ?? 0), [c, l] = $n(n, r.x, r.y), u = Qn(c, l, s);
|
|
3516
|
+
for (let r = 0; r < t; r++) {
|
|
3517
|
+
let t = r * i, a = e[t], s = e[t + 1], c = e[t + 2] ?? 0, l = (n.height ?? 0) + c, [d, f] = $n(n, a, s), p = Qn(d, f, l);
|
|
3518
|
+
o[r * 3 + 0] = p.x - u.x, o[r * 3 + 1] = p.y - u.y, o[r * 3 + 2] = p.z - u.z;
|
|
3519
|
+
}
|
|
3520
|
+
return o;
|
|
3521
|
+
}
|
|
3522
|
+
function tr(e) {
|
|
3484
3523
|
return e === "u8" ? 1 : e === "u16" ? 2 : 4;
|
|
3485
3524
|
}
|
|
3486
|
-
function
|
|
3525
|
+
function nr(e, t) {
|
|
3487
3526
|
switch (e) {
|
|
3488
3527
|
case "u8": return new Uint8Array(t);
|
|
3489
3528
|
case "u16": return new Uint16Array(t);
|
|
@@ -3491,7 +3530,7 @@ function qn(e, t) {
|
|
|
3491
3530
|
default: return new Float32Array(t);
|
|
3492
3531
|
}
|
|
3493
3532
|
}
|
|
3494
|
-
function
|
|
3533
|
+
function rr(e, t) {
|
|
3495
3534
|
switch (e) {
|
|
3496
3535
|
case "u8": return new Uint8Array(t);
|
|
3497
3536
|
case "u16": return new Uint16Array(t);
|
|
@@ -3499,14 +3538,14 @@ function Jn(e, t) {
|
|
|
3499
3538
|
default: return new Float32Array(t);
|
|
3500
3539
|
}
|
|
3501
3540
|
}
|
|
3502
|
-
function
|
|
3503
|
-
let { data: t, stride: n, offsetInBytes: r, dtype: i = "f32" } = e, a = e.components ?? e.comp ?? 3, o =
|
|
3541
|
+
function ir(e) {
|
|
3542
|
+
let { data: t, stride: n, offsetInBytes: r, dtype: i = "f32" } = e, a = e.components ?? e.comp ?? 3, o = tr(i), s = a * o, c = n ?? s, l = r ?? 0, u = i === "u8";
|
|
3504
3543
|
if (c === s && l === 0) return {
|
|
3505
|
-
array:
|
|
3544
|
+
array: nr(i, t.buffer.slice(t.byteOffset, t.byteOffset + t.byteLength)),
|
|
3506
3545
|
components: a,
|
|
3507
3546
|
normalized: u
|
|
3508
3547
|
};
|
|
3509
|
-
let d = Math.floor(t.byteLength / c), f =
|
|
3548
|
+
let d = Math.floor(t.byteLength / c), f = rr(i, d * a), p = new DataView(t.buffer, t.byteOffset, t.byteLength);
|
|
3510
3549
|
for (let e = 0; e < d; e++) {
|
|
3511
3550
|
let t = e * c + l;
|
|
3512
3551
|
for (let n = 0; n < a; n++) {
|
|
@@ -3520,7 +3559,7 @@ function Yn(e) {
|
|
|
3520
3559
|
normalized: u
|
|
3521
3560
|
};
|
|
3522
3561
|
}
|
|
3523
|
-
function
|
|
3562
|
+
function ar(e, t) {
|
|
3524
3563
|
let n = new Float32Array(t * 4);
|
|
3525
3564
|
if (!e) return n.fill(1), n;
|
|
3526
3565
|
let r = e.data, i = e.components ?? 4, a = e.dtype === "u8" ? 1 / 255 : 1, o = i >= 4;
|
|
@@ -3530,7 +3569,7 @@ function Xn(e, t) {
|
|
|
3530
3569
|
}
|
|
3531
3570
|
return n;
|
|
3532
3571
|
}
|
|
3533
|
-
function
|
|
3572
|
+
function or(e) {
|
|
3534
3573
|
let { indices: t, indexType: n, indexCount: r } = e;
|
|
3535
3574
|
if (!t || r === 0) return null;
|
|
3536
3575
|
let i = Math.floor(t.byteLength / r), a = i === 4 || i !== 2 && (n === 1 || n === 3), o = r * (a ? 4 : 2);
|
|
@@ -3538,7 +3577,7 @@ function Zn(e) {
|
|
|
3538
3577
|
let s = t.buffer.slice(t.byteOffset, t.byteOffset + o);
|
|
3539
3578
|
return a ? new Uint32Array(s) : new Uint16Array(s);
|
|
3540
3579
|
}
|
|
3541
|
-
function
|
|
3580
|
+
function sr(e, t, n) {
|
|
3542
3581
|
let r = new Float32Array(n * 3), i = (t, n, i) => {
|
|
3543
3582
|
let a = e[t * 3], o = e[t * 3 + 1], s = e[t * 3 + 2], c = e[n * 3], l = e[n * 3 + 1], u = e[n * 3 + 2], d = e[i * 3], f = e[i * 3 + 1], p = e[i * 3 + 2], m = c - a, h = l - o, g = u - s, _ = d - a, v = f - o, y = p - s, b = h * y - g * v, x = g * _ - m * y, S = m * v - h * _;
|
|
3544
3583
|
for (let e of [
|
|
@@ -3555,7 +3594,7 @@ function Qn(e, t, n) {
|
|
|
3555
3594
|
}
|
|
3556
3595
|
return r;
|
|
3557
3596
|
}
|
|
3558
|
-
function
|
|
3597
|
+
function cr(e, t) {
|
|
3559
3598
|
let n = [
|
|
3560
3599
|
Infinity,
|
|
3561
3600
|
Infinity,
|
|
@@ -3585,21 +3624,21 @@ function $n(e, t) {
|
|
|
3585
3624
|
sphereRadius: Math.sqrt(a)
|
|
3586
3625
|
};
|
|
3587
3626
|
}
|
|
3588
|
-
var
|
|
3627
|
+
var lr = [
|
|
3589
3628
|
13,
|
|
3590
3629
|
2,
|
|
3591
3630
|
3
|
|
3592
|
-
],
|
|
3593
|
-
function
|
|
3594
|
-
return
|
|
3631
|
+
], ur = 1;
|
|
3632
|
+
function dr(e) {
|
|
3633
|
+
return lr.includes(e);
|
|
3595
3634
|
}
|
|
3596
|
-
function
|
|
3635
|
+
function fr(e) {
|
|
3597
3636
|
return !e || e[0] === 1 && e[1] === 0 && e[2] === 0 && e[3] === 0 && e[4] === 0 && e[5] === 1 && e[6] === 0 && e[7] === 0 && e[8] === 0 && e[9] === 0 && e[10] === 1 && e[11] === 0 && e[12] === 0 && e[13] === 0 && e[14] === 0 && e[15] === 1;
|
|
3598
3637
|
}
|
|
3599
|
-
function
|
|
3638
|
+
function pr(e, t, n, r, i) {
|
|
3600
3639
|
i[0] = e[0] * t + e[4] * n + e[8] * r + e[12], i[1] = e[1] * t + e[5] * n + e[9] * r + e[13], i[2] = e[2] * t + e[6] * n + e[10] * r + e[14];
|
|
3601
3640
|
}
|
|
3602
|
-
function
|
|
3641
|
+
function mr(e) {
|
|
3603
3642
|
let t = e[0], n = e[4], r = e[8], i = e[1], a = e[5], o = e[9], s = e[2], c = e[6], l = e[10], u = a * l - o * c, d = -(i * l - o * s), f = i * c - a * s, p = -(n * l - r * c), m = t * l - r * s, h = -(t * c - n * s), g = n * o - r * a, _ = -(t * o - r * i), v = t * a - n * i, y = t * u + n * d + r * f || 1e-12, b = [
|
|
3604
3643
|
u / y,
|
|
3605
3644
|
d / y,
|
|
@@ -3613,12 +3652,12 @@ function ar(e) {
|
|
|
3613
3652
|
], x = /* @__PURE__ */ new Float32Array(9);
|
|
3614
3653
|
return x[0] = b[0], x[1] = b[3], x[2] = b[6], x[3] = b[1], x[4] = b[4], x[5] = b[7], x[6] = b[2], x[7] = b[5], x[8] = b[8], x;
|
|
3615
3654
|
}
|
|
3616
|
-
function
|
|
3655
|
+
function hr(e, t, n, r, i) {
|
|
3617
3656
|
i[0] = e[0] * t + e[3] * n + e[6] * r, i[1] = e[1] * t + e[4] * n + e[7] * r, i[2] = e[2] * t + e[5] * n + e[8] * r;
|
|
3618
3657
|
let a = Math.hypot(i[0], i[1], i[2]) || 1;
|
|
3619
3658
|
i[0] /= a, i[1] /= a, i[2] /= a;
|
|
3620
3659
|
}
|
|
3621
|
-
function
|
|
3660
|
+
function gr(e) {
|
|
3622
3661
|
let t = 0, n = 0, r = !1, i = !1, a = !1, o = !1, s = !1;
|
|
3623
3662
|
for (let c of e) t += c.vertexCount, n += c.index ? c.indexCount : c.vertexCount, c.attrs.normal && (r = !0), c.attrs.uv && (i = !0), c.attrs.uv1 && (a = !0), c.attrs.aAtlasRect && (o = !0), c.attrs.aTexCoordZ && (s = !0);
|
|
3624
3663
|
let c = {
|
|
@@ -3667,10 +3706,10 @@ function sr(e) {
|
|
|
3667
3706
|
0
|
|
3668
3707
|
], b = 0, x = 0;
|
|
3669
3708
|
for (let t of e) {
|
|
3670
|
-
let { attrs: e } = t, n = t.vertexCount, r =
|
|
3709
|
+
let { attrs: e } = t, n = t.vertexCount, r = fr(t.matrix) ? null : t.matrix, i = r && l ? mr(r) : null, a = e.position.array, o = e.normal?.array, s = e.uv?.array, S = e.uv1?.array, C = e.aTexCoordZ?.array, w = _?.array, T = e.aColor.array, E = e.aBatchId.array, D = c.array, ee = l?.array, te = u?.array, ne = d?.array, O = f.array, re = p.array;
|
|
3671
3710
|
for (let e = 0; e < n; e++) {
|
|
3672
3711
|
let t = b + e;
|
|
3673
|
-
r ? (
|
|
3712
|
+
r ? (pr(r, a[e * 3], a[e * 3 + 1], a[e * 3 + 2], y), D[t * 3] = y[0], D[t * 3 + 1] = y[1], D[t * 3 + 2] = y[2]) : (D[t * 3] = a[e * 3], D[t * 3 + 1] = a[e * 3 + 1], D[t * 3 + 2] = a[e * 3 + 2]), ee && (o && i ? (hr(i, o[e * 3], o[e * 3 + 1], o[e * 3 + 2], y), ee[t * 3] = y[0], ee[t * 3 + 1] = y[1], ee[t * 3 + 2] = y[2]) : o && (ee[t * 3] = o[e * 3], ee[t * 3 + 1] = o[e * 3 + 1], ee[t * 3 + 2] = o[e * 3 + 2])), te && s && (te[t * 2] = s[e * 2], te[t * 2 + 1] = s[e * 2 + 1]), ne && S && (ne[t * 2] = S[e * 2], ne[t * 2 + 1] = S[e * 2 + 1]), w && (w[t] = C ? C[e] : 0), T ? (O[t * 4] = T[e * 4], O[t * 4 + 1] = T[e * 4 + 1], O[t * 4 + 2] = T[e * 4 + 2], O[t * 4 + 3] = T[e * 4 + 3] ?? 1) : (O[t * 4] = 1, O[t * 4 + 1] = 1, O[t * 4 + 2] = 1, O[t * 4 + 3] = 1), re[t] = E ? E[e] : -1;
|
|
3674
3713
|
}
|
|
3675
3714
|
if (m) {
|
|
3676
3715
|
let t = e.aAtlasRect?.array, r = e.aAtlasRect1?.array, i = e.aSecUv?.array, a = m.array, o = h.array, s = g.array;
|
|
@@ -3689,7 +3728,7 @@ function sr(e) {
|
|
|
3689
3728
|
}
|
|
3690
3729
|
b += n;
|
|
3691
3730
|
}
|
|
3692
|
-
let S =
|
|
3731
|
+
let S = cr(c.array, t);
|
|
3693
3732
|
return {
|
|
3694
3733
|
skeletonName: e[0].name,
|
|
3695
3734
|
geoNames: e.map((e) => e.name),
|
|
@@ -3715,13 +3754,13 @@ function sr(e) {
|
|
|
3715
3754
|
batchedFrom: e.length
|
|
3716
3755
|
};
|
|
3717
3756
|
}
|
|
3718
|
-
function
|
|
3757
|
+
function _r(e, t, n, r, i) {
|
|
3719
3758
|
let a = t.vertexPackage;
|
|
3720
3759
|
ue(a, void 0, n.vertexAttributeDescript ?? i?.vertexAttributeDescript);
|
|
3721
3760
|
let o = a.vertexAttributes.find((e) => e.semantic === "position");
|
|
3722
3761
|
if (!o) return r.push(`${e} 无 position`), null;
|
|
3723
3762
|
let s = a.verticesCount || 0, c = {
|
|
3724
|
-
position:
|
|
3763
|
+
position: ir(o),
|
|
3725
3764
|
aColor: {
|
|
3726
3765
|
array: /* @__PURE__ */ new Float32Array(),
|
|
3727
3766
|
components: 4,
|
|
@@ -3736,11 +3775,11 @@ function cr(e, t, n, r, i) {
|
|
|
3736
3775
|
for (let e of a.vertexAttributes) if (e.divisor === void 0 && e.semantic !== "position") {
|
|
3737
3776
|
if (e.semantic === "color") l = e;
|
|
3738
3777
|
else if (e.semantic === "batchId") u = e;
|
|
3739
|
-
else if (e.semantic === "normal") d =
|
|
3740
|
-
else if (e.semantic === "uv") f =
|
|
3741
|
-
else if (e.semantic === "uv2") p =
|
|
3778
|
+
else if (e.semantic === "normal") d = ir(e);
|
|
3779
|
+
else if (e.semantic === "uv") f = ir(e);
|
|
3780
|
+
else if (e.semantic === "uv2") p = ir(e);
|
|
3742
3781
|
else if ((e.semantic === "TextureCoordMatrix" || e.semantic === "aTextureCoordMatrix" || e.semantic === "custom0" && !a.vertexAttributes.some((e) => e.semantic === "TextureCoordMatrix" || e.semantic === "VertexWeight")) && (e.components ?? 1) >= 1) {
|
|
3743
|
-
let t =
|
|
3782
|
+
let t = ir(e), n = t.array, r = !1;
|
|
3744
3783
|
for (let e = 0; e < n.length; e++) if (n[e] >= -99900) {
|
|
3745
3784
|
r = !0;
|
|
3746
3785
|
break;
|
|
@@ -3749,11 +3788,11 @@ function cr(e, t, n, r, i) {
|
|
|
3749
3788
|
}
|
|
3750
3789
|
}
|
|
3751
3790
|
c.aColor = {
|
|
3752
|
-
array:
|
|
3791
|
+
array: ar(l, s),
|
|
3753
3792
|
components: 4,
|
|
3754
3793
|
normalized: !1
|
|
3755
3794
|
}, c.aBatchId = u ? {
|
|
3756
|
-
array:
|
|
3795
|
+
array: ir(u).array,
|
|
3757
3796
|
components: 1,
|
|
3758
3797
|
normalized: !1
|
|
3759
3798
|
} : {
|
|
@@ -3788,7 +3827,7 @@ function cr(e, t, n, r, i) {
|
|
|
3788
3827
|
indexCount: 0,
|
|
3789
3828
|
indexType: 0,
|
|
3790
3829
|
useIndex: 0,
|
|
3791
|
-
primitiveType:
|
|
3830
|
+
primitiveType: ur,
|
|
3792
3831
|
indices: null,
|
|
3793
3832
|
passNames: []
|
|
3794
3833
|
}]), {
|
|
@@ -3797,10 +3836,10 @@ function cr(e, t, n, r, i) {
|
|
|
3797
3836
|
instanced: a.instanceIndex !== -1 && (a.instanceMode === 16 || a.instanceMode === 17)
|
|
3798
3837
|
};
|
|
3799
3838
|
}
|
|
3800
|
-
function
|
|
3801
|
-
let o = n.vertexPackage.verticesCount || 0, s =
|
|
3802
|
-
return !
|
|
3803
|
-
array:
|
|
3839
|
+
function vr(e, t, n, r, i, a) {
|
|
3840
|
+
let o = n.vertexPackage.verticesCount || 0, s = or(i), c = { ...r.attrs };
|
|
3841
|
+
return !dr(i.primitiveType) && i.primitiveType !== ur && !c.normal && (c.normal = {
|
|
3842
|
+
array: sr(c.position.array, s, o),
|
|
3804
3843
|
components: 3,
|
|
3805
3844
|
normalized: !1
|
|
3806
3845
|
}), {
|
|
@@ -3813,10 +3852,10 @@ function lr(e, t, n, r, i, a) {
|
|
|
3813
3852
|
indexCount: i.indexCount || 0,
|
|
3814
3853
|
attributes: c,
|
|
3815
3854
|
index: s,
|
|
3816
|
-
bounds:
|
|
3855
|
+
bounds: cr(c.position.array, o)
|
|
3817
3856
|
};
|
|
3818
3857
|
}
|
|
3819
|
-
function
|
|
3858
|
+
function yr(e, t, n, r = .001) {
|
|
3820
3859
|
let i = Math.floor(e.length / 3);
|
|
3821
3860
|
if (i === 0) return {
|
|
3822
3861
|
index: e,
|
|
@@ -3837,7 +3876,7 @@ function ur(e, t, n, r = .001) {
|
|
|
3837
3876
|
dropped: u
|
|
3838
3877
|
};
|
|
3839
3878
|
}
|
|
3840
|
-
function
|
|
3879
|
+
function br(e, t = {}) {
|
|
3841
3880
|
let n = t.batching !== !1, r = [], i = {
|
|
3842
3881
|
vertices: 0,
|
|
3843
3882
|
instanced: 0,
|
|
@@ -3845,19 +3884,19 @@ function dr(e, t = {}) {
|
|
|
3845
3884
|
skipped: r
|
|
3846
3885
|
}, a = /* @__PURE__ */ new Map();
|
|
3847
3886
|
for (let [n, o] of Object.entries(e.geoPackage ?? {})) {
|
|
3848
|
-
let s =
|
|
3887
|
+
let s = _r(n, o, e, r, t);
|
|
3849
3888
|
s && (a.set(n, s), i.vertices += o.vertexPackage.verticesCount || 0);
|
|
3850
3889
|
}
|
|
3851
3890
|
let o = [], s = /* @__PURE__ */ new Map(), c = 0, l = (e) => {
|
|
3852
|
-
|
|
3891
|
+
dr(e.primitiveType) && i.edgeLines++, o.push(e);
|
|
3853
3892
|
}, u = (e) => {
|
|
3854
3893
|
let t = e.passNames[0] ?? "__default__", n = s.get(t);
|
|
3855
3894
|
n || (n = [], s.set(t, n)), n.push(e);
|
|
3856
3895
|
}, d = (e, t, r, a, o) => {
|
|
3857
3896
|
let s = r.packs[a], d = r.instanced && !!t.vertexPackage.instanceBuffer && (t.vertexPackage.instanceCount ?? 0) > 0;
|
|
3858
|
-
|
|
3897
|
+
dr(s.primitiveType) || d ? (d && i.instanced++, l(vr(e, e, t, r, s, o)), c++) : n && s.primitiveType === 4 ? (u({
|
|
3859
3898
|
attrs: r.attrs,
|
|
3860
|
-
index:
|
|
3899
|
+
index: or(s),
|
|
3861
3900
|
vertexCount: t.vertexPackage.verticesCount || 0,
|
|
3862
3901
|
indexCount: s.indexCount || 0,
|
|
3863
3902
|
name: e,
|
|
@@ -3865,7 +3904,7 @@ function dr(e, t = {}) {
|
|
|
3865
3904
|
matrix: o,
|
|
3866
3905
|
passNames: s.passNames ?? [],
|
|
3867
3906
|
primitiveType: s.primitiveType
|
|
3868
|
-
}), c++) : (l(
|
|
3907
|
+
}), c++) : (l(vr(e, e, t, r, s, o)), c++);
|
|
3869
3908
|
};
|
|
3870
3909
|
for (let t of e.groupNode?.pageLods ?? []) for (let n of t.geodes ?? []) {
|
|
3871
3910
|
let t = n.matrix && n.matrix.length === 16 ? n.matrix : null;
|
|
@@ -3882,7 +3921,7 @@ function dr(e, t = {}) {
|
|
|
3882
3921
|
}
|
|
3883
3922
|
if (s.size > 0) for (let [, e] of s) if (i.originalMeshes = (i.originalMeshes ?? 0) + e.length, e.length === 1) {
|
|
3884
3923
|
let t = e[0];
|
|
3885
|
-
l(
|
|
3924
|
+
l(vr(t.name, t.name, t.geo, {
|
|
3886
3925
|
attrs: t.attrs,
|
|
3887
3926
|
packs: [],
|
|
3888
3927
|
instanced: !1
|
|
@@ -3894,24 +3933,38 @@ function dr(e, t = {}) {
|
|
|
3894
3933
|
indices: t.index ? new Uint8Array(t.index.buffer, t.index.byteOffset, t.index.byteLength) : null,
|
|
3895
3934
|
passNames: t.passNames
|
|
3896
3935
|
}, t.matrix));
|
|
3897
|
-
} else l(
|
|
3936
|
+
} else l(gr(e));
|
|
3898
3937
|
if (t.dedupeCoincident !== !1) for (let e of o) {
|
|
3899
3938
|
if (e.primitiveType !== 4 || !e.index || e.geoNames.length > 1) continue;
|
|
3900
3939
|
let t = e.attributes.position?.array;
|
|
3901
3940
|
if (!t) continue;
|
|
3902
|
-
let n = e.attributes.aBatchId?.array ?? null, { index: r, dropped: a } =
|
|
3941
|
+
let n = e.attributes.aBatchId?.array ?? null, { index: r, dropped: a } = yr(e.index, t, n);
|
|
3903
3942
|
a > 0 && (e.index = r, e.indexCount = r.length, i.deduped = (i.deduped ?? 0) + a);
|
|
3904
3943
|
}
|
|
3944
|
+
if (t.bakeMercator && t.tileAnchor) for (let e of o) {
|
|
3945
|
+
let n = e.attributes.position?.array;
|
|
3946
|
+
if (!n || e.vertexCount === 0) continue;
|
|
3947
|
+
let r = t.tileCenter ?? {
|
|
3948
|
+
x: e.bounds.sphereCenter[0],
|
|
3949
|
+
y: e.bounds.sphereCenter[1],
|
|
3950
|
+
z: e.bounds.sphereCenter[2]
|
|
3951
|
+
}, i = er(n, e.vertexCount, t.tileAnchor, r);
|
|
3952
|
+
e.attributes.aMercatorOffset = {
|
|
3953
|
+
array: i,
|
|
3954
|
+
components: 3,
|
|
3955
|
+
normalized: !1
|
|
3956
|
+
};
|
|
3957
|
+
}
|
|
3905
3958
|
return {
|
|
3906
3959
|
primitives: o,
|
|
3907
3960
|
stats: i
|
|
3908
3961
|
};
|
|
3909
3962
|
}
|
|
3910
3963
|
// src/worker/transferables.ts
|
|
3911
|
-
var
|
|
3912
|
-
function
|
|
3964
|
+
var xr = 12;
|
|
3965
|
+
function Sr(e) {
|
|
3913
3966
|
let t = /* @__PURE__ */ new Set(), n = /* @__PURE__ */ new Set(), r = (e, i) => {
|
|
3914
|
-
if (e == null || i >
|
|
3967
|
+
if (e == null || i > xr) return;
|
|
3915
3968
|
if (ArrayBuffer.isView(e)) {
|
|
3916
3969
|
let n = e.buffer;
|
|
3917
3970
|
n instanceof ArrayBuffer && t.add(n);
|
|
@@ -3933,46 +3986,46 @@ function pr(e) {
|
|
|
3933
3986
|
return r(e, 0), [...t];
|
|
3934
3987
|
}
|
|
3935
3988
|
// src/worker/s3mWorker.ts
|
|
3936
|
-
var
|
|
3937
|
-
function
|
|
3938
|
-
let t =
|
|
3989
|
+
var Cr = self;
|
|
3990
|
+
function wr(e) {
|
|
3991
|
+
let t = Sr(e);
|
|
3939
3992
|
return e.bitmap && t.push(e.bitmap), t;
|
|
3940
3993
|
}
|
|
3941
|
-
|
|
3994
|
+
Cr.onmessage = async (e) => {
|
|
3942
3995
|
let t = e.data, { id: n } = t;
|
|
3943
3996
|
try {
|
|
3944
3997
|
if (t.type === "parse") {
|
|
3945
3998
|
let e = await Ct(t.buffer, { vertexAttributeDescript: t.vertexAttributeDescript });
|
|
3946
3999
|
if (t.assemble) {
|
|
3947
|
-
let r =
|
|
4000
|
+
let r = br(e, {
|
|
3948
4001
|
batching: t.batching,
|
|
3949
4002
|
vertexAttributeDescript: t.vertexAttributeDescript
|
|
3950
4003
|
});
|
|
3951
|
-
|
|
4004
|
+
Cr.postMessage({
|
|
3952
4005
|
id: n,
|
|
3953
4006
|
ok: !0,
|
|
3954
4007
|
tile: e,
|
|
3955
4008
|
geometry: r
|
|
3956
|
-
}, [...
|
|
3957
|
-
} else
|
|
4009
|
+
}, [...Sr(e), ...Sr(r)]);
|
|
4010
|
+
} else Cr.postMessage({
|
|
3958
4011
|
id: n,
|
|
3959
4012
|
ok: !0,
|
|
3960
4013
|
tile: e
|
|
3961
|
-
},
|
|
4014
|
+
}, Sr(e));
|
|
3962
4015
|
} else {
|
|
3963
4016
|
let e = await Wn(t.tex, {
|
|
3964
4017
|
compressed: t.compressed,
|
|
3965
4018
|
maxSize: t.maxSize
|
|
3966
4019
|
});
|
|
3967
|
-
|
|
4020
|
+
Cr.postMessage({
|
|
3968
4021
|
id: n,
|
|
3969
4022
|
ok: !0,
|
|
3970
4023
|
data: e
|
|
3971
|
-
},
|
|
4024
|
+
}, wr(e));
|
|
3972
4025
|
}
|
|
3973
4026
|
} catch (e) {
|
|
3974
4027
|
let t = e?.permanent === !0, r = String(e?.message ?? e);
|
|
3975
|
-
|
|
4028
|
+
Cr.postMessage({
|
|
3976
4029
|
id: n,
|
|
3977
4030
|
ok: !1,
|
|
3978
4031
|
message: r,
|