@loaders.gl/tiles 3.1.0-beta.2 → 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.
- package/dist/bundle.js +4 -0
- 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 +13 -13
- 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 +44 -42
- 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 +423 -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 +11 -11
- 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 +106 -86
- package/dist/es5/utils/managed-array.js.map +1 -1
- package/dist/esm/tileset/tile-3d.js +3 -0
- package/dist/esm/tileset/tile-3d.js.map +1 -1
- package/dist/tileset/tile-3d.d.ts +1 -0
- package/dist/tileset/tile-3d.d.ts.map +1 -1
- package/dist/tileset/tile-3d.js +1 -0
- package/package.json +4 -4
- package/src/tileset/tile-3d.ts +2 -0
|
@@ -7,6 +7,14 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
7
7
|
});
|
|
8
8
|
exports.default = void 0;
|
|
9
9
|
|
|
10
|
+
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
11
|
+
|
|
12
|
+
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
13
|
+
|
|
14
|
+
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
15
|
+
|
|
16
|
+
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
17
|
+
|
|
10
18
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
11
19
|
|
|
12
20
|
var _core = require("@math.gl/core");
|
|
@@ -35,17 +43,29 @@ var _i3sTilesetTraverser = _interopRequireDefault(require("./traversers/i3s-tile
|
|
|
35
43
|
|
|
36
44
|
var _constants = require("../constants");
|
|
37
45
|
|
|
38
|
-
|
|
46
|
+
function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
|
|
47
|
+
|
|
48
|
+
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
49
|
+
|
|
50
|
+
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
|
|
51
|
+
|
|
52
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
|
|
53
|
+
|
|
54
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
|
|
55
|
+
|
|
56
|
+
var DEFAULT_PROPS = {
|
|
39
57
|
description: '',
|
|
40
58
|
ellipsoid: _geospatial.Ellipsoid.WGS84,
|
|
41
59
|
modelMatrix: new _core.Matrix4(),
|
|
42
60
|
throttleRequests: true,
|
|
43
61
|
maxRequests: 64,
|
|
44
62
|
maximumMemoryUsage: 32,
|
|
45
|
-
onTileLoad: ()
|
|
46
|
-
onTileUnload: ()
|
|
47
|
-
onTileError: ()
|
|
48
|
-
onTraversalComplete: selectedTiles
|
|
63
|
+
onTileLoad: function onTileLoad() {},
|
|
64
|
+
onTileUnload: function onTileUnload() {},
|
|
65
|
+
onTileError: function onTileError() {},
|
|
66
|
+
onTraversalComplete: function onTraversalComplete(selectedTiles) {
|
|
67
|
+
return selectedTiles;
|
|
68
|
+
},
|
|
49
69
|
contentLoader: undefined,
|
|
50
70
|
viewDistanceScale: 1.0,
|
|
51
71
|
maximumScreenSpaceError: 8,
|
|
@@ -59,19 +79,20 @@ const DEFAULT_PROPS = {
|
|
|
59
79
|
basePath: '',
|
|
60
80
|
i3s: {}
|
|
61
81
|
};
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
82
|
+
var TILES_TOTAL = 'Tiles In Tileset(s)';
|
|
83
|
+
var TILES_IN_MEMORY = 'Tiles In Memory';
|
|
84
|
+
var TILES_IN_VIEW = 'Tiles In View';
|
|
85
|
+
var TILES_RENDERABLE = 'Tiles To Render';
|
|
86
|
+
var TILES_LOADED = 'Tiles Loaded';
|
|
87
|
+
var TILES_LOADING = 'Tiles Loading';
|
|
88
|
+
var TILES_UNLOADED = 'Tiles Unloaded';
|
|
89
|
+
var TILES_LOAD_FAILED = 'Failed Tile Loads';
|
|
90
|
+
var POINTS_COUNT = 'Points';
|
|
91
|
+
var TILES_GPU_MEMORY = 'Tile Memory Use';
|
|
92
|
+
|
|
93
|
+
var Tileset3D = function () {
|
|
94
|
+
function Tileset3D(json, options) {
|
|
95
|
+
(0, _classCallCheck2.default)(this, Tileset3D);
|
|
75
96
|
(0, _defineProperty2.default)(this, "options", void 0);
|
|
76
97
|
(0, _defineProperty2.default)(this, "loadOptions", void 0);
|
|
77
98
|
(0, _defineProperty2.default)(this, "type", void 0);
|
|
@@ -117,9 +138,7 @@ class Tileset3D {
|
|
|
117
138
|
(0, _defineProperty2.default)(this, "frameStateData", void 0);
|
|
118
139
|
(0, _defineProperty2.default)(this, "maximumMemoryUsage", void 0);
|
|
119
140
|
(0, _loaderUtils.assert)(json);
|
|
120
|
-
this.options = {
|
|
121
|
-
...options
|
|
122
|
-
};
|
|
141
|
+
this.options = _objectSpread(_objectSpread({}, DEFAULT_PROPS), options);
|
|
123
142
|
this.tileset = json;
|
|
124
143
|
this.loader = json.loader;
|
|
125
144
|
this.type = json.type;
|
|
@@ -173,473 +192,636 @@ class Tileset3D {
|
|
|
173
192
|
this._initializeTileSet(json);
|
|
174
193
|
}
|
|
175
194
|
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
isLoaded() {
|
|
181
|
-
return this._pendingCount === 0 && this._frameNumber !== 0;
|
|
182
|
-
}
|
|
183
|
-
|
|
184
|
-
get tiles() {
|
|
185
|
-
return Object.values(this._tiles);
|
|
186
|
-
}
|
|
187
|
-
|
|
188
|
-
get frameNumber() {
|
|
189
|
-
return this._frameNumber;
|
|
190
|
-
}
|
|
191
|
-
|
|
192
|
-
get queryParams() {
|
|
193
|
-
if (!this._queryParamsString) {
|
|
194
|
-
this._queryParamsString = getQueryParamString(this._queryParams);
|
|
195
|
+
(0, _createClass2.default)(Tileset3D, [{
|
|
196
|
+
key: "destroy",
|
|
197
|
+
value: function destroy() {
|
|
198
|
+
this._destroy();
|
|
195
199
|
}
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
setProps(props) {
|
|
201
|
-
this.options = { ...this.options,
|
|
202
|
-
...props
|
|
203
|
-
};
|
|
204
|
-
}
|
|
205
|
-
|
|
206
|
-
setOptions(options) {
|
|
207
|
-
this.options = { ...this.options,
|
|
208
|
-
...options
|
|
209
|
-
};
|
|
210
|
-
}
|
|
211
|
-
|
|
212
|
-
getTileUrl(tilePath) {
|
|
213
|
-
const isDataUrl = tilePath.startsWith('data:');
|
|
214
|
-
|
|
215
|
-
if (isDataUrl) {
|
|
216
|
-
return tilePath;
|
|
200
|
+
}, {
|
|
201
|
+
key: "isLoaded",
|
|
202
|
+
value: function isLoaded() {
|
|
203
|
+
return this._pendingCount === 0 && this._frameNumber !== 0;
|
|
217
204
|
}
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
hasExtension(extensionName) {
|
|
223
|
-
return Boolean(this._extensionsUsed && this._extensionsUsed.indexOf(extensionName) > -1);
|
|
224
|
-
}
|
|
225
|
-
|
|
226
|
-
update(viewports) {
|
|
227
|
-
if ('loadTiles' in this.options && !this.options.loadTiles) {
|
|
228
|
-
return;
|
|
205
|
+
}, {
|
|
206
|
+
key: "tiles",
|
|
207
|
+
get: function get() {
|
|
208
|
+
return Object.values(this._tiles);
|
|
229
209
|
}
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
210
|
+
}, {
|
|
211
|
+
key: "frameNumber",
|
|
212
|
+
get: function get() {
|
|
213
|
+
return this._frameNumber;
|
|
233
214
|
}
|
|
215
|
+
}, {
|
|
216
|
+
key: "queryParams",
|
|
217
|
+
get: function get() {
|
|
218
|
+
if (!this._queryParamsString) {
|
|
219
|
+
this._queryParamsString = getQueryParamString(this._queryParams);
|
|
220
|
+
}
|
|
234
221
|
|
|
235
|
-
|
|
236
|
-
viewports = this.lastUpdatedVieports;
|
|
237
|
-
} else {
|
|
238
|
-
this.lastUpdatedVieports = viewports;
|
|
222
|
+
return this._queryParamsString;
|
|
239
223
|
}
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
224
|
+
}, {
|
|
225
|
+
key: "setProps",
|
|
226
|
+
value: function setProps(props) {
|
|
227
|
+
this.options = _objectSpread(_objectSpread({}, this.options), props);
|
|
243
228
|
}
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
this.traverseCounter = viewports.length;
|
|
249
|
-
const viewportsToTraverse = [];
|
|
250
|
-
|
|
251
|
-
for (const viewport of viewports) {
|
|
252
|
-
const id = viewport.id;
|
|
253
|
-
|
|
254
|
-
if (this._needTraverse(id)) {
|
|
255
|
-
viewportsToTraverse.push(id);
|
|
256
|
-
} else {
|
|
257
|
-
this.traverseCounter--;
|
|
258
|
-
}
|
|
229
|
+
}, {
|
|
230
|
+
key: "setOptions",
|
|
231
|
+
value: function setOptions(options) {
|
|
232
|
+
this.options = _objectSpread(_objectSpread({}, this.options), options);
|
|
259
233
|
}
|
|
234
|
+
}, {
|
|
235
|
+
key: "getTileUrl",
|
|
236
|
+
value: function getTileUrl(tilePath) {
|
|
237
|
+
var isDataUrl = tilePath.startsWith('data:');
|
|
260
238
|
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
if (!this.roots[id]) {
|
|
265
|
-
this.roots[id] = this._initializeTileHeaders(this.tileset, null);
|
|
239
|
+
if (isDataUrl) {
|
|
240
|
+
return tilePath;
|
|
266
241
|
}
|
|
267
242
|
|
|
268
|
-
|
|
269
|
-
|
|
243
|
+
return "".concat(tilePath).concat(this.queryParams);
|
|
244
|
+
}
|
|
245
|
+
}, {
|
|
246
|
+
key: "hasExtension",
|
|
247
|
+
value: function hasExtension(extensionName) {
|
|
248
|
+
return Boolean(this._extensionsUsed && this._extensionsUsed.indexOf(extensionName) > -1);
|
|
249
|
+
}
|
|
250
|
+
}, {
|
|
251
|
+
key: "update",
|
|
252
|
+
value: function update(viewports) {
|
|
253
|
+
if ('loadTiles' in this.options && !this.options.loadTiles) {
|
|
254
|
+
return;
|
|
270
255
|
}
|
|
271
256
|
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
}
|
|
276
|
-
}
|
|
257
|
+
if (this.traverseCounter > 0) {
|
|
258
|
+
return;
|
|
259
|
+
}
|
|
277
260
|
|
|
278
|
-
|
|
279
|
-
|
|
261
|
+
if (!viewports && this.lastUpdatedVieports) {
|
|
262
|
+
viewports = this.lastUpdatedVieports;
|
|
263
|
+
} else {
|
|
264
|
+
this.lastUpdatedVieports = viewports;
|
|
265
|
+
}
|
|
280
266
|
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
267
|
+
if (!(viewports instanceof Array)) {
|
|
268
|
+
viewports = [viewports];
|
|
269
|
+
}
|
|
284
270
|
|
|
285
|
-
|
|
286
|
-
return false;
|
|
287
|
-
}
|
|
271
|
+
this._cache.reset();
|
|
288
272
|
|
|
289
|
-
|
|
290
|
-
|
|
273
|
+
this._frameNumber++;
|
|
274
|
+
this.traverseCounter = viewports.length;
|
|
275
|
+
var viewportsToTraverse = [];
|
|
291
276
|
|
|
292
|
-
|
|
293
|
-
|
|
277
|
+
var _iterator = _createForOfIteratorHelper(viewports),
|
|
278
|
+
_step;
|
|
294
279
|
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
_emptyTiles: []
|
|
300
|
-
};
|
|
301
|
-
}
|
|
280
|
+
try {
|
|
281
|
+
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
282
|
+
var viewport = _step.value;
|
|
283
|
+
var _id = viewport.id;
|
|
302
284
|
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
285
|
+
if (this._needTraverse(_id)) {
|
|
286
|
+
viewportsToTraverse.push(_id);
|
|
287
|
+
} else {
|
|
288
|
+
this.traverseCounter--;
|
|
289
|
+
}
|
|
290
|
+
}
|
|
291
|
+
} catch (err) {
|
|
292
|
+
_iterator.e(err);
|
|
293
|
+
} finally {
|
|
294
|
+
_iterator.f();
|
|
295
|
+
}
|
|
309
296
|
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
}
|
|
297
|
+
var _iterator2 = _createForOfIteratorHelper(viewports),
|
|
298
|
+
_step2;
|
|
313
299
|
|
|
314
|
-
|
|
315
|
-
|
|
300
|
+
try {
|
|
301
|
+
for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
|
|
302
|
+
var _viewport = _step2.value;
|
|
303
|
+
var _id2 = _viewport.id;
|
|
316
304
|
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
this._emptyTiles = [];
|
|
305
|
+
if (!this.roots[_id2]) {
|
|
306
|
+
this.roots[_id2] = this._initializeTileHeaders(this.tileset, null);
|
|
307
|
+
}
|
|
321
308
|
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
this._requestedTiles = this._requestedTiles.concat(frameStateDataValue._requestedTiles);
|
|
326
|
-
this._emptyTiles = this._emptyTiles.concat(frameStateDataValue._emptyTiles);
|
|
327
|
-
}
|
|
309
|
+
if (!viewportsToTraverse.includes(_id2)) {
|
|
310
|
+
continue;
|
|
311
|
+
}
|
|
328
312
|
|
|
329
|
-
|
|
313
|
+
var frameState = (0, _frameState.getFrameState)(_viewport, this._frameNumber);
|
|
330
314
|
|
|
331
|
-
|
|
332
|
-
|
|
315
|
+
this._traverser.traverse(this.roots[_id2], frameState, this.options);
|
|
316
|
+
}
|
|
317
|
+
} catch (err) {
|
|
318
|
+
_iterator2.e(err);
|
|
319
|
+
} finally {
|
|
320
|
+
_iterator2.f();
|
|
321
|
+
}
|
|
333
322
|
}
|
|
323
|
+
}, {
|
|
324
|
+
key: "_needTraverse",
|
|
325
|
+
value: function _needTraverse(viewportId) {
|
|
326
|
+
var traverserId = viewportId;
|
|
334
327
|
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
328
|
+
if (this.options.viewportTraversersMap) {
|
|
329
|
+
traverserId = this.options.viewportTraversersMap[viewportId];
|
|
330
|
+
}
|
|
338
331
|
|
|
339
|
-
|
|
340
|
-
|
|
332
|
+
if (traverserId !== viewportId) {
|
|
333
|
+
return false;
|
|
334
|
+
}
|
|
341
335
|
|
|
342
|
-
_tilesChanged(oldSelectedTiles, selectedTiles) {
|
|
343
|
-
if (oldSelectedTiles.length !== selectedTiles.length) {
|
|
344
336
|
return true;
|
|
345
337
|
}
|
|
338
|
+
}, {
|
|
339
|
+
key: "_onTraversalEnd",
|
|
340
|
+
value: function _onTraversalEnd(frameState) {
|
|
341
|
+
var id = frameState.viewport.id;
|
|
342
|
+
|
|
343
|
+
if (!this.frameStateData[id]) {
|
|
344
|
+
this.frameStateData[id] = {
|
|
345
|
+
selectedTiles: [],
|
|
346
|
+
_requestedTiles: [],
|
|
347
|
+
_emptyTiles: []
|
|
348
|
+
};
|
|
349
|
+
}
|
|
346
350
|
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
351
|
+
var currentFrameStateData = this.frameStateData[id];
|
|
352
|
+
var selectedTiles = Object.values(this._traverser.selectedTiles);
|
|
353
|
+
currentFrameStateData.selectedTiles = selectedTiles;
|
|
354
|
+
currentFrameStateData._requestedTiles = Object.values(this._traverser.requestedTiles);
|
|
355
|
+
currentFrameStateData._emptyTiles = Object.values(this._traverser.emptyTiles);
|
|
356
|
+
this.traverseCounter--;
|
|
353
357
|
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
if (tile.contentUnloaded) {
|
|
357
|
-
this._loadTile(tile);
|
|
358
|
+
if (this.traverseCounter > 0) {
|
|
359
|
+
return;
|
|
358
360
|
}
|
|
361
|
+
|
|
362
|
+
this._updateTiles();
|
|
359
363
|
}
|
|
360
|
-
}
|
|
364
|
+
}, {
|
|
365
|
+
key: "_updateTiles",
|
|
366
|
+
value: function _updateTiles() {
|
|
367
|
+
this.selectedTiles = [];
|
|
368
|
+
this._requestedTiles = [];
|
|
369
|
+
this._emptyTiles = [];
|
|
361
370
|
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
371
|
+
for (var frameStateKey in this.frameStateData) {
|
|
372
|
+
var frameStateDataValue = this.frameStateData[frameStateKey];
|
|
373
|
+
this.selectedTiles = this.selectedTiles.concat(frameStateDataValue.selectedTiles);
|
|
374
|
+
this._requestedTiles = this._requestedTiles.concat(frameStateDataValue._requestedTiles);
|
|
375
|
+
this._emptyTiles = this._emptyTiles.concat(frameStateDataValue._emptyTiles);
|
|
376
|
+
}
|
|
365
377
|
|
|
366
|
-
|
|
367
|
-
let tilesRenderable = 0;
|
|
368
|
-
let pointsRenderable = 0;
|
|
378
|
+
this.selectedTiles = this.options.onTraversalComplete(this.selectedTiles);
|
|
369
379
|
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
tilesRenderable++;
|
|
380
|
+
var _iterator3 = _createForOfIteratorHelper(this.selectedTiles),
|
|
381
|
+
_step3;
|
|
373
382
|
|
|
374
|
-
|
|
375
|
-
|
|
383
|
+
try {
|
|
384
|
+
for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
|
|
385
|
+
var _tile = _step3.value;
|
|
386
|
+
this._tiles[_tile.id] = _tile;
|
|
376
387
|
}
|
|
388
|
+
} catch (err) {
|
|
389
|
+
_iterator3.e(err);
|
|
390
|
+
} finally {
|
|
391
|
+
_iterator3.f();
|
|
377
392
|
}
|
|
378
|
-
}
|
|
379
393
|
|
|
380
|
-
|
|
381
|
-
this.stats.get(TILES_RENDERABLE).count = tilesRenderable;
|
|
382
|
-
this.stats.get(POINTS_COUNT).count = pointsRenderable;
|
|
383
|
-
}
|
|
394
|
+
this._loadTiles();
|
|
384
395
|
|
|
385
|
-
|
|
386
|
-
this.root = this._initializeTileHeaders(tilesetJson, null);
|
|
396
|
+
this._unloadTiles();
|
|
387
397
|
|
|
388
|
-
|
|
389
|
-
this._initializeCesiumTileset(tilesetJson);
|
|
398
|
+
this._updateStats();
|
|
390
399
|
}
|
|
400
|
+
}, {
|
|
401
|
+
key: "_tilesChanged",
|
|
402
|
+
value: function _tilesChanged(oldSelectedTiles, selectedTiles) {
|
|
403
|
+
if (oldSelectedTiles.length !== selectedTiles.length) {
|
|
404
|
+
return true;
|
|
405
|
+
}
|
|
391
406
|
|
|
392
|
-
|
|
393
|
-
|
|
407
|
+
var set1 = new Set(oldSelectedTiles.map(function (t) {
|
|
408
|
+
return t.id;
|
|
409
|
+
}));
|
|
410
|
+
var set2 = new Set(selectedTiles.map(function (t) {
|
|
411
|
+
return t.id;
|
|
412
|
+
}));
|
|
413
|
+
var changed = oldSelectedTiles.filter(function (x) {
|
|
414
|
+
return !set2.has(x.id);
|
|
415
|
+
}).length > 0;
|
|
416
|
+
changed = changed || selectedTiles.filter(function (x) {
|
|
417
|
+
return !set1.has(x.id);
|
|
418
|
+
}).length > 0;
|
|
419
|
+
return changed;
|
|
420
|
+
}
|
|
421
|
+
}, {
|
|
422
|
+
key: "_loadTiles",
|
|
423
|
+
value: function _loadTiles() {
|
|
424
|
+
var _iterator4 = _createForOfIteratorHelper(this._requestedTiles),
|
|
425
|
+
_step4;
|
|
426
|
+
|
|
427
|
+
try {
|
|
428
|
+
for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {
|
|
429
|
+
var _tile2 = _step4.value;
|
|
430
|
+
|
|
431
|
+
if (_tile2.contentUnloaded) {
|
|
432
|
+
this._loadTile(_tile2);
|
|
433
|
+
}
|
|
434
|
+
}
|
|
435
|
+
} catch (err) {
|
|
436
|
+
_iterator4.e(err);
|
|
437
|
+
} finally {
|
|
438
|
+
_iterator4.f();
|
|
439
|
+
}
|
|
394
440
|
}
|
|
441
|
+
}, {
|
|
442
|
+
key: "_unloadTiles",
|
|
443
|
+
value: function _unloadTiles() {
|
|
444
|
+
this._cache.unloadTiles(this, function (tileset, tile) {
|
|
445
|
+
return tileset._unloadTile(tile);
|
|
446
|
+
});
|
|
447
|
+
}
|
|
448
|
+
}, {
|
|
449
|
+
key: "_updateStats",
|
|
450
|
+
value: function _updateStats() {
|
|
451
|
+
var tilesRenderable = 0;
|
|
452
|
+
var pointsRenderable = 0;
|
|
453
|
+
|
|
454
|
+
var _iterator5 = _createForOfIteratorHelper(this.selectedTiles),
|
|
455
|
+
_step5;
|
|
456
|
+
|
|
457
|
+
try {
|
|
458
|
+
for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) {
|
|
459
|
+
var _tile3 = _step5.value;
|
|
460
|
+
|
|
461
|
+
if (_tile3.contentAvailable && _tile3.content) {
|
|
462
|
+
tilesRenderable++;
|
|
463
|
+
|
|
464
|
+
if (_tile3.content.pointCount) {
|
|
465
|
+
pointsRenderable += _tile3.content.pointCount;
|
|
466
|
+
}
|
|
467
|
+
}
|
|
468
|
+
}
|
|
469
|
+
} catch (err) {
|
|
470
|
+
_iterator5.e(err);
|
|
471
|
+
} finally {
|
|
472
|
+
_iterator5.f();
|
|
473
|
+
}
|
|
395
474
|
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
_calculateViewProps() {
|
|
400
|
-
const root = this.root;
|
|
401
|
-
(0, _loaderUtils.assert)(root);
|
|
402
|
-
const {
|
|
403
|
-
center
|
|
404
|
-
} = root.boundingVolume;
|
|
405
|
-
|
|
406
|
-
if (!center) {
|
|
407
|
-
console.warn('center was not pre-calculated for the root tile');
|
|
408
|
-
this.cartographicCenter = new _core.Vector3();
|
|
409
|
-
this.zoom = 1;
|
|
410
|
-
return;
|
|
475
|
+
this.stats.get(TILES_IN_VIEW).count = this.selectedTiles.length;
|
|
476
|
+
this.stats.get(TILES_RENDERABLE).count = tilesRenderable;
|
|
477
|
+
this.stats.get(POINTS_COUNT).count = pointsRenderable;
|
|
411
478
|
}
|
|
479
|
+
}, {
|
|
480
|
+
key: "_initializeTileSet",
|
|
481
|
+
value: function _initializeTileSet(tilesetJson) {
|
|
482
|
+
this.root = this._initializeTileHeaders(tilesetJson, null);
|
|
412
483
|
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
}
|
|
417
|
-
|
|
418
|
-
_initializeStats() {
|
|
419
|
-
this.stats.get(TILES_TOTAL);
|
|
420
|
-
this.stats.get(TILES_LOADING);
|
|
421
|
-
this.stats.get(TILES_IN_MEMORY);
|
|
422
|
-
this.stats.get(TILES_IN_VIEW);
|
|
423
|
-
this.stats.get(TILES_RENDERABLE);
|
|
424
|
-
this.stats.get(TILES_LOADED);
|
|
425
|
-
this.stats.get(TILES_UNLOADED);
|
|
426
|
-
this.stats.get(TILES_LOAD_FAILED);
|
|
427
|
-
this.stats.get(POINTS_COUNT, 'memory');
|
|
428
|
-
this.stats.get(TILES_GPU_MEMORY, 'memory');
|
|
429
|
-
}
|
|
484
|
+
if (this.type === _constants.TILESET_TYPE.TILES3D) {
|
|
485
|
+
this._initializeCesiumTileset(tilesetJson);
|
|
486
|
+
}
|
|
430
487
|
|
|
431
|
-
|
|
432
|
-
|
|
488
|
+
if (this.type === _constants.TILESET_TYPE.I3S) {
|
|
489
|
+
this._initializeI3STileset();
|
|
490
|
+
}
|
|
433
491
|
|
|
434
|
-
|
|
435
|
-
parentTileHeader.children.push(rootTile);
|
|
436
|
-
rootTile.depth = parentTileHeader.depth + 1;
|
|
492
|
+
this._calculateViewProps();
|
|
437
493
|
}
|
|
494
|
+
}, {
|
|
495
|
+
key: "_calculateViewProps",
|
|
496
|
+
value: function _calculateViewProps() {
|
|
497
|
+
var root = this.root;
|
|
498
|
+
(0, _loaderUtils.assert)(root);
|
|
499
|
+
var center = root.boundingVolume.center;
|
|
438
500
|
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
const tile = stack.pop();
|
|
445
|
-
this.stats.get(TILES_TOTAL).incrementCount();
|
|
446
|
-
const children = tile.header.children || [];
|
|
447
|
-
|
|
448
|
-
for (const childHeader of children) {
|
|
449
|
-
const childTile = new _tile3d.default(this, childHeader, tile);
|
|
450
|
-
tile.children.push(childTile);
|
|
451
|
-
childTile.depth = tile.depth + 1;
|
|
452
|
-
stack.push(childTile);
|
|
453
|
-
}
|
|
501
|
+
if (!center) {
|
|
502
|
+
console.warn('center was not pre-calculated for the root tile');
|
|
503
|
+
this.cartographicCenter = new _core.Vector3();
|
|
504
|
+
this.zoom = 1;
|
|
505
|
+
return;
|
|
454
506
|
}
|
|
455
|
-
}
|
|
456
507
|
|
|
457
|
-
|
|
458
|
-
|
|
508
|
+
this.cartographicCenter = _geospatial.Ellipsoid.WGS84.cartesianToCartographic(center, new _core.Vector3());
|
|
509
|
+
this.cartesianCenter = center;
|
|
510
|
+
this.zoom = (0, _zoom.getZoomFromBoundingVolume)(root.boundingVolume);
|
|
511
|
+
}
|
|
512
|
+
}, {
|
|
513
|
+
key: "_initializeStats",
|
|
514
|
+
value: function _initializeStats() {
|
|
515
|
+
this.stats.get(TILES_TOTAL);
|
|
516
|
+
this.stats.get(TILES_LOADING);
|
|
517
|
+
this.stats.get(TILES_IN_MEMORY);
|
|
518
|
+
this.stats.get(TILES_IN_VIEW);
|
|
519
|
+
this.stats.get(TILES_RENDERABLE);
|
|
520
|
+
this.stats.get(TILES_LOADED);
|
|
521
|
+
this.stats.get(TILES_UNLOADED);
|
|
522
|
+
this.stats.get(TILES_LOAD_FAILED);
|
|
523
|
+
this.stats.get(POINTS_COUNT, 'memory');
|
|
524
|
+
this.stats.get(TILES_GPU_MEMORY, 'memory');
|
|
525
|
+
}
|
|
526
|
+
}, {
|
|
527
|
+
key: "_initializeTileHeaders",
|
|
528
|
+
value: function _initializeTileHeaders(tilesetJson, parentTileHeader) {
|
|
529
|
+
var rootTile = new _tile3d.default(this, tilesetJson.root, parentTileHeader);
|
|
530
|
+
|
|
531
|
+
if (parentTileHeader) {
|
|
532
|
+
parentTileHeader.children.push(rootTile);
|
|
533
|
+
rootTile.depth = parentTileHeader.depth + 1;
|
|
534
|
+
}
|
|
459
535
|
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
536
|
+
if (this.type === _constants.TILESET_TYPE.TILES3D) {
|
|
537
|
+
var stack = [];
|
|
538
|
+
stack.push(rootTile);
|
|
463
539
|
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
TraverserClass = _tileset3dTraverser.default;
|
|
467
|
-
break;
|
|
540
|
+
while (stack.length > 0) {
|
|
541
|
+
var _tile4 = stack.pop();
|
|
468
542
|
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
break;
|
|
543
|
+
this.stats.get(TILES_TOTAL).incrementCount();
|
|
544
|
+
var children = _tile4.header.children || [];
|
|
472
545
|
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
}
|
|
546
|
+
var _iterator6 = _createForOfIteratorHelper(children),
|
|
547
|
+
_step6;
|
|
476
548
|
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
}
|
|
549
|
+
try {
|
|
550
|
+
for (_iterator6.s(); !(_step6 = _iterator6.n()).done;) {
|
|
551
|
+
var childHeader = _step6.value;
|
|
552
|
+
var childTile = new _tile3d.default(this, childHeader, _tile4);
|
|
482
553
|
|
|
483
|
-
|
|
484
|
-
this._destroySubtree(parentTile);
|
|
485
|
-
}
|
|
554
|
+
_tile4.children.push(childTile);
|
|
486
555
|
|
|
487
|
-
|
|
488
|
-
|
|
556
|
+
childTile.depth = _tile4.depth + 1;
|
|
557
|
+
stack.push(childTile);
|
|
558
|
+
}
|
|
559
|
+
} catch (err) {
|
|
560
|
+
_iterator6.e(err);
|
|
561
|
+
} finally {
|
|
562
|
+
_iterator6.f();
|
|
563
|
+
}
|
|
564
|
+
}
|
|
565
|
+
}
|
|
489
566
|
|
|
490
|
-
|
|
491
|
-
|
|
567
|
+
return rootTile;
|
|
568
|
+
}
|
|
569
|
+
}, {
|
|
570
|
+
key: "_initializeTraverser",
|
|
571
|
+
value: function _initializeTraverser() {
|
|
572
|
+
var TraverserClass;
|
|
573
|
+
var type = this.type;
|
|
492
574
|
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
this._onEndTileLoading();
|
|
575
|
+
switch (type) {
|
|
576
|
+
case _constants.TILESET_TYPE.TILES3D:
|
|
577
|
+
TraverserClass = _tileset3dTraverser.default;
|
|
578
|
+
break;
|
|
498
579
|
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
580
|
+
case _constants.TILESET_TYPE.I3S:
|
|
581
|
+
TraverserClass = _i3sTilesetTraverser.default;
|
|
582
|
+
break;
|
|
502
583
|
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
const url = tile.url;
|
|
507
|
-
console.error("A 3D tile failed to load: ".concat(tile.url, " ").concat(message));
|
|
508
|
-
this.options.onTileError(tile, message, url);
|
|
509
|
-
}
|
|
584
|
+
default:
|
|
585
|
+
TraverserClass = _tilesetTraverser.default;
|
|
586
|
+
}
|
|
510
587
|
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
588
|
+
return new TraverserClass({
|
|
589
|
+
basePath: this.basePath,
|
|
590
|
+
onTraversalEnd: this._onTraversalEnd.bind(this)
|
|
591
|
+
});
|
|
514
592
|
}
|
|
515
|
-
|
|
516
|
-
|
|
517
|
-
|
|
593
|
+
}, {
|
|
594
|
+
key: "_destroyTileHeaders",
|
|
595
|
+
value: function _destroyTileHeaders(parentTile) {
|
|
596
|
+
this._destroySubtree(parentTile);
|
|
518
597
|
}
|
|
598
|
+
}, {
|
|
599
|
+
key: "_loadTile",
|
|
600
|
+
value: function () {
|
|
601
|
+
var _loadTile2 = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee(tile) {
|
|
602
|
+
var loaded;
|
|
603
|
+
return _regenerator.default.wrap(function _callee$(_context) {
|
|
604
|
+
while (1) {
|
|
605
|
+
switch (_context.prev = _context.next) {
|
|
606
|
+
case 0:
|
|
607
|
+
_context.prev = 0;
|
|
519
608
|
|
|
520
|
-
|
|
609
|
+
this._onStartTileLoading();
|
|
521
610
|
|
|
522
|
-
|
|
523
|
-
|
|
611
|
+
_context.next = 4;
|
|
612
|
+
return tile.loadContent();
|
|
524
613
|
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
|
|
614
|
+
case 4:
|
|
615
|
+
loaded = _context.sent;
|
|
616
|
+
_context.next = 10;
|
|
617
|
+
break;
|
|
529
618
|
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
}
|
|
619
|
+
case 7:
|
|
620
|
+
_context.prev = 7;
|
|
621
|
+
_context.t0 = _context["catch"](0);
|
|
534
622
|
|
|
535
|
-
|
|
536
|
-
this._cache.add(this, tile, tileset => tileset._updateCacheStats(tile));
|
|
537
|
-
}
|
|
623
|
+
this._onTileLoadError(tile, _context.t0);
|
|
538
624
|
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
this.stats.get(TILES_IN_MEMORY).incrementCount();
|
|
542
|
-
this.gpuMemoryUsageInBytes += tile.content.byteLength || 0;
|
|
543
|
-
this.stats.get(TILES_GPU_MEMORY).count = this.gpuMemoryUsageInBytes;
|
|
544
|
-
}
|
|
625
|
+
case 10:
|
|
626
|
+
_context.prev = 10;
|
|
545
627
|
|
|
546
|
-
|
|
547
|
-
this.gpuMemoryUsageInBytes -= tile.content && tile.content.byteLength || 0;
|
|
548
|
-
this.stats.get(TILES_IN_MEMORY).decrementCount();
|
|
549
|
-
this.stats.get(TILES_UNLOADED).incrementCount();
|
|
550
|
-
this.stats.get(TILES_GPU_MEMORY).count = this.gpuMemoryUsageInBytes;
|
|
551
|
-
this.options.onTileUnload(tile);
|
|
552
|
-
tile.unloadContent();
|
|
553
|
-
}
|
|
628
|
+
this._onEndTileLoading();
|
|
554
629
|
|
|
555
|
-
|
|
556
|
-
const stack = [];
|
|
630
|
+
this._onTileLoad(tile, loaded);
|
|
557
631
|
|
|
558
|
-
|
|
559
|
-
stack.push(this.root);
|
|
560
|
-
}
|
|
632
|
+
return _context.finish(10);
|
|
561
633
|
|
|
562
|
-
|
|
563
|
-
|
|
634
|
+
case 14:
|
|
635
|
+
case "end":
|
|
636
|
+
return _context.stop();
|
|
637
|
+
}
|
|
638
|
+
}
|
|
639
|
+
}, _callee, this, [[0, 7, 10, 14]]);
|
|
640
|
+
}));
|
|
564
641
|
|
|
565
|
-
|
|
566
|
-
|
|
642
|
+
function _loadTile(_x) {
|
|
643
|
+
return _loadTile2.apply(this, arguments);
|
|
567
644
|
}
|
|
568
645
|
|
|
569
|
-
|
|
570
|
-
}
|
|
646
|
+
return _loadTile;
|
|
647
|
+
}()
|
|
648
|
+
}, {
|
|
649
|
+
key: "_onTileLoadError",
|
|
650
|
+
value: function _onTileLoadError(tile, error) {
|
|
651
|
+
this.stats.get(TILES_LOAD_FAILED).incrementCount();
|
|
652
|
+
var message = error.message || error.toString();
|
|
653
|
+
var url = tile.url;
|
|
654
|
+
console.error("A 3D tile failed to load: ".concat(tile.url, " ").concat(message));
|
|
655
|
+
this.options.onTileError(tile, message, url);
|
|
656
|
+
}
|
|
657
|
+
}, {
|
|
658
|
+
key: "_onTileLoad",
|
|
659
|
+
value: function _onTileLoad(tile, loaded) {
|
|
660
|
+
if (!loaded) {
|
|
661
|
+
return;
|
|
662
|
+
}
|
|
571
663
|
|
|
572
|
-
|
|
573
|
-
|
|
664
|
+
if (tile && tile.content) {
|
|
665
|
+
(0, _transformUtils.calculateTransformProps)(tile, tile.content);
|
|
666
|
+
}
|
|
574
667
|
|
|
575
|
-
|
|
576
|
-
|
|
577
|
-
|
|
578
|
-
|
|
668
|
+
this._addTileToCache(tile);
|
|
669
|
+
|
|
670
|
+
this.options.onTileLoad(tile);
|
|
671
|
+
}
|
|
672
|
+
}, {
|
|
673
|
+
key: "_onStartTileLoading",
|
|
674
|
+
value: function _onStartTileLoading() {
|
|
675
|
+
this._pendingCount++;
|
|
676
|
+
this.stats.get(TILES_LOADING).incrementCount();
|
|
677
|
+
}
|
|
678
|
+
}, {
|
|
679
|
+
key: "_onEndTileLoading",
|
|
680
|
+
value: function _onEndTileLoading() {
|
|
681
|
+
this._pendingCount--;
|
|
682
|
+
this.stats.get(TILES_LOADING).decrementCount();
|
|
683
|
+
}
|
|
684
|
+
}, {
|
|
685
|
+
key: "_addTileToCache",
|
|
686
|
+
value: function _addTileToCache(tile) {
|
|
687
|
+
this._cache.add(this, tile, function (tileset) {
|
|
688
|
+
return tileset._updateCacheStats(tile);
|
|
689
|
+
});
|
|
690
|
+
}
|
|
691
|
+
}, {
|
|
692
|
+
key: "_updateCacheStats",
|
|
693
|
+
value: function _updateCacheStats(tile) {
|
|
694
|
+
this.stats.get(TILES_LOADED).incrementCount();
|
|
695
|
+
this.stats.get(TILES_IN_MEMORY).incrementCount();
|
|
696
|
+
this.gpuMemoryUsageInBytes += tile.content.byteLength || 0;
|
|
697
|
+
this.stats.get(TILES_GPU_MEMORY).count = this.gpuMemoryUsageInBytes;
|
|
698
|
+
}
|
|
699
|
+
}, {
|
|
700
|
+
key: "_unloadTile",
|
|
701
|
+
value: function _unloadTile(tile) {
|
|
702
|
+
this.gpuMemoryUsageInBytes -= tile.content && tile.content.byteLength || 0;
|
|
703
|
+
this.stats.get(TILES_IN_MEMORY).decrementCount();
|
|
704
|
+
this.stats.get(TILES_UNLOADED).incrementCount();
|
|
705
|
+
this.stats.get(TILES_GPU_MEMORY).count = this.gpuMemoryUsageInBytes;
|
|
706
|
+
this.options.onTileUnload(tile);
|
|
707
|
+
tile.unloadContent();
|
|
708
|
+
}
|
|
709
|
+
}, {
|
|
710
|
+
key: "_destroy",
|
|
711
|
+
value: function _destroy() {
|
|
712
|
+
var stack = [];
|
|
713
|
+
|
|
714
|
+
if (this.root) {
|
|
715
|
+
stack.push(this.root);
|
|
716
|
+
}
|
|
579
717
|
|
|
580
|
-
|
|
581
|
-
|
|
718
|
+
while (stack.length > 0) {
|
|
719
|
+
var _tile5 = stack.pop();
|
|
720
|
+
|
|
721
|
+
var _iterator7 = _createForOfIteratorHelper(_tile5.children),
|
|
722
|
+
_step7;
|
|
723
|
+
|
|
724
|
+
try {
|
|
725
|
+
for (_iterator7.s(); !(_step7 = _iterator7.n()).done;) {
|
|
726
|
+
var child = _step7.value;
|
|
727
|
+
stack.push(child);
|
|
728
|
+
}
|
|
729
|
+
} catch (err) {
|
|
730
|
+
_iterator7.e(err);
|
|
731
|
+
} finally {
|
|
732
|
+
_iterator7.f();
|
|
733
|
+
}
|
|
582
734
|
|
|
583
|
-
|
|
584
|
-
stack.push(child);
|
|
735
|
+
this._destroyTile(_tile5);
|
|
585
736
|
}
|
|
586
737
|
|
|
587
|
-
|
|
588
|
-
this._destroyTile(tile);
|
|
589
|
-
}
|
|
738
|
+
this.root = null;
|
|
590
739
|
}
|
|
740
|
+
}, {
|
|
741
|
+
key: "_destroySubtree",
|
|
742
|
+
value: function _destroySubtree(tile) {
|
|
743
|
+
var root = tile;
|
|
744
|
+
var stack = [];
|
|
745
|
+
stack.push(root);
|
|
591
746
|
|
|
592
|
-
|
|
593
|
-
|
|
594
|
-
|
|
595
|
-
|
|
596
|
-
|
|
747
|
+
while (stack.length > 0) {
|
|
748
|
+
tile = stack.pop();
|
|
749
|
+
|
|
750
|
+
var _iterator8 = _createForOfIteratorHelper(tile.children),
|
|
751
|
+
_step8;
|
|
752
|
+
|
|
753
|
+
try {
|
|
754
|
+
for (_iterator8.s(); !(_step8 = _iterator8.n()).done;) {
|
|
755
|
+
var child = _step8.value;
|
|
756
|
+
stack.push(child);
|
|
757
|
+
}
|
|
758
|
+
} catch (err) {
|
|
759
|
+
_iterator8.e(err);
|
|
760
|
+
} finally {
|
|
761
|
+
_iterator8.f();
|
|
762
|
+
}
|
|
597
763
|
|
|
598
|
-
|
|
764
|
+
if (tile !== root) {
|
|
765
|
+
this._destroyTile(tile);
|
|
766
|
+
}
|
|
767
|
+
}
|
|
599
768
|
|
|
600
|
-
|
|
601
|
-
|
|
769
|
+
root.children = [];
|
|
770
|
+
}
|
|
771
|
+
}, {
|
|
772
|
+
key: "_destroyTile",
|
|
773
|
+
value: function _destroyTile(tile) {
|
|
774
|
+
this._cache.unloadTile(this, tile);
|
|
602
775
|
|
|
603
|
-
|
|
604
|
-
this.asset = tilesetJson.asset;
|
|
776
|
+
this._unloadTile(tile);
|
|
605
777
|
|
|
606
|
-
|
|
607
|
-
throw new Error('Tileset must have an asset property.');
|
|
778
|
+
tile.destroy();
|
|
608
779
|
}
|
|
780
|
+
}, {
|
|
781
|
+
key: "_initializeCesiumTileset",
|
|
782
|
+
value: function _initializeCesiumTileset(tilesetJson) {
|
|
783
|
+
this.asset = tilesetJson.asset;
|
|
609
784
|
|
|
610
|
-
|
|
611
|
-
|
|
612
|
-
|
|
785
|
+
if (!this.asset) {
|
|
786
|
+
throw new Error('Tileset must have an asset property.');
|
|
787
|
+
}
|
|
613
788
|
|
|
614
|
-
|
|
615
|
-
|
|
616
|
-
|
|
789
|
+
if (this.asset.version !== '0.0' && this.asset.version !== '1.0') {
|
|
790
|
+
throw new Error('The tileset must be 3D Tiles version 0.0 or 1.0.');
|
|
791
|
+
}
|
|
617
792
|
|
|
618
|
-
|
|
619
|
-
|
|
620
|
-
|
|
621
|
-
this.description = this.options.description || '';
|
|
622
|
-
this.properties = tilesetJson.properties;
|
|
623
|
-
this.geometricError = tilesetJson.geometricError;
|
|
624
|
-
this._extensionsUsed = tilesetJson.extensionsUsed;
|
|
625
|
-
this.extras = tilesetJson.extras;
|
|
626
|
-
}
|
|
793
|
+
if ('tilesetVersion' in this.asset) {
|
|
794
|
+
this._queryParams.v = this.asset.tilesetVersion;
|
|
795
|
+
}
|
|
627
796
|
|
|
628
|
-
|
|
629
|
-
|
|
630
|
-
|
|
797
|
+
this.credits = {
|
|
798
|
+
attributions: this.options.attributions || []
|
|
799
|
+
};
|
|
800
|
+
this.description = this.options.description || '';
|
|
801
|
+
this.properties = tilesetJson.properties;
|
|
802
|
+
this.geometricError = tilesetJson.geometricError;
|
|
803
|
+
this._extensionsUsed = tilesetJson.extensionsUsed;
|
|
804
|
+
this.extras = tilesetJson.extras;
|
|
805
|
+
}
|
|
806
|
+
}, {
|
|
807
|
+
key: "_initializeI3STileset",
|
|
808
|
+
value: function _initializeI3STileset() {
|
|
809
|
+
if (this.loadOptions.i3s && 'token' in this.loadOptions.i3s) {
|
|
810
|
+
this._queryParams.token = this.loadOptions.i3s.token;
|
|
811
|
+
}
|
|
631
812
|
}
|
|
632
|
-
}
|
|
633
|
-
|
|
634
|
-
}
|
|
813
|
+
}]);
|
|
814
|
+
return Tileset3D;
|
|
815
|
+
}();
|
|
635
816
|
|
|
636
817
|
exports.default = Tileset3D;
|
|
637
818
|
|
|
638
819
|
function getQueryParamString(queryParams) {
|
|
639
|
-
|
|
820
|
+
var queryParamStrings = [];
|
|
640
821
|
|
|
641
|
-
for (
|
|
642
|
-
|
|
822
|
+
for (var _i = 0, _Object$keys = Object.keys(queryParams); _i < _Object$keys.length; _i++) {
|
|
823
|
+
var _key = _Object$keys[_i];
|
|
824
|
+
queryParamStrings.push("".concat(_key, "=").concat(queryParams[_key]));
|
|
643
825
|
}
|
|
644
826
|
|
|
645
827
|
switch (queryParamStrings.length) {
|