@loaders.gl/tiles 3.1.0-alpha.4 → 3.1.0-alpha.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (78) hide show
  1. package/dist/bundle.d.ts +1 -0
  2. package/dist/constants.d.ts +31 -0
  3. package/dist/dist.min.js +1 -1
  4. package/dist/dist.min.js.map +1 -1
  5. package/dist/es5/bundle.js +1 -1
  6. package/dist/es5/bundle.js.map +1 -1
  7. package/dist/es5/constants.js +6 -6
  8. package/dist/es5/constants.js.map +1 -1
  9. package/dist/es5/index.js +20 -12
  10. package/dist/es5/index.js.map +1 -1
  11. package/dist/es5/tileset/helpers/bounding-volume.js +25 -37
  12. package/dist/es5/tileset/helpers/bounding-volume.js.map +1 -1
  13. package/dist/es5/tileset/helpers/frame-state.js +29 -25
  14. package/dist/es5/tileset/helpers/frame-state.js.map +1 -1
  15. package/dist/es5/tileset/helpers/i3s-lod.js +57 -106
  16. package/dist/es5/tileset/helpers/i3s-lod.js.map +1 -1
  17. package/dist/es5/tileset/helpers/tiles-3d-lod.js +51 -47
  18. package/dist/es5/tileset/helpers/tiles-3d-lod.js.map +1 -1
  19. package/dist/es5/tileset/helpers/transform-utils.js +21 -12
  20. package/dist/es5/tileset/helpers/transform-utils.js.map +1 -1
  21. package/dist/es5/tileset/helpers/zoom.js +17 -15
  22. package/dist/es5/tileset/helpers/zoom.js.map +1 -1
  23. package/dist/es5/tileset/tile-3d.js +328 -421
  24. package/dist/es5/tileset/tile-3d.js.map +1 -1
  25. package/dist/es5/tileset/tileset-3d.js +381 -563
  26. package/dist/es5/tileset/tileset-3d.js.map +1 -1
  27. package/dist/es5/tileset/tileset-cache.js +50 -63
  28. package/dist/es5/tileset/tileset-cache.js.map +1 -1
  29. package/dist/es5/tileset/traversers/i3s-tile-manager.js +32 -44
  30. package/dist/es5/tileset/traversers/i3s-tile-manager.js.map +1 -1
  31. package/dist/es5/tileset/traversers/i3s-tileset-traverser.js +53 -143
  32. package/dist/es5/tileset/traversers/i3s-tileset-traverser.js.map +1 -1
  33. package/dist/es5/tileset/traversers/tileset-3d-traverser.js +34 -62
  34. package/dist/es5/tileset/traversers/tileset-3d-traverser.js.map +1 -1
  35. package/dist/es5/tileset/traversers/tileset-traverser.js +209 -282
  36. package/dist/es5/tileset/traversers/tileset-traverser.js.map +1 -1
  37. package/dist/es5/utils/doubly-linked-list-node.js +7 -9
  38. package/dist/es5/utils/doubly-linked-list-node.js.map +1 -1
  39. package/dist/es5/utils/doubly-linked-list.js +64 -76
  40. package/dist/es5/utils/doubly-linked-list.js.map +1 -1
  41. package/dist/es5/utils/managed-array.js +86 -108
  42. package/dist/es5/utils/managed-array.js.map +1 -1
  43. package/dist/esm/index.js +1 -0
  44. package/dist/esm/index.js.map +1 -1
  45. package/dist/esm/tileset/helpers/i3s-lod.js +45 -86
  46. package/dist/esm/tileset/helpers/i3s-lod.js.map +1 -1
  47. package/dist/esm/tileset/helpers/transform-utils.js +4 -1
  48. package/dist/esm/tileset/helpers/transform-utils.js.map +1 -1
  49. package/dist/esm/tileset/tile-3d.js +3 -3
  50. package/dist/esm/tileset/tile-3d.js.map +1 -1
  51. package/dist/esm/tileset/tileset-3d.js +5 -5
  52. package/dist/esm/tileset/tileset-3d.js.map +1 -1
  53. package/dist/esm/tileset/traversers/i3s-tileset-traverser.js +4 -4
  54. package/dist/esm/tileset/traversers/i3s-tileset-traverser.js.map +1 -1
  55. package/dist/index.d.ts +10 -0
  56. package/dist/tileset/helpers/3d-tiles-options.d.ts +3 -0
  57. package/dist/tileset/helpers/bounding-volume.d.ts +8 -0
  58. package/dist/tileset/helpers/frame-state.d.ts +16 -0
  59. package/dist/tileset/helpers/i3s-lod.d.ts +19 -0
  60. package/dist/tileset/helpers/tiles-3d-lod.d.ts +7 -0
  61. package/dist/tileset/helpers/transform-utils.d.ts +1 -0
  62. package/dist/tileset/helpers/zoom.d.ts +6 -0
  63. package/dist/tileset/tile-3d.d.ts +173 -0
  64. package/dist/tileset/tileset-3d.d.ts +171 -0
  65. package/dist/tileset/tileset-cache.d.ts +17 -0
  66. package/dist/tileset/traversers/i3s-tile-manager.d.ts +7 -0
  67. package/dist/tileset/traversers/i3s-tileset-traverser.d.ts +17 -0
  68. package/dist/tileset/traversers/tileset-3d-traverser.d.ts +6 -0
  69. package/dist/tileset/traversers/tileset-traverser.d.ts +51 -0
  70. package/dist/utils/doubly-linked-list-node.d.ts +11 -0
  71. package/dist/utils/doubly-linked-list.d.ts +30 -0
  72. package/dist/utils/managed-array.d.ts +84 -0
  73. package/package.json +9 -6
  74. package/src/index.ts +1 -0
  75. package/src/tileset/helpers/i3s-lod.ts +72 -96
  76. package/src/tileset/helpers/transform-utils.ts +3 -1
  77. package/src/tileset/tile-3d.ts +2 -2
  78. package/src/tileset/traversers/i3s-tileset-traverser.ts +2 -3
@@ -7,22 +7,6 @@ Object.defineProperty(exports, "__esModule", {
7
7
  });
8
8
  exports.default = void 0;
9
9
 
10
- var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
11
-
12
- var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
13
-
14
- var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
15
-
16
- var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
17
-
18
- var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
19
-
20
- var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
21
-
22
- var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
23
-
24
- var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
25
-
26
10
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
27
11
 
28
12
  var _core = require("@loaders.gl/core");
@@ -35,151 +19,77 @@ var _tile3d = _interopRequireDefault(require("../tile-3d"));
35
19
 
36
20
  var _i3sTileManager = _interopRequireDefault(require("./i3s-tile-manager"));
37
21
 
38
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
39
-
40
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
41
-
42
- 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; } } }; }
43
-
44
- function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
45
-
46
- function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
47
-
48
- 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); }; }
22
+ class I3STilesetTraverser extends _tilesetTraverser.default {
23
+ constructor(options) {
24
+ super(options);
25
+ (0, _defineProperty2.default)(this, "_tileManager", void 0);
26
+ this._tileManager = new _i3sTileManager.default();
27
+ }
49
28
 
50
- 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; } }
29
+ shouldRefine(tile, frameState) {
30
+ tile._lodJudge = (0, _i3sLod.getLodStatus)(tile, frameState);
31
+ return tile._lodJudge === 'DIG';
32
+ }
51
33
 
52
- var I3STilesetTraverser = function (_TilesetTraverser) {
53
- (0, _inherits2.default)(I3STilesetTraverser, _TilesetTraverser);
34
+ updateChildTiles(tile, frameState) {
35
+ const children = tile.header.children || [];
36
+ const childTiles = tile.children;
37
+ const tileset = tile.tileset;
54
38
 
55
- var _super = _createSuper(I3STilesetTraverser);
39
+ for (const child of children) {
40
+ const extendedId = "".concat(child.id, "-").concat(frameState.viewport.id);
41
+ const childTile = childTiles && childTiles.find(t => t.id === extendedId);
56
42
 
57
- function I3STilesetTraverser(options) {
58
- var _this;
43
+ if (!childTile) {
44
+ let request = () => this._loadTile(child.id, tileset);
59
45
 
60
- (0, _classCallCheck2.default)(this, I3STilesetTraverser);
61
- _this = _super.call(this, options);
62
- (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "_tileManager", void 0);
63
- _this._tileManager = new _i3sTileManager.default();
64
- return _this;
65
- }
46
+ const cachedRequest = this._tileManager.find(extendedId);
66
47
 
67
- (0, _createClass2.default)(I3STilesetTraverser, [{
68
- key: "shouldRefine",
69
- value: function shouldRefine(tile, frameState) {
70
- tile._lodJudge = (0, _i3sLod.lodJudge)(tile, frameState);
71
- return tile._lodJudge === 'DIG';
72
- }
73
- }, {
74
- key: "updateChildTiles",
75
- value: function updateChildTiles(tile, frameState) {
76
- var _this2 = this;
77
-
78
- var children = tile.header.children || [];
79
- var childTiles = tile.children;
80
- var tileset = tile.tileset;
81
-
82
- var _iterator = _createForOfIteratorHelper(children),
83
- _step;
84
-
85
- try {
86
- var _loop = function _loop() {
87
- var child = _step.value;
88
- var extendedId = "".concat(child.id, "-").concat(frameState.viewport.id);
89
- var childTile = childTiles && childTiles.find(function (t) {
90
- return t.id === extendedId;
91
- });
92
-
93
- if (!childTile) {
94
- var request = function request() {
95
- return _this2._loadTile(child.id, tileset);
96
- };
97
-
98
- var cachedRequest = _this2._tileManager.find(extendedId);
99
-
100
- if (!cachedRequest) {
101
- if (tileset.tileset.nodePages) {
102
- request = function request() {
103
- return tileset.tileset.nodePagesTile.formTileFromNodePages(child.id);
104
- };
105
- }
106
-
107
- _this2._tileManager.add(request, extendedId, function (header) {
108
- return _this2._onTileLoad(header, tile, extendedId);
109
- }, frameState);
110
- } else {
111
- _this2._tileManager.update(extendedId, frameState);
112
- }
113
- } else if (childTile) {
114
- _this2.updateTile(childTile, frameState);
48
+ if (!cachedRequest) {
49
+ if (tileset.tileset.nodePages) {
50
+ request = () => tileset.tileset.nodePagesTile.formTileFromNodePages(child.id);
115
51
  }
116
- };
117
52
 
118
- for (_iterator.s(); !(_step = _iterator.n()).done;) {
119
- _loop();
53
+ this._tileManager.add(request, extendedId, header => this._onTileLoad(header, tile, extendedId), frameState);
54
+ } else {
55
+ this._tileManager.update(extendedId, frameState);
120
56
  }
121
- } catch (err) {
122
- _iterator.e(err);
123
- } finally {
124
- _iterator.f();
57
+ } else if (childTile) {
58
+ this.updateTile(childTile, frameState);
125
59
  }
126
-
127
- return false;
128
60
  }
129
- }, {
130
- key: "_loadTile",
131
- value: function () {
132
- var _loadTile2 = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee(nodeId, tileset) {
133
- var loader, nodeUrl, options;
134
- return _regenerator.default.wrap(function _callee$(_context) {
135
- while (1) {
136
- switch (_context.prev = _context.next) {
137
- case 0:
138
- loader = tileset.loader;
139
- nodeUrl = tileset.getTileUrl("".concat(tileset.url, "/nodes/").concat(nodeId));
140
- options = _objectSpread(_objectSpread({}, tileset.loadOptions), {}, {
141
- i3s: _objectSpread(_objectSpread({}, tileset.loadOptions.i3s), {}, {
142
- isTileHeader: true,
143
- loadContent: false
144
- })
145
- });
146
- _context.next = 5;
147
- return (0, _core.load)(nodeUrl, loader, options);
148
-
149
- case 5:
150
- return _context.abrupt("return", _context.sent);
151
-
152
- case 6:
153
- case "end":
154
- return _context.stop();
155
- }
156
- }
157
- }, _callee);
158
- }));
159
61
 
160
- function _loadTile(_x, _x2) {
161
- return _loadTile2.apply(this, arguments);
62
+ return false;
63
+ }
64
+
65
+ async _loadTile(nodeId, tileset) {
66
+ const {
67
+ loader
68
+ } = tileset;
69
+ const nodeUrl = tileset.getTileUrl("".concat(tileset.url, "/nodes/").concat(nodeId));
70
+ const options = { ...tileset.loadOptions,
71
+ i3s: { ...tileset.loadOptions.i3s,
72
+ isTileHeader: true,
73
+ loadContent: false
162
74
  }
75
+ };
76
+ return await (0, _core.load)(nodeUrl, loader, options);
77
+ }
163
78
 
164
- return _loadTile;
165
- }()
166
- }, {
167
- key: "_onTileLoad",
168
- value: function _onTileLoad(header, tile, extendedId) {
169
- var childTile = new _tile3d.default(tile.tileset, header, tile, extendedId);
170
- tile.children.push(childTile);
79
+ _onTileLoad(header, tile, extendedId) {
80
+ const childTile = new _tile3d.default(tile.tileset, header, tile, extendedId);
81
+ tile.children.push(childTile);
171
82
 
172
- var frameState = this._tileManager.find(childTile.id).frameState;
83
+ const frameState = this._tileManager.find(childTile.id).frameState;
173
84
 
174
- this.updateTile(childTile, frameState);
85
+ this.updateTile(childTile, frameState);
175
86
 
176
- if (this._frameNumber === frameState.frameNumber) {
177
- this.executeTraversal(childTile, frameState);
178
- }
87
+ if (this._frameNumber === frameState.frameNumber) {
88
+ this.executeTraversal(childTile, frameState);
179
89
  }
180
- }]);
181
- return I3STilesetTraverser;
182
- }(_tilesetTraverser.default);
90
+ }
91
+
92
+ }
183
93
 
184
94
  exports.default = I3STilesetTraverser;
185
95
  //# sourceMappingURL=i3s-tileset-traverser.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/tileset/traversers/i3s-tileset-traverser.ts"],"names":["I3STilesetTraverser","options","_tileManager","I3STileManager","tile","frameState","_lodJudge","children","header","childTiles","tileset","child","extendedId","id","viewport","childTile","find","t","request","_loadTile","cachedRequest","nodePages","nodePagesTile","formTileFromNodePages","add","_onTileLoad","update","updateTile","nodeId","loader","nodeUrl","getTileUrl","url","loadOptions","i3s","isTileHeader","loadContent","TileHeader","push","_frameNumber","frameNumber","executeTraversal","TilesetTraverser"],"mappings":"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","sourcesContent":["import {load} from '@loaders.gl/core';\nimport TilesetTraverser from './tileset-traverser';\n\nimport {lodJudge} from '../helpers/i3s-lod';\nimport TileHeader from '../tile-3d';\nimport I3STileManager from './i3s-tile-manager';\n\nexport default class I3STilesetTraverser extends TilesetTraverser {\n private _tileManager: I3STileManager;\n\n constructor(options) {\n super(options);\n this._tileManager = new I3STileManager();\n }\n\n shouldRefine(tile, frameState) {\n // TODO refactor loaJudge\n tile._lodJudge = lodJudge(tile, frameState);\n return tile._lodJudge === 'DIG';\n }\n\n updateChildTiles(tile, 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 loadContent: false\n }\n };\n\n return await load(nodeUrl, loader, options);\n }\n\n /**\n * The callback to init TileHeader instance after loading the tile JSON\n * @param {Object} header - the tile JSON from a dataset\n * @param {TileHeader} tile - the parent TileHeader 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 TileHeader(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 (this._frameNumber === frameState.frameNumber) {\n this.executeTraversal(childTile, frameState);\n }\n }\n}\n"],"file":"i3s-tileset-traverser.js"}
1
+ {"version":3,"sources":["../../../../src/tileset/traversers/i3s-tileset-traverser.ts"],"names":["I3STilesetTraverser","TilesetTraverser","constructor","options","_tileManager","I3STileManager","shouldRefine","tile","frameState","_lodJudge","updateChildTiles","children","header","childTiles","tileset","child","extendedId","id","viewport","childTile","find","t","request","_loadTile","cachedRequest","nodePages","nodePagesTile","formTileFromNodePages","add","_onTileLoad","update","updateTile","nodeId","loader","nodeUrl","getTileUrl","url","loadOptions","i3s","isTileHeader","loadContent","TileHeader","push","_frameNumber","frameNumber","executeTraversal"],"mappings":"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","sourcesContent":["import {load} from '@loaders.gl/core';\nimport TilesetTraverser from './tileset-traverser';\n\nimport {getLodStatus} from '../helpers/i3s-lod';\nimport TileHeader from '../tile-3d';\nimport I3STileManager from './i3s-tile-manager';\n\nexport default class I3STilesetTraverser extends TilesetTraverser {\n private _tileManager: I3STileManager;\n\n constructor(options) {\n super(options);\n this._tileManager = new I3STileManager();\n }\n\n shouldRefine(tile, frameState) {\n tile._lodJudge = getLodStatus(tile, frameState);\n return tile._lodJudge === 'DIG';\n }\n\n updateChildTiles(tile, 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 loadContent: false\n }\n };\n\n return await load(nodeUrl, loader, options);\n }\n\n /**\n * The callback to init TileHeader instance after loading the tile JSON\n * @param {Object} header - the tile JSON from a dataset\n * @param {TileHeader} tile - the parent TileHeader 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 TileHeader(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 (this._frameNumber === frameState.frameNumber) {\n this.executeTraversal(childTile, frameState);\n }\n }\n}\n"],"file":"i3s-tileset-traverser.js"}
@@ -7,88 +7,60 @@ Object.defineProperty(exports, "__esModule", {
7
7
  });
8
8
  exports.default = void 0;
9
9
 
10
- var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
11
-
12
- var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
13
-
14
- var _get2 = _interopRequireDefault(require("@babel/runtime/helpers/get"));
15
-
16
- var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
17
-
18
- var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
19
-
20
- var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
21
-
22
10
  var _constants = require("../../constants");
23
11
 
24
12
  var _tilesetTraverser = _interopRequireDefault(require("./tileset-traverser"));
25
13
 
26
- 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); }; }
14
+ class Tileset3DTraverser extends _tilesetTraverser.default {
15
+ compareDistanceToCamera(a, b) {
16
+ return b._distanceToCamera === 0 && a._distanceToCamera === 0 ? b._centerZDepth - a._centerZDepth : b._distanceToCamera - a._distanceToCamera;
17
+ }
27
18
 
28
- 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; } }
19
+ updateTileVisibility(tile, frameState) {
20
+ super.updateTileVisibility(tile, frameState);
29
21
 
30
- var Tileset3DTraverser = function (_TilesetTraverser) {
31
- (0, _inherits2.default)(Tileset3DTraverser, _TilesetTraverser);
22
+ if (!tile.isVisibleAndInRequestVolume) {
23
+ return;
24
+ }
32
25
 
33
- var _super = _createSuper(Tileset3DTraverser);
26
+ const hasChildren = tile.children.length > 0;
34
27
 
35
- function Tileset3DTraverser() {
36
- (0, _classCallCheck2.default)(this, Tileset3DTraverser);
37
- return _super.apply(this, arguments);
38
- }
39
-
40
- (0, _createClass2.default)(Tileset3DTraverser, [{
41
- key: "compareDistanceToCamera",
42
- value: function compareDistanceToCamera(a, b) {
43
- return b._distanceToCamera === 0 && a._distanceToCamera === 0 ? b._centerZDepth - a._centerZDepth : b._distanceToCamera - a._distanceToCamera;
28
+ if (tile.hasTilesetContent && hasChildren) {
29
+ const firstChild = tile.children[0];
30
+ this.updateTileVisibility(firstChild, frameState);
31
+ tile._visible = firstChild._visible;
32
+ return;
44
33
  }
45
- }, {
46
- key: "updateTileVisibility",
47
- value: function updateTileVisibility(tile, frameState) {
48
- (0, _get2.default)((0, _getPrototypeOf2.default)(Tileset3DTraverser.prototype), "updateTileVisibility", this).call(this, tile, frameState);
49
-
50
- if (!tile.isVisibleAndInRequestVolume) {
51
- return;
52
- }
53
34
 
54
- var hasChildren = tile.children.length > 0;
35
+ if (this.meetsScreenSpaceErrorEarly(tile, frameState)) {
36
+ tile._visible = false;
37
+ return;
38
+ }
55
39
 
56
- if (tile.hasTilesetContent && hasChildren) {
57
- var firstChild = tile.children[0];
58
- this.updateTileVisibility(firstChild, frameState);
59
- tile._visible = firstChild._visible;
60
- return;
61
- }
40
+ const replace = tile.refine === _constants.TILE_REFINEMENT.REPLACE;
41
+ const useOptimization = tile._optimChildrenWithinParent === _constants.TILE3D_OPTIMIZATION_HINT.USE_OPTIMIZATION;
62
42
 
63
- if (this.meetsScreenSpaceErrorEarly(tile, frameState)) {
43
+ if (replace && useOptimization && hasChildren) {
44
+ if (!this.anyChildrenVisible(tile, frameState)) {
64
45
  tile._visible = false;
65
46
  return;
66
47
  }
48
+ }
49
+ }
67
50
 
68
- var replace = tile.refine === _constants.TILE_REFINEMENT.REPLACE;
69
- var useOptimization = tile._optimChildrenWithinParent === _constants.TILE3D_OPTIMIZATION_HINT.USE_OPTIMIZATION;
51
+ meetsScreenSpaceErrorEarly(tile, frameState) {
52
+ const {
53
+ parent
54
+ } = tile;
70
55
 
71
- if (replace && useOptimization && hasChildren) {
72
- if (!this.anyChildrenVisible(tile, frameState)) {
73
- tile._visible = false;
74
- return;
75
- }
76
- }
56
+ if (!parent || parent.hasTilesetContent || parent.refine !== _constants.TILE_REFINEMENT.ADD) {
57
+ return false;
77
58
  }
78
- }, {
79
- key: "meetsScreenSpaceErrorEarly",
80
- value: function meetsScreenSpaceErrorEarly(tile, frameState) {
81
- var parent = tile.parent;
82
59
 
83
- if (!parent || parent.hasTilesetContent || parent.refine !== _constants.TILE_REFINEMENT.ADD) {
84
- return false;
85
- }
60
+ return !this.shouldRefine(tile, frameState, true);
61
+ }
86
62
 
87
- return !this.shouldRefine(tile, frameState, true);
88
- }
89
- }]);
90
- return Tileset3DTraverser;
91
- }(_tilesetTraverser.default);
63
+ }
92
64
 
93
65
  exports.default = Tileset3DTraverser;
94
66
  //# sourceMappingURL=tileset-3d-traverser.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/tileset/traversers/tileset-3d-traverser.ts"],"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"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAGA;;AACA;;;;;;IAEqBA,kB;;;;;;;;;;;;WACnB,iCAAwBC,CAAxB,EAA2BC,CAA3B,EAA8B;AAE5B,aAAOA,CAAC,CAACC,iBAAF,KAAwB,CAAxB,IAA6BF,CAAC,CAACE,iBAAF,KAAwB,CAArD,GACHD,CAAC,CAACE,aAAF,GAAkBH,CAAC,CAACG,aADjB,GAEHF,CAAC,CAACC,iBAAF,GAAsBF,CAAC,CAACE,iBAF5B;AAGD;;;WAED,8BAAqBE,IAArB,EAA2BC,UAA3B,EAAuC;AACrC,+HAA2BD,IAA3B,EAAiCC,UAAjC;;AAGA,UAAI,CAACD,IAAI,CAACE,2BAAV,EAAuC;AACrC;AACD;;AAED,UAAMC,WAAW,GAAGH,IAAI,CAACI,QAAL,CAAcC,MAAd,GAAuB,CAA3C;;AACA,UAAIL,IAAI,CAACM,iBAAL,IAA0BH,WAA9B,EAA2C;AAIzC,YAAMI,UAAU,GAAGP,IAAI,CAACI,QAAL,CAAc,CAAd,CAAnB;AACA,aAAKI,oBAAL,CAA0BD,UAA1B,EAAsCN,UAAtC;AACAD,QAAAA,IAAI,CAACS,QAAL,GAAgBF,UAAU,CAACE,QAA3B;AACA;AACD;;AAED,UAAI,KAAKC,0BAAL,CAAgCV,IAAhC,EAAsCC,UAAtC,CAAJ,EAAuD;AACrDD,QAAAA,IAAI,CAACS,QAAL,GAAgB,KAAhB;AACA;AACD;;AAED,UAAME,OAAO,GAAGX,IAAI,CAACY,MAAL,KAAgBC,2BAAgBC,OAAhD;AACA,UAAMC,eAAe,GACnBf,IAAI,CAACgB,0BAAL,KAAoCC,oCAAyBC,gBAD/D;;AAEA,UAAIP,OAAO,IAAII,eAAX,IAA8BZ,WAAlC,EAA+C;AAC7C,YAAI,CAAC,KAAKgB,kBAAL,CAAwBnB,IAAxB,EAA8BC,UAA9B,CAAL,EAAgD;AAC9CD,UAAAA,IAAI,CAACS,QAAL,GAAgB,KAAhB;AACA;AACD;AACF;AACF;;;WAED,oCAA2BT,IAA3B,EAAiCC,UAAjC,EAA6C;AAC3C,UAAOmB,MAAP,GAAiBpB,IAAjB,CAAOoB,MAAP;;AACA,UAAI,CAACA,MAAD,IAAWA,MAAM,CAACd,iBAAlB,IAAuCc,MAAM,CAACR,MAAP,KAAkBC,2BAAgBQ,GAA7E,EAAkF;AAChF,eAAO,KAAP;AACD;;AAGD,aAAO,CAAC,KAAKC,YAAL,CAAkBtB,IAAlB,EAAwBC,UAAxB,EAAoC,IAApC,CAAR;AACD;;;EAnD6CsB,yB","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\nimport {TILE3D_OPTIMIZATION_HINT, TILE_REFINEMENT} from '../../constants';\nimport TilesetTraverser from './tileset-traverser';\n\nexport default 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"],"file":"tileset-3d-traverser.js"}
1
+ {"version":3,"sources":["../../../../src/tileset/traversers/tileset-3d-traverser.ts"],"names":["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"],"mappings":";;;;;;;;;AAGA;;AACA;;AAEe,MAAMA,kBAAN,SAAiCC,yBAAjC,CAAkD;AAC/DC,EAAAA,uBAAuB,CAACC,CAAD,EAAIC,CAAJ,EAAO;AAE5B,WAAOA,CAAC,CAACC,iBAAF,KAAwB,CAAxB,IAA6BF,CAAC,CAACE,iBAAF,KAAwB,CAArD,GACHD,CAAC,CAACE,aAAF,GAAkBH,CAAC,CAACG,aADjB,GAEHF,CAAC,CAACC,iBAAF,GAAsBF,CAAC,CAACE,iBAF5B;AAGD;;AAEDE,EAAAA,oBAAoB,CAACC,IAAD,EAAOC,UAAP,EAAmB;AACrC,UAAMF,oBAAN,CAA2BC,IAA3B,EAAiCC,UAAjC;;AAGA,QAAI,CAACD,IAAI,CAACE,2BAAV,EAAuC;AACrC;AACD;;AAED,UAAMC,WAAW,GAAGH,IAAI,CAACI,QAAL,CAAcC,MAAd,GAAuB,CAA3C;;AACA,QAAIL,IAAI,CAACM,iBAAL,IAA0BH,WAA9B,EAA2C;AAIzC,YAAMI,UAAU,GAAGP,IAAI,CAACI,QAAL,CAAc,CAAd,CAAnB;AACA,WAAKL,oBAAL,CAA0BQ,UAA1B,EAAsCN,UAAtC;AACAD,MAAAA,IAAI,CAACQ,QAAL,GAAgBD,UAAU,CAACC,QAA3B;AACA;AACD;;AAED,QAAI,KAAKC,0BAAL,CAAgCT,IAAhC,EAAsCC,UAAtC,CAAJ,EAAuD;AACrDD,MAAAA,IAAI,CAACQ,QAAL,GAAgB,KAAhB;AACA;AACD;;AAED,UAAME,OAAO,GAAGV,IAAI,CAACW,MAAL,KAAgBC,2BAAgBC,OAAhD;AACA,UAAMC,eAAe,GACnBd,IAAI,CAACe,0BAAL,KAAoCC,oCAAyBC,gBAD/D;;AAEA,QAAIP,OAAO,IAAII,eAAX,IAA8BX,WAAlC,EAA+C;AAC7C,UAAI,CAAC,KAAKe,kBAAL,CAAwBlB,IAAxB,EAA8BC,UAA9B,CAAL,EAAgD;AAC9CD,QAAAA,IAAI,CAACQ,QAAL,GAAgB,KAAhB;AACA;AACD;AACF;AACF;;AAEDC,EAAAA,0BAA0B,CAACT,IAAD,EAAOC,UAAP,EAAmB;AAC3C,UAAM;AAACkB,MAAAA;AAAD,QAAWnB,IAAjB;;AACA,QAAI,CAACmB,MAAD,IAAWA,MAAM,CAACb,iBAAlB,IAAuCa,MAAM,CAACR,MAAP,KAAkBC,2BAAgBQ,GAA7E,EAAkF;AAChF,aAAO,KAAP;AACD;;AAGD,WAAO,CAAC,KAAKC,YAAL,CAAkBrB,IAAlB,EAAwBC,UAAxB,EAAoC,IAApC,CAAR;AACD;;AAnD8D","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\nimport {TILE3D_OPTIMIZATION_HINT, TILE_REFINEMENT} from '../../constants';\nimport TilesetTraverser from './tileset-traverser';\n\nexport default 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"],"file":"tileset-3d-traverser.js"}