@loaders.gl/tiles 3.0.13 → 3.0.14
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/dist.es5.min.js +1 -1
- package/dist/dist.es5.min.js.map +1 -1
- package/dist/dist.min.js +1 -1
- package/dist/dist.min.js.map +1 -1
- package/dist/es5/bundle.js +2 -2
- package/dist/es5/bundle.js.map +1 -1
- package/dist/es5/constants.js +6 -6
- package/dist/es5/constants.js.map +1 -1
- package/dist/es5/index.js +12 -12
- package/dist/es5/tileset/helpers/bounding-volume.js +37 -25
- package/dist/es5/tileset/helpers/bounding-volume.js.map +1 -1
- package/dist/es5/tileset/helpers/frame-state.js +25 -29
- package/dist/es5/tileset/helpers/frame-state.js.map +1 -1
- package/dist/es5/tileset/helpers/i3s-lod.js +66 -51
- package/dist/es5/tileset/helpers/i3s-lod.js.map +1 -1
- package/dist/es5/tileset/helpers/tiles-3d-lod.js +47 -51
- package/dist/es5/tileset/helpers/tiles-3d-lod.js.map +1 -1
- package/dist/es5/tileset/helpers/transform-utils.js +11 -17
- package/dist/es5/tileset/helpers/transform-utils.js.map +1 -1
- package/dist/es5/tileset/helpers/zoom.js +15 -17
- package/dist/es5/tileset/helpers/zoom.js.map +1 -1
- package/dist/es5/tileset/tile-3d.js +421 -328
- package/dist/es5/tileset/tile-3d.js.map +1 -1
- package/dist/es5/tileset/tileset-3d.js +563 -381
- package/dist/es5/tileset/tileset-3d.js.map +1 -1
- package/dist/es5/tileset/tileset-cache.js +63 -50
- package/dist/es5/tileset/tileset-cache.js.map +1 -1
- package/dist/es5/tileset/traversers/i3s-tile-manager.js +44 -32
- package/dist/es5/tileset/traversers/i3s-tile-manager.js.map +1 -1
- package/dist/es5/tileset/traversers/i3s-tileset-traverser.js +143 -53
- package/dist/es5/tileset/traversers/i3s-tileset-traverser.js.map +1 -1
- package/dist/es5/tileset/traversers/tileset-3d-traverser.js +62 -34
- package/dist/es5/tileset/traversers/tileset-3d-traverser.js.map +1 -1
- package/dist/es5/tileset/traversers/tileset-traverser.js +282 -209
- package/dist/es5/tileset/traversers/tileset-traverser.js.map +1 -1
- package/dist/es5/utils/doubly-linked-list-node.js +9 -7
- package/dist/es5/utils/doubly-linked-list-node.js.map +1 -1
- package/dist/es5/utils/doubly-linked-list.js +76 -64
- package/dist/es5/utils/doubly-linked-list.js.map +1 -1
- package/dist/es5/utils/managed-array.js +108 -86
- package/dist/es5/utils/managed-array.js.map +1 -1
- package/package.json +5 -5
|
@@ -7,6 +7,22 @@ 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
|
+
|
|
10
26
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
11
27
|
|
|
12
28
|
var _core = require("@loaders.gl/core");
|
|
@@ -19,77 +35,151 @@ var _tile3d = _interopRequireDefault(require("../tile-3d"));
|
|
|
19
35
|
|
|
20
36
|
var _i3sTileManager = _interopRequireDefault(require("./i3s-tile-manager"));
|
|
21
37
|
|
|
22
|
-
|
|
23
|
-
constructor(options) {
|
|
24
|
-
super(options);
|
|
25
|
-
(0, _defineProperty2.default)(this, "_tileManager", void 0);
|
|
26
|
-
this._tileManager = new _i3sTileManager.default();
|
|
27
|
-
}
|
|
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; }
|
|
28
39
|
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
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; }
|
|
33
47
|
|
|
34
|
-
|
|
35
|
-
const children = tile.header.children || [];
|
|
36
|
-
const childTiles = tile.children;
|
|
37
|
-
const tileset = tile.tileset;
|
|
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); }; }
|
|
38
49
|
|
|
39
|
-
|
|
40
|
-
const extendedId = "".concat(child.id, "-").concat(frameState.viewport.id);
|
|
41
|
-
const childTile = childTiles && childTiles.find(t => t.id === extendedId);
|
|
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; } }
|
|
42
51
|
|
|
43
|
-
|
|
44
|
-
|
|
52
|
+
var I3STilesetTraverser = function (_TilesetTraverser) {
|
|
53
|
+
(0, _inherits2.default)(I3STilesetTraverser, _TilesetTraverser);
|
|
45
54
|
|
|
46
|
-
|
|
55
|
+
var _super = _createSuper(I3STilesetTraverser);
|
|
47
56
|
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
57
|
+
function I3STilesetTraverser(options) {
|
|
58
|
+
var _this;
|
|
59
|
+
|
|
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
|
+
}
|
|
66
|
+
|
|
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);
|
|
51
115
|
}
|
|
116
|
+
};
|
|
52
117
|
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
this._tileManager.update(extendedId, frameState);
|
|
118
|
+
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
119
|
+
_loop();
|
|
56
120
|
}
|
|
57
|
-
}
|
|
58
|
-
|
|
121
|
+
} catch (err) {
|
|
122
|
+
_iterator.e(err);
|
|
123
|
+
} finally {
|
|
124
|
+
_iterator.f();
|
|
59
125
|
}
|
|
60
|
-
}
|
|
61
126
|
|
|
62
|
-
|
|
63
|
-
|
|
127
|
+
return false;
|
|
128
|
+
}
|
|
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
|
+
}));
|
|
64
159
|
|
|
65
|
-
|
|
66
|
-
|
|
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
|
|
160
|
+
function _loadTile(_x, _x2) {
|
|
161
|
+
return _loadTile2.apply(this, arguments);
|
|
74
162
|
}
|
|
75
|
-
};
|
|
76
|
-
return await (0, _core.load)(nodeUrl, loader, options);
|
|
77
|
-
}
|
|
78
163
|
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
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);
|
|
82
171
|
|
|
83
|
-
|
|
172
|
+
var frameState = this._tileManager.find(childTile.id).frameState;
|
|
84
173
|
|
|
85
|
-
|
|
174
|
+
this.updateTile(childTile, frameState);
|
|
86
175
|
|
|
87
|
-
|
|
88
|
-
|
|
176
|
+
if (this._frameNumber === frameState.frameNumber) {
|
|
177
|
+
this.executeTraversal(childTile, frameState);
|
|
178
|
+
}
|
|
89
179
|
}
|
|
90
|
-
}
|
|
91
|
-
|
|
92
|
-
}
|
|
180
|
+
}]);
|
|
181
|
+
return I3STilesetTraverser;
|
|
182
|
+
}(_tilesetTraverser.default);
|
|
93
183
|
|
|
94
184
|
exports.default = I3STilesetTraverser;
|
|
95
185
|
//# sourceMappingURL=i3s-tileset-traverser.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/tileset/traversers/i3s-tileset-traverser.ts"],"names":["I3STilesetTraverser","
|
|
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"}
|
|
@@ -7,60 +7,88 @@ 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
|
+
|
|
10
22
|
var _constants = require("../../constants");
|
|
11
23
|
|
|
12
24
|
var _tilesetTraverser = _interopRequireDefault(require("./tileset-traverser"));
|
|
13
25
|
|
|
14
|
-
|
|
15
|
-
compareDistanceToCamera(a, b) {
|
|
16
|
-
return b._distanceToCamera === 0 && a._distanceToCamera === 0 ? b._centerZDepth - a._centerZDepth : b._distanceToCamera - a._distanceToCamera;
|
|
17
|
-
}
|
|
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); }; }
|
|
18
27
|
|
|
19
|
-
|
|
20
|
-
super.updateTileVisibility(tile, frameState);
|
|
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; } }
|
|
21
29
|
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
}
|
|
30
|
+
var Tileset3DTraverser = function (_TilesetTraverser) {
|
|
31
|
+
(0, _inherits2.default)(Tileset3DTraverser, _TilesetTraverser);
|
|
25
32
|
|
|
26
|
-
|
|
33
|
+
var _super = _createSuper(Tileset3DTraverser);
|
|
27
34
|
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
return;
|
|
33
|
-
}
|
|
35
|
+
function Tileset3DTraverser() {
|
|
36
|
+
(0, _classCallCheck2.default)(this, Tileset3DTraverser);
|
|
37
|
+
return _super.apply(this, arguments);
|
|
38
|
+
}
|
|
34
39
|
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
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;
|
|
38
44
|
}
|
|
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
|
+
|
|
54
|
+
var hasChildren = tile.children.length > 0;
|
|
39
55
|
|
|
40
|
-
|
|
41
|
-
|
|
56
|
+
if (tile.hasTilesetContent && hasChildren) {
|
|
57
|
+
var firstChild = tile.children[0];
|
|
58
|
+
this.updateTileVisibility(firstChild, frameState);
|
|
59
|
+
tile._visible = firstChild._visible;
|
|
60
|
+
return;
|
|
61
|
+
}
|
|
42
62
|
|
|
43
|
-
|
|
44
|
-
if (!this.anyChildrenVisible(tile, frameState)) {
|
|
63
|
+
if (this.meetsScreenSpaceErrorEarly(tile, frameState)) {
|
|
45
64
|
tile._visible = false;
|
|
46
65
|
return;
|
|
47
66
|
}
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
67
|
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
parent
|
|
54
|
-
} = tile;
|
|
68
|
+
var replace = tile.refine === _constants.TILE_REFINEMENT.REPLACE;
|
|
69
|
+
var useOptimization = tile._optimChildrenWithinParent === _constants.TILE3D_OPTIMIZATION_HINT.USE_OPTIMIZATION;
|
|
55
70
|
|
|
56
|
-
|
|
57
|
-
|
|
71
|
+
if (replace && useOptimization && hasChildren) {
|
|
72
|
+
if (!this.anyChildrenVisible(tile, frameState)) {
|
|
73
|
+
tile._visible = false;
|
|
74
|
+
return;
|
|
75
|
+
}
|
|
76
|
+
}
|
|
58
77
|
}
|
|
78
|
+
}, {
|
|
79
|
+
key: "meetsScreenSpaceErrorEarly",
|
|
80
|
+
value: function meetsScreenSpaceErrorEarly(tile, frameState) {
|
|
81
|
+
var parent = tile.parent;
|
|
59
82
|
|
|
60
|
-
|
|
61
|
-
|
|
83
|
+
if (!parent || parent.hasTilesetContent || parent.refine !== _constants.TILE_REFINEMENT.ADD) {
|
|
84
|
+
return false;
|
|
85
|
+
}
|
|
62
86
|
|
|
63
|
-
|
|
87
|
+
return !this.shouldRefine(tile, frameState, true);
|
|
88
|
+
}
|
|
89
|
+
}]);
|
|
90
|
+
return Tileset3DTraverser;
|
|
91
|
+
}(_tilesetTraverser.default);
|
|
64
92
|
|
|
65
93
|
exports.default = Tileset3DTraverser;
|
|
66
94
|
//# sourceMappingURL=tileset-3d-traverser.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/tileset/traversers/tileset-3d-traverser.ts"],"names":["Tileset3DTraverser","
|
|
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"}
|