@loaders.gl/tiles 4.4.3 → 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.
Files changed (198) hide show
  1. package/README.md +110 -1
  2. package/dist/dist.dev.js +4359 -1950
  3. package/dist/dist.min.js +1 -1
  4. package/dist/image-set.d.ts +94 -0
  5. package/dist/image-set.d.ts.map +1 -0
  6. package/dist/image-set.js +243 -0
  7. package/dist/image-set.js.map +1 -0
  8. package/dist/index.cjs +4178 -1892
  9. package/dist/index.cjs.map +4 -4
  10. package/dist/index.d.ts +27 -9
  11. package/dist/index.d.ts.map +1 -1
  12. package/dist/index.js +17 -8
  13. package/dist/index.js.map +1 -1
  14. package/dist/point-cloud/point-cloud-tile.d.ts +47 -0
  15. package/dist/point-cloud/point-cloud-tile.d.ts.map +1 -0
  16. package/dist/point-cloud/point-cloud-tile.js +67 -0
  17. package/dist/point-cloud/point-cloud-tile.js.map +1 -0
  18. package/dist/point-cloud/point-cloud-tileset.d.ts +131 -0
  19. package/dist/point-cloud/point-cloud-tileset.d.ts.map +1 -0
  20. package/dist/point-cloud/point-cloud-tileset.js +507 -0
  21. package/dist/point-cloud/point-cloud-tileset.js.map +1 -0
  22. package/dist/point-cloud/types.d.ts +64 -0
  23. package/dist/point-cloud/types.d.ts.map +1 -0
  24. package/dist/point-cloud/types.js +2 -0
  25. package/dist/point-cloud/types.js.map +1 -0
  26. package/dist/raster-set.d.ts +107 -0
  27. package/dist/raster-set.d.ts.map +1 -0
  28. package/dist/raster-set.js +268 -0
  29. package/dist/raster-set.js.map +1 -0
  30. package/dist/tileset-2d/adapter.d.ts +38 -0
  31. package/dist/tileset-2d/adapter.d.ts.map +1 -0
  32. package/dist/tileset-2d/adapter.js +5 -0
  33. package/dist/tileset-2d/adapter.js.map +1 -0
  34. package/dist/tileset-2d/index.d.ts +7 -0
  35. package/dist/tileset-2d/index.d.ts.map +1 -0
  36. package/dist/tileset-2d/index.js +6 -0
  37. package/dist/tileset-2d/index.js.map +1 -0
  38. package/dist/tileset-2d/tile-2d-header.d.ts +68 -0
  39. package/dist/tileset-2d/tile-2d-header.d.ts.map +1 -0
  40. package/dist/tileset-2d/tile-2d-header.js +181 -0
  41. package/dist/tileset-2d/tile-2d-header.js.map +1 -0
  42. package/dist/tileset-2d/tileset-2d.d.ts +201 -0
  43. package/dist/tileset-2d/tileset-2d.d.ts.map +1 -0
  44. package/dist/tileset-2d/tileset-2d.js +532 -0
  45. package/dist/tileset-2d/tileset-2d.js.map +1 -0
  46. package/dist/tileset-2d/types.d.ts +44 -0
  47. package/dist/tileset-2d/types.d.ts.map +1 -0
  48. package/dist/tileset-2d/types.js +5 -0
  49. package/dist/tileset-2d/types.js.map +1 -0
  50. package/dist/tileset-2d.d.ts +2 -0
  51. package/dist/tileset-2d.d.ts.map +1 -0
  52. package/dist/tileset-2d.js +5 -0
  53. package/dist/tileset-2d.js.map +1 -0
  54. package/dist/tileset-3d/common/indexed-archive-tileset-source.d.ts +60 -0
  55. package/dist/tileset-3d/common/indexed-archive-tileset-source.d.ts.map +1 -0
  56. package/dist/tileset-3d/common/indexed-archive-tileset-source.js +125 -0
  57. package/dist/tileset-3d/common/indexed-archive-tileset-source.js.map +1 -0
  58. package/dist/{tileset → tileset-3d/common}/tile-3d.d.ts +36 -27
  59. package/dist/tileset-3d/common/tile-3d.d.ts.map +1 -0
  60. package/dist/{tileset → tileset-3d/common}/tile-3d.js +53 -62
  61. package/dist/tileset-3d/common/tile-3d.js.map +1 -0
  62. package/dist/tileset-3d/common/tileset-3d.d.ts +177 -0
  63. package/dist/tileset-3d/common/tileset-3d.d.ts.map +1 -0
  64. package/dist/tileset-3d/common/tileset-3d.js +566 -0
  65. package/dist/tileset-3d/common/tileset-3d.js.map +1 -0
  66. package/dist/tileset-3d/common/tileset-cache.d.ts.map +1 -0
  67. package/dist/{tileset → tileset-3d/common}/tileset-cache.js +1 -1
  68. package/dist/tileset-3d/common/tileset-cache.js.map +1 -0
  69. package/dist/tileset-3d/common/tileset-source.d.ts +186 -0
  70. package/dist/tileset-3d/common/tileset-source.d.ts.map +1 -0
  71. package/dist/tileset-3d/common/tileset-source.js +17 -0
  72. package/dist/tileset-3d/common/tileset-source.js.map +1 -0
  73. package/dist/{tileset → tileset-3d/common}/tileset-traverser.d.ts +2 -2
  74. package/dist/tileset-3d/common/tileset-traverser.d.ts.map +1 -0
  75. package/dist/{tileset → tileset-3d/common}/tileset-traverser.js +2 -2
  76. package/dist/tileset-3d/common/tileset-traverser.js.map +1 -0
  77. package/dist/tileset-3d/format-3d-tiles/tiles-3d-source.d.ts +100 -0
  78. package/dist/tileset-3d/format-3d-tiles/tiles-3d-source.d.ts.map +1 -0
  79. package/dist/tileset-3d/format-3d-tiles/tiles-3d-source.js +312 -0
  80. package/dist/tileset-3d/format-3d-tiles/tiles-3d-source.js.map +1 -0
  81. package/dist/{tileset → tileset-3d}/format-3d-tiles/tileset-3d-traverser.d.ts +1 -1
  82. package/dist/tileset-3d/format-3d-tiles/tileset-3d-traverser.d.ts.map +1 -0
  83. package/dist/{tileset → tileset-3d}/format-3d-tiles/tileset-3d-traverser.js +1 -1
  84. package/dist/tileset-3d/format-3d-tiles/tileset-3d-traverser.js.map +1 -0
  85. package/dist/tileset-3d/format-i3s/i3s-pending-tiles-register.d.ts.map +1 -0
  86. package/dist/tileset-3d/format-i3s/i3s-pending-tiles-register.js.map +1 -0
  87. package/dist/tileset-3d/format-i3s/i3s-source.d.ts +99 -0
  88. package/dist/tileset-3d/format-i3s/i3s-source.d.ts.map +1 -0
  89. package/dist/tileset-3d/format-i3s/i3s-source.js +299 -0
  90. package/dist/tileset-3d/format-i3s/i3s-source.js.map +1 -0
  91. package/dist/tileset-3d/format-i3s/i3s-tile-manager.d.ts.map +1 -0
  92. package/dist/{tileset → tileset-3d}/format-i3s/i3s-tile-manager.js +2 -2
  93. package/dist/tileset-3d/format-i3s/i3s-tile-manager.js.map +1 -0
  94. package/dist/{tileset → tileset-3d}/format-i3s/i3s-tileset-traverser.d.ts +2 -2
  95. package/dist/tileset-3d/format-i3s/i3s-tileset-traverser.d.ts.map +1 -0
  96. package/dist/{tileset → tileset-3d}/format-i3s/i3s-tileset-traverser.js +14 -23
  97. package/dist/tileset-3d/format-i3s/i3s-tileset-traverser.js.map +1 -0
  98. package/dist/{tileset → tileset-3d}/helpers/3d-tiles-options.d.ts +1 -1
  99. package/dist/tileset-3d/helpers/3d-tiles-options.d.ts.map +1 -0
  100. package/dist/tileset-3d/helpers/3d-tiles-options.js.map +1 -0
  101. package/dist/tileset-3d/helpers/bounding-volume.d.ts.map +1 -0
  102. package/dist/tileset-3d/helpers/bounding-volume.js.map +1 -0
  103. package/dist/{tileset → tileset-3d}/helpers/frame-state.d.ts +1 -1
  104. package/dist/tileset-3d/helpers/frame-state.d.ts.map +1 -0
  105. package/dist/tileset-3d/helpers/frame-state.js.map +1 -0
  106. package/dist/{tileset → tileset-3d}/helpers/i3s-lod.d.ts +1 -1
  107. package/dist/tileset-3d/helpers/i3s-lod.d.ts.map +1 -0
  108. package/dist/{tileset → tileset-3d}/helpers/i3s-lod.js +1 -1
  109. package/dist/tileset-3d/helpers/i3s-lod.js.map +1 -0
  110. package/dist/tileset-3d/helpers/tiles-3d-lod.d.ts +20 -0
  111. package/dist/tileset-3d/helpers/tiles-3d-lod.d.ts.map +1 -0
  112. package/dist/{tileset → tileset-3d}/helpers/tiles-3d-lod.js +43 -4
  113. package/dist/tileset-3d/helpers/tiles-3d-lod.js.map +1 -0
  114. package/dist/{tileset → tileset-3d}/helpers/transform-utils.d.ts +1 -1
  115. package/dist/tileset-3d/helpers/transform-utils.d.ts.map +1 -0
  116. package/dist/tileset-3d/helpers/transform-utils.js.map +1 -0
  117. package/dist/tileset-3d/helpers/zoom.d.ts.map +1 -0
  118. package/dist/tileset-3d/helpers/zoom.js.map +1 -0
  119. package/dist/types.d.ts +7 -0
  120. package/dist/types.d.ts.map +1 -1
  121. package/package.json +7 -6
  122. package/src/image-set.ts +328 -0
  123. package/src/index.ts +80 -9
  124. package/src/point-cloud/point-cloud-tile.ts +76 -0
  125. package/src/point-cloud/point-cloud-tileset.ts +709 -0
  126. package/src/point-cloud/types.ts +78 -0
  127. package/src/raster-set.ts +374 -0
  128. package/src/tileset-2d/adapter.ts +47 -0
  129. package/src/tileset-2d/index.ts +33 -0
  130. package/src/tileset-2d/tile-2d-header.ts +224 -0
  131. package/src/tileset-2d/tileset-2d.ts +716 -0
  132. package/src/tileset-2d/types.ts +39 -0
  133. package/src/tileset-2d.ts +5 -0
  134. package/src/tileset-3d/common/indexed-archive-tileset-source.ts +205 -0
  135. package/src/{tileset → tileset-3d/common}/tile-3d.ts +64 -73
  136. package/src/tileset-3d/common/tileset-3d.ts +736 -0
  137. package/src/{tileset → tileset-3d/common}/tileset-cache.ts +1 -1
  138. package/src/tileset-3d/common/tileset-source.ts +234 -0
  139. package/src/{tileset → tileset-3d/common}/tileset-traverser.ts +3 -3
  140. package/src/tileset-3d/format-3d-tiles/tiles-3d-source.ts +379 -0
  141. package/src/{tileset → tileset-3d}/format-3d-tiles/tileset-3d-traverser.ts +1 -1
  142. package/src/tileset-3d/format-i3s/i3s-source.ts +366 -0
  143. package/src/{tileset → tileset-3d}/format-i3s/i3s-tile-manager.ts +2 -2
  144. package/src/{tileset → tileset-3d}/format-i3s/i3s-tileset-traverser.ts +15 -24
  145. package/src/{tileset → tileset-3d}/helpers/3d-tiles-options.ts +1 -1
  146. package/src/{tileset → tileset-3d}/helpers/frame-state.ts +1 -1
  147. package/src/{tileset → tileset-3d}/helpers/i3s-lod.ts +2 -2
  148. package/src/{tileset → tileset-3d}/helpers/tiles-3d-lod.ts +46 -4
  149. package/src/{tileset → tileset-3d}/helpers/transform-utils.ts +1 -1
  150. package/src/types.ts +7 -0
  151. package/dist/tileset/format-3d-tiles/tileset-3d-traverser.d.ts.map +0 -1
  152. package/dist/tileset/format-3d-tiles/tileset-3d-traverser.js.map +0 -1
  153. package/dist/tileset/format-i3s/i3s-pending-tiles-register.d.ts.map +0 -1
  154. package/dist/tileset/format-i3s/i3s-pending-tiles-register.js.map +0 -1
  155. package/dist/tileset/format-i3s/i3s-tile-manager.d.ts.map +0 -1
  156. package/dist/tileset/format-i3s/i3s-tile-manager.js.map +0 -1
  157. package/dist/tileset/format-i3s/i3s-tileset-traverser.d.ts.map +0 -1
  158. package/dist/tileset/format-i3s/i3s-tileset-traverser.js.map +0 -1
  159. package/dist/tileset/helpers/3d-tiles-options.d.ts.map +0 -1
  160. package/dist/tileset/helpers/3d-tiles-options.js.map +0 -1
  161. package/dist/tileset/helpers/bounding-volume.d.ts.map +0 -1
  162. package/dist/tileset/helpers/bounding-volume.js.map +0 -1
  163. package/dist/tileset/helpers/frame-state.d.ts.map +0 -1
  164. package/dist/tileset/helpers/frame-state.js.map +0 -1
  165. package/dist/tileset/helpers/i3s-lod.d.ts.map +0 -1
  166. package/dist/tileset/helpers/i3s-lod.js.map +0 -1
  167. package/dist/tileset/helpers/tiles-3d-lod.d.ts +0 -8
  168. package/dist/tileset/helpers/tiles-3d-lod.d.ts.map +0 -1
  169. package/dist/tileset/helpers/tiles-3d-lod.js.map +0 -1
  170. package/dist/tileset/helpers/transform-utils.d.ts.map +0 -1
  171. package/dist/tileset/helpers/transform-utils.js.map +0 -1
  172. package/dist/tileset/helpers/zoom.d.ts.map +0 -1
  173. package/dist/tileset/helpers/zoom.js.map +0 -1
  174. package/dist/tileset/tile-3d.d.ts.map +0 -1
  175. package/dist/tileset/tile-3d.js.map +0 -1
  176. package/dist/tileset/tileset-3d.d.ts +0 -284
  177. package/dist/tileset/tileset-3d.d.ts.map +0 -1
  178. package/dist/tileset/tileset-3d.js +0 -814
  179. package/dist/tileset/tileset-3d.js.map +0 -1
  180. package/dist/tileset/tileset-cache.d.ts.map +0 -1
  181. package/dist/tileset/tileset-cache.js.map +0 -1
  182. package/dist/tileset/tileset-traverser.d.ts.map +0 -1
  183. package/dist/tileset/tileset-traverser.js.map +0 -1
  184. package/src/tileset/tileset-3d.ts +0 -1037
  185. /package/dist/{tileset → tileset-3d/common}/tileset-cache.d.ts +0 -0
  186. /package/dist/{tileset → tileset-3d}/format-i3s/i3s-pending-tiles-register.d.ts +0 -0
  187. /package/dist/{tileset → tileset-3d}/format-i3s/i3s-pending-tiles-register.js +0 -0
  188. /package/dist/{tileset → tileset-3d}/format-i3s/i3s-tile-manager.d.ts +0 -0
  189. /package/dist/{tileset → tileset-3d}/helpers/3d-tiles-options.js +0 -0
  190. /package/dist/{tileset → tileset-3d}/helpers/bounding-volume.d.ts +0 -0
  191. /package/dist/{tileset → tileset-3d}/helpers/bounding-volume.js +0 -0
  192. /package/dist/{tileset → tileset-3d}/helpers/frame-state.js +0 -0
  193. /package/dist/{tileset → tileset-3d}/helpers/transform-utils.js +0 -0
  194. /package/dist/{tileset → tileset-3d}/helpers/zoom.d.ts +0 -0
  195. /package/dist/{tileset → tileset-3d}/helpers/zoom.js +0 -0
  196. /package/src/{tileset → tileset-3d}/format-i3s/i3s-pending-tiles-register.ts +0 -0
  197. /package/src/{tileset → tileset-3d}/helpers/bounding-volume.ts +0 -0
  198. /package/src/{tileset → tileset-3d}/helpers/zoom.ts +0 -0
@@ -0,0 +1,366 @@
1
+ // loaders.gl
2
+ // SPDX-License-Identifier: MIT
3
+ // Copyright (c) vis.gl contributors
4
+
5
+ import {path} from '@loaders.gl/loader-utils';
6
+ import {Ellipsoid} from '@math.gl/geospatial';
7
+ import {Vector3} from '@math.gl/core';
8
+ import type {CoreAPI, LoaderOptions, LoaderWithParser} from '@loaders.gl/loader-utils';
9
+ import type {Tile3D} from '../common/tile-3d';
10
+ import {Tile3D as Tile3DNode} from '../common/tile-3d';
11
+ import {I3STilesetTraverser} from './i3s-tileset-traverser';
12
+ import type {Tileset3D} from '../common/tileset-3d';
13
+ import type {FrameState} from '../helpers/frame-state';
14
+ import type {
15
+ TileContentLoadResult,
16
+ TilesetContentFormats,
17
+ TilesetJSON,
18
+ Tileset3DSource,
19
+ TilesetSourceInput,
20
+ TilesetSourceMetadata,
21
+ TilesetSourceRequest,
22
+ TilesetSourceResolver,
23
+ TilesetSourceViewState
24
+ } from '../common/tileset-source';
25
+ import {getZoomFromExtent, getZoomFromFullExtent} from '../helpers/zoom';
26
+ import {TILESET_TYPE} from '../../constants';
27
+ import type {TilesetTraverser, TilesetTraverserProps} from '../common/tileset-traverser';
28
+
29
+ const EMPTY_CONTENT_FORMATS: TilesetContentFormats = {
30
+ draco: false,
31
+ meshopt: false,
32
+ dds: false,
33
+ ktx2: false
34
+ };
35
+
36
+ /**
37
+ * {@link Tileset3DSource} implementation for I3S datasets.
38
+ */
39
+ export class I3SSource implements Tileset3DSource {
40
+ /** I3S format discriminator. */
41
+ readonly type = TILESET_TYPE.I3S;
42
+ /** Loader used for tile metadata and content requests. */
43
+ readonly loader: LoaderWithParser;
44
+ /** Root I3S layer URL. */
45
+ readonly url: string;
46
+ /** Base path used for relative tile resource resolution. */
47
+ readonly basePath: string;
48
+ /** Parsed I3S layer metadata. */
49
+ tileset: TilesetJSON | null = null;
50
+ /** Loader options forwarded to tile requests. */
51
+ readonly loadOptions: LoaderOptions;
52
+ /** Core API used for metadata and tile-content loads when injected by the caller. */
53
+ coreApi?: CoreAPI;
54
+ /** Aggregate content-format flags discovered during streaming. */
55
+ readonly contentFormats: TilesetContentFormats = {...EMPTY_CONTENT_FORMATS};
56
+
57
+ asset?: Record<string, any>;
58
+ properties?: any;
59
+ extras?: any;
60
+ credits?: any;
61
+ metadata?: TilesetSourceMetadata;
62
+
63
+ private readonly queryParams: Record<string, string> = {};
64
+ private readonly resolver?: TilesetSourceResolver;
65
+ private rootTileset: TilesetJSON;
66
+
67
+ /**
68
+ * Creates an I3S source.
69
+ * @param input Root metadata request, or preloaded root metadata for tests and internal callers.
70
+ * @param loadOptions Loader options forwarded to tile requests.
71
+ */
72
+ constructor(input: TilesetSourceInput, loadOptions: LoaderOptions = {}) {
73
+ const request = normalizeI3SRequest(input);
74
+ this.rootTileset = isTilesetRequest(input) ? null : input;
75
+ this.tileset = this.rootTileset;
76
+ this.loader = request.loader;
77
+ this.url = request.url;
78
+ this.basePath = request.basePath || path.dirname(request.url);
79
+ this.resolver = request.resolver;
80
+ this.coreApi = request.coreApi;
81
+ this.loadOptions = loadOptions;
82
+ }
83
+
84
+ /**
85
+ * Fetches and normalizes root I3S metadata for runtime consumption.
86
+ */
87
+ async initialize(): Promise<void> {
88
+ if (!this.rootTileset) {
89
+ this.rootTileset = await this.loadRootData(this.url, this.loadOptions);
90
+ }
91
+ this.tileset = this.rootTileset;
92
+
93
+ if (this.rootTileset.root && typeof this.rootTileset.root.then === 'function') {
94
+ this.rootTileset.root = await this.rootTileset.root;
95
+ }
96
+
97
+ const i3sOptions = this.loadOptions.i3s;
98
+ if (i3sOptions && typeof i3sOptions === 'object' && 'token' in i3sOptions) {
99
+ const token = (i3sOptions as Record<string, unknown>).token;
100
+ if (typeof token === 'string') {
101
+ this.queryParams.token = token;
102
+ }
103
+ }
104
+
105
+ this.metadata = {
106
+ type: this.type,
107
+ loader: this.loader,
108
+ url: this.url,
109
+ basePath: this.basePath,
110
+ tileset: this.rootTileset,
111
+ lodMetricType: this.rootTileset.lodMetricType,
112
+ lodMetricValue: this.rootTileset.lodMetricValue,
113
+ refine: this.rootTileset.root?.refine
114
+ };
115
+ }
116
+
117
+ /**
118
+ * Returns normalized source metadata after initialization.
119
+ */
120
+ getMetadata(): TilesetSourceMetadata {
121
+ if (!this.metadata) {
122
+ throw new Error('I3SSource has not been initialized');
123
+ }
124
+ return this.metadata;
125
+ }
126
+
127
+ /**
128
+ * Returns the initialized I3S root metadata.
129
+ */
130
+ async getRootTileset(): Promise<TilesetJSON> {
131
+ return this.getMetadata().tileset;
132
+ }
133
+
134
+ /**
135
+ * Creates the runtime root tile for an I3S subtree.
136
+ */
137
+ initializeTileHeaders(
138
+ tileset: Tileset3D,
139
+ tilesetJson: TilesetJSON,
140
+ parentTile?: Tile3D | null
141
+ ): Tile3D {
142
+ const rootTile = new Tile3DNode(tileset, tilesetJson.root, parentTile || undefined);
143
+ if (parentTile) {
144
+ parentTile.children.push(rootTile);
145
+ rootTile.depth = parentTile.depth + 1;
146
+ }
147
+ return rootTile;
148
+ }
149
+
150
+ /**
151
+ * Creates the standard I3S traverser.
152
+ */
153
+ createTraverser(options: TilesetTraverserProps): TilesetTraverser {
154
+ return new I3STilesetTraverser(options);
155
+ }
156
+
157
+ /**
158
+ * Loads renderable content for an I3S tile.
159
+ */
160
+ async loadTileContent(tile: Tile3D): Promise<TileContentLoadResult> {
161
+ const contentUrl = this.getTileUrl(tile.contentUrl);
162
+ const loaderId = this.loader.id;
163
+ const loaderOptions = (this.loadOptions[loaderId] as Record<string, unknown>) || {};
164
+ const metadata = this.getMetadata();
165
+ const options = {
166
+ ...this.loadOptions,
167
+ [loaderId]: {
168
+ ...loaderOptions,
169
+ ...tile.tileset.options.i3s,
170
+ _tileOptions: {
171
+ attributeUrls: tile.header.attributeUrls,
172
+ textureUrl: tile.header.textureUrl,
173
+ textureFormat: tile.header.textureFormat,
174
+ textureLoaderOptions: tile.header.textureLoaderOptions,
175
+ materialDefinition: tile.header.materialDefinition,
176
+ isDracoGeometry: tile.header.isDracoGeometry,
177
+ mbs: tile.header.mbs
178
+ },
179
+ _tilesetOptions: {
180
+ store: metadata.tileset.store,
181
+ attributeStorageInfo: metadata.tileset.attributeStorageInfo,
182
+ fields: metadata.tileset.fields
183
+ },
184
+ isTileHeader: false
185
+ }
186
+ };
187
+
188
+ tile.content = await this.loadResourceData(contentUrl, options);
189
+ return {loaded: true};
190
+ }
191
+
192
+ /**
193
+ * Loads child tile metadata on demand from node pages or `/nodes/{id}` resources.
194
+ */
195
+ async loadChildTileHeader(
196
+ _parentTile: Tile3D,
197
+ childId: string,
198
+ _frameState: FrameState
199
+ ): Promise<any> {
200
+ const metadata = this.getMetadata();
201
+ if (metadata.tileset.nodePages) {
202
+ return await metadata.tileset.nodePagesTile.formTileFromNodePages(childId);
203
+ }
204
+
205
+ const nodeUrl = this.getTileUrl(`${this.url}/nodes/${childId}`);
206
+ const i3sLoaderOptions =
207
+ this.loadOptions.i3s && typeof this.loadOptions.i3s === 'object'
208
+ ? (this.loadOptions.i3s as Record<string, unknown>)
209
+ : {};
210
+ const options = {
211
+ ...this.loadOptions,
212
+ i3s: {
213
+ ...i3sLoaderOptions,
214
+ isTileHeader: true
215
+ }
216
+ };
217
+
218
+ return await this.loadResourceData(nodeUrl, options);
219
+ }
220
+
221
+ /**
222
+ * Resolves an I3S request URL with source-managed query parameters.
223
+ */
224
+ getTileUrl(tilePath: string): string {
225
+ if (tilePath.startsWith('data:')) {
226
+ return tilePath;
227
+ }
228
+
229
+ if (!Object.keys(this.queryParams).length) {
230
+ return tilePath;
231
+ }
232
+
233
+ const queryParams = new URLSearchParams(this.queryParams).toString();
234
+ return `${tilePath}${tilePath.includes('?') ? '&' : '?'}${queryParams}`;
235
+ }
236
+
237
+ /**
238
+ * Derives the default view state from full extent or store extent metadata.
239
+ */
240
+ getViewState(_rootTile: Tile3D | null): TilesetSourceViewState {
241
+ const metadata = this.getMetadata();
242
+ const fullExtent = metadata.tileset.fullExtent;
243
+ if (fullExtent) {
244
+ const {xmin, xmax, ymin, ymax, zmin, zmax} = fullExtent;
245
+ const cartographicCenter = new Vector3(
246
+ xmin + (xmax - xmin) / 2,
247
+ ymin + (ymax - ymin) / 2,
248
+ zmin + (zmax - zmin) / 2
249
+ );
250
+ const cartesianCenter = new Vector3();
251
+ Ellipsoid.WGS84.cartographicToCartesian(cartographicCenter, cartesianCenter);
252
+ return {
253
+ cartographicCenter,
254
+ cartesianCenter,
255
+ zoom: getZoomFromFullExtent(fullExtent, cartographicCenter, cartesianCenter)
256
+ };
257
+ }
258
+
259
+ const extent = metadata.tileset.store?.extent;
260
+ if (extent) {
261
+ const [xmin, ymin, xmax, ymax] = extent;
262
+ const cartographicCenter = new Vector3(xmin + (xmax - xmin) / 2, ymin + (ymax - ymin) / 2, 0);
263
+ const cartesianCenter = new Vector3();
264
+ Ellipsoid.WGS84.cartographicToCartesian(cartographicCenter, cartesianCenter);
265
+ return {
266
+ cartographicCenter,
267
+ cartesianCenter,
268
+ zoom: getZoomFromExtent(extent, cartographicCenter, cartesianCenter)
269
+ };
270
+ }
271
+
272
+ console.warn('Extent is not defined in the tileset header');
273
+ return {
274
+ cartographicCenter: new Vector3(),
275
+ zoom: 1
276
+ };
277
+ }
278
+
279
+ /**
280
+ * Updates content-format flags after tile content loads.
281
+ */
282
+ onTileLoaded(_tileset: Tileset3D, tile: Tile3D): void {
283
+ if (tile.header.isDracoGeometry) {
284
+ this.contentFormats.draco = true;
285
+ }
286
+
287
+ switch (tile.header.textureFormat) {
288
+ case 'dds':
289
+ this.contentFormats.dds = true;
290
+ break;
291
+ case 'ktx2':
292
+ this.contentFormats.ktx2 = true;
293
+ break;
294
+ default:
295
+ }
296
+ }
297
+
298
+ /**
299
+ * Returns the total number of known tiles when node pages metadata is available.
300
+ */
301
+ getTilesTotalCount(): number | null {
302
+ const metadata = this.getMetadata();
303
+ return metadata.tileset?.nodePagesTile?.nodesInNodePages || null;
304
+ }
305
+
306
+ /**
307
+ * Loads data through injected core APIs so this module stays independent from `@loaders.gl/core`.
308
+ */
309
+ private async loadWithCoreApi(url: string, options: LoaderOptions): Promise<any> {
310
+ if (!this.coreApi) {
311
+ throw new Error('I3SSource requires an injected coreApi to load tileset data');
312
+ }
313
+
314
+ return await this.coreApi.load(url, this.loader, options);
315
+ }
316
+
317
+ /**
318
+ * Loads data through an injected resolver when present, otherwise through the injected core API.
319
+ */
320
+ private async loadRootData(url: string, options: LoaderOptions): Promise<any> {
321
+ if (this.resolver) {
322
+ return await this.resolver.loadRoot(url, this.loader, options);
323
+ }
324
+
325
+ return await this.loadWithCoreApi(url, options);
326
+ }
327
+
328
+ /**
329
+ * Loads tile metadata or content through an injected resolver when present, otherwise through the injected core API.
330
+ */
331
+ private async loadResourceData(url: string, options: LoaderOptions): Promise<any> {
332
+ if (this.resolver) {
333
+ return await this.resolver.loadResource(url, this.loader, options);
334
+ }
335
+
336
+ return await this.loadWithCoreApi(url, options);
337
+ }
338
+ }
339
+
340
+ function isTilesetRequest(input: TilesetSourceInput): input is TilesetSourceRequest {
341
+ return Boolean(
342
+ input && typeof input === 'object' && 'url' in input && 'loader' in input && !('type' in input)
343
+ );
344
+ }
345
+
346
+ /**
347
+ * Normalizes constructor input into a URL request descriptor.
348
+ * @param input Constructor input for {@link I3SSource}.
349
+ * @returns A normalized request with a resolved base path.
350
+ */
351
+ function normalizeI3SRequest(input: TilesetSourceInput): TilesetSourceRequest {
352
+ if (isTilesetRequest(input)) {
353
+ return {
354
+ ...input,
355
+ basePath: input.basePath || path.dirname(input.url)
356
+ };
357
+ }
358
+
359
+ return {
360
+ url: input.url,
361
+ loader: input.loader,
362
+ basePath: input.basePath || path.dirname(input.url),
363
+ resolver: (input as TilesetSourceRequest).resolver,
364
+ coreApi: (input as TilesetSourceRequest).coreApi
365
+ };
366
+ }
@@ -33,7 +33,7 @@ export class I3STileManager {
33
33
  // Register pending request for the frameNumber
34
34
  this.pendingTilesRegister.register(id, frameNumber);
35
35
  request()
36
- .then((data) => {
36
+ .then(data => {
37
37
  this._statusMap[key].status = STATUS.COMPLETED;
38
38
  const {
39
39
  frameNumber: actualFrameNumber,
@@ -43,7 +43,7 @@ export class I3STileManager {
43
43
  this.pendingTilesRegister.deregister(id, actualFrameNumber);
44
44
  this._statusMap[key].callback(data, frameState);
45
45
  })
46
- .catch((error) => {
46
+ .catch(error => {
47
47
  this._statusMap[key].status = STATUS.ERROR;
48
48
  const {
49
49
  frameNumber: actualFrameNumber,
@@ -1,8 +1,7 @@
1
- import {load} from '@loaders.gl/core';
2
- import {TilesetTraverser} from '../tileset-traverser';
1
+ import {TilesetTraverser} from '../common/tileset-traverser';
3
2
 
4
3
  import {getLodStatus} from '../helpers/i3s-lod';
5
- import {Tile3D} from '../tile-3d';
4
+ import {Tile3D} from '../common/tile-3d';
6
5
  import {I3STileManager} from './i3s-tile-manager';
7
6
  import {FrameState} from '../helpers/frame-state';
8
7
 
@@ -32,24 +31,18 @@ export class I3STilesetTraverser extends TilesetTraverser {
32
31
  const children = tile.header.children || [];
33
32
  // children which are already fetched and constructed as Tile3D instances
34
33
  const childTiles = tile.children;
35
- const tileset = tile.tileset;
36
-
37
34
  for (const child of children) {
38
35
  const extendedId = `${child.id}-${frameState.viewport.id}`;
39
36
  // if child tile is not fetched
40
- const childTile = childTiles && childTiles.find((t) => t.id === extendedId);
37
+ const childTile = childTiles && childTiles.find(t => t.id === extendedId);
41
38
  if (!childTile) {
42
- let request = () => this._loadTile(child.id, tileset);
39
+ const request = () => this._loadTile(tile, child.id, frameState);
43
40
  const cachedRequest = this._tileManager.find(extendedId);
44
41
  if (!cachedRequest) {
45
- // eslint-disable-next-line max-depth
46
- if (tileset.tileset.nodePages) {
47
- request = () => tileset.tileset.nodePagesTile.formTileFromNodePages(child.id);
48
- }
49
42
  this._tileManager.add(
50
43
  request,
51
44
  extendedId,
52
- (header) => this._onTileLoad(header, tile, extendedId),
45
+ header => this._onTileLoad(header, tile, extendedId),
53
46
  frameState
54
47
  );
55
48
  } else {
@@ -64,19 +57,12 @@ export class I3STilesetTraverser extends TilesetTraverser {
64
57
  return false;
65
58
  }
66
59
 
67
- async _loadTile(nodeId, tileset) {
68
- const {loader} = tileset;
69
- const nodeUrl = tileset.getTileUrl(`${tileset.url}/nodes/${nodeId}`);
70
- // load metadata
71
- const options = {
72
- ...tileset.loadOptions,
73
- i3s: {
74
- ...tileset.loadOptions.i3s,
75
- isTileHeader: true
76
- }
77
- };
60
+ async _loadTile(tile, nodeId, frameState) {
61
+ if (!tile.tileset.source.loadChildTileHeader) {
62
+ throw new Error('I3S source does not support child tile header loading');
63
+ }
78
64
 
79
- return await load(nodeUrl, loader, options);
65
+ return await tile.tileset.source.loadChildTileHeader(tile, nodeId, frameState);
80
66
  }
81
67
 
82
68
  /**
@@ -88,6 +74,11 @@ export class I3STilesetTraverser extends TilesetTraverser {
88
74
  * @return {void}
89
75
  */
90
76
  _onTileLoad(header, tile, extendedId) {
77
+ if (header instanceof Error) {
78
+ tile.tileset._onSourceError(header, tile);
79
+ return;
80
+ }
81
+
91
82
  // after child tile is fetched
92
83
  const childTile = new Tile3D(tile.tileset, header, tile, extendedId);
93
84
  tile.children.push(childTile);
@@ -1,4 +1,4 @@
1
- import type {Tileset3D} from '../tileset-3d';
1
+ import type {Tileset3D} from '../common/tileset-3d';
2
2
 
3
3
  export function get3dTilesOptions(tileset: Tileset3D): {assetGltfUpAxis: 'X' | 'Y' | 'Z'} {
4
4
  return {
@@ -1,4 +1,4 @@
1
- import {Tile3D} from '@loaders.gl/tiles';
1
+ import type {Tile3D} from '../common/tile-3d';
2
2
  import {Vector3} from '@math.gl/core';
3
3
  import {CullingVolume, Plane} from '@math.gl/culling';
4
4
  import {Ellipsoid} from '@math.gl/geospatial';
@@ -4,7 +4,7 @@
4
4
 
5
5
  import {Matrix4, Vector3} from '@math.gl/core';
6
6
  import {Ellipsoid} from '@math.gl/geospatial';
7
- import {Tile3D} from '../tile-3d';
7
+ import {Tile3D} from '../common/tile-3d';
8
8
  import {FrameState} from './frame-state';
9
9
 
10
10
  const cameraPositionCartesian = new Vector3();
@@ -25,7 +25,7 @@ const cartesianToEnuMatrix = new Matrix4();
25
25
  * @returns
26
26
  */
27
27
  export function getLodStatus(tile: Tile3D, frameState: FrameState): 'DIG' | 'OUT' | 'DRAW' {
28
- if (tile.lodMetricValue === 0 || isNaN(tile.lodMetricValue)) {
28
+ if (tile.lodMetricValue === 0 || Number.isNaN(tile.lodMetricValue)) {
29
29
  return 'DIG';
30
30
  }
31
31
  const screenSize = 2 * getProjectedRadius(tile, frameState);
@@ -124,6 +124,18 @@ export function getDynamicScreenSpaceError(tileset, distanceToCamera) {
124
124
  return 0;
125
125
  }
126
126
 
127
+ /**
128
+ * Calculates 3D Tiles screen-space error (SSE) for the current projection.
129
+ *
130
+ * Perspective SSE projects the tile's world-space geometric error through the existing viewport
131
+ * height and frustum denominator. Orthographic projection has no perspective distance falloff, so
132
+ * its error is divided directly by the viewport's world-space meters per logical pixel.
133
+ *
134
+ * @param tile - Tile containing the transform-scaled geometric error and camera distance.
135
+ * @param frameState - Current camera and viewport measurements.
136
+ * @param useParentLodMetric - Whether request prioritization should use the parent's error.
137
+ * @returns Estimated error in logical/CSS pixels.
138
+ */
127
139
  export function getTiles3DScreenSpaceError(tile, frameState, useParentLodMetric) {
128
140
  const tileset = tile.tileset;
129
141
  const parentLodMetricValue = (tile.parent && tile.parent.lodMetricValue) || tile.lodMetricValue;
@@ -134,16 +146,46 @@ export function getTiles3DScreenSpaceError(tile, frameState, useParentLodMetric)
134
146
  return 0.0;
135
147
  }
136
148
 
137
- // TODO: Orthographic Frustum needs special treatment?
138
- // this._getOrthograhicScreenSpaceError();
149
+ const {viewDistanceScale} = tileset.options;
150
+ const lodScale = viewDistanceScale || 1.0;
151
+ const orthographicError = getOrthographicScreenSpaceError(lodMetricValue, frameState, lodScale);
152
+ if (orthographicError !== null) {
153
+ return orthographicError;
154
+ }
139
155
 
140
156
  // Avoid divide by zero when viewer is inside the tile
141
157
  const distance = Math.max(tile._distanceToCamera, 1e-7);
142
158
  const {height, sseDenominator} = frameState;
143
- const {viewDistanceScale} = tileset.options;
144
- let error = (lodMetricValue * height * (viewDistanceScale || 1.0)) / (distance * sseDenominator);
159
+ let error = (lodMetricValue * height * lodScale) / (distance * sseDenominator);
145
160
 
146
161
  error -= getDynamicScreenSpaceError(tileset, distance);
147
162
 
148
163
  return error;
149
164
  }
165
+
166
+ /**
167
+ * Calculates orthographic SSE when the viewport provides a valid logical-pixel scale.
168
+ *
169
+ * deck.gl viewport dimensions and `metersPerPixel` use logical/CSS pixels. Applying the browser's
170
+ * device pixel ratio again would therefore double-correct the result and select different LODs on
171
+ * otherwise identical displays. If a structural third-party viewport does not expose a usable
172
+ * scale, `null` tells the caller to retain the established perspective-compatible fallback.
173
+ *
174
+ * @param lodMetricValue - Transform-scaled geometric error in world-space meters.
175
+ * @param frameState - Current frame state containing the viewport.
176
+ * @param lodScale - Application refinement scale from `viewDistanceScale`.
177
+ * @returns SSE in logical pixels, or `null` when orthographic SSE cannot be calculated.
178
+ */
179
+ function getOrthographicScreenSpaceError(lodMetricValue, frameState, lodScale) {
180
+ const viewport = frameState.viewport;
181
+ if (!viewport?.orthographic) {
182
+ return null;
183
+ }
184
+
185
+ const metersPerPixel = viewport.metersPerPixel;
186
+ if (!Number.isFinite(metersPerPixel) || metersPerPixel <= 0) {
187
+ return null;
188
+ }
189
+
190
+ return (lodMetricValue * lodScale) / metersPerPixel;
191
+ }
@@ -6,7 +6,7 @@ import {Ellipsoid} from '@math.gl/geospatial';
6
6
  import {Matrix4, Vector3} from '@math.gl/core';
7
7
  import {assert} from '@loaders.gl/loader-utils';
8
8
 
9
- import {Tile3D} from '../tile-3d';
9
+ import {Tile3D} from '../common/tile-3d';
10
10
 
11
11
  export function calculateTransformProps(tileHeader: Tile3D, tile: Tile3D['content']) {
12
12
  assert(tileHeader);
package/src/types.ts CHANGED
@@ -13,6 +13,13 @@ export type Viewport = {
13
13
  height: number;
14
14
  width: number;
15
15
  zoom: number;
16
+ /** Whether this viewport uses an orthographic projection. */
17
+ orthographic?: boolean;
18
+ /**
19
+ * World-space meters represented by one logical/CSS pixel at the viewport's current scale.
20
+ * Orthographic 3D Tiles traversal requires a positive, finite value to calculate SSE.
21
+ */
22
+ metersPerPixel?: number;
16
23
  distanceScales: {
17
24
  unitsPerMeter: number[];
18
25
  metersPerUnit: number[];
@@ -1 +0,0 @@
1
- {"version":3,"file":"tileset-3d-traverser.d.ts","sourceRoot":"","sources":["../../../src/tileset/format-3d-tiles/tileset-3d-traverser.ts"],"names":[],"mappings":"AAQA,OAAO,EAAC,gBAAgB,EAAC,gCAA6B;AAEtD,qBAAa,kBAAmB,SAAQ,gBAAgB;IACtD,uBAAuB,CAAC,CAAC,KAAA,EAAE,CAAC,KAAA;IAO5B,oBAAoB,CAAC,IAAI,KAAA,EAAE,UAAU,KAAA;IAmCrC,0BAA0B,CAAC,IAAI,KAAA,EAAE,UAAU,KAAA;CAS5C"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"tileset-3d-traverser.js","sourceRoot":"","sources":["../../../src/tileset/format-3d-tiles/tileset-3d-traverser.ts"],"names":[],"mappings":"AAAA,aAAa;AACb,+BAA+B;AAC/B,oCAAoC;AAEpC,wEAAwE;AACxE,4FAA4F;AAE5F,OAAO,EAAC,wBAAwB,EAAE,eAAe,EAAC,2BAAwB;AAC1E,OAAO,EAAC,gBAAgB,EAAC,gCAA6B;AAEtD,MAAM,OAAO,kBAAmB,SAAQ,gBAAgB;IACtD,uBAAuB,CAAC,CAAC,EAAE,CAAC;QAC1B,8DAA8D;QAC9D,OAAO,CAAC,CAAC,iBAAiB,KAAK,CAAC,IAAI,CAAC,CAAC,iBAAiB,KAAK,CAAC;YAC3D,CAAC,CAAC,CAAC,CAAC,aAAa,GAAG,CAAC,CAAC,aAAa;YACnC,CAAC,CAAC,CAAC,CAAC,iBAAiB,GAAG,CAAC,CAAC,iBAAiB,CAAC;IAChD,CAAC;IAED,oBAAoB,CAAC,IAAI,EAAE,UAAU;QACnC,KAAK,CAAC,oBAAoB,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;QAE7C,0FAA0F;QAC1F,IAAI,CAAC,IAAI,CAAC,2BAA2B,EAAE,CAAC;YACtC,OAAO;QACT,CAAC;QAED,MAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;QAC7C,IAAI,IAAI,CAAC,iBAAiB,IAAI,WAAW,EAAE,CAAC;YAC1C,oEAAoE;YACpE,2EAA2E;YAC3E,wCAAwC;YACxC,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;YACpC,IAAI,CAAC,oBAAoB,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;YAClD,IAAI,CAAC,QAAQ,GAAG,UAAU,CAAC,QAAQ,CAAC;YACpC,OAAO;QACT,CAAC;QAED,IAAI,IAAI,CAAC,0BAA0B,CAAC,IAAI,EAAE,UAAU,CAAC,EAAE,CAAC;YACtD,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;YACtB,OAAO;QACT,CAAC;QAED,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,KAAK,eAAe,CAAC,OAAO,CAAC;QACxD,MAAM,eAAe,GACnB,IAAI,CAAC,0BAA0B,KAAK,wBAAwB,CAAC,gBAAgB,CAAC;QAChF,IAAI,OAAO,IAAI,eAAe,IAAI,WAAW,EAAE,CAAC;YAC9C,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE,UAAU,CAAC,EAAE,CAAC;gBAC/C,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;gBACtB,OAAO;YACT,CAAC;QACH,CAAC;IACH,CAAC;IAED,0BAA0B,CAAC,IAAI,EAAE,UAAU;QACzC,MAAM,EAAC,MAAM,EAAC,GAAG,IAAI,CAAC;QACtB,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,iBAAiB,IAAI,MAAM,CAAC,MAAM,KAAK,eAAe,CAAC,GAAG,EAAE,CAAC;YACjF,OAAO,KAAK,CAAC;QACf,CAAC;QAED,wFAAwF;QACxF,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,UAAU,EAAE,IAAI,CAAC,CAAC;IACpD,CAAC;CACF"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"i3s-pending-tiles-register.d.ts","sourceRoot":"","sources":["../../../src/tileset/format-i3s/i3s-pending-tiles-register.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,qBAAa,uBAAuB;IAClC,OAAO,CAAC,cAAc,CAA+C;IAErE;;;;OAIG;IACH,QAAQ,CAAC,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM;IAOhD;;;;OAIG;IACH,UAAU,CAAC,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM;IASlD;;;;;OAKG;IACH,MAAM,CAAC,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM;CAI/C"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"i3s-pending-tiles-register.js","sourceRoot":"","sources":["../../../src/tileset/format-i3s/i3s-pending-tiles-register.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,OAAO,uBAAuB;IAC1B,cAAc,GAAqC,IAAI,GAAG,EAAE,CAAC;IAErE;;;;OAIG;IACH,QAAQ,CAAC,UAAkB,EAAE,WAAmB;QAC9C,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,IAAI,GAAG,EAAE,CAAC;QACrE,MAAM,QAAQ,GAAG,WAAW,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QACnD,WAAW,CAAC,GAAG,CAAC,WAAW,EAAE,QAAQ,GAAG,CAAC,CAAC,CAAC;QAC3C,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;IACnD,CAAC;IAED;;;;OAIG;IACH,UAAU,CAAC,UAAkB,EAAE,WAAmB;QAChD,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QACxD,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,OAAO;QACT,CAAC;QACD,MAAM,QAAQ,GAAG,WAAW,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QACnD,WAAW,CAAC,GAAG,CAAC,WAAW,EAAE,QAAQ,GAAG,CAAC,CAAC,CAAC;IAC7C,CAAC;IAED;;;;;OAKG;IACH,MAAM,CAAC,UAAkB,EAAE,WAAmB;QAC5C,MAAM,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QACzE,OAAO,KAAK,KAAK,CAAC,CAAC;IACrB,CAAC;CACF"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"i3s-tile-manager.d.ts","sourceRoot":"","sources":["../../../src/tileset/format-i3s/i3s-tile-manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,UAAU,EAAC,kCAA+B;AAUlD,qBAAa,cAAc;IACzB,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,oBAAoB,CAAiC;;IAM7D;;;;;;OAMG;IACH,GAAG,CAAC,OAAO,KAAA,EAAE,GAAG,KAAA,EAAE,QAAQ,KAAA,EAAE,UAAU,EAAE,UAAU;IAiClD;;;;OAIG;IACH,MAAM,CAAC,GAAG,KAAA,EAAE,UAAU,EAAE,UAAU;IAmBlC;;;;OAIG;IACH,IAAI,CAAC,GAAG,KAAA;IAIR;;;;;OAKG;IACH,eAAe,CAAC,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO;CAGlE"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"i3s-tile-manager.js","sourceRoot":"","sources":["../../../src/tileset/format-i3s/i3s-tile-manager.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,uBAAuB,EAAC,wCAAqC;AAErE,MAAM,MAAM,GAAG;IACb,SAAS,EAAE,WAAW;IACtB,SAAS,EAAE,WAAW;IACtB,KAAK,EAAE,OAAO;CACf,CAAC;AAEF,kDAAkD;AAClD,MAAM,OAAO,cAAc;IACjB,UAAU,CAAS;IACnB,oBAAoB,GAAG,IAAI,uBAAuB,EAAE,CAAC;IAE7D;QACE,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;IACvB,CAAC;IAED;;;;;;OAMG;IACH,GAAG,CAAC,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,UAAsB;QAChD,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YAC1B,MAAM,EACJ,WAAW,EACX,QAAQ,EAAE,EAAC,EAAE,EAAC,EACf,GAAG,UAAU,CAAC;YACf,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,EAAC,OAAO,EAAE,QAAQ,EAAE,GAAG,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,CAAC,SAAS,EAAC,CAAC;YACtF,+CAA+C;YAC/C,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,EAAE,EAAE,WAAW,CAAC,CAAC;YACpD,OAAO,EAAE;iBACN,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE;gBACb,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC;gBAC/C,MAAM,EACJ,WAAW,EAAE,iBAAiB,EAC9B,QAAQ,EAAE,EAAC,EAAE,EAAC,EACf,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC;gBACpC,iDAAiD;gBACjD,IAAI,CAAC,oBAAoB,CAAC,UAAU,CAAC,EAAE,EAAE,iBAAiB,CAAC,CAAC;gBAC5D,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;YAClD,CAAC,CAAC;iBACD,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;gBACf,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC;gBAC3C,MAAM,EACJ,WAAW,EAAE,iBAAiB,EAC9B,QAAQ,EAAE,EAAC,EAAE,EAAC,EACf,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC;gBACpC,iDAAiD;gBACjD,IAAI,CAAC,oBAAoB,CAAC,UAAU,CAAC,EAAE,EAAE,iBAAiB,CAAC,CAAC;gBAC5D,QAAQ,CAAC,KAAK,CAAC,CAAC;YAClB,CAAC,CAAC,CAAC;QACP,CAAC;IACH,CAAC;IAED;;;;OAIG;IACH,MAAM,CAAC,GAAG,EAAE,UAAsB;QAChC,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YACzB,qDAAqD;YACrD,MAAM,EACJ,WAAW,EACX,QAAQ,EAAE,EAAC,EAAE,EAAC,EACf,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC;YACpC,IAAI,CAAC,oBAAoB,CAAC,UAAU,CAAC,EAAE,EAAE,WAAW,CAAC,CAAC;YAEtD,mDAAmD;YACnD,MAAM,EACJ,WAAW,EAAE,cAAc,EAC3B,QAAQ,EAAE,EAAC,EAAE,EAAE,aAAa,EAAC,EAC9B,GAAG,UAAU,CAAC;YACf,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,aAAa,EAAE,cAAc,CAAC,CAAC;YAClE,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,UAAU,GAAG,UAAU,CAAC;QAC/C,CAAC;IACH,CAAC;IAED;;;;OAIG;IACH,IAAI,CAAC,GAAG;QACN,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;IAC9B,CAAC;IAED;;;;;OAKG;IACH,eAAe,CAAC,UAAkB,EAAE,WAAmB;QACrD,OAAO,CAAC,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;IACpE,CAAC;CACF"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"i3s-tileset-traverser.d.ts","sourceRoot":"","sources":["../../../src/tileset/format-i3s/i3s-tileset-traverser.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,gBAAgB,EAAC,gCAA6B;AAKtD,OAAO,EAAC,UAAU,EAAC,kCAA+B;AAElD,qBAAa,mBAAoB,SAAQ,gBAAgB;IACvD,OAAO,CAAC,YAAY,CAAiB;gBAEzB,OAAO,KAAA;IAKnB;;;;OAIG;IACH,iBAAiB,CAAC,UAAU,EAAE,UAAU,GAAG,OAAO;IAIlD,YAAY,CAAC,IAAI,KAAA,EAAE,UAAU,EAAE,UAAU;IAKzC,gBAAgB,CAAC,IAAI,KAAA,EAAE,UAAU,EAAE,UAAU,GAAG,OAAO;IAoCjD,SAAS,CAAC,MAAM,KAAA,EAAE,OAAO,KAAA;IAe/B;;;;;;;OAOG;IACH,WAAW,CAAC,MAAM,KAAA,EAAE,IAAI,KAAA,EAAE,UAAU,KAAA;CAgBrC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"i3s-tileset-traverser.js","sourceRoot":"","sources":["../../../src/tileset/format-i3s/i3s-tileset-traverser.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"3d-tiles-options.d.ts","sourceRoot":"","sources":["../../../src/tileset/helpers/3d-tiles-options.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,SAAS,EAAC,yBAAsB;AAE7C,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,SAAS,GAAG;IAAC,eAAe,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,CAAA;CAAC,CAIxF"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"3d-tiles-options.js","sourceRoot":"","sources":["../../../src/tileset/helpers/3d-tiles-options.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,iBAAiB,CAAC,OAAkB;IAClD,OAAO;QACL,eAAe,EAAE,CAAC,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,GAAG;KACpE,CAAC;AACJ,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"bounding-volume.d.ts","sourceRoot":"","sources":["../../../src/tileset/helpers/bounding-volume.ts"],"names":[],"mappings":"AAKA,OAAO,EAAC,cAAc,EAAE,mBAAmB,EAAC,MAAM,kBAAkB,CAAC;AAuBrE;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,oBAAoB,KAAA,EAAE,SAAS,KAAA,EAAE,MAAM,CAAC,KAAA,OAiB5E;AAED,yDAAyD;AACzD,MAAM,MAAM,kBAAkB,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC,CAAC;AAEhE;;;;;GAKG;AACH,wBAAgB,qBAAqB,CACnC,oBAAoB,KAAA,EACpB,cAAc,EAAE,mBAAmB,GAAG,cAAc,GACnD,kBAAkB,CAuBpB"}