@loaders.gl/tiles 5.0.0-alpha.1 → 5.0.0-alpha.10
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/LICENSE +14 -3
- package/README.md +26 -0
- package/dist/dist.dev.js +20271 -5055
- package/dist/dist.min.js +3 -1
- package/dist/index.cjs +7849 -2081
- package/dist/index.cjs.map +3 -4
- package/dist/index.d.ts +25 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +11 -0
- package/dist/index.js.map +1 -1
- package/dist/point-cloud/point-cloud-tile.d.ts.map +1 -1
- package/dist/point-cloud/point-cloud-tile.js +3 -0
- package/dist/point-cloud/point-cloud-tile.js.map +1 -1
- package/dist/point-cloud/point-cloud-tileset.d.ts +4 -0
- package/dist/point-cloud/point-cloud-tileset.d.ts.map +1 -1
- package/dist/point-cloud/point-cloud-tileset.js +54 -12
- package/dist/point-cloud/point-cloud-tileset.js.map +1 -1
- package/dist/point-cloud/types.d.ts +17 -0
- package/dist/point-cloud/types.d.ts.map +1 -1
- package/dist/point-cloud/types.js +3 -0
- package/dist/point-cloud/types.js.map +1 -1
- package/dist/raster-set.d.ts +48 -31
- package/dist/raster-set.d.ts.map +1 -1
- package/dist/raster-set.js +104 -24
- package/dist/raster-set.js.map +1 -1
- package/dist/spatial/format-spatial-reference.d.ts +68 -0
- package/dist/spatial/format-spatial-reference.d.ts.map +1 -0
- package/dist/spatial/format-spatial-reference.js +291 -0
- package/dist/spatial/format-spatial-reference.js.map +1 -0
- package/dist/spatial/get-spatial-coordinate-frame.d.ts +20 -0
- package/dist/spatial/get-spatial-coordinate-frame.d.ts.map +1 -0
- package/dist/spatial/get-spatial-coordinate-frame.js +139 -0
- package/dist/spatial/get-spatial-coordinate-frame.js.map +1 -0
- package/dist/spatial/i3s-elevation.d.ts +20 -0
- package/dist/spatial/i3s-elevation.d.ts.map +1 -0
- package/dist/spatial/i3s-elevation.js +90 -0
- package/dist/spatial/i3s-elevation.js.map +1 -0
- package/dist/spatial/i3s-spatial-transformer.d.ts +189 -0
- package/dist/spatial/i3s-spatial-transformer.d.ts.map +1 -0
- package/dist/spatial/i3s-spatial-transformer.js +686 -0
- package/dist/spatial/i3s-spatial-transformer.js.map +1 -0
- 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 +52 -0
- package/dist/spatial/spatial-coordinate-transformer.d.ts.map +1 -0
- package/dist/spatial/spatial-coordinate-transformer.js +295 -0
- package/dist/spatial/spatial-coordinate-transformer.js.map +1 -0
- package/dist/spatial/spatial-resource-registry.d.ts +44 -0
- package/dist/spatial/spatial-resource-registry.d.ts.map +1 -0
- package/dist/spatial/spatial-resource-registry.js +67 -0
- package/dist/spatial/spatial-resource-registry.js.map +1 -0
- package/dist/spatial/spatial-types.d.ts +190 -0
- package/dist/spatial/spatial-types.d.ts.map +1 -0
- package/dist/spatial/spatial-types.js +192 -0
- package/dist/spatial/spatial-types.js.map +1 -0
- 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-2d/adapter.d.ts +2 -3
- package/dist/tileset-2d/adapter.d.ts.map +1 -1
- package/dist/tileset-2d/tileset-2d.d.ts +2 -3
- package/dist/tileset-2d/tileset-2d.d.ts.map +1 -1
- package/dist/tileset-2d/tileset-2d.js.map +1 -1
- 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 +9 -4
- 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 +176 -5
- package/dist/tileset-3d/common/tile-3d.d.ts.map +1 -1
- package/dist/tileset-3d/common/tile-3d.js +523 -89
- package/dist/tileset-3d/common/tile-3d.js.map +1 -1
- package/dist/tileset-3d/common/tileset-3d.d.ts +192 -9
- package/dist/tileset-3d/common/tileset-3d.d.ts.map +1 -1
- package/dist/tileset-3d/common/tileset-3d.js +303 -23
- package/dist/tileset-3d/common/tileset-3d.js.map +1 -1
- package/dist/tileset-3d/common/tileset-cache.d.ts +11 -1
- package/dist/tileset-3d/common/tileset-cache.d.ts.map +1 -1
- package/dist/tileset-3d/common/tileset-cache.js +11 -3
- package/dist/tileset-3d/common/tileset-cache.js.map +1 -1
- package/dist/tileset-3d/common/tileset-content-traversal.d.ts +37 -0
- package/dist/tileset-3d/common/tileset-content-traversal.d.ts.map +1 -0
- package/dist/tileset-3d/common/tileset-content-traversal.js +80 -0
- package/dist/tileset-3d/common/tileset-content-traversal.js.map +1 -0
- 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 +51 -9
- 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 +33 -1
- package/dist/tileset-3d/common/tileset-traverser.d.ts.map +1 -1
- package/dist/tileset-3d/common/tileset-traverser.js +59 -11
- package/dist/tileset-3d/common/tileset-traverser.js.map +1 -1
- package/dist/tileset-3d/format-3d-tiles/implicit-tiling.d.ts +182 -0
- package/dist/tileset-3d/format-3d-tiles/implicit-tiling.d.ts.map +1 -0
- package/dist/tileset-3d/format-3d-tiles/implicit-tiling.js +681 -0
- package/dist/tileset-3d/format-3d-tiles/implicit-tiling.js.map +1 -0
- package/dist/tileset-3d/format-3d-tiles/tiles-3d-source.d.ts +127 -6
- 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 +485 -27
- 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 +103 -0
- 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 +278 -0
- package/dist/tileset-3d/format-3d-tiles/tileset-3d-traverser.js.map +1 -1
- package/dist/tileset-3d/format-i3s/i3s-pending-tiles-register.d.ts.map +1 -1
- package/dist/tileset-3d/format-i3s/i3s-pending-tiles-register.js +3 -0
- package/dist/tileset-3d/format-i3s/i3s-pending-tiles-register.js.map +1 -1
- package/dist/tileset-3d/format-i3s/i3s-source.d.ts +23 -6
- package/dist/tileset-3d/format-i3s/i3s-source.d.ts.map +1 -1
- package/dist/tileset-3d/format-i3s/i3s-source.js +176 -25
- package/dist/tileset-3d/format-i3s/i3s-source.js.map +1 -1
- package/dist/tileset-3d/format-i3s/i3s-tile-manager.d.ts.map +1 -1
- package/dist/tileset-3d/format-i3s/i3s-tile-manager.js +3 -0
- package/dist/tileset-3d/format-i3s/i3s-tile-manager.js.map +1 -1
- package/dist/tileset-3d/format-i3s/i3s-tileset-traverser.d.ts.map +1 -1
- package/dist/tileset-3d/format-i3s/i3s-tileset-traverser.js +4 -1
- package/dist/tileset-3d/format-i3s/i3s-tileset-traverser.js.map +1 -1
- package/dist/tileset-3d/helpers/3d-tiles-options.d.ts.map +1 -1
- package/dist/tileset-3d/helpers/3d-tiles-options.js +3 -0
- package/dist/tileset-3d/helpers/3d-tiles-options.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 +20 -91
- package/dist/tileset-3d/helpers/bounding-volume.js.map +1 -1
- package/dist/tileset-3d/helpers/frame-state.d.ts +67 -2
- package/dist/tileset-3d/helpers/frame-state.d.ts.map +1 -1
- package/dist/tileset-3d/helpers/frame-state.js +92 -10
- package/dist/tileset-3d/helpers/frame-state.js.map +1 -1
- package/dist/tileset-3d/helpers/i3s-lod.d.ts.map +1 -1
- package/dist/tileset-3d/helpers/i3s-lod.js +20 -8
- package/dist/tileset-3d/helpers/i3s-lod.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/tileset-3d/helpers/tiles-3d-lod.d.ts +61 -9
- package/dist/tileset-3d/helpers/tiles-3d-lod.d.ts.map +1 -1
- package/dist/tileset-3d/helpers/tiles-3d-lod.js +198 -93
- package/dist/tileset-3d/helpers/tiles-3d-lod.js.map +1 -1
- package/dist/tileset-3d/helpers/tiles-3d-request-priority.d.ts +134 -0
- package/dist/tileset-3d/helpers/tiles-3d-request-priority.d.ts.map +1 -0
- package/dist/tileset-3d/helpers/tiles-3d-request-priority.js +179 -0
- package/dist/tileset-3d/helpers/tiles-3d-request-priority.js.map +1 -0
- package/dist/types.d.ts +7 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +3 -0
- package/dist/types.js.map +1 -1
- package/dist/utils/doubly-linked-list.d.ts.map +1 -1
- package/dist/utils/doubly-linked-list.js +1 -0
- package/dist/utils/doubly-linked-list.js.map +1 -1
- package/dist/utils/managed-array.d.ts.map +1 -1
- package/dist/utils/managed-array.js +1 -0
- package/dist/utils/managed-array.js.map +1 -1
- package/package.json +12 -10
- package/src/index.ts +78 -1
- package/src/point-cloud/point-cloud-tile.ts +4 -0
- package/src/point-cloud/point-cloud-tileset.ts +70 -12
- package/src/point-cloud/types.ts +21 -0
- package/src/raster-set.ts +197 -67
- package/src/spatial/format-spatial-reference.ts +385 -0
- package/src/spatial/get-spatial-coordinate-frame.ts +169 -0
- package/src/spatial/i3s-elevation.ts +96 -0
- package/src/spatial/i3s-spatial-transformer.ts +957 -0
- package/src/spatial/normalize-crs-identifier.ts +26 -0
- package/src/spatial/spatial-coordinate-transformer.ts +376 -0
- package/src/spatial/spatial-resource-registry.ts +79 -0
- package/src/spatial/spatial-types.ts +422 -0
- package/src/spatial/tiles-3d-spatial-transformer.ts +206 -0
- package/src/tileset-2d/adapter.ts +2 -3
- package/src/tileset-2d/tileset-2d.ts +2 -3
- package/src/tileset-3d/common/indexed-archive-tileset-source.ts +13 -13
- package/src/tileset-3d/common/tile-3d-contracts.ts +115 -0
- package/src/tileset-3d/common/tile-3d.ts +629 -98
- package/src/tileset-3d/common/tileset-3d.ts +459 -29
- package/src/tileset-3d/common/tileset-cache.ts +15 -7
- package/src/tileset-3d/common/tileset-content-traversal.ts +114 -0
- package/src/tileset-3d/common/tileset-observability.ts +100 -0
- package/src/tileset-3d/common/tileset-source.ts +63 -13
- package/src/tileset-3d/common/tileset-traverser.ts +71 -11
- package/src/tileset-3d/format-3d-tiles/implicit-tiling.ts +1059 -0
- package/src/tileset-3d/format-3d-tiles/tiles-3d-source.ts +674 -28
- package/src/tileset-3d/format-3d-tiles/tileset-3d-traverser.ts +316 -0
- package/src/tileset-3d/format-i3s/i3s-pending-tiles-register.ts +4 -0
- package/src/tileset-3d/format-i3s/i3s-source.ts +220 -29
- package/src/tileset-3d/format-i3s/i3s-tile-manager.ts +4 -0
- package/src/tileset-3d/format-i3s/i3s-tileset-traverser.ts +6 -1
- package/src/tileset-3d/helpers/3d-tiles-options.ts +4 -0
- package/src/tileset-3d/helpers/bounding-volume.ts +31 -114
- package/src/tileset-3d/helpers/frame-state.ts +152 -13
- package/src/tileset-3d/helpers/i3s-lod.ts +22 -8
- package/src/tileset-3d/helpers/s2-bounding-volume.ts +35 -0
- package/src/tileset-3d/helpers/tiles-3d-lod.ts +291 -112
- package/src/tileset-3d/helpers/tiles-3d-request-priority.ts +301 -0
- package/src/types.ts +11 -0
- package/src/utils/doubly-linked-list.ts +2 -0
- package/src/utils/managed-array.ts +2 -0
|
@@ -3,12 +3,7 @@
|
|
|
3
3
|
// Copyright (c) vis.gl contributors
|
|
4
4
|
|
|
5
5
|
import {BlobFile, HttpFile, path} from '@loaders.gl/loader-utils';
|
|
6
|
-
import type {
|
|
7
|
-
CoreAPI,
|
|
8
|
-
LoaderOptions,
|
|
9
|
-
LoaderWithParser,
|
|
10
|
-
ReadableFile
|
|
11
|
-
} from '@loaders.gl/loader-utils';
|
|
6
|
+
import type {CoreAPI, Loader, LoaderOptions, ReadableFile} from '@loaders.gl/loader-utils';
|
|
12
7
|
import type {TilesetSourceResolver} from './tileset-source';
|
|
13
8
|
|
|
14
9
|
/** Options for {@link IndexedArchiveTilesetSource}. */
|
|
@@ -63,11 +58,15 @@ export class IndexedArchiveTilesetSource<ArchiveT> implements TilesetSourceResol
|
|
|
63
58
|
*/
|
|
64
59
|
async loadRoot<DataT>(
|
|
65
60
|
url: string,
|
|
66
|
-
loader:
|
|
61
|
+
loader: Loader<DataT>,
|
|
67
62
|
loadOptions: LoaderOptions
|
|
68
63
|
): Promise<DataT> {
|
|
64
|
+
// Resolve root-relative URIs inside the archive rather than beside its download URL.
|
|
65
|
+
const resourceUrl = this.options.rootPath
|
|
66
|
+
? `${stripQueryString(this.sourceUrl)}/${this.options.rootPath}`
|
|
67
|
+
: url;
|
|
69
68
|
return await this.parseArchiveResource(
|
|
70
|
-
|
|
69
|
+
resourceUrl,
|
|
71
70
|
this.options.rootPath,
|
|
72
71
|
loader,
|
|
73
72
|
loadOptions,
|
|
@@ -83,7 +82,7 @@ export class IndexedArchiveTilesetSource<ArchiveT> implements TilesetSourceResol
|
|
|
83
82
|
*/
|
|
84
83
|
async loadResource<DataT>(
|
|
85
84
|
url: string,
|
|
86
|
-
loader:
|
|
85
|
+
loader: Loader<DataT>,
|
|
87
86
|
loadOptions: LoaderOptions
|
|
88
87
|
): Promise<DataT> {
|
|
89
88
|
const pathInArchive = this.resolveArchivePath(url, url);
|
|
@@ -93,7 +92,7 @@ export class IndexedArchiveTilesetSource<ArchiveT> implements TilesetSourceResol
|
|
|
93
92
|
private async parseArchiveResource<DataT>(
|
|
94
93
|
resourceUrl: string,
|
|
95
94
|
pathInArchive: string,
|
|
96
|
-
loader:
|
|
95
|
+
loader: Loader<DataT>,
|
|
97
96
|
loadOptions: LoaderOptions,
|
|
98
97
|
mode?: string
|
|
99
98
|
): Promise<DataT> {
|
|
@@ -175,7 +174,9 @@ export class IndexedArchiveTilesetSource<ArchiveT> implements TilesetSourceResol
|
|
|
175
174
|
? requestWithoutQuery
|
|
176
175
|
: baseWithoutQuery === archiveRoot && !isAbsoluteRequest
|
|
177
176
|
? `${archiveRoot}/${requestWithoutQuery}`
|
|
178
|
-
:
|
|
177
|
+
: /^[a-z][a-z0-9+.-]*:\/\//i.test(baseWithoutQuery)
|
|
178
|
+
? new URL(requestWithoutQuery, baseWithoutQuery).href
|
|
179
|
+
: path.resolve(basePath, requestWithoutQuery);
|
|
179
180
|
|
|
180
181
|
if (absoluteRequest === archiveRoot) {
|
|
181
182
|
return '';
|
|
@@ -200,6 +201,5 @@ function getArchiveSourceUrl(data: string | Blob, fallbackFilename: string): str
|
|
|
200
201
|
}
|
|
201
202
|
|
|
202
203
|
function stripQueryString(url: string): string {
|
|
203
|
-
|
|
204
|
-
return queryIndex >= 0 ? url.slice(0, queryIndex) : url;
|
|
204
|
+
return url.split(/[?#]/, 1)[0];
|
|
205
205
|
}
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
// loaders.gl
|
|
2
|
+
// SPDX-License-Identifier: MIT
|
|
3
|
+
// Copyright (c) vis.gl contributors
|
|
4
|
+
|
|
5
|
+
/** Structural subset implemented by math.gl bounding volumes used by tile renderers. */
|
|
6
|
+
export type Tile3DBoundingVolume = {
|
|
7
|
+
distanceSquaredTo?(point: unknown): number;
|
|
8
|
+
intersectPlane?(plane: unknown): number;
|
|
9
|
+
};
|
|
10
|
+
|
|
11
|
+
/** Renderer-neutral description of one ordered tile content entry. */
|
|
12
|
+
export type Tile3DContent = {
|
|
13
|
+
/** Zero-based source order, stable across loading and unloading. */
|
|
14
|
+
index: number;
|
|
15
|
+
/** Resolved content URI when declared by the tileset. */
|
|
16
|
+
uri?: string;
|
|
17
|
+
/** Tileset group index declared by this content entry. */
|
|
18
|
+
group?: number;
|
|
19
|
+
/** Normalized tile content kind, when detected. */
|
|
20
|
+
type?: string;
|
|
21
|
+
/** Decoded payload, or null while unloaded/failed. */
|
|
22
|
+
payload: unknown;
|
|
23
|
+
/** Raw content metadata reference. */
|
|
24
|
+
metadata: Record<string, unknown> | null;
|
|
25
|
+
/** Transformed content volume, with tile-volume fallback. */
|
|
26
|
+
boundingVolume: Tile3DBoundingVolume | null;
|
|
27
|
+
/** Normalized feature-id declarations for this content. */
|
|
28
|
+
featureIds: Tile3DFeatureIdSet[];
|
|
29
|
+
/** Whether the payload can currently be rendered. */
|
|
30
|
+
renderable: boolean;
|
|
31
|
+
};
|
|
32
|
+
|
|
33
|
+
/** Renderer-neutral feature-id declaration from a tile content payload. */
|
|
34
|
+
export type Tile3DFeatureIdSet = {
|
|
35
|
+
/** Source of the feature identifiers. */
|
|
36
|
+
source: 'attribute' | 'property-table' | 'constant' | 'texture' | 'implicit';
|
|
37
|
+
/** glTF attribute name for attribute-backed identifiers. */
|
|
38
|
+
attribute?: string;
|
|
39
|
+
/** Structural-metadata property-table index. */
|
|
40
|
+
propertyTable?: number;
|
|
41
|
+
/** Constant feature identifier. */
|
|
42
|
+
constant?: number;
|
|
43
|
+
/** Texture-backed identifier declaration, when present. */
|
|
44
|
+
texture?: Record<string, unknown>;
|
|
45
|
+
/** Implicit identifier declaration, when present. */
|
|
46
|
+
implicit?: Record<string, unknown>;
|
|
47
|
+
/** Decoded identifier values, when supplied by a content loader. */
|
|
48
|
+
values?: Uint32Array | Uint16Array | Uint8Array;
|
|
49
|
+
/** Unrecognized source fields preserved for forward compatibility. */
|
|
50
|
+
details?: Record<string, unknown>;
|
|
51
|
+
};
|
|
52
|
+
|
|
53
|
+
/** Raw metadata references inherited by a tile and its contents. */
|
|
54
|
+
export type Tile3DMetadataContext = {
|
|
55
|
+
/** Tileset-level metadata entity. */
|
|
56
|
+
tileset?: Record<string, unknown> | null;
|
|
57
|
+
/** Group metadata entity selected for the tile's primary content. */
|
|
58
|
+
group?: Record<string, unknown> | null;
|
|
59
|
+
/** All tileset groups, used to resolve a selected content entry's group. */
|
|
60
|
+
groups?: readonly (Record<string, unknown> | null)[];
|
|
61
|
+
/** Tile metadata entity. */
|
|
62
|
+
tile?: Record<string, unknown> | null;
|
|
63
|
+
/** Content metadata entity. */
|
|
64
|
+
content?: Record<string, unknown> | null;
|
|
65
|
+
/** Implicit-subtree metadata entity. */
|
|
66
|
+
subtree?: Record<string, unknown> | null;
|
|
67
|
+
};
|
|
68
|
+
|
|
69
|
+
/** Extracts mesh-feature declarations from a decoded glTF-like payload. */
|
|
70
|
+
export function getTile3DFeatureIdSets(payload: unknown): Tile3DFeatureIdSet[] {
|
|
71
|
+
const featureIdSets: Tile3DFeatureIdSet[] = [];
|
|
72
|
+
const visited = new Set<object>();
|
|
73
|
+
const visit = (value: unknown): void => {
|
|
74
|
+
if (!value || typeof value !== 'object') {
|
|
75
|
+
return;
|
|
76
|
+
}
|
|
77
|
+
if (visited.has(value as object)) {
|
|
78
|
+
return;
|
|
79
|
+
}
|
|
80
|
+
visited.add(value as object);
|
|
81
|
+
const record = value as Record<string, any>;
|
|
82
|
+
const declarations = record.extensions?.EXT_mesh_features?.featureIds;
|
|
83
|
+
if (Array.isArray(declarations)) {
|
|
84
|
+
for (const declaration of declarations) {
|
|
85
|
+
if (!declaration || typeof declaration !== 'object') {
|
|
86
|
+
continue;
|
|
87
|
+
}
|
|
88
|
+
const source = declaration.texture
|
|
89
|
+
? 'texture'
|
|
90
|
+
: declaration.implicit
|
|
91
|
+
? 'implicit'
|
|
92
|
+
: declaration.attribute !== undefined
|
|
93
|
+
? 'attribute'
|
|
94
|
+
: declaration.propertyTable !== undefined
|
|
95
|
+
? 'property-table'
|
|
96
|
+
: 'constant';
|
|
97
|
+
featureIdSets.push({
|
|
98
|
+
source,
|
|
99
|
+
attribute: declaration.attribute,
|
|
100
|
+
propertyTable: declaration.propertyTable,
|
|
101
|
+
constant: declaration.constant,
|
|
102
|
+
texture: declaration.texture,
|
|
103
|
+
implicit: declaration.implicit,
|
|
104
|
+
values: declaration.values,
|
|
105
|
+
details: declaration
|
|
106
|
+
});
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
for (const child of Object.values(record)) {
|
|
110
|
+
visit(child);
|
|
111
|
+
}
|
|
112
|
+
};
|
|
113
|
+
visit(payload);
|
|
114
|
+
return featureIdSets;
|
|
115
|
+
}
|