@loaders.gl/tiles 3.0.13 → 3.0.14
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.
- package/dist/dist.es5.min.js +1 -1
- package/dist/dist.es5.min.js.map +1 -1
- package/dist/dist.min.js +1 -1
- package/dist/dist.min.js.map +1 -1
- package/dist/es5/bundle.js +2 -2
- package/dist/es5/bundle.js.map +1 -1
- package/dist/es5/constants.js +6 -6
- package/dist/es5/constants.js.map +1 -1
- package/dist/es5/index.js +12 -12
- package/dist/es5/tileset/helpers/bounding-volume.js +37 -25
- package/dist/es5/tileset/helpers/bounding-volume.js.map +1 -1
- package/dist/es5/tileset/helpers/frame-state.js +25 -29
- package/dist/es5/tileset/helpers/frame-state.js.map +1 -1
- package/dist/es5/tileset/helpers/i3s-lod.js +66 -51
- package/dist/es5/tileset/helpers/i3s-lod.js.map +1 -1
- package/dist/es5/tileset/helpers/tiles-3d-lod.js +47 -51
- package/dist/es5/tileset/helpers/tiles-3d-lod.js.map +1 -1
- package/dist/es5/tileset/helpers/transform-utils.js +11 -17
- package/dist/es5/tileset/helpers/transform-utils.js.map +1 -1
- package/dist/es5/tileset/helpers/zoom.js +15 -17
- package/dist/es5/tileset/helpers/zoom.js.map +1 -1
- package/dist/es5/tileset/tile-3d.js +421 -328
- package/dist/es5/tileset/tile-3d.js.map +1 -1
- package/dist/es5/tileset/tileset-3d.js +563 -381
- package/dist/es5/tileset/tileset-3d.js.map +1 -1
- package/dist/es5/tileset/tileset-cache.js +63 -50
- package/dist/es5/tileset/tileset-cache.js.map +1 -1
- package/dist/es5/tileset/traversers/i3s-tile-manager.js +44 -32
- package/dist/es5/tileset/traversers/i3s-tile-manager.js.map +1 -1
- package/dist/es5/tileset/traversers/i3s-tileset-traverser.js +143 -53
- package/dist/es5/tileset/traversers/i3s-tileset-traverser.js.map +1 -1
- package/dist/es5/tileset/traversers/tileset-3d-traverser.js +62 -34
- package/dist/es5/tileset/traversers/tileset-3d-traverser.js.map +1 -1
- package/dist/es5/tileset/traversers/tileset-traverser.js +282 -209
- package/dist/es5/tileset/traversers/tileset-traverser.js.map +1 -1
- package/dist/es5/utils/doubly-linked-list-node.js +9 -7
- package/dist/es5/utils/doubly-linked-list-node.js.map +1 -1
- package/dist/es5/utils/doubly-linked-list.js +76 -64
- package/dist/es5/utils/doubly-linked-list.js.map +1 -1
- package/dist/es5/utils/managed-array.js +108 -86
- package/dist/es5/utils/managed-array.js.map +1 -1
- package/package.json +5 -5
|
@@ -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
|
-
|
|
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
|
-
|
|
28
|
-
|
|
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 = {
|
|
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
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
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
|
-
|
|
76
|
-
const tile = stack.pop();
|
|
77
|
-
let shouldRefine = false;
|
|
79
|
+
this._traversalStack.reset();
|
|
78
80
|
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
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
|
-
|
|
85
|
-
|
|
86
|
-
|
|
99
|
+
var parent = tile.parent;
|
|
100
|
+
var parentRefines = Boolean(!parent || parent._shouldRefine);
|
|
101
|
+
var stoppedRefining = !shouldRefine;
|
|
87
102
|
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
103
|
+
if (!tile.hasRenderContent) {
|
|
104
|
+
this.emptyTiles[tile.id] = tile;
|
|
105
|
+
this.loadTile(tile, frameState);
|
|
91
106
|
|
|
92
|
-
|
|
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
|
-
|
|
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
|
-
|
|
102
|
-
|
|
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.
|
|
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
|
-
|
|
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
|
-
|
|
121
|
-
|
|
180
|
+
if (checkRefines) {
|
|
181
|
+
var childRefines = void 0;
|
|
122
182
|
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
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
|
-
|
|
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
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
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
|
-
|
|
161
|
-
|
|
162
|
-
if (!refines) {
|
|
163
|
-
return false;
|
|
164
|
-
}
|
|
204
|
+
if (!hasVisibleChild) {
|
|
205
|
+
refines = false;
|
|
165
206
|
}
|
|
166
|
-
}
|
|
167
207
|
|
|
168
|
-
|
|
169
|
-
refines = false;
|
|
208
|
+
return refines;
|
|
170
209
|
}
|
|
171
|
-
|
|
172
|
-
|
|
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
|
-
|
|
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
|
-
|
|
195
|
-
|
|
249
|
+
if (tile.hasTilesetContent) {
|
|
250
|
+
return !tile.contentExpired;
|
|
251
|
+
}
|
|
196
252
|
|
|
197
|
-
|
|
198
|
-
|
|
253
|
+
if (!ignoreVisibility && !tile.isVisibleAndInRequestVolume) {
|
|
254
|
+
return false;
|
|
255
|
+
}
|
|
199
256
|
|
|
200
|
-
|
|
201
|
-
if (!tile.hasChildren) {
|
|
202
|
-
return false;
|
|
257
|
+
return this.shouldRefine(tile, frameState, useParentMetric);
|
|
203
258
|
}
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
259
|
+
}, {
|
|
260
|
+
key: "shouldLoadTile",
|
|
261
|
+
value: function shouldLoadTile(tile) {
|
|
262
|
+
return tile.hasUnloadedContent || tile.contentExpired;
|
|
207
263
|
}
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
232
|
-
|
|
285
|
+
if (this.options.viewportTraversersMap) {
|
|
286
|
+
for (var _key in this.options.viewportTraversersMap) {
|
|
287
|
+
var value = this.options.viewportTraversersMap[_key];
|
|
233
288
|
|
|
234
|
-
|
|
235
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
268
|
-
|
|
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
|
-
|
|
273
|
-
|
|
274
|
-
this.updateTile(tile, frameState);
|
|
344
|
+
if (traverse) {
|
|
345
|
+
var children = tile.children;
|
|
275
346
|
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
}
|
|
347
|
+
var _iterator4 = _createForOfIteratorHelper(children),
|
|
348
|
+
_step4;
|
|
279
349
|
|
|
280
|
-
|
|
281
|
-
|
|
350
|
+
try {
|
|
351
|
+
for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {
|
|
352
|
+
var child = _step4.value;
|
|
282
353
|
|
|
283
|
-
|
|
284
|
-
|
|
354
|
+
if (stack.find(child)) {
|
|
355
|
+
stack.delete(child);
|
|
356
|
+
}
|
|
285
357
|
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
358
|
+
stack.push(child);
|
|
359
|
+
}
|
|
360
|
+
} catch (err) {
|
|
361
|
+
_iterator4.e(err);
|
|
362
|
+
} finally {
|
|
363
|
+
_iterator4.f();
|
|
289
364
|
}
|
|
290
|
-
|
|
291
|
-
|
|
365
|
+
} else if (!tile.contentAvailable) {
|
|
366
|
+
allDescendantsLoaded = false;
|
|
292
367
|
}
|
|
293
|
-
} else if (!tile.contentAvailable) {
|
|
294
|
-
allDescendantsLoaded = false;
|
|
295
368
|
}
|
|
296
|
-
}
|
|
297
369
|
|
|
298
|
-
|
|
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
|