@loaders.gl/tile-converter 3.1.8 → 3.2.0-alpha.3

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 (238) 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-cli.d.ts +2 -0
  24. package/dist/converter-cli.d.ts.map +1 -0
  25. package/dist/converter-cli.js +232 -0
  26. package/dist/converter.min.js +68 -68
  27. package/dist/deps-installer/deps-installer.d.ts +14 -0
  28. package/dist/deps-installer/deps-installer.d.ts.map +1 -0
  29. package/dist/deps-installer/deps-installer.js +31 -0
  30. package/dist/dist.min.js +1151 -1264
  31. package/dist/es5/3d-tiles-attributes-worker.js +29 -0
  32. package/dist/es5/3d-tiles-attributes-worker.js.map +1 -0
  33. package/dist/es5/3d-tiles-converter/3d-tiles-converter.js +104 -44
  34. package/dist/es5/3d-tiles-converter/3d-tiles-converter.js.map +1 -1
  35. package/dist/es5/3d-tiles-converter/helpers/b3dm-converter.js +34 -43
  36. package/dist/es5/3d-tiles-converter/helpers/b3dm-converter.js.map +1 -1
  37. package/dist/es5/converter-cli.js +306 -0
  38. package/dist/es5/converter-cli.js.map +1 -0
  39. package/dist/es5/deps-installer/deps-installer.js.map +1 -1
  40. package/dist/es5/i3s-attributes-worker.js +29 -0
  41. package/dist/es5/i3s-attributes-worker.js.map +1 -0
  42. package/dist/es5/i3s-converter/helpers/coordinate-converter.js +19 -11
  43. package/dist/es5/i3s-converter/helpers/coordinate-converter.js.map +1 -1
  44. package/dist/es5/i3s-converter/helpers/geometry-attributes.js +2 -2
  45. package/dist/es5/i3s-converter/helpers/geometry-attributes.js.map +1 -1
  46. package/dist/es5/i3s-converter/helpers/geometry-converter.js +271 -182
  47. package/dist/es5/i3s-converter/helpers/geometry-converter.js.map +1 -1
  48. package/dist/es5/i3s-converter/helpers/gltf-attributes.js +71 -0
  49. package/dist/es5/i3s-converter/helpers/gltf-attributes.js.map +1 -0
  50. package/dist/es5/i3s-converter/helpers/node-pages.js +47 -99
  51. package/dist/es5/i3s-converter/helpers/node-pages.js.map +1 -1
  52. package/dist/es5/i3s-converter/i3s-converter.js +311 -245
  53. package/dist/es5/i3s-converter/i3s-converter.js.map +1 -1
  54. package/dist/es5/index.js +0 -16
  55. package/dist/es5/index.js.map +1 -1
  56. package/dist/es5/lib/utils/compress-util.js +14 -17
  57. package/dist/es5/lib/utils/compress-util.js.map +1 -1
  58. package/dist/es5/lib/utils/file-utils.js +39 -14
  59. package/dist/es5/lib/utils/file-utils.js.map +1 -1
  60. package/dist/es5/lib/utils/lod-conversion-utils.js.map +1 -1
  61. package/dist/es5/lib/utils/queue.js +61 -0
  62. package/dist/es5/lib/utils/queue.js.map +1 -0
  63. package/dist/es5/lib/utils/statistic-utills.js.map +1 -1
  64. package/dist/es5/lib/utils/write-queue.js +225 -0
  65. package/dist/es5/lib/utils/write-queue.js.map +1 -0
  66. package/dist/es5/pgm-loader.js +1 -1
  67. package/dist/es5/pgm-loader.js.map +1 -1
  68. package/dist/es5/workers/3d-tiles-attributes-worker.js +37 -0
  69. package/dist/es5/workers/3d-tiles-attributes-worker.js.map +1 -0
  70. package/dist/es5/workers/i3s-attributes-worker.js +40 -0
  71. package/dist/es5/workers/i3s-attributes-worker.js.map +1 -0
  72. package/dist/esm/3d-tiles-attributes-worker.js +16 -0
  73. package/dist/esm/3d-tiles-attributes-worker.js.map +1 -0
  74. package/dist/esm/3d-tiles-converter/3d-tiles-converter.js +32 -5
  75. package/dist/esm/3d-tiles-converter/3d-tiles-converter.js.map +1 -1
  76. package/dist/esm/3d-tiles-converter/helpers/b3dm-converter.js +23 -23
  77. package/dist/esm/3d-tiles-converter/helpers/b3dm-converter.js.map +1 -1
  78. package/dist/esm/converter-cli.js +230 -0
  79. package/dist/esm/converter-cli.js.map +1 -0
  80. package/dist/esm/deps-installer/deps-installer.js.map +1 -1
  81. package/dist/esm/i3s-attributes-worker.js +16 -0
  82. package/dist/esm/i3s-attributes-worker.js.map +1 -0
  83. package/dist/esm/i3s-converter/helpers/coordinate-converter.js +19 -11
  84. package/dist/esm/i3s-converter/helpers/coordinate-converter.js.map +1 -1
  85. package/dist/esm/i3s-converter/helpers/geometry-attributes.js +2 -2
  86. package/dist/esm/i3s-converter/helpers/geometry-attributes.js.map +1 -1
  87. package/dist/esm/i3s-converter/helpers/geometry-converter.js +121 -62
  88. package/dist/esm/i3s-converter/helpers/geometry-converter.js.map +1 -1
  89. package/dist/esm/i3s-converter/helpers/gltf-attributes.js +54 -0
  90. package/dist/esm/i3s-converter/helpers/gltf-attributes.js.map +1 -0
  91. package/dist/esm/i3s-converter/helpers/node-pages.js +12 -4
  92. package/dist/esm/i3s-converter/helpers/node-pages.js.map +1 -1
  93. package/dist/esm/i3s-converter/i3s-converter.js +155 -50
  94. package/dist/esm/i3s-converter/i3s-converter.js.map +1 -1
  95. package/dist/esm/index.js +0 -2
  96. package/dist/esm/index.js.map +1 -1
  97. package/dist/esm/lib/utils/compress-util.js +6 -8
  98. package/dist/esm/lib/utils/compress-util.js.map +1 -1
  99. package/dist/esm/lib/utils/file-utils.js +11 -1
  100. package/dist/esm/lib/utils/file-utils.js.map +1 -1
  101. package/dist/esm/lib/utils/lod-conversion-utils.js.map +1 -1
  102. package/dist/esm/lib/utils/queue.js +19 -0
  103. package/dist/esm/lib/utils/queue.js.map +1 -0
  104. package/dist/esm/lib/utils/statistic-utills.js.map +1 -1
  105. package/dist/esm/lib/utils/write-queue.js +88 -0
  106. package/dist/esm/lib/utils/write-queue.js.map +1 -0
  107. package/dist/esm/pgm-loader.js +1 -1
  108. package/dist/esm/pgm-loader.js.map +1 -1
  109. package/dist/esm/workers/3d-tiles-attributes-worker.js +5 -0
  110. package/dist/esm/workers/3d-tiles-attributes-worker.js.map +1 -0
  111. package/dist/esm/workers/i3s-attributes-worker.js +4 -0
  112. package/dist/esm/workers/i3s-attributes-worker.js.map +1 -0
  113. package/dist/i3s-attributes-worker.d.ts +33 -0
  114. package/dist/i3s-attributes-worker.d.ts.map +1 -0
  115. package/dist/i3s-attributes-worker.js +10 -0
  116. package/dist/i3s-attributes-worker.js.map +7 -0
  117. package/dist/i3s-converter/helpers/coordinate-converter.d.ts +41 -0
  118. package/dist/i3s-converter/helpers/coordinate-converter.d.ts.map +1 -0
  119. package/dist/i3s-converter/helpers/coordinate-converter.js +122 -0
  120. package/dist/i3s-converter/helpers/create-scene-server-path.d.ts +9 -0
  121. package/dist/i3s-converter/helpers/create-scene-server-path.d.ts.map +1 -0
  122. package/dist/i3s-converter/helpers/create-scene-server-path.js +28 -0
  123. package/dist/i3s-converter/helpers/geometry-attributes.d.ts +8 -0
  124. package/dist/i3s-converter/helpers/geometry-attributes.d.ts.map +1 -0
  125. package/dist/i3s-converter/helpers/geometry-attributes.js +177 -0
  126. package/dist/i3s-converter/helpers/geometry-converter.d.ts +29 -0
  127. package/dist/i3s-converter/helpers/geometry-converter.d.ts.map +1 -0
  128. package/dist/i3s-converter/helpers/geometry-converter.js +901 -0
  129. package/dist/i3s-converter/helpers/gltf-attributes.d.ts +9 -0
  130. package/dist/i3s-converter/helpers/gltf-attributes.d.ts.map +1 -0
  131. package/dist/i3s-converter/helpers/gltf-attributes.js +56 -0
  132. package/dist/i3s-converter/helpers/node-debug.d.ts +8 -0
  133. package/dist/i3s-converter/helpers/node-debug.d.ts.map +1 -0
  134. package/dist/i3s-converter/helpers/node-debug.js +114 -0
  135. package/dist/i3s-converter/helpers/node-pages.d.ts +117 -0
  136. package/dist/i3s-converter/helpers/node-pages.d.ts.map +1 -0
  137. package/dist/i3s-converter/helpers/node-pages.js +208 -0
  138. package/dist/i3s-converter/i3s-converter.d.ts +323 -0
  139. package/dist/i3s-converter/i3s-converter.d.ts.map +1 -0
  140. package/dist/i3s-converter/i3s-converter.js +1074 -0
  141. package/dist/i3s-converter/json-templates/layers.d.ts +95 -0
  142. package/dist/i3s-converter/json-templates/layers.d.ts.map +1 -0
  143. package/dist/i3s-converter/json-templates/layers.js +199 -0
  144. package/dist/i3s-converter/json-templates/metadata.d.ts +22 -0
  145. package/dist/i3s-converter/json-templates/metadata.d.ts.map +1 -0
  146. package/dist/i3s-converter/json-templates/metadata.js +25 -0
  147. package/dist/i3s-converter/json-templates/node.d.ts +61 -0
  148. package/dist/i3s-converter/json-templates/node.d.ts.map +1 -0
  149. package/dist/i3s-converter/json-templates/node.js +89 -0
  150. package/dist/i3s-converter/json-templates/scene-server.d.ts +28 -0
  151. package/dist/i3s-converter/json-templates/scene-server.d.ts.map +1 -0
  152. package/dist/i3s-converter/json-templates/scene-server.js +31 -0
  153. package/dist/i3s-converter/json-templates/shared-resources.d.ts +14 -0
  154. package/dist/i3s-converter/json-templates/shared-resources.d.ts.map +1 -0
  155. package/dist/i3s-converter/json-templates/shared-resources.js +129 -0
  156. package/dist/i3s-converter/json-templates/store.d.ts +95 -0
  157. package/dist/i3s-converter/json-templates/store.d.ts.map +1 -0
  158. package/dist/i3s-converter/json-templates/store.js +103 -0
  159. package/dist/i3s-converter/types.d.ts +114 -0
  160. package/dist/i3s-converter/types.d.ts.map +1 -0
  161. package/dist/i3s-converter/types.js +2 -0
  162. package/dist/i3s-server/app.d.ts +3 -0
  163. package/dist/i3s-server/app.d.ts.map +1 -0
  164. package/dist/i3s-server/app.js +14 -0
  165. package/dist/i3s-server/controllers/index-controller.d.ts +2 -0
  166. package/dist/i3s-server/controllers/index-controller.d.ts.map +1 -0
  167. package/dist/i3s-server/controllers/index-controller.js +23 -0
  168. package/dist/i3s-server/routes/index.d.ts +3 -0
  169. package/dist/i3s-server/routes/index.d.ts.map +1 -0
  170. package/dist/i3s-server/routes/index.js +16 -0
  171. package/dist/index.d.ts +3 -0
  172. package/dist/index.d.ts.map +1 -0
  173. package/dist/index.js +10 -0
  174. package/dist/lib/utils/compress-util.d.ts +45 -0
  175. package/dist/lib/utils/compress-util.d.ts.map +1 -0
  176. package/dist/lib/utils/compress-util.js +257 -0
  177. package/dist/{esm/lib → lib}/utils/file-utils.d.ts +6 -14
  178. package/dist/lib/utils/file-utils.d.ts.map +1 -0
  179. package/dist/lib/utils/file-utils.js +81 -0
  180. package/dist/lib/utils/lod-conversion-utils.d.ts +41 -0
  181. package/dist/lib/utils/lod-conversion-utils.d.ts.map +1 -0
  182. package/dist/lib/utils/lod-conversion-utils.js +76 -0
  183. package/dist/lib/utils/queue.d.ts +7 -0
  184. package/dist/lib/utils/queue.d.ts.map +1 -0
  185. package/dist/lib/utils/queue.js +18 -0
  186. package/dist/lib/utils/statistic-utills.d.ts +3 -0
  187. package/dist/lib/utils/statistic-utills.d.ts.map +1 -0
  188. package/dist/lib/utils/statistic-utills.js +64 -0
  189. package/dist/lib/utils/write-queue.d.ts +22 -0
  190. package/dist/lib/utils/write-queue.d.ts.map +1 -0
  191. package/dist/lib/utils/write-queue.js +62 -0
  192. package/dist/pgm-loader.d.ts +6 -0
  193. package/dist/pgm-loader.d.ts.map +1 -0
  194. package/dist/pgm-loader.js +23 -0
  195. package/dist/workers/3d-tiles-attributes-worker.d.ts +2 -0
  196. package/dist/workers/3d-tiles-attributes-worker.d.ts.map +1 -0
  197. package/dist/workers/3d-tiles-attributes-worker.js +9 -0
  198. package/dist/workers/i3s-attributes-worker.d.ts +2 -0
  199. package/dist/workers/i3s-attributes-worker.d.ts.map +1 -0
  200. package/dist/workers/i3s-attributes-worker.js +5 -0
  201. package/package.json +19 -18
  202. package/src/3d-tiles-attributes-worker.ts +43 -0
  203. package/src/3d-tiles-converter/3d-tiles-converter.ts +49 -6
  204. package/src/3d-tiles-converter/helpers/b3dm-converter.ts +21 -18
  205. package/src/converter-cli.ts +310 -0
  206. package/src/deps-installer/{deps-installer.js → deps-installer.ts} +11 -1
  207. package/src/i3s-attributes-worker.ts +46 -0
  208. package/src/i3s-converter/helpers/coordinate-converter.ts +29 -24
  209. package/src/i3s-converter/helpers/geometry-attributes.ts +4 -3
  210. package/src/i3s-converter/helpers/{geometry-converter.js → geometry-converter.ts} +425 -179
  211. package/src/i3s-converter/helpers/gltf-attributes.ts +68 -0
  212. package/src/i3s-converter/helpers/node-pages.ts +25 -17
  213. package/src/i3s-converter/i3s-converter.ts +154 -87
  214. package/src/i3s-converter/types.ts +90 -8
  215. package/src/index.ts +0 -4
  216. package/src/lib/utils/{compress-util.js → compress-util.ts} +105 -18
  217. package/src/lib/utils/file-utils.ts +84 -0
  218. package/src/lib/utils/{lod-conversion-utils.js → lod-conversion-utils.ts} +27 -5
  219. package/src/lib/utils/queue.ts +17 -0
  220. package/src/lib/utils/{statistic-utills.js → statistic-utills.ts} +0 -0
  221. package/src/lib/utils/write-queue.ts +75 -0
  222. package/src/workers/3d-tiles-attributes-worker.ts +6 -0
  223. package/src/workers/i3s-attributes-worker.ts +6 -0
  224. package/dist/es5/deps-installer/deps-installer.d.ts +0 -10
  225. package/dist/es5/i3s-converter/helpers/geometry-converter.d.ts +0 -44
  226. package/dist/es5/lib/utils/compress-util.d.ts +0 -53
  227. package/dist/es5/lib/utils/file-utils.d.ts +0 -43
  228. package/dist/es5/lib/utils/lod-conversion-utils.d.ts +0 -32
  229. package/dist/esm/deps-installer/deps-installer.d.ts +0 -10
  230. package/dist/esm/i3s-converter/helpers/geometry-converter.d.ts +0 -44
  231. package/dist/esm/lib/utils/compress-util.d.ts +0 -53
  232. package/dist/esm/lib/utils/lod-conversion-utils.d.ts +0 -32
  233. package/src/deps-installer/deps-installer.d.ts +0 -10
  234. package/src/i3s-converter/helpers/geometry-converter.d.ts +0 -44
  235. package/src/lib/utils/compress-util.d.ts +0 -53
  236. package/src/lib/utils/file-utils.d.ts +0 -43
  237. package/src/lib/utils/file-utils.js +0 -38
  238. 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 VERSION17 = typeof __VERSION__ !== "undefined" ? __VERSION__ : "untranspiled source";
560
+ exports.VERSION = VERSION17;
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 VERSION17 = typeof __VERSION__ !== "undefined" ? __VERSION__ : "untranspiled source";
2101
+ exports.VERSION = VERSION17;
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 || ""))
@@ -18313,7 +17998,7 @@ var require_BufferList = __commonJS({
18313
17998
  this.head = this.tail = null;
18314
17999
  this.length = 0;
18315
18000
  };
18316
- BufferList.prototype.join = function join10(s) {
18001
+ BufferList.prototype.join = function join9(s) {
18317
18002
  if (this.length === 0)
18318
18003
  return "";
18319
18004
  var p = this.head;
@@ -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
  }
@@ -23260,7 +22945,7 @@ var require_buffer_list = __commonJS({
23260
22945
  }
23261
22946
  }, {
23262
22947
  key: "join",
23263
- value: function join10(s) {
22948
+ value: function join9(s) {
23264
22949
  if (this.length === 0)
23265
22950
  return "";
23266
22951
  var p = this.head;
@@ -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() {
@@ -26972,7 +26657,7 @@ var require_buffer_list2 = __commonJS({
26972
26657
  }
26973
26658
  }, {
26974
26659
  key: "join",
26975
- value: function join10(s) {
26660
+ value: function join9(s) {
26976
26661
  if (this.length === 0)
26977
26662
  return "";
26978
26663
  var p = this.head;
@@ -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() {
@@ -30114,7 +29799,7 @@ var require_buffer_list3 = __commonJS({
30114
29799
  }
30115
29800
  }, {
30116
29801
  key: "join",
30117
- value: function join10(s) {
29802
+ value: function join9(s) {
30118
29803
  if (this.length === 0)
30119
29804
  return "";
30120
29805
  var p = this.head;
@@ -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() {
@@ -33486,7 +33171,7 @@ var require_buffer_list4 = __commonJS({
33486
33171
  }
33487
33172
  }, {
33488
33173
  key: "join",
33489
- value: function join10(s) {
33174
+ value: function join9(s) {
33490
33175
  if (this.length === 0)
33491
33176
  return "";
33492
33177
  var p = this.head;
@@ -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() {
@@ -36860,7 +36545,7 @@ var require_buffer_list5 = __commonJS({
36860
36545
  }
36861
36546
  }, {
36862
36547
  key: "join",
36863
- value: function join10(s) {
36548
+ value: function join9(s) {
36864
36549
  if (this.length === 0)
36865
36550
  return "";
36866
36551
  var p = this.head;
@@ -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;
@@ -47256,9 +46941,9 @@ var require_load = __commonJS({
47256
46941
  var require_lib4 = __commonJS({
47257
46942
  "../../node_modules/jszip/lib/index.js"(exports, module2) {
47258
46943
  "use strict";
47259
- function JSZip3() {
47260
- if (!(this instanceof JSZip3)) {
47261
- return new JSZip3();
46944
+ function JSZip2() {
46945
+ if (!(this instanceof JSZip2)) {
46946
+ return new JSZip2();
47262
46947
  }
47263
46948
  if (arguments.length) {
47264
46949
  throw new Error("The constructor with parameters has been removed in JSZip 3.0, please check the upgrade guide.");
@@ -47267,7 +46952,7 @@ var require_lib4 = __commonJS({
47267
46952
  this.comment = null;
47268
46953
  this.root = "";
47269
46954
  this.clone = function() {
47270
- var newObj = new JSZip3();
46955
+ var newObj = new JSZip2();
47271
46956
  for (var i in this) {
47272
46957
  if (typeof this[i] !== "function") {
47273
46958
  newObj[i] = this[i];
@@ -47276,16 +46961,16 @@ var require_lib4 = __commonJS({
47276
46961
  return newObj;
47277
46962
  };
47278
46963
  }
47279
- JSZip3.prototype = require_object();
47280
- JSZip3.prototype.loadAsync = require_load();
47281
- JSZip3.support = require_support();
47282
- JSZip3.defaults = require_defaults();
47283
- JSZip3.version = "3.7.0";
47284
- JSZip3.loadAsync = function(content, options) {
47285
- return new JSZip3().loadAsync(content, options);
46964
+ JSZip2.prototype = require_object();
46965
+ JSZip2.prototype.loadAsync = require_load();
46966
+ JSZip2.support = require_support();
46967
+ JSZip2.defaults = require_defaults();
46968
+ JSZip2.version = "3.7.0";
46969
+ JSZip2.loadAsync = function(content, options) {
46970
+ return new JSZip2().loadAsync(content, options);
47286
46971
  };
47287
- JSZip3.external = require_external();
47288
- module2.exports = JSZip3;
46972
+ JSZip2.external = require_external();
46973
+ module2.exports = JSZip2;
47289
46974
  }
47290
46975
  });
47291
46976
 
@@ -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 VERSION17 = 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 !== VERSION17) {
49858
+ throw new Error("luma.gl - multiple VERSIONs detected: ".concat(_env.global.luma.VERSION, " vs ").concat(VERSION17));
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(VERSION17, " - ").concat(STARTUP_MESSAGE))();
50178
49863
  }
50179
49864
  _env.global.luma = _env.global.luma || {
50180
- VERSION: VERSION15,
50181
- version: VERSION15,
49865
+ VERSION: VERSION17,
49866
+ version: VERSION17,
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", {
@@ -73719,9 +73404,7 @@ var require_es517 = __commonJS({
73719
73404
 
73720
73405
  // src/index.ts
73721
73406
  __export(exports, {
73722
- DepsInstaller: () => DepsInstaller,
73723
73407
  I3SConverter: () => I3SConverter,
73724
- NodePages: () => NodePages,
73725
73408
  Tiles3DConverter: () => Tiles3DConverter
73726
73409
  });
73727
73410
 
@@ -73748,7 +73431,7 @@ var matches = typeof process !== "undefined" && process.version && /v([0-9]*)/.e
73748
73431
  var nodeVersion = matches && parseFloat(matches[1]) || 0;
73749
73432
 
73750
73433
  // ../worker-utils/src/lib/env-utils/version.ts
73751
- var DEFAULT_VERSION = "latest";
73434
+ var DEFAULT_VERSION = "beta";
73752
73435
  var VERSION = typeof __VERSION__ !== "undefined" ? __VERSION__ : DEFAULT_VERSION;
73753
73436
  if (typeof __VERSION__ === "undefined") {
73754
73437
  console.error("loaders.gl: The __VERSION__ variable is not injected using babel plugin. Latest unstable workers would be fetched from the CDN.");
@@ -73781,13 +73464,13 @@ var nodeVersion2 = matches2 && parseFloat(matches2[1]) || 0;
73781
73464
  // ../worker-utils/src/lib/worker-farm/worker-job.ts
73782
73465
  var WorkerJob = class {
73783
73466
  constructor(jobName, workerThread) {
73784
- this.name = jobName;
73785
- this.workerThread = workerThread;
73786
73467
  this.isRunning = true;
73787
73468
  this._resolve = () => {
73788
73469
  };
73789
73470
  this._reject = () => {
73790
73471
  };
73472
+ this.name = jobName;
73473
+ this.workerThread = workerThread;
73791
73474
  this.result = new Promise((resolve, reject) => {
73792
73475
  this._resolve = resolve;
73793
73476
  this._reject = reject;
@@ -73812,6 +73495,9 @@ var WorkerJob = class {
73812
73495
  }
73813
73496
  };
73814
73497
 
73498
+ // ../worker-utils/src/lib/worker-farm/worker-thread.ts
73499
+ var import_worker_threads = __toModule(require("worker_threads"));
73500
+
73815
73501
  // ../worker-utils/src/lib/worker-utils/get-loadable-worker-url.ts
73816
73502
  var workerURLCache = new Map();
73817
73503
  function getLoadableWorkerURL(props) {
@@ -73899,10 +73585,10 @@ var WorkerThread = class {
73899
73585
  this.url = url;
73900
73586
  this.onMessage = NOOP;
73901
73587
  this.onError = (error) => console.log(error);
73902
- this.worker = this._createBrowserWorker();
73588
+ this.worker = isBrowser2 ? this._createBrowserWorker() : this._createNodeWorker();
73903
73589
  }
73904
73590
  static isSupported() {
73905
- return typeof Worker !== "undefined";
73591
+ return typeof Worker !== "undefined" && isBrowser2 || typeof import_worker_threads.Worker !== void 0;
73906
73592
  }
73907
73593
  destroy() {
73908
73594
  this.onMessage = NOOP;
@@ -73945,6 +73631,27 @@ var WorkerThread = class {
73945
73631
  worker.onmessageerror = (event) => console.error(event);
73946
73632
  return worker;
73947
73633
  }
73634
+ _createNodeWorker() {
73635
+ let worker;
73636
+ if (this.url) {
73637
+ const absolute = this.url.includes(":/") || this.url.startsWith("/");
73638
+ const url = absolute ? this.url : `./${this.url}`;
73639
+ worker = new import_worker_threads.Worker(url, { eval: false });
73640
+ } else if (this.source) {
73641
+ worker = new import_worker_threads.Worker(this.source, { eval: true });
73642
+ } else {
73643
+ throw new Error("no worker");
73644
+ }
73645
+ worker.on("message", (data) => {
73646
+ this.onMessage(data);
73647
+ });
73648
+ worker.on("error", (error) => {
73649
+ this.onError(error);
73650
+ });
73651
+ worker.on("exit", (code) => {
73652
+ });
73653
+ return worker;
73654
+ }
73948
73655
  };
73949
73656
 
73950
73657
  // ../worker-utils/src/lib/worker-farm/worker-pool.ts
@@ -73965,6 +73672,9 @@ var WorkerPool = class {
73965
73672
  this.url = props.url;
73966
73673
  this.setProps(props);
73967
73674
  }
73675
+ static isSupported() {
73676
+ return WorkerThread.isSupported();
73677
+ }
73968
73678
  destroy() {
73969
73679
  this.idleQueue.forEach((worker) => worker.destroy());
73970
73680
  this.isDestroyed = true;
@@ -73987,9 +73697,9 @@ var WorkerPool = class {
73987
73697
  this.onDebug = props.onDebug;
73988
73698
  }
73989
73699
  }
73990
- async startJob(name8, onMessage2 = (job, type, data) => job.done(data), onError = (job, error) => job.error(error)) {
73700
+ async startJob(name8, onMessage3 = (job, type, data) => job.done(data), onError = (job, error) => job.error(error)) {
73991
73701
  const startPromise = new Promise((onStart) => {
73992
- this.jobQueue.push({ name: name8, onMessage: onMessage2, onError, onStart });
73702
+ this.jobQueue.push({ name: name8, onMessage: onMessage3, onError, onStart });
73993
73703
  return this;
73994
73704
  });
73995
73705
  this._startQueuedJob();
@@ -74054,9 +73764,9 @@ var WorkerPool = class {
74054
73764
  var DEFAULT_PROPS = {
74055
73765
  maxConcurrency: 3,
74056
73766
  maxMobileConcurrency: 1,
73767
+ reuseWorkers: true,
74057
73768
  onDebug: () => {
74058
- },
74059
- reuseWorkers: true
73769
+ }
74060
73770
  };
74061
73771
  var WorkerFarm = class {
74062
73772
  constructor(props) {
@@ -74077,6 +73787,7 @@ var WorkerFarm = class {
74077
73787
  for (const workerPool of this.workerPools.values()) {
74078
73788
  workerPool.destroy();
74079
73789
  }
73790
+ this.workerPools = new Map();
74080
73791
  }
74081
73792
  setProps(props) {
74082
73793
  this.props = { ...this.props, ...props };
@@ -74108,8 +73819,34 @@ var WorkerFarm = class {
74108
73819
  }
74109
73820
  };
74110
73821
 
73822
+ // ../worker-utils/src/lib/worker-utils/remove-nontransferable-options.ts
73823
+ function removeNontransferableOptions(object) {
73824
+ return JSON.parse(stringifyJSON(object));
73825
+ }
73826
+ function stringifyJSON(v) {
73827
+ const cache = new Set();
73828
+ return JSON.stringify(v, (key, value) => {
73829
+ if (typeof value === "object" && value !== null) {
73830
+ if (cache.has(value)) {
73831
+ try {
73832
+ return JSON.parse(JSON.stringify(value));
73833
+ } catch (err) {
73834
+ return void 0;
73835
+ }
73836
+ }
73837
+ cache.add(value);
73838
+ }
73839
+ return value;
73840
+ });
73841
+ }
73842
+
74111
73843
  // ../worker-utils/src/lib/worker-api/get-worker-url.ts
74112
- var NPM_TAG = "latest";
73844
+ var NPM_TAG = "beta";
73845
+ var VERSION2 = typeof VERSION !== "undefined" ? VERSION : NPM_TAG;
73846
+ function getWorkerName(worker) {
73847
+ const warning = worker.version !== VERSION2 ? ` (worker-utils@${VERSION2})` : "";
73848
+ return `${worker.name}@${worker.version}${warning}`;
73849
+ }
74113
73850
  function getWorkerURL(worker, options = {}) {
74114
73851
  const workerOptions = options[worker.id] || {};
74115
73852
  const workerFile = `${worker.id}-worker.js`;
@@ -74132,6 +73869,50 @@ function getWorkerURL(worker, options = {}) {
74132
73869
  return url;
74133
73870
  }
74134
73871
 
73872
+ // ../worker-utils/src/lib/worker-api/process-on-worker.ts
73873
+ async function processOnWorker(worker, data, options = {}, context = {}) {
73874
+ const name8 = getWorkerName(worker);
73875
+ const workerFarm = WorkerFarm.getWorkerFarm(options);
73876
+ const { source } = options;
73877
+ const workerPoolProps = { name: name8, source };
73878
+ if (!source) {
73879
+ workerPoolProps.url = getWorkerURL(worker, options);
73880
+ }
73881
+ const workerPool = workerFarm.getWorkerPool(workerPoolProps);
73882
+ const jobName = options.jobName || worker.name;
73883
+ const job = await workerPool.startJob(jobName, onMessage.bind(null, context));
73884
+ const transferableOptions = removeNontransferableOptions(options);
73885
+ job.postMessage("process", { input: data, options: transferableOptions });
73886
+ const result = await job.result;
73887
+ return result.result;
73888
+ }
73889
+ async function onMessage(context, job, type, payload) {
73890
+ switch (type) {
73891
+ case "done":
73892
+ job.done(payload);
73893
+ break;
73894
+ case "error":
73895
+ job.error(new Error(payload.error));
73896
+ break;
73897
+ case "process":
73898
+ const { id, input, options } = payload;
73899
+ try {
73900
+ if (!context.process) {
73901
+ job.postMessage("error", { id, error: "Worker not set up to process on main thread" });
73902
+ return;
73903
+ }
73904
+ const result = await context.process(input, options);
73905
+ job.postMessage("done", { id, result });
73906
+ } catch (error) {
73907
+ const message = error instanceof Error ? error.message : "unknown error";
73908
+ job.postMessage("error", { id, error: message });
73909
+ }
73910
+ break;
73911
+ default:
73912
+ console.warn(`process-on-worker: unknown message ${type}`);
73913
+ }
73914
+ }
73915
+
74135
73916
  // ../worker-utils/src/lib/worker-api/validate-worker-version.ts
74136
73917
  function validateWorkerVersion(worker, coreVersion = VERSION) {
74137
73918
  assert3(worker, "no worker provided");
@@ -74182,8 +73963,8 @@ function requireFromString(code, filename2 = "", options) {
74182
73963
  }
74183
73964
 
74184
73965
  // ../worker-utils/src/lib/library-utils/library-utils.ts
74185
- var LATEST = "latest";
74186
- var VERSION2 = typeof VERSION !== "undefined" ? VERSION : LATEST;
73966
+ var LATEST = "beta";
73967
+ var VERSION3 = typeof VERSION !== "undefined" ? VERSION : LATEST;
74187
73968
  var loadLibraryPromises = {};
74188
73969
  async function loadLibrary(libraryUrl, moduleName = null, options = {}) {
74189
73970
  if (moduleName) {
@@ -74205,7 +73986,7 @@ function getLibraryUrl(library, moduleName, options) {
74205
73986
  }
74206
73987
  if (options.CDN) {
74207
73988
  assert3(options.CDN.startsWith("http"));
74208
- return `${options.CDN}/${moduleName}@${VERSION2}/dist/libs/${library}`;
73989
+ return `${options.CDN}/${moduleName}@${VERSION3}/dist/libs/${library}`;
74209
73990
  }
74210
73991
  if (isWorker) {
74211
73992
  return `../src/libs/${library}`;
@@ -74375,6 +74156,9 @@ function canParseWithWorker(loader, options) {
74375
74156
  if (!WorkerFarm.isSupported()) {
74376
74157
  return false;
74377
74158
  }
74159
+ if (!isBrowser2 && !options?._nodeWorkers) {
74160
+ return false;
74161
+ }
74378
74162
  return loader.worker && options?.worker;
74379
74163
  }
74380
74164
  async function parseWithWorker(loader, data, options, context, parseOnMainThread) {
@@ -74383,15 +74167,17 @@ async function parseWithWorker(loader, data, options, context, parseOnMainThread
74383
74167
  const workerFarm = WorkerFarm.getWorkerFarm(options);
74384
74168
  const workerPool = workerFarm.getWorkerPool({ name: name8, url });
74385
74169
  options = JSON.parse(JSON.stringify(options));
74386
- const job = await workerPool.startJob("process-on-worker", onMessage.bind(null, parseOnMainThread));
74170
+ context = JSON.parse(JSON.stringify(context || {}));
74171
+ const job = await workerPool.startJob("process-on-worker", onMessage2.bind(null, parseOnMainThread));
74387
74172
  job.postMessage("process", {
74388
74173
  input: data,
74389
- options
74174
+ options,
74175
+ context
74390
74176
  });
74391
74177
  const result = await job.result;
74392
74178
  return await result.result;
74393
74179
  }
74394
- async function onMessage(parseOnMainThread, job, type, payload) {
74180
+ async function onMessage2(parseOnMainThread, job, type, payload) {
74395
74181
  switch (type) {
74396
74182
  case "done":
74397
74183
  job.done(payload);
@@ -74414,6 +74200,17 @@ async function onMessage(parseOnMainThread, job, type, payload) {
74414
74200
  }
74415
74201
  }
74416
74202
 
74203
+ // ../loader-utils/src/lib/worker-loader-utils/encode-with-worker.ts
74204
+ function canEncodeWithWorker(writer, options) {
74205
+ if (!WorkerFarm.isSupported()) {
74206
+ return false;
74207
+ }
74208
+ if (!isBrowser && !options?._nodeWorkers) {
74209
+ return false;
74210
+ }
74211
+ return writer.worker && options?.worker;
74212
+ }
74213
+
74417
74214
  // ../loader-utils/src/lib/binary-utils/get-first-characters.ts
74418
74215
  function getFirstCharacters(data, length = 5) {
74419
74216
  if (typeof data === "string") {
@@ -74954,7 +74751,7 @@ async function getResponseError(response) {
74954
74751
  text += ` ${await response.text()}`;
74955
74752
  }
74956
74753
  message += text;
74957
- message = message.length > 60 ? `${message.slice(60)}...` : message;
74754
+ message = message.length > 60 ? `${message.slice(0, 60)}...` : message;
74958
74755
  } catch (error) {
74959
74756
  }
74960
74757
  return message;
@@ -75059,7 +74856,8 @@ var DEFAULT_LOADER_OPTIONS = {
75059
74856
  worker: true,
75060
74857
  maxConcurrency: 3,
75061
74858
  maxMobileConcurrency: 1,
75062
- reuseWorkers: true,
74859
+ reuseWorkers: isBrowser,
74860
+ _nodeWorkers: false,
75063
74861
  _workerType: "",
75064
74862
  limit: 0,
75065
74863
  _limitMB: 0,
@@ -75619,6 +75417,12 @@ async function parse(data, loaders, options, context) {
75619
75417
  }
75620
75418
  async function parseWithLoader(loader, data, options, context) {
75621
75419
  validateWorkerVersion(loader);
75420
+ if (isResponse(data)) {
75421
+ const response = data;
75422
+ const { ok, redirected, status, statusText, type, url } = response;
75423
+ const headers = Object.fromEntries(response.headers.entries());
75424
+ context.response = { headers, ok, redirected, status, statusText, type, url };
75425
+ }
75622
75426
  data = await getArrayBufferOrStringFromData(data, loader, options);
75623
75427
  if (loader.parseTextSync && typeof data === "string") {
75624
75428
  options.dataType = "text";
@@ -75657,6 +75461,11 @@ async function load(url, loaders, options, context) {
75657
75461
 
75658
75462
  // ../core/src/lib/api/encode.ts
75659
75463
  async function encode(data, writer, options) {
75464
+ const globalOptions = getGlobalLoaderOptions();
75465
+ options = { ...globalOptions, ...options };
75466
+ if (canEncodeWithWorker(writer, options)) {
75467
+ return await processOnWorker(writer, data, options);
75468
+ }
75660
75469
  if (writer.encode) {
75661
75470
  return await writer.encode(data, options);
75662
75471
  }
@@ -75716,8 +75525,8 @@ function getTemporaryFilename(filename2) {
75716
75525
 
75717
75526
  // ../tiles/src/tileset/tileset-3d.ts
75718
75527
  var import_core10 = __toModule(require_es56());
75719
- var import_geospatial5 = __toModule(require_es57());
75720
- var import_stats2 = __toModule(require_es58());
75528
+ var import_geospatial6 = __toModule(require_es57());
75529
+ var import_stats2 = __toModule(require_es5());
75721
75530
 
75722
75531
  // ../tiles/src/utils/doubly-linked-list-node.ts
75723
75532
  var DoublyLinkedListNode = class {
@@ -75895,7 +75704,7 @@ function calculateTransformProps(tileHeader, tile) {
75895
75704
 
75896
75705
  // ../tiles/src/tileset/helpers/frame-state.ts
75897
75706
  var import_core2 = __toModule(require_es56());
75898
- var import_culling = __toModule(require_es59());
75707
+ var import_culling = __toModule(require_es58());
75899
75708
  var import_geospatial2 = __toModule(require_es57());
75900
75709
  var scratchVector = new import_core2.Vector3();
75901
75710
  var scratchPosition = new import_core2.Vector3();
@@ -75914,23 +75723,59 @@ function getFrameState(viewport, frameNumber) {
75914
75723
  const viewportCenterCartesian = import_geospatial2.Ellipsoid.WGS84.cartographicToCartesian(viewportCenterCartographic, new import_core2.Vector3());
75915
75724
  const enuToFixedTransform = import_geospatial2.Ellipsoid.WGS84.eastNorthUpToFixedFrame(viewportCenterCartesian);
75916
75725
  const cameraPositionCartographic = viewport.unprojectPosition(viewport.cameraPosition);
75917
- const cameraPositionCartesian = import_geospatial2.Ellipsoid.WGS84.cartographicToCartesian(cameraPositionCartographic, new import_core2.Vector3());
75726
+ const cameraPositionCartesian2 = import_geospatial2.Ellipsoid.WGS84.cartographicToCartesian(cameraPositionCartographic, new import_core2.Vector3());
75918
75727
  const cameraDirectionCartesian = new import_core2.Vector3(enuToFixedTransform.transformAsVector(new import_core2.Vector3(cameraDirection).scale(metersPerUnit))).normalize();
75919
75728
  const cameraUpCartesian = new import_core2.Vector3(enuToFixedTransform.transformAsVector(new import_core2.Vector3(cameraUp).scale(metersPerUnit))).normalize();
75920
75729
  commonSpacePlanesToWGS84(viewport, viewportCenterCartesian);
75730
+ const ViewportClass = viewport.constructor;
75731
+ const { longitude, latitude, width, bearing, zoom } = viewport;
75732
+ const topDownViewport = new ViewportClass({
75733
+ longitude,
75734
+ latitude,
75735
+ height,
75736
+ width,
75737
+ bearing,
75738
+ zoom,
75739
+ pitch: 0
75740
+ });
75921
75741
  return {
75922
75742
  camera: {
75923
- position: cameraPositionCartesian,
75743
+ position: cameraPositionCartesian2,
75924
75744
  direction: cameraDirectionCartesian,
75925
75745
  up: cameraUpCartesian
75926
75746
  },
75927
75747
  viewport,
75748
+ topDownViewport,
75928
75749
  height,
75929
75750
  cullingVolume,
75930
75751
  frameNumber,
75931
75752
  sseDenominator: 1.15
75932
75753
  };
75933
75754
  }
75755
+ function limitSelectedTiles(tiles, frameState, maximumTilesSelected) {
75756
+ if (maximumTilesSelected === 0 || tiles.length <= maximumTilesSelected) {
75757
+ return [tiles, []];
75758
+ }
75759
+ const tuples = [];
75760
+ const { longitude: viewportLongitude, latitude: viewportLatitude } = frameState.viewport;
75761
+ for (const [index, tile] of tiles.entries()) {
75762
+ const [longitude, latitude] = tile.header.mbs;
75763
+ const deltaLon = Math.abs(viewportLongitude - longitude);
75764
+ const deltaLat = Math.abs(viewportLatitude - latitude);
75765
+ const distance = Math.sqrt(deltaLat * deltaLat + deltaLon * deltaLon);
75766
+ tuples.push([index, distance]);
75767
+ }
75768
+ const tuplesSorted = tuples.sort((a, b) => a[1] - b[1]);
75769
+ const selectedTiles = [];
75770
+ for (let i = 0; i < maximumTilesSelected; i++) {
75771
+ selectedTiles.push(tiles[tuplesSorted[i][0]]);
75772
+ }
75773
+ const unselectedTiles = [];
75774
+ for (let i = maximumTilesSelected; i < tuplesSorted.length; i++) {
75775
+ unselectedTiles.push(tiles[tuplesSorted[i][0]]);
75776
+ }
75777
+ return [selectedTiles, unselectedTiles];
75778
+ }
75934
75779
  function commonSpacePlanesToWGS84(viewport, viewportCenterCartesian) {
75935
75780
  const frustumPlanes = viewport.getFrustumPlanes();
75936
75781
  let i = 0;
@@ -75946,7 +75791,8 @@ function commonSpacePlanesToWGS84(viewport, viewportCenterCartesian) {
75946
75791
 
75947
75792
  // ../tiles/src/tileset/helpers/zoom.ts
75948
75793
  var import_core3 = __toModule(require_es56());
75949
- var import_culling2 = __toModule(require_es59());
75794
+ var import_culling2 = __toModule(require_es58());
75795
+ var import_geospatial3 = __toModule(require_es57());
75950
75796
  var WGS84_RADIUS_X = 6378137;
75951
75797
  var WGS84_RADIUS_Y = 6378137;
75952
75798
  var WGS84_RADIUS_Z = 6356752314245179e-9;
@@ -75967,6 +75813,15 @@ function getZoomFromBoundingVolume(boundingVolume, cartorgraphicCenter) {
75967
75813
  }
75968
75814
  return 1;
75969
75815
  }
75816
+ function getZoomFromFullExtent(fullExtent, cartorgraphicCenter, cartesianCenter) {
75817
+ const extentVertex = import_geospatial3.Ellipsoid.WGS84.cartographicToCartesian([fullExtent.xmax, fullExtent.ymax, fullExtent.zmax], new import_core3.Vector3());
75818
+ 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));
75819
+ return Math.log2(WGS84_RADIUS_Z / (extentSize + cartorgraphicCenter[2]));
75820
+ }
75821
+ function getZoomFromExtent(extent, cartorgraphicCenter, cartesianCenter) {
75822
+ const [xmin, ymin, xmax, ymax] = extent;
75823
+ return getZoomFromFullExtent({ xmin, xmax, ymin, ymax, zmin: 0, zmax: 0 }, cartorgraphicCenter, cartesianCenter);
75824
+ }
75970
75825
  function getObbSize(halfAxes) {
75971
75826
  halfAxes.getColumn(0, scratchVector2);
75972
75827
  const axeY = halfAxes.getColumn(1);
@@ -75978,7 +75833,7 @@ function getObbSize(halfAxes) {
75978
75833
 
75979
75834
  // ../tiles/src/tileset/tile-3d.ts
75980
75835
  var import_core7 = __toModule(require_es56());
75981
- var import_culling4 = __toModule(require_es59());
75836
+ var import_culling4 = __toModule(require_es58());
75982
75837
 
75983
75838
  // ../tiles/src/constants.ts
75984
75839
  var TILE_CONTENT_STATE = {
@@ -76015,8 +75870,8 @@ var TILE3D_OPTIMIZATION_HINT = {
76015
75870
 
76016
75871
  // ../tiles/src/tileset/helpers/bounding-volume.ts
76017
75872
  var import_core4 = __toModule(require_es56());
76018
- var import_culling3 = __toModule(require_es59());
76019
- var import_geospatial3 = __toModule(require_es57());
75873
+ var import_culling3 = __toModule(require_es58());
75874
+ var import_geospatial4 = __toModule(require_es57());
76020
75875
  function defined2(x) {
76021
75876
  return x !== void 0 && x !== null;
76022
75877
  }
@@ -76030,8 +75885,8 @@ function createBoundingVolume(boundingVolumeHeader, transform9, result) {
76030
75885
  }
76031
75886
  if (boundingVolumeHeader.region) {
76032
75887
  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);
75888
+ const northWest = import_geospatial4.Ellipsoid.WGS84.cartographicToCartesian([(0, import_core4.degrees)(west), (0, import_core4.degrees)(north), minHeight], scratchNorthWest);
75889
+ const southEast = import_geospatial4.Ellipsoid.WGS84.cartographicToCartesian([(0, import_core4.degrees)(east), (0, import_core4.degrees)(south), maxHeight], scratchSouthEast);
76035
75890
  const centerInCartesian = new import_core4.Vector3().addVectors(northWest, southEast).multiplyScalar(0.5);
76036
75891
  const radius = new import_core4.Vector3().subVectors(northWest, southEast).len() / 2;
76037
75892
  return createSphere([centerInCartesian[0], centerInCartesian[1], centerInCartesian[2], radius], new import_core4.Matrix4());
@@ -76135,7 +75990,14 @@ function getTiles3DScreenSpaceError(tile, frameState, useParentLodMetric) {
76135
75990
 
76136
75991
  // ../tiles/src/tileset/helpers/i3s-lod.ts
76137
75992
  var import_core6 = __toModule(require_es56());
76138
- var import_geospatial4 = __toModule(require_es57());
75993
+ var import_geospatial5 = __toModule(require_es57());
75994
+ var cameraPositionCartesian = new import_core6.Vector3();
75995
+ var toEye = new import_core6.Vector3();
75996
+ var cameraPositionEnu = new import_core6.Vector3();
75997
+ var extraVertexEnu = new import_core6.Vector3();
75998
+ var projectedOriginVector = new import_core6.Vector3();
75999
+ var enuToCartesianMatrix = new import_core6.Matrix4();
76000
+ var cartesianToEnuMatrix = new import_core6.Matrix4();
76139
76001
  function getLodStatus(tile, frameState) {
76140
76002
  if (tile.lodMetricValue === 0 || isNaN(tile.lodMetricValue)) {
76141
76003
  return "DIG";
@@ -76152,33 +76014,29 @@ function getLodStatus(tile, frameState) {
76152
76014
  return "OUT";
76153
76015
  }
76154
76016
  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 });
76017
+ const { topDownViewport: viewport } = frameState;
76159
76018
  const mbsLat = tile.header.mbs[1];
76160
76019
  const mbsLon = tile.header.mbs[0];
76161
76020
  const mbsZ = tile.header.mbs[2];
76162
76021
  const mbsR = tile.header.mbs[3];
76163
76022
  const mbsCenterCartesian = [...tile.boundingVolume.center];
76164
76023
  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);
76024
+ import_geospatial5.Ellipsoid.WGS84.cartographicToCartesian(cameraPositionCartographic, cameraPositionCartesian);
76025
+ toEye.copy(cameraPositionCartesian).subtract(mbsCenterCartesian).normalize();
76026
+ import_geospatial5.Ellipsoid.WGS84.eastNorthUpToFixedFrame(mbsCenterCartesian, enuToCartesianMatrix);
76027
+ cartesianToEnuMatrix.copy(enuToCartesianMatrix).invert();
76028
+ cameraPositionEnu.copy(cameraPositionCartesian).transform(cartesianToEnuMatrix);
76171
76029
  const projection = Math.sqrt(cameraPositionEnu[0] * cameraPositionEnu[0] + cameraPositionEnu[1] * cameraPositionEnu[1]);
76172
76030
  const extraZ = projection * projection / cameraPositionEnu[2];
76173
- const extraVertexEnu = new import_core6.Vector3([cameraPositionEnu[0], cameraPositionEnu[1], extraZ]);
76031
+ extraVertexEnu.copy([cameraPositionEnu[0], cameraPositionEnu[1], extraZ]);
76174
76032
  const extraVertexCartesian = extraVertexEnu.transform(enuToCartesianMatrix);
76175
- const extraVectorCartesian = new import_core6.Vector3(extraVertexCartesian).subtract(mbsCenterCartesian).normalize();
76033
+ const extraVectorCartesian = extraVertexCartesian.subtract(mbsCenterCartesian).normalize();
76176
76034
  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);
76035
+ const sphereMbsBorderVertexCartesian = radiusVector.add(mbsCenterCartesian);
76036
+ const sphereMbsBorderVertexCartographic = import_geospatial5.Ellipsoid.WGS84.cartesianToCartographic(sphereMbsBorderVertexCartesian);
76179
76037
  const projectedOrigin = viewport.project([mbsLon, mbsLat, mbsZ]);
76180
76038
  const projectedMbsBorderVertex = viewport.project(sphereMbsBorderVertexCartographic);
76181
- const projectedRadius = new import_core6.Vector3(projectedOrigin).subtract(projectedMbsBorderVertex).magnitude();
76039
+ const projectedRadius = projectedOriginVector.copy(projectedOrigin).subtract(projectedMbsBorderVertex).magnitude();
76182
76040
  return projectedRadius;
76183
76041
  }
76184
76042
 
@@ -76285,6 +76143,8 @@ var DEFAULT_PROPS4 = {
76285
76143
  };
76286
76144
  var TilesetTraverser = class {
76287
76145
  constructor(options) {
76146
+ this.lastUpdate = new Date().getTime();
76147
+ this.updateDebounceTime = 1e3;
76288
76148
  this.options = { ...DEFAULT_PROPS4, ...options };
76289
76149
  this._traversalStack = new ManagedArray();
76290
76150
  this._emptyTraversalStack = new ManagedArray();
@@ -76294,6 +76154,9 @@ var TilesetTraverser = class {
76294
76154
  this.requestedTiles = {};
76295
76155
  this.emptyTiles = {};
76296
76156
  }
76157
+ get traversalFinished() {
76158
+ return true;
76159
+ }
76297
76160
  traverse(root, frameState, options) {
76298
76161
  this.root = root;
76299
76162
  this.options = { ...this.options, ...options };
@@ -76341,7 +76204,11 @@ var TilesetTraverser = class {
76341
76204
  this.touchTile(tile, frameState);
76342
76205
  tile._shouldRefine = shouldRefine && parentRefines;
76343
76206
  }
76344
- this.options.onTraversalEnd(frameState);
76207
+ const newTime = new Date().getTime();
76208
+ if (this.traversalFinished || newTime - this.lastUpdate > this.updateDebounceTime) {
76209
+ this.lastUpdate = newTime;
76210
+ this.options.onTraversalEnd(frameState);
76211
+ }
76345
76212
  }
76346
76213
  updateChildTiles(tile, frameState) {
76347
76214
  const children = tile.children;
@@ -76593,6 +76460,9 @@ var TileHeader = class {
76593
76460
  throw new Error("Unsupported tileset type");
76594
76461
  }
76595
76462
  }
76463
+ unselect() {
76464
+ this._selectedFrame = 0;
76465
+ }
76596
76466
  _getPriority() {
76597
76467
  const traverser = this.tileset._traverser;
76598
76468
  const { skipLevelOfDetail } = traverser.options;
@@ -76872,6 +76742,25 @@ var Tileset3DTraverser = class extends TilesetTraverser {
76872
76742
  }
76873
76743
  };
76874
76744
 
76745
+ // ../tiles/src/tileset/traversers/i3s-frame-counter.ts
76746
+ var I3SPendingTilesRegister = class {
76747
+ constructor() {
76748
+ this.frameNumberMap = new Map();
76749
+ }
76750
+ register(frameNumber) {
76751
+ const oldCount = this.frameNumberMap.get(frameNumber) || 0;
76752
+ this.frameNumberMap.set(frameNumber, (oldCount || 0) + 1);
76753
+ }
76754
+ deregister(frameNumber) {
76755
+ const oldCount = this.frameNumberMap.get(frameNumber) || 1;
76756
+ this.frameNumberMap.set(frameNumber, (oldCount || 0) - 1);
76757
+ }
76758
+ isZero(frameNumber) {
76759
+ const count = this.frameNumberMap.get(frameNumber) || 0;
76760
+ return count === 0;
76761
+ }
76762
+ };
76763
+
76875
76764
  // ../tiles/src/tileset/traversers/i3s-tile-manager.ts
76876
76765
  var STATUS = {
76877
76766
  REQUESTED: "REQUESTED",
@@ -76880,32 +76769,45 @@ var STATUS = {
76880
76769
  };
76881
76770
  var I3STileManager = class {
76882
76771
  constructor() {
76772
+ this.pendingTilesRegister = new I3SPendingTilesRegister();
76883
76773
  this._statusMap = {};
76884
76774
  }
76885
76775
  add(request, key, callback, frameState) {
76886
76776
  if (!this._statusMap[key]) {
76777
+ const { frameNumber } = frameState;
76887
76778
  this._statusMap[key] = { request, callback, key, frameState, status: STATUS.REQUESTED };
76779
+ this.pendingTilesRegister.register(frameNumber);
76888
76780
  request().then((data) => {
76889
76781
  this._statusMap[key].status = STATUS.COMPLETED;
76782
+ this.pendingTilesRegister.deregister(frameNumber);
76890
76783
  this._statusMap[key].callback(data, frameState);
76891
76784
  }).catch((error) => {
76892
76785
  this._statusMap[key].status = STATUS.ERROR;
76786
+ this.pendingTilesRegister.deregister(frameNumber);
76893
76787
  callback(error);
76894
76788
  });
76895
76789
  }
76896
76790
  }
76897
76791
  update(key, frameState) {
76898
76792
  if (this._statusMap[key]) {
76793
+ this.pendingTilesRegister.deregister(this._statusMap[key].frameState.frameNumber);
76794
+ this.pendingTilesRegister.register(frameState.frameNumber);
76899
76795
  this._statusMap[key].frameState = frameState;
76900
76796
  }
76901
76797
  }
76902
76798
  find(key) {
76903
76799
  return this._statusMap[key];
76904
76800
  }
76801
+ hasPendingTiles(frameNumber) {
76802
+ return !this.pendingTilesRegister.isZero(frameNumber);
76803
+ }
76905
76804
  };
76906
76805
 
76907
76806
  // ../tiles/src/tileset/traversers/i3s-tileset-traverser.ts
76908
76807
  var I3STilesetTraverser = class extends TilesetTraverser {
76808
+ get traversalFinished() {
76809
+ return !this._tileManager.hasPendingTiles(this._frameNumber || 0);
76810
+ }
76909
76811
  constructor(options) {
76910
76812
  super(options);
76911
76813
  this._tileManager = new I3STileManager();
@@ -76956,7 +76858,7 @@ var I3STilesetTraverser = class extends TilesetTraverser {
76956
76858
  tile.children.push(childTile);
76957
76859
  const frameState = this._tileManager.find(childTile.id).frameState;
76958
76860
  this.updateTile(childTile, frameState);
76959
- if (this._frameNumber === frameState.frameNumber) {
76861
+ if (this._frameNumber === frameState.frameNumber && (this.traversalFinished || new Date().getTime() - this.lastUpdate > this.updateDebounceTime)) {
76960
76862
  this.executeTraversal(childTile, frameState);
76961
76863
  }
76962
76864
  }
@@ -76965,11 +76867,13 @@ var I3STilesetTraverser = class extends TilesetTraverser {
76965
76867
  // ../tiles/src/tileset/tileset-3d.ts
76966
76868
  var DEFAULT_PROPS5 = {
76967
76869
  description: "",
76968
- ellipsoid: import_geospatial5.Ellipsoid.WGS84,
76870
+ ellipsoid: import_geospatial6.Ellipsoid.WGS84,
76969
76871
  modelMatrix: new import_core10.Matrix4(),
76970
76872
  throttleRequests: true,
76971
76873
  maxRequests: 64,
76972
76874
  maximumMemoryUsage: 32,
76875
+ maximumTilesSelected: 0,
76876
+ debounceTime: 0,
76973
76877
  onTileLoad: () => {
76974
76878
  },
76975
76879
  onTileUnload: () => {
@@ -76996,10 +76900,11 @@ var TILES_LOADED = "Tiles Loaded";
76996
76900
  var TILES_LOADING = "Tiles Loading";
76997
76901
  var TILES_UNLOADED = "Tiles Unloaded";
76998
76902
  var TILES_LOAD_FAILED = "Failed Tile Loads";
76999
- var POINTS_COUNT = "Points";
76903
+ var POINTS_COUNT = "Points/Vertices";
77000
76904
  var TILES_GPU_MEMORY = "Tile Memory Use";
77001
76905
  var Tileset3D = class {
77002
76906
  constructor(json, options) {
76907
+ this.updatePromise = null;
77003
76908
  assert2(json);
77004
76909
  this.options = { ...DEFAULT_PROPS5, ...options };
77005
76910
  this.tileset = json;
@@ -77047,7 +76952,7 @@ var Tileset3D = class {
77047
76952
  this.asset = {};
77048
76953
  this.credits = {};
77049
76954
  this.description = this.options.description || "";
77050
- this._initializeTileSet(json);
76955
+ this.tilesetInitializationPromise = this._initializeTileSet(json);
77051
76956
  }
77052
76957
  destroy() {
77053
76958
  this._destroy();
@@ -77083,18 +76988,39 @@ var Tileset3D = class {
77083
76988
  hasExtension(extensionName) {
77084
76989
  return Boolean(this._extensionsUsed && this._extensionsUsed.indexOf(extensionName) > -1);
77085
76990
  }
77086
- update(viewports) {
76991
+ update(viewports = null) {
76992
+ this.tilesetInitializationPromise.then(() => {
76993
+ if (!viewports && this.lastUpdatedVieports) {
76994
+ viewports = this.lastUpdatedVieports;
76995
+ } else {
76996
+ this.lastUpdatedVieports = viewports;
76997
+ }
76998
+ this.doUpdate(viewports);
76999
+ });
77000
+ }
77001
+ async selectTiles(viewports = null) {
77002
+ await this.tilesetInitializationPromise;
77003
+ if (viewports) {
77004
+ this.lastUpdatedVieports = viewports;
77005
+ }
77006
+ if (!this.updatePromise) {
77007
+ this.updatePromise = new Promise((resolve) => {
77008
+ setTimeout(() => {
77009
+ this.doUpdate(this.lastUpdatedVieports);
77010
+ resolve(this._frameNumber);
77011
+ this.updatePromise = null;
77012
+ }, this.options.debounceTime);
77013
+ });
77014
+ }
77015
+ return this.updatePromise;
77016
+ }
77017
+ doUpdate(viewports = null) {
77087
77018
  if ("loadTiles" in this.options && !this.options.loadTiles) {
77088
77019
  return;
77089
77020
  }
77090
77021
  if (this.traverseCounter > 0) {
77091
77022
  return;
77092
77023
  }
77093
- if (!viewports && this.lastUpdatedVieports) {
77094
- viewports = this.lastUpdatedVieports;
77095
- } else {
77096
- this.lastUpdatedVieports = viewports;
77097
- }
77098
77024
  if (!(viewports instanceof Array)) {
77099
77025
  viewports = [viewports];
77100
77026
  }
@@ -77139,7 +77065,11 @@ var Tileset3D = class {
77139
77065
  }
77140
77066
  const currentFrameStateData = this.frameStateData[id];
77141
77067
  const selectedTiles = Object.values(this._traverser.selectedTiles);
77142
- currentFrameStateData.selectedTiles = selectedTiles;
77068
+ const [filteredSelectedTiles, unselectedTiles] = limitSelectedTiles(selectedTiles, frameState, this.options.maximumTilesSelected);
77069
+ currentFrameStateData.selectedTiles = filteredSelectedTiles;
77070
+ for (const tile of unselectedTiles) {
77071
+ tile.unselect();
77072
+ }
77143
77073
  currentFrameStateData._requestedTiles = Object.values(this._traverser.requestedTiles);
77144
77074
  currentFrameStateData._emptyTiles = Object.values(this._traverser.emptyTiles);
77145
77075
  this.traverseCounter--;
@@ -77194,6 +77124,8 @@ var Tileset3D = class {
77194
77124
  tilesRenderable++;
77195
77125
  if (tile.content.pointCount) {
77196
77126
  pointsRenderable += tile.content.pointCount;
77127
+ } else {
77128
+ pointsRenderable += tile.content.vertexCount;
77197
77129
  }
77198
77130
  }
77199
77131
  }
@@ -77201,17 +77133,43 @@ var Tileset3D = class {
77201
77133
  this.stats.get(TILES_RENDERABLE).count = tilesRenderable;
77202
77134
  this.stats.get(POINTS_COUNT).count = pointsRenderable;
77203
77135
  }
77204
- _initializeTileSet(tilesetJson) {
77136
+ async _initializeTileSet(tilesetJson) {
77137
+ if (this.type === TILESET_TYPE.I3S) {
77138
+ this.calculateViewPropsI3S();
77139
+ tilesetJson.root = await tilesetJson.root;
77140
+ }
77205
77141
  this.root = this._initializeTileHeaders(tilesetJson, null);
77206
77142
  if (this.type === TILESET_TYPE.TILES3D) {
77207
- this._initializeCesiumTileset(tilesetJson);
77143
+ this._initializeTiles3DTileset(tilesetJson);
77144
+ this.calculateViewPropsTiles3D();
77208
77145
  }
77209
77146
  if (this.type === TILESET_TYPE.I3S) {
77210
77147
  this._initializeI3STileset();
77211
77148
  }
77212
- this._calculateViewProps();
77213
77149
  }
77214
- _calculateViewProps() {
77150
+ calculateViewPropsI3S() {
77151
+ const fullExtent = this.tileset.fullExtent;
77152
+ if (fullExtent) {
77153
+ const { xmin, xmax, ymin, ymax, zmin, zmax } = fullExtent;
77154
+ this.cartographicCenter = new import_core10.Vector3(xmin + (xmax - xmin) / 2, ymin + (ymax - ymin) / 2, zmin + (zmax - zmin) / 2);
77155
+ this.cartesianCenter = import_geospatial6.Ellipsoid.WGS84.cartographicToCartesian(this.cartographicCenter, new import_core10.Vector3());
77156
+ this.zoom = getZoomFromFullExtent(fullExtent, this.cartographicCenter, this.cartesianCenter);
77157
+ return;
77158
+ }
77159
+ const extent = this.tileset.store?.extent;
77160
+ if (extent) {
77161
+ const [xmin, ymin, xmax, ymax] = extent;
77162
+ this.cartographicCenter = new import_core10.Vector3(xmin + (xmax - xmin) / 2, ymin + (ymax - ymin) / 2, 0);
77163
+ this.cartesianCenter = import_geospatial6.Ellipsoid.WGS84.cartographicToCartesian(this.cartographicCenter, new import_core10.Vector3());
77164
+ this.zoom = getZoomFromExtent(extent, this.cartographicCenter, this.cartesianCenter);
77165
+ return;
77166
+ }
77167
+ console.warn("Extent is not defined in the tileset header");
77168
+ this.cartographicCenter = new import_core10.Vector3();
77169
+ this.zoom = 1;
77170
+ return;
77171
+ }
77172
+ calculateViewPropsTiles3D() {
77215
77173
  const root = this.root;
77216
77174
  assert2(root);
77217
77175
  const { center } = root.boundingVolume;
@@ -77221,7 +77179,7 @@ var Tileset3D = class {
77221
77179
  this.zoom = 1;
77222
77180
  return;
77223
77181
  }
77224
- this.cartographicCenter = import_geospatial5.Ellipsoid.WGS84.cartesianToCartographic(center, new import_core10.Vector3());
77182
+ this.cartographicCenter = import_geospatial6.Ellipsoid.WGS84.cartesianToCartographic(center, new import_core10.Vector3());
77225
77183
  this.cartesianCenter = center;
77226
77184
  this.zoom = getZoomFromBoundingVolume(root.boundingVolume, this.cartographicCenter);
77227
77185
  }
@@ -77369,7 +77327,7 @@ var Tileset3D = class {
77369
77327
  this._unloadTile(tile);
77370
77328
  tile.destroy();
77371
77329
  }
77372
- _initializeCesiumTileset(tilesetJson) {
77330
+ _initializeTiles3DTileset(tilesetJson) {
77373
77331
  this.asset = tilesetJson.asset;
77374
77332
  if (!this.asset) {
77375
77333
  throw new Error("Tileset must have an asset property.");
@@ -77411,7 +77369,7 @@ function getQueryParamString(queryParams) {
77411
77369
  }
77412
77370
 
77413
77371
  // ../3d-tiles/src/lib/utils/version.ts
77414
- var VERSION3 = typeof __VERSION__ !== "undefined" ? __VERSION__ : "latest";
77372
+ var VERSION4 = typeof __VERSION__ !== "undefined" ? __VERSION__ : "latest";
77415
77373
 
77416
77374
  // ../3d-tiles/src/lib/constants.ts
77417
77375
  var TILE3D_TYPE = {
@@ -77445,7 +77403,7 @@ function getMagicString3(arrayBuffer, byteOffset = 0) {
77445
77403
  }
77446
77404
 
77447
77405
  // ../draco/src/lib/utils/version.ts
77448
- var VERSION4 = typeof __VERSION__ !== "undefined" ? __VERSION__ : "latest";
77406
+ var VERSION5 = typeof __VERSION__ !== "undefined" ? __VERSION__ : "latest";
77449
77407
 
77450
77408
  // ../draco/src/draco-loader.ts
77451
77409
  var DEFAULT_DRACO_OPTIONS = {
@@ -77461,7 +77419,7 @@ var DracoLoader = {
77461
77419
  id: "draco",
77462
77420
  module: "draco",
77463
77421
  shapes: ["mesh"],
77464
- version: VERSION4,
77422
+ version: VERSION5,
77465
77423
  worker: true,
77466
77424
  extensions: ["drc"],
77467
77425
  mimeTypes: ["application/octet-stream"],
@@ -78372,7 +78330,6 @@ var DRACO_WASM_WRAPPER_URL = `https://www.gstatic.com/draco/versioned/decoders/$
78372
78330
  var DRACO_WASM_DECODER_URL = `https://www.gstatic.com/draco/versioned/decoders/${DRACO_VERSION}/draco_decoder.wasm`;
78373
78331
  var DRACO_ENCODER_URL = `https://raw.githubusercontent.com/google/draco/${DRACO_VERSION}/javascript/draco_encoder.js`;
78374
78332
  var loadDecoderPromise;
78375
- var loadEncoderPromise;
78376
78333
  async function loadDracoDecoderModule(options) {
78377
78334
  const modules = options.modules || {};
78378
78335
  if (modules.draco3d) {
@@ -78384,17 +78341,6 @@ async function loadDracoDecoderModule(options) {
78384
78341
  }
78385
78342
  return await loadDecoderPromise;
78386
78343
  }
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
78344
  async function loadDracoDecoder(options) {
78399
78345
  let DracoDecoderModule;
78400
78346
  let wasmBinary;
@@ -78424,303 +78370,19 @@ function initializeDracoDecoder(DracoDecoderModule, wasmBinary) {
78424
78370
  });
78425
78371
  });
78426
78372
  }
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
78373
 
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",
78374
+ // ../draco/src/index.ts
78375
+ var DracoWriterWorker = {
78376
+ id: isBrowser2 ? "draco-writer" : "draco-writer-nodejs",
78377
+ name: "Draco compressed geometry writer",
78705
78378
  module: "draco",
78706
- version: VERSION4,
78707
- extensions: ["drc"],
78708
- encode: encode2,
78379
+ version: VERSION5,
78380
+ worker: true,
78709
78381
  options: {
78710
- draco: DEFAULT_DRACO_OPTIONS2
78382
+ draco: {},
78383
+ source: null
78711
78384
  }
78712
78385
  };
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
78386
  var DracoLoader2 = {
78725
78387
  ...DracoLoader,
78726
78388
  parse: parse2
@@ -79849,15 +79511,15 @@ async function loadDraco(tile, dracoData, options, context) {
79849
79511
  }
79850
79512
 
79851
79513
  // ../gltf/src/lib/utils/version.ts
79852
- var VERSION5 = typeof __VERSION__ !== "undefined" ? __VERSION__ : "latest";
79514
+ var VERSION6 = typeof __VERSION__ !== "undefined" ? __VERSION__ : "latest";
79853
79515
 
79854
79516
  // ../textures/src/lib/utils/version.ts
79855
- var VERSION6 = typeof __VERSION__ !== "undefined" ? __VERSION__ : "latest";
79517
+ var VERSION7 = typeof __VERSION__ !== "undefined" ? __VERSION__ : "beta";
79856
79518
 
79857
79519
  // ../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`;
79520
+ var VERSION8 = typeof __VERSION__ !== "undefined" ? __VERSION__ : "beta";
79521
+ var BASIS_CDN_ENCODER_WASM = `https://unpkg.com/@loaders.gl/textures@${VERSION8}/dist/libs/basis_encoder.wasm`;
79522
+ var BASIS_CDN_ENCODER_JS = `https://unpkg.com/@loaders.gl/textures@${VERSION8}/dist/libs/basis_encoder.js`;
79861
79523
  var loadBasisTranscoderPromise;
79862
79524
  async function loadBasisTrascoderModule(options) {
79863
79525
  const modules = options.modules || {};
@@ -80243,7 +79905,7 @@ function parseBasisFile(BasisFile, data, options) {
80243
79905
  const basisFile = new BasisFile(new Uint8Array(data));
80244
79906
  try {
80245
79907
  if (!basisFile.startTranscoding()) {
80246
- return null;
79908
+ throw new Error("Failed to start basis transcoding");
80247
79909
  }
80248
79910
  const imageCount = basisFile.getNumImages();
80249
79911
  const images = [];
@@ -80269,22 +79931,22 @@ function transcodeImage(basisFile, imageIndex, levelIndex, options) {
80269
79931
  const decodedSize = basisFile.getImageTranscodedSizeInBytes(imageIndex, levelIndex, basisFormat);
80270
79932
  const decodedData = new Uint8Array(decodedSize);
80271
79933
  if (!basisFile.transcodeImage(decodedData, imageIndex, levelIndex, basisFormat, 0, 0)) {
80272
- return null;
79934
+ throw new Error("failed to start Basis transcoding");
80273
79935
  }
80274
79936
  return {
80275
79937
  width,
80276
79938
  height,
80277
79939
  data: decodedData,
80278
79940
  compressed,
80279
- hasAlpha,
80280
- format
79941
+ format,
79942
+ hasAlpha
80281
79943
  };
80282
79944
  }
80283
79945
  function parseKTX2File(KTX2File, data, options) {
80284
79946
  const ktx2File = new KTX2File(new Uint8Array(data));
80285
79947
  try {
80286
79948
  if (!ktx2File.startTranscoding()) {
80287
- return null;
79949
+ throw new Error("failed to start KTX2 transcoding");
80288
79950
  }
80289
79951
  const levelsCount = ktx2File.getLevels();
80290
79952
  const levels = [];
@@ -80292,7 +79954,7 @@ function parseKTX2File(KTX2File, data, options) {
80292
79954
  levels.push(transcodeKTX2Image(ktx2File, levelIndex, options));
80293
79955
  break;
80294
79956
  }
80295
- return levels;
79957
+ return [levels];
80296
79958
  } finally {
80297
79959
  ktx2File.close();
80298
79960
  ktx2File.delete();
@@ -80304,14 +79966,14 @@ function transcodeKTX2Image(ktx2File, levelIndex, options) {
80304
79966
  const decodedSize = ktx2File.getImageTranscodedSizeInBytes(levelIndex, 0, 0, basisFormat);
80305
79967
  const decodedData = new Uint8Array(decodedSize);
80306
79968
  if (!ktx2File.transcodeImage(decodedData, levelIndex, 0, 0, basisFormat, 0, -1, -1)) {
80307
- return null;
79969
+ throw new Error("Failed to transcode KTX2 image");
80308
79970
  }
80309
79971
  return {
80310
79972
  width,
80311
79973
  height,
80312
79974
  data: decodedData,
80313
79975
  compressed,
80314
- alphaFlag,
79976
+ hasAlpha: alphaFlag,
80315
79977
  format
80316
79978
  };
80317
79979
  }
@@ -80353,7 +80015,7 @@ var BasisWorkerLoader = {
80353
80015
  name: "Basis",
80354
80016
  id: "basis",
80355
80017
  module: "textures",
80356
- version: VERSION6,
80018
+ version: VERSION7,
80357
80019
  worker: true,
80358
80020
  extensions: ["basis", "ktx2"],
80359
80021
  mimeTypes: ["application/octet-stream", "image/ktx2"],
@@ -80666,7 +80328,7 @@ var CompressedTextureWorkerLoader = {
80666
80328
  name: "Texture Containers",
80667
80329
  id: "compressed-texture",
80668
80330
  module: "textures",
80669
- version: VERSION6,
80331
+ version: VERSION7,
80670
80332
  worker: true,
80671
80333
  extensions: [
80672
80334
  "ktx",
@@ -80697,57 +80359,14 @@ var CompressedTextureLoader = {
80697
80359
  containerFormat: "ktx2",
80698
80360
  module: "encoder"
80699
80361
  };
80700
- return await parseBasis(arrayBuffer, options);
80362
+ return (await parseBasis(arrayBuffer, options))[0];
80701
80363
  }
80702
80364
  return parseCompressedTexture(arrayBuffer);
80703
80365
  }
80704
80366
  };
80705
80367
 
80706
- // ../textures/src/lib/encoders/encode-ktx2-basis-texture.ts
80707
- async function encodeKTX2BasisTexture(image, options = {}) {
80708
- const { useSRGB = false, qualityLevel = 10, encodeUASTC = false, mipmaps = false } = options;
80709
- const { BasisEncoder } = await loadBasisEncoderModule(options);
80710
- const basisEncoder = new BasisEncoder();
80711
- try {
80712
- const basisFileData = new Uint8Array(image.width * image.height * 4);
80713
- basisEncoder.setCreateKTX2File(true);
80714
- basisEncoder.setKTX2UASTCSupercompression(true);
80715
- basisEncoder.setKTX2SRGBTransferFunc(true);
80716
- basisEncoder.setSliceSourceImage(0, image.data, image.width, image.height, false);
80717
- basisEncoder.setPerceptual(useSRGB);
80718
- basisEncoder.setMipSRGB(useSRGB);
80719
- basisEncoder.setQualityLevel(qualityLevel);
80720
- basisEncoder.setUASTC(encodeUASTC);
80721
- basisEncoder.setMipGen(mipmaps);
80722
- const numOutputBytes = basisEncoder.encode(basisFileData);
80723
- const actualKTX2FileData = basisFileData.subarray(0, numOutputBytes).buffer;
80724
- return actualKTX2FileData;
80725
- } catch (error) {
80726
- console.error("Basis Universal Supercompressed GPU Texture encoder Error: ", error);
80727
- throw error;
80728
- } finally {
80729
- basisEncoder.delete();
80730
- }
80731
- }
80732
-
80733
- // ../textures/src/ktx2-basis-universal-texture-writer.ts
80734
- var KTX2BasisUniversalTextureWriter = {
80735
- name: "Basis Universal Supercompressed GPU Texture",
80736
- id: "ktx2-basis-supercompressed-texture",
80737
- module: "textures",
80738
- version: VERSION6,
80739
- extensions: ["ktx2"],
80740
- options: {
80741
- useSRGB: false,
80742
- qualityLevel: 10,
80743
- encodeUASTC: false,
80744
- mipmaps: false
80745
- },
80746
- encode: encodeKTX2BasisTexture
80747
- };
80748
-
80749
80368
  // ../images/src/lib/utils/version.ts
80750
- var VERSION8 = typeof __VERSION__ !== "undefined" ? __VERSION__ : "latest";
80369
+ var VERSION9 = typeof __VERSION__ !== "undefined" ? __VERSION__ : "latest";
80751
80370
 
80752
80371
  // ../images/src/lib/category-api/image-type.ts
80753
80372
  var { _parseImageNode } = globalThis;
@@ -81089,7 +80708,7 @@ var ImageLoader = {
81089
80708
  id: "image",
81090
80709
  module: "images",
81091
80710
  name: "Images",
81092
- version: VERSION8,
80711
+ version: VERSION9,
81093
80712
  mimeTypes: MIME_TYPES,
81094
80713
  extensions: EXTENSIONS,
81095
80714
  parse: parseImage,
@@ -81152,7 +80771,7 @@ var ImageWriter = {
81152
80771
  name: "Images",
81153
80772
  id: "image",
81154
80773
  module: "images",
81155
- version: VERSION8,
80774
+ version: VERSION9,
81156
80775
  extensions: ["jpeg"],
81157
80776
  options: {
81158
80777
  image: {
@@ -81198,6 +80817,22 @@ function checkWebPSupport() {
81198
80817
  }
81199
80818
  }
81200
80819
 
80820
+ // ../textures/src/index.ts
80821
+ var KTX2BasisWriterWorker = {
80822
+ name: "Basis Universal Supercompressed GPU Texture",
80823
+ id: isBrowser ? "ktx2-basis-writer" : "ktx2-basis-writer-nodejs",
80824
+ module: "textures",
80825
+ version: VERSION7,
80826
+ extensions: ["ktx2"],
80827
+ worker: true,
80828
+ options: {
80829
+ useSRGB: false,
80830
+ qualityLevel: 10,
80831
+ encodeUASTC: false,
80832
+ mipmaps: false
80833
+ }
80834
+ };
80835
+
81201
80836
  // ../gltf/src/lib/utils/assert.ts
81202
80837
  function assert6(condition, message) {
81203
80838
  if (!condition) {
@@ -81233,8 +80868,7 @@ function getTypedArrayForBufferView(json, buffers, bufferViewIndex) {
81233
80868
  var EXT_meshopt_compression_exports = {};
81234
80869
  __export(EXT_meshopt_compression_exports, {
81235
80870
  decode: () => decode2,
81236
- name: () => name,
81237
- preprocess: () => preprocess
80871
+ name: () => name
81238
80872
  });
81239
80873
 
81240
80874
  // ../gltf/src/lib/gltf-utils/gltf-utils.ts
@@ -81683,7 +81317,6 @@ var GLTFScenegraph = class {
81683
81317
  };
81684
81318
 
81685
81319
  // ../gltf/src/meshopt/meshopt-decoder.ts
81686
- var isWebAssemblySupported = typeof WebAssembly !== "object";
81687
81320
  var wasm_base = "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";
81688
81321
  var wasm_simd = "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";
81689
81322
  var detector = new Uint8Array([
@@ -81819,9 +81452,6 @@ var DECODERS = {
81819
81452
  TRIANGLES: "meshopt_decodeIndexBuffer",
81820
81453
  INDICES: "meshopt_decodeIndexSequence"
81821
81454
  };
81822
- function isMeshoptSupported() {
81823
- return isWebAssemblySupported;
81824
- }
81825
81455
  async function meshoptDecodeGltfBuffer(target, count, size, source, mode, filter = "NONE") {
81826
81456
  const instance = await loadWasmInstance();
81827
81457
  decode(instance, instance.exports[DECODERS[mode]], target, count, size, source, instance.exports[FILTERS[filter || "NONE"]]);
@@ -81876,12 +81506,6 @@ function decode(instance, fun, target, count, size, source, filter) {
81876
81506
  // ../gltf/src/lib/extensions/EXT_meshopt_compression.ts
81877
81507
  var EXT_MESHOPT_COMPRESSION = "EXT_meshopt_compression";
81878
81508
  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
81509
  async function decode2(gltfData, options) {
81886
81510
  const scenegraph = new GLTFScenegraph(gltfData);
81887
81511
  if (!options?.gltf?.decompressMeshes) {
@@ -81897,18 +81521,19 @@ async function decode2(gltfData, options) {
81897
81521
  async function decodeMeshoptBufferView(scenegraph, bufferView) {
81898
81522
  const meshoptExtension = scenegraph.getObjectExtension(bufferView, EXT_MESHOPT_COMPRESSION);
81899
81523
  if (meshoptExtension) {
81900
- const buffer = bufferView.buffer;
81901
81524
  const {
81902
81525
  byteOffset = 0,
81903
81526
  byteLength = 0,
81904
81527
  byteStride,
81905
81528
  count,
81906
81529
  mode,
81907
- filter = "NONE"
81530
+ filter = "NONE",
81531
+ buffer: bufferIndex
81908
81532
  } = 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);
81533
+ const buffer = scenegraph.gltf.buffers[bufferIndex];
81534
+ const source = new Uint8Array(buffer.arrayBuffer, buffer.byteOffset + byteOffset, byteLength);
81535
+ const result = new Uint8Array(scenegraph.gltf.buffers[bufferView.buffer].arrayBuffer, bufferView.byteOffset, bufferView.byteLength);
81536
+ await meshoptDecodeGltfBuffer(result, count, byteStride, source, mode, filter);
81912
81537
  return result;
81913
81538
  }
81914
81539
  return null;
@@ -81918,11 +81543,11 @@ async function decodeMeshoptBufferView(scenegraph, bufferView) {
81918
81543
  var EXT_texture_webp_exports = {};
81919
81544
  __export(EXT_texture_webp_exports, {
81920
81545
  name: () => name2,
81921
- preprocess: () => preprocess2
81546
+ preprocess: () => preprocess
81922
81547
  });
81923
81548
  var EXT_TEXTURE_WEBP = "EXT_texture_webp";
81924
81549
  var name2 = EXT_TEXTURE_WEBP;
81925
- function preprocess2(gltfData, options) {
81550
+ function preprocess(gltfData, options) {
81926
81551
  const scenegraph = new GLTFScenegraph(gltfData);
81927
81552
  if (!_isImageFormatSupported("image/webp")) {
81928
81553
  if (scenegraph.getRequiredExtensions().includes(EXT_TEXTURE_WEBP)) {
@@ -81945,11 +81570,11 @@ function preprocess2(gltfData, options) {
81945
81570
  var KHR_texture_basisu_exports = {};
81946
81571
  __export(KHR_texture_basisu_exports, {
81947
81572
  name: () => name3,
81948
- preprocess: () => preprocess3
81573
+ preprocess: () => preprocess2
81949
81574
  });
81950
81575
  var KHR_TEXTURE_BASISU = "KHR_texture_basisu";
81951
81576
  var name3 = KHR_TEXTURE_BASISU;
81952
- function preprocess3(gltfData, options) {
81577
+ function preprocess2(gltfData, options) {
81953
81578
  const scene = new GLTFScenegraph(gltfData);
81954
81579
  const { json } = scene;
81955
81580
  for (const texture of json.textures || []) {
@@ -81966,9 +81591,9 @@ function preprocess3(gltfData, options) {
81966
81591
  var KHR_draco_mesh_compression_exports = {};
81967
81592
  __export(KHR_draco_mesh_compression_exports, {
81968
81593
  decode: () => decode3,
81969
- encode: () => encode3,
81594
+ encode: () => encode2,
81970
81595
  name: () => name4,
81971
- preprocess: () => preprocess4
81596
+ preprocess: () => preprocess3
81972
81597
  });
81973
81598
 
81974
81599
  // ../gltf/src/lib/gltf-utils/gltf-attribute-utils.ts
@@ -82027,7 +81652,7 @@ function toTypedArray(array, ArrayType, convertTypedArrays = false) {
82027
81652
  // ../gltf/src/lib/extensions/KHR_draco_mesh_compression.ts
82028
81653
  var KHR_DRACO_MESH_COMPRESSION = "KHR_draco_mesh_compression";
82029
81654
  var name4 = KHR_DRACO_MESH_COMPRESSION;
82030
- function preprocess4(gltfData, options, context) {
81655
+ function preprocess3(gltfData, options, context) {
82031
81656
  const scenegraph = new GLTFScenegraph(gltfData);
82032
81657
  for (const primitive of makeMeshPrimitiveIterator(scenegraph)) {
82033
81658
  if (scenegraph.getObjectExtension(primitive, KHR_DRACO_MESH_COMPRESSION)) {
@@ -82048,7 +81673,7 @@ async function decode3(gltfData, options, context) {
82048
81673
  await Promise.all(promises);
82049
81674
  scenegraph.removeExtension(KHR_DRACO_MESH_COMPRESSION);
82050
81675
  }
82051
- function encode3(gltfData, options = {}) {
81676
+ function encode2(gltfData, options = {}) {
82052
81677
  const scenegraph = new GLTFScenegraph(gltfData);
82053
81678
  for (const mesh of scenegraph.json.meshes || []) {
82054
81679
  compressMesh(mesh, options);
@@ -82124,7 +81749,7 @@ function* makeMeshPrimitiveIterator(scenegraph) {
82124
81749
  var KHR_lights_punctual_exports = {};
82125
81750
  __export(KHR_lights_punctual_exports, {
82126
81751
  decode: () => decode4,
82127
- encode: () => encode4,
81752
+ encode: () => encode3,
82128
81753
  name: () => name5
82129
81754
  });
82130
81755
  var KHR_LIGHTS_PUNCTUAL = "KHR_lights_punctual";
@@ -82145,7 +81770,7 @@ async function decode4(gltfData) {
82145
81770
  gltfScenegraph.removeObjectExtension(node2, KHR_LIGHTS_PUNCTUAL);
82146
81771
  }
82147
81772
  }
82148
- async function encode4(gltfData) {
81773
+ async function encode3(gltfData) {
82149
81774
  const gltfScenegraph = new GLTFScenegraph(gltfData);
82150
81775
  const { json } = gltfScenegraph;
82151
81776
  if (json.lights) {
@@ -82167,7 +81792,7 @@ async function encode4(gltfData) {
82167
81792
  var KHR_materials_unlit_exports = {};
82168
81793
  __export(KHR_materials_unlit_exports, {
82169
81794
  decode: () => decode5,
82170
- encode: () => encode5,
81795
+ encode: () => encode4,
82171
81796
  name: () => name6
82172
81797
  });
82173
81798
  var KHR_MATERIALS_UNLIT = "KHR_materials_unlit";
@@ -82184,7 +81809,7 @@ async function decode5(gltfData) {
82184
81809
  gltfScenegraph.removeObjectExtension(material, KHR_MATERIALS_UNLIT);
82185
81810
  }
82186
81811
  }
82187
- function encode5(gltfData) {
81812
+ function encode4(gltfData) {
82188
81813
  const gltfScenegraph = new GLTFScenegraph(gltfData);
82189
81814
  const { json } = gltfScenegraph;
82190
81815
  if (gltfScenegraph.materials) {
@@ -82202,7 +81827,7 @@ function encode5(gltfData) {
82202
81827
  var KHR_techniques_webgl_exports = {};
82203
81828
  __export(KHR_techniques_webgl_exports, {
82204
81829
  decode: () => decode6,
82205
- encode: () => encode6,
81830
+ encode: () => encode5,
82206
81831
  name: () => name7
82207
81832
  });
82208
81833
  var KHR_TECHNIQUES_WEBGL = "KHR_techniques_webgl";
@@ -82224,7 +81849,7 @@ async function decode6(gltfData) {
82224
81849
  gltfScenegraph.removeExtension(KHR_TECHNIQUES_WEBGL);
82225
81850
  }
82226
81851
  }
82227
- async function encode6(gltfData, options) {
81852
+ async function encode5(gltfData, options) {
82228
81853
  }
82229
81854
  function resolveTechniques(techniquesExtension, gltfScenegraph) {
82230
81855
  const { programs = [], shaders = [], techniques = [] } = techniquesExtension;
@@ -82290,7 +81915,7 @@ function useExtension(extensionName, options) {
82290
81915
 
82291
81916
  // ../gltf/src/lib/extensions/KHR_binary_gltf.ts
82292
81917
  var KHR_BINARY_GLTF = "KHR_binary_glTF";
82293
- function preprocess5(gltfData) {
81918
+ function preprocess4(gltfData) {
82294
81919
  const gltfScenegraph = new GLTFScenegraph(gltfData);
82295
81920
  const { json } = gltfScenegraph;
82296
81921
  for (const image of json.images || []) {
@@ -82371,7 +81996,7 @@ var GLTFV1Normalizer = class {
82371
81996
  console.warn("Converting glTF v1 to glTF v2 format. This is experimental and may fail.");
82372
81997
  this._addAsset(json);
82373
81998
  this._convertTopLevelObjectsToArrays(json);
82374
- preprocess5(gltf);
81999
+ preprocess4(gltf);
82375
82000
  this._convertObjectIdsToArrayIndices(json);
82376
82001
  this._updateObjects(json);
82377
82002
  this._updateMaterial(json);
@@ -82488,7 +82113,7 @@ var GLTFV1Normalizer = class {
82488
82113
  metallicFactor: 1,
82489
82114
  roughnessFactor: 1
82490
82115
  };
82491
- const textureId = material.values && material.values.tex;
82116
+ const textureId = material.values?.tex || material.values?.texture2d_0;
82492
82117
  const textureIndex = json.textures.findIndex((texture) => texture.id === textureId);
82493
82118
  if (textureIndex !== -1) {
82494
82119
  material.pbrMetallicRoughness.baseColorTexture = { index: textureIndex };
@@ -82988,6 +82613,12 @@ async function loadBuffers(gltf, options, context) {
82988
82613
  byteLength: arrayBuffer.byteLength
82989
82614
  };
82990
82615
  delete buffer.uri;
82616
+ } else if (gltf.buffers[i] === null) {
82617
+ gltf.buffers[i] = {
82618
+ arrayBuffer: new ArrayBuffer(buffer.byteLength),
82619
+ byteOffset: 0,
82620
+ byteLength: buffer.byteLength
82621
+ };
82991
82622
  }
82992
82623
  }
82993
82624
  }
@@ -83030,7 +82661,7 @@ async function loadImage(gltf, image, index, options, context) {
83030
82661
  mipmaps: false,
83031
82662
  width: parsedImage[0].width,
83032
82663
  height: parsedImage[0].height,
83033
- data: parsedImage
82664
+ data: parsedImage[0]
83034
82665
  };
83035
82666
  }
83036
82667
  gltf.images = gltf.images || [];
@@ -83042,7 +82673,7 @@ var GLTFLoader = {
83042
82673
  name: "glTF",
83043
82674
  id: "gltf",
83044
82675
  module: "gltf",
83045
- version: VERSION5,
82676
+ version: VERSION6,
83046
82677
  extensions: ["gltf", "glb"],
83047
82678
  mimeTypes: ["model/gltf+json", "model/gltf-binary"],
83048
82679
  text: true,
@@ -83140,7 +82771,7 @@ var GLTFWriter = {
83140
82771
  name: "glTF",
83141
82772
  id: "gltf",
83142
82773
  module: "gltf",
83143
- version: VERSION5,
82774
+ version: VERSION6,
83144
82775
  extensions: ["glb"],
83145
82776
  mimeTypes: ["model/gltf-binary"],
83146
82777
  binary: true,
@@ -83236,7 +82867,7 @@ function parseBatchedModel(tile, arrayBuffer, byteOffset, options, context) {
83236
82867
 
83237
82868
  // ../3d-tiles/src/lib/parsers/parse-3d-tile-instanced-model.ts
83238
82869
  var import_core15 = __toModule(require_es56());
83239
- var import_geospatial6 = __toModule(require_es57());
82870
+ var import_geospatial7 = __toModule(require_es57());
83240
82871
  async function parseInstancedModel3DTile(tile, arrayBuffer, byteOffset, options, context) {
83241
82872
  byteOffset = parseInstancedModel(tile, arrayBuffer, byteOffset, options, context);
83242
82873
  await extractGLTF(tile, tile.gltfFormat, options, context);
@@ -83334,7 +82965,7 @@ function extractInstancedAttributes(tile, featureTable, batchTable, instancesLen
83334
82965
  }
83335
82966
  throw new Error("i3dm: oct-encoded orientation not implemented");
83336
82967
  } else if (tile.eastNorthUp) {
83337
- import_geospatial6.Ellipsoid.WGS84.eastNorthUpToFixedFrame(instancePosition, instanceTransform);
82968
+ import_geospatial7.Ellipsoid.WGS84.eastNorthUpToFixedFrame(instancePosition, instanceTransform);
83338
82969
  instanceTransform.getRotationMatrix3(instanceRotation);
83339
82970
  } else {
83340
82971
  instanceRotation.identity();
@@ -83391,7 +83022,7 @@ async function parseComposite3DTile(tile, arrayBuffer, byteOffset, options, cont
83391
83022
  return byteOffset;
83392
83023
  }
83393
83024
 
83394
- // ../3d-tiles/src/lib/parsers/parse-3d-tile-gltf.js
83025
+ // ../3d-tiles/src/lib/parsers/parse-3d-tile-gltf.ts
83395
83026
  async function parseGltf3DTile(tile, arrayBuffer, options, context) {
83396
83027
  tile.rotateYtoZ = true;
83397
83028
  tile.gltfUpAxis = options["3d-tiles"] && options["3d-tiles"].assetGltfUpAxis ? options["3d-tiles"].assetGltfUpAxis : "Y";
@@ -83475,7 +83106,7 @@ var Tile3DSubtreeLoader = {
83475
83106
  id: "3d-tiles-subtree",
83476
83107
  name: "3D Tiles Subtree",
83477
83108
  module: "3d-tiles",
83478
- version: VERSION3,
83109
+ version: VERSION4,
83479
83110
  extensions: ["subtree"],
83480
83111
  mimeTypes: ["application/octet-stream"],
83481
83112
  tests: ["subtree"],
@@ -83490,18 +83121,25 @@ var SUBDIVISION_COUNT_MAP = {
83490
83121
  QUADTREE: QUADTREE_DEVISION_COUNT,
83491
83122
  OCTREE: OCTREE_DEVISION_COUNT
83492
83123
  };
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
- }) {
83124
+ async function parseImplicitTiles(params) {
83125
+ const {
83126
+ options,
83127
+ parentData = {
83128
+ mortonIndex: 0,
83129
+ x: 0,
83130
+ y: 0,
83131
+ z: 0
83132
+ },
83133
+ childIndex = 0,
83134
+ globalData = {
83135
+ level: 0,
83136
+ mortonIndex: 0,
83137
+ x: 0,
83138
+ y: 0,
83139
+ z: 0
83140
+ }
83141
+ } = params;
83142
+ let { subtree, level = 0 } = params;
83505
83143
  const {
83506
83144
  subdivisionScheme,
83507
83145
  subtreeLevels,
@@ -83557,7 +83195,14 @@ async function parseImplicitTiles(subtree, options, parentData = {
83557
83195
  const childTileLevel = level + 1;
83558
83196
  const pData = { mortonIndex: childTileMortonIndex, x: childTileX, y: childTileY, z: childTileZ };
83559
83197
  for (let index = 0; index < childrenPerTile; index++) {
83560
- const currentTile = await parseImplicitTiles(subtree, options, pData, index, childTileLevel, globalData);
83198
+ const currentTile = await parseImplicitTiles({
83199
+ subtree,
83200
+ options,
83201
+ parentData: pData,
83202
+ childIndex: index,
83203
+ level: childTileLevel,
83204
+ globalData
83205
+ });
83561
83206
  if (currentTile.contentUrl || currentTile.children.length) {
83562
83207
  const globalLevel = lev + 1;
83563
83208
  const childCoordinates = { childTileX, childTileY, childTileZ };
@@ -83747,7 +83392,7 @@ async function normalizeImplicitTileData(tile, rootSubtree, options) {
83747
83392
  tile.lodMetricType = LOD_METRIC_TYPE.GEOMETRIC_ERROR;
83748
83393
  tile.lodMetricValue = tile.geometricError;
83749
83394
  tile.transformMatrix = tile.transform;
83750
- const { children, contentUrl } = await parseImplicitTiles(rootSubtree, options);
83395
+ const { children, contentUrl } = await parseImplicitTiles({ subtree: rootSubtree, options });
83751
83396
  if (contentUrl) {
83752
83397
  tile.contentUrl = contentUrl;
83753
83398
  tile.content = { uri: contentUrl.replace(`${options.basePath}/`, "") };
@@ -83765,7 +83410,7 @@ var Tiles3DLoader = {
83765
83410
  id: "3d-tiles",
83766
83411
  name: "3D Tiles",
83767
83412
  module: "3d-tiles",
83768
- version: VERSION3,
83413
+ version: VERSION4,
83769
83414
  extensions: ["cmpt", "pnts", "b3dm", "i3dm"],
83770
83415
  mimeTypes: ["application/octet-stream"],
83771
83416
  tests: ["cmpt", "pnts", "b3dm", "i3dm"],
@@ -84060,7 +83705,7 @@ var Tile3DWriter = {
84060
83705
  name: "3D Tile",
84061
83706
  id: "3d-tiles",
84062
83707
  module: "3d-tiles",
84063
- version: VERSION3,
83708
+ version: VERSION4,
84064
83709
  extensions: ["cmpt", "pnts", "b3dm", "i3dm"],
84065
83710
  mimeTypes: ["application/octet-stream"],
84066
83711
  encodeSync: encodeSync3,
@@ -84199,31 +83844,37 @@ var NodePages = class {
84199
83844
  this.updateResourceInMesh(node2);
84200
83845
  return node2.index;
84201
83846
  }
84202
- async save(layers0Path, fileMap, slpk = false) {
83847
+ async save(layers0Path, writeQueue, slpk = false) {
84203
83848
  if (slpk) {
84204
83849
  for (const [index, nodePage] of this.nodePages.entries()) {
84205
83850
  const nodePageStr = JSON.stringify(nodePage);
84206
83851
  const slpkPath = (0, import_path2.join)(layers0Path, "nodepages");
84207
- fileMap[`nodePages/${index.toString()}.json.gz`] = await this.writeFile(slpkPath, nodePageStr, `${index.toString()}.json`);
83852
+ writeQueue.enqueue({
83853
+ archiveKey: `nodePages/${index.toString()}.json.gz`,
83854
+ writePromise: this.writeFile(slpkPath, nodePageStr, `${index.toString()}.json`)
83855
+ });
84208
83856
  }
84209
83857
  const metadata = (0, import_json_map_transform.default)({ nodeCount: this.nodesCounter }, METADATA());
84210
83858
  const compress = false;
84211
- fileMap["metadata.json"] = await this.writeFile(layers0Path, JSON.stringify(metadata), "metadata.json", compress);
83859
+ writeQueue.enqueue({
83860
+ archiveKey: "metadata.json",
83861
+ writePromise: this.writeFile(layers0Path, JSON.stringify(metadata), "metadata.json", compress)
83862
+ });
84212
83863
  } else {
84213
83864
  for (const [index, nodePage] of this.nodePages.entries()) {
84214
83865
  const nodePageStr = JSON.stringify(nodePage);
84215
83866
  const nodePagePath = (0, import_path2.join)(layers0Path, "nodepages", index.toString());
84216
- await this.writeFile(nodePagePath, nodePageStr);
83867
+ writeQueue.enqueue({ writePromise: this.writeFile(nodePagePath, nodePageStr) });
84217
83868
  }
84218
83869
  }
84219
83870
  }
84220
83871
  };
84221
83872
 
84222
- // src/lib/utils/file-utils.js
83873
+ // src/lib/utils/file-utils.ts
84223
83874
  var import_fs3 = __toModule(require("fs"));
84224
83875
  var import_path4 = __toModule(require("path"));
84225
83876
 
84226
- // src/lib/utils/compress-util.js
83877
+ // src/lib/utils/compress-util.ts
84227
83878
  var import_zlib = __toModule(require("zlib"));
84228
83879
  var import_path3 = __toModule(require("path"));
84229
83880
  var import_fs2 = __toModule(require("fs"));
@@ -84247,11 +83898,11 @@ function compressFileWithGzip(pathFile) {
84247
83898
  input.pipe(gzip).pipe(output);
84248
83899
  });
84249
83900
  }
84250
- async function compressWithChildProcess() {
83901
+ async function compressWithChildProcess(inputFolder, outputFile, level, inputFiles, sevenZipExe) {
84251
83902
  if (process.platform === "win32") {
84252
- await compressWithChildProcessWindows(...arguments);
83903
+ await compressWithChildProcessWindows(inputFolder, outputFile, level, inputFiles, sevenZipExe);
84253
83904
  } else {
84254
- await compressWithChildProcessUnix(...arguments);
83905
+ await compressWithChildProcessUnix(inputFolder, outputFile, level, inputFiles);
84255
83906
  }
84256
83907
  }
84257
83908
  async function compressWithChildProcessUnix(inputFolder, outputFile, level = 0, inputFiles = ".") {
@@ -84284,12 +83935,20 @@ async function compressWithChildProcessWindows(inputFolder, outputFile, level =
84284
83935
  });
84285
83936
  }
84286
83937
 
84287
- // src/lib/utils/file-utils.js
83938
+ // src/lib/utils/file-utils.ts
84288
83939
  async function writeFile3(path2, data, fileName = "index.json") {
83940
+ let toWriteData;
83941
+ if (data instanceof Promise) {
83942
+ toWriteData = new Uint8Array(await data);
83943
+ } else if (data instanceof ArrayBuffer) {
83944
+ toWriteData = new Uint8Array(data);
83945
+ } else {
83946
+ toWriteData = data;
83947
+ }
84289
83948
  await import_fs3.promises.mkdir(path2, { recursive: true });
84290
83949
  const pathFile = (0, import_path4.join)(path2, fileName);
84291
83950
  try {
84292
- await import_fs3.promises.writeFile(pathFile, data);
83951
+ await import_fs3.promises.writeFile(pathFile, toWriteData);
84293
83952
  } catch (err) {
84294
83953
  throw err;
84295
83954
  }
@@ -84315,7 +83974,7 @@ function getAbsoluteFilePath(filePath) {
84315
83974
  return (0, import_path4.isAbsolute)(filePath) ? filePath : (0, import_path4.join)(process.cwd(), filePath);
84316
83975
  }
84317
83976
 
84318
- // src/lib/utils/statistic-utills.js
83977
+ // src/lib/utils/statistic-utills.ts
84319
83978
  var import_path5 = __toModule(require("path"));
84320
83979
  var import_fs4 = __toModule(require("fs"));
84321
83980
  function timeConverter(time) {
@@ -84373,16 +84032,17 @@ async function getTotalFilesSize(dirPath) {
84373
84032
  return totalFileSize;
84374
84033
  }
84375
84034
 
84376
- // src/i3s-converter/helpers/geometry-converter.js
84035
+ // src/i3s-converter/helpers/geometry-converter.ts
84377
84036
  var import_core21 = __toModule(require_es56());
84378
- var import_geospatial8 = __toModule(require_es57());
84037
+ var import_geospatial9 = __toModule(require_es57());
84379
84038
  var import_md5 = __toModule(require_md52());
84380
84039
 
84381
84040
  // src/i3s-converter/helpers/geometry-attributes.ts
84382
84041
  var VALUES_PER_VERTEX = 3;
84383
84042
  var POSITIONS_AND_NORMALS_PER_TRIANGLE = 9;
84384
84043
  function generateAttributes(attributes) {
84385
- const { positions, normals, texCoords, colors, featureIndices, triangleCount } = attributes;
84044
+ const { positions, normals, texCoords, colors, featureIndices } = attributes;
84045
+ const triangleCount = positions.length / POSITIONS_AND_NORMALS_PER_TRIANGLE;
84386
84046
  if (!featureIndices.length) {
84387
84047
  return {
84388
84048
  faceRange: new Uint32Array([0, triangleCount - 1]),
@@ -84527,14 +84187,14 @@ function groupAttributesAndRangesByFeatureId(unifiedObjects, featureCount) {
84527
84187
 
84528
84188
  // src/i3s-converter/helpers/coordinate-converter.ts
84529
84189
  var import_core20 = __toModule(require_es56());
84530
- var import_geospatial7 = __toModule(require_es57());
84531
- var import_culling5 = __toModule(require_es59());
84190
+ var import_geospatial8 = __toModule(require_es57());
84191
+ var import_culling5 = __toModule(require_es58());
84532
84192
  function createBoundingVolumes(tile, geoidHeightModel) {
84533
84193
  let radius;
84534
84194
  let halfSize;
84535
84195
  let quaternion;
84536
84196
  const boundingVolume = tile.boundingVolume;
84537
- const cartographicCenter = import_geospatial7.Ellipsoid.WGS84.cartesianToCartographic(boundingVolume.center, new import_core20.Vector3());
84197
+ const cartographicCenter = import_geospatial8.Ellipsoid.WGS84.cartesianToCartographic(boundingVolume.center, new import_core20.Vector3());
84538
84198
  cartographicCenter[2] = cartographicCenter[2] - geoidHeightModel.getHeight(cartographicCenter[1], cartographicCenter[0]);
84539
84199
  if (boundingVolume instanceof import_culling5.OrientedBoundingBox) {
84540
84200
  halfSize = boundingVolume.halfSize;
@@ -84558,8 +84218,8 @@ function createBoundingVolumesFromGeometry(cartesianPositions, geoidHeightModel)
84558
84218
  const positionVectors = convertPositionsToVectors(cartesianPositions);
84559
84219
  const geometryObb = (0, import_culling5.makeOrientedBoundingBoxFromPoints)(positionVectors);
84560
84220
  const geometryMbs = (0, import_culling5.makeBoundingSphereFromPoints)(positionVectors);
84561
- let mbsCenter = import_geospatial7.Ellipsoid.WGS84.cartesianToCartographic(geometryMbs.center, new import_core20.Vector3());
84562
- let obbCenter = import_geospatial7.Ellipsoid.WGS84.cartesianToCartographic(geometryObb.center, new import_core20.Vector3());
84221
+ let mbsCenter = import_geospatial8.Ellipsoid.WGS84.cartesianToCartographic(geometryMbs.center, new import_core20.Vector3());
84222
+ let obbCenter = import_geospatial8.Ellipsoid.WGS84.cartesianToCartographic(geometryObb.center, new import_core20.Vector3());
84563
84223
  mbsCenter[2] = mbsCenter[2] - geoidHeightModel.getHeight(mbsCenter[1], mbsCenter[0]);
84564
84224
  obbCenter[2] = obbCenter[2] - geoidHeightModel.getHeight(obbCenter[1], obbCenter[0]);
84565
84225
  return {
@@ -84579,22 +84239,25 @@ function convertPositionsToVectors(positions) {
84579
84239
  }
84580
84240
  return result;
84581
84241
  }
84582
- function convertCommonToI3SExtentCoordinate(tileset) {
84583
- const cartesianCenter = tileset?.cartesianCenter;
84584
- if (!cartesianCenter) {
84585
- return null;
84242
+ function convertBoundingVolumeToI3SFullExtent(boundingVolume) {
84243
+ let sphere;
84244
+ if (boundingVolume instanceof import_culling5.BoundingSphere) {
84245
+ sphere = boundingVolume;
84246
+ } else {
84247
+ sphere = boundingVolume.getBoundingSphere();
84586
84248
  }
84587
- const radius = tileset?.lodMetricValue;
84588
- const rightTop = import_geospatial7.Ellipsoid.WGS84.cartesianToCartographic(new import_core20.Vector3(cartesianCenter[0] + radius, cartesianCenter[1] + radius, cartesianCenter[2]), new import_core20.Vector3());
84589
- const leftBottom = import_geospatial7.Ellipsoid.WGS84.cartesianToCartographic(new import_core20.Vector3(cartesianCenter[0] - radius, cartesianCenter[1] - radius, cartesianCenter[2]), new import_core20.Vector3());
84590
- const isFirstRight = rightTop[0] < leftBottom[0];
84591
- const isFirstTop = rightTop[1] < leftBottom[1];
84592
- return [
84593
- isFirstRight ? rightTop[0] : leftBottom[0],
84594
- isFirstTop ? rightTop[1] : leftBottom[1],
84595
- isFirstRight ? leftBottom[0] : rightTop[0],
84596
- isFirstTop ? leftBottom[1] : rightTop[1]
84597
- ];
84249
+ const center = sphere.center;
84250
+ const radius = sphere.radius;
84251
+ const vertexMax = import_geospatial8.Ellipsoid.WGS84.cartesianToCartographic(new import_core20.Vector3(center[0] + radius, center[1] + radius, center[2] + radius), new import_core20.Vector3());
84252
+ const vertexMin = import_geospatial8.Ellipsoid.WGS84.cartesianToCartographic(new import_core20.Vector3(center[0] - radius, center[1] - radius, center[2] - radius), new import_core20.Vector3());
84253
+ return {
84254
+ xmin: vertexMin[0],
84255
+ xmax: vertexMax[0],
84256
+ ymin: vertexMin[1],
84257
+ ymax: vertexMax[1],
84258
+ zmin: vertexMin[2],
84259
+ zmax: vertexMax[2]
84260
+ };
84598
84261
  }
84599
84262
  function createObbFromMbs(mbs) {
84600
84263
  const radius = mbs[3];
@@ -84603,7 +84266,49 @@ function createObbFromMbs(mbs) {
84603
84266
  return new import_culling5.OrientedBoundingBox(center, halfAxex);
84604
84267
  }
84605
84268
 
84606
- // src/i3s-converter/helpers/geometry-converter.js
84269
+ // src/i3s-converter/helpers/gltf-attributes.ts
84270
+ function getB3DMAttributesWithoutBufferView(attributes) {
84271
+ const attributesWithoutBufferView = {};
84272
+ for (const attributeName in attributes) {
84273
+ attributesWithoutBufferView[attributeName] = {
84274
+ value: attributes[attributeName].value
84275
+ };
84276
+ }
84277
+ return attributesWithoutBufferView;
84278
+ }
84279
+ function prepareDataForAttributesConversion(tileContent) {
84280
+ const gltfMaterials = tileContent.gltf?.materials?.map((material) => ({ id: material.id }));
84281
+ let nodes = tileContent.gltf?.scene?.nodes || tileContent.gltf?.scenes?.[0]?.nodes || tileContent.gltf?.nodes || [];
84282
+ const prepearedNodes = nodes.map((node2) => {
84283
+ if (!node2.mesh) {
84284
+ return node2;
84285
+ }
84286
+ return {
84287
+ ...node2,
84288
+ mesh: {
84289
+ ...node2.mesh,
84290
+ primitives: node2.mesh?.primitives.map((primitive) => ({
84291
+ ...primitive,
84292
+ indices: { value: primitive?.indices?.value },
84293
+ attributes: getB3DMAttributesWithoutBufferView(primitive.attributes),
84294
+ material: {
84295
+ id: primitive?.material?.id
84296
+ }
84297
+ }))
84298
+ }
84299
+ };
84300
+ });
84301
+ const cartographicOrigin = tileContent.cartographicOrigin;
84302
+ const cartesianModelMatrix = tileContent.cartesianModelMatrix;
84303
+ return {
84304
+ gltfMaterials,
84305
+ nodes: prepearedNodes,
84306
+ cartographicOrigin,
84307
+ cartesianModelMatrix
84308
+ };
84309
+ }
84310
+
84311
+ // src/i3s-converter/helpers/geometry-converter.ts
84607
84312
  var DEFAULT_ROUGHNESS_FACTOR = 1;
84608
84313
  var DEFAULT_METALLIC_FACTOR = 1;
84609
84314
  var VALUES_PER_VERTEX2 = 3;
@@ -84615,10 +84320,11 @@ var DOUBLE_TYPE = "Float64";
84615
84320
  var OBJECT_ID_TYPE = "Oid32";
84616
84321
  var BATCHED_ID_POSSIBLE_ATTRIBUTE_NAMES = ["CUSTOM_ATTRIBUTE_2", "_BATCHID", "BATCHID"];
84617
84322
  var scratchVector4 = new import_core21.Vector3();
84618
- async function convertB3dmToI3sGeometry(tileContent, nodeId, featuresHashArray, attributeStorageInfo, draco, generateBoundingVolumes, geoidHeightModel) {
84323
+ async function convertB3dmToI3sGeometry(tileContent, nodeId, featuresHashArray, attributeStorageInfo, draco, generateBoundingVolumes, geoidHeightModel, workerSource) {
84619
84324
  const useCartesianPositions = generateBoundingVolumes;
84620
- const materialAndTextureList = convertMaterials(tileContent);
84621
- const convertedAttributesMap = convertAttributes(tileContent, useCartesianPositions);
84325
+ const materialAndTextureList = convertMaterials(tileContent.gltf?.materials);
84326
+ const dataForAttributesConversion = prepareDataForAttributesConversion(tileContent);
84327
+ const convertedAttributesMap = await convertAttributes(dataForAttributesConversion, useCartesianPositions);
84622
84328
  if (generateBoundingVolumes) {
84623
84329
  _generateBoundingVolumesFromGeometry(convertedAttributesMap, geoidHeightModel);
84624
84330
  }
@@ -84629,7 +84335,7 @@ async function convertB3dmToI3sGeometry(tileContent, nodeId, featuresHashArray,
84629
84335
  }
84630
84336
  const result = [];
84631
84337
  let nodesCounter = nodeId;
84632
- let { materials = [] } = tileContent.gltf;
84338
+ let { materials = [] } = tileContent.gltf || { materials: [] };
84633
84339
  if (!materials?.length) {
84634
84340
  materials.push({ id: "default" });
84635
84341
  }
@@ -84639,6 +84345,9 @@ async function convertB3dmToI3sGeometry(tileContent, nodeId, featuresHashArray,
84639
84345
  continue;
84640
84346
  }
84641
84347
  const convertedAttributes = convertedAttributesMap.get(sourceMaterial.id);
84348
+ if (!convertedAttributes) {
84349
+ continue;
84350
+ }
84642
84351
  const { material, texture } = materialAndTextureList[i];
84643
84352
  result.push(await _makeNodeResources({
84644
84353
  convertedAttributes,
@@ -84648,7 +84357,8 @@ async function convertB3dmToI3sGeometry(tileContent, nodeId, featuresHashArray,
84648
84357
  nodeId: nodesCounter,
84649
84358
  featuresHashArray,
84650
84359
  attributeStorageInfo,
84651
- draco
84360
+ draco,
84361
+ workerSource
84652
84362
  }));
84653
84363
  nodesCounter++;
84654
84364
  }
@@ -84664,7 +84374,7 @@ function _generateBoundingVolumesFromGeometry(convertedAttributesMap, geoidHeigh
84664
84374
  const cartographicOrigin = boundingVolumes.obb.center;
84665
84375
  for (let index = 0; index < attributes.positions.length; index += VALUES_PER_VERTEX2) {
84666
84376
  const vertex = attributes.positions.subarray(index, index + VALUES_PER_VERTEX2);
84667
- import_geospatial8.Ellipsoid.WGS84.cartesianToCartographic(Array.from(vertex), scratchVector4);
84377
+ import_geospatial9.Ellipsoid.WGS84.cartesianToCartographic(Array.from(vertex), scratchVector4);
84668
84378
  scratchVector4[2] = scratchVector4[2] - geoidHeightModel.getHeight(scratchVector4[1], scratchVector4[0]);
84669
84379
  scratchVector4 = scratchVector4.subtract(cartographicOrigin);
84670
84380
  attributes.positions.set(scratchVector4, index);
@@ -84679,12 +84389,12 @@ async function _makeNodeResources({
84679
84389
  nodeId,
84680
84390
  featuresHashArray,
84681
84391
  attributeStorageInfo,
84682
- draco
84392
+ draco,
84393
+ workerSource
84683
84394
  }) {
84684
84395
  const boundingVolumes = convertedAttributes.boundingVolumes;
84685
84396
  const vertexCount = convertedAttributes.positions.length / VALUES_PER_VERTEX2;
84686
- const triangleCount = vertexCount / 3;
84687
- const { faceRange, featureIds, positions, normals, colors, texCoords, featureCount } = generateAttributes({ triangleCount, ...convertedAttributes });
84397
+ const { faceRange, featureIds, positions, normals, colors, texCoords, featureCount } = generateAttributes(convertedAttributes);
84688
84398
  if (tileContent.batchTableJson) {
84689
84399
  makeFeatureIdsUnique(featureIds, convertedAttributes.featureIndices, featuresHashArray, tileContent.batchTableJson);
84690
84400
  }
@@ -84692,20 +84402,20 @@ async function _makeNodeResources({
84692
84402
  const typedFeatureIds = generateBigUint64Array(featureIds);
84693
84403
  header.set([vertexCount, featureCount], 0);
84694
84404
  const fileBuffer = new Uint8Array(concatenateArrayBuffers(header.buffer, positions.buffer, normals.buffer, texture ? texCoords.buffer : new ArrayBuffer(0), colors.buffer, typedFeatureIds.buffer, faceRange.buffer));
84695
- const compressedGeometry = draco ? await generateCompressedGeometry(vertexCount, convertedAttributes, {
84405
+ const compressedGeometry = draco ? generateCompressedGeometry(vertexCount, convertedAttributes, {
84696
84406
  positions,
84697
84407
  normals,
84698
84408
  texCoords: texture ? texCoords : new Float32Array(0),
84699
84409
  colors,
84700
84410
  featureIds,
84701
84411
  faceRange
84702
- }) : null;
84412
+ }, workerSource.draco) : null;
84703
84413
  const attributes = convertBatchTableToAttributeBuffers(tileContent.batchTableJson, featureIds, attributeStorageInfo);
84704
84414
  return {
84705
84415
  geometry: fileBuffer,
84706
84416
  compressedGeometry,
84707
84417
  texture,
84708
- sharedResources: getSharedResources(tileContent, nodeId),
84418
+ sharedResources: getSharedResources(tileContent.gltf?.materials || [], nodeId),
84709
84419
  meshMaterial: material,
84710
84420
  vertexCount,
84711
84421
  attributes,
@@ -84713,34 +84423,41 @@ async function _makeNodeResources({
84713
84423
  boundingVolumes
84714
84424
  };
84715
84425
  }
84716
- function convertAttributes(tileContent, useCartesianPositions) {
84426
+ async function convertAttributes(attributesData, useCartesianPositions) {
84427
+ const { gltfMaterials, nodes, cartographicOrigin, cartesianModelMatrix } = attributesData;
84717
84428
  const attributesMap = new Map();
84718
- for (const material of tileContent.gltf.materials || [{ id: "default" }]) {
84429
+ for (const material of gltfMaterials || [{ id: "default" }]) {
84719
84430
  attributesMap.set(material.id, {
84720
84431
  positions: new Float32Array(0),
84721
84432
  normals: new Float32Array(0),
84722
84433
  texCoords: new Float32Array(0),
84723
84434
  colors: new Uint8Array(0),
84435
+ featureIndicesGroups: [],
84724
84436
  featureIndices: [],
84725
84437
  boundingVolumes: null
84726
84438
  });
84727
84439
  }
84728
- const nodes = (tileContent.gltf.scene || tileContent.gltf.scenes?.[0] || tileContent.gltf).nodes;
84729
- convertNodes(nodes, tileContent, attributesMap, useCartesianPositions);
84440
+ convertNodes(nodes, cartographicOrigin, cartesianModelMatrix, attributesMap, useCartesianPositions);
84730
84441
  for (const attrKey of attributesMap.keys()) {
84731
84442
  const attributes = attributesMap.get(attrKey);
84443
+ if (!attributes) {
84444
+ continue;
84445
+ }
84732
84446
  if (attributes.positions.length === 0) {
84733
84447
  attributesMap.delete(attrKey);
84734
84448
  continue;
84735
84449
  }
84736
- attributes.featureIndices = attributes.featureIndices.reduce((acc, value) => acc.concat(value));
84450
+ if (attributes.featureIndicesGroups) {
84451
+ attributes.featureIndices = attributes.featureIndicesGroups.reduce((acc, value) => acc.concat(value));
84452
+ delete attributes.featureIndicesGroups;
84453
+ }
84737
84454
  }
84738
84455
  return attributesMap;
84739
84456
  }
84740
- 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])) {
84457
+ 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])) {
84741
84458
  if (nodes) {
84742
84459
  for (const node2 of nodes) {
84743
- convertNode(node2, tileContent, attributesMap, useCartesianPositions, matrix);
84460
+ convertNode(node2, cartographicOrigin, cartesianModelMatrix, attributesMap, useCartesianPositions, matrix);
84744
84461
  }
84745
84462
  }
84746
84463
  }
@@ -84750,26 +84467,26 @@ function getCompositeTransformationMatrix(node2, matrix) {
84750
84467
  if (nodeMatrix) {
84751
84468
  transformationMatrix = matrix.multiplyRight(nodeMatrix);
84752
84469
  }
84470
+ if (translation) {
84471
+ transformationMatrix = transformationMatrix.translate(translation);
84472
+ }
84753
84473
  if (rotation) {
84754
84474
  transformationMatrix = transformationMatrix.rotateXYZ(rotation);
84755
84475
  }
84756
84476
  if (scale) {
84757
84477
  transformationMatrix = transformationMatrix.scale(scale);
84758
84478
  }
84759
- if (translation) {
84760
- transformationMatrix = transformationMatrix.translate(translation);
84761
- }
84762
84479
  return transformationMatrix;
84763
84480
  }
84764
- 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])) {
84481
+ 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])) {
84765
84482
  const transformationMatrix = getCompositeTransformationMatrix(node2, matrix);
84766
84483
  const mesh = node2.mesh;
84767
84484
  if (mesh) {
84768
- convertMesh(mesh, tileContent, attributesMap, useCartesianPositions, transformationMatrix);
84485
+ convertMesh(mesh, cartographicOrigin, cartesianModelMatrix, attributesMap, useCartesianPositions, transformationMatrix);
84769
84486
  }
84770
- convertNodes(node2.children, tileContent, attributesMap, useCartesianPositions, transformationMatrix);
84487
+ convertNodes(node2.children || [], cartographicOrigin, cartesianModelMatrix, attributesMap, useCartesianPositions, transformationMatrix);
84771
84488
  }
84772
- 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])) {
84489
+ 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])) {
84773
84490
  for (const primitive of mesh.primitives) {
84774
84491
  let outputAttributes = null;
84775
84492
  if (primitive.material) {
@@ -84779,27 +84496,31 @@ function convertMesh(mesh, content, attributesMap, useCartesianPositions = false
84779
84496
  }
84780
84497
  assert2(outputAttributes !== null, "Primitive - material mapping failed");
84781
84498
  const attributes = primitive.attributes;
84499
+ if (!outputAttributes) {
84500
+ continue;
84501
+ }
84782
84502
  outputAttributes.positions = concatenateTypedArrays(outputAttributes.positions, transformVertexArray({
84783
84503
  vertices: attributes.POSITION.value,
84784
- cartographicOrigin: content.cartographicOrigin,
84785
- cartesianModelMatrix: content.cartesianModelMatrix,
84504
+ cartographicOrigin,
84505
+ cartesianModelMatrix,
84786
84506
  nodeMatrix: matrix,
84787
- indices: primitive.indices.value,
84507
+ indices: primitive.indices?.value,
84788
84508
  attributeSpecificTransformation: transformVertexPositions,
84789
84509
  useCartesianPositions
84790
84510
  }));
84791
84511
  outputAttributes.normals = concatenateTypedArrays(outputAttributes.normals, transformVertexArray({
84792
84512
  vertices: attributes.NORMAL && attributes.NORMAL.value,
84793
- cartographicOrigin: content.cartographicOrigin,
84794
- cartesianModelMatrix: content.cartesianModelMatrix,
84513
+ cartographicOrigin,
84514
+ cartesianModelMatrix,
84795
84515
  nodeMatrix: matrix,
84796
- indices: primitive.indices.value,
84516
+ indices: primitive.indices?.value,
84797
84517
  attributeSpecificTransformation: transformVertexNormals,
84798
84518
  useCartesianPositions: false
84799
84519
  }));
84800
- outputAttributes.texCoords = concatenateTypedArrays(outputAttributes.texCoords, flattenTexCoords(attributes.TEXCOORD_0 && attributes.TEXCOORD_0.value, primitive.indices.value));
84801
- outputAttributes.colors = concatenateTypedArrays(outputAttributes.colors, flattenColors(attributes.COLOR_0, primitive.indices.value));
84802
- outputAttributes.featureIndices.push(flattenBatchIds(getBatchIdsByAttributeName(attributes), primitive.indices.value));
84520
+ outputAttributes.texCoords = concatenateTypedArrays(outputAttributes.texCoords, flattenTexCoords(attributes.TEXCOORD_0 && attributes.TEXCOORD_0.value, primitive.indices?.value));
84521
+ outputAttributes.colors = concatenateTypedArrays(outputAttributes.colors, flattenColors(attributes.COLOR_0, primitive.indices?.value));
84522
+ outputAttributes.featureIndicesGroups = outputAttributes.featureIndicesGroups || [];
84523
+ outputAttributes.featureIndicesGroups.push(flattenBatchIds(getBatchIdsByAttributeName(attributes), primitive.indices?.value));
84803
84524
  }
84804
84525
  }
84805
84526
  function transformVertexArray(args) {
@@ -84828,7 +84549,7 @@ function transformVertexPositions(vertexVector, calleeArgs) {
84828
84549
  if (useCartesianPositions) {
84829
84550
  return vertexVector;
84830
84551
  }
84831
- import_geospatial8.Ellipsoid.WGS84.cartesianToCartographic([vertexVector[0], vertexVector[1], vertexVector[2]], vertexVector);
84552
+ import_geospatial9.Ellipsoid.WGS84.cartesianToCartographic([vertexVector[0], vertexVector[1], vertexVector[2]], vertexVector);
84832
84553
  vertexVector = vertexVector.subtract(cartographicOrigin);
84833
84554
  return vertexVector;
84834
84555
  }
@@ -84895,9 +84616,8 @@ function getBatchIdsByAttributeName(attributes) {
84895
84616
  }
84896
84617
  return batchIds;
84897
84618
  }
84898
- function convertMaterials(tileContent) {
84619
+ function convertMaterials(sourceMaterials = []) {
84899
84620
  const result = [];
84900
- const sourceMaterials = tileContent.gltf.materials || [];
84901
84621
  for (const sourceMaterial of sourceMaterials) {
84902
84622
  result.push(convertMaterial(sourceMaterial));
84903
84623
  }
@@ -84906,8 +84626,8 @@ function convertMaterials(tileContent) {
84906
84626
  function convertMaterial(sourceMaterial) {
84907
84627
  const material = {
84908
84628
  doubleSided: sourceMaterial.doubleSided,
84909
- emissiveFactor: sourceMaterial.emissiveFactor.map((c) => Math.round(c * 255)),
84910
- alphaMode: (sourceMaterial.alphaMode || "OPAQUE").toLowerCase(),
84629
+ emissiveFactor: sourceMaterial.emissiveFactor?.map((c) => Math.round(c * 255)),
84630
+ alphaMode: convertAlphaMode(sourceMaterial.alphaMode),
84911
84631
  pbrMetallicRoughness: {
84912
84632
  roughnessFactor: sourceMaterial?.pbrMetallicRoughness?.roughnessFactor || DEFAULT_ROUGHNESS_FACTOR,
84913
84633
  metallicFactor: sourceMaterial?.pbrMetallicRoughness?.metallicFactor || DEFAULT_METALLIC_FACTOR
@@ -84931,14 +84651,28 @@ function convertMaterial(sourceMaterial) {
84931
84651
  }
84932
84652
  return { material, texture };
84933
84653
  }
84654
+ function convertAlphaMode(gltfAlphaMode) {
84655
+ switch (gltfAlphaMode) {
84656
+ case "OPAQUE":
84657
+ return "opaque";
84658
+ case "MASK":
84659
+ return "mask";
84660
+ case "BLEND":
84661
+ return "blend";
84662
+ default:
84663
+ return "opaque";
84664
+ }
84665
+ }
84934
84666
  function getDefaultMaterial() {
84935
84667
  return {
84936
84668
  alphaMode: "opaque",
84937
- pbrMetallicRoughness: {}
84669
+ pbrMetallicRoughness: {
84670
+ metallicFactor: 1,
84671
+ roughnessFactor: 1
84672
+ }
84938
84673
  };
84939
84674
  }
84940
- function getSharedResources(tileContent, nodeId) {
84941
- const gltfMaterials = tileContent.gltf.materials;
84675
+ function getSharedResources(gltfMaterials, nodeId) {
84942
84676
  const i3sResources = {};
84943
84677
  if (!gltfMaterials || !gltfMaterials.length) {
84944
84678
  return i3sResources;
@@ -84967,7 +84701,7 @@ function convertGLTFMaterialToI3sSharedResources(gltfMaterial, nodeId) {
84967
84701
  colorFactor[3] = colorFactor[3] || 1;
84968
84702
  }
84969
84703
  return {
84970
- materialDefinitionInfo: extractSharedResourcesMaterialInfo(colorFactor, metallicFactor),
84704
+ materialDefinitionInfo: extractSharedResourcesMaterialInfo(colorFactor || [1, 1, 1, 1], metallicFactor),
84971
84705
  textureDefinitionInfo
84972
84706
  };
84973
84707
  }
@@ -84982,24 +84716,27 @@ function extractSharedResourcesMaterialInfo(baseColorFactor, metallicFactor = 1)
84982
84716
  dielectricSpecular[3] = 1;
84983
84717
  const specular = dielectricSpecular.lerp(dielectricSpecular, baseColorVector, metallicFactor);
84984
84718
  return {
84985
- diffuse: diffuse.toArray(),
84986
- specular: specular.toArray()
84719
+ params: {
84720
+ diffuse: diffuse.toArray(),
84721
+ specular: specular.toArray(),
84722
+ renderMode: "solid"
84723
+ }
84987
84724
  };
84988
84725
  }
84989
84726
  function extractSharedResourcesTextureInfo(texture, nodeId) {
84990
84727
  return {
84991
- encoding: [texture.source.mimeType],
84728
+ encoding: texture?.source?.mimeType ? [texture.source.mimeType] : void 0,
84992
84729
  images: [
84993
84730
  {
84994
84731
  id: generateImageId(texture, nodeId),
84995
- size: texture.source.image.width,
84996
- length: [texture.source.image.data.length]
84732
+ size: texture.source?.image.width,
84733
+ length: [texture.source?.image.data.length]
84997
84734
  }
84998
84735
  ]
84999
84736
  };
85000
84737
  }
85001
84738
  function generateImageId(texture, nodeId) {
85002
- const { width, height } = texture.source.image;
84739
+ const { width, height } = texture.source?.image;
85003
84740
  const levelCountOfTexture = 1;
85004
84741
  const indexOfLevel = 0;
85005
84742
  const indexOfTextureInStore = nodeId + 1;
@@ -85071,7 +84808,9 @@ function convertBatchTableToAttributeBuffers(batchTable, featureIds, attributeSt
85071
84808
  default:
85072
84809
  attributeBuffer = generateStringAttributeBuffer(batchTableWithFeatureIds[key]);
85073
84810
  }
85074
- attributeBuffers.push(attributeBuffer);
84811
+ if (attributeBuffer) {
84812
+ attributeBuffers.push(attributeBuffer);
84813
+ }
85075
84814
  }
85076
84815
  }
85077
84816
  return attributeBuffers;
@@ -85114,7 +84853,7 @@ function generateBigUint64Array(featureIds) {
85114
84853
  }
85115
84854
  return typedFeatureIds;
85116
84855
  }
85117
- async function generateCompressedGeometry(vertexCount, convertedAttributes, attributes) {
84856
+ async function generateCompressedGeometry(vertexCount, convertedAttributes, attributes, dracoWorkerSoure) {
85118
84857
  const { positions, normals, texCoords, colors, featureIds, faceRange } = attributes;
85119
84858
  const indices = new Uint32Array(vertexCount);
85120
84859
  for (let index = 0; index < indices.length; index++) {
@@ -85137,12 +84876,16 @@ async function generateCompressedGeometry(vertexCount, convertedAttributes, attr
85137
84876
  "i3s-feature-ids": new Int32Array(featureIds)
85138
84877
  }
85139
84878
  };
85140
- return new Uint8Array(await encode({ attributes: compressedAttributes, indices }, DracoWriter, {
84879
+ return encode({ attributes: compressedAttributes, indices }, DracoWriterWorker, {
84880
+ ...DracoWriterWorker.options,
84881
+ source: dracoWorkerSoure,
84882
+ reuseWorkers: true,
84883
+ _nodeWorkers: true,
85141
84884
  draco: {
85142
84885
  method: "MESH_SEQUENTIAL_ENCODING",
85143
84886
  attributesMetadata
85144
84887
  }
85145
- }));
84888
+ });
85146
84889
  }
85147
84890
  function generateFeatureIndexAttribute(featureIndex, faceRange) {
85148
84891
  const orderedFeatureIndices = new Uint32Array(featureIndex.length);
@@ -85202,7 +84945,7 @@ async function createSceneServerPath(layerName, layers0, rootPath) {
85202
84945
  await writeFile3(nodePagePath, JSON.stringify(sceneServer));
85203
84946
  }
85204
84947
 
85205
- // src/lib/utils/lod-conversion-utils.js
84948
+ // src/lib/utils/lod-conversion-utils.ts
85206
84949
  var DEFAULT_MAXIMUM_SCREEN_SPACE_ERROR = 16;
85207
84950
  function convertGeometricErrorToScreenThreshold(tile, coordinates) {
85208
84951
  const lodSelection = [];
@@ -85241,13 +84984,13 @@ function convertScreenThresholdToGeometricError(node2) {
85241
84984
  }
85242
84985
 
85243
84986
  // src/pgm-loader.ts
85244
- var import_geoid = __toModule(require_es510());
85245
- var VERSION9 = typeof __VERSION__ !== "undefined" ? __VERSION__ : "latest";
84987
+ var import_geoid = __toModule(require_es59());
84988
+ var VERSION10 = typeof __VERSION__ !== "undefined" ? __VERSION__ : "latest";
85246
84989
  var PGMLoader = {
85247
84990
  name: "PGM - Netpbm grayscale image format",
85248
84991
  id: "pgm",
85249
84992
  module: "tile-converter",
85250
- version: VERSION9,
84993
+ version: VERSION10,
85251
84994
  mimeTypes: ["image/x-portable-graymap"],
85252
84995
  parse: async (arrayBuffer, options) => (0, import_geoid.parsePGM)(new Uint8Array(arrayBuffer), options),
85253
84996
  extensions: ["pgm"],
@@ -85758,10 +85501,10 @@ function transfromTextureDefinitions(textureDefinitionInfos, thisObject, origina
85758
85501
  }
85759
85502
 
85760
85503
  // src/i3s-converter/helpers/node-debug.ts
85761
- var import_culling6 = __toModule(require_es59());
85762
- var import_engine = __toModule(require_es516());
85504
+ var import_culling6 = __toModule(require_es58());
85505
+ var import_engine = __toModule(require_es515());
85763
85506
  var import_core23 = __toModule(require_es56());
85764
- var import_geospatial9 = __toModule(require_es57());
85507
+ var import_geospatial10 = __toModule(require_es57());
85765
85508
  function validateNodeBoundingVolumes(node2) {
85766
85509
  if (!node2?.parentNode?.obb || !node2?.parentNode?.mbs) {
85767
85510
  return [];
@@ -85802,7 +85545,7 @@ function getTileObbVertices(node2) {
85802
85545
  const halfSize = node2.obb.halfSize;
85803
85546
  const attributes = geometry.getAttributes();
85804
85547
  const positions = new Float32Array(attributes.POSITION.value);
85805
- const obbCenterCartesian = import_geospatial9.Ellipsoid.WGS84.cartographicToCartesian(node2.obb.center);
85548
+ const obbCenterCartesian = import_geospatial10.Ellipsoid.WGS84.cartographicToCartesian(node2.obb.center);
85806
85549
  let vertices = [];
85807
85550
  for (let i = 0; i < positions.length; i += 3) {
85808
85551
  const positionsVector = new import_core23.Vector3(positions[i] *= halfSize[0], positions[i + 1] *= halfSize[1], positions[i + 2] *= halfSize[2]);
@@ -85815,7 +85558,7 @@ function isAllVerticesInsideBoundingVolume(boundingVolume, positions) {
85815
85558
  let isVerticesInsideObb = true;
85816
85559
  for (let index = 0; index < positions.length / 3; index += 3) {
85817
85560
  const point = [positions[index], positions[index + 1], positions[index + 2]];
85818
- const cartographicPoint = import_geospatial9.Ellipsoid.WGS84.cartesianToCartographic(point);
85561
+ const cartographicPoint = import_geospatial10.Ellipsoid.WGS84.cartesianToCartographic(point);
85819
85562
  const distance = boundingVolume.distanceTo(cartographicPoint);
85820
85563
  if (distance > 0) {
85821
85564
  isVerticesInsideObb = false;
@@ -85825,6 +85568,94 @@ function isAllVerticesInsideBoundingVolume(boundingVolume, positions) {
85825
85568
  return isVerticesInsideObb;
85826
85569
  }
85827
85570
 
85571
+ // src/lib/utils/queue.ts
85572
+ var Queue = class extends Array {
85573
+ enqueue(val) {
85574
+ this.push(val);
85575
+ }
85576
+ dequeue() {
85577
+ return this.shift();
85578
+ }
85579
+ peek() {
85580
+ return this[0];
85581
+ }
85582
+ isEmpty() {
85583
+ return this.length === 0;
85584
+ }
85585
+ };
85586
+
85587
+ // src/lib/utils/write-queue.ts
85588
+ var WriteQueue = class extends Queue {
85589
+ constructor(listeningInterval = 2e3, writeConcurrency = 400) {
85590
+ super();
85591
+ this.writePromise = null;
85592
+ this.fileMap = {};
85593
+ this.listeningInterval = listeningInterval;
85594
+ this.writeConcurrency = writeConcurrency;
85595
+ }
85596
+ startListening() {
85597
+ this.intervalId = setInterval(this.startWrite.bind(this), this.listeningInterval);
85598
+ }
85599
+ stopListening() {
85600
+ if (this.intervalId) {
85601
+ clearInterval(this.intervalId);
85602
+ }
85603
+ }
85604
+ async startWrite() {
85605
+ if (this.writePromise) {
85606
+ await this.writePromise;
85607
+ this.writePromise = null;
85608
+ return;
85609
+ }
85610
+ this.writePromise = this.doWrite();
85611
+ await this.writePromise;
85612
+ this.writePromise = null;
85613
+ }
85614
+ async finalize() {
85615
+ this.stopListening();
85616
+ await this.startWrite();
85617
+ }
85618
+ async doWrite() {
85619
+ while (this.length) {
85620
+ const promises = [];
85621
+ const archiveKeys = [];
85622
+ for (let i = 0; i < this.writeConcurrency; i++) {
85623
+ const item = this.dequeue();
85624
+ if (!item) {
85625
+ break;
85626
+ }
85627
+ const { archiveKey, writePromise } = item;
85628
+ archiveKeys.push(archiveKey);
85629
+ promises.push(writePromise);
85630
+ }
85631
+ const writeResults = await Promise.all(promises);
85632
+ this.updateFileMap(archiveKeys, writeResults);
85633
+ }
85634
+ this.writePromise = null;
85635
+ }
85636
+ updateFileMap(archiveKeys, writeResults) {
85637
+ for (let i = 0; i < archiveKeys.length; i++) {
85638
+ const archiveKey = archiveKeys[i];
85639
+ if (!archiveKey) {
85640
+ continue;
85641
+ }
85642
+ this.fileMap[archiveKey] = writeResults[i];
85643
+ }
85644
+ }
85645
+ };
85646
+
85647
+ // src/i3s-attributes-worker.ts
85648
+ var VERSION11 = typeof __VERSION__ !== "undefined" ? __VERSION__ : "latest";
85649
+ var I3SAttributesWorker = {
85650
+ id: "i3s-attributes",
85651
+ name: "I3S Attributes Worker",
85652
+ module: "tile-converter",
85653
+ version: VERSION11,
85654
+ options: {
85655
+ useCartesianPositions: false
85656
+ }
85657
+ };
85658
+
85828
85659
  // src/i3s-converter/i3s-converter.ts
85829
85660
  var ION_DEFAULT_TOKEN = import_process.default.env.IonToken || "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJqdGkiOiJlYWMxMzcyYy0zZjJkLTQwODctODNlNi01MDRkZmMzMjIxOWIiLCJpZCI6OTYyMCwic2NvcGVzIjpbImFzbCIsImFzciIsImdjIl0sImlhdCI6MTU2Mjg2NjI3M30.1FNiClUyk00YH_nWfSGpiQAjR5V2OvREDq1PJ5QMjWQ";
85830
85661
  var HARDCODED_NODES_PER_PAGE = 64;
@@ -85844,8 +85675,9 @@ var I3SConverter = class {
85844
85675
  this.sourceTileset = null;
85845
85676
  this.geoidHeightModel = null;
85846
85677
  this.Loader = Tiles3DLoader;
85678
+ this.workerSource = {};
85679
+ this.writeQueue = new WriteQueue();
85847
85680
  this.nodePages = new NodePages(writeFile3, HARDCODED_NODES_PER_PAGE);
85848
- this.fileMap = {};
85849
85681
  this.options = {};
85850
85682
  this.layers0Path = "";
85851
85683
  this.materialMap = new Map();
@@ -85860,6 +85692,7 @@ var I3SConverter = class {
85860
85692
  this.validate = false;
85861
85693
  this.generateTextures = false;
85862
85694
  this.generateBoundingVolumes = false;
85695
+ this.layersHasTexture = false;
85863
85696
  }
85864
85697
  async convert(options) {
85865
85698
  this.conversionStartTime = import_process.default.hrtime();
@@ -85882,23 +85715,33 @@ var I3SConverter = class {
85882
85715
  this.Loader = inputUrl.indexOf(CESIUM_DATASET_PREFIX) !== -1 ? CesiumIonLoader : Tiles3DLoader;
85883
85716
  this.generateTextures = Boolean(generateTextures);
85884
85717
  this.generateBoundingVolumes = Boolean(generateBoundingVolumes);
85718
+ this.writeQueue = new WriteQueue();
85719
+ this.writeQueue.startListening();
85885
85720
  console.log("Loading egm file...");
85886
85721
  this.geoidHeightModel = await load(egmFilePath, PGMLoader);
85887
85722
  console.log("Loading egm file completed!");
85888
85723
  if (slpk) {
85889
85724
  this.nodePages.useWriteFunction(writeFileForSlpk);
85890
85725
  }
85891
- const preloadOptions = await this._fetchPreloadOptions();
85892
- const tilesetOptions = { loadOptions: { basis: { format: "rgba32" } } };
85893
- if (preloadOptions.headers) {
85894
- tilesetOptions.loadOptions.fetch = { headers: preloadOptions.headers };
85726
+ await this.loadWorkers();
85727
+ try {
85728
+ const preloadOptions = await this._fetchPreloadOptions();
85729
+ const tilesetOptions = { loadOptions: { basis: { format: "rgba32" } } };
85730
+ if (preloadOptions.headers) {
85731
+ tilesetOptions.loadOptions.fetch = { headers: preloadOptions.headers };
85732
+ }
85733
+ Object.assign(tilesetOptions, preloadOptions);
85734
+ const sourceTilesetJson = await load(inputUrl, this.Loader, tilesetOptions.loadOptions);
85735
+ this.sourceTileset = new Tileset3D(sourceTilesetJson, tilesetOptions);
85736
+ await this._createAndSaveTileset(outputPath, tilesetName);
85737
+ await this._finishConversion({ slpk: Boolean(slpk), outputPath, tilesetName });
85738
+ return sourceTilesetJson;
85739
+ } catch (error) {
85740
+ throw error;
85741
+ } finally {
85742
+ const workerFarm = WorkerFarm.getWorkerFarm({});
85743
+ workerFarm.destroy();
85895
85744
  }
85896
- Object.assign(tilesetOptions, preloadOptions);
85897
- const sourceTilesetJson = await load(inputUrl, this.Loader, tilesetOptions.loadOptions);
85898
- this.sourceTileset = new Tileset3D(sourceTilesetJson, tilesetOptions);
85899
- await this._createAndSaveTileset(outputPath, tilesetName);
85900
- await this._finishConversion({ slpk: Boolean(slpk), outputPath, tilesetName });
85901
- return sourceTilesetJson;
85902
85745
  }
85903
85746
  async _createAndSaveTileset(outputPath, tilesetName) {
85904
85747
  const tilesetPath = (0, import_path7.join)(`${outputPath}`, `${tilesetName}`);
@@ -85922,14 +85765,19 @@ var I3SConverter = class {
85922
85765
  const root0 = this._formRootNodeIndexDocument(boundingVolumes);
85923
85766
  await this._convertNodesTree(root0, sourceRootTile, parentId, boundingVolumes);
85924
85767
  this.layers0.materialDefinitions = this.materialDefinitions;
85768
+ if (this.layersHasTexture === false) {
85769
+ this.layers0.store.defaultGeometrySchema.ordering = this.layers0.store.defaultGeometrySchema.ordering.filter((attribute) => attribute !== "uv0");
85770
+ }
85925
85771
  await this._writeLayers0();
85926
85772
  createSceneServerPath(tilesetName, this.layers0, tilesetPath);
85927
85773
  await this._writeNodeIndexDocument(root0, "root", (0, import_path7.join)(this.layers0Path, "nodes", "root"));
85928
- await this.nodePages.save(this.layers0Path, this.fileMap, isCreateSlpk);
85774
+ await this.nodePages.save(this.layers0Path, this.writeQueue, isCreateSlpk);
85775
+ await this.writeQueue.finalize();
85929
85776
  await this._createSlpk(tilesetPath);
85930
85777
  }
85931
85778
  _formLayers0(tilesetName) {
85932
- const extent = convertCommonToI3SExtentCoordinate(this.sourceTileset);
85779
+ const fullExtent = convertBoundingVolumeToI3SFullExtent(this.sourceTileset?.boundingVolume || this.sourceTileset?.root?.boundingVolume);
85780
+ const extent = [fullExtent.xmin, fullExtent.ymin, fullExtent.xmax, fullExtent.ymax];
85933
85781
  const layers0data = {
85934
85782
  version: `{${v4().toUpperCase()}}`,
85935
85783
  id: 0,
@@ -85978,9 +85826,12 @@ var I3SConverter = class {
85978
85826
  const [child] = await this._createNode(root0, sourceRootTile, parentId, 0);
85979
85827
  const childPath = (0, import_path7.join)(this.layers0Path, "nodes", child.path);
85980
85828
  if (this.options.slpk) {
85981
- this.fileMap["nodes/1/3dNodeIndexDocument.json.gz"] = await writeFileForSlpk(childPath, JSON.stringify(child), "3dNodeIndexDocument.json");
85829
+ this.writeQueue.enqueue({
85830
+ archiveKey: "nodes/1/3dNodeIndexDocument.json.gz",
85831
+ writePromise: writeFileForSlpk(childPath, JSON.stringify(child), "3dNodeIndexDocument.json")
85832
+ });
85982
85833
  } else {
85983
- await writeFile3(childPath, JSON.stringify(child));
85834
+ this.writeQueue.enqueue({ writePromise: writeFile3(childPath, JSON.stringify(child)) });
85984
85835
  }
85985
85836
  } else {
85986
85837
  await this._addChildrenWithNeighborsAndWriteFile({
@@ -85994,16 +85845,24 @@ var I3SConverter = class {
85994
85845
  }
85995
85846
  async _writeLayers0() {
85996
85847
  if (this.options.slpk) {
85997
- this.fileMap["3dSceneLayer.json.gz"] = await writeFileForSlpk(this.layers0Path, JSON.stringify(this.layers0), "3dSceneLayer.json");
85848
+ this.writeQueue.enqueue({
85849
+ archiveKey: "3dSceneLayer.json.gz",
85850
+ writePromise: writeFileForSlpk(this.layers0Path, JSON.stringify(this.layers0), "3dSceneLayer.json")
85851
+ });
85998
85852
  } else {
85999
- await writeFile3(this.layers0Path, JSON.stringify(this.layers0));
85853
+ this.writeQueue.enqueue({
85854
+ writePromise: writeFile3(this.layers0Path, JSON.stringify(this.layers0))
85855
+ });
86000
85856
  }
86001
85857
  }
86002
85858
  async _writeNodeIndexDocument(root0, nodePath, rootPath) {
86003
85859
  if (this.options.slpk) {
86004
- this.fileMap[`nodes/${nodePath}/3dNodeIndexDocument.json.gz`] = await writeFileForSlpk(rootPath, JSON.stringify(root0), "3dNodeIndexDocument.json");
85860
+ this.writeQueue.enqueue({
85861
+ archiveKey: `nodes/${nodePath}/3dNodeIndexDocument.json.gz`,
85862
+ writePromise: writeFileForSlpk(rootPath, JSON.stringify(root0), "3dNodeIndexDocument.json")
85863
+ });
86005
85864
  } else {
86006
- await writeFile3(rootPath, JSON.stringify(root0));
85865
+ this.writeQueue.enqueue({ writePromise: writeFile3(rootPath, JSON.stringify(root0)) });
86007
85866
  }
86008
85867
  }
86009
85868
  async _createSlpk(tilesetPath) {
@@ -86104,6 +85963,7 @@ var I3SConverter = class {
86104
85963
  boundingVolumes: null
86105
85964
  };
86106
85965
  for (const resources of resourcesData || [emptyResources]) {
85966
+ this.layersHasTexture = this.layersHasTexture || Boolean(resources.texture);
86107
85967
  if (this.generateBoundingVolumes && resources.boundingVolumes) {
86108
85968
  boundingVolumes = resources.boundingVolumes;
86109
85969
  }
@@ -86142,7 +86002,7 @@ var I3SConverter = class {
86142
86002
  if (!this.isContentSupported(sourceTile)) {
86143
86003
  return null;
86144
86004
  }
86145
- const resourcesData = await convertB3dmToI3sGeometry(sourceTile.content, Number(this.nodePages.nodesCounter), this.featuresHashArray, this.layers0?.attributeStorageInfo, this.options.draco, this.generateBoundingVolumes, this.geoidHeightModel);
86005
+ const resourcesData = await convertB3dmToI3sGeometry(sourceTile.content, Number(this.nodePages.nodesCounter), this.featuresHashArray, this.layers0?.attributeStorageInfo, this.options.draco, this.generateBoundingVolumes, this.geoidHeightModel, this.workerSource);
86146
86006
  return resourcesData;
86147
86007
  }
86148
86008
  _createNodeInNodePages(maxScreenThresholdSQ, boundingVolumes, sourceTile, parentId, resources) {
@@ -86239,31 +86099,47 @@ var I3SConverter = class {
86239
86099
  async _writeGeometries(geometryBuffer, compressedGeometry, childPath, slpkChildPath) {
86240
86100
  if (this.options.slpk) {
86241
86101
  const slpkGeometryPath = (0, import_path7.join)(childPath, "geometries");
86242
- this.fileMap[`${slpkChildPath}/geometries/0.bin.gz`] = await writeFileForSlpk(slpkGeometryPath, geometryBuffer, "0.bin");
86102
+ this.writeQueue.enqueue({
86103
+ archiveKey: `${slpkChildPath}/geometries/0.bin.gz`,
86104
+ writePromise: writeFileForSlpk(slpkGeometryPath, geometryBuffer, "0.bin")
86105
+ });
86243
86106
  } else {
86244
86107
  const geometryPath = (0, import_path7.join)(childPath, "geometries/0/");
86245
- await writeFile3(geometryPath, geometryBuffer, "index.bin");
86108
+ this.writeQueue.enqueue({
86109
+ writePromise: writeFile3(geometryPath, geometryBuffer, "index.bin")
86110
+ });
86246
86111
  }
86247
86112
  if (this.options.draco) {
86248
86113
  if (this.options.slpk) {
86249
86114
  const slpkCompressedGeometryPath = (0, import_path7.join)(childPath, "geometries");
86250
- this.fileMap[`${slpkChildPath}/geometries/1.bin.gz`] = await writeFileForSlpk(slpkCompressedGeometryPath, compressedGeometry, "1.bin");
86115
+ this.writeQueue.enqueue({
86116
+ archiveKey: `${slpkChildPath}/geometries/1.bin.gz`,
86117
+ writePromise: writeFileForSlpk(slpkCompressedGeometryPath, compressedGeometry, "1.bin")
86118
+ });
86251
86119
  } else {
86252
86120
  const compressedGeometryPath = (0, import_path7.join)(childPath, "geometries/1/");
86253
- await writeFile3(compressedGeometryPath, compressedGeometry, "index.bin");
86121
+ this.writeQueue.enqueue({
86122
+ writePromise: writeFile3(compressedGeometryPath, compressedGeometry, "index.bin")
86123
+ });
86254
86124
  }
86255
86125
  }
86256
86126
  }
86257
86127
  async _writeShared(sharedResources, childPath, slpkChildPath, nodePath) {
86128
+ if (!sharedResources) {
86129
+ return;
86130
+ }
86258
86131
  sharedResources.nodePath = nodePath;
86259
86132
  const sharedData = (0, import_json_map_transform6.default)(sharedResources, SHARED_RESOURCES());
86260
86133
  const sharedDataStr = JSON.stringify(sharedData);
86261
86134
  if (this.options.slpk) {
86262
86135
  const slpkSharedPath = (0, import_path7.join)(childPath, "shared");
86263
- this.fileMap[`${slpkChildPath}/shared/sharedResource.json.gz`] = await writeFileForSlpk(slpkSharedPath, sharedDataStr, "sharedResource.json");
86136
+ this.writeQueue.enqueue({
86137
+ archiveKey: `${slpkChildPath}/shared/sharedResource.json.gz`,
86138
+ writePromise: writeFileForSlpk(slpkSharedPath, sharedDataStr, "sharedResource.json")
86139
+ });
86264
86140
  } else {
86265
86141
  const sharedPath = (0, import_path7.join)(childPath, "shared/");
86266
- await writeFile3(sharedPath, sharedDataStr);
86142
+ this.writeQueue.enqueue({ writePromise: writeFile3(sharedPath, sharedDataStr) });
86267
86143
  }
86268
86144
  }
86269
86145
  async _writeTexture(texture, childPath, slpkChildPath) {
@@ -86278,7 +86154,12 @@ var I3SConverter = class {
86278
86154
  await this.writeTextureFile(textureData, "0", format, childPath, slpkChildPath);
86279
86155
  if (this.generateTextures) {
86280
86156
  formats2.push({ name: "1", format: "ktx2" });
86281
- const ktx2TextureData = new Uint8Array(await encode(texture.image, KTX2BasisUniversalTextureWriter));
86157
+ const ktx2TextureData = encode(texture.image, KTX2BasisWriterWorker, {
86158
+ ...KTX2BasisWriterWorker.options,
86159
+ source: this.workerSource.ktx2,
86160
+ reuseWorkers: true,
86161
+ _nodeWorkers: true
86162
+ });
86282
86163
  await this.writeTextureFile(ktx2TextureData, "1", "ktx2", childPath, slpkChildPath);
86283
86164
  }
86284
86165
  break;
@@ -86288,7 +86169,7 @@ var I3SConverter = class {
86288
86169
  await this.writeTextureFile(textureData, "1", format, childPath, slpkChildPath);
86289
86170
  if (this.generateTextures) {
86290
86171
  formats2.push({ name: "0", format: "jpg" });
86291
- const decodedFromKTX2TextureData = new Uint8Array(await encode(texture.image.data[0], ImageWriter));
86172
+ const decodedFromKTX2TextureData = encode(texture.image.data[0], ImageWriter);
86292
86173
  await this.writeTextureFile(decodedFromKTX2TextureData, "0", "jpg", childPath, slpkChildPath);
86293
86174
  }
86294
86175
  }
@@ -86302,23 +86183,33 @@ var I3SConverter = class {
86302
86183
  if (this.options.slpk) {
86303
86184
  const slpkTexturePath = (0, import_path7.join)(childPath, "textures");
86304
86185
  const compress = false;
86305
- this.fileMap[`${slpkChildPath}/textures/${name8}.${format}`] = await writeFileForSlpk(slpkTexturePath, textureData, `${name8}.${format}`, compress);
86186
+ this.writeQueue.enqueue({
86187
+ archiveKey: `${slpkChildPath}/textures/${name8}.${format}`,
86188
+ writePromise: writeFileForSlpk(slpkTexturePath, textureData, `${name8}.${format}`, compress)
86189
+ });
86306
86190
  } else {
86307
86191
  const texturePath = (0, import_path7.join)(childPath, `textures/${name8}/`);
86308
- await writeFile3(texturePath, textureData, `index.${format}`);
86192
+ this.writeQueue.enqueue({
86193
+ writePromise: writeFile3(texturePath, textureData, `index.${format}`)
86194
+ });
86309
86195
  }
86310
86196
  }
86311
- async _writeAttributes(attributes, childPath, slpkChildPath) {
86312
- if (attributes.length && this.layers0?.attributeStorageInfo?.length) {
86197
+ async _writeAttributes(attributes = [], childPath, slpkChildPath) {
86198
+ if (attributes?.length && this.layers0?.attributeStorageInfo?.length) {
86313
86199
  for (let index = 0; index < attributes.length; index++) {
86314
86200
  const folderName = this.layers0.attributeStorageInfo[index].key;
86315
86201
  const fileBuffer = new Uint8Array(attributes[index]);
86316
86202
  if (this.options.slpk) {
86317
86203
  const slpkAttributesPath = (0, import_path7.join)(childPath, "attributes", folderName);
86318
- this.fileMap[`${slpkChildPath}/attributes/${folderName}.bin.gz`] = await writeFileForSlpk(slpkAttributesPath, fileBuffer, "0.bin");
86204
+ this.writeQueue.enqueue({
86205
+ archiveKey: `${slpkChildPath}/attributes/${folderName}.bin.gz`,
86206
+ writePromise: writeFileForSlpk(slpkAttributesPath, fileBuffer, "0.bin")
86207
+ });
86319
86208
  } else {
86320
86209
  const attributesPath = (0, import_path7.join)(childPath, `attributes/${folderName}/0`);
86321
- await writeFile3(attributesPath, fileBuffer, "index.bin");
86210
+ this.writeQueue.enqueue({
86211
+ writePromise: writeFile3(attributesPath, fileBuffer, "index.bin")
86212
+ });
86322
86213
  }
86323
86214
  }
86324
86215
  }
@@ -86524,6 +86415,26 @@ var I3SConverter = class {
86524
86415
  isContentSupported(sourceRootTile) {
86525
86416
  return ["b3dm", "glTF"].includes(sourceRootTile?.content?.type);
86526
86417
  }
86418
+ async loadWorkers() {
86419
+ console.log(`Loading workers source...`);
86420
+ if (this.options.draco) {
86421
+ const url = getWorkerURL(DracoWriterWorker, { ...getGlobalLoaderOptions() });
86422
+ const sourceResponse2 = await fetchFile(url);
86423
+ const source2 = await sourceResponse2.text();
86424
+ this.workerSource.draco = source2;
86425
+ }
86426
+ if (this.generateTextures) {
86427
+ const url = getWorkerURL(KTX2BasisWriterWorker, { ...getGlobalLoaderOptions() });
86428
+ const sourceResponse2 = await fetchFile(url);
86429
+ const source2 = await sourceResponse2.text();
86430
+ this.workerSource.ktx2 = source2;
86431
+ }
86432
+ const i3sAttributesWorkerUrl = getWorkerURL(I3SAttributesWorker, { ...getGlobalLoaderOptions() });
86433
+ const sourceResponse = await fetchFile(i3sAttributesWorkerUrl);
86434
+ const source = await sourceResponse.text();
86435
+ this.workerSource.I3SAttributes = source;
86436
+ console.log(`Loading workers source completed!`);
86437
+ }
86527
86438
  };
86528
86439
 
86529
86440
  // src/3d-tiles-converter/3d-tiles-converter.ts
@@ -86533,7 +86444,7 @@ var import_json_map_transform8 = __toModule(require_json_map_transform());
86533
86444
 
86534
86445
  // ../i3s/src/lib/parsers/parse-i3s-tile-content.ts
86535
86446
  var import_core26 = __toModule(require_es56());
86536
- var import_geospatial10 = __toModule(require_es57());
86447
+ var import_geospatial11 = __toModule(require_es57());
86537
86448
 
86538
86449
  // ../i3s/src/types.ts
86539
86450
  var DATA_TYPE;
@@ -86578,7 +86489,7 @@ function generateTilesetAttributeUrls(tileset, resource) {
86578
86489
  }
86579
86490
 
86580
86491
  // ../i3s/src/lib/parsers/constants.ts
86581
- var import_constants14 = __toModule(require_es517());
86492
+ var import_constants14 = __toModule(require_es516());
86582
86493
  function getConstructorForDataFormat(dataType) {
86583
86494
  switch (dataType) {
86584
86495
  case DATA_TYPE.UInt8:
@@ -86668,7 +86579,10 @@ async function parseI3STileContent(arrayBuffer, tile, tileset, options, context)
86668
86579
  tile.content.texture = await parse(arrayBuffer2, loader, options2);
86669
86580
  }
86670
86581
  } else if (loader === CompressedTextureLoader || loader === BasisLoader) {
86671
- const texture = await load(arrayBuffer2, loader, tile.textureLoaderOptions);
86582
+ let texture = await load(arrayBuffer2, loader, tile.textureLoaderOptions);
86583
+ if (loader === BasisLoader) {
86584
+ texture = texture[0];
86585
+ }
86672
86586
  tile.content.texture = {
86673
86587
  compressed: true,
86674
86588
  mipmaps: false,
@@ -86692,6 +86606,7 @@ async function parseI3SNodeGeometry(arrayBuffer, tile, tileset, options) {
86692
86606
  return tile;
86693
86607
  }
86694
86608
  const content = tile.content;
86609
+ const contentByteLength = arrayBuffer.byteLength;
86695
86610
  let attributes;
86696
86611
  let vertexCount;
86697
86612
  let byteOffset = 0;
@@ -86767,7 +86682,7 @@ async function parseI3SNodeGeometry(arrayBuffer, tile, tileset, options) {
86767
86682
  }
86768
86683
  }
86769
86684
  content.vertexCount = vertexCount;
86770
- content.byteLength = arrayBuffer.byteLength;
86685
+ content.byteLength = contentByteLength;
86771
86686
  return tile;
86772
86687
  }
86773
86688
  function updateAttributesMetadata(attributes, decompressedGeometry) {
@@ -86820,38 +86735,38 @@ function parseHeaders(tileset, arrayBuffer) {
86820
86735
  byteOffset
86821
86736
  };
86822
86737
  }
86823
- function normalizeAttributes(arrayBuffer, byteOffset, vertexAttributes, vertexCount, attributesOrder) {
86738
+ function normalizeAttributes(arrayBuffer, byteOffset, vertexAttributes, attributeCount, attributesOrder) {
86824
86739
  const attributes = {};
86825
86740
  for (const attribute of attributesOrder) {
86826
86741
  if (vertexAttributes[attribute]) {
86827
86742
  const { valueType, valuesPerElement } = vertexAttributes[attribute];
86828
- const count = vertexCount;
86829
- if (byteOffset + count * valuesPerElement > arrayBuffer.byteLength) {
86743
+ if (byteOffset + attributeCount * valuesPerElement * sizeOf(valueType) <= arrayBuffer.byteLength) {
86744
+ const buffer = arrayBuffer.slice(byteOffset);
86745
+ let value;
86746
+ if (valueType === "UInt64") {
86747
+ value = parseUint64Values(buffer, attributeCount * valuesPerElement, sizeOf(valueType));
86748
+ } else {
86749
+ const TypedArrayType = getConstructorForDataFormat(valueType);
86750
+ value = new TypedArrayType(buffer, 0, attributeCount * valuesPerElement);
86751
+ }
86752
+ attributes[attribute] = {
86753
+ value,
86754
+ type: GL_TYPE_MAP[valueType],
86755
+ size: valuesPerElement
86756
+ };
86757
+ switch (attribute) {
86758
+ case "color":
86759
+ attributes.color.normalized = true;
86760
+ break;
86761
+ case "position":
86762
+ case "region":
86763
+ case "normal":
86764
+ default:
86765
+ }
86766
+ byteOffset = byteOffset + attributeCount * valuesPerElement * sizeOf(valueType);
86767
+ } else if (attribute !== "uv0") {
86830
86768
  break;
86831
86769
  }
86832
- const buffer = arrayBuffer.slice(byteOffset);
86833
- let value;
86834
- if (valueType === "UInt64") {
86835
- value = parseUint64Values(buffer, count * valuesPerElement, sizeOf(valueType));
86836
- } else {
86837
- const TypedArrayType = getConstructorForDataFormat(valueType);
86838
- value = new TypedArrayType(buffer, 0, count * valuesPerElement);
86839
- }
86840
- attributes[attribute] = {
86841
- value,
86842
- type: GL_TYPE_MAP[valueType],
86843
- size: valuesPerElement
86844
- };
86845
- switch (attribute) {
86846
- case "color":
86847
- attributes.color.normalized = true;
86848
- break;
86849
- case "position":
86850
- case "region":
86851
- case "normal":
86852
- default:
86853
- }
86854
- byteOffset = byteOffset + count * valuesPerElement * sizeOf(valueType);
86855
86770
  }
86856
86771
  }
86857
86772
  return { attributes, byteOffset };
@@ -86876,8 +86791,8 @@ function parsePositions2(attribute, tile) {
86876
86791
  const enuMatrix = new import_core26.Matrix4();
86877
86792
  const cartographicOrigin = new import_core26.Vector3(mbs[0], mbs[1], mbs[2]);
86878
86793
  const cartesianOrigin = new import_core26.Vector3();
86879
- import_geospatial10.Ellipsoid.WGS84.cartographicToCartesian(cartographicOrigin, cartesianOrigin);
86880
- import_geospatial10.Ellipsoid.WGS84.eastNorthUpToFixedFrame(cartesianOrigin, enuMatrix);
86794
+ import_geospatial11.Ellipsoid.WGS84.cartographicToCartesian(cartographicOrigin, cartesianOrigin);
86795
+ import_geospatial11.Ellipsoid.WGS84.eastNorthUpToFixedFrame(cartesianOrigin, enuMatrix);
86881
86796
  attribute.value = offsetsToCartesians(value, metadata, cartographicOrigin);
86882
86797
  return enuMatrix;
86883
86798
  }
@@ -86891,7 +86806,7 @@ function offsetsToCartesians(vertices, metadata = {}, cartographicOrigin) {
86891
86806
  positions[i + 2] = vertices[i + 2] + cartographicOrigin.z;
86892
86807
  }
86893
86808
  for (let i = 0; i < positions.length; i += 3) {
86894
- import_geospatial10.Ellipsoid.WGS84.cartographicToCartesian(positions.subarray(i, i + 3), scratchVector5);
86809
+ import_geospatial11.Ellipsoid.WGS84.cartographicToCartesian(positions.subarray(i, i + 3), scratchVector5);
86895
86810
  positions[i] = scratchVector5.x;
86896
86811
  positions[i + 1] = scratchVector5.y;
86897
86812
  positions[i + 2] = scratchVector5.z;
@@ -87002,13 +86917,13 @@ function getFeatureIdsFromFeatureIndexMetadata(featureIndex) {
87002
86917
  }
87003
86918
 
87004
86919
  // ../i3s/src/i3s-content-loader.ts
87005
- var VERSION10 = typeof __VERSION__ !== "undefined" ? __VERSION__ : "latest";
86920
+ var VERSION12 = typeof __VERSION__ !== "undefined" ? __VERSION__ : "beta";
87006
86921
  var I3SContentLoader = {
87007
86922
  name: "I3S Content (Indexed Scene Layers)",
87008
86923
  id: "i3s-content",
87009
86924
  module: "i3s",
87010
86925
  worker: true,
87011
- version: VERSION10,
86926
+ version: VERSION12,
87012
86927
  mimeTypes: ["application/octet-stream"],
87013
86928
  parse: parse6,
87014
86929
  extensions: ["bin"],
@@ -87023,11 +86938,11 @@ async function parse6(data, options, context) {
87023
86938
  }
87024
86939
 
87025
86940
  // ../i3s/src/lib/parsers/parse-i3s.ts
87026
- var import_culling7 = __toModule(require_es59());
87027
- var import_geospatial11 = __toModule(require_es57());
86941
+ var import_culling7 = __toModule(require_es58());
86942
+ var import_geospatial12 = __toModule(require_es57());
87028
86943
 
87029
86944
  // ../i3s/src/i3s-node-page-loader.ts
87030
- var VERSION11 = typeof __VERSION__ !== "undefined" ? __VERSION__ : "latest";
86945
+ var VERSION13 = typeof __VERSION__ !== "undefined" ? __VERSION__ : "latest";
87031
86946
  async function parseNodePage(data) {
87032
86947
  return JSON.parse(new TextDecoder().decode(data));
87033
86948
  }
@@ -87035,7 +86950,7 @@ var I3SNodePageLoader = {
87035
86950
  name: "I3S Node Page",
87036
86951
  id: "i3s-node-page",
87037
86952
  module: "i3s",
87038
- version: VERSION11,
86953
+ version: VERSION13,
87039
86954
  mimeTypes: ["application/json"],
87040
86955
  parse: parse7,
87041
86956
  extensions: ["json"],
@@ -87079,10 +86994,14 @@ var I3SNodePagesTiles = class {
87079
86994
  async formTileFromNodePages(id) {
87080
86995
  const node2 = await this.getNodeById(id);
87081
86996
  const children = [];
86997
+ const childNodesPromises = [];
87082
86998
  for (const child of node2.children || []) {
87083
- const childNode = await this.getNodeById(child);
86999
+ childNodesPromises.push(this.getNodeById(child));
87000
+ }
87001
+ const childNodes = await Promise.all(childNodesPromises);
87002
+ for (const childNode of childNodes) {
87084
87003
  children.push({
87085
- id: child.toString(),
87004
+ id: childNode.index.toString(),
87086
87005
  obb: childNode.obb
87087
87006
  });
87088
87007
  }
@@ -87240,12 +87159,12 @@ function normalizeTileNonUrlData(tile) {
87240
87159
  if (tile.mbs) {
87241
87160
  mbs = tile.mbs;
87242
87161
  boundingVolume.sphere = [
87243
- ...import_geospatial11.Ellipsoid.WGS84.cartographicToCartesian(tile.mbs.slice(0, 3)),
87162
+ ...import_geospatial12.Ellipsoid.WGS84.cartographicToCartesian(tile.mbs.slice(0, 3)),
87244
87163
  tile.mbs[3]
87245
87164
  ];
87246
87165
  } else if (tile.obb) {
87247
87166
  boundingVolume.box = [
87248
- ...import_geospatial11.Ellipsoid.WGS84.cartographicToCartesian(tile.obb.center),
87167
+ ...import_geospatial12.Ellipsoid.WGS84.cartographicToCartesian(tile.obb.center),
87249
87168
  ...tile.obb.halfSize,
87250
87169
  ...tile.obb.quaternion
87251
87170
  ];
@@ -87265,7 +87184,7 @@ async function normalizeTilesetData(tileset, options, context) {
87265
87184
  tileset.url = context.url;
87266
87185
  if (tileset.nodePages) {
87267
87186
  tileset.nodePagesTile = new I3SNodePagesTiles(tileset, options);
87268
- tileset.root = await tileset.nodePagesTile.formTileFromNodePages(0);
87187
+ tileset.root = tileset.nodePagesTile.formTileFromNodePages(0);
87269
87188
  } else {
87270
87189
  const rootNodeUrl = getUrlWithToken(`${tileset.url}/nodes/root`, options.i3s?.token);
87271
87190
  tileset.root = await load(rootNodeUrl, tileset.loader, {
@@ -87285,7 +87204,7 @@ async function normalizeTilesetData(tileset, options, context) {
87285
87204
  }
87286
87205
 
87287
87206
  // ../i3s/src/i3s-loader.ts
87288
- var VERSION12 = typeof __VERSION__ !== "undefined" ? __VERSION__ : "latest";
87207
+ var VERSION14 = typeof __VERSION__ !== "undefined" ? __VERSION__ : "latest";
87289
87208
  var TILESET_REGEX = /layers\/[0-9]+$/;
87290
87209
  var TILE_HEADER_REGEX = /nodes\/([0-9-]+|root)$/;
87291
87210
  var SLPK_HEX = "504b0304";
@@ -87293,7 +87212,7 @@ var I3SLoader = {
87293
87212
  name: "I3S (Indexed Scene Layers)",
87294
87213
  id: "i3s",
87295
87214
  module: "i3s",
87296
- version: VERSION12,
87215
+ version: VERSION14,
87297
87216
  mimeTypes: ["application/octet-stream"],
87298
87217
  parse: parseI3S,
87299
87218
  extensions: ["bin"],
@@ -87422,12 +87341,12 @@ function parseStringsAttribute(arrayBuffer) {
87422
87341
  }
87423
87342
 
87424
87343
  // ../i3s/src/i3s-attribute-loader.ts
87425
- var VERSION13 = typeof __VERSION__ !== "undefined" ? __VERSION__ : "latest";
87344
+ var VERSION15 = typeof __VERSION__ !== "undefined" ? __VERSION__ : "latest";
87426
87345
  var I3SAttributeLoader = {
87427
87346
  name: "I3S Attribute",
87428
87347
  id: "i3s-attribute",
87429
87348
  module: "i3s",
87430
- version: VERSION13,
87349
+ version: VERSION15,
87431
87350
  mimeTypes: ["application/binary"],
87432
87351
  parse: parse8,
87433
87352
  extensions: ["bin"],
@@ -87441,15 +87360,15 @@ async function parse8(data, options) {
87441
87360
 
87442
87361
  // src/3d-tiles-converter/helpers/i3s-obb-to-3d-tiles-obb.ts
87443
87362
  var import_core30 = __toModule(require_es56());
87444
- var import_geospatial12 = __toModule(require_es57());
87445
- var import_culling8 = __toModule(require_es59());
87363
+ var import_geospatial13 = __toModule(require_es57());
87364
+ var import_culling8 = __toModule(require_es58());
87446
87365
  function i3sObbTo3dTilesObb(i3SObb, geoidHeightModel) {
87447
87366
  const tiles3DCenter = [
87448
87367
  i3SObb.center[0],
87449
87368
  i3SObb.center[1],
87450
87369
  i3SObb.center[2] + geoidHeightModel.getHeight(i3SObb.center[1], i3SObb.center[0])
87451
87370
  ];
87452
- const cartesianCenter = import_geospatial12.Ellipsoid.WGS84.cartographicToCartesian(tiles3DCenter, new import_core30.Vector3());
87371
+ const cartesianCenter = import_geospatial13.Ellipsoid.WGS84.cartographicToCartesian(tiles3DCenter, new import_core30.Vector3());
87453
87372
  const tiles3DObb = new import_culling8.OrientedBoundingBox().fromCenterHalfSizeQuaternion(cartesianCenter, i3SObb.halfSize, i3SObb.quaternion);
87454
87373
  return [...tiles3DObb.center, ...tiles3DObb.halfAxes.toArray()];
87455
87374
  }
@@ -87494,7 +87413,7 @@ var TILESET = () => ({
87494
87413
 
87495
87414
  // src/3d-tiles-converter/helpers/b3dm-converter.ts
87496
87415
  var import_core32 = __toModule(require_es56());
87497
- var import_geospatial13 = __toModule(require_es57());
87416
+ var import_geospatial14 = __toModule(require_es57());
87498
87417
 
87499
87418
  // src/3d-tiles-converter/helpers/texture-atlas.ts
87500
87419
  function convertTextureAtlas(texCoords, uvRegions) {
@@ -87531,18 +87450,18 @@ function normalizeRegions(regions) {
87531
87450
  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]);
87532
87451
  var scratchVector6 = new import_core32.Vector3();
87533
87452
  var B3dmConverter = class {
87534
- async convert(i3sTile, attributes = null) {
87535
- this.i3sTile = i3sTile;
87536
- const gltf = await this.buildGltf(i3sTile);
87453
+ async convert(i3sAttributesData, featureAttributes = null) {
87454
+ const gltf = await this.buildGltf(i3sAttributesData);
87537
87455
  const b3dm = encodeSync({
87538
87456
  gltfEncoded: new Uint8Array(gltf),
87539
87457
  type: "b3dm",
87540
- featuresLength: this._getFeaturesLength(attributes),
87541
- batchTable: attributes
87458
+ featuresLength: this._getFeaturesLength(featureAttributes),
87459
+ batchTable: featureAttributes
87542
87460
  }, Tile3DWriter);
87543
87461
  return b3dm;
87544
87462
  }
87545
- async buildGltf(i3sTile) {
87463
+ async buildGltf(i3sAttributesData) {
87464
+ const { tileContent, textureFormat } = i3sAttributesData;
87546
87465
  const {
87547
87466
  material,
87548
87467
  attributes,
@@ -87550,9 +87469,9 @@ var B3dmConverter = class {
87550
87469
  cartesianOrigin,
87551
87470
  cartographicOrigin,
87552
87471
  modelMatrix
87553
- } = i3sTile.content;
87472
+ } = tileContent;
87554
87473
  const gltfBuilder = new GLTFScenegraph();
87555
- const textureIndex = await this._addI3sTextureToGltf(i3sTile, gltfBuilder);
87474
+ const textureIndex = await this._addI3sTextureToGltf(tileContent, textureFormat, gltfBuilder);
87556
87475
  const pbrMaterialInfo = this._convertI3sMaterialToGltfMaterial(material, textureIndex);
87557
87476
  const materialIndex = gltfBuilder.addMaterial(pbrMaterialInfo);
87558
87477
  const positions = attributes.positions;
@@ -87568,7 +87487,8 @@ var B3dmConverter = class {
87568
87487
  const meshIndex = gltfBuilder.addMesh({
87569
87488
  attributes,
87570
87489
  indices,
87571
- material: materialIndex
87490
+ material: materialIndex,
87491
+ mode: 4
87572
87492
  });
87573
87493
  const transformMatrix = this._generateTransformMatrix(cartesianOrigin);
87574
87494
  const nodeIndex = gltfBuilder.addNode({ meshIndex, matrix: transformMatrix });
@@ -87578,11 +87498,8 @@ var B3dmConverter = class {
87578
87498
  const gltfBuffer = encodeSync(gltfBuilder.gltf, GLTFWriter);
87579
87499
  return gltfBuffer;
87580
87500
  }
87581
- async _addI3sTextureToGltf(i3sTile, gltfBuilder) {
87582
- const {
87583
- content: { texture, material, attributes },
87584
- header: { textureFormat }
87585
- } = i3sTile;
87501
+ async _addI3sTextureToGltf(tileContent, textureFormat, gltfBuilder) {
87502
+ const { texture, material, attributes } = tileContent;
87586
87503
  let textureIndex = null;
87587
87504
  let selectedTexture = texture;
87588
87505
  if (!texture && material) {
@@ -87590,8 +87507,7 @@ var B3dmConverter = class {
87590
87507
  }
87591
87508
  if (selectedTexture) {
87592
87509
  const mimeType = this._deduceMimeTypeFromFormat(textureFormat);
87593
- const imageBuffer = await encode(selectedTexture, ImageWriter);
87594
- const imageIndex = gltfBuilder.addImage(imageBuffer, mimeType);
87510
+ const imageIndex = gltfBuilder.addImage(selectedTexture, mimeType);
87595
87511
  textureIndex = gltfBuilder.addTexture({ imageIndex });
87596
87512
  delete attributes.colors;
87597
87513
  }
@@ -87603,7 +87519,7 @@ var B3dmConverter = class {
87603
87519
  const vertex = positionsValue.subarray(index, index + 3);
87604
87520
  const cartesianOriginVector = new import_core32.Vector3(cartesianOrigin);
87605
87521
  let vertexVector = new import_core32.Vector3(Array.from(vertex)).transform(modelMatrix).add(cartographicOrigin);
87606
- import_geospatial13.Ellipsoid.WGS84.cartographicToCartesian(vertexVector, scratchVector6);
87522
+ import_geospatial14.Ellipsoid.WGS84.cartographicToCartesian(vertexVector, scratchVector6);
87607
87523
  vertexVector = scratchVector6.subtract(cartesianOriginVector);
87608
87524
  newPositionsValue.set(vertexVector, index);
87609
87525
  }
@@ -87641,6 +87557,8 @@ var B3dmConverter = class {
87641
87557
  return "image/jpeg";
87642
87558
  case "png":
87643
87559
  return "image/png";
87560
+ case "ktx2":
87561
+ return "image/ktx2";
87644
87562
  default:
87645
87563
  console.warn(`Unexpected texture format in I3S: ${format}`);
87646
87564
  return "image/jpeg";
@@ -87717,10 +87635,23 @@ var B3dmConverter = class {
87717
87635
  }
87718
87636
  };
87719
87637
 
87638
+ // src/3d-tiles-attributes-worker.ts
87639
+ var VERSION16 = typeof __VERSION__ !== "undefined" ? __VERSION__ : "latest";
87640
+ var Tile3dAttributesWorker = {
87641
+ id: "3d-tiles-attributes",
87642
+ name: "3DTiles Attributes Worker",
87643
+ module: "tile-converter",
87644
+ version: VERSION16,
87645
+ options: {
87646
+ attributes: null
87647
+ }
87648
+ };
87649
+
87720
87650
  // src/3d-tiles-converter/3d-tiles-converter.ts
87721
87651
  var I3S = "I3S";
87722
87652
  var Tiles3DConverter = class {
87723
87653
  constructor() {
87654
+ this.workerSource = {};
87724
87655
  this.options = {};
87725
87656
  this.tilesetPath = "";
87726
87657
  this.vertexCounter = 0;
@@ -87728,6 +87659,7 @@ var Tiles3DConverter = class {
87728
87659
  this.geoidHeightModel = null;
87729
87660
  this.sourceTileset = null;
87730
87661
  this.attributeStorageInfo = null;
87662
+ this.workerSource = {};
87731
87663
  }
87732
87664
  async convert(options) {
87733
87665
  const { inputUrl, outputPath, tilesetName, maxDepth, egmFilePath } = options;
@@ -87736,10 +87668,14 @@ var Tiles3DConverter = class {
87736
87668
  console.log("Loading egm file...");
87737
87669
  this.geoidHeightModel = await load(egmFilePath, PGMLoader);
87738
87670
  console.log("Loading egm file completed!");
87671
+ await this.loadWorkers();
87739
87672
  const sourceTilesetJson = await load(inputUrl, I3SLoader, {});
87740
87673
  this.sourceTileset = new Tileset3D(sourceTilesetJson, {
87741
- loadOptions: { i3s: { coordinateSystem: COORDINATE_SYSTEM.LNGLAT_OFFSETS } }
87674
+ loadOptions: {
87675
+ i3s: { coordinateSystem: COORDINATE_SYSTEM.LNGLAT_OFFSETS, decodeTextures: false }
87676
+ }
87742
87677
  });
87678
+ await this.sourceTileset.tilesetInitializationPromise;
87743
87679
  const rootNode = this.sourceTileset.root;
87744
87680
  if (!rootNode.header.obb) {
87745
87681
  rootNode.header.obb = createObbFromMbs(rootNode.header.mbs);
@@ -87761,6 +87697,8 @@ var Tiles3DConverter = class {
87761
87697
  const tileset = (0, import_json_map_transform8.default)({ root: rootTile }, TILESET());
87762
87698
  await writeFile3(this.tilesetPath, JSON.stringify(tileset), "tileset.json");
87763
87699
  this._finishConversion({ slpk: false, outputPath, tilesetName });
87700
+ const workerFarm = WorkerFarm.getWorkerFarm({});
87701
+ workerFarm.destroy();
87764
87702
  }
87765
87703
  async _addChildren(parentSourceNode, parentNode, level) {
87766
87704
  if (this.options.maxDepth && level > this.options.maxDepth) {
@@ -87772,9 +87710,9 @@ var Tiles3DConverter = class {
87772
87710
  if (sourceChild.contentUrl) {
87773
87711
  await this.sourceTileset._loadTile(sourceChild);
87774
87712
  this.vertexCounter += sourceChild.content.vertexCount;
87775
- let attributes = null;
87713
+ let featureAttributes = null;
87776
87714
  if (this.attributeStorageInfo) {
87777
- attributes = await this._loadChildAttributes(sourceChild, this.attributeStorageInfo);
87715
+ featureAttributes = await this._loadChildAttributes(sourceChild, this.attributeStorageInfo);
87778
87716
  }
87779
87717
  if (!sourceChild.header.obb) {
87780
87718
  sourceChild.header.obb = createObbFromMbs(sourceChild.header.mbs);
@@ -87787,7 +87725,11 @@ var Tiles3DConverter = class {
87787
87725
  geometricError: convertScreenThresholdToGeometricError(sourceChild),
87788
87726
  children: []
87789
87727
  };
87790
- const b3dm = await new B3dmConverter().convert(sourceChild, attributes);
87728
+ const i3sAttributesData = {
87729
+ tileContent: sourceChild.content,
87730
+ textureFormat: sourceChild?.header?.textureFormat
87731
+ };
87732
+ const b3dm = await new B3dmConverter().convert(i3sAttributesData, featureAttributes);
87791
87733
  child.content = {
87792
87734
  uri: `${sourceChild.id}.b3dm`,
87793
87735
  boundingVolume
@@ -87880,73 +87822,18 @@ var Tiles3DConverter = class {
87880
87822
  console.log(`File(s) size: `, filesSize, " bytes");
87881
87823
  console.log(`------------------------------------------------`);
87882
87824
  }
87883
- };
87884
-
87885
- // ../zip/src/zip-loader.ts
87886
- var import_jszip2 = __toModule(require_lib4());
87887
- var VERSION14 = typeof __VERSION__ !== "undefined" ? __VERSION__ : "latest";
87888
- var ZipLoader = {
87889
- id: "zip",
87890
- module: "zip",
87891
- name: "Zip Archive",
87892
- version: VERSION14,
87893
- extensions: ["zip"],
87894
- mimeTypes: ["application/zip"],
87895
- category: "archive",
87896
- tests: ["PK"],
87897
- options: {},
87898
- parse: parseZipAsync
87899
- };
87900
- async function parseZipAsync(data, options = {}) {
87901
- const promises = [];
87902
- const fileMap = {};
87903
- try {
87904
- const jsZip = new import_jszip2.default();
87905
- const zip = await jsZip.loadAsync(data, options);
87906
- zip.forEach((relativePath, zipEntry) => {
87907
- const subFilename = zipEntry.name;
87908
- const promise = loadZipEntry(jsZip, subFilename, options).then((arrayBufferOrError) => {
87909
- fileMap[relativePath] = arrayBufferOrError;
87910
- });
87911
- promises.push(promise);
87912
- });
87913
- await Promise.all(promises);
87914
- return fileMap;
87915
- } catch (error) {
87916
- options.log.error(`Unable to read zip archive: ${error}`);
87917
- throw error;
87918
- }
87919
- }
87920
- async function loadZipEntry(jsZip, subFilename, options = {}) {
87921
- try {
87922
- const arrayBuffer = await jsZip.file(subFilename).async(options.dataType || "arraybuffer");
87923
- return arrayBuffer;
87924
- } catch (error) {
87925
- options.log.error(`Unable to read ${subFilename} from zip archive: ${error}`);
87926
- return error;
87927
- }
87928
- }
87929
-
87930
- // src/deps-installer/deps-installer.js
87931
- var import_path9 = __toModule(require("path"));
87932
- var PGM_LINK = "https://raw.githubusercontent.com/visgl/deck.gl-data/master/egm/egm2008-5.zip";
87933
- var DepsInstaller = class {
87934
- async install(path2 = "") {
87935
- console.log('Installing "EGM2008-5" model...');
87936
- const fileMap = await load(PGM_LINK, ZipLoader, {});
87937
- let depsPath = process.cwd();
87938
- if (path2) {
87939
- depsPath = (0, import_path9.join)(depsPath, path2);
87940
- }
87941
- await writeFile3(depsPath, new Uint8Array(fileMap["geoids/egm2008-5.pgm"]), "egm2008-5.pgm");
87942
- console.log("All dependencies were installed succesfully.");
87825
+ async loadWorkers() {
87826
+ console.log(`Loading workers source...`);
87827
+ const tile3dAttributesWorkerUrl = getWorkerURL(Tile3dAttributesWorker, { ...getGlobalLoaderOptions() });
87828
+ const sourceResponse = await fetchFile(tile3dAttributesWorkerUrl);
87829
+ const source = await sourceResponse.text();
87830
+ this.workerSource.tile3dWorkerSource = source;
87831
+ console.log(`Loading workers source completed!`);
87943
87832
  }
87944
87833
  };
87945
87834
  // Annotate the CommonJS export names for ESM import in node:
87946
87835
  0 && (module.exports = {
87947
- DepsInstaller,
87948
87836
  I3SConverter,
87949
- NodePages,
87950
87837
  Tiles3DConverter
87951
87838
  });
87952
87839
  /*!