@loaders.gl/tiles 4.4.2 → 5.0.0-alpha.1
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 +110 -1
- package/dist/dist.dev.js +4359 -1950
- package/dist/dist.min.js +1 -1
- package/dist/image-set.d.ts +94 -0
- package/dist/image-set.d.ts.map +1 -0
- package/dist/image-set.js +243 -0
- package/dist/image-set.js.map +1 -0
- package/dist/index.cjs +4178 -1892
- package/dist/index.cjs.map +4 -4
- package/dist/index.d.ts +27 -9
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +17 -8
- package/dist/index.js.map +1 -1
- package/dist/point-cloud/point-cloud-tile.d.ts +47 -0
- package/dist/point-cloud/point-cloud-tile.d.ts.map +1 -0
- package/dist/point-cloud/point-cloud-tile.js +67 -0
- package/dist/point-cloud/point-cloud-tile.js.map +1 -0
- package/dist/point-cloud/point-cloud-tileset.d.ts +131 -0
- package/dist/point-cloud/point-cloud-tileset.d.ts.map +1 -0
- package/dist/point-cloud/point-cloud-tileset.js +507 -0
- package/dist/point-cloud/point-cloud-tileset.js.map +1 -0
- package/dist/point-cloud/types.d.ts +64 -0
- package/dist/point-cloud/types.d.ts.map +1 -0
- package/dist/point-cloud/types.js +2 -0
- package/dist/point-cloud/types.js.map +1 -0
- package/dist/raster-set.d.ts +107 -0
- package/dist/raster-set.d.ts.map +1 -0
- package/dist/raster-set.js +268 -0
- package/dist/raster-set.js.map +1 -0
- package/dist/tileset-2d/adapter.d.ts +38 -0
- package/dist/tileset-2d/adapter.d.ts.map +1 -0
- package/dist/tileset-2d/adapter.js +5 -0
- package/dist/tileset-2d/adapter.js.map +1 -0
- package/dist/tileset-2d/index.d.ts +7 -0
- package/dist/tileset-2d/index.d.ts.map +1 -0
- package/dist/tileset-2d/index.js +6 -0
- package/dist/tileset-2d/index.js.map +1 -0
- package/dist/tileset-2d/tile-2d-header.d.ts +68 -0
- package/dist/tileset-2d/tile-2d-header.d.ts.map +1 -0
- package/dist/tileset-2d/tile-2d-header.js +181 -0
- package/dist/tileset-2d/tile-2d-header.js.map +1 -0
- package/dist/tileset-2d/tileset-2d.d.ts +201 -0
- package/dist/tileset-2d/tileset-2d.d.ts.map +1 -0
- package/dist/tileset-2d/tileset-2d.js +532 -0
- package/dist/tileset-2d/tileset-2d.js.map +1 -0
- package/dist/tileset-2d/types.d.ts +44 -0
- package/dist/tileset-2d/types.d.ts.map +1 -0
- package/dist/tileset-2d/types.js +5 -0
- package/dist/tileset-2d/types.js.map +1 -0
- package/dist/tileset-2d.d.ts +2 -0
- package/dist/tileset-2d.d.ts.map +1 -0
- package/dist/tileset-2d.js +5 -0
- package/dist/tileset-2d.js.map +1 -0
- package/dist/tileset-3d/common/indexed-archive-tileset-source.d.ts +60 -0
- package/dist/tileset-3d/common/indexed-archive-tileset-source.d.ts.map +1 -0
- package/dist/tileset-3d/common/indexed-archive-tileset-source.js +125 -0
- package/dist/tileset-3d/common/indexed-archive-tileset-source.js.map +1 -0
- package/dist/{tileset → tileset-3d/common}/tile-3d.d.ts +36 -27
- package/dist/tileset-3d/common/tile-3d.d.ts.map +1 -0
- package/dist/{tileset → tileset-3d/common}/tile-3d.js +53 -62
- package/dist/tileset-3d/common/tile-3d.js.map +1 -0
- package/dist/tileset-3d/common/tileset-3d.d.ts +177 -0
- package/dist/tileset-3d/common/tileset-3d.d.ts.map +1 -0
- package/dist/tileset-3d/common/tileset-3d.js +566 -0
- package/dist/tileset-3d/common/tileset-3d.js.map +1 -0
- package/dist/tileset-3d/common/tileset-cache.d.ts.map +1 -0
- package/dist/{tileset → tileset-3d/common}/tileset-cache.js +1 -1
- package/dist/tileset-3d/common/tileset-cache.js.map +1 -0
- package/dist/tileset-3d/common/tileset-source.d.ts +186 -0
- package/dist/tileset-3d/common/tileset-source.d.ts.map +1 -0
- package/dist/tileset-3d/common/tileset-source.js +17 -0
- package/dist/tileset-3d/common/tileset-source.js.map +1 -0
- package/dist/{tileset → tileset-3d/common}/tileset-traverser.d.ts +2 -2
- package/dist/tileset-3d/common/tileset-traverser.d.ts.map +1 -0
- package/dist/{tileset → tileset-3d/common}/tileset-traverser.js +2 -2
- package/dist/tileset-3d/common/tileset-traverser.js.map +1 -0
- package/dist/tileset-3d/format-3d-tiles/tiles-3d-source.d.ts +100 -0
- package/dist/tileset-3d/format-3d-tiles/tiles-3d-source.d.ts.map +1 -0
- package/dist/tileset-3d/format-3d-tiles/tiles-3d-source.js +312 -0
- package/dist/tileset-3d/format-3d-tiles/tiles-3d-source.js.map +1 -0
- package/dist/{tileset → tileset-3d}/format-3d-tiles/tileset-3d-traverser.d.ts +1 -1
- package/dist/tileset-3d/format-3d-tiles/tileset-3d-traverser.d.ts.map +1 -0
- package/dist/{tileset → tileset-3d}/format-3d-tiles/tileset-3d-traverser.js +1 -1
- package/dist/tileset-3d/format-3d-tiles/tileset-3d-traverser.js.map +1 -0
- package/dist/tileset-3d/format-i3s/i3s-pending-tiles-register.d.ts.map +1 -0
- package/dist/tileset-3d/format-i3s/i3s-pending-tiles-register.js.map +1 -0
- package/dist/tileset-3d/format-i3s/i3s-source.d.ts +99 -0
- package/dist/tileset-3d/format-i3s/i3s-source.d.ts.map +1 -0
- package/dist/tileset-3d/format-i3s/i3s-source.js +299 -0
- package/dist/tileset-3d/format-i3s/i3s-source.js.map +1 -0
- package/dist/tileset-3d/format-i3s/i3s-tile-manager.d.ts.map +1 -0
- package/dist/{tileset → tileset-3d}/format-i3s/i3s-tile-manager.js +2 -2
- package/dist/tileset-3d/format-i3s/i3s-tile-manager.js.map +1 -0
- package/dist/{tileset → tileset-3d}/format-i3s/i3s-tileset-traverser.d.ts +2 -2
- package/dist/tileset-3d/format-i3s/i3s-tileset-traverser.d.ts.map +1 -0
- package/dist/{tileset → tileset-3d}/format-i3s/i3s-tileset-traverser.js +14 -23
- package/dist/tileset-3d/format-i3s/i3s-tileset-traverser.js.map +1 -0
- package/dist/{tileset → tileset-3d}/helpers/3d-tiles-options.d.ts +1 -1
- package/dist/tileset-3d/helpers/3d-tiles-options.d.ts.map +1 -0
- package/dist/tileset-3d/helpers/3d-tiles-options.js.map +1 -0
- package/dist/tileset-3d/helpers/bounding-volume.d.ts.map +1 -0
- package/dist/tileset-3d/helpers/bounding-volume.js.map +1 -0
- package/dist/{tileset → tileset-3d}/helpers/frame-state.d.ts +1 -1
- package/dist/tileset-3d/helpers/frame-state.d.ts.map +1 -0
- package/dist/tileset-3d/helpers/frame-state.js.map +1 -0
- package/dist/{tileset → tileset-3d}/helpers/i3s-lod.d.ts +1 -1
- package/dist/tileset-3d/helpers/i3s-lod.d.ts.map +1 -0
- package/dist/{tileset → tileset-3d}/helpers/i3s-lod.js +1 -1
- package/dist/tileset-3d/helpers/i3s-lod.js.map +1 -0
- package/dist/tileset-3d/helpers/tiles-3d-lod.d.ts +20 -0
- package/dist/tileset-3d/helpers/tiles-3d-lod.d.ts.map +1 -0
- package/dist/{tileset → tileset-3d}/helpers/tiles-3d-lod.js +43 -4
- package/dist/tileset-3d/helpers/tiles-3d-lod.js.map +1 -0
- package/dist/{tileset → tileset-3d}/helpers/transform-utils.d.ts +1 -1
- package/dist/tileset-3d/helpers/transform-utils.d.ts.map +1 -0
- package/dist/tileset-3d/helpers/transform-utils.js.map +1 -0
- package/dist/tileset-3d/helpers/zoom.d.ts.map +1 -0
- package/dist/tileset-3d/helpers/zoom.js.map +1 -0
- package/dist/types.d.ts +7 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +7 -6
- package/src/image-set.ts +328 -0
- package/src/index.ts +80 -9
- package/src/point-cloud/point-cloud-tile.ts +76 -0
- package/src/point-cloud/point-cloud-tileset.ts +709 -0
- package/src/point-cloud/types.ts +78 -0
- package/src/raster-set.ts +374 -0
- package/src/tileset-2d/adapter.ts +47 -0
- package/src/tileset-2d/index.ts +33 -0
- package/src/tileset-2d/tile-2d-header.ts +224 -0
- package/src/tileset-2d/tileset-2d.ts +716 -0
- package/src/tileset-2d/types.ts +39 -0
- package/src/tileset-2d.ts +5 -0
- package/src/tileset-3d/common/indexed-archive-tileset-source.ts +205 -0
- package/src/{tileset → tileset-3d/common}/tile-3d.ts +64 -73
- package/src/tileset-3d/common/tileset-3d.ts +736 -0
- package/src/{tileset → tileset-3d/common}/tileset-cache.ts +1 -1
- package/src/tileset-3d/common/tileset-source.ts +234 -0
- package/src/{tileset → tileset-3d/common}/tileset-traverser.ts +3 -3
- package/src/tileset-3d/format-3d-tiles/tiles-3d-source.ts +379 -0
- package/src/{tileset → tileset-3d}/format-3d-tiles/tileset-3d-traverser.ts +1 -1
- package/src/tileset-3d/format-i3s/i3s-source.ts +366 -0
- package/src/{tileset → tileset-3d}/format-i3s/i3s-tile-manager.ts +2 -2
- package/src/{tileset → tileset-3d}/format-i3s/i3s-tileset-traverser.ts +15 -24
- package/src/{tileset → tileset-3d}/helpers/3d-tiles-options.ts +1 -1
- package/src/{tileset → tileset-3d}/helpers/frame-state.ts +1 -1
- package/src/{tileset → tileset-3d}/helpers/i3s-lod.ts +2 -2
- package/src/{tileset → tileset-3d}/helpers/tiles-3d-lod.ts +46 -4
- package/src/{tileset → tileset-3d}/helpers/transform-utils.ts +1 -1
- package/src/types.ts +7 -0
- package/dist/tileset/format-3d-tiles/tileset-3d-traverser.d.ts.map +0 -1
- package/dist/tileset/format-3d-tiles/tileset-3d-traverser.js.map +0 -1
- package/dist/tileset/format-i3s/i3s-pending-tiles-register.d.ts.map +0 -1
- package/dist/tileset/format-i3s/i3s-pending-tiles-register.js.map +0 -1
- package/dist/tileset/format-i3s/i3s-tile-manager.d.ts.map +0 -1
- package/dist/tileset/format-i3s/i3s-tile-manager.js.map +0 -1
- package/dist/tileset/format-i3s/i3s-tileset-traverser.d.ts.map +0 -1
- package/dist/tileset/format-i3s/i3s-tileset-traverser.js.map +0 -1
- package/dist/tileset/helpers/3d-tiles-options.d.ts.map +0 -1
- package/dist/tileset/helpers/3d-tiles-options.js.map +0 -1
- package/dist/tileset/helpers/bounding-volume.d.ts.map +0 -1
- package/dist/tileset/helpers/bounding-volume.js.map +0 -1
- package/dist/tileset/helpers/frame-state.d.ts.map +0 -1
- package/dist/tileset/helpers/frame-state.js.map +0 -1
- package/dist/tileset/helpers/i3s-lod.d.ts.map +0 -1
- package/dist/tileset/helpers/i3s-lod.js.map +0 -1
- package/dist/tileset/helpers/tiles-3d-lod.d.ts +0 -8
- package/dist/tileset/helpers/tiles-3d-lod.d.ts.map +0 -1
- package/dist/tileset/helpers/tiles-3d-lod.js.map +0 -1
- package/dist/tileset/helpers/transform-utils.d.ts.map +0 -1
- package/dist/tileset/helpers/transform-utils.js.map +0 -1
- package/dist/tileset/helpers/zoom.d.ts.map +0 -1
- package/dist/tileset/helpers/zoom.js.map +0 -1
- package/dist/tileset/tile-3d.d.ts.map +0 -1
- package/dist/tileset/tile-3d.js.map +0 -1
- package/dist/tileset/tileset-3d.d.ts +0 -284
- package/dist/tileset/tileset-3d.d.ts.map +0 -1
- package/dist/tileset/tileset-3d.js +0 -814
- package/dist/tileset/tileset-3d.js.map +0 -1
- package/dist/tileset/tileset-cache.d.ts.map +0 -1
- package/dist/tileset/tileset-cache.js.map +0 -1
- package/dist/tileset/tileset-traverser.d.ts.map +0 -1
- package/dist/tileset/tileset-traverser.js.map +0 -1
- package/src/tileset/tileset-3d.ts +0 -1037
- /package/dist/{tileset → tileset-3d/common}/tileset-cache.d.ts +0 -0
- /package/dist/{tileset → tileset-3d}/format-i3s/i3s-pending-tiles-register.d.ts +0 -0
- /package/dist/{tileset → tileset-3d}/format-i3s/i3s-pending-tiles-register.js +0 -0
- /package/dist/{tileset → tileset-3d}/format-i3s/i3s-tile-manager.d.ts +0 -0
- /package/dist/{tileset → tileset-3d}/helpers/3d-tiles-options.js +0 -0
- /package/dist/{tileset → tileset-3d}/helpers/bounding-volume.d.ts +0 -0
- /package/dist/{tileset → tileset-3d}/helpers/bounding-volume.js +0 -0
- /package/dist/{tileset → tileset-3d}/helpers/frame-state.js +0 -0
- /package/dist/{tileset → tileset-3d}/helpers/transform-utils.js +0 -0
- /package/dist/{tileset → tileset-3d}/helpers/zoom.d.ts +0 -0
- /package/dist/{tileset → tileset-3d}/helpers/zoom.js +0 -0
- /package/src/{tileset → tileset-3d}/format-i3s/i3s-pending-tiles-register.ts +0 -0
- /package/src/{tileset → tileset-3d}/helpers/bounding-volume.ts +0 -0
- /package/src/{tileset → tileset-3d}/helpers/zoom.ts +0 -0
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import type { CoreAPI, LoaderOptions, LoaderWithParser, ReadableFile } from '@loaders.gl/loader-utils';
|
|
2
|
+
import type { TilesetSourceResolver } from "./tileset-source.js";
|
|
3
|
+
/** Options for {@link IndexedArchiveTilesetSource}. */
|
|
4
|
+
export type IndexedArchiveTilesetSourceOptions<ArchiveT> = {
|
|
5
|
+
/** Archive URL or Blob. */
|
|
6
|
+
data: string | Blob;
|
|
7
|
+
/** Filename to expose for Blob inputs that do not provide a name. */
|
|
8
|
+
fallbackFilename: string;
|
|
9
|
+
/** Archive file extension used as the URL path marker. */
|
|
10
|
+
archiveExtension: string;
|
|
11
|
+
/** Path to the root metadata resource inside the archive. */
|
|
12
|
+
rootPath: string;
|
|
13
|
+
/** Optional mode passed when loading the root metadata resource. */
|
|
14
|
+
rootMode?: string;
|
|
15
|
+
/** Parses an opened readable file into an indexed archive object. */
|
|
16
|
+
parseArchive: (file: ReadableFile) => Promise<ArchiveT>;
|
|
17
|
+
/** Loads one resource from the parsed archive. */
|
|
18
|
+
getFile: (archive: ArchiveT, pathInArchive: string, mode?: string) => Promise<ArrayBuffer>;
|
|
19
|
+
/** Returns the core API used for local file loading and nested resource parsing. */
|
|
20
|
+
getCoreApi: () => CoreAPI | undefined;
|
|
21
|
+
/** Error message to throw when the core API is required but unavailable. */
|
|
22
|
+
missingCoreApiMessage: string;
|
|
23
|
+
};
|
|
24
|
+
/**
|
|
25
|
+
* Tileset source resolver backed by an indexed archive such as 3TZ or SLPK.
|
|
26
|
+
*
|
|
27
|
+
* The source owns archive opening, archive caching, path resolution, and archive-backed `fetch`
|
|
28
|
+
* injection. Format-specific parsing and file lookup stay in the owning format module.
|
|
29
|
+
*/
|
|
30
|
+
export declare class IndexedArchiveTilesetSource<ArchiveT> implements TilesetSourceResolver {
|
|
31
|
+
/** URL exposed to the tileset source that owns this archive source. */
|
|
32
|
+
readonly sourceUrl: string;
|
|
33
|
+
private readonly options;
|
|
34
|
+
private archivePromise?;
|
|
35
|
+
/**
|
|
36
|
+
* Creates an indexed archive tileset source.
|
|
37
|
+
* @param options Archive source options
|
|
38
|
+
*/
|
|
39
|
+
constructor(options: IndexedArchiveTilesetSourceOptions<ArchiveT>);
|
|
40
|
+
/**
|
|
41
|
+
* Loads and parses the archive root metadata resource.
|
|
42
|
+
* @param url Root URL, ignored because the archive root path is configured explicitly
|
|
43
|
+
* @param loader Loader used to parse the root metadata
|
|
44
|
+
* @param loadOptions Loader options forwarded to parsing
|
|
45
|
+
*/
|
|
46
|
+
loadRoot<DataT>(url: string, loader: LoaderWithParser<DataT>, loadOptions: LoaderOptions): Promise<DataT>;
|
|
47
|
+
/**
|
|
48
|
+
* Loads and parses an archive resource relative to a requesting resource URL.
|
|
49
|
+
* @param url Resource URL
|
|
50
|
+
* @param loader Loader used to parse the resource
|
|
51
|
+
* @param loadOptions Loader options forwarded to parsing
|
|
52
|
+
*/
|
|
53
|
+
loadResource<DataT>(url: string, loader: LoaderWithParser<DataT>, loadOptions: LoaderOptions): Promise<DataT>;
|
|
54
|
+
private parseArchiveResource;
|
|
55
|
+
private createArchiveFetch;
|
|
56
|
+
private loadFile;
|
|
57
|
+
private openArchiveReadableFile;
|
|
58
|
+
private resolveArchivePath;
|
|
59
|
+
}
|
|
60
|
+
//# sourceMappingURL=indexed-archive-tileset-source.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"indexed-archive-tileset-source.d.ts","sourceRoot":"","sources":["../../../src/tileset-3d/common/indexed-archive-tileset-source.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EACV,OAAO,EACP,aAAa,EACb,gBAAgB,EAChB,YAAY,EACb,MAAM,0BAA0B,CAAC;AAClC,OAAO,KAAK,EAAC,qBAAqB,EAAC,4BAAyB;AAE5D,uDAAuD;AACvD,MAAM,MAAM,kCAAkC,CAAC,QAAQ,IAAI;IACzD,2BAA2B;IAC3B,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,qEAAqE;IACrE,gBAAgB,EAAE,MAAM,CAAC;IACzB,0DAA0D;IAC1D,gBAAgB,EAAE,MAAM,CAAC;IACzB,6DAA6D;IAC7D,QAAQ,EAAE,MAAM,CAAC;IACjB,oEAAoE;IACpE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,qEAAqE;IACrE,YAAY,EAAE,CAAC,IAAI,EAAE,YAAY,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAC;IACxD,kDAAkD;IAClD,OAAO,EAAE,CAAC,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,WAAW,CAAC,CAAC;IAC3F,oFAAoF;IACpF,UAAU,EAAE,MAAM,OAAO,GAAG,SAAS,CAAC;IACtC,4EAA4E;IAC5E,qBAAqB,EAAE,MAAM,CAAC;CAC/B,CAAC;AAEF;;;;;GAKG;AACH,qBAAa,2BAA2B,CAAC,QAAQ,CAAE,YAAW,qBAAqB;IACjF,uEAAuE;IACvE,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAE3B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA+C;IACvE,OAAO,CAAC,cAAc,CAAC,CAAoB;IAE3C;;;OAGG;gBACS,OAAO,EAAE,kCAAkC,CAAC,QAAQ,CAAC;IAKjE;;;;;OAKG;IACG,QAAQ,CAAC,KAAK,EAClB,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,gBAAgB,CAAC,KAAK,CAAC,EAC/B,WAAW,EAAE,aAAa,GACzB,OAAO,CAAC,KAAK,CAAC;IAUjB;;;;;OAKG;IACG,YAAY,CAAC,KAAK,EACtB,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,gBAAgB,CAAC,KAAK,CAAC,EAC/B,WAAW,EAAE,aAAa,GACzB,OAAO,CAAC,KAAK,CAAC;YAKH,oBAAoB;IA+BlC,OAAO,CAAC,kBAAkB;YAUZ,QAAQ;YAQR,uBAAuB;IAkBrC,OAAO,CAAC,kBAAkB;CA8B3B"}
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
// loaders.gl
|
|
2
|
+
// SPDX-License-Identifier: MIT
|
|
3
|
+
// Copyright (c) vis.gl contributors
|
|
4
|
+
import { BlobFile, HttpFile, path } from '@loaders.gl/loader-utils';
|
|
5
|
+
/**
|
|
6
|
+
* Tileset source resolver backed by an indexed archive such as 3TZ or SLPK.
|
|
7
|
+
*
|
|
8
|
+
* The source owns archive opening, archive caching, path resolution, and archive-backed `fetch`
|
|
9
|
+
* injection. Format-specific parsing and file lookup stay in the owning format module.
|
|
10
|
+
*/
|
|
11
|
+
export class IndexedArchiveTilesetSource {
|
|
12
|
+
/** URL exposed to the tileset source that owns this archive source. */
|
|
13
|
+
sourceUrl;
|
|
14
|
+
options;
|
|
15
|
+
archivePromise;
|
|
16
|
+
/**
|
|
17
|
+
* Creates an indexed archive tileset source.
|
|
18
|
+
* @param options Archive source options
|
|
19
|
+
*/
|
|
20
|
+
constructor(options) {
|
|
21
|
+
this.options = options;
|
|
22
|
+
this.sourceUrl = getArchiveSourceUrl(options.data, options.fallbackFilename);
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Loads and parses the archive root metadata resource.
|
|
26
|
+
* @param url Root URL, ignored because the archive root path is configured explicitly
|
|
27
|
+
* @param loader Loader used to parse the root metadata
|
|
28
|
+
* @param loadOptions Loader options forwarded to parsing
|
|
29
|
+
*/
|
|
30
|
+
async loadRoot(url, loader, loadOptions) {
|
|
31
|
+
return await this.parseArchiveResource(url, this.options.rootPath, loader, loadOptions, this.options.rootMode);
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Loads and parses an archive resource relative to a requesting resource URL.
|
|
35
|
+
* @param url Resource URL
|
|
36
|
+
* @param loader Loader used to parse the resource
|
|
37
|
+
* @param loadOptions Loader options forwarded to parsing
|
|
38
|
+
*/
|
|
39
|
+
async loadResource(url, loader, loadOptions) {
|
|
40
|
+
const pathInArchive = this.resolveArchivePath(url, url);
|
|
41
|
+
return await this.parseArchiveResource(url, pathInArchive, loader, loadOptions);
|
|
42
|
+
}
|
|
43
|
+
async parseArchiveResource(resourceUrl, pathInArchive, loader, loadOptions, mode) {
|
|
44
|
+
const coreApi = this.options.getCoreApi();
|
|
45
|
+
if (!coreApi) {
|
|
46
|
+
throw new Error(this.options.missingCoreApiMessage);
|
|
47
|
+
}
|
|
48
|
+
const data = await this.loadFile(pathInArchive, mode);
|
|
49
|
+
const archiveFetch = this.createArchiveFetch(resourceUrl);
|
|
50
|
+
return (await coreApi.parse(data, loader, {
|
|
51
|
+
...loadOptions,
|
|
52
|
+
fetch: archiveFetch
|
|
53
|
+
}, {
|
|
54
|
+
url: resourceUrl,
|
|
55
|
+
fetch: archiveFetch,
|
|
56
|
+
_parse: coreApi.parse,
|
|
57
|
+
loaders: [loader],
|
|
58
|
+
coreApi
|
|
59
|
+
}));
|
|
60
|
+
}
|
|
61
|
+
createArchiveFetch(contextUrl) {
|
|
62
|
+
return async (input) => {
|
|
63
|
+
const requestUrl = typeof input === 'string' ? input : input instanceof URL ? input.toString() : input.url;
|
|
64
|
+
const pathInArchive = this.resolveArchivePath(requestUrl, contextUrl);
|
|
65
|
+
const data = await this.loadFile(pathInArchive);
|
|
66
|
+
return new Response(data, { status: 200 });
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
async loadFile(pathInArchive, mode) {
|
|
70
|
+
this.archivePromise ||= this.openArchiveReadableFile().then(file => this.options.parseArchive(file));
|
|
71
|
+
const archive = await this.archivePromise;
|
|
72
|
+
return await this.options.getFile(archive, pathInArchive, mode);
|
|
73
|
+
}
|
|
74
|
+
async openArchiveReadableFile() {
|
|
75
|
+
const { data } = this.options;
|
|
76
|
+
if (typeof data !== 'string') {
|
|
77
|
+
return new BlobFile(data);
|
|
78
|
+
}
|
|
79
|
+
if (/^https?:\/\//i.test(data)) {
|
|
80
|
+
return new HttpFile(data);
|
|
81
|
+
}
|
|
82
|
+
const coreApi = this.options.getCoreApi();
|
|
83
|
+
if (!coreApi) {
|
|
84
|
+
throw new Error(this.options.missingCoreApiMessage);
|
|
85
|
+
}
|
|
86
|
+
const response = await coreApi.fetchFile(data);
|
|
87
|
+
return new BlobFile(await response.arrayBuffer());
|
|
88
|
+
}
|
|
89
|
+
resolveArchivePath(request, baseUrl) {
|
|
90
|
+
const requestWithoutQuery = stripQueryString(request);
|
|
91
|
+
const archiveRoot = stripQueryString(this.sourceUrl);
|
|
92
|
+
const baseWithoutQuery = stripQueryString(baseUrl);
|
|
93
|
+
const basePath = baseWithoutQuery === archiveRoot ? archiveRoot : path.dirname(baseWithoutQuery);
|
|
94
|
+
const markerExpression = new RegExp(`\\.${this.options.archiveExtension}/(.*)$`, 'i');
|
|
95
|
+
const markerMatch = requestWithoutQuery.match(markerExpression);
|
|
96
|
+
if (markerMatch?.[1]) {
|
|
97
|
+
return markerMatch[1];
|
|
98
|
+
}
|
|
99
|
+
const isAbsoluteRequest = /^[a-z][a-z0-9+.-]*:/i.test(requestWithoutQuery) || requestWithoutQuery.startsWith('/');
|
|
100
|
+
const absoluteRequest = requestWithoutQuery.startsWith(archiveRoot)
|
|
101
|
+
? requestWithoutQuery
|
|
102
|
+
: baseWithoutQuery === archiveRoot && !isAbsoluteRequest
|
|
103
|
+
? `${archiveRoot}/${requestWithoutQuery}`
|
|
104
|
+
: path.resolve(basePath, requestWithoutQuery);
|
|
105
|
+
if (absoluteRequest === archiveRoot) {
|
|
106
|
+
return '';
|
|
107
|
+
}
|
|
108
|
+
if (absoluteRequest.startsWith(`${archiveRoot}/`)) {
|
|
109
|
+
return absoluteRequest.slice(archiveRoot.length + 1);
|
|
110
|
+
}
|
|
111
|
+
return absoluteRequest.replace(/^\/+/, '');
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
function getArchiveSourceUrl(data, fallbackFilename) {
|
|
115
|
+
if (typeof data === 'string') {
|
|
116
|
+
return data;
|
|
117
|
+
}
|
|
118
|
+
const fileName = 'name' in data && typeof data.name === 'string' && data.name ? data.name : fallbackFilename;
|
|
119
|
+
return `memory://${fileName}`;
|
|
120
|
+
}
|
|
121
|
+
function stripQueryString(url) {
|
|
122
|
+
const queryIndex = url.indexOf('?');
|
|
123
|
+
return queryIndex >= 0 ? url.slice(0, queryIndex) : url;
|
|
124
|
+
}
|
|
125
|
+
//# sourceMappingURL=indexed-archive-tileset-source.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"indexed-archive-tileset-source.js","sourceRoot":"","sources":["../../../src/tileset-3d/common/indexed-archive-tileset-source.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import { Matrix4 } from '@math.gl/core';
|
|
2
2
|
import type { Tileset3D } from "./tileset-3d.js";
|
|
3
|
-
import type { DoublyLinkedListNode } from "
|
|
4
|
-
import { TILE_REFINEMENT } from "
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
3
|
+
import type { DoublyLinkedListNode } from "../../utils/doubly-linked-list-node.js";
|
|
4
|
+
import { TILE_REFINEMENT } from "../../constants.js";
|
|
5
|
+
import type { TileContentLoadResult } from "./tileset-source.js";
|
|
6
|
+
import { FrameState } from "../helpers/frame-state.js";
|
|
7
|
+
import { CartographicBounds } from "../helpers/bounding-volume.js";
|
|
7
8
|
import { TilesetTraverser } from "./tileset-traverser.js";
|
|
8
9
|
/**
|
|
9
10
|
* @param tileset - Tileset3D instance
|
|
@@ -33,9 +34,17 @@ export declare class Tile3D {
|
|
|
33
34
|
type: string;
|
|
34
35
|
contentUrl: string;
|
|
35
36
|
/** Different refinement algorithms used by I3S and 3D tiles */
|
|
36
|
-
lodMetricType:
|
|
37
|
-
/**
|
|
37
|
+
lodMetricType: string;
|
|
38
|
+
/**
|
|
39
|
+
* The world-space geometric error, in meters, introduced if this tile is rendered and its
|
|
40
|
+
* children are not. For I3S this stores the format's unscaled screen-threshold metric instead.
|
|
41
|
+
*/
|
|
38
42
|
lodMetricValue: number;
|
|
43
|
+
/**
|
|
44
|
+
* The source LOD metric before applying the tile's computed transform. Keeping the source value
|
|
45
|
+
* separate ensures transform updates never compound an already-scaled geometric error.
|
|
46
|
+
*/
|
|
47
|
+
private _unscaledLodMetricValue;
|
|
39
48
|
/** @todo math.gl is not exporting BoundingVolume base type? */
|
|
40
49
|
boundingVolume: any;
|
|
41
50
|
/**
|
|
@@ -164,7 +173,7 @@ export declare class Tile3D {
|
|
|
164
173
|
* Requests the tile's content.
|
|
165
174
|
* The request may not be made if the Request Scheduler can't prioritize it.
|
|
166
175
|
*/
|
|
167
|
-
loadContent(): Promise<
|
|
176
|
+
loadContent(): Promise<TileContentLoadResult>;
|
|
168
177
|
unloadContent(): boolean;
|
|
169
178
|
/**
|
|
170
179
|
* Update the tile's visibility
|
|
@@ -197,8 +206,23 @@ export declare class Tile3D {
|
|
|
197
206
|
insideViewerRequestVolume(frameState: FrameState): boolean;
|
|
198
207
|
updateExpiration(): void;
|
|
199
208
|
get extras(): any;
|
|
200
|
-
|
|
209
|
+
/** Initializes the tile's LOD metric from its header or its nearest available ancestor. */
|
|
210
|
+
_initializeLodMetric(header: {
|
|
211
|
+
[key: string]: any;
|
|
212
|
+
}): void;
|
|
201
213
|
_initializeTransforms(tileHeader: any): void;
|
|
214
|
+
/**
|
|
215
|
+
* Updates the world-space LOD metric from the source metric and the complete tile transform.
|
|
216
|
+
*
|
|
217
|
+
* 3D Tiles geometric error is a distance in the tile's local meters. Screen-space error (SSE)
|
|
218
|
+
* compares that distance with a world-space camera distance, so both quantities must use the
|
|
219
|
+
* same scale. For non-uniform transforms the largest axis scale is deliberately used: this is
|
|
220
|
+
* conservative and prevents refinement from stopping while any transformed dimension can still
|
|
221
|
+
* exceed the requested visual error. Rotation and translation do not affect the scale.
|
|
222
|
+
*
|
|
223
|
+
* I3S `maxScreenThreshold` is already a screen-space metric and must not be transform-scaled.
|
|
224
|
+
*/
|
|
225
|
+
_updateLodMetricScale(): void;
|
|
202
226
|
_initializeBoundingVolumes(tileHeader: any): void;
|
|
203
227
|
_initializeContent(tileHeader: any): void;
|
|
204
228
|
_initializeRenderingState(header: any): void;
|
|
@@ -206,25 +230,10 @@ export declare class Tile3D {
|
|
|
206
230
|
_isTileset(): boolean;
|
|
207
231
|
_onContentLoaded(): void;
|
|
208
232
|
_updateBoundingVolume(header: any): void;
|
|
233
|
+
/**
|
|
234
|
+
* Updates the tile's computed transform, world-space geometric error, and bounding volumes.
|
|
235
|
+
* @param parentTransform - Current computed transform of the parent tile or tileset.
|
|
236
|
+
*/
|
|
209
237
|
_updateTransform(parentTransform?: Matrix4): void;
|
|
210
|
-
_getLoaderSpecificOptions(loaderId: any): {
|
|
211
|
-
assetGltfUpAxis: "X" | "Y" | "Z";
|
|
212
|
-
} | {
|
|
213
|
-
_tileOptions: {
|
|
214
|
-
attributeUrls: any;
|
|
215
|
-
textureUrl: any;
|
|
216
|
-
textureFormat: any;
|
|
217
|
-
textureLoaderOptions: any;
|
|
218
|
-
materialDefinition: any;
|
|
219
|
-
isDracoGeometry: any;
|
|
220
|
-
mbs: any;
|
|
221
|
-
};
|
|
222
|
-
_tilesetOptions: {
|
|
223
|
-
store: any;
|
|
224
|
-
attributeStorageInfo: any;
|
|
225
|
-
fields: any;
|
|
226
|
-
};
|
|
227
|
-
isTileHeader: boolean;
|
|
228
|
-
};
|
|
229
238
|
}
|
|
230
239
|
//# sourceMappingURL=tile-3d.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tile-3d.d.ts","sourceRoot":"","sources":["../../../src/tileset-3d/common/tile-3d.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,12 +5,10 @@
|
|
|
5
5
|
// See LICENSE.md and https://github.com/AnalyticalGraphicsInc/cesium/blob/master/LICENSE.md
|
|
6
6
|
import { Vector3, Matrix4 } from '@math.gl/core';
|
|
7
7
|
import { CullingVolume } from '@math.gl/culling';
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
11
|
-
import {
|
|
12
|
-
import { getProjectedRadius } from "./helpers/i3s-lod.js";
|
|
13
|
-
import { get3dTilesOptions } from "./helpers/3d-tiles-options.js";
|
|
8
|
+
import { LOD_METRIC_TYPE, TILE_REFINEMENT, TILE_CONTENT_STATE, TILESET_TYPE } from "../../constants.js";
|
|
9
|
+
import { createBoundingVolume, getCartographicBounds } from "../helpers/bounding-volume.js";
|
|
10
|
+
import { getTiles3DScreenSpaceError } from "../helpers/tiles-3d-lod.js";
|
|
11
|
+
import { getProjectedRadius } from "../helpers/i3s-lod.js";
|
|
14
12
|
import { TilesetTraverser } from "./tileset-traverser.js";
|
|
15
13
|
const scratchVector = new Vector3();
|
|
16
14
|
function defined(x) {
|
|
@@ -33,8 +31,16 @@ export class Tile3D {
|
|
|
33
31
|
contentUrl;
|
|
34
32
|
/** Different refinement algorithms used by I3S and 3D tiles */
|
|
35
33
|
lodMetricType = 'geometricError';
|
|
36
|
-
/**
|
|
34
|
+
/**
|
|
35
|
+
* The world-space geometric error, in meters, introduced if this tile is rendered and its
|
|
36
|
+
* children are not. For I3S this stores the format's unscaled screen-threshold metric instead.
|
|
37
|
+
*/
|
|
37
38
|
lodMetricValue = 0;
|
|
39
|
+
/**
|
|
40
|
+
* The source LOD metric before applying the tile's computed transform. Keeping the source value
|
|
41
|
+
* separate ensures transform updates never compound an already-scaled geometric error.
|
|
42
|
+
*/
|
|
43
|
+
_unscaledLodMetricValue = 0;
|
|
38
44
|
/** @todo math.gl is not exporting BoundingVolume base type? */
|
|
39
45
|
boundingVolume = null;
|
|
40
46
|
/**
|
|
@@ -118,6 +124,7 @@ export class Tile3D {
|
|
|
118
124
|
this.contentUrl = header.contentUrl;
|
|
119
125
|
this._initializeLodMetric(header);
|
|
120
126
|
this._initializeTransforms(header);
|
|
127
|
+
this._updateLodMetricScale();
|
|
121
128
|
this._initializeBoundingVolumes(header);
|
|
122
129
|
this._initializeContent(header);
|
|
123
130
|
this._initializeRenderingState(header);
|
|
@@ -273,10 +280,10 @@ export class Tile3D {
|
|
|
273
280
|
// eslint-disable-next-line max-statements, complexity
|
|
274
281
|
async loadContent() {
|
|
275
282
|
if (this.hasEmptyContent) {
|
|
276
|
-
return false;
|
|
283
|
+
return { loaded: false };
|
|
277
284
|
}
|
|
278
285
|
if (this.content) {
|
|
279
|
-
return true;
|
|
286
|
+
return { loaded: true };
|
|
280
287
|
}
|
|
281
288
|
const expired = this.contentExpired;
|
|
282
289
|
if (expired) {
|
|
@@ -287,34 +294,16 @@ export class Tile3D {
|
|
|
287
294
|
if (!requestToken) {
|
|
288
295
|
// cancelled
|
|
289
296
|
this.contentState = TILE_CONTENT_STATE.UNLOADED;
|
|
290
|
-
return false;
|
|
297
|
+
return { loaded: false };
|
|
291
298
|
}
|
|
292
299
|
try {
|
|
293
|
-
const
|
|
294
|
-
// The content can be a binary tile ot a JSON tileset
|
|
295
|
-
const loader = this.tileset.loader;
|
|
296
|
-
const tilesetLoaderOptions = this.tileset.loadOptions[loader.id] || {};
|
|
297
|
-
const options = {
|
|
298
|
-
...this.tileset.loadOptions,
|
|
299
|
-
[loader.id]: {
|
|
300
|
-
...tilesetLoaderOptions,
|
|
301
|
-
isTileset: this.type === 'json',
|
|
302
|
-
...this._getLoaderSpecificOptions(loader.id)
|
|
303
|
-
} // TODO add typecheck - as const satisfies ...
|
|
304
|
-
};
|
|
305
|
-
this.content = await load(contentUrl, loader, options);
|
|
300
|
+
const loadResult = await this.tileset.source.loadTileContent(this);
|
|
306
301
|
if (this.tileset.options.contentLoader) {
|
|
307
302
|
await this.tileset.options.contentLoader(this);
|
|
308
303
|
}
|
|
309
|
-
if (this._isTileset()) {
|
|
310
|
-
// Add tile headers for the nested tilset's subtree
|
|
311
|
-
// Async update of the tree should be fine since there would never be edits to the same node
|
|
312
|
-
// TODO - we need to capture the child tileset's URL
|
|
313
|
-
this.tileset._initializeTileHeaders(this.content, this);
|
|
314
|
-
}
|
|
315
304
|
this.contentState = TILE_CONTENT_STATE.READY;
|
|
316
305
|
this._onContentLoaded();
|
|
317
|
-
return
|
|
306
|
+
return loadResult;
|
|
318
307
|
}
|
|
319
308
|
catch (error) {
|
|
320
309
|
// Tile is unloaded before the content finishes loading
|
|
@@ -474,6 +463,7 @@ export class Tile3D {
|
|
|
474
463
|
return this.header.extras;
|
|
475
464
|
}
|
|
476
465
|
// INTERNAL METHODS
|
|
466
|
+
/** Initializes the tile's LOD metric from its header or its nearest available ancestor. */
|
|
477
467
|
_initializeLodMetric(header) {
|
|
478
468
|
if ('lodMetricType' in header) {
|
|
479
469
|
this.lodMetricType = header.lodMetricType;
|
|
@@ -485,14 +475,18 @@ export class Tile3D {
|
|
|
485
475
|
}
|
|
486
476
|
// This is used to compute screen space error, i.e., the error measured in pixels.
|
|
487
477
|
if ('lodMetricValue' in header) {
|
|
488
|
-
this.
|
|
478
|
+
this._unscaledLodMetricValue = header.lodMetricValue;
|
|
489
479
|
}
|
|
490
480
|
else {
|
|
491
|
-
|
|
492
|
-
|
|
481
|
+
// Inherit the source value, not the parent's world-space value. The child's complete
|
|
482
|
+
// transform will be applied after transform initialization below.
|
|
483
|
+
this._unscaledLodMetricValue = this.parent
|
|
484
|
+
? this.parent._unscaledLodMetricValue
|
|
485
|
+
: this.tileset.lodMetricValue;
|
|
493
486
|
// eslint-disable-next-line
|
|
494
487
|
console.warn('3D Tile: Required prop lodMetricValue is undefined. Using parent lodMetricValue');
|
|
495
488
|
}
|
|
489
|
+
this.lodMetricValue = this._unscaledLodMetricValue;
|
|
496
490
|
}
|
|
497
491
|
_initializeTransforms(tileHeader) {
|
|
498
492
|
// The local transform of this tile.
|
|
@@ -506,6 +500,26 @@ export class Tile3D {
|
|
|
506
500
|
const parentInitialTransform = parent && parent._initialTransform ? parent._initialTransform.clone() : new Matrix4();
|
|
507
501
|
this._initialTransform = new Matrix4(parentInitialTransform).multiplyRight(this.transform);
|
|
508
502
|
}
|
|
503
|
+
/**
|
|
504
|
+
* Updates the world-space LOD metric from the source metric and the complete tile transform.
|
|
505
|
+
*
|
|
506
|
+
* 3D Tiles geometric error is a distance in the tile's local meters. Screen-space error (SSE)
|
|
507
|
+
* compares that distance with a world-space camera distance, so both quantities must use the
|
|
508
|
+
* same scale. For non-uniform transforms the largest axis scale is deliberately used: this is
|
|
509
|
+
* conservative and prevents refinement from stopping while any transformed dimension can still
|
|
510
|
+
* exceed the requested visual error. Rotation and translation do not affect the scale.
|
|
511
|
+
*
|
|
512
|
+
* I3S `maxScreenThreshold` is already a screen-space metric and must not be transform-scaled.
|
|
513
|
+
*/
|
|
514
|
+
_updateLodMetricScale() {
|
|
515
|
+
if (this.lodMetricType !== LOD_METRIC_TYPE.GEOMETRIC_ERROR) {
|
|
516
|
+
this.lodMetricValue = this._unscaledLodMetricValue;
|
|
517
|
+
return;
|
|
518
|
+
}
|
|
519
|
+
const transformScale = this.computedTransform.getScale(scratchVector);
|
|
520
|
+
const maximumScale = Math.max(transformScale[0], transformScale[1], transformScale[2]);
|
|
521
|
+
this.lodMetricValue = this._unscaledLodMetricValue * maximumScale;
|
|
522
|
+
}
|
|
509
523
|
_initializeBoundingVolumes(tileHeader) {
|
|
510
524
|
this._contentBoundingVolume = null;
|
|
511
525
|
this._viewerRequestVolume = null;
|
|
@@ -589,7 +603,10 @@ export class Tile3D {
|
|
|
589
603
|
this._viewerRequestVolume = createBoundingVolume(header.viewerRequestVolume, this.computedTransform, this._viewerRequestVolume);
|
|
590
604
|
}
|
|
591
605
|
}
|
|
592
|
-
|
|
606
|
+
/**
|
|
607
|
+
* Updates the tile's computed transform, world-space geometric error, and bounding volumes.
|
|
608
|
+
* @param parentTransform - Current computed transform of the parent tile or tileset.
|
|
609
|
+
*/
|
|
593
610
|
_updateTransform(parentTransform = new Matrix4()) {
|
|
594
611
|
const computedTransform = parentTransform.clone().multiplyRight(this.transform);
|
|
595
612
|
const didTransformChange = !computedTransform.equals(this.computedTransform);
|
|
@@ -597,35 +614,9 @@ export class Tile3D {
|
|
|
597
614
|
return;
|
|
598
615
|
}
|
|
599
616
|
this.computedTransform = computedTransform;
|
|
617
|
+
// Recalculate from the unscaled source metric so repeated model-matrix changes never compound.
|
|
618
|
+
this._updateLodMetricScale();
|
|
600
619
|
this._updateBoundingVolume(this.header);
|
|
601
620
|
}
|
|
602
|
-
// Get options which are applicable only for the particular loader
|
|
603
|
-
_getLoaderSpecificOptions(loaderId) {
|
|
604
|
-
switch (loaderId) {
|
|
605
|
-
case 'i3s':
|
|
606
|
-
return {
|
|
607
|
-
...this.tileset.options.i3s,
|
|
608
|
-
_tileOptions: {
|
|
609
|
-
attributeUrls: this.header.attributeUrls,
|
|
610
|
-
textureUrl: this.header.textureUrl,
|
|
611
|
-
textureFormat: this.header.textureFormat,
|
|
612
|
-
textureLoaderOptions: this.header.textureLoaderOptions,
|
|
613
|
-
materialDefinition: this.header.materialDefinition,
|
|
614
|
-
isDracoGeometry: this.header.isDracoGeometry,
|
|
615
|
-
mbs: this.header.mbs
|
|
616
|
-
},
|
|
617
|
-
_tilesetOptions: {
|
|
618
|
-
store: this.tileset.tileset.store,
|
|
619
|
-
attributeStorageInfo: this.tileset.tileset.attributeStorageInfo,
|
|
620
|
-
fields: this.tileset.tileset.fields
|
|
621
|
-
},
|
|
622
|
-
isTileHeader: false
|
|
623
|
-
};
|
|
624
|
-
case '3d-tiles':
|
|
625
|
-
case 'cesium-ion':
|
|
626
|
-
default:
|
|
627
|
-
return get3dTilesOptions(this.tileset.tileset);
|
|
628
|
-
}
|
|
629
|
-
}
|
|
630
621
|
}
|
|
631
622
|
//# sourceMappingURL=tile-3d.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tile-3d.js","sourceRoot":"","sources":["../../../src/tileset-3d/common/tile-3d.ts"],"names":[],"mappings":"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"}
|