@loaders.gl/tile-converter 3.1.7 → 3.2.0-alpha.2

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 (224) hide show
  1. package/dist/3d-tiles-attributes-worker.d.ts +28 -0
  2. package/dist/3d-tiles-attributes-worker.d.ts.map +1 -0
  3. package/dist/3d-tiles-attributes-worker.js +4 -0
  4. package/dist/3d-tiles-attributes-worker.js.map +7 -0
  5. package/dist/3d-tiles-converter/3d-tiles-converter.d.ts +82 -0
  6. package/dist/3d-tiles-converter/3d-tiles-converter.d.ts.map +1 -0
  7. package/dist/3d-tiles-converter/3d-tiles-converter.js +268 -0
  8. package/dist/3d-tiles-converter/helpers/b3dm-converter.d.ts +84 -0
  9. package/dist/3d-tiles-converter/helpers/b3dm-converter.d.ts.map +1 -0
  10. package/dist/3d-tiles-converter/helpers/b3dm-converter.js +278 -0
  11. package/dist/3d-tiles-converter/helpers/i3s-obb-to-3d-tiles-obb.d.ts +13 -0
  12. package/dist/3d-tiles-converter/helpers/i3s-obb-to-3d-tiles-obb.d.ts.map +1 -0
  13. package/dist/3d-tiles-converter/helpers/i3s-obb-to-3d-tiles-obb.js +23 -0
  14. package/dist/3d-tiles-converter/helpers/texture-atlas.d.ts +9 -0
  15. package/dist/3d-tiles-converter/helpers/texture-atlas.d.ts.map +1 -0
  16. package/dist/3d-tiles-converter/helpers/texture-atlas.js +52 -0
  17. package/dist/3d-tiles-converter/json-templates/tileset.d.ts +15 -0
  18. package/dist/3d-tiles-converter/json-templates/tileset.d.ts.map +1 -0
  19. package/dist/3d-tiles-converter/json-templates/tileset.js +43 -0
  20. package/dist/bundle.d.ts +2 -0
  21. package/dist/bundle.d.ts.map +1 -0
  22. package/dist/bundle.js +5 -0
  23. package/dist/converter.min.js +20 -20
  24. package/dist/deps-installer/deps-installer.d.ts +4 -0
  25. package/dist/deps-installer/deps-installer.d.ts.map +1 -0
  26. package/dist/deps-installer/deps-installer.js +21 -0
  27. package/dist/dist.min.js +1082 -1131
  28. package/dist/es5/3d-tiles-attributes-worker.js +29 -0
  29. package/dist/es5/3d-tiles-attributes-worker.js.map +1 -0
  30. package/dist/es5/3d-tiles-converter/3d-tiles-converter.js +104 -44
  31. package/dist/es5/3d-tiles-converter/3d-tiles-converter.js.map +1 -1
  32. package/dist/es5/3d-tiles-converter/helpers/b3dm-converter.js +34 -43
  33. package/dist/es5/3d-tiles-converter/helpers/b3dm-converter.js.map +1 -1
  34. package/dist/es5/i3s-attributes-worker.js +29 -0
  35. package/dist/es5/i3s-attributes-worker.js.map +1 -0
  36. package/dist/es5/i3s-converter/helpers/coordinate-converter.js +19 -11
  37. package/dist/es5/i3s-converter/helpers/coordinate-converter.js.map +1 -1
  38. package/dist/es5/i3s-converter/helpers/geometry-attributes.js +2 -2
  39. package/dist/es5/i3s-converter/helpers/geometry-attributes.js.map +1 -1
  40. package/dist/es5/i3s-converter/helpers/geometry-converter.js +267 -178
  41. package/dist/es5/i3s-converter/helpers/geometry-converter.js.map +1 -1
  42. package/dist/es5/i3s-converter/helpers/gltf-attributes.js +71 -0
  43. package/dist/es5/i3s-converter/helpers/gltf-attributes.js.map +1 -0
  44. package/dist/es5/i3s-converter/helpers/node-pages.js +43 -52
  45. package/dist/es5/i3s-converter/helpers/node-pages.js.map +1 -1
  46. package/dist/es5/i3s-converter/i3s-converter.js +264 -219
  47. package/dist/es5/i3s-converter/i3s-converter.js.map +1 -1
  48. package/dist/es5/index.js +8 -0
  49. package/dist/es5/index.js.map +1 -1
  50. package/dist/es5/lib/utils/compress-util.js +14 -17
  51. package/dist/es5/lib/utils/compress-util.js.map +1 -1
  52. package/dist/es5/lib/utils/file-utils.js +39 -14
  53. package/dist/es5/lib/utils/file-utils.js.map +1 -1
  54. package/dist/es5/lib/utils/lod-conversion-utils.js.map +1 -1
  55. package/dist/es5/lib/utils/queue.js +61 -0
  56. package/dist/es5/lib/utils/queue.js.map +1 -0
  57. package/dist/es5/lib/utils/statistic-utills.js.map +1 -1
  58. package/dist/es5/lib/utils/write-queue.js +225 -0
  59. package/dist/es5/lib/utils/write-queue.js.map +1 -0
  60. package/dist/es5/pgm-loader.js +1 -1
  61. package/dist/es5/pgm-loader.js.map +1 -1
  62. package/dist/es5/workers/3d-tiles-attributes-worker.js +37 -0
  63. package/dist/es5/workers/3d-tiles-attributes-worker.js.map +1 -0
  64. package/dist/es5/workers/i3s-attributes-worker.js +40 -0
  65. package/dist/es5/workers/i3s-attributes-worker.js.map +1 -0
  66. package/dist/esm/3d-tiles-attributes-worker.js +16 -0
  67. package/dist/esm/3d-tiles-attributes-worker.js.map +1 -0
  68. package/dist/esm/3d-tiles-converter/3d-tiles-converter.js +32 -5
  69. package/dist/esm/3d-tiles-converter/3d-tiles-converter.js.map +1 -1
  70. package/dist/esm/3d-tiles-converter/helpers/b3dm-converter.js +23 -23
  71. package/dist/esm/3d-tiles-converter/helpers/b3dm-converter.js.map +1 -1
  72. package/dist/esm/i3s-attributes-worker.js +16 -0
  73. package/dist/esm/i3s-attributes-worker.js.map +1 -0
  74. package/dist/esm/i3s-converter/helpers/coordinate-converter.js +19 -11
  75. package/dist/esm/i3s-converter/helpers/coordinate-converter.js.map +1 -1
  76. package/dist/esm/i3s-converter/helpers/geometry-attributes.js +2 -2
  77. package/dist/esm/i3s-converter/helpers/geometry-attributes.js.map +1 -1
  78. package/dist/esm/i3s-converter/helpers/geometry-converter.js +117 -58
  79. package/dist/esm/i3s-converter/helpers/geometry-converter.js.map +1 -1
  80. package/dist/esm/i3s-converter/helpers/gltf-attributes.js +54 -0
  81. package/dist/esm/i3s-converter/helpers/gltf-attributes.js.map +1 -0
  82. package/dist/esm/i3s-converter/helpers/node-pages.js +12 -9
  83. package/dist/esm/i3s-converter/helpers/node-pages.js.map +1 -1
  84. package/dist/esm/i3s-converter/i3s-converter.js +115 -28
  85. package/dist/esm/i3s-converter/i3s-converter.js.map +1 -1
  86. package/dist/esm/index.js +1 -0
  87. package/dist/esm/index.js.map +1 -1
  88. package/dist/esm/lib/utils/compress-util.js +6 -8
  89. package/dist/esm/lib/utils/compress-util.js.map +1 -1
  90. package/dist/esm/lib/utils/file-utils.js +11 -1
  91. package/dist/esm/lib/utils/file-utils.js.map +1 -1
  92. package/dist/esm/lib/utils/lod-conversion-utils.js.map +1 -1
  93. package/dist/esm/lib/utils/queue.js +19 -0
  94. package/dist/esm/lib/utils/queue.js.map +1 -0
  95. package/dist/esm/lib/utils/statistic-utills.js.map +1 -1
  96. package/dist/esm/lib/utils/write-queue.js +88 -0
  97. package/dist/esm/lib/utils/write-queue.js.map +1 -0
  98. package/dist/esm/pgm-loader.js +1 -1
  99. package/dist/esm/pgm-loader.js.map +1 -1
  100. package/dist/esm/workers/3d-tiles-attributes-worker.js +5 -0
  101. package/dist/esm/workers/3d-tiles-attributes-worker.js.map +1 -0
  102. package/dist/esm/workers/i3s-attributes-worker.js +4 -0
  103. package/dist/esm/workers/i3s-attributes-worker.js.map +1 -0
  104. package/dist/i3s-attributes-worker.d.ts +33 -0
  105. package/dist/i3s-attributes-worker.d.ts.map +1 -0
  106. package/dist/i3s-attributes-worker.js +10 -0
  107. package/dist/i3s-attributes-worker.js.map +7 -0
  108. package/dist/i3s-converter/helpers/coordinate-converter.d.ts +41 -0
  109. package/dist/i3s-converter/helpers/coordinate-converter.d.ts.map +1 -0
  110. package/dist/i3s-converter/helpers/coordinate-converter.js +122 -0
  111. package/dist/i3s-converter/helpers/create-scene-server-path.d.ts +9 -0
  112. package/dist/i3s-converter/helpers/create-scene-server-path.d.ts.map +1 -0
  113. package/dist/i3s-converter/helpers/create-scene-server-path.js +28 -0
  114. package/dist/i3s-converter/helpers/geometry-attributes.d.ts +8 -0
  115. package/dist/i3s-converter/helpers/geometry-attributes.d.ts.map +1 -0
  116. package/dist/i3s-converter/helpers/geometry-attributes.js +177 -0
  117. package/dist/i3s-converter/helpers/geometry-converter.d.ts +29 -0
  118. package/dist/i3s-converter/helpers/geometry-converter.d.ts.map +1 -0
  119. package/dist/i3s-converter/helpers/geometry-converter.js +901 -0
  120. package/dist/i3s-converter/helpers/gltf-attributes.d.ts +9 -0
  121. package/dist/i3s-converter/helpers/gltf-attributes.d.ts.map +1 -0
  122. package/dist/i3s-converter/helpers/gltf-attributes.js +56 -0
  123. package/dist/i3s-converter/helpers/node-debug.d.ts +8 -0
  124. package/dist/i3s-converter/helpers/node-debug.d.ts.map +1 -0
  125. package/dist/i3s-converter/helpers/node-debug.js +114 -0
  126. package/dist/i3s-converter/helpers/node-pages.d.ts +117 -0
  127. package/dist/i3s-converter/helpers/node-pages.d.ts.map +1 -0
  128. package/dist/i3s-converter/helpers/node-pages.js +208 -0
  129. package/dist/i3s-converter/i3s-converter.d.ts +325 -0
  130. package/dist/i3s-converter/i3s-converter.d.ts.map +1 -0
  131. package/dist/i3s-converter/i3s-converter.js +1056 -0
  132. package/dist/i3s-converter/json-templates/layers.d.ts +95 -0
  133. package/dist/i3s-converter/json-templates/layers.d.ts.map +1 -0
  134. package/dist/i3s-converter/json-templates/layers.js +199 -0
  135. package/dist/i3s-converter/json-templates/metadata.d.ts +22 -0
  136. package/dist/i3s-converter/json-templates/metadata.d.ts.map +1 -0
  137. package/dist/i3s-converter/json-templates/metadata.js +25 -0
  138. package/dist/i3s-converter/json-templates/node.d.ts +61 -0
  139. package/dist/i3s-converter/json-templates/node.d.ts.map +1 -0
  140. package/dist/i3s-converter/json-templates/node.js +89 -0
  141. package/dist/i3s-converter/json-templates/scene-server.d.ts +28 -0
  142. package/dist/i3s-converter/json-templates/scene-server.d.ts.map +1 -0
  143. package/dist/i3s-converter/json-templates/scene-server.js +31 -0
  144. package/dist/i3s-converter/json-templates/shared-resources.d.ts +14 -0
  145. package/dist/i3s-converter/json-templates/shared-resources.d.ts.map +1 -0
  146. package/dist/i3s-converter/json-templates/shared-resources.js +129 -0
  147. package/dist/i3s-converter/json-templates/store.d.ts +95 -0
  148. package/dist/i3s-converter/json-templates/store.d.ts.map +1 -0
  149. package/dist/i3s-converter/json-templates/store.js +103 -0
  150. package/dist/i3s-converter/types.d.ts +114 -0
  151. package/dist/i3s-converter/types.d.ts.map +1 -0
  152. package/dist/i3s-converter/types.js +2 -0
  153. package/dist/i3s-server/app.d.ts +3 -0
  154. package/dist/i3s-server/app.d.ts.map +1 -0
  155. package/dist/i3s-server/app.js +14 -0
  156. package/dist/i3s-server/controllers/index-controller.d.ts +2 -0
  157. package/dist/i3s-server/controllers/index-controller.d.ts.map +1 -0
  158. package/dist/i3s-server/controllers/index-controller.js +23 -0
  159. package/dist/i3s-server/routes/index.d.ts +3 -0
  160. package/dist/i3s-server/routes/index.d.ts.map +1 -0
  161. package/dist/i3s-server/routes/index.js +16 -0
  162. package/dist/index.d.ts +6 -0
  163. package/dist/index.d.ts.map +1 -0
  164. package/dist/index.js +16 -0
  165. package/dist/lib/utils/compress-util.d.ts +45 -0
  166. package/dist/lib/utils/compress-util.d.ts.map +1 -0
  167. package/dist/lib/utils/compress-util.js +257 -0
  168. package/{src → dist}/lib/utils/file-utils.d.ts +6 -14
  169. package/dist/lib/utils/file-utils.d.ts.map +1 -0
  170. package/dist/lib/utils/file-utils.js +81 -0
  171. package/dist/lib/utils/lod-conversion-utils.d.ts +41 -0
  172. package/dist/lib/utils/lod-conversion-utils.d.ts.map +1 -0
  173. package/dist/lib/utils/lod-conversion-utils.js +76 -0
  174. package/dist/lib/utils/queue.d.ts +7 -0
  175. package/dist/lib/utils/queue.d.ts.map +1 -0
  176. package/dist/lib/utils/queue.js +18 -0
  177. package/dist/lib/utils/statistic-utills.d.ts +3 -0
  178. package/dist/lib/utils/statistic-utills.d.ts.map +1 -0
  179. package/dist/lib/utils/statistic-utills.js +64 -0
  180. package/dist/lib/utils/write-queue.d.ts +22 -0
  181. package/dist/lib/utils/write-queue.d.ts.map +1 -0
  182. package/dist/lib/utils/write-queue.js +62 -0
  183. package/dist/pgm-loader.d.ts +6 -0
  184. package/dist/pgm-loader.d.ts.map +1 -0
  185. package/dist/pgm-loader.js +23 -0
  186. package/dist/workers/3d-tiles-attributes-worker.d.ts +2 -0
  187. package/dist/workers/3d-tiles-attributes-worker.d.ts.map +1 -0
  188. package/dist/workers/3d-tiles-attributes-worker.js +9 -0
  189. package/dist/workers/i3s-attributes-worker.d.ts +2 -0
  190. package/dist/workers/i3s-attributes-worker.d.ts.map +1 -0
  191. package/dist/workers/i3s-attributes-worker.js +5 -0
  192. package/package.json +20 -18
  193. package/src/3d-tiles-attributes-worker.ts +43 -0
  194. package/src/3d-tiles-converter/3d-tiles-converter.ts +48 -5
  195. package/src/3d-tiles-converter/helpers/b3dm-converter.ts +21 -18
  196. package/src/i3s-attributes-worker.ts +46 -0
  197. package/src/i3s-converter/helpers/coordinate-converter.ts +29 -24
  198. package/src/i3s-converter/helpers/geometry-attributes.ts +4 -3
  199. package/src/i3s-converter/helpers/{geometry-converter.js → geometry-converter.ts} +421 -175
  200. package/src/i3s-converter/helpers/gltf-attributes.ts +68 -0
  201. package/src/i3s-converter/helpers/node-pages.ts +25 -17
  202. package/src/i3s-converter/i3s-converter.ts +124 -69
  203. package/src/i3s-converter/types.ts +90 -8
  204. package/src/index.ts +1 -0
  205. package/src/lib/utils/{compress-util.js → compress-util.ts} +105 -18
  206. package/src/lib/utils/file-utils.ts +84 -0
  207. package/src/lib/utils/{lod-conversion-utils.js → lod-conversion-utils.ts} +27 -5
  208. package/src/lib/utils/queue.ts +17 -0
  209. package/src/lib/utils/{statistic-utills.js → statistic-utills.ts} +0 -0
  210. package/src/lib/utils/write-queue.ts +75 -0
  211. package/src/workers/3d-tiles-attributes-worker.ts +6 -0
  212. package/src/workers/i3s-attributes-worker.ts +6 -0
  213. package/dist/es5/i3s-converter/helpers/geometry-converter.d.ts +0 -44
  214. package/dist/es5/lib/utils/compress-util.d.ts +0 -53
  215. package/dist/es5/lib/utils/file-utils.d.ts +0 -43
  216. package/dist/es5/lib/utils/lod-conversion-utils.d.ts +0 -32
  217. package/dist/esm/i3s-converter/helpers/geometry-converter.d.ts +0 -44
  218. package/dist/esm/lib/utils/compress-util.d.ts +0 -53
  219. package/dist/esm/lib/utils/file-utils.d.ts +0 -43
  220. package/dist/esm/lib/utils/lod-conversion-utils.d.ts +0 -32
  221. package/src/i3s-converter/helpers/geometry-converter.d.ts +0 -44
  222. package/src/lib/utils/compress-util.d.ts +0 -53
  223. package/src/lib/utils/file-utils.js +0 -38
  224. package/src/lib/utils/lod-conversion-utils.d.ts +0 -32
package/dist/dist.min.js CHANGED
@@ -93,9 +93,9 @@ var require_defineProperty = __commonJS({
93
93
  }
94
94
  });
95
95
 
96
- // ../loader-utils/node_modules/@probe.gl/stats/dist/es5/utils/hi-res-timestamp.js
96
+ // ../../node_modules/@probe.gl/stats/dist/es5/utils/hi-res-timestamp.js
97
97
  var require_hi_res_timestamp = __commonJS({
98
- "../loader-utils/node_modules/@probe.gl/stats/dist/es5/utils/hi-res-timestamp.js"(exports) {
98
+ "../../node_modules/@probe.gl/stats/dist/es5/utils/hi-res-timestamp.js"(exports) {
99
99
  "use strict";
100
100
  Object.defineProperty(exports, "__esModule", {
101
101
  value: true
@@ -116,9 +116,9 @@ var require_hi_res_timestamp = __commonJS({
116
116
  }
117
117
  });
118
118
 
119
- // ../loader-utils/node_modules/@probe.gl/stats/dist/es5/lib/stat.js
119
+ // ../../node_modules/@probe.gl/stats/dist/es5/lib/stat.js
120
120
  var require_stat = __commonJS({
121
- "../loader-utils/node_modules/@probe.gl/stats/dist/es5/lib/stat.js"(exports) {
121
+ "../../node_modules/@probe.gl/stats/dist/es5/lib/stat.js"(exports) {
122
122
  "use strict";
123
123
  var _interopRequireDefault = require_interopRequireDefault();
124
124
  Object.defineProperty(exports, "__esModule", {
@@ -278,9 +278,9 @@ var require_stat = __commonJS({
278
278
  }
279
279
  });
280
280
 
281
- // ../loader-utils/node_modules/@probe.gl/stats/dist/es5/lib/stats.js
281
+ // ../../node_modules/@probe.gl/stats/dist/es5/lib/stats.js
282
282
  var require_stats = __commonJS({
283
- "../loader-utils/node_modules/@probe.gl/stats/dist/es5/lib/stats.js"(exports) {
283
+ "../../node_modules/@probe.gl/stats/dist/es5/lib/stats.js"(exports) {
284
284
  "use strict";
285
285
  var _interopRequireDefault = require_interopRequireDefault();
286
286
  Object.defineProperty(exports, "__esModule", {
@@ -376,9 +376,9 @@ var require_stats = __commonJS({
376
376
  }
377
377
  });
378
378
 
379
- // ../loader-utils/node_modules/@probe.gl/stats/dist/es5/index.js
379
+ // ../../node_modules/@probe.gl/stats/dist/es5/index.js
380
380
  var require_es5 = __commonJS({
381
- "../loader-utils/node_modules/@probe.gl/stats/dist/es5/index.js"(exports) {
381
+ "../../node_modules/@probe.gl/stats/dist/es5/index.js"(exports) {
382
382
  "use strict";
383
383
  var _interopRequireDefault = require_interopRequireDefault();
384
384
  Object.defineProperty(exports, "__esModule", {
@@ -556,8 +556,8 @@ var require_globals2 = __commonJS({
556
556
  exports.isBrowser = exports.VERSION = void 0;
557
557
  var _isBrowser = _interopRequireDefault(require_is_browser());
558
558
  var _globals = require_globals();
559
- var VERSION15 = typeof __VERSION__ !== "undefined" ? __VERSION__ : "untranspiled source";
560
- exports.VERSION = VERSION15;
559
+ var VERSION18 = typeof __VERSION__ !== "undefined" ? __VERSION__ : "untranspiled source";
560
+ exports.VERSION = VERSION18;
561
561
  var isBrowser3 = (0, _isBrowser.default)();
562
562
  exports.isBrowser = isBrowser3;
563
563
  }
@@ -1027,7 +1027,7 @@ var require_log = __commonJS({
1027
1027
  enabled: true,
1028
1028
  level: 0
1029
1029
  };
1030
- function noop2() {
1030
+ function noop() {
1031
1031
  }
1032
1032
  var cache = {};
1033
1033
  var ONCE = {
@@ -1168,18 +1168,18 @@ var require_log = __commonJS({
1168
1168
  key: "table",
1169
1169
  value: function table(logLevel, _table, columns) {
1170
1170
  if (_table) {
1171
- return this._getLogFunction(logLevel, _table, console.table || noop2, columns && [columns], {
1171
+ return this._getLogFunction(logLevel, _table, console.table || noop, columns && [columns], {
1172
1172
  tag: getTableHeader(_table)
1173
1173
  });
1174
1174
  }
1175
- return noop2;
1175
+ return noop;
1176
1176
  }
1177
1177
  }, {
1178
1178
  key: "image",
1179
1179
  value: function image(_ref2) {
1180
1180
  var logLevel = _ref2.logLevel, priority = _ref2.priority, _image = _ref2.image, _ref2$message = _ref2.message, message = _ref2$message === void 0 ? "" : _ref2$message, _ref2$scale = _ref2.scale, scale = _ref2$scale === void 0 ? 1 : _ref2$scale;
1181
1181
  if (!this._shouldLog(logLevel || priority)) {
1182
- return noop2;
1182
+ return noop;
1183
1183
  }
1184
1184
  return _globals.isBrowser ? logImageInBrowser({
1185
1185
  image: _image,
@@ -1223,7 +1223,7 @@ var require_log = __commonJS({
1223
1223
  }, {
1224
1224
  key: "timeStamp",
1225
1225
  value: function timeStamp(logLevel, message) {
1226
- return this._getLogFunction(logLevel, message, console.timeStamp || noop2);
1226
+ return this._getLogFunction(logLevel, message, console.timeStamp || noop);
1227
1227
  }
1228
1228
  }, {
1229
1229
  key: "group",
@@ -1251,7 +1251,7 @@ var require_log = __commonJS({
1251
1251
  }, {
1252
1252
  key: "groupEnd",
1253
1253
  value: function groupEnd(logLevel) {
1254
- return this._getLogFunction(logLevel, "", console.groupEnd || noop2);
1254
+ return this._getLogFunction(logLevel, "", console.groupEnd || noop);
1255
1255
  }
1256
1256
  }, {
1257
1257
  key: "withGroup",
@@ -1298,13 +1298,13 @@ var require_log = __commonJS({
1298
1298
  if (!cache[tag]) {
1299
1299
  cache[tag] = (0, _hiResTimestamp.default)();
1300
1300
  } else {
1301
- return noop2;
1301
+ return noop;
1302
1302
  }
1303
1303
  }
1304
1304
  message = decorateMessage(this.id, opts.message, opts);
1305
1305
  return (_method = method).bind.apply(_method, [console, message].concat((0, _toConsumableArray2.default)(opts.args)));
1306
1306
  }
1307
- return noop2;
1307
+ return noop;
1308
1308
  }
1309
1309
  }]);
1310
1310
  return Log4;
@@ -1381,7 +1381,7 @@ var require_log = __commonJS({
1381
1381
  });
1382
1382
  };
1383
1383
  }
1384
- return noop2;
1384
+ return noop;
1385
1385
  }
1386
1386
  function logImageInBrowser(_ref4) {
1387
1387
  var image = _ref4.image, _ref4$message = _ref4.message, message = _ref4$message === void 0 ? "" : _ref4$message, _ref4$scale = _ref4.scale, scale = _ref4$scale === void 0 ? 1 : _ref4$scale;
@@ -1393,13 +1393,13 @@ var require_log = __commonJS({
1393
1393
  (_console = console).log.apply(_console, (0, _toConsumableArray2.default)(args));
1394
1394
  };
1395
1395
  img.src = image;
1396
- return noop2;
1396
+ return noop;
1397
1397
  }
1398
1398
  var element = image.nodeName || "";
1399
1399
  if (element.toLowerCase() === "img") {
1400
1400
  var _console2;
1401
1401
  (_console2 = console).log.apply(_console2, (0, _toConsumableArray2.default)((0, _formatters.formatImage)(image, message, scale)));
1402
- return noop2;
1402
+ return noop;
1403
1403
  }
1404
1404
  if (element.toLowerCase() === "canvas") {
1405
1405
  var _img = new Image();
@@ -1408,9 +1408,9 @@ var require_log = __commonJS({
1408
1408
  return (_console3 = console).log.apply(_console3, (0, _toConsumableArray2.default)((0, _formatters.formatImage)(_img, message, scale)));
1409
1409
  };
1410
1410
  _img.src = image.toDataURL();
1411
- return noop2;
1411
+ return noop;
1412
1412
  }
1413
- return noop2;
1413
+ return noop;
1414
1414
  }
1415
1415
  }
1416
1416
  });
@@ -1462,9 +1462,9 @@ var require_get_browser = __commonJS({
1462
1462
  }
1463
1463
  });
1464
1464
 
1465
- // ../../node_modules/@probe.gl/stats/dist/es5/utils/hi-res-timestamp.js
1465
+ // ../../node_modules/probe.gl/node_modules/@probe.gl/stats/dist/es5/utils/hi-res-timestamp.js
1466
1466
  var require_hi_res_timestamp3 = __commonJS({
1467
- "../../node_modules/@probe.gl/stats/dist/es5/utils/hi-res-timestamp.js"(exports) {
1467
+ "../../node_modules/probe.gl/node_modules/@probe.gl/stats/dist/es5/utils/hi-res-timestamp.js"(exports) {
1468
1468
  "use strict";
1469
1469
  Object.defineProperty(exports, "__esModule", {
1470
1470
  value: true
@@ -1485,9 +1485,9 @@ var require_hi_res_timestamp3 = __commonJS({
1485
1485
  }
1486
1486
  });
1487
1487
 
1488
- // ../../node_modules/@probe.gl/stats/dist/es5/lib/stat.js
1488
+ // ../../node_modules/probe.gl/node_modules/@probe.gl/stats/dist/es5/lib/stat.js
1489
1489
  var require_stat2 = __commonJS({
1490
- "../../node_modules/@probe.gl/stats/dist/es5/lib/stat.js"(exports) {
1490
+ "../../node_modules/probe.gl/node_modules/@probe.gl/stats/dist/es5/lib/stat.js"(exports) {
1491
1491
  "use strict";
1492
1492
  var _interopRequireDefault = require_interopRequireDefault();
1493
1493
  Object.defineProperty(exports, "__esModule", {
@@ -1633,9 +1633,9 @@ var require_stat2 = __commonJS({
1633
1633
  }
1634
1634
  });
1635
1635
 
1636
- // ../../node_modules/@probe.gl/stats/dist/es5/lib/stats.js
1636
+ // ../../node_modules/probe.gl/node_modules/@probe.gl/stats/dist/es5/lib/stats.js
1637
1637
  var require_stats2 = __commonJS({
1638
- "../../node_modules/@probe.gl/stats/dist/es5/lib/stats.js"(exports) {
1638
+ "../../node_modules/probe.gl/node_modules/@probe.gl/stats/dist/es5/lib/stats.js"(exports) {
1639
1639
  "use strict";
1640
1640
  var _interopRequireDefault = require_interopRequireDefault();
1641
1641
  Object.defineProperty(exports, "__esModule", {
@@ -1729,9 +1729,9 @@ var require_stats2 = __commonJS({
1729
1729
  }
1730
1730
  });
1731
1731
 
1732
- // ../../node_modules/@probe.gl/stats/dist/es5/index.js
1732
+ // ../../node_modules/probe.gl/node_modules/@probe.gl/stats/dist/es5/index.js
1733
1733
  var require_es52 = __commonJS({
1734
- "../../node_modules/@probe.gl/stats/dist/es5/index.js"(exports) {
1734
+ "../../node_modules/probe.gl/node_modules/@probe.gl/stats/dist/es5/index.js"(exports) {
1735
1735
  "use strict";
1736
1736
  var _interopRequireDefault = require_interopRequireDefault();
1737
1737
  Object.defineProperty(exports, "__esModule", {
@@ -2097,8 +2097,8 @@ var require_globals4 = __commonJS({
2097
2097
  });
2098
2098
  var _isBrowser = _interopRequireDefault(require_is_browser2());
2099
2099
  var _globals = require_globals3();
2100
- var VERSION15 = typeof __VERSION__ !== "undefined" ? __VERSION__ : "untranspiled source";
2101
- exports.VERSION = VERSION15;
2100
+ var VERSION18 = typeof __VERSION__ !== "undefined" ? __VERSION__ : "untranspiled source";
2101
+ exports.VERSION = VERSION18;
2102
2102
  var isBrowser3 = (0, _isBrowser.default)();
2103
2103
  exports.isBrowser = isBrowser3;
2104
2104
  }
@@ -2681,7 +2681,7 @@ var require_log2 = __commonJS({
2681
2681
  enabled: true,
2682
2682
  level: 0
2683
2683
  };
2684
- function noop2() {
2684
+ function noop() {
2685
2685
  }
2686
2686
  var cache = {};
2687
2687
  var ONCE = {
@@ -2839,18 +2839,18 @@ var require_log2 = __commonJS({
2839
2839
  key: "table",
2840
2840
  value: function table(logLevel, _table, columns) {
2841
2841
  if (_table) {
2842
- return this._getLogFunction(logLevel, _table, console.table || noop2, columns && [columns], {
2842
+ return this._getLogFunction(logLevel, _table, console.table || noop, columns && [columns], {
2843
2843
  tag: getTableHeader(_table)
2844
2844
  });
2845
2845
  }
2846
- return noop2;
2846
+ return noop;
2847
2847
  }
2848
2848
  }, {
2849
2849
  key: "image",
2850
2850
  value: function image(_ref2) {
2851
2851
  var logLevel = _ref2.logLevel, priority = _ref2.priority, _image = _ref2.image, _ref2$message = _ref2.message, message = _ref2$message === void 0 ? "" : _ref2$message, _ref2$scale = _ref2.scale, scale = _ref2$scale === void 0 ? 1 : _ref2$scale;
2852
2852
  if (!this._shouldLog(logLevel || priority)) {
2853
- return noop2;
2853
+ return noop;
2854
2854
  }
2855
2855
  return _env.isBrowser ? logImageInBrowser({
2856
2856
  image: _image,
@@ -2875,7 +2875,7 @@ var require_log2 = __commonJS({
2875
2875
  }, {
2876
2876
  key: "timeStamp",
2877
2877
  value: function timeStamp(logLevel, message) {
2878
- return this._getLogFunction(logLevel, message, console.timeStamp || noop2);
2878
+ return this._getLogFunction(logLevel, message, console.timeStamp || noop);
2879
2879
  }
2880
2880
  }, {
2881
2881
  key: "group",
@@ -2903,7 +2903,7 @@ var require_log2 = __commonJS({
2903
2903
  }, {
2904
2904
  key: "groupEnd",
2905
2905
  value: function groupEnd(logLevel) {
2906
- return this._getLogFunction(logLevel, "", console.groupEnd || noop2);
2906
+ return this._getLogFunction(logLevel, "", console.groupEnd || noop);
2907
2907
  }
2908
2908
  }, {
2909
2909
  key: "withGroup",
@@ -2948,13 +2948,13 @@ var require_log2 = __commonJS({
2948
2948
  if (!cache[tag]) {
2949
2949
  cache[tag] = (0, _hiResTimestamp.getHiResTimestamp)();
2950
2950
  } else {
2951
- return noop2;
2951
+ return noop;
2952
2952
  }
2953
2953
  }
2954
2954
  message = decorateMessage(this.id, opts.message, opts);
2955
2955
  return (_method = method).bind.apply(_method, [console, message].concat((0, _toConsumableArray2.default)(opts.args)));
2956
2956
  }
2957
- return noop2;
2957
+ return noop;
2958
2958
  }
2959
2959
  }]);
2960
2960
  return Log4;
@@ -3032,7 +3032,7 @@ var require_log2 = __commonJS({
3032
3032
  });
3033
3033
  };
3034
3034
  }
3035
- return noop2;
3035
+ return noop;
3036
3036
  }
3037
3037
  function logImageInBrowser(_ref4) {
3038
3038
  var image = _ref4.image, _ref4$message = _ref4.message, message = _ref4$message === void 0 ? "" : _ref4$message, _ref4$scale = _ref4.scale, scale = _ref4$scale === void 0 ? 1 : _ref4$scale;
@@ -3044,13 +3044,13 @@ var require_log2 = __commonJS({
3044
3044
  (_console = console).log.apply(_console, (0, _toConsumableArray2.default)(args));
3045
3045
  };
3046
3046
  img.src = image;
3047
- return noop2;
3047
+ return noop;
3048
3048
  }
3049
3049
  var element = image.nodeName || "";
3050
3050
  if (element.toLowerCase() === "img") {
3051
3051
  var _console2;
3052
3052
  (_console2 = console).log.apply(_console2, (0, _toConsumableArray2.default)((0, _formatters.formatImage)(image, message, scale)));
3053
- return noop2;
3053
+ return noop;
3054
3054
  }
3055
3055
  if (element.toLowerCase() === "canvas") {
3056
3056
  var _img = new Image();
@@ -3059,9 +3059,9 @@ var require_log2 = __commonJS({
3059
3059
  return (_console3 = console).log.apply(_console3, (0, _toConsumableArray2.default)((0, _formatters.formatImage)(_img, message, scale)));
3060
3060
  };
3061
3061
  _img.src = image.toDataURL();
3062
- return noop2;
3062
+ return noop;
3063
3063
  }
3064
- return noop2;
3064
+ return noop;
3065
3065
  }
3066
3066
  function getTableHeader(table) {
3067
3067
  for (var _key2 in table) {
@@ -10785,12 +10785,12 @@ var require_type_utils = __commonJS({
10785
10785
  exports.isWGS84 = isWGS84;
10786
10786
  var _core = require_es56();
10787
10787
  var _constants = require_constants();
10788
- var noop2 = function noop3(x) {
10788
+ var noop = function noop2(x) {
10789
10789
  return x;
10790
10790
  };
10791
10791
  var scratchVector7 = new _core.Vector3();
10792
10792
  function fromCartographic(cartographic, result) {
10793
- var map = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : noop2;
10793
+ var map = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : noop;
10794
10794
  if ((0, _core.isArray)(cartographic)) {
10795
10795
  result[0] = map(cartographic[0]);
10796
10796
  result[1] = map(cartographic[1]);
@@ -10808,14 +10808,14 @@ var require_type_utils = __commonJS({
10808
10808
  }
10809
10809
  function fromCartographicToRadians(cartographic) {
10810
10810
  var vector = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : scratchVector7;
10811
- return fromCartographic(cartographic, vector, _core.config._cartographicRadians ? noop2 : _core.toRadians);
10811
+ return fromCartographic(cartographic, vector, _core.config._cartographicRadians ? noop : _core.toRadians);
10812
10812
  }
10813
10813
  function fromCartographicToDegrees(cartographic) {
10814
10814
  var vector = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : scratchVector7;
10815
- return fromCartographic(cartographic, vector, _core.config._cartographicRadians ? _core.toDegrees : noop2);
10815
+ return fromCartographic(cartographic, vector, _core.config._cartographicRadians ? _core.toDegrees : noop);
10816
10816
  }
10817
10817
  function toCartographic(vector, cartographic) {
10818
- var map = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : noop2;
10818
+ var map = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : noop;
10819
10819
  if ((0, _core.isArray)(cartographic)) {
10820
10820
  cartographic[0] = map(vector[0]);
10821
10821
  cartographic[1] = map(vector[1]);
@@ -10832,10 +10832,10 @@ var require_type_utils = __commonJS({
10832
10832
  return cartographic;
10833
10833
  }
10834
10834
  function toCartographicFromRadians(vector, cartographic) {
10835
- return toCartographic(vector, cartographic, _core.config._cartographicRadians ? noop2 : _core.toDegrees);
10835
+ return toCartographic(vector, cartographic, _core.config._cartographicRadians ? noop : _core.toDegrees);
10836
10836
  }
10837
10837
  function toCartographicFromDegrees(vector, cartographic) {
10838
- return toCartographic(vector, cartographic, _core.config._cartographicRadians ? _core.toRadians : noop2);
10838
+ return toCartographic(vector, cartographic, _core.config._cartographicRadians ? _core.toRadians : noop);
10839
10839
  }
10840
10840
  function isWGS84(vector) {
10841
10841
  if (!vector) {
@@ -11146,12 +11146,12 @@ var require_ellipsoid = __commonJS({
11146
11146
  var scratchHeight = new _core.Vector3();
11147
11147
  var scratchCartesian = new _core.Vector3();
11148
11148
  var wgs84;
11149
- var Ellipsoid14 = function() {
11150
- function Ellipsoid15() {
11149
+ var Ellipsoid15 = function() {
11150
+ function Ellipsoid16() {
11151
11151
  var x = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : 0;
11152
11152
  var y = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : 0;
11153
11153
  var z = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : 0;
11154
- (0, _classCallCheck2.default)(this, Ellipsoid15);
11154
+ (0, _classCallCheck2.default)(this, Ellipsoid16);
11155
11155
  (0, _core.assert)(x >= 0);
11156
11156
  (0, _core.assert)(y >= 0);
11157
11157
  (0, _core.assert)(z >= 0);
@@ -11168,7 +11168,7 @@ var require_ellipsoid = __commonJS({
11168
11168
  }
11169
11169
  Object.freeze(this);
11170
11170
  }
11171
- (0, _createClass2.default)(Ellipsoid15, [{
11171
+ (0, _createClass2.default)(Ellipsoid16, [{
11172
11172
  key: "equals",
11173
11173
  value: function equals(right) {
11174
11174
  return this === right || Boolean(right && this.radii.equals(right.radii));
@@ -11291,13 +11291,13 @@ var require_ellipsoid = __commonJS({
11291
11291
  }], [{
11292
11292
  key: "WGS84",
11293
11293
  get: function get() {
11294
- wgs84 = wgs84 || new Ellipsoid15(_constants.WGS84_RADIUS_X, _constants.WGS84_RADIUS_Y, _constants.WGS84_RADIUS_Z);
11294
+ wgs84 = wgs84 || new Ellipsoid16(_constants.WGS84_RADIUS_X, _constants.WGS84_RADIUS_Y, _constants.WGS84_RADIUS_Z);
11295
11295
  return wgs84;
11296
11296
  }
11297
11297
  }]);
11298
- return Ellipsoid15;
11298
+ return Ellipsoid16;
11299
11299
  }();
11300
- exports.default = Ellipsoid14;
11300
+ exports.default = Ellipsoid15;
11301
11301
  }
11302
11302
  });
11303
11303
 
@@ -11326,321 +11326,6 @@ var require_es57 = __commonJS({
11326
11326
  }
11327
11327
  });
11328
11328
 
11329
- // ../tiles/node_modules/@probe.gl/stats/dist/es5/utils/hi-res-timestamp.js
11330
- var require_hi_res_timestamp5 = __commonJS({
11331
- "../tiles/node_modules/@probe.gl/stats/dist/es5/utils/hi-res-timestamp.js"(exports) {
11332
- "use strict";
11333
- Object.defineProperty(exports, "__esModule", {
11334
- value: true
11335
- });
11336
- exports.default = getHiResTimestamp;
11337
- function getHiResTimestamp() {
11338
- var timestamp;
11339
- if (typeof window !== "undefined" && window.performance) {
11340
- timestamp = window.performance.now();
11341
- } else if (typeof process !== "undefined" && process.hrtime) {
11342
- var timeParts = process.hrtime();
11343
- timestamp = timeParts[0] * 1e3 + timeParts[1] / 1e6;
11344
- } else {
11345
- timestamp = Date.now();
11346
- }
11347
- return timestamp;
11348
- }
11349
- }
11350
- });
11351
-
11352
- // ../tiles/node_modules/@probe.gl/stats/dist/es5/lib/stat.js
11353
- var require_stat3 = __commonJS({
11354
- "../tiles/node_modules/@probe.gl/stats/dist/es5/lib/stat.js"(exports) {
11355
- "use strict";
11356
- var _interopRequireDefault = require_interopRequireDefault();
11357
- Object.defineProperty(exports, "__esModule", {
11358
- value: true
11359
- });
11360
- exports.default = void 0;
11361
- var _classCallCheck2 = _interopRequireDefault(require_classCallCheck());
11362
- var _createClass2 = _interopRequireDefault(require_createClass());
11363
- var _defineProperty2 = _interopRequireDefault(require_defineProperty());
11364
- var _hiResTimestamp = _interopRequireDefault(require_hi_res_timestamp5());
11365
- var Stat = function() {
11366
- function Stat2(name8, type) {
11367
- (0, _classCallCheck2.default)(this, Stat2);
11368
- (0, _defineProperty2.default)(this, "name", void 0);
11369
- (0, _defineProperty2.default)(this, "type", void 0);
11370
- (0, _defineProperty2.default)(this, "sampleSize", 1);
11371
- (0, _defineProperty2.default)(this, "time", void 0);
11372
- (0, _defineProperty2.default)(this, "count", void 0);
11373
- (0, _defineProperty2.default)(this, "samples", void 0);
11374
- (0, _defineProperty2.default)(this, "lastTiming", void 0);
11375
- (0, _defineProperty2.default)(this, "lastSampleTime", void 0);
11376
- (0, _defineProperty2.default)(this, "lastSampleCount", void 0);
11377
- (0, _defineProperty2.default)(this, "_count", 0);
11378
- (0, _defineProperty2.default)(this, "_time", 0);
11379
- (0, _defineProperty2.default)(this, "_samples", 0);
11380
- (0, _defineProperty2.default)(this, "_startTime", 0);
11381
- (0, _defineProperty2.default)(this, "_timerPending", false);
11382
- this.name = name8;
11383
- this.type = type;
11384
- this.reset();
11385
- }
11386
- (0, _createClass2.default)(Stat2, [{
11387
- key: "setSampleSize",
11388
- value: function setSampleSize(samples) {
11389
- this.sampleSize = samples;
11390
- return this;
11391
- }
11392
- }, {
11393
- key: "incrementCount",
11394
- value: function incrementCount() {
11395
- this.addCount(1);
11396
- return this;
11397
- }
11398
- }, {
11399
- key: "decrementCount",
11400
- value: function decrementCount() {
11401
- this.subtractCount(1);
11402
- return this;
11403
- }
11404
- }, {
11405
- key: "addCount",
11406
- value: function addCount(value) {
11407
- this._count += value;
11408
- this._samples++;
11409
- this._checkSampling();
11410
- return this;
11411
- }
11412
- }, {
11413
- key: "subtractCount",
11414
- value: function subtractCount(value) {
11415
- this._count -= value;
11416
- this._samples++;
11417
- this._checkSampling();
11418
- return this;
11419
- }
11420
- }, {
11421
- key: "addTime",
11422
- value: function addTime(time) {
11423
- this._time += time;
11424
- this.lastTiming = time;
11425
- this._samples++;
11426
- this._checkSampling();
11427
- return this;
11428
- }
11429
- }, {
11430
- key: "timeStart",
11431
- value: function timeStart() {
11432
- this._startTime = (0, _hiResTimestamp.default)();
11433
- this._timerPending = true;
11434
- return this;
11435
- }
11436
- }, {
11437
- key: "timeEnd",
11438
- value: function timeEnd() {
11439
- if (!this._timerPending) {
11440
- return this;
11441
- }
11442
- this.addTime((0, _hiResTimestamp.default)() - this._startTime);
11443
- this._timerPending = false;
11444
- this._checkSampling();
11445
- return this;
11446
- }
11447
- }, {
11448
- key: "getSampleAverageCount",
11449
- value: function getSampleAverageCount() {
11450
- return this.sampleSize > 0 ? this.lastSampleCount / this.sampleSize : 0;
11451
- }
11452
- }, {
11453
- key: "getSampleAverageTime",
11454
- value: function getSampleAverageTime() {
11455
- return this.sampleSize > 0 ? this.lastSampleTime / this.sampleSize : 0;
11456
- }
11457
- }, {
11458
- key: "getSampleHz",
11459
- value: function getSampleHz() {
11460
- return this.lastSampleTime > 0 ? this.sampleSize / (this.lastSampleTime / 1e3) : 0;
11461
- }
11462
- }, {
11463
- key: "getAverageCount",
11464
- value: function getAverageCount() {
11465
- return this.samples > 0 ? this.count / this.samples : 0;
11466
- }
11467
- }, {
11468
- key: "getAverageTime",
11469
- value: function getAverageTime() {
11470
- return this.samples > 0 ? this.time / this.samples : 0;
11471
- }
11472
- }, {
11473
- key: "getHz",
11474
- value: function getHz() {
11475
- return this.time > 0 ? this.samples / (this.time / 1e3) : 0;
11476
- }
11477
- }, {
11478
- key: "reset",
11479
- value: function reset() {
11480
- this.time = 0;
11481
- this.count = 0;
11482
- this.samples = 0;
11483
- this.lastTiming = 0;
11484
- this.lastSampleTime = 0;
11485
- this.lastSampleCount = 0;
11486
- this._count = 0;
11487
- this._time = 0;
11488
- this._samples = 0;
11489
- this._startTime = 0;
11490
- this._timerPending = false;
11491
- return this;
11492
- }
11493
- }, {
11494
- key: "_checkSampling",
11495
- value: function _checkSampling() {
11496
- if (this._samples === this.sampleSize) {
11497
- this.lastSampleTime = this._time;
11498
- this.lastSampleCount = this._count;
11499
- this.count += this._count;
11500
- this.time += this._time;
11501
- this.samples += this._samples;
11502
- this._time = 0;
11503
- this._count = 0;
11504
- this._samples = 0;
11505
- }
11506
- }
11507
- }]);
11508
- return Stat2;
11509
- }();
11510
- exports.default = Stat;
11511
- }
11512
- });
11513
-
11514
- // ../tiles/node_modules/@probe.gl/stats/dist/es5/lib/stats.js
11515
- var require_stats3 = __commonJS({
11516
- "../tiles/node_modules/@probe.gl/stats/dist/es5/lib/stats.js"(exports) {
11517
- "use strict";
11518
- var _interopRequireDefault = require_interopRequireDefault();
11519
- Object.defineProperty(exports, "__esModule", {
11520
- value: true
11521
- });
11522
- exports.default = void 0;
11523
- var _classCallCheck2 = _interopRequireDefault(require_classCallCheck());
11524
- var _createClass2 = _interopRequireDefault(require_createClass());
11525
- var _defineProperty2 = _interopRequireDefault(require_defineProperty());
11526
- var _stat = _interopRequireDefault(require_stat3());
11527
- var Stats3 = function() {
11528
- function Stats4(options) {
11529
- (0, _classCallCheck2.default)(this, Stats4);
11530
- (0, _defineProperty2.default)(this, "id", void 0);
11531
- (0, _defineProperty2.default)(this, "stats", {});
11532
- this.id = options.id;
11533
- this.stats = {};
11534
- this._initializeStats(options.stats);
11535
- Object.seal(this);
11536
- }
11537
- (0, _createClass2.default)(Stats4, [{
11538
- key: "get",
11539
- value: function get(name8) {
11540
- var type = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : "count";
11541
- return this._getOrCreate({
11542
- name: name8,
11543
- type
11544
- });
11545
- }
11546
- }, {
11547
- key: "size",
11548
- get: function get() {
11549
- return Object.keys(this.stats).length;
11550
- }
11551
- }, {
11552
- key: "reset",
11553
- value: function reset() {
11554
- for (var key in this.stats) {
11555
- this.stats[key].reset();
11556
- }
11557
- return this;
11558
- }
11559
- }, {
11560
- key: "forEach",
11561
- value: function forEach2(fn) {
11562
- for (var key in this.stats) {
11563
- fn(this.stats[key]);
11564
- }
11565
- }
11566
- }, {
11567
- key: "getTable",
11568
- value: function getTable() {
11569
- var table = {};
11570
- this.forEach(function(stat2) {
11571
- table[stat2.name] = {
11572
- time: stat2.time || 0,
11573
- count: stat2.count || 0,
11574
- average: stat2.getAverageTime() || 0,
11575
- hz: stat2.getHz() || 0
11576
- };
11577
- });
11578
- return table;
11579
- }
11580
- }, {
11581
- key: "_initializeStats",
11582
- value: function _initializeStats() {
11583
- var _this = this;
11584
- var stats = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : [];
11585
- stats.forEach(function(stat2) {
11586
- return _this._getOrCreate(stat2);
11587
- });
11588
- }
11589
- }, {
11590
- key: "_getOrCreate",
11591
- value: function _getOrCreate(stat2) {
11592
- if (!stat2 || !stat2.name) {
11593
- return null;
11594
- }
11595
- var name8 = stat2.name, type = stat2.type;
11596
- if (!this.stats[name8]) {
11597
- if (stat2 instanceof _stat.default) {
11598
- this.stats[name8] = stat2;
11599
- } else {
11600
- this.stats[name8] = new _stat.default(name8, type);
11601
- }
11602
- }
11603
- return this.stats[name8];
11604
- }
11605
- }]);
11606
- return Stats4;
11607
- }();
11608
- exports.default = Stats3;
11609
- }
11610
- });
11611
-
11612
- // ../tiles/node_modules/@probe.gl/stats/dist/es5/index.js
11613
- var require_es58 = __commonJS({
11614
- "../tiles/node_modules/@probe.gl/stats/dist/es5/index.js"(exports) {
11615
- "use strict";
11616
- var _interopRequireDefault = require_interopRequireDefault();
11617
- Object.defineProperty(exports, "__esModule", {
11618
- value: true
11619
- });
11620
- Object.defineProperty(exports, "Stat", {
11621
- enumerable: true,
11622
- get: function get() {
11623
- return _stat.default;
11624
- }
11625
- });
11626
- Object.defineProperty(exports, "Stats", {
11627
- enumerable: true,
11628
- get: function get() {
11629
- return _stats.default;
11630
- }
11631
- });
11632
- Object.defineProperty(exports, "_getHiResTimestamp", {
11633
- enumerable: true,
11634
- get: function get() {
11635
- return _hiResTimestamp.default;
11636
- }
11637
- });
11638
- var _stats = _interopRequireDefault(require_stats3());
11639
- var _stat = _interopRequireDefault(require_stat3());
11640
- var _hiResTimestamp = _interopRequireDefault(require_hi_res_timestamp5());
11641
- }
11642
- });
11643
-
11644
11329
  // ../../node_modules/@math.gl/culling/dist/es5/constants.js
11645
11330
  var require_constants2 = __commonJS({
11646
11331
  "../../node_modules/@math.gl/culling/dist/es5/constants.js"(exports) {
@@ -11807,16 +11492,16 @@ var require_bounding_sphere = __commonJS({
11807
11492
  }
11808
11493
  var scratchVector7 = new _core.Vector3();
11809
11494
  var scratchVector23 = new _core.Vector3();
11810
- var BoundingSphere4 = function() {
11811
- function BoundingSphere5() {
11495
+ var BoundingSphere5 = function() {
11496
+ function BoundingSphere6() {
11812
11497
  var center = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : [0, 0, 0];
11813
11498
  var radius = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : 0;
11814
- (0, _classCallCheck2.default)(this, BoundingSphere5);
11499
+ (0, _classCallCheck2.default)(this, BoundingSphere6);
11815
11500
  this.radius = -0;
11816
11501
  this.center = new _core.Vector3();
11817
11502
  this.fromCenterRadius(center, radius);
11818
11503
  }
11819
- (0, _createClass2.default)(BoundingSphere5, [{
11504
+ (0, _createClass2.default)(BoundingSphere6, [{
11820
11505
  key: "fromCenterRadius",
11821
11506
  value: function fromCenterRadius(center, radius) {
11822
11507
  this.center.from(center);
@@ -11839,7 +11524,7 @@ var require_bounding_sphere = __commonJS({
11839
11524
  }, {
11840
11525
  key: "clone",
11841
11526
  value: function clone2() {
11842
- return new BoundingSphere5(this.center, this.radius);
11527
+ return new BoundingSphere6(this.center, this.radius);
11843
11528
  }
11844
11529
  }, {
11845
11530
  key: "union",
@@ -11908,9 +11593,9 @@ var require_bounding_sphere = __commonJS({
11908
11593
  return _constants.INTERSECTION.INSIDE;
11909
11594
  }
11910
11595
  }]);
11911
- return BoundingSphere5;
11596
+ return BoundingSphere6;
11912
11597
  }();
11913
- exports.default = BoundingSphere4;
11598
+ exports.default = BoundingSphere5;
11914
11599
  }
11915
11600
  });
11916
11601
 
@@ -13293,7 +12978,7 @@ var require_bounding_box_from_points = __commonJS({
13293
12978
  });
13294
12979
 
13295
12980
  // ../../node_modules/@math.gl/culling/dist/es5/index.js
13296
- var require_es59 = __commonJS({
12981
+ var require_es58 = __commonJS({
13297
12982
  "../../node_modules/@math.gl/culling/dist/es5/index.js"(exports) {
13298
12983
  "use strict";
13299
12984
  var _interopRequireDefault = require_interopRequireDefault();
@@ -17725,7 +17410,7 @@ var require_graceful_fs = __commonJS({
17725
17410
  gracefulQueue = "___graceful-fs.queue";
17726
17411
  previousSymbol = "___graceful-fs.previous";
17727
17412
  }
17728
- function noop2() {
17413
+ function noop() {
17729
17414
  }
17730
17415
  function publishQueue(context, queue2) {
17731
17416
  Object.defineProperty(context, gracefulQueue, {
@@ -17734,7 +17419,7 @@ var require_graceful_fs = __commonJS({
17734
17419
  }
17735
17420
  });
17736
17421
  }
17737
- var debug = noop2;
17422
+ var debug = noop;
17738
17423
  if (util2.debuglog)
17739
17424
  debug = util2.debuglog("gfs4");
17740
17425
  else if (/\bgfs4\b/i.test(process.env.NODE_DEBUG || ""))
@@ -21200,7 +20885,7 @@ var require_lodash4 = __commonJS({
21200
20885
  }
21201
20886
  return result;
21202
20887
  }
21203
- var createSet = !(Set2 && 1 / setToArray(new Set2([, -0]))[1] == INFINITY) ? noop2 : function(values) {
20888
+ var createSet = !(Set2 && 1 / setToArray(new Set2([, -0]))[1] == INFINITY) ? noop : function(values) {
21204
20889
  return new Set2(values);
21205
20890
  };
21206
20891
  function getMapData(map, key) {
@@ -21264,7 +20949,7 @@ var require_lodash4 = __commonJS({
21264
20949
  function isObjectLike(value) {
21265
20950
  return !!value && typeof value == "object";
21266
20951
  }
21267
- function noop2() {
20952
+ function noop() {
21268
20953
  }
21269
20954
  module2.exports = union;
21270
20955
  }
@@ -24511,7 +24196,7 @@ var require_end_of_stream = __commonJS({
24511
24196
  callback.apply(this, args);
24512
24197
  };
24513
24198
  }
24514
- function noop2() {
24199
+ function noop() {
24515
24200
  }
24516
24201
  function isRequest(stream) {
24517
24202
  return stream.setHeader && typeof stream.abort === "function";
@@ -24521,7 +24206,7 @@ var require_end_of_stream = __commonJS({
24521
24206
  return eos(stream, null, opts);
24522
24207
  if (!opts)
24523
24208
  opts = {};
24524
- callback = once(callback || noop2);
24209
+ callback = once(callback || noop);
24525
24210
  var readable = opts.readable || opts.readable !== false && stream.readable;
24526
24211
  var writable = opts.writable || opts.writable !== false && stream.writable;
24527
24212
  var onlegacyfinish = function onlegacyfinish2() {
@@ -25806,7 +25491,7 @@ var require_pipeline = __commonJS({
25806
25491
  var _require$codes = require_errors().codes;
25807
25492
  var ERR_MISSING_ARGS = _require$codes.ERR_MISSING_ARGS;
25808
25493
  var ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED;
25809
- function noop2(err) {
25494
+ function noop(err) {
25810
25495
  if (err)
25811
25496
  throw err;
25812
25497
  }
@@ -25852,9 +25537,9 @@ var require_pipeline = __commonJS({
25852
25537
  }
25853
25538
  function popCallback(streams) {
25854
25539
  if (!streams.length)
25855
- return noop2;
25540
+ return noop;
25856
25541
  if (typeof streams[streams.length - 1] !== "function")
25857
- return noop2;
25542
+ return noop;
25858
25543
  return streams.pop();
25859
25544
  }
25860
25545
  function pipeline() {
@@ -28165,7 +27850,7 @@ var require_end_of_stream2 = __commonJS({
28165
27850
  callback.apply(this, args);
28166
27851
  };
28167
27852
  }
28168
- function noop2() {
27853
+ function noop() {
28169
27854
  }
28170
27855
  function isRequest(stream) {
28171
27856
  return stream.setHeader && typeof stream.abort === "function";
@@ -28175,7 +27860,7 @@ var require_end_of_stream2 = __commonJS({
28175
27860
  return eos(stream, null, opts);
28176
27861
  if (!opts)
28177
27862
  opts = {};
28178
- callback = once(callback || noop2);
27863
+ callback = once(callback || noop);
28179
27864
  var readable = opts.readable || opts.readable !== false && stream.readable;
28180
27865
  var writable = opts.writable || opts.writable !== false && stream.writable;
28181
27866
  var onlegacyfinish = function onlegacyfinish2() {
@@ -29460,7 +29145,7 @@ var require_pipeline2 = __commonJS({
29460
29145
  var _require$codes = require_errors2().codes;
29461
29146
  var ERR_MISSING_ARGS = _require$codes.ERR_MISSING_ARGS;
29462
29147
  var ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED;
29463
- function noop2(err) {
29148
+ function noop(err) {
29464
29149
  if (err)
29465
29150
  throw err;
29466
29151
  }
@@ -29506,9 +29191,9 @@ var require_pipeline2 = __commonJS({
29506
29191
  }
29507
29192
  function popCallback(streams) {
29508
29193
  if (!streams.length)
29509
- return noop2;
29194
+ return noop;
29510
29195
  if (typeof streams[streams.length - 1] !== "function")
29511
- return noop2;
29196
+ return noop;
29512
29197
  return streams.pop();
29513
29198
  }
29514
29199
  function pipeline() {
@@ -31307,7 +30992,7 @@ var require_end_of_stream3 = __commonJS({
31307
30992
  callback.apply(this, args);
31308
30993
  };
31309
30994
  }
31310
- function noop2() {
30995
+ function noop() {
31311
30996
  }
31312
30997
  function isRequest(stream) {
31313
30998
  return stream.setHeader && typeof stream.abort === "function";
@@ -31317,7 +31002,7 @@ var require_end_of_stream3 = __commonJS({
31317
31002
  return eos(stream, null, opts);
31318
31003
  if (!opts)
31319
31004
  opts = {};
31320
- callback = once(callback || noop2);
31005
+ callback = once(callback || noop);
31321
31006
  var readable = opts.readable || opts.readable !== false && stream.readable;
31322
31007
  var writable = opts.writable || opts.writable !== false && stream.writable;
31323
31008
  var onlegacyfinish = function onlegacyfinish2() {
@@ -32602,7 +32287,7 @@ var require_pipeline3 = __commonJS({
32602
32287
  var _require$codes = require_errors3().codes;
32603
32288
  var ERR_MISSING_ARGS = _require$codes.ERR_MISSING_ARGS;
32604
32289
  var ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED;
32605
- function noop2(err) {
32290
+ function noop(err) {
32606
32291
  if (err)
32607
32292
  throw err;
32608
32293
  }
@@ -32648,9 +32333,9 @@ var require_pipeline3 = __commonJS({
32648
32333
  }
32649
32334
  function popCallback(streams) {
32650
32335
  if (!streams.length)
32651
- return noop2;
32336
+ return noop;
32652
32337
  if (typeof streams[streams.length - 1] !== "function")
32653
- return noop2;
32338
+ return noop;
32654
32339
  return streams.pop();
32655
32340
  }
32656
32341
  function pipeline() {
@@ -34679,7 +34364,7 @@ var require_end_of_stream4 = __commonJS({
34679
34364
  callback.apply(this, args);
34680
34365
  };
34681
34366
  }
34682
- function noop2() {
34367
+ function noop() {
34683
34368
  }
34684
34369
  function isRequest(stream) {
34685
34370
  return stream.setHeader && typeof stream.abort === "function";
@@ -34689,7 +34374,7 @@ var require_end_of_stream4 = __commonJS({
34689
34374
  return eos(stream, null, opts);
34690
34375
  if (!opts)
34691
34376
  opts = {};
34692
- callback = once(callback || noop2);
34377
+ callback = once(callback || noop);
34693
34378
  var readable = opts.readable || opts.readable !== false && stream.readable;
34694
34379
  var writable = opts.writable || opts.writable !== false && stream.writable;
34695
34380
  var onlegacyfinish = function onlegacyfinish2() {
@@ -35974,7 +35659,7 @@ var require_pipeline4 = __commonJS({
35974
35659
  var _require$codes = require_errors4().codes;
35975
35660
  var ERR_MISSING_ARGS = _require$codes.ERR_MISSING_ARGS;
35976
35661
  var ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED;
35977
- function noop2(err) {
35662
+ function noop(err) {
35978
35663
  if (err)
35979
35664
  throw err;
35980
35665
  }
@@ -36020,9 +35705,9 @@ var require_pipeline4 = __commonJS({
36020
35705
  }
36021
35706
  function popCallback(streams) {
36022
35707
  if (!streams.length)
36023
- return noop2;
35708
+ return noop;
36024
35709
  if (typeof streams[streams.length - 1] !== "function")
36025
- return noop2;
35710
+ return noop;
36026
35711
  return streams.pop();
36027
35712
  }
36028
35713
  function pipeline() {
@@ -38053,7 +37738,7 @@ var require_end_of_stream5 = __commonJS({
38053
37738
  callback.apply(this, args);
38054
37739
  };
38055
37740
  }
38056
- function noop2() {
37741
+ function noop() {
38057
37742
  }
38058
37743
  function isRequest(stream) {
38059
37744
  return stream.setHeader && typeof stream.abort === "function";
@@ -38063,7 +37748,7 @@ var require_end_of_stream5 = __commonJS({
38063
37748
  return eos(stream, null, opts);
38064
37749
  if (!opts)
38065
37750
  opts = {};
38066
- callback = once(callback || noop2);
37751
+ callback = once(callback || noop);
38067
37752
  var readable = opts.readable || opts.readable !== false && stream.readable;
38068
37753
  var writable = opts.writable || opts.writable !== false && stream.writable;
38069
37754
  var onlegacyfinish = function onlegacyfinish2() {
@@ -39348,7 +39033,7 @@ var require_pipeline5 = __commonJS({
39348
39033
  var _require$codes = require_errors5().codes;
39349
39034
  var ERR_MISSING_ARGS = _require$codes.ERR_MISSING_ARGS;
39350
39035
  var ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED;
39351
- function noop2(err) {
39036
+ function noop(err) {
39352
39037
  if (err)
39353
39038
  throw err;
39354
39039
  }
@@ -39394,9 +39079,9 @@ var require_pipeline5 = __commonJS({
39394
39079
  }
39395
39080
  function popCallback(streams) {
39396
39081
  if (!streams.length)
39397
- return noop2;
39082
+ return noop;
39398
39083
  if (typeof streams[streams.length - 1] !== "function")
39399
- return noop2;
39084
+ return noop;
39400
39085
  return streams.pop();
39401
39086
  }
39402
39087
  function pipeline() {
@@ -39460,7 +39145,7 @@ var require_extract = __commonJS({
39460
39145
  var headers = require_headers();
39461
39146
  var Writable = require_readable6().Writable;
39462
39147
  var PassThrough = require_readable6().PassThrough;
39463
- var noop2 = function() {
39148
+ var noop = function() {
39464
39149
  };
39465
39150
  var overflow = function(size) {
39466
39151
  size &= 511;
@@ -39499,7 +39184,7 @@ var require_extract = __commonJS({
39499
39184
  this._buffer = bl();
39500
39185
  this._missing = 0;
39501
39186
  this._partial = false;
39502
- this._onparse = noop2;
39187
+ this._onparse = noop;
39503
39188
  this._header = null;
39504
39189
  this._stream = null;
39505
39190
  this._overflow = null;
@@ -39647,7 +39332,7 @@ var require_extract = __commonJS({
39647
39332
  if (this._destroyed)
39648
39333
  return;
39649
39334
  var cb = this._cb;
39650
- this._cb = noop2;
39335
+ this._cb = noop;
39651
39336
  if (this._overflow)
39652
39337
  this._write(this._overflow, void 0, cb);
39653
39338
  else
@@ -39703,7 +39388,7 @@ var require_fs_constants = __commonJS({
39703
39388
  var require_end_of_stream6 = __commonJS({
39704
39389
  "../../node_modules/end-of-stream/index.js"(exports, module2) {
39705
39390
  var once = require_once();
39706
- var noop2 = function() {
39391
+ var noop = function() {
39707
39392
  };
39708
39393
  var isRequest = function(stream) {
39709
39394
  return stream.setHeader && typeof stream.abort === "function";
@@ -39716,7 +39401,7 @@ var require_end_of_stream6 = __commonJS({
39716
39401
  return eos(stream, null, opts);
39717
39402
  if (!opts)
39718
39403
  opts = {};
39719
- callback = once(callback || noop2);
39404
+ callback = once(callback || noop);
39720
39405
  var ws = stream._writableState;
39721
39406
  var rs = stream._readableState;
39722
39407
  var readable = opts.readable || opts.readable !== false && stream.readable;
@@ -39808,7 +39493,7 @@ var require_pack = __commonJS({
39808
39493
  var DMODE = parseInt("755", 8);
39809
39494
  var FMODE = parseInt("644", 8);
39810
39495
  var END_OF_TAR = alloc(1024);
39811
- var noop2 = function() {
39496
+ var noop = function() {
39812
39497
  };
39813
39498
  var overflow = function(self2, size) {
39814
39499
  size &= 511;
@@ -39884,7 +39569,7 @@ var require_pack = __commonJS({
39884
39569
  if (!(this instanceof Pack))
39885
39570
  return new Pack(opts);
39886
39571
  Readable.call(this, opts);
39887
- this._drain = noop2;
39572
+ this._drain = noop;
39888
39573
  this._finalized = false;
39889
39574
  this._finalizing = false;
39890
39575
  this._destroyed = false;
@@ -39901,7 +39586,7 @@ var require_pack = __commonJS({
39901
39586
  buffer = null;
39902
39587
  }
39903
39588
  if (!callback)
39904
- callback = noop2;
39589
+ callback = noop;
39905
39590
  var self2 = this;
39906
39591
  if (!header.size || header.type === "symlink")
39907
39592
  header.size = 0;
@@ -40025,7 +39710,7 @@ var require_pack = __commonJS({
40025
39710
  };
40026
39711
  Pack.prototype._read = function(n) {
40027
39712
  var drain = this._drain;
40028
- this._drain = noop2;
39713
+ this._drain = noop;
40029
39714
  drain();
40030
39715
  };
40031
39716
  module2.exports = Pack;
@@ -48164,7 +47849,7 @@ var require_parse_pgm = __commonJS({
48164
47849
  });
48165
47850
 
48166
47851
  // ../../node_modules/@math.gl/geoid/dist/es5/index.js
48167
- var require_es510 = __commonJS({
47852
+ var require_es59 = __commonJS({
48168
47853
  "../../node_modules/@math.gl/geoid/dist/es5/index.js"(exports) {
48169
47854
  "use strict";
48170
47855
  var _interopRequireDefault = require_interopRequireDefault();
@@ -49997,7 +49682,7 @@ var require_context = __commonJS({
49997
49682
  });
49998
49683
 
49999
49684
  // ../../node_modules/@luma.gl/gltools/dist/es5/index.js
50000
- var require_es511 = __commonJS({
49685
+ var require_es510 = __commonJS({
50001
49686
  "../../node_modules/@luma.gl/gltools/dist/es5/index.js"(exports) {
50002
49687
  "use strict";
50003
49688
  Object.defineProperty(exports, "__esModule", {
@@ -50144,10 +49829,10 @@ var require_init3 = __commonJS({
50144
49829
  exports.default = exports.lumaStats = void 0;
50145
49830
  var _classCallCheck2 = _interopRequireDefault(require_classCallCheck());
50146
49831
  var _createClass2 = _interopRequireDefault(require_createClass());
50147
- var _gltools = require_es511();
49832
+ var _gltools = require_es510();
50148
49833
  var _probe = require_es53();
50149
49834
  var _env = require_env2();
50150
- var VERSION15 = true ? "8.5.4" : "untranspiled source";
49835
+ var VERSION18 = true ? "8.5.4" : "untranspiled source";
50151
49836
  var STARTUP_MESSAGE = "set luma.log.level=1 (or higher) to trace rendering";
50152
49837
  var StatsManager = function() {
50153
49838
  function StatsManager2() {
@@ -50169,16 +49854,16 @@ var require_init3 = __commonJS({
50169
49854
  }();
50170
49855
  var lumaStats = new StatsManager();
50171
49856
  exports.lumaStats = lumaStats;
50172
- if (_env.global.luma && _env.global.luma.VERSION !== VERSION15) {
50173
- throw new Error("luma.gl - multiple VERSIONs detected: ".concat(_env.global.luma.VERSION, " vs ").concat(VERSION15));
49857
+ if (_env.global.luma && _env.global.luma.VERSION !== VERSION18) {
49858
+ throw new Error("luma.gl - multiple VERSIONs detected: ".concat(_env.global.luma.VERSION, " vs ").concat(VERSION18));
50174
49859
  }
50175
49860
  if (!_env.global.luma) {
50176
49861
  if ((0, _env.isBrowser)()) {
50177
- _gltools.log.log(1, "luma.gl ".concat(VERSION15, " - ").concat(STARTUP_MESSAGE))();
49862
+ _gltools.log.log(1, "luma.gl ".concat(VERSION18, " - ").concat(STARTUP_MESSAGE))();
50178
49863
  }
50179
49864
  _env.global.luma = _env.global.luma || {
50180
- VERSION: VERSION15,
50181
- version: VERSION15,
49865
+ VERSION: VERSION18,
49866
+ version: VERSION18,
50182
49867
  log: _gltools.log,
50183
49868
  stats: lumaStats,
50184
49869
  globals: {
@@ -50422,7 +50107,7 @@ var require_stub_methods = __commonJS({
50422
50107
  value: true
50423
50108
  });
50424
50109
  exports.stubRemovedMethods = stubRemovedMethods;
50425
- var _gltools = require_es511();
50110
+ var _gltools = require_es510();
50426
50111
  function stubRemovedMethods(instance, className, version2, methodNames) {
50427
50112
  var upgradeMessage = "See luma.gl ".concat(version2, " Upgrade Guide at https://luma.gl/docs/upgrade-guide");
50428
50113
  var prototype = Object.getPrototypeOf(instance);
@@ -50447,7 +50132,7 @@ var require_check_props = __commonJS({
50447
50132
  value: true
50448
50133
  });
50449
50134
  exports.checkProps = checkProps;
50450
- var _gltools = require_es511();
50135
+ var _gltools = require_es510();
50451
50136
  function checkProps(className, props, propChecks) {
50452
50137
  var _propChecks$removedPr = propChecks.removedProps, removedProps = _propChecks$removedPr === void 0 ? {} : _propChecks$removedPr, _propChecks$deprecate = propChecks.deprecatedProps, deprecatedProps = _propChecks$deprecate === void 0 ? {} : _propChecks$deprecate, _propChecks$replacedP = propChecks.replacedProps, replacedProps = _propChecks$replacedP === void 0 ? {} : _propChecks$replacedP;
50453
50138
  for (var propName in removedProps) {
@@ -50674,7 +50359,7 @@ var require_resource = __commonJS({
50674
50359
  exports.default = void 0;
50675
50360
  var _classCallCheck2 = _interopRequireDefault(require_classCallCheck());
50676
50361
  var _createClass2 = _interopRequireDefault(require_createClass());
50677
- var _gltools = require_es511();
50362
+ var _gltools = require_es510();
50678
50363
  var _init = require_init3();
50679
50364
  var _webglUtils = require_webgl_utils();
50680
50365
  var _utils = require_utils4();
@@ -51123,7 +50808,7 @@ var require_buffer = __commonJS({
51123
50808
  var _resource = _interopRequireDefault(require_resource());
51124
50809
  var _accessor = _interopRequireDefault(require_accessor());
51125
50810
  var _webglUtils = require_webgl_utils();
51126
- var _gltools = require_es511();
50811
+ var _gltools = require_es510();
51127
50812
  var _utils = require_utils4();
51128
50813
  function _createSuper(Derived) {
51129
50814
  var hasNativeReflectConstruct = _isNativeReflectConstruct();
@@ -51502,7 +51187,7 @@ var require_texture_formats = __commonJS({
51502
51187
  exports.isLinearFilteringSupported = isLinearFilteringSupported;
51503
51188
  exports.TYPE_SIZES = exports.DATA_FORMAT_CHANNELS = exports.TEXTURE_FORMATS = void 0;
51504
51189
  var _defineProperty2 = _interopRequireDefault(require_defineProperty());
51505
- var _gltools = require_es511();
51190
+ var _gltools = require_es510();
51506
51191
  var _TEXTURE_FORMATS;
51507
51192
  var _DATA_FORMAT_CHANNELS;
51508
51193
  var _TYPE_SIZES;
@@ -51583,7 +51268,7 @@ var require_texture = __commonJS({
51583
51268
  var _inherits2 = _interopRequireDefault(require_inherits());
51584
51269
  var _possibleConstructorReturn2 = _interopRequireDefault(require_possibleConstructorReturn());
51585
51270
  var _getPrototypeOf2 = _interopRequireDefault(require_getPrototypeOf());
51586
- var _gltools = require_es511();
51271
+ var _gltools = require_es510();
51587
51272
  var _env = require_env2();
51588
51273
  var _resource = _interopRequireDefault(require_resource());
51589
51274
  var _buffer = _interopRequireDefault(require_buffer());
@@ -52303,7 +51988,7 @@ var require_texture_2d = __commonJS({
52303
51988
  var _inherits2 = _interopRequireDefault(require_inherits());
52304
51989
  var _possibleConstructorReturn2 = _interopRequireDefault(require_possibleConstructorReturn());
52305
51990
  var _getPrototypeOf2 = _interopRequireDefault(require_getPrototypeOf());
52306
- var _gltools = require_es511();
51991
+ var _gltools = require_es510();
52307
51992
  var _texture = _interopRequireDefault(require_texture());
52308
51993
  var _loadFile = require_load_file();
52309
51994
  function _createSuper(Derived) {
@@ -52388,7 +52073,7 @@ var require_texture_cube = __commonJS({
52388
52073
  var _inherits2 = _interopRequireDefault(require_inherits());
52389
52074
  var _possibleConstructorReturn2 = _interopRequireDefault(require_possibleConstructorReturn());
52390
52075
  var _getPrototypeOf2 = _interopRequireDefault(require_getPrototypeOf());
52391
- var _gltools = require_es511();
52076
+ var _gltools = require_es510();
52392
52077
  var _texture = _interopRequireDefault(require_texture());
52393
52078
  function _createSuper(Derived) {
52394
52079
  var hasNativeReflectConstruct = _isNativeReflectConstruct();
@@ -52554,7 +52239,7 @@ var require_texture_3d = __commonJS({
52554
52239
  var _inherits2 = _interopRequireDefault(require_inherits());
52555
52240
  var _possibleConstructorReturn2 = _interopRequireDefault(require_possibleConstructorReturn());
52556
52241
  var _getPrototypeOf2 = _interopRequireDefault(require_getPrototypeOf());
52557
- var _gltools = require_es511();
52242
+ var _gltools = require_es510();
52558
52243
  var _texture = _interopRequireDefault(require_texture());
52559
52244
  var _textureFormats = require_texture_formats();
52560
52245
  var _buffer = _interopRequireDefault(require_buffer());
@@ -52836,7 +52521,7 @@ var require_renderbuffer = __commonJS({
52836
52521
  var _getPrototypeOf2 = _interopRequireDefault(require_getPrototypeOf());
52837
52522
  var _resource = _interopRequireDefault(require_resource());
52838
52523
  var _renderbufferFormats = _interopRequireDefault(require_renderbuffer_formats());
52839
- var _gltools = require_es511();
52524
+ var _gltools = require_es510();
52840
52525
  var _utils = require_utils4();
52841
52526
  function _createSuper(Derived) {
52842
52527
  var hasNativeReflectConstruct = _isNativeReflectConstruct();
@@ -52986,7 +52671,7 @@ var require_clear = __commonJS({
52986
52671
  exports.clear = clear;
52987
52672
  exports.clearBuffer = clearBuffer;
52988
52673
  var _slicedToArray2 = _interopRequireDefault(require_slicedToArray());
52989
- var _gltools = require_es511();
52674
+ var _gltools = require_es510();
52990
52675
  var _utils = require_utils4();
52991
52676
  var GL_DEPTH_BUFFER_BIT = 256;
52992
52677
  var GL_STENCIL_BUFFER_BIT = 1024;
@@ -53129,7 +52814,7 @@ var require_copy_and_blit = __commonJS({
53129
52814
  var _buffer = _interopRequireDefault(require_buffer());
53130
52815
  var _framebuffer = _interopRequireDefault(require_framebuffer());
53131
52816
  var _texture = _interopRequireDefault(require_texture());
53132
- var _gltools = require_es511();
52817
+ var _gltools = require_es510();
53133
52818
  var _webglUtils = require_webgl_utils();
53134
52819
  var _typedArrayUtils = require_typed_array_utils();
53135
52820
  var _formatUtils = require_format_utils();
@@ -53498,7 +53183,7 @@ var require_limits = __commonJS({
53498
53183
  exports.getContextInfo = getContextInfo;
53499
53184
  var _defineProperty2 = _interopRequireDefault(require_defineProperty());
53500
53185
  var _webglLimitsTable = _interopRequireDefault(require_webgl_limits_table());
53501
- var _gltools = require_es511();
53186
+ var _gltools = require_es510();
53502
53187
  function getContextLimits(gl) {
53503
53188
  gl.luma = gl.luma || {};
53504
53189
  if (!gl.luma.limits) {
@@ -53611,7 +53296,7 @@ var require_features = __commonJS({
53611
53296
  exports.hasFeatures = hasFeatures;
53612
53297
  exports.getFeatures = getFeatures;
53613
53298
  var _webglFeaturesTable = _interopRequireDefault(require_webgl_features_table());
53614
- var _gltools = require_es511();
53299
+ var _gltools = require_es510();
53615
53300
  var _utils = require_utils4();
53616
53301
  function _createForOfIteratorHelper(o, allowArrayLike) {
53617
53302
  var it;
@@ -53872,7 +53557,7 @@ var require_framebuffer = __commonJS({
53872
53557
  var _inherits2 = _interopRequireDefault(require_inherits());
53873
53558
  var _possibleConstructorReturn2 = _interopRequireDefault(require_possibleConstructorReturn());
53874
53559
  var _getPrototypeOf2 = _interopRequireDefault(require_getPrototypeOf());
53875
- var _gltools = require_es511();
53560
+ var _gltools = require_es510();
53876
53561
  var _resource = _interopRequireDefault(require_resource());
53877
53562
  var _texture2d = _interopRequireDefault(require_texture_2d());
53878
53563
  var _renderbuffer = _interopRequireDefault(require_renderbuffer());
@@ -54859,7 +54544,7 @@ var require_shader = __commonJS({
54859
54544
  var _inherits2 = _interopRequireDefault(require_inherits());
54860
54545
  var _possibleConstructorReturn2 = _interopRequireDefault(require_possibleConstructorReturn());
54861
54546
  var _getPrototypeOf2 = _interopRequireDefault(require_getPrototypeOf());
54862
- var _gltools = require_es511();
54547
+ var _gltools = require_es510();
54863
54548
  var _glslUtils = require_glsl_utils();
54864
54549
  var _utils = require_utils4();
54865
54550
  var _resource = _interopRequireDefault(require_resource());
@@ -55057,7 +54742,7 @@ var require_uniforms = __commonJS({
55057
54742
  exports.checkUniformValues = checkUniformValues;
55058
54743
  exports.copyUniform = copyUniform;
55059
54744
  var _defineProperty2 = _interopRequireDefault(require_defineProperty());
55060
- var _gltools = require_es511();
54745
+ var _gltools = require_es510();
55061
54746
  var _framebuffer = _interopRequireDefault(require_framebuffer());
55062
54747
  var _renderbuffer = _interopRequireDefault(require_renderbuffer());
55063
54748
  var _texture = _interopRequireDefault(require_texture());
@@ -55390,7 +55075,7 @@ var require_program_configuration = __commonJS({
55390
55075
  var _classCallCheck2 = _interopRequireDefault(require_classCallCheck());
55391
55076
  var _createClass2 = _interopRequireDefault(require_createClass());
55392
55077
  var _accessor = _interopRequireDefault(require_accessor());
55393
- var _gltools = require_es511();
55078
+ var _gltools = require_es510();
55394
55079
  var _attributeUtils = require_attribute_utils();
55395
55080
  var ProgramConfiguration = function() {
55396
55081
  function ProgramConfiguration2(program) {
@@ -55549,7 +55234,7 @@ var require_program = __commonJS({
55549
55234
  var _uniforms = require_uniforms();
55550
55235
  var _shader = require_shader();
55551
55236
  var _programConfiguration = _interopRequireDefault(require_program_configuration());
55552
- var _gltools = require_es511();
55237
+ var _gltools = require_es510();
55553
55238
  var _webglUtils = require_webgl_utils();
55554
55239
  var _attributeUtils = require_attribute_utils();
55555
55240
  var _utils = require_utils4();
@@ -55960,7 +55645,7 @@ var require_query = __commonJS({
55960
55645
  var _getPrototypeOf2 = _interopRequireDefault(require_getPrototypeOf());
55961
55646
  var _resource = _interopRequireDefault(require_resource());
55962
55647
  var _features = require_features2();
55963
- var _gltools = require_es511();
55648
+ var _gltools = require_es510();
55964
55649
  var _utils = require_utils4();
55965
55650
  function _createForOfIteratorHelper(o, allowArrayLike) {
55966
55651
  var it;
@@ -56224,7 +55909,7 @@ var require_transform_feedback = __commonJS({
56224
55909
  var _inherits2 = _interopRequireDefault(require_inherits());
56225
55910
  var _possibleConstructorReturn2 = _interopRequireDefault(require_possibleConstructorReturn());
56226
55911
  var _getPrototypeOf2 = _interopRequireDefault(require_getPrototypeOf());
56227
- var _gltools = require_es511();
55912
+ var _gltools = require_es510();
56228
55913
  var _resource = _interopRequireDefault(require_resource());
56229
55914
  var _buffer = _interopRequireDefault(require_buffer());
56230
55915
  var _utils = require_utils4();
@@ -56509,7 +56194,7 @@ var require_vertex_array_object = __commonJS({
56509
56194
  var _getPrototypeOf2 = _interopRequireDefault(require_getPrototypeOf());
56510
56195
  var _resource = _interopRequireDefault(require_resource());
56511
56196
  var _buffer = _interopRequireDefault(require_buffer());
56512
- var _gltools = require_es511();
56197
+ var _gltools = require_es510();
56513
56198
  var _arrayUtilsFlat = require_array_utils_flat();
56514
56199
  var _utils = require_utils4();
56515
56200
  var _probe = require_es53();
@@ -56837,7 +56522,7 @@ var require_vertex_array = __commonJS({
56837
56522
  exports.default = void 0;
56838
56523
  var _classCallCheck2 = _interopRequireDefault(require_classCallCheck());
56839
56524
  var _createClass2 = _interopRequireDefault(require_createClass());
56840
- var _gltools = require_es511();
56525
+ var _gltools = require_es510();
56841
56526
  var _accessor2 = _interopRequireDefault(require_accessor());
56842
56527
  var _buffer = _interopRequireDefault(require_buffer());
56843
56528
  var _vertexArrayObject = _interopRequireDefault(require_vertex_array_object());
@@ -57713,7 +57398,7 @@ var require_debug_program_configuration = __commonJS({
57713
57398
  });
57714
57399
 
57715
57400
  // ../../node_modules/@luma.gl/webgl/dist/es5/index.js
57716
- var require_es512 = __commonJS({
57401
+ var require_es511 = __commonJS({
57717
57402
  "../../node_modules/@luma.gl/webgl/dist/es5/index.js"(exports) {
57718
57403
  "use strict";
57719
57404
  var _interopRequireDefault = require_interopRequireDefault();
@@ -58059,7 +57744,7 @@ var require_es512 = __commonJS({
58059
57744
  var _loadFile = require_load_file();
58060
57745
  var _getShaderName = _interopRequireDefault(require_get_shader_name());
58061
57746
  var _getShaderVersion = _interopRequireDefault(require_get_shader_version());
58062
- var _gltools = require_es511();
57747
+ var _gltools = require_es510();
58063
57748
  var _assert = _interopRequireDefault(require_assert6());
58064
57749
  var _utils = require_utils3();
58065
57750
  var _uniforms = require_uniforms();
@@ -58083,8 +57768,8 @@ var require_animation_loop = __commonJS({
58083
57768
  var _asyncToGenerator2 = _interopRequireDefault(require_asyncToGenerator());
58084
57769
  var _classCallCheck2 = _interopRequireDefault(require_classCallCheck());
58085
57770
  var _createClass2 = _interopRequireDefault(require_createClass());
58086
- var _gltools = require_es511();
58087
- var _webgl = require_es512();
57771
+ var _gltools = require_es510();
57772
+ var _webgl = require_es511();
58088
57773
  var _env = require_env2();
58089
57774
  var isPage = (0, _env.isBrowser)() && typeof document !== "undefined";
58090
57775
  var statIdCounter = 0;
@@ -63754,7 +63439,7 @@ var require_pose2 = __commonJS({
63754
63439
  });
63755
63440
 
63756
63441
  // ../../node_modules/@luma.gl/shadertools/node_modules/@math.gl/core/dist/es5/index.js
63757
- var require_es513 = __commonJS({
63442
+ var require_es512 = __commonJS({
63758
63443
  "../../node_modules/@luma.gl/shadertools/node_modules/@math.gl/core/dist/es5/index.js"(exports) {
63759
63444
  "use strict";
63760
63445
  var _interopRequireDefault = require_interopRequireDefault();
@@ -64004,7 +63689,7 @@ var require_project = __commonJS({
64004
63689
  value: true
64005
63690
  });
64006
63691
  exports.project = void 0;
64007
- var _core = require_es513();
63692
+ var _core = require_es512();
64008
63693
  var IDENTITY_MATRIX = [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1];
64009
63694
  var DEFAULT_MODULE_OPTIONS = {
64010
63695
  modelMatrix: IDENTITY_MATRIX,
@@ -65334,7 +65019,7 @@ var require_modules = __commonJS({
65334
65019
  });
65335
65020
 
65336
65021
  // ../../node_modules/@luma.gl/shadertools/dist/es5/index.js
65337
- var require_es514 = __commonJS({
65022
+ var require_es513 = __commonJS({
65338
65023
  "../../node_modules/@luma.gl/shadertools/dist/es5/index.js"(exports) {
65339
65024
  "use strict";
65340
65025
  Object.defineProperty(exports, "__esModule", {
@@ -65431,8 +65116,8 @@ var require_program_manager = __commonJS({
65431
65116
  exports.default = void 0;
65432
65117
  var _classCallCheck2 = _interopRequireDefault(require_classCallCheck());
65433
65118
  var _createClass2 = _interopRequireDefault(require_createClass());
65434
- var _shadertools = require_es514();
65435
- var _webgl = require_es512();
65119
+ var _shadertools = require_es513();
65120
+ var _webgl = require_es511();
65436
65121
  function _createForOfIteratorHelper(o, allowArrayLike) {
65437
65122
  var it;
65438
65123
  if (typeof Symbol === "undefined" || o[Symbol.iterator] == null) {
@@ -65680,7 +65365,7 @@ var require_model_utils = __commonJS({
65680
65365
  exports.getBuffersFromGeometry = getBuffersFromGeometry;
65681
65366
  exports.inferAttributeAccessor = inferAttributeAccessor;
65682
65367
  var _defineProperty2 = _interopRequireDefault(require_defineProperty());
65683
- var _webgl = require_es512();
65368
+ var _webgl = require_es511();
65684
65369
  function ownKeys(object, enumerableOnly) {
65685
65370
  var keys = Object.keys(object);
65686
65371
  if (Object.getOwnPropertySymbols) {
@@ -65797,9 +65482,9 @@ var require_model = __commonJS({
65797
65482
  var _defineProperty2 = _interopRequireDefault(require_defineProperty());
65798
65483
  var _classCallCheck2 = _interopRequireDefault(require_classCallCheck());
65799
65484
  var _createClass2 = _interopRequireDefault(require_createClass());
65800
- var _gltools = require_es511();
65485
+ var _gltools = require_es510();
65801
65486
  var _programManager = _interopRequireDefault(require_program_manager());
65802
- var _webgl = require_es512();
65487
+ var _webgl = require_es511();
65803
65488
  var _modelUtils = require_model_utils();
65804
65489
  var LOG_DRAW_PRIORITY = 2;
65805
65490
  var LOG_DRAW_TIMEOUT = 1e4;
@@ -66246,8 +65931,8 @@ var require_buffer_transform = __commonJS({
66246
65931
  exports.default = void 0;
66247
65932
  var _classCallCheck2 = _interopRequireDefault(require_classCallCheck());
66248
65933
  var _createClass2 = _interopRequireDefault(require_createClass());
66249
- var _gltools = require_es511();
66250
- var _webgl = require_es512();
65934
+ var _gltools = require_es510();
65935
+ var _webgl = require_es511();
66251
65936
  function _createForOfIteratorHelper(o, allowArrayLike) {
66252
65937
  var it;
66253
65938
  if (typeof Symbol === "undefined" || o[Symbol.iterator] == null) {
@@ -66547,8 +66232,8 @@ var require_transform_shader_utils = __commonJS({
66547
66232
  exports.getSizeUniforms = getSizeUniforms;
66548
66233
  exports.getVaryingType = getVaryingType;
66549
66234
  exports.processAttributeDefinition = processAttributeDefinition;
66550
- var _webgl = require_es512();
66551
- var _shadertools = require_es514();
66235
+ var _webgl = require_es511();
66236
+ var _shadertools = require_es513();
66552
66237
  var SAMPLER_UNIFORM_PREFIX = "transform_uSampler_";
66553
66238
  var SIZE_UNIFORM_PREFIX = "transform_uSize_";
66554
66239
  var VS_POS_VARIABLE = "transform_position";
@@ -66676,8 +66361,8 @@ var require_texture_transform = __commonJS({
66676
66361
  var _classCallCheck2 = _interopRequireDefault(require_classCallCheck());
66677
66362
  var _createClass2 = _interopRequireDefault(require_createClass());
66678
66363
  var _defineProperty2 = _interopRequireDefault(require_defineProperty());
66679
- var _webgl = require_es512();
66680
- var _shadertools = require_es514();
66364
+ var _webgl = require_es511();
66365
+ var _shadertools = require_es513();
66681
66366
  var _transformShaderUtils = require_transform_shader_utils();
66682
66367
  var _SRC_TEX_PARAMETER_OV;
66683
66368
  var SRC_TEX_PARAMETER_OVERRIDES = (_SRC_TEX_PARAMETER_OV = {}, (0, _defineProperty2.default)(_SRC_TEX_PARAMETER_OV, 10241, 9728), (0, _defineProperty2.default)(_SRC_TEX_PARAMETER_OV, 10240, 9728), (0, _defineProperty2.default)(_SRC_TEX_PARAMETER_OV, 10242, 33071), (0, _defineProperty2.default)(_SRC_TEX_PARAMETER_OV, 10243, 33071), _SRC_TEX_PARAMETER_OV);
@@ -67002,11 +66687,11 @@ var require_transform2 = __commonJS({
67002
66687
  exports.default = void 0;
67003
66688
  var _classCallCheck2 = _interopRequireDefault(require_classCallCheck());
67004
66689
  var _createClass2 = _interopRequireDefault(require_createClass());
67005
- var _shadertools = require_es514();
66690
+ var _shadertools = require_es513();
67006
66691
  var _bufferTransform = _interopRequireDefault(require_buffer_transform());
67007
66692
  var _textureTransform = _interopRequireDefault(require_texture_transform());
67008
- var _gltools = require_es511();
67009
- var _webgl = require_es512();
66693
+ var _gltools = require_es510();
66694
+ var _webgl = require_es511();
67010
66695
  var _model = _interopRequireDefault(require_model());
67011
66696
  function _createForOfIteratorHelper(o, allowArrayLike) {
67012
66697
  var it;
@@ -67281,7 +66966,7 @@ var require_geometry = __commonJS({
67281
66966
  var _defineProperty2 = _interopRequireDefault(require_defineProperty());
67282
66967
  var _classCallCheck2 = _interopRequireDefault(require_classCallCheck());
67283
66968
  var _createClass2 = _interopRequireDefault(require_createClass());
67284
- var _webgl = require_es512();
66969
+ var _webgl = require_es511();
67285
66970
  function ownKeys(object, enumerableOnly) {
67286
66971
  var keys = Object.keys(object);
67287
66972
  if (Object.getOwnPropertySymbols) {
@@ -67431,7 +67116,7 @@ var require_truncated_cone_geometry = __commonJS({
67431
67116
  var _possibleConstructorReturn2 = _interopRequireDefault(require_possibleConstructorReturn());
67432
67117
  var _getPrototypeOf2 = _interopRequireDefault(require_getPrototypeOf());
67433
67118
  var _geometry = _interopRequireDefault(require_geometry());
67434
- var _webgl = require_es512();
67119
+ var _webgl = require_es511();
67435
67120
  function ownKeys(object, enumerableOnly) {
67436
67121
  var keys = Object.keys(object);
67437
67122
  if (Object.getOwnPropertySymbols) {
@@ -67613,7 +67298,7 @@ var require_cone_geometry = __commonJS({
67613
67298
  var _possibleConstructorReturn2 = _interopRequireDefault(require_possibleConstructorReturn());
67614
67299
  var _getPrototypeOf2 = _interopRequireDefault(require_getPrototypeOf());
67615
67300
  var _truncatedConeGeometry = _interopRequireDefault(require_truncated_cone_geometry());
67616
- var _webgl = require_es512();
67301
+ var _webgl = require_es511();
67617
67302
  function ownKeys(object, enumerableOnly) {
67618
67303
  var keys = Object.keys(object);
67619
67304
  if (Object.getOwnPropertySymbols) {
@@ -67707,7 +67392,7 @@ var require_cube_geometry = __commonJS({
67707
67392
  var _possibleConstructorReturn2 = _interopRequireDefault(require_possibleConstructorReturn());
67708
67393
  var _getPrototypeOf2 = _interopRequireDefault(require_getPrototypeOf());
67709
67394
  var _geometry = _interopRequireDefault(require_geometry());
67710
- var _webgl = require_es512();
67395
+ var _webgl = require_es511();
67711
67396
  function ownKeys(object, enumerableOnly) {
67712
67397
  var keys = Object.keys(object);
67713
67398
  if (Object.getOwnPropertySymbols) {
@@ -67820,7 +67505,7 @@ var require_cylinder_geometry = __commonJS({
67820
67505
  var _possibleConstructorReturn2 = _interopRequireDefault(require_possibleConstructorReturn());
67821
67506
  var _getPrototypeOf2 = _interopRequireDefault(require_getPrototypeOf());
67822
67507
  var _truncatedConeGeometry = _interopRequireDefault(require_truncated_cone_geometry());
67823
- var _webgl = require_es512();
67508
+ var _webgl = require_es511();
67824
67509
  function ownKeys(object, enumerableOnly) {
67825
67510
  var keys = Object.keys(object);
67826
67511
  if (Object.getOwnPropertySymbols) {
@@ -71696,7 +71381,7 @@ var require_pose3 = __commonJS({
71696
71381
  });
71697
71382
 
71698
71383
  // ../../node_modules/@luma.gl/engine/node_modules/@math.gl/core/dist/es5/index.js
71699
- var require_es515 = __commonJS({
71384
+ var require_es514 = __commonJS({
71700
71385
  "../../node_modules/@luma.gl/engine/node_modules/@math.gl/core/dist/es5/index.js"(exports) {
71701
71386
  "use strict";
71702
71387
  var _interopRequireDefault = require_interopRequireDefault();
@@ -71952,9 +71637,9 @@ var require_ico_sphere_geometry = __commonJS({
71952
71637
  var _inherits2 = _interopRequireDefault(require_inherits());
71953
71638
  var _possibleConstructorReturn2 = _interopRequireDefault(require_possibleConstructorReturn());
71954
71639
  var _getPrototypeOf2 = _interopRequireDefault(require_getPrototypeOf());
71955
- var _core = require_es515();
71640
+ var _core = require_es514();
71956
71641
  var _geometry = _interopRequireDefault(require_geometry());
71957
- var _webgl = require_es512();
71642
+ var _webgl = require_es511();
71958
71643
  function ownKeys(object, enumerableOnly) {
71959
71644
  var keys = Object.keys(object);
71960
71645
  if (Object.getOwnPropertySymbols) {
@@ -72231,7 +71916,7 @@ var require_plane_geometry = __commonJS({
72231
71916
  var _getPrototypeOf2 = _interopRequireDefault(require_getPrototypeOf());
72232
71917
  var _geometry = _interopRequireDefault(require_geometry());
72233
71918
  var _geometryUtils = require_geometry_utils();
72234
- var _webgl = require_es512();
71919
+ var _webgl = require_es511();
72235
71920
  function ownKeys(object, enumerableOnly) {
72236
71921
  var keys = Object.keys(object);
72237
71922
  if (Object.getOwnPropertySymbols) {
@@ -72413,7 +72098,7 @@ var require_sphere_geometry = __commonJS({
72413
72098
  var _possibleConstructorReturn2 = _interopRequireDefault(require_possibleConstructorReturn());
72414
72099
  var _getPrototypeOf2 = _interopRequireDefault(require_getPrototypeOf());
72415
72100
  var _geometry = _interopRequireDefault(require_geometry());
72416
- var _webgl = require_es512();
72101
+ var _webgl = require_es511();
72417
72102
  function ownKeys(object, enumerableOnly) {
72418
72103
  var keys = Object.keys(object);
72419
72104
  if (Object.getOwnPropertySymbols) {
@@ -72974,7 +72659,7 @@ var require_clip_space = __commonJS({
72974
72659
  });
72975
72660
 
72976
72661
  // ../../node_modules/@luma.gl/engine/dist/es5/index.js
72977
- var require_es516 = __commonJS({
72662
+ var require_es515 = __commonJS({
72978
72663
  "../../node_modules/@luma.gl/engine/dist/es5/index.js"(exports) {
72979
72664
  "use strict";
72980
72665
  var _interopRequireDefault = require_interopRequireDefault();
@@ -73090,7 +72775,7 @@ var require_es516 = __commonJS({
73090
72775
  });
73091
72776
 
73092
72777
  // ../../node_modules/@luma.gl/constants/dist/es5/index.js
73093
- var require_es517 = __commonJS({
72778
+ var require_es516 = __commonJS({
73094
72779
  "../../node_modules/@luma.gl/constants/dist/es5/index.js"(exports) {
73095
72780
  "use strict";
73096
72781
  Object.defineProperty(exports, "__esModule", {
@@ -73722,7 +73407,8 @@ __export(exports, {
73722
73407
  DepsInstaller: () => DepsInstaller,
73723
73408
  I3SConverter: () => I3SConverter,
73724
73409
  NodePages: () => NodePages,
73725
- Tiles3DConverter: () => Tiles3DConverter
73410
+ Tiles3DConverter: () => Tiles3DConverter,
73411
+ prepareDataForAttributesConversion: () => prepareDataForAttributesConversion
73726
73412
  });
73727
73413
 
73728
73414
  // ../loader-utils/src/lib/env-utils/assert.ts
@@ -73748,7 +73434,7 @@ var matches = typeof process !== "undefined" && process.version && /v([0-9]*)/.e
73748
73434
  var nodeVersion = matches && parseFloat(matches[1]) || 0;
73749
73435
 
73750
73436
  // ../worker-utils/src/lib/env-utils/version.ts
73751
- var DEFAULT_VERSION = "latest";
73437
+ var DEFAULT_VERSION = "beta";
73752
73438
  var VERSION = typeof __VERSION__ !== "undefined" ? __VERSION__ : DEFAULT_VERSION;
73753
73439
  if (typeof __VERSION__ === "undefined") {
73754
73440
  console.error("loaders.gl: The __VERSION__ variable is not injected using babel plugin. Latest unstable workers would be fetched from the CDN.");
@@ -73781,13 +73467,13 @@ var nodeVersion2 = matches2 && parseFloat(matches2[1]) || 0;
73781
73467
  // ../worker-utils/src/lib/worker-farm/worker-job.ts
73782
73468
  var WorkerJob = class {
73783
73469
  constructor(jobName, workerThread) {
73784
- this.name = jobName;
73785
- this.workerThread = workerThread;
73786
73470
  this.isRunning = true;
73787
73471
  this._resolve = () => {
73788
73472
  };
73789
73473
  this._reject = () => {
73790
73474
  };
73475
+ this.name = jobName;
73476
+ this.workerThread = workerThread;
73791
73477
  this.result = new Promise((resolve, reject) => {
73792
73478
  this._resolve = resolve;
73793
73479
  this._reject = reject;
@@ -73812,6 +73498,9 @@ var WorkerJob = class {
73812
73498
  }
73813
73499
  };
73814
73500
 
73501
+ // ../worker-utils/src/lib/worker-farm/worker-thread.ts
73502
+ var import_worker_threads = __toModule(require("worker_threads"));
73503
+
73815
73504
  // ../worker-utils/src/lib/worker-utils/get-loadable-worker-url.ts
73816
73505
  var workerURLCache = new Map();
73817
73506
  function getLoadableWorkerURL(props) {
@@ -73899,10 +73588,10 @@ var WorkerThread = class {
73899
73588
  this.url = url;
73900
73589
  this.onMessage = NOOP;
73901
73590
  this.onError = (error) => console.log(error);
73902
- this.worker = this._createBrowserWorker();
73591
+ this.worker = isBrowser2 ? this._createBrowserWorker() : this._createNodeWorker();
73903
73592
  }
73904
73593
  static isSupported() {
73905
- return typeof Worker !== "undefined";
73594
+ return typeof Worker !== "undefined" && isBrowser2 || typeof import_worker_threads.Worker !== void 0;
73906
73595
  }
73907
73596
  destroy() {
73908
73597
  this.onMessage = NOOP;
@@ -73945,6 +73634,27 @@ var WorkerThread = class {
73945
73634
  worker.onmessageerror = (event) => console.error(event);
73946
73635
  return worker;
73947
73636
  }
73637
+ _createNodeWorker() {
73638
+ let worker;
73639
+ if (this.url) {
73640
+ const absolute = this.url.includes(":/") || this.url.startsWith("/");
73641
+ const url = absolute ? this.url : `./${this.url}`;
73642
+ worker = new import_worker_threads.Worker(url, { eval: false });
73643
+ } else if (this.source) {
73644
+ worker = new import_worker_threads.Worker(this.source, { eval: true });
73645
+ } else {
73646
+ throw new Error("no worker");
73647
+ }
73648
+ worker.on("message", (data) => {
73649
+ this.onMessage(data);
73650
+ });
73651
+ worker.on("error", (error) => {
73652
+ this.onError(error);
73653
+ });
73654
+ worker.on("exit", (code) => {
73655
+ });
73656
+ return worker;
73657
+ }
73948
73658
  };
73949
73659
 
73950
73660
  // ../worker-utils/src/lib/worker-farm/worker-pool.ts
@@ -73965,6 +73675,9 @@ var WorkerPool = class {
73965
73675
  this.url = props.url;
73966
73676
  this.setProps(props);
73967
73677
  }
73678
+ static isSupported() {
73679
+ return WorkerThread.isSupported();
73680
+ }
73968
73681
  destroy() {
73969
73682
  this.idleQueue.forEach((worker) => worker.destroy());
73970
73683
  this.isDestroyed = true;
@@ -73987,9 +73700,9 @@ var WorkerPool = class {
73987
73700
  this.onDebug = props.onDebug;
73988
73701
  }
73989
73702
  }
73990
- async startJob(name8, onMessage2 = (job, type, data) => job.done(data), onError = (job, error) => job.error(error)) {
73703
+ async startJob(name8, onMessage3 = (job, type, data) => job.done(data), onError = (job, error) => job.error(error)) {
73991
73704
  const startPromise = new Promise((onStart) => {
73992
- this.jobQueue.push({ name: name8, onMessage: onMessage2, onError, onStart });
73705
+ this.jobQueue.push({ name: name8, onMessage: onMessage3, onError, onStart });
73993
73706
  return this;
73994
73707
  });
73995
73708
  this._startQueuedJob();
@@ -74054,9 +73767,9 @@ var WorkerPool = class {
74054
73767
  var DEFAULT_PROPS = {
74055
73768
  maxConcurrency: 3,
74056
73769
  maxMobileConcurrency: 1,
73770
+ reuseWorkers: true,
74057
73771
  onDebug: () => {
74058
- },
74059
- reuseWorkers: true
73772
+ }
74060
73773
  };
74061
73774
  var WorkerFarm = class {
74062
73775
  constructor(props) {
@@ -74077,6 +73790,7 @@ var WorkerFarm = class {
74077
73790
  for (const workerPool of this.workerPools.values()) {
74078
73791
  workerPool.destroy();
74079
73792
  }
73793
+ this.workerPools = new Map();
74080
73794
  }
74081
73795
  setProps(props) {
74082
73796
  this.props = { ...this.props, ...props };
@@ -74108,8 +73822,34 @@ var WorkerFarm = class {
74108
73822
  }
74109
73823
  };
74110
73824
 
73825
+ // ../worker-utils/src/lib/worker-utils/remove-nontransferable-options.ts
73826
+ function removeNontransferableOptions(object) {
73827
+ return JSON.parse(stringifyJSON(object));
73828
+ }
73829
+ function stringifyJSON(v) {
73830
+ const cache = new Set();
73831
+ return JSON.stringify(v, (key, value) => {
73832
+ if (typeof value === "object" && value !== null) {
73833
+ if (cache.has(value)) {
73834
+ try {
73835
+ return JSON.parse(JSON.stringify(value));
73836
+ } catch (err) {
73837
+ return void 0;
73838
+ }
73839
+ }
73840
+ cache.add(value);
73841
+ }
73842
+ return value;
73843
+ });
73844
+ }
73845
+
74111
73846
  // ../worker-utils/src/lib/worker-api/get-worker-url.ts
74112
- var NPM_TAG = "latest";
73847
+ var NPM_TAG = "beta";
73848
+ var VERSION2 = typeof VERSION !== "undefined" ? VERSION : NPM_TAG;
73849
+ function getWorkerName(worker) {
73850
+ const warning = worker.version !== VERSION2 ? ` (worker-utils@${VERSION2})` : "";
73851
+ return `${worker.name}@${worker.version}${warning}`;
73852
+ }
74113
73853
  function getWorkerURL(worker, options = {}) {
74114
73854
  const workerOptions = options[worker.id] || {};
74115
73855
  const workerFile = `${worker.id}-worker.js`;
@@ -74132,6 +73872,50 @@ function getWorkerURL(worker, options = {}) {
74132
73872
  return url;
74133
73873
  }
74134
73874
 
73875
+ // ../worker-utils/src/lib/worker-api/process-on-worker.ts
73876
+ async function processOnWorker(worker, data, options = {}, context = {}) {
73877
+ const name8 = getWorkerName(worker);
73878
+ const workerFarm = WorkerFarm.getWorkerFarm(options);
73879
+ const { source } = options;
73880
+ const workerPoolProps = { name: name8, source };
73881
+ if (!source) {
73882
+ workerPoolProps.url = getWorkerURL(worker, options);
73883
+ }
73884
+ const workerPool = workerFarm.getWorkerPool(workerPoolProps);
73885
+ const jobName = options.jobName || worker.name;
73886
+ const job = await workerPool.startJob(jobName, onMessage.bind(null, context));
73887
+ const transferableOptions = removeNontransferableOptions(options);
73888
+ job.postMessage("process", { input: data, options: transferableOptions });
73889
+ const result = await job.result;
73890
+ return result.result;
73891
+ }
73892
+ async function onMessage(context, job, type, payload) {
73893
+ switch (type) {
73894
+ case "done":
73895
+ job.done(payload);
73896
+ break;
73897
+ case "error":
73898
+ job.error(new Error(payload.error));
73899
+ break;
73900
+ case "process":
73901
+ const { id, input, options } = payload;
73902
+ try {
73903
+ if (!context.process) {
73904
+ job.postMessage("error", { id, error: "Worker not set up to process on main thread" });
73905
+ return;
73906
+ }
73907
+ const result = await context.process(input, options);
73908
+ job.postMessage("done", { id, result });
73909
+ } catch (error) {
73910
+ const message = error instanceof Error ? error.message : "unknown error";
73911
+ job.postMessage("error", { id, error: message });
73912
+ }
73913
+ break;
73914
+ default:
73915
+ console.warn(`process-on-worker: unknown message ${type}`);
73916
+ }
73917
+ }
73918
+
74135
73919
  // ../worker-utils/src/lib/worker-api/validate-worker-version.ts
74136
73920
  function validateWorkerVersion(worker, coreVersion = VERSION) {
74137
73921
  assert3(worker, "no worker provided");
@@ -74182,8 +73966,8 @@ function requireFromString(code, filename2 = "", options) {
74182
73966
  }
74183
73967
 
74184
73968
  // ../worker-utils/src/lib/library-utils/library-utils.ts
74185
- var LATEST = "latest";
74186
- var VERSION2 = typeof VERSION !== "undefined" ? VERSION : LATEST;
73969
+ var LATEST = "beta";
73970
+ var VERSION3 = typeof VERSION !== "undefined" ? VERSION : LATEST;
74187
73971
  var loadLibraryPromises = {};
74188
73972
  async function loadLibrary(libraryUrl, moduleName = null, options = {}) {
74189
73973
  if (moduleName) {
@@ -74205,7 +73989,7 @@ function getLibraryUrl(library, moduleName, options) {
74205
73989
  }
74206
73990
  if (options.CDN) {
74207
73991
  assert3(options.CDN.startsWith("http"));
74208
- return `${options.CDN}/${moduleName}@${VERSION2}/dist/libs/${library}`;
73992
+ return `${options.CDN}/${moduleName}@${VERSION3}/dist/libs/${library}`;
74209
73993
  }
74210
73994
  if (isWorker) {
74211
73995
  return `../src/libs/${library}`;
@@ -74375,6 +74159,9 @@ function canParseWithWorker(loader, options) {
74375
74159
  if (!WorkerFarm.isSupported()) {
74376
74160
  return false;
74377
74161
  }
74162
+ if (!isBrowser2 && !options?._nodeWorkers) {
74163
+ return false;
74164
+ }
74378
74165
  return loader.worker && options?.worker;
74379
74166
  }
74380
74167
  async function parseWithWorker(loader, data, options, context, parseOnMainThread) {
@@ -74383,7 +74170,7 @@ async function parseWithWorker(loader, data, options, context, parseOnMainThread
74383
74170
  const workerFarm = WorkerFarm.getWorkerFarm(options);
74384
74171
  const workerPool = workerFarm.getWorkerPool({ name: name8, url });
74385
74172
  options = JSON.parse(JSON.stringify(options));
74386
- const job = await workerPool.startJob("process-on-worker", onMessage.bind(null, parseOnMainThread));
74173
+ const job = await workerPool.startJob("process-on-worker", onMessage2.bind(null, parseOnMainThread));
74387
74174
  job.postMessage("process", {
74388
74175
  input: data,
74389
74176
  options
@@ -74391,7 +74178,7 @@ async function parseWithWorker(loader, data, options, context, parseOnMainThread
74391
74178
  const result = await job.result;
74392
74179
  return await result.result;
74393
74180
  }
74394
- async function onMessage(parseOnMainThread, job, type, payload) {
74181
+ async function onMessage2(parseOnMainThread, job, type, payload) {
74395
74182
  switch (type) {
74396
74183
  case "done":
74397
74184
  job.done(payload);
@@ -74414,6 +74201,17 @@ async function onMessage(parseOnMainThread, job, type, payload) {
74414
74201
  }
74415
74202
  }
74416
74203
 
74204
+ // ../loader-utils/src/lib/worker-loader-utils/encode-with-worker.ts
74205
+ function canEncodeWithWorker(writer, options) {
74206
+ if (!WorkerFarm.isSupported()) {
74207
+ return false;
74208
+ }
74209
+ if (!isBrowser && !options?._nodeWorkers) {
74210
+ return false;
74211
+ }
74212
+ return writer.worker && options?.worker;
74213
+ }
74214
+
74417
74215
  // ../loader-utils/src/lib/binary-utils/get-first-characters.ts
74418
74216
  function getFirstCharacters(data, length = 5) {
74419
74217
  if (typeof data === "string") {
@@ -74954,7 +74752,7 @@ async function getResponseError(response) {
74954
74752
  text += ` ${await response.text()}`;
74955
74753
  }
74956
74754
  message += text;
74957
- message = message.length > 60 ? `${message.slice(60)}...` : message;
74755
+ message = message.length > 60 ? `${message.slice(0, 60)}...` : message;
74958
74756
  } catch (error) {
74959
74757
  }
74960
74758
  return message;
@@ -75059,7 +74857,8 @@ var DEFAULT_LOADER_OPTIONS = {
75059
74857
  worker: true,
75060
74858
  maxConcurrency: 3,
75061
74859
  maxMobileConcurrency: 1,
75062
- reuseWorkers: true,
74860
+ reuseWorkers: isBrowser,
74861
+ _nodeWorkers: false,
75063
74862
  _workerType: "",
75064
74863
  limit: 0,
75065
74864
  _limitMB: 0,
@@ -75657,6 +75456,11 @@ async function load(url, loaders, options, context) {
75657
75456
 
75658
75457
  // ../core/src/lib/api/encode.ts
75659
75458
  async function encode(data, writer, options) {
75459
+ const globalOptions = getGlobalLoaderOptions();
75460
+ options = { ...globalOptions, ...options };
75461
+ if (canEncodeWithWorker(writer, options)) {
75462
+ return await processOnWorker(writer, data, options);
75463
+ }
75660
75464
  if (writer.encode) {
75661
75465
  return await writer.encode(data, options);
75662
75466
  }
@@ -75716,8 +75520,8 @@ function getTemporaryFilename(filename2) {
75716
75520
 
75717
75521
  // ../tiles/src/tileset/tileset-3d.ts
75718
75522
  var import_core10 = __toModule(require_es56());
75719
- var import_geospatial5 = __toModule(require_es57());
75720
- var import_stats2 = __toModule(require_es58());
75523
+ var import_geospatial6 = __toModule(require_es57());
75524
+ var import_stats2 = __toModule(require_es5());
75721
75525
 
75722
75526
  // ../tiles/src/utils/doubly-linked-list-node.ts
75723
75527
  var DoublyLinkedListNode = class {
@@ -75895,7 +75699,7 @@ function calculateTransformProps(tileHeader, tile) {
75895
75699
 
75896
75700
  // ../tiles/src/tileset/helpers/frame-state.ts
75897
75701
  var import_core2 = __toModule(require_es56());
75898
- var import_culling = __toModule(require_es59());
75702
+ var import_culling = __toModule(require_es58());
75899
75703
  var import_geospatial2 = __toModule(require_es57());
75900
75704
  var scratchVector = new import_core2.Vector3();
75901
75705
  var scratchPosition = new import_core2.Vector3();
@@ -75914,23 +75718,59 @@ function getFrameState(viewport, frameNumber) {
75914
75718
  const viewportCenterCartesian = import_geospatial2.Ellipsoid.WGS84.cartographicToCartesian(viewportCenterCartographic, new import_core2.Vector3());
75915
75719
  const enuToFixedTransform = import_geospatial2.Ellipsoid.WGS84.eastNorthUpToFixedFrame(viewportCenterCartesian);
75916
75720
  const cameraPositionCartographic = viewport.unprojectPosition(viewport.cameraPosition);
75917
- const cameraPositionCartesian = import_geospatial2.Ellipsoid.WGS84.cartographicToCartesian(cameraPositionCartographic, new import_core2.Vector3());
75721
+ const cameraPositionCartesian2 = import_geospatial2.Ellipsoid.WGS84.cartographicToCartesian(cameraPositionCartographic, new import_core2.Vector3());
75918
75722
  const cameraDirectionCartesian = new import_core2.Vector3(enuToFixedTransform.transformAsVector(new import_core2.Vector3(cameraDirection).scale(metersPerUnit))).normalize();
75919
75723
  const cameraUpCartesian = new import_core2.Vector3(enuToFixedTransform.transformAsVector(new import_core2.Vector3(cameraUp).scale(metersPerUnit))).normalize();
75920
75724
  commonSpacePlanesToWGS84(viewport, viewportCenterCartesian);
75725
+ const ViewportClass = viewport.constructor;
75726
+ const { longitude, latitude, width, bearing, zoom } = viewport;
75727
+ const topDownViewport = new ViewportClass({
75728
+ longitude,
75729
+ latitude,
75730
+ height,
75731
+ width,
75732
+ bearing,
75733
+ zoom,
75734
+ pitch: 0
75735
+ });
75921
75736
  return {
75922
75737
  camera: {
75923
- position: cameraPositionCartesian,
75738
+ position: cameraPositionCartesian2,
75924
75739
  direction: cameraDirectionCartesian,
75925
75740
  up: cameraUpCartesian
75926
75741
  },
75927
75742
  viewport,
75743
+ topDownViewport,
75928
75744
  height,
75929
75745
  cullingVolume,
75930
75746
  frameNumber,
75931
75747
  sseDenominator: 1.15
75932
75748
  };
75933
75749
  }
75750
+ function limitSelectedTiles(tiles, frameState, maximumTilesSelected) {
75751
+ if (maximumTilesSelected === 0 || tiles.length <= maximumTilesSelected) {
75752
+ return [tiles, []];
75753
+ }
75754
+ const tuples = [];
75755
+ const { longitude: viewportLongitude, latitude: viewportLatitude } = frameState.viewport;
75756
+ for (const [index, tile] of tiles.entries()) {
75757
+ const [longitude, latitude] = tile.header.mbs;
75758
+ const deltaLon = Math.abs(viewportLongitude - longitude);
75759
+ const deltaLat = Math.abs(viewportLatitude - latitude);
75760
+ const distance = Math.sqrt(deltaLat * deltaLat + deltaLon * deltaLon);
75761
+ tuples.push([index, distance]);
75762
+ }
75763
+ const tuplesSorted = tuples.sort((a, b) => a[1] - b[1]);
75764
+ const selectedTiles = [];
75765
+ for (let i = 0; i < maximumTilesSelected; i++) {
75766
+ selectedTiles.push(tiles[tuplesSorted[i][0]]);
75767
+ }
75768
+ const unselectedTiles = [];
75769
+ for (let i = maximumTilesSelected; i < tuplesSorted.length; i++) {
75770
+ unselectedTiles.push(tiles[tuplesSorted[i][0]]);
75771
+ }
75772
+ return [selectedTiles, unselectedTiles];
75773
+ }
75934
75774
  function commonSpacePlanesToWGS84(viewport, viewportCenterCartesian) {
75935
75775
  const frustumPlanes = viewport.getFrustumPlanes();
75936
75776
  let i = 0;
@@ -75946,7 +75786,8 @@ function commonSpacePlanesToWGS84(viewport, viewportCenterCartesian) {
75946
75786
 
75947
75787
  // ../tiles/src/tileset/helpers/zoom.ts
75948
75788
  var import_core3 = __toModule(require_es56());
75949
- var import_culling2 = __toModule(require_es59());
75789
+ var import_culling2 = __toModule(require_es58());
75790
+ var import_geospatial3 = __toModule(require_es57());
75950
75791
  var WGS84_RADIUS_X = 6378137;
75951
75792
  var WGS84_RADIUS_Y = 6378137;
75952
75793
  var WGS84_RADIUS_Z = 6356752314245179e-9;
@@ -75967,6 +75808,15 @@ function getZoomFromBoundingVolume(boundingVolume, cartorgraphicCenter) {
75967
75808
  }
75968
75809
  return 1;
75969
75810
  }
75811
+ function getZoomFromFullExtent(fullExtent, cartorgraphicCenter, cartesianCenter) {
75812
+ const extentVertex = import_geospatial3.Ellipsoid.WGS84.cartographicToCartesian([fullExtent.xmax, fullExtent.ymax, fullExtent.zmax], new import_core3.Vector3());
75813
+ const extentSize = Math.sqrt(Math.pow(extentVertex[0] - cartesianCenter[0], 2) + Math.pow(extentVertex[1] - cartesianCenter[1], 2) + Math.pow(extentVertex[2] - cartesianCenter[2], 2));
75814
+ return Math.log2(WGS84_RADIUS_Z / (extentSize + cartorgraphicCenter[2]));
75815
+ }
75816
+ function getZoomFromExtent(extent, cartorgraphicCenter, cartesianCenter) {
75817
+ const [xmin, ymin, xmax, ymax] = extent;
75818
+ return getZoomFromFullExtent({ xmin, xmax, ymin, ymax, zmin: 0, zmax: 0 }, cartorgraphicCenter, cartesianCenter);
75819
+ }
75970
75820
  function getObbSize(halfAxes) {
75971
75821
  halfAxes.getColumn(0, scratchVector2);
75972
75822
  const axeY = halfAxes.getColumn(1);
@@ -75978,7 +75828,7 @@ function getObbSize(halfAxes) {
75978
75828
 
75979
75829
  // ../tiles/src/tileset/tile-3d.ts
75980
75830
  var import_core7 = __toModule(require_es56());
75981
- var import_culling4 = __toModule(require_es59());
75831
+ var import_culling4 = __toModule(require_es58());
75982
75832
 
75983
75833
  // ../tiles/src/constants.ts
75984
75834
  var TILE_CONTENT_STATE = {
@@ -76015,8 +75865,8 @@ var TILE3D_OPTIMIZATION_HINT = {
76015
75865
 
76016
75866
  // ../tiles/src/tileset/helpers/bounding-volume.ts
76017
75867
  var import_core4 = __toModule(require_es56());
76018
- var import_culling3 = __toModule(require_es59());
76019
- var import_geospatial3 = __toModule(require_es57());
75868
+ var import_culling3 = __toModule(require_es58());
75869
+ var import_geospatial4 = __toModule(require_es57());
76020
75870
  function defined2(x) {
76021
75871
  return x !== void 0 && x !== null;
76022
75872
  }
@@ -76030,8 +75880,8 @@ function createBoundingVolume(boundingVolumeHeader, transform9, result) {
76030
75880
  }
76031
75881
  if (boundingVolumeHeader.region) {
76032
75882
  const [west, south, east, north, minHeight, maxHeight] = boundingVolumeHeader.region;
76033
- const northWest = import_geospatial3.Ellipsoid.WGS84.cartographicToCartesian([(0, import_core4.degrees)(west), (0, import_core4.degrees)(north), minHeight], scratchNorthWest);
76034
- const southEast = import_geospatial3.Ellipsoid.WGS84.cartographicToCartesian([(0, import_core4.degrees)(east), (0, import_core4.degrees)(south), maxHeight], scratchSouthEast);
75883
+ const northWest = import_geospatial4.Ellipsoid.WGS84.cartographicToCartesian([(0, import_core4.degrees)(west), (0, import_core4.degrees)(north), minHeight], scratchNorthWest);
75884
+ const southEast = import_geospatial4.Ellipsoid.WGS84.cartographicToCartesian([(0, import_core4.degrees)(east), (0, import_core4.degrees)(south), maxHeight], scratchSouthEast);
76035
75885
  const centerInCartesian = new import_core4.Vector3().addVectors(northWest, southEast).multiplyScalar(0.5);
76036
75886
  const radius = new import_core4.Vector3().subVectors(northWest, southEast).len() / 2;
76037
75887
  return createSphere([centerInCartesian[0], centerInCartesian[1], centerInCartesian[2], radius], new import_core4.Matrix4());
@@ -76135,7 +75985,14 @@ function getTiles3DScreenSpaceError(tile, frameState, useParentLodMetric) {
76135
75985
 
76136
75986
  // ../tiles/src/tileset/helpers/i3s-lod.ts
76137
75987
  var import_core6 = __toModule(require_es56());
76138
- var import_geospatial4 = __toModule(require_es57());
75988
+ var import_geospatial5 = __toModule(require_es57());
75989
+ var cameraPositionCartesian = new import_core6.Vector3();
75990
+ var toEye = new import_core6.Vector3();
75991
+ var cameraPositionEnu = new import_core6.Vector3();
75992
+ var extraVertexEnu = new import_core6.Vector3();
75993
+ var projectedOriginVector = new import_core6.Vector3();
75994
+ var enuToCartesianMatrix = new import_core6.Matrix4();
75995
+ var cartesianToEnuMatrix = new import_core6.Matrix4();
76139
75996
  function getLodStatus(tile, frameState) {
76140
75997
  if (tile.lodMetricValue === 0 || isNaN(tile.lodMetricValue)) {
76141
75998
  return "DIG";
@@ -76152,33 +76009,29 @@ function getLodStatus(tile, frameState) {
76152
76009
  return "OUT";
76153
76010
  }
76154
76011
  function getProjectedRadius(tile, frameState) {
76155
- const originalViewport = frameState.viewport;
76156
- const ViewportClass = originalViewport.constructor;
76157
- const { longitude, latitude, height, width, bearing, zoom } = originalViewport;
76158
- const viewport = new ViewportClass({ longitude, latitude, height, width, bearing, zoom, pitch: 0 });
76012
+ const { topDownViewport: viewport } = frameState;
76159
76013
  const mbsLat = tile.header.mbs[1];
76160
76014
  const mbsLon = tile.header.mbs[0];
76161
76015
  const mbsZ = tile.header.mbs[2];
76162
76016
  const mbsR = tile.header.mbs[3];
76163
76017
  const mbsCenterCartesian = [...tile.boundingVolume.center];
76164
76018
  const cameraPositionCartographic = viewport.unprojectPosition(viewport.cameraPosition);
76165
- const cameraPositionCartesian = import_geospatial4.Ellipsoid.WGS84.cartographicToCartesian(cameraPositionCartographic, new import_core6.Vector3());
76166
- const toEye = new import_core6.Vector3(cameraPositionCartesian).subtract(mbsCenterCartesian).normalize();
76167
- const enuToCartesianMatrix = new import_core6.Matrix4();
76168
- import_geospatial4.Ellipsoid.WGS84.eastNorthUpToFixedFrame(mbsCenterCartesian, enuToCartesianMatrix);
76169
- const cartesianToEnuMatrix = new import_core6.Matrix4(enuToCartesianMatrix).invert();
76170
- const cameraPositionEnu = new import_core6.Vector3(cameraPositionCartesian).transform(cartesianToEnuMatrix);
76019
+ import_geospatial5.Ellipsoid.WGS84.cartographicToCartesian(cameraPositionCartographic, cameraPositionCartesian);
76020
+ toEye.copy(cameraPositionCartesian).subtract(mbsCenterCartesian).normalize();
76021
+ import_geospatial5.Ellipsoid.WGS84.eastNorthUpToFixedFrame(mbsCenterCartesian, enuToCartesianMatrix);
76022
+ cartesianToEnuMatrix.copy(enuToCartesianMatrix).invert();
76023
+ cameraPositionEnu.copy(cameraPositionCartesian).transform(cartesianToEnuMatrix);
76171
76024
  const projection = Math.sqrt(cameraPositionEnu[0] * cameraPositionEnu[0] + cameraPositionEnu[1] * cameraPositionEnu[1]);
76172
76025
  const extraZ = projection * projection / cameraPositionEnu[2];
76173
- const extraVertexEnu = new import_core6.Vector3([cameraPositionEnu[0], cameraPositionEnu[1], extraZ]);
76026
+ extraVertexEnu.copy([cameraPositionEnu[0], cameraPositionEnu[1], extraZ]);
76174
76027
  const extraVertexCartesian = extraVertexEnu.transform(enuToCartesianMatrix);
76175
- const extraVectorCartesian = new import_core6.Vector3(extraVertexCartesian).subtract(mbsCenterCartesian).normalize();
76028
+ const extraVectorCartesian = extraVertexCartesian.subtract(mbsCenterCartesian).normalize();
76176
76029
  const radiusVector = toEye.cross(extraVectorCartesian).normalize().scale(mbsR);
76177
- const sphereMbsBorderVertexCartesian = new import_core6.Vector3(mbsCenterCartesian).add(radiusVector);
76178
- const sphereMbsBorderVertexCartographic = import_geospatial4.Ellipsoid.WGS84.cartesianToCartographic(sphereMbsBorderVertexCartesian);
76030
+ const sphereMbsBorderVertexCartesian = radiusVector.add(mbsCenterCartesian);
76031
+ const sphereMbsBorderVertexCartographic = import_geospatial5.Ellipsoid.WGS84.cartesianToCartographic(sphereMbsBorderVertexCartesian);
76179
76032
  const projectedOrigin = viewport.project([mbsLon, mbsLat, mbsZ]);
76180
76033
  const projectedMbsBorderVertex = viewport.project(sphereMbsBorderVertexCartographic);
76181
- const projectedRadius = new import_core6.Vector3(projectedOrigin).subtract(projectedMbsBorderVertex).magnitude();
76034
+ const projectedRadius = projectedOriginVector.copy(projectedOrigin).subtract(projectedMbsBorderVertex).magnitude();
76182
76035
  return projectedRadius;
76183
76036
  }
76184
76037
 
@@ -76285,6 +76138,8 @@ var DEFAULT_PROPS4 = {
76285
76138
  };
76286
76139
  var TilesetTraverser = class {
76287
76140
  constructor(options) {
76141
+ this.lastUpdate = new Date().getTime();
76142
+ this.updateDebounceTime = 1e3;
76288
76143
  this.options = { ...DEFAULT_PROPS4, ...options };
76289
76144
  this._traversalStack = new ManagedArray();
76290
76145
  this._emptyTraversalStack = new ManagedArray();
@@ -76294,6 +76149,9 @@ var TilesetTraverser = class {
76294
76149
  this.requestedTiles = {};
76295
76150
  this.emptyTiles = {};
76296
76151
  }
76152
+ get traversalFinished() {
76153
+ return true;
76154
+ }
76297
76155
  traverse(root, frameState, options) {
76298
76156
  this.root = root;
76299
76157
  this.options = { ...this.options, ...options };
@@ -76341,7 +76199,11 @@ var TilesetTraverser = class {
76341
76199
  this.touchTile(tile, frameState);
76342
76200
  tile._shouldRefine = shouldRefine && parentRefines;
76343
76201
  }
76344
- this.options.onTraversalEnd(frameState);
76202
+ const newTime = new Date().getTime();
76203
+ if (this.traversalFinished || newTime - this.lastUpdate > this.updateDebounceTime) {
76204
+ this.lastUpdate = newTime;
76205
+ this.options.onTraversalEnd(frameState);
76206
+ }
76345
76207
  }
76346
76208
  updateChildTiles(tile, frameState) {
76347
76209
  const children = tile.children;
@@ -76593,6 +76455,9 @@ var TileHeader = class {
76593
76455
  throw new Error("Unsupported tileset type");
76594
76456
  }
76595
76457
  }
76458
+ unselect() {
76459
+ this._selectedFrame = 0;
76460
+ }
76596
76461
  _getPriority() {
76597
76462
  const traverser = this.tileset._traverser;
76598
76463
  const { skipLevelOfDetail } = traverser.options;
@@ -76872,6 +76737,25 @@ var Tileset3DTraverser = class extends TilesetTraverser {
76872
76737
  }
76873
76738
  };
76874
76739
 
76740
+ // ../tiles/src/tileset/traversers/i3s-frame-counter.ts
76741
+ var I3SPendingTilesRegister = class {
76742
+ constructor() {
76743
+ this.frameNumberMap = new Map();
76744
+ }
76745
+ register(frameNumber) {
76746
+ const oldCount = this.frameNumberMap.get(frameNumber) || 0;
76747
+ this.frameNumberMap.set(frameNumber, (oldCount || 0) + 1);
76748
+ }
76749
+ deregister(frameNumber) {
76750
+ const oldCount = this.frameNumberMap.get(frameNumber) || 1;
76751
+ this.frameNumberMap.set(frameNumber, (oldCount || 0) - 1);
76752
+ }
76753
+ isZero(frameNumber) {
76754
+ const count = this.frameNumberMap.get(frameNumber) || 0;
76755
+ return count === 0;
76756
+ }
76757
+ };
76758
+
76875
76759
  // ../tiles/src/tileset/traversers/i3s-tile-manager.ts
76876
76760
  var STATUS = {
76877
76761
  REQUESTED: "REQUESTED",
@@ -76880,32 +76764,45 @@ var STATUS = {
76880
76764
  };
76881
76765
  var I3STileManager = class {
76882
76766
  constructor() {
76767
+ this.pendingTilesRegister = new I3SPendingTilesRegister();
76883
76768
  this._statusMap = {};
76884
76769
  }
76885
76770
  add(request, key, callback, frameState) {
76886
76771
  if (!this._statusMap[key]) {
76772
+ const { frameNumber } = frameState;
76887
76773
  this._statusMap[key] = { request, callback, key, frameState, status: STATUS.REQUESTED };
76774
+ this.pendingTilesRegister.register(frameNumber);
76888
76775
  request().then((data) => {
76889
76776
  this._statusMap[key].status = STATUS.COMPLETED;
76777
+ this.pendingTilesRegister.deregister(frameNumber);
76890
76778
  this._statusMap[key].callback(data, frameState);
76891
76779
  }).catch((error) => {
76892
76780
  this._statusMap[key].status = STATUS.ERROR;
76781
+ this.pendingTilesRegister.deregister(frameNumber);
76893
76782
  callback(error);
76894
76783
  });
76895
76784
  }
76896
76785
  }
76897
76786
  update(key, frameState) {
76898
76787
  if (this._statusMap[key]) {
76788
+ this.pendingTilesRegister.deregister(this._statusMap[key].frameState.frameNumber);
76789
+ this.pendingTilesRegister.register(frameState.frameNumber);
76899
76790
  this._statusMap[key].frameState = frameState;
76900
76791
  }
76901
76792
  }
76902
76793
  find(key) {
76903
76794
  return this._statusMap[key];
76904
76795
  }
76796
+ hasPendingTiles(frameNumber) {
76797
+ return !this.pendingTilesRegister.isZero(frameNumber);
76798
+ }
76905
76799
  };
76906
76800
 
76907
76801
  // ../tiles/src/tileset/traversers/i3s-tileset-traverser.ts
76908
76802
  var I3STilesetTraverser = class extends TilesetTraverser {
76803
+ get traversalFinished() {
76804
+ return !this._tileManager.hasPendingTiles(this._frameNumber || 0);
76805
+ }
76909
76806
  constructor(options) {
76910
76807
  super(options);
76911
76808
  this._tileManager = new I3STileManager();
@@ -76956,7 +76853,7 @@ var I3STilesetTraverser = class extends TilesetTraverser {
76956
76853
  tile.children.push(childTile);
76957
76854
  const frameState = this._tileManager.find(childTile.id).frameState;
76958
76855
  this.updateTile(childTile, frameState);
76959
- if (this._frameNumber === frameState.frameNumber) {
76856
+ if (this._frameNumber === frameState.frameNumber && (this.traversalFinished || new Date().getTime() - this.lastUpdate > this.updateDebounceTime)) {
76960
76857
  this.executeTraversal(childTile, frameState);
76961
76858
  }
76962
76859
  }
@@ -76965,11 +76862,13 @@ var I3STilesetTraverser = class extends TilesetTraverser {
76965
76862
  // ../tiles/src/tileset/tileset-3d.ts
76966
76863
  var DEFAULT_PROPS5 = {
76967
76864
  description: "",
76968
- ellipsoid: import_geospatial5.Ellipsoid.WGS84,
76865
+ ellipsoid: import_geospatial6.Ellipsoid.WGS84,
76969
76866
  modelMatrix: new import_core10.Matrix4(),
76970
76867
  throttleRequests: true,
76971
76868
  maxRequests: 64,
76972
76869
  maximumMemoryUsage: 32,
76870
+ maximumTilesSelected: 0,
76871
+ debounceTime: 0,
76973
76872
  onTileLoad: () => {
76974
76873
  },
76975
76874
  onTileUnload: () => {
@@ -77000,6 +76899,7 @@ var POINTS_COUNT = "Points";
77000
76899
  var TILES_GPU_MEMORY = "Tile Memory Use";
77001
76900
  var Tileset3D = class {
77002
76901
  constructor(json, options) {
76902
+ this.updatePromise = null;
77003
76903
  assert2(json);
77004
76904
  this.options = { ...DEFAULT_PROPS5, ...options };
77005
76905
  this.tileset = json;
@@ -77047,7 +76947,7 @@ var Tileset3D = class {
77047
76947
  this.asset = {};
77048
76948
  this.credits = {};
77049
76949
  this.description = this.options.description || "";
77050
- this._initializeTileSet(json);
76950
+ this.tilesetInitializationPromise = this._initializeTileSet(json);
77051
76951
  }
77052
76952
  destroy() {
77053
76953
  this._destroy();
@@ -77083,18 +76983,39 @@ var Tileset3D = class {
77083
76983
  hasExtension(extensionName) {
77084
76984
  return Boolean(this._extensionsUsed && this._extensionsUsed.indexOf(extensionName) > -1);
77085
76985
  }
77086
- update(viewports) {
76986
+ update(viewports = null) {
76987
+ this.tilesetInitializationPromise.then(() => {
76988
+ if (!viewports && this.lastUpdatedVieports) {
76989
+ viewports = this.lastUpdatedVieports;
76990
+ } else {
76991
+ this.lastUpdatedVieports = viewports;
76992
+ }
76993
+ this.doUpdate(viewports);
76994
+ });
76995
+ }
76996
+ async selectTiles(viewports = null) {
76997
+ await this.tilesetInitializationPromise;
76998
+ if (viewports) {
76999
+ this.lastUpdatedVieports = viewports;
77000
+ }
77001
+ if (!this.updatePromise) {
77002
+ this.updatePromise = new Promise((resolve) => {
77003
+ setTimeout(() => {
77004
+ this.doUpdate(this.lastUpdatedVieports);
77005
+ resolve(this._frameNumber);
77006
+ this.updatePromise = null;
77007
+ }, this.options.debounceTime);
77008
+ });
77009
+ }
77010
+ return this.updatePromise;
77011
+ }
77012
+ doUpdate(viewports = null) {
77087
77013
  if ("loadTiles" in this.options && !this.options.loadTiles) {
77088
77014
  return;
77089
77015
  }
77090
77016
  if (this.traverseCounter > 0) {
77091
77017
  return;
77092
77018
  }
77093
- if (!viewports && this.lastUpdatedVieports) {
77094
- viewports = this.lastUpdatedVieports;
77095
- } else {
77096
- this.lastUpdatedVieports = viewports;
77097
- }
77098
77019
  if (!(viewports instanceof Array)) {
77099
77020
  viewports = [viewports];
77100
77021
  }
@@ -77139,7 +77060,11 @@ var Tileset3D = class {
77139
77060
  }
77140
77061
  const currentFrameStateData = this.frameStateData[id];
77141
77062
  const selectedTiles = Object.values(this._traverser.selectedTiles);
77142
- currentFrameStateData.selectedTiles = selectedTiles;
77063
+ const [filteredSelectedTiles, unselectedTiles] = limitSelectedTiles(selectedTiles, frameState, this.options.maximumTilesSelected);
77064
+ currentFrameStateData.selectedTiles = filteredSelectedTiles;
77065
+ for (const tile of unselectedTiles) {
77066
+ tile.unselect();
77067
+ }
77143
77068
  currentFrameStateData._requestedTiles = Object.values(this._traverser.requestedTiles);
77144
77069
  currentFrameStateData._emptyTiles = Object.values(this._traverser.emptyTiles);
77145
77070
  this.traverseCounter--;
@@ -77201,17 +77126,43 @@ var Tileset3D = class {
77201
77126
  this.stats.get(TILES_RENDERABLE).count = tilesRenderable;
77202
77127
  this.stats.get(POINTS_COUNT).count = pointsRenderable;
77203
77128
  }
77204
- _initializeTileSet(tilesetJson) {
77129
+ async _initializeTileSet(tilesetJson) {
77130
+ if (this.type === TILESET_TYPE.I3S) {
77131
+ this.calculateViewPropsI3S();
77132
+ tilesetJson.root = await tilesetJson.root;
77133
+ }
77205
77134
  this.root = this._initializeTileHeaders(tilesetJson, null);
77206
77135
  if (this.type === TILESET_TYPE.TILES3D) {
77207
- this._initializeCesiumTileset(tilesetJson);
77136
+ this._initializeTiles3DTileset(tilesetJson);
77137
+ this.calculateViewPropsTiles3D();
77208
77138
  }
77209
77139
  if (this.type === TILESET_TYPE.I3S) {
77210
77140
  this._initializeI3STileset();
77211
77141
  }
77212
- this._calculateViewProps();
77213
77142
  }
77214
- _calculateViewProps() {
77143
+ calculateViewPropsI3S() {
77144
+ const fullExtent = this.tileset.fullExtent;
77145
+ if (fullExtent) {
77146
+ const { xmin, xmax, ymin, ymax, zmin, zmax } = fullExtent;
77147
+ this.cartographicCenter = new import_core10.Vector3(xmin + (xmax - xmin) / 2, ymin + (ymax - ymin) / 2, zmin + (zmax - zmin) / 2);
77148
+ this.cartesianCenter = import_geospatial6.Ellipsoid.WGS84.cartographicToCartesian(this.cartographicCenter, new import_core10.Vector3());
77149
+ this.zoom = getZoomFromFullExtent(fullExtent, this.cartographicCenter, this.cartesianCenter);
77150
+ return;
77151
+ }
77152
+ const extent = this.tileset.store?.extent;
77153
+ if (extent) {
77154
+ const [xmin, ymin, xmax, ymax] = extent;
77155
+ this.cartographicCenter = new import_core10.Vector3(xmin + (xmax - xmin) / 2, ymin + (ymax - ymin) / 2, 0);
77156
+ this.cartesianCenter = import_geospatial6.Ellipsoid.WGS84.cartographicToCartesian(this.cartographicCenter, new import_core10.Vector3());
77157
+ this.zoom = getZoomFromExtent(extent, this.cartographicCenter, this.cartesianCenter);
77158
+ return;
77159
+ }
77160
+ console.warn("Extent is not defined in the tileset header");
77161
+ this.cartographicCenter = new import_core10.Vector3();
77162
+ this.zoom = 1;
77163
+ return;
77164
+ }
77165
+ calculateViewPropsTiles3D() {
77215
77166
  const root = this.root;
77216
77167
  assert2(root);
77217
77168
  const { center } = root.boundingVolume;
@@ -77221,7 +77172,7 @@ var Tileset3D = class {
77221
77172
  this.zoom = 1;
77222
77173
  return;
77223
77174
  }
77224
- this.cartographicCenter = import_geospatial5.Ellipsoid.WGS84.cartesianToCartographic(center, new import_core10.Vector3());
77175
+ this.cartographicCenter = import_geospatial6.Ellipsoid.WGS84.cartesianToCartographic(center, new import_core10.Vector3());
77225
77176
  this.cartesianCenter = center;
77226
77177
  this.zoom = getZoomFromBoundingVolume(root.boundingVolume, this.cartographicCenter);
77227
77178
  }
@@ -77369,7 +77320,7 @@ var Tileset3D = class {
77369
77320
  this._unloadTile(tile);
77370
77321
  tile.destroy();
77371
77322
  }
77372
- _initializeCesiumTileset(tilesetJson) {
77323
+ _initializeTiles3DTileset(tilesetJson) {
77373
77324
  this.asset = tilesetJson.asset;
77374
77325
  if (!this.asset) {
77375
77326
  throw new Error("Tileset must have an asset property.");
@@ -77411,7 +77362,7 @@ function getQueryParamString(queryParams) {
77411
77362
  }
77412
77363
 
77413
77364
  // ../3d-tiles/src/lib/utils/version.ts
77414
- var VERSION3 = typeof __VERSION__ !== "undefined" ? __VERSION__ : "latest";
77365
+ var VERSION4 = typeof __VERSION__ !== "undefined" ? __VERSION__ : "latest";
77415
77366
 
77416
77367
  // ../3d-tiles/src/lib/constants.ts
77417
77368
  var TILE3D_TYPE = {
@@ -77445,7 +77396,7 @@ function getMagicString3(arrayBuffer, byteOffset = 0) {
77445
77396
  }
77446
77397
 
77447
77398
  // ../draco/src/lib/utils/version.ts
77448
- var VERSION4 = typeof __VERSION__ !== "undefined" ? __VERSION__ : "latest";
77399
+ var VERSION5 = typeof __VERSION__ !== "undefined" ? __VERSION__ : "latest";
77449
77400
 
77450
77401
  // ../draco/src/draco-loader.ts
77451
77402
  var DEFAULT_DRACO_OPTIONS = {
@@ -77461,7 +77412,7 @@ var DracoLoader = {
77461
77412
  id: "draco",
77462
77413
  module: "draco",
77463
77414
  shapes: ["mesh"],
77464
- version: VERSION4,
77415
+ version: VERSION5,
77465
77416
  worker: true,
77466
77417
  extensions: ["drc"],
77467
77418
  mimeTypes: ["application/octet-stream"],
@@ -78372,7 +78323,6 @@ var DRACO_WASM_WRAPPER_URL = `https://www.gstatic.com/draco/versioned/decoders/$
78372
78323
  var DRACO_WASM_DECODER_URL = `https://www.gstatic.com/draco/versioned/decoders/${DRACO_VERSION}/draco_decoder.wasm`;
78373
78324
  var DRACO_ENCODER_URL = `https://raw.githubusercontent.com/google/draco/${DRACO_VERSION}/javascript/draco_encoder.js`;
78374
78325
  var loadDecoderPromise;
78375
- var loadEncoderPromise;
78376
78326
  async function loadDracoDecoderModule(options) {
78377
78327
  const modules = options.modules || {};
78378
78328
  if (modules.draco3d) {
@@ -78384,17 +78334,6 @@ async function loadDracoDecoderModule(options) {
78384
78334
  }
78385
78335
  return await loadDecoderPromise;
78386
78336
  }
78387
- async function loadDracoEncoderModule(options) {
78388
- const modules = options.modules || {};
78389
- if (modules.draco3d) {
78390
- loadEncoderPromise = loadEncoderPromise || modules.draco3d.createEncoderModule({}).then((draco) => {
78391
- return { draco };
78392
- });
78393
- } else {
78394
- loadEncoderPromise = loadEncoderPromise || loadDracoEncoder(options);
78395
- }
78396
- return await loadEncoderPromise;
78397
- }
78398
78337
  async function loadDracoDecoder(options) {
78399
78338
  let DracoDecoderModule;
78400
78339
  let wasmBinary;
@@ -78424,303 +78363,19 @@ function initializeDracoDecoder(DracoDecoderModule, wasmBinary) {
78424
78363
  });
78425
78364
  });
78426
78365
  }
78427
- async function loadDracoEncoder(options) {
78428
- let DracoEncoderModule = await loadLibrary(DRACO_ENCODER_URL, "draco", options);
78429
- DracoEncoderModule = DracoEncoderModule || globalThis.DracoEncoderModule;
78430
- return new Promise((resolve) => {
78431
- DracoEncoderModule({
78432
- onModuleLoaded: (draco) => resolve({ draco })
78433
- });
78434
- });
78435
- }
78436
78366
 
78437
- // ../draco/src/lib/draco-builder.ts
78438
- var GLTF_TO_DRACO_ATTRIBUTE_NAME_MAP = {
78439
- POSITION: "POSITION",
78440
- NORMAL: "NORMAL",
78441
- COLOR_0: "COLOR",
78442
- TEXCOORD_0: "TEX_COORD"
78443
- };
78444
- var noop = () => {
78445
- };
78446
- var DracoBuilder = class {
78447
- constructor(draco) {
78448
- this.draco = draco;
78449
- this.dracoEncoder = new this.draco.Encoder();
78450
- this.dracoMeshBuilder = new this.draco.MeshBuilder();
78451
- this.dracoMetadataBuilder = new this.draco.MetadataBuilder();
78452
- }
78453
- destroy() {
78454
- this.destroyEncodedObject(this.dracoMeshBuilder);
78455
- this.destroyEncodedObject(this.dracoEncoder);
78456
- this.destroyEncodedObject(this.dracoMetadataBuilder);
78457
- this.dracoMeshBuilder = null;
78458
- this.dracoEncoder = null;
78459
- this.draco = null;
78460
- }
78461
- destroyEncodedObject(object) {
78462
- if (object) {
78463
- this.draco.destroy(object);
78464
- }
78465
- }
78466
- encodeSync(mesh, options = {}) {
78467
- this.log = noop;
78468
- this._setOptions(options);
78469
- return options.pointcloud ? this._encodePointCloud(mesh, options) : this._encodeMesh(mesh, options);
78470
- }
78471
- _getAttributesFromMesh(mesh) {
78472
- const attributes = { ...mesh, ...mesh.attributes };
78473
- if (mesh.indices) {
78474
- attributes.indices = mesh.indices;
78475
- }
78476
- return attributes;
78477
- }
78478
- _encodePointCloud(pointcloud, options) {
78479
- const dracoPointCloud = new this.draco.PointCloud();
78480
- if (options.metadata) {
78481
- this._addGeometryMetadata(dracoPointCloud, options.metadata);
78482
- }
78483
- const attributes = this._getAttributesFromMesh(pointcloud);
78484
- this._createDracoPointCloud(dracoPointCloud, attributes, options);
78485
- const dracoData = new this.draco.DracoInt8Array();
78486
- try {
78487
- const encodedLen = this.dracoEncoder.EncodePointCloudToDracoBuffer(dracoPointCloud, false, dracoData);
78488
- if (!(encodedLen > 0)) {
78489
- throw new Error("Draco encoding failed.");
78490
- }
78491
- this.log(`DRACO encoded ${dracoPointCloud.num_points()} points
78492
- with ${dracoPointCloud.num_attributes()} attributes into ${encodedLen} bytes`);
78493
- return dracoInt8ArrayToArrayBuffer(dracoData);
78494
- } finally {
78495
- this.destroyEncodedObject(dracoData);
78496
- this.destroyEncodedObject(dracoPointCloud);
78497
- }
78498
- }
78499
- _encodeMesh(mesh, options) {
78500
- const dracoMesh = new this.draco.Mesh();
78501
- if (options.metadata) {
78502
- this._addGeometryMetadata(dracoMesh, options.metadata);
78503
- }
78504
- const attributes = this._getAttributesFromMesh(mesh);
78505
- this._createDracoMesh(dracoMesh, attributes, options);
78506
- const dracoData = new this.draco.DracoInt8Array();
78507
- try {
78508
- const encodedLen = this.dracoEncoder.EncodeMeshToDracoBuffer(dracoMesh, dracoData);
78509
- if (encodedLen <= 0) {
78510
- throw new Error("Draco encoding failed.");
78511
- }
78512
- this.log(`DRACO encoded ${dracoMesh.num_points()} points
78513
- with ${dracoMesh.num_attributes()} attributes into ${encodedLen} bytes`);
78514
- return dracoInt8ArrayToArrayBuffer(dracoData);
78515
- } finally {
78516
- this.destroyEncodedObject(dracoData);
78517
- this.destroyEncodedObject(dracoMesh);
78518
- }
78519
- }
78520
- _setOptions(options) {
78521
- if ("speed" in options) {
78522
- this.dracoEncoder.SetSpeedOptions(...options.speed);
78523
- }
78524
- if ("method" in options) {
78525
- const dracoMethod = this.draco[options.method || "MESH_SEQUENTIAL_ENCODING"];
78526
- this.dracoEncoder.SetEncodingMethod(dracoMethod);
78527
- }
78528
- if ("quantization" in options) {
78529
- for (const attribute in options.quantization) {
78530
- const bits = options.quantization[attribute];
78531
- const dracoPosition = this.draco[attribute];
78532
- this.dracoEncoder.SetAttributeQuantization(dracoPosition, bits);
78533
- }
78534
- }
78535
- }
78536
- _createDracoMesh(dracoMesh, attributes, options) {
78537
- const optionalMetadata = options.attributesMetadata || {};
78538
- try {
78539
- const positions = this._getPositionAttribute(attributes);
78540
- if (!positions) {
78541
- throw new Error("positions");
78542
- }
78543
- const vertexCount = positions.length / 3;
78544
- for (let attributeName in attributes) {
78545
- const attribute = attributes[attributeName];
78546
- attributeName = GLTF_TO_DRACO_ATTRIBUTE_NAME_MAP[attributeName] || attributeName;
78547
- const uniqueId = this._addAttributeToMesh(dracoMesh, attributeName, attribute, vertexCount);
78548
- if (uniqueId !== -1) {
78549
- this._addAttributeMetadata(dracoMesh, uniqueId, {
78550
- name: attributeName,
78551
- ...optionalMetadata[attributeName] || {}
78552
- });
78553
- }
78554
- }
78555
- } catch (error) {
78556
- this.destroyEncodedObject(dracoMesh);
78557
- throw error;
78558
- }
78559
- return dracoMesh;
78560
- }
78561
- _createDracoPointCloud(dracoPointCloud, attributes, options) {
78562
- const optionalMetadata = options.attributesMetadata || {};
78563
- try {
78564
- const positions = this._getPositionAttribute(attributes);
78565
- if (!positions) {
78566
- throw new Error("positions");
78567
- }
78568
- const vertexCount = positions.length / 3;
78569
- for (let attributeName in attributes) {
78570
- const attribute = attributes[attributeName];
78571
- attributeName = GLTF_TO_DRACO_ATTRIBUTE_NAME_MAP[attributeName] || attributeName;
78572
- const uniqueId = this._addAttributeToMesh(dracoPointCloud, attributeName, attribute, vertexCount);
78573
- if (uniqueId !== -1) {
78574
- this._addAttributeMetadata(dracoPointCloud, uniqueId, {
78575
- name: attributeName,
78576
- ...optionalMetadata[attributeName] || {}
78577
- });
78578
- }
78579
- }
78580
- } catch (error) {
78581
- this.destroyEncodedObject(dracoPointCloud);
78582
- throw error;
78583
- }
78584
- return dracoPointCloud;
78585
- }
78586
- _addAttributeToMesh(mesh, attributeName, attribute, vertexCount) {
78587
- if (!ArrayBuffer.isView(attribute)) {
78588
- return -1;
78589
- }
78590
- const type = this._getDracoAttributeType(attributeName);
78591
- const size = attribute.length / vertexCount;
78592
- if (type === "indices") {
78593
- const numFaces = attribute.length / 3;
78594
- this.log(`Adding attribute ${attributeName}, size ${numFaces}`);
78595
- this.dracoMeshBuilder.AddFacesToMesh(mesh, numFaces, attribute);
78596
- return -1;
78597
- }
78598
- this.log(`Adding attribute ${attributeName}, size ${size}`);
78599
- const builder = this.dracoMeshBuilder;
78600
- const { buffer } = attribute;
78601
- switch (attribute.constructor) {
78602
- case Int8Array:
78603
- return builder.AddInt8Attribute(mesh, type, vertexCount, size, new Int8Array(buffer));
78604
- case Int16Array:
78605
- return builder.AddInt16Attribute(mesh, type, vertexCount, size, new Int16Array(buffer));
78606
- case Int32Array:
78607
- return builder.AddInt32Attribute(mesh, type, vertexCount, size, new Int32Array(buffer));
78608
- case Uint8Array:
78609
- case Uint8ClampedArray:
78610
- return builder.AddUInt8Attribute(mesh, type, vertexCount, size, new Uint8Array(buffer));
78611
- case Uint16Array:
78612
- return builder.AddUInt16Attribute(mesh, type, vertexCount, size, new Uint16Array(buffer));
78613
- case Uint32Array:
78614
- return builder.AddUInt32Attribute(mesh, type, vertexCount, size, new Uint32Array(buffer));
78615
- case Float32Array:
78616
- default:
78617
- return builder.AddFloatAttribute(mesh, type, vertexCount, size, new Float32Array(buffer));
78618
- }
78619
- }
78620
- _getDracoAttributeType(attributeName) {
78621
- switch (attributeName.toLowerCase()) {
78622
- case "indices":
78623
- return "indices";
78624
- case "position":
78625
- case "positions":
78626
- case "vertices":
78627
- return this.draco.POSITION;
78628
- case "normal":
78629
- case "normals":
78630
- return this.draco.NORMAL;
78631
- case "color":
78632
- case "colors":
78633
- return this.draco.COLOR;
78634
- case "texcoord":
78635
- case "texcoords":
78636
- return this.draco.TEX_COORD;
78637
- default:
78638
- return this.draco.GENERIC;
78639
- }
78640
- }
78641
- _getPositionAttribute(attributes) {
78642
- for (const attributeName in attributes) {
78643
- const attribute = attributes[attributeName];
78644
- const dracoType = this._getDracoAttributeType(attributeName);
78645
- if (dracoType === this.draco.POSITION) {
78646
- return attribute;
78647
- }
78648
- }
78649
- return null;
78650
- }
78651
- _addGeometryMetadata(dracoGeometry, metadata) {
78652
- const dracoMetadata = new this.draco.Metadata();
78653
- this._populateDracoMetadata(dracoMetadata, metadata);
78654
- this.dracoMeshBuilder.AddMetadata(dracoGeometry, dracoMetadata);
78655
- }
78656
- _addAttributeMetadata(dracoGeometry, uniqueAttributeId, metadata) {
78657
- const dracoAttributeMetadata = new this.draco.Metadata();
78658
- this._populateDracoMetadata(dracoAttributeMetadata, metadata);
78659
- this.dracoMeshBuilder.SetMetadataForAttribute(dracoGeometry, uniqueAttributeId, dracoAttributeMetadata);
78660
- }
78661
- _populateDracoMetadata(dracoMetadata, metadata) {
78662
- for (const [key, value] of getEntries(metadata)) {
78663
- switch (typeof value) {
78664
- case "number":
78665
- if (Math.trunc(value) === value) {
78666
- this.dracoMetadataBuilder.AddIntEntry(dracoMetadata, key, value);
78667
- } else {
78668
- this.dracoMetadataBuilder.AddDoubleEntry(dracoMetadata, key, value);
78669
- }
78670
- break;
78671
- case "object":
78672
- if (value instanceof Int32Array) {
78673
- this.dracoMetadataBuilder.AddIntEntryArray(dracoMetadata, key, value, value.length);
78674
- }
78675
- break;
78676
- case "string":
78677
- default:
78678
- this.dracoMetadataBuilder.AddStringEntry(dracoMetadata, key, value);
78679
- }
78680
- }
78681
- }
78682
- };
78683
- function dracoInt8ArrayToArrayBuffer(dracoData) {
78684
- const byteLength = dracoData.size();
78685
- const outputBuffer = new ArrayBuffer(byteLength);
78686
- const outputData = new Int8Array(outputBuffer);
78687
- for (let i = 0; i < byteLength; ++i) {
78688
- outputData[i] = dracoData.GetValue(i);
78689
- }
78690
- return outputBuffer;
78691
- }
78692
- function getEntries(container) {
78693
- const hasEntriesFunc = container.entries && !container.hasOwnProperty("entries");
78694
- return hasEntriesFunc ? container.entries() : Object.entries(container);
78695
- }
78696
-
78697
- // ../draco/src/draco-writer.ts
78698
- var DEFAULT_DRACO_OPTIONS2 = {
78699
- pointcloud: false,
78700
- attributeNameEntry: "name"
78701
- };
78702
- var DracoWriter = {
78703
- name: "DRACO",
78704
- id: "draco",
78367
+ // ../draco/src/index.ts
78368
+ var DracoWriterWorker = {
78369
+ id: isBrowser2 ? "draco-writer" : "draco-writer-nodejs",
78370
+ name: "Draco compressed geometry writer",
78705
78371
  module: "draco",
78706
- version: VERSION4,
78707
- extensions: ["drc"],
78708
- encode: encode2,
78372
+ version: VERSION5,
78373
+ worker: true,
78709
78374
  options: {
78710
- draco: DEFAULT_DRACO_OPTIONS2
78375
+ draco: {},
78376
+ source: null
78711
78377
  }
78712
78378
  };
78713
- async function encode2(data, options = {}) {
78714
- const { draco } = await loadDracoEncoderModule(options);
78715
- const dracoBuilder = new DracoBuilder(draco);
78716
- try {
78717
- return dracoBuilder.encodeSync(data, options.draco);
78718
- } finally {
78719
- dracoBuilder.destroy();
78720
- }
78721
- }
78722
-
78723
- // ../draco/src/index.ts
78724
78379
  var DracoLoader2 = {
78725
78380
  ...DracoLoader,
78726
78381
  parse: parse2
@@ -79849,15 +79504,15 @@ async function loadDraco(tile, dracoData, options, context) {
79849
79504
  }
79850
79505
 
79851
79506
  // ../gltf/src/lib/utils/version.ts
79852
- var VERSION5 = typeof __VERSION__ !== "undefined" ? __VERSION__ : "latest";
79507
+ var VERSION6 = typeof __VERSION__ !== "undefined" ? __VERSION__ : "latest";
79853
79508
 
79854
79509
  // ../textures/src/lib/utils/version.ts
79855
- var VERSION6 = typeof __VERSION__ !== "undefined" ? __VERSION__ : "latest";
79510
+ var VERSION7 = typeof __VERSION__ !== "undefined" ? __VERSION__ : "beta";
79856
79511
 
79857
79512
  // ../textures/src/lib/parsers/basis-module-loader.ts
79858
- var VERSION7 = typeof __VERSION__ !== "undefined" ? __VERSION__ : "latest";
79859
- var BASIS_CDN_ENCODER_WASM = `https://unpkg.com/@loaders.gl/textures@${VERSION7}/dist/libs/basis_encoder.wasm`;
79860
- var BASIS_CDN_ENCODER_JS = `https://unpkg.com/@loaders.gl/textures@${VERSION7}/dist/libs/basis_encoder.js`;
79513
+ var VERSION8 = typeof __VERSION__ !== "undefined" ? __VERSION__ : "beta";
79514
+ var BASIS_CDN_ENCODER_WASM = `https://unpkg.com/@loaders.gl/textures@${VERSION8}/dist/libs/basis_encoder.wasm`;
79515
+ var BASIS_CDN_ENCODER_JS = `https://unpkg.com/@loaders.gl/textures@${VERSION8}/dist/libs/basis_encoder.js`;
79861
79516
  var loadBasisTranscoderPromise;
79862
79517
  async function loadBasisTrascoderModule(options) {
79863
79518
  const modules = options.modules || {};
@@ -80243,7 +79898,7 @@ function parseBasisFile(BasisFile, data, options) {
80243
79898
  const basisFile = new BasisFile(new Uint8Array(data));
80244
79899
  try {
80245
79900
  if (!basisFile.startTranscoding()) {
80246
- return null;
79901
+ throw new Error("Failed to start basis transcoding");
80247
79902
  }
80248
79903
  const imageCount = basisFile.getNumImages();
80249
79904
  const images = [];
@@ -80269,22 +79924,22 @@ function transcodeImage(basisFile, imageIndex, levelIndex, options) {
80269
79924
  const decodedSize = basisFile.getImageTranscodedSizeInBytes(imageIndex, levelIndex, basisFormat);
80270
79925
  const decodedData = new Uint8Array(decodedSize);
80271
79926
  if (!basisFile.transcodeImage(decodedData, imageIndex, levelIndex, basisFormat, 0, 0)) {
80272
- return null;
79927
+ throw new Error("failed to start Basis transcoding");
80273
79928
  }
80274
79929
  return {
80275
79930
  width,
80276
79931
  height,
80277
79932
  data: decodedData,
80278
79933
  compressed,
80279
- hasAlpha,
80280
- format
79934
+ format,
79935
+ hasAlpha
80281
79936
  };
80282
79937
  }
80283
79938
  function parseKTX2File(KTX2File, data, options) {
80284
79939
  const ktx2File = new KTX2File(new Uint8Array(data));
80285
79940
  try {
80286
79941
  if (!ktx2File.startTranscoding()) {
80287
- return null;
79942
+ throw new Error("failed to start KTX2 transcoding");
80288
79943
  }
80289
79944
  const levelsCount = ktx2File.getLevels();
80290
79945
  const levels = [];
@@ -80292,7 +79947,7 @@ function parseKTX2File(KTX2File, data, options) {
80292
79947
  levels.push(transcodeKTX2Image(ktx2File, levelIndex, options));
80293
79948
  break;
80294
79949
  }
80295
- return levels;
79950
+ return [levels];
80296
79951
  } finally {
80297
79952
  ktx2File.close();
80298
79953
  ktx2File.delete();
@@ -80304,14 +79959,14 @@ function transcodeKTX2Image(ktx2File, levelIndex, options) {
80304
79959
  const decodedSize = ktx2File.getImageTranscodedSizeInBytes(levelIndex, 0, 0, basisFormat);
80305
79960
  const decodedData = new Uint8Array(decodedSize);
80306
79961
  if (!ktx2File.transcodeImage(decodedData, levelIndex, 0, 0, basisFormat, 0, -1, -1)) {
80307
- return null;
79962
+ throw new Error("Failed to transcode KTX2 image");
80308
79963
  }
80309
79964
  return {
80310
79965
  width,
80311
79966
  height,
80312
79967
  data: decodedData,
80313
79968
  compressed,
80314
- alphaFlag,
79969
+ hasAlpha: alphaFlag,
80315
79970
  format
80316
79971
  };
80317
79972
  }
@@ -80353,7 +80008,7 @@ var BasisWorkerLoader = {
80353
80008
  name: "Basis",
80354
80009
  id: "basis",
80355
80010
  module: "textures",
80356
- version: VERSION6,
80011
+ version: VERSION7,
80357
80012
  worker: true,
80358
80013
  extensions: ["basis", "ktx2"],
80359
80014
  mimeTypes: ["application/octet-stream", "image/ktx2"],
@@ -80666,7 +80321,7 @@ var CompressedTextureWorkerLoader = {
80666
80321
  name: "Texture Containers",
80667
80322
  id: "compressed-texture",
80668
80323
  module: "textures",
80669
- version: VERSION6,
80324
+ version: VERSION7,
80670
80325
  worker: true,
80671
80326
  extensions: [
80672
80327
  "ktx",
@@ -80697,7 +80352,7 @@ var CompressedTextureLoader = {
80697
80352
  containerFormat: "ktx2",
80698
80353
  module: "encoder"
80699
80354
  };
80700
- return await parseBasis(arrayBuffer, options);
80355
+ return (await parseBasis(arrayBuffer, options))[0];
80701
80356
  }
80702
80357
  return parseCompressedTexture(arrayBuffer);
80703
80358
  }
@@ -80730,12 +80385,12 @@ async function encodeKTX2BasisTexture(image, options = {}) {
80730
80385
  }
80731
80386
  }
80732
80387
 
80733
- // ../textures/src/ktx2-basis-universal-texture-writer.ts
80734
- var KTX2BasisUniversalTextureWriter = {
80388
+ // ../textures/src/ktx2-basis-writer.ts
80389
+ var KTX2BasisWriter = {
80735
80390
  name: "Basis Universal Supercompressed GPU Texture",
80736
- id: "ktx2-basis-supercompressed-texture",
80391
+ id: "ktx2-basis-writer",
80737
80392
  module: "textures",
80738
- version: VERSION6,
80393
+ version: VERSION7,
80739
80394
  extensions: ["ktx2"],
80740
80395
  options: {
80741
80396
  useSRGB: false,
@@ -80747,7 +80402,7 @@ var KTX2BasisUniversalTextureWriter = {
80747
80402
  };
80748
80403
 
80749
80404
  // ../images/src/lib/utils/version.ts
80750
- var VERSION8 = typeof __VERSION__ !== "undefined" ? __VERSION__ : "latest";
80405
+ var VERSION9 = typeof __VERSION__ !== "undefined" ? __VERSION__ : "latest";
80751
80406
 
80752
80407
  // ../images/src/lib/category-api/image-type.ts
80753
80408
  var { _parseImageNode } = globalThis;
@@ -81089,7 +80744,7 @@ var ImageLoader = {
81089
80744
  id: "image",
81090
80745
  module: "images",
81091
80746
  name: "Images",
81092
- version: VERSION8,
80747
+ version: VERSION9,
81093
80748
  mimeTypes: MIME_TYPES,
81094
80749
  extensions: EXTENSIONS,
81095
80750
  parse: parseImage,
@@ -81152,7 +80807,7 @@ var ImageWriter = {
81152
80807
  name: "Images",
81153
80808
  id: "image",
81154
80809
  module: "images",
81155
- version: VERSION8,
80810
+ version: VERSION9,
81156
80811
  extensions: ["jpeg"],
81157
80812
  options: {
81158
80813
  image: {
@@ -81233,8 +80888,7 @@ function getTypedArrayForBufferView(json, buffers, bufferViewIndex) {
81233
80888
  var EXT_meshopt_compression_exports = {};
81234
80889
  __export(EXT_meshopt_compression_exports, {
81235
80890
  decode: () => decode2,
81236
- name: () => name,
81237
- preprocess: () => preprocess
80891
+ name: () => name
81238
80892
  });
81239
80893
 
81240
80894
  // ../gltf/src/lib/gltf-utils/gltf-utils.ts
@@ -81683,7 +81337,6 @@ var GLTFScenegraph = class {
81683
81337
  };
81684
81338
 
81685
81339
  // ../gltf/src/meshopt/meshopt-decoder.ts
81686
- var isWebAssemblySupported = typeof WebAssembly !== "object";
81687
81340
  var wasm_base = "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";
81688
81341
  var wasm_simd = "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";
81689
81342
  var detector = new Uint8Array([
@@ -81819,9 +81472,6 @@ var DECODERS = {
81819
81472
  TRIANGLES: "meshopt_decodeIndexBuffer",
81820
81473
  INDICES: "meshopt_decodeIndexSequence"
81821
81474
  };
81822
- function isMeshoptSupported() {
81823
- return isWebAssemblySupported;
81824
- }
81825
81475
  async function meshoptDecodeGltfBuffer(target, count, size, source, mode, filter = "NONE") {
81826
81476
  const instance = await loadWasmInstance();
81827
81477
  decode(instance, instance.exports[DECODERS[mode]], target, count, size, source, instance.exports[FILTERS[filter || "NONE"]]);
@@ -81876,12 +81526,6 @@ function decode(instance, fun, target, count, size, source, filter) {
81876
81526
  // ../gltf/src/lib/extensions/EXT_meshopt_compression.ts
81877
81527
  var EXT_MESHOPT_COMPRESSION = "EXT_meshopt_compression";
81878
81528
  var name = EXT_MESHOPT_COMPRESSION;
81879
- function preprocess(gltfData) {
81880
- const scenegraph = new GLTFScenegraph(gltfData);
81881
- if (scenegraph.getRequiredExtensions().includes(EXT_MESHOPT_COMPRESSION) && !isMeshoptSupported()) {
81882
- throw new Error(`gltf: Required extension ${EXT_MESHOPT_COMPRESSION} not supported by browser`);
81883
- }
81884
- }
81885
81529
  async function decode2(gltfData, options) {
81886
81530
  const scenegraph = new GLTFScenegraph(gltfData);
81887
81531
  if (!options?.gltf?.decompressMeshes) {
@@ -81897,18 +81541,19 @@ async function decode2(gltfData, options) {
81897
81541
  async function decodeMeshoptBufferView(scenegraph, bufferView) {
81898
81542
  const meshoptExtension = scenegraph.getObjectExtension(bufferView, EXT_MESHOPT_COMPRESSION);
81899
81543
  if (meshoptExtension) {
81900
- const buffer = bufferView.buffer;
81901
81544
  const {
81902
81545
  byteOffset = 0,
81903
81546
  byteLength = 0,
81904
81547
  byteStride,
81905
81548
  count,
81906
81549
  mode,
81907
- filter = "NONE"
81550
+ filter = "NONE",
81551
+ buffer: bufferIndex
81908
81552
  } = meshoptExtension;
81909
- const source = new Uint8Array(buffer, byteOffset, byteLength);
81910
- const result = new ArrayBuffer(count * byteStride);
81911
- await meshoptDecodeGltfBuffer(new Uint8Array(result), count, byteStride, source, mode, filter);
81553
+ const buffer = scenegraph.gltf.buffers[bufferIndex];
81554
+ const source = new Uint8Array(buffer.arrayBuffer, buffer.byteOffset + byteOffset, byteLength);
81555
+ const result = new Uint8Array(scenegraph.gltf.buffers[bufferView.buffer].arrayBuffer, bufferView.byteOffset, bufferView.byteLength);
81556
+ await meshoptDecodeGltfBuffer(result, count, byteStride, source, mode, filter);
81912
81557
  return result;
81913
81558
  }
81914
81559
  return null;
@@ -81918,11 +81563,11 @@ async function decodeMeshoptBufferView(scenegraph, bufferView) {
81918
81563
  var EXT_texture_webp_exports = {};
81919
81564
  __export(EXT_texture_webp_exports, {
81920
81565
  name: () => name2,
81921
- preprocess: () => preprocess2
81566
+ preprocess: () => preprocess
81922
81567
  });
81923
81568
  var EXT_TEXTURE_WEBP = "EXT_texture_webp";
81924
81569
  var name2 = EXT_TEXTURE_WEBP;
81925
- function preprocess2(gltfData, options) {
81570
+ function preprocess(gltfData, options) {
81926
81571
  const scenegraph = new GLTFScenegraph(gltfData);
81927
81572
  if (!_isImageFormatSupported("image/webp")) {
81928
81573
  if (scenegraph.getRequiredExtensions().includes(EXT_TEXTURE_WEBP)) {
@@ -81945,11 +81590,11 @@ function preprocess2(gltfData, options) {
81945
81590
  var KHR_texture_basisu_exports = {};
81946
81591
  __export(KHR_texture_basisu_exports, {
81947
81592
  name: () => name3,
81948
- preprocess: () => preprocess3
81593
+ preprocess: () => preprocess2
81949
81594
  });
81950
81595
  var KHR_TEXTURE_BASISU = "KHR_texture_basisu";
81951
81596
  var name3 = KHR_TEXTURE_BASISU;
81952
- function preprocess3(gltfData, options) {
81597
+ function preprocess2(gltfData, options) {
81953
81598
  const scene = new GLTFScenegraph(gltfData);
81954
81599
  const { json } = scene;
81955
81600
  for (const texture of json.textures || []) {
@@ -81966,9 +81611,9 @@ function preprocess3(gltfData, options) {
81966
81611
  var KHR_draco_mesh_compression_exports = {};
81967
81612
  __export(KHR_draco_mesh_compression_exports, {
81968
81613
  decode: () => decode3,
81969
- encode: () => encode3,
81614
+ encode: () => encode2,
81970
81615
  name: () => name4,
81971
- preprocess: () => preprocess4
81616
+ preprocess: () => preprocess3
81972
81617
  });
81973
81618
 
81974
81619
  // ../gltf/src/lib/gltf-utils/gltf-attribute-utils.ts
@@ -82027,7 +81672,7 @@ function toTypedArray(array, ArrayType, convertTypedArrays = false) {
82027
81672
  // ../gltf/src/lib/extensions/KHR_draco_mesh_compression.ts
82028
81673
  var KHR_DRACO_MESH_COMPRESSION = "KHR_draco_mesh_compression";
82029
81674
  var name4 = KHR_DRACO_MESH_COMPRESSION;
82030
- function preprocess4(gltfData, options, context) {
81675
+ function preprocess3(gltfData, options, context) {
82031
81676
  const scenegraph = new GLTFScenegraph(gltfData);
82032
81677
  for (const primitive of makeMeshPrimitiveIterator(scenegraph)) {
82033
81678
  if (scenegraph.getObjectExtension(primitive, KHR_DRACO_MESH_COMPRESSION)) {
@@ -82048,7 +81693,7 @@ async function decode3(gltfData, options, context) {
82048
81693
  await Promise.all(promises);
82049
81694
  scenegraph.removeExtension(KHR_DRACO_MESH_COMPRESSION);
82050
81695
  }
82051
- function encode3(gltfData, options = {}) {
81696
+ function encode2(gltfData, options = {}) {
82052
81697
  const scenegraph = new GLTFScenegraph(gltfData);
82053
81698
  for (const mesh of scenegraph.json.meshes || []) {
82054
81699
  compressMesh(mesh, options);
@@ -82124,7 +81769,7 @@ function* makeMeshPrimitiveIterator(scenegraph) {
82124
81769
  var KHR_lights_punctual_exports = {};
82125
81770
  __export(KHR_lights_punctual_exports, {
82126
81771
  decode: () => decode4,
82127
- encode: () => encode4,
81772
+ encode: () => encode3,
82128
81773
  name: () => name5
82129
81774
  });
82130
81775
  var KHR_LIGHTS_PUNCTUAL = "KHR_lights_punctual";
@@ -82145,7 +81790,7 @@ async function decode4(gltfData) {
82145
81790
  gltfScenegraph.removeObjectExtension(node2, KHR_LIGHTS_PUNCTUAL);
82146
81791
  }
82147
81792
  }
82148
- async function encode4(gltfData) {
81793
+ async function encode3(gltfData) {
82149
81794
  const gltfScenegraph = new GLTFScenegraph(gltfData);
82150
81795
  const { json } = gltfScenegraph;
82151
81796
  if (json.lights) {
@@ -82167,7 +81812,7 @@ async function encode4(gltfData) {
82167
81812
  var KHR_materials_unlit_exports = {};
82168
81813
  __export(KHR_materials_unlit_exports, {
82169
81814
  decode: () => decode5,
82170
- encode: () => encode5,
81815
+ encode: () => encode4,
82171
81816
  name: () => name6
82172
81817
  });
82173
81818
  var KHR_MATERIALS_UNLIT = "KHR_materials_unlit";
@@ -82184,7 +81829,7 @@ async function decode5(gltfData) {
82184
81829
  gltfScenegraph.removeObjectExtension(material, KHR_MATERIALS_UNLIT);
82185
81830
  }
82186
81831
  }
82187
- function encode5(gltfData) {
81832
+ function encode4(gltfData) {
82188
81833
  const gltfScenegraph = new GLTFScenegraph(gltfData);
82189
81834
  const { json } = gltfScenegraph;
82190
81835
  if (gltfScenegraph.materials) {
@@ -82202,7 +81847,7 @@ function encode5(gltfData) {
82202
81847
  var KHR_techniques_webgl_exports = {};
82203
81848
  __export(KHR_techniques_webgl_exports, {
82204
81849
  decode: () => decode6,
82205
- encode: () => encode6,
81850
+ encode: () => encode5,
82206
81851
  name: () => name7
82207
81852
  });
82208
81853
  var KHR_TECHNIQUES_WEBGL = "KHR_techniques_webgl";
@@ -82224,7 +81869,7 @@ async function decode6(gltfData) {
82224
81869
  gltfScenegraph.removeExtension(KHR_TECHNIQUES_WEBGL);
82225
81870
  }
82226
81871
  }
82227
- async function encode6(gltfData, options) {
81872
+ async function encode5(gltfData, options) {
82228
81873
  }
82229
81874
  function resolveTechniques(techniquesExtension, gltfScenegraph) {
82230
81875
  const { programs = [], shaders = [], techniques = [] } = techniquesExtension;
@@ -82290,7 +81935,7 @@ function useExtension(extensionName, options) {
82290
81935
 
82291
81936
  // ../gltf/src/lib/extensions/KHR_binary_gltf.ts
82292
81937
  var KHR_BINARY_GLTF = "KHR_binary_glTF";
82293
- function preprocess5(gltfData) {
81938
+ function preprocess4(gltfData) {
82294
81939
  const gltfScenegraph = new GLTFScenegraph(gltfData);
82295
81940
  const { json } = gltfScenegraph;
82296
81941
  for (const image of json.images || []) {
@@ -82371,7 +82016,7 @@ var GLTFV1Normalizer = class {
82371
82016
  console.warn("Converting glTF v1 to glTF v2 format. This is experimental and may fail.");
82372
82017
  this._addAsset(json);
82373
82018
  this._convertTopLevelObjectsToArrays(json);
82374
- preprocess5(gltf);
82019
+ preprocess4(gltf);
82375
82020
  this._convertObjectIdsToArrayIndices(json);
82376
82021
  this._updateObjects(json);
82377
82022
  this._updateMaterial(json);
@@ -82988,6 +82633,12 @@ async function loadBuffers(gltf, options, context) {
82988
82633
  byteLength: arrayBuffer.byteLength
82989
82634
  };
82990
82635
  delete buffer.uri;
82636
+ } else if (gltf.buffers[i] === null) {
82637
+ gltf.buffers[i] = {
82638
+ arrayBuffer: new ArrayBuffer(buffer.byteLength),
82639
+ byteOffset: 0,
82640
+ byteLength: buffer.byteLength
82641
+ };
82991
82642
  }
82992
82643
  }
82993
82644
  }
@@ -83030,7 +82681,7 @@ async function loadImage(gltf, image, index, options, context) {
83030
82681
  mipmaps: false,
83031
82682
  width: parsedImage[0].width,
83032
82683
  height: parsedImage[0].height,
83033
- data: parsedImage
82684
+ data: parsedImage[0]
83034
82685
  };
83035
82686
  }
83036
82687
  gltf.images = gltf.images || [];
@@ -83042,7 +82693,7 @@ var GLTFLoader = {
83042
82693
  name: "glTF",
83043
82694
  id: "gltf",
83044
82695
  module: "gltf",
83045
- version: VERSION5,
82696
+ version: VERSION6,
83046
82697
  extensions: ["gltf", "glb"],
83047
82698
  mimeTypes: ["model/gltf+json", "model/gltf-binary"],
83048
82699
  text: true,
@@ -83140,7 +82791,7 @@ var GLTFWriter = {
83140
82791
  name: "glTF",
83141
82792
  id: "gltf",
83142
82793
  module: "gltf",
83143
- version: VERSION5,
82794
+ version: VERSION6,
83144
82795
  extensions: ["glb"],
83145
82796
  mimeTypes: ["model/gltf-binary"],
83146
82797
  binary: true,
@@ -83236,7 +82887,7 @@ function parseBatchedModel(tile, arrayBuffer, byteOffset, options, context) {
83236
82887
 
83237
82888
  // ../3d-tiles/src/lib/parsers/parse-3d-tile-instanced-model.ts
83238
82889
  var import_core15 = __toModule(require_es56());
83239
- var import_geospatial6 = __toModule(require_es57());
82890
+ var import_geospatial7 = __toModule(require_es57());
83240
82891
  async function parseInstancedModel3DTile(tile, arrayBuffer, byteOffset, options, context) {
83241
82892
  byteOffset = parseInstancedModel(tile, arrayBuffer, byteOffset, options, context);
83242
82893
  await extractGLTF(tile, tile.gltfFormat, options, context);
@@ -83334,7 +82985,7 @@ function extractInstancedAttributes(tile, featureTable, batchTable, instancesLen
83334
82985
  }
83335
82986
  throw new Error("i3dm: oct-encoded orientation not implemented");
83336
82987
  } else if (tile.eastNorthUp) {
83337
- import_geospatial6.Ellipsoid.WGS84.eastNorthUpToFixedFrame(instancePosition, instanceTransform);
82988
+ import_geospatial7.Ellipsoid.WGS84.eastNorthUpToFixedFrame(instancePosition, instanceTransform);
83338
82989
  instanceTransform.getRotationMatrix3(instanceRotation);
83339
82990
  } else {
83340
82991
  instanceRotation.identity();
@@ -83391,7 +83042,7 @@ async function parseComposite3DTile(tile, arrayBuffer, byteOffset, options, cont
83391
83042
  return byteOffset;
83392
83043
  }
83393
83044
 
83394
- // ../3d-tiles/src/lib/parsers/parse-3d-tile-gltf.js
83045
+ // ../3d-tiles/src/lib/parsers/parse-3d-tile-gltf.ts
83395
83046
  async function parseGltf3DTile(tile, arrayBuffer, options, context) {
83396
83047
  tile.rotateYtoZ = true;
83397
83048
  tile.gltfUpAxis = options["3d-tiles"] && options["3d-tiles"].assetGltfUpAxis ? options["3d-tiles"].assetGltfUpAxis : "Y";
@@ -83475,7 +83126,7 @@ var Tile3DSubtreeLoader = {
83475
83126
  id: "3d-tiles-subtree",
83476
83127
  name: "3D Tiles Subtree",
83477
83128
  module: "3d-tiles",
83478
- version: VERSION3,
83129
+ version: VERSION4,
83479
83130
  extensions: ["subtree"],
83480
83131
  mimeTypes: ["application/octet-stream"],
83481
83132
  tests: ["subtree"],
@@ -83490,18 +83141,25 @@ var SUBDIVISION_COUNT_MAP = {
83490
83141
  QUADTREE: QUADTREE_DEVISION_COUNT,
83491
83142
  OCTREE: OCTREE_DEVISION_COUNT
83492
83143
  };
83493
- async function parseImplicitTiles(subtree, options, parentData = {
83494
- mortonIndex: 0,
83495
- x: 0,
83496
- y: 0,
83497
- z: 0
83498
- }, childIndex = 0, level = 0, globalData = {
83499
- level: 0,
83500
- mortonIndex: 0,
83501
- x: 0,
83502
- y: 0,
83503
- z: 0
83504
- }) {
83144
+ async function parseImplicitTiles(params) {
83145
+ const {
83146
+ options,
83147
+ parentData = {
83148
+ mortonIndex: 0,
83149
+ x: 0,
83150
+ y: 0,
83151
+ z: 0
83152
+ },
83153
+ childIndex = 0,
83154
+ globalData = {
83155
+ level: 0,
83156
+ mortonIndex: 0,
83157
+ x: 0,
83158
+ y: 0,
83159
+ z: 0
83160
+ }
83161
+ } = params;
83162
+ let { subtree, level = 0 } = params;
83505
83163
  const {
83506
83164
  subdivisionScheme,
83507
83165
  subtreeLevels,
@@ -83557,7 +83215,14 @@ async function parseImplicitTiles(subtree, options, parentData = {
83557
83215
  const childTileLevel = level + 1;
83558
83216
  const pData = { mortonIndex: childTileMortonIndex, x: childTileX, y: childTileY, z: childTileZ };
83559
83217
  for (let index = 0; index < childrenPerTile; index++) {
83560
- const currentTile = await parseImplicitTiles(subtree, options, pData, index, childTileLevel, globalData);
83218
+ const currentTile = await parseImplicitTiles({
83219
+ subtree,
83220
+ options,
83221
+ parentData: pData,
83222
+ childIndex: index,
83223
+ level: childTileLevel,
83224
+ globalData
83225
+ });
83561
83226
  if (currentTile.contentUrl || currentTile.children.length) {
83562
83227
  const globalLevel = lev + 1;
83563
83228
  const childCoordinates = { childTileX, childTileY, childTileZ };
@@ -83747,7 +83412,7 @@ async function normalizeImplicitTileData(tile, rootSubtree, options) {
83747
83412
  tile.lodMetricType = LOD_METRIC_TYPE.GEOMETRIC_ERROR;
83748
83413
  tile.lodMetricValue = tile.geometricError;
83749
83414
  tile.transformMatrix = tile.transform;
83750
- const { children, contentUrl } = await parseImplicitTiles(rootSubtree, options);
83415
+ const { children, contentUrl } = await parseImplicitTiles({ subtree: rootSubtree, options });
83751
83416
  if (contentUrl) {
83752
83417
  tile.contentUrl = contentUrl;
83753
83418
  tile.content = { uri: contentUrl.replace(`${options.basePath}/`, "") };
@@ -83765,7 +83430,7 @@ var Tiles3DLoader = {
83765
83430
  id: "3d-tiles",
83766
83431
  name: "3D Tiles",
83767
83432
  module: "3d-tiles",
83768
- version: VERSION3,
83433
+ version: VERSION4,
83769
83434
  extensions: ["cmpt", "pnts", "b3dm", "i3dm"],
83770
83435
  mimeTypes: ["application/octet-stream"],
83771
83436
  tests: ["cmpt", "pnts", "b3dm", "i3dm"],
@@ -84060,7 +83725,7 @@ var Tile3DWriter = {
84060
83725
  name: "3D Tile",
84061
83726
  id: "3d-tiles",
84062
83727
  module: "3d-tiles",
84063
- version: VERSION3,
83728
+ version: VERSION4,
84064
83729
  extensions: ["cmpt", "pnts", "b3dm", "i3dm"],
84065
83730
  mimeTypes: ["application/octet-stream"],
84066
83731
  encodeSync: encodeSync3,
@@ -84199,34 +83864,37 @@ var NodePages = class {
84199
83864
  this.updateResourceInMesh(node2);
84200
83865
  return node2.index;
84201
83866
  }
84202
- async save(layers0Path, fileMap, slpk = false) {
84203
- const promises = [];
83867
+ async save(layers0Path, writeQueue, slpk = false) {
84204
83868
  if (slpk) {
84205
83869
  for (const [index, nodePage] of this.nodePages.entries()) {
84206
83870
  const nodePageStr = JSON.stringify(nodePage);
84207
83871
  const slpkPath = (0, import_path2.join)(layers0Path, "nodepages");
84208
- promises.push(this.writeFile(slpkPath, nodePageStr, `${index.toString()}.json`));
84209
- fileMap[`nodePages/${index.toString()}.json.gz`] = `${slpkPath}.json.gz`;
83872
+ writeQueue.enqueue({
83873
+ archiveKey: `nodePages/${index.toString()}.json.gz`,
83874
+ writePromise: this.writeFile(slpkPath, nodePageStr, `${index.toString()}.json`)
83875
+ });
84210
83876
  }
84211
83877
  const metadata = (0, import_json_map_transform.default)({ nodeCount: this.nodesCounter }, METADATA());
84212
83878
  const compress = false;
84213
- fileMap["metadata.json"] = await this.writeFile(layers0Path, JSON.stringify(metadata), "metadata.json", compress);
83879
+ writeQueue.enqueue({
83880
+ archiveKey: "metadata.json",
83881
+ writePromise: this.writeFile(layers0Path, JSON.stringify(metadata), "metadata.json", compress)
83882
+ });
84214
83883
  } else {
84215
83884
  for (const [index, nodePage] of this.nodePages.entries()) {
84216
83885
  const nodePageStr = JSON.stringify(nodePage);
84217
83886
  const nodePagePath = (0, import_path2.join)(layers0Path, "nodepages", index.toString());
84218
- promises.push(this.writeFile(nodePagePath, nodePageStr));
83887
+ writeQueue.enqueue({ writePromise: this.writeFile(nodePagePath, nodePageStr) });
84219
83888
  }
84220
83889
  }
84221
- await Promise.all(promises);
84222
83890
  }
84223
83891
  };
84224
83892
 
84225
- // src/lib/utils/file-utils.js
83893
+ // src/lib/utils/file-utils.ts
84226
83894
  var import_fs3 = __toModule(require("fs"));
84227
83895
  var import_path4 = __toModule(require("path"));
84228
83896
 
84229
- // src/lib/utils/compress-util.js
83897
+ // src/lib/utils/compress-util.ts
84230
83898
  var import_zlib = __toModule(require("zlib"));
84231
83899
  var import_path3 = __toModule(require("path"));
84232
83900
  var import_fs2 = __toModule(require("fs"));
@@ -84250,11 +83918,11 @@ function compressFileWithGzip(pathFile) {
84250
83918
  input.pipe(gzip).pipe(output);
84251
83919
  });
84252
83920
  }
84253
- async function compressWithChildProcess() {
83921
+ async function compressWithChildProcess(inputFolder, outputFile, level, inputFiles, sevenZipExe) {
84254
83922
  if (process.platform === "win32") {
84255
- await compressWithChildProcessWindows(...arguments);
83923
+ await compressWithChildProcessWindows(inputFolder, outputFile, level, inputFiles, sevenZipExe);
84256
83924
  } else {
84257
- await compressWithChildProcessUnix(...arguments);
83925
+ await compressWithChildProcessUnix(inputFolder, outputFile, level, inputFiles);
84258
83926
  }
84259
83927
  }
84260
83928
  async function compressWithChildProcessUnix(inputFolder, outputFile, level = 0, inputFiles = ".") {
@@ -84287,12 +83955,20 @@ async function compressWithChildProcessWindows(inputFolder, outputFile, level =
84287
83955
  });
84288
83956
  }
84289
83957
 
84290
- // src/lib/utils/file-utils.js
83958
+ // src/lib/utils/file-utils.ts
84291
83959
  async function writeFile3(path2, data, fileName = "index.json") {
83960
+ let toWriteData;
83961
+ if (data instanceof Promise) {
83962
+ toWriteData = new Uint8Array(await data);
83963
+ } else if (data instanceof ArrayBuffer) {
83964
+ toWriteData = new Uint8Array(data);
83965
+ } else {
83966
+ toWriteData = data;
83967
+ }
84292
83968
  await import_fs3.promises.mkdir(path2, { recursive: true });
84293
83969
  const pathFile = (0, import_path4.join)(path2, fileName);
84294
83970
  try {
84295
- await import_fs3.promises.writeFile(pathFile, data);
83971
+ await import_fs3.promises.writeFile(pathFile, toWriteData);
84296
83972
  } catch (err) {
84297
83973
  throw err;
84298
83974
  }
@@ -84318,7 +83994,7 @@ function getAbsoluteFilePath(filePath) {
84318
83994
  return (0, import_path4.isAbsolute)(filePath) ? filePath : (0, import_path4.join)(process.cwd(), filePath);
84319
83995
  }
84320
83996
 
84321
- // src/lib/utils/statistic-utills.js
83997
+ // src/lib/utils/statistic-utills.ts
84322
83998
  var import_path5 = __toModule(require("path"));
84323
83999
  var import_fs4 = __toModule(require("fs"));
84324
84000
  function timeConverter(time) {
@@ -84376,16 +84052,17 @@ async function getTotalFilesSize(dirPath) {
84376
84052
  return totalFileSize;
84377
84053
  }
84378
84054
 
84379
- // src/i3s-converter/helpers/geometry-converter.js
84055
+ // src/i3s-converter/helpers/geometry-converter.ts
84380
84056
  var import_core21 = __toModule(require_es56());
84381
- var import_geospatial8 = __toModule(require_es57());
84057
+ var import_geospatial9 = __toModule(require_es57());
84382
84058
  var import_md5 = __toModule(require_md52());
84383
84059
 
84384
84060
  // src/i3s-converter/helpers/geometry-attributes.ts
84385
84061
  var VALUES_PER_VERTEX = 3;
84386
84062
  var POSITIONS_AND_NORMALS_PER_TRIANGLE = 9;
84387
84063
  function generateAttributes(attributes) {
84388
- const { positions, normals, texCoords, colors, featureIndices, triangleCount } = attributes;
84064
+ const { positions, normals, texCoords, colors, featureIndices } = attributes;
84065
+ const triangleCount = positions.length / POSITIONS_AND_NORMALS_PER_TRIANGLE;
84389
84066
  if (!featureIndices.length) {
84390
84067
  return {
84391
84068
  faceRange: new Uint32Array([0, triangleCount - 1]),
@@ -84530,14 +84207,14 @@ function groupAttributesAndRangesByFeatureId(unifiedObjects, featureCount) {
84530
84207
 
84531
84208
  // src/i3s-converter/helpers/coordinate-converter.ts
84532
84209
  var import_core20 = __toModule(require_es56());
84533
- var import_geospatial7 = __toModule(require_es57());
84534
- var import_culling5 = __toModule(require_es59());
84210
+ var import_geospatial8 = __toModule(require_es57());
84211
+ var import_culling5 = __toModule(require_es58());
84535
84212
  function createBoundingVolumes(tile, geoidHeightModel) {
84536
84213
  let radius;
84537
84214
  let halfSize;
84538
84215
  let quaternion;
84539
84216
  const boundingVolume = tile.boundingVolume;
84540
- const cartographicCenter = import_geospatial7.Ellipsoid.WGS84.cartesianToCartographic(boundingVolume.center, new import_core20.Vector3());
84217
+ const cartographicCenter = import_geospatial8.Ellipsoid.WGS84.cartesianToCartographic(boundingVolume.center, new import_core20.Vector3());
84541
84218
  cartographicCenter[2] = cartographicCenter[2] - geoidHeightModel.getHeight(cartographicCenter[1], cartographicCenter[0]);
84542
84219
  if (boundingVolume instanceof import_culling5.OrientedBoundingBox) {
84543
84220
  halfSize = boundingVolume.halfSize;
@@ -84561,8 +84238,8 @@ function createBoundingVolumesFromGeometry(cartesianPositions, geoidHeightModel)
84561
84238
  const positionVectors = convertPositionsToVectors(cartesianPositions);
84562
84239
  const geometryObb = (0, import_culling5.makeOrientedBoundingBoxFromPoints)(positionVectors);
84563
84240
  const geometryMbs = (0, import_culling5.makeBoundingSphereFromPoints)(positionVectors);
84564
- let mbsCenter = import_geospatial7.Ellipsoid.WGS84.cartesianToCartographic(geometryMbs.center, new import_core20.Vector3());
84565
- let obbCenter = import_geospatial7.Ellipsoid.WGS84.cartesianToCartographic(geometryObb.center, new import_core20.Vector3());
84241
+ let mbsCenter = import_geospatial8.Ellipsoid.WGS84.cartesianToCartographic(geometryMbs.center, new import_core20.Vector3());
84242
+ let obbCenter = import_geospatial8.Ellipsoid.WGS84.cartesianToCartographic(geometryObb.center, new import_core20.Vector3());
84566
84243
  mbsCenter[2] = mbsCenter[2] - geoidHeightModel.getHeight(mbsCenter[1], mbsCenter[0]);
84567
84244
  obbCenter[2] = obbCenter[2] - geoidHeightModel.getHeight(obbCenter[1], obbCenter[0]);
84568
84245
  return {
@@ -84582,22 +84259,25 @@ function convertPositionsToVectors(positions) {
84582
84259
  }
84583
84260
  return result;
84584
84261
  }
84585
- function convertCommonToI3SExtentCoordinate(tileset) {
84586
- const cartesianCenter = tileset?.cartesianCenter;
84587
- if (!cartesianCenter) {
84588
- return null;
84262
+ function convertBoundingVolumeToI3SFullExtent(boundingVolume) {
84263
+ let sphere;
84264
+ if (boundingVolume instanceof import_culling5.BoundingSphere) {
84265
+ sphere = boundingVolume;
84266
+ } else {
84267
+ sphere = boundingVolume.getBoundingSphere();
84589
84268
  }
84590
- const radius = tileset?.lodMetricValue;
84591
- const rightTop = import_geospatial7.Ellipsoid.WGS84.cartesianToCartographic(new import_core20.Vector3(cartesianCenter[0] + radius, cartesianCenter[1] + radius, cartesianCenter[2]), new import_core20.Vector3());
84592
- const leftBottom = import_geospatial7.Ellipsoid.WGS84.cartesianToCartographic(new import_core20.Vector3(cartesianCenter[0] - radius, cartesianCenter[1] - radius, cartesianCenter[2]), new import_core20.Vector3());
84593
- const isFirstRight = rightTop[0] < leftBottom[0];
84594
- const isFirstTop = rightTop[1] < leftBottom[1];
84595
- return [
84596
- isFirstRight ? rightTop[0] : leftBottom[0],
84597
- isFirstTop ? rightTop[1] : leftBottom[1],
84598
- isFirstRight ? leftBottom[0] : rightTop[0],
84599
- isFirstTop ? leftBottom[1] : rightTop[1]
84600
- ];
84269
+ const center = sphere.center;
84270
+ const radius = sphere.radius;
84271
+ const vertexMax = import_geospatial8.Ellipsoid.WGS84.cartesianToCartographic(new import_core20.Vector3(center[0] + radius, center[1] + radius, center[2] + radius), new import_core20.Vector3());
84272
+ const vertexMin = import_geospatial8.Ellipsoid.WGS84.cartesianToCartographic(new import_core20.Vector3(center[0] - radius, center[1] - radius, center[2] - radius), new import_core20.Vector3());
84273
+ return {
84274
+ xmin: vertexMin[0],
84275
+ xmax: vertexMax[0],
84276
+ ymin: vertexMin[1],
84277
+ ymax: vertexMax[1],
84278
+ zmin: vertexMin[2],
84279
+ zmax: vertexMax[2]
84280
+ };
84601
84281
  }
84602
84282
  function createObbFromMbs(mbs) {
84603
84283
  const radius = mbs[3];
@@ -84606,7 +84286,49 @@ function createObbFromMbs(mbs) {
84606
84286
  return new import_culling5.OrientedBoundingBox(center, halfAxex);
84607
84287
  }
84608
84288
 
84609
- // src/i3s-converter/helpers/geometry-converter.js
84289
+ // src/i3s-converter/helpers/gltf-attributes.ts
84290
+ function getB3DMAttributesWithoutBufferView(attributes) {
84291
+ const attributesWithoutBufferView = {};
84292
+ for (const attributeName in attributes) {
84293
+ attributesWithoutBufferView[attributeName] = {
84294
+ value: attributes[attributeName].value
84295
+ };
84296
+ }
84297
+ return attributesWithoutBufferView;
84298
+ }
84299
+ function prepareDataForAttributesConversion(tileContent) {
84300
+ const gltfMaterials = tileContent.gltf?.materials?.map((material) => ({ id: material.id }));
84301
+ let nodes = tileContent.gltf?.scene?.nodes || tileContent.gltf?.scenes?.[0]?.nodes || tileContent.gltf?.nodes || [];
84302
+ const prepearedNodes = nodes.map((node2) => {
84303
+ if (!node2.mesh) {
84304
+ return node2;
84305
+ }
84306
+ return {
84307
+ ...node2,
84308
+ mesh: {
84309
+ ...node2.mesh,
84310
+ primitives: node2.mesh?.primitives.map((primitive) => ({
84311
+ ...primitive,
84312
+ indices: { value: primitive?.indices?.value },
84313
+ attributes: getB3DMAttributesWithoutBufferView(primitive.attributes),
84314
+ material: {
84315
+ id: primitive?.material?.id
84316
+ }
84317
+ }))
84318
+ }
84319
+ };
84320
+ });
84321
+ const cartographicOrigin = tileContent.cartographicOrigin;
84322
+ const cartesianModelMatrix = tileContent.cartesianModelMatrix;
84323
+ return {
84324
+ gltfMaterials,
84325
+ nodes: prepearedNodes,
84326
+ cartographicOrigin,
84327
+ cartesianModelMatrix
84328
+ };
84329
+ }
84330
+
84331
+ // src/i3s-converter/helpers/geometry-converter.ts
84610
84332
  var DEFAULT_ROUGHNESS_FACTOR = 1;
84611
84333
  var DEFAULT_METALLIC_FACTOR = 1;
84612
84334
  var VALUES_PER_VERTEX2 = 3;
@@ -84618,10 +84340,11 @@ var DOUBLE_TYPE = "Float64";
84618
84340
  var OBJECT_ID_TYPE = "Oid32";
84619
84341
  var BATCHED_ID_POSSIBLE_ATTRIBUTE_NAMES = ["CUSTOM_ATTRIBUTE_2", "_BATCHID", "BATCHID"];
84620
84342
  var scratchVector4 = new import_core21.Vector3();
84621
- async function convertB3dmToI3sGeometry(tileContent, nodeId, featuresHashArray, attributeStorageInfo, draco, generateBoundingVolumes, geoidHeightModel) {
84343
+ async function convertB3dmToI3sGeometry(tileContent, nodeId, featuresHashArray, attributeStorageInfo, draco, generateBoundingVolumes, geoidHeightModel, workerSource) {
84622
84344
  const useCartesianPositions = generateBoundingVolumes;
84623
- const materialAndTextureList = convertMaterials(tileContent);
84624
- const convertedAttributesMap = convertAttributes(tileContent, useCartesianPositions);
84345
+ const materialAndTextureList = convertMaterials(tileContent.gltf?.materials);
84346
+ const dataForAttributesConversion = prepareDataForAttributesConversion(tileContent);
84347
+ const convertedAttributesMap = await convertAttributes(dataForAttributesConversion, useCartesianPositions);
84625
84348
  if (generateBoundingVolumes) {
84626
84349
  _generateBoundingVolumesFromGeometry(convertedAttributesMap, geoidHeightModel);
84627
84350
  }
@@ -84632,7 +84355,7 @@ async function convertB3dmToI3sGeometry(tileContent, nodeId, featuresHashArray,
84632
84355
  }
84633
84356
  const result = [];
84634
84357
  let nodesCounter = nodeId;
84635
- let { materials = [] } = tileContent.gltf;
84358
+ let { materials = [] } = tileContent.gltf || { materials: [] };
84636
84359
  if (!materials?.length) {
84637
84360
  materials.push({ id: "default" });
84638
84361
  }
@@ -84642,6 +84365,9 @@ async function convertB3dmToI3sGeometry(tileContent, nodeId, featuresHashArray,
84642
84365
  continue;
84643
84366
  }
84644
84367
  const convertedAttributes = convertedAttributesMap.get(sourceMaterial.id);
84368
+ if (!convertedAttributes) {
84369
+ continue;
84370
+ }
84645
84371
  const { material, texture } = materialAndTextureList[i];
84646
84372
  result.push(await _makeNodeResources({
84647
84373
  convertedAttributes,
@@ -84651,7 +84377,8 @@ async function convertB3dmToI3sGeometry(tileContent, nodeId, featuresHashArray,
84651
84377
  nodeId: nodesCounter,
84652
84378
  featuresHashArray,
84653
84379
  attributeStorageInfo,
84654
- draco
84380
+ draco,
84381
+ workerSource
84655
84382
  }));
84656
84383
  nodesCounter++;
84657
84384
  }
@@ -84667,7 +84394,7 @@ function _generateBoundingVolumesFromGeometry(convertedAttributesMap, geoidHeigh
84667
84394
  const cartographicOrigin = boundingVolumes.obb.center;
84668
84395
  for (let index = 0; index < attributes.positions.length; index += VALUES_PER_VERTEX2) {
84669
84396
  const vertex = attributes.positions.subarray(index, index + VALUES_PER_VERTEX2);
84670
- import_geospatial8.Ellipsoid.WGS84.cartesianToCartographic(Array.from(vertex), scratchVector4);
84397
+ import_geospatial9.Ellipsoid.WGS84.cartesianToCartographic(Array.from(vertex), scratchVector4);
84671
84398
  scratchVector4[2] = scratchVector4[2] - geoidHeightModel.getHeight(scratchVector4[1], scratchVector4[0]);
84672
84399
  scratchVector4 = scratchVector4.subtract(cartographicOrigin);
84673
84400
  attributes.positions.set(scratchVector4, index);
@@ -84682,12 +84409,12 @@ async function _makeNodeResources({
84682
84409
  nodeId,
84683
84410
  featuresHashArray,
84684
84411
  attributeStorageInfo,
84685
- draco
84412
+ draco,
84413
+ workerSource
84686
84414
  }) {
84687
84415
  const boundingVolumes = convertedAttributes.boundingVolumes;
84688
84416
  const vertexCount = convertedAttributes.positions.length / VALUES_PER_VERTEX2;
84689
- const triangleCount = vertexCount / 3;
84690
- const { faceRange, featureIds, positions, normals, colors, texCoords, featureCount } = generateAttributes({ triangleCount, ...convertedAttributes });
84417
+ const { faceRange, featureIds, positions, normals, colors, texCoords, featureCount } = generateAttributes(convertedAttributes);
84691
84418
  if (tileContent.batchTableJson) {
84692
84419
  makeFeatureIdsUnique(featureIds, convertedAttributes.featureIndices, featuresHashArray, tileContent.batchTableJson);
84693
84420
  }
@@ -84695,20 +84422,20 @@ async function _makeNodeResources({
84695
84422
  const typedFeatureIds = generateBigUint64Array(featureIds);
84696
84423
  header.set([vertexCount, featureCount], 0);
84697
84424
  const fileBuffer = new Uint8Array(concatenateArrayBuffers(header.buffer, positions.buffer, normals.buffer, texture ? texCoords.buffer : new ArrayBuffer(0), colors.buffer, typedFeatureIds.buffer, faceRange.buffer));
84698
- const compressedGeometry = draco ? await generateCompressedGeometry(vertexCount, convertedAttributes, {
84425
+ const compressedGeometry = draco ? generateCompressedGeometry(vertexCount, convertedAttributes, {
84699
84426
  positions,
84700
84427
  normals,
84701
84428
  texCoords: texture ? texCoords : new Float32Array(0),
84702
84429
  colors,
84703
84430
  featureIds,
84704
84431
  faceRange
84705
- }) : null;
84432
+ }, workerSource.draco) : null;
84706
84433
  const attributes = convertBatchTableToAttributeBuffers(tileContent.batchTableJson, featureIds, attributeStorageInfo);
84707
84434
  return {
84708
84435
  geometry: fileBuffer,
84709
84436
  compressedGeometry,
84710
84437
  texture,
84711
- sharedResources: getSharedResources(tileContent, nodeId),
84438
+ sharedResources: getSharedResources(tileContent.gltf?.materials || [], nodeId),
84712
84439
  meshMaterial: material,
84713
84440
  vertexCount,
84714
84441
  attributes,
@@ -84716,34 +84443,41 @@ async function _makeNodeResources({
84716
84443
  boundingVolumes
84717
84444
  };
84718
84445
  }
84719
- function convertAttributes(tileContent, useCartesianPositions) {
84446
+ async function convertAttributes(attributesData, useCartesianPositions) {
84447
+ const { gltfMaterials, nodes, cartographicOrigin, cartesianModelMatrix } = attributesData;
84720
84448
  const attributesMap = new Map();
84721
- for (const material of tileContent.gltf.materials || [{ id: "default" }]) {
84449
+ for (const material of gltfMaterials || [{ id: "default" }]) {
84722
84450
  attributesMap.set(material.id, {
84723
84451
  positions: new Float32Array(0),
84724
84452
  normals: new Float32Array(0),
84725
84453
  texCoords: new Float32Array(0),
84726
84454
  colors: new Uint8Array(0),
84455
+ featureIndicesGroups: [],
84727
84456
  featureIndices: [],
84728
84457
  boundingVolumes: null
84729
84458
  });
84730
84459
  }
84731
- const nodes = (tileContent.gltf.scene || tileContent.gltf.scenes?.[0] || tileContent.gltf).nodes;
84732
- convertNodes(nodes, tileContent, attributesMap, useCartesianPositions);
84460
+ convertNodes(nodes, cartographicOrigin, cartesianModelMatrix, attributesMap, useCartesianPositions);
84733
84461
  for (const attrKey of attributesMap.keys()) {
84734
84462
  const attributes = attributesMap.get(attrKey);
84463
+ if (!attributes) {
84464
+ continue;
84465
+ }
84735
84466
  if (attributes.positions.length === 0) {
84736
84467
  attributesMap.delete(attrKey);
84737
84468
  continue;
84738
84469
  }
84739
- attributes.featureIndices = attributes.featureIndices.reduce((acc, value) => acc.concat(value));
84470
+ if (attributes.featureIndicesGroups) {
84471
+ attributes.featureIndices = attributes.featureIndicesGroups.reduce((acc, value) => acc.concat(value));
84472
+ delete attributes.featureIndicesGroups;
84473
+ }
84740
84474
  }
84741
84475
  return attributesMap;
84742
84476
  }
84743
- function convertNodes(nodes, tileContent, attributesMap, useCartesianPositions, matrix = new import_core21.Matrix4([1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1])) {
84477
+ function convertNodes(nodes, cartographicOrigin, cartesianModelMatrix, attributesMap, useCartesianPositions, matrix = new import_core21.Matrix4([1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1])) {
84744
84478
  if (nodes) {
84745
84479
  for (const node2 of nodes) {
84746
- convertNode(node2, tileContent, attributesMap, useCartesianPositions, matrix);
84480
+ convertNode(node2, cartographicOrigin, cartesianModelMatrix, attributesMap, useCartesianPositions, matrix);
84747
84481
  }
84748
84482
  }
84749
84483
  }
@@ -84764,15 +84498,15 @@ function getCompositeTransformationMatrix(node2, matrix) {
84764
84498
  }
84765
84499
  return transformationMatrix;
84766
84500
  }
84767
- function convertNode(node2, tileContent, attributesMap, useCartesianPositions, matrix = new import_core21.Matrix4([1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1])) {
84501
+ function convertNode(node2, cartographicOrigin, cartesianModelMatrix, attributesMap, useCartesianPositions, matrix = new import_core21.Matrix4([1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1])) {
84768
84502
  const transformationMatrix = getCompositeTransformationMatrix(node2, matrix);
84769
84503
  const mesh = node2.mesh;
84770
84504
  if (mesh) {
84771
- convertMesh(mesh, tileContent, attributesMap, useCartesianPositions, transformationMatrix);
84505
+ convertMesh(mesh, cartographicOrigin, cartesianModelMatrix, attributesMap, useCartesianPositions, transformationMatrix);
84772
84506
  }
84773
- convertNodes(node2.children, tileContent, attributesMap, useCartesianPositions, transformationMatrix);
84507
+ convertNodes(node2.children || [], cartographicOrigin, cartesianModelMatrix, attributesMap, useCartesianPositions, transformationMatrix);
84774
84508
  }
84775
- function convertMesh(mesh, content, attributesMap, useCartesianPositions = false, matrix = new import_core21.Matrix4([1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1])) {
84509
+ function convertMesh(mesh, cartographicOrigin, cartesianModelMatrix, attributesMap, useCartesianPositions = false, matrix = new import_core21.Matrix4([1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1])) {
84776
84510
  for (const primitive of mesh.primitives) {
84777
84511
  let outputAttributes = null;
84778
84512
  if (primitive.material) {
@@ -84782,27 +84516,31 @@ function convertMesh(mesh, content, attributesMap, useCartesianPositions = false
84782
84516
  }
84783
84517
  assert2(outputAttributes !== null, "Primitive - material mapping failed");
84784
84518
  const attributes = primitive.attributes;
84519
+ if (!outputAttributes) {
84520
+ continue;
84521
+ }
84785
84522
  outputAttributes.positions = concatenateTypedArrays(outputAttributes.positions, transformVertexArray({
84786
84523
  vertices: attributes.POSITION.value,
84787
- cartographicOrigin: content.cartographicOrigin,
84788
- cartesianModelMatrix: content.cartesianModelMatrix,
84524
+ cartographicOrigin,
84525
+ cartesianModelMatrix,
84789
84526
  nodeMatrix: matrix,
84790
- indices: primitive.indices.value,
84527
+ indices: primitive.indices?.value,
84791
84528
  attributeSpecificTransformation: transformVertexPositions,
84792
84529
  useCartesianPositions
84793
84530
  }));
84794
84531
  outputAttributes.normals = concatenateTypedArrays(outputAttributes.normals, transformVertexArray({
84795
84532
  vertices: attributes.NORMAL && attributes.NORMAL.value,
84796
- cartographicOrigin: content.cartographicOrigin,
84797
- cartesianModelMatrix: content.cartesianModelMatrix,
84533
+ cartographicOrigin,
84534
+ cartesianModelMatrix,
84798
84535
  nodeMatrix: matrix,
84799
- indices: primitive.indices.value,
84536
+ indices: primitive.indices?.value,
84800
84537
  attributeSpecificTransformation: transformVertexNormals,
84801
84538
  useCartesianPositions: false
84802
84539
  }));
84803
- outputAttributes.texCoords = concatenateTypedArrays(outputAttributes.texCoords, flattenTexCoords(attributes.TEXCOORD_0 && attributes.TEXCOORD_0.value, primitive.indices.value));
84804
- outputAttributes.colors = concatenateTypedArrays(outputAttributes.colors, flattenColors(attributes.COLOR_0, primitive.indices.value));
84805
- outputAttributes.featureIndices.push(flattenBatchIds(getBatchIdsByAttributeName(attributes), primitive.indices.value));
84540
+ outputAttributes.texCoords = concatenateTypedArrays(outputAttributes.texCoords, flattenTexCoords(attributes.TEXCOORD_0 && attributes.TEXCOORD_0.value, primitive.indices?.value));
84541
+ outputAttributes.colors = concatenateTypedArrays(outputAttributes.colors, flattenColors(attributes.COLOR_0, primitive.indices?.value));
84542
+ outputAttributes.featureIndicesGroups = outputAttributes.featureIndicesGroups || [];
84543
+ outputAttributes.featureIndicesGroups.push(flattenBatchIds(getBatchIdsByAttributeName(attributes), primitive.indices?.value));
84806
84544
  }
84807
84545
  }
84808
84546
  function transformVertexArray(args) {
@@ -84831,7 +84569,7 @@ function transformVertexPositions(vertexVector, calleeArgs) {
84831
84569
  if (useCartesianPositions) {
84832
84570
  return vertexVector;
84833
84571
  }
84834
- import_geospatial8.Ellipsoid.WGS84.cartesianToCartographic([vertexVector[0], vertexVector[1], vertexVector[2]], vertexVector);
84572
+ import_geospatial9.Ellipsoid.WGS84.cartesianToCartographic([vertexVector[0], vertexVector[1], vertexVector[2]], vertexVector);
84835
84573
  vertexVector = vertexVector.subtract(cartographicOrigin);
84836
84574
  return vertexVector;
84837
84575
  }
@@ -84898,9 +84636,8 @@ function getBatchIdsByAttributeName(attributes) {
84898
84636
  }
84899
84637
  return batchIds;
84900
84638
  }
84901
- function convertMaterials(tileContent) {
84639
+ function convertMaterials(sourceMaterials = []) {
84902
84640
  const result = [];
84903
- const sourceMaterials = tileContent.gltf.materials || [];
84904
84641
  for (const sourceMaterial of sourceMaterials) {
84905
84642
  result.push(convertMaterial(sourceMaterial));
84906
84643
  }
@@ -84909,8 +84646,8 @@ function convertMaterials(tileContent) {
84909
84646
  function convertMaterial(sourceMaterial) {
84910
84647
  const material = {
84911
84648
  doubleSided: sourceMaterial.doubleSided,
84912
- emissiveFactor: sourceMaterial.emissiveFactor.map((c) => Math.round(c * 255)),
84913
- alphaMode: (sourceMaterial.alphaMode || "OPAQUE").toLowerCase(),
84649
+ emissiveFactor: sourceMaterial.emissiveFactor?.map((c) => Math.round(c * 255)),
84650
+ alphaMode: convertAlphaMode(sourceMaterial.alphaMode),
84914
84651
  pbrMetallicRoughness: {
84915
84652
  roughnessFactor: sourceMaterial?.pbrMetallicRoughness?.roughnessFactor || DEFAULT_ROUGHNESS_FACTOR,
84916
84653
  metallicFactor: sourceMaterial?.pbrMetallicRoughness?.metallicFactor || DEFAULT_METALLIC_FACTOR
@@ -84934,14 +84671,28 @@ function convertMaterial(sourceMaterial) {
84934
84671
  }
84935
84672
  return { material, texture };
84936
84673
  }
84674
+ function convertAlphaMode(gltfAlphaMode) {
84675
+ switch (gltfAlphaMode) {
84676
+ case "OPAQUE":
84677
+ return "opaque";
84678
+ case "MASK":
84679
+ return "mask";
84680
+ case "BLEND":
84681
+ return "blend";
84682
+ default:
84683
+ return "opaque";
84684
+ }
84685
+ }
84937
84686
  function getDefaultMaterial() {
84938
84687
  return {
84939
84688
  alphaMode: "opaque",
84940
- pbrMetallicRoughness: {}
84689
+ pbrMetallicRoughness: {
84690
+ metallicFactor: 1,
84691
+ roughnessFactor: 1
84692
+ }
84941
84693
  };
84942
84694
  }
84943
- function getSharedResources(tileContent, nodeId) {
84944
- const gltfMaterials = tileContent.gltf.materials;
84695
+ function getSharedResources(gltfMaterials, nodeId) {
84945
84696
  const i3sResources = {};
84946
84697
  if (!gltfMaterials || !gltfMaterials.length) {
84947
84698
  return i3sResources;
@@ -84970,7 +84721,7 @@ function convertGLTFMaterialToI3sSharedResources(gltfMaterial, nodeId) {
84970
84721
  colorFactor[3] = colorFactor[3] || 1;
84971
84722
  }
84972
84723
  return {
84973
- materialDefinitionInfo: extractSharedResourcesMaterialInfo(colorFactor, metallicFactor),
84724
+ materialDefinitionInfo: extractSharedResourcesMaterialInfo(colorFactor || [1, 1, 1, 1], metallicFactor),
84974
84725
  textureDefinitionInfo
84975
84726
  };
84976
84727
  }
@@ -84985,24 +84736,27 @@ function extractSharedResourcesMaterialInfo(baseColorFactor, metallicFactor = 1)
84985
84736
  dielectricSpecular[3] = 1;
84986
84737
  const specular = dielectricSpecular.lerp(dielectricSpecular, baseColorVector, metallicFactor);
84987
84738
  return {
84988
- diffuse: diffuse.toArray(),
84989
- specular: specular.toArray()
84739
+ params: {
84740
+ diffuse: diffuse.toArray(),
84741
+ specular: specular.toArray(),
84742
+ renderMode: "solid"
84743
+ }
84990
84744
  };
84991
84745
  }
84992
84746
  function extractSharedResourcesTextureInfo(texture, nodeId) {
84993
84747
  return {
84994
- encoding: [texture.source.mimeType],
84748
+ encoding: texture?.source?.mimeType ? [texture.source.mimeType] : void 0,
84995
84749
  images: [
84996
84750
  {
84997
84751
  id: generateImageId(texture, nodeId),
84998
- size: texture.source.image.width,
84999
- length: [texture.source.image.data.length]
84752
+ size: texture.source?.image.width,
84753
+ length: [texture.source?.image.data.length]
85000
84754
  }
85001
84755
  ]
85002
84756
  };
85003
84757
  }
85004
84758
  function generateImageId(texture, nodeId) {
85005
- const { width, height } = texture.source.image;
84759
+ const { width, height } = texture.source?.image;
85006
84760
  const levelCountOfTexture = 1;
85007
84761
  const indexOfLevel = 0;
85008
84762
  const indexOfTextureInStore = nodeId + 1;
@@ -85074,7 +84828,9 @@ function convertBatchTableToAttributeBuffers(batchTable, featureIds, attributeSt
85074
84828
  default:
85075
84829
  attributeBuffer = generateStringAttributeBuffer(batchTableWithFeatureIds[key]);
85076
84830
  }
85077
- attributeBuffers.push(attributeBuffer);
84831
+ if (attributeBuffer) {
84832
+ attributeBuffers.push(attributeBuffer);
84833
+ }
85078
84834
  }
85079
84835
  }
85080
84836
  return attributeBuffers;
@@ -85117,7 +84873,7 @@ function generateBigUint64Array(featureIds) {
85117
84873
  }
85118
84874
  return typedFeatureIds;
85119
84875
  }
85120
- async function generateCompressedGeometry(vertexCount, convertedAttributes, attributes) {
84876
+ async function generateCompressedGeometry(vertexCount, convertedAttributes, attributes, dracoWorkerSoure) {
85121
84877
  const { positions, normals, texCoords, colors, featureIds, faceRange } = attributes;
85122
84878
  const indices = new Uint32Array(vertexCount);
85123
84879
  for (let index = 0; index < indices.length; index++) {
@@ -85140,12 +84896,16 @@ async function generateCompressedGeometry(vertexCount, convertedAttributes, attr
85140
84896
  "i3s-feature-ids": new Int32Array(featureIds)
85141
84897
  }
85142
84898
  };
85143
- return new Uint8Array(await encode({ attributes: compressedAttributes, indices }, DracoWriter, {
84899
+ return encode({ attributes: compressedAttributes, indices }, DracoWriterWorker, {
84900
+ ...DracoWriterWorker.options,
84901
+ source: dracoWorkerSoure,
84902
+ reuseWorkers: true,
84903
+ _nodeWorkers: true,
85144
84904
  draco: {
85145
84905
  method: "MESH_SEQUENTIAL_ENCODING",
85146
84906
  attributesMetadata
85147
84907
  }
85148
- }));
84908
+ });
85149
84909
  }
85150
84910
  function generateFeatureIndexAttribute(featureIndex, faceRange) {
85151
84911
  const orderedFeatureIndices = new Uint32Array(featureIndex.length);
@@ -85205,7 +84965,7 @@ async function createSceneServerPath(layerName, layers0, rootPath) {
85205
84965
  await writeFile3(nodePagePath, JSON.stringify(sceneServer));
85206
84966
  }
85207
84967
 
85208
- // src/lib/utils/lod-conversion-utils.js
84968
+ // src/lib/utils/lod-conversion-utils.ts
85209
84969
  var DEFAULT_MAXIMUM_SCREEN_SPACE_ERROR = 16;
85210
84970
  function convertGeometricErrorToScreenThreshold(tile, coordinates) {
85211
84971
  const lodSelection = [];
@@ -85244,13 +85004,13 @@ function convertScreenThresholdToGeometricError(node2) {
85244
85004
  }
85245
85005
 
85246
85006
  // src/pgm-loader.ts
85247
- var import_geoid = __toModule(require_es510());
85248
- var VERSION9 = typeof __VERSION__ !== "undefined" ? __VERSION__ : "latest";
85007
+ var import_geoid = __toModule(require_es59());
85008
+ var VERSION10 = typeof __VERSION__ !== "undefined" ? __VERSION__ : "latest";
85249
85009
  var PGMLoader = {
85250
85010
  name: "PGM - Netpbm grayscale image format",
85251
85011
  id: "pgm",
85252
85012
  module: "tile-converter",
85253
- version: VERSION9,
85013
+ version: VERSION10,
85254
85014
  mimeTypes: ["image/x-portable-graymap"],
85255
85015
  parse: async (arrayBuffer, options) => (0, import_geoid.parsePGM)(new Uint8Array(arrayBuffer), options),
85256
85016
  extensions: ["pgm"],
@@ -85761,10 +85521,10 @@ function transfromTextureDefinitions(textureDefinitionInfos, thisObject, origina
85761
85521
  }
85762
85522
 
85763
85523
  // src/i3s-converter/helpers/node-debug.ts
85764
- var import_culling6 = __toModule(require_es59());
85765
- var import_engine = __toModule(require_es516());
85524
+ var import_culling6 = __toModule(require_es58());
85525
+ var import_engine = __toModule(require_es515());
85766
85526
  var import_core23 = __toModule(require_es56());
85767
- var import_geospatial9 = __toModule(require_es57());
85527
+ var import_geospatial10 = __toModule(require_es57());
85768
85528
  function validateNodeBoundingVolumes(node2) {
85769
85529
  if (!node2?.parentNode?.obb || !node2?.parentNode?.mbs) {
85770
85530
  return [];
@@ -85805,7 +85565,7 @@ function getTileObbVertices(node2) {
85805
85565
  const halfSize = node2.obb.halfSize;
85806
85566
  const attributes = geometry.getAttributes();
85807
85567
  const positions = new Float32Array(attributes.POSITION.value);
85808
- const obbCenterCartesian = import_geospatial9.Ellipsoid.WGS84.cartographicToCartesian(node2.obb.center);
85568
+ const obbCenterCartesian = import_geospatial10.Ellipsoid.WGS84.cartographicToCartesian(node2.obb.center);
85809
85569
  let vertices = [];
85810
85570
  for (let i = 0; i < positions.length; i += 3) {
85811
85571
  const positionsVector = new import_core23.Vector3(positions[i] *= halfSize[0], positions[i + 1] *= halfSize[1], positions[i + 2] *= halfSize[2]);
@@ -85818,7 +85578,7 @@ function isAllVerticesInsideBoundingVolume(boundingVolume, positions) {
85818
85578
  let isVerticesInsideObb = true;
85819
85579
  for (let index = 0; index < positions.length / 3; index += 3) {
85820
85580
  const point = [positions[index], positions[index + 1], positions[index + 2]];
85821
- const cartographicPoint = import_geospatial9.Ellipsoid.WGS84.cartesianToCartographic(point);
85581
+ const cartographicPoint = import_geospatial10.Ellipsoid.WGS84.cartesianToCartographic(point);
85822
85582
  const distance = boundingVolume.distanceTo(cartographicPoint);
85823
85583
  if (distance > 0) {
85824
85584
  isVerticesInsideObb = false;
@@ -85828,6 +85588,94 @@ function isAllVerticesInsideBoundingVolume(boundingVolume, positions) {
85828
85588
  return isVerticesInsideObb;
85829
85589
  }
85830
85590
 
85591
+ // src/lib/utils/queue.ts
85592
+ var Queue = class extends Array {
85593
+ enqueue(val) {
85594
+ this.push(val);
85595
+ }
85596
+ dequeue() {
85597
+ return this.shift();
85598
+ }
85599
+ peek() {
85600
+ return this[0];
85601
+ }
85602
+ isEmpty() {
85603
+ return this.length === 0;
85604
+ }
85605
+ };
85606
+
85607
+ // src/lib/utils/write-queue.ts
85608
+ var WriteQueue = class extends Queue {
85609
+ constructor(listeningInterval = 2e3, writeConcurrency = 400) {
85610
+ super();
85611
+ this.writePromise = null;
85612
+ this.fileMap = {};
85613
+ this.listeningInterval = listeningInterval;
85614
+ this.writeConcurrency = writeConcurrency;
85615
+ }
85616
+ startListening() {
85617
+ this.intervalId = setInterval(this.startWrite.bind(this), this.listeningInterval);
85618
+ }
85619
+ stopListening() {
85620
+ if (this.intervalId) {
85621
+ clearInterval(this.intervalId);
85622
+ }
85623
+ }
85624
+ async startWrite() {
85625
+ if (this.writePromise) {
85626
+ await this.writePromise;
85627
+ this.writePromise = null;
85628
+ return;
85629
+ }
85630
+ this.writePromise = this.doWrite();
85631
+ await this.writePromise;
85632
+ this.writePromise = null;
85633
+ }
85634
+ async finalize() {
85635
+ this.stopListening();
85636
+ await this.startWrite();
85637
+ }
85638
+ async doWrite() {
85639
+ while (this.length) {
85640
+ const promises = [];
85641
+ const archiveKeys = [];
85642
+ for (let i = 0; i < this.writeConcurrency; i++) {
85643
+ const item = this.dequeue();
85644
+ if (!item) {
85645
+ break;
85646
+ }
85647
+ const { archiveKey, writePromise } = item;
85648
+ archiveKeys.push(archiveKey);
85649
+ promises.push(writePromise);
85650
+ }
85651
+ const writeResults = await Promise.all(promises);
85652
+ this.updateFileMap(archiveKeys, writeResults);
85653
+ }
85654
+ this.writePromise = null;
85655
+ }
85656
+ updateFileMap(archiveKeys, writeResults) {
85657
+ for (let i = 0; i < archiveKeys.length; i++) {
85658
+ const archiveKey = archiveKeys[i];
85659
+ if (!archiveKey) {
85660
+ continue;
85661
+ }
85662
+ this.fileMap[archiveKey] = writeResults[i];
85663
+ }
85664
+ }
85665
+ };
85666
+
85667
+ // src/i3s-attributes-worker.ts
85668
+ var VERSION11 = typeof __VERSION__ !== "undefined" ? __VERSION__ : "latest";
85669
+ var I3SAttributesWorker = {
85670
+ id: "i3s-attributes",
85671
+ name: "I3S Attributes Worker",
85672
+ module: "tile-converter",
85673
+ version: VERSION11,
85674
+ options: {
85675
+ useCartesianPositions: false
85676
+ }
85677
+ };
85678
+
85831
85679
  // src/i3s-converter/i3s-converter.ts
85832
85680
  var ION_DEFAULT_TOKEN = import_process.default.env.IonToken || "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJqdGkiOiJlYWMxMzcyYy0zZjJkLTQwODctODNlNi01MDRkZmMzMjIxOWIiLCJpZCI6OTYyMCwic2NvcGVzIjpbImFzbCIsImFzciIsImdjIl0sImlhdCI6MTU2Mjg2NjI3M30.1FNiClUyk00YH_nWfSGpiQAjR5V2OvREDq1PJ5QMjWQ";
85833
85681
  var HARDCODED_NODES_PER_PAGE = 64;
@@ -85847,8 +85695,9 @@ var I3SConverter = class {
85847
85695
  this.sourceTileset = null;
85848
85696
  this.geoidHeightModel = null;
85849
85697
  this.Loader = Tiles3DLoader;
85698
+ this.workerSource = {};
85699
+ this.writeQueue = new WriteQueue();
85850
85700
  this.nodePages = new NodePages(writeFile3, HARDCODED_NODES_PER_PAGE);
85851
- this.fileMap = {};
85852
85701
  this.options = {};
85853
85702
  this.layers0Path = "";
85854
85703
  this.materialMap = new Map();
@@ -85863,6 +85712,7 @@ var I3SConverter = class {
85863
85712
  this.validate = false;
85864
85713
  this.generateTextures = false;
85865
85714
  this.generateBoundingVolumes = false;
85715
+ this.layersHasTexture = false;
85866
85716
  }
85867
85717
  async convert(options) {
85868
85718
  this.conversionStartTime = import_process.default.hrtime();
@@ -85885,12 +85735,15 @@ var I3SConverter = class {
85885
85735
  this.Loader = inputUrl.indexOf(CESIUM_DATASET_PREFIX) !== -1 ? CesiumIonLoader : Tiles3DLoader;
85886
85736
  this.generateTextures = Boolean(generateTextures);
85887
85737
  this.generateBoundingVolumes = Boolean(generateBoundingVolumes);
85738
+ this.writeQueue = new WriteQueue();
85739
+ this.writeQueue.startListening();
85888
85740
  console.log("Loading egm file...");
85889
85741
  this.geoidHeightModel = await load(egmFilePath, PGMLoader);
85890
85742
  console.log("Loading egm file completed!");
85891
85743
  if (slpk) {
85892
85744
  this.nodePages.useWriteFunction(writeFileForSlpk);
85893
85745
  }
85746
+ await this.loadWorkers();
85894
85747
  const preloadOptions = await this._fetchPreloadOptions();
85895
85748
  const tilesetOptions = { loadOptions: { basis: { format: "rgba32" } } };
85896
85749
  if (preloadOptions.headers) {
@@ -85901,6 +85754,8 @@ var I3SConverter = class {
85901
85754
  this.sourceTileset = new Tileset3D(sourceTilesetJson, tilesetOptions);
85902
85755
  await this._createAndSaveTileset(outputPath, tilesetName);
85903
85756
  await this._finishConversion({ slpk: Boolean(slpk), outputPath, tilesetName });
85757
+ const workerFarm = WorkerFarm.getWorkerFarm({});
85758
+ workerFarm.destroy();
85904
85759
  return sourceTilesetJson;
85905
85760
  }
85906
85761
  async _createAndSaveTileset(outputPath, tilesetName) {
@@ -85925,14 +85780,19 @@ var I3SConverter = class {
85925
85780
  const root0 = this._formRootNodeIndexDocument(boundingVolumes);
85926
85781
  await this._convertNodesTree(root0, sourceRootTile, parentId, boundingVolumes);
85927
85782
  this.layers0.materialDefinitions = this.materialDefinitions;
85783
+ if (this.layersHasTexture === false) {
85784
+ this.layers0.store.defaultGeometrySchema.ordering = this.layers0.store.defaultGeometrySchema.ordering.filter((attribute) => attribute !== "uv0");
85785
+ }
85928
85786
  await this._writeLayers0();
85929
85787
  createSceneServerPath(tilesetName, this.layers0, tilesetPath);
85930
85788
  await this._writeNodeIndexDocument(root0, "root", (0, import_path7.join)(this.layers0Path, "nodes", "root"));
85931
- await this.nodePages.save(this.layers0Path, this.fileMap, isCreateSlpk);
85789
+ await this.nodePages.save(this.layers0Path, this.writeQueue, isCreateSlpk);
85790
+ await this.writeQueue.finalize();
85932
85791
  await this._createSlpk(tilesetPath);
85933
85792
  }
85934
85793
  _formLayers0(tilesetName) {
85935
- const extent = convertCommonToI3SExtentCoordinate(this.sourceTileset);
85794
+ const fullExtent = convertBoundingVolumeToI3SFullExtent(this.sourceTileset?.boundingVolume || this.sourceTileset?.root?.boundingVolume);
85795
+ const extent = [fullExtent.xmin, fullExtent.ymin, fullExtent.xmax, fullExtent.ymax];
85936
85796
  const layers0data = {
85937
85797
  version: `{${v4().toUpperCase()}}`,
85938
85798
  id: 0,
@@ -85981,9 +85841,12 @@ var I3SConverter = class {
85981
85841
  const [child] = await this._createNode(root0, sourceRootTile, parentId, 0);
85982
85842
  const childPath = (0, import_path7.join)(this.layers0Path, "nodes", child.path);
85983
85843
  if (this.options.slpk) {
85984
- this.fileMap["nodes/1/3dNodeIndexDocument.json.gz"] = await writeFileForSlpk(childPath, JSON.stringify(child), "3dNodeIndexDocument.json");
85844
+ this.writeQueue.enqueue({
85845
+ archiveKey: "nodes/1/3dNodeIndexDocument.json.gz",
85846
+ writePromise: writeFileForSlpk(childPath, JSON.stringify(child), "3dNodeIndexDocument.json")
85847
+ });
85985
85848
  } else {
85986
- await writeFile3(childPath, JSON.stringify(child));
85849
+ this.writeQueue.enqueue({ writePromise: writeFile3(childPath, JSON.stringify(child)) });
85987
85850
  }
85988
85851
  } else {
85989
85852
  await this._addChildrenWithNeighborsAndWriteFile({
@@ -85997,16 +85860,24 @@ var I3SConverter = class {
85997
85860
  }
85998
85861
  async _writeLayers0() {
85999
85862
  if (this.options.slpk) {
86000
- this.fileMap["3dSceneLayer.json.gz"] = await writeFileForSlpk(this.layers0Path, JSON.stringify(this.layers0), "3dSceneLayer.json");
85863
+ this.writeQueue.enqueue({
85864
+ archiveKey: "3dSceneLayer.json.gz",
85865
+ writePromise: writeFileForSlpk(this.layers0Path, JSON.stringify(this.layers0), "3dSceneLayer.json")
85866
+ });
86001
85867
  } else {
86002
- await writeFile3(this.layers0Path, JSON.stringify(this.layers0));
85868
+ this.writeQueue.enqueue({
85869
+ writePromise: writeFile3(this.layers0Path, JSON.stringify(this.layers0))
85870
+ });
86003
85871
  }
86004
85872
  }
86005
85873
  async _writeNodeIndexDocument(root0, nodePath, rootPath) {
86006
85874
  if (this.options.slpk) {
86007
- this.fileMap[`nodes/${nodePath}/3dNodeIndexDocument.json.gz`] = await writeFileForSlpk(rootPath, JSON.stringify(root0), "3dNodeIndexDocument.json");
85875
+ this.writeQueue.enqueue({
85876
+ archiveKey: `nodes/${nodePath}/3dNodeIndexDocument.json.gz`,
85877
+ writePromise: writeFileForSlpk(rootPath, JSON.stringify(root0), "3dNodeIndexDocument.json")
85878
+ });
86008
85879
  } else {
86009
- await writeFile3(rootPath, JSON.stringify(root0));
85880
+ this.writeQueue.enqueue({ writePromise: writeFile3(rootPath, JSON.stringify(root0)) });
86010
85881
  }
86011
85882
  }
86012
85883
  async _createSlpk(tilesetPath) {
@@ -86107,6 +85978,7 @@ var I3SConverter = class {
86107
85978
  boundingVolumes: null
86108
85979
  };
86109
85980
  for (const resources of resourcesData || [emptyResources]) {
85981
+ this.layersHasTexture = this.layersHasTexture || Boolean(resources.texture);
86110
85982
  if (this.generateBoundingVolumes && resources.boundingVolumes) {
86111
85983
  boundingVolumes = resources.boundingVolumes;
86112
85984
  }
@@ -86145,7 +86017,7 @@ var I3SConverter = class {
86145
86017
  if (!this.isContentSupported(sourceTile)) {
86146
86018
  return null;
86147
86019
  }
86148
- const resourcesData = await convertB3dmToI3sGeometry(sourceTile.content, Number(this.nodePages.nodesCounter), this.featuresHashArray, this.layers0?.attributeStorageInfo, this.options.draco, this.generateBoundingVolumes, this.geoidHeightModel);
86020
+ const resourcesData = await convertB3dmToI3sGeometry(sourceTile.content, Number(this.nodePages.nodesCounter), this.featuresHashArray, this.layers0?.attributeStorageInfo, this.options.draco, this.generateBoundingVolumes, this.geoidHeightModel, this.workerSource);
86149
86021
  return resourcesData;
86150
86022
  }
86151
86023
  _createNodeInNodePages(maxScreenThresholdSQ, boundingVolumes, sourceTile, parentId, resources) {
@@ -86242,31 +86114,47 @@ var I3SConverter = class {
86242
86114
  async _writeGeometries(geometryBuffer, compressedGeometry, childPath, slpkChildPath) {
86243
86115
  if (this.options.slpk) {
86244
86116
  const slpkGeometryPath = (0, import_path7.join)(childPath, "geometries");
86245
- this.fileMap[`${slpkChildPath}/geometries/0.bin.gz`] = await writeFileForSlpk(slpkGeometryPath, geometryBuffer, "0.bin");
86117
+ this.writeQueue.enqueue({
86118
+ archiveKey: `${slpkChildPath}/geometries/0.bin.gz`,
86119
+ writePromise: writeFileForSlpk(slpkGeometryPath, geometryBuffer, "0.bin")
86120
+ });
86246
86121
  } else {
86247
86122
  const geometryPath = (0, import_path7.join)(childPath, "geometries/0/");
86248
- await writeFile3(geometryPath, geometryBuffer, "index.bin");
86123
+ this.writeQueue.enqueue({
86124
+ writePromise: writeFile3(geometryPath, geometryBuffer, "index.bin")
86125
+ });
86249
86126
  }
86250
86127
  if (this.options.draco) {
86251
86128
  if (this.options.slpk) {
86252
86129
  const slpkCompressedGeometryPath = (0, import_path7.join)(childPath, "geometries");
86253
- this.fileMap[`${slpkChildPath}/geometries/1.bin.gz`] = await writeFileForSlpk(slpkCompressedGeometryPath, compressedGeometry, "1.bin");
86130
+ this.writeQueue.enqueue({
86131
+ archiveKey: `${slpkChildPath}/geometries/1.bin.gz`,
86132
+ writePromise: writeFileForSlpk(slpkCompressedGeometryPath, compressedGeometry, "1.bin")
86133
+ });
86254
86134
  } else {
86255
86135
  const compressedGeometryPath = (0, import_path7.join)(childPath, "geometries/1/");
86256
- await writeFile3(compressedGeometryPath, compressedGeometry, "index.bin");
86136
+ this.writeQueue.enqueue({
86137
+ writePromise: writeFile3(compressedGeometryPath, compressedGeometry, "index.bin")
86138
+ });
86257
86139
  }
86258
86140
  }
86259
86141
  }
86260
86142
  async _writeShared(sharedResources, childPath, slpkChildPath, nodePath) {
86143
+ if (!sharedResources) {
86144
+ return;
86145
+ }
86261
86146
  sharedResources.nodePath = nodePath;
86262
86147
  const sharedData = (0, import_json_map_transform6.default)(sharedResources, SHARED_RESOURCES());
86263
86148
  const sharedDataStr = JSON.stringify(sharedData);
86264
86149
  if (this.options.slpk) {
86265
86150
  const slpkSharedPath = (0, import_path7.join)(childPath, "shared");
86266
- this.fileMap[`${slpkChildPath}/shared/sharedResource.json.gz`] = await writeFileForSlpk(slpkSharedPath, sharedDataStr, "sharedResource.json");
86151
+ this.writeQueue.enqueue({
86152
+ archiveKey: `${slpkChildPath}/shared/sharedResource.json.gz`,
86153
+ writePromise: writeFileForSlpk(slpkSharedPath, sharedDataStr, "sharedResource.json")
86154
+ });
86267
86155
  } else {
86268
86156
  const sharedPath = (0, import_path7.join)(childPath, "shared/");
86269
- await writeFile3(sharedPath, sharedDataStr);
86157
+ this.writeQueue.enqueue({ writePromise: writeFile3(sharedPath, sharedDataStr) });
86270
86158
  }
86271
86159
  }
86272
86160
  async _writeTexture(texture, childPath, slpkChildPath) {
@@ -86281,7 +86169,7 @@ var I3SConverter = class {
86281
86169
  await this.writeTextureFile(textureData, "0", format, childPath, slpkChildPath);
86282
86170
  if (this.generateTextures) {
86283
86171
  formats2.push({ name: "1", format: "ktx2" });
86284
- const ktx2TextureData = new Uint8Array(await encode(texture.image, KTX2BasisUniversalTextureWriter));
86172
+ const ktx2TextureData = new Uint8Array(await encode(texture.image, KTX2BasisWriter));
86285
86173
  await this.writeTextureFile(ktx2TextureData, "1", "ktx2", childPath, slpkChildPath);
86286
86174
  }
86287
86175
  break;
@@ -86305,23 +86193,33 @@ var I3SConverter = class {
86305
86193
  if (this.options.slpk) {
86306
86194
  const slpkTexturePath = (0, import_path7.join)(childPath, "textures");
86307
86195
  const compress = false;
86308
- this.fileMap[`${slpkChildPath}/textures/${name8}.${format}`] = await writeFileForSlpk(slpkTexturePath, textureData, `${name8}.${format}`, compress);
86196
+ this.writeQueue.enqueue({
86197
+ archiveKey: `${slpkChildPath}/textures/${name8}.${format}`,
86198
+ writePromise: writeFileForSlpk(slpkTexturePath, textureData, `${name8}.${format}`, compress)
86199
+ });
86309
86200
  } else {
86310
86201
  const texturePath = (0, import_path7.join)(childPath, `textures/${name8}/`);
86311
- await writeFile3(texturePath, textureData, `index.${format}`);
86202
+ this.writeQueue.enqueue({
86203
+ writePromise: writeFile3(texturePath, textureData, `index.${format}`)
86204
+ });
86312
86205
  }
86313
86206
  }
86314
- async _writeAttributes(attributes, childPath, slpkChildPath) {
86315
- if (attributes.length && this.layers0?.attributeStorageInfo?.length) {
86207
+ async _writeAttributes(attributes = [], childPath, slpkChildPath) {
86208
+ if (attributes?.length && this.layers0?.attributeStorageInfo?.length) {
86316
86209
  for (let index = 0; index < attributes.length; index++) {
86317
86210
  const folderName = this.layers0.attributeStorageInfo[index].key;
86318
86211
  const fileBuffer = new Uint8Array(attributes[index]);
86319
86212
  if (this.options.slpk) {
86320
86213
  const slpkAttributesPath = (0, import_path7.join)(childPath, "attributes", folderName);
86321
- this.fileMap[`${slpkChildPath}/attributes/${folderName}.bin.gz`] = await writeFileForSlpk(slpkAttributesPath, fileBuffer, "0.bin");
86214
+ this.writeQueue.enqueue({
86215
+ archiveKey: `${slpkChildPath}/attributes/${folderName}.bin.gz`,
86216
+ writePromise: writeFileForSlpk(slpkAttributesPath, fileBuffer, "0.bin")
86217
+ });
86322
86218
  } else {
86323
86219
  const attributesPath = (0, import_path7.join)(childPath, `attributes/${folderName}/0`);
86324
- await writeFile3(attributesPath, fileBuffer, "index.bin");
86220
+ this.writeQueue.enqueue({
86221
+ writePromise: writeFile3(attributesPath, fileBuffer, "index.bin")
86222
+ });
86325
86223
  }
86326
86224
  }
86327
86225
  }
@@ -86527,6 +86425,20 @@ var I3SConverter = class {
86527
86425
  isContentSupported(sourceRootTile) {
86528
86426
  return ["b3dm", "glTF"].includes(sourceRootTile?.content?.type);
86529
86427
  }
86428
+ async loadWorkers() {
86429
+ console.log(`Loading workers source...`);
86430
+ if (this.options.draco) {
86431
+ const url = getWorkerURL(DracoWriterWorker, { ...getGlobalLoaderOptions() });
86432
+ const sourceResponse2 = await fetchFile(url);
86433
+ const source2 = await sourceResponse2.text();
86434
+ this.workerSource.draco = source2;
86435
+ }
86436
+ const i3sAttributesWorkerUrl = getWorkerURL(I3SAttributesWorker, { ...getGlobalLoaderOptions() });
86437
+ const sourceResponse = await fetchFile(i3sAttributesWorkerUrl);
86438
+ const source = await sourceResponse.text();
86439
+ this.workerSource.I3SAttributes = source;
86440
+ console.log(`Loading workers source completed!`);
86441
+ }
86530
86442
  };
86531
86443
 
86532
86444
  // src/3d-tiles-converter/3d-tiles-converter.ts
@@ -86536,7 +86448,7 @@ var import_json_map_transform8 = __toModule(require_json_map_transform());
86536
86448
 
86537
86449
  // ../i3s/src/lib/parsers/parse-i3s-tile-content.ts
86538
86450
  var import_core26 = __toModule(require_es56());
86539
- var import_geospatial10 = __toModule(require_es57());
86451
+ var import_geospatial11 = __toModule(require_es57());
86540
86452
 
86541
86453
  // ../i3s/src/types.ts
86542
86454
  var DATA_TYPE;
@@ -86581,7 +86493,7 @@ function generateTilesetAttributeUrls(tileset, resource) {
86581
86493
  }
86582
86494
 
86583
86495
  // ../i3s/src/lib/parsers/constants.ts
86584
- var import_constants14 = __toModule(require_es517());
86496
+ var import_constants14 = __toModule(require_es516());
86585
86497
  function getConstructorForDataFormat(dataType) {
86586
86498
  switch (dataType) {
86587
86499
  case DATA_TYPE.UInt8:
@@ -86671,7 +86583,10 @@ async function parseI3STileContent(arrayBuffer, tile, tileset, options, context)
86671
86583
  tile.content.texture = await parse(arrayBuffer2, loader, options2);
86672
86584
  }
86673
86585
  } else if (loader === CompressedTextureLoader || loader === BasisLoader) {
86674
- const texture = await load(arrayBuffer2, loader, tile.textureLoaderOptions);
86586
+ let texture = await load(arrayBuffer2, loader, tile.textureLoaderOptions);
86587
+ if (loader === BasisLoader) {
86588
+ texture = texture[0];
86589
+ }
86675
86590
  tile.content.texture = {
86676
86591
  compressed: true,
86677
86592
  mipmaps: false,
@@ -86823,38 +86738,38 @@ function parseHeaders(tileset, arrayBuffer) {
86823
86738
  byteOffset
86824
86739
  };
86825
86740
  }
86826
- function normalizeAttributes(arrayBuffer, byteOffset, vertexAttributes, vertexCount, attributesOrder) {
86741
+ function normalizeAttributes(arrayBuffer, byteOffset, vertexAttributes, attributeCount, attributesOrder) {
86827
86742
  const attributes = {};
86828
86743
  for (const attribute of attributesOrder) {
86829
86744
  if (vertexAttributes[attribute]) {
86830
86745
  const { valueType, valuesPerElement } = vertexAttributes[attribute];
86831
- const count = vertexCount;
86832
- if (byteOffset + count * valuesPerElement > arrayBuffer.byteLength) {
86746
+ if (byteOffset + attributeCount * valuesPerElement * sizeOf(valueType) <= arrayBuffer.byteLength) {
86747
+ const buffer = arrayBuffer.slice(byteOffset);
86748
+ let value;
86749
+ if (valueType === "UInt64") {
86750
+ value = parseUint64Values(buffer, attributeCount * valuesPerElement, sizeOf(valueType));
86751
+ } else {
86752
+ const TypedArrayType = getConstructorForDataFormat(valueType);
86753
+ value = new TypedArrayType(buffer, 0, attributeCount * valuesPerElement);
86754
+ }
86755
+ attributes[attribute] = {
86756
+ value,
86757
+ type: GL_TYPE_MAP[valueType],
86758
+ size: valuesPerElement
86759
+ };
86760
+ switch (attribute) {
86761
+ case "color":
86762
+ attributes.color.normalized = true;
86763
+ break;
86764
+ case "position":
86765
+ case "region":
86766
+ case "normal":
86767
+ default:
86768
+ }
86769
+ byteOffset = byteOffset + attributeCount * valuesPerElement * sizeOf(valueType);
86770
+ } else if (attribute !== "uv0") {
86833
86771
  break;
86834
86772
  }
86835
- const buffer = arrayBuffer.slice(byteOffset);
86836
- let value;
86837
- if (valueType === "UInt64") {
86838
- value = parseUint64Values(buffer, count * valuesPerElement, sizeOf(valueType));
86839
- } else {
86840
- const TypedArrayType = getConstructorForDataFormat(valueType);
86841
- value = new TypedArrayType(buffer, 0, count * valuesPerElement);
86842
- }
86843
- attributes[attribute] = {
86844
- value,
86845
- type: GL_TYPE_MAP[valueType],
86846
- size: valuesPerElement
86847
- };
86848
- switch (attribute) {
86849
- case "color":
86850
- attributes.color.normalized = true;
86851
- break;
86852
- case "position":
86853
- case "region":
86854
- case "normal":
86855
- default:
86856
- }
86857
- byteOffset = byteOffset + count * valuesPerElement * sizeOf(valueType);
86858
86773
  }
86859
86774
  }
86860
86775
  return { attributes, byteOffset };
@@ -86879,8 +86794,8 @@ function parsePositions2(attribute, tile) {
86879
86794
  const enuMatrix = new import_core26.Matrix4();
86880
86795
  const cartographicOrigin = new import_core26.Vector3(mbs[0], mbs[1], mbs[2]);
86881
86796
  const cartesianOrigin = new import_core26.Vector3();
86882
- import_geospatial10.Ellipsoid.WGS84.cartographicToCartesian(cartographicOrigin, cartesianOrigin);
86883
- import_geospatial10.Ellipsoid.WGS84.eastNorthUpToFixedFrame(cartesianOrigin, enuMatrix);
86797
+ import_geospatial11.Ellipsoid.WGS84.cartographicToCartesian(cartographicOrigin, cartesianOrigin);
86798
+ import_geospatial11.Ellipsoid.WGS84.eastNorthUpToFixedFrame(cartesianOrigin, enuMatrix);
86884
86799
  attribute.value = offsetsToCartesians(value, metadata, cartographicOrigin);
86885
86800
  return enuMatrix;
86886
86801
  }
@@ -86894,7 +86809,7 @@ function offsetsToCartesians(vertices, metadata = {}, cartographicOrigin) {
86894
86809
  positions[i + 2] = vertices[i + 2] + cartographicOrigin.z;
86895
86810
  }
86896
86811
  for (let i = 0; i < positions.length; i += 3) {
86897
- import_geospatial10.Ellipsoid.WGS84.cartographicToCartesian(positions.subarray(i, i + 3), scratchVector5);
86812
+ import_geospatial11.Ellipsoid.WGS84.cartographicToCartesian(positions.subarray(i, i + 3), scratchVector5);
86898
86813
  positions[i] = scratchVector5.x;
86899
86814
  positions[i + 1] = scratchVector5.y;
86900
86815
  positions[i + 2] = scratchVector5.z;
@@ -87005,13 +86920,13 @@ function getFeatureIdsFromFeatureIndexMetadata(featureIndex) {
87005
86920
  }
87006
86921
 
87007
86922
  // ../i3s/src/i3s-content-loader.ts
87008
- var VERSION10 = typeof __VERSION__ !== "undefined" ? __VERSION__ : "latest";
86923
+ var VERSION12 = typeof __VERSION__ !== "undefined" ? __VERSION__ : "beta";
87009
86924
  var I3SContentLoader = {
87010
86925
  name: "I3S Content (Indexed Scene Layers)",
87011
86926
  id: "i3s-content",
87012
86927
  module: "i3s",
87013
86928
  worker: true,
87014
- version: VERSION10,
86929
+ version: VERSION12,
87015
86930
  mimeTypes: ["application/octet-stream"],
87016
86931
  parse: parse6,
87017
86932
  extensions: ["bin"],
@@ -87026,11 +86941,11 @@ async function parse6(data, options, context) {
87026
86941
  }
87027
86942
 
87028
86943
  // ../i3s/src/lib/parsers/parse-i3s.ts
87029
- var import_culling7 = __toModule(require_es59());
87030
- var import_geospatial11 = __toModule(require_es57());
86944
+ var import_culling7 = __toModule(require_es58());
86945
+ var import_geospatial12 = __toModule(require_es57());
87031
86946
 
87032
86947
  // ../i3s/src/i3s-node-page-loader.ts
87033
- var VERSION11 = typeof __VERSION__ !== "undefined" ? __VERSION__ : "latest";
86948
+ var VERSION13 = typeof __VERSION__ !== "undefined" ? __VERSION__ : "latest";
87034
86949
  async function parseNodePage(data) {
87035
86950
  return JSON.parse(new TextDecoder().decode(data));
87036
86951
  }
@@ -87038,7 +86953,7 @@ var I3SNodePageLoader = {
87038
86953
  name: "I3S Node Page",
87039
86954
  id: "i3s-node-page",
87040
86955
  module: "i3s",
87041
- version: VERSION11,
86956
+ version: VERSION13,
87042
86957
  mimeTypes: ["application/json"],
87043
86958
  parse: parse7,
87044
86959
  extensions: ["json"],
@@ -87082,10 +86997,14 @@ var I3SNodePagesTiles = class {
87082
86997
  async formTileFromNodePages(id) {
87083
86998
  const node2 = await this.getNodeById(id);
87084
86999
  const children = [];
87000
+ const childNodesPromises = [];
87085
87001
  for (const child of node2.children || []) {
87086
- const childNode = await this.getNodeById(child);
87002
+ childNodesPromises.push(this.getNodeById(child));
87003
+ }
87004
+ const childNodes = await Promise.all(childNodesPromises);
87005
+ for (const childNode of childNodes) {
87087
87006
  children.push({
87088
- id: child.toString(),
87007
+ id: childNode.index.toString(),
87089
87008
  obb: childNode.obb
87090
87009
  });
87091
87010
  }
@@ -87243,12 +87162,12 @@ function normalizeTileNonUrlData(tile) {
87243
87162
  if (tile.mbs) {
87244
87163
  mbs = tile.mbs;
87245
87164
  boundingVolume.sphere = [
87246
- ...import_geospatial11.Ellipsoid.WGS84.cartographicToCartesian(tile.mbs.slice(0, 3)),
87165
+ ...import_geospatial12.Ellipsoid.WGS84.cartographicToCartesian(tile.mbs.slice(0, 3)),
87247
87166
  tile.mbs[3]
87248
87167
  ];
87249
87168
  } else if (tile.obb) {
87250
87169
  boundingVolume.box = [
87251
- ...import_geospatial11.Ellipsoid.WGS84.cartographicToCartesian(tile.obb.center),
87170
+ ...import_geospatial12.Ellipsoid.WGS84.cartographicToCartesian(tile.obb.center),
87252
87171
  ...tile.obb.halfSize,
87253
87172
  ...tile.obb.quaternion
87254
87173
  ];
@@ -87268,7 +87187,7 @@ async function normalizeTilesetData(tileset, options, context) {
87268
87187
  tileset.url = context.url;
87269
87188
  if (tileset.nodePages) {
87270
87189
  tileset.nodePagesTile = new I3SNodePagesTiles(tileset, options);
87271
- tileset.root = await tileset.nodePagesTile.formTileFromNodePages(0);
87190
+ tileset.root = tileset.nodePagesTile.formTileFromNodePages(0);
87272
87191
  } else {
87273
87192
  const rootNodeUrl = getUrlWithToken(`${tileset.url}/nodes/root`, options.i3s?.token);
87274
87193
  tileset.root = await load(rootNodeUrl, tileset.loader, {
@@ -87288,7 +87207,7 @@ async function normalizeTilesetData(tileset, options, context) {
87288
87207
  }
87289
87208
 
87290
87209
  // ../i3s/src/i3s-loader.ts
87291
- var VERSION12 = typeof __VERSION__ !== "undefined" ? __VERSION__ : "latest";
87210
+ var VERSION14 = typeof __VERSION__ !== "undefined" ? __VERSION__ : "latest";
87292
87211
  var TILESET_REGEX = /layers\/[0-9]+$/;
87293
87212
  var TILE_HEADER_REGEX = /nodes\/([0-9-]+|root)$/;
87294
87213
  var SLPK_HEX = "504b0304";
@@ -87296,7 +87215,7 @@ var I3SLoader = {
87296
87215
  name: "I3S (Indexed Scene Layers)",
87297
87216
  id: "i3s",
87298
87217
  module: "i3s",
87299
- version: VERSION12,
87218
+ version: VERSION14,
87300
87219
  mimeTypes: ["application/octet-stream"],
87301
87220
  parse: parseI3S,
87302
87221
  extensions: ["bin"],
@@ -87425,12 +87344,12 @@ function parseStringsAttribute(arrayBuffer) {
87425
87344
  }
87426
87345
 
87427
87346
  // ../i3s/src/i3s-attribute-loader.ts
87428
- var VERSION13 = typeof __VERSION__ !== "undefined" ? __VERSION__ : "latest";
87347
+ var VERSION15 = typeof __VERSION__ !== "undefined" ? __VERSION__ : "latest";
87429
87348
  var I3SAttributeLoader = {
87430
87349
  name: "I3S Attribute",
87431
87350
  id: "i3s-attribute",
87432
87351
  module: "i3s",
87433
- version: VERSION13,
87352
+ version: VERSION15,
87434
87353
  mimeTypes: ["application/binary"],
87435
87354
  parse: parse8,
87436
87355
  extensions: ["bin"],
@@ -87444,15 +87363,15 @@ async function parse8(data, options) {
87444
87363
 
87445
87364
  // src/3d-tiles-converter/helpers/i3s-obb-to-3d-tiles-obb.ts
87446
87365
  var import_core30 = __toModule(require_es56());
87447
- var import_geospatial12 = __toModule(require_es57());
87448
- var import_culling8 = __toModule(require_es59());
87366
+ var import_geospatial13 = __toModule(require_es57());
87367
+ var import_culling8 = __toModule(require_es58());
87449
87368
  function i3sObbTo3dTilesObb(i3SObb, geoidHeightModel) {
87450
87369
  const tiles3DCenter = [
87451
87370
  i3SObb.center[0],
87452
87371
  i3SObb.center[1],
87453
87372
  i3SObb.center[2] + geoidHeightModel.getHeight(i3SObb.center[1], i3SObb.center[0])
87454
87373
  ];
87455
- const cartesianCenter = import_geospatial12.Ellipsoid.WGS84.cartographicToCartesian(tiles3DCenter, new import_core30.Vector3());
87374
+ const cartesianCenter = import_geospatial13.Ellipsoid.WGS84.cartographicToCartesian(tiles3DCenter, new import_core30.Vector3());
87456
87375
  const tiles3DObb = new import_culling8.OrientedBoundingBox().fromCenterHalfSizeQuaternion(cartesianCenter, i3SObb.halfSize, i3SObb.quaternion);
87457
87376
  return [...tiles3DObb.center, ...tiles3DObb.halfAxes.toArray()];
87458
87377
  }
@@ -87497,7 +87416,7 @@ var TILESET = () => ({
87497
87416
 
87498
87417
  // src/3d-tiles-converter/helpers/b3dm-converter.ts
87499
87418
  var import_core32 = __toModule(require_es56());
87500
- var import_geospatial13 = __toModule(require_es57());
87419
+ var import_geospatial14 = __toModule(require_es57());
87501
87420
 
87502
87421
  // src/3d-tiles-converter/helpers/texture-atlas.ts
87503
87422
  function convertTextureAtlas(texCoords, uvRegions) {
@@ -87534,18 +87453,18 @@ function normalizeRegions(regions) {
87534
87453
  var Z_UP_TO_Y_UP_MATRIX = new import_core32.Matrix4([1, 0, 0, 0, 0, 0, -1, 0, 0, 1, 0, 0, 0, 0, 0, 1]);
87535
87454
  var scratchVector6 = new import_core32.Vector3();
87536
87455
  var B3dmConverter = class {
87537
- async convert(i3sTile, attributes = null) {
87538
- this.i3sTile = i3sTile;
87539
- const gltf = await this.buildGltf(i3sTile);
87456
+ async convert(i3sAttributesData, featureAttributes = null) {
87457
+ const gltf = await this.buildGltf(i3sAttributesData);
87540
87458
  const b3dm = encodeSync({
87541
87459
  gltfEncoded: new Uint8Array(gltf),
87542
87460
  type: "b3dm",
87543
- featuresLength: this._getFeaturesLength(attributes),
87544
- batchTable: attributes
87461
+ featuresLength: this._getFeaturesLength(featureAttributes),
87462
+ batchTable: featureAttributes
87545
87463
  }, Tile3DWriter);
87546
87464
  return b3dm;
87547
87465
  }
87548
- async buildGltf(i3sTile) {
87466
+ async buildGltf(i3sAttributesData) {
87467
+ const { tileContent, textureFormat } = i3sAttributesData;
87549
87468
  const {
87550
87469
  material,
87551
87470
  attributes,
@@ -87553,9 +87472,9 @@ var B3dmConverter = class {
87553
87472
  cartesianOrigin,
87554
87473
  cartographicOrigin,
87555
87474
  modelMatrix
87556
- } = i3sTile.content;
87475
+ } = tileContent;
87557
87476
  const gltfBuilder = new GLTFScenegraph();
87558
- const textureIndex = await this._addI3sTextureToGltf(i3sTile, gltfBuilder);
87477
+ const textureIndex = await this._addI3sTextureToGltf(tileContent, textureFormat, gltfBuilder);
87559
87478
  const pbrMaterialInfo = this._convertI3sMaterialToGltfMaterial(material, textureIndex);
87560
87479
  const materialIndex = gltfBuilder.addMaterial(pbrMaterialInfo);
87561
87480
  const positions = attributes.positions;
@@ -87571,7 +87490,8 @@ var B3dmConverter = class {
87571
87490
  const meshIndex = gltfBuilder.addMesh({
87572
87491
  attributes,
87573
87492
  indices,
87574
- material: materialIndex
87493
+ material: materialIndex,
87494
+ mode: 4
87575
87495
  });
87576
87496
  const transformMatrix = this._generateTransformMatrix(cartesianOrigin);
87577
87497
  const nodeIndex = gltfBuilder.addNode({ meshIndex, matrix: transformMatrix });
@@ -87581,11 +87501,8 @@ var B3dmConverter = class {
87581
87501
  const gltfBuffer = encodeSync(gltfBuilder.gltf, GLTFWriter);
87582
87502
  return gltfBuffer;
87583
87503
  }
87584
- async _addI3sTextureToGltf(i3sTile, gltfBuilder) {
87585
- const {
87586
- content: { texture, material, attributes },
87587
- header: { textureFormat }
87588
- } = i3sTile;
87504
+ async _addI3sTextureToGltf(tileContent, textureFormat, gltfBuilder) {
87505
+ const { texture, material, attributes } = tileContent;
87589
87506
  let textureIndex = null;
87590
87507
  let selectedTexture = texture;
87591
87508
  if (!texture && material) {
@@ -87593,8 +87510,7 @@ var B3dmConverter = class {
87593
87510
  }
87594
87511
  if (selectedTexture) {
87595
87512
  const mimeType = this._deduceMimeTypeFromFormat(textureFormat);
87596
- const imageBuffer = await encode(selectedTexture, ImageWriter);
87597
- const imageIndex = gltfBuilder.addImage(imageBuffer, mimeType);
87513
+ const imageIndex = gltfBuilder.addImage(selectedTexture, mimeType);
87598
87514
  textureIndex = gltfBuilder.addTexture({ imageIndex });
87599
87515
  delete attributes.colors;
87600
87516
  }
@@ -87606,7 +87522,7 @@ var B3dmConverter = class {
87606
87522
  const vertex = positionsValue.subarray(index, index + 3);
87607
87523
  const cartesianOriginVector = new import_core32.Vector3(cartesianOrigin);
87608
87524
  let vertexVector = new import_core32.Vector3(Array.from(vertex)).transform(modelMatrix).add(cartographicOrigin);
87609
- import_geospatial13.Ellipsoid.WGS84.cartographicToCartesian(vertexVector, scratchVector6);
87525
+ import_geospatial14.Ellipsoid.WGS84.cartographicToCartesian(vertexVector, scratchVector6);
87610
87526
  vertexVector = scratchVector6.subtract(cartesianOriginVector);
87611
87527
  newPositionsValue.set(vertexVector, index);
87612
87528
  }
@@ -87644,6 +87560,8 @@ var B3dmConverter = class {
87644
87560
  return "image/jpeg";
87645
87561
  case "png":
87646
87562
  return "image/png";
87563
+ case "ktx2":
87564
+ return "image/ktx2";
87647
87565
  default:
87648
87566
  console.warn(`Unexpected texture format in I3S: ${format}`);
87649
87567
  return "image/jpeg";
@@ -87720,10 +87638,23 @@ var B3dmConverter = class {
87720
87638
  }
87721
87639
  };
87722
87640
 
87641
+ // src/3d-tiles-attributes-worker.ts
87642
+ var VERSION16 = typeof __VERSION__ !== "undefined" ? __VERSION__ : "latest";
87643
+ var Tile3dAttributesWorker = {
87644
+ id: "3d-tiles-attributes",
87645
+ name: "3DTiles Attributes Worker",
87646
+ module: "tile-converter",
87647
+ version: VERSION16,
87648
+ options: {
87649
+ attributes: null
87650
+ }
87651
+ };
87652
+
87723
87653
  // src/3d-tiles-converter/3d-tiles-converter.ts
87724
87654
  var I3S = "I3S";
87725
87655
  var Tiles3DConverter = class {
87726
87656
  constructor() {
87657
+ this.workerSource = {};
87727
87658
  this.options = {};
87728
87659
  this.tilesetPath = "";
87729
87660
  this.vertexCounter = 0;
@@ -87731,6 +87662,7 @@ var Tiles3DConverter = class {
87731
87662
  this.geoidHeightModel = null;
87732
87663
  this.sourceTileset = null;
87733
87664
  this.attributeStorageInfo = null;
87665
+ this.workerSource = {};
87734
87666
  }
87735
87667
  async convert(options) {
87736
87668
  const { inputUrl, outputPath, tilesetName, maxDepth, egmFilePath } = options;
@@ -87739,10 +87671,14 @@ var Tiles3DConverter = class {
87739
87671
  console.log("Loading egm file...");
87740
87672
  this.geoidHeightModel = await load(egmFilePath, PGMLoader);
87741
87673
  console.log("Loading egm file completed!");
87674
+ await this.loadWorkers();
87742
87675
  const sourceTilesetJson = await load(inputUrl, I3SLoader, {});
87743
87676
  this.sourceTileset = new Tileset3D(sourceTilesetJson, {
87744
- loadOptions: { i3s: { coordinateSystem: COORDINATE_SYSTEM.LNGLAT_OFFSETS } }
87677
+ loadOptions: {
87678
+ i3s: { coordinateSystem: COORDINATE_SYSTEM.LNGLAT_OFFSETS, decodeTextures: false }
87679
+ }
87745
87680
  });
87681
+ await this.sourceTileset.tilesetInitializationPromise;
87746
87682
  const rootNode = this.sourceTileset.root;
87747
87683
  if (!rootNode.header.obb) {
87748
87684
  rootNode.header.obb = createObbFromMbs(rootNode.header.mbs);
@@ -87764,6 +87700,8 @@ var Tiles3DConverter = class {
87764
87700
  const tileset = (0, import_json_map_transform8.default)({ root: rootTile }, TILESET());
87765
87701
  await writeFile3(this.tilesetPath, JSON.stringify(tileset), "tileset.json");
87766
87702
  this._finishConversion({ slpk: false, outputPath, tilesetName });
87703
+ const workerFarm = WorkerFarm.getWorkerFarm({});
87704
+ workerFarm.destroy();
87767
87705
  }
87768
87706
  async _addChildren(parentSourceNode, parentNode, level) {
87769
87707
  if (this.options.maxDepth && level > this.options.maxDepth) {
@@ -87775,9 +87713,9 @@ var Tiles3DConverter = class {
87775
87713
  if (sourceChild.contentUrl) {
87776
87714
  await this.sourceTileset._loadTile(sourceChild);
87777
87715
  this.vertexCounter += sourceChild.content.vertexCount;
87778
- let attributes = null;
87716
+ let featureAttributes = null;
87779
87717
  if (this.attributeStorageInfo) {
87780
- attributes = await this._loadChildAttributes(sourceChild, this.attributeStorageInfo);
87718
+ featureAttributes = await this._loadChildAttributes(sourceChild, this.attributeStorageInfo);
87781
87719
  }
87782
87720
  if (!sourceChild.header.obb) {
87783
87721
  sourceChild.header.obb = createObbFromMbs(sourceChild.header.mbs);
@@ -87790,7 +87728,11 @@ var Tiles3DConverter = class {
87790
87728
  geometricError: convertScreenThresholdToGeometricError(sourceChild),
87791
87729
  children: []
87792
87730
  };
87793
- const b3dm = await new B3dmConverter().convert(sourceChild, attributes);
87731
+ const i3sAttributesData = {
87732
+ tileContent: sourceChild.content,
87733
+ textureFormat: sourceChild?.header?.textureFormat
87734
+ };
87735
+ const b3dm = await new B3dmConverter().convert(i3sAttributesData, featureAttributes);
87794
87736
  child.content = {
87795
87737
  uri: `${sourceChild.id}.b3dm`,
87796
87738
  boundingVolume
@@ -87883,16 +87825,24 @@ var Tiles3DConverter = class {
87883
87825
  console.log(`File(s) size: `, filesSize, " bytes");
87884
87826
  console.log(`------------------------------------------------`);
87885
87827
  }
87828
+ async loadWorkers() {
87829
+ console.log(`Loading workers source...`);
87830
+ const tile3dAttributesWorkerUrl = getWorkerURL(Tile3dAttributesWorker, { ...getGlobalLoaderOptions() });
87831
+ const sourceResponse = await fetchFile(tile3dAttributesWorkerUrl);
87832
+ const source = await sourceResponse.text();
87833
+ this.workerSource.tile3dWorkerSource = source;
87834
+ console.log(`Loading workers source completed!`);
87835
+ }
87886
87836
  };
87887
87837
 
87888
87838
  // ../zip/src/zip-loader.ts
87889
87839
  var import_jszip2 = __toModule(require_lib4());
87890
- var VERSION14 = typeof __VERSION__ !== "undefined" ? __VERSION__ : "latest";
87840
+ var VERSION17 = typeof __VERSION__ !== "undefined" ? __VERSION__ : "latest";
87891
87841
  var ZipLoader = {
87892
87842
  id: "zip",
87893
87843
  module: "zip",
87894
87844
  name: "Zip Archive",
87895
- version: VERSION14,
87845
+ version: VERSION17,
87896
87846
  extensions: ["zip"],
87897
87847
  mimeTypes: ["application/zip"],
87898
87848
  category: "archive",
@@ -87950,7 +87900,8 @@ var DepsInstaller = class {
87950
87900
  DepsInstaller,
87951
87901
  I3SConverter,
87952
87902
  NodePages,
87953
- Tiles3DConverter
87903
+ Tiles3DConverter,
87904
+ prepareDataForAttributesConversion
87954
87905
  });
87955
87906
  /*!
87956
87907
  * Determine if an object is a Buffer