@loaders.gl/tiles 3.1.3 → 4.0.0-alpha.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (122) hide show
  1. package/dist/bundle.js +2 -2
  2. package/dist/bundle.js.map +1 -0
  3. package/dist/constants.js +26 -29
  4. package/dist/constants.js.map +1 -0
  5. package/dist/dist.min.js +45 -264
  6. package/dist/index.js +10 -28
  7. package/dist/index.js.map +1 -0
  8. package/dist/tileset/helpers/3d-tiles-options.js +5 -8
  9. package/dist/tileset/helpers/3d-tiles-options.js.map +1 -0
  10. package/dist/tileset/helpers/bounding-volume.js +70 -159
  11. package/dist/tileset/helpers/bounding-volume.js.map +1 -0
  12. package/dist/tileset/helpers/frame-state.js +48 -67
  13. package/dist/tileset/helpers/frame-state.js.map +1 -0
  14. package/dist/tileset/helpers/i3s-lod.js +64 -80
  15. package/dist/tileset/helpers/i3s-lod.js.map +1 -0
  16. package/dist/tileset/helpers/tiles-3d-lod.js +100 -111
  17. package/dist/tileset/helpers/tiles-3d-lod.js.map +1 -0
  18. package/dist/tileset/helpers/transform-utils.js +56 -50
  19. package/dist/tileset/helpers/transform-utils.js.map +1 -0
  20. package/dist/tileset/helpers/zoom.js +30 -36
  21. package/dist/tileset/helpers/zoom.js.map +1 -0
  22. package/dist/tileset/tile-3d.js +533 -551
  23. package/dist/tileset/tile-3d.js.map +1 -0
  24. package/dist/tileset/tileset-3d.js +649 -576
  25. package/dist/tileset/tileset-3d.js.map +1 -0
  26. package/dist/tileset/tileset-cache.js +71 -71
  27. package/dist/tileset/tileset-cache.js.map +1 -0
  28. package/dist/tileset/traversers/i3s-tile-manager.js +40 -31
  29. package/dist/tileset/traversers/i3s-tile-manager.js.map +1 -0
  30. package/dist/tileset/traversers/i3s-tileset-traverser.js +76 -81
  31. package/dist/tileset/traversers/i3s-tileset-traverser.js.map +1 -0
  32. package/dist/tileset/traversers/tileset-3d-traverser.js +49 -51
  33. package/dist/tileset/traversers/tileset-3d-traverser.js.map +1 -0
  34. package/dist/tileset/traversers/tileset-traverser.js +276 -274
  35. package/dist/tileset/traversers/tileset-traverser.js.map +1 -0
  36. package/dist/utils/doubly-linked-list-node.js +15 -16
  37. package/dist/utils/doubly-linked-list-node.js.map +1 -0
  38. package/dist/utils/doubly-linked-list.js +75 -94
  39. package/dist/utils/doubly-linked-list.js.map +1 -0
  40. package/dist/utils/managed-array.js +109 -143
  41. package/dist/utils/managed-array.js.map +1 -0
  42. package/package.json +7 -7
  43. package/dist/es5/bundle.js +0 -7
  44. package/dist/es5/bundle.js.map +0 -1
  45. package/dist/es5/constants.js +0 -44
  46. package/dist/es5/constants.js.map +0 -1
  47. package/dist/es5/index.js +0 -104
  48. package/dist/es5/index.js.map +0 -1
  49. package/dist/es5/tileset/helpers/3d-tiles-options.js +0 -13
  50. package/dist/es5/tileset/helpers/3d-tiles-options.js.map +0 -1
  51. package/dist/es5/tileset/helpers/bounding-volume.js +0 -114
  52. package/dist/es5/tileset/helpers/bounding-volume.js.map +0 -1
  53. package/dist/es5/tileset/helpers/frame-state.js +0 -65
  54. package/dist/es5/tileset/helpers/frame-state.js.map +0 -1
  55. package/dist/es5/tileset/helpers/i3s-lod.js +0 -86
  56. package/dist/es5/tileset/helpers/i3s-lod.js.map +0 -1
  57. package/dist/es5/tileset/helpers/tiles-3d-lod.js +0 -119
  58. package/dist/es5/tileset/helpers/tiles-3d-lod.js.map +0 -1
  59. package/dist/es5/tileset/helpers/transform-utils.js +0 -65
  60. package/dist/es5/tileset/helpers/transform-utils.js.map +0 -1
  61. package/dist/es5/tileset/helpers/zoom.js +0 -43
  62. package/dist/es5/tileset/helpers/zoom.js.map +0 -1
  63. package/dist/es5/tileset/tile-3d.js +0 -605
  64. package/dist/es5/tileset/tile-3d.js.map +0 -1
  65. package/dist/es5/tileset/tileset-3d.js +0 -838
  66. package/dist/es5/tileset/tileset-3d.js.map +0 -1
  67. package/dist/es5/tileset/tileset-cache.js +0 -101
  68. package/dist/es5/tileset/tileset-cache.js.map +0 -1
  69. package/dist/es5/tileset/traversers/i3s-tile-manager.js +0 -69
  70. package/dist/es5/tileset/traversers/i3s-tile-manager.js.map +0 -1
  71. package/dist/es5/tileset/traversers/i3s-tileset-traverser.js +0 -185
  72. package/dist/es5/tileset/traversers/i3s-tileset-traverser.js.map +0 -1
  73. package/dist/es5/tileset/traversers/tileset-3d-traverser.js +0 -94
  74. package/dist/es5/tileset/traversers/tileset-3d-traverser.js.map +0 -1
  75. package/dist/es5/tileset/traversers/tileset-traverser.js +0 -377
  76. package/dist/es5/tileset/traversers/tileset-traverser.js.map +0 -1
  77. package/dist/es5/utils/doubly-linked-list-node.js +0 -25
  78. package/dist/es5/utils/doubly-linked-list-node.js.map +0 -1
  79. package/dist/es5/utils/doubly-linked-list.js +0 -104
  80. package/dist/es5/utils/doubly-linked-list.js.map +0 -1
  81. package/dist/es5/utils/managed-array.js +0 -147
  82. package/dist/es5/utils/managed-array.js.map +0 -1
  83. package/dist/esm/bundle.js +0 -5
  84. package/dist/esm/bundle.js.map +0 -1
  85. package/dist/esm/constants.js +0 -32
  86. package/dist/esm/constants.js.map +0 -1
  87. package/dist/esm/index.js +0 -10
  88. package/dist/esm/index.js.map +0 -1
  89. package/dist/esm/tileset/helpers/3d-tiles-options.js +0 -6
  90. package/dist/esm/tileset/helpers/3d-tiles-options.js.map +0 -1
  91. package/dist/esm/tileset/helpers/bounding-volume.js +0 -88
  92. package/dist/esm/tileset/helpers/bounding-volume.js.map +0 -1
  93. package/dist/esm/tileset/helpers/frame-state.js +0 -51
  94. package/dist/esm/tileset/helpers/frame-state.js.map +0 -1
  95. package/dist/esm/tileset/helpers/i3s-lod.js +0 -67
  96. package/dist/esm/tileset/helpers/i3s-lod.js.map +0 -1
  97. package/dist/esm/tileset/helpers/tiles-3d-lod.js +0 -105
  98. package/dist/esm/tileset/helpers/tiles-3d-lod.js.map +0 -1
  99. package/dist/esm/tileset/helpers/transform-utils.js +0 -58
  100. package/dist/esm/tileset/helpers/transform-utils.js.map +0 -1
  101. package/dist/esm/tileset/helpers/zoom.js +0 -36
  102. package/dist/esm/tileset/helpers/zoom.js.map +0 -1
  103. package/dist/esm/tileset/tile-3d.js +0 -537
  104. package/dist/esm/tileset/tile-3d.js.map +0 -1
  105. package/dist/esm/tileset/tileset-3d.js +0 -674
  106. package/dist/esm/tileset/tileset-3d.js.map +0 -1
  107. package/dist/esm/tileset/tileset-cache.js +0 -79
  108. package/dist/esm/tileset/tileset-cache.js.map +0 -1
  109. package/dist/esm/tileset/traversers/i3s-tile-manager.js +0 -45
  110. package/dist/esm/tileset/traversers/i3s-tile-manager.js.map +0 -1
  111. package/dist/esm/tileset/traversers/i3s-tileset-traverser.js +0 -80
  112. package/dist/esm/tileset/traversers/i3s-tileset-traverser.js.map +0 -1
  113. package/dist/esm/tileset/traversers/tileset-3d-traverser.js +0 -53
  114. package/dist/esm/tileset/traversers/tileset-3d-traverser.js.map +0 -1
  115. package/dist/esm/tileset/traversers/tileset-traverser.js +0 -296
  116. package/dist/esm/tileset/traversers/tileset-traverser.js.map +0 -1
  117. package/dist/esm/utils/doubly-linked-list-node.js +0 -16
  118. package/dist/esm/utils/doubly-linked-list-node.js.map +0 -1
  119. package/dist/esm/utils/doubly-linked-list.js +0 -81
  120. package/dist/esm/utils/doubly-linked-list.js.map +0 -1
  121. package/dist/esm/utils/managed-array.js +0 -117
  122. package/dist/esm/utils/managed-array.js.map +0 -1
@@ -1,674 +0,0 @@
1
- import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
2
- import { Matrix4, Vector3 } from '@math.gl/core';
3
- import { Ellipsoid } from '@math.gl/geospatial';
4
- import { Stats } from '@probe.gl/stats';
5
- import { RequestScheduler, assert, path } from '@loaders.gl/loader-utils';
6
- import TilesetCache from './tileset-cache';
7
- import { calculateTransformProps } from './helpers/transform-utils';
8
- import { getFrameState } from './helpers/frame-state';
9
- import { getZoomFromBoundingVolume } from './helpers/zoom';
10
- import Tile3D from './tile-3d';
11
- import Tileset3DTraverser from './traversers/tileset-3d-traverser';
12
- import TilesetTraverser from './traversers/tileset-traverser';
13
- import I3SetTraverser from './traversers/i3s-tileset-traverser';
14
- import { TILESET_TYPE } from '../constants';
15
- const DEFAULT_PROPS = {
16
- description: '',
17
- ellipsoid: Ellipsoid.WGS84,
18
- modelMatrix: new Matrix4(),
19
- throttleRequests: true,
20
- maxRequests: 64,
21
- maximumMemoryUsage: 32,
22
- onTileLoad: () => {},
23
- onTileUnload: () => {},
24
- onTileError: () => {},
25
- onTraversalComplete: selectedTiles => selectedTiles,
26
- contentLoader: undefined,
27
- viewDistanceScale: 1.0,
28
- maximumScreenSpaceError: 8,
29
- loadTiles: true,
30
- updateTransforms: true,
31
- viewportTraversersMap: null,
32
- loadOptions: {
33
- fetch: {}
34
- },
35
- attributions: [],
36
- basePath: '',
37
- i3s: {}
38
- };
39
- const TILES_TOTAL = 'Tiles In Tileset(s)';
40
- const TILES_IN_MEMORY = 'Tiles In Memory';
41
- const TILES_IN_VIEW = 'Tiles In View';
42
- const TILES_RENDERABLE = 'Tiles To Render';
43
- const TILES_LOADED = 'Tiles Loaded';
44
- const TILES_LOADING = 'Tiles Loading';
45
- const TILES_UNLOADED = 'Tiles Unloaded';
46
- const TILES_LOAD_FAILED = 'Failed Tile Loads';
47
- const POINTS_COUNT = 'Points';
48
- const TILES_GPU_MEMORY = 'Tile Memory Use';
49
- export default class Tileset3D {
50
- constructor(json, options) {
51
- _defineProperty(this, "options", void 0);
52
-
53
- _defineProperty(this, "loadOptions", void 0);
54
-
55
- _defineProperty(this, "type", void 0);
56
-
57
- _defineProperty(this, "tileset", void 0);
58
-
59
- _defineProperty(this, "loader", void 0);
60
-
61
- _defineProperty(this, "url", void 0);
62
-
63
- _defineProperty(this, "basePath", void 0);
64
-
65
- _defineProperty(this, "modelMatrix", void 0);
66
-
67
- _defineProperty(this, "ellipsoid", void 0);
68
-
69
- _defineProperty(this, "lodMetricType", void 0);
70
-
71
- _defineProperty(this, "lodMetricValue", void 0);
72
-
73
- _defineProperty(this, "refine", void 0);
74
-
75
- _defineProperty(this, "root", void 0);
76
-
77
- _defineProperty(this, "roots", void 0);
78
-
79
- _defineProperty(this, "asset", void 0);
80
-
81
- _defineProperty(this, "description", void 0);
82
-
83
- _defineProperty(this, "properties", void 0);
84
-
85
- _defineProperty(this, "extras", void 0);
86
-
87
- _defineProperty(this, "attributions", void 0);
88
-
89
- _defineProperty(this, "credits", void 0);
90
-
91
- _defineProperty(this, "stats", void 0);
92
-
93
- _defineProperty(this, "traverseCounter", void 0);
94
-
95
- _defineProperty(this, "geometricError", void 0);
96
-
97
- _defineProperty(this, "selectedTiles", void 0);
98
-
99
- _defineProperty(this, "cartographicCenter", void 0);
100
-
101
- _defineProperty(this, "cartesianCenter", void 0);
102
-
103
- _defineProperty(this, "zoom", void 0);
104
-
105
- _defineProperty(this, "boundingVolume", void 0);
106
-
107
- _defineProperty(this, "gpuMemoryUsageInBytes", void 0);
108
-
109
- _defineProperty(this, "dynamicScreenSpaceErrorComputedDensity", void 0);
110
-
111
- _defineProperty(this, "_traverser", void 0);
112
-
113
- _defineProperty(this, "_cache", void 0);
114
-
115
- _defineProperty(this, "_requestScheduler", void 0);
116
-
117
- _defineProperty(this, "_frameNumber", void 0);
118
-
119
- _defineProperty(this, "_queryParamsString", void 0);
120
-
121
- _defineProperty(this, "_queryParams", void 0);
122
-
123
- _defineProperty(this, "_extensionsUsed", void 0);
124
-
125
- _defineProperty(this, "_tiles", void 0);
126
-
127
- _defineProperty(this, "_pendingCount", void 0);
128
-
129
- _defineProperty(this, "lastUpdatedVieports", void 0);
130
-
131
- _defineProperty(this, "_requestedTiles", void 0);
132
-
133
- _defineProperty(this, "_emptyTiles", void 0);
134
-
135
- _defineProperty(this, "frameStateData", void 0);
136
-
137
- _defineProperty(this, "maximumMemoryUsage", void 0);
138
-
139
- assert(json);
140
- this.options = { ...DEFAULT_PROPS,
141
- ...options
142
- };
143
- this.tileset = json;
144
- this.loader = json.loader;
145
- this.type = json.type;
146
- this.url = json.url;
147
- this.basePath = json.basePath || path.dirname(this.url);
148
- this.modelMatrix = this.options.modelMatrix;
149
- this.ellipsoid = this.options.ellipsoid;
150
- this.lodMetricType = json.lodMetricType;
151
- this.lodMetricValue = json.lodMetricValue;
152
- this.refine = json.root.refine;
153
- this.loadOptions = this.options.loadOptions || {};
154
- this.root = null;
155
- this.roots = {};
156
- this.cartographicCenter = null;
157
- this.cartesianCenter = null;
158
- this.zoom = 1;
159
- this.boundingVolume = null;
160
- this.traverseCounter = 0;
161
- this.geometricError = 0;
162
- this._traverser = this._initializeTraverser();
163
- this._cache = new TilesetCache();
164
- this._requestScheduler = new RequestScheduler({
165
- throttleRequests: this.options.throttleRequests,
166
- maxRequests: this.options.maxRequests
167
- });
168
- this._frameNumber = 0;
169
- this._pendingCount = 0;
170
- this._tiles = {};
171
- this.selectedTiles = [];
172
- this._emptyTiles = [];
173
- this._requestedTiles = [];
174
- this.frameStateData = {};
175
- this.lastUpdatedVieports = null;
176
- this._queryParams = {};
177
- this._queryParamsString = '';
178
- this.maximumMemoryUsage = this.options.maximumMemoryUsage || 32;
179
- this.gpuMemoryUsageInBytes = 0;
180
- this.stats = new Stats({
181
- id: this.url
182
- });
183
-
184
- this._initializeStats();
185
-
186
- this._extensionsUsed = undefined;
187
- this.dynamicScreenSpaceErrorComputedDensity = 0.0;
188
- this.extras = null;
189
- this.asset = {};
190
- this.credits = {};
191
- this.description = this.options.description || '';
192
-
193
- this._initializeTileSet(json);
194
- }
195
-
196
- destroy() {
197
- this._destroy();
198
- }
199
-
200
- isLoaded() {
201
- return this._pendingCount === 0 && this._frameNumber !== 0;
202
- }
203
-
204
- get tiles() {
205
- return Object.values(this._tiles);
206
- }
207
-
208
- get frameNumber() {
209
- return this._frameNumber;
210
- }
211
-
212
- get queryParams() {
213
- if (!this._queryParamsString) {
214
- this._queryParamsString = getQueryParamString(this._queryParams);
215
- }
216
-
217
- return this._queryParamsString;
218
- }
219
-
220
- setProps(props) {
221
- this.options = { ...this.options,
222
- ...props
223
- };
224
- }
225
-
226
- setOptions(options) {
227
- this.options = { ...this.options,
228
- ...options
229
- };
230
- }
231
-
232
- getTileUrl(tilePath) {
233
- const isDataUrl = tilePath.startsWith('data:');
234
-
235
- if (isDataUrl) {
236
- return tilePath;
237
- }
238
-
239
- return "".concat(tilePath).concat(this.queryParams);
240
- }
241
-
242
- hasExtension(extensionName) {
243
- return Boolean(this._extensionsUsed && this._extensionsUsed.indexOf(extensionName) > -1);
244
- }
245
-
246
- update(viewports) {
247
- if ('loadTiles' in this.options && !this.options.loadTiles) {
248
- return;
249
- }
250
-
251
- if (this.traverseCounter > 0) {
252
- return;
253
- }
254
-
255
- if (!viewports && this.lastUpdatedVieports) {
256
- viewports = this.lastUpdatedVieports;
257
- } else {
258
- this.lastUpdatedVieports = viewports;
259
- }
260
-
261
- if (!(viewports instanceof Array)) {
262
- viewports = [viewports];
263
- }
264
-
265
- this._cache.reset();
266
-
267
- this._frameNumber++;
268
- this.traverseCounter = viewports.length;
269
- const viewportsToTraverse = [];
270
-
271
- for (const viewport of viewports) {
272
- const id = viewport.id;
273
-
274
- if (this._needTraverse(id)) {
275
- viewportsToTraverse.push(id);
276
- } else {
277
- this.traverseCounter--;
278
- }
279
- }
280
-
281
- for (const viewport of viewports) {
282
- const id = viewport.id;
283
-
284
- if (!this.roots[id]) {
285
- this.roots[id] = this._initializeTileHeaders(this.tileset, null);
286
- }
287
-
288
- if (!viewportsToTraverse.includes(id)) {
289
- continue;
290
- }
291
-
292
- const frameState = getFrameState(viewport, this._frameNumber);
293
-
294
- this._traverser.traverse(this.roots[id], frameState, this.options);
295
- }
296
- }
297
-
298
- _needTraverse(viewportId) {
299
- let traverserId = viewportId;
300
-
301
- if (this.options.viewportTraversersMap) {
302
- traverserId = this.options.viewportTraversersMap[viewportId];
303
- }
304
-
305
- if (traverserId !== viewportId) {
306
- return false;
307
- }
308
-
309
- return true;
310
- }
311
-
312
- _onTraversalEnd(frameState) {
313
- const id = frameState.viewport.id;
314
-
315
- if (!this.frameStateData[id]) {
316
- this.frameStateData[id] = {
317
- selectedTiles: [],
318
- _requestedTiles: [],
319
- _emptyTiles: []
320
- };
321
- }
322
-
323
- const currentFrameStateData = this.frameStateData[id];
324
- const selectedTiles = Object.values(this._traverser.selectedTiles);
325
- currentFrameStateData.selectedTiles = selectedTiles;
326
- currentFrameStateData._requestedTiles = Object.values(this._traverser.requestedTiles);
327
- currentFrameStateData._emptyTiles = Object.values(this._traverser.emptyTiles);
328
- this.traverseCounter--;
329
-
330
- if (this.traverseCounter > 0) {
331
- return;
332
- }
333
-
334
- this._updateTiles();
335
- }
336
-
337
- _updateTiles() {
338
- this.selectedTiles = [];
339
- this._requestedTiles = [];
340
- this._emptyTiles = [];
341
-
342
- for (const frameStateKey in this.frameStateData) {
343
- const frameStateDataValue = this.frameStateData[frameStateKey];
344
- this.selectedTiles = this.selectedTiles.concat(frameStateDataValue.selectedTiles);
345
- this._requestedTiles = this._requestedTiles.concat(frameStateDataValue._requestedTiles);
346
- this._emptyTiles = this._emptyTiles.concat(frameStateDataValue._emptyTiles);
347
- }
348
-
349
- this.selectedTiles = this.options.onTraversalComplete(this.selectedTiles);
350
-
351
- for (const tile of this.selectedTiles) {
352
- this._tiles[tile.id] = tile;
353
- }
354
-
355
- this._loadTiles();
356
-
357
- this._unloadTiles();
358
-
359
- this._updateStats();
360
- }
361
-
362
- _tilesChanged(oldSelectedTiles, selectedTiles) {
363
- if (oldSelectedTiles.length !== selectedTiles.length) {
364
- return true;
365
- }
366
-
367
- const set1 = new Set(oldSelectedTiles.map(t => t.id));
368
- const set2 = new Set(selectedTiles.map(t => t.id));
369
- let changed = oldSelectedTiles.filter(x => !set2.has(x.id)).length > 0;
370
- changed = changed || selectedTiles.filter(x => !set1.has(x.id)).length > 0;
371
- return changed;
372
- }
373
-
374
- _loadTiles() {
375
- for (const tile of this._requestedTiles) {
376
- if (tile.contentUnloaded) {
377
- this._loadTile(tile);
378
- }
379
- }
380
- }
381
-
382
- _unloadTiles() {
383
- this._cache.unloadTiles(this, (tileset, tile) => tileset._unloadTile(tile));
384
- }
385
-
386
- _updateStats() {
387
- let tilesRenderable = 0;
388
- let pointsRenderable = 0;
389
-
390
- for (const tile of this.selectedTiles) {
391
- if (tile.contentAvailable && tile.content) {
392
- tilesRenderable++;
393
-
394
- if (tile.content.pointCount) {
395
- pointsRenderable += tile.content.pointCount;
396
- }
397
- }
398
- }
399
-
400
- this.stats.get(TILES_IN_VIEW).count = this.selectedTiles.length;
401
- this.stats.get(TILES_RENDERABLE).count = tilesRenderable;
402
- this.stats.get(POINTS_COUNT).count = pointsRenderable;
403
- }
404
-
405
- _initializeTileSet(tilesetJson) {
406
- this.root = this._initializeTileHeaders(tilesetJson, null);
407
-
408
- if (this.type === TILESET_TYPE.TILES3D) {
409
- this._initializeCesiumTileset(tilesetJson);
410
- }
411
-
412
- if (this.type === TILESET_TYPE.I3S) {
413
- this._initializeI3STileset();
414
- }
415
-
416
- this._calculateViewProps();
417
- }
418
-
419
- _calculateViewProps() {
420
- const root = this.root;
421
- assert(root);
422
- const {
423
- center
424
- } = root.boundingVolume;
425
-
426
- if (!center) {
427
- console.warn('center was not pre-calculated for the root tile');
428
- this.cartographicCenter = new Vector3();
429
- this.zoom = 1;
430
- return;
431
- }
432
-
433
- this.cartographicCenter = Ellipsoid.WGS84.cartesianToCartographic(center, new Vector3());
434
- this.cartesianCenter = center;
435
- this.zoom = getZoomFromBoundingVolume(root.boundingVolume);
436
- }
437
-
438
- _initializeStats() {
439
- this.stats.get(TILES_TOTAL);
440
- this.stats.get(TILES_LOADING);
441
- this.stats.get(TILES_IN_MEMORY);
442
- this.stats.get(TILES_IN_VIEW);
443
- this.stats.get(TILES_RENDERABLE);
444
- this.stats.get(TILES_LOADED);
445
- this.stats.get(TILES_UNLOADED);
446
- this.stats.get(TILES_LOAD_FAILED);
447
- this.stats.get(POINTS_COUNT, 'memory');
448
- this.stats.get(TILES_GPU_MEMORY, 'memory');
449
- }
450
-
451
- _initializeTileHeaders(tilesetJson, parentTileHeader) {
452
- const rootTile = new Tile3D(this, tilesetJson.root, parentTileHeader);
453
-
454
- if (parentTileHeader) {
455
- parentTileHeader.children.push(rootTile);
456
- rootTile.depth = parentTileHeader.depth + 1;
457
- }
458
-
459
- if (this.type === TILESET_TYPE.TILES3D) {
460
- const stack = [];
461
- stack.push(rootTile);
462
-
463
- while (stack.length > 0) {
464
- const tile = stack.pop();
465
- this.stats.get(TILES_TOTAL).incrementCount();
466
- const children = tile.header.children || [];
467
-
468
- for (const childHeader of children) {
469
- const childTile = new Tile3D(this, childHeader, tile);
470
- tile.children.push(childTile);
471
- childTile.depth = tile.depth + 1;
472
- stack.push(childTile);
473
- }
474
- }
475
- }
476
-
477
- return rootTile;
478
- }
479
-
480
- _initializeTraverser() {
481
- let TraverserClass;
482
- const type = this.type;
483
-
484
- switch (type) {
485
- case TILESET_TYPE.TILES3D:
486
- TraverserClass = Tileset3DTraverser;
487
- break;
488
-
489
- case TILESET_TYPE.I3S:
490
- TraverserClass = I3SetTraverser;
491
- break;
492
-
493
- default:
494
- TraverserClass = TilesetTraverser;
495
- }
496
-
497
- return new TraverserClass({
498
- basePath: this.basePath,
499
- onTraversalEnd: this._onTraversalEnd.bind(this)
500
- });
501
- }
502
-
503
- _destroyTileHeaders(parentTile) {
504
- this._destroySubtree(parentTile);
505
- }
506
-
507
- async _loadTile(tile) {
508
- let loaded;
509
-
510
- try {
511
- this._onStartTileLoading();
512
-
513
- loaded = await tile.loadContent();
514
- } catch (error) {
515
- this._onTileLoadError(tile, error);
516
- } finally {
517
- this._onEndTileLoading();
518
-
519
- this._onTileLoad(tile, loaded);
520
- }
521
- }
522
-
523
- _onTileLoadError(tile, error) {
524
- this.stats.get(TILES_LOAD_FAILED).incrementCount();
525
- const message = error.message || error.toString();
526
- const url = tile.url;
527
- console.error("A 3D tile failed to load: ".concat(tile.url, " ").concat(message));
528
- this.options.onTileError(tile, message, url);
529
- }
530
-
531
- _onTileLoad(tile, loaded) {
532
- if (!loaded) {
533
- return;
534
- }
535
-
536
- if (tile && tile.content) {
537
- calculateTransformProps(tile, tile.content);
538
- }
539
-
540
- this._addTileToCache(tile);
541
-
542
- this.options.onTileLoad(tile);
543
- }
544
-
545
- _onStartTileLoading() {
546
- this._pendingCount++;
547
- this.stats.get(TILES_LOADING).incrementCount();
548
- }
549
-
550
- _onEndTileLoading() {
551
- this._pendingCount--;
552
- this.stats.get(TILES_LOADING).decrementCount();
553
- }
554
-
555
- _addTileToCache(tile) {
556
- this._cache.add(this, tile, tileset => tileset._updateCacheStats(tile));
557
- }
558
-
559
- _updateCacheStats(tile) {
560
- this.stats.get(TILES_LOADED).incrementCount();
561
- this.stats.get(TILES_IN_MEMORY).incrementCount();
562
- this.gpuMemoryUsageInBytes += tile.content.byteLength || 0;
563
- this.stats.get(TILES_GPU_MEMORY).count = this.gpuMemoryUsageInBytes;
564
- }
565
-
566
- _unloadTile(tile) {
567
- this.gpuMemoryUsageInBytes -= tile.content && tile.content.byteLength || 0;
568
- this.stats.get(TILES_IN_MEMORY).decrementCount();
569
- this.stats.get(TILES_UNLOADED).incrementCount();
570
- this.stats.get(TILES_GPU_MEMORY).count = this.gpuMemoryUsageInBytes;
571
- this.options.onTileUnload(tile);
572
- tile.unloadContent();
573
- }
574
-
575
- _destroy() {
576
- const stack = [];
577
-
578
- if (this.root) {
579
- stack.push(this.root);
580
- }
581
-
582
- while (stack.length > 0) {
583
- const tile = stack.pop();
584
-
585
- for (const child of tile.children) {
586
- stack.push(child);
587
- }
588
-
589
- this._destroyTile(tile);
590
- }
591
-
592
- this.root = null;
593
- }
594
-
595
- _destroySubtree(tile) {
596
- const root = tile;
597
- const stack = [];
598
- stack.push(root);
599
-
600
- while (stack.length > 0) {
601
- tile = stack.pop();
602
-
603
- for (const child of tile.children) {
604
- stack.push(child);
605
- }
606
-
607
- if (tile !== root) {
608
- this._destroyTile(tile);
609
- }
610
- }
611
-
612
- root.children = [];
613
- }
614
-
615
- _destroyTile(tile) {
616
- this._cache.unloadTile(this, tile);
617
-
618
- this._unloadTile(tile);
619
-
620
- tile.destroy();
621
- }
622
-
623
- _initializeCesiumTileset(tilesetJson) {
624
- this.asset = tilesetJson.asset;
625
-
626
- if (!this.asset) {
627
- throw new Error('Tileset must have an asset property.');
628
- }
629
-
630
- if (this.asset.version !== '0.0' && this.asset.version !== '1.0') {
631
- throw new Error('The tileset must be 3D Tiles version 0.0 or 1.0.');
632
- }
633
-
634
- if ('tilesetVersion' in this.asset) {
635
- this._queryParams.v = this.asset.tilesetVersion;
636
- }
637
-
638
- this.credits = {
639
- attributions: this.options.attributions || []
640
- };
641
- this.description = this.options.description || '';
642
- this.properties = tilesetJson.properties;
643
- this.geometricError = tilesetJson.geometricError;
644
- this._extensionsUsed = tilesetJson.extensionsUsed;
645
- this.extras = tilesetJson.extras;
646
- }
647
-
648
- _initializeI3STileset() {
649
- if (this.loadOptions.i3s && 'token' in this.loadOptions.i3s) {
650
- this._queryParams.token = this.loadOptions.i3s.token;
651
- }
652
- }
653
-
654
- }
655
-
656
- function getQueryParamString(queryParams) {
657
- const queryParamStrings = [];
658
-
659
- for (const key of Object.keys(queryParams)) {
660
- queryParamStrings.push("".concat(key, "=").concat(queryParams[key]));
661
- }
662
-
663
- switch (queryParamStrings.length) {
664
- case 0:
665
- return '';
666
-
667
- case 1:
668
- return "?".concat(queryParamStrings[0]);
669
-
670
- default:
671
- return "?".concat(queryParamStrings.join('&'));
672
- }
673
- }
674
- //# sourceMappingURL=tileset-3d.js.map