@loaders.gl/tile-converter 3.3.0-alpha.7 → 3.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (136) hide show
  1. package/dist/3d-tiles-attributes-worker.d.ts +2 -2
  2. package/dist/3d-tiles-attributes-worker.d.ts.map +1 -1
  3. package/dist/3d-tiles-attributes-worker.js +2 -2
  4. package/dist/3d-tiles-attributes-worker.js.map +3 -3
  5. package/dist/converter-cli.js +14 -2
  6. package/dist/converter.min.js +22 -22
  7. package/dist/deps-installer/deps-installer.d.ts.map +1 -1
  8. package/dist/deps-installer/deps-installer.js +8 -0
  9. package/dist/dist.min.js +1407 -1242
  10. package/dist/es5/3d-tiles-attributes-worker.js +1 -1
  11. package/dist/es5/3d-tiles-attributes-worker.js.map +1 -1
  12. package/dist/es5/converter-cli.js +14 -2
  13. package/dist/es5/converter-cli.js.map +1 -1
  14. package/dist/es5/deps-installer/deps-installer.js +13 -2
  15. package/dist/es5/deps-installer/deps-installer.js.map +1 -1
  16. package/dist/es5/i3s-attributes-worker.js +1 -1
  17. package/dist/es5/i3s-attributes-worker.js.map +1 -1
  18. package/dist/es5/i3s-converter/helpers/batch-ids-extensions.js.map +1 -1
  19. package/dist/es5/i3s-converter/helpers/geometry-attributes.js +16 -7
  20. package/dist/es5/i3s-converter/helpers/geometry-attributes.js.map +1 -1
  21. package/dist/es5/i3s-converter/helpers/geometry-converter.js +363 -113
  22. package/dist/es5/i3s-converter/helpers/geometry-converter.js.map +1 -1
  23. package/dist/es5/i3s-converter/helpers/gltf-attributes.js +6 -11
  24. package/dist/es5/i3s-converter/helpers/gltf-attributes.js.map +1 -1
  25. package/dist/es5/i3s-converter/helpers/node-index-document.js +517 -0
  26. package/dist/es5/i3s-converter/helpers/node-index-document.js.map +1 -0
  27. package/dist/es5/i3s-converter/helpers/node-pages.js +455 -173
  28. package/dist/es5/i3s-converter/helpers/node-pages.js.map +1 -1
  29. package/dist/es5/i3s-converter/i3s-converter.js +549 -618
  30. package/dist/es5/i3s-converter/i3s-converter.js.map +1 -1
  31. package/dist/es5/i3s-converter/json-templates/geometry-definitions.js +107 -0
  32. package/dist/es5/i3s-converter/json-templates/geometry-definitions.js.map +1 -0
  33. package/dist/es5/i3s-converter/json-templates/layers.js +2 -93
  34. package/dist/es5/i3s-converter/json-templates/layers.js.map +1 -1
  35. package/dist/es5/i3s-converter/json-templates/shared-resources.js +3 -3
  36. package/dist/es5/i3s-converter/json-templates/shared-resources.js.map +1 -1
  37. package/dist/es5/i3s-converter/types.js.map +1 -1
  38. package/dist/es5/lib/utils/file-utils.js +93 -9
  39. package/dist/es5/lib/utils/file-utils.js.map +1 -1
  40. package/dist/es5/lib/utils/write-queue.js +38 -25
  41. package/dist/es5/lib/utils/write-queue.js.map +1 -1
  42. package/dist/es5/pgm-loader.js +1 -1
  43. package/dist/es5/pgm-loader.js.map +1 -1
  44. package/dist/es5/workers/i3s-attributes-worker.js +1 -1
  45. package/dist/es5/workers/i3s-attributes-worker.js.map +1 -1
  46. package/dist/esm/3d-tiles-attributes-worker.js +1 -1
  47. package/dist/esm/3d-tiles-attributes-worker.js.map +1 -1
  48. package/dist/esm/converter-cli.js +14 -2
  49. package/dist/esm/converter-cli.js.map +1 -1
  50. package/dist/esm/deps-installer/deps-installer.js +9 -1
  51. package/dist/esm/deps-installer/deps-installer.js.map +1 -1
  52. package/dist/esm/i3s-attributes-worker.js +1 -1
  53. package/dist/esm/i3s-attributes-worker.js.map +1 -1
  54. package/dist/esm/i3s-converter/helpers/batch-ids-extensions.js.map +1 -1
  55. package/dist/esm/i3s-converter/helpers/geometry-attributes.js +16 -7
  56. package/dist/esm/i3s-converter/helpers/geometry-attributes.js.map +1 -1
  57. package/dist/esm/i3s-converter/helpers/geometry-converter.js +150 -40
  58. package/dist/esm/i3s-converter/helpers/geometry-converter.js.map +1 -1
  59. package/dist/esm/i3s-converter/helpers/gltf-attributes.js +6 -9
  60. package/dist/esm/i3s-converter/helpers/gltf-attributes.js.map +1 -1
  61. package/dist/esm/i3s-converter/helpers/node-index-document.js +202 -0
  62. package/dist/esm/i3s-converter/helpers/node-index-document.js.map +1 -0
  63. package/dist/esm/i3s-converter/helpers/node-pages.js +162 -76
  64. package/dist/esm/i3s-converter/helpers/node-pages.js.map +1 -1
  65. package/dist/esm/i3s-converter/i3s-converter.js +115 -220
  66. package/dist/esm/i3s-converter/i3s-converter.js.map +1 -1
  67. package/dist/esm/i3s-converter/json-templates/geometry-definitions.js +89 -0
  68. package/dist/esm/i3s-converter/json-templates/geometry-definitions.js.map +1 -0
  69. package/dist/esm/i3s-converter/json-templates/layers.js +2 -85
  70. package/dist/esm/i3s-converter/json-templates/layers.js.map +1 -1
  71. package/dist/esm/i3s-converter/json-templates/shared-resources.js +3 -3
  72. package/dist/esm/i3s-converter/json-templates/shared-resources.js.map +1 -1
  73. package/dist/esm/i3s-converter/types.js.map +1 -1
  74. package/dist/esm/lib/utils/file-utils.js +44 -3
  75. package/dist/esm/lib/utils/file-utils.js.map +1 -1
  76. package/dist/esm/lib/utils/write-queue.js +19 -10
  77. package/dist/esm/lib/utils/write-queue.js.map +1 -1
  78. package/dist/esm/pgm-loader.js +1 -1
  79. package/dist/esm/pgm-loader.js.map +1 -1
  80. package/dist/esm/workers/i3s-attributes-worker.js +1 -1
  81. package/dist/esm/workers/i3s-attributes-worker.js.map +1 -1
  82. package/dist/i3s-attributes-worker.d.ts +2 -2
  83. package/dist/i3s-attributes-worker.d.ts.map +1 -1
  84. package/dist/i3s-attributes-worker.js +2 -2
  85. package/dist/i3s-attributes-worker.js.map +2 -2
  86. package/dist/i3s-converter/helpers/batch-ids-extensions.d.ts +3 -3
  87. package/dist/i3s-converter/helpers/batch-ids-extensions.js +3 -3
  88. package/dist/i3s-converter/helpers/geometry-attributes.d.ts.map +1 -1
  89. package/dist/i3s-converter/helpers/geometry-attributes.js +16 -10
  90. package/dist/i3s-converter/helpers/geometry-converter.d.ts +8 -4
  91. package/dist/i3s-converter/helpers/geometry-converter.d.ts.map +1 -1
  92. package/dist/i3s-converter/helpers/geometry-converter.js +200 -44
  93. package/dist/i3s-converter/helpers/gltf-attributes.d.ts.map +1 -1
  94. package/dist/i3s-converter/helpers/gltf-attributes.js +2 -3
  95. package/dist/i3s-converter/helpers/node-index-document.d.ts +95 -0
  96. package/dist/i3s-converter/helpers/node-index-document.d.ts.map +1 -0
  97. package/dist/i3s-converter/helpers/node-index-document.js +250 -0
  98. package/dist/i3s-converter/helpers/node-pages.d.ts +78 -43
  99. package/dist/i3s-converter/helpers/node-pages.d.ts.map +1 -1
  100. package/dist/i3s-converter/helpers/node-pages.js +195 -94
  101. package/dist/i3s-converter/i3s-converter.d.ts +33 -58
  102. package/dist/i3s-converter/i3s-converter.d.ts.map +1 -1
  103. package/dist/i3s-converter/i3s-converter.js +122 -233
  104. package/dist/i3s-converter/json-templates/geometry-definitions.d.ts +7 -0
  105. package/dist/i3s-converter/json-templates/geometry-definitions.d.ts.map +1 -0
  106. package/dist/i3s-converter/json-templates/geometry-definitions.js +87 -0
  107. package/dist/i3s-converter/json-templates/layers.d.ts +1 -30
  108. package/dist/i3s-converter/json-templates/layers.d.ts.map +1 -1
  109. package/dist/i3s-converter/json-templates/layers.js +2 -86
  110. package/dist/i3s-converter/json-templates/shared-resources.js +3 -3
  111. package/dist/i3s-converter/types.d.ts +34 -8
  112. package/dist/i3s-converter/types.d.ts.map +1 -1
  113. package/dist/lib/utils/file-utils.d.ts +17 -1
  114. package/dist/lib/utils/file-utils.d.ts.map +1 -1
  115. package/dist/lib/utils/file-utils.js +64 -7
  116. package/dist/lib/utils/write-queue.d.ts +19 -3
  117. package/dist/lib/utils/write-queue.d.ts.map +1 -1
  118. package/dist/lib/utils/write-queue.js +18 -12
  119. package/dist/workers/i3s-attributes-worker.js +1 -1
  120. package/package.json +25 -20
  121. package/src/converter-cli.ts +22 -2
  122. package/src/deps-installer/deps-installer.ts +9 -0
  123. package/src/i3s-converter/helpers/batch-ids-extensions.ts +3 -3
  124. package/src/i3s-converter/helpers/geometry-attributes.ts +16 -11
  125. package/src/i3s-converter/helpers/geometry-converter.ts +217 -48
  126. package/src/i3s-converter/helpers/gltf-attributes.ts +2 -3
  127. package/src/i3s-converter/helpers/node-index-document.ts +315 -0
  128. package/src/i3s-converter/helpers/node-pages.ts +215 -110
  129. package/src/i3s-converter/i3s-converter.ts +170 -312
  130. package/src/i3s-converter/json-templates/geometry-definitions.ts +83 -0
  131. package/src/i3s-converter/json-templates/layers.ts +2 -91
  132. package/src/i3s-converter/json-templates/shared-resources.ts +3 -3
  133. package/src/i3s-converter/types.ts +29 -2
  134. package/src/lib/utils/file-utils.ts +62 -7
  135. package/src/lib/utils/write-queue.ts +36 -15
  136. package/src/workers/i3s-attributes-worker.ts +2 -1
@@ -8,7 +8,6 @@ Object.defineProperty(exports, "__esModule", {
8
8
  exports.default = void 0;
9
9
  var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
10
10
  var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
11
- var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
12
11
  var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
13
12
  var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
14
13
  var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
@@ -31,7 +30,7 @@ var _createSceneServerPath = require("./helpers/create-scene-server-path");
31
30
  var _lodConversionUtils = require("../lib/utils/lod-conversion-utils");
32
31
  var _pgmLoader = require("../pgm-loader");
33
32
  var _layers = require("./json-templates/layers");
34
- var _node = require("./json-templates/node");
33
+ var _geometryDefinitions = require("./json-templates/geometry-definitions");
35
34
  var _sharedResources = require("./json-templates/shared-resources");
36
35
  var _nodeDebug = require("./helpers/node-debug");
37
36
  var _textures = require("@loaders.gl/textures");
@@ -42,6 +41,7 @@ var _writeQueue = _interopRequireDefault(require("../lib/utils/write-queue"));
42
41
  var _i3sAttributesWorker = require("../i3s-attributes-worker");
43
42
  var _constants = require("../constants");
44
43
  var _featureAttributes = require("./helpers/feature-attributes");
44
+ var _nodeIndexDocument = require("./helpers/node-index-document");
45
45
  var _process$env;
46
46
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
47
47
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
@@ -66,6 +66,8 @@ var I3SConverter = function () {
66
66
  (0, _defineProperty2.default)(this, "layers0Path", void 0);
67
67
  (0, _defineProperty2.default)(this, "materialMap", void 0);
68
68
  (0, _defineProperty2.default)(this, "materialDefinitions", void 0);
69
+ (0, _defineProperty2.default)(this, "geometryMap", void 0);
70
+ (0, _defineProperty2.default)(this, "geometryConfigs", void 0);
69
71
  (0, _defineProperty2.default)(this, "vertexCounter", void 0);
70
72
  (0, _defineProperty2.default)(this, "layers0", void 0);
71
73
  (0, _defineProperty2.default)(this, "featuresHashArray", void 0);
@@ -82,11 +84,14 @@ var I3SConverter = function () {
82
84
  (0, _defineProperty2.default)(this, "layersHasTexture", void 0);
83
85
  (0, _defineProperty2.default)(this, "workerSource", {});
84
86
  (0, _defineProperty2.default)(this, "writeQueue", new _writeQueue.default());
85
- this.nodePages = new _nodePages.default(_fileUtils.writeFile, HARDCODED_NODES_PER_PAGE);
87
+ (0, _defineProperty2.default)(this, "compressList", null);
88
+ this.nodePages = new _nodePages.default(_fileUtils.writeFile, HARDCODED_NODES_PER_PAGE, this);
86
89
  this.options = {};
87
90
  this.layers0Path = '';
88
91
  this.materialMap = new Map();
89
92
  this.materialDefinitions = [];
93
+ this.geometryMap = new Map();
94
+ this.geometryConfigs = [];
90
95
  this.vertexCounter = 0;
91
96
  this.layers0 = null;
92
97
  this.featuresHashArray = [];
@@ -98,13 +103,14 @@ var I3SConverter = function () {
98
103
  this.generateTextures = false;
99
104
  this.generateBoundingVolumes = false;
100
105
  this.layersHasTexture = false;
106
+ this.compressList = null;
101
107
  }
102
108
 
103
109
  (0, _createClass2.default)(I3SConverter, [{
104
110
  key: "convert",
105
111
  value: function () {
106
112
  var _convert = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee(options) {
107
- var tilesetName, slpk, egmFilePath, inputUrl, validate, outputPath, draco, sevenZipExe, maxDepth, token, generateTextures, generateBoundingVolumes, _sourceTilesetJson$ro, _sourceTilesetJson$ro2, preloadOptions, tilesetOptions, sourceTilesetJson, workerFarm;
113
+ var tilesetName, slpk, egmFilePath, inputUrl, validate, outputPath, _options$draco, draco, sevenZipExe, maxDepth, token, generateTextures, generateBoundingVolumes, _options$instantNodeW, instantNodeWriting, _options$mergeMateria, mergeMaterials, _sourceTilesetJson$ro, _sourceTilesetJson$ro2, preloadOptions, tilesetOptions, sourceTilesetJson, workerFarm;
108
114
  return _regenerator.default.wrap(function _callee$(_context) {
109
115
  while (1) {
110
116
  switch (_context.prev = _context.next) {
@@ -117,7 +123,7 @@ var I3SConverter = function () {
117
123
  return _context.abrupt("return", _constants.BROWSER_ERROR_MESSAGE);
118
124
  case 3:
119
125
  this.conversionStartTime = _process.default.hrtime();
120
- tilesetName = options.tilesetName, slpk = options.slpk, egmFilePath = options.egmFilePath, inputUrl = options.inputUrl, validate = options.validate, outputPath = options.outputPath, draco = options.draco, sevenZipExe = options.sevenZipExe, maxDepth = options.maxDepth, token = options.token, generateTextures = options.generateTextures, generateBoundingVolumes = options.generateBoundingVolumes;
126
+ tilesetName = options.tilesetName, slpk = options.slpk, egmFilePath = options.egmFilePath, inputUrl = options.inputUrl, validate = options.validate, outputPath = options.outputPath, _options$draco = options.draco, draco = _options$draco === void 0 ? true : _options$draco, sevenZipExe = options.sevenZipExe, maxDepth = options.maxDepth, token = options.token, generateTextures = options.generateTextures, generateBoundingVolumes = options.generateBoundingVolumes, _options$instantNodeW = options.instantNodeWriting, instantNodeWriting = _options$instantNodeW === void 0 ? false : _options$instantNodeW, _options$mergeMateria = options.mergeMaterials, mergeMaterials = _options$mergeMateria === void 0 ? true : _options$mergeMateria;
121
127
  this.options = {
122
128
  maxDepth: maxDepth,
123
129
  slpk: slpk,
@@ -125,8 +131,11 @@ var I3SConverter = function () {
125
131
  egmFilePath: egmFilePath,
126
132
  draco: draco,
127
133
  token: token,
128
- inputUrl: inputUrl
134
+ inputUrl: inputUrl,
135
+ instantNodeWriting: instantNodeWriting,
136
+ mergeMaterials: mergeMaterials
129
137
  };
138
+ this.compressList = this.options.instantNodeWriting && [] || null;
130
139
  this.validate = Boolean(validate);
131
140
  this.Loader = inputUrl.indexOf(CESIUM_DATASET_PREFIX) !== -1 ? _dTiles.CesiumIonLoader : _dTiles.Tiles3DLoader;
132
141
  this.generateTextures = Boolean(generateTextures);
@@ -134,22 +143,22 @@ var I3SConverter = function () {
134
143
  this.writeQueue = new _writeQueue.default();
135
144
  this.writeQueue.startListening();
136
145
  console.log('Loading egm file...');
137
- _context.next = 15;
146
+ _context.next = 16;
138
147
  return (0, _core.load)(egmFilePath, _pgmLoader.PGMLoader);
139
- case 15:
148
+ case 16:
140
149
  this.geoidHeightModel = _context.sent;
141
150
  console.log('Loading egm file completed!');
142
151
 
143
152
  if (slpk) {
144
153
  this.nodePages.useWriteFunction(_fileUtils.writeFileForSlpk);
145
154
  }
146
- _context.next = 20;
155
+ _context.next = 21;
147
156
  return this.loadWorkers();
148
- case 20:
149
- _context.prev = 20;
150
- _context.next = 23;
157
+ case 21:
158
+ _context.prev = 21;
159
+ _context.next = 24;
151
160
  return this._fetchPreloadOptions();
152
- case 23:
161
+ case 24:
153
162
  preloadOptions = _context.sent;
154
163
  tilesetOptions = {
155
164
  loadOptions: {
@@ -173,37 +182,37 @@ var I3SConverter = function () {
173
182
  };
174
183
  }
175
184
  Object.assign(tilesetOptions, preloadOptions);
176
- _context.next = 29;
185
+ _context.next = 30;
177
186
  return (0, _core.load)(inputUrl, this.Loader, tilesetOptions.loadOptions);
178
- case 29:
187
+ case 30:
179
188
  sourceTilesetJson = _context.sent;
180
189
  this.sourceTileset = new _tiles.Tileset3D(sourceTilesetJson, tilesetOptions);
181
- _context.next = 33;
190
+ _context.next = 34;
182
191
  return this._createAndSaveTileset(outputPath, tilesetName, sourceTilesetJson === null || sourceTilesetJson === void 0 ? void 0 : (_sourceTilesetJson$ro = sourceTilesetJson.root) === null || _sourceTilesetJson$ro === void 0 ? void 0 : (_sourceTilesetJson$ro2 = _sourceTilesetJson$ro.boundingVolume) === null || _sourceTilesetJson$ro2 === void 0 ? void 0 : _sourceTilesetJson$ro2.region);
183
- case 33:
184
- _context.next = 35;
192
+ case 34:
193
+ _context.next = 36;
185
194
  return this._finishConversion({
186
195
  slpk: Boolean(slpk),
187
196
  outputPath: outputPath,
188
197
  tilesetName: tilesetName
189
198
  });
190
- case 35:
199
+ case 36:
191
200
  return _context.abrupt("return", sourceTilesetJson);
192
- case 38:
193
- _context.prev = 38;
194
- _context.t0 = _context["catch"](20);
201
+ case 39:
202
+ _context.prev = 39;
203
+ _context.t0 = _context["catch"](21);
195
204
  throw _context.t0;
196
- case 41:
197
- _context.prev = 41;
205
+ case 42:
206
+ _context.prev = 42;
198
207
  workerFarm = _workerUtils.WorkerFarm.getWorkerFarm({});
199
208
  workerFarm.destroy();
200
- return _context.finish(41);
201
- case 45:
209
+ return _context.finish(42);
210
+ case 46:
202
211
  case "end":
203
212
  return _context.stop();
204
213
  }
205
214
  }
206
- }, _callee, this, [[20, 38, 41, 45]]);
215
+ }, _callee, this, [[21, 39, 42, 46]]);
207
216
  }));
208
217
  function convert(_x) {
209
218
  return _convert.apply(this, arguments);
@@ -214,7 +223,8 @@ var I3SConverter = function () {
214
223
  key: "_createAndSaveTileset",
215
224
  value: function () {
216
225
  var _createAndSaveTileset2 = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee2(outputPath, tilesetName, boundingVolumeRegion) {
217
- var tilesetPath, sourceRootTile, boundingVolumes, parentId, isCreateSlpk, root0;
226
+ var _this = this;
227
+ var tilesetPath, sourceRootTile, boundingVolumes, rootNode, _iterator, _step, filePath;
218
228
  return _regenerator.default.wrap(function _callee2$(_context2) {
219
229
  while (1) {
220
230
  switch (_context2.prev = _context2.next) {
@@ -236,44 +246,81 @@ var I3SConverter = function () {
236
246
  this.materialMap = new Map();
237
247
  sourceRootTile = this.sourceTileset.root;
238
248
  boundingVolumes = (0, _coordinateConverter.createBoundingVolumes)(sourceRootTile, this.geoidHeightModel);
239
- parentId = this.nodePages.push({
249
+ _context2.next = 16;
250
+ return this.nodePages.push({
240
251
  index: 0,
241
252
  lodThreshold: 0,
242
253
  obb: boundingVolumes.obb,
243
254
  children: []
244
255
  });
245
- isCreateSlpk = this.options.slpk;
246
- root0 = this._formRootNodeIndexDocument(boundingVolumes);
247
- _context2.next = 19;
248
- return this._convertNodesTree(root0, sourceRootTile, parentId, boundingVolumes);
249
- case 19:
256
+ case 16:
257
+ _context2.next = 18;
258
+ return _nodeIndexDocument.NodeIndexDocument.createRootNode(boundingVolumes, this);
259
+ case 18:
260
+ rootNode = _context2.sent;
261
+ _context2.next = 21;
262
+ return this._convertNodesTree(rootNode, sourceRootTile);
263
+ case 21:
250
264
  this.layers0.materialDefinitions = this.materialDefinitions;
265
+ this.layers0.geometryDefinitions = (0, _jsonMapTransform.default)(this.geometryConfigs.map(function (config) {
266
+ return {
267
+ geometryConfig: _objectSpread(_objectSpread({}, config), {}, {
268
+ draco: _this.options.draco
269
+ })
270
+ };
271
+ }), (0, _geometryDefinitions.GEOMETRY_DEFINITION)());
251
272
  if (this.layersHasTexture === false) {
252
273
  this.layers0.store.defaultGeometrySchema.ordering = this.layers0.store.defaultGeometrySchema.ordering.filter(function (attribute) {
253
274
  return attribute !== 'uv0';
254
275
  });
255
276
  }
256
- _context2.next = 23;
257
- return this._writeLayers0();
258
- case 23:
259
- (0, _createSceneServerPath.createSceneServerPath)(tilesetName, this.layers0, tilesetPath);
260
277
  _context2.next = 26;
261
- return this._writeNodeIndexDocument(root0, 'root', (0, _path.join)(this.layers0Path, 'nodes', 'root'));
278
+ return this._writeLayers0();
262
279
  case 26:
263
- _context2.next = 28;
264
- return this.nodePages.save(this.layers0Path, this.writeQueue, isCreateSlpk);
265
- case 28:
280
+ (0, _createSceneServerPath.createSceneServerPath)(tilesetName, this.layers0, tilesetPath);
281
+ _iterator = _createForOfIteratorHelper(this.compressList || []);
282
+ _context2.prev = 28;
283
+ _iterator.s();
284
+ case 30:
285
+ if ((_step = _iterator.n()).done) {
286
+ _context2.next = 38;
287
+ break;
288
+ }
289
+ filePath = _step.value;
290
+ _context2.next = 34;
291
+ return (0, _compressUtil.compressFileWithGzip)(filePath);
292
+ case 34:
293
+ _context2.next = 36;
294
+ return (0, _fileUtils.removeFile)(filePath);
295
+ case 36:
266
296
  _context2.next = 30;
297
+ break;
298
+ case 38:
299
+ _context2.next = 43;
300
+ break;
301
+ case 40:
302
+ _context2.prev = 40;
303
+ _context2.t1 = _context2["catch"](28);
304
+ _iterator.e(_context2.t1);
305
+ case 43:
306
+ _context2.prev = 43;
307
+ _iterator.f();
308
+ return _context2.finish(43);
309
+ case 46:
310
+ _context2.next = 48;
311
+ return this.nodePages.save();
312
+ case 48:
313
+ _context2.next = 50;
267
314
  return this.writeQueue.finalize();
268
- case 30:
269
- _context2.next = 32;
315
+ case 50:
316
+ _context2.next = 52;
270
317
  return this._createSlpk(tilesetPath);
271
- case 32:
318
+ case 52:
272
319
  case "end":
273
320
  return _context2.stop();
274
321
  }
275
322
  }
276
- }, _callee2, this, [[1, 6]]);
323
+ }, _callee2, this, [[1, 6], [28, 40, 43, 46]]);
277
324
  }));
278
325
  function _createAndSaveTileset(_x2, _x3, _x4) {
279
326
  return _createAndSaveTileset2.apply(this, arguments);
@@ -309,32 +356,11 @@ var I3SConverter = function () {
309
356
  this.layers0 = (0, _jsonMapTransform.default)(layers0data, (0, _layers.LAYERS)());
310
357
  }
311
358
 
312
- }, {
313
- key: "_formRootNodeIndexDocument",
314
- value:
315
- function _formRootNodeIndexDocument(boundingVolumes) {
316
- var root0data = _objectSpread(_objectSpread({
317
- version: "{".concat((0, _uuid.v4)().toUpperCase(), "}"),
318
- id: 'root',
319
- level: 0,
320
- lodSelection: [{
321
- metricType: 'maxScreenThresholdSQ',
322
- maxError: 0
323
- }, {
324
- metricType: 'maxScreenThreshold',
325
- maxError: 0
326
- }]
327
- }, boundingVolumes), {}, {
328
- children: []
329
- });
330
- return (0, _jsonMapTransform.default)(root0data, (0, _node.NODE)());
331
- }
332
-
333
359
  }, {
334
360
  key: "_convertNodesTree",
335
361
  value: function () {
336
- var _convertNodesTree2 = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee3(root0, sourceRootTile, parentId, boundingVolumes) {
337
- var _yield$this$_createNo, _yield$this$_createNo2, child, childPath;
362
+ var _convertNodesTree2 = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee3(rootNode, sourceRootTile) {
363
+ var childNodes, _iterator2, _step2, childNode;
338
364
  return _regenerator.default.wrap(function _callee3$(_context3) {
339
365
  while (1) {
340
366
  switch (_context3.prev = _context3.next) {
@@ -343,60 +369,65 @@ var I3SConverter = function () {
343
369
  return this.sourceTileset._loadTile(sourceRootTile);
344
370
  case 2:
345
371
  if (!this.isContentSupported(sourceRootTile)) {
346
- _context3.next = 20;
372
+ _context3.next = 27;
347
373
  break;
348
374
  }
349
- root0.children = root0.children || [];
350
- root0.children.push(_objectSpread({
351
- id: '1',
352
- href: './1'
353
- }, boundingVolumes));
354
- _context3.next = 7;
355
- return this._createNode(root0, sourceRootTile, parentId, 0);
356
- case 7:
357
- _yield$this$_createNo = _context3.sent;
358
- _yield$this$_createNo2 = (0, _slicedToArray2.default)(_yield$this$_createNo, 1);
359
- child = _yield$this$_createNo2[0];
360
- childPath = (0, _path.join)(this.layers0Path, 'nodes', child.path);
361
- if (!this.options.slpk) {
362
- _context3.next = 16;
375
+ _context3.next = 5;
376
+ return this._createNode(rootNode, sourceRootTile, 0);
377
+ case 5:
378
+ childNodes = _context3.sent;
379
+ _iterator2 = _createForOfIteratorHelper(childNodes);
380
+ _context3.prev = 7;
381
+ _iterator2.s();
382
+ case 9:
383
+ if ((_step2 = _iterator2.n()).done) {
384
+ _context3.next = 15;
363
385
  break;
364
386
  }
365
- _context3.next = 14;
366
- return this.writeQueue.enqueue({
367
- archiveKey: 'nodes/1/3dNodeIndexDocument.json.gz',
368
- writePromise: (0, _fileUtils.writeFileForSlpk)(childPath, JSON.stringify(child), '3dNodeIndexDocument.json')
369
- });
370
- case 14:
371
- _context3.next = 18;
387
+ childNode = _step2.value;
388
+ _context3.next = 13;
389
+ return childNode.save();
390
+ case 13:
391
+ _context3.next = 9;
372
392
  break;
373
- case 16:
374
- _context3.next = 18;
375
- return this.writeQueue.enqueue({
376
- writePromise: (0, _fileUtils.writeFile)(childPath, JSON.stringify(child))
377
- });
378
- case 18:
379
- _context3.next = 22;
393
+ case 15:
394
+ _context3.next = 20;
380
395
  break;
396
+ case 17:
397
+ _context3.prev = 17;
398
+ _context3.t0 = _context3["catch"](7);
399
+ _iterator2.e(_context3.t0);
381
400
  case 20:
382
- _context3.next = 22;
401
+ _context3.prev = 20;
402
+ _iterator2.f();
403
+ return _context3.finish(20);
404
+ case 23:
405
+ _context3.next = 25;
406
+ return rootNode.addChildren(childNodes);
407
+ case 25:
408
+ _context3.next = 29;
409
+ break;
410
+ case 27:
411
+ _context3.next = 29;
383
412
  return this._addChildrenWithNeighborsAndWriteFile({
384
- parentNode: root0,
413
+ parentNode: rootNode,
385
414
  sourceTiles: sourceRootTile.children,
386
- parentId: parentId,
387
415
  level: 1
388
416
  });
389
- case 22:
390
- _context3.next = 24;
417
+ case 29:
418
+ _context3.next = 31;
391
419
  return sourceRootTile.unloadContent();
392
- case 24:
420
+ case 31:
421
+ _context3.next = 33;
422
+ return rootNode.save();
423
+ case 33:
393
424
  case "end":
394
425
  return _context3.stop();
395
426
  }
396
427
  }
397
- }, _callee3, this);
428
+ }, _callee3, this, [[7, 17, 20, 23]]);
398
429
  }));
399
- function _convertNodesTree(_x5, _x6, _x7, _x8) {
430
+ function _convertNodesTree(_x5, _x6) {
400
431
  return _convertNodesTree2.apply(this, arguments);
401
432
  }
402
433
  return _convertNodesTree;
@@ -405,6 +436,7 @@ var I3SConverter = function () {
405
436
  key: "_writeLayers0",
406
437
  value: function () {
407
438
  var _writeLayers = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee4() {
439
+ var _this2 = this;
408
440
  return _regenerator.default.wrap(function _callee4$(_context4) {
409
441
  while (1) {
410
442
  switch (_context4.prev = _context4.next) {
@@ -416,7 +448,9 @@ var I3SConverter = function () {
416
448
  _context4.next = 3;
417
449
  return this.writeQueue.enqueue({
418
450
  archiveKey: '3dSceneLayer.json.gz',
419
- writePromise: (0, _fileUtils.writeFileForSlpk)(this.layers0Path, JSON.stringify(this.layers0), '3dSceneLayer.json')
451
+ writePromise: function writePromise() {
452
+ return (0, _fileUtils.writeFileForSlpk)(_this2.layers0Path, JSON.stringify(_this2.layers0), '3dSceneLayer.json');
453
+ }
420
454
  });
421
455
  case 3:
422
456
  _context4.next = 7;
@@ -424,7 +458,9 @@ var I3SConverter = function () {
424
458
  case 5:
425
459
  _context4.next = 7;
426
460
  return this.writeQueue.enqueue({
427
- writePromise: (0, _fileUtils.writeFile)(this.layers0Path, JSON.stringify(this.layers0))
461
+ writePromise: function writePromise() {
462
+ return (0, _fileUtils.writeFile)(_this2.layers0Path, JSON.stringify(_this2.layers0));
463
+ }
428
464
  });
429
465
  case 7:
430
466
  case "end":
@@ -438,78 +474,41 @@ var I3SConverter = function () {
438
474
  }
439
475
  return _writeLayers0;
440
476
  }()
441
- }, {
442
- key: "_writeNodeIndexDocument",
443
- value: function () {
444
- var _writeNodeIndexDocument2 = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee5(root0, nodePath, rootPath) {
445
- return _regenerator.default.wrap(function _callee5$(_context5) {
446
- while (1) {
447
- switch (_context5.prev = _context5.next) {
448
- case 0:
449
- if (!this.options.slpk) {
450
- _context5.next = 5;
451
- break;
452
- }
453
- _context5.next = 3;
454
- return this.writeQueue.enqueue({
455
- archiveKey: "nodes/".concat(nodePath, "/3dNodeIndexDocument.json.gz"),
456
- writePromise: (0, _fileUtils.writeFileForSlpk)(rootPath, JSON.stringify(root0), '3dNodeIndexDocument.json')
457
- });
458
- case 3:
459
- _context5.next = 7;
460
- break;
461
- case 5:
462
- _context5.next = 7;
463
- return this.writeQueue.enqueue({
464
- writePromise: (0, _fileUtils.writeFile)(rootPath, JSON.stringify(root0))
465
- });
466
- case 7:
467
- case "end":
468
- return _context5.stop();
469
- }
470
- }
471
- }, _callee5, this);
472
- }));
473
- function _writeNodeIndexDocument(_x9, _x10, _x11) {
474
- return _writeNodeIndexDocument2.apply(this, arguments);
475
- }
476
- return _writeNodeIndexDocument;
477
- }()
478
477
  }, {
479
478
  key: "_createSlpk",
480
479
  value: function () {
481
- var _createSlpk2 = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee6(tilesetPath) {
480
+ var _createSlpk2 = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee5(tilesetPath) {
482
481
  var slpkTilesetPath, slpkFileName;
483
- return _regenerator.default.wrap(function _callee6$(_context6) {
482
+ return _regenerator.default.wrap(function _callee5$(_context5) {
484
483
  while (1) {
485
- switch (_context6.prev = _context6.next) {
484
+ switch (_context5.prev = _context5.next) {
486
485
  case 0:
487
486
  if (!this.options.slpk) {
488
- _context6.next = 12;
487
+ _context5.next = 12;
489
488
  break;
490
489
  }
491
490
  slpkTilesetPath = (0, _path.join)(tilesetPath, 'SceneServer', 'layers', '0');
492
491
  slpkFileName = "".concat(tilesetPath, ".slpk");
493
- _context6.next = 5;
492
+ _context5.next = 5;
494
493
  return (0, _compressUtil.compressWithChildProcess)(slpkTilesetPath, slpkFileName, 0, '.', this.options.sevenZipExe);
495
494
  case 5:
496
- _context6.prev = 5;
497
- _context6.next = 8;
495
+ _context5.prev = 5;
496
+ _context5.next = 8;
498
497
  return (0, _fileUtils.removeDir)(tilesetPath);
499
498
  case 8:
500
- _context6.next = 12;
499
+ _context5.next = 12;
501
500
  break;
502
501
  case 10:
503
- _context6.prev = 10;
504
- _context6.t0 = _context6["catch"](5);
502
+ _context5.prev = 10;
503
+ _context5.t0 = _context5["catch"](5);
505
504
  case 12:
506
505
  case "end":
507
- return _context6.stop();
506
+ return _context5.stop();
508
507
  }
509
508
  }
510
- }, _callee6, this, [[5, 10]]);
509
+ }, _callee5, this, [[5, 10]]);
511
510
  }));
512
- function _createSlpk(_x12) {
511
+ function _createSlpk(_x7) {
513
512
  return _createSlpk2.apply(this, arguments);
514
513
  }
515
514
  return _createSlpk;
@@ -517,28 +516,24 @@ var I3SConverter = function () {
517
516
  }, {
518
517
  key: "_addChildrenWithNeighborsAndWriteFile",
519
518
  value: function () {
520
- var _addChildrenWithNeighborsAndWriteFile2 = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee7(data) {
521
- var childNodes;
522
- return _regenerator.default.wrap(function _callee7$(_context7) {
519
+ var _addChildrenWithNeighborsAndWriteFile2 = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee6(data) {
520
+ return _regenerator.default.wrap(function _callee6$(_context6) {
523
521
  while (1) {
524
- switch (_context7.prev = _context7.next) {
522
+ switch (_context6.prev = _context6.next) {
525
523
  case 0:
526
- childNodes = [];
527
- _context7.next = 3;
528
- return this._addChildren(_objectSpread(_objectSpread({}, data), {}, {
529
- childNodes: childNodes
530
- }));
531
- case 3:
532
- _context7.next = 5;
533
- return this._addNeighborsAndWriteFile(data.parentNode, childNodes);
534
- case 5:
524
+ _context6.next = 2;
525
+ return this._addChildren(data);
526
+ case 2:
527
+ _context6.next = 4;
528
+ return data.parentNode.addNeighbors();
529
+ case 4:
535
530
  case "end":
536
- return _context7.stop();
531
+ return _context6.stop();
537
532
  }
538
533
  }
539
- }, _callee7, this);
534
+ }, _callee6, this);
540
535
  }));
541
- function _addChildrenWithNeighborsAndWriteFile(_x13) {
536
+ function _addChildrenWithNeighborsAndWriteFile(_x8) {
542
537
  return _addChildrenWithNeighborsAndWriteFile2.apply(this, arguments);
543
538
  }
544
539
  return _addChildrenWithNeighborsAndWriteFile;
@@ -546,35 +541,33 @@ var I3SConverter = function () {
546
541
  }, {
547
542
  key: "convertNestedTileset",
548
543
  value: function () {
549
- var _convertNestedTileset = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee8(_ref) {
550
- var sourceTile, parentNode, childNodes, parentId, level;
551
- return _regenerator.default.wrap(function _callee8$(_context8) {
544
+ var _convertNestedTileset = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee7(_ref) {
545
+ var parentNode, sourceTile, level;
546
+ return _regenerator.default.wrap(function _callee7$(_context7) {
552
547
  while (1) {
553
- switch (_context8.prev = _context8.next) {
548
+ switch (_context7.prev = _context7.next) {
554
549
  case 0:
555
- sourceTile = _ref.sourceTile, parentNode = _ref.parentNode, childNodes = _ref.childNodes, parentId = _ref.parentId, level = _ref.level;
556
- _context8.next = 3;
550
+ parentNode = _ref.parentNode, sourceTile = _ref.sourceTile, level = _ref.level;
551
+ _context7.next = 3;
557
552
  return this.sourceTileset._loadTile(sourceTile);
558
553
  case 3:
559
- _context8.next = 5;
554
+ _context7.next = 5;
560
555
  return this._addChildren({
561
556
  parentNode: parentNode,
562
557
  sourceTiles: sourceTile.children,
563
- childNodes: childNodes,
564
- parentId: parentId,
565
558
  level: level + 1
566
559
  });
567
560
  case 5:
568
- _context8.next = 7;
561
+ _context7.next = 7;
569
562
  return sourceTile.unloadContent();
570
563
  case 7:
571
564
  case "end":
572
- return _context8.stop();
565
+ return _context7.stop();
573
566
  }
574
567
  }
575
- }, _callee8, this);
568
+ }, _callee7, this);
576
569
  }));
577
- function convertNestedTileset(_x14) {
570
+ function convertNestedTileset(_x9) {
578
571
  return _convertNestedTileset.apply(this, arguments);
579
572
  }
580
573
  return convertNestedTileset;
@@ -582,43 +575,27 @@ var I3SConverter = function () {
582
575
  }, {
583
576
  key: "convertNode",
584
577
  value: function () {
585
- var _convertNode = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee9(_ref2) {
586
- var sourceTile, parentNode, childNodes, parentId, level, children, _iterator, _step, child;
587
- return _regenerator.default.wrap(function _callee9$(_context9) {
578
+ var _convertNode = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee8(_ref2) {
579
+ var parentNode, sourceTile, level, childNodes;
580
+ return _regenerator.default.wrap(function _callee8$(_context8) {
588
581
  while (1) {
589
- switch (_context9.prev = _context9.next) {
582
+ switch (_context8.prev = _context8.next) {
590
583
  case 0:
591
- sourceTile = _ref2.sourceTile, parentNode = _ref2.parentNode, childNodes = _ref2.childNodes, parentId = _ref2.parentId, level = _ref2.level;
592
- _context9.next = 3;
593
- return this._createNode(parentNode, sourceTile, parentId, level);
584
+ parentNode = _ref2.parentNode, sourceTile = _ref2.sourceTile, level = _ref2.level;
585
+ _context8.next = 3;
586
+ return this._createNode(parentNode, sourceTile, level);
594
587
  case 3:
595
- children = _context9.sent;
596
- parentNode.children = parentNode.children || [];
597
- _iterator = _createForOfIteratorHelper(children);
598
- try {
599
- for (_iterator.s(); !(_step = _iterator.n()).done;) {
600
- child = _step.value;
601
- parentNode.children.push({
602
- id: child.id,
603
- href: "../".concat(child.path),
604
- obb: child.obb,
605
- mbs: child.mbs
606
- });
607
- childNodes.push(child);
608
- }
609
- } catch (err) {
610
- _iterator.e(err);
611
- } finally {
612
- _iterator.f();
613
- }
614
- case 7:
588
+ childNodes = _context8.sent;
589
+ _context8.next = 6;
590
+ return parentNode.addChildren(childNodes);
591
+ case 6:
615
592
  case "end":
616
- return _context9.stop();
593
+ return _context8.stop();
617
594
  }
618
595
  }
619
- }, _callee9, this);
596
+ }, _callee8, this);
620
597
  }));
621
- function convertNode(_x15) {
598
+ function convertNode(_x10) {
622
599
  return _convertNode.apply(this, arguments);
623
600
  }
624
601
  return convertNode;
@@ -626,188 +603,93 @@ var I3SConverter = function () {
626
603
  }, {
627
604
  key: "_addChildren",
628
605
  value: function () {
629
- var _addChildren2 = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee10(data) {
630
- var childNodes, sourceTiles, parentNode, parentId, level, promises, _iterator2, _step2, sourceTile;
631
- return _regenerator.default.wrap(function _callee10$(_context10) {
606
+ var _addChildren2 = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee9(data) {
607
+ var sourceTiles, parentNode, level, _iterator3, _step3, sourceTile;
608
+ return _regenerator.default.wrap(function _callee9$(_context9) {
632
609
  while (1) {
633
- switch (_context10.prev = _context10.next) {
610
+ switch (_context9.prev = _context9.next) {
634
611
  case 0:
635
- childNodes = data.childNodes, sourceTiles = data.sourceTiles, parentNode = data.parentNode, parentId = data.parentId, level = data.level;
612
+ sourceTiles = data.sourceTiles, parentNode = data.parentNode, level = data.level;
636
613
  if (!(this.options.maxDepth && level > this.options.maxDepth)) {
637
- _context10.next = 3;
614
+ _context9.next = 3;
638
615
  break;
639
616
  }
640
- return _context10.abrupt("return");
617
+ return _context9.abrupt("return");
641
618
  case 3:
642
- promises = [];
643
- _iterator2 = _createForOfIteratorHelper(sourceTiles);
644
- _context10.prev = 5;
645
- _iterator2.s();
646
- case 7:
647
- if ((_step2 = _iterator2.n()).done) {
648
- _context10.next = 15;
619
+ _iterator3 = _createForOfIteratorHelper(sourceTiles);
620
+ _context9.prev = 4;
621
+ _iterator3.s();
622
+ case 6:
623
+ if ((_step3 = _iterator3.n()).done) {
624
+ _context9.next = 18;
649
625
  break;
650
626
  }
651
- sourceTile = _step2.value;
652
- if (sourceTile.type === 'json') {
653
- promises.push(this.convertNestedTileset({
654
- sourceTile: sourceTile,
655
- parentNode: parentNode,
656
- childNodes: childNodes,
657
- parentId: parentId,
658
- level: level
659
- }));
660
- } else {
661
- promises.push(this.convertNode({
662
- sourceTile: sourceTile,
663
- parentNode: parentNode,
664
- childNodes: childNodes,
665
- parentId: parentId,
666
- level: level
667
- }));
627
+ sourceTile = _step3.value;
628
+ if (!(sourceTile.type === 'json')) {
629
+ _context9.next = 13;
630
+ break;
668
631
  }
669
- _context10.next = 12;
670
- return Promise.all(promises);
671
- case 12:
632
+ _context9.next = 11;
633
+ return this.convertNestedTileset({
634
+ parentNode: parentNode,
635
+ sourceTile: sourceTile,
636
+ level: level
637
+ });
638
+ case 11:
639
+ _context9.next = 15;
640
+ break;
641
+ case 13:
642
+ _context9.next = 15;
643
+ return this.convertNode({
644
+ parentNode: parentNode,
645
+ sourceTile: sourceTile,
646
+ level: level
647
+ });
648
+ case 15:
672
649
  if (sourceTile.id) {
673
650
  console.log(sourceTile.id);
674
651
  }
675
- case 13:
676
- _context10.next = 7;
652
+ case 16:
653
+ _context9.next = 6;
677
654
  break;
678
- case 15:
679
- _context10.next = 20;
655
+ case 18:
656
+ _context9.next = 23;
680
657
  break;
681
- case 17:
682
- _context10.prev = 17;
683
- _context10.t0 = _context10["catch"](5);
684
- _iterator2.e(_context10.t0);
685
658
  case 20:
686
- _context10.prev = 20;
687
- _iterator2.f();
688
- return _context10.finish(20);
659
+ _context9.prev = 20;
660
+ _context9.t0 = _context9["catch"](4);
661
+ _iterator3.e(_context9.t0);
689
662
  case 23:
663
+ _context9.prev = 23;
664
+ _iterator3.f();
665
+ return _context9.finish(23);
666
+ case 26:
690
667
  case "end":
691
- return _context10.stop();
668
+ return _context9.stop();
692
669
  }
693
670
  }
694
- }, _callee10, this, [[5, 17, 20, 23]]);
671
+ }, _callee9, this, [[4, 20, 23, 26]]);
695
672
  }));
696
- function _addChildren(_x16) {
673
+ function _addChildren(_x11) {
697
674
  return _addChildren2.apply(this, arguments);
698
675
  }
699
676
  return _addChildren;
700
677
  }()
701
- }, {
702
- key: "_addNeighborsAndWriteFile",
703
- value: function () {
704
- var _addNeighborsAndWriteFile2 = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee11(parentNode, childNodes) {
705
- var _iterator3, _step3, _parentNode$children, node, childPath, nodePath, _iterator4, _step4, neighbor;
706
- return _regenerator.default.wrap(function _callee11$(_context11) {
707
- while (1) {
708
- switch (_context11.prev = _context11.next) {
709
- case 0:
710
- _iterator3 = _createForOfIteratorHelper(childNodes);
711
- _context11.prev = 1;
712
- _iterator3.s();
713
- case 3:
714
- if ((_step3 = _iterator3.n()).done) {
715
- _context11.next = 36;
716
- break;
717
- }
718
- node = _step3.value;
719
- childPath = (0, _path.join)(this.layers0Path, 'nodes', node.path);
720
- nodePath = node.path;
721
- delete node.path;
722
-
723
- if (!(Number(parentNode === null || parentNode === void 0 ? void 0 : (_parentNode$children = parentNode.children) === null || _parentNode$children === void 0 ? void 0 : _parentNode$children.length) < 1000)) {
724
- _context11.next = 29;
725
- break;
726
- }
727
- _iterator4 = _createForOfIteratorHelper(parentNode.children || []);
728
- _context11.prev = 10;
729
- _iterator4.s();
730
- case 12:
731
- if ((_step4 = _iterator4.n()).done) {
732
- _context11.next = 19;
733
- break;
734
- }
735
- neighbor = _step4.value;
736
- if (!(node.id === neighbor.id)) {
737
- _context11.next = 16;
738
- break;
739
- }
740
- return _context11.abrupt("continue", 17);
741
- case 16:
742
- if (node.neighbors) {
743
- node.neighbors.push(_objectSpread({}, neighbor));
744
- }
745
- case 17:
746
- _context11.next = 12;
747
- break;
748
- case 19:
749
- _context11.next = 24;
750
- break;
751
- case 21:
752
- _context11.prev = 21;
753
- _context11.t0 = _context11["catch"](10);
754
- _iterator4.e(_context11.t0);
755
- case 24:
756
- _context11.prev = 24;
757
- _iterator4.f();
758
- return _context11.finish(24);
759
- case 27:
760
- _context11.next = 31;
761
- break;
762
- case 29:
763
- console.warn("Node ".concat(node.id, ": neighbors attribute is omited because of large number of neigbors"));
764
- delete node.neighbors;
765
- case 31:
766
- _context11.next = 33;
767
- return this._writeNodeIndexDocument(node, nodePath, childPath);
768
- case 33:
769
- node.neighbors = [];
770
- case 34:
771
- _context11.next = 3;
772
- break;
773
- case 36:
774
- _context11.next = 41;
775
- break;
776
- case 38:
777
- _context11.prev = 38;
778
- _context11.t1 = _context11["catch"](1);
779
- _iterator3.e(_context11.t1);
780
- case 41:
781
- _context11.prev = 41;
782
- _iterator3.f();
783
- return _context11.finish(41);
784
- case 44:
785
- case "end":
786
- return _context11.stop();
787
- }
788
- }
789
- }, _callee11, this, [[1, 38, 41, 44], [10, 21, 24, 27]]);
790
- }));
791
- function _addNeighborsAndWriteFile(_x17, _x18) {
792
- return _addNeighborsAndWriteFile2.apply(this, arguments);
793
- }
794
- return _addNeighborsAndWriteFile;
795
- }()
796
678
  }, {
797
679
  key: "_createNode",
798
680
  value: function () {
799
- var _createNode2 = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee12(parentTile, sourceTile, parentId, level) {
681
+ var _createNode2 = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee10(parentNode, sourceTile, level) {
800
682
  var _this$layers, _this$layers$attribut;
801
- var boundingVolumes, propertyTable, resourcesData, nodes, nodesInPage, emptyResources, _iterator5, _step5, resources, lodSelection, maxScreenThresholdSQ, nodeInPage, node, _console;
802
- return _regenerator.default.wrap(function _callee12$(_context12) {
683
+ var boundingVolumes, propertyTable, resourcesData, nodes, nodeIds, nodesInPage, emptyResources, _iterator4, _step4, resources, lodSelection, maxScreenThresholdSQ, nodeInPage, nodeData, node, _console;
684
+ return _regenerator.default.wrap(function _callee10$(_context10) {
803
685
  while (1) {
804
- switch (_context12.prev = _context12.next) {
686
+ switch (_context10.prev = _context10.next) {
805
687
  case 0:
806
688
  this._checkAddRefinementTypeForTile(sourceTile);
807
- _context12.next = 3;
689
+ _context10.next = 3;
808
690
  return this._updateTilesetOptions();
809
691
  case 3:
810
- _context12.next = 5;
692
+ _context10.next = 5;
811
693
  return this.sourceTileset._loadTile(sourceTile);
812
694
  case 5:
813
695
  boundingVolumes = (0, _coordinateConverter.createBoundingVolumes)(sourceTile, this.geoidHeightModel);
@@ -815,16 +697,18 @@ var I3SConverter = function () {
815
697
  if (propertyTable && !((_this$layers = this.layers0) !== null && _this$layers !== void 0 && (_this$layers$attribut = _this$layers.attributeStorageInfo) !== null && _this$layers$attribut !== void 0 && _this$layers$attribut.length)) {
816
698
  this._convertPropertyTableToNodeAttributes(propertyTable);
817
699
  }
818
- _context12.next = 10;
819
- return this._convertResources(sourceTile, parentId, propertyTable);
700
+ _context10.next = 10;
701
+ return this._convertResources(sourceTile, parentNode.inPageId, propertyTable);
820
702
  case 10:
821
- resourcesData = _context12.sent;
703
+ resourcesData = _context10.sent;
822
704
  nodes = [];
705
+ nodeIds = [];
823
706
  nodesInPage = [];
824
707
  emptyResources = {
825
708
  geometry: null,
826
709
  compressedGeometry: null,
827
710
  texture: null,
711
+ hasUvRegions: false,
828
712
  sharedResources: null,
829
713
  meshMaterial: null,
830
714
  vertexCount: null,
@@ -832,15 +716,15 @@ var I3SConverter = function () {
832
716
  featureCount: null,
833
717
  boundingVolumes: null
834
718
  };
835
- _iterator5 = _createForOfIteratorHelper(resourcesData || [emptyResources]);
836
- _context12.prev = 15;
837
- _iterator5.s();
838
- case 17:
839
- if ((_step5 = _iterator5.n()).done) {
840
- _context12.next = 33;
719
+ _iterator4 = _createForOfIteratorHelper(resourcesData || [emptyResources]);
720
+ _context10.prev = 16;
721
+ _iterator4.s();
722
+ case 18:
723
+ if ((_step4 = _iterator4.n()).done) {
724
+ _context10.next = 42;
841
725
  break;
842
726
  }
843
- resources = _step5.value;
727
+ resources = _step4.value;
844
728
  this.layersHasTexture = this.layersHasTexture || Boolean(resources.texture);
845
729
  if (this.generateBoundingVolumes && resources.boundingVolumes) {
846
730
  boundingVolumes = resources.boundingVolumes;
@@ -851,57 +735,67 @@ var I3SConverter = function () {
851
735
  }) || {
852
736
  maxError: 0
853
737
  };
854
- nodeInPage = this._updateNodeInNodePages(maxScreenThresholdSQ, boundingVolumes, sourceTile, parentId, resources);
855
- node = this._createNodeIndexDocument(parentTile, boundingVolumes, lodSelection, nodeInPage, resources);
738
+ _context10.next = 26;
739
+ return this._updateNodeInNodePages(maxScreenThresholdSQ, boundingVolumes, sourceTile, parentNode.inPageId, resources);
740
+ case 26:
741
+ nodeInPage = _context10.sent;
742
+ _context10.next = 29;
743
+ return _nodeIndexDocument.NodeIndexDocument.createNodeIndexDocument(parentNode, boundingVolumes, lodSelection, nodeInPage, resources);
744
+ case 29:
745
+ nodeData = _context10.sent;
746
+ _context10.next = 32;
747
+ return new _nodeIndexDocument.NodeIndexDocument(nodeInPage.index, this).addData(nodeData);
748
+ case 32:
749
+ node = _context10.sent;
750
+ nodes.push(node);
856
751
  if (!nodeInPage.mesh) {
857
- _context12.next = 28;
752
+ _context10.next = 37;
858
753
  break;
859
754
  }
860
- _context12.next = 28;
861
- return this._writeResources(resources, node.path);
862
- case 28:
755
+ _context10.next = 37;
756
+ return this._writeResources(resources, node.id);
757
+ case 37:
863
758
  if (this.validate) {
864
- this.boundingVolumeWarnings = (0, _nodeDebug.validateNodeBoundingVolumes)(node);
759
+ this.boundingVolumeWarnings = (0, _nodeDebug.validateNodeBoundingVolumes)(nodeData);
865
760
  if (this.boundingVolumeWarnings && this.boundingVolumeWarnings.length) {
866
761
  (_console = console).warn.apply(_console, ['Bounding Volume Warnings: '].concat((0, _toConsumableArray2.default)(this.boundingVolumeWarnings)));
867
762
  }
868
763
  }
869
764
 
870
- nodes.push(node);
765
+ nodeIds.push(nodeInPage.index);
871
766
  nodesInPage.push(nodeInPage);
872
- case 31:
873
- _context12.next = 17;
767
+ case 40:
768
+ _context10.next = 18;
874
769
  break;
875
- case 33:
876
- _context12.next = 38;
770
+ case 42:
771
+ _context10.next = 47;
877
772
  break;
878
- case 35:
879
- _context12.prev = 35;
880
- _context12.t0 = _context12["catch"](15);
881
- _iterator5.e(_context12.t0);
882
- case 38:
883
- _context12.prev = 38;
884
- _iterator5.f();
885
- return _context12.finish(38);
886
- case 41:
773
+ case 44:
774
+ _context10.prev = 44;
775
+ _context10.t0 = _context10["catch"](16);
776
+ _iterator4.e(_context10.t0);
777
+ case 47:
778
+ _context10.prev = 47;
779
+ _iterator4.f();
780
+ return _context10.finish(47);
781
+ case 50:
887
782
  sourceTile.unloadContent();
888
- _context12.next = 44;
783
+ _context10.next = 53;
889
784
  return this._addChildrenWithNeighborsAndWriteFile({
890
785
  parentNode: nodes[0],
891
786
  sourceTiles: sourceTile.children,
892
- parentId: nodesInPage[0].index,
893
787
  level: level + 1
894
788
  });
895
- case 44:
896
- return _context12.abrupt("return", nodes);
897
- case 45:
789
+ case 53:
790
+ return _context10.abrupt("return", nodes);
791
+ case 54:
898
792
  case "end":
899
- return _context12.stop();
793
+ return _context10.stop();
900
794
  }
901
795
  }
902
- }, _callee12, this, [[15, 35, 38, 41]]);
796
+ }, _callee10, this, [[16, 44, 47, 50]]);
903
797
  }));
904
- function _createNode(_x19, _x20, _x21, _x22) {
798
+ function _createNode(_x12, _x13, _x14) {
905
799
  return _createNode2.apply(this, arguments);
906
800
  }
907
801
  return _createNode;
@@ -909,154 +803,137 @@ var I3SConverter = function () {
909
803
  }, {
910
804
  key: "_convertResources",
911
805
  value: function () {
912
- var _convertResources2 = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee13(sourceTile, parentId, propertyTable) {
913
- var _this = this,
806
+ var _convertResources2 = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee12(sourceTile, parentId, propertyTable) {
807
+ var _this3 = this,
914
808
  _this$layers2;
915
809
  var draftObb, resourcesData;
916
- return _regenerator.default.wrap(function _callee13$(_context13) {
810
+ return _regenerator.default.wrap(function _callee12$(_context12) {
917
811
  while (1) {
918
- switch (_context13.prev = _context13.next) {
812
+ switch (_context12.prev = _context12.next) {
919
813
  case 0:
920
814
  if (this.isContentSupported(sourceTile)) {
921
- _context13.next = 2;
815
+ _context12.next = 2;
922
816
  break;
923
817
  }
924
- return _context13.abrupt("return", null);
818
+ return _context12.abrupt("return", null);
925
819
  case 2:
926
820
  draftObb = {
927
821
  center: [],
928
822
  halfSize: [],
929
823
  quaternion: []
930
824
  };
931
- _context13.next = 5;
932
- return (0, _geometryConverter.default)(sourceTile.content, function () {
933
- return _this.nodePages.push({
934
- index: 0,
935
- obb: draftObb
936
- }, parentId);
937
- }, propertyTable, 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);
825
+ _context12.next = 5;
826
+ return (0, _geometryConverter.default)(sourceTile.content, (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee11() {
827
+ return _regenerator.default.wrap(function _callee11$(_context11) {
828
+ while (1) {
829
+ switch (_context11.prev = _context11.next) {
830
+ case 0:
831
+ _context11.next = 2;
832
+ return _this3.nodePages.push({
833
+ index: 0,
834
+ obb: draftObb
835
+ }, parentId);
836
+ case 2:
837
+ return _context11.abrupt("return", _context11.sent.index);
838
+ case 3:
839
+ case "end":
840
+ return _context11.stop();
841
+ }
842
+ }
843
+ }, _callee11);
844
+ })), propertyTable, this.featuresHashArray, (_this$layers2 = this.layers0) === null || _this$layers2 === void 0 ? void 0 : _this$layers2.attributeStorageInfo, this.options.draco, this.generateBoundingVolumes, this.options.mergeMaterials, this.geoidHeightModel, this.workerSource);
938
845
  case 5:
939
- resourcesData = _context13.sent;
940
- return _context13.abrupt("return", resourcesData);
846
+ resourcesData = _context12.sent;
847
+ return _context12.abrupt("return", resourcesData);
941
848
  case 7:
942
849
  case "end":
943
- return _context13.stop();
850
+ return _context12.stop();
944
851
  }
945
852
  }
946
- }, _callee13, this);
853
+ }, _callee12, this);
947
854
  }));
948
- function _convertResources(_x23, _x24, _x25) {
855
+ function _convertResources(_x15, _x16, _x17) {
949
856
  return _convertResources2.apply(this, arguments);
950
857
  }
951
858
  return _convertResources;
952
859
  }()
953
860
  }, {
954
861
  key: "_updateNodeInNodePages",
955
- value:
956
- function _updateNodeInNodePages(maxScreenThresholdSQ, boundingVolumes, sourceTile, parentId, resources) {
957
- var meshMaterial = resources.meshMaterial,
958
- texture = resources.texture,
959
- vertexCount = resources.vertexCount,
960
- featureCount = resources.featureCount,
961
- geometry = resources.geometry;
962
- var nodeInPage = {
963
- index: 0,
964
- lodThreshold: maxScreenThresholdSQ.maxError,
965
- obb: boundingVolumes.obb,
966
- children: []
967
- };
968
- if (geometry && this.isContentSupported(sourceTile)) {
969
- nodeInPage.mesh = {
970
- geometry: {
971
- definition: texture ? 0 : 1,
972
- resource: 0
973
- },
974
- attribute: {
975
- resource: 0
976
- },
977
- material: {
978
- definition: 0
979
- }
980
- };
981
- }
982
- var nodeId = resources.nodeId;
983
- if (nodeId) {
984
- this.nodePages.updateAll(nodeId, nodeInPage);
985
- var node = this.nodePages.getNodeById(nodeId);
986
- this.nodePages.updateResourceInMesh(node);
987
- } else {
988
- nodeId = this.nodePages.push(nodeInPage, parentId);
989
- }
990
- if (meshMaterial) {
991
- this.nodePages.updateMaterialByNodeId(nodeId, this._findOrCreateMaterial(meshMaterial));
992
- }
993
- if (texture) {
994
- var texelCountHint = texture.image.height * texture.image.width;
995
- this.nodePages.updateTexelCountHintByNodeId(nodeId, texelCountHint);
996
- }
997
- if (vertexCount) {
998
- this.vertexCounter += vertexCount;
999
- this.nodePages.updateVertexCountByNodeId(nodeId, vertexCount);
1000
- }
1001
- this.nodePages.updateNodeAttributeByNodeId(nodeId);
1002
- if (featureCount) {
1003
- this.nodePages.updateFeatureCountByNodeId(nodeId, featureCount);
1004
- }
1005
- return this.nodePages.getNodeById(nodeId);
1006
- }
1007
-
1008
- }, {
1009
- key: "_createNodeIndexDocument",
1010
- value:
1011
- function _createNodeIndexDocument(parentNode, boundingVolumes, lodSelection, nodeInPage, resources) {
1012
- var texture = resources.texture,
1013
- attributes = resources.attributes;
1014
- var nodeId = nodeInPage.index;
1015
- var nodeData = _objectSpread(_objectSpread({
1016
- version: parentNode.version,
1017
- id: nodeId.toString(),
1018
- path: nodeId.toString(),
1019
- level: parentNode.level + 1
1020
- }, boundingVolumes), {}, {
1021
- lodSelection: lodSelection,
1022
- parentNode: {
1023
- id: parentNode.id,
1024
- href: "../".concat(parentNode.id),
1025
- mbs: parentNode.mbs,
1026
- obb: parentNode.obb
1027
- },
1028
- children: [],
1029
- neighbors: []
1030
- });
1031
- var node = (0, _jsonMapTransform.default)(nodeData, (0, _node.NODE)());
1032
- if (nodeInPage.mesh) {
1033
- var _this$layers3, _this$layers3$attribu;
1034
- node.geometryData = [{
1035
- href: './geometries/0'
1036
- }];
1037
- node.sharedResource = {
1038
- href: './shared'
1039
- };
1040
- if (texture) {
1041
- node.textureData = [{
1042
- href: './textures/0'
1043
- }, {
1044
- href: './textures/1'
1045
- }];
1046
- }
1047
- if (attributes && attributes.length && (_this$layers3 = this.layers0) !== null && _this$layers3 !== void 0 && (_this$layers3$attribu = _this$layers3.attributeStorageInfo) !== null && _this$layers3$attribu !== void 0 && _this$layers3$attribu.length) {
1048
- node.attributeData = [];
1049
- for (var index = 0; index < attributes.length; index++) {
1050
- var folderName = this.layers0.attributeStorageInfo[index].key;
1051
- node.attributeData.push({
1052
- href: "./attributes/".concat(folderName, "/0")
1053
- });
862
+ value: function () {
863
+ var _updateNodeInNodePages2 = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee13(maxScreenThresholdSQ, boundingVolumes, sourceTile, parentId, resources) {
864
+ var meshMaterial, texture, vertexCount, featureCount, geometry, hasUvRegions, nodeInPage, nodeId, node, texelCountHint;
865
+ return _regenerator.default.wrap(function _callee13$(_context13) {
866
+ while (1) {
867
+ switch (_context13.prev = _context13.next) {
868
+ case 0:
869
+ meshMaterial = resources.meshMaterial, texture = resources.texture, vertexCount = resources.vertexCount, featureCount = resources.featureCount, geometry = resources.geometry, hasUvRegions = resources.hasUvRegions;
870
+ nodeInPage = {
871
+ index: 0,
872
+ lodThreshold: maxScreenThresholdSQ.maxError,
873
+ obb: boundingVolumes.obb,
874
+ children: []
875
+ };
876
+ if (geometry && this.isContentSupported(sourceTile)) {
877
+ nodeInPage.mesh = {
878
+ geometry: {
879
+ definition: this.findOrCreateGeometryDefinition(Boolean(texture), hasUvRegions),
880
+ resource: 0
881
+ },
882
+ attribute: {
883
+ resource: 0
884
+ },
885
+ material: {
886
+ definition: 0
887
+ }
888
+ };
889
+ }
890
+ nodeId = resources.nodeId;
891
+ if (nodeId) {
892
+ _context13.next = 10;
893
+ break;
894
+ }
895
+ _context13.next = 7;
896
+ return this.nodePages.push(nodeInPage, parentId);
897
+ case 7:
898
+ node = _context13.sent;
899
+ _context13.next = 13;
900
+ break;
901
+ case 10:
902
+ _context13.next = 12;
903
+ return this.nodePages.getNodeById(nodeId);
904
+ case 12:
905
+ node = _context13.sent;
906
+ case 13:
907
+ _nodePages.default.updateAll(node, nodeInPage);
908
+ if (meshMaterial) {
909
+ _nodePages.default.updateMaterialByNodeId(node, this._findOrCreateMaterial(meshMaterial));
910
+ }
911
+ if (texture) {
912
+ texelCountHint = texture.image.height * texture.image.width;
913
+ _nodePages.default.updateTexelCountHintByNodeId(node, texelCountHint);
914
+ }
915
+ if (vertexCount) {
916
+ this.vertexCounter += vertexCount;
917
+ _nodePages.default.updateVertexCountByNodeId(node, vertexCount);
918
+ }
919
+ _nodePages.default.updateNodeAttributeByNodeId(node);
920
+ if (featureCount) {
921
+ _nodePages.default.updateFeatureCountByNodeId(node, featureCount);
922
+ }
923
+ this.nodePages.saveNode(node);
924
+ return _context13.abrupt("return", node);
925
+ case 21:
926
+ case "end":
927
+ return _context13.stop();
928
+ }
1054
929
  }
1055
- }
930
+ }, _callee13, this);
931
+ }));
932
+ function _updateNodeInNodePages(_x18, _x19, _x20, _x21, _x22) {
933
+ return _updateNodeInNodePages2.apply(this, arguments);
1056
934
  }
1057
- return node;
1058
- }
1059
-
935
+ return _updateNodeInNodePages;
936
+ }()
1060
937
  }, {
1061
938
  key: "_writeResources",
1062
939
  value: function () {
@@ -1087,7 +964,7 @@ var I3SConverter = function () {
1087
964
  }
1088
965
  }, _callee14, this);
1089
966
  }));
1090
- function _writeResources(_x26, _x27) {
967
+ function _writeResources(_x23, _x24) {
1091
968
  return _writeResources2.apply(this, arguments);
1092
969
  }
1093
970
  return _writeResources;
@@ -1109,7 +986,9 @@ var I3SConverter = function () {
1109
986
  _context15.next = 4;
1110
987
  return this.writeQueue.enqueue({
1111
988
  archiveKey: "".concat(slpkChildPath, "/geometries/0.bin.gz"),
1112
- writePromise: (0, _fileUtils.writeFileForSlpk)(slpkGeometryPath, geometryBuffer, '0.bin')
989
+ writePromise: function writePromise() {
990
+ return (0, _fileUtils.writeFileForSlpk)(slpkGeometryPath, geometryBuffer, '0.bin');
991
+ }
1113
992
  });
1114
993
  case 4:
1115
994
  _context15.next = 9;
@@ -1118,7 +997,9 @@ var I3SConverter = function () {
1118
997
  geometryPath = (0, _path.join)(childPath, 'geometries/0/');
1119
998
  _context15.next = 9;
1120
999
  return this.writeQueue.enqueue({
1121
- writePromise: (0, _fileUtils.writeFile)(geometryPath, geometryBuffer, 'index.bin')
1000
+ writePromise: function writePromise() {
1001
+ return (0, _fileUtils.writeFile)(geometryPath, geometryBuffer, 'index.bin');
1002
+ }
1122
1003
  });
1123
1004
  case 9:
1124
1005
  if (!this.options.draco) {
@@ -1133,7 +1014,9 @@ var I3SConverter = function () {
1133
1014
  _context15.next = 14;
1134
1015
  return this.writeQueue.enqueue({
1135
1016
  archiveKey: "".concat(slpkChildPath, "/geometries/1.bin.gz"),
1136
- writePromise: (0, _fileUtils.writeFileForSlpk)(slpkCompressedGeometryPath, compressedGeometry, '1.bin')
1017
+ writePromise: function writePromise() {
1018
+ return (0, _fileUtils.writeFileForSlpk)(slpkCompressedGeometryPath, compressedGeometry, '1.bin');
1019
+ }
1137
1020
  });
1138
1021
  case 14:
1139
1022
  _context15.next = 19;
@@ -1142,7 +1025,9 @@ var I3SConverter = function () {
1142
1025
  compressedGeometryPath = (0, _path.join)(childPath, 'geometries/1/');
1143
1026
  _context15.next = 19;
1144
1027
  return this.writeQueue.enqueue({
1145
- writePromise: (0, _fileUtils.writeFile)(compressedGeometryPath, compressedGeometry, 'index.bin')
1028
+ writePromise: function writePromise() {
1029
+ return (0, _fileUtils.writeFile)(compressedGeometryPath, compressedGeometry, 'index.bin');
1030
+ }
1146
1031
  });
1147
1032
  case 19:
1148
1033
  case "end":
@@ -1151,7 +1036,7 @@ var I3SConverter = function () {
1151
1036
  }
1152
1037
  }, _callee15, this);
1153
1038
  }));
1154
- function _writeGeometries(_x28, _x29, _x30, _x31) {
1039
+ function _writeGeometries(_x25, _x26, _x27, _x28) {
1155
1040
  return _writeGeometries2.apply(this, arguments);
1156
1041
  }
1157
1042
  return _writeGeometries;
@@ -1182,7 +1067,9 @@ var I3SConverter = function () {
1182
1067
  _context16.next = 9;
1183
1068
  return this.writeQueue.enqueue({
1184
1069
  archiveKey: "".concat(slpkChildPath, "/shared/sharedResource.json.gz"),
1185
- writePromise: (0, _fileUtils.writeFileForSlpk)(slpkSharedPath, sharedDataStr, 'sharedResource.json')
1070
+ writePromise: function writePromise() {
1071
+ return (0, _fileUtils.writeFileForSlpk)(slpkSharedPath, sharedDataStr, 'sharedResource.json');
1072
+ }
1186
1073
  });
1187
1074
  case 9:
1188
1075
  _context16.next = 14;
@@ -1191,7 +1078,9 @@ var I3SConverter = function () {
1191
1078
  sharedPath = (0, _path.join)(childPath, 'shared/');
1192
1079
  _context16.next = 14;
1193
1080
  return this.writeQueue.enqueue({
1194
- writePromise: (0, _fileUtils.writeFile)(sharedPath, sharedDataStr)
1081
+ writePromise: function writePromise() {
1082
+ return (0, _fileUtils.writeFile)(sharedPath, sharedDataStr);
1083
+ }
1195
1084
  });
1196
1085
  case 14:
1197
1086
  case "end":
@@ -1200,7 +1089,7 @@ var I3SConverter = function () {
1200
1089
  }
1201
1090
  }, _callee16, this);
1202
1091
  }));
1203
- function _writeShared(_x32, _x33, _x34, _x35) {
1092
+ function _writeShared(_x29, _x30, _x31, _x32) {
1204
1093
  return _writeShared2.apply(this, arguments);
1205
1094
  }
1206
1095
  return _writeShared;
@@ -1277,6 +1166,10 @@ var I3SConverter = function () {
1277
1166
  this.layers0.textureSetDefinitions.push({
1278
1167
  formats: formats
1279
1168
  });
1169
+ this.layers0.textureSetDefinitions.push({
1170
+ formats: formats,
1171
+ atlas: true
1172
+ });
1280
1173
  }
1281
1174
  case 27:
1282
1175
  case "end":
@@ -1285,7 +1178,7 @@ var I3SConverter = function () {
1285
1178
  }
1286
1179
  }, _callee17, this);
1287
1180
  }));
1288
- function _writeTexture(_x36, _x37, _x38) {
1181
+ function _writeTexture(_x33, _x34, _x35) {
1289
1182
  return _writeTexture2.apply(this, arguments);
1290
1183
  }
1291
1184
  return _writeTexture;
@@ -1308,7 +1201,9 @@ var I3SConverter = function () {
1308
1201
  _context18.next = 5;
1309
1202
  return this.writeQueue.enqueue({
1310
1203
  archiveKey: "".concat(slpkChildPath, "/textures/").concat(name, ".").concat(format),
1311
- writePromise: (0, _fileUtils.writeFileForSlpk)(slpkTexturePath, textureData, "".concat(name, ".").concat(format), compress)
1204
+ writePromise: function writePromise() {
1205
+ return (0, _fileUtils.writeFileForSlpk)(slpkTexturePath, textureData, "".concat(name, ".").concat(format), compress);
1206
+ }
1312
1207
  });
1313
1208
  case 5:
1314
1209
  _context18.next = 10;
@@ -1317,7 +1212,9 @@ var I3SConverter = function () {
1317
1212
  texturePath = (0, _path.join)(childPath, "textures/".concat(name, "/"));
1318
1213
  _context18.next = 10;
1319
1214
  return this.writeQueue.enqueue({
1320
- writePromise: (0, _fileUtils.writeFile)(texturePath, textureData, "index.".concat(format))
1215
+ writePromise: function writePromise() {
1216
+ return (0, _fileUtils.writeFile)(texturePath, textureData, "index.".concat(format));
1217
+ }
1321
1218
  });
1322
1219
  case 10:
1323
1220
  case "end":
@@ -1326,7 +1223,7 @@ var I3SConverter = function () {
1326
1223
  }
1327
1224
  }, _callee18, this);
1328
1225
  }));
1329
- function writeTextureFile(_x39, _x40, _x41, _x42, _x43) {
1226
+ function writeTextureFile(_x36, _x37, _x38, _x39, _x40) {
1330
1227
  return _writeTextureFile.apply(this, arguments);
1331
1228
  }
1332
1229
  return writeTextureFile;
@@ -1335,61 +1232,78 @@ var I3SConverter = function () {
1335
1232
  key: "_writeAttributes",
1336
1233
  value: function () {
1337
1234
  var _writeAttributes2 = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee19() {
1338
- var _this$layers4, _this$layers4$attribu;
1235
+ var _this$layers3,
1236
+ _this$layers3$attribu,
1237
+ _this4 = this;
1339
1238
  var attributes,
1340
1239
  childPath,
1341
1240
  slpkChildPath,
1241
+ _loop,
1342
1242
  index,
1343
- folderName,
1344
- fileBuffer,
1345
- slpkAttributesPath,
1346
- attributesPath,
1347
- _args19 = arguments;
1348
- return _regenerator.default.wrap(function _callee19$(_context19) {
1243
+ _args20 = arguments;
1244
+ return _regenerator.default.wrap(function _callee19$(_context20) {
1349
1245
  while (1) {
1350
- switch (_context19.prev = _context19.next) {
1246
+ switch (_context20.prev = _context20.next) {
1351
1247
  case 0:
1352
- attributes = _args19.length > 0 && _args19[0] !== undefined ? _args19[0] : [];
1353
- childPath = _args19.length > 1 ? _args19[1] : undefined;
1354
- slpkChildPath = _args19.length > 2 ? _args19[2] : undefined;
1355
- 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)) {
1356
- _context19.next = 20;
1248
+ attributes = _args20.length > 0 && _args20[0] !== undefined ? _args20[0] : [];
1249
+ childPath = _args20.length > 1 ? _args20[1] : undefined;
1250
+ slpkChildPath = _args20.length > 2 ? _args20[2] : undefined;
1251
+ if (!(attributes !== null && attributes !== void 0 && attributes.length && (_this$layers3 = this.layers0) !== null && _this$layers3 !== void 0 && (_this$layers3$attribu = _this$layers3.attributeStorageInfo) !== null && _this$layers3$attribu !== void 0 && _this$layers3$attribu.length)) {
1252
+ _context20.next = 11;
1357
1253
  break;
1358
1254
  }
1255
+ _loop = _regenerator.default.mark(function _loop(index) {
1256
+ var folderName, fileBuffer, slpkAttributesPath, attributesPath;
1257
+ return _regenerator.default.wrap(function _loop$(_context19) {
1258
+ while (1) {
1259
+ switch (_context19.prev = _context19.next) {
1260
+ case 0:
1261
+ folderName = _this4.layers0.attributeStorageInfo[index].key;
1262
+ fileBuffer = new Uint8Array(attributes[index]);
1263
+ if (!_this4.options.slpk) {
1264
+ _context19.next = 8;
1265
+ break;
1266
+ }
1267
+ slpkAttributesPath = (0, _path.join)(childPath, 'attributes', folderName);
1268
+ _context19.next = 6;
1269
+ return _this4.writeQueue.enqueue({
1270
+ archiveKey: "".concat(slpkChildPath, "/attributes/").concat(folderName, ".bin.gz"),
1271
+ writePromise: function writePromise() {
1272
+ return (0, _fileUtils.writeFileForSlpk)(slpkAttributesPath, fileBuffer, '0.bin');
1273
+ }
1274
+ });
1275
+ case 6:
1276
+ _context19.next = 11;
1277
+ break;
1278
+ case 8:
1279
+ attributesPath = (0, _path.join)(childPath, "attributes/".concat(folderName, "/0"));
1280
+ _context19.next = 11;
1281
+ return _this4.writeQueue.enqueue({
1282
+ writePromise: function writePromise() {
1283
+ return (0, _fileUtils.writeFile)(attributesPath, fileBuffer, 'index.bin');
1284
+ }
1285
+ });
1286
+ case 11:
1287
+ case "end":
1288
+ return _context19.stop();
1289
+ }
1290
+ }
1291
+ }, _loop);
1292
+ });
1359
1293
  index = 0;
1360
- case 5:
1294
+ case 6:
1361
1295
  if (!(index < attributes.length)) {
1362
- _context19.next = 20;
1296
+ _context20.next = 11;
1363
1297
  break;
1364
1298
  }
1365
- folderName = this.layers0.attributeStorageInfo[index].key;
1366
- fileBuffer = new Uint8Array(attributes[index]);
1367
- if (!this.options.slpk) {
1368
- _context19.next = 14;
1369
- break;
1370
- }
1371
- slpkAttributesPath = (0, _path.join)(childPath, 'attributes', folderName);
1372
- _context19.next = 12;
1373
- return this.writeQueue.enqueue({
1374
- archiveKey: "".concat(slpkChildPath, "/attributes/").concat(folderName, ".bin.gz"),
1375
- writePromise: (0, _fileUtils.writeFileForSlpk)(slpkAttributesPath, fileBuffer, '0.bin')
1376
- });
1377
- case 12:
1378
- _context19.next = 17;
1379
- break;
1380
- case 14:
1381
- attributesPath = (0, _path.join)(childPath, "attributes/".concat(folderName, "/0"));
1382
- _context19.next = 17;
1383
- return this.writeQueue.enqueue({
1384
- writePromise: (0, _fileUtils.writeFile)(attributesPath, fileBuffer, 'index.bin')
1385
- });
1386
- case 17:
1299
+ return _context20.delegateYield(_loop(index), "t0", 8);
1300
+ case 8:
1387
1301
  index++;
1388
- _context19.next = 5;
1302
+ _context20.next = 6;
1389
1303
  break;
1390
- case 20:
1304
+ case 11:
1391
1305
  case "end":
1392
- return _context19.stop();
1306
+ return _context20.stop();
1393
1307
  }
1394
1308
  }
1395
1309
  }, _callee19, this);
@@ -1421,13 +1335,30 @@ var I3SConverter = function () {
1421
1335
  function _findOrCreateMaterial(material) {
1422
1336
  var hash = (0, _md.default)(JSON.stringify(material));
1423
1337
  if (this.materialMap.has(hash)) {
1424
- return this.materialMap.get(hash);
1338
+ return this.materialMap.get(hash) || 0;
1425
1339
  }
1426
1340
  var newMaterialId = this.materialDefinitions.push(material) - 1;
1427
1341
  this.materialMap.set(hash, newMaterialId);
1428
1342
  return newMaterialId;
1429
1343
  }
1430
1344
 
1345
+ }, {
1346
+ key: "findOrCreateGeometryDefinition",
1347
+ value:
1348
+ function findOrCreateGeometryDefinition(hasTexture, hasUvRegions) {
1349
+ var geometryConfig = {
1350
+ hasTexture: hasTexture,
1351
+ hasUvRegions: hasUvRegions
1352
+ };
1353
+ var hash = (0, _md.default)(JSON.stringify(geometryConfig));
1354
+ if (this.geometryMap.has(hash)) {
1355
+ return this.geometryMap.get(hash) || 0;
1356
+ }
1357
+ var newGeometryId = this.geometryConfigs.push(geometryConfig) - 1;
1358
+ this.geometryMap.set(hash, newGeometryId);
1359
+ return newGeometryId;
1360
+ }
1361
+
1431
1362
  }, {
1432
1363
  key: "_convertPropertyTableToNodeAttributes",
1433
1364
  value:
@@ -1456,16 +1387,16 @@ var I3SConverter = function () {
1456
1387
  value: function () {
1457
1388
  var _finishConversion2 = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee20(params) {
1458
1389
  var _this$refinementCount, tilesCount, tilesWithAddRefineCount, addRefinementPercentage, filesSize, diff, conversionTime;
1459
- return _regenerator.default.wrap(function _callee20$(_context20) {
1390
+ return _regenerator.default.wrap(function _callee20$(_context21) {
1460
1391
  while (1) {
1461
- switch (_context20.prev = _context20.next) {
1392
+ switch (_context21.prev = _context21.next) {
1462
1393
  case 0:
1463
1394
  _this$refinementCount = this.refinementCounter, tilesCount = _this$refinementCount.tilesCount, tilesWithAddRefineCount = _this$refinementCount.tilesWithAddRefineCount;
1464
1395
  addRefinementPercentage = tilesWithAddRefineCount ? tilesWithAddRefineCount / tilesCount * 100 : 0;
1465
- _context20.next = 4;
1396
+ _context21.next = 4;
1466
1397
  return (0, _statisticUtills.calculateFilesSize)(params);
1467
1398
  case 4:
1468
- filesSize = _context20.sent;
1399
+ filesSize = _context21.sent;
1469
1400
  diff = _process.default.hrtime(this.conversionStartTime);
1470
1401
  conversionTime = (0, _statisticUtills.timeConverter)(diff);
1471
1402
  console.log("------------------------------------------------");
@@ -1477,12 +1408,12 @@ var I3SConverter = function () {
1477
1408
  console.log("------------------------------------------------");
1478
1409
  case 14:
1479
1410
  case "end":
1480
- return _context20.stop();
1411
+ return _context21.stop();
1481
1412
  }
1482
1413
  }
1483
1414
  }, _callee20, this);
1484
1415
  }));
1485
- function _finishConversion(_x44) {
1416
+ function _finishConversion(_x41) {
1486
1417
  return _finishConversion2.apply(this, arguments);
1487
1418
  }
1488
1419
  return _finishConversion;
@@ -1492,30 +1423,30 @@ var I3SConverter = function () {
1492
1423
  value: function () {
1493
1424
  var _fetchPreloadOptions2 = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee21() {
1494
1425
  var options, preloadOptions;
1495
- return _regenerator.default.wrap(function _callee21$(_context21) {
1426
+ return _regenerator.default.wrap(function _callee21$(_context22) {
1496
1427
  while (1) {
1497
- switch (_context21.prev = _context21.next) {
1428
+ switch (_context22.prev = _context22.next) {
1498
1429
  case 0:
1499
1430
  if (this.Loader.preload) {
1500
- _context21.next = 2;
1431
+ _context22.next = 2;
1501
1432
  break;
1502
1433
  }
1503
- return _context21.abrupt("return", {});
1434
+ return _context22.abrupt("return", {});
1504
1435
  case 2:
1505
1436
  options = {
1506
1437
  'cesium-ion': {
1507
1438
  accessToken: this.options.token || ION_DEFAULT_TOKEN
1508
1439
  }
1509
1440
  };
1510
- _context21.next = 5;
1441
+ _context22.next = 5;
1511
1442
  return this.Loader.preload(this.options.inputUrl, options);
1512
1443
  case 5:
1513
- preloadOptions = _context21.sent;
1444
+ preloadOptions = _context22.sent;
1514
1445
  this.refreshTokenTime = _process.default.hrtime();
1515
- return _context21.abrupt("return", _objectSpread(_objectSpread({}, options), preloadOptions));
1446
+ return _context22.abrupt("return", _objectSpread(_objectSpread({}, options), preloadOptions));
1516
1447
  case 8:
1517
1448
  case "end":
1518
- return _context21.stop();
1449
+ return _context22.stop();
1519
1450
  }
1520
1451
  }
1521
1452
  }, _callee21, this);
@@ -1530,22 +1461,22 @@ var I3SConverter = function () {
1530
1461
  value: function () {
1531
1462
  var _updateTilesetOptions2 = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee22() {
1532
1463
  var diff, preloadOptions;
1533
- return _regenerator.default.wrap(function _callee22$(_context22) {
1464
+ return _regenerator.default.wrap(function _callee22$(_context23) {
1534
1465
  while (1) {
1535
- switch (_context22.prev = _context22.next) {
1466
+ switch (_context23.prev = _context23.next) {
1536
1467
  case 0:
1537
1468
  diff = _process.default.hrtime(this.refreshTokenTime);
1538
1469
  if (!(diff[0] < REFRESH_TOKEN_TIMEOUT)) {
1539
- _context22.next = 3;
1470
+ _context23.next = 3;
1540
1471
  break;
1541
1472
  }
1542
- return _context22.abrupt("return");
1473
+ return _context23.abrupt("return");
1543
1474
  case 3:
1544
1475
  this.refreshTokenTime = _process.default.hrtime();
1545
- _context22.next = 6;
1476
+ _context23.next = 6;
1546
1477
  return this._fetchPreloadOptions();
1547
1478
  case 6:
1548
- preloadOptions = _context22.sent;
1479
+ preloadOptions = _context23.sent;
1549
1480
  this.sourceTileset.options = _objectSpread(_objectSpread({}, this.sourceTileset.options), preloadOptions);
1550
1481
  if (preloadOptions.headers) {
1551
1482
  this.sourceTileset.loadOptions.fetch = _objectSpread(_objectSpread({}, this.sourceTileset.loadOptions.fetch), {}, {
@@ -1555,7 +1486,7 @@ var I3SConverter = function () {
1555
1486
  }
1556
1487
  case 9:
1557
1488
  case "end":
1558
- return _context22.stop();
1489
+ return _context23.stop();
1559
1490
  }
1560
1491
  }
1561
1492
  }, _callee22, this);
@@ -1589,55 +1520,55 @@ var I3SConverter = function () {
1589
1520
  value: function () {
1590
1521
  var _loadWorkers = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee23() {
1591
1522
  var url, _sourceResponse, _source, _url, _sourceResponse2, _source2, i3sAttributesWorkerUrl, sourceResponse, source;
1592
- return _regenerator.default.wrap(function _callee23$(_context23) {
1523
+ return _regenerator.default.wrap(function _callee23$(_context24) {
1593
1524
  while (1) {
1594
- switch (_context23.prev = _context23.next) {
1525
+ switch (_context24.prev = _context24.next) {
1595
1526
  case 0:
1596
1527
  console.log("Loading workers source...");
1597
1528
  if (!this.options.draco) {
1598
- _context23.next = 10;
1529
+ _context24.next = 10;
1599
1530
  break;
1600
1531
  }
1601
1532
  url = (0, _workerUtils.getWorkerURL)(_draco.DracoWriterWorker, _objectSpread({}, (0, _core.getLoaderOptions)()));
1602
- _context23.next = 5;
1533
+ _context24.next = 5;
1603
1534
  return (0, _core.fetchFile)(url);
1604
1535
  case 5:
1605
- _sourceResponse = _context23.sent;
1606
- _context23.next = 8;
1536
+ _sourceResponse = _context24.sent;
1537
+ _context24.next = 8;
1607
1538
  return _sourceResponse.text();
1608
1539
  case 8:
1609
- _source = _context23.sent;
1540
+ _source = _context24.sent;
1610
1541
  this.workerSource.draco = _source;
1611
1542
  case 10:
1612
1543
  if (!this.generateTextures) {
1613
- _context23.next = 19;
1544
+ _context24.next = 19;
1614
1545
  break;
1615
1546
  }
1616
1547
  _url = (0, _workerUtils.getWorkerURL)(_textures.KTX2BasisWriterWorker, _objectSpread({}, (0, _core.getLoaderOptions)()));
1617
- _context23.next = 14;
1548
+ _context24.next = 14;
1618
1549
  return (0, _core.fetchFile)(_url);
1619
1550
  case 14:
1620
- _sourceResponse2 = _context23.sent;
1621
- _context23.next = 17;
1551
+ _sourceResponse2 = _context24.sent;
1552
+ _context24.next = 17;
1622
1553
  return _sourceResponse2.text();
1623
1554
  case 17:
1624
- _source2 = _context23.sent;
1555
+ _source2 = _context24.sent;
1625
1556
  this.workerSource.ktx2 = _source2;
1626
1557
  case 19:
1627
1558
  i3sAttributesWorkerUrl = (0, _workerUtils.getWorkerURL)(_i3sAttributesWorker.I3SAttributesWorker, _objectSpread({}, (0, _core.getLoaderOptions)()));
1628
- _context23.next = 22;
1559
+ _context24.next = 22;
1629
1560
  return (0, _core.fetchFile)(i3sAttributesWorkerUrl);
1630
1561
  case 22:
1631
- sourceResponse = _context23.sent;
1632
- _context23.next = 25;
1562
+ sourceResponse = _context24.sent;
1563
+ _context24.next = 25;
1633
1564
  return sourceResponse.text();
1634
1565
  case 25:
1635
- source = _context23.sent;
1566
+ source = _context24.sent;
1636
1567
  this.workerSource.I3SAttributes = source;
1637
1568
  console.log("Loading workers source completed!");
1638
1569
  case 28:
1639
1570
  case "end":
1640
- return _context23.stop();
1571
+ return _context24.stop();
1641
1572
  }
1642
1573
  }
1643
1574
  }, _callee23, this);