@loaders.gl/tiles 3.3.0-alpha.9 → 3.4.0-alpha.1

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 (147) hide show
  1. package/dist/constants.d.ts.map +1 -1
  2. package/dist/constants.js +1 -0
  3. package/dist/dist.min.js +25 -23
  4. package/dist/es5/constants.js +1 -0
  5. package/dist/es5/constants.js.map +1 -1
  6. package/dist/es5/index.js +8 -9
  7. package/dist/es5/index.js.map +1 -1
  8. package/dist/es5/tileset/{traversers → format-3d-tiles}/tileset-3d-traverser.js +4 -4
  9. package/dist/es5/tileset/format-3d-tiles/tileset-3d-traverser.js.map +1 -0
  10. package/dist/es5/tileset/{traversers → format-i3s}/i3s-pending-tiles-register.js +2 -2
  11. package/dist/es5/tileset/format-i3s/i3s-pending-tiles-register.js.map +1 -0
  12. package/dist/es5/tileset/{traversers → format-i3s}/i3s-tile-manager.js +4 -4
  13. package/dist/es5/tileset/format-i3s/i3s-tile-manager.js.map +1 -0
  14. package/dist/es5/tileset/{traversers → format-i3s}/i3s-tileset-traverser.js +9 -8
  15. package/dist/es5/tileset/format-i3s/i3s-tileset-traverser.js.map +1 -0
  16. package/dist/es5/tileset/helpers/i3s-lod.js +1 -0
  17. package/dist/es5/tileset/helpers/i3s-lod.js.map +1 -1
  18. package/dist/es5/tileset/helpers/tiles-3d-lod.js.map +1 -1
  19. package/dist/es5/tileset/helpers/transform-utils.js +1 -0
  20. package/dist/es5/tileset/helpers/transform-utils.js.map +1 -1
  21. package/dist/es5/tileset/helpers/zoom.js +1 -0
  22. package/dist/es5/tileset/helpers/zoom.js.map +1 -1
  23. package/dist/es5/tileset/tile-3d.js +9 -9
  24. package/dist/es5/tileset/tile-3d.js.map +1 -1
  25. package/dist/es5/tileset/tileset-3d.js +13 -13
  26. package/dist/es5/tileset/tileset-3d.js.map +1 -1
  27. package/dist/es5/tileset/tileset-cache.js +4 -4
  28. package/dist/es5/tileset/tileset-cache.js.map +1 -1
  29. package/dist/es5/tileset/{traversers/tileset-traverser.js → tileset-traverser.js} +7 -6
  30. package/dist/es5/tileset/tileset-traverser.js.map +1 -0
  31. package/dist/es5/utils/doubly-linked-list-node.js +2 -2
  32. package/dist/es5/utils/doubly-linked-list-node.js.map +1 -1
  33. package/dist/es5/utils/doubly-linked-list.js +4 -4
  34. package/dist/es5/utils/doubly-linked-list.js.map +1 -1
  35. package/dist/es5/utils/managed-array.js +2 -2
  36. package/dist/es5/utils/managed-array.js.map +1 -1
  37. package/dist/esm/constants.js +2 -0
  38. package/dist/esm/constants.js.map +1 -1
  39. package/dist/esm/index.js +6 -4
  40. package/dist/esm/index.js.map +1 -1
  41. package/dist/esm/tileset/{traversers → format-3d-tiles}/tileset-3d-traverser.js +2 -2
  42. package/dist/esm/tileset/format-3d-tiles/tileset-3d-traverser.js.map +1 -0
  43. package/dist/esm/tileset/{traversers → format-i3s}/i3s-pending-tiles-register.js +1 -1
  44. package/dist/esm/tileset/format-i3s/i3s-pending-tiles-register.js.map +1 -0
  45. package/dist/esm/tileset/{traversers → format-i3s}/i3s-tile-manager.js +2 -2
  46. package/dist/esm/tileset/format-i3s/i3s-tile-manager.js.map +1 -0
  47. package/dist/esm/tileset/{traversers → format-i3s}/i3s-tileset-traverser.js +9 -8
  48. package/dist/esm/tileset/format-i3s/i3s-tileset-traverser.js.map +1 -0
  49. package/dist/esm/tileset/helpers/i3s-lod.js +2 -0
  50. package/dist/esm/tileset/helpers/i3s-lod.js.map +1 -1
  51. package/dist/esm/tileset/helpers/tiles-3d-lod.js.map +1 -1
  52. package/dist/esm/tileset/helpers/transform-utils.js +2 -0
  53. package/dist/esm/tileset/helpers/transform-utils.js.map +1 -1
  54. package/dist/esm/tileset/helpers/zoom.js +2 -0
  55. package/dist/esm/tileset/helpers/zoom.js.map +1 -1
  56. package/dist/esm/tileset/tile-3d.js +4 -3
  57. package/dist/esm/tileset/tile-3d.js.map +1 -1
  58. package/dist/esm/tileset/tileset-3d.js +8 -7
  59. package/dist/esm/tileset/tileset-3d.js.map +1 -1
  60. package/dist/esm/tileset/tileset-cache.js +2 -2
  61. package/dist/esm/tileset/tileset-cache.js.map +1 -1
  62. package/dist/esm/tileset/{traversers/tileset-traverser.js → tileset-traverser.js} +4 -3
  63. package/dist/esm/tileset/tileset-traverser.js.map +1 -0
  64. package/dist/esm/utils/doubly-linked-list-node.js +1 -1
  65. package/dist/esm/utils/doubly-linked-list-node.js.map +1 -1
  66. package/dist/esm/utils/doubly-linked-list.js +2 -2
  67. package/dist/esm/utils/doubly-linked-list.js.map +1 -1
  68. package/dist/esm/utils/managed-array.js +1 -1
  69. package/dist/esm/utils/managed-array.js.map +1 -1
  70. package/dist/index.d.ts +4 -4
  71. package/dist/index.d.ts.map +1 -1
  72. package/dist/index.js +6 -8
  73. package/dist/tileset/{traversers → format-3d-tiles}/tileset-3d-traverser.d.ts +2 -2
  74. package/dist/tileset/format-3d-tiles/tileset-3d-traverser.d.ts.map +1 -0
  75. package/dist/tileset/{traversers → format-3d-tiles}/tileset-3d-traverser.js +6 -7
  76. package/dist/tileset/{traversers → format-i3s}/i3s-pending-tiles-register.d.ts +1 -1
  77. package/dist/tileset/format-i3s/i3s-pending-tiles-register.d.ts.map +1 -0
  78. package/dist/tileset/{traversers → format-i3s}/i3s-pending-tiles-register.js +2 -1
  79. package/dist/tileset/{traversers → format-i3s}/i3s-tile-manager.d.ts +1 -1
  80. package/dist/tileset/format-i3s/i3s-tile-manager.d.ts.map +1 -0
  81. package/dist/tileset/{traversers → format-i3s}/i3s-tile-manager.js +4 -6
  82. package/dist/tileset/{traversers → format-i3s}/i3s-tileset-traverser.d.ts +6 -6
  83. package/dist/tileset/format-i3s/i3s-tileset-traverser.d.ts.map +1 -0
  84. package/dist/tileset/{traversers → format-i3s}/i3s-tileset-traverser.js +13 -15
  85. package/dist/tileset/helpers/i3s-lod.d.ts +1 -1
  86. package/dist/tileset/helpers/i3s-lod.d.ts.map +1 -1
  87. package/dist/tileset/helpers/i3s-lod.js +1 -0
  88. package/dist/tileset/helpers/tiles-3d-lod.d.ts.map +1 -1
  89. package/dist/tileset/helpers/tiles-3d-lod.js +3 -2
  90. package/dist/tileset/helpers/transform-utils.d.ts.map +1 -1
  91. package/dist/tileset/helpers/transform-utils.js +1 -0
  92. package/dist/tileset/helpers/zoom.d.ts.map +1 -1
  93. package/dist/tileset/helpers/zoom.js +1 -0
  94. package/dist/tileset/tile-3d.d.ts +10 -10
  95. package/dist/tileset/tile-3d.d.ts.map +1 -1
  96. package/dist/tileset/tile-3d.js +8 -9
  97. package/dist/tileset/tileset-3d.d.ts +3 -3
  98. package/dist/tileset/tileset-3d.d.ts.map +1 -1
  99. package/dist/tileset/tileset-3d.js +16 -16
  100. package/dist/tileset/tileset-cache.d.ts +1 -1
  101. package/dist/tileset/tileset-cache.d.ts.map +1 -1
  102. package/dist/tileset/tileset-cache.js +6 -7
  103. package/dist/tileset/{traversers/tileset-traverser.d.ts → tileset-traverser.d.ts} +6 -16
  104. package/dist/tileset/tileset-traverser.d.ts.map +1 -0
  105. package/dist/tileset/{traversers/tileset-traverser.js → tileset-traverser.js} +15 -9
  106. package/dist/utils/doubly-linked-list-node.d.ts +1 -2
  107. package/dist/utils/doubly-linked-list-node.d.ts.map +1 -1
  108. package/dist/utils/doubly-linked-list-node.js +4 -3
  109. package/dist/utils/doubly-linked-list.d.ts +2 -3
  110. package/dist/utils/doubly-linked-list.d.ts.map +1 -1
  111. package/dist/utils/doubly-linked-list.js +4 -7
  112. package/dist/utils/managed-array.d.ts +1 -1
  113. package/dist/utils/managed-array.d.ts.map +1 -1
  114. package/dist/utils/managed-array.js +2 -1
  115. package/package.json +4 -4
  116. package/src/constants.ts +2 -0
  117. package/src/index.ts +6 -4
  118. package/src/tileset/{traversers → format-3d-tiles}/tileset-3d-traverser.ts +4 -2
  119. package/src/tileset/{traversers → format-i3s}/i3s-pending-tiles-register.ts +1 -1
  120. package/src/tileset/{traversers → format-i3s}/i3s-tile-manager.ts +2 -2
  121. package/src/tileset/{traversers → format-i3s}/i3s-tileset-traverser.ts +13 -13
  122. package/src/tileset/helpers/i3s-lod.ts +3 -1
  123. package/src/tileset/helpers/tiles-3d-lod.ts +2 -0
  124. package/src/tileset/helpers/transform-utils.ts +2 -0
  125. package/src/tileset/helpers/zoom.ts +2 -0
  126. package/src/tileset/tile-3d.ts +16 -13
  127. package/src/tileset/tileset-3d.ts +12 -7
  128. package/src/tileset/tileset-cache.ts +4 -2
  129. package/src/tileset/{traversers/tileset-traverser.ts → tileset-traverser.ts} +17 -16
  130. package/src/utils/doubly-linked-list-node.ts +3 -2
  131. package/src/utils/doubly-linked-list.ts +2 -3
  132. package/src/utils/managed-array.ts +1 -1
  133. package/dist/es5/tileset/traversers/i3s-pending-tiles-register.js.map +0 -1
  134. package/dist/es5/tileset/traversers/i3s-tile-manager.js.map +0 -1
  135. package/dist/es5/tileset/traversers/i3s-tileset-traverser.js.map +0 -1
  136. package/dist/es5/tileset/traversers/tileset-3d-traverser.js.map +0 -1
  137. package/dist/es5/tileset/traversers/tileset-traverser.js.map +0 -1
  138. package/dist/esm/tileset/traversers/i3s-pending-tiles-register.js.map +0 -1
  139. package/dist/esm/tileset/traversers/i3s-tile-manager.js.map +0 -1
  140. package/dist/esm/tileset/traversers/i3s-tileset-traverser.js.map +0 -1
  141. package/dist/esm/tileset/traversers/tileset-3d-traverser.js.map +0 -1
  142. package/dist/esm/tileset/traversers/tileset-traverser.js.map +0 -1
  143. package/dist/tileset/traversers/i3s-pending-tiles-register.d.ts.map +0 -1
  144. package/dist/tileset/traversers/i3s-tile-manager.d.ts.map +0 -1
  145. package/dist/tileset/traversers/i3s-tileset-traverser.d.ts.map +0 -1
  146. package/dist/tileset/traversers/tileset-3d-traverser.d.ts.map +0 -1
  147. package/dist/tileset/traversers/tileset-traverser.d.ts.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,kBAAkB;;;;;;;CAO9B,CAAC;AAEF,eAAO,MAAM,eAAe;;;CAG3B,CAAC;AAEF,eAAO,MAAM,SAAS;;;;;CAKrB,CAAC;AAEF,eAAO,MAAM,YAAY;;;CAGxB,CAAC;AAEF,eAAO,MAAM,eAAe;;;CAG3B,CAAC;AAGF,eAAO,MAAM,wBAAwB;;;;CAIpC,CAAC"}
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,kBAAkB;;;;;;;CAO9B,CAAC;AAEF,eAAO,MAAM,eAAe;;;CAG3B,CAAC;AAEF,eAAO,MAAM,SAAS;;;;;CAKrB,CAAC;AAEF,eAAO,MAAM,YAAY;;;CAGxB,CAAC;AAEF,eAAO,MAAM,eAAe;;;CAG3B,CAAC;AAGF,eAAO,MAAM,wBAAwB;;;;CAIpC,CAAC"}
package/dist/constants.js CHANGED
@@ -1,4 +1,5 @@
1
1
  "use strict";
2
+ // loaders.gl, MIT license
2
3
  Object.defineProperty(exports, "__esModule", { value: true });
3
4
  exports.TILE3D_OPTIMIZATION_HINT = exports.LOD_METRIC_TYPE = exports.TILESET_TYPE = exports.TILE_TYPE = exports.TILE_REFINEMENT = exports.TILE_CONTENT_STATE = void 0;
4
5
  exports.TILE_CONTENT_STATE = {
package/dist/dist.min.js CHANGED
@@ -3681,11 +3681,13 @@
3681
3681
  }
3682
3682
  });
3683
3683
 
3684
- // ../worker-utils/src/lib/node/worker_threads-browser.js
3684
+ // ../worker-utils/src/lib/node/worker_threads-browser.ts
3685
3685
  var Worker2;
3686
3686
  var init_worker_threads_browser = __esm({
3687
- "../worker-utils/src/lib/node/worker_threads-browser.js"() {
3687
+ "../worker-utils/src/lib/node/worker_threads-browser.ts"() {
3688
3688
  Worker2 = class {
3689
+ terminate() {
3690
+ }
3689
3691
  };
3690
3692
  }
3691
3693
  });
@@ -7239,10 +7241,10 @@
7239
7241
  }
7240
7242
  });
7241
7243
 
7242
- // src/tileset/traversers/tileset-traverser.ts
7244
+ // src/tileset/tileset-traverser.ts
7243
7245
  var DEFAULT_PROPS3, TilesetTraverser;
7244
7246
  var init_tileset_traverser = __esm({
7245
- "src/tileset/traversers/tileset-traverser.ts"() {
7247
+ "src/tileset/tileset-traverser.ts"() {
7246
7248
  init_managed_array();
7247
7249
  init_constants3();
7248
7250
  DEFAULT_PROPS3 = {
@@ -7474,7 +7476,7 @@
7474
7476
  function defined3(x) {
7475
7477
  return x !== void 0 && x !== null;
7476
7478
  }
7477
- var scratchVector9, TileHeader;
7479
+ var scratchVector9, Tile3D;
7478
7480
  var init_tile_3d = __esm({
7479
7481
  "src/tileset/tile-3d.ts"() {
7480
7482
  init_esm();
@@ -7487,7 +7489,7 @@
7487
7489
  init_d_tiles_options();
7488
7490
  init_tileset_traverser();
7489
7491
  scratchVector9 = new Vector3();
7490
- TileHeader = class {
7492
+ Tile3D = class {
7491
7493
  constructor(tileset, header, parentHeader, extendedId = "") {
7492
7494
  this.header = header;
7493
7495
  this.tileset = tileset;
@@ -7852,10 +7854,10 @@
7852
7854
  }
7853
7855
  });
7854
7856
 
7855
- // src/tileset/traversers/tileset-3d-traverser.ts
7857
+ // src/tileset/format-3d-tiles/tileset-3d-traverser.ts
7856
7858
  var Tileset3DTraverser;
7857
7859
  var init_tileset_3d_traverser = __esm({
7858
- "src/tileset/traversers/tileset-3d-traverser.ts"() {
7860
+ "src/tileset/format-3d-tiles/tileset-3d-traverser.ts"() {
7859
7861
  init_constants3();
7860
7862
  init_tileset_traverser();
7861
7863
  Tileset3DTraverser = class extends TilesetTraverser {
@@ -7898,10 +7900,10 @@
7898
7900
  }
7899
7901
  });
7900
7902
 
7901
- // src/tileset/traversers/i3s-pending-tiles-register.ts
7903
+ // src/tileset/format-i3s/i3s-pending-tiles-register.ts
7902
7904
  var I3SPendingTilesRegister;
7903
7905
  var init_i3s_pending_tiles_register = __esm({
7904
- "src/tileset/traversers/i3s-pending-tiles-register.ts"() {
7906
+ "src/tileset/format-i3s/i3s-pending-tiles-register.ts"() {
7905
7907
  I3SPendingTilesRegister = class {
7906
7908
  constructor() {
7907
7909
  this.frameNumberMap = new Map();
@@ -7928,10 +7930,10 @@
7928
7930
  }
7929
7931
  });
7930
7932
 
7931
- // src/tileset/traversers/i3s-tile-manager.ts
7933
+ // src/tileset/format-i3s/i3s-tile-manager.ts
7932
7934
  var STATUS, I3STileManager;
7933
7935
  var init_i3s_tile_manager = __esm({
7934
- "src/tileset/traversers/i3s-tile-manager.ts"() {
7936
+ "src/tileset/format-i3s/i3s-tile-manager.ts"() {
7935
7937
  init_i3s_pending_tiles_register();
7936
7938
  STATUS = {
7937
7939
  REQUESTED: "REQUESTED",
@@ -7995,23 +7997,23 @@
7995
7997
  }
7996
7998
  });
7997
7999
 
7998
- // src/tileset/traversers/i3s-tileset-traverser.ts
8000
+ // src/tileset/format-i3s/i3s-tileset-traverser.ts
7999
8001
  var I3STilesetTraverser;
8000
8002
  var init_i3s_tileset_traverser = __esm({
8001
- "src/tileset/traversers/i3s-tileset-traverser.ts"() {
8003
+ "src/tileset/format-i3s/i3s-tileset-traverser.ts"() {
8002
8004
  init_src3();
8003
8005
  init_tileset_traverser();
8004
8006
  init_i3s_lod();
8005
8007
  init_tile_3d();
8006
8008
  init_i3s_tile_manager();
8007
8009
  I3STilesetTraverser = class extends TilesetTraverser {
8008
- traversalFinished(frameState) {
8009
- return !this._tileManager.hasPendingTiles(frameState.viewport.id, this._frameNumber || 0);
8010
- }
8011
8010
  constructor(options) {
8012
8011
  super(options);
8013
8012
  this._tileManager = new I3STileManager();
8014
8013
  }
8014
+ traversalFinished(frameState) {
8015
+ return !this._tileManager.hasPendingTiles(frameState.viewport.id, this._frameNumber || 0);
8016
+ }
8015
8017
  shouldRefine(tile, frameState) {
8016
8018
  tile._lodJudge = getLodStatus(tile, frameState);
8017
8019
  return tile._lodJudge === "DIG";
@@ -8053,7 +8055,7 @@
8053
8055
  return await load(nodeUrl, loader, options);
8054
8056
  }
8055
8057
  _onTileLoad(header, tile, extendedId) {
8056
- const childTile = new TileHeader(tile.tileset, header, tile, extendedId);
8058
+ const childTile = new Tile3D(tile.tileset, header, tile, extendedId);
8057
8059
  tile.children.push(childTile);
8058
8060
  const frameState = this._tileManager.find(childTile.id).frameState;
8059
8061
  this.updateTile(childTile, frameState);
@@ -8092,10 +8094,10 @@
8092
8094
  init_frame_state();
8093
8095
  init_zoom();
8094
8096
  init_tile_3d();
8095
- init_tileset_3d_traverser();
8097
+ init_constants3();
8096
8098
  init_tileset_traverser();
8099
+ init_tileset_3d_traverser();
8097
8100
  init_i3s_tileset_traverser();
8098
- init_constants3();
8099
8101
  DEFAULT_PROPS4 = {
8100
8102
  description: "",
8101
8103
  ellipsoid: Ellipsoid.WGS84,
@@ -8434,7 +8436,7 @@
8434
8436
  this.stats.get(TILES_GPU_MEMORY, "memory");
8435
8437
  }
8436
8438
  _initializeTileHeaders(tilesetJson, parentTileHeader) {
8437
- const rootTile = new TileHeader(this, tilesetJson.root, parentTileHeader);
8439
+ const rootTile = new Tile3D(this, tilesetJson.root, parentTileHeader);
8438
8440
  if (parentTileHeader) {
8439
8441
  parentTileHeader.children.push(rootTile);
8440
8442
  rootTile.depth = parentTileHeader.depth + 1;
@@ -8447,7 +8449,7 @@
8447
8449
  this.stats.get(TILES_TOTAL).incrementCount();
8448
8450
  const children = tile.header.children || [];
8449
8451
  for (const childHeader of children) {
8450
- const childTile = new TileHeader(this, childHeader, tile);
8452
+ const childTile = new Tile3D(this, childHeader, tile);
8451
8453
  tile.children.push(childTile);
8452
8454
  childTile.depth = tile.depth + 1;
8453
8455
  stack.push(childTile);
@@ -8635,7 +8637,7 @@
8635
8637
  TILE_CONTENT_STATE: () => TILE_CONTENT_STATE,
8636
8638
  TILE_REFINEMENT: () => TILE_REFINEMENT,
8637
8639
  TILE_TYPE: () => TILE_TYPE,
8638
- Tile3D: () => TileHeader,
8640
+ Tile3D: () => Tile3D,
8639
8641
  Tileset3D: () => Tileset3D,
8640
8642
  TilesetCache: () => TilesetCache,
8641
8643
  TilesetTraverser: () => TilesetTraverser,
@@ -4,6 +4,7 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.TILE_TYPE = exports.TILE_REFINEMENT = exports.TILE_CONTENT_STATE = exports.TILESET_TYPE = exports.TILE3D_OPTIMIZATION_HINT = exports.LOD_METRIC_TYPE = void 0;
7
+
7
8
  var TILE_CONTENT_STATE = {
8
9
  UNLOADED: 0,
9
10
  LOADING: 1,
@@ -1 +1 @@
1
- {"version":3,"file":"constants.js","names":["TILE_CONTENT_STATE","UNLOADED","LOADING","PROCESSING","READY","EXPIRED","FAILED","TILE_REFINEMENT","ADD","REPLACE","TILE_TYPE","EMPTY","SCENEGRAPH","POINTCLOUD","MESH","TILESET_TYPE","I3S","TILES3D","LOD_METRIC_TYPE","GEOMETRIC_ERROR","MAX_SCREEN_THRESHOLD","TILE3D_OPTIMIZATION_HINT","NOT_COMPUTED","USE_OPTIMIZATION","SKIP_OPTIMIZATION"],"sources":["../../src/constants.ts"],"sourcesContent":["export const TILE_CONTENT_STATE = {\n UNLOADED: 0, // Has never been requested\n LOADING: 1, // Is waiting on a pending request\n PROCESSING: 2, // Request received. Contents are being processed for rendering. Depending on the content, it might make its own requests for external data.\n READY: 3, // Ready to render.\n EXPIRED: 4, // Is expired and will be unloaded once new content is loaded.\n FAILED: 5 // Request failed.\n};\n\nexport const TILE_REFINEMENT = {\n ADD: 1, // Render tile and, if screen space error exceeded, also refine to its children.\n REPLACE: 2 // Render tile or, if screen space error exceeded, refine to its descendants instead.\n};\n\nexport const TILE_TYPE = {\n EMPTY: 'empty',\n SCENEGRAPH: 'scenegraph',\n POINTCLOUD: 'pointcloud',\n MESH: 'mesh'\n};\n\nexport const TILESET_TYPE = {\n I3S: 'I3S',\n TILES3D: 'TILES3D'\n};\n\nexport const LOD_METRIC_TYPE = {\n GEOMETRIC_ERROR: 'geometricError',\n MAX_SCREEN_THRESHOLD: 'maxScreenThreshold'\n};\n\n// Cesium 3D Tiles Specific\nexport const TILE3D_OPTIMIZATION_HINT = {\n NOT_COMPUTED: -1,\n USE_OPTIMIZATION: 1,\n SKIP_OPTIMIZATION: 0\n};\n"],"mappings":";;;;;;AAAO,IAAMA,kBAAkB,GAAG;EAChCC,QAAQ,EAAE,CAAC;EACXC,OAAO,EAAE,CAAC;EACVC,UAAU,EAAE,CAAC;EACbC,KAAK,EAAE,CAAC;EACRC,OAAO,EAAE,CAAC;EACVC,MAAM,EAAE;AACV,CAAC;AAAC;AAEK,IAAMC,eAAe,GAAG;EAC7BC,GAAG,EAAE,CAAC;EACNC,OAAO,EAAE;AACX,CAAC;AAAC;AAEK,IAAMC,SAAS,GAAG;EACvBC,KAAK,EAAE,OAAO;EACdC,UAAU,EAAE,YAAY;EACxBC,UAAU,EAAE,YAAY;EACxBC,IAAI,EAAE;AACR,CAAC;AAAC;AAEK,IAAMC,YAAY,GAAG;EAC1BC,GAAG,EAAE,KAAK;EACVC,OAAO,EAAE;AACX,CAAC;AAAC;AAEK,IAAMC,eAAe,GAAG;EAC7BC,eAAe,EAAE,gBAAgB;EACjCC,oBAAoB,EAAE;AACxB,CAAC;;AAAC;AAGK,IAAMC,wBAAwB,GAAG;EACtCC,YAAY,EAAE,CAAC,CAAC;EAChBC,gBAAgB,EAAE,CAAC;EACnBC,iBAAiB,EAAE;AACrB,CAAC;AAAC"}
1
+ {"version":3,"file":"constants.js","names":["TILE_CONTENT_STATE","UNLOADED","LOADING","PROCESSING","READY","EXPIRED","FAILED","TILE_REFINEMENT","ADD","REPLACE","TILE_TYPE","EMPTY","SCENEGRAPH","POINTCLOUD","MESH","TILESET_TYPE","I3S","TILES3D","LOD_METRIC_TYPE","GEOMETRIC_ERROR","MAX_SCREEN_THRESHOLD","TILE3D_OPTIMIZATION_HINT","NOT_COMPUTED","USE_OPTIMIZATION","SKIP_OPTIMIZATION"],"sources":["../../src/constants.ts"],"sourcesContent":["// loaders.gl, MIT license\n\nexport const TILE_CONTENT_STATE = {\n UNLOADED: 0, // Has never been requested\n LOADING: 1, // Is waiting on a pending request\n PROCESSING: 2, // Request received. Contents are being processed for rendering. Depending on the content, it might make its own requests for external data.\n READY: 3, // Ready to render.\n EXPIRED: 4, // Is expired and will be unloaded once new content is loaded.\n FAILED: 5 // Request failed.\n};\n\nexport const TILE_REFINEMENT = {\n ADD: 1, // Render tile and, if screen space error exceeded, also refine to its children.\n REPLACE: 2 // Render tile or, if screen space error exceeded, refine to its descendants instead.\n};\n\nexport const TILE_TYPE = {\n EMPTY: 'empty',\n SCENEGRAPH: 'scenegraph',\n POINTCLOUD: 'pointcloud',\n MESH: 'mesh'\n};\n\nexport const TILESET_TYPE = {\n I3S: 'I3S',\n TILES3D: 'TILES3D'\n};\n\nexport const LOD_METRIC_TYPE = {\n GEOMETRIC_ERROR: 'geometricError',\n MAX_SCREEN_THRESHOLD: 'maxScreenThreshold'\n};\n\n// Cesium 3D Tiles Specific\nexport const TILE3D_OPTIMIZATION_HINT = {\n NOT_COMPUTED: -1,\n USE_OPTIMIZATION: 1,\n SKIP_OPTIMIZATION: 0\n};\n"],"mappings":";;;;;;;AAEO,IAAMA,kBAAkB,GAAG;EAChCC,QAAQ,EAAE,CAAC;EACXC,OAAO,EAAE,CAAC;EACVC,UAAU,EAAE,CAAC;EACbC,KAAK,EAAE,CAAC;EACRC,OAAO,EAAE,CAAC;EACVC,MAAM,EAAE;AACV,CAAC;AAAC;AAEK,IAAMC,eAAe,GAAG;EAC7BC,GAAG,EAAE,CAAC;EACNC,OAAO,EAAE;AACX,CAAC;AAAC;AAEK,IAAMC,SAAS,GAAG;EACvBC,KAAK,EAAE,OAAO;EACdC,UAAU,EAAE,YAAY;EACxBC,UAAU,EAAE,YAAY;EACxBC,IAAI,EAAE;AACR,CAAC;AAAC;AAEK,IAAMC,YAAY,GAAG;EAC1BC,GAAG,EAAE,KAAK;EACVC,OAAO,EAAE;AACX,CAAC;AAAC;AAEK,IAAMC,eAAe,GAAG;EAC7BC,eAAe,EAAE,gBAAgB;EACjCC,oBAAoB,EAAE;AACxB,CAAC;;AAAC;AAGK,IAAMC,wBAAwB,GAAG;EACtCC,YAAY,EAAE,CAAC,CAAC;EAChBC,gBAAgB,EAAE,CAAC;EACnBC,iBAAiB,EAAE;AACrB,CAAC;AAAC"}
package/dist/es5/index.js CHANGED
@@ -1,6 +1,5 @@
1
1
  "use strict";
2
2
 
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
3
  Object.defineProperty(exports, "__esModule", {
5
4
  value: true
6
5
  });
@@ -37,25 +36,25 @@ Object.defineProperty(exports, "TILE_TYPE", {
37
36
  Object.defineProperty(exports, "Tile3D", {
38
37
  enumerable: true,
39
38
  get: function get() {
40
- return _tile3d.default;
39
+ return _tile3d.Tile3D;
41
40
  }
42
41
  });
43
42
  Object.defineProperty(exports, "Tileset3D", {
44
43
  enumerable: true,
45
44
  get: function get() {
46
- return _tileset3d.default;
45
+ return _tileset3d.Tileset3D;
47
46
  }
48
47
  });
49
48
  Object.defineProperty(exports, "TilesetCache", {
50
49
  enumerable: true,
51
50
  get: function get() {
52
- return _tilesetCache.default;
51
+ return _tilesetCache.TilesetCache;
53
52
  }
54
53
  });
55
54
  Object.defineProperty(exports, "TilesetTraverser", {
56
55
  enumerable: true,
57
56
  get: function get() {
58
- return _tilesetTraverser.default;
57
+ return _tilesetTraverser.TilesetTraverser;
59
58
  }
60
59
  });
61
60
  Object.defineProperty(exports, "calculateTransformProps", {
@@ -82,10 +81,10 @@ Object.defineProperty(exports, "getLodStatus", {
82
81
  return _i3sLod.getLodStatus;
83
82
  }
84
83
  });
85
- var _tileset3d = _interopRequireDefault(require("./tileset/tileset-3d"));
86
- var _tile3d = _interopRequireDefault(require("./tileset/tile-3d"));
87
- var _tilesetTraverser = _interopRequireDefault(require("./tileset/traversers/tileset-traverser"));
88
- var _tilesetCache = _interopRequireDefault(require("./tileset/tileset-cache"));
84
+ var _tileset3d = require("./tileset/tileset-3d");
85
+ var _tile3d = require("./tileset/tile-3d");
86
+ var _tilesetTraverser = require("./tileset/tileset-traverser");
87
+ var _tilesetCache = require("./tileset/tileset-cache");
89
88
  var _boundingVolume = require("./tileset/helpers/bounding-volume");
90
89
  var _transformUtils = require("./tileset/helpers/transform-utils");
91
90
  var _frameState = require("./tileset/helpers/frame-state");
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":[],"sources":["../../src/index.ts"],"sourcesContent":["export type {Tileset3DProps} from './tileset/tileset-3d';\nexport {default as Tileset3D} from './tileset/tileset-3d';\nexport {default as Tile3D} from './tileset/tile-3d';\n\nexport {default as TilesetTraverser} from './tileset/traversers/tileset-traverser';\nexport {default as TilesetCache} from './tileset/tileset-cache';\n\nexport {createBoundingVolume} from './tileset/helpers/bounding-volume';\nexport {calculateTransformProps} from './tileset/helpers/transform-utils';\n\nexport {getFrameState} from './tileset/helpers/frame-state';\nexport {getLodStatus} from './tileset/helpers/i3s-lod';\n\nexport {\n TILE_CONTENT_STATE,\n TILE_REFINEMENT,\n TILE_TYPE,\n TILESET_TYPE,\n LOD_METRIC_TYPE\n} from './constants';\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA;AACA;AAEA;AACA;AAEA;AACA;AAEA;AACA;AAEA"}
1
+ {"version":3,"file":"index.js","names":[],"sources":["../../src/index.ts"],"sourcesContent":["// loaders.gl, MIT license\n\nexport type {Tileset3DProps} from './tileset/tileset-3d';\nexport {Tileset3D} from './tileset/tileset-3d';\nexport {Tile3D} from './tileset/tile-3d';\n\nexport {TilesetTraverser} from './tileset/tileset-traverser';\nexport {TilesetCache} from './tileset/tileset-cache';\n\nexport {createBoundingVolume} from './tileset/helpers/bounding-volume';\nexport {calculateTransformProps} from './tileset/helpers/transform-utils';\n\nexport {getFrameState} from './tileset/helpers/frame-state';\nexport {getLodStatus} from './tileset/helpers/i3s-lod';\n\nexport {\n TILE_CONTENT_STATE,\n TILE_REFINEMENT,\n TILE_TYPE,\n TILESET_TYPE,\n LOD_METRIC_TYPE\n} from './constants';\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAGA;AACA;AAEA;AACA;AAEA;AACA;AAEA;AACA;AAEA"}
@@ -4,7 +4,7 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
4
4
  Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
- exports.default = void 0;
7
+ exports.Tileset3DTraverser = void 0;
8
8
  var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
9
9
  var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
10
10
  var _get2 = _interopRequireDefault(require("@babel/runtime/helpers/get"));
@@ -12,7 +12,7 @@ var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits
12
12
  var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
13
13
  var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
14
14
  var _constants = require("../../constants");
15
- var _tilesetTraverser = _interopRequireDefault(require("./tileset-traverser"));
15
+ var _tilesetTraverser = require("../tileset-traverser");
16
16
  function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; }
17
17
  function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
18
18
  var Tileset3DTraverser = function (_TilesetTraverser) {
@@ -67,6 +67,6 @@ var Tileset3DTraverser = function (_TilesetTraverser) {
67
67
  }
68
68
  }]);
69
69
  return Tileset3DTraverser;
70
- }(_tilesetTraverser.default);
71
- exports.default = Tileset3DTraverser;
70
+ }(_tilesetTraverser.TilesetTraverser);
71
+ exports.Tileset3DTraverser = Tileset3DTraverser;
72
72
  //# sourceMappingURL=tileset-3d-traverser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tileset-3d-traverser.js","names":["Tileset3DTraverser","a","b","_distanceToCamera","_centerZDepth","tile","frameState","isVisibleAndInRequestVolume","hasChildren","children","length","hasTilesetContent","firstChild","updateTileVisibility","_visible","meetsScreenSpaceErrorEarly","replace","refine","TILE_REFINEMENT","REPLACE","useOptimization","_optimChildrenWithinParent","TILE3D_OPTIMIZATION_HINT","USE_OPTIMIZATION","anyChildrenVisible","parent","ADD","shouldRefine","TilesetTraverser"],"sources":["../../../../src/tileset/format-3d-tiles/tileset-3d-traverser.ts"],"sourcesContent":["// loaders.gl, MIT license\n\n// This file is derived from the Cesium code base under Apache 2 license\n// See LICENSE.md and https://github.com/AnalyticalGraphicsInc/cesium/blob/master/LICENSE.md\n\nimport {TILE3D_OPTIMIZATION_HINT, TILE_REFINEMENT} from '../../constants';\nimport {TilesetTraverser} from '../tileset-traverser';\n\nexport class Tileset3DTraverser extends TilesetTraverser {\n compareDistanceToCamera(a, b) {\n // Sort by farthest child first since this is going on a stack\n return b._distanceToCamera === 0 && a._distanceToCamera === 0\n ? b._centerZDepth - a._centerZDepth\n : b._distanceToCamera - a._distanceToCamera;\n }\n\n updateTileVisibility(tile, frameState) {\n super.updateTileVisibility(tile, frameState);\n\n // Optimization - if none of the tile's children are visible then this tile isn't visible\n if (!tile.isVisibleAndInRequestVolume) {\n return;\n }\n\n const hasChildren = tile.children.length > 0;\n if (tile.hasTilesetContent && hasChildren) {\n // Use the root tile's visibility instead of this tile's visibility.\n // The root tile may be culled by the children bounds optimization in which\n // case this tile should also be culled.\n const firstChild = tile.children[0];\n this.updateTileVisibility(firstChild, frameState);\n tile._visible = firstChild._visible;\n return;\n }\n\n if (this.meetsScreenSpaceErrorEarly(tile, frameState)) {\n tile._visible = false;\n return;\n }\n\n const replace = tile.refine === TILE_REFINEMENT.REPLACE;\n const useOptimization =\n tile._optimChildrenWithinParent === TILE3D_OPTIMIZATION_HINT.USE_OPTIMIZATION;\n if (replace && useOptimization && hasChildren) {\n if (!this.anyChildrenVisible(tile, frameState)) {\n tile._visible = false;\n return;\n }\n }\n }\n\n meetsScreenSpaceErrorEarly(tile, frameState) {\n const {parent} = tile;\n if (!parent || parent.hasTilesetContent || parent.refine !== TILE_REFINEMENT.ADD) {\n return false;\n }\n\n // Use parent's geometric error with child's box to see if the tile already meet the SSE\n return !this.shouldRefine(tile, frameState, true);\n }\n}\n"],"mappings":";;;;;;;;;;;;;AAKA;AACA;AAAsD;AAAA;AAAA,IAEzCA,kBAAkB;EAAA;EAAA;EAAA;IAAA;IAAA;EAAA;EAAA;IAAA;IAAA,OAC7B,iCAAwBC,CAAC,EAAEC,CAAC,EAAE;MAE5B,OAAOA,CAAC,CAACC,iBAAiB,KAAK,CAAC,IAAIF,CAAC,CAACE,iBAAiB,KAAK,CAAC,GACzDD,CAAC,CAACE,aAAa,GAAGH,CAAC,CAACG,aAAa,GACjCF,CAAC,CAACC,iBAAiB,GAAGF,CAAC,CAACE,iBAAiB;IAC/C;EAAC;IAAA;IAAA,OAED,8BAAqBE,IAAI,EAAEC,UAAU,EAAE;MACrC,yHAA2BD,IAAI,EAAEC,UAAU;;MAG3C,IAAI,CAACD,IAAI,CAACE,2BAA2B,EAAE;QACrC;MACF;MAEA,IAAMC,WAAW,GAAGH,IAAI,CAACI,QAAQ,CAACC,MAAM,GAAG,CAAC;MAC5C,IAAIL,IAAI,CAACM,iBAAiB,IAAIH,WAAW,EAAE;QAIzC,IAAMI,UAAU,GAAGP,IAAI,CAACI,QAAQ,CAAC,CAAC,CAAC;QACnC,IAAI,CAACI,oBAAoB,CAACD,UAAU,EAAEN,UAAU,CAAC;QACjDD,IAAI,CAACS,QAAQ,GAAGF,UAAU,CAACE,QAAQ;QACnC;MACF;MAEA,IAAI,IAAI,CAACC,0BAA0B,CAACV,IAAI,EAAEC,UAAU,CAAC,EAAE;QACrDD,IAAI,CAACS,QAAQ,GAAG,KAAK;QACrB;MACF;MAEA,IAAME,OAAO,GAAGX,IAAI,CAACY,MAAM,KAAKC,0BAAe,CAACC,OAAO;MACvD,IAAMC,eAAe,GACnBf,IAAI,CAACgB,0BAA0B,KAAKC,mCAAwB,CAACC,gBAAgB;MAC/E,IAAIP,OAAO,IAAII,eAAe,IAAIZ,WAAW,EAAE;QAC7C,IAAI,CAAC,IAAI,CAACgB,kBAAkB,CAACnB,IAAI,EAAEC,UAAU,CAAC,EAAE;UAC9CD,IAAI,CAACS,QAAQ,GAAG,KAAK;UACrB;QACF;MACF;IACF;EAAC;IAAA;IAAA,OAED,oCAA2BT,IAAI,EAAEC,UAAU,EAAE;MAC3C,IAAOmB,MAAM,GAAIpB,IAAI,CAAdoB,MAAM;MACb,IAAI,CAACA,MAAM,IAAIA,MAAM,CAACd,iBAAiB,IAAIc,MAAM,CAACR,MAAM,KAAKC,0BAAe,CAACQ,GAAG,EAAE;QAChF,OAAO,KAAK;MACd;;MAGA,OAAO,CAAC,IAAI,CAACC,YAAY,CAACtB,IAAI,EAAEC,UAAU,EAAE,IAAI,CAAC;IACnD;EAAC;EAAA;AAAA,EAnDqCsB,kCAAgB;AAAA"}
@@ -4,7 +4,7 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
4
4
  Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
- exports.default = void 0;
7
+ exports.I3SPendingTilesRegister = void 0;
8
8
  var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
9
9
  var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
10
10
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
@@ -46,5 +46,5 @@ var I3SPendingTilesRegister = function () {
46
46
  }]);
47
47
  return I3SPendingTilesRegister;
48
48
  }();
49
- exports.default = I3SPendingTilesRegister;
49
+ exports.I3SPendingTilesRegister = I3SPendingTilesRegister;
50
50
  //# sourceMappingURL=i3s-pending-tiles-register.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"i3s-pending-tiles-register.js","names":["I3SPendingTilesRegister","Map","viewportId","frameNumber","viewportMap","frameNumberMap","get","oldCount","set","count"],"sources":["../../../../src/tileset/format-i3s/i3s-pending-tiles-register.ts"],"sourcesContent":["/**\n * Counter to register pending tile headers for the particular frameNumber\n * Until all tiles are loaded we won't call `onTraversalEnd` callback\n */\nexport class I3SPendingTilesRegister {\n private frameNumberMap: Map<string, Map<number, number>> = new Map();\n\n /**\n * Register a new pending tile header for the particular frameNumber\n * @param viewportId\n * @param frameNumber\n */\n register(viewportId: string, frameNumber: number) {\n const viewportMap = this.frameNumberMap.get(viewportId) || new Map();\n const oldCount = viewportMap.get(frameNumber) || 0;\n viewportMap.set(frameNumber, oldCount + 1);\n this.frameNumberMap.set(viewportId, viewportMap);\n }\n\n /**\n * Deregister a pending tile header for the particular frameNumber\n * @param viewportId\n * @param frameNumber\n */\n deregister(viewportId: string, frameNumber: number) {\n const viewportMap = this.frameNumberMap.get(viewportId);\n if (!viewportMap) {\n return;\n }\n const oldCount = viewportMap.get(frameNumber) || 1;\n viewportMap.set(frameNumber, oldCount - 1);\n }\n\n /**\n * Check is there are no pending tile headers registered for the particular frameNumber\n * @param viewportId\n * @param frameNumber\n * @returns\n */\n isZero(viewportId: string, frameNumber: number) {\n const count = this.frameNumberMap.get(viewportId)?.get(frameNumber) || 0;\n return count === 0;\n }\n}\n"],"mappings":";;;;;;;;;;IAIaA,uBAAuB;EAAA;IAAA;IAAA,sDACyB,IAAIC,GAAG,EAAE;EAAA;EAAA;IAAA;IAAA;IAOpE,kBAASC,UAAkB,EAAEC,WAAmB,EAAE;MAChD,IAAMC,WAAW,GAAG,IAAI,CAACC,cAAc,CAACC,GAAG,CAACJ,UAAU,CAAC,IAAI,IAAID,GAAG,EAAE;MACpE,IAAMM,QAAQ,GAAGH,WAAW,CAACE,GAAG,CAACH,WAAW,CAAC,IAAI,CAAC;MAClDC,WAAW,CAACI,GAAG,CAACL,WAAW,EAAEI,QAAQ,GAAG,CAAC,CAAC;MAC1C,IAAI,CAACF,cAAc,CAACG,GAAG,CAACN,UAAU,EAAEE,WAAW,CAAC;IAClD;;EAAC;IAAA;IAAA;IAOD,oBAAWF,UAAkB,EAAEC,WAAmB,EAAE;MAClD,IAAMC,WAAW,GAAG,IAAI,CAACC,cAAc,CAACC,GAAG,CAACJ,UAAU,CAAC;MACvD,IAAI,CAACE,WAAW,EAAE;QAChB;MACF;MACA,IAAMG,QAAQ,GAAGH,WAAW,CAACE,GAAG,CAACH,WAAW,CAAC,IAAI,CAAC;MAClDC,WAAW,CAACI,GAAG,CAACL,WAAW,EAAEI,QAAQ,GAAG,CAAC,CAAC;IAC5C;;EAAC;IAAA;IAAA;IAQD,gBAAOL,UAAkB,EAAEC,WAAmB,EAAE;MAAA;MAC9C,IAAMM,KAAK,GAAG,8BAAI,CAACJ,cAAc,CAACC,GAAG,CAACJ,UAAU,CAAC,0DAAnC,sBAAqCI,GAAG,CAACH,WAAW,CAAC,KAAI,CAAC;MACxE,OAAOM,KAAK,KAAK,CAAC;IACpB;EAAC;EAAA;AAAA;AAAA"}
@@ -4,11 +4,11 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
4
4
  Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
- exports.default = void 0;
7
+ exports.I3STileManager = void 0;
8
8
  var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
9
9
  var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
10
10
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
11
- var _i3sPendingTilesRegister = _interopRequireDefault(require("./i3s-pending-tiles-register"));
11
+ var _i3sPendingTilesRegister = require("./i3s-pending-tiles-register");
12
12
  var STATUS = {
13
13
  REQUESTED: 'REQUESTED',
14
14
  COMPLETED: 'COMPLETED',
@@ -19,7 +19,7 @@ var I3STileManager = function () {
19
19
  function I3STileManager() {
20
20
  (0, _classCallCheck2.default)(this, I3STileManager);
21
21
  (0, _defineProperty2.default)(this, "_statusMap", void 0);
22
- (0, _defineProperty2.default)(this, "pendingTilesRegister", new _i3sPendingTilesRegister.default());
22
+ (0, _defineProperty2.default)(this, "pendingTilesRegister", new _i3sPendingTilesRegister.I3SPendingTilesRegister());
23
23
  this._statusMap = {};
24
24
  }
25
25
 
@@ -90,5 +90,5 @@ var I3STileManager = function () {
90
90
  }]);
91
91
  return I3STileManager;
92
92
  }();
93
- exports.default = I3STileManager;
93
+ exports.I3STileManager = I3STileManager;
94
94
  //# sourceMappingURL=i3s-tile-manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"i3s-tile-manager.js","names":["STATUS","REQUESTED","COMPLETED","ERROR","I3STileManager","I3SPendingTilesRegister","_statusMap","request","key","callback","frameState","frameNumber","id","viewport","status","pendingTilesRegister","register","then","data","actualFrameNumber","deregister","catch","error","newFrameNumber","newViewportId","viewportId","isZero"],"sources":["../../../../src/tileset/format-i3s/i3s-tile-manager.ts"],"sourcesContent":["import {FrameState} from '../helpers/frame-state';\nimport {I3SPendingTilesRegister} from './i3s-pending-tiles-register';\n\nconst STATUS = {\n REQUESTED: 'REQUESTED',\n COMPLETED: 'COMPLETED',\n ERROR: 'ERROR'\n};\n\n// A helper class to manage tile metadata fetching\nexport class I3STileManager {\n private _statusMap: object;\n private pendingTilesRegister = new I3SPendingTilesRegister();\n\n constructor() {\n this._statusMap = {};\n }\n\n /**\n * Add request to map\n * @param request - node metadata request\n * @param key - unique key\n * @param callback - callback after request completed\n * @param frameState - frameState data\n */\n add(request, key, callback, frameState: FrameState) {\n if (!this._statusMap[key]) {\n const {\n frameNumber,\n viewport: {id}\n } = frameState;\n this._statusMap[key] = {request, callback, key, frameState, status: STATUS.REQUESTED};\n // Register pending request for the frameNumber\n this.pendingTilesRegister.register(id, frameNumber);\n request()\n .then((data) => {\n this._statusMap[key].status = STATUS.COMPLETED;\n const {\n frameNumber: actualFrameNumber,\n viewport: {id}\n } = this._statusMap[key].frameState;\n // Deregister pending request for the frameNumber\n this.pendingTilesRegister.deregister(id, actualFrameNumber);\n this._statusMap[key].callback(data, frameState);\n })\n .catch((error) => {\n this._statusMap[key].status = STATUS.ERROR;\n const {\n frameNumber: actualFrameNumber,\n viewport: {id}\n } = this._statusMap[key].frameState;\n // Deregister pending request for the frameNumber\n this.pendingTilesRegister.deregister(id, actualFrameNumber);\n callback(error);\n });\n }\n }\n\n /**\n * Update request if it is still actual for the new frameState\n * @param key - unique key\n * @param frameState - frameState data\n */\n update(key, frameState: FrameState) {\n if (this._statusMap[key]) {\n // Deregister pending request for the old frameNumber\n const {\n frameNumber,\n viewport: {id}\n } = this._statusMap[key].frameState;\n this.pendingTilesRegister.deregister(id, frameNumber);\n\n // Register pending request for the new frameNumber\n const {\n frameNumber: newFrameNumber,\n viewport: {id: newViewportId}\n } = frameState;\n this.pendingTilesRegister.register(newViewportId, newFrameNumber);\n this._statusMap[key].frameState = frameState;\n }\n }\n\n /**\n * Find request in the map\n * @param key - unique key\n * @returns\n */\n find(key) {\n return this._statusMap[key];\n }\n\n /**\n * Check it there are pending tile headers for the particular frameNumber\n * @param viewportId\n * @param frameNumber\n * @returns\n */\n hasPendingTiles(viewportId: string, frameNumber: number): boolean {\n return !this.pendingTilesRegister.isZero(viewportId, frameNumber);\n }\n}\n"],"mappings":"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"}
@@ -4,7 +4,7 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
4
4
  Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
- exports.default = void 0;
7
+ exports.I3STilesetTraverser = void 0;
8
8
  var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
9
9
  var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
10
10
  var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
@@ -15,10 +15,10 @@ var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime
15
15
  var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
16
16
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
17
17
  var _core = require("@loaders.gl/core");
18
- var _tilesetTraverser = _interopRequireDefault(require("./tileset-traverser"));
18
+ var _tilesetTraverser = require("../tileset-traverser");
19
19
  var _i3sLod = require("../helpers/i3s-lod");
20
- var _tile3d = _interopRequireDefault(require("../tile-3d"));
21
- var _i3sTileManager = _interopRequireDefault(require("./i3s-tile-manager"));
20
+ var _tile3d = require("../tile-3d");
21
+ var _i3sTileManager = require("./i3s-tile-manager");
22
22
  function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
23
23
  function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
24
24
  function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
@@ -34,9 +34,10 @@ var I3STilesetTraverser = function (_TilesetTraverser) {
34
34
  (0, _classCallCheck2.default)(this, I3STilesetTraverser);
35
35
  _this = _super.call(this, options);
36
36
  (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "_tileManager", void 0);
37
- _this._tileManager = new _i3sTileManager.default();
37
+ _this._tileManager = new _i3sTileManager.I3STileManager();
38
38
  return _this;
39
39
  }
40
+
40
41
  (0, _createClass2.default)(I3STilesetTraverser, [{
41
42
  key: "traversalFinished",
42
43
  value:
@@ -132,7 +133,7 @@ var I3STilesetTraverser = function (_TilesetTraverser) {
132
133
  key: "_onTileLoad",
133
134
  value:
134
135
  function _onTileLoad(header, tile, extendedId) {
135
- var childTile = new _tile3d.default(tile.tileset, header, tile, extendedId);
136
+ var childTile = new _tile3d.Tile3D(tile.tileset, header, tile, extendedId);
136
137
  tile.children.push(childTile);
137
138
  var frameState = this._tileManager.find(childTile.id).frameState;
138
139
  this.updateTile(childTile, frameState);
@@ -143,6 +144,6 @@ var I3STilesetTraverser = function (_TilesetTraverser) {
143
144
  }
144
145
  }]);
145
146
  return I3STilesetTraverser;
146
- }(_tilesetTraverser.default);
147
- exports.default = I3STilesetTraverser;
147
+ }(_tilesetTraverser.TilesetTraverser);
148
+ exports.I3STilesetTraverser = I3STilesetTraverser;
148
149
  //# sourceMappingURL=i3s-tileset-traverser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"i3s-tileset-traverser.js","names":["I3STilesetTraverser","options","_tileManager","I3STileManager","frameState","hasPendingTiles","viewport","id","_frameNumber","tile","_lodJudge","getLodStatus","children","header","childTiles","tileset","child","extendedId","childTile","find","t","request","_loadTile","cachedRequest","nodePages","nodePagesTile","formTileFromNodePages","add","_onTileLoad","update","updateTile","nodeId","loader","nodeUrl","getTileUrl","url","loadOptions","i3s","isTileHeader","load","Tile3D","push","frameNumber","traversalFinished","Date","getTime","lastUpdate","updateDebounceTime","executeTraversal","TilesetTraverser"],"sources":["../../../../src/tileset/format-i3s/i3s-tileset-traverser.ts"],"sourcesContent":["import {load} from '@loaders.gl/core';\nimport {TilesetTraverser} from '../tileset-traverser';\n\nimport {getLodStatus} from '../helpers/i3s-lod';\nimport {Tile3D} from '../tile-3d';\nimport {I3STileManager} from './i3s-tile-manager';\nimport {FrameState} from '../helpers/frame-state';\n\nexport class I3STilesetTraverser extends TilesetTraverser {\n private _tileManager: I3STileManager;\n\n constructor(options) {\n super(options);\n this._tileManager = new I3STileManager();\n }\n\n /**\n * Check if there are no penging tile header requests,\n * that means the traversal is finished and we can call\n * following-up callbacks.\n */\n traversalFinished(frameState: FrameState): boolean {\n return !this._tileManager.hasPendingTiles(frameState.viewport.id, this._frameNumber || 0);\n }\n\n shouldRefine(tile, frameState: FrameState) {\n tile._lodJudge = getLodStatus(tile, frameState);\n return tile._lodJudge === 'DIG';\n }\n\n updateChildTiles(tile, frameState: FrameState): boolean {\n const children = tile.header.children || [];\n // children which are already fetched and constructed as Tile3D instances\n const childTiles = tile.children;\n const tileset = tile.tileset;\n\n for (const child of children) {\n const extendedId = `${child.id}-${frameState.viewport.id}`;\n // if child tile is not fetched\n const childTile = childTiles && childTiles.find((t) => t.id === extendedId);\n if (!childTile) {\n let request = () => this._loadTile(child.id, tileset);\n const cachedRequest = this._tileManager.find(extendedId);\n if (!cachedRequest) {\n // eslint-disable-next-line max-depth\n if (tileset.tileset.nodePages) {\n request = () => tileset.tileset.nodePagesTile.formTileFromNodePages(child.id);\n }\n this._tileManager.add(\n request,\n extendedId,\n (header) => this._onTileLoad(header, tile, extendedId),\n frameState\n );\n } else {\n // update frameNumber since it is still needed in current frame\n this._tileManager.update(extendedId, frameState);\n }\n } else if (childTile) {\n // if child tile is fetched and available\n this.updateTile(childTile, frameState);\n }\n }\n return false;\n }\n\n async _loadTile(nodeId, tileset) {\n const {loader} = tileset;\n const nodeUrl = tileset.getTileUrl(`${tileset.url}/nodes/${nodeId}`);\n // load metadata\n const options = {\n ...tileset.loadOptions,\n i3s: {\n ...tileset.loadOptions.i3s,\n isTileHeader: true\n }\n };\n\n return await load(nodeUrl, loader, options);\n }\n\n /**\n * The callback to init Tile3D instance after loading the tile JSON\n * @param {Object} header - the tile JSON from a dataset\n * @param {Tile3D} tile - the parent Tile3D instance\n * @param {string} extendedId - optional ID to separate copies of a tile for different viewports.\n * const extendedId = `${tile.id}-${frameState.viewport.id}`;\n * @return {void}\n */\n _onTileLoad(header, tile, extendedId) {\n // after child tile is fetched\n const childTile = new Tile3D(tile.tileset, header, tile, extendedId);\n tile.children.push(childTile);\n const frameState = this._tileManager.find(childTile.id).frameState;\n this.updateTile(childTile, frameState);\n\n // after tile fetched, resume traversal if still in current update/traversal frame\n if (\n this._frameNumber === frameState.frameNumber &&\n (this.traversalFinished(frameState) ||\n new Date().getTime() - this.lastUpdate > this.updateDebounceTime)\n ) {\n this.executeTraversal(childTile, frameState);\n }\n }\n}\n"],"mappings":"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"}
@@ -9,6 +9,7 @@ exports.getProjectedRadius = getProjectedRadius;
9
9
  var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
10
10
  var _core = require("@math.gl/core");
11
11
  var _geospatial = require("@math.gl/geospatial");
12
+
12
13
  var cameraPositionCartesian = new _core.Vector3();
13
14
  var toEye = new _core.Vector3();
14
15
  var cameraPositionEnu = new _core.Vector3();
@@ -1 +1 @@
1
- {"version":3,"file":"i3s-lod.js","names":["cameraPositionCartesian","Vector3","toEye","cameraPositionEnu","extraVertexEnu","projectedOriginVector","enuToCartesianMatrix","Matrix4","cartesianToEnuMatrix","getLodStatus","tile","frameState","lodMetricValue","isNaN","screenSize","getProjectedRadius","header","children","viewport","topDownViewport","mbsLat","mbs","mbsLon","mbsZ","mbsR","mbsCenterCartesian","boundingVolume","center","cameraPositionCartographic","unprojectPosition","cameraPosition","Ellipsoid","WGS84","cartographicToCartesian","copy","subtract","normalize","eastNorthUpToFixedFrame","invert","transform","projection","Math","sqrt","extraZ","extraVertexCartesian","extraVectorCartesian","radiusVector","cross","scale","sphereMbsBorderVertexCartesian","add","sphereMbsBorderVertexCartographic","cartesianToCartographic","projectedOrigin","project","projectedMbsBorderVertex","projectedRadius","magnitude"],"sources":["../../../../src/tileset/helpers/i3s-lod.ts"],"sourcesContent":["import {Matrix4, Vector3} from '@math.gl/core';\nimport {Ellipsoid} from '@math.gl/geospatial';\nimport Tile3D from '../tile-3d';\nimport {FrameState} from './frame-state';\n\nconst cameraPositionCartesian = new Vector3();\nconst toEye = new Vector3();\nconst cameraPositionEnu = new Vector3();\nconst extraVertexEnu = new Vector3();\nconst projectedOriginVector = new Vector3();\nconst enuToCartesianMatrix = new Matrix4();\nconst cartesianToEnuMatrix = new Matrix4();\n\n/**\n * For the maxScreenThreshold error metric, maxError means that you should replace the node with it's children\n as soon as the nodes bounding sphere has a screen radius larger than maxError pixels.\n In this sense a value of 0 means you should always load it's children,\n or if it's a leaf node, you should always display it.\n * @param tile \n * @param frameState \n * @returns \n */\nexport function getLodStatus(tile: Tile3D, frameState: FrameState): 'DIG' | 'OUT' | 'DRAW' {\n if (tile.lodMetricValue === 0 || isNaN(tile.lodMetricValue)) {\n return 'DIG';\n }\n const screenSize = 2 * getProjectedRadius(tile, frameState);\n if (screenSize < 2) {\n return 'OUT';\n }\n if (!tile.header.children || screenSize <= tile.lodMetricValue) {\n return 'DRAW';\n } else if (tile.header.children) {\n return 'DIG';\n }\n return 'OUT';\n}\n\n/**\n * Calculate size of MBS radius projected on the screen plane\n * @param tile\n * @param frameState\n * @returns\n */\n// eslint-disable-next-line max-statements\nexport function getProjectedRadius(tile: Tile3D, frameState: FrameState): number {\n const {topDownViewport: viewport} = frameState;\n const mbsLat = tile.header.mbs[1];\n const mbsLon = tile.header.mbs[0];\n const mbsZ = tile.header.mbs[2];\n const mbsR = tile.header.mbs[3];\n const mbsCenterCartesian = [...tile.boundingVolume.center];\n const cameraPositionCartographic = viewport.unprojectPosition(viewport.cameraPosition);\n Ellipsoid.WGS84.cartographicToCartesian(cameraPositionCartographic, cameraPositionCartesian);\n\n // ---------------------------\n // Calculate mbs border vertex\n // ---------------------------\n toEye.copy(cameraPositionCartesian).subtract(mbsCenterCartesian).normalize();\n // Add extra vector to form plane\n Ellipsoid.WGS84.eastNorthUpToFixedFrame(mbsCenterCartesian, enuToCartesianMatrix);\n cartesianToEnuMatrix.copy(enuToCartesianMatrix).invert();\n cameraPositionEnu.copy(cameraPositionCartesian).transform(cartesianToEnuMatrix);\n // Mean Proportionals in Right Triangles - Altitude rule\n // https://mathbitsnotebook.com/Geometry/RightTriangles/RTmeanRight.html\n const projection = Math.sqrt(\n cameraPositionEnu[0] * cameraPositionEnu[0] + cameraPositionEnu[1] * cameraPositionEnu[1]\n );\n const extraZ = (projection * projection) / cameraPositionEnu[2];\n extraVertexEnu.copy([cameraPositionEnu[0], cameraPositionEnu[1], extraZ]);\n const extraVertexCartesian = extraVertexEnu.transform(enuToCartesianMatrix);\n const extraVectorCartesian = extraVertexCartesian.subtract(mbsCenterCartesian).normalize();\n // We need radius vector orthogonal to toEye vector\n const radiusVector = toEye.cross(extraVectorCartesian).normalize().scale(mbsR);\n const sphereMbsBorderVertexCartesian = radiusVector.add(mbsCenterCartesian);\n const sphereMbsBorderVertexCartographic = Ellipsoid.WGS84.cartesianToCartographic(\n sphereMbsBorderVertexCartesian\n );\n // ---------------------------\n\n // Project center vertex and border vertex and calculate projected radius of MBS\n const projectedOrigin = viewport.project([mbsLon, mbsLat, mbsZ]);\n const projectedMbsBorderVertex = viewport.project(\n sphereMbsBorderVertexCartographic as [number, number, number]\n );\n const projectedRadius = projectedOriginVector\n .copy(projectedOrigin)\n .subtract(projectedMbsBorderVertex)\n .magnitude();\n return projectedRadius;\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"i3s-lod.js","names":["cameraPositionCartesian","Vector3","toEye","cameraPositionEnu","extraVertexEnu","projectedOriginVector","enuToCartesianMatrix","Matrix4","cartesianToEnuMatrix","getLodStatus","tile","frameState","lodMetricValue","isNaN","screenSize","getProjectedRadius","header","children","viewport","topDownViewport","mbsLat","mbs","mbsLon","mbsZ","mbsR","mbsCenterCartesian","boundingVolume","center","cameraPositionCartographic","unprojectPosition","cameraPosition","Ellipsoid","WGS84","cartographicToCartesian","copy","subtract","normalize","eastNorthUpToFixedFrame","invert","transform","projection","Math","sqrt","extraZ","extraVertexCartesian","extraVectorCartesian","radiusVector","cross","scale","sphereMbsBorderVertexCartesian","add","sphereMbsBorderVertexCartographic","cartesianToCartographic","projectedOrigin","project","projectedMbsBorderVertex","projectedRadius","magnitude"],"sources":["../../../../src/tileset/helpers/i3s-lod.ts"],"sourcesContent":["// loaders.gl, MIT license\n\nimport {Matrix4, Vector3} from '@math.gl/core';\nimport {Ellipsoid} from '@math.gl/geospatial';\nimport {Tile3D} from '../tile-3d';\nimport {FrameState} from './frame-state';\n\nconst cameraPositionCartesian = new Vector3();\nconst toEye = new Vector3();\nconst cameraPositionEnu = new Vector3();\nconst extraVertexEnu = new Vector3();\nconst projectedOriginVector = new Vector3();\nconst enuToCartesianMatrix = new Matrix4();\nconst cartesianToEnuMatrix = new Matrix4();\n\n/**\n * For the maxScreenThreshold error metric, maxError means that you should replace the node with it's children\n as soon as the nodes bounding sphere has a screen radius larger than maxError pixels.\n In this sense a value of 0 means you should always load it's children,\n or if it's a leaf node, you should always display it.\n * @param tile \n * @param frameState \n * @returns \n */\nexport function getLodStatus(tile: Tile3D, frameState: FrameState): 'DIG' | 'OUT' | 'DRAW' {\n if (tile.lodMetricValue === 0 || isNaN(tile.lodMetricValue)) {\n return 'DIG';\n }\n const screenSize = 2 * getProjectedRadius(tile, frameState);\n if (screenSize < 2) {\n return 'OUT';\n }\n if (!tile.header.children || screenSize <= tile.lodMetricValue) {\n return 'DRAW';\n } else if (tile.header.children) {\n return 'DIG';\n }\n return 'OUT';\n}\n\n/**\n * Calculate size of MBS radius projected on the screen plane\n * @param tile\n * @param frameState\n * @returns\n */\n// eslint-disable-next-line max-statements\nexport function getProjectedRadius(tile: Tile3D, frameState: FrameState): number {\n const {topDownViewport: viewport} = frameState;\n const mbsLat = tile.header.mbs[1];\n const mbsLon = tile.header.mbs[0];\n const mbsZ = tile.header.mbs[2];\n const mbsR = tile.header.mbs[3];\n const mbsCenterCartesian = [...tile.boundingVolume.center];\n const cameraPositionCartographic = viewport.unprojectPosition(viewport.cameraPosition);\n Ellipsoid.WGS84.cartographicToCartesian(cameraPositionCartographic, cameraPositionCartesian);\n\n // ---------------------------\n // Calculate mbs border vertex\n // ---------------------------\n toEye.copy(cameraPositionCartesian).subtract(mbsCenterCartesian).normalize();\n // Add extra vector to form plane\n Ellipsoid.WGS84.eastNorthUpToFixedFrame(mbsCenterCartesian, enuToCartesianMatrix);\n cartesianToEnuMatrix.copy(enuToCartesianMatrix).invert();\n cameraPositionEnu.copy(cameraPositionCartesian).transform(cartesianToEnuMatrix);\n // Mean Proportionals in Right Triangles - Altitude rule\n // https://mathbitsnotebook.com/Geometry/RightTriangles/RTmeanRight.html\n const projection = Math.sqrt(\n cameraPositionEnu[0] * cameraPositionEnu[0] + cameraPositionEnu[1] * cameraPositionEnu[1]\n );\n const extraZ = (projection * projection) / cameraPositionEnu[2];\n extraVertexEnu.copy([cameraPositionEnu[0], cameraPositionEnu[1], extraZ]);\n const extraVertexCartesian = extraVertexEnu.transform(enuToCartesianMatrix);\n const extraVectorCartesian = extraVertexCartesian.subtract(mbsCenterCartesian).normalize();\n // We need radius vector orthogonal to toEye vector\n const radiusVector = toEye.cross(extraVectorCartesian).normalize().scale(mbsR);\n const sphereMbsBorderVertexCartesian = radiusVector.add(mbsCenterCartesian);\n const sphereMbsBorderVertexCartographic = Ellipsoid.WGS84.cartesianToCartographic(\n sphereMbsBorderVertexCartesian\n );\n // ---------------------------\n\n // Project center vertex and border vertex and calculate projected radius of MBS\n const projectedOrigin = viewport.project([mbsLon, mbsLat, mbsZ]);\n const projectedMbsBorderVertex = viewport.project(\n sphereMbsBorderVertexCartographic as [number, number, number]\n );\n const projectedRadius = projectedOriginVector\n .copy(projectedOrigin)\n .subtract(projectedMbsBorderVertex)\n .magnitude();\n return projectedRadius;\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"tiles-3d-lod.js","names":["scratchPositionNormal","Vector3","scratchCartographic","scratchMatrix","Matrix4","scratchCenter","scratchPosition","scratchDirection","calculateDynamicScreenSpaceError","root","camera","mapProjection","options","dynamicScreenSpaceErrorHeightFalloff","dynamicScreenSpaceErrorDensity","up","direction","height","minimumHeight","maximumHeight","tileBoundingVolume","contentBoundingVolume","TileBoundingRegion","Cartesian3","normalize","positionWC","directionWC","positionCartographic","transformLocal","inverseTransformation","computedTransform","ellipsoid","boundingVolume","centerLocal","multiplyByPoint","center","magnitude","minimumRadius","centerCartographic","Cartographic","fromCartesian","positionLocal","UNIT_Z","multiplyByPointAsVector","z","TileOrientedBoundingBox","boxHeight","_header","box","TileBoundingSphere","radius","heightFalloff","heightClose","heightFar","t","clamp","dot","Math","abs","horizonFactor","fog","distanceToCamera","density","scalar","exp","getDynamicScreenSpaceError","tileset","dynamicScreenSpaceError","dynamicScreenSpaceErrorComputedDensity","factor","dynamicScreenSpaceErrorFactor","dynamicError","getTiles3DScreenSpaceError","tile","frameState","useParentLodMetric","parentLodMetricValue","parent","lodMetricValue","distance","max","_distanceToCamera","sseDenominator","viewDistanceScale","error"],"sources":["../../../../src/tileset/helpers/tiles-3d-lod.ts"],"sourcesContent":["// This file is derived from the Cesium code base under Apache 2 license\n// See LICENSE.md and https://github.com/AnalyticalGraphicsInc/cesium/blob/master/LICENSE.md\n\n// TODO - Dynamic screen space error provides an optimization when looking at\n// tilesets from above\n\n/* eslint-disable */\n// @ts-nocheck\nimport {Matrix4, Vector3, clamp} from '@math.gl/core';\n\nconst scratchPositionNormal = new Vector3();\nconst scratchCartographic = new Vector3();\nconst scratchMatrix = new Matrix4();\nconst scratchCenter = new Vector3();\nconst scratchPosition = new Vector3();\nconst scratchDirection = new Vector3();\n\n// eslint-disable-next-line max-statements, complexity\nexport function calculateDynamicScreenSpaceError(root, {camera, mapProjection}, options = {}) {\n const {dynamicScreenSpaceErrorHeightFalloff = 0.25, dynamicScreenSpaceErrorDensity = 0.00278} =\n options;\n\n let up;\n let direction;\n let height;\n let minimumHeight;\n let maximumHeight;\n\n const tileBoundingVolume = root.contentBoundingVolume;\n\n if (tileBoundingVolume instanceof TileBoundingRegion) {\n up = Cartesian3.normalize(camera.positionWC, scratchPositionNormal);\n direction = camera.directionWC;\n height = camera.positionCartographic.height;\n minimumHeight = tileBoundingVolume.minimumHeight;\n maximumHeight = tileBoundingVolume.maximumHeight;\n } else {\n // Transform camera position and direction into the local coordinate system of the tileset\n const transformLocal = Matrix4.inverseTransformation(root.computedTransform, scratchMatrix);\n const ellipsoid = mapProjection.ellipsoid;\n const boundingVolume = tileBoundingVolume.boundingVolume;\n const centerLocal = Matrix4.multiplyByPoint(\n transformLocal,\n boundingVolume.center,\n scratchCenter\n );\n if (Cartesian3.magnitude(centerLocal) > ellipsoid.minimumRadius) {\n // The tileset is defined in WGS84. Approximate the minimum and maximum height.\n const centerCartographic = Cartographic.fromCartesian(\n centerLocal,\n ellipsoid,\n scratchCartographic\n );\n up = Cartesian3.normalize(camera.positionWC, scratchPositionNormal);\n direction = camera.directionWC;\n height = camera.positionCartographic.height;\n minimumHeight = 0.0;\n maximumHeight = centerCartographic.height * 2.0;\n } else {\n // The tileset is defined in local coordinates (z-up)\n const positionLocal = Matrix4.multiplyByPoint(\n transformLocal,\n camera.positionWC,\n scratchPosition\n );\n up = Cartesian3.UNIT_Z;\n direction = Matrix4.multiplyByPointAsVector(\n transformLocal,\n camera.directionWC,\n scratchDirection\n );\n direction = Cartesian3.normalize(direction, direction);\n height = positionLocal.z;\n if (tileBoundingVolume instanceof TileOrientedBoundingBox) {\n // Assuming z-up, the last component stores the half-height of the box\n const boxHeight = root._header.boundingVolume.box[11];\n minimumHeight = centerLocal.z - boxHeight;\n maximumHeight = centerLocal.z + boxHeight;\n } else if (tileBoundingVolume instanceof TileBoundingSphere) {\n const radius = boundingVolume.radius;\n minimumHeight = centerLocal.z - radius;\n maximumHeight = centerLocal.z + radius;\n }\n }\n }\n\n // The range where the density starts to lessen. Start at the quarter height of the tileset.\n const heightFalloff = dynamicScreenSpaceErrorHeightFalloff;\n const heightClose = minimumHeight + (maximumHeight - minimumHeight) * heightFalloff;\n const heightFar = maximumHeight;\n\n const t = clamp((height - heightClose) / (heightFar - heightClose), 0.0, 1.0);\n\n // Increase density as the camera tilts towards the horizon\n const dot = Math.abs(Cartesian3.dot(direction, up));\n\n let horizonFactor = 1.0 - dot;\n\n // Weaken the horizon factor as the camera height increases, implying the camera is further away from the tileset.\n // The goal is to increase density for the \"street view\", not when viewing the tileset from a distance.\n horizonFactor = horizonFactor * (1.0 - t);\n\n return dynamicScreenSpaceErrorDensity * horizonFactor;\n}\n\nexport function fog(distanceToCamera, density) {\n const scalar = distanceToCamera * density;\n return 1.0 - Math.exp(-(scalar * scalar));\n}\n\nexport function getDynamicScreenSpaceError(tileset, distanceToCamera) {\n if (tileset.dynamicScreenSpaceError && tileset.dynamicScreenSpaceErrorComputedDensity) {\n const density = tileset.dynamicScreenSpaceErrorComputedDensity;\n const factor = tileset.dynamicScreenSpaceErrorFactor;\n // TODO: Refined screen space error that minimizes tiles in non-first-person\n const dynamicError = fog(distanceToCamera, density) * factor;\n return dynamicError;\n }\n\n return 0;\n}\n\nexport function getTiles3DScreenSpaceError(tile, frameState, useParentLodMetric) {\n const tileset = tile.tileset;\n const parentLodMetricValue = (tile.parent && tile.parent.lodMetricValue) || tile.lodMetricValue;\n const lodMetricValue = useParentLodMetric ? parentLodMetricValue : tile.lodMetricValue;\n\n // Leaf tiles do not have any error so save the computation\n if (lodMetricValue === 0.0) {\n return 0.0;\n }\n\n // TODO: Orthographic Frustum needs special treatment?\n // this._getOrthograhicScreenSpaceError();\n\n // Avoid divide by zero when viewer is inside the tile\n const distance = Math.max(tile._distanceToCamera, 1e-7);\n const {height, sseDenominator} = frameState;\n const {viewDistanceScale} = tileset.options;\n let error = (lodMetricValue * height * (viewDistanceScale || 1.0)) / (distance * sseDenominator);\n\n error -= getDynamicScreenSpaceError(tileset, distance);\n\n return error;\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"tiles-3d-lod.js","names":["scratchPositionNormal","Vector3","scratchCartographic","scratchMatrix","Matrix4","scratchCenter","scratchPosition","scratchDirection","calculateDynamicScreenSpaceError","root","camera","mapProjection","options","dynamicScreenSpaceErrorHeightFalloff","dynamicScreenSpaceErrorDensity","up","direction","height","minimumHeight","maximumHeight","tileBoundingVolume","contentBoundingVolume","TileBoundingRegion","Cartesian3","normalize","positionWC","directionWC","positionCartographic","transformLocal","inverseTransformation","computedTransform","ellipsoid","boundingVolume","centerLocal","multiplyByPoint","center","magnitude","minimumRadius","centerCartographic","Cartographic","fromCartesian","positionLocal","UNIT_Z","multiplyByPointAsVector","z","TileOrientedBoundingBox","boxHeight","_header","box","TileBoundingSphere","radius","heightFalloff","heightClose","heightFar","t","clamp","dot","Math","abs","horizonFactor","fog","distanceToCamera","density","scalar","exp","getDynamicScreenSpaceError","tileset","dynamicScreenSpaceError","dynamicScreenSpaceErrorComputedDensity","factor","dynamicScreenSpaceErrorFactor","dynamicError","getTiles3DScreenSpaceError","tile","frameState","useParentLodMetric","parentLodMetricValue","parent","lodMetricValue","distance","max","_distanceToCamera","sseDenominator","viewDistanceScale","error"],"sources":["../../../../src/tileset/helpers/tiles-3d-lod.ts"],"sourcesContent":["// loaders.gl, MIT license\n\n// This file is derived from the Cesium code base under Apache 2 license\n// See LICENSE.md and https://github.com/AnalyticalGraphicsInc/cesium/blob/master/LICENSE.md\n\n// TODO - Dynamic screen space error provides an optimization when looking at\n// tilesets from above\n\n/* eslint-disable */\n// @ts-nocheck\nimport {Matrix4, Vector3, clamp} from '@math.gl/core';\n\nconst scratchPositionNormal = new Vector3();\nconst scratchCartographic = new Vector3();\nconst scratchMatrix = new Matrix4();\nconst scratchCenter = new Vector3();\nconst scratchPosition = new Vector3();\nconst scratchDirection = new Vector3();\n\n// eslint-disable-next-line max-statements, complexity\nexport function calculateDynamicScreenSpaceError(root, {camera, mapProjection}, options = {}) {\n const {dynamicScreenSpaceErrorHeightFalloff = 0.25, dynamicScreenSpaceErrorDensity = 0.00278} =\n options;\n\n let up;\n let direction;\n let height;\n let minimumHeight;\n let maximumHeight;\n\n const tileBoundingVolume = root.contentBoundingVolume;\n\n if (tileBoundingVolume instanceof TileBoundingRegion) {\n up = Cartesian3.normalize(camera.positionWC, scratchPositionNormal);\n direction = camera.directionWC;\n height = camera.positionCartographic.height;\n minimumHeight = tileBoundingVolume.minimumHeight;\n maximumHeight = tileBoundingVolume.maximumHeight;\n } else {\n // Transform camera position and direction into the local coordinate system of the tileset\n const transformLocal = Matrix4.inverseTransformation(root.computedTransform, scratchMatrix);\n const ellipsoid = mapProjection.ellipsoid;\n const boundingVolume = tileBoundingVolume.boundingVolume;\n const centerLocal = Matrix4.multiplyByPoint(\n transformLocal,\n boundingVolume.center,\n scratchCenter\n );\n if (Cartesian3.magnitude(centerLocal) > ellipsoid.minimumRadius) {\n // The tileset is defined in WGS84. Approximate the minimum and maximum height.\n const centerCartographic = Cartographic.fromCartesian(\n centerLocal,\n ellipsoid,\n scratchCartographic\n );\n up = Cartesian3.normalize(camera.positionWC, scratchPositionNormal);\n direction = camera.directionWC;\n height = camera.positionCartographic.height;\n minimumHeight = 0.0;\n maximumHeight = centerCartographic.height * 2.0;\n } else {\n // The tileset is defined in local coordinates (z-up)\n const positionLocal = Matrix4.multiplyByPoint(\n transformLocal,\n camera.positionWC,\n scratchPosition\n );\n up = Cartesian3.UNIT_Z;\n direction = Matrix4.multiplyByPointAsVector(\n transformLocal,\n camera.directionWC,\n scratchDirection\n );\n direction = Cartesian3.normalize(direction, direction);\n height = positionLocal.z;\n if (tileBoundingVolume instanceof TileOrientedBoundingBox) {\n // Assuming z-up, the last component stores the half-height of the box\n const boxHeight = root._header.boundingVolume.box[11];\n minimumHeight = centerLocal.z - boxHeight;\n maximumHeight = centerLocal.z + boxHeight;\n } else if (tileBoundingVolume instanceof TileBoundingSphere) {\n const radius = boundingVolume.radius;\n minimumHeight = centerLocal.z - radius;\n maximumHeight = centerLocal.z + radius;\n }\n }\n }\n\n // The range where the density starts to lessen. Start at the quarter height of the tileset.\n const heightFalloff = dynamicScreenSpaceErrorHeightFalloff;\n const heightClose = minimumHeight + (maximumHeight - minimumHeight) * heightFalloff;\n const heightFar = maximumHeight;\n\n const t = clamp((height - heightClose) / (heightFar - heightClose), 0.0, 1.0);\n\n // Increase density as the camera tilts towards the horizon\n const dot = Math.abs(Cartesian3.dot(direction, up));\n\n let horizonFactor = 1.0 - dot;\n\n // Weaken the horizon factor as the camera height increases, implying the camera is further away from the tileset.\n // The goal is to increase density for the \"street view\", not when viewing the tileset from a distance.\n horizonFactor = horizonFactor * (1.0 - t);\n\n return dynamicScreenSpaceErrorDensity * horizonFactor;\n}\n\nexport function fog(distanceToCamera, density) {\n const scalar = distanceToCamera * density;\n return 1.0 - Math.exp(-(scalar * scalar));\n}\n\nexport function getDynamicScreenSpaceError(tileset, distanceToCamera) {\n if (tileset.dynamicScreenSpaceError && tileset.dynamicScreenSpaceErrorComputedDensity) {\n const density = tileset.dynamicScreenSpaceErrorComputedDensity;\n const factor = tileset.dynamicScreenSpaceErrorFactor;\n // TODO: Refined screen space error that minimizes tiles in non-first-person\n const dynamicError = fog(distanceToCamera, density) * factor;\n return dynamicError;\n }\n\n return 0;\n}\n\nexport function getTiles3DScreenSpaceError(tile, frameState, useParentLodMetric) {\n const tileset = tile.tileset;\n const parentLodMetricValue = (tile.parent && tile.parent.lodMetricValue) || tile.lodMetricValue;\n const lodMetricValue = useParentLodMetric ? parentLodMetricValue : tile.lodMetricValue;\n\n // Leaf tiles do not have any error so save the computation\n if (lodMetricValue === 0.0) {\n return 0.0;\n }\n\n // TODO: Orthographic Frustum needs special treatment?\n // this._getOrthograhicScreenSpaceError();\n\n // Avoid divide by zero when viewer is inside the tile\n const distance = Math.max(tile._distanceToCamera, 1e-7);\n const {height, sseDenominator} = frameState;\n const {viewDistanceScale} = tileset.options;\n let error = (lodMetricValue * height * (viewDistanceScale || 1.0)) / (distance * sseDenominator);\n\n error -= getDynamicScreenSpaceError(tileset, distance);\n\n return error;\n}\n"],"mappings":"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"}
@@ -7,6 +7,7 @@ exports.calculateTransformProps = calculateTransformProps;
7
7
  var _geospatial = require("@math.gl/geospatial");
8
8
  var _core = require("@math.gl/core");
9
9
  var _loaderUtils = require("@loaders.gl/loader-utils");
10
+
10
11
  function calculateTransformProps(tileHeader, tile) {
11
12
  (0, _loaderUtils.assert)(tileHeader);
12
13
  (0, _loaderUtils.assert)(tile);
@@ -1 +1 @@
1
- {"version":3,"file":"transform-utils.js","names":["calculateTransformProps","tileHeader","tile","assert","rtcCenter","gltfUpAxis","computedTransform","center","boundingVolume","modelMatrix","Matrix4","translate","rotationY","rotateX","Math","PI","multiplyRight","rotationX","rotateY","isQuantized","quantizedVolumeOffset","scale","quantizedVolumeScale","cartesianOrigin","Vector3","cartesianModelMatrix","cartographicOrigin","Ellipsoid","WGS84","cartesianToCartographic","fromFixedFrameMatrix","eastNorthUpToFixedFrame","toFixedFrameMatrix","invert","cartographicModelMatrix","coordinateSystem"],"sources":["../../../../src/tileset/helpers/transform-utils.ts"],"sourcesContent":["import {Ellipsoid} from '@math.gl/geospatial';\nimport {Matrix4, Vector3} from '@math.gl/core';\nimport {assert} from '@loaders.gl/loader-utils';\n\nexport function calculateTransformProps(tileHeader, tile) {\n assert(tileHeader);\n assert(tile);\n\n const {rtcCenter, gltfUpAxis} = tile;\n const {\n computedTransform,\n boundingVolume: {center}\n } = tileHeader;\n\n let modelMatrix = new Matrix4(computedTransform);\n\n // Translate if appropriate\n if (rtcCenter) {\n modelMatrix.translate(rtcCenter);\n }\n\n // glTF models need to be rotated from Y to Z up\n // https://github.com/AnalyticalGraphicsInc/3d-tiles/tree/master/specification#y-up-to-z-up\n switch (gltfUpAxis) {\n case 'Z':\n break;\n case 'Y':\n const rotationY = new Matrix4().rotateX(Math.PI / 2);\n modelMatrix = modelMatrix.multiplyRight(rotationY);\n break;\n case 'X':\n const rotationX = new Matrix4().rotateY(-Math.PI / 2);\n modelMatrix = modelMatrix.multiplyRight(rotationX);\n break;\n default:\n break;\n }\n\n // Scale/offset positions if normalized integers\n if (tile.isQuantized) {\n modelMatrix.translate(tile.quantizedVolumeOffset).scale(tile.quantizedVolumeScale);\n }\n\n // Option 1: Cartesian matrix and origin\n const cartesianOrigin = new Vector3(center);\n\n tile.cartesianModelMatrix = modelMatrix;\n tile.cartesianOrigin = cartesianOrigin;\n\n // Option 2: Cartographic matrix and origin\n const cartographicOrigin = Ellipsoid.WGS84.cartesianToCartographic(\n cartesianOrigin,\n new Vector3()\n );\n const fromFixedFrameMatrix = Ellipsoid.WGS84.eastNorthUpToFixedFrame(cartesianOrigin);\n const toFixedFrameMatrix = fromFixedFrameMatrix.invert();\n\n tile.cartographicModelMatrix = toFixedFrameMatrix.multiplyRight(modelMatrix);\n tile.cartographicOrigin = cartographicOrigin;\n\n // Deprecated, drop\n if (!tile.coordinateSystem) {\n tile.modelMatrix = tile.cartographicModelMatrix;\n }\n}\n"],"mappings":";;;;;;AAAA;AACA;AACA;AAEO,SAASA,uBAAuB,CAACC,UAAU,EAAEC,IAAI,EAAE;EACxD,IAAAC,mBAAM,EAACF,UAAU,CAAC;EAClB,IAAAE,mBAAM,EAACD,IAAI,CAAC;EAEZ,IAAOE,SAAS,GAAgBF,IAAI,CAA7BE,SAAS;IAAEC,UAAU,GAAIH,IAAI,CAAlBG,UAAU;EAC5B,IACEC,iBAAiB,GAEfL,UAAU,CAFZK,iBAAiB;IACAC,MAAM,GACrBN,UAAU,CADZO,cAAc,CAAGD,MAAM;EAGzB,IAAIE,WAAW,GAAG,IAAIC,aAAO,CAACJ,iBAAiB,CAAC;;EAGhD,IAAIF,SAAS,EAAE;IACbK,WAAW,CAACE,SAAS,CAACP,SAAS,CAAC;EAClC;;EAIA,QAAQC,UAAU;IAChB,KAAK,GAAG;MACN;IACF,KAAK,GAAG;MACN,IAAMO,SAAS,GAAG,IAAIF,aAAO,EAAE,CAACG,OAAO,CAACC,IAAI,CAACC,EAAE,GAAG,CAAC,CAAC;MACpDN,WAAW,GAAGA,WAAW,CAACO,aAAa,CAACJ,SAAS,CAAC;MAClD;IACF,KAAK,GAAG;MACN,IAAMK,SAAS,GAAG,IAAIP,aAAO,EAAE,CAACQ,OAAO,CAAC,CAACJ,IAAI,CAACC,EAAE,GAAG,CAAC,CAAC;MACrDN,WAAW,GAAGA,WAAW,CAACO,aAAa,CAACC,SAAS,CAAC;MAClD;IACF;MACE;EAAM;;EAIV,IAAIf,IAAI,CAACiB,WAAW,EAAE;IACpBV,WAAW,CAACE,SAAS,CAACT,IAAI,CAACkB,qBAAqB,CAAC,CAACC,KAAK,CAACnB,IAAI,CAACoB,oBAAoB,CAAC;EACpF;;EAGA,IAAMC,eAAe,GAAG,IAAIC,aAAO,CAACjB,MAAM,CAAC;EAE3CL,IAAI,CAACuB,oBAAoB,GAAGhB,WAAW;EACvCP,IAAI,CAACqB,eAAe,GAAGA,eAAe;;EAGtC,IAAMG,kBAAkB,GAAGC,qBAAS,CAACC,KAAK,CAACC,uBAAuB,CAChEN,eAAe,EACf,IAAIC,aAAO,EAAE,CACd;EACD,IAAMM,oBAAoB,GAAGH,qBAAS,CAACC,KAAK,CAACG,uBAAuB,CAACR,eAAe,CAAC;EACrF,IAAMS,kBAAkB,GAAGF,oBAAoB,CAACG,MAAM,EAAE;EAExD/B,IAAI,CAACgC,uBAAuB,GAAGF,kBAAkB,CAAChB,aAAa,CAACP,WAAW,CAAC;EAC5EP,IAAI,CAACwB,kBAAkB,GAAGA,kBAAkB;;EAG5C,IAAI,CAACxB,IAAI,CAACiC,gBAAgB,EAAE;IAC1BjC,IAAI,CAACO,WAAW,GAAGP,IAAI,CAACgC,uBAAuB;EACjD;AACF"}
1
+ {"version":3,"file":"transform-utils.js","names":["calculateTransformProps","tileHeader","tile","assert","rtcCenter","gltfUpAxis","computedTransform","center","boundingVolume","modelMatrix","Matrix4","translate","rotationY","rotateX","Math","PI","multiplyRight","rotationX","rotateY","isQuantized","quantizedVolumeOffset","scale","quantizedVolumeScale","cartesianOrigin","Vector3","cartesianModelMatrix","cartographicOrigin","Ellipsoid","WGS84","cartesianToCartographic","fromFixedFrameMatrix","eastNorthUpToFixedFrame","toFixedFrameMatrix","invert","cartographicModelMatrix","coordinateSystem"],"sources":["../../../../src/tileset/helpers/transform-utils.ts"],"sourcesContent":["// loaders.gl, MIT license\n\nimport {Ellipsoid} from '@math.gl/geospatial';\nimport {Matrix4, Vector3} from '@math.gl/core';\nimport {assert} from '@loaders.gl/loader-utils';\n\nexport function calculateTransformProps(tileHeader, tile) {\n assert(tileHeader);\n assert(tile);\n\n const {rtcCenter, gltfUpAxis} = tile;\n const {\n computedTransform,\n boundingVolume: {center}\n } = tileHeader;\n\n let modelMatrix = new Matrix4(computedTransform);\n\n // Translate if appropriate\n if (rtcCenter) {\n modelMatrix.translate(rtcCenter);\n }\n\n // glTF models need to be rotated from Y to Z up\n // https://github.com/AnalyticalGraphicsInc/3d-tiles/tree/master/specification#y-up-to-z-up\n switch (gltfUpAxis) {\n case 'Z':\n break;\n case 'Y':\n const rotationY = new Matrix4().rotateX(Math.PI / 2);\n modelMatrix = modelMatrix.multiplyRight(rotationY);\n break;\n case 'X':\n const rotationX = new Matrix4().rotateY(-Math.PI / 2);\n modelMatrix = modelMatrix.multiplyRight(rotationX);\n break;\n default:\n break;\n }\n\n // Scale/offset positions if normalized integers\n if (tile.isQuantized) {\n modelMatrix.translate(tile.quantizedVolumeOffset).scale(tile.quantizedVolumeScale);\n }\n\n // Option 1: Cartesian matrix and origin\n const cartesianOrigin = new Vector3(center);\n\n tile.cartesianModelMatrix = modelMatrix;\n tile.cartesianOrigin = cartesianOrigin;\n\n // Option 2: Cartographic matrix and origin\n const cartographicOrigin = Ellipsoid.WGS84.cartesianToCartographic(\n cartesianOrigin,\n new Vector3()\n );\n const fromFixedFrameMatrix = Ellipsoid.WGS84.eastNorthUpToFixedFrame(cartesianOrigin);\n const toFixedFrameMatrix = fromFixedFrameMatrix.invert();\n\n tile.cartographicModelMatrix = toFixedFrameMatrix.multiplyRight(modelMatrix);\n tile.cartographicOrigin = cartographicOrigin;\n\n // Deprecated, drop\n if (!tile.coordinateSystem) {\n tile.modelMatrix = tile.cartographicModelMatrix;\n }\n}\n"],"mappings":";;;;;;AAEA;AACA;AACA;;AAEO,SAASA,uBAAuB,CAACC,UAAU,EAAEC,IAAI,EAAE;EACxD,IAAAC,mBAAM,EAACF,UAAU,CAAC;EAClB,IAAAE,mBAAM,EAACD,IAAI,CAAC;EAEZ,IAAOE,SAAS,GAAgBF,IAAI,CAA7BE,SAAS;IAAEC,UAAU,GAAIH,IAAI,CAAlBG,UAAU;EAC5B,IACEC,iBAAiB,GAEfL,UAAU,CAFZK,iBAAiB;IACAC,MAAM,GACrBN,UAAU,CADZO,cAAc,CAAGD,MAAM;EAGzB,IAAIE,WAAW,GAAG,IAAIC,aAAO,CAACJ,iBAAiB,CAAC;;EAGhD,IAAIF,SAAS,EAAE;IACbK,WAAW,CAACE,SAAS,CAACP,SAAS,CAAC;EAClC;;EAIA,QAAQC,UAAU;IAChB,KAAK,GAAG;MACN;IACF,KAAK,GAAG;MACN,IAAMO,SAAS,GAAG,IAAIF,aAAO,EAAE,CAACG,OAAO,CAACC,IAAI,CAACC,EAAE,GAAG,CAAC,CAAC;MACpDN,WAAW,GAAGA,WAAW,CAACO,aAAa,CAACJ,SAAS,CAAC;MAClD;IACF,KAAK,GAAG;MACN,IAAMK,SAAS,GAAG,IAAIP,aAAO,EAAE,CAACQ,OAAO,CAAC,CAACJ,IAAI,CAACC,EAAE,GAAG,CAAC,CAAC;MACrDN,WAAW,GAAGA,WAAW,CAACO,aAAa,CAACC,SAAS,CAAC;MAClD;IACF;MACE;EAAM;;EAIV,IAAIf,IAAI,CAACiB,WAAW,EAAE;IACpBV,WAAW,CAACE,SAAS,CAACT,IAAI,CAACkB,qBAAqB,CAAC,CAACC,KAAK,CAACnB,IAAI,CAACoB,oBAAoB,CAAC;EACpF;;EAGA,IAAMC,eAAe,GAAG,IAAIC,aAAO,CAACjB,MAAM,CAAC;EAE3CL,IAAI,CAACuB,oBAAoB,GAAGhB,WAAW;EACvCP,IAAI,CAACqB,eAAe,GAAGA,eAAe;;EAGtC,IAAMG,kBAAkB,GAAGC,qBAAS,CAACC,KAAK,CAACC,uBAAuB,CAChEN,eAAe,EACf,IAAIC,aAAO,EAAE,CACd;EACD,IAAMM,oBAAoB,GAAGH,qBAAS,CAACC,KAAK,CAACG,uBAAuB,CAACR,eAAe,CAAC;EACrF,IAAMS,kBAAkB,GAAGF,oBAAoB,CAACG,MAAM,EAAE;EAExD/B,IAAI,CAACgC,uBAAuB,GAAGF,kBAAkB,CAAChB,aAAa,CAACP,WAAW,CAAC;EAC5EP,IAAI,CAACwB,kBAAkB,GAAGA,kBAAkB;;EAG5C,IAAI,CAACxB,IAAI,CAACiC,gBAAgB,EAAE;IAC1BjC,IAAI,CAACO,WAAW,GAAGP,IAAI,CAACgC,uBAAuB;EACjD;AACF"}
@@ -11,6 +11,7 @@ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/sli
11
11
  var _core = require("@math.gl/core");
12
12
  var _culling = require("@math.gl/culling");
13
13
  var _geospatial = require("@math.gl/geospatial");
14
+
14
15
  var WGS84_RADIUS_X = 6378137.0;
15
16
  var WGS84_RADIUS_Y = 6378137.0;
16
17
  var WGS84_RADIUS_Z = 6356752.3142451793;