@loaders.gl/tiles 3.1.0-alpha.4 → 3.1.0-beta.3
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 +2 -0
- package/dist/bundle.d.ts.map +1 -0
- package/dist/bundle.js +8136 -0
- package/dist/constants.d.ts +32 -0
- package/dist/constants.d.ts.map +1 -0
- package/dist/constants.js +35 -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 +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 +12 -7
- package/dist/es5/utils/doubly-linked-list-node.js.map +1 -1
- package/dist/es5/utils/doubly-linked-list.js +68 -78
- package/dist/es5/utils/doubly-linked-list.js.map +1 -1
- package/dist/es5/utils/managed-array.js +90 -106
- 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/tileset-cache.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/esm/utils/doubly-linked-list-node.js +7 -0
- package/dist/esm/utils/doubly-linked-list-node.js.map +1 -1
- package/dist/esm/utils/doubly-linked-list.js +6 -3
- package/dist/esm/utils/doubly-linked-list.js.map +1 -1
- package/dist/esm/utils/managed-array.js +7 -1
- package/dist/esm/utils/managed-array.js.map +1 -1
- package/dist/index.d.ts +11 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +28 -0
- package/dist/tileset/helpers/3d-tiles-options.d.ts +4 -0
- package/dist/tileset/helpers/3d-tiles-options.d.ts.map +1 -0
- package/dist/tileset/helpers/3d-tiles-options.js +9 -0
- package/dist/tileset/helpers/bounding-volume.d.ts +9 -0
- package/dist/tileset/helpers/bounding-volume.d.ts.map +1 -0
- package/dist/tileset/helpers/bounding-volume.js +177 -0
- package/dist/tileset/helpers/frame-state.d.ts +17 -0
- package/dist/tileset/helpers/frame-state.d.ts.map +1 -0
- package/dist/tileset/helpers/frame-state.js +70 -0
- package/dist/tileset/helpers/i3s-lod.d.ts +20 -0
- package/dist/tileset/helpers/i3s-lod.d.ts.map +1 -0
- package/dist/tileset/helpers/i3s-lod.js +83 -0
- package/dist/tileset/helpers/tiles-3d-lod.d.ts +8 -0
- package/dist/tileset/helpers/tiles-3d-lod.d.ts.map +1 -0
- package/dist/tileset/helpers/tiles-3d-lod.js +116 -0
- package/dist/tileset/helpers/transform-utils.d.ts +2 -0
- package/dist/tileset/helpers/transform-utils.d.ts.map +1 -0
- package/dist/tileset/helpers/transform-utils.js +52 -0
- package/dist/tileset/helpers/zoom.d.ts +7 -0
- package/dist/tileset/helpers/zoom.d.ts.map +1 -0
- package/dist/tileset/helpers/zoom.js +42 -0
- package/dist/tileset/tile-3d.d.ts +174 -0
- package/dist/tileset/tile-3d.d.ts.map +1 -0
- package/dist/tileset/tile-3d.js +554 -0
- package/dist/tileset/tileset-3d.d.ts +172 -0
- package/dist/tileset/tileset-3d.d.ts.map +1 -0
- package/dist/tileset/tileset-3d.js +601 -0
- package/dist/tileset/tileset-cache.d.ts +18 -0
- package/dist/tileset/tileset-cache.d.ts.map +1 -0
- package/dist/tileset/tileset-cache.js +79 -0
- package/dist/tileset/traversers/i3s-tile-manager.d.ts +8 -0
- package/dist/tileset/traversers/i3s-tile-manager.d.ts.map +1 -0
- package/dist/tileset/traversers/i3s-tile-manager.js +36 -0
- package/dist/tileset/traversers/i3s-tileset-traverser.d.ts +18 -0
- package/dist/tileset/traversers/i3s-tileset-traverser.d.ts.map +1 -0
- package/dist/tileset/traversers/i3s-tileset-traverser.js +85 -0
- package/dist/tileset/traversers/tileset-3d-traverser.d.ts +7 -0
- package/dist/tileset/traversers/tileset-3d-traverser.d.ts.map +1 -0
- package/dist/tileset/traversers/tileset-3d-traverser.js +55 -0
- package/dist/tileset/traversers/tileset-traverser.d.ts +52 -0
- package/dist/tileset/traversers/tileset-traverser.d.ts.map +1 -0
- package/dist/tileset/traversers/tileset-traverser.js +294 -0
- package/dist/utils/doubly-linked-list-node.d.ts +12 -0
- package/dist/utils/doubly-linked-list-node.d.ts.map +1 -0
- package/dist/utils/doubly-linked-list-node.js +17 -0
- package/dist/utils/doubly-linked-list.d.ts +31 -0
- package/dist/utils/doubly-linked-list.d.ts.map +1 -0
- package/dist/utils/doubly-linked-list.js +100 -0
- package/dist/utils/managed-array.d.ts +85 -0
- package/dist/utils/managed-array.d.ts.map +1 -0
- package/dist/utils/managed-array.js +151 -0
- package/package.json +9 -7
- 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/tileset-cache.ts +2 -0
- package/src/tileset/traversers/i3s-tileset-traverser.ts +2 -3
- package/src/utils/{doubly-linked-list-node.js → doubly-linked-list-node.ts} +4 -0
- package/src/utils/{doubly-linked-list.js → doubly-linked-list.ts} +3 -5
- package/src/utils/{managed-array.js → managed-array.ts} +4 -1
- package/dist/dist.min.js +0 -2
- package/dist/dist.min.js.map +0 -1
|
@@ -7,14 +7,6 @@ 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
|
-
|
|
18
10
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
19
11
|
|
|
20
12
|
var _core = require("@math.gl/core");
|
|
@@ -43,29 +35,17 @@ var _i3sTilesetTraverser = _interopRequireDefault(require("./traversers/i3s-tile
|
|
|
43
35
|
|
|
44
36
|
var _constants = require("../constants");
|
|
45
37
|
|
|
46
|
-
|
|
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 = {
|
|
38
|
+
const DEFAULT_PROPS = {
|
|
57
39
|
description: '',
|
|
58
40
|
ellipsoid: _geospatial.Ellipsoid.WGS84,
|
|
59
41
|
modelMatrix: new _core.Matrix4(),
|
|
60
42
|
throttleRequests: true,
|
|
61
43
|
maxRequests: 64,
|
|
62
44
|
maximumMemoryUsage: 32,
|
|
63
|
-
onTileLoad:
|
|
64
|
-
onTileUnload:
|
|
65
|
-
onTileError:
|
|
66
|
-
onTraversalComplete:
|
|
67
|
-
return selectedTiles;
|
|
68
|
-
},
|
|
45
|
+
onTileLoad: () => {},
|
|
46
|
+
onTileUnload: () => {},
|
|
47
|
+
onTileError: () => {},
|
|
48
|
+
onTraversalComplete: selectedTiles => selectedTiles,
|
|
69
49
|
contentLoader: undefined,
|
|
70
50
|
viewDistanceScale: 1.0,
|
|
71
51
|
maximumScreenSpaceError: 8,
|
|
@@ -79,20 +59,19 @@ var DEFAULT_PROPS = {
|
|
|
79
59
|
basePath: '',
|
|
80
60
|
i3s: {}
|
|
81
61
|
};
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
(0, _classCallCheck2.default)(this, Tileset3D);
|
|
62
|
+
const TILES_TOTAL = 'Tiles In Tileset(s)';
|
|
63
|
+
const TILES_IN_MEMORY = 'Tiles In Memory';
|
|
64
|
+
const TILES_IN_VIEW = 'Tiles In View';
|
|
65
|
+
const TILES_RENDERABLE = 'Tiles To Render';
|
|
66
|
+
const TILES_LOADED = 'Tiles Loaded';
|
|
67
|
+
const TILES_LOADING = 'Tiles Loading';
|
|
68
|
+
const TILES_UNLOADED = 'Tiles Unloaded';
|
|
69
|
+
const TILES_LOAD_FAILED = 'Failed Tile Loads';
|
|
70
|
+
const POINTS_COUNT = 'Points';
|
|
71
|
+
const TILES_GPU_MEMORY = 'Tile Memory Use';
|
|
72
|
+
|
|
73
|
+
class Tileset3D {
|
|
74
|
+
constructor(json, options) {
|
|
96
75
|
(0, _defineProperty2.default)(this, "options", void 0);
|
|
97
76
|
(0, _defineProperty2.default)(this, "loadOptions", void 0);
|
|
98
77
|
(0, _defineProperty2.default)(this, "type", void 0);
|
|
@@ -138,7 +117,9 @@ var Tileset3D = function () {
|
|
|
138
117
|
(0, _defineProperty2.default)(this, "frameStateData", void 0);
|
|
139
118
|
(0, _defineProperty2.default)(this, "maximumMemoryUsage", void 0);
|
|
140
119
|
(0, _loaderUtils.assert)(json);
|
|
141
|
-
this.options =
|
|
120
|
+
this.options = { ...DEFAULT_PROPS,
|
|
121
|
+
...options
|
|
122
|
+
};
|
|
142
123
|
this.tileset = json;
|
|
143
124
|
this.loader = json.loader;
|
|
144
125
|
this.type = json.type;
|
|
@@ -192,636 +173,473 @@ var Tileset3D = function () {
|
|
|
192
173
|
this._initializeTileSet(json);
|
|
193
174
|
}
|
|
194
175
|
|
|
195
|
-
(
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
176
|
+
destroy() {
|
|
177
|
+
this._destroy();
|
|
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);
|
|
204
195
|
}
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
196
|
+
|
|
197
|
+
return this._queryParamsString;
|
|
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;
|
|
209
217
|
}
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
218
|
+
|
|
219
|
+
return "".concat(tilePath).concat(this.queryParams);
|
|
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;
|
|
214
229
|
}
|
|
215
|
-
}, {
|
|
216
|
-
key: "queryParams",
|
|
217
|
-
get: function get() {
|
|
218
|
-
if (!this._queryParamsString) {
|
|
219
|
-
this._queryParamsString = getQueryParamString(this._queryParams);
|
|
220
|
-
}
|
|
221
230
|
|
|
222
|
-
|
|
231
|
+
if (this.traverseCounter > 0) {
|
|
232
|
+
return;
|
|
223
233
|
}
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
234
|
+
|
|
235
|
+
if (!viewports && this.lastUpdatedVieports) {
|
|
236
|
+
viewports = this.lastUpdatedVieports;
|
|
237
|
+
} else {
|
|
238
|
+
this.lastUpdatedVieports = viewports;
|
|
228
239
|
}
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
this.options = _objectSpread(_objectSpread({}, this.options), options);
|
|
240
|
+
|
|
241
|
+
if (!(viewports instanceof Array)) {
|
|
242
|
+
viewports = [viewports];
|
|
233
243
|
}
|
|
234
|
-
}, {
|
|
235
|
-
key: "getTileUrl",
|
|
236
|
-
value: function getTileUrl(tilePath) {
|
|
237
|
-
var isDataUrl = tilePath.startsWith('data:');
|
|
238
244
|
|
|
239
|
-
|
|
240
|
-
return tilePath;
|
|
241
|
-
}
|
|
245
|
+
this._cache.reset();
|
|
242
246
|
|
|
243
|
-
|
|
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;
|
|
255
|
-
}
|
|
247
|
+
this._frameNumber++;
|
|
248
|
+
this.traverseCounter = viewports.length;
|
|
249
|
+
const viewportsToTraverse = [];
|
|
256
250
|
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
}
|
|
251
|
+
for (const viewport of viewports) {
|
|
252
|
+
const id = viewport.id;
|
|
260
253
|
|
|
261
|
-
if (
|
|
262
|
-
|
|
254
|
+
if (this._needTraverse(id)) {
|
|
255
|
+
viewportsToTraverse.push(id);
|
|
263
256
|
} else {
|
|
264
|
-
this.
|
|
257
|
+
this.traverseCounter--;
|
|
265
258
|
}
|
|
259
|
+
}
|
|
266
260
|
|
|
267
|
-
|
|
268
|
-
|
|
261
|
+
for (const viewport of viewports) {
|
|
262
|
+
const id = viewport.id;
|
|
263
|
+
|
|
264
|
+
if (!this.roots[id]) {
|
|
265
|
+
this.roots[id] = this._initializeTileHeaders(this.tileset, null);
|
|
269
266
|
}
|
|
270
267
|
|
|
271
|
-
|
|
268
|
+
if (!viewportsToTraverse.includes(id)) {
|
|
269
|
+
continue;
|
|
270
|
+
}
|
|
272
271
|
|
|
273
|
-
this._frameNumber
|
|
274
|
-
this.traverseCounter = viewports.length;
|
|
275
|
-
var viewportsToTraverse = [];
|
|
272
|
+
const frameState = (0, _frameState.getFrameState)(viewport, this._frameNumber);
|
|
276
273
|
|
|
277
|
-
|
|
278
|
-
|
|
274
|
+
this._traverser.traverse(this.roots[id], frameState, this.options);
|
|
275
|
+
}
|
|
276
|
+
}
|
|
279
277
|
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
var viewport = _step.value;
|
|
283
|
-
var _id = viewport.id;
|
|
278
|
+
_needTraverse(viewportId) {
|
|
279
|
+
let traverserId = viewportId;
|
|
284
280
|
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
this.traverseCounter--;
|
|
289
|
-
}
|
|
290
|
-
}
|
|
291
|
-
} catch (err) {
|
|
292
|
-
_iterator.e(err);
|
|
293
|
-
} finally {
|
|
294
|
-
_iterator.f();
|
|
295
|
-
}
|
|
281
|
+
if (this.options.viewportTraversersMap) {
|
|
282
|
+
traverserId = this.options.viewportTraversersMap[viewportId];
|
|
283
|
+
}
|
|
296
284
|
|
|
297
|
-
|
|
298
|
-
|
|
285
|
+
if (traverserId !== viewportId) {
|
|
286
|
+
return false;
|
|
287
|
+
}
|
|
299
288
|
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
var _viewport = _step2.value;
|
|
303
|
-
var _id2 = _viewport.id;
|
|
289
|
+
return true;
|
|
290
|
+
}
|
|
304
291
|
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
}
|
|
292
|
+
_onTraversalEnd(frameState) {
|
|
293
|
+
const id = frameState.viewport.id;
|
|
308
294
|
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
295
|
+
if (!this.frameStateData[id]) {
|
|
296
|
+
this.frameStateData[id] = {
|
|
297
|
+
selectedTiles: [],
|
|
298
|
+
_requestedTiles: [],
|
|
299
|
+
_emptyTiles: []
|
|
300
|
+
};
|
|
301
|
+
}
|
|
312
302
|
|
|
313
|
-
|
|
303
|
+
const currentFrameStateData = this.frameStateData[id];
|
|
304
|
+
const selectedTiles = Object.values(this._traverser.selectedTiles);
|
|
305
|
+
currentFrameStateData.selectedTiles = selectedTiles;
|
|
306
|
+
currentFrameStateData._requestedTiles = Object.values(this._traverser.requestedTiles);
|
|
307
|
+
currentFrameStateData._emptyTiles = Object.values(this._traverser.emptyTiles);
|
|
308
|
+
this.traverseCounter--;
|
|
314
309
|
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
} catch (err) {
|
|
318
|
-
_iterator2.e(err);
|
|
319
|
-
} finally {
|
|
320
|
-
_iterator2.f();
|
|
321
|
-
}
|
|
310
|
+
if (this.traverseCounter > 0) {
|
|
311
|
+
return;
|
|
322
312
|
}
|
|
323
|
-
}, {
|
|
324
|
-
key: "_needTraverse",
|
|
325
|
-
value: function _needTraverse(viewportId) {
|
|
326
|
-
var traverserId = viewportId;
|
|
327
313
|
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
}
|
|
314
|
+
this._updateTiles();
|
|
315
|
+
}
|
|
331
316
|
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
317
|
+
_updateTiles() {
|
|
318
|
+
this.selectedTiles = [];
|
|
319
|
+
this._requestedTiles = [];
|
|
320
|
+
this._emptyTiles = [];
|
|
335
321
|
|
|
336
|
-
|
|
322
|
+
for (const frameStateKey in this.frameStateData) {
|
|
323
|
+
const frameStateDataValue = this.frameStateData[frameStateKey];
|
|
324
|
+
this.selectedTiles = this.selectedTiles.concat(frameStateDataValue.selectedTiles);
|
|
325
|
+
this._requestedTiles = this._requestedTiles.concat(frameStateDataValue._requestedTiles);
|
|
326
|
+
this._emptyTiles = this._emptyTiles.concat(frameStateDataValue._emptyTiles);
|
|
337
327
|
}
|
|
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
|
-
}
|
|
350
328
|
|
|
351
|
-
|
|
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--;
|
|
329
|
+
this.selectedTiles = this.options.onTraversalComplete(this.selectedTiles);
|
|
357
330
|
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
331
|
+
for (const tile of this.selectedTiles) {
|
|
332
|
+
this._tiles[tile.id] = tile;
|
|
333
|
+
}
|
|
334
|
+
|
|
335
|
+
this._loadTiles();
|
|
336
|
+
|
|
337
|
+
this._unloadTiles();
|
|
338
|
+
|
|
339
|
+
this._updateStats();
|
|
340
|
+
}
|
|
361
341
|
|
|
362
|
-
|
|
342
|
+
_tilesChanged(oldSelectedTiles, selectedTiles) {
|
|
343
|
+
if (oldSelectedTiles.length !== selectedTiles.length) {
|
|
344
|
+
return true;
|
|
363
345
|
}
|
|
364
|
-
}, {
|
|
365
|
-
key: "_updateTiles",
|
|
366
|
-
value: function _updateTiles() {
|
|
367
|
-
this.selectedTiles = [];
|
|
368
|
-
this._requestedTiles = [];
|
|
369
|
-
this._emptyTiles = [];
|
|
370
346
|
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
347
|
+
const set1 = new Set(oldSelectedTiles.map(t => t.id));
|
|
348
|
+
const set2 = new Set(selectedTiles.map(t => t.id));
|
|
349
|
+
let changed = oldSelectedTiles.filter(x => !set2.has(x.id)).length > 0;
|
|
350
|
+
changed = changed || selectedTiles.filter(x => !set1.has(x.id)).length > 0;
|
|
351
|
+
return changed;
|
|
352
|
+
}
|
|
353
|
+
|
|
354
|
+
_loadTiles() {
|
|
355
|
+
for (const tile of this._requestedTiles) {
|
|
356
|
+
if (tile.contentUnloaded) {
|
|
357
|
+
this._loadTile(tile);
|
|
376
358
|
}
|
|
359
|
+
}
|
|
360
|
+
}
|
|
361
|
+
|
|
362
|
+
_unloadTiles() {
|
|
363
|
+
this._cache.unloadTiles(this, (tileset, tile) => tileset._unloadTile(tile));
|
|
364
|
+
}
|
|
377
365
|
|
|
378
|
-
|
|
366
|
+
_updateStats() {
|
|
367
|
+
let tilesRenderable = 0;
|
|
368
|
+
let pointsRenderable = 0;
|
|
379
369
|
|
|
380
|
-
|
|
381
|
-
|
|
370
|
+
for (const tile of this.selectedTiles) {
|
|
371
|
+
if (tile.contentAvailable && tile.content) {
|
|
372
|
+
tilesRenderable++;
|
|
382
373
|
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
var _tile = _step3.value;
|
|
386
|
-
this._tiles[_tile.id] = _tile;
|
|
374
|
+
if (tile.content.pointCount) {
|
|
375
|
+
pointsRenderable += tile.content.pointCount;
|
|
387
376
|
}
|
|
388
|
-
} catch (err) {
|
|
389
|
-
_iterator3.e(err);
|
|
390
|
-
} finally {
|
|
391
|
-
_iterator3.f();
|
|
392
377
|
}
|
|
378
|
+
}
|
|
393
379
|
|
|
394
|
-
|
|
380
|
+
this.stats.get(TILES_IN_VIEW).count = this.selectedTiles.length;
|
|
381
|
+
this.stats.get(TILES_RENDERABLE).count = tilesRenderable;
|
|
382
|
+
this.stats.get(POINTS_COUNT).count = pointsRenderable;
|
|
383
|
+
}
|
|
395
384
|
|
|
396
|
-
|
|
385
|
+
_initializeTileSet(tilesetJson) {
|
|
386
|
+
this.root = this._initializeTileHeaders(tilesetJson, null);
|
|
397
387
|
|
|
398
|
-
|
|
388
|
+
if (this.type === _constants.TILESET_TYPE.TILES3D) {
|
|
389
|
+
this._initializeCesiumTileset(tilesetJson);
|
|
399
390
|
}
|
|
400
|
-
}, {
|
|
401
|
-
key: "_tilesChanged",
|
|
402
|
-
value: function _tilesChanged(oldSelectedTiles, selectedTiles) {
|
|
403
|
-
if (oldSelectedTiles.length !== selectedTiles.length) {
|
|
404
|
-
return true;
|
|
405
|
-
}
|
|
406
391
|
|
|
407
|
-
|
|
408
|
-
|
|
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
|
-
}
|
|
392
|
+
if (this.type === _constants.TILESET_TYPE.I3S) {
|
|
393
|
+
this._initializeI3STileset();
|
|
440
394
|
}
|
|
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
|
-
}
|
|
474
395
|
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
396
|
+
this._calculateViewProps();
|
|
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;
|
|
478
411
|
}
|
|
479
|
-
}, {
|
|
480
|
-
key: "_initializeTileSet",
|
|
481
|
-
value: function _initializeTileSet(tilesetJson) {
|
|
482
|
-
this.root = this._initializeTileHeaders(tilesetJson, null);
|
|
483
412
|
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
|
|
413
|
+
this.cartographicCenter = _geospatial.Ellipsoid.WGS84.cartesianToCartographic(center, new _core.Vector3());
|
|
414
|
+
this.cartesianCenter = center;
|
|
415
|
+
this.zoom = (0, _zoom.getZoomFromBoundingVolume)(root.boundingVolume);
|
|
416
|
+
}
|
|
487
417
|
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
|
|
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
|
+
}
|
|
430
|
+
|
|
431
|
+
_initializeTileHeaders(tilesetJson, parentTileHeader) {
|
|
432
|
+
const rootTile = new _tile3d.default(this, tilesetJson.root, parentTileHeader);
|
|
491
433
|
|
|
492
|
-
|
|
434
|
+
if (parentTileHeader) {
|
|
435
|
+
parentTileHeader.children.push(rootTile);
|
|
436
|
+
rootTile.depth = parentTileHeader.depth + 1;
|
|
493
437
|
}
|
|
494
|
-
}, {
|
|
495
|
-
key: "_calculateViewProps",
|
|
496
|
-
value: function _calculateViewProps() {
|
|
497
|
-
var root = this.root;
|
|
498
|
-
(0, _loaderUtils.assert)(root);
|
|
499
|
-
var center = root.boundingVolume.center;
|
|
500
438
|
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
this.zoom = 1;
|
|
505
|
-
return;
|
|
506
|
-
}
|
|
439
|
+
if (this.type === _constants.TILESET_TYPE.TILES3D) {
|
|
440
|
+
const stack = [];
|
|
441
|
+
stack.push(rootTile);
|
|
507
442
|
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
|
|
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;
|
|
443
|
+
while (stack.length > 0) {
|
|
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
|
+
}
|
|
534
454
|
}
|
|
455
|
+
}
|
|
535
456
|
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
stack.push(rootTile);
|
|
457
|
+
return rootTile;
|
|
458
|
+
}
|
|
539
459
|
|
|
540
|
-
|
|
541
|
-
|
|
460
|
+
_initializeTraverser() {
|
|
461
|
+
let TraverserClass;
|
|
462
|
+
const type = this.type;
|
|
542
463
|
|
|
543
|
-
|
|
544
|
-
|
|
464
|
+
switch (type) {
|
|
465
|
+
case _constants.TILESET_TYPE.TILES3D:
|
|
466
|
+
TraverserClass = _tileset3dTraverser.default;
|
|
467
|
+
break;
|
|
545
468
|
|
|
546
|
-
|
|
547
|
-
|
|
469
|
+
case _constants.TILESET_TYPE.I3S:
|
|
470
|
+
TraverserClass = _i3sTilesetTraverser.default;
|
|
471
|
+
break;
|
|
548
472
|
|
|
549
|
-
|
|
550
|
-
|
|
551
|
-
|
|
552
|
-
var childTile = new _tile3d.default(this, childHeader, _tile4);
|
|
473
|
+
default:
|
|
474
|
+
TraverserClass = _tilesetTraverser.default;
|
|
475
|
+
}
|
|
553
476
|
|
|
554
|
-
|
|
477
|
+
return new TraverserClass({
|
|
478
|
+
basePath: this.basePath,
|
|
479
|
+
onTraversalEnd: this._onTraversalEnd.bind(this)
|
|
480
|
+
});
|
|
481
|
+
}
|
|
555
482
|
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
} catch (err) {
|
|
560
|
-
_iterator6.e(err);
|
|
561
|
-
} finally {
|
|
562
|
-
_iterator6.f();
|
|
563
|
-
}
|
|
564
|
-
}
|
|
565
|
-
}
|
|
483
|
+
_destroyTileHeaders(parentTile) {
|
|
484
|
+
this._destroySubtree(parentTile);
|
|
485
|
+
}
|
|
566
486
|
|
|
567
|
-
|
|
568
|
-
|
|
569
|
-
}, {
|
|
570
|
-
key: "_initializeTraverser",
|
|
571
|
-
value: function _initializeTraverser() {
|
|
572
|
-
var TraverserClass;
|
|
573
|
-
var type = this.type;
|
|
487
|
+
async _loadTile(tile) {
|
|
488
|
+
let loaded;
|
|
574
489
|
|
|
575
|
-
|
|
576
|
-
|
|
577
|
-
TraverserClass = _tileset3dTraverser.default;
|
|
578
|
-
break;
|
|
490
|
+
try {
|
|
491
|
+
this._onStartTileLoading();
|
|
579
492
|
|
|
580
|
-
|
|
581
|
-
|
|
582
|
-
|
|
493
|
+
loaded = await tile.loadContent();
|
|
494
|
+
} catch (error) {
|
|
495
|
+
this._onTileLoadError(tile, error);
|
|
496
|
+
} finally {
|
|
497
|
+
this._onEndTileLoading();
|
|
583
498
|
|
|
584
|
-
|
|
585
|
-
|
|
586
|
-
|
|
499
|
+
this._onTileLoad(tile, loaded);
|
|
500
|
+
}
|
|
501
|
+
}
|
|
502
|
+
|
|
503
|
+
_onTileLoadError(tile, error) {
|
|
504
|
+
this.stats.get(TILES_LOAD_FAILED).incrementCount();
|
|
505
|
+
const message = error.message || error.toString();
|
|
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
|
+
}
|
|
587
510
|
|
|
588
|
-
|
|
589
|
-
|
|
590
|
-
|
|
591
|
-
});
|
|
511
|
+
_onTileLoad(tile, loaded) {
|
|
512
|
+
if (!loaded) {
|
|
513
|
+
return;
|
|
592
514
|
}
|
|
593
|
-
|
|
594
|
-
|
|
595
|
-
|
|
596
|
-
this._destroySubtree(parentTile);
|
|
515
|
+
|
|
516
|
+
if (tile && tile.content) {
|
|
517
|
+
(0, _transformUtils.calculateTransformProps)(tile, tile.content);
|
|
597
518
|
}
|
|
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;
|
|
608
519
|
|
|
609
|
-
|
|
520
|
+
this._addTileToCache(tile);
|
|
610
521
|
|
|
611
|
-
|
|
612
|
-
|
|
522
|
+
this.options.onTileLoad(tile);
|
|
523
|
+
}
|
|
613
524
|
|
|
614
|
-
|
|
615
|
-
|
|
616
|
-
|
|
617
|
-
|
|
525
|
+
_onStartTileLoading() {
|
|
526
|
+
this._pendingCount++;
|
|
527
|
+
this.stats.get(TILES_LOADING).incrementCount();
|
|
528
|
+
}
|
|
618
529
|
|
|
619
|
-
|
|
620
|
-
|
|
621
|
-
|
|
530
|
+
_onEndTileLoading() {
|
|
531
|
+
this._pendingCount--;
|
|
532
|
+
this.stats.get(TILES_LOADING).decrementCount();
|
|
533
|
+
}
|
|
622
534
|
|
|
623
|
-
|
|
535
|
+
_addTileToCache(tile) {
|
|
536
|
+
this._cache.add(this, tile, tileset => tileset._updateCacheStats(tile));
|
|
537
|
+
}
|
|
624
538
|
|
|
625
|
-
|
|
626
|
-
|
|
539
|
+
_updateCacheStats(tile) {
|
|
540
|
+
this.stats.get(TILES_LOADED).incrementCount();
|
|
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
|
+
}
|
|
627
545
|
|
|
628
|
-
|
|
546
|
+
_unloadTile(tile) {
|
|
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
|
+
}
|
|
629
554
|
|
|
630
|
-
|
|
555
|
+
_destroy() {
|
|
556
|
+
const stack = [];
|
|
631
557
|
|
|
632
|
-
|
|
558
|
+
if (this.root) {
|
|
559
|
+
stack.push(this.root);
|
|
560
|
+
}
|
|
633
561
|
|
|
634
|
-
|
|
635
|
-
|
|
636
|
-
return _context.stop();
|
|
637
|
-
}
|
|
638
|
-
}
|
|
639
|
-
}, _callee, this, [[0, 7, 10, 14]]);
|
|
640
|
-
}));
|
|
562
|
+
while (stack.length > 0) {
|
|
563
|
+
const tile = stack.pop();
|
|
641
564
|
|
|
642
|
-
|
|
643
|
-
|
|
565
|
+
for (const child of tile.children) {
|
|
566
|
+
stack.push(child);
|
|
644
567
|
}
|
|
645
568
|
|
|
646
|
-
|
|
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
|
-
}
|
|
569
|
+
this._destroyTile(tile);
|
|
570
|
+
}
|
|
663
571
|
|
|
664
|
-
|
|
665
|
-
|
|
666
|
-
}
|
|
572
|
+
this.root = null;
|
|
573
|
+
}
|
|
667
574
|
|
|
668
|
-
|
|
669
|
-
|
|
670
|
-
|
|
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
|
-
}
|
|
575
|
+
_destroySubtree(tile) {
|
|
576
|
+
const root = tile;
|
|
577
|
+
const stack = [];
|
|
578
|
+
stack.push(root);
|
|
717
579
|
|
|
718
|
-
|
|
719
|
-
|
|
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
|
-
}
|
|
580
|
+
while (stack.length > 0) {
|
|
581
|
+
tile = stack.pop();
|
|
734
582
|
|
|
735
|
-
|
|
583
|
+
for (const child of tile.children) {
|
|
584
|
+
stack.push(child);
|
|
736
585
|
}
|
|
737
586
|
|
|
738
|
-
|
|
587
|
+
if (tile !== root) {
|
|
588
|
+
this._destroyTile(tile);
|
|
589
|
+
}
|
|
739
590
|
}
|
|
740
|
-
}, {
|
|
741
|
-
key: "_destroySubtree",
|
|
742
|
-
value: function _destroySubtree(tile) {
|
|
743
|
-
var root = tile;
|
|
744
|
-
var stack = [];
|
|
745
|
-
stack.push(root);
|
|
746
591
|
|
|
747
|
-
|
|
748
|
-
|
|
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
|
-
}
|
|
592
|
+
root.children = [];
|
|
593
|
+
}
|
|
763
594
|
|
|
764
|
-
|
|
765
|
-
|
|
766
|
-
}
|
|
767
|
-
}
|
|
595
|
+
_destroyTile(tile) {
|
|
596
|
+
this._cache.unloadTile(this, tile);
|
|
768
597
|
|
|
769
|
-
|
|
770
|
-
}
|
|
771
|
-
}, {
|
|
772
|
-
key: "_destroyTile",
|
|
773
|
-
value: function _destroyTile(tile) {
|
|
774
|
-
this._cache.unloadTile(this, tile);
|
|
598
|
+
this._unloadTile(tile);
|
|
775
599
|
|
|
776
|
-
|
|
600
|
+
tile.destroy();
|
|
601
|
+
}
|
|
777
602
|
|
|
778
|
-
|
|
603
|
+
_initializeCesiumTileset(tilesetJson) {
|
|
604
|
+
this.asset = tilesetJson.asset;
|
|
605
|
+
|
|
606
|
+
if (!this.asset) {
|
|
607
|
+
throw new Error('Tileset must have an asset property.');
|
|
779
608
|
}
|
|
780
|
-
}, {
|
|
781
|
-
key: "_initializeCesiumTileset",
|
|
782
|
-
value: function _initializeCesiumTileset(tilesetJson) {
|
|
783
|
-
this.asset = tilesetJson.asset;
|
|
784
609
|
|
|
785
|
-
|
|
786
|
-
|
|
787
|
-
|
|
610
|
+
if (this.asset.version !== '0.0' && this.asset.version !== '1.0') {
|
|
611
|
+
throw new Error('The tileset must be 3D Tiles version 0.0 or 1.0.');
|
|
612
|
+
}
|
|
788
613
|
|
|
789
|
-
|
|
790
|
-
|
|
791
|
-
|
|
614
|
+
if ('tilesetVersion' in this.asset) {
|
|
615
|
+
this._queryParams.v = this.asset.tilesetVersion;
|
|
616
|
+
}
|
|
792
617
|
|
|
793
|
-
|
|
794
|
-
|
|
795
|
-
|
|
618
|
+
this.credits = {
|
|
619
|
+
attributions: this.options.attributions || []
|
|
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
|
+
}
|
|
796
627
|
|
|
797
|
-
|
|
798
|
-
|
|
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
|
-
}
|
|
628
|
+
_initializeI3STileset() {
|
|
629
|
+
if (this.loadOptions.i3s && 'token' in this.loadOptions.i3s) {
|
|
630
|
+
this._queryParams.token = this.loadOptions.i3s.token;
|
|
812
631
|
}
|
|
813
|
-
}
|
|
814
|
-
|
|
815
|
-
}
|
|
632
|
+
}
|
|
633
|
+
|
|
634
|
+
}
|
|
816
635
|
|
|
817
636
|
exports.default = Tileset3D;
|
|
818
637
|
|
|
819
638
|
function getQueryParamString(queryParams) {
|
|
820
|
-
|
|
639
|
+
const queryParamStrings = [];
|
|
821
640
|
|
|
822
|
-
for (
|
|
823
|
-
|
|
824
|
-
queryParamStrings.push("".concat(_key, "=").concat(queryParams[_key]));
|
|
641
|
+
for (const key of Object.keys(queryParams)) {
|
|
642
|
+
queryParamStrings.push("".concat(key, "=").concat(queryParams[key]));
|
|
825
643
|
}
|
|
826
644
|
|
|
827
645
|
switch (queryParamStrings.length) {
|