@loaders.gl/tiles 4.4.0-alpha.2 → 4.4.0
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/README.md +1 -1
- package/dist/constants.js +1 -0
- package/dist/constants.js.map +1 -0
- package/dist/dist.dev.js +89 -6
- package/dist/dist.min.js +1 -1
- package/dist/index.cjs +75 -5
- package/dist/index.cjs.map +3 -3
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -0
- package/dist/tileset/format-3d-tiles/tileset-3d-traverser.js +1 -0
- package/dist/tileset/format-3d-tiles/tileset-3d-traverser.js.map +1 -0
- package/dist/tileset/format-i3s/i3s-pending-tiles-register.js +1 -0
- package/dist/tileset/format-i3s/i3s-pending-tiles-register.js.map +1 -0
- package/dist/tileset/format-i3s/i3s-tile-manager.js +1 -0
- package/dist/tileset/format-i3s/i3s-tile-manager.js.map +1 -0
- package/dist/tileset/format-i3s/i3s-tileset-traverser.js +1 -0
- package/dist/tileset/format-i3s/i3s-tileset-traverser.js.map +1 -0
- package/dist/tileset/helpers/3d-tiles-options.js +1 -0
- package/dist/tileset/helpers/3d-tiles-options.js.map +1 -0
- package/dist/tileset/helpers/bounding-volume.js +1 -0
- package/dist/tileset/helpers/bounding-volume.js.map +1 -0
- package/dist/tileset/helpers/frame-state.js +1 -0
- package/dist/tileset/helpers/frame-state.js.map +1 -0
- package/dist/tileset/helpers/i3s-lod.js +1 -0
- package/dist/tileset/helpers/i3s-lod.js.map +1 -0
- package/dist/tileset/helpers/tiles-3d-lod.js +1 -0
- package/dist/tileset/helpers/tiles-3d-lod.js.map +1 -0
- package/dist/tileset/helpers/transform-utils.d.ts +2 -1
- package/dist/tileset/helpers/transform-utils.d.ts.map +1 -1
- package/dist/tileset/helpers/transform-utils.js +35 -0
- package/dist/tileset/helpers/transform-utils.js.map +1 -0
- package/dist/tileset/helpers/zoom.js +1 -0
- package/dist/tileset/helpers/zoom.js.map +1 -0
- package/dist/tileset/tile-3d.d.ts +7 -0
- package/dist/tileset/tile-3d.d.ts.map +1 -1
- package/dist/tileset/tile-3d.js +12 -3
- package/dist/tileset/tile-3d.js.map +1 -0
- package/dist/tileset/tileset-3d.d.ts +5 -0
- package/dist/tileset/tileset-3d.d.ts.map +1 -1
- package/dist/tileset/tileset-3d.js +50 -5
- package/dist/tileset/tileset-3d.js.map +1 -0
- package/dist/tileset/tileset-cache.js +1 -0
- package/dist/tileset/tileset-cache.js.map +1 -0
- package/dist/tileset/tileset-traverser.js +2 -1
- package/dist/tileset/tileset-traverser.js.map +1 -0
- package/dist/types.js +1 -0
- package/dist/types.js.map +1 -0
- package/dist/utils/doubly-linked-list-node.js +1 -0
- package/dist/utils/doubly-linked-list-node.js.map +1 -0
- package/dist/utils/doubly-linked-list.js +1 -0
- package/dist/utils/doubly-linked-list.js.map +1 -0
- package/dist/utils/managed-array.js +1 -0
- package/dist/utils/managed-array.js.map +1 -0
- package/package.json +5 -5
- package/src/tileset/helpers/transform-utils.ts +41 -1
- package/src/tileset/tile-3d.ts +13 -3
- package/src/tileset/tileset-3d.ts +55 -5
- package/src/tileset/tileset-traverser.ts +1 -1
package/dist/index.cjs
CHANGED
|
@@ -224,10 +224,34 @@ function calculateTransformProps(tileHeader, tile) {
|
|
|
224
224
|
const toFixedFrameMatrix = fromFixedFrameMatrix.invert();
|
|
225
225
|
tile.cartographicModelMatrix = toFixedFrameMatrix.multiplyRight(modelMatrix);
|
|
226
226
|
tile.cartographicOrigin = cartographicOrigin;
|
|
227
|
+
const rootNode = _getRootNode(tile);
|
|
228
|
+
if (rootNode) {
|
|
229
|
+
tile.cartesianModelMatrix = new import_core.Matrix4(modelMatrix).multiplyRight(rootNode.matrix);
|
|
230
|
+
tile.cartographicModelMatrix.multiplyRight(rootNode.matrix);
|
|
231
|
+
rootNode.matrix = import_core.Matrix4.IDENTITY;
|
|
232
|
+
}
|
|
227
233
|
if (!tile.coordinateSystem) {
|
|
228
234
|
tile.modelMatrix = tile.cartographicModelMatrix;
|
|
229
235
|
}
|
|
230
236
|
}
|
|
237
|
+
var TRANSLATION_LIMIT_SQUARED = 1e6 ** 2;
|
|
238
|
+
function _getRootNode(tile) {
|
|
239
|
+
var _a, _b;
|
|
240
|
+
const gltf = tile.gltf;
|
|
241
|
+
if (!gltf) {
|
|
242
|
+
return null;
|
|
243
|
+
}
|
|
244
|
+
const sceneIndex = typeof gltf.scene === "number" ? gltf.scene : 0;
|
|
245
|
+
const scene = (_a = gltf.scenes) == null ? void 0 : _a[sceneIndex];
|
|
246
|
+
const rootNode = (_b = scene == null ? void 0 : scene.nodes) == null ? void 0 : _b[0];
|
|
247
|
+
if (!(rootNode == null ? void 0 : rootNode.matrix))
|
|
248
|
+
return null;
|
|
249
|
+
const m = rootNode.matrix;
|
|
250
|
+
const translationMagnitude = m[12] * m[12] + m[13] * m[13] + m[14] * m[14];
|
|
251
|
+
if (translationMagnitude <= TRANSLATION_LIMIT_SQUARED)
|
|
252
|
+
return null;
|
|
253
|
+
return rootNode;
|
|
254
|
+
}
|
|
231
255
|
|
|
232
256
|
// dist/tileset/helpers/frame-state.js
|
|
233
257
|
var import_core2 = require("@math.gl/core");
|
|
@@ -1095,7 +1119,7 @@ var TilesetTraverser = class {
|
|
|
1095
1119
|
}
|
|
1096
1120
|
}
|
|
1097
1121
|
}
|
|
1098
|
-
return allDescendantsLoaded;
|
|
1122
|
+
return root.hasEmptyContent || allDescendantsLoaded;
|
|
1099
1123
|
}
|
|
1100
1124
|
};
|
|
1101
1125
|
|
|
@@ -1169,6 +1193,13 @@ var Tile3D = class {
|
|
|
1169
1193
|
_inRequestVolume = false;
|
|
1170
1194
|
_lodJudge = null;
|
|
1171
1195
|
// TODO i3s specific, needs to remove
|
|
1196
|
+
/**
|
|
1197
|
+
* Indicates whether the tile has been drawn by the renderer.
|
|
1198
|
+
* Defaults to true for backwards compatibility — renderers that support
|
|
1199
|
+
* transition hold (e.g. deck.gl 9.3+) should set this to false on tile load,
|
|
1200
|
+
* then back to true after first draw to avoid flashes (see deck.gl #7914).
|
|
1201
|
+
*/
|
|
1202
|
+
tileDrawn = true;
|
|
1172
1203
|
/**
|
|
1173
1204
|
* @constructs
|
|
1174
1205
|
* Create a Tile3D instance
|
|
@@ -1350,14 +1381,15 @@ var Tile3D = class {
|
|
|
1350
1381
|
try {
|
|
1351
1382
|
const contentUrl = this.tileset.getTileUrl(this.contentUrl);
|
|
1352
1383
|
const loader = this.tileset.loader;
|
|
1384
|
+
const tilesetLoaderOptions = this.tileset.loadOptions[loader.id] || {};
|
|
1353
1385
|
const options = {
|
|
1354
1386
|
...this.tileset.loadOptions,
|
|
1355
1387
|
[loader.id]: {
|
|
1356
|
-
|
|
1357
|
-
...this.tileset.loadOptions[loader.id],
|
|
1388
|
+
...tilesetLoaderOptions,
|
|
1358
1389
|
isTileset: this.type === "json",
|
|
1359
1390
|
...this._getLoaderSpecificOptions(loader.id)
|
|
1360
1391
|
}
|
|
1392
|
+
// TODO add typecheck - as const satisfies ...
|
|
1361
1393
|
};
|
|
1362
1394
|
this.content = await (0, import_core8.load)(contentUrl, loader, options);
|
|
1363
1395
|
if (this.tileset.options.contentLoader) {
|
|
@@ -1387,6 +1419,7 @@ var Tile3D = class {
|
|
|
1387
1419
|
}
|
|
1388
1420
|
this.header.content = null;
|
|
1389
1421
|
this.contentState = TILE_CONTENT_STATE.UNLOADED;
|
|
1422
|
+
this.tileDrawn = true;
|
|
1390
1423
|
return true;
|
|
1391
1424
|
}
|
|
1392
1425
|
/**
|
|
@@ -1847,6 +1880,8 @@ var DEFAULT_PROPS2 = {
|
|
|
1847
1880
|
onTileError: () => {
|
|
1848
1881
|
},
|
|
1849
1882
|
onTraversalComplete: (selectedTiles) => selectedTiles,
|
|
1883
|
+
onUpdate: () => {
|
|
1884
|
+
},
|
|
1850
1885
|
contentLoader: void 0,
|
|
1851
1886
|
viewDistanceScale: 1,
|
|
1852
1887
|
maximumScreenSpaceError: 8,
|
|
@@ -1940,6 +1975,8 @@ var Tileset3D = class {
|
|
|
1940
1975
|
_traverser;
|
|
1941
1976
|
_cache = new TilesetCache();
|
|
1942
1977
|
_requestScheduler;
|
|
1978
|
+
/** Tile IDs held visible during transitions until replacements have drawn */
|
|
1979
|
+
_heldTiles = /* @__PURE__ */ new Set();
|
|
1943
1980
|
// Promise tracking
|
|
1944
1981
|
updatePromise = null;
|
|
1945
1982
|
tilesetInitializationPromise;
|
|
@@ -2145,6 +2182,7 @@ var Tileset3D = class {
|
|
|
2145
2182
|
* Update tiles relying on data from all traversers
|
|
2146
2183
|
*/
|
|
2147
2184
|
_updateTiles() {
|
|
2185
|
+
const previousSelectedTiles = this.selectedTiles;
|
|
2148
2186
|
this.selectedTiles = [];
|
|
2149
2187
|
this._requestedTiles = [];
|
|
2150
2188
|
this._emptyTiles = [];
|
|
@@ -2155,12 +2193,42 @@ var Tileset3D = class {
|
|
|
2155
2193
|
this._emptyTiles = this._emptyTiles.concat(frameStateDataValue._emptyTiles);
|
|
2156
2194
|
}
|
|
2157
2195
|
this.selectedTiles = this.options.onTraversalComplete(this.selectedTiles);
|
|
2196
|
+
const selectedIds = new Set(this.selectedTiles.map((t) => t.id));
|
|
2197
|
+
const hasUndrawnTiles = this.selectedTiles.some((t) => !t.tileDrawn);
|
|
2198
|
+
let heldBackCount = 0;
|
|
2199
|
+
if (hasUndrawnTiles) {
|
|
2200
|
+
for (const tileId of selectedIds) {
|
|
2201
|
+
this._heldTiles.add(tileId);
|
|
2202
|
+
}
|
|
2203
|
+
for (const tileId of this._heldTiles) {
|
|
2204
|
+
if (selectedIds.has(tileId))
|
|
2205
|
+
continue;
|
|
2206
|
+
const tile = this._tiles[tileId];
|
|
2207
|
+
if (tile && tile.contentAvailable) {
|
|
2208
|
+
tile._selectedFrame = this._frameNumber;
|
|
2209
|
+
this.selectedTiles.push(tile);
|
|
2210
|
+
heldBackCount++;
|
|
2211
|
+
} else {
|
|
2212
|
+
this._heldTiles.delete(tileId);
|
|
2213
|
+
}
|
|
2214
|
+
}
|
|
2215
|
+
} else {
|
|
2216
|
+
this._heldTiles = selectedIds;
|
|
2217
|
+
}
|
|
2218
|
+
if (heldBackCount > 0) {
|
|
2219
|
+
setTimeout(() => {
|
|
2220
|
+
this.selectTiles();
|
|
2221
|
+
}, 0);
|
|
2222
|
+
}
|
|
2158
2223
|
for (const tile of this.selectedTiles) {
|
|
2159
2224
|
this._tiles[tile.id] = tile;
|
|
2160
2225
|
}
|
|
2161
2226
|
this._loadTiles();
|
|
2162
2227
|
this._unloadTiles();
|
|
2163
2228
|
this._updateStats();
|
|
2229
|
+
if (this._tilesChanged(previousSelectedTiles, this.selectedTiles)) {
|
|
2230
|
+
this.options.onUpdate();
|
|
2231
|
+
}
|
|
2164
2232
|
}
|
|
2165
2233
|
_tilesChanged(oldSelectedTiles, selectedTiles) {
|
|
2166
2234
|
if (oldSelectedTiles.length !== selectedTiles.length) {
|
|
@@ -2173,6 +2241,7 @@ var Tileset3D = class {
|
|
|
2173
2241
|
return changed;
|
|
2174
2242
|
}
|
|
2175
2243
|
_loadTiles() {
|
|
2244
|
+
this._requestedTiles.sort((a, b) => a._priority - b._priority);
|
|
2176
2245
|
for (const tile of this._requestedTiles) {
|
|
2177
2246
|
if (tile.contentUnloaded) {
|
|
2178
2247
|
this._loadTile(tile);
|
|
@@ -2494,8 +2563,9 @@ var Tileset3D = class {
|
|
|
2494
2563
|
this.extras = tilesetJson.extras;
|
|
2495
2564
|
}
|
|
2496
2565
|
_initializeI3STileset() {
|
|
2497
|
-
|
|
2498
|
-
|
|
2566
|
+
const i3sOptions = this.loadOptions.i3s;
|
|
2567
|
+
if (i3sOptions && typeof i3sOptions === "object" && "token" in i3sOptions) {
|
|
2568
|
+
this._queryParams.token = i3sOptions.token;
|
|
2499
2569
|
}
|
|
2500
2570
|
}
|
|
2501
2571
|
};
|