@loaders.gl/3d-tiles 4.0.0-alpha.4 → 4.0.0-alpha.5
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/bundle.d.ts +2 -0
- package/dist/bundle.d.ts.map +1 -0
- package/dist/cesium-ion-loader.d.ts +6 -0
- package/dist/cesium-ion-loader.d.ts.map +1 -0
- package/dist/dist.min.js +12227 -0
- package/dist/index.d.ts +10 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/lib/classes/helpers/tile-3d-accessor-utils.d.ts +8 -0
- package/dist/lib/classes/helpers/tile-3d-accessor-utils.d.ts.map +1 -0
- package/dist/lib/classes/helpers/tile-3d-accessor-utils.js.map +1 -1
- package/dist/lib/classes/tile-3d-batch-table-hierarchy.d.ts +10 -0
- package/dist/lib/classes/tile-3d-batch-table-hierarchy.d.ts.map +1 -0
- package/dist/lib/classes/tile-3d-batch-table-hierarchy.js.map +1 -1
- package/dist/lib/classes/tile-3d-batch-table.d.ts +34 -0
- package/dist/lib/classes/tile-3d-batch-table.d.ts.map +1 -0
- package/dist/lib/classes/tile-3d-batch-table.js +16 -1
- package/dist/lib/classes/tile-3d-batch-table.js.map +1 -1
- package/dist/lib/classes/tile-3d-feature-table.d.ts +15 -0
- package/dist/lib/classes/tile-3d-feature-table.d.ts.map +1 -0
- package/dist/lib/classes/tile-3d-feature-table.js +9 -2
- package/dist/lib/classes/tile-3d-feature-table.js.map +1 -1
- package/dist/lib/constants.d.ts +22 -0
- package/dist/lib/constants.d.ts.map +1 -0
- package/dist/lib/constants.js +2 -1
- package/dist/lib/constants.js.map +1 -1
- package/dist/lib/encoders/encode-3d-tile-batched-model.d.ts +2 -0
- package/dist/lib/encoders/encode-3d-tile-batched-model.d.ts.map +1 -0
- package/dist/lib/encoders/encode-3d-tile-batched-model.js.map +1 -1
- package/dist/lib/encoders/encode-3d-tile-composite.d.ts +2 -0
- package/dist/lib/encoders/encode-3d-tile-composite.d.ts.map +1 -0
- package/dist/lib/encoders/encode-3d-tile-composite.js.map +1 -1
- package/dist/lib/encoders/encode-3d-tile-instanced-model.d.ts +2 -0
- package/dist/lib/encoders/encode-3d-tile-instanced-model.d.ts.map +1 -0
- package/dist/lib/encoders/encode-3d-tile-instanced-model.js.map +1 -1
- package/dist/lib/encoders/encode-3d-tile-point-cloud.d.ts +2 -0
- package/dist/lib/encoders/encode-3d-tile-point-cloud.d.ts.map +1 -0
- package/dist/lib/encoders/encode-3d-tile-point-cloud.js.map +1 -1
- package/dist/lib/encoders/encode-3d-tile.d.ts +2 -0
- package/dist/lib/encoders/encode-3d-tile.d.ts.map +1 -0
- package/dist/lib/encoders/encode-3d-tile.js.map +1 -1
- package/dist/lib/encoders/helpers/encode-3d-tile-header.d.ts +3 -0
- package/dist/lib/encoders/helpers/encode-3d-tile-header.d.ts.map +1 -0
- package/dist/lib/encoders/helpers/encode-3d-tile-header.js.map +1 -1
- package/dist/lib/ion/ion.d.ts +4 -0
- package/dist/lib/ion/ion.d.ts.map +1 -0
- package/dist/lib/ion/ion.js.map +1 -1
- package/dist/lib/parsers/helpers/normalize-3d-tile-colors.d.ts +7 -0
- package/dist/lib/parsers/helpers/normalize-3d-tile-colors.d.ts.map +1 -0
- package/dist/lib/parsers/helpers/normalize-3d-tile-colors.js.map +1 -1
- package/dist/lib/parsers/helpers/normalize-3d-tile-normals.d.ts +6 -0
- package/dist/lib/parsers/helpers/normalize-3d-tile-normals.d.ts.map +1 -0
- package/dist/lib/parsers/helpers/normalize-3d-tile-normals.js.map +1 -1
- package/dist/lib/parsers/helpers/normalize-3d-tile-positions.d.ts +2 -0
- package/dist/lib/parsers/helpers/normalize-3d-tile-positions.d.ts.map +1 -0
- package/dist/lib/parsers/helpers/normalize-3d-tile-positions.js.map +1 -1
- package/dist/lib/parsers/helpers/parse-3d-implicit-tiles.d.ts +46 -0
- package/dist/lib/parsers/helpers/parse-3d-implicit-tiles.d.ts.map +1 -0
- package/dist/lib/parsers/helpers/parse-3d-implicit-tiles.js +222 -0
- package/dist/lib/parsers/helpers/parse-3d-implicit-tiles.js.map +1 -0
- package/dist/lib/parsers/helpers/parse-3d-tile-gltf-view.d.ts +7 -0
- package/dist/lib/parsers/helpers/parse-3d-tile-gltf-view.d.ts.map +1 -0
- package/dist/lib/parsers/helpers/parse-3d-tile-gltf-view.js +1 -1
- package/dist/lib/parsers/helpers/parse-3d-tile-gltf-view.js.map +1 -1
- package/dist/lib/parsers/helpers/parse-3d-tile-header.d.ts +2 -0
- package/dist/lib/parsers/helpers/parse-3d-tile-header.d.ts.map +1 -0
- package/dist/lib/parsers/helpers/parse-3d-tile-header.js.map +1 -1
- package/dist/lib/parsers/helpers/parse-3d-tile-subtree.d.ts +9 -0
- package/dist/lib/parsers/helpers/parse-3d-tile-subtree.d.ts.map +1 -0
- package/dist/lib/parsers/helpers/parse-3d-tile-subtree.js +64 -0
- package/dist/lib/parsers/helpers/parse-3d-tile-subtree.js.map +1 -0
- package/dist/lib/parsers/helpers/parse-3d-tile-tables.d.ts +3 -0
- package/dist/lib/parsers/helpers/parse-3d-tile-tables.d.ts.map +1 -0
- package/dist/lib/parsers/helpers/parse-3d-tile-tables.js +1 -1
- package/dist/lib/parsers/helpers/parse-3d-tile-tables.js.map +1 -1
- package/dist/lib/parsers/helpers/parse-utils.d.ts +4 -0
- package/dist/lib/parsers/helpers/parse-utils.d.ts.map +1 -0
- package/dist/lib/parsers/helpers/parse-utils.js.map +1 -1
- package/dist/lib/parsers/parse-3d-tile-batched-model.d.ts +2 -0
- package/dist/lib/parsers/parse-3d-tile-batched-model.d.ts.map +1 -0
- package/dist/lib/parsers/parse-3d-tile-batched-model.js.map +1 -1
- package/dist/lib/parsers/parse-3d-tile-composite.d.ts +2 -0
- package/dist/lib/parsers/parse-3d-tile-composite.d.ts.map +1 -0
- package/dist/lib/parsers/parse-3d-tile-composite.js.map +1 -1
- package/dist/lib/parsers/parse-3d-tile-gltf.d.ts +2 -0
- package/dist/lib/parsers/parse-3d-tile-gltf.d.ts.map +1 -0
- package/dist/lib/parsers/parse-3d-tile-gltf.js +10 -0
- package/dist/lib/parsers/parse-3d-tile-gltf.js.map +1 -0
- package/dist/lib/parsers/parse-3d-tile-header.d.ts +19 -0
- package/dist/lib/parsers/parse-3d-tile-header.d.ts.map +1 -0
- package/dist/lib/parsers/parse-3d-tile-header.js +72 -0
- package/dist/lib/parsers/parse-3d-tile-header.js.map +1 -1
- package/dist/lib/parsers/parse-3d-tile-instanced-model.d.ts +2 -0
- package/dist/lib/parsers/parse-3d-tile-instanced-model.d.ts.map +1 -0
- package/dist/lib/parsers/parse-3d-tile-instanced-model.js.map +1 -1
- package/dist/lib/parsers/parse-3d-tile-point-cloud.d.ts +3 -0
- package/dist/lib/parsers/parse-3d-tile-point-cloud.d.ts.map +1 -0
- package/dist/lib/parsers/parse-3d-tile-point-cloud.js +1 -1
- package/dist/lib/parsers/parse-3d-tile-point-cloud.js.map +1 -1
- package/dist/lib/parsers/parse-3d-tile.d.ts +2 -0
- package/dist/lib/parsers/parse-3d-tile.d.ts.map +1 -0
- package/dist/lib/parsers/parse-3d-tile.js +4 -0
- package/dist/lib/parsers/parse-3d-tile.js.map +1 -1
- package/dist/lib/utils/version.d.ts +2 -0
- package/dist/lib/utils/version.d.ts.map +1 -0
- package/dist/lib/utils/version.js +1 -1
- package/dist/lib/utils/version.js.map +1 -1
- package/dist/tile-3d-subtree-loader.d.ts +7 -0
- package/dist/tile-3d-subtree-loader.d.ts.map +1 -0
- package/dist/tile-3d-subtree-loader.js +14 -0
- package/dist/tile-3d-subtree-loader.js.map +1 -0
- package/dist/tile-3d-writer.d.ts +6 -0
- package/dist/tile-3d-writer.d.ts.map +1 -0
- package/dist/tiles-3d-loader.d.ts +6 -0
- package/dist/tiles-3d-loader.d.ts.map +1 -0
- package/dist/tiles-3d-loader.js +9 -2
- package/dist/tiles-3d-loader.js.map +1 -1
- package/dist/types.d.ts +80 -0
- package/dist/types.d.ts.map +1 -0
- package/package.json +10 -10
- package/src/index.ts +1 -0
- package/src/lib/classes/helpers/{tile-3d-accessor-utils.js → tile-3d-accessor-utils.ts} +0 -0
- package/src/lib/classes/{tile-3d-batch-table-hierarchy.js → tile-3d-batch-table-hierarchy.ts} +0 -0
- package/src/lib/classes/{tile-3d-batch-table.js → tile-3d-batch-table.ts} +14 -4
- package/src/lib/classes/{tile-3d-feature-table.js → tile-3d-feature-table.ts} +5 -2
- package/src/lib/{constants.js → constants.ts} +2 -1
- package/src/lib/encoders/{encode-3d-tile-batched-model.js → encode-3d-tile-batched-model.ts} +0 -0
- package/src/lib/encoders/{encode-3d-tile-composite.js → encode-3d-tile-composite.ts} +0 -0
- package/src/lib/encoders/{encode-3d-tile-instanced-model.js → encode-3d-tile-instanced-model.ts} +0 -0
- package/src/lib/encoders/{encode-3d-tile-point-cloud.js → encode-3d-tile-point-cloud.ts} +0 -0
- package/src/lib/encoders/{encode-3d-tile.js → encode-3d-tile.ts} +0 -0
- package/src/lib/encoders/helpers/{encode-3d-tile-header.js → encode-3d-tile-header.ts} +0 -0
- package/src/lib/ion/{ion.js → ion.ts} +0 -0
- package/src/lib/parsers/helpers/{normalize-3d-tile-colors.js → normalize-3d-tile-colors.ts} +1 -1
- package/src/lib/parsers/helpers/{normalize-3d-tile-normals.js → normalize-3d-tile-normals.ts} +0 -0
- package/src/lib/parsers/helpers/{normalize-3d-tile-positions.js → normalize-3d-tile-positions.ts} +0 -0
- package/src/lib/parsers/helpers/parse-3d-implicit-tiles.ts +319 -0
- package/src/lib/parsers/helpers/{parse-3d-tile-gltf-view.js → parse-3d-tile-gltf-view.ts} +1 -1
- package/src/lib/parsers/helpers/{parse-3d-tile-header.js → parse-3d-tile-header.ts} +0 -0
- package/src/lib/parsers/helpers/parse-3d-tile-subtree.ts +105 -0
- package/src/lib/parsers/helpers/{parse-3d-tile-tables.js → parse-3d-tile-tables.ts} +1 -1
- package/src/lib/parsers/helpers/{parse-utils.js → parse-utils.ts} +0 -0
- package/src/lib/parsers/{parse-3d-tile-batched-model.js → parse-3d-tile-batched-model.ts} +0 -0
- package/src/lib/parsers/{parse-3d-tile-composite.js → parse-3d-tile-composite.ts} +0 -0
- package/src/lib/parsers/parse-3d-tile-gltf.js +16 -0
- package/src/lib/parsers/parse-3d-tile-header.ts +152 -0
- package/src/lib/parsers/{parse-3d-tile-instanced-model.js → parse-3d-tile-instanced-model.ts} +6 -0
- package/src/lib/parsers/{parse-3d-tile-point-cloud.js → parse-3d-tile-point-cloud.ts} +2 -2
- package/src/lib/parsers/{parse-3d-tile.js → parse-3d-tile.ts} +8 -0
- package/src/lib/utils/{version.js → version.ts} +0 -0
- package/src/tile-3d-subtree-loader.ts +19 -0
- package/src/tiles-3d-loader.ts +17 -2
- package/src/types.ts +40 -1
- package/src/lib/parsers/parse-3d-tile-header.js +0 -69
|
@@ -8,12 +8,16 @@ import {parsePointCloud3DTile} from './parse-3d-tile-point-cloud';
|
|
|
8
8
|
import {parseBatchedModel3DTile} from './parse-3d-tile-batched-model';
|
|
9
9
|
import {parseInstancedModel3DTile} from './parse-3d-tile-instanced-model';
|
|
10
10
|
import {parseComposite3DTile} from './parse-3d-tile-composite';
|
|
11
|
+
import {parseGltf3DTile} from './parse-3d-tile-gltf';
|
|
11
12
|
|
|
12
13
|
// Extracts
|
|
13
14
|
export async function parse3DTile(arrayBuffer, byteOffset = 0, options, context, tile = {}) {
|
|
15
|
+
// @ts-expect-error
|
|
14
16
|
tile.byteOffset = byteOffset;
|
|
17
|
+
// @ts-expect-error
|
|
15
18
|
tile.type = getMagicString(arrayBuffer, byteOffset);
|
|
16
19
|
|
|
20
|
+
// @ts-expect-error
|
|
17
21
|
switch (tile.type) {
|
|
18
22
|
case TILE3D_TYPE.COMPOSITE:
|
|
19
23
|
// Note: We pass this function as argument so that embedded tiles can be parsed recursively
|
|
@@ -29,6 +33,9 @@ export async function parse3DTile(arrayBuffer, byteOffset = 0, options, context,
|
|
|
29
33
|
case TILE3D_TYPE.BATCHED_3D_MODEL:
|
|
30
34
|
return await parseBatchedModel3DTile(tile, arrayBuffer, byteOffset, options, context);
|
|
31
35
|
|
|
36
|
+
case TILE3D_TYPE.GLTF:
|
|
37
|
+
return await parseGltf3DTile(tile, arrayBuffer, options, context);
|
|
38
|
+
|
|
32
39
|
case TILE3D_TYPE.INSTANCED_3D_MODEL:
|
|
33
40
|
return await parseInstancedModel3DTile(tile, arrayBuffer, byteOffset, options, context);
|
|
34
41
|
|
|
@@ -36,6 +43,7 @@ export async function parse3DTile(arrayBuffer, byteOffset = 0, options, context,
|
|
|
36
43
|
return await parsePointCloud3DTile(tile, arrayBuffer, byteOffset, options, context);
|
|
37
44
|
|
|
38
45
|
default:
|
|
46
|
+
// @ts-expect-error
|
|
39
47
|
throw new Error(`3DTileLoader: unknown type ${tile.type}`); // eslint-disable-line
|
|
40
48
|
}
|
|
41
49
|
}
|
|
File without changes
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type {LoaderWithParser} from '@loaders.gl/loader-utils';
|
|
2
|
+
import parse3DTilesSubtree from './lib/parsers/helpers/parse-3d-tile-subtree';
|
|
3
|
+
import {VERSION} from './lib/utils/version';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Loader for 3D Tiles Subtree
|
|
7
|
+
*
|
|
8
|
+
*/
|
|
9
|
+
export const Tile3DSubtreeLoader: LoaderWithParser = {
|
|
10
|
+
id: '3d-tiles-subtree',
|
|
11
|
+
name: '3D Tiles Subtree',
|
|
12
|
+
module: '3d-tiles',
|
|
13
|
+
version: VERSION,
|
|
14
|
+
extensions: ['subtree'],
|
|
15
|
+
mimeTypes: ['application/octet-stream'],
|
|
16
|
+
tests: ['subtree'],
|
|
17
|
+
parse: parse3DTilesSubtree,
|
|
18
|
+
options: {}
|
|
19
|
+
};
|
package/src/tiles-3d-loader.ts
CHANGED
|
@@ -3,7 +3,12 @@ import {path} from '@loaders.gl/loader-utils';
|
|
|
3
3
|
import {TILESET_TYPE, LOD_METRIC_TYPE} from '@loaders.gl/tiles';
|
|
4
4
|
import {VERSION} from './lib/utils/version';
|
|
5
5
|
import {parse3DTile} from './lib/parsers/parse-3d-tile';
|
|
6
|
-
import {
|
|
6
|
+
import {
|
|
7
|
+
normalizeTileHeaders,
|
|
8
|
+
normalizeImplicitTileHeaders
|
|
9
|
+
} from './lib/parsers/parse-3d-tile-header';
|
|
10
|
+
|
|
11
|
+
const IMPLICIT_TILING_EXTENSION_NAME = '3DTILES_implicit_tiling';
|
|
7
12
|
|
|
8
13
|
/**
|
|
9
14
|
* Loader for 3D Tiles
|
|
@@ -49,7 +54,10 @@ async function parseTileset(data, options, context) {
|
|
|
49
54
|
tilesetJson.url = context.url;
|
|
50
55
|
// base path that non-absolute paths in tileset are relative to.
|
|
51
56
|
tilesetJson.basePath = getBaseUri(tilesetJson);
|
|
52
|
-
tilesetJson.root =
|
|
57
|
+
tilesetJson.root = hasImplicitTilingExtension(tilesetJson)
|
|
58
|
+
? await normalizeImplicitTileHeaders(tilesetJson)
|
|
59
|
+
: normalizeTileHeaders(tilesetJson);
|
|
60
|
+
|
|
53
61
|
tilesetJson.type = TILESET_TYPE.TILES3D;
|
|
54
62
|
|
|
55
63
|
tilesetJson.lodMetricType = LOD_METRIC_TYPE.GEOMETRIC_ERROR;
|
|
@@ -76,3 +84,10 @@ async function parse(data, options, context) {
|
|
|
76
84
|
|
|
77
85
|
return data;
|
|
78
86
|
}
|
|
87
|
+
|
|
88
|
+
function hasImplicitTilingExtension(tilesetJson) {
|
|
89
|
+
return (
|
|
90
|
+
tilesetJson?.extensionsRequired?.includes(IMPLICIT_TILING_EXTENSION_NAME) &&
|
|
91
|
+
tilesetJson?.extensionsUsed?.includes(IMPLICIT_TILING_EXTENSION_NAME)
|
|
92
|
+
);
|
|
93
|
+
}
|
package/src/types.ts
CHANGED
|
@@ -45,7 +45,46 @@ export type Node3D = {
|
|
|
45
45
|
};
|
|
46
46
|
};
|
|
47
47
|
|
|
48
|
-
type BoundingVolume = {
|
|
48
|
+
export type BoundingVolume = {
|
|
49
49
|
box?: number[];
|
|
50
50
|
sphere?: number[];
|
|
51
|
+
region?: number[];
|
|
52
|
+
};
|
|
53
|
+
|
|
54
|
+
/**
|
|
55
|
+
* 3DTILES_implicit_tiling types
|
|
56
|
+
* Spec - https://github.com/CesiumGS/3d-tiles/tree/main/extensions/3DTILES_implicit_tiling#subtree-file-format
|
|
57
|
+
*/
|
|
58
|
+
export type Subtree = {
|
|
59
|
+
buffers: Buffer[];
|
|
60
|
+
bufferViews: BufferView[];
|
|
61
|
+
tileAvailability: Availability;
|
|
62
|
+
contentAvailability: Availability;
|
|
63
|
+
childSubtreeAvailability: Availability;
|
|
64
|
+
};
|
|
65
|
+
|
|
66
|
+
export type Availability = {
|
|
67
|
+
constant?: 0 | 1;
|
|
68
|
+
bufferView?: number;
|
|
69
|
+
// Internal bitstream type
|
|
70
|
+
explicitBitstream?: ExplicitBitstream;
|
|
71
|
+
};
|
|
72
|
+
|
|
73
|
+
export type ExplicitBitstream = Uint8Array;
|
|
74
|
+
|
|
75
|
+
/**
|
|
76
|
+
* Spec - https://github.com/CesiumGS/3d-tiles/tree/main/extensions/3DTILES_implicit_tiling#subdivision-scheme
|
|
77
|
+
*/
|
|
78
|
+
export type SubdivisionScheme = 'QUADTREE' | 'OCTREE';
|
|
79
|
+
|
|
80
|
+
type Buffer = {
|
|
81
|
+
name: string;
|
|
82
|
+
uri?: string;
|
|
83
|
+
byteLength: number;
|
|
84
|
+
};
|
|
85
|
+
|
|
86
|
+
type BufferView = {
|
|
87
|
+
buffer: number;
|
|
88
|
+
byteOffset: number;
|
|
89
|
+
byteLength: number;
|
|
51
90
|
};
|
|
@@ -1,69 +0,0 @@
|
|
|
1
|
-
import {LOD_METRIC_TYPE, TILE_REFINEMENT, TILE_TYPE} from '@loaders.gl/tiles';
|
|
2
|
-
|
|
3
|
-
function getTileType(tile) {
|
|
4
|
-
if (!tile.contentUrl) {
|
|
5
|
-
return TILE_TYPE.EMPTY;
|
|
6
|
-
}
|
|
7
|
-
|
|
8
|
-
const contentUrl = tile.contentUrl;
|
|
9
|
-
const fileExtension = contentUrl.split('.').pop();
|
|
10
|
-
switch (fileExtension) {
|
|
11
|
-
case 'pnts':
|
|
12
|
-
return TILE_TYPE.POINTCLOUD;
|
|
13
|
-
case 'i3dm':
|
|
14
|
-
case 'b3dm':
|
|
15
|
-
return TILE_TYPE.SCENEGRAPH;
|
|
16
|
-
default:
|
|
17
|
-
return fileExtension;
|
|
18
|
-
}
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
function getRefine(refine) {
|
|
22
|
-
switch (refine) {
|
|
23
|
-
case 'REPLACE':
|
|
24
|
-
case 'replace':
|
|
25
|
-
return TILE_REFINEMENT.REPLACE;
|
|
26
|
-
case 'ADD':
|
|
27
|
-
case 'add':
|
|
28
|
-
return TILE_REFINEMENT.ADD;
|
|
29
|
-
default:
|
|
30
|
-
return refine;
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
export function normalizeTileData(tile, options) {
|
|
35
|
-
if (!tile) {
|
|
36
|
-
return null;
|
|
37
|
-
}
|
|
38
|
-
if (tile.content) {
|
|
39
|
-
const contentUri = tile.content.uri || tile.content.url;
|
|
40
|
-
tile.contentUrl = `${options.basePath}/${contentUri}`;
|
|
41
|
-
}
|
|
42
|
-
tile.id = tile.contentUrl;
|
|
43
|
-
tile.lodMetricType = LOD_METRIC_TYPE.GEOMETRIC_ERROR;
|
|
44
|
-
tile.lodMetricValue = tile.geometricError;
|
|
45
|
-
tile.transformMatrix = tile.transform;
|
|
46
|
-
tile.type = getTileType(tile);
|
|
47
|
-
tile.refine = getRefine(tile.refine);
|
|
48
|
-
return tile;
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
// normalize tile headers
|
|
52
|
-
export function normalizeTileHeaders(tileset) {
|
|
53
|
-
const basePath = tileset.basePath;
|
|
54
|
-
const root = normalizeTileData(tileset.root, tileset);
|
|
55
|
-
|
|
56
|
-
const stack = [];
|
|
57
|
-
stack.push(root);
|
|
58
|
-
|
|
59
|
-
while (stack.length > 0) {
|
|
60
|
-
const tile = stack.pop() || {};
|
|
61
|
-
const children = tile.children || [];
|
|
62
|
-
for (const childHeader of children) {
|
|
63
|
-
normalizeTileData(childHeader, {basePath});
|
|
64
|
-
stack.push(childHeader);
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
return root;
|
|
69
|
-
}
|