@loaders.gl/tiles 3.4.0-alpha.4 → 3.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/dist/constants.d.ts +6 -0
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.js +0 -1
- package/dist/dist.min.js +171 -151
- package/dist/es5/constants.js.map +1 -1
- package/dist/es5/tileset/helpers/3d-tiles-options.js.map +1 -1
- package/dist/es5/tileset/tile-3d.js +41 -71
- package/dist/es5/tileset/tile-3d.js.map +1 -1
- package/dist/es5/tileset/tileset-3d.js +68 -102
- package/dist/es5/tileset/tileset-3d.js.map +1 -1
- package/dist/es5/tileset/tileset-cache.js +4 -7
- package/dist/es5/tileset/tileset-cache.js.map +1 -1
- package/dist/es5/tileset/tileset-traverser.js +12 -22
- package/dist/es5/tileset/tileset-traverser.js.map +1 -1
- package/dist/esm/constants.js.map +1 -1
- package/dist/esm/tileset/helpers/3d-tiles-options.js.map +1 -1
- package/dist/esm/tileset/tile-3d.js +39 -71
- package/dist/esm/tileset/tile-3d.js.map +1 -1
- package/dist/esm/tileset/tileset-3d.js +64 -94
- package/dist/esm/tileset/tileset-3d.js.map +1 -1
- package/dist/esm/tileset/tileset-cache.js +4 -7
- package/dist/esm/tileset/tileset-cache.js.map +1 -1
- package/dist/esm/tileset/tileset-traverser.js +9 -19
- package/dist/esm/tileset/tileset-traverser.js.map +1 -1
- package/dist/tileset/helpers/3d-tiles-options.d.ts +3 -2
- package/dist/tileset/helpers/3d-tiles-options.d.ts.map +1 -1
- package/dist/tileset/tile-3d.d.ts +36 -21
- package/dist/tileset/tile-3d.d.ts.map +1 -1
- package/dist/tileset/tile-3d.js +58 -43
- package/dist/tileset/tileset-3d.d.ts +90 -43
- package/dist/tileset/tileset-3d.d.ts.map +1 -1
- package/dist/tileset/tileset-3d.js +108 -127
- package/dist/tileset/tileset-cache.d.ts +5 -4
- package/dist/tileset/tileset-cache.d.ts.map +1 -1
- package/dist/tileset/tileset-cache.js +4 -10
- package/dist/tileset/tileset-traverser.d.ts +32 -21
- package/dist/tileset/tileset-traverser.d.ts.map +1 -1
- package/dist/tileset/tileset-traverser.js +23 -35
- package/package.json +4 -4
- package/src/constants.ts +18 -0
- package/src/tileset/helpers/3d-tiles-options.ts +3 -1
- package/src/tileset/tile-3d.ts +70 -109
- package/src/tileset/tileset-3d.ts +178 -216
- package/src/tileset/tileset-cache.ts +20 -15
- package/src/tileset/tileset-traverser.ts +52 -68
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import { Matrix4 } from '@math.gl/core';
|
|
2
2
|
import type { Tileset3D } from './tileset-3d';
|
|
3
|
+
import type { DoublyLinkedListNode } from '../utils/doubly-linked-list-node';
|
|
3
4
|
import { FrameState } from './helpers/frame-state';
|
|
4
5
|
import { CartographicBounds } from './helpers/bounding-volume';
|
|
6
|
+
import { TilesetTraverser } from './tileset-traverser';
|
|
5
7
|
/**
|
|
6
8
|
* @param tileset - Tileset3D instance
|
|
7
9
|
* @param header - tile header - JSON loaded from a dataset
|
|
@@ -29,48 +31,57 @@ export declare class Tile3D {
|
|
|
29
31
|
refine: number;
|
|
30
32
|
type: string;
|
|
31
33
|
contentUrl: string;
|
|
32
|
-
|
|
34
|
+
/** Different refinement algorithms used by I3S and 3D tiles */
|
|
35
|
+
lodMetricType: 'geometricError' | 'maxScreenThreshold';
|
|
36
|
+
/** The error, in meters, introduced if this tile is rendered and its children are not. */
|
|
33
37
|
lodMetricValue: number;
|
|
38
|
+
/** @todo math.gl is not exporting BoundingVolume base type? */
|
|
34
39
|
boundingVolume: any;
|
|
40
|
+
/**
|
|
41
|
+
* The tile's content. This represents the actual tile's payload,
|
|
42
|
+
* not the content's metadata in the tileset JSON file.
|
|
43
|
+
*/
|
|
35
44
|
content: any;
|
|
36
|
-
contentState:
|
|
45
|
+
contentState: number;
|
|
37
46
|
gpuMemoryUsageInBytes: number;
|
|
47
|
+
/** The tile's children - an array of Tile3D objects. */
|
|
38
48
|
children: Tile3D[];
|
|
39
49
|
depth: number;
|
|
40
50
|
viewportIds: any[];
|
|
41
51
|
transform: Matrix4;
|
|
42
52
|
extensions: any;
|
|
53
|
+
/** TODO Cesium 3d tiles specific */
|
|
43
54
|
implicitTiling?: any;
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
};
|
|
55
|
+
/** Container to store application specific data */
|
|
56
|
+
userData: Record<string, any>;
|
|
47
57
|
computedTransform: any;
|
|
48
58
|
hasEmptyContent: boolean;
|
|
49
59
|
hasTilesetContent: boolean;
|
|
50
|
-
traverser:
|
|
51
|
-
|
|
60
|
+
traverser: TilesetTraverser;
|
|
61
|
+
/** Used by TilesetCache */
|
|
62
|
+
_cacheNode: DoublyLinkedListNode | null;
|
|
52
63
|
private _frameNumber;
|
|
53
|
-
private _lodJudge;
|
|
54
64
|
private _expireDate;
|
|
55
65
|
private _expiredContent;
|
|
56
|
-
private _shouldRefine;
|
|
57
66
|
private _boundingBox?;
|
|
67
|
+
/** updated every frame for tree traversal and rendering optimizations: */
|
|
58
68
|
_distanceToCamera: number;
|
|
59
|
-
|
|
60
|
-
private _screenSpaceError;
|
|
69
|
+
_screenSpaceError: number;
|
|
61
70
|
private _visibilityPlaneMask;
|
|
62
|
-
private _visible
|
|
63
|
-
private _inRequestVolume;
|
|
64
|
-
private _stackLength;
|
|
65
|
-
private _selectionDepth;
|
|
66
|
-
private _touchedFrame;
|
|
67
|
-
private _visitedFrame;
|
|
68
|
-
private _selectedFrame;
|
|
69
|
-
private _requestedFrame;
|
|
70
|
-
private _priority;
|
|
71
|
+
private _visible;
|
|
71
72
|
private _contentBoundingVolume;
|
|
72
73
|
private _viewerRequestVolume;
|
|
73
74
|
_initialTransform: Matrix4;
|
|
75
|
+
_priority: number;
|
|
76
|
+
_selectedFrame: number;
|
|
77
|
+
_requestedFrame: number;
|
|
78
|
+
_selectionDepth: number;
|
|
79
|
+
_touchedFrame: number;
|
|
80
|
+
_centerZDepth: number;
|
|
81
|
+
_shouldRefine: boolean;
|
|
82
|
+
_stackLength: number;
|
|
83
|
+
_visitedFrame: number;
|
|
84
|
+
_inRequestVolume: boolean;
|
|
74
85
|
/**
|
|
75
86
|
* @constructs
|
|
76
87
|
* Create a Tile3D instance
|
|
@@ -135,6 +146,10 @@ export declare class Tile3D {
|
|
|
135
146
|
* but it can be still loaded in memory
|
|
136
147
|
*/
|
|
137
148
|
unselect(): void;
|
|
149
|
+
/**
|
|
150
|
+
* Memory usage of tile on GPU
|
|
151
|
+
*/
|
|
152
|
+
_getGpuMemoryUsageInBytes(): number;
|
|
138
153
|
_getPriority(): number;
|
|
139
154
|
/**
|
|
140
155
|
* Requests the tile's content.
|
|
@@ -184,7 +199,7 @@ export declare class Tile3D {
|
|
|
184
199
|
_updateBoundingVolume(header: any): void;
|
|
185
200
|
_updateTransform(parentTransform?: Matrix4): void;
|
|
186
201
|
_getLoaderSpecificOptions(loaderId: any): {
|
|
187
|
-
assetGltfUpAxis:
|
|
202
|
+
assetGltfUpAxis: "X" | "Y" | "Z";
|
|
188
203
|
} | {
|
|
189
204
|
_tileOptions: {
|
|
190
205
|
attributeUrls: any;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tile-3d.d.ts","sourceRoot":"","sources":["../../src/tileset/tile-3d.ts"],"names":[],"mappings":"AAKA,OAAO,EAAU,OAAO,EAAC,MAAM,eAAe,CAAC;AAM/C,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"tile-3d.d.ts","sourceRoot":"","sources":["../../src/tileset/tile-3d.ts"],"names":[],"mappings":"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"}
|
package/dist/tileset/tile-3d.js
CHANGED
|
@@ -23,6 +23,8 @@ function defined(x) {
|
|
|
23
23
|
* Do not construct this directly, instead access tiles through {@link Tileset3D#tileVisible}.
|
|
24
24
|
*/
|
|
25
25
|
class Tile3D {
|
|
26
|
+
// TODO i3s specific, needs to remove
|
|
27
|
+
// private _lodJudge: any = null;
|
|
26
28
|
/**
|
|
27
29
|
* @constructs
|
|
28
30
|
* Create a Tile3D instance
|
|
@@ -34,69 +36,72 @@ class Tile3D {
|
|
|
34
36
|
*/
|
|
35
37
|
// eslint-disable-next-line max-statements
|
|
36
38
|
constructor(tileset, header, parentHeader, extendedId = '') {
|
|
37
|
-
|
|
38
|
-
// original tile data
|
|
39
|
-
this.header = header;
|
|
40
|
-
// The tileset containing this tile.
|
|
41
|
-
this.tileset = tileset;
|
|
42
|
-
this.id = extendedId || header.id;
|
|
43
|
-
this.url = header.url;
|
|
44
|
-
// This tile's parent or `undefined` if this tile is the root.
|
|
45
|
-
// @ts-ignore
|
|
46
|
-
this.parent = parentHeader;
|
|
47
|
-
this.refine = this._getRefine(header.refine);
|
|
48
|
-
this.type = header.type;
|
|
49
|
-
this.contentUrl = header.contentUrl;
|
|
50
|
-
// The error, in meters, introduced if this tile is rendered and its children are not.
|
|
39
|
+
/** Different refinement algorithms used by I3S and 3D tiles */
|
|
51
40
|
this.lodMetricType = 'geometricError';
|
|
41
|
+
/** The error, in meters, introduced if this tile is rendered and its children are not. */
|
|
52
42
|
this.lodMetricValue = 0;
|
|
53
|
-
|
|
43
|
+
/** @todo math.gl is not exporting BoundingVolume base type? */
|
|
54
44
|
this.boundingVolume = null;
|
|
55
|
-
|
|
56
|
-
|
|
45
|
+
/**
|
|
46
|
+
* The tile's content. This represents the actual tile's payload,
|
|
47
|
+
* not the content's metadata in the tileset JSON file.
|
|
48
|
+
*/
|
|
57
49
|
this.content = null;
|
|
58
50
|
this.contentState = constants_1.TILE_CONTENT_STATE.UNLOADED;
|
|
59
51
|
this.gpuMemoryUsageInBytes = 0;
|
|
60
|
-
|
|
52
|
+
/** The tile's children - an array of Tile3D objects. */
|
|
61
53
|
this.children = [];
|
|
62
|
-
this.hasEmptyContent = false;
|
|
63
|
-
this.hasTilesetContent = false;
|
|
64
54
|
this.depth = 0;
|
|
65
55
|
this.viewportIds = [];
|
|
66
|
-
|
|
67
|
-
this.userData = {};
|
|
56
|
+
this.transform = new core_1.Matrix4();
|
|
68
57
|
this.extensions = null;
|
|
69
|
-
|
|
70
|
-
this.
|
|
71
|
-
|
|
72
|
-
this.
|
|
73
|
-
this.
|
|
74
|
-
this.
|
|
75
|
-
this.
|
|
58
|
+
/** TODO Cesium 3d tiles specific */
|
|
59
|
+
this.implicitTiling = null;
|
|
60
|
+
/** Container to store application specific data */
|
|
61
|
+
this.userData = {};
|
|
62
|
+
this.hasEmptyContent = false;
|
|
63
|
+
this.hasTilesetContent = false;
|
|
64
|
+
this.traverser = new tileset_traverser_1.TilesetTraverser({});
|
|
65
|
+
/** Used by TilesetCache */
|
|
76
66
|
this._cacheNode = null;
|
|
77
67
|
this._frameNumber = null;
|
|
78
|
-
|
|
79
|
-
this.
|
|
80
|
-
this.
|
|
68
|
+
// TODO Cesium 3d tiles specific
|
|
69
|
+
this._expireDate = null;
|
|
70
|
+
this._expiredContent = null;
|
|
71
|
+
/** updated every frame for tree traversal and rendering optimizations: */
|
|
81
72
|
this._distanceToCamera = 0;
|
|
82
|
-
this.
|
|
73
|
+
this._screenSpaceError = 0;
|
|
83
74
|
this._visible = undefined;
|
|
84
|
-
this._inRequestVolume = false;
|
|
85
|
-
this._stackLength = 0;
|
|
86
|
-
this._selectionDepth = 0;
|
|
87
75
|
this._initialTransform = new core_1.Matrix4();
|
|
88
|
-
|
|
76
|
+
// Used by traverser, cannot be marked private
|
|
77
|
+
this._priority = 0;
|
|
78
|
+
this._selectedFrame = 0;
|
|
79
|
+
this._requestedFrame = 0;
|
|
80
|
+
this._selectionDepth = 0;
|
|
81
|
+
this._touchedFrame = 0;
|
|
82
|
+
this._centerZDepth = 0;
|
|
83
|
+
this._shouldRefine = false;
|
|
84
|
+
this._stackLength = 0;
|
|
85
|
+
this._visitedFrame = 0;
|
|
86
|
+
this._inRequestVolume = false;
|
|
87
|
+
// PUBLIC MEMBERS
|
|
88
|
+
// original tile data
|
|
89
|
+
this.header = header;
|
|
90
|
+
// The tileset containing this tile.
|
|
91
|
+
this.tileset = tileset;
|
|
92
|
+
this.id = extendedId || header.id;
|
|
93
|
+
this.url = header.url;
|
|
94
|
+
// This tile's parent or `undefined` if this tile is the root.
|
|
95
|
+
// @ts-ignore
|
|
96
|
+
this.parent = parentHeader;
|
|
97
|
+
this.refine = this._getRefine(header.refine);
|
|
98
|
+
this.type = header.type;
|
|
99
|
+
this.contentUrl = header.contentUrl;
|
|
89
100
|
this._initializeLodMetric(header);
|
|
90
101
|
this._initializeTransforms(header);
|
|
91
102
|
this._initializeBoundingVolumes(header);
|
|
92
103
|
this._initializeContent(header);
|
|
93
104
|
this._initializeRenderingState(header);
|
|
94
|
-
// TODO i3s specific, needs to remove
|
|
95
|
-
this._lodJudge = null;
|
|
96
|
-
// TODO Cesium 3d tiles specific
|
|
97
|
-
this._expireDate = null;
|
|
98
|
-
this._expiredContent = null;
|
|
99
|
-
this.implicitTiling = null;
|
|
100
105
|
Object.seal(this);
|
|
101
106
|
}
|
|
102
107
|
destroy() {
|
|
@@ -200,6 +205,12 @@ class Tile3D {
|
|
|
200
205
|
unselect() {
|
|
201
206
|
this._selectedFrame = 0;
|
|
202
207
|
}
|
|
208
|
+
/**
|
|
209
|
+
* Memory usage of tile on GPU
|
|
210
|
+
*/
|
|
211
|
+
_getGpuMemoryUsageInBytes() {
|
|
212
|
+
return this.content.gpuMemoryUsageInBytes || this.content.byteLength || 0;
|
|
213
|
+
}
|
|
203
214
|
/*
|
|
204
215
|
* If skipLevelOfDetail is off try to load child tiles as soon as possible so that their parent can refine sooner.
|
|
205
216
|
* Tiles are prioritized by screen space error.
|
|
@@ -266,6 +277,7 @@ class Tile3D {
|
|
|
266
277
|
const options = {
|
|
267
278
|
...this.tileset.loadOptions,
|
|
268
279
|
[loader.id]: {
|
|
280
|
+
// @ts-expect-error
|
|
269
281
|
...this.tileset.loadOptions[loader.id],
|
|
270
282
|
isTileset: this.type === 'json',
|
|
271
283
|
...this._getLoaderSpecificOptions(loader.id)
|
|
@@ -533,6 +545,9 @@ class Tile3D {
|
|
|
533
545
|
if (this._isTileset()) {
|
|
534
546
|
this.hasTilesetContent = true;
|
|
535
547
|
}
|
|
548
|
+
else {
|
|
549
|
+
this.gpuMemoryUsageInBytes = this._getGpuMemoryUsageInBytes();
|
|
550
|
+
}
|
|
536
551
|
}
|
|
537
552
|
_updateBoundingVolume(header) {
|
|
538
553
|
// Update the bounding volumes
|
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
import { Matrix4, Vector3 } from '@math.gl/core';
|
|
2
2
|
import { Stats } from '@probe.gl/stats';
|
|
3
3
|
import { RequestScheduler, LoaderWithParser, LoaderOptions } from '@loaders.gl/loader-utils';
|
|
4
|
+
import { TilesetCache } from './tileset-cache';
|
|
4
5
|
import { FrameState } from './helpers/frame-state';
|
|
6
|
+
import type { Viewport } from '../types';
|
|
5
7
|
import { Tile3D } from './tile-3d';
|
|
6
|
-
import { Viewport } from '../types';
|
|
7
8
|
import { TilesetTraverser } from './tileset-traverser';
|
|
9
|
+
export type TilesetJSON = any;
|
|
8
10
|
export type Tileset3DProps = {
|
|
9
11
|
throttleRequests?: boolean;
|
|
10
12
|
maxRequests?: number;
|
|
@@ -31,38 +33,78 @@ export type Tileset3DProps = {
|
|
|
31
33
|
type Props = {
|
|
32
34
|
description: string;
|
|
33
35
|
ellipsoid: object;
|
|
36
|
+
/** A 4x4 transformation matrix this transforms the entire tileset. */
|
|
34
37
|
modelMatrix: Matrix4;
|
|
38
|
+
/** Set to false to disable network request throttling */
|
|
35
39
|
throttleRequests: boolean;
|
|
40
|
+
/** Number of simultaneous requsts, if throttleRequests is true */
|
|
41
|
+
maxRequests: number;
|
|
36
42
|
maximumMemoryUsage: number;
|
|
43
|
+
/** Maximum number limit of tiles selected for show. 0 means no limit */
|
|
37
44
|
maximumTilesSelected: number;
|
|
45
|
+
/** Delay time before the tileset traversal. It prevents traversal requests spam.*/
|
|
38
46
|
debounceTime: number;
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
47
|
+
/** Callback. Indicates this a tile's content was loaded */
|
|
48
|
+
onTileLoad: (tile: Tile3D) => void;
|
|
49
|
+
/** Callback. Indicates this a tile's content was unloaded (cache full) */
|
|
50
|
+
onTileUnload: (tile: Tile3D) => void;
|
|
51
|
+
/** Callback. Indicates this a tile's content failed to load */
|
|
52
|
+
onTileError: (tile: Tile3D, message: string, url: string) => void;
|
|
53
|
+
/** Callback. Allows post-process selectedTiles right after traversal. */
|
|
42
54
|
onTraversalComplete: (selectedTiles: Tile3D[]) => Tile3D[];
|
|
55
|
+
/** The maximum screen space error used to drive level of detail refinement. */
|
|
43
56
|
maximumScreenSpaceError: number;
|
|
44
|
-
viewportTraversersMap: any;
|
|
57
|
+
viewportTraversersMap: Record<string, any> | null;
|
|
45
58
|
attributions: string[];
|
|
46
|
-
maxRequests: number;
|
|
47
59
|
loadTiles: boolean;
|
|
48
60
|
loadOptions: LoaderOptions;
|
|
49
61
|
updateTransforms: boolean;
|
|
62
|
+
/** View distance scale modifier */
|
|
50
63
|
viewDistanceScale: number;
|
|
51
64
|
basePath: string;
|
|
65
|
+
/** Optional async tile content loader */
|
|
52
66
|
contentLoader?: (tile: Tile3D) => Promise<void>;
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
};
|
|
67
|
+
/** @todo I3S specific knowledge should be moved to I3S module */
|
|
68
|
+
i3s: Record<string, any>;
|
|
56
69
|
};
|
|
70
|
+
/**
|
|
71
|
+
* The Tileset loading and rendering flow is as below,
|
|
72
|
+
* A rendered (i.e. deck.gl `Tile3DLayer`) triggers `tileset.update()` after a `tileset` is loaded
|
|
73
|
+
* `tileset` starts traversing the tile tree and update `requestTiles` (tiles of which content need
|
|
74
|
+
* to be fetched) and `selectedTiles` (tiles ready for rendering under the current viewport).
|
|
75
|
+
* `Tile3DLayer` will update rendering based on `selectedTiles`.
|
|
76
|
+
* `Tile3DLayer` also listens to `onTileLoad` callback and trigger another round of `update and then traversal`
|
|
77
|
+
* when new tiles are loaded.
|
|
78
|
+
|
|
79
|
+
* As I3S tileset have stored `tileHeader` file (metadata) and tile content files (geometry, texture, ...) separately.
|
|
80
|
+
* During each traversal, it issues `tilHeader` requests if that `tileHeader` is not yet fetched,
|
|
81
|
+
* after the tile header is fulfilled, it will resume the traversal starting from the tile just fetched (not root).
|
|
82
|
+
|
|
83
|
+
* Tile3DLayer
|
|
84
|
+
* |
|
|
85
|
+
* await load(tileset)
|
|
86
|
+
* |
|
|
87
|
+
* tileset.update()
|
|
88
|
+
* | async load tileHeader
|
|
89
|
+
* tileset.traverse() -------------------------- Queued
|
|
90
|
+
* | resume traversal after fetched |
|
|
91
|
+
* |----------------------------------------|
|
|
92
|
+
* |
|
|
93
|
+
* | async load tile content
|
|
94
|
+
* tilset.requestedTiles ----------------------------- RequestScheduler
|
|
95
|
+
* |
|
|
96
|
+
* tilset.selectedTiles (ready for rendering) |
|
|
97
|
+
* | Listen to |
|
|
98
|
+
* Tile3DLayer ----------- onTileLoad ----------------------|
|
|
99
|
+
* | | notify new tile is available
|
|
100
|
+
* updateLayers |
|
|
101
|
+
* tileset.update // trigger another round of update
|
|
102
|
+
*/
|
|
57
103
|
export declare class Tileset3D {
|
|
58
104
|
options: Props;
|
|
59
|
-
loadOptions:
|
|
60
|
-
[key: string]: any;
|
|
61
|
-
};
|
|
105
|
+
loadOptions: LoaderOptions;
|
|
62
106
|
type: string;
|
|
63
|
-
tileset:
|
|
64
|
-
[key: string]: any;
|
|
65
|
-
};
|
|
107
|
+
tileset: TilesetJSON;
|
|
66
108
|
loader: LoaderWithParser;
|
|
67
109
|
url: string;
|
|
68
110
|
basePath: string;
|
|
@@ -72,12 +114,9 @@ export declare class Tileset3D {
|
|
|
72
114
|
lodMetricValue: number;
|
|
73
115
|
refine: string;
|
|
74
116
|
root: Tile3D | null;
|
|
75
|
-
roots:
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
asset: {
|
|
79
|
-
[key: string]: any;
|
|
80
|
-
};
|
|
117
|
+
roots: Record<string, Tile3D>;
|
|
118
|
+
/** @todo any->unknown */
|
|
119
|
+
asset: Record<string, any>;
|
|
81
120
|
description: string;
|
|
82
121
|
properties: any;
|
|
83
122
|
extras: any;
|
|
@@ -91,37 +130,45 @@ export declare class Tileset3D {
|
|
|
91
130
|
dds: boolean;
|
|
92
131
|
ktx2: boolean;
|
|
93
132
|
};
|
|
94
|
-
traverseCounter: number;
|
|
95
|
-
geometricError: number;
|
|
96
|
-
selectedTiles: Tile3D[];
|
|
97
|
-
private updatePromise;
|
|
98
|
-
tilesetInitializationPromise: Promise<void>;
|
|
99
133
|
cartographicCenter: Vector3 | null;
|
|
100
134
|
cartesianCenter: Vector3 | null;
|
|
101
135
|
zoom: number;
|
|
102
136
|
boundingVolume: any;
|
|
103
|
-
|
|
104
|
-
dynamicScreenSpaceErrorComputedDensity:
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
137
|
+
/** Updated based on the camera position and direction */
|
|
138
|
+
dynamicScreenSpaceErrorComputedDensity: number;
|
|
139
|
+
/**
|
|
140
|
+
* The maximum amount of GPU memory (in MB) that may be used to cache tiles
|
|
141
|
+
* Tiles not in view are unloaded to enforce private
|
|
142
|
+
*/
|
|
143
|
+
maximumMemoryUsage: number;
|
|
144
|
+
/** The total amount of GPU memory in bytes used by the tileset. */
|
|
145
|
+
gpuMemoryUsageInBytes: number;
|
|
146
|
+
/** Update tracker. increase in each update cycle. */
|
|
108
147
|
_frameNumber: number;
|
|
109
|
-
private _queryParamsString;
|
|
110
148
|
private _queryParams;
|
|
111
149
|
private _extensionsUsed;
|
|
112
150
|
private _tiles;
|
|
151
|
+
/** counter for tracking tiles requests */
|
|
113
152
|
private _pendingCount;
|
|
153
|
+
/** Hold traversal results */
|
|
154
|
+
selectedTiles: Tile3D[];
|
|
155
|
+
traverseCounter: number;
|
|
156
|
+
geometricError: number;
|
|
114
157
|
private lastUpdatedVieports;
|
|
115
158
|
private _requestedTiles;
|
|
116
159
|
private _emptyTiles;
|
|
117
160
|
private frameStateData;
|
|
118
|
-
|
|
161
|
+
_traverser: TilesetTraverser;
|
|
162
|
+
_cache: TilesetCache;
|
|
163
|
+
_requestScheduler: RequestScheduler;
|
|
164
|
+
private updatePromise;
|
|
165
|
+
tilesetInitializationPromise: Promise<void>;
|
|
119
166
|
/**
|
|
120
167
|
* Create a new Tileset3D
|
|
121
168
|
* @param json
|
|
122
169
|
* @param props
|
|
123
170
|
*/
|
|
124
|
-
constructor(
|
|
171
|
+
constructor(tileset: TilesetJSON, options?: Tileset3DProps);
|
|
125
172
|
/** Release resources */
|
|
126
173
|
destroy(): void;
|
|
127
174
|
/** Is the tileset loaded (update needs to have been called at least once) */
|
|
@@ -171,11 +218,11 @@ export declare class Tileset3D {
|
|
|
171
218
|
* Update tiles relying on data from all traversers
|
|
172
219
|
*/
|
|
173
220
|
_updateTiles(): void;
|
|
174
|
-
_tilesChanged(oldSelectedTiles:
|
|
221
|
+
_tilesChanged(oldSelectedTiles: Tile3D[], selectedTiles: Tile3D[]): boolean;
|
|
175
222
|
_loadTiles(): void;
|
|
176
223
|
_unloadTiles(): void;
|
|
177
224
|
_updateStats(): void;
|
|
178
|
-
_initializeTileSet(tilesetJson:
|
|
225
|
+
_initializeTileSet(tilesetJson: TilesetJSON): Promise<void>;
|
|
179
226
|
/**
|
|
180
227
|
* Called during initialize Tileset to initialize the tileset's cartographic center (longitude, latitude) and zoom.
|
|
181
228
|
* These metrics help apps center view on tileset
|
|
@@ -191,12 +238,12 @@ export declare class Tileset3D {
|
|
|
191
238
|
*/
|
|
192
239
|
private calculateViewPropsTiles3D;
|
|
193
240
|
_initializeStats(): void;
|
|
194
|
-
_initializeTileHeaders(tilesetJson:
|
|
195
|
-
_initializeTraverser():
|
|
196
|
-
_destroyTileHeaders(parentTile:
|
|
197
|
-
_loadTile(tile:
|
|
198
|
-
_onTileLoadError(tile:
|
|
199
|
-
_onTileLoad(tile:
|
|
241
|
+
_initializeTileHeaders(tilesetJson: TilesetJSON, parentTileHeader?: any): Tile3D;
|
|
242
|
+
_initializeTraverser(): TilesetTraverser;
|
|
243
|
+
_destroyTileHeaders(parentTile: Tile3D): void;
|
|
244
|
+
_loadTile(tile: Tile3D): Promise<void>;
|
|
245
|
+
_onTileLoadError(tile: Tile3D, error: Error): void;
|
|
246
|
+
_onTileLoad(tile: Tile3D, loaded: boolean): void;
|
|
200
247
|
/**
|
|
201
248
|
* Update information about data types in nested tiles
|
|
202
249
|
* @param tile instance of a nested Tile3D
|
|
@@ -204,7 +251,7 @@ export declare class Tileset3D {
|
|
|
204
251
|
private updateContentTypes;
|
|
205
252
|
_onStartTileLoading(): void;
|
|
206
253
|
_onEndTileLoading(): void;
|
|
207
|
-
_addTileToCache(tile:
|
|
254
|
+
_addTileToCache(tile: Tile3D): void;
|
|
208
255
|
_updateCacheStats(tile: any): void;
|
|
209
256
|
_unloadTile(tile: any): void;
|
|
210
257
|
_destroy(): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tileset-3d.d.ts","sourceRoot":"","sources":["../../src/tileset/tileset-3d.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"tileset-3d.d.ts","sourceRoot":"","sources":["../../src/tileset/tileset-3d.ts"],"names":[],"mappings":"AAKA,OAAO,EAAC,OAAO,EAAE,OAAO,EAAC,MAAM,eAAe,CAAC;AAE/C,OAAO,EAAC,KAAK,EAAC,MAAM,iBAAiB,CAAC;AACtC,OAAO,EAAC,gBAAgB,EAAQ,gBAAgB,EAAE,aAAa,EAAC,MAAM,0BAA0B,CAAC;AACjG,OAAO,EAAC,YAAY,EAAC,MAAM,iBAAiB,CAAC;AAE7C,OAAO,EAAC,UAAU,EAAoC,MAAM,uBAAuB,CAAC;AAGpF,OAAO,KAAK,EAAqB,QAAQ,EAAC,MAAM,UAAU,CAAC;AAC3D,OAAO,EAAC,MAAM,EAAC,MAAM,WAAW,CAAC;AAGjC,OAAO,EAAC,gBAAgB,EAAC,MAAM,qBAAqB,CAAC;AAMrD,MAAM,MAAM,WAAW,GAAG,GAAG,CAAC;AAqB9B,MAAM,MAAM,cAAc,GAAG;IAE3B,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,aAAa,CAAC;IAC5B,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,YAAY,CAAC,EAAE,MAAM,CAAC;IAGtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IAGxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,OAAO,CAAC;IAGtB,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjC,qBAAqB,CAAC,EAAE,GAAG,CAAC;IAC5B,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAG3B,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,GAAG,CAAC;IACnC,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,GAAG,CAAC;IACrC,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,KAAK,GAAG,CAAC;IAClE,aAAa,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAChD,mBAAmB,CAAC,EAAE,CAAC,aAAa,EAAE,MAAM,EAAE,KAAK,MAAM,EAAE,CAAC;CAC7D,CAAC;AAEF,KAAK,KAAK,GAAG;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,sEAAsE;IACtE,WAAW,EAAE,OAAO,CAAC;IACrB,yDAAyD;IACzD,gBAAgB,EAAE,OAAO,CAAC;IAC1B,kEAAkE;IAClE,WAAW,EAAE,MAAM,CAAC;IACpB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,wEAAwE;IACxE,oBAAoB,EAAE,MAAM,CAAC;IAC7B,mFAAmF;IACnF,YAAY,EAAE,MAAM,CAAC;IACrB,2DAA2D;IAC3D,UAAU,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,0EAA0E;IAC1E,YAAY,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACrC,+DAA+D;IAC/D,WAAW,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IAClE,yEAAyE;IACzE,mBAAmB,EAAE,CAAC,aAAa,EAAE,MAAM,EAAE,KAAK,MAAM,EAAE,CAAC;IAC3D,+EAA+E;IAC/E,uBAAuB,EAAE,MAAM,CAAC;IAChC,qBAAqB,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC;IAClD,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,SAAS,EAAE,OAAO,CAAC;IACnB,WAAW,EAAE,aAAa,CAAC;IAC3B,gBAAgB,EAAE,OAAO,CAAC;IAC1B,mCAAmC;IACnC,iBAAiB,EAAE,MAAM,CAAC;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,yCAAyC;IACzC,aAAa,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAChD,iEAAiE;IACjE,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAC1B,CAAC;AAuCF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAgCE;AACF,qBAAa,SAAS;IAEpB,OAAO,EAAE,KAAK,CAAC;IACf,WAAW,EAAE,aAAa,CAAC;IAE3B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,WAAW,CAAC;IACrB,MAAM,EAAE,gBAAgB,CAAC;IACzB,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,OAAO,CAAC;IACrB,SAAS,EAAE,GAAG,CAAC;IACf,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,GAAG,IAAI,CAAQ;IAC3B,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAM;IACnC,yBAAyB;IACzB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAM;IAGhC,WAAW,EAAE,MAAM,CAAM;IACzB,UAAU,EAAE,GAAG,CAAC;IAEhB,MAAM,EAAE,GAAG,CAAQ;IACnB,YAAY,EAAE,GAAG,CAAM;IACvB,OAAO,EAAE,GAAG,CAAM;IAElB,KAAK,EAAE,KAAK,CAAC;IAEb,sEAAsE;IACtE,cAAc;;;;;MAA2D;IAGzE,kBAAkB,EAAE,OAAO,GAAG,IAAI,CAAQ;IAC1C,eAAe,EAAE,OAAO,GAAG,IAAI,CAAQ;IACvC,IAAI,EAAE,MAAM,CAAK;IACjB,cAAc,EAAE,GAAG,CAAQ;IAE3B,yDAAyD;IACzD,sCAAsC,EAAE,MAAM,CAAO;IAIrD;;;OAGG;IACH,kBAAkB,EAAE,MAAM,CAAM;IAEhC,mEAAmE;IACnE,qBAAqB,EAAE,MAAM,CAAK;IAElC,qDAAqD;IACrD,YAAY,EAAE,MAAM,CAAK;IACzB,OAAO,CAAC,YAAY,CAA8B;IAClD,OAAO,CAAC,eAAe,CAAgB;IACvC,OAAO,CAAC,MAAM,CAA8B;IAE5C,0CAA0C;IAC1C,OAAO,CAAC,aAAa,CAAa;IAElC,6BAA6B;IAC7B,aAAa,EAAE,MAAM,EAAE,CAAM;IAG7B,eAAe,EAAE,MAAM,CAAK;IAC5B,cAAc,EAAE,MAAM,CAAK;IAC3B,OAAO,CAAC,mBAAmB,CAAsC;IACjE,OAAO,CAAC,eAAe,CAAgB;IACvC,OAAO,CAAC,WAAW,CAAgB;IACnC,OAAO,CAAC,cAAc,CAAW;IAEjC,UAAU,EAAE,gBAAgB,CAAC;IAC7B,MAAM,eAAsB;IAC5B,iBAAiB,EAAE,gBAAgB,CAAC;IAGpC,OAAO,CAAC,aAAa,CAAgC;IACrD,4BAA4B,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IAE5C;;;;OAIG;gBAES,OAAO,EAAE,WAAW,EAAE,OAAO,CAAC,EAAE,cAAc;IAoC1D,wBAAwB;IACxB,OAAO,IAAI,IAAI;IAIf,6EAA6E;IAC7E,QAAQ,IAAI,OAAO;IAKnB,IAAI,KAAK,IAAI,MAAM,EAAE,CAEpB;IAED,IAAI,WAAW,IAAI,MAAM,CAExB;IAED,IAAI,WAAW,IAAI,MAAM,CAGxB;IAED,QAAQ,CAAC,KAAK,EAAE,cAAc,GAAG,IAAI;IAIrC,kBAAkB;IAClB,UAAU,CAAC,OAAO,EAAE,cAAc,GAAG,IAAI;IAIzC;;;OAGG;IACH,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM;IASpC,YAAY,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO;IAI5C;;;;OAIG;IACH,MAAM,CAAC,SAAS,GAAE,QAAQ,EAAE,GAAG,QAAQ,GAAG,IAAW;IAcrD;;;;;OAKG;IACG,WAAW,CAAC,SAAS,GAAE,QAAQ,EAAE,GAAG,QAAQ,GAAG,IAAW,GAAG,OAAO,CAAC,MAAM,CAAC;IAmBlF;;;OAGG;IAEH,OAAO,CAAC,QAAQ;IAsChB;;;;OAIG;IACH,aAAa,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO;IAY1C;;;OAGG;IACH,eAAe,CAAC,UAAU,EAAE,UAAU,GAAG,IAAI;IA4B7C;;OAEG;IACH,YAAY,IAAI,IAAI;IAuBpB,aAAa,CAAC,gBAAgB,EAAE,MAAM,EAAE,EAAE,aAAa,EAAE,MAAM,EAAE,GAAG,OAAO;IAW3E,UAAU,IAAI,IAAI;IAYlB,YAAY,IAAI,IAAI;IAKpB,YAAY,IAAI,IAAI;IAoBd,kBAAkB,CAAC,WAAW,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAiBjE;;;;;OAKG;IACH,OAAO,CAAC,qBAAqB;IAoC7B;;;;;OAKG;IACH,OAAO,CAAC,yBAAyB;IAsBjC,gBAAgB;IAehB,sBAAsB,CAAC,WAAW,EAAE,WAAW,EAAE,gBAAgB,CAAC,EAAE,GAAG;IA4CvE,oBAAoB,IAAI,gBAAgB;IAoBxC,mBAAmB,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI;IAIvC,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAa5C,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,GAAG,IAAI;IAUlD,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,GAAG,IAAI;IAsBhD;;;OAGG;IACH,OAAO,CAAC,kBAAkB;IA4B1B,mBAAmB;IAKnB,iBAAiB;IAKjB,eAAe,CAAC,IAAI,EAAE,MAAM;IAI5B,iBAAiB,CAAC,IAAI,KAAA;IAStB,WAAW,CAAC,IAAI,KAAA;IAYhB,QAAQ;IAoBR,eAAe,CAAC,IAAI,KAAA;IAgBpB,YAAY,CAAC,IAAI,KAAA;IAMjB,yBAAyB,CAAC,WAAW,KAAA;IAmCrC,qBAAqB;CAMtB"}
|