@loaders.gl/tiles 5.0.0-alpha.5 → 5.0.0-alpha.7
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.dev.js +5122 -2641
- package/dist/dist.min.js +4 -2
- package/dist/index.cjs +1670 -403
- package/dist/index.cjs.map +3 -3
- package/dist/index.d.ts +8 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -1
- package/dist/spatial/format-spatial-reference.d.ts +1 -0
- package/dist/spatial/format-spatial-reference.d.ts.map +1 -1
- package/dist/spatial/format-spatial-reference.js +104 -46
- package/dist/spatial/format-spatial-reference.js.map +1 -1
- package/dist/spatial/get-spatial-coordinate-frame.d.ts +12 -1
- package/dist/spatial/get-spatial-coordinate-frame.d.ts.map +1 -1
- package/dist/spatial/get-spatial-coordinate-frame.js +105 -24
- package/dist/spatial/get-spatial-coordinate-frame.js.map +1 -1
- package/dist/spatial/normalize-crs-identifier.d.ts +15 -0
- package/dist/spatial/normalize-crs-identifier.d.ts.map +1 -0
- package/dist/spatial/normalize-crs-identifier.js +22 -0
- package/dist/spatial/normalize-crs-identifier.js.map +1 -0
- package/dist/spatial/spatial-coordinate-transformer.d.ts +4 -0
- package/dist/spatial/spatial-coordinate-transformer.d.ts.map +1 -1
- package/dist/spatial/spatial-coordinate-transformer.js +89 -12
- package/dist/spatial/spatial-coordinate-transformer.js.map +1 -1
- package/dist/spatial/tiles-3d-spatial-transformer.d.ts +32 -0
- package/dist/spatial/tiles-3d-spatial-transformer.d.ts.map +1 -0
- package/dist/spatial/tiles-3d-spatial-transformer.js +175 -0
- package/dist/spatial/tiles-3d-spatial-transformer.js.map +1 -0
- package/dist/tileset-3d/common/indexed-archive-tileset-source.d.ts +3 -3
- package/dist/tileset-3d/common/indexed-archive-tileset-source.d.ts.map +1 -1
- package/dist/tileset-3d/common/indexed-archive-tileset-source.js.map +1 -1
- package/dist/tileset-3d/common/tile-3d-contracts.d.ts +63 -0
- package/dist/tileset-3d/common/tile-3d-contracts.d.ts.map +1 -0
- package/dist/tileset-3d/common/tile-3d-contracts.js +51 -0
- package/dist/tileset-3d/common/tile-3d-contracts.js.map +1 -0
- package/dist/tileset-3d/common/tile-3d.d.ts +29 -5
- package/dist/tileset-3d/common/tile-3d.d.ts.map +1 -1
- package/dist/tileset-3d/common/tile-3d.js +151 -20
- package/dist/tileset-3d/common/tile-3d.js.map +1 -1
- package/dist/tileset-3d/common/tileset-3d.d.ts +44 -2
- package/dist/tileset-3d/common/tileset-3d.d.ts.map +1 -1
- package/dist/tileset-3d/common/tileset-3d.js +31 -1
- package/dist/tileset-3d/common/tileset-3d.js.map +1 -1
- package/dist/tileset-3d/common/tileset-observability.d.ts +60 -0
- package/dist/tileset-3d/common/tileset-observability.d.ts.map +1 -0
- package/dist/tileset-3d/common/tileset-observability.js +39 -0
- package/dist/tileset-3d/common/tileset-observability.js.map +1 -0
- package/dist/tileset-3d/common/tileset-source.d.ts +11 -8
- package/dist/tileset-3d/common/tileset-source.d.ts.map +1 -1
- package/dist/tileset-3d/common/tileset-source.js.map +1 -1
- package/dist/tileset-3d/common/tileset-traverser.d.ts +14 -0
- package/dist/tileset-3d/common/tileset-traverser.d.ts.map +1 -1
- package/dist/tileset-3d/common/tileset-traverser.js +21 -5
- package/dist/tileset-3d/common/tileset-traverser.js.map +1 -1
- package/dist/tileset-3d/format-3d-tiles/implicit-tiling.d.ts +47 -1
- package/dist/tileset-3d/format-3d-tiles/implicit-tiling.d.ts.map +1 -1
- package/dist/tileset-3d/format-3d-tiles/implicit-tiling.js +327 -30
- package/dist/tileset-3d/format-3d-tiles/implicit-tiling.js.map +1 -1
- package/dist/tileset-3d/format-3d-tiles/tiles-3d-source.d.ts +34 -2
- package/dist/tileset-3d/format-3d-tiles/tiles-3d-source.d.ts.map +1 -1
- package/dist/tileset-3d/format-3d-tiles/tiles-3d-source.js +265 -14
- package/dist/tileset-3d/format-3d-tiles/tiles-3d-source.js.map +1 -1
- package/dist/tileset-3d/format-3d-tiles/tileset-3d-traverser.d.ts +70 -3
- package/dist/tileset-3d/format-3d-tiles/tileset-3d-traverser.d.ts.map +1 -1
- package/dist/tileset-3d/format-3d-tiles/tileset-3d-traverser.js +216 -4
- package/dist/tileset-3d/format-3d-tiles/tileset-3d-traverser.js.map +1 -1
- package/dist/tileset-3d/format-i3s/i3s-source.d.ts +5 -3
- package/dist/tileset-3d/format-i3s/i3s-source.d.ts.map +1 -1
- package/dist/tileset-3d/format-i3s/i3s-source.js +14 -7
- package/dist/tileset-3d/format-i3s/i3s-source.js.map +1 -1
- package/dist/tileset-3d/helpers/bounding-volume.d.ts +7 -3
- package/dist/tileset-3d/helpers/bounding-volume.d.ts.map +1 -1
- package/dist/tileset-3d/helpers/bounding-volume.js +19 -61
- package/dist/tileset-3d/helpers/bounding-volume.js.map +1 -1
- package/dist/tileset-3d/helpers/frame-state.d.ts +4 -0
- package/dist/tileset-3d/helpers/frame-state.d.ts.map +1 -1
- package/dist/tileset-3d/helpers/frame-state.js +6 -1
- package/dist/tileset-3d/helpers/frame-state.js.map +1 -1
- package/dist/tileset-3d/helpers/s2-bounding-volume.d.ts +17 -0
- package/dist/tileset-3d/helpers/s2-bounding-volume.d.ts.map +1 -0
- package/dist/tileset-3d/helpers/s2-bounding-volume.js +20 -0
- package/dist/tileset-3d/helpers/s2-bounding-volume.js.map +1 -0
- package/dist/types.d.ts +2 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +14 -13
- package/src/index.ts +13 -1
- package/src/spatial/format-spatial-reference.ts +127 -53
- package/src/spatial/get-spatial-coordinate-frame.ts +126 -31
- package/src/spatial/normalize-crs-identifier.ts +26 -0
- package/src/spatial/spatial-coordinate-transformer.ts +106 -15
- package/src/spatial/tiles-3d-spatial-transformer.ts +206 -0
- package/src/tileset-3d/common/indexed-archive-tileset-source.ts +4 -9
- package/src/tileset-3d/common/tile-3d-contracts.ts +115 -0
- package/src/tileset-3d/common/tile-3d.ts +178 -20
- package/src/tileset-3d/common/tileset-3d.ts +63 -3
- package/src/tileset-3d/common/tileset-observability.ts +100 -0
- package/src/tileset-3d/common/tileset-source.ts +11 -12
- package/src/tileset-3d/common/tileset-traverser.ts +32 -5
- package/src/tileset-3d/format-3d-tiles/implicit-tiling.ts +481 -34
- package/src/tileset-3d/format-3d-tiles/tiles-3d-source.ts +390 -17
- package/src/tileset-3d/format-3d-tiles/tileset-3d-traverser.ts +243 -4
- package/src/tileset-3d/format-i3s/i3s-source.ts +25 -9
- package/src/tileset-3d/helpers/bounding-volume.ts +29 -62
- package/src/tileset-3d/helpers/frame-state.ts +6 -1
- package/src/tileset-3d/helpers/s2-bounding-volume.ts +35 -0
- package/src/types.ts +2 -0
|
@@ -10,6 +10,14 @@ import {FrameState} from '../helpers/frame-state';
|
|
|
10
10
|
export type TilesetTraverserProps = {
|
|
11
11
|
loadSiblings?: boolean;
|
|
12
12
|
skipLevelOfDetail?: boolean;
|
|
13
|
+
/** SSE above which tiles remain part of the non-skipping base traversal. */
|
|
14
|
+
baseScreenSpaceError?: number;
|
|
15
|
+
/** Required SSE reduction from the nearest requested or loaded ancestor before loading a tile. */
|
|
16
|
+
skipScreenSpaceErrorFactor?: number;
|
|
17
|
+
/** Minimum hierarchy levels between requested tiles during skip-LOD traversal. */
|
|
18
|
+
skipLevels?: number;
|
|
19
|
+
/** Requests only final tiles that meet the active SSE target when skip-LOD is enabled. */
|
|
20
|
+
immediatelyLoadDesiredLevelOfDetail?: boolean;
|
|
13
21
|
updateTransforms?: boolean;
|
|
14
22
|
onTraversalEnd?: (frameState) => any;
|
|
15
23
|
viewportTraversersMap?: Record<string, any>;
|
|
@@ -19,6 +27,10 @@ export type TilesetTraverserProps = {
|
|
|
19
27
|
export const DEFAULT_PROPS: Required<TilesetTraverserProps> = {
|
|
20
28
|
loadSiblings: false,
|
|
21
29
|
skipLevelOfDetail: false,
|
|
30
|
+
baseScreenSpaceError: 1024,
|
|
31
|
+
skipScreenSpaceErrorFactor: 16,
|
|
32
|
+
skipLevels: 1,
|
|
33
|
+
immediatelyLoadDesiredLevelOfDetail: false,
|
|
22
34
|
updateTransforms: true,
|
|
23
35
|
onTraversalEnd: () => {},
|
|
24
36
|
viewportTraversersMap: {},
|
|
@@ -28,6 +40,9 @@ export const DEFAULT_PROPS: Required<TilesetTraverserProps> = {
|
|
|
28
40
|
export class TilesetTraverser {
|
|
29
41
|
options: Required<TilesetTraverserProps>;
|
|
30
42
|
|
|
43
|
+
/** Whether loaded content has disabled skip-LOD traversal for this tileset. */
|
|
44
|
+
disableSkipLevelOfDetail: boolean = false;
|
|
45
|
+
|
|
31
46
|
// fulfill in traverse call
|
|
32
47
|
root: any = null;
|
|
33
48
|
|
|
@@ -58,6 +73,11 @@ export class TilesetTraverser {
|
|
|
58
73
|
this.options = {...DEFAULT_PROPS, ...options};
|
|
59
74
|
}
|
|
60
75
|
|
|
76
|
+
/** Returns whether skip-LOD traversal is enabled and supported by the loaded content. */
|
|
77
|
+
isSkipLevelOfDetailEnabled(): boolean {
|
|
78
|
+
return this.options.skipLevelOfDetail && !this.disableSkipLevelOfDetail;
|
|
79
|
+
}
|
|
80
|
+
|
|
61
81
|
// tiles should be visible
|
|
62
82
|
traverse(root, frameState, options) {
|
|
63
83
|
this.root = root; // for root screen space error
|
|
@@ -142,7 +162,7 @@ export class TilesetTraverser {
|
|
|
142
162
|
this.loadTile(tile, frameState);
|
|
143
163
|
// Skip-LOD keeps a ready ancestor selected while descendants stream in. This prevents
|
|
144
164
|
// replacement holes when traversal jumps over one or more hierarchy levels.
|
|
145
|
-
if (stoppedRefining || this.
|
|
165
|
+
if (stoppedRefining || this.isSkipLevelOfDetailEnabled()) {
|
|
146
166
|
this.selectTile(tile, frameState);
|
|
147
167
|
}
|
|
148
168
|
}
|
|
@@ -154,6 +174,11 @@ export class TilesetTraverser {
|
|
|
154
174
|
tile._shouldRefine = shouldRefine && parentRefines;
|
|
155
175
|
}
|
|
156
176
|
|
|
177
|
+
this.completeTraversal(frameState);
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
/** Notifies the owning tileset when traversal is complete or its debounce interval expires. */
|
|
181
|
+
protected completeTraversal(frameState: FrameState): void {
|
|
157
182
|
const newTime = new Date().getTime();
|
|
158
183
|
if (this.traversalFinished(frameState) || newTime - this.lastUpdate > this.updateDebounceTime) {
|
|
159
184
|
this.lastUpdate = newTime;
|
|
@@ -170,7 +195,8 @@ export class TilesetTraverser {
|
|
|
170
195
|
|
|
171
196
|
/* eslint-disable complexity, max-statements */
|
|
172
197
|
updateAndPushChildren(tile: Tile3D, frameState: FrameState, stack, depth): boolean {
|
|
173
|
-
const {loadSiblings
|
|
198
|
+
const {loadSiblings} = this.options;
|
|
199
|
+
const skipLevelOfDetail = this.isSkipLevelOfDetailEnabled();
|
|
174
200
|
|
|
175
201
|
const children = tile.children;
|
|
176
202
|
|
|
@@ -193,9 +219,10 @@ export class TilesetTraverser {
|
|
|
193
219
|
}
|
|
194
220
|
stack.push(child);
|
|
195
221
|
hasVisibleChild = true;
|
|
196
|
-
} else if (checkRefines || loadSiblings) {
|
|
197
|
-
// Keep non-visible children loaded
|
|
198
|
-
//
|
|
222
|
+
} else if ((checkRefines || loadSiblings) && child._inRequestVolume) {
|
|
223
|
+
// Keep non-visible children loaded when they are inside their viewer request volume;
|
|
224
|
+
// they may still be needed before a replacement parent can refine. The request-volume
|
|
225
|
+
// check intentionally applies to sibling loading as well, preventing off-volume work.
|
|
199
226
|
this.loadTile(child, frameState);
|
|
200
227
|
this.touchTile(child, frameState);
|
|
201
228
|
}
|