s3m-three 0.3.13 → 0.3.14

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 (48) hide show
  1. package/dist/browser/assets/{s3mWorker-DLsGBSaV.js → s3mWorker-BjPOUgjg.js} +1 -1
  2. package/dist/browser/s3m-three.iife.ext-three.js +21 -21
  3. package/dist/browser/s3m-three.iife.js +21 -21
  4. package/dist/core/TextureDecode.d.ts +9 -0
  5. package/dist/core/TextureDecode.d.ts.map +1 -1
  6. package/dist/core/TextureDecode.js +66 -0
  7. package/dist/core/TextureDecode.js.map +1 -1
  8. package/dist/index.d.ts +2 -2
  9. package/dist/index.d.ts.map +1 -1
  10. package/dist/index.js +2 -2
  11. package/dist/index.js.map +1 -1
  12. package/dist/render/DatasetManager.d.ts +3 -1
  13. package/dist/render/DatasetManager.d.ts.map +1 -1
  14. package/dist/render/DatasetManager.js +2 -1
  15. package/dist/render/DatasetManager.js.map +1 -1
  16. package/dist/render/OrthoProjection.d.ts +22 -0
  17. package/dist/render/OrthoProjection.d.ts.map +1 -1
  18. package/dist/render/OrthoProjection.js +60 -0
  19. package/dist/render/OrthoProjection.js.map +1 -1
  20. package/dist/render/S3MViewer.d.ts +70 -0
  21. package/dist/render/S3MViewer.d.ts.map +1 -1
  22. package/dist/render/S3MViewer.js +100 -5
  23. package/dist/render/S3MViewer.js.map +1 -1
  24. package/dist/render/TextureFactory.d.ts +3 -2
  25. package/dist/render/TextureFactory.d.ts.map +1 -1
  26. package/dist/render/TextureFactory.js +26 -6
  27. package/dist/render/TextureFactory.js.map +1 -1
  28. package/dist/tileset/S3MTileset.d.ts +26 -1
  29. package/dist/tileset/S3MTileset.d.ts.map +1 -1
  30. package/dist/tileset/S3MTileset.js +29 -2
  31. package/dist/tileset/S3MTileset.js.map +1 -1
  32. package/dist/worker/S3MWorkerClient.d.ts +6 -3
  33. package/dist/worker/S3MWorkerClient.d.ts.map +1 -1
  34. package/dist/worker/S3MWorkerClient.js +8 -5
  35. package/dist/worker/S3MWorkerClient.js.map +1 -1
  36. package/dist/worker/s3mWorker.js +123 -71
  37. package/dist/worker/s3mWorker.js.map +1 -1
  38. package/docs/API.md +61 -0
  39. package/package.json +1 -1
  40. package/src/core/TextureDecode.ts +87 -0
  41. package/src/index.ts +2 -1
  42. package/src/render/DatasetManager.ts +5 -1
  43. package/src/render/OrthoProjection.ts +58 -0
  44. package/src/render/S3MViewer.ts +134 -7
  45. package/src/render/TextureFactory.ts +35 -8
  46. package/src/tileset/S3MTileset.ts +41 -2
  47. package/src/worker/S3MWorkerClient.ts +9 -5
  48. package/src/worker/s3mWorker.ts +2 -2
@@ -3010,37 +3010,86 @@ function pn(e) {
3010
3010
  }
3011
3011
  // src/core/TextureDecode.ts
3012
3012
  function mn(e, t, n) {
3013
+ let r = Math.max(1, t >> 1), i = Math.max(1, n >> 1), a = new Uint8Array(r * i * 4), o = t * 4;
3014
+ for (let t = 0; t < i; t++) {
3015
+ let n = t * 2 * o, i = n + o, s = t * r * 4;
3016
+ for (let t = 0; t < r; t++) {
3017
+ let r = n + t * 8, o = i + t * 8;
3018
+ a[s++] = e[r] + e[r + 4] + e[o] + e[o + 4] >> 2, a[s++] = e[r + 1] + e[r + 5] + e[o + 1] + e[o + 5] >> 2, a[s++] = e[r + 2] + e[r + 6] + e[o + 2] + e[o + 6] >> 2, a[s++] = e[r + 3] + e[r + 7] + e[o + 3] + e[o + 7] >> 2;
3019
+ }
3020
+ }
3021
+ return {
3022
+ rgba: a,
3023
+ width: r,
3024
+ height: i
3025
+ };
3026
+ }
3027
+ async function hn(e, t) {
3028
+ if (!t || !Number.isFinite(t) || t < 1) return e;
3029
+ let n = Math.max(e.width, e.height);
3030
+ if (n <= t || e.blocks) return e;
3031
+ if (e.bitmap) {
3032
+ let r = t / n, i = Math.max(1, Math.round(e.width * r)), a = Math.max(1, Math.round(e.height * r)), o = await createImageBitmap(e.bitmap, {
3033
+ resizeWidth: i,
3034
+ resizeHeight: a,
3035
+ resizeQuality: "high"
3036
+ });
3037
+ return e.bitmap.close?.(), {
3038
+ ...e,
3039
+ width: i,
3040
+ height: a,
3041
+ bitmap: o
3042
+ };
3043
+ }
3044
+ let r = e.rgba;
3045
+ if (!r) return e;
3046
+ let i = e.width, a = e.height;
3047
+ for (; Math.max(i, a) > t && i >= 2 && a >= 2;) {
3048
+ let e = mn(r, i, a);
3049
+ r = e.rgba, i = e.width, a = e.height;
3050
+ }
3051
+ return {
3052
+ ...e,
3053
+ width: i,
3054
+ height: a,
3055
+ rgba: r
3056
+ };
3057
+ }
3058
+ function gn(e, t, n) {
3013
3059
  let r = t * 4, i = new Uint8Array(r);
3014
3060
  for (let t = 0; t < n >> 1; t++) {
3015
3061
  let a = t * r, o = (n - 1 - t) * r;
3016
3062
  i.set(e.subarray(a, a + r)), e.copyWithin(a, o, o + r), e.set(i, o);
3017
3063
  }
3018
3064
  }
3019
- function hn(e) {
3065
+ function _n(e) {
3020
3066
  return e === Z.DXT3 || e === Z.DXT4 || e === Z.DXT5 || e === Z.ARGB || e === Z.ABGR || e === Z.BGRA || e === Z.RGBA;
3021
3067
  }
3022
- function gn(e) {
3068
+ function vn(e) {
3023
3069
  let { width: t, height: n, pixelFormat: r, data: i } = e, a = new Uint8Array(t * n * 4);
3024
- return ht.decode(a, t, n, i, r), e.flipY && mn(a, t, n), {
3070
+ return ht.decode(a, t, n, i, r), e.flipY && gn(a, t, n), {
3025
3071
  rgba: a,
3026
- hasAlpha: hn(r)
3072
+ hasAlpha: _n(r)
3027
3073
  };
3028
3074
  }
3029
- function _n(e) {
3075
+ function yn(e) {
3030
3076
  let { width: t, height: n, pixelFormat: r, data: i } = e, a = new Uint8Array(t * n * 4), o = r === Z.RGBA || r === Z.BGRA || r === Z.ARGB || r === Z.ABGR, s = r === Z.BGR || r === Z.BGRA, c = r === Z.ARGB || r === Z.ABGR, l = o ? 4 : 3;
3031
3077
  for (let e = 0, r = 0, u = 0; e < t * n; e++, r += l, u += 4) {
3032
3078
  let e = c ? r + 1 : r;
3033
3079
  a[u] = s ? i[e + 2] : i[e], a[u + 1] = i[e + 1], a[u + 2] = s ? i[e] : i[e + 2], a[u + 3] = o ? i[c ? r : r + 3] : 255;
3034
3080
  }
3035
- return e.flipY && mn(a, t, n), {
3081
+ return e.flipY && gn(a, t, n), {
3036
3082
  rgba: a,
3037
- hasAlpha: hn(r)
3083
+ hasAlpha: _n(r)
3038
3084
  };
3039
3085
  }
3040
- function vn(e, t, n) {
3086
+ function bn(e, t, n) {
3041
3087
  return (e + 3 >> 2) * (t + 3 >> 2) * (n === "dxt1" ? 8 : 16);
3042
3088
  }
3043
- async function yn(e, t = {}) {
3089
+ async function xn(e, t = {}) {
3090
+ return hn(await Sn(e, t), t.maxSize);
3091
+ }
3092
+ async function Sn(e, t = {}) {
3044
3093
  let n = {
3045
3094
  kind: "unsupported(0/0)",
3046
3095
  width: 0,
@@ -3050,7 +3099,7 @@ async function yn(e, t = {}) {
3050
3099
  hasAlpha: !1
3051
3100
  };
3052
3101
  if (!e || !e.width || !e.height) return n;
3053
- let r = dn(e.compressType ?? 0, e.pixelFormat), i = t.compressed === !0 && !e.flipY, a = (e, t, n, r) => e.byteLength === vn(t, n, r);
3102
+ let r = dn(e.compressType ?? 0, e.pixelFormat), i = t.compressed === !0 && !e.flipY, a = (e, t, n, r) => e.byteLength === bn(t, n, r);
3054
3103
  if (r === "crn") try {
3055
3104
  let t = await sn(e.data), n = t.dxtFormat === 1 ? Z.DXT1 : Z.DXT5, r = t.dxtFormat === 1 ? "dxt1" : "dxt5";
3056
3105
  if (i && a(t.data, t.width, t.height, r)) return {
@@ -3063,7 +3112,7 @@ async function yn(e, t = {}) {
3063
3112
  blocks: t.data,
3064
3113
  blockFormat: r
3065
3114
  };
3066
- let o = gn({
3115
+ let o = vn({
3067
3116
  width: t.width,
3068
3117
  height: t.height,
3069
3118
  pixelFormat: n,
@@ -3100,7 +3149,7 @@ async function yn(e, t = {}) {
3100
3149
  blocks: e.data,
3101
3150
  blockFormat: r
3102
3151
  };
3103
- let n = gn({
3152
+ let n = vn({
3104
3153
  ...e,
3105
3154
  pixelFormat: t
3106
3155
  });
@@ -3125,7 +3174,7 @@ async function yn(e, t = {}) {
3125
3174
  };
3126
3175
  }
3127
3176
  if (r === "raw") {
3128
- let t = _n(e);
3177
+ let t = yn(e);
3129
3178
  return {
3130
3179
  kind: r,
3131
3180
  width: e.width,
@@ -3140,10 +3189,10 @@ async function yn(e, t = {}) {
3140
3189
  kind: `unsupported(${e.compressType}/${e.pixelFormat})`
3141
3190
  };
3142
3191
  }
3143
- function bn(e) {
3192
+ function Cn(e) {
3144
3193
  return e === "u8" ? 1 : e === "u16" ? 2 : 4;
3145
3194
  }
3146
- function xn(e, t) {
3195
+ function wn(e, t) {
3147
3196
  switch (e) {
3148
3197
  case "u8": return new Uint8Array(t);
3149
3198
  case "u16": return new Uint16Array(t);
@@ -3151,7 +3200,7 @@ function xn(e, t) {
3151
3200
  default: return new Float32Array(t);
3152
3201
  }
3153
3202
  }
3154
- function Sn(e, t) {
3203
+ function Tn(e, t) {
3155
3204
  switch (e) {
3156
3205
  case "u8": return new Uint8Array(t);
3157
3206
  case "u16": return new Uint16Array(t);
@@ -3159,14 +3208,14 @@ function Sn(e, t) {
3159
3208
  default: return new Float32Array(t);
3160
3209
  }
3161
3210
  }
3162
- function Cn(e) {
3163
- let { data: t, stride: n, offsetInBytes: r, dtype: i = "f32" } = e, a = e.components ?? e.comp ?? 3, o = bn(i), s = a * o, c = n ?? s, l = r ?? 0, u = i === "u8";
3211
+ function En(e) {
3212
+ let { data: t, stride: n, offsetInBytes: r, dtype: i = "f32" } = e, a = e.components ?? e.comp ?? 3, o = Cn(i), s = a * o, c = n ?? s, l = r ?? 0, u = i === "u8";
3164
3213
  if (c === s && l === 0) return {
3165
- array: xn(i, t.buffer.slice(t.byteOffset, t.byteOffset + t.byteLength)),
3214
+ array: wn(i, t.buffer.slice(t.byteOffset, t.byteOffset + t.byteLength)),
3166
3215
  components: a,
3167
3216
  normalized: u
3168
3217
  };
3169
- let d = Math.floor(t.byteLength / c), f = Sn(i, d * a), p = new DataView(t.buffer, t.byteOffset, t.byteLength);
3218
+ let d = Math.floor(t.byteLength / c), f = Tn(i, d * a), p = new DataView(t.buffer, t.byteOffset, t.byteLength);
3170
3219
  for (let e = 0; e < d; e++) {
3171
3220
  let t = e * c + l;
3172
3221
  for (let n = 0; n < a; n++) {
@@ -3180,7 +3229,7 @@ function Cn(e) {
3180
3229
  normalized: u
3181
3230
  };
3182
3231
  }
3183
- function wn(e, t) {
3232
+ function Dn(e, t) {
3184
3233
  let n = new Float32Array(t * 3);
3185
3234
  if (!e) return n.fill(1), n;
3186
3235
  let r = e.data, i = e.components ?? 4, a = e.dtype === "u8" ? 1 / 255 : 1;
@@ -3190,7 +3239,7 @@ function wn(e, t) {
3190
3239
  }
3191
3240
  return n;
3192
3241
  }
3193
- function Tn(e) {
3242
+ function On(e) {
3194
3243
  let { indices: t, indexType: n, indexCount: r } = e;
3195
3244
  if (!t || r === 0) return null;
3196
3245
  let i = Math.floor(t.byteLength / r), a = i === 4 || i !== 2 && (n === 1 || n === 3), o = r * (a ? 4 : 2);
@@ -3198,7 +3247,7 @@ function Tn(e) {
3198
3247
  let s = t.buffer.slice(t.byteOffset, t.byteOffset + o);
3199
3248
  return a ? new Uint32Array(s) : new Uint16Array(s);
3200
3249
  }
3201
- function En(e, t, n) {
3250
+ function kn(e, t, n) {
3202
3251
  let r = new Float32Array(n * 3), i = (t, n, i) => {
3203
3252
  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 * _;
3204
3253
  for (let e of [
@@ -3215,7 +3264,7 @@ function En(e, t, n) {
3215
3264
  }
3216
3265
  return r;
3217
3266
  }
3218
- function Dn(e, t) {
3267
+ function An(e, t) {
3219
3268
  let n = [
3220
3269
  Infinity,
3221
3270
  Infinity,
@@ -3245,21 +3294,21 @@ function Dn(e, t) {
3245
3294
  sphereRadius: Math.sqrt(a)
3246
3295
  };
3247
3296
  }
3248
- var On = [
3297
+ var jn = [
3249
3298
  13,
3250
3299
  2,
3251
3300
  3
3252
- ], kn = 1;
3253
- function An(e) {
3254
- return On.includes(e);
3301
+ ], Mn = 1;
3302
+ function Nn(e) {
3303
+ return jn.includes(e);
3255
3304
  }
3256
- function jn(e) {
3305
+ function Pn(e) {
3257
3306
  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;
3258
3307
  }
3259
- function Mn(e, t, n, r, i) {
3308
+ function Fn(e, t, n, r, i) {
3260
3309
  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];
3261
3310
  }
3262
- function Nn(e) {
3311
+ function In(e) {
3263
3312
  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 = [
3264
3313
  u / y,
3265
3314
  d / y,
@@ -3273,12 +3322,12 @@ function Nn(e) {
3273
3322
  ], x = /* @__PURE__ */ new Float32Array(9);
3274
3323
  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;
3275
3324
  }
3276
- function Pn(e, t, n, r, i) {
3325
+ function Ln(e, t, n, r, i) {
3277
3326
  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;
3278
3327
  let a = Math.hypot(i[0], i[1], i[2]) || 1;
3279
3328
  i[0] /= a, i[1] /= a, i[2] /= a;
3280
3329
  }
3281
- function Fn(e) {
3330
+ function Rn(e) {
3282
3331
  let t = 0, n = 0, r = !1, i = !1, a = !1, o = !1;
3283
3332
  for (let s of e) t += s.vertexCount, n += s.index ? s.indexCount : s.vertexCount, s.attrs.normal && (r = !0), s.attrs.uv && (i = !0), s.attrs.uv1 && (a = !0), s.attrs.aAtlasRect && (o = !0);
3284
3333
  let s = {
@@ -3323,10 +3372,10 @@ function Fn(e) {
3323
3372
  0
3324
3373
  ], v = 0, y = 0;
3325
3374
  for (let t of e) {
3326
- let { attrs: e } = t, n = t.vertexCount, r = jn(t.matrix) ? null : t.matrix, i = r && c ? Nn(r) : null, a = e.position.array, o = e.normal?.array, b = e.uv?.array, x = e.uv1?.array, S = e.aColor.array, C = e.aBatchId.array, w = s.array, T = c?.array, ee = l?.array, te = u?.array, E = d.array, ne = f.array;
3375
+ let { attrs: e } = t, n = t.vertexCount, r = Pn(t.matrix) ? null : t.matrix, i = r && c ? In(r) : null, a = e.position.array, o = e.normal?.array, b = e.uv?.array, x = e.uv1?.array, S = e.aColor.array, C = e.aBatchId.array, w = s.array, T = c?.array, ee = l?.array, te = u?.array, E = d.array, ne = f.array;
3327
3376
  for (let e = 0; e < n; e++) {
3328
3377
  let t = v + e;
3329
- r ? (Mn(r, a[e * 3], a[e * 3 + 1], a[e * 3 + 2], _), w[t * 3] = _[0], w[t * 3 + 1] = _[1], w[t * 3 + 2] = _[2]) : (w[t * 3] = a[e * 3], w[t * 3 + 1] = a[e * 3 + 1], w[t * 3 + 2] = a[e * 3 + 2]), T && (o && i ? (Pn(i, o[e * 3], o[e * 3 + 1], o[e * 3 + 2], _), T[t * 3] = _[0], T[t * 3 + 1] = _[1], T[t * 3 + 2] = _[2]) : o && (T[t * 3] = o[e * 3], T[t * 3 + 1] = o[e * 3 + 1], T[t * 3 + 2] = o[e * 3 + 2])), ee && b && (ee[t * 2] = b[e * 2], ee[t * 2 + 1] = b[e * 2 + 1]), te && x && (te[t * 2] = x[e * 2], te[t * 2 + 1] = x[e * 2 + 1]), S ? (E[t * 3] = S[e * 3], E[t * 3 + 1] = S[e * 3 + 1], E[t * 3 + 2] = S[e * 3 + 2]) : (E[t * 3] = 1, E[t * 3 + 1] = 1, E[t * 3 + 2] = 1), ne[t] = C ? C[e] : -1;
3378
+ r ? (Fn(r, a[e * 3], a[e * 3 + 1], a[e * 3 + 2], _), w[t * 3] = _[0], w[t * 3 + 1] = _[1], w[t * 3 + 2] = _[2]) : (w[t * 3] = a[e * 3], w[t * 3 + 1] = a[e * 3 + 1], w[t * 3 + 2] = a[e * 3 + 2]), T && (o && i ? (Ln(i, o[e * 3], o[e * 3 + 1], o[e * 3 + 2], _), T[t * 3] = _[0], T[t * 3 + 1] = _[1], T[t * 3 + 2] = _[2]) : o && (T[t * 3] = o[e * 3], T[t * 3 + 1] = o[e * 3 + 1], T[t * 3 + 2] = o[e * 3 + 2])), ee && b && (ee[t * 2] = b[e * 2], ee[t * 2 + 1] = b[e * 2 + 1]), te && x && (te[t * 2] = x[e * 2], te[t * 2 + 1] = x[e * 2 + 1]), S ? (E[t * 3] = S[e * 3], E[t * 3 + 1] = S[e * 3 + 1], E[t * 3 + 2] = S[e * 3 + 2]) : (E[t * 3] = 1, E[t * 3 + 1] = 1, E[t * 3 + 2] = 1), ne[t] = C ? C[e] : -1;
3330
3379
  }
3331
3380
  if (p) {
3332
3381
  let t = e.aAtlasRect?.array, r = e.aAtlasRect1?.array, i = e.aSecUv?.array, a = p.array, o = m.array, s = h.array;
@@ -3345,7 +3394,7 @@ function Fn(e) {
3345
3394
  }
3346
3395
  v += n;
3347
3396
  }
3348
- let b = Dn(s.array, t);
3397
+ let b = An(s.array, t);
3349
3398
  return {
3350
3399
  skeletonName: e[0].name,
3351
3400
  geoNames: e.map((e) => e.name),
@@ -3370,11 +3419,11 @@ function Fn(e) {
3370
3419
  batchedFrom: e.length
3371
3420
  };
3372
3421
  }
3373
- function In(e, t, n, r) {
3422
+ function zn(e, t, n, r) {
3374
3423
  let i = t.vertexPackage, a = i.vertexAttributes.find((e) => e.semantic === "position");
3375
3424
  if (!a) return r.push(`${e} 无 position`), null;
3376
3425
  let o = i.verticesCount || 0, s = {
3377
- position: Cn(a),
3426
+ position: En(a),
3378
3427
  aColor: {
3379
3428
  array: /* @__PURE__ */ new Float32Array(),
3380
3429
  components: 3,
@@ -3386,13 +3435,13 @@ function In(e, t, n, r) {
3386
3435
  normalized: !1
3387
3436
  }
3388
3437
  }, c = null, l = null, u = null, d = null, f = null;
3389
- for (let e of i.vertexAttributes) e.divisor === void 0 && e.semantic !== "position" && (e.semantic === "color" ? c = e : e.semantic === "batchId" ? l = e : e.semantic === "normal" ? u = Cn(e) : e.semantic === "uv" ? d = Cn(e) : e.semantic === "uv2" && (f = Cn(e)));
3438
+ for (let e of i.vertexAttributes) e.divisor === void 0 && e.semantic !== "position" && (e.semantic === "color" ? c = e : e.semantic === "batchId" ? l = e : e.semantic === "normal" ? u = En(e) : e.semantic === "uv" ? d = En(e) : e.semantic === "uv2" && (f = En(e)));
3390
3439
  s.aColor = {
3391
- array: wn(c, o),
3440
+ array: Dn(c, o),
3392
3441
  components: 3,
3393
3442
  normalized: !1
3394
3443
  }, s.aBatchId = l ? {
3395
- array: Cn(l).array,
3444
+ array: En(l).array,
3396
3445
  components: 1,
3397
3446
  normalized: !1
3398
3447
  } : {
@@ -3427,7 +3476,7 @@ function In(e, t, n, r) {
3427
3476
  indexCount: 0,
3428
3477
  indexType: 0,
3429
3478
  useIndex: 0,
3430
- primitiveType: kn,
3479
+ primitiveType: Mn,
3431
3480
  indices: null,
3432
3481
  passNames: []
3433
3482
  }]), {
@@ -3436,10 +3485,10 @@ function In(e, t, n, r) {
3436
3485
  instanced: i.instanceIndex !== -1 && (i.instanceMode === 16 || i.instanceMode === 17)
3437
3486
  };
3438
3487
  }
3439
- function Ln(e, t, n, r, i, a) {
3440
- let o = n.vertexPackage.verticesCount || 0, s = Tn(i), c = { ...r.attrs };
3441
- return !An(i.primitiveType) && i.primitiveType !== kn && !c.normal && (c.normal = {
3442
- array: En(c.position.array, s, o),
3488
+ function Bn(e, t, n, r, i, a) {
3489
+ let o = n.vertexPackage.verticesCount || 0, s = On(i), c = { ...r.attrs };
3490
+ return !Nn(i.primitiveType) && i.primitiveType !== Mn && !c.normal && (c.normal = {
3491
+ array: kn(c.position.array, s, o),
3443
3492
  components: 3,
3444
3493
  normalized: !1
3445
3494
  }), {
@@ -3452,10 +3501,10 @@ function Ln(e, t, n, r, i, a) {
3452
3501
  indexCount: i.indexCount || 0,
3453
3502
  attributes: c,
3454
3503
  index: s,
3455
- bounds: Dn(c.position.array, o)
3504
+ bounds: An(c.position.array, o)
3456
3505
  };
3457
3506
  }
3458
- function Rn(e, t = {}) {
3507
+ function Vn(e, t = {}) {
3459
3508
  let n = t.batching !== !1, r = [], i = {
3460
3509
  vertices: 0,
3461
3510
  instanced: 0,
@@ -3463,19 +3512,19 @@ function Rn(e, t = {}) {
3463
3512
  skipped: r
3464
3513
  }, a = /* @__PURE__ */ new Map();
3465
3514
  for (let [t, n] of Object.entries(e.geoPackage ?? {})) {
3466
- let o = In(t, n, e, r);
3515
+ let o = zn(t, n, e, r);
3467
3516
  o && (a.set(t, o), i.vertices += n.vertexPackage.verticesCount || 0);
3468
3517
  }
3469
3518
  let o = [], s = /* @__PURE__ */ new Map(), c = 0, l = (e) => {
3470
- An(e.primitiveType) && i.edgeLines++, o.push(e);
3519
+ Nn(e.primitiveType) && i.edgeLines++, o.push(e);
3471
3520
  }, u = (e) => {
3472
3521
  let t = e.passNames[0] ?? "__default__", n = s.get(t);
3473
3522
  n || (n = [], s.set(t, n)), n.push(e);
3474
3523
  }, d = (e, t, r, a, o) => {
3475
3524
  let s = r.packs[a], d = r.instanced && !!t.vertexPackage.instanceBuffer && (t.vertexPackage.instanceCount ?? 0) > 0;
3476
- An(s.primitiveType) || d ? (d && i.instanced++, l(Ln(e, e, t, r, s, o)), c++) : n && s.primitiveType === 4 ? (u({
3525
+ Nn(s.primitiveType) || d ? (d && i.instanced++, l(Bn(e, e, t, r, s, o)), c++) : n && s.primitiveType === 4 ? (u({
3477
3526
  attrs: r.attrs,
3478
- index: Tn(s),
3527
+ index: On(s),
3479
3528
  vertexCount: t.vertexPackage.verticesCount || 0,
3480
3529
  indexCount: s.indexCount || 0,
3481
3530
  name: e,
@@ -3483,7 +3532,7 @@ function Rn(e, t = {}) {
3483
3532
  matrix: o,
3484
3533
  passNames: s.passNames ?? [],
3485
3534
  primitiveType: s.primitiveType
3486
- }), c++) : (l(Ln(e, e, t, r, s, o)), c++);
3535
+ }), c++) : (l(Bn(e, e, t, r, s, o)), c++);
3487
3536
  };
3488
3537
  for (let t of e.groupNode?.pageLods ?? []) for (let n of t.geodes ?? []) {
3489
3538
  let t = n.matrix && n.matrix.length === 16 ? n.matrix : null;
@@ -3500,7 +3549,7 @@ function Rn(e, t = {}) {
3500
3549
  }
3501
3550
  if (s.size > 0) for (let [, e] of s) if (i.originalMeshes = (i.originalMeshes ?? 0) + e.length, e.length === 1) {
3502
3551
  let t = e[0];
3503
- l(Ln(t.name, t.name, t.geo, {
3552
+ l(Bn(t.name, t.name, t.geo, {
3504
3553
  attrs: t.attrs,
3505
3554
  packs: [],
3506
3555
  instanced: !1
@@ -3512,17 +3561,17 @@ function Rn(e, t = {}) {
3512
3561
  indices: t.index ? new Uint8Array(t.index.buffer, t.index.byteOffset, t.index.byteLength) : null,
3513
3562
  passNames: t.passNames
3514
3563
  }, t.matrix));
3515
- } else l(Fn(e));
3564
+ } else l(Rn(e));
3516
3565
  return {
3517
3566
  primitives: o,
3518
3567
  stats: i
3519
3568
  };
3520
3569
  }
3521
3570
  // src/worker/transferables.ts
3522
- var zn = 12;
3523
- function Bn(e) {
3571
+ var Hn = 12;
3572
+ function Un(e) {
3524
3573
  let t = /* @__PURE__ */ new Set(), n = /* @__PURE__ */ new Set(), r = (e, i) => {
3525
- if (e == null || i > zn) return;
3574
+ if (e == null || i > Hn) return;
3526
3575
  if (ArrayBuffer.isView(e)) {
3527
3576
  let n = e.buffer;
3528
3577
  n instanceof ArrayBuffer && t.add(n);
@@ -3544,40 +3593,43 @@ function Bn(e) {
3544
3593
  return r(e, 0), [...t];
3545
3594
  }
3546
3595
  // src/worker/s3mWorker.ts
3547
- var Vn = self;
3548
- function Hn(e) {
3549
- let t = Bn(e);
3596
+ var Wn = self;
3597
+ function Gn(e) {
3598
+ let t = Un(e);
3550
3599
  return e.bitmap && t.push(e.bitmap), t;
3551
3600
  }
3552
- Vn.onmessage = async (e) => {
3601
+ Wn.onmessage = async (e) => {
3553
3602
  let t = e.data, { id: n } = t;
3554
3603
  try {
3555
3604
  if (t.type === "parse") {
3556
3605
  let e = await nt(t.buffer);
3557
3606
  if (t.assemble) {
3558
- let r = Rn(e, { batching: t.batching });
3559
- Vn.postMessage({
3607
+ let r = Vn(e, { batching: t.batching });
3608
+ Wn.postMessage({
3560
3609
  id: n,
3561
3610
  ok: !0,
3562
3611
  tile: e,
3563
3612
  geometry: r
3564
- }, [...Bn(e), ...Bn(r)]);
3565
- } else Vn.postMessage({
3613
+ }, [...Un(e), ...Un(r)]);
3614
+ } else Wn.postMessage({
3566
3615
  id: n,
3567
3616
  ok: !0,
3568
3617
  tile: e
3569
- }, Bn(e));
3618
+ }, Un(e));
3570
3619
  } else {
3571
- let e = await yn(t.tex, { compressed: t.compressed });
3572
- Vn.postMessage({
3620
+ let e = await xn(t.tex, {
3621
+ compressed: t.compressed,
3622
+ maxSize: t.maxSize
3623
+ });
3624
+ Wn.postMessage({
3573
3625
  id: n,
3574
3626
  ok: !0,
3575
3627
  data: e
3576
- }, Hn(e));
3628
+ }, Gn(e));
3577
3629
  }
3578
3630
  } catch (e) {
3579
3631
  let t = e?.permanent === !0, r = String(e?.message ?? e);
3580
- Vn.postMessage({
3632
+ Wn.postMessage({
3581
3633
  id: n,
3582
3634
  ok: !1,
3583
3635
  message: r,