@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.
- package/dist/bundle.d.ts +1 -0
- package/dist/constants.d.ts +31 -0
- package/dist/dist.min.js +1 -1
- package/dist/dist.min.js.map +1 -1
- package/dist/es5/bundle.js +1 -1
- 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 +20 -12
- package/dist/es5/index.js.map +1 -1
- package/dist/es5/tileset/helpers/bounding-volume.js +25 -37
- package/dist/es5/tileset/helpers/bounding-volume.js.map +1 -1
- package/dist/es5/tileset/helpers/frame-state.js +29 -25
- package/dist/es5/tileset/helpers/frame-state.js.map +1 -1
- package/dist/es5/tileset/helpers/i3s-lod.js +57 -106
- package/dist/es5/tileset/helpers/i3s-lod.js.map +1 -1
- package/dist/es5/tileset/helpers/tiles-3d-lod.js +51 -47
- package/dist/es5/tileset/helpers/tiles-3d-lod.js.map +1 -1
- package/dist/es5/tileset/helpers/transform-utils.js +21 -12
- package/dist/es5/tileset/helpers/transform-utils.js.map +1 -1
- package/dist/es5/tileset/helpers/zoom.js +17 -15
- package/dist/es5/tileset/helpers/zoom.js.map +1 -1
- package/dist/es5/tileset/tile-3d.js +328 -421
- package/dist/es5/tileset/tile-3d.js.map +1 -1
- package/dist/es5/tileset/tileset-3d.js +381 -563
- package/dist/es5/tileset/tileset-3d.js.map +1 -1
- package/dist/es5/tileset/tileset-cache.js +50 -63
- package/dist/es5/tileset/tileset-cache.js.map +1 -1
- package/dist/es5/tileset/traversers/i3s-tile-manager.js +32 -44
- package/dist/es5/tileset/traversers/i3s-tile-manager.js.map +1 -1
- package/dist/es5/tileset/traversers/i3s-tileset-traverser.js +53 -143
- package/dist/es5/tileset/traversers/i3s-tileset-traverser.js.map +1 -1
- package/dist/es5/tileset/traversers/tileset-3d-traverser.js +34 -62
- package/dist/es5/tileset/traversers/tileset-3d-traverser.js.map +1 -1
- package/dist/es5/tileset/traversers/tileset-traverser.js +209 -282
- package/dist/es5/tileset/traversers/tileset-traverser.js.map +1 -1
- package/dist/es5/utils/doubly-linked-list-node.js +7 -9
- package/dist/es5/utils/doubly-linked-list-node.js.map +1 -1
- package/dist/es5/utils/doubly-linked-list.js +64 -76
- package/dist/es5/utils/doubly-linked-list.js.map +1 -1
- package/dist/es5/utils/managed-array.js +86 -108
- package/dist/es5/utils/managed-array.js.map +1 -1
- package/dist/esm/index.js +1 -0
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/tileset/helpers/i3s-lod.js +45 -86
- package/dist/esm/tileset/helpers/i3s-lod.js.map +1 -1
- package/dist/esm/tileset/helpers/transform-utils.js +4 -1
- package/dist/esm/tileset/helpers/transform-utils.js.map +1 -1
- package/dist/esm/tileset/tile-3d.js +3 -3
- package/dist/esm/tileset/tile-3d.js.map +1 -1
- package/dist/esm/tileset/tileset-3d.js +5 -5
- package/dist/esm/tileset/tileset-3d.js.map +1 -1
- package/dist/esm/tileset/traversers/i3s-tileset-traverser.js +4 -4
- package/dist/esm/tileset/traversers/i3s-tileset-traverser.js.map +1 -1
- package/dist/index.d.ts +10 -0
- package/dist/tileset/helpers/3d-tiles-options.d.ts +3 -0
- package/dist/tileset/helpers/bounding-volume.d.ts +8 -0
- package/dist/tileset/helpers/frame-state.d.ts +16 -0
- package/dist/tileset/helpers/i3s-lod.d.ts +19 -0
- package/dist/tileset/helpers/tiles-3d-lod.d.ts +7 -0
- package/dist/tileset/helpers/transform-utils.d.ts +1 -0
- package/dist/tileset/helpers/zoom.d.ts +6 -0
- package/dist/tileset/tile-3d.d.ts +173 -0
- package/dist/tileset/tileset-3d.d.ts +171 -0
- package/dist/tileset/tileset-cache.d.ts +17 -0
- package/dist/tileset/traversers/i3s-tile-manager.d.ts +7 -0
- package/dist/tileset/traversers/i3s-tileset-traverser.d.ts +17 -0
- package/dist/tileset/traversers/tileset-3d-traverser.d.ts +6 -0
- package/dist/tileset/traversers/tileset-traverser.d.ts +51 -0
- package/dist/utils/doubly-linked-list-node.d.ts +11 -0
- package/dist/utils/doubly-linked-list.d.ts +30 -0
- package/dist/utils/managed-array.d.ts +84 -0
- package/package.json +9 -6
- package/src/index.ts +1 -0
- package/src/tileset/helpers/i3s-lod.ts +72 -96
- package/src/tileset/helpers/transform-utils.ts +3 -1
- package/src/tileset/tile-3d.ts +2 -2
- 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
|
-
|
|
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:
|
|
21
|
+
onTraversalEnd: () => {},
|
|
36
22
|
viewportTraversersMap: {},
|
|
37
23
|
basePath: ''
|
|
38
24
|
};
|
|
39
25
|
exports.DEFAULT_PROPS = DEFAULT_PROPS;
|
|
40
26
|
|
|
41
|
-
|
|
42
|
-
|
|
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 =
|
|
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
|
-
(
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
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
|
-
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
|
|
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
|
-
|
|
100
|
-
var parentRefines = Boolean(!parent || parent._shouldRefine);
|
|
101
|
-
var stoppedRefining = !shouldRefine;
|
|
65
|
+
this._traversalStack.reset();
|
|
102
66
|
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
this.loadTile(tile, frameState);
|
|
67
|
+
this._emptyTraversalStack.reset();
|
|
68
|
+
}
|
|
106
69
|
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
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
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
}
|
|
75
|
+
while (stack.length > 0) {
|
|
76
|
+
const tile = stack.pop();
|
|
77
|
+
let shouldRefine = false;
|
|
120
78
|
|
|
121
|
-
|
|
122
|
-
tile
|
|
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
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
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
|
-
|
|
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
|
-
|
|
181
|
-
|
|
110
|
+
this.options.onTraversalEnd(frameState);
|
|
111
|
+
}
|
|
182
112
|
|
|
183
|
-
|
|
184
|
-
|
|
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
|
-
|
|
116
|
+
for (const child of children) {
|
|
117
|
+
this.updateTile(child, frameState);
|
|
118
|
+
}
|
|
192
119
|
|
|
193
|
-
|
|
194
|
-
|
|
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
|
-
|
|
205
|
-
|
|
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
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
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
|
-
|
|
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
|
-
|
|
250
|
-
|
|
251
|
-
}
|
|
172
|
+
return refines;
|
|
173
|
+
}
|
|
252
174
|
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
175
|
+
updateTile(tile, frameState) {
|
|
176
|
+
this.updateTileVisibility(tile, frameState);
|
|
177
|
+
}
|
|
256
178
|
|
|
257
|
-
|
|
179
|
+
selectTile(tile, frameState) {
|
|
180
|
+
if (this.shouldSelectTile(tile)) {
|
|
181
|
+
tile._selectedFrame = frameState.frameNumber;
|
|
182
|
+
this.selectedTiles[tile.id] = tile;
|
|
258
183
|
}
|
|
259
|
-
}
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
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
|
-
|
|
266
|
-
|
|
267
|
-
|
|
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
|
-
|
|
275
|
-
|
|
276
|
-
|
|
205
|
+
if (tile.hasTilesetContent) {
|
|
206
|
+
return !tile.contentExpired;
|
|
207
|
+
}
|
|
277
208
|
|
|
278
|
-
|
|
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
|
-
|
|
286
|
-
|
|
287
|
-
var value = this.options.viewportTraversersMap[_key];
|
|
213
|
+
return this.shouldRefine(tile, frameState, useParentMetric);
|
|
214
|
+
}
|
|
288
215
|
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
}
|
|
293
|
-
} else {
|
|
294
|
-
viewportIds.push(frameState.viewport.id);
|
|
295
|
-
}
|
|
216
|
+
shouldLoadTile(tile) {
|
|
217
|
+
return tile.hasUnloadedContent || tile.contentExpired;
|
|
218
|
+
}
|
|
296
219
|
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
}
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
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
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
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
|
-
|
|
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
|
-
|
|
342
|
-
|
|
264
|
+
return anyVisible;
|
|
265
|
+
}
|
|
343
266
|
|
|
344
|
-
|
|
345
|
-
|
|
267
|
+
executeEmptyTraversal(root, frameState) {
|
|
268
|
+
let allDescendantsLoaded = true;
|
|
269
|
+
const stack = this._emptyTraversalStack;
|
|
270
|
+
stack.push(root);
|
|
346
271
|
|
|
347
|
-
|
|
348
|
-
|
|
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
|
-
|
|
351
|
-
|
|
352
|
-
var child = _step4.value;
|
|
280
|
+
this.touchTile(tile, frameState);
|
|
281
|
+
const traverse = !tile.hasRenderContent && this.canTraverse(tile, frameState, false, true);
|
|
353
282
|
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
}
|
|
283
|
+
if (traverse) {
|
|
284
|
+
const children = tile.children;
|
|
357
285
|
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
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
|
-
|
|
366
|
-
|
|
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
|
-
|
|
374
|
-
}
|
|
297
|
+
|
|
298
|
+
return allDescendantsLoaded;
|
|
299
|
+
}
|
|
300
|
+
|
|
301
|
+
}
|
|
375
302
|
|
|
376
303
|
exports.default = TilesetTraverser;
|
|
377
304
|
//# sourceMappingURL=tileset-traverser.js.map
|