@loaders.gl/tiles 4.2.0-alpha.4 → 4.2.0-alpha.6

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 (75) hide show
  1. package/dist/constants.js +34 -32
  2. package/dist/dist.dev.js +679 -449
  3. package/dist/dist.min.js +9 -0
  4. package/dist/index.cjs +265 -326
  5. package/dist/index.cjs.map +7 -0
  6. package/dist/index.d.ts +10 -10
  7. package/dist/index.d.ts.map +1 -1
  8. package/dist/index.js +3 -1
  9. package/dist/tileset/format-3d-tiles/tileset-3d-traverser.d.ts +1 -1
  10. package/dist/tileset/format-3d-tiles/tileset-3d-traverser.d.ts.map +1 -1
  11. package/dist/tileset/format-3d-tiles/tileset-3d-traverser.js +45 -35
  12. package/dist/tileset/format-i3s/i3s-pending-tiles-register.js +38 -22
  13. package/dist/tileset/format-i3s/i3s-tile-manager.d.ts +1 -1
  14. package/dist/tileset/format-i3s/i3s-tile-manager.d.ts.map +1 -1
  15. package/dist/tileset/format-i3s/i3s-tile-manager.js +68 -69
  16. package/dist/tileset/format-i3s/i3s-tileset-traverser.d.ts +2 -2
  17. package/dist/tileset/format-i3s/i3s-tileset-traverser.d.ts.map +1 -1
  18. package/dist/tileset/format-i3s/i3s-tileset-traverser.js +79 -57
  19. package/dist/tileset/helpers/3d-tiles-options.d.ts +1 -1
  20. package/dist/tileset/helpers/3d-tiles-options.d.ts.map +1 -1
  21. package/dist/tileset/helpers/3d-tiles-options.js +3 -4
  22. package/dist/tileset/helpers/bounding-volume.js +269 -128
  23. package/dist/tileset/helpers/frame-state.d.ts +1 -1
  24. package/dist/tileset/helpers/frame-state.d.ts.map +1 -1
  25. package/dist/tileset/helpers/frame-state.js +114 -95
  26. package/dist/tileset/helpers/i3s-lod.d.ts +2 -2
  27. package/dist/tileset/helpers/i3s-lod.d.ts.map +1 -1
  28. package/dist/tileset/helpers/i3s-lod.js +68 -39
  29. package/dist/tileset/helpers/tiles-3d-lod.js +97 -85
  30. package/dist/tileset/helpers/transform-utils.js +45 -44
  31. package/dist/tileset/helpers/zoom.d.ts +1 -1
  32. package/dist/tileset/helpers/zoom.d.ts.map +1 -1
  33. package/dist/tileset/helpers/zoom.js +70 -40
  34. package/dist/tileset/tile-3d.d.ts +7 -6
  35. package/dist/tileset/tile-3d.d.ts.map +1 -1
  36. package/dist/tileset/tile-3d.js +608 -399
  37. package/dist/tileset/tileset-3d.d.ts +7 -6
  38. package/dist/tileset/tileset-3d.d.ts.map +1 -1
  39. package/dist/tileset/tileset-3d.js +739 -597
  40. package/dist/tileset/tileset-cache.d.ts +2 -2
  41. package/dist/tileset/tileset-cache.d.ts.map +1 -1
  42. package/dist/tileset/tileset-cache.js +65 -48
  43. package/dist/tileset/tileset-traverser.d.ts +3 -3
  44. package/dist/tileset/tileset-traverser.d.ts.map +1 -1
  45. package/dist/tileset/tileset-traverser.js +282 -220
  46. package/dist/types.js +0 -1
  47. package/dist/utils/doubly-linked-list-node.js +17 -9
  48. package/dist/utils/doubly-linked-list.d.ts +1 -1
  49. package/dist/utils/doubly-linked-list.d.ts.map +1 -1
  50. package/dist/utils/doubly-linked-list.js +83 -56
  51. package/dist/utils/managed-array.js +140 -76
  52. package/package.json +10 -9
  53. package/src/tileset/tile-3d.ts +1 -1
  54. package/src/tileset/tileset-3d.ts +1 -1
  55. package/dist/constants.js.map +0 -1
  56. package/dist/index.js.map +0 -1
  57. package/dist/tileset/format-3d-tiles/tileset-3d-traverser.js.map +0 -1
  58. package/dist/tileset/format-i3s/i3s-pending-tiles-register.js.map +0 -1
  59. package/dist/tileset/format-i3s/i3s-tile-manager.js.map +0 -1
  60. package/dist/tileset/format-i3s/i3s-tileset-traverser.js.map +0 -1
  61. package/dist/tileset/helpers/3d-tiles-options.js.map +0 -1
  62. package/dist/tileset/helpers/bounding-volume.js.map +0 -1
  63. package/dist/tileset/helpers/frame-state.js.map +0 -1
  64. package/dist/tileset/helpers/i3s-lod.js.map +0 -1
  65. package/dist/tileset/helpers/tiles-3d-lod.js.map +0 -1
  66. package/dist/tileset/helpers/transform-utils.js.map +0 -1
  67. package/dist/tileset/helpers/zoom.js.map +0 -1
  68. package/dist/tileset/tile-3d.js.map +0 -1
  69. package/dist/tileset/tileset-3d.js.map +0 -1
  70. package/dist/tileset/tileset-cache.js.map +0 -1
  71. package/dist/tileset/tileset-traverser.js.map +0 -1
  72. package/dist/types.js.map +0 -1
  73. package/dist/utils/doubly-linked-list-node.js.map +0 -1
  74. package/dist/utils/doubly-linked-list.js.map +0 -1
  75. package/dist/utils/managed-array.js.map +0 -1
@@ -1,25 +1,41 @@
1
+ /**
2
+ * Counter to register pending tile headers for the particular frameNumber
3
+ * Until all tiles are loaded we won't call `onTraversalEnd` callback
4
+ */
1
5
  export class I3SPendingTilesRegister {
2
- constructor() {
3
- this.frameNumberMap = new Map();
4
- }
5
- register(viewportId, frameNumber) {
6
- const viewportMap = this.frameNumberMap.get(viewportId) || new Map();
7
- const oldCount = viewportMap.get(frameNumber) || 0;
8
- viewportMap.set(frameNumber, oldCount + 1);
9
- this.frameNumberMap.set(viewportId, viewportMap);
10
- }
11
- deregister(viewportId, frameNumber) {
12
- const viewportMap = this.frameNumberMap.get(viewportId);
13
- if (!viewportMap) {
14
- return;
6
+ frameNumberMap = new Map();
7
+ /**
8
+ * Register a new pending tile header for the particular frameNumber
9
+ * @param viewportId
10
+ * @param frameNumber
11
+ */
12
+ register(viewportId, frameNumber) {
13
+ const viewportMap = this.frameNumberMap.get(viewportId) || new Map();
14
+ const oldCount = viewportMap.get(frameNumber) || 0;
15
+ viewportMap.set(frameNumber, oldCount + 1);
16
+ this.frameNumberMap.set(viewportId, viewportMap);
17
+ }
18
+ /**
19
+ * Deregister a pending tile header for the particular frameNumber
20
+ * @param viewportId
21
+ * @param frameNumber
22
+ */
23
+ deregister(viewportId, frameNumber) {
24
+ const viewportMap = this.frameNumberMap.get(viewportId);
25
+ if (!viewportMap) {
26
+ return;
27
+ }
28
+ const oldCount = viewportMap.get(frameNumber) || 1;
29
+ viewportMap.set(frameNumber, oldCount - 1);
30
+ }
31
+ /**
32
+ * Check is there are no pending tile headers registered for the particular frameNumber
33
+ * @param viewportId
34
+ * @param frameNumber
35
+ * @returns
36
+ */
37
+ isZero(viewportId, frameNumber) {
38
+ const count = this.frameNumberMap.get(viewportId)?.get(frameNumber) || 0;
39
+ return count === 0;
15
40
  }
16
- const oldCount = viewportMap.get(frameNumber) || 1;
17
- viewportMap.set(frameNumber, oldCount - 1);
18
- }
19
- isZero(viewportId, frameNumber) {
20
- var _this$frameNumberMap$;
21
- const count = ((_this$frameNumberMap$ = this.frameNumberMap.get(viewportId)) === null || _this$frameNumberMap$ === void 0 ? void 0 : _this$frameNumberMap$.get(frameNumber)) || 0;
22
- return count === 0;
23
- }
24
41
  }
25
- //# sourceMappingURL=i3s-pending-tiles-register.js.map
@@ -1,4 +1,4 @@
1
- import { FrameState } from '../helpers/frame-state';
1
+ import { FrameState } from "../helpers/frame-state.js";
2
2
  export declare class I3STileManager {
3
3
  private _statusMap;
4
4
  private pendingTilesRegister;
@@ -1 +1 @@
1
- {"version":3,"file":"i3s-tile-manager.d.ts","sourceRoot":"","sources":["../../../src/tileset/format-i3s/i3s-tile-manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,UAAU,EAAC,MAAM,wBAAwB,CAAC;AAUlD,qBAAa,cAAc;IACzB,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,oBAAoB,CAAiC;;IAM7D;;;;;;OAMG;IACH,GAAG,CAAC,OAAO,KAAA,EAAE,GAAG,KAAA,EAAE,QAAQ,KAAA,EAAE,UAAU,EAAE,UAAU;IAiClD;;;;OAIG;IACH,MAAM,CAAC,GAAG,KAAA,EAAE,UAAU,EAAE,UAAU;IAmBlC;;;;OAIG;IACH,IAAI,CAAC,GAAG,KAAA;IAIR;;;;;OAKG;IACH,eAAe,CAAC,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO;CAGlE"}
1
+ {"version":3,"file":"i3s-tile-manager.d.ts","sourceRoot":"","sources":["../../../src/tileset/format-i3s/i3s-tile-manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,UAAU,EAAC,kCAA+B;AAUlD,qBAAa,cAAc;IACzB,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,oBAAoB,CAAiC;;IAM7D;;;;;;OAMG;IACH,GAAG,CAAC,OAAO,KAAA,EAAE,GAAG,KAAA,EAAE,QAAQ,KAAA,EAAE,UAAU,EAAE,UAAU;IAiClD;;;;OAIG;IACH,MAAM,CAAC,GAAG,KAAA,EAAE,UAAU,EAAE,UAAU;IAmBlC;;;;OAIG;IACH,IAAI,CAAC,GAAG,KAAA;IAIR;;;;;OAKG;IACH,eAAe,CAAC,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO;CAGlE"}
@@ -1,78 +1,77 @@
1
1
  import { I3SPendingTilesRegister } from "./i3s-pending-tiles-register.js";
2
2
  const STATUS = {
3
- REQUESTED: 'REQUESTED',
4
- COMPLETED: 'COMPLETED',
5
- ERROR: 'ERROR'
3
+ REQUESTED: 'REQUESTED',
4
+ COMPLETED: 'COMPLETED',
5
+ ERROR: 'ERROR'
6
6
  };
7
+ // A helper class to manage tile metadata fetching
7
8
  export class I3STileManager {
8
- constructor() {
9
- this._statusMap = void 0;
10
- this.pendingTilesRegister = new I3SPendingTilesRegister();
11
- this._statusMap = {};
12
- }
13
- add(request, key, callback, frameState) {
14
- if (!this._statusMap[key]) {
15
- const {
16
- frameNumber,
17
- viewport: {
18
- id
19
- }
20
- } = frameState;
21
- this._statusMap[key] = {
22
- request,
23
- callback,
24
- key,
25
- frameState,
26
- status: STATUS.REQUESTED
27
- };
28
- this.pendingTilesRegister.register(id, frameNumber);
29
- request().then(data => {
30
- this._statusMap[key].status = STATUS.COMPLETED;
31
- const {
32
- frameNumber: actualFrameNumber,
33
- viewport: {
34
- id
35
- }
36
- } = this._statusMap[key].frameState;
37
- this.pendingTilesRegister.deregister(id, actualFrameNumber);
38
- this._statusMap[key].callback(data, frameState);
39
- }).catch(error => {
40
- this._statusMap[key].status = STATUS.ERROR;
41
- const {
42
- frameNumber: actualFrameNumber,
43
- viewport: {
44
- id
45
- }
46
- } = this._statusMap[key].frameState;
47
- this.pendingTilesRegister.deregister(id, actualFrameNumber);
48
- callback(error);
49
- });
9
+ _statusMap;
10
+ pendingTilesRegister = new I3SPendingTilesRegister();
11
+ constructor() {
12
+ this._statusMap = {};
50
13
  }
51
- }
52
- update(key, frameState) {
53
- if (this._statusMap[key]) {
54
- const {
55
- frameNumber,
56
- viewport: {
57
- id
14
+ /**
15
+ * Add request to map
16
+ * @param request - node metadata request
17
+ * @param key - unique key
18
+ * @param callback - callback after request completed
19
+ * @param frameState - frameState data
20
+ */
21
+ add(request, key, callback, frameState) {
22
+ if (!this._statusMap[key]) {
23
+ const { frameNumber, viewport: { id } } = frameState;
24
+ this._statusMap[key] = { request, callback, key, frameState, status: STATUS.REQUESTED };
25
+ // Register pending request for the frameNumber
26
+ this.pendingTilesRegister.register(id, frameNumber);
27
+ request()
28
+ .then((data) => {
29
+ this._statusMap[key].status = STATUS.COMPLETED;
30
+ const { frameNumber: actualFrameNumber, viewport: { id } } = this._statusMap[key].frameState;
31
+ // Deregister pending request for the frameNumber
32
+ this.pendingTilesRegister.deregister(id, actualFrameNumber);
33
+ this._statusMap[key].callback(data, frameState);
34
+ })
35
+ .catch((error) => {
36
+ this._statusMap[key].status = STATUS.ERROR;
37
+ const { frameNumber: actualFrameNumber, viewport: { id } } = this._statusMap[key].frameState;
38
+ // Deregister pending request for the frameNumber
39
+ this.pendingTilesRegister.deregister(id, actualFrameNumber);
40
+ callback(error);
41
+ });
58
42
  }
59
- } = this._statusMap[key].frameState;
60
- this.pendingTilesRegister.deregister(id, frameNumber);
61
- const {
62
- frameNumber: newFrameNumber,
63
- viewport: {
64
- id: newViewportId
43
+ }
44
+ /**
45
+ * Update request if it is still actual for the new frameState
46
+ * @param key - unique key
47
+ * @param frameState - frameState data
48
+ */
49
+ update(key, frameState) {
50
+ if (this._statusMap[key]) {
51
+ // Deregister pending request for the old frameNumber
52
+ const { frameNumber, viewport: { id } } = this._statusMap[key].frameState;
53
+ this.pendingTilesRegister.deregister(id, frameNumber);
54
+ // Register pending request for the new frameNumber
55
+ const { frameNumber: newFrameNumber, viewport: { id: newViewportId } } = frameState;
56
+ this.pendingTilesRegister.register(newViewportId, newFrameNumber);
57
+ this._statusMap[key].frameState = frameState;
65
58
  }
66
- } = frameState;
67
- this.pendingTilesRegister.register(newViewportId, newFrameNumber);
68
- this._statusMap[key].frameState = frameState;
69
59
  }
70
- }
71
- find(key) {
72
- return this._statusMap[key];
73
- }
74
- hasPendingTiles(viewportId, frameNumber) {
75
- return !this.pendingTilesRegister.isZero(viewportId, frameNumber);
76
- }
60
+ /**
61
+ * Find request in the map
62
+ * @param key - unique key
63
+ * @returns
64
+ */
65
+ find(key) {
66
+ return this._statusMap[key];
67
+ }
68
+ /**
69
+ * Check it there are pending tile headers for the particular frameNumber
70
+ * @param viewportId
71
+ * @param frameNumber
72
+ * @returns
73
+ */
74
+ hasPendingTiles(viewportId, frameNumber) {
75
+ return !this.pendingTilesRegister.isZero(viewportId, frameNumber);
76
+ }
77
77
  }
78
- //# sourceMappingURL=i3s-tile-manager.js.map
@@ -1,5 +1,5 @@
1
- import { TilesetTraverser } from '../tileset-traverser';
2
- import { FrameState } from '../helpers/frame-state';
1
+ import { TilesetTraverser } from "../tileset-traverser.js";
2
+ import { FrameState } from "../helpers/frame-state.js";
3
3
  export declare class I3STilesetTraverser extends TilesetTraverser {
4
4
  private _tileManager;
5
5
  constructor(options: any);
@@ -1 +1 @@
1
- {"version":3,"file":"i3s-tileset-traverser.d.ts","sourceRoot":"","sources":["../../../src/tileset/format-i3s/i3s-tileset-traverser.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,gBAAgB,EAAC,MAAM,sBAAsB,CAAC;AAKtD,OAAO,EAAC,UAAU,EAAC,MAAM,wBAAwB,CAAC;AAElD,qBAAa,mBAAoB,SAAQ,gBAAgB;IACvD,OAAO,CAAC,YAAY,CAAiB;gBAEzB,OAAO,KAAA;IAKnB;;;;OAIG;IACH,iBAAiB,CAAC,UAAU,EAAE,UAAU,GAAG,OAAO;IAIlD,YAAY,CAAC,IAAI,KAAA,EAAE,UAAU,EAAE,UAAU;IAKzC,gBAAgB,CAAC,IAAI,KAAA,EAAE,UAAU,EAAE,UAAU,GAAG,OAAO;IAoCjD,SAAS,CAAC,MAAM,KAAA,EAAE,OAAO,KAAA;IAe/B;;;;;;;OAOG;IACH,WAAW,CAAC,MAAM,KAAA,EAAE,IAAI,KAAA,EAAE,UAAU,KAAA;CAgBrC"}
1
+ {"version":3,"file":"i3s-tileset-traverser.d.ts","sourceRoot":"","sources":["../../../src/tileset/format-i3s/i3s-tileset-traverser.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,gBAAgB,EAAC,gCAA6B;AAKtD,OAAO,EAAC,UAAU,EAAC,kCAA+B;AAElD,qBAAa,mBAAoB,SAAQ,gBAAgB;IACvD,OAAO,CAAC,YAAY,CAAiB;gBAEzB,OAAO,KAAA;IAKnB;;;;OAIG;IACH,iBAAiB,CAAC,UAAU,EAAE,UAAU,GAAG,OAAO;IAIlD,YAAY,CAAC,IAAI,KAAA,EAAE,UAAU,EAAE,UAAU;IAKzC,gBAAgB,CAAC,IAAI,KAAA,EAAE,UAAU,EAAE,UAAU,GAAG,OAAO;IAoCjD,SAAS,CAAC,MAAM,KAAA,EAAE,OAAO,KAAA;IAe/B;;;;;;;OAOG;IACH,WAAW,CAAC,MAAM,KAAA,EAAE,IAAI,KAAA,EAAE,UAAU,KAAA;CAgBrC"}
@@ -4,64 +4,86 @@ import { getLodStatus } from "../helpers/i3s-lod.js";
4
4
  import { Tile3D } from "../tile-3d.js";
5
5
  import { I3STileManager } from "./i3s-tile-manager.js";
6
6
  export class I3STilesetTraverser extends TilesetTraverser {
7
- constructor(options) {
8
- super(options);
9
- this._tileManager = void 0;
10
- this._tileManager = new I3STileManager();
11
- }
12
- traversalFinished(frameState) {
13
- return !this._tileManager.hasPendingTiles(frameState.viewport.id, this._frameNumber || 0);
14
- }
15
- shouldRefine(tile, frameState) {
16
- tile._lodJudge = getLodStatus(tile, frameState);
17
- return tile._lodJudge === 'DIG';
18
- }
19
- updateChildTiles(tile, frameState) {
20
- const children = tile.header.children || [];
21
- const childTiles = tile.children;
22
- const tileset = tile.tileset;
23
- for (const child of children) {
24
- const extendedId = `${child.id}-${frameState.viewport.id}`;
25
- const childTile = childTiles && childTiles.find(t => t.id === extendedId);
26
- if (!childTile) {
27
- let request = () => this._loadTile(child.id, tileset);
28
- const cachedRequest = this._tileManager.find(extendedId);
29
- if (!cachedRequest) {
30
- if (tileset.tileset.nodePages) {
31
- request = () => tileset.tileset.nodePagesTile.formTileFromNodePages(child.id);
32
- }
33
- this._tileManager.add(request, extendedId, header => this._onTileLoad(header, tile, extendedId), frameState);
34
- } else {
35
- this._tileManager.update(extendedId, frameState);
7
+ _tileManager;
8
+ constructor(options) {
9
+ super(options);
10
+ this._tileManager = new I3STileManager();
11
+ }
12
+ /**
13
+ * Check if there are no penging tile header requests,
14
+ * that means the traversal is finished and we can call
15
+ * following-up callbacks.
16
+ */
17
+ traversalFinished(frameState) {
18
+ return !this._tileManager.hasPendingTiles(frameState.viewport.id, this._frameNumber || 0);
19
+ }
20
+ shouldRefine(tile, frameState) {
21
+ tile._lodJudge = getLodStatus(tile, frameState);
22
+ return tile._lodJudge === 'DIG';
23
+ }
24
+ updateChildTiles(tile, frameState) {
25
+ const children = tile.header.children || [];
26
+ // children which are already fetched and constructed as Tile3D instances
27
+ const childTiles = tile.children;
28
+ const tileset = tile.tileset;
29
+ for (const child of children) {
30
+ const extendedId = `${child.id}-${frameState.viewport.id}`;
31
+ // if child tile is not fetched
32
+ const childTile = childTiles && childTiles.find((t) => t.id === extendedId);
33
+ if (!childTile) {
34
+ let request = () => this._loadTile(child.id, tileset);
35
+ const cachedRequest = this._tileManager.find(extendedId);
36
+ if (!cachedRequest) {
37
+ // eslint-disable-next-line max-depth
38
+ if (tileset.tileset.nodePages) {
39
+ request = () => tileset.tileset.nodePagesTile.formTileFromNodePages(child.id);
40
+ }
41
+ this._tileManager.add(request, extendedId, (header) => this._onTileLoad(header, tile, extendedId), frameState);
42
+ }
43
+ else {
44
+ // update frameNumber since it is still needed in current frame
45
+ this._tileManager.update(extendedId, frameState);
46
+ }
47
+ }
48
+ else if (childTile) {
49
+ // if child tile is fetched and available
50
+ this.updateTile(childTile, frameState);
51
+ }
36
52
  }
37
- } else if (childTile) {
38
- this.updateTile(childTile, frameState);
39
- }
53
+ return false;
40
54
  }
41
- return false;
42
- }
43
- async _loadTile(nodeId, tileset) {
44
- const {
45
- loader
46
- } = tileset;
47
- const nodeUrl = tileset.getTileUrl(`${tileset.url}/nodes/${nodeId}`);
48
- const options = {
49
- ...tileset.loadOptions,
50
- i3s: {
51
- ...tileset.loadOptions.i3s,
52
- isTileHeader: true
53
- }
54
- };
55
- return await load(nodeUrl, loader, options);
56
- }
57
- _onTileLoad(header, tile, extendedId) {
58
- const childTile = new Tile3D(tile.tileset, header, tile, extendedId);
59
- tile.children.push(childTile);
60
- const frameState = this._tileManager.find(childTile.id).frameState;
61
- this.updateTile(childTile, frameState);
62
- if (this._frameNumber === frameState.frameNumber && (this.traversalFinished(frameState) || new Date().getTime() - this.lastUpdate > this.updateDebounceTime)) {
63
- this.executeTraversal(childTile, frameState);
55
+ async _loadTile(nodeId, tileset) {
56
+ const { loader } = tileset;
57
+ const nodeUrl = tileset.getTileUrl(`${tileset.url}/nodes/${nodeId}`);
58
+ // load metadata
59
+ const options = {
60
+ ...tileset.loadOptions,
61
+ i3s: {
62
+ ...tileset.loadOptions.i3s,
63
+ isTileHeader: true
64
+ }
65
+ };
66
+ return await load(nodeUrl, loader, options);
67
+ }
68
+ /**
69
+ * The callback to init Tile3D instance after loading the tile JSON
70
+ * @param {Object} header - the tile JSON from a dataset
71
+ * @param {Tile3D} tile - the parent Tile3D instance
72
+ * @param {string} extendedId - optional ID to separate copies of a tile for different viewports.
73
+ * const extendedId = `${tile.id}-${frameState.viewport.id}`;
74
+ * @return {void}
75
+ */
76
+ _onTileLoad(header, tile, extendedId) {
77
+ // after child tile is fetched
78
+ const childTile = new Tile3D(tile.tileset, header, tile, extendedId);
79
+ tile.children.push(childTile);
80
+ const frameState = this._tileManager.find(childTile.id).frameState;
81
+ this.updateTile(childTile, frameState);
82
+ // after tile fetched, resume traversal if still in current update/traversal frame
83
+ if (this._frameNumber === frameState.frameNumber &&
84
+ (this.traversalFinished(frameState) ||
85
+ new Date().getTime() - this.lastUpdate > this.updateDebounceTime)) {
86
+ this.executeTraversal(childTile, frameState);
87
+ }
64
88
  }
65
- }
66
89
  }
67
- //# sourceMappingURL=i3s-tileset-traverser.js.map
@@ -1,4 +1,4 @@
1
- import type { Tileset3D } from '../tileset-3d';
1
+ import type { Tileset3D } from "../tileset-3d.js";
2
2
  export declare function get3dTilesOptions(tileset: Tileset3D): {
3
3
  assetGltfUpAxis: 'X' | 'Y' | 'Z';
4
4
  };
@@ -1 +1 @@
1
- {"version":3,"file":"3d-tiles-options.d.ts","sourceRoot":"","sources":["../../../src/tileset/helpers/3d-tiles-options.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,eAAe,CAAC;AAE7C,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,SAAS,GAAG;IAAC,eAAe,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,CAAA;CAAC,CAIxF"}
1
+ {"version":3,"file":"3d-tiles-options.d.ts","sourceRoot":"","sources":["../../../src/tileset/helpers/3d-tiles-options.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,SAAS,EAAC,yBAAsB;AAE7C,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,SAAS,GAAG;IAAC,eAAe,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,CAAA;CAAC,CAIxF"}
@@ -1,6 +1,5 @@
1
1
  export function get3dTilesOptions(tileset) {
2
- return {
3
- assetGltfUpAxis: tileset.asset && tileset.asset.gltfUpAxis || 'Y'
4
- };
2
+ return {
3
+ assetGltfUpAxis: (tileset.asset && tileset.asset.gltfUpAxis) || 'Y'
4
+ };
5
5
  }
6
- //# sourceMappingURL=3d-tiles-options.js.map