@loaders.gl/tiles 3.1.0-beta.2 → 3.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (45) hide show
  1. package/dist/bundle.js +4 -0
  2. package/dist/es5/bundle.js +1 -1
  3. package/dist/es5/bundle.js.map +1 -1
  4. package/dist/es5/constants.js +6 -6
  5. package/dist/es5/constants.js.map +1 -1
  6. package/dist/es5/index.js +13 -13
  7. package/dist/es5/tileset/helpers/bounding-volume.js +37 -25
  8. package/dist/es5/tileset/helpers/bounding-volume.js.map +1 -1
  9. package/dist/es5/tileset/helpers/frame-state.js +25 -29
  10. package/dist/es5/tileset/helpers/frame-state.js.map +1 -1
  11. package/dist/es5/tileset/helpers/i3s-lod.js +44 -42
  12. package/dist/es5/tileset/helpers/i3s-lod.js.map +1 -1
  13. package/dist/es5/tileset/helpers/tiles-3d-lod.js +47 -51
  14. package/dist/es5/tileset/helpers/tiles-3d-lod.js.map +1 -1
  15. package/dist/es5/tileset/helpers/transform-utils.js +11 -17
  16. package/dist/es5/tileset/helpers/transform-utils.js.map +1 -1
  17. package/dist/es5/tileset/helpers/zoom.js +15 -17
  18. package/dist/es5/tileset/helpers/zoom.js.map +1 -1
  19. package/dist/es5/tileset/tile-3d.js +423 -328
  20. package/dist/es5/tileset/tile-3d.js.map +1 -1
  21. package/dist/es5/tileset/tileset-3d.js +563 -381
  22. package/dist/es5/tileset/tileset-3d.js.map +1 -1
  23. package/dist/es5/tileset/tileset-cache.js +63 -50
  24. package/dist/es5/tileset/tileset-cache.js.map +1 -1
  25. package/dist/es5/tileset/traversers/i3s-tile-manager.js +44 -32
  26. package/dist/es5/tileset/traversers/i3s-tile-manager.js.map +1 -1
  27. package/dist/es5/tileset/traversers/i3s-tileset-traverser.js +143 -53
  28. package/dist/es5/tileset/traversers/i3s-tileset-traverser.js.map +1 -1
  29. package/dist/es5/tileset/traversers/tileset-3d-traverser.js +62 -34
  30. package/dist/es5/tileset/traversers/tileset-3d-traverser.js.map +1 -1
  31. package/dist/es5/tileset/traversers/tileset-traverser.js +282 -209
  32. package/dist/es5/tileset/traversers/tileset-traverser.js.map +1 -1
  33. package/dist/es5/utils/doubly-linked-list-node.js +11 -11
  34. package/dist/es5/utils/doubly-linked-list-node.js.map +1 -1
  35. package/dist/es5/utils/doubly-linked-list.js +76 -64
  36. package/dist/es5/utils/doubly-linked-list.js.map +1 -1
  37. package/dist/es5/utils/managed-array.js +106 -86
  38. package/dist/es5/utils/managed-array.js.map +1 -1
  39. package/dist/esm/tileset/tile-3d.js +3 -0
  40. package/dist/esm/tileset/tile-3d.js.map +1 -1
  41. package/dist/tileset/tile-3d.d.ts +1 -0
  42. package/dist/tileset/tile-3d.d.ts.map +1 -1
  43. package/dist/tileset/tile-3d.js +1 -0
  44. package/package.json +4 -4
  45. package/src/tileset/tile-3d.ts +2 -0
@@ -7,6 +7,14 @@ Object.defineProperty(exports, "__esModule", {
7
7
  });
8
8
  exports.default = void 0;
9
9
 
10
+ var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
11
+
12
+ var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
13
+
14
+ var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
15
+
16
+ var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
17
+
10
18
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
11
19
 
12
20
  var _core = require("@math.gl/core");
@@ -35,17 +43,29 @@ var _i3sTilesetTraverser = _interopRequireDefault(require("./traversers/i3s-tile
35
43
 
36
44
  var _constants = require("../constants");
37
45
 
38
- const DEFAULT_PROPS = {
46
+ 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; } } }; }
47
+
48
+ 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); }
49
+
50
+ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
51
+
52
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
53
+
54
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
55
+
56
+ var DEFAULT_PROPS = {
39
57
  description: '',
40
58
  ellipsoid: _geospatial.Ellipsoid.WGS84,
41
59
  modelMatrix: new _core.Matrix4(),
42
60
  throttleRequests: true,
43
61
  maxRequests: 64,
44
62
  maximumMemoryUsage: 32,
45
- onTileLoad: () => {},
46
- onTileUnload: () => {},
47
- onTileError: () => {},
48
- onTraversalComplete: selectedTiles => selectedTiles,
63
+ onTileLoad: function onTileLoad() {},
64
+ onTileUnload: function onTileUnload() {},
65
+ onTileError: function onTileError() {},
66
+ onTraversalComplete: function onTraversalComplete(selectedTiles) {
67
+ return selectedTiles;
68
+ },
49
69
  contentLoader: undefined,
50
70
  viewDistanceScale: 1.0,
51
71
  maximumScreenSpaceError: 8,
@@ -59,19 +79,20 @@ const DEFAULT_PROPS = {
59
79
  basePath: '',
60
80
  i3s: {}
61
81
  };
62
- const TILES_TOTAL = 'Tiles In Tileset(s)';
63
- const TILES_IN_MEMORY = 'Tiles In Memory';
64
- const TILES_IN_VIEW = 'Tiles In View';
65
- const TILES_RENDERABLE = 'Tiles To Render';
66
- const TILES_LOADED = 'Tiles Loaded';
67
- const TILES_LOADING = 'Tiles Loading';
68
- const TILES_UNLOADED = 'Tiles Unloaded';
69
- const TILES_LOAD_FAILED = 'Failed Tile Loads';
70
- const POINTS_COUNT = 'Points';
71
- const TILES_GPU_MEMORY = 'Tile Memory Use';
72
-
73
- class Tileset3D {
74
- constructor(json, options) {
82
+ var TILES_TOTAL = 'Tiles In Tileset(s)';
83
+ var TILES_IN_MEMORY = 'Tiles In Memory';
84
+ var TILES_IN_VIEW = 'Tiles In View';
85
+ var TILES_RENDERABLE = 'Tiles To Render';
86
+ var TILES_LOADED = 'Tiles Loaded';
87
+ var TILES_LOADING = 'Tiles Loading';
88
+ var TILES_UNLOADED = 'Tiles Unloaded';
89
+ var TILES_LOAD_FAILED = 'Failed Tile Loads';
90
+ var POINTS_COUNT = 'Points';
91
+ var TILES_GPU_MEMORY = 'Tile Memory Use';
92
+
93
+ var Tileset3D = function () {
94
+ function Tileset3D(json, options) {
95
+ (0, _classCallCheck2.default)(this, Tileset3D);
75
96
  (0, _defineProperty2.default)(this, "options", void 0);
76
97
  (0, _defineProperty2.default)(this, "loadOptions", void 0);
77
98
  (0, _defineProperty2.default)(this, "type", void 0);
@@ -117,9 +138,7 @@ class Tileset3D {
117
138
  (0, _defineProperty2.default)(this, "frameStateData", void 0);
118
139
  (0, _defineProperty2.default)(this, "maximumMemoryUsage", void 0);
119
140
  (0, _loaderUtils.assert)(json);
120
- this.options = { ...DEFAULT_PROPS,
121
- ...options
122
- };
141
+ this.options = _objectSpread(_objectSpread({}, DEFAULT_PROPS), options);
123
142
  this.tileset = json;
124
143
  this.loader = json.loader;
125
144
  this.type = json.type;
@@ -173,473 +192,636 @@ class Tileset3D {
173
192
  this._initializeTileSet(json);
174
193
  }
175
194
 
176
- destroy() {
177
- this._destroy();
178
- }
179
-
180
- isLoaded() {
181
- return this._pendingCount === 0 && this._frameNumber !== 0;
182
- }
183
-
184
- get tiles() {
185
- return Object.values(this._tiles);
186
- }
187
-
188
- get frameNumber() {
189
- return this._frameNumber;
190
- }
191
-
192
- get queryParams() {
193
- if (!this._queryParamsString) {
194
- this._queryParamsString = getQueryParamString(this._queryParams);
195
+ (0, _createClass2.default)(Tileset3D, [{
196
+ key: "destroy",
197
+ value: function destroy() {
198
+ this._destroy();
195
199
  }
196
-
197
- return this._queryParamsString;
198
- }
199
-
200
- setProps(props) {
201
- this.options = { ...this.options,
202
- ...props
203
- };
204
- }
205
-
206
- setOptions(options) {
207
- this.options = { ...this.options,
208
- ...options
209
- };
210
- }
211
-
212
- getTileUrl(tilePath) {
213
- const isDataUrl = tilePath.startsWith('data:');
214
-
215
- if (isDataUrl) {
216
- return tilePath;
200
+ }, {
201
+ key: "isLoaded",
202
+ value: function isLoaded() {
203
+ return this._pendingCount === 0 && this._frameNumber !== 0;
217
204
  }
218
-
219
- return "".concat(tilePath).concat(this.queryParams);
220
- }
221
-
222
- hasExtension(extensionName) {
223
- return Boolean(this._extensionsUsed && this._extensionsUsed.indexOf(extensionName) > -1);
224
- }
225
-
226
- update(viewports) {
227
- if ('loadTiles' in this.options && !this.options.loadTiles) {
228
- return;
205
+ }, {
206
+ key: "tiles",
207
+ get: function get() {
208
+ return Object.values(this._tiles);
229
209
  }
230
-
231
- if (this.traverseCounter > 0) {
232
- return;
210
+ }, {
211
+ key: "frameNumber",
212
+ get: function get() {
213
+ return this._frameNumber;
233
214
  }
215
+ }, {
216
+ key: "queryParams",
217
+ get: function get() {
218
+ if (!this._queryParamsString) {
219
+ this._queryParamsString = getQueryParamString(this._queryParams);
220
+ }
234
221
 
235
- if (!viewports && this.lastUpdatedVieports) {
236
- viewports = this.lastUpdatedVieports;
237
- } else {
238
- this.lastUpdatedVieports = viewports;
222
+ return this._queryParamsString;
239
223
  }
240
-
241
- if (!(viewports instanceof Array)) {
242
- viewports = [viewports];
224
+ }, {
225
+ key: "setProps",
226
+ value: function setProps(props) {
227
+ this.options = _objectSpread(_objectSpread({}, this.options), props);
243
228
  }
244
-
245
- this._cache.reset();
246
-
247
- this._frameNumber++;
248
- this.traverseCounter = viewports.length;
249
- const viewportsToTraverse = [];
250
-
251
- for (const viewport of viewports) {
252
- const id = viewport.id;
253
-
254
- if (this._needTraverse(id)) {
255
- viewportsToTraverse.push(id);
256
- } else {
257
- this.traverseCounter--;
258
- }
229
+ }, {
230
+ key: "setOptions",
231
+ value: function setOptions(options) {
232
+ this.options = _objectSpread(_objectSpread({}, this.options), options);
259
233
  }
234
+ }, {
235
+ key: "getTileUrl",
236
+ value: function getTileUrl(tilePath) {
237
+ var isDataUrl = tilePath.startsWith('data:');
260
238
 
261
- for (const viewport of viewports) {
262
- const id = viewport.id;
263
-
264
- if (!this.roots[id]) {
265
- this.roots[id] = this._initializeTileHeaders(this.tileset, null);
239
+ if (isDataUrl) {
240
+ return tilePath;
266
241
  }
267
242
 
268
- if (!viewportsToTraverse.includes(id)) {
269
- continue;
243
+ return "".concat(tilePath).concat(this.queryParams);
244
+ }
245
+ }, {
246
+ key: "hasExtension",
247
+ value: function hasExtension(extensionName) {
248
+ return Boolean(this._extensionsUsed && this._extensionsUsed.indexOf(extensionName) > -1);
249
+ }
250
+ }, {
251
+ key: "update",
252
+ value: function update(viewports) {
253
+ if ('loadTiles' in this.options && !this.options.loadTiles) {
254
+ return;
270
255
  }
271
256
 
272
- const frameState = (0, _frameState.getFrameState)(viewport, this._frameNumber);
273
-
274
- this._traverser.traverse(this.roots[id], frameState, this.options);
275
- }
276
- }
257
+ if (this.traverseCounter > 0) {
258
+ return;
259
+ }
277
260
 
278
- _needTraverse(viewportId) {
279
- let traverserId = viewportId;
261
+ if (!viewports && this.lastUpdatedVieports) {
262
+ viewports = this.lastUpdatedVieports;
263
+ } else {
264
+ this.lastUpdatedVieports = viewports;
265
+ }
280
266
 
281
- if (this.options.viewportTraversersMap) {
282
- traverserId = this.options.viewportTraversersMap[viewportId];
283
- }
267
+ if (!(viewports instanceof Array)) {
268
+ viewports = [viewports];
269
+ }
284
270
 
285
- if (traverserId !== viewportId) {
286
- return false;
287
- }
271
+ this._cache.reset();
288
272
 
289
- return true;
290
- }
273
+ this._frameNumber++;
274
+ this.traverseCounter = viewports.length;
275
+ var viewportsToTraverse = [];
291
276
 
292
- _onTraversalEnd(frameState) {
293
- const id = frameState.viewport.id;
277
+ var _iterator = _createForOfIteratorHelper(viewports),
278
+ _step;
294
279
 
295
- if (!this.frameStateData[id]) {
296
- this.frameStateData[id] = {
297
- selectedTiles: [],
298
- _requestedTiles: [],
299
- _emptyTiles: []
300
- };
301
- }
280
+ try {
281
+ for (_iterator.s(); !(_step = _iterator.n()).done;) {
282
+ var viewport = _step.value;
283
+ var _id = viewport.id;
302
284
 
303
- const currentFrameStateData = this.frameStateData[id];
304
- const selectedTiles = Object.values(this._traverser.selectedTiles);
305
- currentFrameStateData.selectedTiles = selectedTiles;
306
- currentFrameStateData._requestedTiles = Object.values(this._traverser.requestedTiles);
307
- currentFrameStateData._emptyTiles = Object.values(this._traverser.emptyTiles);
308
- this.traverseCounter--;
285
+ if (this._needTraverse(_id)) {
286
+ viewportsToTraverse.push(_id);
287
+ } else {
288
+ this.traverseCounter--;
289
+ }
290
+ }
291
+ } catch (err) {
292
+ _iterator.e(err);
293
+ } finally {
294
+ _iterator.f();
295
+ }
309
296
 
310
- if (this.traverseCounter > 0) {
311
- return;
312
- }
297
+ var _iterator2 = _createForOfIteratorHelper(viewports),
298
+ _step2;
313
299
 
314
- this._updateTiles();
315
- }
300
+ try {
301
+ for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
302
+ var _viewport = _step2.value;
303
+ var _id2 = _viewport.id;
316
304
 
317
- _updateTiles() {
318
- this.selectedTiles = [];
319
- this._requestedTiles = [];
320
- this._emptyTiles = [];
305
+ if (!this.roots[_id2]) {
306
+ this.roots[_id2] = this._initializeTileHeaders(this.tileset, null);
307
+ }
321
308
 
322
- for (const frameStateKey in this.frameStateData) {
323
- const frameStateDataValue = this.frameStateData[frameStateKey];
324
- this.selectedTiles = this.selectedTiles.concat(frameStateDataValue.selectedTiles);
325
- this._requestedTiles = this._requestedTiles.concat(frameStateDataValue._requestedTiles);
326
- this._emptyTiles = this._emptyTiles.concat(frameStateDataValue._emptyTiles);
327
- }
309
+ if (!viewportsToTraverse.includes(_id2)) {
310
+ continue;
311
+ }
328
312
 
329
- this.selectedTiles = this.options.onTraversalComplete(this.selectedTiles);
313
+ var frameState = (0, _frameState.getFrameState)(_viewport, this._frameNumber);
330
314
 
331
- for (const tile of this.selectedTiles) {
332
- this._tiles[tile.id] = tile;
315
+ this._traverser.traverse(this.roots[_id2], frameState, this.options);
316
+ }
317
+ } catch (err) {
318
+ _iterator2.e(err);
319
+ } finally {
320
+ _iterator2.f();
321
+ }
333
322
  }
323
+ }, {
324
+ key: "_needTraverse",
325
+ value: function _needTraverse(viewportId) {
326
+ var traverserId = viewportId;
334
327
 
335
- this._loadTiles();
336
-
337
- this._unloadTiles();
328
+ if (this.options.viewportTraversersMap) {
329
+ traverserId = this.options.viewportTraversersMap[viewportId];
330
+ }
338
331
 
339
- this._updateStats();
340
- }
332
+ if (traverserId !== viewportId) {
333
+ return false;
334
+ }
341
335
 
342
- _tilesChanged(oldSelectedTiles, selectedTiles) {
343
- if (oldSelectedTiles.length !== selectedTiles.length) {
344
336
  return true;
345
337
  }
338
+ }, {
339
+ key: "_onTraversalEnd",
340
+ value: function _onTraversalEnd(frameState) {
341
+ var id = frameState.viewport.id;
342
+
343
+ if (!this.frameStateData[id]) {
344
+ this.frameStateData[id] = {
345
+ selectedTiles: [],
346
+ _requestedTiles: [],
347
+ _emptyTiles: []
348
+ };
349
+ }
346
350
 
347
- const set1 = new Set(oldSelectedTiles.map(t => t.id));
348
- const set2 = new Set(selectedTiles.map(t => t.id));
349
- let changed = oldSelectedTiles.filter(x => !set2.has(x.id)).length > 0;
350
- changed = changed || selectedTiles.filter(x => !set1.has(x.id)).length > 0;
351
- return changed;
352
- }
351
+ var currentFrameStateData = this.frameStateData[id];
352
+ var selectedTiles = Object.values(this._traverser.selectedTiles);
353
+ currentFrameStateData.selectedTiles = selectedTiles;
354
+ currentFrameStateData._requestedTiles = Object.values(this._traverser.requestedTiles);
355
+ currentFrameStateData._emptyTiles = Object.values(this._traverser.emptyTiles);
356
+ this.traverseCounter--;
353
357
 
354
- _loadTiles() {
355
- for (const tile of this._requestedTiles) {
356
- if (tile.contentUnloaded) {
357
- this._loadTile(tile);
358
+ if (this.traverseCounter > 0) {
359
+ return;
358
360
  }
361
+
362
+ this._updateTiles();
359
363
  }
360
- }
364
+ }, {
365
+ key: "_updateTiles",
366
+ value: function _updateTiles() {
367
+ this.selectedTiles = [];
368
+ this._requestedTiles = [];
369
+ this._emptyTiles = [];
361
370
 
362
- _unloadTiles() {
363
- this._cache.unloadTiles(this, (tileset, tile) => tileset._unloadTile(tile));
364
- }
371
+ for (var frameStateKey in this.frameStateData) {
372
+ var frameStateDataValue = this.frameStateData[frameStateKey];
373
+ this.selectedTiles = this.selectedTiles.concat(frameStateDataValue.selectedTiles);
374
+ this._requestedTiles = this._requestedTiles.concat(frameStateDataValue._requestedTiles);
375
+ this._emptyTiles = this._emptyTiles.concat(frameStateDataValue._emptyTiles);
376
+ }
365
377
 
366
- _updateStats() {
367
- let tilesRenderable = 0;
368
- let pointsRenderable = 0;
378
+ this.selectedTiles = this.options.onTraversalComplete(this.selectedTiles);
369
379
 
370
- for (const tile of this.selectedTiles) {
371
- if (tile.contentAvailable && tile.content) {
372
- tilesRenderable++;
380
+ var _iterator3 = _createForOfIteratorHelper(this.selectedTiles),
381
+ _step3;
373
382
 
374
- if (tile.content.pointCount) {
375
- pointsRenderable += tile.content.pointCount;
383
+ try {
384
+ for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
385
+ var _tile = _step3.value;
386
+ this._tiles[_tile.id] = _tile;
376
387
  }
388
+ } catch (err) {
389
+ _iterator3.e(err);
390
+ } finally {
391
+ _iterator3.f();
377
392
  }
378
- }
379
393
 
380
- this.stats.get(TILES_IN_VIEW).count = this.selectedTiles.length;
381
- this.stats.get(TILES_RENDERABLE).count = tilesRenderable;
382
- this.stats.get(POINTS_COUNT).count = pointsRenderable;
383
- }
394
+ this._loadTiles();
384
395
 
385
- _initializeTileSet(tilesetJson) {
386
- this.root = this._initializeTileHeaders(tilesetJson, null);
396
+ this._unloadTiles();
387
397
 
388
- if (this.type === _constants.TILESET_TYPE.TILES3D) {
389
- this._initializeCesiumTileset(tilesetJson);
398
+ this._updateStats();
390
399
  }
400
+ }, {
401
+ key: "_tilesChanged",
402
+ value: function _tilesChanged(oldSelectedTiles, selectedTiles) {
403
+ if (oldSelectedTiles.length !== selectedTiles.length) {
404
+ return true;
405
+ }
391
406
 
392
- if (this.type === _constants.TILESET_TYPE.I3S) {
393
- this._initializeI3STileset();
407
+ var set1 = new Set(oldSelectedTiles.map(function (t) {
408
+ return t.id;
409
+ }));
410
+ var set2 = new Set(selectedTiles.map(function (t) {
411
+ return t.id;
412
+ }));
413
+ var changed = oldSelectedTiles.filter(function (x) {
414
+ return !set2.has(x.id);
415
+ }).length > 0;
416
+ changed = changed || selectedTiles.filter(function (x) {
417
+ return !set1.has(x.id);
418
+ }).length > 0;
419
+ return changed;
420
+ }
421
+ }, {
422
+ key: "_loadTiles",
423
+ value: function _loadTiles() {
424
+ var _iterator4 = _createForOfIteratorHelper(this._requestedTiles),
425
+ _step4;
426
+
427
+ try {
428
+ for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {
429
+ var _tile2 = _step4.value;
430
+
431
+ if (_tile2.contentUnloaded) {
432
+ this._loadTile(_tile2);
433
+ }
434
+ }
435
+ } catch (err) {
436
+ _iterator4.e(err);
437
+ } finally {
438
+ _iterator4.f();
439
+ }
394
440
  }
441
+ }, {
442
+ key: "_unloadTiles",
443
+ value: function _unloadTiles() {
444
+ this._cache.unloadTiles(this, function (tileset, tile) {
445
+ return tileset._unloadTile(tile);
446
+ });
447
+ }
448
+ }, {
449
+ key: "_updateStats",
450
+ value: function _updateStats() {
451
+ var tilesRenderable = 0;
452
+ var pointsRenderable = 0;
453
+
454
+ var _iterator5 = _createForOfIteratorHelper(this.selectedTiles),
455
+ _step5;
456
+
457
+ try {
458
+ for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) {
459
+ var _tile3 = _step5.value;
460
+
461
+ if (_tile3.contentAvailable && _tile3.content) {
462
+ tilesRenderable++;
463
+
464
+ if (_tile3.content.pointCount) {
465
+ pointsRenderable += _tile3.content.pointCount;
466
+ }
467
+ }
468
+ }
469
+ } catch (err) {
470
+ _iterator5.e(err);
471
+ } finally {
472
+ _iterator5.f();
473
+ }
395
474
 
396
- this._calculateViewProps();
397
- }
398
-
399
- _calculateViewProps() {
400
- const root = this.root;
401
- (0, _loaderUtils.assert)(root);
402
- const {
403
- center
404
- } = root.boundingVolume;
405
-
406
- if (!center) {
407
- console.warn('center was not pre-calculated for the root tile');
408
- this.cartographicCenter = new _core.Vector3();
409
- this.zoom = 1;
410
- return;
475
+ this.stats.get(TILES_IN_VIEW).count = this.selectedTiles.length;
476
+ this.stats.get(TILES_RENDERABLE).count = tilesRenderable;
477
+ this.stats.get(POINTS_COUNT).count = pointsRenderable;
411
478
  }
479
+ }, {
480
+ key: "_initializeTileSet",
481
+ value: function _initializeTileSet(tilesetJson) {
482
+ this.root = this._initializeTileHeaders(tilesetJson, null);
412
483
 
413
- this.cartographicCenter = _geospatial.Ellipsoid.WGS84.cartesianToCartographic(center, new _core.Vector3());
414
- this.cartesianCenter = center;
415
- this.zoom = (0, _zoom.getZoomFromBoundingVolume)(root.boundingVolume);
416
- }
417
-
418
- _initializeStats() {
419
- this.stats.get(TILES_TOTAL);
420
- this.stats.get(TILES_LOADING);
421
- this.stats.get(TILES_IN_MEMORY);
422
- this.stats.get(TILES_IN_VIEW);
423
- this.stats.get(TILES_RENDERABLE);
424
- this.stats.get(TILES_LOADED);
425
- this.stats.get(TILES_UNLOADED);
426
- this.stats.get(TILES_LOAD_FAILED);
427
- this.stats.get(POINTS_COUNT, 'memory');
428
- this.stats.get(TILES_GPU_MEMORY, 'memory');
429
- }
484
+ if (this.type === _constants.TILESET_TYPE.TILES3D) {
485
+ this._initializeCesiumTileset(tilesetJson);
486
+ }
430
487
 
431
- _initializeTileHeaders(tilesetJson, parentTileHeader) {
432
- const rootTile = new _tile3d.default(this, tilesetJson.root, parentTileHeader);
488
+ if (this.type === _constants.TILESET_TYPE.I3S) {
489
+ this._initializeI3STileset();
490
+ }
433
491
 
434
- if (parentTileHeader) {
435
- parentTileHeader.children.push(rootTile);
436
- rootTile.depth = parentTileHeader.depth + 1;
492
+ this._calculateViewProps();
437
493
  }
494
+ }, {
495
+ key: "_calculateViewProps",
496
+ value: function _calculateViewProps() {
497
+ var root = this.root;
498
+ (0, _loaderUtils.assert)(root);
499
+ var center = root.boundingVolume.center;
438
500
 
439
- if (this.type === _constants.TILESET_TYPE.TILES3D) {
440
- const stack = [];
441
- stack.push(rootTile);
442
-
443
- while (stack.length > 0) {
444
- const tile = stack.pop();
445
- this.stats.get(TILES_TOTAL).incrementCount();
446
- const children = tile.header.children || [];
447
-
448
- for (const childHeader of children) {
449
- const childTile = new _tile3d.default(this, childHeader, tile);
450
- tile.children.push(childTile);
451
- childTile.depth = tile.depth + 1;
452
- stack.push(childTile);
453
- }
501
+ if (!center) {
502
+ console.warn('center was not pre-calculated for the root tile');
503
+ this.cartographicCenter = new _core.Vector3();
504
+ this.zoom = 1;
505
+ return;
454
506
  }
455
- }
456
507
 
457
- return rootTile;
458
- }
508
+ this.cartographicCenter = _geospatial.Ellipsoid.WGS84.cartesianToCartographic(center, new _core.Vector3());
509
+ this.cartesianCenter = center;
510
+ this.zoom = (0, _zoom.getZoomFromBoundingVolume)(root.boundingVolume);
511
+ }
512
+ }, {
513
+ key: "_initializeStats",
514
+ value: function _initializeStats() {
515
+ this.stats.get(TILES_TOTAL);
516
+ this.stats.get(TILES_LOADING);
517
+ this.stats.get(TILES_IN_MEMORY);
518
+ this.stats.get(TILES_IN_VIEW);
519
+ this.stats.get(TILES_RENDERABLE);
520
+ this.stats.get(TILES_LOADED);
521
+ this.stats.get(TILES_UNLOADED);
522
+ this.stats.get(TILES_LOAD_FAILED);
523
+ this.stats.get(POINTS_COUNT, 'memory');
524
+ this.stats.get(TILES_GPU_MEMORY, 'memory');
525
+ }
526
+ }, {
527
+ key: "_initializeTileHeaders",
528
+ value: function _initializeTileHeaders(tilesetJson, parentTileHeader) {
529
+ var rootTile = new _tile3d.default(this, tilesetJson.root, parentTileHeader);
530
+
531
+ if (parentTileHeader) {
532
+ parentTileHeader.children.push(rootTile);
533
+ rootTile.depth = parentTileHeader.depth + 1;
534
+ }
459
535
 
460
- _initializeTraverser() {
461
- let TraverserClass;
462
- const type = this.type;
536
+ if (this.type === _constants.TILESET_TYPE.TILES3D) {
537
+ var stack = [];
538
+ stack.push(rootTile);
463
539
 
464
- switch (type) {
465
- case _constants.TILESET_TYPE.TILES3D:
466
- TraverserClass = _tileset3dTraverser.default;
467
- break;
540
+ while (stack.length > 0) {
541
+ var _tile4 = stack.pop();
468
542
 
469
- case _constants.TILESET_TYPE.I3S:
470
- TraverserClass = _i3sTilesetTraverser.default;
471
- break;
543
+ this.stats.get(TILES_TOTAL).incrementCount();
544
+ var children = _tile4.header.children || [];
472
545
 
473
- default:
474
- TraverserClass = _tilesetTraverser.default;
475
- }
546
+ var _iterator6 = _createForOfIteratorHelper(children),
547
+ _step6;
476
548
 
477
- return new TraverserClass({
478
- basePath: this.basePath,
479
- onTraversalEnd: this._onTraversalEnd.bind(this)
480
- });
481
- }
549
+ try {
550
+ for (_iterator6.s(); !(_step6 = _iterator6.n()).done;) {
551
+ var childHeader = _step6.value;
552
+ var childTile = new _tile3d.default(this, childHeader, _tile4);
482
553
 
483
- _destroyTileHeaders(parentTile) {
484
- this._destroySubtree(parentTile);
485
- }
554
+ _tile4.children.push(childTile);
486
555
 
487
- async _loadTile(tile) {
488
- let loaded;
556
+ childTile.depth = _tile4.depth + 1;
557
+ stack.push(childTile);
558
+ }
559
+ } catch (err) {
560
+ _iterator6.e(err);
561
+ } finally {
562
+ _iterator6.f();
563
+ }
564
+ }
565
+ }
489
566
 
490
- try {
491
- this._onStartTileLoading();
567
+ return rootTile;
568
+ }
569
+ }, {
570
+ key: "_initializeTraverser",
571
+ value: function _initializeTraverser() {
572
+ var TraverserClass;
573
+ var type = this.type;
492
574
 
493
- loaded = await tile.loadContent();
494
- } catch (error) {
495
- this._onTileLoadError(tile, error);
496
- } finally {
497
- this._onEndTileLoading();
575
+ switch (type) {
576
+ case _constants.TILESET_TYPE.TILES3D:
577
+ TraverserClass = _tileset3dTraverser.default;
578
+ break;
498
579
 
499
- this._onTileLoad(tile, loaded);
500
- }
501
- }
580
+ case _constants.TILESET_TYPE.I3S:
581
+ TraverserClass = _i3sTilesetTraverser.default;
582
+ break;
502
583
 
503
- _onTileLoadError(tile, error) {
504
- this.stats.get(TILES_LOAD_FAILED).incrementCount();
505
- const message = error.message || error.toString();
506
- const url = tile.url;
507
- console.error("A 3D tile failed to load: ".concat(tile.url, " ").concat(message));
508
- this.options.onTileError(tile, message, url);
509
- }
584
+ default:
585
+ TraverserClass = _tilesetTraverser.default;
586
+ }
510
587
 
511
- _onTileLoad(tile, loaded) {
512
- if (!loaded) {
513
- return;
588
+ return new TraverserClass({
589
+ basePath: this.basePath,
590
+ onTraversalEnd: this._onTraversalEnd.bind(this)
591
+ });
514
592
  }
515
-
516
- if (tile && tile.content) {
517
- (0, _transformUtils.calculateTransformProps)(tile, tile.content);
593
+ }, {
594
+ key: "_destroyTileHeaders",
595
+ value: function _destroyTileHeaders(parentTile) {
596
+ this._destroySubtree(parentTile);
518
597
  }
598
+ }, {
599
+ key: "_loadTile",
600
+ value: function () {
601
+ var _loadTile2 = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee(tile) {
602
+ var loaded;
603
+ return _regenerator.default.wrap(function _callee$(_context) {
604
+ while (1) {
605
+ switch (_context.prev = _context.next) {
606
+ case 0:
607
+ _context.prev = 0;
519
608
 
520
- this._addTileToCache(tile);
609
+ this._onStartTileLoading();
521
610
 
522
- this.options.onTileLoad(tile);
523
- }
611
+ _context.next = 4;
612
+ return tile.loadContent();
524
613
 
525
- _onStartTileLoading() {
526
- this._pendingCount++;
527
- this.stats.get(TILES_LOADING).incrementCount();
528
- }
614
+ case 4:
615
+ loaded = _context.sent;
616
+ _context.next = 10;
617
+ break;
529
618
 
530
- _onEndTileLoading() {
531
- this._pendingCount--;
532
- this.stats.get(TILES_LOADING).decrementCount();
533
- }
619
+ case 7:
620
+ _context.prev = 7;
621
+ _context.t0 = _context["catch"](0);
534
622
 
535
- _addTileToCache(tile) {
536
- this._cache.add(this, tile, tileset => tileset._updateCacheStats(tile));
537
- }
623
+ this._onTileLoadError(tile, _context.t0);
538
624
 
539
- _updateCacheStats(tile) {
540
- this.stats.get(TILES_LOADED).incrementCount();
541
- this.stats.get(TILES_IN_MEMORY).incrementCount();
542
- this.gpuMemoryUsageInBytes += tile.content.byteLength || 0;
543
- this.stats.get(TILES_GPU_MEMORY).count = this.gpuMemoryUsageInBytes;
544
- }
625
+ case 10:
626
+ _context.prev = 10;
545
627
 
546
- _unloadTile(tile) {
547
- this.gpuMemoryUsageInBytes -= tile.content && tile.content.byteLength || 0;
548
- this.stats.get(TILES_IN_MEMORY).decrementCount();
549
- this.stats.get(TILES_UNLOADED).incrementCount();
550
- this.stats.get(TILES_GPU_MEMORY).count = this.gpuMemoryUsageInBytes;
551
- this.options.onTileUnload(tile);
552
- tile.unloadContent();
553
- }
628
+ this._onEndTileLoading();
554
629
 
555
- _destroy() {
556
- const stack = [];
630
+ this._onTileLoad(tile, loaded);
557
631
 
558
- if (this.root) {
559
- stack.push(this.root);
560
- }
632
+ return _context.finish(10);
561
633
 
562
- while (stack.length > 0) {
563
- const tile = stack.pop();
634
+ case 14:
635
+ case "end":
636
+ return _context.stop();
637
+ }
638
+ }
639
+ }, _callee, this, [[0, 7, 10, 14]]);
640
+ }));
564
641
 
565
- for (const child of tile.children) {
566
- stack.push(child);
642
+ function _loadTile(_x) {
643
+ return _loadTile2.apply(this, arguments);
567
644
  }
568
645
 
569
- this._destroyTile(tile);
570
- }
646
+ return _loadTile;
647
+ }()
648
+ }, {
649
+ key: "_onTileLoadError",
650
+ value: function _onTileLoadError(tile, error) {
651
+ this.stats.get(TILES_LOAD_FAILED).incrementCount();
652
+ var message = error.message || error.toString();
653
+ var url = tile.url;
654
+ console.error("A 3D tile failed to load: ".concat(tile.url, " ").concat(message));
655
+ this.options.onTileError(tile, message, url);
656
+ }
657
+ }, {
658
+ key: "_onTileLoad",
659
+ value: function _onTileLoad(tile, loaded) {
660
+ if (!loaded) {
661
+ return;
662
+ }
571
663
 
572
- this.root = null;
573
- }
664
+ if (tile && tile.content) {
665
+ (0, _transformUtils.calculateTransformProps)(tile, tile.content);
666
+ }
574
667
 
575
- _destroySubtree(tile) {
576
- const root = tile;
577
- const stack = [];
578
- stack.push(root);
668
+ this._addTileToCache(tile);
669
+
670
+ this.options.onTileLoad(tile);
671
+ }
672
+ }, {
673
+ key: "_onStartTileLoading",
674
+ value: function _onStartTileLoading() {
675
+ this._pendingCount++;
676
+ this.stats.get(TILES_LOADING).incrementCount();
677
+ }
678
+ }, {
679
+ key: "_onEndTileLoading",
680
+ value: function _onEndTileLoading() {
681
+ this._pendingCount--;
682
+ this.stats.get(TILES_LOADING).decrementCount();
683
+ }
684
+ }, {
685
+ key: "_addTileToCache",
686
+ value: function _addTileToCache(tile) {
687
+ this._cache.add(this, tile, function (tileset) {
688
+ return tileset._updateCacheStats(tile);
689
+ });
690
+ }
691
+ }, {
692
+ key: "_updateCacheStats",
693
+ value: function _updateCacheStats(tile) {
694
+ this.stats.get(TILES_LOADED).incrementCount();
695
+ this.stats.get(TILES_IN_MEMORY).incrementCount();
696
+ this.gpuMemoryUsageInBytes += tile.content.byteLength || 0;
697
+ this.stats.get(TILES_GPU_MEMORY).count = this.gpuMemoryUsageInBytes;
698
+ }
699
+ }, {
700
+ key: "_unloadTile",
701
+ value: function _unloadTile(tile) {
702
+ this.gpuMemoryUsageInBytes -= tile.content && tile.content.byteLength || 0;
703
+ this.stats.get(TILES_IN_MEMORY).decrementCount();
704
+ this.stats.get(TILES_UNLOADED).incrementCount();
705
+ this.stats.get(TILES_GPU_MEMORY).count = this.gpuMemoryUsageInBytes;
706
+ this.options.onTileUnload(tile);
707
+ tile.unloadContent();
708
+ }
709
+ }, {
710
+ key: "_destroy",
711
+ value: function _destroy() {
712
+ var stack = [];
713
+
714
+ if (this.root) {
715
+ stack.push(this.root);
716
+ }
579
717
 
580
- while (stack.length > 0) {
581
- tile = stack.pop();
718
+ while (stack.length > 0) {
719
+ var _tile5 = stack.pop();
720
+
721
+ var _iterator7 = _createForOfIteratorHelper(_tile5.children),
722
+ _step7;
723
+
724
+ try {
725
+ for (_iterator7.s(); !(_step7 = _iterator7.n()).done;) {
726
+ var child = _step7.value;
727
+ stack.push(child);
728
+ }
729
+ } catch (err) {
730
+ _iterator7.e(err);
731
+ } finally {
732
+ _iterator7.f();
733
+ }
582
734
 
583
- for (const child of tile.children) {
584
- stack.push(child);
735
+ this._destroyTile(_tile5);
585
736
  }
586
737
 
587
- if (tile !== root) {
588
- this._destroyTile(tile);
589
- }
738
+ this.root = null;
590
739
  }
740
+ }, {
741
+ key: "_destroySubtree",
742
+ value: function _destroySubtree(tile) {
743
+ var root = tile;
744
+ var stack = [];
745
+ stack.push(root);
591
746
 
592
- root.children = [];
593
- }
594
-
595
- _destroyTile(tile) {
596
- this._cache.unloadTile(this, tile);
747
+ while (stack.length > 0) {
748
+ tile = stack.pop();
749
+
750
+ var _iterator8 = _createForOfIteratorHelper(tile.children),
751
+ _step8;
752
+
753
+ try {
754
+ for (_iterator8.s(); !(_step8 = _iterator8.n()).done;) {
755
+ var child = _step8.value;
756
+ stack.push(child);
757
+ }
758
+ } catch (err) {
759
+ _iterator8.e(err);
760
+ } finally {
761
+ _iterator8.f();
762
+ }
597
763
 
598
- this._unloadTile(tile);
764
+ if (tile !== root) {
765
+ this._destroyTile(tile);
766
+ }
767
+ }
599
768
 
600
- tile.destroy();
601
- }
769
+ root.children = [];
770
+ }
771
+ }, {
772
+ key: "_destroyTile",
773
+ value: function _destroyTile(tile) {
774
+ this._cache.unloadTile(this, tile);
602
775
 
603
- _initializeCesiumTileset(tilesetJson) {
604
- this.asset = tilesetJson.asset;
776
+ this._unloadTile(tile);
605
777
 
606
- if (!this.asset) {
607
- throw new Error('Tileset must have an asset property.');
778
+ tile.destroy();
608
779
  }
780
+ }, {
781
+ key: "_initializeCesiumTileset",
782
+ value: function _initializeCesiumTileset(tilesetJson) {
783
+ this.asset = tilesetJson.asset;
609
784
 
610
- if (this.asset.version !== '0.0' && this.asset.version !== '1.0') {
611
- throw new Error('The tileset must be 3D Tiles version 0.0 or 1.0.');
612
- }
785
+ if (!this.asset) {
786
+ throw new Error('Tileset must have an asset property.');
787
+ }
613
788
 
614
- if ('tilesetVersion' in this.asset) {
615
- this._queryParams.v = this.asset.tilesetVersion;
616
- }
789
+ if (this.asset.version !== '0.0' && this.asset.version !== '1.0') {
790
+ throw new Error('The tileset must be 3D Tiles version 0.0 or 1.0.');
791
+ }
617
792
 
618
- this.credits = {
619
- attributions: this.options.attributions || []
620
- };
621
- this.description = this.options.description || '';
622
- this.properties = tilesetJson.properties;
623
- this.geometricError = tilesetJson.geometricError;
624
- this._extensionsUsed = tilesetJson.extensionsUsed;
625
- this.extras = tilesetJson.extras;
626
- }
793
+ if ('tilesetVersion' in this.asset) {
794
+ this._queryParams.v = this.asset.tilesetVersion;
795
+ }
627
796
 
628
- _initializeI3STileset() {
629
- if (this.loadOptions.i3s && 'token' in this.loadOptions.i3s) {
630
- this._queryParams.token = this.loadOptions.i3s.token;
797
+ this.credits = {
798
+ attributions: this.options.attributions || []
799
+ };
800
+ this.description = this.options.description || '';
801
+ this.properties = tilesetJson.properties;
802
+ this.geometricError = tilesetJson.geometricError;
803
+ this._extensionsUsed = tilesetJson.extensionsUsed;
804
+ this.extras = tilesetJson.extras;
805
+ }
806
+ }, {
807
+ key: "_initializeI3STileset",
808
+ value: function _initializeI3STileset() {
809
+ if (this.loadOptions.i3s && 'token' in this.loadOptions.i3s) {
810
+ this._queryParams.token = this.loadOptions.i3s.token;
811
+ }
631
812
  }
632
- }
633
-
634
- }
813
+ }]);
814
+ return Tileset3D;
815
+ }();
635
816
 
636
817
  exports.default = Tileset3D;
637
818
 
638
819
  function getQueryParamString(queryParams) {
639
- const queryParamStrings = [];
820
+ var queryParamStrings = [];
640
821
 
641
- for (const key of Object.keys(queryParams)) {
642
- queryParamStrings.push("".concat(key, "=").concat(queryParams[key]));
822
+ for (var _i = 0, _Object$keys = Object.keys(queryParams); _i < _Object$keys.length; _i++) {
823
+ var _key = _Object$keys[_i];
824
+ queryParamStrings.push("".concat(_key, "=").concat(queryParams[_key]));
643
825
  }
644
826
 
645
827
  switch (queryParamStrings.length) {