@loaders.gl/tiles 3.1.0-alpha.4 → 3.1.0-alpha.5

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