@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.
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.js +1 -0
- package/dist/dist.min.js +25 -23
- package/dist/es5/constants.js +1 -0
- package/dist/es5/constants.js.map +1 -1
- package/dist/es5/index.js +8 -9
- package/dist/es5/index.js.map +1 -1
- package/dist/es5/tileset/{traversers → format-3d-tiles}/tileset-3d-traverser.js +4 -4
- package/dist/es5/tileset/format-3d-tiles/tileset-3d-traverser.js.map +1 -0
- package/dist/es5/tileset/{traversers → format-i3s}/i3s-pending-tiles-register.js +2 -2
- package/dist/es5/tileset/format-i3s/i3s-pending-tiles-register.js.map +1 -0
- package/dist/es5/tileset/{traversers → format-i3s}/i3s-tile-manager.js +4 -4
- package/dist/es5/tileset/format-i3s/i3s-tile-manager.js.map +1 -0
- package/dist/es5/tileset/{traversers → format-i3s}/i3s-tileset-traverser.js +9 -8
- package/dist/es5/tileset/format-i3s/i3s-tileset-traverser.js.map +1 -0
- package/dist/es5/tileset/helpers/i3s-lod.js +1 -0
- package/dist/es5/tileset/helpers/i3s-lod.js.map +1 -1
- package/dist/es5/tileset/helpers/tiles-3d-lod.js.map +1 -1
- package/dist/es5/tileset/helpers/transform-utils.js +1 -0
- package/dist/es5/tileset/helpers/transform-utils.js.map +1 -1
- package/dist/es5/tileset/helpers/zoom.js +1 -0
- package/dist/es5/tileset/helpers/zoom.js.map +1 -1
- package/dist/es5/tileset/tile-3d.js +9 -9
- package/dist/es5/tileset/tile-3d.js.map +1 -1
- package/dist/es5/tileset/tileset-3d.js +13 -13
- package/dist/es5/tileset/tileset-3d.js.map +1 -1
- package/dist/es5/tileset/tileset-cache.js +4 -4
- package/dist/es5/tileset/tileset-cache.js.map +1 -1
- package/dist/es5/tileset/{traversers/tileset-traverser.js → tileset-traverser.js} +7 -6
- package/dist/es5/tileset/tileset-traverser.js.map +1 -0
- package/dist/es5/utils/doubly-linked-list-node.js +2 -2
- package/dist/es5/utils/doubly-linked-list-node.js.map +1 -1
- package/dist/es5/utils/doubly-linked-list.js +4 -4
- package/dist/es5/utils/doubly-linked-list.js.map +1 -1
- package/dist/es5/utils/managed-array.js +2 -2
- package/dist/es5/utils/managed-array.js.map +1 -1
- package/dist/esm/constants.js +2 -0
- package/dist/esm/constants.js.map +1 -1
- package/dist/esm/index.js +6 -4
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/tileset/{traversers → format-3d-tiles}/tileset-3d-traverser.js +2 -2
- package/dist/esm/tileset/format-3d-tiles/tileset-3d-traverser.js.map +1 -0
- package/dist/esm/tileset/{traversers → format-i3s}/i3s-pending-tiles-register.js +1 -1
- package/dist/esm/tileset/format-i3s/i3s-pending-tiles-register.js.map +1 -0
- package/dist/esm/tileset/{traversers → format-i3s}/i3s-tile-manager.js +2 -2
- package/dist/esm/tileset/format-i3s/i3s-tile-manager.js.map +1 -0
- package/dist/esm/tileset/{traversers → format-i3s}/i3s-tileset-traverser.js +9 -8
- package/dist/esm/tileset/format-i3s/i3s-tileset-traverser.js.map +1 -0
- package/dist/esm/tileset/helpers/i3s-lod.js +2 -0
- package/dist/esm/tileset/helpers/i3s-lod.js.map +1 -1
- package/dist/esm/tileset/helpers/tiles-3d-lod.js.map +1 -1
- package/dist/esm/tileset/helpers/transform-utils.js +2 -0
- package/dist/esm/tileset/helpers/transform-utils.js.map +1 -1
- package/dist/esm/tileset/helpers/zoom.js +2 -0
- package/dist/esm/tileset/helpers/zoom.js.map +1 -1
- package/dist/esm/tileset/tile-3d.js +4 -3
- package/dist/esm/tileset/tile-3d.js.map +1 -1
- package/dist/esm/tileset/tileset-3d.js +8 -7
- package/dist/esm/tileset/tileset-3d.js.map +1 -1
- package/dist/esm/tileset/tileset-cache.js +2 -2
- package/dist/esm/tileset/tileset-cache.js.map +1 -1
- package/dist/esm/tileset/{traversers/tileset-traverser.js → tileset-traverser.js} +4 -3
- package/dist/esm/tileset/tileset-traverser.js.map +1 -0
- package/dist/esm/utils/doubly-linked-list-node.js +1 -1
- package/dist/esm/utils/doubly-linked-list-node.js.map +1 -1
- package/dist/esm/utils/doubly-linked-list.js +2 -2
- package/dist/esm/utils/doubly-linked-list.js.map +1 -1
- package/dist/esm/utils/managed-array.js +1 -1
- package/dist/esm/utils/managed-array.js.map +1 -1
- package/dist/index.d.ts +4 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -8
- package/dist/tileset/{traversers → format-3d-tiles}/tileset-3d-traverser.d.ts +2 -2
- package/dist/tileset/format-3d-tiles/tileset-3d-traverser.d.ts.map +1 -0
- package/dist/tileset/{traversers → format-3d-tiles}/tileset-3d-traverser.js +6 -7
- package/dist/tileset/{traversers → format-i3s}/i3s-pending-tiles-register.d.ts +1 -1
- package/dist/tileset/format-i3s/i3s-pending-tiles-register.d.ts.map +1 -0
- package/dist/tileset/{traversers → format-i3s}/i3s-pending-tiles-register.js +2 -1
- package/dist/tileset/{traversers → format-i3s}/i3s-tile-manager.d.ts +1 -1
- package/dist/tileset/format-i3s/i3s-tile-manager.d.ts.map +1 -0
- package/dist/tileset/{traversers → format-i3s}/i3s-tile-manager.js +4 -6
- package/dist/tileset/{traversers → format-i3s}/i3s-tileset-traverser.d.ts +6 -6
- package/dist/tileset/format-i3s/i3s-tileset-traverser.d.ts.map +1 -0
- package/dist/tileset/{traversers → format-i3s}/i3s-tileset-traverser.js +13 -15
- package/dist/tileset/helpers/i3s-lod.d.ts +1 -1
- package/dist/tileset/helpers/i3s-lod.d.ts.map +1 -1
- package/dist/tileset/helpers/i3s-lod.js +1 -0
- package/dist/tileset/helpers/tiles-3d-lod.d.ts.map +1 -1
- package/dist/tileset/helpers/tiles-3d-lod.js +3 -2
- package/dist/tileset/helpers/transform-utils.d.ts.map +1 -1
- package/dist/tileset/helpers/transform-utils.js +1 -0
- package/dist/tileset/helpers/zoom.d.ts.map +1 -1
- package/dist/tileset/helpers/zoom.js +1 -0
- package/dist/tileset/tile-3d.d.ts +10 -10
- package/dist/tileset/tile-3d.d.ts.map +1 -1
- package/dist/tileset/tile-3d.js +8 -9
- package/dist/tileset/tileset-3d.d.ts +3 -3
- package/dist/tileset/tileset-3d.d.ts.map +1 -1
- package/dist/tileset/tileset-3d.js +16 -16
- package/dist/tileset/tileset-cache.d.ts +1 -1
- package/dist/tileset/tileset-cache.d.ts.map +1 -1
- package/dist/tileset/tileset-cache.js +6 -7
- package/dist/tileset/{traversers/tileset-traverser.d.ts → tileset-traverser.d.ts} +6 -16
- package/dist/tileset/tileset-traverser.d.ts.map +1 -0
- package/dist/tileset/{traversers/tileset-traverser.js → tileset-traverser.js} +15 -9
- package/dist/utils/doubly-linked-list-node.d.ts +1 -2
- package/dist/utils/doubly-linked-list-node.d.ts.map +1 -1
- package/dist/utils/doubly-linked-list-node.js +4 -3
- package/dist/utils/doubly-linked-list.d.ts +2 -3
- package/dist/utils/doubly-linked-list.d.ts.map +1 -1
- package/dist/utils/doubly-linked-list.js +4 -7
- package/dist/utils/managed-array.d.ts +1 -1
- package/dist/utils/managed-array.d.ts.map +1 -1
- package/dist/utils/managed-array.js +2 -1
- package/package.json +4 -4
- package/src/constants.ts +2 -0
- package/src/index.ts +6 -4
- package/src/tileset/{traversers → format-3d-tiles}/tileset-3d-traverser.ts +4 -2
- package/src/tileset/{traversers → format-i3s}/i3s-pending-tiles-register.ts +1 -1
- package/src/tileset/{traversers → format-i3s}/i3s-tile-manager.ts +2 -2
- package/src/tileset/{traversers → format-i3s}/i3s-tileset-traverser.ts +13 -13
- package/src/tileset/helpers/i3s-lod.ts +3 -1
- package/src/tileset/helpers/tiles-3d-lod.ts +2 -0
- package/src/tileset/helpers/transform-utils.ts +2 -0
- package/src/tileset/helpers/zoom.ts +2 -0
- package/src/tileset/tile-3d.ts +16 -13
- package/src/tileset/tileset-3d.ts +12 -7
- package/src/tileset/tileset-cache.ts +4 -2
- package/src/tileset/{traversers/tileset-traverser.ts → tileset-traverser.ts} +17 -16
- package/src/utils/doubly-linked-list-node.ts +3 -2
- package/src/utils/doubly-linked-list.ts +2 -3
- package/src/utils/managed-array.ts +1 -1
- package/dist/es5/tileset/traversers/i3s-pending-tiles-register.js.map +0 -1
- package/dist/es5/tileset/traversers/i3s-tile-manager.js.map +0 -1
- package/dist/es5/tileset/traversers/i3s-tileset-traverser.js.map +0 -1
- package/dist/es5/tileset/traversers/tileset-3d-traverser.js.map +0 -1
- package/dist/es5/tileset/traversers/tileset-traverser.js.map +0 -1
- package/dist/esm/tileset/traversers/i3s-pending-tiles-register.js.map +0 -1
- package/dist/esm/tileset/traversers/i3s-tile-manager.js.map +0 -1
- package/dist/esm/tileset/traversers/i3s-tileset-traverser.js.map +0 -1
- package/dist/esm/tileset/traversers/tileset-3d-traverser.js.map +0 -1
- package/dist/esm/tileset/traversers/tileset-traverser.js.map +0 -1
- package/dist/tileset/traversers/i3s-pending-tiles-register.d.ts.map +0 -1
- package/dist/tileset/traversers/i3s-tile-manager.d.ts.map +0 -1
- package/dist/tileset/traversers/i3s-tileset-traverser.d.ts.map +0 -1
- package/dist/tileset/traversers/tileset-3d-traverser.d.ts.map +0 -1
- package/dist/tileset/traversers/tileset-traverser.d.ts.map +0 -1
package/dist/constants.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"
|
|
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.
|
|
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.
|
|
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/
|
|
7244
|
+
// src/tileset/tileset-traverser.ts
|
|
7243
7245
|
var DEFAULT_PROPS3, TilesetTraverser;
|
|
7244
7246
|
var init_tileset_traverser = __esm({
|
|
7245
|
-
"src/tileset/
|
|
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,
|
|
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
|
-
|
|
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/
|
|
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/
|
|
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/
|
|
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/
|
|
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/
|
|
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/
|
|
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/
|
|
8000
|
+
// src/tileset/format-i3s/i3s-tileset-traverser.ts
|
|
7999
8001
|
var I3STilesetTraverser;
|
|
8000
8002
|
var init_i3s_tileset_traverser = __esm({
|
|
8001
|
-
"src/tileset/
|
|
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
|
|
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
|
-
|
|
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
|
|
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
|
|
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: () =>
|
|
8640
|
+
Tile3D: () => Tile3D,
|
|
8639
8641
|
Tileset3D: () => Tileset3D,
|
|
8640
8642
|
TilesetCache: () => TilesetCache,
|
|
8641
8643
|
TilesetTraverser: () => TilesetTraverser,
|
package/dist/es5/constants.js
CHANGED
|
@@ -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":["
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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 =
|
|
86
|
-
var _tile3d =
|
|
87
|
-
var _tilesetTraverser =
|
|
88
|
-
var _tilesetCache =
|
|
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");
|
package/dist/es5/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":[],"sources":["../../src/index.ts"],"sourcesContent":["
|
|
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.
|
|
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 =
|
|
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.
|
|
71
|
-
exports.
|
|
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.
|
|
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.
|
|
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.
|
|
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 =
|
|
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.
|
|
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.
|
|
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.
|
|
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 =
|
|
18
|
+
var _tilesetTraverser = require("../tileset-traverser");
|
|
19
19
|
var _i3sLod = require("../helpers/i3s-lod");
|
|
20
|
-
var _tile3d =
|
|
21
|
-
var _i3sTileManager =
|
|
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.
|
|
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.
|
|
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.
|
|
147
|
-
exports.
|
|
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":";;;;;;;;;;;;;;;;AAAA;AACA;AAEA;AACA;AACA;AAAkD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAGrCA,mBAAmB;EAAA;EAAA;EAG9B,6BAAYC,OAAO,EAAE;IAAA;IAAA;IACnB,0BAAMA,OAAO;IAAE;IACf,MAAKC,YAAY,GAAG,IAAIC,8BAAc,EAAE;IAAC;EAC3C;;EAAC;IAAA;IAAA;IAOD,2BAAkBC,UAAsB,EAAW;MACjD,OAAO,CAAC,IAAI,CAACF,YAAY,CAACG,eAAe,CAACD,UAAU,CAACE,QAAQ,CAACC,EAAE,EAAE,IAAI,CAACC,YAAY,IAAI,CAAC,CAAC;IAC3F;EAAC;IAAA;IAAA,OAED,sBAAaC,IAAI,EAAEL,UAAsB,EAAE;MACzCK,IAAI,CAACC,SAAS,GAAG,IAAAC,oBAAY,EAACF,IAAI,EAAEL,UAAU,CAAC;MAC/C,OAAOK,IAAI,CAACC,SAAS,KAAK,KAAK;IACjC;EAAC;IAAA;IAAA,OAED,0BAAiBD,IAAI,EAAEL,UAAsB,EAAW;MAAA;MACtD,IAAMQ,QAAQ,GAAGH,IAAI,CAACI,MAAM,CAACD,QAAQ,IAAI,EAAE;MAE3C,IAAME,UAAU,GAAGL,IAAI,CAACG,QAAQ;MAChC,IAAMG,OAAO,GAAGN,IAAI,CAACM,OAAO;MAAC,2CAETH,QAAQ;QAAA;MAAA;QAAA;UAAA,IAAjBI,KAAK;UACd,IAAMC,UAAU,aAAMD,KAAK,CAACT,EAAE,cAAIH,UAAU,CAACE,QAAQ,CAACC,EAAE,CAAE;UAE1D,IAAMW,SAAS,GAAGJ,UAAU,IAAIA,UAAU,CAACK,IAAI,CAAC,UAACC,CAAC;YAAA,OAAKA,CAAC,CAACb,EAAE,KAAKU,UAAU;UAAA,EAAC;UAC3E,IAAI,CAACC,SAAS,EAAE;YACd,IAAIG,OAAO,GAAG;cAAA,OAAM,MAAI,CAACC,SAAS,CAACN,KAAK,CAACT,EAAE,EAAEQ,OAAO,CAAC;YAAA;YACrD,IAAMQ,aAAa,GAAG,MAAI,CAACrB,YAAY,CAACiB,IAAI,CAACF,UAAU,CAAC;YACxD,IAAI,CAACM,aAAa,EAAE;cAElB,IAAIR,OAAO,CAACA,OAAO,CAACS,SAAS,EAAE;gBAC7BH,OAAO,GAAG;kBAAA,OAAMN,OAAO,CAACA,OAAO,CAACU,aAAa,CAACC,qBAAqB,CAACV,KAAK,CAACT,EAAE,CAAC;gBAAA;cAC/E;cACA,MAAI,CAACL,YAAY,CAACyB,GAAG,CACnBN,OAAO,EACPJ,UAAU,EACV,UAACJ,MAAM;gBAAA,OAAK,MAAI,CAACe,WAAW,CAACf,MAAM,EAAEJ,IAAI,EAAEQ,UAAU,CAAC;cAAA,GACtDb,UAAU,CACX;YACH,CAAC,MAAM;cAEL,MAAI,CAACF,YAAY,CAAC2B,MAAM,CAACZ,UAAU,EAAEb,UAAU,CAAC;YAClD;UACF,CAAC,MAAM,IAAIc,SAAS,EAAE;YAEpB,MAAI,CAACY,UAAU,CAACZ,SAAS,EAAEd,UAAU,CAAC;UACxC;QAAC;QAzBH,oDAA8B;UAAA;QA0B9B;MAAC;QAAA;MAAA;QAAA;MAAA;MACD,OAAO,KAAK;IACd;EAAC;IAAA;IAAA;MAAA,2EAED,iBAAgB2B,MAAM,EAAEhB,OAAO;QAAA;QAAA;UAAA;YAAA;cAAA;gBACtBiB,MAAM,GAAIjB,OAAO,CAAjBiB,MAAM;gBACPC,OAAO,GAAGlB,OAAO,CAACmB,UAAU,WAAInB,OAAO,CAACoB,GAAG,oBAAUJ,MAAM,EAAG;gBAE9D9B,OAAO,mCACRc,OAAO,CAACqB,WAAW;kBACtBC,GAAG,kCACEtB,OAAO,CAACqB,WAAW,CAACC,GAAG;oBAC1BC,YAAY,EAAE;kBAAI;gBACnB;gBAAA;gBAAA,OAGU,IAAAC,UAAI,EAACN,OAAO,EAAED,MAAM,EAAE/B,OAAO,CAAC;cAAA;gBAAA;cAAA;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,CAC5C;MAAA;QAAA;MAAA;MAAA;IAAA;EAAA;IAAA;IAAA;IAUD,qBAAYY,MAAM,EAAEJ,IAAI,EAAEQ,UAAU,EAAE;MAEpC,IAAMC,SAAS,GAAG,IAAIsB,cAAM,CAAC/B,IAAI,CAACM,OAAO,EAAEF,MAAM,EAAEJ,IAAI,EAAEQ,UAAU,CAAC;MACpER,IAAI,CAACG,QAAQ,CAAC6B,IAAI,CAACvB,SAAS,CAAC;MAC7B,IAAMd,UAAU,GAAG,IAAI,CAACF,YAAY,CAACiB,IAAI,CAACD,SAAS,CAACX,EAAE,CAAC,CAACH,UAAU;MAClE,IAAI,CAAC0B,UAAU,CAACZ,SAAS,EAAEd,UAAU,CAAC;;MAGtC,IACE,IAAI,CAACI,YAAY,KAAKJ,UAAU,CAACsC,WAAW,KAC3C,IAAI,CAACC,iBAAiB,CAACvC,UAAU,CAAC,IACjC,IAAIwC,IAAI,EAAE,CAACC,OAAO,EAAE,GAAG,IAAI,CAACC,UAAU,GAAG,IAAI,CAACC,kBAAkB,CAAC,EACnE;QACA,IAAI,CAACC,gBAAgB,CAAC9B,SAAS,EAAEd,UAAU,CAAC;MAC9C;IACF;EAAC;EAAA;AAAA,EAhGsC6C,kCAAgB;AAAA"}
|
|
@@ -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":["
|
|
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":["
|
|
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;
|