@loaders.gl/tiles 3.1.0-beta.7 → 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,25 +7,40 @@ Object.defineProperty(exports, "__esModule", {
7
7
  });
8
8
  exports.default = exports.DEFAULT_PROPS = void 0;
9
9
 
10
+ var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
11
+
12
+ var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
13
+
10
14
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
11
15
 
12
16
  var _managedArray = _interopRequireDefault(require("../../utils/managed-array"));
13
17
 
14
18
  var _constants = require("../../constants");
15
19
 
16
- const DEFAULT_PROPS = {
20
+ 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; } } }; }
21
+
22
+ 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); }
23
+
24
+ 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; }
25
+
26
+ 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; }
27
+
28
+ 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; }
29
+
30
+ var DEFAULT_PROPS = {
17
31
  loadSiblings: false,
18
32
  skipLevelOfDetail: false,
19
33
  maximumScreenSpaceError: 2,
20
34
  updateTransforms: true,
21
- onTraversalEnd: () => {},
35
+ onTraversalEnd: function onTraversalEnd() {},
22
36
  viewportTraversersMap: {},
23
37
  basePath: ''
24
38
  };
25
39
  exports.DEFAULT_PROPS = DEFAULT_PROPS;
26
40
 
27
- class TilesetTraverser {
28
- constructor(options) {
41
+ var TilesetTraverser = function () {
42
+ function TilesetTraverser(options) {
43
+ (0, _classCallCheck2.default)(this, TilesetTraverser);
29
44
  (0, _defineProperty2.default)(this, "options", void 0);
30
45
  (0, _defineProperty2.default)(this, "root", void 0);
31
46
  (0, _defineProperty2.default)(this, "requestedTiles", void 0);
@@ -34,9 +49,7 @@ class TilesetTraverser {
34
49
  (0, _defineProperty2.default)(this, "_traversalStack", void 0);
35
50
  (0, _defineProperty2.default)(this, "_emptyTraversalStack", void 0);
36
51
  (0, _defineProperty2.default)(this, "_frameNumber", void 0);
37
- this.options = { ...DEFAULT_PROPS,
38
- ...options
39
- };
52
+ this.options = _objectSpread(_objectSpread({}, DEFAULT_PROPS), options);
40
53
  this._traversalStack = new _managedArray.default();
41
54
  this._emptyTraversalStack = new _managedArray.default();
42
55
  this._frameNumber = null;
@@ -46,259 +59,319 @@ class TilesetTraverser {
46
59
  this.emptyTiles = {};
47
60
  }
48
61
 
49
- traverse(root, frameState, options) {
50
- this.root = root;
51
- this.options = { ...this.options,
52
- ...options
53
- };
54
- this.reset();
55
- this.updateTile(root, frameState);
56
- this._frameNumber = frameState.frameNumber;
57
- this.executeTraversal(root, frameState);
58
- }
59
-
60
- reset() {
61
- this.requestedTiles = {};
62
- this.selectedTiles = {};
63
- this.emptyTiles = {};
64
-
65
- this._traversalStack.reset();
66
-
67
- this._emptyTraversalStack.reset();
68
- }
69
-
70
- executeTraversal(root, frameState) {
71
- const stack = this._traversalStack;
72
- root._selectionDepth = 1;
73
- stack.push(root);
62
+ (0, _createClass2.default)(TilesetTraverser, [{
63
+ key: "traverse",
64
+ value: function traverse(root, frameState, options) {
65
+ this.root = root;
66
+ this.options = _objectSpread(_objectSpread({}, this.options), options);
67
+ this.reset();
68
+ this.updateTile(root, frameState);
69
+ this._frameNumber = frameState.frameNumber;
70
+ this.executeTraversal(root, frameState);
71
+ }
72
+ }, {
73
+ key: "reset",
74
+ value: function reset() {
75
+ this.requestedTiles = {};
76
+ this.selectedTiles = {};
77
+ this.emptyTiles = {};
74
78
 
75
- while (stack.length > 0) {
76
- const tile = stack.pop();
77
- let shouldRefine = false;
79
+ this._traversalStack.reset();
78
80
 
79
- if (this.canTraverse(tile, frameState)) {
80
- this.updateChildTiles(tile, frameState);
81
- shouldRefine = this.updateAndPushChildren(tile, frameState, stack, tile.hasRenderContent ? tile._selectionDepth + 1 : tile._selectionDepth);
82
- }
81
+ this._emptyTraversalStack.reset();
82
+ }
83
+ }, {
84
+ key: "executeTraversal",
85
+ value: function executeTraversal(root, frameState) {
86
+ var stack = this._traversalStack;
87
+ root._selectionDepth = 1;
88
+ stack.push(root);
89
+
90
+ while (stack.length > 0) {
91
+ var tile = stack.pop();
92
+ var shouldRefine = false;
93
+
94
+ if (this.canTraverse(tile, frameState)) {
95
+ this.updateChildTiles(tile, frameState);
96
+ shouldRefine = this.updateAndPushChildren(tile, frameState, stack, tile.hasRenderContent ? tile._selectionDepth + 1 : tile._selectionDepth);
97
+ }
83
98
 
84
- const parent = tile.parent;
85
- const parentRefines = Boolean(!parent || parent._shouldRefine);
86
- const stoppedRefining = !shouldRefine;
99
+ var parent = tile.parent;
100
+ var parentRefines = Boolean(!parent || parent._shouldRefine);
101
+ var stoppedRefining = !shouldRefine;
87
102
 
88
- if (!tile.hasRenderContent) {
89
- this.emptyTiles[tile.id] = tile;
90
- this.loadTile(tile, frameState);
103
+ if (!tile.hasRenderContent) {
104
+ this.emptyTiles[tile.id] = tile;
105
+ this.loadTile(tile, frameState);
91
106
 
92
- if (stoppedRefining) {
107
+ if (stoppedRefining) {
108
+ this.selectTile(tile, frameState);
109
+ }
110
+ } else if (tile.refine === _constants.TILE_REFINEMENT.ADD) {
111
+ this.loadTile(tile, frameState);
93
112
  this.selectTile(tile, frameState);
94
- }
95
- } else if (tile.refine === _constants.TILE_REFINEMENT.ADD) {
96
- this.loadTile(tile, frameState);
97
- this.selectTile(tile, frameState);
98
- } else if (tile.refine === _constants.TILE_REFINEMENT.REPLACE) {
99
- this.loadTile(tile, frameState);
113
+ } else if (tile.refine === _constants.TILE_REFINEMENT.REPLACE) {
114
+ this.loadTile(tile, frameState);
100
115
 
101
- if (stoppedRefining) {
102
- this.selectTile(tile, frameState);
116
+ if (stoppedRefining) {
117
+ this.selectTile(tile, frameState);
118
+ }
103
119
  }
120
+
121
+ this.touchTile(tile, frameState);
122
+ tile._shouldRefine = shouldRefine && parentRefines;
104
123
  }
105
124
 
106
- this.touchTile(tile, frameState);
107
- tile._shouldRefine = shouldRefine && parentRefines;
125
+ this.options.onTraversalEnd(frameState);
108
126
  }
127
+ }, {
128
+ key: "updateChildTiles",
129
+ value: function updateChildTiles(tile, frameState) {
130
+ var children = tile.children;
131
+
132
+ var _iterator = _createForOfIteratorHelper(children),
133
+ _step;
134
+
135
+ try {
136
+ for (_iterator.s(); !(_step = _iterator.n()).done;) {
137
+ var child = _step.value;
138
+ this.updateTile(child, frameState);
139
+ }
140
+ } catch (err) {
141
+ _iterator.e(err);
142
+ } finally {
143
+ _iterator.f();
144
+ }
109
145
 
110
- this.options.onTraversalEnd(frameState);
111
- }
112
-
113
- updateChildTiles(tile, frameState) {
114
- const children = tile.children;
115
-
116
- for (const child of children) {
117
- this.updateTile(child, frameState);
146
+ return true;
118
147
  }
148
+ }, {
149
+ key: "updateAndPushChildren",
150
+ value: function updateAndPushChildren(tile, frameState, stack, depth) {
151
+ var _this$options = this.options,
152
+ loadSiblings = _this$options.loadSiblings,
153
+ skipLevelOfDetail = _this$options.skipLevelOfDetail;
154
+ var children = tile.children;
155
+ children.sort(this.compareDistanceToCamera.bind(this));
156
+ var checkRefines = tile.refine === _constants.TILE_REFINEMENT.REPLACE && tile.hasRenderContent && !skipLevelOfDetail;
157
+ var hasVisibleChild = false;
158
+ var refines = true;
159
+
160
+ var _iterator2 = _createForOfIteratorHelper(children),
161
+ _step2;
162
+
163
+ try {
164
+ for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
165
+ var child = _step2.value;
166
+ child._selectionDepth = depth;
167
+
168
+ if (child.isVisibleAndInRequestVolume) {
169
+ if (stack.find(child)) {
170
+ stack.delete(child);
171
+ }
172
+
173
+ stack.push(child);
174
+ hasVisibleChild = true;
175
+ } else if (checkRefines || loadSiblings) {
176
+ this.loadTile(child, frameState);
177
+ this.touchTile(child, frameState);
178
+ }
119
179
 
120
- return true;
121
- }
180
+ if (checkRefines) {
181
+ var childRefines = void 0;
122
182
 
123
- updateAndPushChildren(tile, frameState, stack, depth) {
124
- const {
125
- loadSiblings,
126
- skipLevelOfDetail
127
- } = this.options;
128
- const children = tile.children;
129
- children.sort(this.compareDistanceToCamera.bind(this));
130
- const checkRefines = tile.refine === _constants.TILE_REFINEMENT.REPLACE && tile.hasRenderContent && !skipLevelOfDetail;
131
- let hasVisibleChild = false;
132
- let refines = true;
133
-
134
- for (const child of children) {
135
- child._selectionDepth = depth;
136
-
137
- if (child.isVisibleAndInRequestVolume) {
138
- if (stack.find(child)) {
139
- stack.delete(child);
140
- }
183
+ if (!child._inRequestVolume) {
184
+ childRefines = false;
185
+ } else if (!child.hasRenderContent) {
186
+ childRefines = this.executeEmptyTraversal(child, frameState);
187
+ } else {
188
+ childRefines = child.contentAvailable;
189
+ }
141
190
 
142
- stack.push(child);
143
- hasVisibleChild = true;
144
- } else if (checkRefines || loadSiblings) {
145
- this.loadTile(child, frameState);
146
- this.touchTile(child, frameState);
147
- }
148
-
149
- if (checkRefines) {
150
- let childRefines;
191
+ refines = refines && childRefines;
151
192
 
152
- if (!child._inRequestVolume) {
153
- childRefines = false;
154
- } else if (!child.hasRenderContent) {
155
- childRefines = this.executeEmptyTraversal(child, frameState);
156
- } else {
157
- childRefines = child.contentAvailable;
193
+ if (!refines) {
194
+ return false;
195
+ }
196
+ }
158
197
  }
198
+ } catch (err) {
199
+ _iterator2.e(err);
200
+ } finally {
201
+ _iterator2.f();
202
+ }
159
203
 
160
- refines = refines && childRefines;
161
-
162
- if (!refines) {
163
- return false;
164
- }
204
+ if (!hasVisibleChild) {
205
+ refines = false;
165
206
  }
166
- }
167
207
 
168
- if (!hasVisibleChild) {
169
- refines = false;
208
+ return refines;
170
209
  }
171
-
172
- return refines;
173
- }
174
-
175
- updateTile(tile, frameState) {
176
- this.updateTileVisibility(tile, frameState);
177
- }
178
-
179
- selectTile(tile, frameState) {
180
- if (this.shouldSelectTile(tile)) {
181
- tile._selectedFrame = frameState.frameNumber;
182
- this.selectedTiles[tile.id] = tile;
210
+ }, {
211
+ key: "updateTile",
212
+ value: function updateTile(tile, frameState) {
213
+ this.updateTileVisibility(tile, frameState);
183
214
  }
184
- }
215
+ }, {
216
+ key: "selectTile",
217
+ value: function selectTile(tile, frameState) {
218
+ if (this.shouldSelectTile(tile)) {
219
+ tile._selectedFrame = frameState.frameNumber;
220
+ this.selectedTiles[tile.id] = tile;
221
+ }
222
+ }
223
+ }, {
224
+ key: "loadTile",
225
+ value: function loadTile(tile, frameState) {
226
+ if (this.shouldLoadTile(tile)) {
227
+ tile._requestedFrame = frameState.frameNumber;
228
+ tile._priority = tile._getPriority();
229
+ this.requestedTiles[tile.id] = tile;
230
+ }
231
+ }
232
+ }, {
233
+ key: "touchTile",
234
+ value: function touchTile(tile, frameState) {
235
+ tile.tileset._cache.touch(tile);
185
236
 
186
- loadTile(tile, frameState) {
187
- if (this.shouldLoadTile(tile)) {
188
- tile._requestedFrame = frameState.frameNumber;
189
- tile._priority = tile._getPriority();
190
- this.requestedTiles[tile.id] = tile;
237
+ tile._touchedFrame = frameState.frameNumber;
191
238
  }
192
- }
239
+ }, {
240
+ key: "canTraverse",
241
+ value: function canTraverse(tile, frameState) {
242
+ var useParentMetric = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
243
+ var ignoreVisibility = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;
244
+
245
+ if (!tile.hasChildren) {
246
+ return false;
247
+ }
193
248
 
194
- touchTile(tile, frameState) {
195
- tile.tileset._cache.touch(tile);
249
+ if (tile.hasTilesetContent) {
250
+ return !tile.contentExpired;
251
+ }
196
252
 
197
- tile._touchedFrame = frameState.frameNumber;
198
- }
253
+ if (!ignoreVisibility && !tile.isVisibleAndInRequestVolume) {
254
+ return false;
255
+ }
199
256
 
200
- canTraverse(tile, frameState, useParentMetric = false, ignoreVisibility = false) {
201
- if (!tile.hasChildren) {
202
- return false;
257
+ return this.shouldRefine(tile, frameState, useParentMetric);
203
258
  }
204
-
205
- if (tile.hasTilesetContent) {
206
- return !tile.contentExpired;
259
+ }, {
260
+ key: "shouldLoadTile",
261
+ value: function shouldLoadTile(tile) {
262
+ return tile.hasUnloadedContent || tile.contentExpired;
207
263
  }
208
-
209
- if (!ignoreVisibility && !tile.isVisibleAndInRequestVolume) {
210
- return false;
264
+ }, {
265
+ key: "shouldSelectTile",
266
+ value: function shouldSelectTile(tile) {
267
+ return tile.contentAvailable && !this.options.skipLevelOfDetail;
211
268
  }
269
+ }, {
270
+ key: "shouldRefine",
271
+ value: function shouldRefine(tile, frameState, useParentMetric) {
272
+ var screenSpaceError = tile._screenSpaceError;
212
273
 
213
- return this.shouldRefine(tile, frameState, useParentMetric);
214
- }
215
-
216
- shouldLoadTile(tile) {
217
- return tile.hasUnloadedContent || tile.contentExpired;
218
- }
219
-
220
- shouldSelectTile(tile) {
221
- return tile.contentAvailable && !this.options.skipLevelOfDetail;
222
- }
223
-
224
- shouldRefine(tile, frameState, useParentMetric) {
225
- let screenSpaceError = tile._screenSpaceError;
274
+ if (useParentMetric) {
275
+ screenSpaceError = tile.getScreenSpaceError(frameState, true);
276
+ }
226
277
 
227
- if (useParentMetric) {
228
- screenSpaceError = tile.getScreenSpaceError(frameState, true);
278
+ return screenSpaceError > this.options.maximumScreenSpaceError;
229
279
  }
280
+ }, {
281
+ key: "updateTileVisibility",
282
+ value: function updateTileVisibility(tile, frameState) {
283
+ var viewportIds = [];
230
284
 
231
- return screenSpaceError > this.options.maximumScreenSpaceError;
232
- }
285
+ if (this.options.viewportTraversersMap) {
286
+ for (var _key in this.options.viewportTraversersMap) {
287
+ var value = this.options.viewportTraversersMap[_key];
233
288
 
234
- updateTileVisibility(tile, frameState) {
235
- const viewportIds = [];
236
-
237
- if (this.options.viewportTraversersMap) {
238
- for (const key in this.options.viewportTraversersMap) {
239
- const value = this.options.viewportTraversersMap[key];
240
-
241
- if (value === frameState.viewport.id) {
242
- viewportIds.push(key);
289
+ if (value === frameState.viewport.id) {
290
+ viewportIds.push(_key);
291
+ }
243
292
  }
293
+ } else {
294
+ viewportIds.push(frameState.viewport.id);
244
295
  }
245
- } else {
246
- viewportIds.push(frameState.viewport.id);
247
- }
248
-
249
- tile.updateVisibility(frameState, viewportIds);
250
- }
251
296
 
252
- compareDistanceToCamera(b, a) {
253
- return b._distanceToCamera - a._distanceToCamera;
254
- }
255
-
256
- anyChildrenVisible(tile, frameState) {
257
- let anyVisible = false;
258
-
259
- for (const child of tile.children) {
260
- child.updateVisibility(frameState);
261
- anyVisible = anyVisible || child.isVisibleAndInRequestVolume;
297
+ tile.updateVisibility(frameState, viewportIds);
262
298
  }
299
+ }, {
300
+ key: "compareDistanceToCamera",
301
+ value: function compareDistanceToCamera(b, a) {
302
+ return b._distanceToCamera - a._distanceToCamera;
303
+ }
304
+ }, {
305
+ key: "anyChildrenVisible",
306
+ value: function anyChildrenVisible(tile, frameState) {
307
+ var anyVisible = false;
308
+
309
+ var _iterator3 = _createForOfIteratorHelper(tile.children),
310
+ _step3;
311
+
312
+ try {
313
+ for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
314
+ var child = _step3.value;
315
+ child.updateVisibility(frameState);
316
+ anyVisible = anyVisible || child.isVisibleAndInRequestVolume;
317
+ }
318
+ } catch (err) {
319
+ _iterator3.e(err);
320
+ } finally {
321
+ _iterator3.f();
322
+ }
263
323
 
264
- return anyVisible;
265
- }
324
+ return anyVisible;
325
+ }
326
+ }, {
327
+ key: "executeEmptyTraversal",
328
+ value: function executeEmptyTraversal(root, frameState) {
329
+ var allDescendantsLoaded = true;
330
+ var stack = this._emptyTraversalStack;
331
+ stack.push(root);
332
+
333
+ while (stack.length > 0 && allDescendantsLoaded) {
334
+ var tile = stack.pop();
335
+ this.updateTile(tile, frameState);
336
+
337
+ if (!tile.isVisibleAndInRequestVolume) {
338
+ this.loadTile(tile, frameState);
339
+ }
266
340
 
267
- executeEmptyTraversal(root, frameState) {
268
- let allDescendantsLoaded = true;
269
- const stack = this._emptyTraversalStack;
270
- stack.push(root);
341
+ this.touchTile(tile, frameState);
342
+ var traverse = !tile.hasRenderContent && this.canTraverse(tile, frameState, false, true);
271
343
 
272
- while (stack.length > 0 && allDescendantsLoaded) {
273
- const tile = stack.pop();
274
- this.updateTile(tile, frameState);
344
+ if (traverse) {
345
+ var children = tile.children;
275
346
 
276
- if (!tile.isVisibleAndInRequestVolume) {
277
- this.loadTile(tile, frameState);
278
- }
347
+ var _iterator4 = _createForOfIteratorHelper(children),
348
+ _step4;
279
349
 
280
- this.touchTile(tile, frameState);
281
- const traverse = !tile.hasRenderContent && this.canTraverse(tile, frameState, false, true);
350
+ try {
351
+ for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {
352
+ var child = _step4.value;
282
353
 
283
- if (traverse) {
284
- const children = tile.children;
354
+ if (stack.find(child)) {
355
+ stack.delete(child);
356
+ }
285
357
 
286
- for (const child of children) {
287
- if (stack.find(child)) {
288
- stack.delete(child);
358
+ stack.push(child);
359
+ }
360
+ } catch (err) {
361
+ _iterator4.e(err);
362
+ } finally {
363
+ _iterator4.f();
289
364
  }
290
-
291
- stack.push(child);
365
+ } else if (!tile.contentAvailable) {
366
+ allDescendantsLoaded = false;
292
367
  }
293
- } else if (!tile.contentAvailable) {
294
- allDescendantsLoaded = false;
295
368
  }
296
- }
297
369
 
298
- return allDescendantsLoaded;
299
- }
300
-
301
- }
370
+ return allDescendantsLoaded;
371
+ }
372
+ }]);
373
+ return TilesetTraverser;
374
+ }();
302
375
 
303
376
  exports.default = TilesetTraverser;
304
377
  //# sourceMappingURL=tileset-traverser.js.map