@loaders.gl/tiles 3.4.14 → 3.4.15

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 (41) hide show
  1. package/dist/dist.min.js +122 -338
  2. package/dist/es5/bundle.js +1 -1
  3. package/dist/es5/bundle.js.map +1 -1
  4. package/dist/es5/constants.js +6 -6
  5. package/dist/es5/constants.js.map +1 -1
  6. package/dist/es5/index.js +13 -13
  7. package/dist/es5/tileset/format-3d-tiles/tileset-3d-traverser.js +32 -53
  8. package/dist/es5/tileset/format-3d-tiles/tileset-3d-traverser.js.map +1 -1
  9. package/dist/es5/tileset/format-i3s/i3s-pending-tiles-register.js +21 -32
  10. package/dist/es5/tileset/format-i3s/i3s-pending-tiles-register.js.map +1 -1
  11. package/dist/es5/tileset/format-i3s/i3s-tile-manager.js +66 -63
  12. package/dist/es5/tileset/format-i3s/i3s-tile-manager.js.map +1 -1
  13. package/dist/es5/tileset/format-i3s/i3s-tileset-traverser.js +54 -121
  14. package/dist/es5/tileset/format-i3s/i3s-tileset-traverser.js.map +1 -1
  15. package/dist/es5/tileset/helpers/bounding-volume.js +48 -62
  16. package/dist/es5/tileset/helpers/bounding-volume.js.map +1 -1
  17. package/dist/es5/tileset/helpers/frame-state.js +67 -80
  18. package/dist/es5/tileset/helpers/frame-state.js.map +1 -1
  19. package/dist/es5/tileset/helpers/i3s-lod.js +27 -27
  20. package/dist/es5/tileset/helpers/i3s-lod.js.map +1 -1
  21. package/dist/es5/tileset/helpers/tiles-3d-lod.js +51 -45
  22. package/dist/es5/tileset/helpers/tiles-3d-lod.js.map +1 -1
  23. package/dist/es5/tileset/helpers/transform-utils.js +17 -11
  24. package/dist/es5/tileset/helpers/transform-utils.js.map +1 -1
  25. package/dist/es5/tileset/helpers/zoom.js +28 -28
  26. package/dist/es5/tileset/helpers/zoom.js.map +1 -1
  27. package/dist/es5/tileset/tile-3d.js +316 -430
  28. package/dist/es5/tileset/tile-3d.js.map +1 -1
  29. package/dist/es5/tileset/tileset-3d.js +460 -701
  30. package/dist/es5/tileset/tileset-3d.js.map +1 -1
  31. package/dist/es5/tileset/tileset-cache.js +41 -58
  32. package/dist/es5/tileset/tileset-cache.js.map +1 -1
  33. package/dist/es5/tileset/tileset-traverser.js +189 -264
  34. package/dist/es5/tileset/tileset-traverser.js.map +1 -1
  35. package/dist/es5/utils/doubly-linked-list-node.js +10 -11
  36. package/dist/es5/utils/doubly-linked-list-node.js.map +1 -1
  37. package/dist/es5/utils/doubly-linked-list.js +53 -68
  38. package/dist/es5/utils/doubly-linked-list.js.map +1 -1
  39. package/dist/es5/utils/managed-array.js +69 -100
  40. package/dist/es5/utils/managed-array.js.map +1 -1
  41. package/package.json +5 -5
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
 
3
- var moduleExports = require('./index');
3
+ const moduleExports = require('./index');
4
4
  globalThis.loaders = globalThis.loaders || {};
5
5
  module.exports = Object.assign(globalThis.loaders, moduleExports);
6
6
  //# sourceMappingURL=bundle.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"bundle.js","names":["moduleExports","require","globalThis","loaders","module","exports","Object","assign"],"sources":["../../src/bundle.ts"],"sourcesContent":["// @ts-nocheck\nconst moduleExports = require('./index');\nglobalThis.loaders = globalThis.loaders || {};\nmodule.exports = Object.assign(globalThis.loaders, moduleExports);\n"],"mappings":";;AACA,IAAMA,aAAa,GAAGC,OAAO,CAAC,SAAS,CAAC;AACxCC,UAAU,CAACC,OAAO,GAAGD,UAAU,CAACC,OAAO,IAAI,CAAC,CAAC;AAC7CC,MAAM,CAACC,OAAO,GAAGC,MAAM,CAACC,MAAM,CAACL,UAAU,CAACC,OAAO,EAAEH,aAAa,CAAC"}
1
+ {"version":3,"file":"bundle.js","names":["moduleExports","require","globalThis","loaders","module","exports","Object","assign"],"sources":["../../src/bundle.ts"],"sourcesContent":["// @ts-nocheck\nconst moduleExports = require('./index');\nglobalThis.loaders = globalThis.loaders || {};\nmodule.exports = Object.assign(globalThis.loaders, moduleExports);\n"],"mappings":";;AACA,MAAMA,aAAa,GAAGC,OAAO,CAAC,SAAS,CAAC;AACxCC,UAAU,CAACC,OAAO,GAAGD,UAAU,CAACC,OAAO,IAAI,CAAC,CAAC;AAC7CC,MAAM,CAACC,OAAO,GAAGC,MAAM,CAACC,MAAM,CAACL,UAAU,CAACC,OAAO,EAAEH,aAAa,CAAC"}
@@ -4,7 +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
- var TILE_CONTENT_STATE = {
7
+ const TILE_CONTENT_STATE = {
8
8
  UNLOADED: 0,
9
9
  LOADING: 1,
10
10
  PROCESSING: 2,
@@ -13,29 +13,29 @@ var TILE_CONTENT_STATE = {
13
13
  FAILED: 5
14
14
  };
15
15
  exports.TILE_CONTENT_STATE = TILE_CONTENT_STATE;
16
- var TILE_REFINEMENT = {
16
+ const TILE_REFINEMENT = {
17
17
  ADD: 1,
18
18
  REPLACE: 2
19
19
  };
20
20
  exports.TILE_REFINEMENT = TILE_REFINEMENT;
21
- var TILE_TYPE = {
21
+ const TILE_TYPE = {
22
22
  EMPTY: 'empty',
23
23
  SCENEGRAPH: 'scenegraph',
24
24
  POINTCLOUD: 'pointcloud',
25
25
  MESH: 'mesh'
26
26
  };
27
27
  exports.TILE_TYPE = TILE_TYPE;
28
- var TILESET_TYPE = {
28
+ const TILESET_TYPE = {
29
29
  I3S: 'I3S',
30
30
  TILES3D: 'TILES3D'
31
31
  };
32
32
  exports.TILESET_TYPE = TILESET_TYPE;
33
- var LOD_METRIC_TYPE = {
33
+ const LOD_METRIC_TYPE = {
34
34
  GEOMETRIC_ERROR: 'geometricError',
35
35
  MAX_SCREEN_THRESHOLD: 'maxScreenThreshold'
36
36
  };
37
37
  exports.LOD_METRIC_TYPE = LOD_METRIC_TYPE;
38
- var TILE3D_OPTIMIZATION_HINT = {
38
+ const TILE3D_OPTIMIZATION_HINT = {
39
39
  NOT_COMPUTED: -1,
40
40
  USE_OPTIMIZATION: 1,
41
41
  SKIP_OPTIMIZATION: 0
@@ -1 +1 @@
1
- {"version":3,"file":"constants.js","names":["TILE_CONTENT_STATE","UNLOADED","LOADING","PROCESSING","READY","EXPIRED","FAILED","exports","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 type TileContentState =\n | 'unloaded' // Has never been requested\n | 'loading' // Is waiting on a pending request\n | 'processing' // Request received. Contents are being processed for rendering. Depending on the content, it might make its own requests for external data.\n | 'ready' // Ready to render.\n | 'expired' // Is expired and will be unloaded once new content is loaded.\n | 'failed'; // Request failed.\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 type TileRefinement = 'add' | 'replace';\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 type TileType = 'empty' | 'scenegraph' | 'pointcloud' | 'mesh';\n\nexport const TILE_TYPE = {\n EMPTY: 'empty',\n SCENEGRAPH: 'scenegraph',\n POINTCLOUD: 'pointcloud',\n MESH: 'mesh'\n};\n\nexport type TilesetType = 'I3S' | 'TILES3D';\n\nexport const TILESET_TYPE = {\n I3S: 'I3S',\n TILES3D: 'TILES3D'\n};\n\nexport type LODMetricType = 'geometricError' | 'maxScreenThreshold';\n\nexport const LOD_METRIC_TYPE = {\n GEOMETRIC_ERROR: 'geometricError',\n MAX_SCREEN_THRESHOLD: 'maxScreenThreshold'\n};\n\n// Cesium 3D Tiles Specific\nexport type Tile3DOptimizationHint = 'NOT_COMPUTED' | 'USE_OPTIMIZATION' | 'SKIP_OPTIMIZATION';\n\nexport const TILE3D_OPTIMIZATION_HINT = {\n NOT_COMPUTED: -1,\n USE_OPTIMIZATION: 1,\n SKIP_OPTIMIZATION: 0\n};\n"],"mappings":";;;;;;AAUO,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;AAACC,OAAA,CAAAP,kBAAA,GAAAA,kBAAA;AAIK,IAAMQ,eAAe,GAAG;EAC7BC,GAAG,EAAE,CAAC;EACNC,OAAO,EAAE;AACX,CAAC;AAACH,OAAA,CAAAC,eAAA,GAAAA,eAAA;AAIK,IAAMG,SAAS,GAAG;EACvBC,KAAK,EAAE,OAAO;EACdC,UAAU,EAAE,YAAY;EACxBC,UAAU,EAAE,YAAY;EACxBC,IAAI,EAAE;AACR,CAAC;AAACR,OAAA,CAAAI,SAAA,GAAAA,SAAA;AAIK,IAAMK,YAAY,GAAG;EAC1BC,GAAG,EAAE,KAAK;EACVC,OAAO,EAAE;AACX,CAAC;AAACX,OAAA,CAAAS,YAAA,GAAAA,YAAA;AAIK,IAAMG,eAAe,GAAG;EAC7BC,eAAe,EAAE,gBAAgB;EACjCC,oBAAoB,EAAE;AACxB,CAAC;AAACd,OAAA,CAAAY,eAAA,GAAAA,eAAA;AAKK,IAAMG,wBAAwB,GAAG;EACtCC,YAAY,EAAE,CAAC,CAAC;EAChBC,gBAAgB,EAAE,CAAC;EACnBC,iBAAiB,EAAE;AACrB,CAAC;AAAClB,OAAA,CAAAe,wBAAA,GAAAA,wBAAA"}
1
+ {"version":3,"file":"constants.js","names":["TILE_CONTENT_STATE","UNLOADED","LOADING","PROCESSING","READY","EXPIRED","FAILED","exports","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 type TileContentState =\n | 'unloaded' // Has never been requested\n | 'loading' // Is waiting on a pending request\n | 'processing' // Request received. Contents are being processed for rendering. Depending on the content, it might make its own requests for external data.\n | 'ready' // Ready to render.\n | 'expired' // Is expired and will be unloaded once new content is loaded.\n | 'failed'; // Request failed.\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 type TileRefinement = 'add' | 'replace';\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 type TileType = 'empty' | 'scenegraph' | 'pointcloud' | 'mesh';\n\nexport const TILE_TYPE = {\n EMPTY: 'empty',\n SCENEGRAPH: 'scenegraph',\n POINTCLOUD: 'pointcloud',\n MESH: 'mesh'\n};\n\nexport type TilesetType = 'I3S' | 'TILES3D';\n\nexport const TILESET_TYPE = {\n I3S: 'I3S',\n TILES3D: 'TILES3D'\n};\n\nexport type LODMetricType = 'geometricError' | 'maxScreenThreshold';\n\nexport const LOD_METRIC_TYPE = {\n GEOMETRIC_ERROR: 'geometricError',\n MAX_SCREEN_THRESHOLD: 'maxScreenThreshold'\n};\n\n// Cesium 3D Tiles Specific\nexport type Tile3DOptimizationHint = 'NOT_COMPUTED' | 'USE_OPTIMIZATION' | 'SKIP_OPTIMIZATION';\n\nexport const TILE3D_OPTIMIZATION_HINT = {\n NOT_COMPUTED: -1,\n USE_OPTIMIZATION: 1,\n SKIP_OPTIMIZATION: 0\n};\n"],"mappings":";;;;;;AAUO,MAAMA,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;AAACC,OAAA,CAAAP,kBAAA,GAAAA,kBAAA;AAIK,MAAMQ,eAAe,GAAG;EAC7BC,GAAG,EAAE,CAAC;EACNC,OAAO,EAAE;AACX,CAAC;AAACH,OAAA,CAAAC,eAAA,GAAAA,eAAA;AAIK,MAAMG,SAAS,GAAG;EACvBC,KAAK,EAAE,OAAO;EACdC,UAAU,EAAE,YAAY;EACxBC,UAAU,EAAE,YAAY;EACxBC,IAAI,EAAE;AACR,CAAC;AAACR,OAAA,CAAAI,SAAA,GAAAA,SAAA;AAIK,MAAMK,YAAY,GAAG;EAC1BC,GAAG,EAAE,KAAK;EACVC,OAAO,EAAE;AACX,CAAC;AAACX,OAAA,CAAAS,YAAA,GAAAA,YAAA;AAIK,MAAMG,eAAe,GAAG;EAC7BC,eAAe,EAAE,gBAAgB;EACjCC,oBAAoB,EAAE;AACxB,CAAC;AAACd,OAAA,CAAAY,eAAA,GAAAA,eAAA;AAKK,MAAMG,wBAAwB,GAAG;EACtCC,YAAY,EAAE,CAAC,CAAC;EAChBC,gBAAgB,EAAE,CAAC;EACnBC,iBAAiB,EAAE;AACrB,CAAC;AAAClB,OAAA,CAAAe,wBAAA,GAAAA,wBAAA"}
package/dist/es5/index.js CHANGED
@@ -5,79 +5,79 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  Object.defineProperty(exports, "LOD_METRIC_TYPE", {
7
7
  enumerable: true,
8
- get: function get() {
8
+ get: function () {
9
9
  return _constants.LOD_METRIC_TYPE;
10
10
  }
11
11
  });
12
12
  Object.defineProperty(exports, "TILESET_TYPE", {
13
13
  enumerable: true,
14
- get: function get() {
14
+ get: function () {
15
15
  return _constants.TILESET_TYPE;
16
16
  }
17
17
  });
18
18
  Object.defineProperty(exports, "TILE_CONTENT_STATE", {
19
19
  enumerable: true,
20
- get: function get() {
20
+ get: function () {
21
21
  return _constants.TILE_CONTENT_STATE;
22
22
  }
23
23
  });
24
24
  Object.defineProperty(exports, "TILE_REFINEMENT", {
25
25
  enumerable: true,
26
- get: function get() {
26
+ get: function () {
27
27
  return _constants.TILE_REFINEMENT;
28
28
  }
29
29
  });
30
30
  Object.defineProperty(exports, "TILE_TYPE", {
31
31
  enumerable: true,
32
- get: function get() {
32
+ get: function () {
33
33
  return _constants.TILE_TYPE;
34
34
  }
35
35
  });
36
36
  Object.defineProperty(exports, "Tile3D", {
37
37
  enumerable: true,
38
- get: function get() {
38
+ get: function () {
39
39
  return _tile3d.Tile3D;
40
40
  }
41
41
  });
42
42
  Object.defineProperty(exports, "Tileset3D", {
43
43
  enumerable: true,
44
- get: function get() {
44
+ get: function () {
45
45
  return _tileset3d.Tileset3D;
46
46
  }
47
47
  });
48
48
  Object.defineProperty(exports, "TilesetCache", {
49
49
  enumerable: true,
50
- get: function get() {
50
+ get: function () {
51
51
  return _tilesetCache.TilesetCache;
52
52
  }
53
53
  });
54
54
  Object.defineProperty(exports, "TilesetTraverser", {
55
55
  enumerable: true,
56
- get: function get() {
56
+ get: function () {
57
57
  return _tilesetTraverser.TilesetTraverser;
58
58
  }
59
59
  });
60
60
  Object.defineProperty(exports, "calculateTransformProps", {
61
61
  enumerable: true,
62
- get: function get() {
62
+ get: function () {
63
63
  return _transformUtils.calculateTransformProps;
64
64
  }
65
65
  });
66
66
  Object.defineProperty(exports, "createBoundingVolume", {
67
67
  enumerable: true,
68
- get: function get() {
68
+ get: function () {
69
69
  return _boundingVolume.createBoundingVolume;
70
70
  }
71
71
  });
72
72
  Object.defineProperty(exports, "getFrameState", {
73
73
  enumerable: true,
74
- get: function get() {
74
+ get: function () {
75
75
  return _frameState.getFrameState;
76
76
  }
77
77
  });
78
78
  Object.defineProperty(exports, "getLodStatus", {
79
79
  enumerable: true,
80
- get: function get() {
80
+ get: function () {
81
81
  return _i3sLod.getLodStatus;
82
82
  }
83
83
  });
@@ -1,70 +1,49 @@
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
  });
7
6
  exports.Tileset3DTraverser = void 0;
8
- var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
9
- var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
10
- var _get2 = _interopRequireDefault(require("@babel/runtime/helpers/get"));
11
- var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
12
- var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
13
- var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
14
7
  var _constants = require("../../constants");
15
8
  var _tilesetTraverser = require("../tileset-traverser");
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
- 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
- var Tileset3DTraverser = function (_TilesetTraverser) {
19
- (0, _inherits2.default)(Tileset3DTraverser, _TilesetTraverser);
20
- var _super = _createSuper(Tileset3DTraverser);
21
- function Tileset3DTraverser() {
22
- (0, _classCallCheck2.default)(this, Tileset3DTraverser);
23
- return _super.apply(this, arguments);
9
+ class Tileset3DTraverser extends _tilesetTraverser.TilesetTraverser {
10
+ compareDistanceToCamera(a, b) {
11
+ return b._distanceToCamera === 0 && a._distanceToCamera === 0 ? b._centerZDepth - a._centerZDepth : b._distanceToCamera - a._distanceToCamera;
24
12
  }
25
- (0, _createClass2.default)(Tileset3DTraverser, [{
26
- key: "compareDistanceToCamera",
27
- value: function compareDistanceToCamera(a, b) {
28
- return b._distanceToCamera === 0 && a._distanceToCamera === 0 ? b._centerZDepth - a._centerZDepth : b._distanceToCamera - a._distanceToCamera;
13
+ updateTileVisibility(tile, frameState) {
14
+ super.updateTileVisibility(tile, frameState);
15
+ if (!tile.isVisibleAndInRequestVolume) {
16
+ return;
29
17
  }
30
- }, {
31
- key: "updateTileVisibility",
32
- value: function updateTileVisibility(tile, frameState) {
33
- (0, _get2.default)((0, _getPrototypeOf2.default)(Tileset3DTraverser.prototype), "updateTileVisibility", this).call(this, tile, frameState);
34
- if (!tile.isVisibleAndInRequestVolume) {
35
- return;
36
- }
37
- var hasChildren = tile.children.length > 0;
38
- if (tile.hasTilesetContent && hasChildren) {
39
- var firstChild = tile.children[0];
40
- this.updateTileVisibility(firstChild, frameState);
41
- tile._visible = firstChild._visible;
42
- return;
43
- }
44
- if (this.meetsScreenSpaceErrorEarly(tile, frameState)) {
18
+ const hasChildren = tile.children.length > 0;
19
+ if (tile.hasTilesetContent && hasChildren) {
20
+ const firstChild = tile.children[0];
21
+ this.updateTileVisibility(firstChild, frameState);
22
+ tile._visible = firstChild._visible;
23
+ return;
24
+ }
25
+ if (this.meetsScreenSpaceErrorEarly(tile, frameState)) {
26
+ tile._visible = false;
27
+ return;
28
+ }
29
+ const replace = tile.refine === _constants.TILE_REFINEMENT.REPLACE;
30
+ const useOptimization = tile._optimChildrenWithinParent === _constants.TILE3D_OPTIMIZATION_HINT.USE_OPTIMIZATION;
31
+ if (replace && useOptimization && hasChildren) {
32
+ if (!this.anyChildrenVisible(tile, frameState)) {
45
33
  tile._visible = false;
46
34
  return;
47
35
  }
48
- var replace = tile.refine === _constants.TILE_REFINEMENT.REPLACE;
49
- var useOptimization = tile._optimChildrenWithinParent === _constants.TILE3D_OPTIMIZATION_HINT.USE_OPTIMIZATION;
50
- if (replace && useOptimization && hasChildren) {
51
- if (!this.anyChildrenVisible(tile, frameState)) {
52
- tile._visible = false;
53
- return;
54
- }
55
- }
56
36
  }
57
- }, {
58
- key: "meetsScreenSpaceErrorEarly",
59
- value: function meetsScreenSpaceErrorEarly(tile, frameState) {
60
- var parent = tile.parent;
61
- if (!parent || parent.hasTilesetContent || parent.refine !== _constants.TILE_REFINEMENT.ADD) {
62
- return false;
63
- }
64
- return !this.shouldRefine(tile, frameState, true);
37
+ }
38
+ meetsScreenSpaceErrorEarly(tile, frameState) {
39
+ const {
40
+ parent
41
+ } = tile;
42
+ if (!parent || parent.hasTilesetContent || parent.refine !== _constants.TILE_REFINEMENT.ADD) {
43
+ return false;
65
44
  }
66
- }]);
67
- return Tileset3DTraverser;
68
- }(_tilesetTraverser.TilesetTraverser);
45
+ return !this.shouldRefine(tile, frameState, true);
46
+ }
47
+ }
69
48
  exports.Tileset3DTraverser = Tileset3DTraverser;
70
49
  //# sourceMappingURL=tileset-3d-traverser.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"tileset-3d-traverser.js","names":["_constants","require","_tilesetTraverser","_createSuper","Derived","hasNativeReflectConstruct","_isNativeReflectConstruct","_createSuperInternal","Super","_getPrototypeOf2","default","result","NewTarget","constructor","Reflect","construct","arguments","apply","_possibleConstructorReturn2","sham","Proxy","Boolean","prototype","valueOf","call","e","Tileset3DTraverser","_TilesetTraverser","_inherits2","_super","_classCallCheck2","_createClass2","key","value","compareDistanceToCamera","a","b","_distanceToCamera","_centerZDepth","updateTileVisibility","tile","frameState","_get2","isVisibleAndInRequestVolume","hasChildren","children","length","hasTilesetContent","firstChild","_visible","meetsScreenSpaceErrorEarly","replace","refine","TILE_REFINEMENT","REPLACE","useOptimization","_optimChildrenWithinParent","TILE3D_OPTIMIZATION_HINT","USE_OPTIMIZATION","anyChildrenVisible","parent","ADD","shouldRefine","TilesetTraverser","exports"],"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":"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"}
1
+ {"version":3,"file":"tileset-3d-traverser.js","names":["_constants","require","_tilesetTraverser","Tileset3DTraverser","TilesetTraverser","compareDistanceToCamera","a","b","_distanceToCamera","_centerZDepth","updateTileVisibility","tile","frameState","isVisibleAndInRequestVolume","hasChildren","children","length","hasTilesetContent","firstChild","_visible","meetsScreenSpaceErrorEarly","replace","refine","TILE_REFINEMENT","REPLACE","useOptimization","_optimChildrenWithinParent","TILE3D_OPTIMIZATION_HINT","USE_OPTIMIZATION","anyChildrenVisible","parent","ADD","shouldRefine","exports"],"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,IAAAA,UAAA,GAAAC,OAAA;AACA,IAAAC,iBAAA,GAAAD,OAAA;AAEO,MAAME,kBAAkB,SAASC,kCAAgB,CAAC;EACvDC,uBAAuBA,CAACC,CAAC,EAAEC,CAAC,EAAE;IAE5B,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;EAC/C;EAEAE,oBAAoBA,CAACC,IAAI,EAAEC,UAAU,EAAE;IACrC,KAAK,CAACF,oBAAoB,CAACC,IAAI,EAAEC,UAAU,CAAC;IAG5C,IAAI,CAACD,IAAI,CAACE,2BAA2B,EAAE;MACrC;IACF;IAEA,MAAMC,WAAW,GAAGH,IAAI,CAACI,QAAQ,CAACC,MAAM,GAAG,CAAC;IAC5C,IAAIL,IAAI,CAACM,iBAAiB,IAAIH,WAAW,EAAE;MAIzC,MAAMI,UAAU,GAAGP,IAAI,CAACI,QAAQ,CAAC,CAAC,CAAC;MACnC,IAAI,CAACL,oBAAoB,CAACQ,UAAU,EAAEN,UAAU,CAAC;MACjDD,IAAI,CAACQ,QAAQ,GAAGD,UAAU,CAACC,QAAQ;MACnC;IACF;IAEA,IAAI,IAAI,CAACC,0BAA0B,CAACT,IAAI,EAAEC,UAAU,CAAC,EAAE;MACrDD,IAAI,CAACQ,QAAQ,GAAG,KAAK;MACrB;IACF;IAEA,MAAME,OAAO,GAAGV,IAAI,CAACW,MAAM,KAAKC,0BAAe,CAACC,OAAO;IACvD,MAAMC,eAAe,GACnBd,IAAI,CAACe,0BAA0B,KAAKC,mCAAwB,CAACC,gBAAgB;IAC/E,IAAIP,OAAO,IAAII,eAAe,IAAIX,WAAW,EAAE;MAC7C,IAAI,CAAC,IAAI,CAACe,kBAAkB,CAAClB,IAAI,EAAEC,UAAU,CAAC,EAAE;QAC9CD,IAAI,CAACQ,QAAQ,GAAG,KAAK;QACrB;MACF;IACF;EACF;EAEAC,0BAA0BA,CAACT,IAAI,EAAEC,UAAU,EAAE;IAC3C,MAAM;MAACkB;IAAM,CAAC,GAAGnB,IAAI;IACrB,IAAI,CAACmB,MAAM,IAAIA,MAAM,CAACb,iBAAiB,IAAIa,MAAM,CAACR,MAAM,KAAKC,0BAAe,CAACQ,GAAG,EAAE;MAChF,OAAO,KAAK;IACd;IAGA,OAAO,CAAC,IAAI,CAACC,YAAY,CAACrB,IAAI,EAAEC,UAAU,EAAE,IAAI,CAAC;EACnD;AACF;AAACqB,OAAA,CAAA9B,kBAAA,GAAAA,kBAAA"}
@@ -5,41 +5,30 @@ Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
7
  exports.I3SPendingTilesRegister = void 0;
8
- var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
9
- var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
10
8
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
11
- var I3SPendingTilesRegister = function () {
12
- function I3SPendingTilesRegister() {
13
- (0, _classCallCheck2.default)(this, I3SPendingTilesRegister);
9
+ class I3SPendingTilesRegister {
10
+ constructor() {
14
11
  (0, _defineProperty2.default)(this, "frameNumberMap", new Map());
15
12
  }
16
- (0, _createClass2.default)(I3SPendingTilesRegister, [{
17
- key: "register",
18
- value: function register(viewportId, frameNumber) {
19
- var viewportMap = this.frameNumberMap.get(viewportId) || new Map();
20
- var oldCount = viewportMap.get(frameNumber) || 0;
21
- viewportMap.set(frameNumber, oldCount + 1);
22
- this.frameNumberMap.set(viewportId, viewportMap);
23
- }
24
- }, {
25
- key: "deregister",
26
- value: function deregister(viewportId, frameNumber) {
27
- var viewportMap = this.frameNumberMap.get(viewportId);
28
- if (!viewportMap) {
29
- return;
30
- }
31
- var oldCount = viewportMap.get(frameNumber) || 1;
32
- viewportMap.set(frameNumber, oldCount - 1);
33
- }
34
- }, {
35
- key: "isZero",
36
- value: function isZero(viewportId, frameNumber) {
37
- var _this$frameNumberMap$;
38
- var count = ((_this$frameNumberMap$ = this.frameNumberMap.get(viewportId)) === null || _this$frameNumberMap$ === void 0 ? void 0 : _this$frameNumberMap$.get(frameNumber)) || 0;
39
- return count === 0;
13
+ register(viewportId, frameNumber) {
14
+ const viewportMap = this.frameNumberMap.get(viewportId) || new Map();
15
+ const oldCount = viewportMap.get(frameNumber) || 0;
16
+ viewportMap.set(frameNumber, oldCount + 1);
17
+ this.frameNumberMap.set(viewportId, viewportMap);
18
+ }
19
+ deregister(viewportId, frameNumber) {
20
+ const viewportMap = this.frameNumberMap.get(viewportId);
21
+ if (!viewportMap) {
22
+ return;
40
23
  }
41
- }]);
42
- return I3SPendingTilesRegister;
43
- }();
24
+ const oldCount = viewportMap.get(frameNumber) || 1;
25
+ viewportMap.set(frameNumber, oldCount - 1);
26
+ }
27
+ isZero(viewportId, frameNumber) {
28
+ var _this$frameNumberMap$;
29
+ const count = ((_this$frameNumberMap$ = this.frameNumberMap.get(viewportId)) === null || _this$frameNumberMap$ === void 0 ? void 0 : _this$frameNumberMap$.get(frameNumber)) || 0;
30
+ return count === 0;
31
+ }
32
+ }
44
33
  exports.I3SPendingTilesRegister = I3SPendingTilesRegister;
45
34
  //# sourceMappingURL=i3s-pending-tiles-register.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"i3s-pending-tiles-register.js","names":["I3SPendingTilesRegister","_classCallCheck2","default","_defineProperty2","Map","_createClass2","key","value","register","viewportId","frameNumber","viewportMap","frameNumberMap","get","oldCount","set","deregister","isZero","_this$frameNumberMap$","count","exports"],"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,SAAAA,wBAAA;IAAA,IAAAC,gBAAA,CAAAC,OAAA,QAAAF,uBAAA;IAAA,IAAAG,gBAAA,CAAAD,OAAA,0BACyB,IAAIE,GAAG,CAAC,CAAC;EAAA;EAAA,IAAAC,aAAA,CAAAH,OAAA,EAAAF,uBAAA;IAAAM,GAAA;IAAAC,KAAA,EAOpE,SAAAC,SAASC,UAAkB,EAAEC,WAAmB,EAAE;MAChD,IAAMC,WAAW,GAAG,IAAI,CAACC,cAAc,CAACC,GAAG,CAACJ,UAAU,CAAC,IAAI,IAAIL,GAAG,CAAC,CAAC;MACpE,IAAMU,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;IAAAL,GAAA;IAAAC,KAAA,EAOD,SAAAS,WAAWP,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;IAAAR,GAAA;IAAAC,KAAA,EAQD,SAAAU,OAAOR,UAAkB,EAAEC,WAAmB,EAAE;MAAA,IAAAQ,qBAAA;MAC9C,IAAMC,KAAK,GAAG,EAAAD,qBAAA,OAAI,CAACN,cAAc,CAACC,GAAG,CAACJ,UAAU,CAAC,cAAAS,qBAAA,uBAAnCA,qBAAA,CAAqCL,GAAG,CAACH,WAAW,CAAC,KAAI,CAAC;MACxE,OAAOS,KAAK,KAAK,CAAC;IACpB;EAAC;EAAA,OAAAnB,uBAAA;AAAA;AAAAoB,OAAA,CAAApB,uBAAA,GAAAA,uBAAA"}
1
+ {"version":3,"file":"i3s-pending-tiles-register.js","names":["I3SPendingTilesRegister","constructor","_defineProperty2","default","Map","register","viewportId","frameNumber","viewportMap","frameNumberMap","get","oldCount","set","deregister","isZero","_this$frameNumberMap$","count","exports"],"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":";;;;;;;;AAIO,MAAMA,uBAAuB,CAAC;EAAAC,YAAA;IAAA,IAAAC,gBAAA,CAAAC,OAAA,0BACwB,IAAIC,GAAG,CAAC,CAAC;EAAA;EAOpEC,QAAQA,CAACC,UAAkB,EAAEC,WAAmB,EAAE;IAChD,MAAMC,WAAW,GAAG,IAAI,CAACC,cAAc,CAACC,GAAG,CAACJ,UAAU,CAAC,IAAI,IAAIF,GAAG,CAAC,CAAC;IACpE,MAAMO,QAAQ,GAAGH,WAAW,CAACE,GAAG,CAACH,WAAW,CAAC,IAAI,CAAC;IAClDC,WAAW,CAACI,GAAG,CAACL,WAAW,EAAEI,QAAQ,GAAG,CAAC,CAAC;IAC1C,IAAI,CAACF,cAAc,CAACG,GAAG,CAACN,UAAU,EAAEE,WAAW,CAAC;EAClD;EAOAK,UAAUA,CAACP,UAAkB,EAAEC,WAAmB,EAAE;IAClD,MAAMC,WAAW,GAAG,IAAI,CAACC,cAAc,CAACC,GAAG,CAACJ,UAAU,CAAC;IACvD,IAAI,CAACE,WAAW,EAAE;MAChB;IACF;IACA,MAAMG,QAAQ,GAAGH,WAAW,CAACE,GAAG,CAACH,WAAW,CAAC,IAAI,CAAC;IAClDC,WAAW,CAACI,GAAG,CAACL,WAAW,EAAEI,QAAQ,GAAG,CAAC,CAAC;EAC5C;EAQAG,MAAMA,CAACR,UAAkB,EAAEC,WAAmB,EAAE;IAAA,IAAAQ,qBAAA;IAC9C,MAAMC,KAAK,GAAG,EAAAD,qBAAA,OAAI,CAACN,cAAc,CAACC,GAAG,CAACJ,UAAU,CAAC,cAAAS,qBAAA,uBAAnCA,qBAAA,CAAqCL,GAAG,CAACH,WAAW,CAAC,KAAI,CAAC;IACxE,OAAOS,KAAK,KAAK,CAAC;EACpB;AACF;AAACC,OAAA,CAAAjB,uBAAA,GAAAA,uBAAA"}
@@ -5,80 +5,83 @@ Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
7
  exports.I3STileManager = void 0;
8
- var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
9
- var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
10
8
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
11
9
  var _i3sPendingTilesRegister = require("./i3s-pending-tiles-register");
12
- var STATUS = {
10
+ const STATUS = {
13
11
  REQUESTED: 'REQUESTED',
14
12
  COMPLETED: 'COMPLETED',
15
13
  ERROR: 'ERROR'
16
14
  };
17
- var I3STileManager = function () {
18
- function I3STileManager() {
19
- (0, _classCallCheck2.default)(this, I3STileManager);
15
+ class I3STileManager {
16
+ constructor() {
20
17
  (0, _defineProperty2.default)(this, "_statusMap", void 0);
21
18
  (0, _defineProperty2.default)(this, "pendingTilesRegister", new _i3sPendingTilesRegister.I3SPendingTilesRegister());
22
19
  this._statusMap = {};
23
20
  }
24
- (0, _createClass2.default)(I3STileManager, [{
25
- key: "add",
26
- value: function add(request, key, callback, frameState) {
27
- var _this = this;
28
- if (!this._statusMap[key]) {
29
- var frameNumber = frameState.frameNumber,
30
- id = frameState.viewport.id;
31
- this._statusMap[key] = {
32
- request: request,
33
- callback: callback,
34
- key: key,
35
- frameState: frameState,
36
- status: STATUS.REQUESTED
37
- };
38
- this.pendingTilesRegister.register(id, frameNumber);
39
- request().then(function (data) {
40
- _this._statusMap[key].status = STATUS.COMPLETED;
41
- var _this$_statusMap$key$ = _this._statusMap[key].frameState,
42
- actualFrameNumber = _this$_statusMap$key$.frameNumber,
43
- id = _this$_statusMap$key$.viewport.id;
44
- _this.pendingTilesRegister.deregister(id, actualFrameNumber);
45
- _this._statusMap[key].callback(data, frameState);
46
- }).catch(function (error) {
47
- _this._statusMap[key].status = STATUS.ERROR;
48
- var _this$_statusMap$key$2 = _this._statusMap[key].frameState,
49
- actualFrameNumber = _this$_statusMap$key$2.frameNumber,
50
- id = _this$_statusMap$key$2.viewport.id;
51
- _this.pendingTilesRegister.deregister(id, actualFrameNumber);
52
- callback(error);
53
- });
54
- }
21
+ add(request, key, callback, frameState) {
22
+ if (!this._statusMap[key]) {
23
+ const {
24
+ frameNumber,
25
+ viewport: {
26
+ id
27
+ }
28
+ } = frameState;
29
+ this._statusMap[key] = {
30
+ request,
31
+ callback,
32
+ key,
33
+ frameState,
34
+ status: STATUS.REQUESTED
35
+ };
36
+ this.pendingTilesRegister.register(id, frameNumber);
37
+ request().then(data => {
38
+ this._statusMap[key].status = STATUS.COMPLETED;
39
+ const {
40
+ frameNumber: actualFrameNumber,
41
+ viewport: {
42
+ id
43
+ }
44
+ } = this._statusMap[key].frameState;
45
+ this.pendingTilesRegister.deregister(id, actualFrameNumber);
46
+ this._statusMap[key].callback(data, frameState);
47
+ }).catch(error => {
48
+ this._statusMap[key].status = STATUS.ERROR;
49
+ const {
50
+ frameNumber: actualFrameNumber,
51
+ viewport: {
52
+ id
53
+ }
54
+ } = this._statusMap[key].frameState;
55
+ this.pendingTilesRegister.deregister(id, actualFrameNumber);
56
+ callback(error);
57
+ });
55
58
  }
56
- }, {
57
- key: "update",
58
- value: function update(key, frameState) {
59
- if (this._statusMap[key]) {
60
- var _this$_statusMap$key$3 = this._statusMap[key].frameState,
61
- frameNumber = _this$_statusMap$key$3.frameNumber,
62
- id = _this$_statusMap$key$3.viewport.id;
63
- this.pendingTilesRegister.deregister(id, frameNumber);
64
- var newFrameNumber = frameState.frameNumber,
65
- newViewportId = frameState.viewport.id;
66
- this.pendingTilesRegister.register(newViewportId, newFrameNumber);
67
- this._statusMap[key].frameState = frameState;
68
- }
69
- }
70
- }, {
71
- key: "find",
72
- value: function find(key) {
73
- return this._statusMap[key];
74
- }
75
- }, {
76
- key: "hasPendingTiles",
77
- value: function hasPendingTiles(viewportId, frameNumber) {
78
- return !this.pendingTilesRegister.isZero(viewportId, frameNumber);
59
+ }
60
+ update(key, frameState) {
61
+ if (this._statusMap[key]) {
62
+ const {
63
+ frameNumber,
64
+ viewport: {
65
+ id
66
+ }
67
+ } = this._statusMap[key].frameState;
68
+ this.pendingTilesRegister.deregister(id, frameNumber);
69
+ const {
70
+ frameNumber: newFrameNumber,
71
+ viewport: {
72
+ id: newViewportId
73
+ }
74
+ } = frameState;
75
+ this.pendingTilesRegister.register(newViewportId, newFrameNumber);
76
+ this._statusMap[key].frameState = frameState;
79
77
  }
80
- }]);
81
- return I3STileManager;
82
- }();
78
+ }
79
+ find(key) {
80
+ return this._statusMap[key];
81
+ }
82
+ hasPendingTiles(viewportId, frameNumber) {
83
+ return !this.pendingTilesRegister.isZero(viewportId, frameNumber);
84
+ }
85
+ }
83
86
  exports.I3STileManager = I3STileManager;
84
87
  //# sourceMappingURL=i3s-tile-manager.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"i3s-tile-manager.js","names":["_i3sPendingTilesRegister","require","STATUS","REQUESTED","COMPLETED","ERROR","I3STileManager","_classCallCheck2","default","_defineProperty2","I3SPendingTilesRegister","_statusMap","_createClass2","key","value","add","request","callback","frameState","_this","frameNumber","id","viewport","status","pendingTilesRegister","register","then","data","_this$_statusMap$key$","actualFrameNumber","deregister","catch","error","_this$_statusMap$key$2","update","_this$_statusMap$key$3","newFrameNumber","newViewportId","find","hasPendingTiles","viewportId","isZero","exports"],"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":";;;;;;;;;;AACA,IAAAA,wBAAA,GAAAC,OAAA;AAEA,IAAMC,MAAM,GAAG;EACbC,SAAS,EAAE,WAAW;EACtBC,SAAS,EAAE,WAAW;EACtBC,KAAK,EAAE;AACT,CAAC;AAAC,IAGWC,cAAc;EAIzB,SAAAA,eAAA,EAAc;IAAA,IAAAC,gBAAA,CAAAC,OAAA,QAAAF,cAAA;IAAA,IAAAG,gBAAA,CAAAD,OAAA;IAAA,IAAAC,gBAAA,CAAAD,OAAA,gCAFiB,IAAIE,gDAAuB,CAAC,CAAC;IAG1D,IAAI,CAACC,UAAU,GAAG,CAAC,CAAC;EACtB;EAAC,IAAAC,aAAA,CAAAJ,OAAA,EAAAF,cAAA;IAAAO,GAAA;IAAAC,KAAA,EASD,SAAAC,IAAIC,OAAO,EAAEH,GAAG,EAAEI,QAAQ,EAAEC,UAAsB,EAAE;MAAA,IAAAC,KAAA;MAClD,IAAI,CAAC,IAAI,CAACR,UAAU,CAACE,GAAG,CAAC,EAAE;QACzB,IACEO,WAAW,GAETF,UAAU,CAFZE,WAAW;UACAC,EAAE,GACXH,UAAU,CADZI,QAAQ,CAAGD,EAAE;QAEf,IAAI,CAACV,UAAU,CAACE,GAAG,CAAC,GAAG;UAACG,OAAO,EAAPA,OAAO;UAAEC,QAAQ,EAARA,QAAQ;UAAEJ,GAAG,EAAHA,GAAG;UAAEK,UAAU,EAAVA,UAAU;UAAEK,MAAM,EAAErB,MAAM,CAACC;QAAS,CAAC;QAErF,IAAI,CAACqB,oBAAoB,CAACC,QAAQ,CAACJ,EAAE,EAAED,WAAW,CAAC;QACnDJ,OAAO,CAAC,CAAC,CACNU,IAAI,CAAC,UAACC,IAAI,EAAK;UACdR,KAAI,CAACR,UAAU,CAACE,GAAG,CAAC,CAACU,MAAM,GAAGrB,MAAM,CAACE,SAAS;UAC9C,IAAAwB,qBAAA,GAGIT,KAAI,CAACR,UAAU,CAACE,GAAG,CAAC,CAACK,UAAU;YAFpBW,iBAAiB,GAAAD,qBAAA,CAA9BR,WAAW;YACAC,EAAE,GAAAO,qBAAA,CAAbN,QAAQ,CAAGD,EAAE;UAGfF,KAAI,CAACK,oBAAoB,CAACM,UAAU,CAACT,EAAE,EAAEQ,iBAAiB,CAAC;UAC3DV,KAAI,CAACR,UAAU,CAACE,GAAG,CAAC,CAACI,QAAQ,CAACU,IAAI,EAAET,UAAU,CAAC;QACjD,CAAC,CAAC,CACDa,KAAK,CAAC,UAACC,KAAK,EAAK;UAChBb,KAAI,CAACR,UAAU,CAACE,GAAG,CAAC,CAACU,MAAM,GAAGrB,MAAM,CAACG,KAAK;UAC1C,IAAA4B,sBAAA,GAGId,KAAI,CAACR,UAAU,CAACE,GAAG,CAAC,CAACK,UAAU;YAFpBW,iBAAiB,GAAAI,sBAAA,CAA9Bb,WAAW;YACAC,EAAE,GAAAY,sBAAA,CAAbX,QAAQ,CAAGD,EAAE;UAGfF,KAAI,CAACK,oBAAoB,CAACM,UAAU,CAACT,EAAE,EAAEQ,iBAAiB,CAAC;UAC3DZ,QAAQ,CAACe,KAAK,CAAC;QACjB,CAAC,CAAC;MACN;IACF;EAAC;IAAAnB,GAAA;IAAAC,KAAA,EAOD,SAAAoB,OAAOrB,GAAG,EAAEK,UAAsB,EAAE;MAClC,IAAI,IAAI,CAACP,UAAU,CAACE,GAAG,CAAC,EAAE;QAExB,IAAAsB,sBAAA,GAGI,IAAI,CAACxB,UAAU,CAACE,GAAG,CAAC,CAACK,UAAU;UAFjCE,WAAW,GAAAe,sBAAA,CAAXf,WAAW;UACAC,EAAE,GAAAc,sBAAA,CAAbb,QAAQ,CAAGD,EAAE;QAEf,IAAI,CAACG,oBAAoB,CAACM,UAAU,CAACT,EAAE,EAAED,WAAW,CAAC;QAGrD,IACegB,cAAc,GAEzBlB,UAAU,CAFZE,WAAW;UACIiB,aAAa,GAC1BnB,UAAU,CADZI,QAAQ,CAAGD,EAAE;QAEf,IAAI,CAACG,oBAAoB,CAACC,QAAQ,CAACY,aAAa,EAAED,cAAc,CAAC;QACjE,IAAI,CAACzB,UAAU,CAACE,GAAG,CAAC,CAACK,UAAU,GAAGA,UAAU;MAC9C;IACF;EAAC;IAAAL,GAAA;IAAAC,KAAA,EAOD,SAAAwB,KAAKzB,GAAG,EAAE;MACR,OAAO,IAAI,CAACF,UAAU,CAACE,GAAG,CAAC;IAC7B;EAAC;IAAAA,GAAA;IAAAC,KAAA,EAQD,SAAAyB,gBAAgBC,UAAkB,EAAEpB,WAAmB,EAAW;MAChE,OAAO,CAAC,IAAI,CAACI,oBAAoB,CAACiB,MAAM,CAACD,UAAU,EAAEpB,WAAW,CAAC;IACnE;EAAC;EAAA,OAAAd,cAAA;AAAA;AAAAoC,OAAA,CAAApC,cAAA,GAAAA,cAAA"}
1
+ {"version":3,"file":"i3s-tile-manager.js","names":["_i3sPendingTilesRegister","require","STATUS","REQUESTED","COMPLETED","ERROR","I3STileManager","constructor","_defineProperty2","default","I3SPendingTilesRegister","_statusMap","add","request","key","callback","frameState","frameNumber","viewport","id","status","pendingTilesRegister","register","then","data","actualFrameNumber","deregister","catch","error","update","newFrameNumber","newViewportId","find","hasPendingTiles","viewportId","isZero","exports"],"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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"}