@loaders.gl/i3s 3.1.0-beta.1 → 3.1.0

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 (86) hide show
  1. package/dist/bundle.js +306 -253
  2. package/dist/es5/bundle.js +1 -1
  3. package/dist/es5/bundle.js.map +1 -1
  4. package/dist/es5/i3s-attribute-loader.js +147 -62
  5. package/dist/es5/i3s-attribute-loader.js.map +1 -1
  6. package/dist/es5/i3s-building-scene-layer-loader.js +36 -8
  7. package/dist/es5/i3s-building-scene-layer-loader.js.map +1 -1
  8. package/dist/es5/i3s-content-loader.js +36 -10
  9. package/dist/es5/i3s-content-loader.js.map +1 -1
  10. package/dist/es5/i3s-loader.js +175 -51
  11. package/dist/es5/i3s-loader.js.map +1 -1
  12. package/dist/es5/i3s-node-page-loader.js +51 -8
  13. package/dist/es5/i3s-node-page-loader.js.map +1 -1
  14. package/dist/es5/index.js +6 -6
  15. package/dist/es5/index.js.map +1 -1
  16. package/dist/es5/lib/helpers/i3s-nodepages-tiles.js +328 -173
  17. package/dist/es5/lib/helpers/i3s-nodepages-tiles.js.map +1 -1
  18. package/dist/es5/lib/parsers/constants.js +9 -28
  19. package/dist/es5/lib/parsers/constants.js.map +1 -1
  20. package/dist/es5/lib/parsers/parse-i3s-attribute.js +69 -27
  21. package/dist/es5/lib/parsers/parse-i3s-attribute.js.map +1 -1
  22. package/dist/es5/lib/parsers/parse-i3s-building-scene-layer.js +62 -28
  23. package/dist/es5/lib/parsers/parse-i3s-building-scene-layer.js.map +1 -1
  24. package/dist/es5/lib/parsers/parse-i3s-tile-content.js +416 -314
  25. package/dist/es5/lib/parsers/parse-i3s-tile-content.js.map +1 -1
  26. package/dist/es5/lib/parsers/parse-i3s.js +109 -49
  27. package/dist/es5/lib/parsers/parse-i3s.js.map +1 -1
  28. package/dist/es5/lib/utils/convert-i3s-obb-to-mbs.js +8 -4
  29. package/dist/es5/lib/utils/convert-i3s-obb-to-mbs.js.map +1 -1
  30. package/dist/es5/lib/utils/url-utils.js +14 -17
  31. package/dist/es5/lib/utils/url-utils.js.map +1 -1
  32. package/dist/es5/types.js +10 -2
  33. package/dist/es5/types.js.map +1 -1
  34. package/dist/esm/i3s-attribute-loader.js +1 -1
  35. package/dist/esm/i3s-attribute-loader.js.map +1 -1
  36. package/dist/esm/i3s-building-scene-layer-loader.js +1 -1
  37. package/dist/esm/i3s-building-scene-layer-loader.js.map +1 -1
  38. package/dist/esm/i3s-content-loader.js +1 -1
  39. package/dist/esm/i3s-content-loader.js.map +1 -1
  40. package/dist/esm/i3s-loader.js +1 -1
  41. package/dist/esm/i3s-loader.js.map +1 -1
  42. package/dist/esm/i3s-node-page-loader.js +1 -1
  43. package/dist/esm/i3s-node-page-loader.js.map +1 -1
  44. package/dist/esm/index.js.map +1 -1
  45. package/dist/esm/lib/helpers/i3s-nodepages-tiles.js +33 -23
  46. package/dist/esm/lib/helpers/i3s-nodepages-tiles.js.map +1 -1
  47. package/dist/esm/lib/parsers/constants.js +2 -18
  48. package/dist/esm/lib/parsers/constants.js.map +1 -1
  49. package/dist/esm/lib/parsers/parse-i3s-tile-content.js +44 -61
  50. package/dist/esm/lib/parsers/parse-i3s-tile-content.js.map +1 -1
  51. package/dist/esm/lib/parsers/parse-i3s.js +40 -25
  52. package/dist/esm/lib/parsers/parse-i3s.js.map +1 -1
  53. package/dist/esm/lib/utils/url-utils.js +2 -3
  54. package/dist/esm/lib/utils/url-utils.js.map +1 -1
  55. package/dist/esm/types.js +7 -0
  56. package/dist/esm/types.js.map +1 -1
  57. package/dist/i3s-content-worker.js +235 -188
  58. package/dist/index.d.ts +1 -1
  59. package/dist/index.d.ts.map +1 -1
  60. package/dist/lib/helpers/i3s-nodepages-tiles.d.ts +20 -20
  61. package/dist/lib/helpers/i3s-nodepages-tiles.d.ts.map +1 -1
  62. package/dist/lib/helpers/i3s-nodepages-tiles.js +33 -32
  63. package/dist/lib/parsers/constants.d.ts +1 -17
  64. package/dist/lib/parsers/constants.d.ts.map +1 -1
  65. package/dist/lib/parsers/constants.js +3 -21
  66. package/dist/lib/parsers/parse-i3s-attribute.d.ts +1 -1
  67. package/dist/lib/parsers/parse-i3s-tile-content.d.ts +2 -2
  68. package/dist/lib/parsers/parse-i3s-tile-content.d.ts.map +1 -1
  69. package/dist/lib/parsers/parse-i3s-tile-content.js +35 -61
  70. package/dist/lib/parsers/parse-i3s.d.ts +5 -3
  71. package/dist/lib/parsers/parse-i3s.d.ts.map +1 -1
  72. package/dist/lib/parsers/parse-i3s.js +37 -32
  73. package/dist/lib/utils/url-utils.d.ts +6 -6
  74. package/dist/lib/utils/url-utils.d.ts.map +1 -1
  75. package/dist/lib/utils/url-utils.js +5 -5
  76. package/dist/types.d.ts +289 -74
  77. package/dist/types.d.ts.map +1 -1
  78. package/dist/types.js +6 -1
  79. package/package.json +9 -9
  80. package/src/index.ts +3 -3
  81. package/src/lib/helpers/i3s-nodepages-tiles.ts +71 -55
  82. package/src/lib/parsers/constants.ts +2 -22
  83. package/src/lib/parsers/parse-i3s-tile-content.ts +74 -103
  84. package/src/lib/parsers/parse-i3s.ts +48 -37
  85. package/src/lib/utils/url-utils.ts +7 -7
  86. package/src/types.ts +302 -93
package/dist/bundle.js CHANGED
@@ -463,6 +463,9 @@
463
463
  const workerOptions = options[worker.id] || {};
464
464
  const workerFile = `${worker.id}-worker.js`;
465
465
  let url = workerOptions.workerUrl;
466
+ if (!url && worker.id === "compression") {
467
+ url = options.workerUrl;
468
+ }
466
469
  if (options._workerType === "test") {
467
470
  url = `modules/${worker.module}/dist/${workerFile}`;
468
471
  }
@@ -7114,11 +7117,11 @@
7114
7117
  }
7115
7118
  });
7116
7119
 
7117
- // ../textures/src/lib/gl-constants.ts
7118
- var GL;
7119
- var init_gl_constants = __esm({
7120
- "../textures/src/lib/gl-constants.ts"() {
7121
- GL = {
7120
+ // ../textures/src/lib/gl-extensions.ts
7121
+ var GL_EXTENSIONS_CONSTANTS;
7122
+ var init_gl_extensions = __esm({
7123
+ "../textures/src/lib/gl-extensions.ts"() {
7124
+ GL_EXTENSIONS_CONSTANTS = {
7122
7125
  COMPRESSED_RGB_S3TC_DXT1_EXT: 33776,
7123
7126
  COMPRESSED_RGBA_S3TC_DXT1_EXT: 33777,
7124
7127
  COMPRESSED_RGBA_S3TC_DXT3_EXT: 33778,
@@ -7363,74 +7366,74 @@
7363
7366
  var VULKAN_TO_WEBGL_FORMAT_MAP;
7364
7367
  var init_ktx_format_helper = __esm({
7365
7368
  "../textures/src/lib/utils/ktx-format-helper.ts"() {
7366
- init_gl_constants();
7369
+ init_gl_extensions();
7367
7370
  VULKAN_TO_WEBGL_FORMAT_MAP = {
7368
- 131: GL.COMPRESSED_RGB_S3TC_DXT1_EXT,
7369
- 132: GL.COMPRESSED_SRGB_S3TC_DXT1_EXT,
7370
- 133: GL.COMPRESSED_RGBA_S3TC_DXT1_EXT,
7371
- 134: GL.COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT,
7372
- 135: GL.COMPRESSED_RGBA_S3TC_DXT3_EXT,
7373
- 136: GL.COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT,
7374
- 137: GL.COMPRESSED_RGBA_S3TC_DXT5_EXT,
7375
- 138: GL.COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT,
7376
- 139: GL.COMPRESSED_RED_RGTC1_EXT,
7377
- 140: GL.COMPRESSED_SIGNED_RED_RGTC1_EXT,
7378
- 141: GL.COMPRESSED_RED_GREEN_RGTC2_EXT,
7379
- 142: GL.COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT,
7380
- 147: GL.COMPRESSED_RGB8_ETC2,
7381
- 148: GL.COMPRESSED_SRGB8_ETC2,
7382
- 149: GL.COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2,
7383
- 150: GL.COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2,
7384
- 151: GL.COMPRESSED_RGBA8_ETC2_EAC,
7385
- 152: GL.COMPRESSED_SRGB8_ALPHA8_ETC2_EAC,
7386
- 153: GL.COMPRESSED_R11_EAC,
7387
- 154: GL.COMPRESSED_SIGNED_R11_EAC,
7388
- 155: GL.COMPRESSED_RG11_EAC,
7389
- 156: GL.COMPRESSED_SIGNED_RG11_EAC,
7390
- 157: GL.COMPRESSED_RGBA_ASTC_4x4_KHR,
7391
- 158: GL.COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR,
7392
- 159: GL.COMPRESSED_RGBA_ASTC_5x4_KHR,
7393
- 160: GL.COMPRESSED_SRGB8_ALPHA8_ASTC_5X4_KHR,
7394
- 161: GL.COMPRESSED_RGBA_ASTC_5x5_KHR,
7395
- 162: GL.COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR,
7396
- 163: GL.COMPRESSED_RGBA_ASTC_6x5_KHR,
7397
- 164: GL.COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR,
7398
- 165: GL.COMPRESSED_RGBA_ASTC_6x6_KHR,
7399
- 166: GL.COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR,
7400
- 167: GL.COMPRESSED_RGBA_ASTC_8x5_KHR,
7401
- 168: GL.COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR,
7402
- 169: GL.COMPRESSED_RGBA_ASTC_8x6_KHR,
7403
- 170: GL.COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR,
7404
- 171: GL.COMPRESSED_RGBA_ASTC_8x8_KHR,
7405
- 172: GL.COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR,
7406
- 173: GL.COMPRESSED_RGBA_ASTC_10x5_KHR,
7407
- 174: GL.COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR,
7408
- 175: GL.COMPRESSED_RGBA_ASTC_10x6_KHR,
7409
- 176: GL.COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR,
7410
- 177: GL.COMPRESSED_RGBA_ASTC_10x8_KHR,
7411
- 178: GL.COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR,
7412
- 179: GL.COMPRESSED_RGBA_ASTC_10x10_KHR,
7413
- 180: GL.COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR,
7414
- 181: GL.COMPRESSED_RGBA_ASTC_12x10_KHR,
7415
- 182: GL.COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR,
7416
- 183: GL.COMPRESSED_RGBA_ASTC_12x12_KHR,
7417
- 184: GL.COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR,
7418
- 1000054e3: GL.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG,
7419
- 1000054001: GL.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG,
7420
- 1000066e3: GL.COMPRESSED_RGBA_ASTC_4x4_KHR,
7421
- 1000066001: GL.COMPRESSED_RGBA_ASTC_5x4_KHR,
7422
- 1000066002: GL.COMPRESSED_RGBA_ASTC_5x5_KHR,
7423
- 1000066003: GL.COMPRESSED_RGBA_ASTC_6x5_KHR,
7424
- 1000066004: GL.COMPRESSED_RGBA_ASTC_6x6_KHR,
7425
- 1000066005: GL.COMPRESSED_RGBA_ASTC_8x5_KHR,
7426
- 1000066006: GL.COMPRESSED_RGBA_ASTC_8x6_KHR,
7427
- 1000066007: GL.COMPRESSED_RGBA_ASTC_8x8_KHR,
7428
- 1000066008: GL.COMPRESSED_RGBA_ASTC_10x5_KHR,
7429
- 1000066009: GL.COMPRESSED_RGBA_ASTC_10x6_KHR,
7430
- 1000066010: GL.COMPRESSED_RGBA_ASTC_10x8_KHR,
7431
- 1000066011: GL.COMPRESSED_RGBA_ASTC_10x10_KHR,
7432
- 1000066012: GL.COMPRESSED_RGBA_ASTC_12x10_KHR,
7433
- 1000066013: GL.COMPRESSED_RGBA_ASTC_12x12_KHR
7371
+ 131: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGB_S3TC_DXT1_EXT,
7372
+ 132: GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB_S3TC_DXT1_EXT,
7373
+ 133: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_S3TC_DXT1_EXT,
7374
+ 134: GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT,
7375
+ 135: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_S3TC_DXT3_EXT,
7376
+ 136: GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT,
7377
+ 137: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_S3TC_DXT5_EXT,
7378
+ 138: GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT,
7379
+ 139: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RED_RGTC1_EXT,
7380
+ 140: GL_EXTENSIONS_CONSTANTS.COMPRESSED_SIGNED_RED_RGTC1_EXT,
7381
+ 141: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RED_GREEN_RGTC2_EXT,
7382
+ 142: GL_EXTENSIONS_CONSTANTS.COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT,
7383
+ 147: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGB8_ETC2,
7384
+ 148: GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ETC2,
7385
+ 149: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2,
7386
+ 150: GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2,
7387
+ 151: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA8_ETC2_EAC,
7388
+ 152: GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ETC2_EAC,
7389
+ 153: GL_EXTENSIONS_CONSTANTS.COMPRESSED_R11_EAC,
7390
+ 154: GL_EXTENSIONS_CONSTANTS.COMPRESSED_SIGNED_R11_EAC,
7391
+ 155: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RG11_EAC,
7392
+ 156: GL_EXTENSIONS_CONSTANTS.COMPRESSED_SIGNED_RG11_EAC,
7393
+ 157: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_4x4_KHR,
7394
+ 158: GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR,
7395
+ 159: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_5x4_KHR,
7396
+ 160: GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_5X4_KHR,
7397
+ 161: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_5x5_KHR,
7398
+ 162: GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR,
7399
+ 163: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_6x5_KHR,
7400
+ 164: GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR,
7401
+ 165: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_6x6_KHR,
7402
+ 166: GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR,
7403
+ 167: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_8x5_KHR,
7404
+ 168: GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR,
7405
+ 169: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_8x6_KHR,
7406
+ 170: GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR,
7407
+ 171: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_8x8_KHR,
7408
+ 172: GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR,
7409
+ 173: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_10x5_KHR,
7410
+ 174: GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR,
7411
+ 175: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_10x6_KHR,
7412
+ 176: GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR,
7413
+ 177: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_10x8_KHR,
7414
+ 178: GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR,
7415
+ 179: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_10x10_KHR,
7416
+ 180: GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR,
7417
+ 181: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_12x10_KHR,
7418
+ 182: GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR,
7419
+ 183: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_12x12_KHR,
7420
+ 184: GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR,
7421
+ 1000054e3: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG,
7422
+ 1000054001: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG,
7423
+ 1000066e3: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_4x4_KHR,
7424
+ 1000066001: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_5x4_KHR,
7425
+ 1000066002: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_5x5_KHR,
7426
+ 1000066003: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_6x5_KHR,
7427
+ 1000066004: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_6x6_KHR,
7428
+ 1000066005: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_8x5_KHR,
7429
+ 1000066006: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_8x6_KHR,
7430
+ 1000066007: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_8x8_KHR,
7431
+ 1000066008: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_10x5_KHR,
7432
+ 1000066009: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_10x6_KHR,
7433
+ 1000066010: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_10x8_KHR,
7434
+ 1000066011: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_10x10_KHR,
7435
+ 1000066012: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_12x10_KHR,
7436
+ 1000066013: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_12x12_KHR
7434
7437
  };
7435
7438
  }
7436
7439
  });
@@ -7479,7 +7482,7 @@
7479
7482
  }
7480
7483
  });
7481
7484
 
7482
- // ../textures/src/lib/parsers/parse-basis.js
7485
+ // ../textures/src/lib/parsers/parse-basis.ts
7483
7486
  async function parseBasis(data, options) {
7484
7487
  if (options.basis.containerFormat === "auto") {
7485
7488
  if (isKTX(data)) {
@@ -7615,23 +7618,47 @@
7615
7618
  }
7616
7619
  var OutputFormat;
7617
7620
  var init_parse_basis = __esm({
7618
- "../textures/src/lib/parsers/parse-basis.js"() {
7621
+ "../textures/src/lib/parsers/parse-basis.ts"() {
7619
7622
  init_basis_module_loader();
7620
- init_gl_constants();
7623
+ init_gl_extensions();
7621
7624
  init_texture_formats();
7622
7625
  init_parse_ktx();
7623
7626
  OutputFormat = {
7624
- etc1: { basisFormat: 0, compressed: true, format: GL.COMPRESSED_RGB_ETC1_WEBGL },
7627
+ etc1: {
7628
+ basisFormat: 0,
7629
+ compressed: true,
7630
+ format: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGB_ETC1_WEBGL
7631
+ },
7625
7632
  etc2: { basisFormat: 1, compressed: true },
7626
- bc1: { basisFormat: 2, compressed: true, format: GL.COMPRESSED_RGB_S3TC_DXT1_EXT },
7627
- bc3: { basisFormat: 3, compressed: true, format: GL.COMPRESSED_RGBA_S3TC_DXT5_EXT },
7633
+ bc1: {
7634
+ basisFormat: 2,
7635
+ compressed: true,
7636
+ format: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGB_S3TC_DXT1_EXT
7637
+ },
7638
+ bc3: {
7639
+ basisFormat: 3,
7640
+ compressed: true,
7641
+ format: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_S3TC_DXT5_EXT
7642
+ },
7628
7643
  bc4: { basisFormat: 4, compressed: true },
7629
7644
  bc5: { basisFormat: 5, compressed: true },
7630
7645
  "bc7-m6-opaque-only": { basisFormat: 6, compressed: true },
7631
7646
  "bc7-m5": { basisFormat: 7, compressed: true },
7632
- "pvrtc1-4-rgb": { basisFormat: 8, compressed: true, format: GL.COMPRESSED_RGB_PVRTC_4BPPV1_IMG },
7633
- "pvrtc1-4-rgba": { basisFormat: 9, compressed: true, format: GL.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG },
7634
- "astc-4x4": { basisFormat: 10, compressed: true, format: GL.COMPRESSED_RGBA_ASTC_4X4_KHR },
7647
+ "pvrtc1-4-rgb": {
7648
+ basisFormat: 8,
7649
+ compressed: true,
7650
+ format: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGB_PVRTC_4BPPV1_IMG
7651
+ },
7652
+ "pvrtc1-4-rgba": {
7653
+ basisFormat: 9,
7654
+ compressed: true,
7655
+ format: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG
7656
+ },
7657
+ "astc-4x4": {
7658
+ basisFormat: 10,
7659
+ compressed: true,
7660
+ format: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_4X4_KHR
7661
+ },
7635
7662
  "atc-rgb": { basisFormat: 11, compressed: true },
7636
7663
  "atc-rgba-interpolated-alpha": { basisFormat: 12, compressed: true },
7637
7664
  rgba32: { basisFormat: 13, compressed: false },
@@ -7717,7 +7744,7 @@
7717
7744
  var init_parse_dds = __esm({
7718
7745
  "../textures/src/lib/parsers/parse-dds.ts"() {
7719
7746
  init_src2();
7720
- init_gl_constants();
7747
+ init_gl_extensions();
7721
7748
  init_extract_mipmap_images();
7722
7749
  DDS_CONSTANTS = {
7723
7750
  MAGIC_NUMBER: 542327876,
@@ -7734,12 +7761,12 @@
7734
7761
  DDPF_FOURCC: 4
7735
7762
  };
7736
7763
  DDS_PIXEL_FORMATS = {
7737
- DXT1: GL.COMPRESSED_RGB_S3TC_DXT1_EXT,
7738
- DXT3: GL.COMPRESSED_RGBA_S3TC_DXT3_EXT,
7739
- DXT5: GL.COMPRESSED_RGBA_S3TC_DXT5_EXT,
7740
- "ATC ": GL.COMPRESSED_RGB_ATC_WEBGL,
7741
- ATCA: GL.COMPRESSED_RGBA_ATC_EXPLICIT_ALPHA_WEBGL,
7742
- ATCI: GL.COMPRESSED_RGBA_ATC_INTERPOLATED_ALPHA_WEBGL
7764
+ DXT1: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGB_S3TC_DXT1_EXT,
7765
+ DXT3: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_S3TC_DXT3_EXT,
7766
+ DXT5: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_S3TC_DXT5_EXT,
7767
+ "ATC ": GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGB_ATC_WEBGL,
7768
+ ATCA: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ATC_EXPLICIT_ALPHA_WEBGL,
7769
+ ATCI: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ATC_INTERPOLATED_ALPHA_WEBGL
7743
7770
  };
7744
7771
  getATCLevelSize = getDxt1LevelSize;
7745
7772
  getATCALevelSize = getDxtXLevelSize;
@@ -7839,7 +7866,7 @@
7839
7866
  var PVR_CONSTANTS, PVR_PIXEL_FORMATS, PVR_SIZE_FUNCTIONS;
7840
7867
  var init_parse_pvr = __esm({
7841
7868
  "../textures/src/lib/parsers/parse-pvr.ts"() {
7842
- init_gl_constants();
7869
+ init_gl_extensions();
7843
7870
  init_extract_mipmap_images();
7844
7871
  PVR_CONSTANTS = {
7845
7872
  MAGIC_NUMBER: 55727696,
@@ -7855,33 +7882,75 @@
7855
7882
  METADATA_SIZE_INDEX: 12
7856
7883
  };
7857
7884
  PVR_PIXEL_FORMATS = {
7858
- 0: [GL.COMPRESSED_RGB_PVRTC_2BPPV1_IMG],
7859
- 1: [GL.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG],
7860
- 2: [GL.COMPRESSED_RGB_PVRTC_4BPPV1_IMG],
7861
- 3: [GL.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG],
7862
- 6: [GL.COMPRESSED_RGB_ETC1_WEBGL],
7863
- 7: [GL.COMPRESSED_RGB_S3TC_DXT1_EXT],
7864
- 9: [GL.COMPRESSED_RGBA_S3TC_DXT3_EXT],
7865
- 11: [GL.COMPRESSED_RGBA_S3TC_DXT5_EXT],
7866
- 22: [GL.COMPRESSED_RGB8_ETC2],
7867
- 23: [GL.COMPRESSED_RGBA8_ETC2_EAC],
7868
- 24: [GL.COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2],
7869
- 25: [GL.COMPRESSED_R11_EAC],
7870
- 26: [GL.COMPRESSED_RG11_EAC],
7871
- 27: [GL.COMPRESSED_RGBA_ASTC_4X4_KHR, GL.COMPRESSED_SRGB8_ALPHA8_ASTC_4X4_KHR],
7872
- 28: [GL.COMPRESSED_RGBA_ASTC_5X4_KHR, GL.COMPRESSED_SRGB8_ALPHA8_ASTC_5X4_KHR],
7873
- 29: [GL.COMPRESSED_RGBA_ASTC_5X5_KHR, GL.COMPRESSED_SRGB8_ALPHA8_ASTC_5X5_KHR],
7874
- 30: [GL.COMPRESSED_RGBA_ASTC_6X5_KHR, GL.COMPRESSED_SRGB8_ALPHA8_ASTC_6X5_KHR],
7875
- 31: [GL.COMPRESSED_RGBA_ASTC_6X6_KHR, GL.COMPRESSED_SRGB8_ALPHA8_ASTC_6X6_KHR],
7876
- 32: [GL.COMPRESSED_RGBA_ASTC_8X5_KHR, GL.COMPRESSED_SRGB8_ALPHA8_ASTC_8X5_KHR],
7877
- 33: [GL.COMPRESSED_RGBA_ASTC_8X6_KHR, GL.COMPRESSED_SRGB8_ALPHA8_ASTC_8X6_KHR],
7878
- 34: [GL.COMPRESSED_RGBA_ASTC_8X8_KHR, GL.COMPRESSED_SRGB8_ALPHA8_ASTC_8X8_KHR],
7879
- 35: [GL.COMPRESSED_RGBA_ASTC_10X5_KHR, GL.COMPRESSED_SRGB8_ALPHA8_ASTC_10X5_KHR],
7880
- 36: [GL.COMPRESSED_RGBA_ASTC_10X6_KHR, GL.COMPRESSED_SRGB8_ALPHA8_ASTC_10X6_KHR],
7881
- 37: [GL.COMPRESSED_RGBA_ASTC_10X8_KHR, GL.COMPRESSED_SRGB8_ALPHA8_ASTC_10X8_KHR],
7882
- 38: [GL.COMPRESSED_RGBA_ASTC_10X10_KHR, GL.COMPRESSED_SRGB8_ALPHA8_ASTC_10X10_KHR],
7883
- 39: [GL.COMPRESSED_RGBA_ASTC_12X10_KHR, GL.COMPRESSED_SRGB8_ALPHA8_ASTC_12X10_KHR],
7884
- 40: [GL.COMPRESSED_RGBA_ASTC_12X12_KHR, GL.COMPRESSED_SRGB8_ALPHA8_ASTC_12X12_KHR]
7885
+ 0: [GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGB_PVRTC_2BPPV1_IMG],
7886
+ 1: [GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG],
7887
+ 2: [GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGB_PVRTC_4BPPV1_IMG],
7888
+ 3: [GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG],
7889
+ 6: [GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGB_ETC1_WEBGL],
7890
+ 7: [GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGB_S3TC_DXT1_EXT],
7891
+ 9: [GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_S3TC_DXT3_EXT],
7892
+ 11: [GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_S3TC_DXT5_EXT],
7893
+ 22: [GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGB8_ETC2],
7894
+ 23: [GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA8_ETC2_EAC],
7895
+ 24: [GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2],
7896
+ 25: [GL_EXTENSIONS_CONSTANTS.COMPRESSED_R11_EAC],
7897
+ 26: [GL_EXTENSIONS_CONSTANTS.COMPRESSED_RG11_EAC],
7898
+ 27: [
7899
+ GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_4X4_KHR,
7900
+ GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_4X4_KHR
7901
+ ],
7902
+ 28: [
7903
+ GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_5X4_KHR,
7904
+ GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_5X4_KHR
7905
+ ],
7906
+ 29: [
7907
+ GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_5X5_KHR,
7908
+ GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_5X5_KHR
7909
+ ],
7910
+ 30: [
7911
+ GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_6X5_KHR,
7912
+ GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_6X5_KHR
7913
+ ],
7914
+ 31: [
7915
+ GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_6X6_KHR,
7916
+ GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_6X6_KHR
7917
+ ],
7918
+ 32: [
7919
+ GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_8X5_KHR,
7920
+ GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_8X5_KHR
7921
+ ],
7922
+ 33: [
7923
+ GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_8X6_KHR,
7924
+ GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_8X6_KHR
7925
+ ],
7926
+ 34: [
7927
+ GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_8X8_KHR,
7928
+ GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_8X8_KHR
7929
+ ],
7930
+ 35: [
7931
+ GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_10X5_KHR,
7932
+ GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_10X5_KHR
7933
+ ],
7934
+ 36: [
7935
+ GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_10X6_KHR,
7936
+ GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_10X6_KHR
7937
+ ],
7938
+ 37: [
7939
+ GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_10X8_KHR,
7940
+ GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_10X8_KHR
7941
+ ],
7942
+ 38: [
7943
+ GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_10X10_KHR,
7944
+ GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_10X10_KHR
7945
+ ],
7946
+ 39: [
7947
+ GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_12X10_KHR,
7948
+ GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_12X10_KHR
7949
+ ],
7950
+ 40: [
7951
+ GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_12X12_KHR,
7952
+ GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_12X12_KHR
7953
+ ]
7885
7954
  };
7886
7955
  PVR_SIZE_FUNCTIONS = {
7887
7956
  0: pvrtc2bppSize,
@@ -8002,12 +8071,34 @@
8002
8071
  }
8003
8072
  });
8004
8073
 
8074
+ // src/types.ts
8075
+ var DATA_TYPE, HeaderAttributeProperty;
8076
+ var init_types = __esm({
8077
+ "src/types.ts"() {
8078
+ (function(DATA_TYPE2) {
8079
+ DATA_TYPE2["UInt8"] = "UInt8";
8080
+ DATA_TYPE2["UInt16"] = "UInt16";
8081
+ DATA_TYPE2["UInt32"] = "UInt32";
8082
+ DATA_TYPE2["UInt64"] = "UInt64";
8083
+ DATA_TYPE2["Int16"] = "Int16";
8084
+ DATA_TYPE2["Int32"] = "Int32";
8085
+ DATA_TYPE2["Int64"] = "Int64";
8086
+ DATA_TYPE2["Float32"] = "Float32";
8087
+ DATA_TYPE2["Float64"] = "Float64";
8088
+ })(DATA_TYPE || (DATA_TYPE = {}));
8089
+ (function(HeaderAttributeProperty2) {
8090
+ HeaderAttributeProperty2["vertexCount"] = "vertexCount";
8091
+ HeaderAttributeProperty2["featureCount"] = "featureCount";
8092
+ })(HeaderAttributeProperty || (HeaderAttributeProperty = {}));
8093
+ }
8094
+ });
8095
+
8005
8096
  // src/lib/utils/url-utils.ts
8006
8097
  function getUrlWithToken(url, token = null) {
8007
8098
  return token ? `${url}?token=${token}` : url;
8008
8099
  }
8009
- function generateTileAttributeUrls(tile) {
8010
- const { url, attributeData } = tile;
8100
+ function generateTileAttributeUrls(url, tile) {
8101
+ const { attributeData = [] } = tile;
8011
8102
  const attributeUrls = [];
8012
8103
  for (let index = 0; index < attributeData.length; index++) {
8013
8104
  const attributeUrl = attributeData[index].href.replace("./", "");
@@ -8652,24 +8743,6 @@
8652
8743
  }
8653
8744
  });
8654
8745
 
8655
- // src/types.ts
8656
- var DATA_TYPE;
8657
- var init_types = __esm({
8658
- "src/types.ts"() {
8659
- (function(DATA_TYPE2) {
8660
- DATA_TYPE2["UInt8"] = "UInt8";
8661
- DATA_TYPE2["UInt16"] = "UInt16";
8662
- DATA_TYPE2["UInt32"] = "UInt32";
8663
- DATA_TYPE2["UInt64"] = "UInt64";
8664
- DATA_TYPE2["Int16"] = "Int16";
8665
- DATA_TYPE2["Int32"] = "Int32";
8666
- DATA_TYPE2["Int64"] = "Int64";
8667
- DATA_TYPE2["Float32"] = "Float32";
8668
- DATA_TYPE2["Float64"] = "Float64";
8669
- })(DATA_TYPE || (DATA_TYPE = {}));
8670
- }
8671
- });
8672
-
8673
8746
  // src/lib/parsers/constants.ts
8674
8747
  function getConstructorForDataFormat(dataType) {
8675
8748
  switch (dataType) {
@@ -8684,7 +8757,7 @@
8684
8757
  case DATA_TYPE.UInt64:
8685
8758
  return Float64Array;
8686
8759
  default:
8687
- return null;
8760
+ throw new Error(`parse i3s tile content: unknown type of data: ${dataType}`);
8688
8761
  }
8689
8762
  }
8690
8763
  function sizeOf(dataType) {
@@ -8703,10 +8776,10 @@
8703
8776
  case DATA_TYPE.Float64:
8704
8777
  return 8;
8705
8778
  default:
8706
- return NaN;
8779
+ throw new Error(`parse i3s tile content: unknown size of data: ${dataType}`);
8707
8780
  }
8708
8781
  }
8709
- var GL_TYPE_MAP, I3S_NAMED_VERTEX_ATTRIBUTES, I3S_NAMED_GEOMETRY_ATTRIBUTES, I3S_NAMED_HEADER_ATTRIBUTES, STRING_ATTRIBUTE_TYPE, OBJECT_ID_ATTRIBUTE_TYPE, FLOAT_64_TYPE, INT_16_ATTRIBUTE_TYPE, COORDINATE_SYSTEM;
8782
+ var GL_TYPE_MAP, STRING_ATTRIBUTE_TYPE, OBJECT_ID_ATTRIBUTE_TYPE, FLOAT_64_TYPE, INT_16_ATTRIBUTE_TYPE, COORDINATE_SYSTEM;
8710
8783
  var init_constants2 = __esm({
8711
8784
  "src/lib/parsers/constants.ts"() {
8712
8785
  init_esm5();
@@ -8718,22 +8791,6 @@
8718
8791
  UInt32: esm_default2.UNSIGNED_INT,
8719
8792
  UInt64: esm_default2.DOUBLE
8720
8793
  };
8721
- I3S_NAMED_VERTEX_ATTRIBUTES = {
8722
- position: "position",
8723
- normal: "normal",
8724
- uv0: "uv0",
8725
- color: "color",
8726
- region: "region"
8727
- };
8728
- I3S_NAMED_GEOMETRY_ATTRIBUTES = {
8729
- vertexAttributes: "vertexAttributes",
8730
- featureAttributeOrder: "featureAttributeOrder",
8731
- featureAttributes: "featureAttributes"
8732
- };
8733
- I3S_NAMED_HEADER_ATTRIBUTES = {
8734
- vertexCount: "vertexCount",
8735
- featureCount: "featureCount"
8736
- };
8737
8794
  STRING_ATTRIBUTE_TYPE = "String";
8738
8795
  OBJECT_ID_ATTRIBUTE_TYPE = "Oid32";
8739
8796
  FLOAT_64_TYPE = "Float64";
@@ -8751,26 +8808,24 @@
8751
8808
  // src/lib/parsers/parse-i3s-tile-content.ts
8752
8809
  function getLoaderForTextureFormat(textureFormat) {
8753
8810
  switch (textureFormat) {
8754
- case "jpeg":
8755
- case "png":
8756
- return ImageLoader;
8757
8811
  case "ktx-etc2":
8758
8812
  case "dds":
8759
8813
  return CompressedTextureLoader;
8760
8814
  case "ktx2":
8761
8815
  return BasisLoader;
8816
+ case "jpg":
8817
+ case "png":
8762
8818
  default:
8763
- return null;
8819
+ return ImageLoader;
8764
8820
  }
8765
8821
  }
8766
8822
  async function parseI3STileContent(arrayBuffer, tile, tileset, options, context) {
8767
8823
  tile.content = tile.content || {};
8768
8824
  tile.content.featureIds = tile.content.featureIds || null;
8769
- tile.content.featureData = constructFeatureDataStruct(tileset);
8770
8825
  tile.content.attributes = {};
8771
8826
  if (tile.textureUrl) {
8772
8827
  const url = getUrlWithToken(tile.textureUrl, options?.i3s?.token);
8773
- const loader = getLoaderForTextureFormat(tile.textureFormat) || ImageLoader;
8828
+ const loader = getLoaderForTextureFormat(tile.textureFormat);
8774
8829
  const response = await fetch(url);
8775
8830
  const arrayBuffer2 = await response.arrayBuffer();
8776
8831
  if (options?.i3s.decodeTextures) {
@@ -8799,9 +8854,9 @@
8799
8854
  if (tile.content.material) {
8800
8855
  tile.content.texture = null;
8801
8856
  }
8802
- return await parseI3SNodeGeometry(arrayBuffer, tile, options);
8857
+ return await parseI3SNodeGeometry(arrayBuffer, tile, tileset, options);
8803
8858
  }
8804
- async function parseI3SNodeGeometry(arrayBuffer, tile, options) {
8859
+ async function parseI3SNodeGeometry(arrayBuffer, tile, tileset, options) {
8805
8860
  if (!tile.content) {
8806
8861
  return tile;
8807
8862
  }
@@ -8810,6 +8865,7 @@
8810
8865
  let vertexCount;
8811
8866
  let byteOffset = 0;
8812
8867
  let featureCount = 0;
8868
+ let indices;
8813
8869
  if (tile.isDracoGeometry) {
8814
8870
  const decompressedGeometry = await parse(arrayBuffer, DracoLoader2, {
8815
8871
  draco: {
@@ -8817,7 +8873,7 @@
8817
8873
  }
8818
8874
  });
8819
8875
  vertexCount = decompressedGeometry.header.vertexCount;
8820
- const indices = decompressedGeometry.indices.value;
8876
+ indices = decompressedGeometry.indices?.value;
8821
8877
  const {
8822
8878
  POSITION,
8823
8879
  NORMAL,
@@ -8832,8 +8888,7 @@
8832
8888
  color: COLOR_0,
8833
8889
  uv0: TEXCOORD_0,
8834
8890
  uvRegion,
8835
- id: featureIndex,
8836
- indices
8891
+ id: featureIndex
8837
8892
  };
8838
8893
  updateAttributesMetadata(attributes, decompressedGeometry);
8839
8894
  const featureIds = getFeatureIdsFromFeatureIndexMetadata(featureIndex);
@@ -8841,8 +8896,13 @@
8841
8896
  flattenFeatureIdsByFeatureIndices(attributes, featureIds);
8842
8897
  }
8843
8898
  } else {
8844
- const { vertexAttributes, attributesOrder, featureAttributes, featureAttributeOrder } = content.featureData;
8845
- const headers = parseHeaders(content, arrayBuffer);
8899
+ const {
8900
+ vertexAttributes,
8901
+ ordering: attributesOrder,
8902
+ featureAttributes,
8903
+ featureAttributeOrder
8904
+ } = tileset.store.defaultGeometrySchema;
8905
+ const headers = parseHeaders(tileset, arrayBuffer);
8846
8906
  byteOffset = headers.byteOffset;
8847
8907
  vertexCount = headers.vertexCount;
8848
8908
  featureCount = headers.featureCount;
@@ -8866,7 +8926,7 @@
8866
8926
  texCoords: attributes.uv0,
8867
8927
  uvRegions: normalizeAttribute(attributes.uvRegion)
8868
8928
  };
8869
- content.indices = attributes.indices || null;
8929
+ content.indices = indices || null;
8870
8930
  if (attributes.id && attributes.id.value) {
8871
8931
  tile.content.featureIds = attributes.id.value;
8872
8932
  }
@@ -8904,41 +8964,25 @@
8904
8964
  attribute.normalized = true;
8905
8965
  return attribute;
8906
8966
  }
8907
- function constructFeatureDataStruct(tileset) {
8908
- const defaultGeometrySchema = tileset.store.defaultGeometrySchema;
8909
- const featureData = defaultGeometrySchema;
8910
- for (const geometryAttribute in I3S_NAMED_GEOMETRY_ATTRIBUTES) {
8911
- for (const namedAttribute in I3S_NAMED_VERTEX_ATTRIBUTES) {
8912
- const attribute = defaultGeometrySchema[geometryAttribute][namedAttribute];
8913
- if (attribute) {
8914
- const { byteOffset = 0, count = 0, valueType, valuesPerElement } = attribute;
8915
- featureData[geometryAttribute][namedAttribute] = {
8916
- valueType,
8917
- valuesPerElement,
8918
- byteOffset,
8919
- count
8920
- };
8921
- }
8922
- }
8923
- }
8924
- featureData.attributesOrder = defaultGeometrySchema.ordering;
8925
- return featureData;
8926
- }
8927
- function parseHeaders(content, arrayBuffer) {
8967
+ function parseHeaders(tileset, arrayBuffer) {
8928
8968
  let byteOffset = 0;
8929
8969
  let vertexCount = 0;
8930
8970
  let featureCount = 0;
8931
- content.featureData.header.forEach(({ property, type }) => {
8971
+ for (const { property, type } of tileset.store.defaultGeometrySchema.header) {
8932
8972
  const TypedArrayTypeHeader = getConstructorForDataFormat(type);
8933
- if (property === I3S_NAMED_HEADER_ATTRIBUTES.vertexCount) {
8934
- vertexCount = new TypedArrayTypeHeader(arrayBuffer, 0, 4)[0];
8935
- byteOffset += sizeOf(type);
8936
- }
8937
- if (property === I3S_NAMED_HEADER_ATTRIBUTES.featureCount) {
8938
- featureCount = new TypedArrayTypeHeader(arrayBuffer, 4, 4)[0];
8939
- byteOffset += sizeOf(type);
8973
+ switch (property) {
8974
+ case HeaderAttributeProperty.vertexCount:
8975
+ vertexCount = new TypedArrayTypeHeader(arrayBuffer, 0, 4)[0];
8976
+ byteOffset += sizeOf(type);
8977
+ break;
8978
+ case HeaderAttributeProperty.featureCount:
8979
+ featureCount = new TypedArrayTypeHeader(arrayBuffer, 4, 4)[0];
8980
+ byteOffset += sizeOf(type);
8981
+ break;
8982
+ default:
8983
+ break;
8940
8984
  }
8941
- });
8985
+ }
8942
8986
  return {
8943
8987
  vertexCount,
8944
8988
  featureCount,
@@ -8955,7 +8999,7 @@
8955
8999
  break;
8956
9000
  }
8957
9001
  const buffer = arrayBuffer.slice(byteOffset);
8958
- let value = [];
9002
+ let value;
8959
9003
  if (valueType === "UInt64") {
8960
9004
  value = parseUint64Values(buffer, count * valuesPerElement, sizeOf(valueType));
8961
9005
  } else {
@@ -8992,7 +9036,7 @@
8992
9036
  values.push(value);
8993
9037
  offset += attributeSize;
8994
9038
  }
8995
- return values;
9039
+ return new Uint32Array(values);
8996
9040
  }
8997
9041
  function parsePositions(attribute, tile) {
8998
9042
  const mbs = tile.mbs;
@@ -9059,7 +9103,9 @@
9059
9103
  if (pbrMaterial.pbrMetallicRoughness && pbrMaterial.pbrMetallicRoughness.baseColorFactor) {
9060
9104
  pbrMaterial.pbrMetallicRoughness.baseColorFactor = convertColorFormat(pbrMaterial.pbrMetallicRoughness.baseColorFactor);
9061
9105
  }
9062
- setMaterialTexture(pbrMaterial, texture);
9106
+ if (texture) {
9107
+ setMaterialTexture(pbrMaterial, texture);
9108
+ }
9063
9109
  return pbrMaterial;
9064
9110
  }
9065
9111
  function convertColorFormat(colorFactor) {
@@ -9121,7 +9167,7 @@
9121
9167
  attributes.id.value = result;
9122
9168
  }
9123
9169
  function getFeatureIdsFromFeatureIndexMetadata(featureIndex) {
9124
- return featureIndex && featureIndex.metadata && featureIndex.metadata["i3s-feature-ids"] && featureIndex.metadata["i3s-feature-ids"].intArray;
9170
+ return featureIndex?.metadata?.["i3s-feature-ids"]?.intArray;
9125
9171
  }
9126
9172
  var scratchVector5, I3S_ATTRIBUTE_TYPE;
9127
9173
  var init_parse_i3s_tile_content = __esm({
@@ -9132,6 +9178,7 @@
9132
9178
  init_src4();
9133
9179
  init_src6();
9134
9180
  init_src7();
9181
+ init_types();
9135
9182
  init_url_utils();
9136
9183
  init_constants2();
9137
9184
  scratchVector5 = new Vector3([0, 0, 0]);
@@ -9709,8 +9756,8 @@
9709
9756
  this.textureDefinitionsSelectedFormats = [];
9710
9757
  this.textureLoaderOptions = {};
9711
9758
  this.tileset = { ...tileset };
9712
- this.nodesPerPage = tileset.nodePages.nodesPerPage;
9713
- this.lodSelectionMetricType = tileset.nodePages.lodSelectionMetricType;
9759
+ this.nodesPerPage = tileset.nodePages?.nodesPerPage || 64;
9760
+ this.lodSelectionMetricType = tileset.nodePages?.lodSelectionMetricType;
9714
9761
  this.options = options;
9715
9762
  this.initSelectedFormatsForTextureDefinitions(tileset);
9716
9763
  }
@@ -9737,21 +9784,21 @@
9737
9784
  for (const child of node2.children || []) {
9738
9785
  const childNode = await this.getNodeById(child);
9739
9786
  children.push({
9740
- id: child,
9787
+ id: child.toString(),
9741
9788
  obb: childNode.obb
9742
9789
  });
9743
9790
  }
9744
- let contentUrl = null;
9745
- let textureUrl = null;
9746
- let materialDefinition = null;
9747
- let textureFormat = "jpeg";
9791
+ let contentUrl;
9792
+ let textureUrl;
9793
+ let materialDefinition;
9794
+ let textureFormat = "jpg";
9748
9795
  let attributeUrls = [];
9749
9796
  let isDracoGeometry = false;
9750
9797
  if (node2 && node2.mesh) {
9751
- const { url, isDracoGeometry: isDracoGeometryResult } = node2.mesh.geometry && this.getContentUrl(node2.mesh.geometry) || { url: null, isDracoGeometry: null };
9798
+ const { url, isDracoGeometry: isDracoGeometryResult } = node2.mesh.geometry && this.getContentUrl(node2.mesh.geometry) || { isDracoGeometry: false };
9752
9799
  contentUrl = url;
9753
9800
  isDracoGeometry = isDracoGeometryResult;
9754
- const [textureData, nodeMaterialDefinition] = this.getInformationFromMaterial(node2.mesh.material);
9801
+ const { textureData, materialDefinition: nodeMaterialDefinition } = this.getInformationFromMaterial(node2.mesh.material);
9755
9802
  materialDefinition = nodeMaterialDefinition;
9756
9803
  textureFormat = textureData.format || textureFormat;
9757
9804
  if (textureData.name) {
@@ -9763,7 +9810,7 @@
9763
9810
  }
9764
9811
  const lodSelection = this.getLodSelection(node2);
9765
9812
  return normalizeTileNonUrlData({
9766
- id,
9813
+ id: id.toString(),
9767
9814
  lodSelection,
9768
9815
  obb: node2.obb,
9769
9816
  contentUrl,
@@ -9777,7 +9824,7 @@
9777
9824
  });
9778
9825
  }
9779
9826
  getContentUrl(meshGeometryData) {
9780
- let result = {};
9827
+ let result = null;
9781
9828
  const geometryDefinition = this.tileset.geometryDefinitions[meshGeometryData.definition];
9782
9829
  let geometryIndex = -1;
9783
9830
  if (this.options.i3s && this.options.i3s.useDracoGeometry) {
@@ -9810,17 +9857,18 @@
9810
9857
  return lodSelection;
9811
9858
  }
9812
9859
  getInformationFromMaterial(material) {
9813
- const textureDataDefault = { name: null, format: null };
9860
+ const informationFromMaterial = { textureData: { name: null } };
9814
9861
  if (material) {
9815
- const materialDefinition = this.tileset.materialDefinitions[material.definition];
9816
- const textureSetDefinitionIndex = materialDefinition && materialDefinition.pbrMetallicRoughness && materialDefinition.pbrMetallicRoughness.baseColorTexture && materialDefinition.pbrMetallicRoughness.baseColorTexture.textureSetDefinitionId;
9817
- if (textureSetDefinitionIndex || textureSetDefinitionIndex === 0) {
9818
- const textureData = this.textureDefinitionsSelectedFormats[textureSetDefinitionIndex] || textureDataDefault;
9819
- return [textureData, materialDefinition];
9862
+ const materialDefinition = this.tileset.materialDefinitions?.[material.definition];
9863
+ if (materialDefinition) {
9864
+ informationFromMaterial.materialDefinition = materialDefinition;
9865
+ const textureSetDefinitionIndex = materialDefinition?.pbrMetallicRoughness?.baseColorTexture?.textureSetDefinitionId;
9866
+ if (typeof textureSetDefinitionIndex === "number") {
9867
+ informationFromMaterial.textureData = this.textureDefinitionsSelectedFormats[textureSetDefinitionIndex] || informationFromMaterial.textureData;
9868
+ }
9820
9869
  }
9821
- return [textureDataDefault, materialDefinition];
9822
9870
  }
9823
- return [textureDataDefault, null];
9871
+ return informationFromMaterial;
9824
9872
  }
9825
9873
  initSelectedFormatsForTextureDefinitions(tileset) {
9826
9874
  this.textureDefinitionsSelectedFormats = [];
@@ -9868,49 +9916,54 @@
9868
9916
 
9869
9917
  // src/lib/parsers/parse-i3s.ts
9870
9918
  function normalizeTileData(tile, options, context) {
9871
- tile.url = context.url;
9872
- if (tile.featureData) {
9873
- tile.featureUrl = `${tile.url}/${tile.featureData[0].href}`;
9874
- }
9919
+ const url = context.url || "";
9920
+ let contentUrl;
9875
9921
  if (tile.geometryData) {
9876
- tile.contentUrl = `${tile.url}/${tile.geometryData[0].href}`;
9922
+ contentUrl = `${url}/${tile.geometryData[0].href}`;
9877
9923
  }
9924
+ let textureUrl;
9878
9925
  if (tile.textureData) {
9879
- tile.textureUrl = `${tile.url}/${tile.textureData[0].href}`;
9926
+ textureUrl = `${url}/${tile.textureData[0].href}`;
9880
9927
  }
9928
+ let attributeUrls;
9881
9929
  if (tile.attributeData) {
9882
- tile.attributeUrls = generateTileAttributeUrls(tile);
9883
- }
9884
- return normalizeTileNonUrlData(tile);
9930
+ attributeUrls = generateTileAttributeUrls(url, tile);
9931
+ }
9932
+ return normalizeTileNonUrlData({
9933
+ ...tile,
9934
+ url,
9935
+ contentUrl,
9936
+ textureUrl,
9937
+ attributeUrls,
9938
+ isDracoGeometry: false
9939
+ });
9885
9940
  }
9886
9941
  function normalizeTileNonUrlData(tile) {
9887
- const box = tile.obb ? [
9888
- ...Ellipsoid.WGS84.cartographicToCartesian(tile.obb.center),
9889
- ...tile.obb.halfSize,
9890
- ...tile.obb.quaternion
9891
- ] : void 0;
9892
- let sphere;
9942
+ const boundingVolume = {};
9943
+ let mbs = [0, 0, 0, 1];
9893
9944
  if (tile.mbs) {
9894
- sphere = [
9945
+ mbs = tile.mbs;
9946
+ boundingVolume.sphere = [
9895
9947
  ...Ellipsoid.WGS84.cartographicToCartesian(tile.mbs.slice(0, 3)),
9896
9948
  tile.mbs[3]
9897
9949
  ];
9898
- } else if (box) {
9899
- const obb = new OrientedBoundingBox().fromCenterHalfSizeQuaternion(box.slice(0, 3), tile.obb.halfSize, tile.obb.quaternion);
9950
+ } else if (tile.obb) {
9951
+ boundingVolume.box = [
9952
+ ...Ellipsoid.WGS84.cartographicToCartesian(tile.obb.center),
9953
+ ...tile.obb.halfSize,
9954
+ ...tile.obb.quaternion
9955
+ ];
9956
+ const obb = new OrientedBoundingBox().fromCenterHalfSizeQuaternion(boundingVolume.box.slice(0, 3), tile.obb.halfSize, tile.obb.quaternion);
9900
9957
  const boundingSphere = obb.getBoundingSphere();
9901
- sphere = [...boundingSphere.center, boundingSphere.radius];
9902
- tile.mbs = [...tile.obb.center, boundingSphere.radius];
9903
- }
9904
- tile.boundingVolume = {
9905
- sphere,
9906
- box
9907
- };
9908
- tile.lodMetricType = tile.lodSelection[0].metricType;
9909
- tile.lodMetricValue = tile.lodSelection[0].maxError;
9910
- tile.transformMatrix = tile.transform;
9911
- tile.type = TILE_TYPE.MESH;
9912
- tile.refine = TILE_REFINEMENT.REPLACE;
9913
- return tile;
9958
+ boundingVolume.sphere = [...boundingSphere.center, boundingSphere.radius];
9959
+ mbs = [...tile.obb.center, boundingSphere.radius];
9960
+ }
9961
+ const lodMetricType = tile.lodSelection?.[0].metricType;
9962
+ const lodMetricValue = tile.lodSelection?.[0].maxError;
9963
+ const transformMatrix = tile.transform;
9964
+ const type = TILE_TYPE.MESH;
9965
+ const refine = TILE_REFINEMENT.REPLACE;
9966
+ return { ...tile, mbs, boundingVolume, lodMetricType, lodMetricValue, transformMatrix, type, refine };
9914
9967
  }
9915
9968
  async function normalizeTilesetData(tileset, options, context) {
9916
9969
  tileset.url = context.url;