@loaders.gl/tiles 4.2.0-alpha.4 → 4.2.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 (73) hide show
  1. package/dist/constants.js +34 -32
  2. package/dist/dist.dev.js +723 -342
  3. package/dist/dist.min.js +9 -0
  4. package/dist/index.cjs +98 -240
  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 +40 -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 +67 -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 +78 -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 +5 -5
  35. package/dist/tileset/tile-3d.d.ts.map +1 -1
  36. package/dist/tileset/tile-3d.js +595 -399
  37. package/dist/tileset/tileset-3d.d.ts +5 -5
  38. package/dist/tileset/tileset-3d.d.ts.map +1 -1
  39. package/dist/tileset/tileset-3d.js +721 -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 +62 -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 +281 -220
  46. package/dist/types.js +0 -1
  47. package/dist/utils/doubly-linked-list-node.js +14 -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 +85 -56
  51. package/dist/utils/managed-array.js +138 -76
  52. package/package.json +10 -9
  53. package/dist/constants.js.map +0 -1
  54. package/dist/index.js.map +0 -1
  55. package/dist/tileset/format-3d-tiles/tileset-3d-traverser.js.map +0 -1
  56. package/dist/tileset/format-i3s/i3s-pending-tiles-register.js.map +0 -1
  57. package/dist/tileset/format-i3s/i3s-tile-manager.js.map +0 -1
  58. package/dist/tileset/format-i3s/i3s-tileset-traverser.js.map +0 -1
  59. package/dist/tileset/helpers/3d-tiles-options.js.map +0 -1
  60. package/dist/tileset/helpers/bounding-volume.js.map +0 -1
  61. package/dist/tileset/helpers/frame-state.js.map +0 -1
  62. package/dist/tileset/helpers/i3s-lod.js.map +0 -1
  63. package/dist/tileset/helpers/tiles-3d-lod.js.map +0 -1
  64. package/dist/tileset/helpers/transform-utils.js.map +0 -1
  65. package/dist/tileset/helpers/zoom.js.map +0 -1
  66. package/dist/tileset/tile-3d.js.map +0 -1
  67. package/dist/tileset/tileset-3d.js.map +0 -1
  68. package/dist/tileset/tileset-cache.js.map +0 -1
  69. package/dist/tileset/tileset-traverser.js.map +0 -1
  70. package/dist/types.js.map +0 -1
  71. package/dist/utils/doubly-linked-list-node.js.map +0 -1
  72. package/dist/utils/doubly-linked-list.js.map +0 -1
  73. package/dist/utils/managed-array.js.map +0 -1
@@ -1,25 +1,43 @@
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
+ constructor() {
7
+ this.frameNumberMap = new Map();
8
+ }
9
+ /**
10
+ * Register a new pending tile header for the particular frameNumber
11
+ * @param viewportId
12
+ * @param frameNumber
13
+ */
14
+ register(viewportId, frameNumber) {
15
+ const viewportMap = this.frameNumberMap.get(viewportId) || new Map();
16
+ const oldCount = viewportMap.get(frameNumber) || 0;
17
+ viewportMap.set(frameNumber, oldCount + 1);
18
+ this.frameNumberMap.set(viewportId, viewportMap);
19
+ }
20
+ /**
21
+ * Deregister a pending tile header for the particular frameNumber
22
+ * @param viewportId
23
+ * @param frameNumber
24
+ */
25
+ deregister(viewportId, frameNumber) {
26
+ const viewportMap = this.frameNumberMap.get(viewportId);
27
+ if (!viewportMap) {
28
+ return;
29
+ }
30
+ const oldCount = viewportMap.get(frameNumber) || 1;
31
+ viewportMap.set(frameNumber, oldCount - 1);
32
+ }
33
+ /**
34
+ * Check is there are no pending tile headers registered for the particular frameNumber
35
+ * @param viewportId
36
+ * @param frameNumber
37
+ * @returns
38
+ */
39
+ isZero(viewportId, frameNumber) {
40
+ const count = this.frameNumberMap.get(viewportId)?.get(frameNumber) || 0;
41
+ return count === 0;
15
42
  }
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
43
  }
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,76 @@
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
+ constructor() {
10
+ this.pendingTilesRegister = new I3SPendingTilesRegister();
11
+ this._statusMap = {};
50
12
  }
51
- }
52
- update(key, frameState) {
53
- if (this._statusMap[key]) {
54
- const {
55
- frameNumber,
56
- viewport: {
57
- id
13
+ /**
14
+ * Add request to map
15
+ * @param request - node metadata request
16
+ * @param key - unique key
17
+ * @param callback - callback after request completed
18
+ * @param frameState - frameState data
19
+ */
20
+ add(request, key, callback, frameState) {
21
+ if (!this._statusMap[key]) {
22
+ const { frameNumber, viewport: { id } } = frameState;
23
+ this._statusMap[key] = { request, callback, key, frameState, status: STATUS.REQUESTED };
24
+ // Register pending request for the frameNumber
25
+ this.pendingTilesRegister.register(id, frameNumber);
26
+ request()
27
+ .then((data) => {
28
+ this._statusMap[key].status = STATUS.COMPLETED;
29
+ const { frameNumber: actualFrameNumber, viewport: { id } } = this._statusMap[key].frameState;
30
+ // Deregister pending request for the frameNumber
31
+ this.pendingTilesRegister.deregister(id, actualFrameNumber);
32
+ this._statusMap[key].callback(data, frameState);
33
+ })
34
+ .catch((error) => {
35
+ this._statusMap[key].status = STATUS.ERROR;
36
+ const { frameNumber: actualFrameNumber, viewport: { id } } = this._statusMap[key].frameState;
37
+ // Deregister pending request for the frameNumber
38
+ this.pendingTilesRegister.deregister(id, actualFrameNumber);
39
+ callback(error);
40
+ });
58
41
  }
59
- } = this._statusMap[key].frameState;
60
- this.pendingTilesRegister.deregister(id, frameNumber);
61
- const {
62
- frameNumber: newFrameNumber,
63
- viewport: {
64
- id: newViewportId
42
+ }
43
+ /**
44
+ * Update request if it is still actual for the new frameState
45
+ * @param key - unique key
46
+ * @param frameState - frameState data
47
+ */
48
+ update(key, frameState) {
49
+ if (this._statusMap[key]) {
50
+ // Deregister pending request for the old frameNumber
51
+ const { frameNumber, viewport: { id } } = this._statusMap[key].frameState;
52
+ this.pendingTilesRegister.deregister(id, frameNumber);
53
+ // Register pending request for the new frameNumber
54
+ const { frameNumber: newFrameNumber, viewport: { id: newViewportId } } = frameState;
55
+ this.pendingTilesRegister.register(newViewportId, newFrameNumber);
56
+ this._statusMap[key].frameState = frameState;
65
57
  }
66
- } = frameState;
67
- this.pendingTilesRegister.register(newViewportId, newFrameNumber);
68
- this._statusMap[key].frameState = frameState;
69
58
  }
70
- }
71
- find(key) {
72
- return this._statusMap[key];
73
- }
74
- hasPendingTiles(viewportId, frameNumber) {
75
- return !this.pendingTilesRegister.isZero(viewportId, frameNumber);
76
- }
59
+ /**
60
+ * Find request in the map
61
+ * @param key - unique key
62
+ * @returns
63
+ */
64
+ find(key) {
65
+ return this._statusMap[key];
66
+ }
67
+ /**
68
+ * Check it there are pending tile headers for the particular frameNumber
69
+ * @param viewportId
70
+ * @param frameNumber
71
+ * @returns
72
+ */
73
+ hasPendingTiles(viewportId, frameNumber) {
74
+ return !this.pendingTilesRegister.isZero(viewportId, frameNumber);
75
+ }
77
76
  }
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,85 @@ 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
+ constructor(options) {
8
+ super(options);
9
+ this._tileManager = new I3STileManager();
10
+ }
11
+ /**
12
+ * Check if there are no penging tile header requests,
13
+ * that means the traversal is finished and we can call
14
+ * following-up callbacks.
15
+ */
16
+ traversalFinished(frameState) {
17
+ return !this._tileManager.hasPendingTiles(frameState.viewport.id, this._frameNumber || 0);
18
+ }
19
+ shouldRefine(tile, frameState) {
20
+ tile._lodJudge = getLodStatus(tile, frameState);
21
+ return tile._lodJudge === 'DIG';
22
+ }
23
+ updateChildTiles(tile, frameState) {
24
+ const children = tile.header.children || [];
25
+ // children which are already fetched and constructed as Tile3D instances
26
+ const childTiles = tile.children;
27
+ const tileset = tile.tileset;
28
+ for (const child of children) {
29
+ const extendedId = `${child.id}-${frameState.viewport.id}`;
30
+ // if child tile is not fetched
31
+ const childTile = childTiles && childTiles.find((t) => t.id === extendedId);
32
+ if (!childTile) {
33
+ let request = () => this._loadTile(child.id, tileset);
34
+ const cachedRequest = this._tileManager.find(extendedId);
35
+ if (!cachedRequest) {
36
+ // eslint-disable-next-line max-depth
37
+ if (tileset.tileset.nodePages) {
38
+ request = () => tileset.tileset.nodePagesTile.formTileFromNodePages(child.id);
39
+ }
40
+ this._tileManager.add(request, extendedId, (header) => this._onTileLoad(header, tile, extendedId), frameState);
41
+ }
42
+ else {
43
+ // update frameNumber since it is still needed in current frame
44
+ this._tileManager.update(extendedId, frameState);
45
+ }
46
+ }
47
+ else if (childTile) {
48
+ // if child tile is fetched and available
49
+ this.updateTile(childTile, frameState);
50
+ }
36
51
  }
37
- } else if (childTile) {
38
- this.updateTile(childTile, frameState);
39
- }
52
+ return false;
40
53
  }
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);
54
+ async _loadTile(nodeId, tileset) {
55
+ const { loader } = tileset;
56
+ const nodeUrl = tileset.getTileUrl(`${tileset.url}/nodes/${nodeId}`);
57
+ // load metadata
58
+ const options = {
59
+ ...tileset.loadOptions,
60
+ i3s: {
61
+ ...tileset.loadOptions.i3s,
62
+ isTileHeader: true
63
+ }
64
+ };
65
+ return await load(nodeUrl, loader, options);
66
+ }
67
+ /**
68
+ * The callback to init Tile3D instance after loading the tile JSON
69
+ * @param {Object} header - the tile JSON from a dataset
70
+ * @param {Tile3D} tile - the parent Tile3D instance
71
+ * @param {string} extendedId - optional ID to separate copies of a tile for different viewports.
72
+ * const extendedId = `${tile.id}-${frameState.viewport.id}`;
73
+ * @return {void}
74
+ */
75
+ _onTileLoad(header, tile, extendedId) {
76
+ // after child tile is fetched
77
+ const childTile = new Tile3D(tile.tileset, header, tile, extendedId);
78
+ tile.children.push(childTile);
79
+ const frameState = this._tileManager.find(childTile.id).frameState;
80
+ this.updateTile(childTile, frameState);
81
+ // after tile fetched, resume traversal if still in current update/traversal frame
82
+ if (this._frameNumber === frameState.frameNumber &&
83
+ (this.traversalFinished(frameState) ||
84
+ new Date().getTime() - this.lastUpdate > this.updateDebounceTime)) {
85
+ this.executeTraversal(childTile, frameState);
86
+ }
64
87
  }
65
- }
66
88
  }
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