@loaders.gl/tiles 3.0.9 → 3.0.13

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 (48) hide show
  1. package/dist/dist.es5.min.js +1 -1
  2. package/dist/dist.es5.min.js.map +1 -1
  3. package/dist/dist.min.js +1 -1
  4. package/dist/dist.min.js.map +1 -1
  5. package/dist/es5/bundle.js +2 -2
  6. package/dist/es5/bundle.js.map +1 -1
  7. package/dist/es5/constants.js +6 -6
  8. package/dist/es5/constants.js.map +1 -1
  9. package/dist/es5/index.js +12 -12
  10. package/dist/es5/tileset/helpers/bounding-volume.js +25 -37
  11. package/dist/es5/tileset/helpers/bounding-volume.js.map +1 -1
  12. package/dist/es5/tileset/helpers/frame-state.js +29 -25
  13. package/dist/es5/tileset/helpers/frame-state.js.map +1 -1
  14. package/dist/es5/tileset/helpers/i3s-lod.js +51 -66
  15. package/dist/es5/tileset/helpers/i3s-lod.js.map +1 -1
  16. package/dist/es5/tileset/helpers/tiles-3d-lod.js +51 -47
  17. package/dist/es5/tileset/helpers/tiles-3d-lod.js.map +1 -1
  18. package/dist/es5/tileset/helpers/transform-utils.js +17 -11
  19. package/dist/es5/tileset/helpers/transform-utils.js.map +1 -1
  20. package/dist/es5/tileset/helpers/zoom.js +17 -15
  21. package/dist/es5/tileset/helpers/zoom.js.map +1 -1
  22. package/dist/es5/tileset/tile-3d.js +328 -421
  23. package/dist/es5/tileset/tile-3d.js.map +1 -1
  24. package/dist/es5/tileset/tileset-3d.js +381 -563
  25. package/dist/es5/tileset/tileset-3d.js.map +1 -1
  26. package/dist/es5/tileset/tileset-cache.js +50 -63
  27. package/dist/es5/tileset/tileset-cache.js.map +1 -1
  28. package/dist/es5/tileset/traversers/i3s-tile-manager.js +32 -44
  29. package/dist/es5/tileset/traversers/i3s-tile-manager.js.map +1 -1
  30. package/dist/es5/tileset/traversers/i3s-tileset-traverser.js +53 -143
  31. package/dist/es5/tileset/traversers/i3s-tileset-traverser.js.map +1 -1
  32. package/dist/es5/tileset/traversers/tileset-3d-traverser.js +34 -62
  33. package/dist/es5/tileset/traversers/tileset-3d-traverser.js.map +1 -1
  34. package/dist/es5/tileset/traversers/tileset-traverser.js +209 -282
  35. package/dist/es5/tileset/traversers/tileset-traverser.js.map +1 -1
  36. package/dist/es5/utils/doubly-linked-list-node.js +7 -9
  37. package/dist/es5/utils/doubly-linked-list-node.js.map +1 -1
  38. package/dist/es5/utils/doubly-linked-list.js +64 -76
  39. package/dist/es5/utils/doubly-linked-list.js.map +1 -1
  40. package/dist/es5/utils/managed-array.js +86 -108
  41. package/dist/es5/utils/managed-array.js.map +1 -1
  42. package/dist/esm/tileset/tile-3d.js +1 -1
  43. package/dist/esm/tileset/tile-3d.js.map +1 -1
  44. package/dist/esm/tileset/tileset-3d.js +5 -5
  45. package/dist/esm/tileset/tileset-3d.js.map +1 -1
  46. package/dist/esm/tileset/traversers/i3s-tileset-traverser.js +2 -2
  47. package/dist/esm/tileset/traversers/i3s-tileset-traverser.js.map +1 -1
  48. package/package.json +5 -5
@@ -7,14 +7,6 @@ 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
-
18
10
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
19
11
 
20
12
  var _core = require("@math.gl/core");
@@ -43,29 +35,17 @@ var _i3sTilesetTraverser = _interopRequireDefault(require("./traversers/i3s-tile
43
35
 
44
36
  var _constants = require("../constants");
45
37
 
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 = {
38
+ const DEFAULT_PROPS = {
57
39
  description: '',
58
40
  ellipsoid: _geospatial.Ellipsoid.WGS84,
59
41
  modelMatrix: new _core.Matrix4(),
60
42
  throttleRequests: true,
61
43
  maxRequests: 64,
62
44
  maximumMemoryUsage: 32,
63
- onTileLoad: function onTileLoad() {},
64
- onTileUnload: function onTileUnload() {},
65
- onTileError: function onTileError() {},
66
- onTraversalComplete: function onTraversalComplete(selectedTiles) {
67
- return selectedTiles;
68
- },
45
+ onTileLoad: () => {},
46
+ onTileUnload: () => {},
47
+ onTileError: () => {},
48
+ onTraversalComplete: selectedTiles => selectedTiles,
69
49
  contentLoader: undefined,
70
50
  viewDistanceScale: 1.0,
71
51
  maximumScreenSpaceError: 8,
@@ -79,20 +59,19 @@ var DEFAULT_PROPS = {
79
59
  basePath: '',
80
60
  i3s: {}
81
61
  };
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);
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) {
96
75
  (0, _defineProperty2.default)(this, "options", void 0);
97
76
  (0, _defineProperty2.default)(this, "loadOptions", void 0);
98
77
  (0, _defineProperty2.default)(this, "type", void 0);
@@ -138,7 +117,9 @@ var Tileset3D = function () {
138
117
  (0, _defineProperty2.default)(this, "frameStateData", void 0);
139
118
  (0, _defineProperty2.default)(this, "maximumMemoryUsage", void 0);
140
119
  (0, _loaderUtils.assert)(json);
141
- this.options = _objectSpread(_objectSpread({}, DEFAULT_PROPS), options);
120
+ this.options = { ...DEFAULT_PROPS,
121
+ ...options
122
+ };
142
123
  this.tileset = json;
143
124
  this.loader = json.loader;
144
125
  this.type = json.type;
@@ -192,636 +173,473 @@ var Tileset3D = function () {
192
173
  this._initializeTileSet(json);
193
174
  }
194
175
 
195
- (0, _createClass2.default)(Tileset3D, [{
196
- key: "destroy",
197
- value: function destroy() {
198
- this._destroy();
199
- }
200
- }, {
201
- key: "isLoaded",
202
- value: function isLoaded() {
203
- return this._pendingCount === 0 && this._frameNumber !== 0;
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);
204
195
  }
205
- }, {
206
- key: "tiles",
207
- get: function get() {
208
- return Object.values(this._tiles);
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;
209
217
  }
210
- }, {
211
- key: "frameNumber",
212
- get: function get() {
213
- return this._frameNumber;
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;
214
229
  }
215
- }, {
216
- key: "queryParams",
217
- get: function get() {
218
- if (!this._queryParamsString) {
219
- this._queryParamsString = getQueryParamString(this._queryParams);
220
- }
221
230
 
222
- return this._queryParamsString;
231
+ if (this.traverseCounter > 0) {
232
+ return;
223
233
  }
224
- }, {
225
- key: "setProps",
226
- value: function setProps(props) {
227
- this.options = _objectSpread(_objectSpread({}, this.options), props);
234
+
235
+ if (!viewports && this.lastUpdatedVieports) {
236
+ viewports = this.lastUpdatedVieports;
237
+ } else {
238
+ this.lastUpdatedVieports = viewports;
228
239
  }
229
- }, {
230
- key: "setOptions",
231
- value: function setOptions(options) {
232
- this.options = _objectSpread(_objectSpread({}, this.options), options);
240
+
241
+ if (!(viewports instanceof Array)) {
242
+ viewports = [viewports];
233
243
  }
234
- }, {
235
- key: "getTileUrl",
236
- value: function getTileUrl(tilePath) {
237
- var isDataUrl = tilePath.startsWith('data:');
238
244
 
239
- if (isDataUrl) {
240
- return tilePath;
241
- }
245
+ this._cache.reset();
242
246
 
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;
255
- }
247
+ this._frameNumber++;
248
+ this.traverseCounter = viewports.length;
249
+ const viewportsToTraverse = [];
256
250
 
257
- if (this.traverseCounter > 0) {
258
- return;
259
- }
251
+ for (const viewport of viewports) {
252
+ const id = viewport.id;
260
253
 
261
- if (!viewports && this.lastUpdatedVieports) {
262
- viewports = this.lastUpdatedVieports;
254
+ if (this._needTraverse(id)) {
255
+ viewportsToTraverse.push(id);
263
256
  } else {
264
- this.lastUpdatedVieports = viewports;
257
+ this.traverseCounter--;
265
258
  }
259
+ }
266
260
 
267
- if (!(viewports instanceof Array)) {
268
- viewports = [viewports];
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);
269
266
  }
270
267
 
271
- this._cache.reset();
268
+ if (!viewportsToTraverse.includes(id)) {
269
+ continue;
270
+ }
272
271
 
273
- this._frameNumber++;
274
- this.traverseCounter = viewports.length;
275
- var viewportsToTraverse = [];
272
+ const frameState = (0, _frameState.getFrameState)(viewport, this._frameNumber);
276
273
 
277
- var _iterator = _createForOfIteratorHelper(viewports),
278
- _step;
274
+ this._traverser.traverse(this.roots[id], frameState, this.options);
275
+ }
276
+ }
279
277
 
280
- try {
281
- for (_iterator.s(); !(_step = _iterator.n()).done;) {
282
- var viewport = _step.value;
283
- var _id = viewport.id;
278
+ _needTraverse(viewportId) {
279
+ let traverserId = viewportId;
284
280
 
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
- }
281
+ if (this.options.viewportTraversersMap) {
282
+ traverserId = this.options.viewportTraversersMap[viewportId];
283
+ }
296
284
 
297
- var _iterator2 = _createForOfIteratorHelper(viewports),
298
- _step2;
285
+ if (traverserId !== viewportId) {
286
+ return false;
287
+ }
299
288
 
300
- try {
301
- for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
302
- var _viewport = _step2.value;
303
- var _id2 = _viewport.id;
289
+ return true;
290
+ }
304
291
 
305
- if (!this.roots[_id2]) {
306
- this.roots[_id2] = this._initializeTileHeaders(this.tileset, null);
307
- }
292
+ _onTraversalEnd(frameState) {
293
+ const id = frameState.viewport.id;
308
294
 
309
- if (!viewportsToTraverse.includes(_id2)) {
310
- continue;
311
- }
295
+ if (!this.frameStateData[id]) {
296
+ this.frameStateData[id] = {
297
+ selectedTiles: [],
298
+ _requestedTiles: [],
299
+ _emptyTiles: []
300
+ };
301
+ }
312
302
 
313
- var frameState = (0, _frameState.getFrameState)(_viewport, this._frameNumber);
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--;
314
309
 
315
- this._traverser.traverse(this.roots[_id2], frameState, this.options);
316
- }
317
- } catch (err) {
318
- _iterator2.e(err);
319
- } finally {
320
- _iterator2.f();
321
- }
310
+ if (this.traverseCounter > 0) {
311
+ return;
322
312
  }
323
- }, {
324
- key: "_needTraverse",
325
- value: function _needTraverse(viewportId) {
326
- var traverserId = viewportId;
327
313
 
328
- if (this.options.viewportTraversersMap) {
329
- traverserId = this.options.viewportTraversersMap[viewportId];
330
- }
314
+ this._updateTiles();
315
+ }
331
316
 
332
- if (traverserId !== viewportId) {
333
- return false;
334
- }
317
+ _updateTiles() {
318
+ this.selectedTiles = [];
319
+ this._requestedTiles = [];
320
+ this._emptyTiles = [];
335
321
 
336
- return true;
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);
337
327
  }
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
- }
350
328
 
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--;
329
+ this.selectedTiles = this.options.onTraversalComplete(this.selectedTiles);
357
330
 
358
- if (this.traverseCounter > 0) {
359
- return;
360
- }
331
+ for (const tile of this.selectedTiles) {
332
+ this._tiles[tile.id] = tile;
333
+ }
334
+
335
+ this._loadTiles();
336
+
337
+ this._unloadTiles();
338
+
339
+ this._updateStats();
340
+ }
361
341
 
362
- this._updateTiles();
342
+ _tilesChanged(oldSelectedTiles, selectedTiles) {
343
+ if (oldSelectedTiles.length !== selectedTiles.length) {
344
+ return true;
363
345
  }
364
- }, {
365
- key: "_updateTiles",
366
- value: function _updateTiles() {
367
- this.selectedTiles = [];
368
- this._requestedTiles = [];
369
- this._emptyTiles = [];
370
346
 
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);
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
+ }
353
+
354
+ _loadTiles() {
355
+ for (const tile of this._requestedTiles) {
356
+ if (tile.contentUnloaded) {
357
+ this._loadTile(tile);
376
358
  }
359
+ }
360
+ }
361
+
362
+ _unloadTiles() {
363
+ this._cache.unloadTiles(this, (tileset, tile) => tileset._unloadTile(tile));
364
+ }
377
365
 
378
- this.selectedTiles = this.options.onTraversalComplete(this.selectedTiles);
366
+ _updateStats() {
367
+ let tilesRenderable = 0;
368
+ let pointsRenderable = 0;
379
369
 
380
- var _iterator3 = _createForOfIteratorHelper(this.selectedTiles),
381
- _step3;
370
+ for (const tile of this.selectedTiles) {
371
+ if (tile.contentAvailable && tile.content) {
372
+ tilesRenderable++;
382
373
 
383
- try {
384
- for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
385
- var _tile = _step3.value;
386
- this._tiles[_tile.id] = _tile;
374
+ if (tile.content.pointCount) {
375
+ pointsRenderable += tile.content.pointCount;
387
376
  }
388
- } catch (err) {
389
- _iterator3.e(err);
390
- } finally {
391
- _iterator3.f();
392
377
  }
378
+ }
393
379
 
394
- this._loadTiles();
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
+ }
395
384
 
396
- this._unloadTiles();
385
+ _initializeTileSet(tilesetJson) {
386
+ this.root = this._initializeTileHeaders(tilesetJson, null);
397
387
 
398
- this._updateStats();
388
+ if (this.type === _constants.TILESET_TYPE.TILES3D) {
389
+ this._initializeCesiumTileset(tilesetJson);
399
390
  }
400
- }, {
401
- key: "_tilesChanged",
402
- value: function _tilesChanged(oldSelectedTiles, selectedTiles) {
403
- if (oldSelectedTiles.length !== selectedTiles.length) {
404
- return true;
405
- }
406
391
 
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
- }
392
+ if (this.type === _constants.TILESET_TYPE.I3S) {
393
+ this._initializeI3STileset();
440
394
  }
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
- }
474
395
 
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;
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;
478
411
  }
479
- }, {
480
- key: "_initializeTileSet",
481
- value: function _initializeTileSet(tilesetJson) {
482
- this.root = this._initializeTileHeaders(tilesetJson, null);
483
412
 
484
- if (this.type === _constants.TILESET_TYPE.TILES3D) {
485
- this._initializeCesiumTileset(tilesetJson);
486
- }
413
+ this.cartographicCenter = _geospatial.Ellipsoid.WGS84.cartesianToCartographic(center, new _core.Vector3());
414
+ this.cartesianCenter = center;
415
+ this.zoom = (0, _zoom.getZoomFromBoundingVolume)(root.boundingVolume);
416
+ }
487
417
 
488
- if (this.type === _constants.TILESET_TYPE.I3S) {
489
- this._initializeI3STileset();
490
- }
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
+ }
430
+
431
+ _initializeTileHeaders(tilesetJson, parentTileHeader) {
432
+ const rootTile = new _tile3d.default(this, tilesetJson.root, parentTileHeader);
491
433
 
492
- this._calculateViewProps();
434
+ if (parentTileHeader) {
435
+ parentTileHeader.children.push(rootTile);
436
+ rootTile.depth = parentTileHeader.depth + 1;
493
437
  }
494
- }, {
495
- key: "_calculateViewProps",
496
- value: function _calculateViewProps() {
497
- var root = this.root;
498
- (0, _loaderUtils.assert)(root);
499
- var center = root.boundingVolume.center;
500
438
 
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;
506
- }
439
+ if (this.type === _constants.TILESET_TYPE.TILES3D) {
440
+ const stack = [];
441
+ stack.push(rootTile);
507
442
 
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;
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
+ }
534
454
  }
455
+ }
535
456
 
536
- if (this.type === _constants.TILESET_TYPE.TILES3D) {
537
- var stack = [];
538
- stack.push(rootTile);
457
+ return rootTile;
458
+ }
539
459
 
540
- while (stack.length > 0) {
541
- var _tile4 = stack.pop();
460
+ _initializeTraverser() {
461
+ let TraverserClass;
462
+ const type = this.type;
542
463
 
543
- this.stats.get(TILES_TOTAL).incrementCount();
544
- var children = _tile4.header.children || [];
464
+ switch (type) {
465
+ case _constants.TILESET_TYPE.TILES3D:
466
+ TraverserClass = _tileset3dTraverser.default;
467
+ break;
545
468
 
546
- var _iterator6 = _createForOfIteratorHelper(children),
547
- _step6;
469
+ case _constants.TILESET_TYPE.I3S:
470
+ TraverserClass = _i3sTilesetTraverser.default;
471
+ break;
548
472
 
549
- try {
550
- for (_iterator6.s(); !(_step6 = _iterator6.n()).done;) {
551
- var childHeader = _step6.value;
552
- var childTile = new _tile3d.default(this, childHeader, _tile4);
473
+ default:
474
+ TraverserClass = _tilesetTraverser.default;
475
+ }
553
476
 
554
- _tile4.children.push(childTile);
477
+ return new TraverserClass({
478
+ basePath: this.basePath,
479
+ onTraversalEnd: this._onTraversalEnd.bind(this)
480
+ });
481
+ }
555
482
 
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
- }
483
+ _destroyTileHeaders(parentTile) {
484
+ this._destroySubtree(parentTile);
485
+ }
566
486
 
567
- return rootTile;
568
- }
569
- }, {
570
- key: "_initializeTraverser",
571
- value: function _initializeTraverser() {
572
- var TraverserClass;
573
- var type = this.type;
487
+ async _loadTile(tile) {
488
+ let loaded;
574
489
 
575
- switch (type) {
576
- case _constants.TILESET_TYPE.TILES3D:
577
- TraverserClass = _tileset3dTraverser.default;
578
- break;
490
+ try {
491
+ this._onStartTileLoading();
579
492
 
580
- case _constants.TILESET_TYPE.I3S:
581
- TraverserClass = _i3sTilesetTraverser.default;
582
- break;
493
+ loaded = await tile.loadContent();
494
+ } catch (error) {
495
+ this._onTileLoadError(tile, error);
496
+ } finally {
497
+ this._onEndTileLoading();
583
498
 
584
- default:
585
- TraverserClass = _tilesetTraverser.default;
586
- }
499
+ this._onTileLoad(tile, loaded);
500
+ }
501
+ }
502
+
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
+ }
587
510
 
588
- return new TraverserClass({
589
- basePath: this.basePath,
590
- onTraversalEnd: this._onTraversalEnd.bind(this)
591
- });
511
+ _onTileLoad(tile, loaded) {
512
+ if (!loaded) {
513
+ return;
592
514
  }
593
- }, {
594
- key: "_destroyTileHeaders",
595
- value: function _destroyTileHeaders(parentTile) {
596
- this._destroySubtree(parentTile);
515
+
516
+ if (tile && tile.content) {
517
+ (0, _transformUtils.calculateTransformProps)(tile, tile.content);
597
518
  }
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;
608
519
 
609
- this._onStartTileLoading();
520
+ this._addTileToCache(tile);
610
521
 
611
- _context.next = 4;
612
- return tile.loadContent();
522
+ this.options.onTileLoad(tile);
523
+ }
613
524
 
614
- case 4:
615
- loaded = _context.sent;
616
- _context.next = 10;
617
- break;
525
+ _onStartTileLoading() {
526
+ this._pendingCount++;
527
+ this.stats.get(TILES_LOADING).incrementCount();
528
+ }
618
529
 
619
- case 7:
620
- _context.prev = 7;
621
- _context.t0 = _context["catch"](0);
530
+ _onEndTileLoading() {
531
+ this._pendingCount--;
532
+ this.stats.get(TILES_LOADING).decrementCount();
533
+ }
622
534
 
623
- this._onTileLoadError(tile, _context.t0);
535
+ _addTileToCache(tile) {
536
+ this._cache.add(this, tile, tileset => tileset._updateCacheStats(tile));
537
+ }
624
538
 
625
- case 10:
626
- _context.prev = 10;
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
+ }
627
545
 
628
- this._onEndTileLoading();
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
+ }
629
554
 
630
- this._onTileLoad(tile, loaded);
555
+ _destroy() {
556
+ const stack = [];
631
557
 
632
- return _context.finish(10);
558
+ if (this.root) {
559
+ stack.push(this.root);
560
+ }
633
561
 
634
- case 14:
635
- case "end":
636
- return _context.stop();
637
- }
638
- }
639
- }, _callee, this, [[0, 7, 10, 14]]);
640
- }));
562
+ while (stack.length > 0) {
563
+ const tile = stack.pop();
641
564
 
642
- function _loadTile(_x) {
643
- return _loadTile2.apply(this, arguments);
565
+ for (const child of tile.children) {
566
+ stack.push(child);
644
567
  }
645
568
 
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
- }
569
+ this._destroyTile(tile);
570
+ }
663
571
 
664
- if (tile && tile.content) {
665
- (0, _transformUtils.calculateTransformProps)(tile, tile.content);
666
- }
572
+ this.root = null;
573
+ }
667
574
 
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
- }
575
+ _destroySubtree(tile) {
576
+ const root = tile;
577
+ const stack = [];
578
+ stack.push(root);
717
579
 
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
- }
580
+ while (stack.length > 0) {
581
+ tile = stack.pop();
734
582
 
735
- this._destroyTile(_tile5);
583
+ for (const child of tile.children) {
584
+ stack.push(child);
736
585
  }
737
586
 
738
- this.root = null;
587
+ if (tile !== root) {
588
+ this._destroyTile(tile);
589
+ }
739
590
  }
740
- }, {
741
- key: "_destroySubtree",
742
- value: function _destroySubtree(tile) {
743
- var root = tile;
744
- var stack = [];
745
- stack.push(root);
746
591
 
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
- }
592
+ root.children = [];
593
+ }
763
594
 
764
- if (tile !== root) {
765
- this._destroyTile(tile);
766
- }
767
- }
595
+ _destroyTile(tile) {
596
+ this._cache.unloadTile(this, tile);
768
597
 
769
- root.children = [];
770
- }
771
- }, {
772
- key: "_destroyTile",
773
- value: function _destroyTile(tile) {
774
- this._cache.unloadTile(this, tile);
598
+ this._unloadTile(tile);
775
599
 
776
- this._unloadTile(tile);
600
+ tile.destroy();
601
+ }
777
602
 
778
- tile.destroy();
603
+ _initializeCesiumTileset(tilesetJson) {
604
+ this.asset = tilesetJson.asset;
605
+
606
+ if (!this.asset) {
607
+ throw new Error('Tileset must have an asset property.');
779
608
  }
780
- }, {
781
- key: "_initializeCesiumTileset",
782
- value: function _initializeCesiumTileset(tilesetJson) {
783
- this.asset = tilesetJson.asset;
784
609
 
785
- if (!this.asset) {
786
- throw new Error('Tileset must have an asset property.');
787
- }
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
+ }
788
613
 
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
- }
614
+ if ('tilesetVersion' in this.asset) {
615
+ this._queryParams.v = this.asset.tilesetVersion;
616
+ }
792
617
 
793
- if ('tilesetVersion' in this.asset) {
794
- this._queryParams.v = this.asset.tilesetVersion;
795
- }
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
+ }
796
627
 
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
- }
628
+ _initializeI3STileset() {
629
+ if (this.loadOptions.i3s && 'token' in this.loadOptions.i3s) {
630
+ this._queryParams.token = this.loadOptions.i3s.token;
812
631
  }
813
- }]);
814
- return Tileset3D;
815
- }();
632
+ }
633
+
634
+ }
816
635
 
817
636
  exports.default = Tileset3D;
818
637
 
819
638
  function getQueryParamString(queryParams) {
820
- var queryParamStrings = [];
639
+ const queryParamStrings = [];
821
640
 
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]));
641
+ for (const key of Object.keys(queryParams)) {
642
+ queryParamStrings.push("".concat(key, "=").concat(queryParams[key]));
825
643
  }
826
644
 
827
645
  switch (queryParamStrings.length) {