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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (170) 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 +4 -0
  6. package/dist/3d-tiles-converter/3d-tiles-converter.d.ts.map +1 -1
  7. package/dist/3d-tiles-converter/3d-tiles-converter.js +29 -3
  8. package/dist/3d-tiles-converter/helpers/b3dm-converter.d.ts +5 -4
  9. package/dist/3d-tiles-converter/helpers/b3dm-converter.d.ts.map +1 -1
  10. package/dist/3d-tiles-converter/helpers/b3dm-converter.js +10 -10
  11. package/dist/converter.min.js +20 -20
  12. package/dist/dist.min.js +789 -645
  13. package/dist/es5/3d-tiles-attributes-worker.js +29 -0
  14. package/dist/es5/3d-tiles-attributes-worker.js.map +1 -0
  15. package/dist/es5/3d-tiles-converter/3d-tiles-converter.js +102 -43
  16. package/dist/es5/3d-tiles-converter/3d-tiles-converter.js.map +1 -1
  17. package/dist/es5/3d-tiles-converter/helpers/b3dm-converter.js +21 -23
  18. package/dist/es5/3d-tiles-converter/helpers/b3dm-converter.js.map +1 -1
  19. package/dist/es5/i3s-attributes-worker.js +29 -0
  20. package/dist/es5/i3s-attributes-worker.js.map +1 -0
  21. package/dist/es5/i3s-converter/helpers/coordinate-converter.js +19 -11
  22. package/dist/es5/i3s-converter/helpers/coordinate-converter.js.map +1 -1
  23. package/dist/es5/i3s-converter/helpers/geometry-attributes.js +2 -2
  24. package/dist/es5/i3s-converter/helpers/geometry-attributes.js.map +1 -1
  25. package/dist/es5/i3s-converter/helpers/geometry-converter.js +267 -178
  26. package/dist/es5/i3s-converter/helpers/geometry-converter.js.map +1 -1
  27. package/dist/es5/i3s-converter/helpers/gltf-attributes.js +71 -0
  28. package/dist/es5/i3s-converter/helpers/gltf-attributes.js.map +1 -0
  29. package/dist/es5/i3s-converter/helpers/node-pages.js +47 -99
  30. package/dist/es5/i3s-converter/helpers/node-pages.js.map +1 -1
  31. package/dist/es5/i3s-converter/i3s-converter.js +230 -195
  32. package/dist/es5/i3s-converter/i3s-converter.js.map +1 -1
  33. package/dist/es5/index.js +8 -0
  34. package/dist/es5/index.js.map +1 -1
  35. package/dist/es5/lib/utils/compress-util.js +14 -17
  36. package/dist/es5/lib/utils/compress-util.js.map +1 -1
  37. package/dist/es5/lib/utils/file-utils.js +39 -14
  38. package/dist/es5/lib/utils/file-utils.js.map +1 -1
  39. package/dist/es5/lib/utils/lod-conversion-utils.js.map +1 -1
  40. package/dist/es5/lib/utils/queue.js +61 -0
  41. package/dist/es5/lib/utils/queue.js.map +1 -0
  42. package/dist/es5/lib/utils/statistic-utills.js.map +1 -1
  43. package/dist/es5/lib/utils/write-queue.js +225 -0
  44. package/dist/es5/lib/utils/write-queue.js.map +1 -0
  45. package/dist/es5/pgm-loader.js +1 -1
  46. package/dist/es5/workers/3d-tiles-attributes-worker.js +37 -0
  47. package/dist/es5/workers/3d-tiles-attributes-worker.js.map +1 -0
  48. package/dist/es5/workers/i3s-attributes-worker.js +40 -0
  49. package/dist/es5/workers/i3s-attributes-worker.js.map +1 -0
  50. package/dist/esm/3d-tiles-attributes-worker.js +16 -0
  51. package/dist/esm/3d-tiles-attributes-worker.js.map +1 -0
  52. package/dist/esm/3d-tiles-converter/3d-tiles-converter.js +30 -4
  53. package/dist/esm/3d-tiles-converter/3d-tiles-converter.js.map +1 -1
  54. package/dist/esm/3d-tiles-converter/helpers/b3dm-converter.js +16 -18
  55. package/dist/esm/3d-tiles-converter/helpers/b3dm-converter.js.map +1 -1
  56. package/dist/esm/i3s-attributes-worker.js +16 -0
  57. package/dist/esm/i3s-attributes-worker.js.map +1 -0
  58. package/dist/esm/i3s-converter/helpers/coordinate-converter.js +19 -11
  59. package/dist/esm/i3s-converter/helpers/coordinate-converter.js.map +1 -1
  60. package/dist/esm/i3s-converter/helpers/geometry-attributes.js +2 -2
  61. package/dist/esm/i3s-converter/helpers/geometry-attributes.js.map +1 -1
  62. package/dist/esm/i3s-converter/helpers/geometry-converter.js +117 -58
  63. package/dist/esm/i3s-converter/helpers/geometry-converter.js.map +1 -1
  64. package/dist/esm/i3s-converter/helpers/gltf-attributes.js +54 -0
  65. package/dist/esm/i3s-converter/helpers/gltf-attributes.js.map +1 -0
  66. package/dist/esm/i3s-converter/helpers/node-pages.js +12 -4
  67. package/dist/esm/i3s-converter/helpers/node-pages.js.map +1 -1
  68. package/dist/esm/i3s-converter/i3s-converter.js +105 -28
  69. package/dist/esm/i3s-converter/i3s-converter.js.map +1 -1
  70. package/dist/esm/index.js +1 -0
  71. package/dist/esm/index.js.map +1 -1
  72. package/dist/esm/lib/utils/compress-util.js +6 -8
  73. package/dist/esm/lib/utils/compress-util.js.map +1 -1
  74. package/dist/esm/lib/utils/file-utils.js +11 -1
  75. package/dist/esm/lib/utils/file-utils.js.map +1 -1
  76. package/dist/esm/lib/utils/lod-conversion-utils.js.map +1 -1
  77. package/dist/esm/lib/utils/queue.js +19 -0
  78. package/dist/esm/lib/utils/queue.js.map +1 -0
  79. package/dist/esm/lib/utils/statistic-utills.js.map +1 -1
  80. package/dist/esm/lib/utils/write-queue.js +88 -0
  81. package/dist/esm/lib/utils/write-queue.js.map +1 -0
  82. package/dist/esm/pgm-loader.js +1 -1
  83. package/dist/esm/workers/3d-tiles-attributes-worker.js +5 -0
  84. package/dist/esm/workers/3d-tiles-attributes-worker.js.map +1 -0
  85. package/dist/esm/workers/i3s-attributes-worker.js +4 -0
  86. package/dist/esm/workers/i3s-attributes-worker.js.map +1 -0
  87. package/dist/i3s-attributes-worker.d.ts +33 -0
  88. package/dist/i3s-attributes-worker.d.ts.map +1 -0
  89. package/dist/i3s-attributes-worker.js +10 -0
  90. package/dist/i3s-attributes-worker.js.map +7 -0
  91. package/dist/i3s-converter/helpers/coordinate-converter.d.ts +7 -7
  92. package/dist/i3s-converter/helpers/coordinate-converter.d.ts.map +1 -1
  93. package/dist/i3s-converter/helpers/coordinate-converter.js +25 -21
  94. package/dist/i3s-converter/helpers/geometry-attributes.d.ts +2 -2
  95. package/dist/i3s-converter/helpers/geometry-attributes.d.ts.map +1 -1
  96. package/dist/i3s-converter/helpers/geometry-attributes.js +2 -1
  97. package/dist/i3s-converter/helpers/geometry-converter.d.ts +28 -11
  98. package/dist/i3s-converter/helpers/geometry-converter.d.ts.map +1 -1
  99. package/dist/i3s-converter/helpers/geometry-converter.js +220 -110
  100. package/dist/i3s-converter/helpers/gltf-attributes.d.ts +9 -0
  101. package/dist/i3s-converter/helpers/gltf-attributes.d.ts.map +1 -0
  102. package/dist/i3s-converter/helpers/gltf-attributes.js +56 -0
  103. package/dist/i3s-converter/helpers/node-pages.d.ts +6 -5
  104. package/dist/i3s-converter/helpers/node-pages.d.ts.map +1 -1
  105. package/dist/i3s-converter/helpers/node-pages.js +13 -8
  106. package/dist/i3s-converter/i3s-converter.d.ts +7 -3
  107. package/dist/i3s-converter/i3s-converter.d.ts.map +1 -1
  108. package/dist/i3s-converter/i3s-converter.js +88 -26
  109. package/dist/i3s-converter/types.d.ts +83 -8
  110. package/dist/i3s-converter/types.d.ts.map +1 -1
  111. package/dist/index.d.ts +1 -0
  112. package/dist/index.d.ts.map +1 -1
  113. package/dist/index.js +3 -1
  114. package/dist/lib/utils/compress-util.d.ts +44 -5
  115. package/dist/lib/utils/compress-util.d.ts.map +1 -1
  116. package/dist/lib/utils/compress-util.js +73 -6
  117. package/dist/lib/utils/file-utils.d.ts +34 -5
  118. package/dist/lib/utils/file-utils.d.ts.map +1 -1
  119. package/dist/lib/utils/file-utils.js +40 -1
  120. package/dist/lib/utils/lod-conversion-utils.d.ts +25 -4
  121. package/dist/lib/utils/lod-conversion-utils.d.ts.map +1 -1
  122. package/dist/lib/utils/lod-conversion-utils.js +21 -2
  123. package/dist/lib/utils/queue.d.ts +7 -0
  124. package/dist/lib/utils/queue.d.ts.map +1 -0
  125. package/dist/lib/utils/queue.js +18 -0
  126. package/dist/lib/utils/statistic-utills.d.ts +2 -2
  127. package/dist/lib/utils/statistic-utills.d.ts.map +1 -1
  128. package/dist/lib/utils/write-queue.d.ts +22 -0
  129. package/dist/lib/utils/write-queue.d.ts.map +1 -0
  130. package/dist/lib/utils/write-queue.js +62 -0
  131. package/dist/workers/3d-tiles-attributes-worker.d.ts +2 -0
  132. package/dist/workers/3d-tiles-attributes-worker.d.ts.map +1 -0
  133. package/dist/workers/3d-tiles-attributes-worker.js +9 -0
  134. package/dist/workers/i3s-attributes-worker.d.ts +2 -0
  135. package/dist/workers/i3s-attributes-worker.d.ts.map +1 -0
  136. package/dist/workers/i3s-attributes-worker.js +5 -0
  137. package/package.json +20 -17
  138. package/src/3d-tiles-attributes-worker.ts +43 -0
  139. package/src/3d-tiles-converter/3d-tiles-converter.ts +44 -4
  140. package/src/3d-tiles-converter/helpers/b3dm-converter.ts +15 -13
  141. package/src/i3s-attributes-worker.ts +46 -0
  142. package/src/i3s-converter/helpers/coordinate-converter.ts +29 -24
  143. package/src/i3s-converter/helpers/geometry-attributes.ts +4 -3
  144. package/src/i3s-converter/helpers/{geometry-converter.js → geometry-converter.ts} +421 -175
  145. package/src/i3s-converter/helpers/gltf-attributes.ts +68 -0
  146. package/src/i3s-converter/helpers/node-pages.ts +25 -17
  147. package/src/i3s-converter/i3s-converter.ts +112 -69
  148. package/src/i3s-converter/types.ts +90 -8
  149. package/src/index.ts +1 -0
  150. package/src/lib/utils/{compress-util.js → compress-util.ts} +105 -18
  151. package/src/lib/utils/file-utils.ts +84 -0
  152. package/src/lib/utils/{lod-conversion-utils.js → lod-conversion-utils.ts} +27 -5
  153. package/src/lib/utils/queue.ts +17 -0
  154. package/src/lib/utils/{statistic-utills.js → statistic-utills.ts} +0 -0
  155. package/src/lib/utils/write-queue.ts +75 -0
  156. package/src/workers/3d-tiles-attributes-worker.ts +6 -0
  157. package/src/workers/i3s-attributes-worker.ts +6 -0
  158. package/dist/es5/i3s-converter/helpers/geometry-converter.d.ts +0 -44
  159. package/dist/es5/lib/utils/compress-util.d.ts +0 -53
  160. package/dist/es5/lib/utils/file-utils.d.ts +0 -43
  161. package/dist/es5/lib/utils/lod-conversion-utils.d.ts +0 -32
  162. package/dist/esm/i3s-converter/helpers/geometry-converter.d.ts +0 -44
  163. package/dist/esm/lib/utils/compress-util.d.ts +0 -53
  164. package/dist/esm/lib/utils/file-utils.d.ts +0 -43
  165. package/dist/esm/lib/utils/lod-conversion-utils.d.ts +0 -32
  166. package/src/i3s-converter/helpers/geometry-converter.d.ts +0 -44
  167. package/src/lib/utils/compress-util.d.ts +0 -53
  168. package/src/lib/utils/file-utils.d.ts +0 -43
  169. package/src/lib/utils/file-utils.js +0 -38
  170. package/src/lib/utils/lod-conversion-utils.d.ts +0 -32
@@ -69,6 +69,14 @@ var _textures = require("@loaders.gl/textures");
69
69
 
70
70
  var _images = require("@loaders.gl/images");
71
71
 
72
+ var _workerUtils = require("@loaders.gl/worker-utils");
73
+
74
+ var _draco = require("@loaders.gl/draco");
75
+
76
+ var _writeQueue = _interopRequireDefault(require("../lib/utils/write-queue"));
77
+
78
+ var _i3sAttributesWorker = require("../i3s-attributes-worker");
79
+
72
80
  function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
73
81
 
74
82
  function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
@@ -94,7 +102,6 @@ var I3SConverter = function () {
94
102
  function I3SConverter() {
95
103
  (0, _classCallCheck2.default)(this, I3SConverter);
96
104
  (0, _defineProperty2.default)(this, "nodePages", void 0);
97
- (0, _defineProperty2.default)(this, "fileMap", void 0);
98
105
  (0, _defineProperty2.default)(this, "options", void 0);
99
106
  (0, _defineProperty2.default)(this, "layers0Path", void 0);
100
107
  (0, _defineProperty2.default)(this, "materialMap", void 0);
@@ -113,8 +120,9 @@ var I3SConverter = function () {
113
120
  (0, _defineProperty2.default)(this, "generateTextures", void 0);
114
121
  (0, _defineProperty2.default)(this, "generateBoundingVolumes", void 0);
115
122
  (0, _defineProperty2.default)(this, "layersHasTexture", void 0);
123
+ (0, _defineProperty2.default)(this, "workerSource", {});
124
+ (0, _defineProperty2.default)(this, "writeQueue", new _writeQueue.default());
116
125
  this.nodePages = new _nodePages.default(_fileUtils.writeFile, HARDCODED_NODES_PER_PAGE);
117
- this.fileMap = {};
118
126
  this.options = {};
119
127
  this.layers0Path = '';
120
128
  this.materialMap = new Map();
@@ -136,7 +144,7 @@ var I3SConverter = function () {
136
144
  key: "convert",
137
145
  value: function () {
138
146
  var _convert = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee(options) {
139
- var tilesetName, slpk, egmFilePath, inputUrl, validate, outputPath, draco, sevenZipExe, maxDepth, token, generateTextures, generateBoundingVolumes, preloadOptions, tilesetOptions, sourceTilesetJson;
147
+ var tilesetName, slpk, egmFilePath, inputUrl, validate, outputPath, draco, sevenZipExe, maxDepth, token, generateTextures, generateBoundingVolumes, preloadOptions, tilesetOptions, sourceTilesetJson, workerFarm;
140
148
  return _regenerator.default.wrap(function _callee$(_context) {
141
149
  while (1) {
142
150
  switch (_context.prev = _context.next) {
@@ -156,11 +164,13 @@ var I3SConverter = function () {
156
164
  this.Loader = inputUrl.indexOf(CESIUM_DATASET_PREFIX) !== -1 ? _dTiles.CesiumIonLoader : _dTiles.Tiles3DLoader;
157
165
  this.generateTextures = Boolean(generateTextures);
158
166
  this.generateBoundingVolumes = Boolean(generateBoundingVolumes);
167
+ this.writeQueue = new _writeQueue.default();
168
+ this.writeQueue.startListening();
159
169
  console.log('Loading egm file...');
160
- _context.next = 10;
170
+ _context.next = 12;
161
171
  return (0, _core.load)(egmFilePath, _pgmLoader.PGMLoader);
162
172
 
163
- case 10:
173
+ case 12:
164
174
  this.geoidHeightModel = _context.sent;
165
175
  console.log('Loading egm file completed!');
166
176
 
@@ -168,10 +178,14 @@ var I3SConverter = function () {
168
178
  this.nodePages.useWriteFunction(_fileUtils.writeFileForSlpk);
169
179
  }
170
180
 
171
- _context.next = 15;
181
+ _context.next = 17;
182
+ return this.loadWorkers();
183
+
184
+ case 17:
185
+ _context.next = 19;
172
186
  return this._fetchPreloadOptions();
173
187
 
174
- case 15:
188
+ case 19:
175
189
  preloadOptions = _context.sent;
176
190
  tilesetOptions = {
177
191
  loadOptions: {
@@ -188,27 +202,29 @@ var I3SConverter = function () {
188
202
  }
189
203
 
190
204
  Object.assign(tilesetOptions, preloadOptions);
191
- _context.next = 21;
205
+ _context.next = 25;
192
206
  return (0, _core.load)(inputUrl, this.Loader, tilesetOptions.loadOptions);
193
207
 
194
- case 21:
208
+ case 25:
195
209
  sourceTilesetJson = _context.sent;
196
210
  this.sourceTileset = new _tiles.Tileset3D(sourceTilesetJson, tilesetOptions);
197
- _context.next = 25;
211
+ _context.next = 29;
198
212
  return this._createAndSaveTileset(outputPath, tilesetName);
199
213
 
200
- case 25:
201
- _context.next = 27;
214
+ case 29:
215
+ _context.next = 31;
202
216
  return this._finishConversion({
203
217
  slpk: Boolean(slpk),
204
218
  outputPath: outputPath,
205
219
  tilesetName: tilesetName
206
220
  });
207
221
 
208
- case 27:
222
+ case 31:
223
+ workerFarm = _workerUtils.WorkerFarm.getWorkerFarm({});
224
+ workerFarm.destroy();
209
225
  return _context.abrupt("return", sourceTilesetJson);
210
226
 
211
- case 28:
227
+ case 34:
212
228
  case "end":
213
229
  return _context.stop();
214
230
  }
@@ -283,13 +299,17 @@ var I3SConverter = function () {
283
299
 
284
300
  case 26:
285
301
  _context2.next = 28;
286
- return this.nodePages.save(this.layers0Path, this.fileMap, isCreateSlpk);
302
+ return this.nodePages.save(this.layers0Path, this.writeQueue, isCreateSlpk);
287
303
 
288
304
  case 28:
289
305
  _context2.next = 30;
290
- return this._createSlpk(tilesetPath);
306
+ return this.writeQueue.finalize();
291
307
 
292
308
  case 30:
309
+ _context2.next = 32;
310
+ return this._createSlpk(tilesetPath);
311
+
312
+ case 32:
293
313
  case "end":
294
314
  return _context2.stop();
295
315
  }
@@ -306,7 +326,10 @@ var I3SConverter = function () {
306
326
  }, {
307
327
  key: "_formLayers0",
308
328
  value: function _formLayers0(tilesetName) {
309
- var extent = (0, _coordinateConverter.convertCommonToI3SExtentCoordinate)(this.sourceTileset);
329
+ var _this$sourceTileset, _this$sourceTileset2, _this$sourceTileset2$;
330
+
331
+ var fullExtent = (0, _coordinateConverter.convertBoundingVolumeToI3SFullExtent)(((_this$sourceTileset = this.sourceTileset) === null || _this$sourceTileset === void 0 ? void 0 : _this$sourceTileset.boundingVolume) || ((_this$sourceTileset2 = this.sourceTileset) === null || _this$sourceTileset2 === void 0 ? void 0 : (_this$sourceTileset2$ = _this$sourceTileset2.root) === null || _this$sourceTileset2$ === void 0 ? void 0 : _this$sourceTileset2$.boundingVolume));
332
+ var extent = [fullExtent.xmin, fullExtent.ymin, fullExtent.xmax, fullExtent.ymax];
310
333
  var layers0data = {
311
334
  version: "{".concat((0, _uuid.v4)().toUpperCase(), "}"),
312
335
  id: 0,
@@ -358,7 +381,7 @@ var I3SConverter = function () {
358
381
 
359
382
  case 2:
360
383
  if (!this.isContentSupported(sourceRootTile)) {
361
- _context3.next = 21;
384
+ _context3.next = 14;
362
385
  break;
363
386
  }
364
387
 
@@ -376,29 +399,22 @@ var I3SConverter = function () {
376
399
  child = _yield$this$_createNo2[0];
377
400
  childPath = (0, _path.join)(this.layers0Path, 'nodes', child.path);
378
401
 
379
- if (!this.options.slpk) {
380
- _context3.next = 17;
381
- break;
402
+ if (this.options.slpk) {
403
+ this.writeQueue.enqueue({
404
+ archiveKey: 'nodes/1/3dNodeIndexDocument.json.gz',
405
+ writePromise: (0, _fileUtils.writeFileForSlpk)(childPath, JSON.stringify(child), '3dNodeIndexDocument.json')
406
+ });
407
+ } else {
408
+ this.writeQueue.enqueue({
409
+ writePromise: (0, _fileUtils.writeFile)(childPath, JSON.stringify(child))
410
+ });
382
411
  }
383
412
 
384
- _context3.next = 14;
385
- return (0, _fileUtils.writeFileForSlpk)(childPath, JSON.stringify(child), '3dNodeIndexDocument.json');
386
-
387
- case 14:
388
- this.fileMap['nodes/1/3dNodeIndexDocument.json.gz'] = _context3.sent;
389
- _context3.next = 19;
390
- break;
391
-
392
- case 17:
393
- _context3.next = 19;
394
- return (0, _fileUtils.writeFile)(childPath, JSON.stringify(child));
395
-
396
- case 19:
397
- _context3.next = 23;
413
+ _context3.next = 16;
398
414
  break;
399
415
 
400
- case 21:
401
- _context3.next = 23;
416
+ case 14:
417
+ _context3.next = 16;
402
418
  return this._addChildrenWithNeighborsAndWriteFile({
403
419
  parentNode: root0,
404
420
  sourceTiles: sourceRootTile.children,
@@ -406,11 +422,11 @@ var I3SConverter = function () {
406
422
  level: 1
407
423
  });
408
424
 
409
- case 23:
410
- _context3.next = 25;
425
+ case 16:
426
+ _context3.next = 18;
411
427
  return sourceRootTile.unloadContent();
412
428
 
413
- case 25:
429
+ case 18:
414
430
  case "end":
415
431
  return _context3.stop();
416
432
  }
@@ -432,24 +448,18 @@ var I3SConverter = function () {
432
448
  while (1) {
433
449
  switch (_context4.prev = _context4.next) {
434
450
  case 0:
435
- if (!this.options.slpk) {
436
- _context4.next = 6;
437
- break;
451
+ if (this.options.slpk) {
452
+ this.writeQueue.enqueue({
453
+ archiveKey: '3dSceneLayer.json.gz',
454
+ writePromise: (0, _fileUtils.writeFileForSlpk)(this.layers0Path, JSON.stringify(this.layers0), '3dSceneLayer.json')
455
+ });
456
+ } else {
457
+ this.writeQueue.enqueue({
458
+ writePromise: (0, _fileUtils.writeFile)(this.layers0Path, JSON.stringify(this.layers0))
459
+ });
438
460
  }
439
461
 
440
- _context4.next = 3;
441
- return (0, _fileUtils.writeFileForSlpk)(this.layers0Path, JSON.stringify(this.layers0), '3dSceneLayer.json');
442
-
443
- case 3:
444
- this.fileMap['3dSceneLayer.json.gz'] = _context4.sent;
445
- _context4.next = 8;
446
- break;
447
-
448
- case 6:
449
- _context4.next = 8;
450
- return (0, _fileUtils.writeFile)(this.layers0Path, JSON.stringify(this.layers0));
451
-
452
- case 8:
462
+ case 1:
453
463
  case "end":
454
464
  return _context4.stop();
455
465
  }
@@ -471,24 +481,18 @@ var I3SConverter = function () {
471
481
  while (1) {
472
482
  switch (_context5.prev = _context5.next) {
473
483
  case 0:
474
- if (!this.options.slpk) {
475
- _context5.next = 6;
476
- break;
484
+ if (this.options.slpk) {
485
+ this.writeQueue.enqueue({
486
+ archiveKey: "nodes/".concat(nodePath, "/3dNodeIndexDocument.json.gz"),
487
+ writePromise: (0, _fileUtils.writeFileForSlpk)(rootPath, JSON.stringify(root0), '3dNodeIndexDocument.json')
488
+ });
489
+ } else {
490
+ this.writeQueue.enqueue({
491
+ writePromise: (0, _fileUtils.writeFile)(rootPath, JSON.stringify(root0))
492
+ });
477
493
  }
478
494
 
479
- _context5.next = 3;
480
- return (0, _fileUtils.writeFileForSlpk)(rootPath, JSON.stringify(root0), '3dNodeIndexDocument.json');
481
-
482
- case 3:
483
- this.fileMap["nodes/".concat(nodePath, "/3dNodeIndexDocument.json.gz")] = _context5.sent;
484
- _context5.next = 8;
485
- break;
486
-
487
- case 6:
488
- _context5.next = 8;
489
- return (0, _fileUtils.writeFile)(rootPath, JSON.stringify(root0));
490
-
491
- case 8:
495
+ case 1:
492
496
  case "end":
493
497
  return _context5.stop();
494
498
  }
@@ -1008,7 +1012,7 @@ var I3SConverter = function () {
1008
1012
 
1009
1013
  case 2:
1010
1014
  _context11.next = 4;
1011
- return (0, _geometryConverter.default)(sourceTile.content, Number(this.nodePages.nodesCounter), this.featuresHashArray, (_this$layers2 = this.layers0) === null || _this$layers2 === void 0 ? void 0 : _this$layers2.attributeStorageInfo, this.options.draco, this.generateBoundingVolumes, this.geoidHeightModel);
1015
+ return (0, _geometryConverter.default)(sourceTile.content, Number(this.nodePages.nodesCounter), this.featuresHashArray, (_this$layers2 = this.layers0) === null || _this$layers2 === void 0 ? void 0 : _this$layers2.attributeStorageInfo, this.options.draco, this.generateBoundingVolumes, this.geoidHeightModel, this.workerSource);
1012
1016
 
1013
1017
  case 4:
1014
1018
  resourcesData = _context11.sent;
@@ -1190,51 +1194,35 @@ var I3SConverter = function () {
1190
1194
  while (1) {
1191
1195
  switch (_context13.prev = _context13.next) {
1192
1196
  case 0:
1193
- if (!this.options.slpk) {
1194
- _context13.next = 7;
1195
- break;
1196
- }
1197
-
1198
- slpkGeometryPath = (0, _path.join)(childPath, 'geometries');
1199
- _context13.next = 4;
1200
- return (0, _fileUtils.writeFileForSlpk)(slpkGeometryPath, geometryBuffer, '0.bin');
1201
-
1202
- case 4:
1203
- this.fileMap["".concat(slpkChildPath, "/geometries/0.bin.gz")] = _context13.sent;
1204
- _context13.next = 10;
1205
- break;
1206
-
1207
- case 7:
1208
- geometryPath = (0, _path.join)(childPath, 'geometries/0/');
1209
- _context13.next = 10;
1210
- return (0, _fileUtils.writeFile)(geometryPath, geometryBuffer, 'index.bin');
1211
-
1212
- case 10:
1213
- if (!this.options.draco) {
1214
- _context13.next = 21;
1215
- break;
1197
+ if (this.options.slpk) {
1198
+ slpkGeometryPath = (0, _path.join)(childPath, 'geometries');
1199
+ this.writeQueue.enqueue({
1200
+ archiveKey: "".concat(slpkChildPath, "/geometries/0.bin.gz"),
1201
+ writePromise: (0, _fileUtils.writeFileForSlpk)(slpkGeometryPath, geometryBuffer, '0.bin')
1202
+ });
1203
+ } else {
1204
+ geometryPath = (0, _path.join)(childPath, 'geometries/0/');
1205
+ this.writeQueue.enqueue({
1206
+ writePromise: (0, _fileUtils.writeFile)(geometryPath, geometryBuffer, 'index.bin')
1207
+ });
1216
1208
  }
1217
1209
 
1218
- if (!this.options.slpk) {
1219
- _context13.next = 18;
1220
- break;
1210
+ if (this.options.draco) {
1211
+ if (this.options.slpk) {
1212
+ slpkCompressedGeometryPath = (0, _path.join)(childPath, 'geometries');
1213
+ this.writeQueue.enqueue({
1214
+ archiveKey: "".concat(slpkChildPath, "/geometries/1.bin.gz"),
1215
+ writePromise: (0, _fileUtils.writeFileForSlpk)(slpkCompressedGeometryPath, compressedGeometry, '1.bin')
1216
+ });
1217
+ } else {
1218
+ compressedGeometryPath = (0, _path.join)(childPath, 'geometries/1/');
1219
+ this.writeQueue.enqueue({
1220
+ writePromise: (0, _fileUtils.writeFile)(compressedGeometryPath, compressedGeometry, 'index.bin')
1221
+ });
1222
+ }
1221
1223
  }
1222
1224
 
1223
- slpkCompressedGeometryPath = (0, _path.join)(childPath, 'geometries');
1224
- _context13.next = 15;
1225
- return (0, _fileUtils.writeFileForSlpk)(slpkCompressedGeometryPath, compressedGeometry, '1.bin');
1226
-
1227
- case 15:
1228
- this.fileMap["".concat(slpkChildPath, "/geometries/1.bin.gz")] = _context13.sent;
1229
- _context13.next = 21;
1230
- break;
1231
-
1232
- case 18:
1233
- compressedGeometryPath = (0, _path.join)(childPath, 'geometries/1/');
1234
- _context13.next = 21;
1235
- return (0, _fileUtils.writeFile)(compressedGeometryPath, compressedGeometry, 'index.bin');
1236
-
1237
- case 21:
1225
+ case 2:
1238
1226
  case "end":
1239
1227
  return _context13.stop();
1240
1228
  }
@@ -1257,30 +1245,32 @@ var I3SConverter = function () {
1257
1245
  while (1) {
1258
1246
  switch (_context14.prev = _context14.next) {
1259
1247
  case 0:
1260
- sharedResources.nodePath = nodePath;
1261
- sharedData = (0, _jsonMapTransform.default)(sharedResources, (0, _sharedResources.SHARED_RESOURCES)());
1262
- sharedDataStr = JSON.stringify(sharedData);
1263
-
1264
- if (!this.options.slpk) {
1265
- _context14.next = 10;
1248
+ if (sharedResources) {
1249
+ _context14.next = 2;
1266
1250
  break;
1267
1251
  }
1268
1252
 
1269
- slpkSharedPath = (0, _path.join)(childPath, 'shared');
1270
- _context14.next = 7;
1271
- return (0, _fileUtils.writeFileForSlpk)(slpkSharedPath, sharedDataStr, 'sharedResource.json');
1253
+ return _context14.abrupt("return");
1272
1254
 
1273
- case 7:
1274
- this.fileMap["".concat(slpkChildPath, "/shared/sharedResource.json.gz")] = _context14.sent;
1275
- _context14.next = 13;
1276
- break;
1255
+ case 2:
1256
+ sharedResources.nodePath = nodePath;
1257
+ sharedData = (0, _jsonMapTransform.default)(sharedResources, (0, _sharedResources.SHARED_RESOURCES)());
1258
+ sharedDataStr = JSON.stringify(sharedData);
1277
1259
 
1278
- case 10:
1279
- sharedPath = (0, _path.join)(childPath, 'shared/');
1280
- _context14.next = 13;
1281
- return (0, _fileUtils.writeFile)(sharedPath, sharedDataStr);
1260
+ if (this.options.slpk) {
1261
+ slpkSharedPath = (0, _path.join)(childPath, 'shared');
1262
+ this.writeQueue.enqueue({
1263
+ archiveKey: "".concat(slpkChildPath, "/shared/sharedResource.json.gz"),
1264
+ writePromise: (0, _fileUtils.writeFileForSlpk)(slpkSharedPath, sharedDataStr, 'sharedResource.json')
1265
+ });
1266
+ } else {
1267
+ sharedPath = (0, _path.join)(childPath, 'shared/');
1268
+ this.writeQueue.enqueue({
1269
+ writePromise: (0, _fileUtils.writeFile)(sharedPath, sharedDataStr)
1270
+ });
1271
+ }
1282
1272
 
1283
- case 13:
1273
+ case 6:
1284
1274
  case "end":
1285
1275
  return _context14.stop();
1286
1276
  }
@@ -1335,7 +1325,7 @@ var I3SConverter = function () {
1335
1325
  });
1336
1326
  _context15.t1 = Uint8Array;
1337
1327
  _context15.next = 15;
1338
- return (0, _core.encode)(texture.image, _textures.KTX2BasisUniversalTextureWriter);
1328
+ return (0, _core.encode)(texture.image, _textures.KTX2BasisWriter);
1339
1329
 
1340
1330
  case 15:
1341
1331
  _context15.t2 = _context15.sent;
@@ -1404,27 +1394,21 @@ var I3SConverter = function () {
1404
1394
  while (1) {
1405
1395
  switch (_context16.prev = _context16.next) {
1406
1396
  case 0:
1407
- if (!this.options.slpk) {
1408
- _context16.next = 8;
1409
- break;
1397
+ if (this.options.slpk) {
1398
+ slpkTexturePath = (0, _path.join)(childPath, 'textures');
1399
+ compress = false;
1400
+ this.writeQueue.enqueue({
1401
+ archiveKey: "".concat(slpkChildPath, "/textures/").concat(name, ".").concat(format),
1402
+ writePromise: (0, _fileUtils.writeFileForSlpk)(slpkTexturePath, textureData, "".concat(name, ".").concat(format), compress)
1403
+ });
1404
+ } else {
1405
+ texturePath = (0, _path.join)(childPath, "textures/".concat(name, "/"));
1406
+ this.writeQueue.enqueue({
1407
+ writePromise: (0, _fileUtils.writeFile)(texturePath, textureData, "index.".concat(format))
1408
+ });
1410
1409
  }
1411
1410
 
1412
- slpkTexturePath = (0, _path.join)(childPath, 'textures');
1413
- compress = false;
1414
- _context16.next = 5;
1415
- return (0, _fileUtils.writeFileForSlpk)(slpkTexturePath, textureData, "".concat(name, ".").concat(format), compress);
1416
-
1417
- case 5:
1418
- this.fileMap["".concat(slpkChildPath, "/textures/").concat(name, ".").concat(format)] = _context16.sent;
1419
- _context16.next = 11;
1420
- break;
1421
-
1422
- case 8:
1423
- texturePath = (0, _path.join)(childPath, "textures/".concat(name, "/"));
1424
- _context16.next = 11;
1425
- return (0, _fileUtils.writeFile)(texturePath, textureData, "index.".concat(format));
1426
-
1427
- case 11:
1411
+ case 1:
1428
1412
  case "end":
1429
1413
  return _context16.stop();
1430
1414
  }
@@ -1441,55 +1425,47 @@ var I3SConverter = function () {
1441
1425
  }, {
1442
1426
  key: "_writeAttributes",
1443
1427
  value: function () {
1444
- var _writeAttributes2 = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee17(attributes, childPath, slpkChildPath) {
1428
+ var _writeAttributes2 = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee17() {
1445
1429
  var _this$layers4, _this$layers4$attribu;
1446
1430
 
1447
- var index, folderName, fileBuffer, slpkAttributesPath, attributesPath;
1431
+ var attributes,
1432
+ childPath,
1433
+ slpkChildPath,
1434
+ index,
1435
+ folderName,
1436
+ fileBuffer,
1437
+ slpkAttributesPath,
1438
+ attributesPath,
1439
+ _args17 = arguments;
1448
1440
  return _regenerator.default.wrap(function _callee17$(_context17) {
1449
1441
  while (1) {
1450
1442
  switch (_context17.prev = _context17.next) {
1451
1443
  case 0:
1452
- if (!(attributes.length && (_this$layers4 = this.layers0) !== null && _this$layers4 !== void 0 && (_this$layers4$attribu = _this$layers4.attributeStorageInfo) !== null && _this$layers4$attribu !== void 0 && _this$layers4$attribu.length)) {
1453
- _context17.next = 18;
1454
- break;
1455
- }
1456
-
1457
- index = 0;
1458
-
1459
- case 2:
1460
- if (!(index < attributes.length)) {
1461
- _context17.next = 18;
1462
- break;
1463
- }
1464
-
1465
- folderName = this.layers0.attributeStorageInfo[index].key;
1466
- fileBuffer = new Uint8Array(attributes[index]);
1467
-
1468
- if (!this.options.slpk) {
1469
- _context17.next = 12;
1470
- break;
1444
+ attributes = _args17.length > 0 && _args17[0] !== undefined ? _args17[0] : [];
1445
+ childPath = _args17.length > 1 ? _args17[1] : undefined;
1446
+ slpkChildPath = _args17.length > 2 ? _args17[2] : undefined;
1447
+
1448
+ if (attributes !== null && attributes !== void 0 && attributes.length && (_this$layers4 = this.layers0) !== null && _this$layers4 !== void 0 && (_this$layers4$attribu = _this$layers4.attributeStorageInfo) !== null && _this$layers4$attribu !== void 0 && _this$layers4$attribu.length) {
1449
+ for (index = 0; index < attributes.length; index++) {
1450
+ folderName = this.layers0.attributeStorageInfo[index].key;
1451
+ fileBuffer = new Uint8Array(attributes[index]);
1452
+
1453
+ if (this.options.slpk) {
1454
+ slpkAttributesPath = (0, _path.join)(childPath, 'attributes', folderName);
1455
+ this.writeQueue.enqueue({
1456
+ archiveKey: "".concat(slpkChildPath, "/attributes/").concat(folderName, ".bin.gz"),
1457
+ writePromise: (0, _fileUtils.writeFileForSlpk)(slpkAttributesPath, fileBuffer, '0.bin')
1458
+ });
1459
+ } else {
1460
+ attributesPath = (0, _path.join)(childPath, "attributes/".concat(folderName, "/0"));
1461
+ this.writeQueue.enqueue({
1462
+ writePromise: (0, _fileUtils.writeFile)(attributesPath, fileBuffer, 'index.bin')
1463
+ });
1464
+ }
1465
+ }
1471
1466
  }
1472
1467
 
1473
- slpkAttributesPath = (0, _path.join)(childPath, 'attributes', folderName);
1474
- _context17.next = 9;
1475
- return (0, _fileUtils.writeFileForSlpk)(slpkAttributesPath, fileBuffer, '0.bin');
1476
-
1477
- case 9:
1478
- this.fileMap["".concat(slpkChildPath, "/attributes/").concat(folderName, ".bin.gz")] = _context17.sent;
1479
- _context17.next = 15;
1480
- break;
1481
-
1482
- case 12:
1483
- attributesPath = (0, _path.join)(childPath, "attributes/".concat(folderName, "/0"));
1484
- _context17.next = 15;
1485
- return (0, _fileUtils.writeFile)(attributesPath, fileBuffer, 'index.bin');
1486
-
1487
- case 15:
1488
- index++;
1489
- _context17.next = 2;
1490
- break;
1491
-
1492
- case 18:
1468
+ case 4:
1493
1469
  case "end":
1494
1470
  return _context17.stop();
1495
1471
  }
@@ -1497,7 +1473,7 @@ var I3SConverter = function () {
1497
1473
  }, _callee17, this);
1498
1474
  }));
1499
1475
 
1500
- function _writeAttributes(_x39, _x40, _x41) {
1476
+ function _writeAttributes() {
1501
1477
  return _writeAttributes2.apply(this, arguments);
1502
1478
  }
1503
1479
 
@@ -1747,7 +1723,7 @@ var I3SConverter = function () {
1747
1723
  }, _callee18, this);
1748
1724
  }));
1749
1725
 
1750
- function _finishConversion(_x42) {
1726
+ function _finishConversion(_x39) {
1751
1727
  return _finishConversion2.apply(this, arguments);
1752
1728
  }
1753
1729
 
@@ -1864,6 +1840,65 @@ var I3SConverter = function () {
1864
1840
 
1865
1841
  return ['b3dm', 'glTF'].includes(sourceRootTile === null || sourceRootTile === void 0 ? void 0 : (_sourceRootTile$conte = sourceRootTile.content) === null || _sourceRootTile$conte === void 0 ? void 0 : _sourceRootTile$conte.type);
1866
1842
  }
1843
+ }, {
1844
+ key: "loadWorkers",
1845
+ value: function () {
1846
+ var _loadWorkers = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee21() {
1847
+ var url, _sourceResponse, _source, i3sAttributesWorkerUrl, sourceResponse, source;
1848
+
1849
+ return _regenerator.default.wrap(function _callee21$(_context21) {
1850
+ while (1) {
1851
+ switch (_context21.prev = _context21.next) {
1852
+ case 0:
1853
+ console.log("Loading workers source...");
1854
+
1855
+ if (!this.options.draco) {
1856
+ _context21.next = 10;
1857
+ break;
1858
+ }
1859
+
1860
+ url = (0, _workerUtils.getWorkerURL)(_draco.DracoWriterWorker, _objectSpread({}, (0, _core.getLoaderOptions)()));
1861
+ _context21.next = 5;
1862
+ return (0, _core.fetchFile)(url);
1863
+
1864
+ case 5:
1865
+ _sourceResponse = _context21.sent;
1866
+ _context21.next = 8;
1867
+ return _sourceResponse.text();
1868
+
1869
+ case 8:
1870
+ _source = _context21.sent;
1871
+ this.workerSource.draco = _source;
1872
+
1873
+ case 10:
1874
+ i3sAttributesWorkerUrl = (0, _workerUtils.getWorkerURL)(_i3sAttributesWorker.I3SAttributesWorker, _objectSpread({}, (0, _core.getLoaderOptions)()));
1875
+ _context21.next = 13;
1876
+ return (0, _core.fetchFile)(i3sAttributesWorkerUrl);
1877
+
1878
+ case 13:
1879
+ sourceResponse = _context21.sent;
1880
+ _context21.next = 16;
1881
+ return sourceResponse.text();
1882
+
1883
+ case 16:
1884
+ source = _context21.sent;
1885
+ this.workerSource.I3SAttributes = source;
1886
+ console.log("Loading workers source completed!");
1887
+
1888
+ case 19:
1889
+ case "end":
1890
+ return _context21.stop();
1891
+ }
1892
+ }
1893
+ }, _callee21, this);
1894
+ }));
1895
+
1896
+ function loadWorkers() {
1897
+ return _loadWorkers.apply(this, arguments);
1898
+ }
1899
+
1900
+ return loadWorkers;
1901
+ }()
1867
1902
  }]);
1868
1903
  return I3SConverter;
1869
1904
  }();