@itwin/core-frontend 3.0.0-extension.0 → 3.1.0-dev.11

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 (1426) hide show
  1. package/CHANGELOG.md +89 -1
  2. package/LICENSE.md +1 -1
  3. package/lib/cjs/AccuSnap.js +3 -3
  4. package/lib/cjs/AccuSnap.js.map +1 -1
  5. package/lib/cjs/ApproximateTerrainHeights.d.ts.map +1 -1
  6. package/lib/cjs/ApproximateTerrainHeights.js +10 -5
  7. package/lib/cjs/ApproximateTerrainHeights.js.map +1 -1
  8. package/lib/cjs/BackgroundMapGeometry.d.ts +1 -1
  9. package/lib/cjs/BackgroundMapGeometry.d.ts.map +1 -1
  10. package/lib/cjs/BackgroundMapGeometry.js +2 -2
  11. package/lib/cjs/BackgroundMapGeometry.js.map +1 -1
  12. package/lib/cjs/BingLocation.js +2 -2
  13. package/lib/cjs/BingLocation.js.map +1 -1
  14. package/lib/cjs/BriefcaseConnection.d.ts.map +1 -1
  15. package/lib/cjs/BriefcaseConnection.js +6 -5
  16. package/lib/cjs/BriefcaseConnection.js.map +1 -1
  17. package/lib/cjs/CheckpointConnection.js +1 -1
  18. package/lib/cjs/CheckpointConnection.js.map +1 -1
  19. package/lib/cjs/ContextRealityModelState.js +1 -1
  20. package/lib/cjs/ContextRealityModelState.js.map +1 -1
  21. package/lib/cjs/DisplayStyleState.d.ts +11 -163
  22. package/lib/cjs/DisplayStyleState.d.ts.map +1 -1
  23. package/lib/cjs/DisplayStyleState.js +69 -350
  24. package/lib/cjs/DisplayStyleState.js.map +1 -1
  25. package/lib/cjs/DrawingViewState.d.ts +2 -2
  26. package/lib/cjs/DrawingViewState.d.ts.map +1 -1
  27. package/lib/cjs/DrawingViewState.js +6 -6
  28. package/lib/cjs/DrawingViewState.js.map +1 -1
  29. package/lib/cjs/ElementLocateManager.d.ts +5 -0
  30. package/lib/cjs/ElementLocateManager.d.ts.map +1 -1
  31. package/lib/cjs/ElementLocateManager.js +12 -2
  32. package/lib/cjs/ElementLocateManager.js.map +1 -1
  33. package/lib/cjs/EmphasizeElements.d.ts.map +1 -1
  34. package/lib/cjs/EmphasizeElements.js +14 -4
  35. package/lib/cjs/EmphasizeElements.js.map +1 -1
  36. package/lib/cjs/EnvironmentDecorations.d.ts +39 -0
  37. package/lib/cjs/EnvironmentDecorations.d.ts.map +1 -0
  38. package/lib/cjs/EnvironmentDecorations.js +200 -0
  39. package/lib/cjs/EnvironmentDecorations.js.map +1 -0
  40. package/lib/cjs/FrontendHubAccess.d.ts +11 -7
  41. package/lib/cjs/FrontendHubAccess.d.ts.map +1 -1
  42. package/lib/cjs/FrontendHubAccess.js.map +1 -1
  43. package/lib/cjs/FrontendLoggerCategory.d.ts +2 -8
  44. package/lib/cjs/FrontendLoggerCategory.d.ts.map +1 -1
  45. package/lib/cjs/FrontendLoggerCategory.js +2 -8
  46. package/lib/cjs/FrontendLoggerCategory.js.map +1 -1
  47. package/lib/cjs/HitDetail.js +7 -7
  48. package/lib/cjs/HitDetail.js.map +1 -1
  49. package/lib/cjs/IModelApp.d.ts +31 -24
  50. package/lib/cjs/IModelApp.d.ts.map +1 -1
  51. package/lib/cjs/IModelApp.js +35 -36
  52. package/lib/cjs/IModelApp.js.map +1 -1
  53. package/lib/cjs/IModelConnection.d.ts +4 -6
  54. package/lib/cjs/IModelConnection.d.ts.map +1 -1
  55. package/lib/cjs/IModelConnection.js +6 -11
  56. package/lib/cjs/IModelConnection.js.map +1 -1
  57. package/lib/cjs/IModeljs-css.d.ts.map +1 -1
  58. package/lib/cjs/IModeljs-css.js +8 -6
  59. package/lib/cjs/IModeljs-css.js.map +1 -1
  60. package/lib/cjs/ImageUtil.d.ts +3 -3
  61. package/lib/cjs/ImageUtil.d.ts.map +1 -1
  62. package/lib/cjs/ImageUtil.js +7 -4
  63. package/lib/cjs/ImageUtil.js.map +1 -1
  64. package/lib/cjs/LocalhostIpcApp.d.ts +2 -1
  65. package/lib/cjs/LocalhostIpcApp.d.ts.map +1 -1
  66. package/lib/cjs/LocalhostIpcApp.js +21 -7
  67. package/lib/cjs/LocalhostIpcApp.js.map +1 -1
  68. package/lib/cjs/Marker.d.ts +9 -2
  69. package/lib/cjs/Marker.d.ts.map +1 -1
  70. package/lib/cjs/Marker.js +33 -5
  71. package/lib/cjs/Marker.js.map +1 -1
  72. package/lib/cjs/ModelState.js +1 -1
  73. package/lib/cjs/ModelState.js.map +1 -1
  74. package/lib/cjs/NativeApp.d.ts +3 -38
  75. package/lib/cjs/NativeApp.d.ts.map +1 -1
  76. package/lib/cjs/NativeApp.js +4 -73
  77. package/lib/cjs/NativeApp.js.map +1 -1
  78. package/lib/cjs/NoRenderApp.d.ts +0 -1
  79. package/lib/cjs/NoRenderApp.d.ts.map +1 -1
  80. package/lib/cjs/NoRenderApp.js +0 -1
  81. package/lib/cjs/NoRenderApp.js.map +1 -1
  82. package/lib/cjs/NotificationManager.d.ts +3 -1
  83. package/lib/cjs/NotificationManager.d.ts.map +1 -1
  84. package/lib/cjs/NotificationManager.js +2 -0
  85. package/lib/cjs/NotificationManager.js.map +1 -1
  86. package/lib/cjs/RealityDataSource.d.ts +59 -29
  87. package/lib/cjs/RealityDataSource.d.ts.map +1 -1
  88. package/lib/cjs/RealityDataSource.js +247 -94
  89. package/lib/cjs/RealityDataSource.js.map +1 -1
  90. package/lib/cjs/RenderScheduleState.d.ts +2 -0
  91. package/lib/cjs/RenderScheduleState.d.ts.map +1 -1
  92. package/lib/cjs/RenderScheduleState.js +10 -5
  93. package/lib/cjs/RenderScheduleState.js.map +1 -1
  94. package/lib/cjs/SheetViewState.d.ts +2 -2
  95. package/lib/cjs/SheetViewState.d.ts.map +1 -1
  96. package/lib/cjs/SheetViewState.js +11 -12
  97. package/lib/cjs/SheetViewState.js.map +1 -1
  98. package/lib/cjs/SpatialViewState.d.ts +10 -2
  99. package/lib/cjs/SpatialViewState.d.ts.map +1 -1
  100. package/lib/cjs/SpatialViewState.js +12 -2
  101. package/lib/cjs/SpatialViewState.js.map +1 -1
  102. package/lib/cjs/SubCategoriesCache.js +1 -1
  103. package/lib/cjs/SubCategoriesCache.js.map +1 -1
  104. package/lib/cjs/Tiles.d.ts +11 -1
  105. package/lib/cjs/Tiles.d.ts.map +1 -1
  106. package/lib/cjs/Tiles.js +7 -0
  107. package/lib/cjs/Tiles.js.map +1 -1
  108. package/lib/cjs/TwoWayViewportSync.d.ts +35 -6
  109. package/lib/cjs/TwoWayViewportSync.d.ts.map +1 -1
  110. package/lib/cjs/TwoWayViewportSync.js +51 -11
  111. package/lib/cjs/TwoWayViewportSync.js.map +1 -1
  112. package/lib/cjs/UserPreferences.d.ts +72 -0
  113. package/lib/cjs/UserPreferences.d.ts.map +1 -0
  114. package/lib/cjs/{extension/ExtensionLoader.js → UserPreferences.js} +1 -5
  115. package/lib/cjs/UserPreferences.js.map +1 -0
  116. package/lib/cjs/ViewContext.d.ts +3 -1
  117. package/lib/cjs/ViewContext.d.ts.map +1 -1
  118. package/lib/cjs/ViewContext.js +4 -0
  119. package/lib/cjs/ViewContext.js.map +1 -1
  120. package/lib/cjs/ViewCreator2d.js +3 -3
  121. package/lib/cjs/ViewCreator2d.js.map +1 -1
  122. package/lib/cjs/ViewCreator3d.d.ts +1 -1
  123. package/lib/cjs/ViewCreator3d.d.ts.map +1 -1
  124. package/lib/cjs/ViewCreator3d.js +4 -5
  125. package/lib/cjs/ViewCreator3d.js.map +1 -1
  126. package/lib/cjs/ViewManager.d.ts +6 -6
  127. package/lib/cjs/ViewManager.d.ts.map +1 -1
  128. package/lib/cjs/ViewManager.js +13 -13
  129. package/lib/cjs/ViewManager.js.map +1 -1
  130. package/lib/cjs/ViewState.d.ts +11 -5
  131. package/lib/cjs/ViewState.d.ts.map +1 -1
  132. package/lib/cjs/ViewState.js +18 -63
  133. package/lib/cjs/ViewState.js.map +1 -1
  134. package/lib/cjs/ViewingSpace.js +1 -1
  135. package/lib/cjs/ViewingSpace.js.map +1 -1
  136. package/lib/cjs/Viewport.d.ts +63 -14
  137. package/lib/cjs/Viewport.d.ts.map +1 -1
  138. package/lib/cjs/Viewport.js +71 -40
  139. package/lib/cjs/Viewport.js.map +1 -1
  140. package/lib/cjs/core-frontend.d.ts +17 -31
  141. package/lib/cjs/core-frontend.d.ts.map +1 -1
  142. package/lib/cjs/core-frontend.js +17 -31
  143. package/lib/cjs/core-frontend.js.map +1 -1
  144. package/lib/cjs/quantity-formatting/BaseUnitFormattingSettingsProvider.d.ts +3 -2
  145. package/lib/cjs/quantity-formatting/BaseUnitFormattingSettingsProvider.d.ts.map +1 -1
  146. package/lib/cjs/quantity-formatting/BaseUnitFormattingSettingsProvider.js +3 -2
  147. package/lib/cjs/quantity-formatting/BaseUnitFormattingSettingsProvider.js.map +1 -1
  148. package/lib/cjs/quantity-formatting/BasicUnitsProvider.d.ts +5 -1
  149. package/lib/cjs/quantity-formatting/BasicUnitsProvider.d.ts.map +1 -1
  150. package/lib/cjs/quantity-formatting/BasicUnitsProvider.js +20 -5
  151. package/lib/cjs/quantity-formatting/BasicUnitsProvider.js.map +1 -1
  152. package/lib/cjs/quantity-formatting/QuantityFormatter.d.ts +26 -3
  153. package/lib/cjs/quantity-formatting/QuantityFormatter.d.ts.map +1 -1
  154. package/lib/cjs/quantity-formatting/QuantityFormatter.js +46 -7
  155. package/lib/cjs/quantity-formatting/QuantityFormatter.js.map +1 -1
  156. package/lib/cjs/render/FeatureSymbology.d.ts.map +1 -1
  157. package/lib/cjs/render/FeatureSymbology.js +3 -3
  158. package/lib/cjs/render/FeatureSymbology.js.map +1 -1
  159. package/lib/cjs/render/GraphicBranch.d.ts +18 -2
  160. package/lib/cjs/render/GraphicBranch.d.ts.map +1 -1
  161. package/lib/cjs/render/GraphicBranch.js +9 -1
  162. package/lib/cjs/render/GraphicBranch.js.map +1 -1
  163. package/lib/cjs/render/GraphicBuilder.d.ts +7 -1
  164. package/lib/cjs/render/GraphicBuilder.d.ts.map +1 -1
  165. package/lib/cjs/render/GraphicBuilder.js.map +1 -1
  166. package/lib/cjs/render/MockRender.d.ts +3 -1
  167. package/lib/cjs/render/MockRender.d.ts.map +1 -1
  168. package/lib/cjs/render/MockRender.js.map +1 -1
  169. package/lib/cjs/render/RenderMaterial.d.ts +61 -0
  170. package/lib/cjs/render/RenderMaterial.d.ts.map +1 -0
  171. package/lib/cjs/render/RenderMaterial.js +10 -0
  172. package/lib/cjs/render/RenderMaterial.js.map +1 -0
  173. package/lib/cjs/render/RenderMemory.d.ts +21 -15
  174. package/lib/cjs/render/RenderMemory.d.ts.map +1 -1
  175. package/lib/cjs/render/RenderMemory.js +21 -15
  176. package/lib/cjs/render/RenderMemory.js.map +1 -1
  177. package/lib/cjs/render/RenderSystem.d.ts +48 -10
  178. package/lib/cjs/render/RenderSystem.d.ts.map +1 -1
  179. package/lib/cjs/render/RenderSystem.js +35 -12
  180. package/lib/cjs/render/RenderSystem.js.map +1 -1
  181. package/lib/cjs/render/RenderTarget.d.ts +10 -2
  182. package/lib/cjs/render/RenderTarget.d.ts.map +1 -1
  183. package/lib/cjs/render/RenderTarget.js +2 -1
  184. package/lib/cjs/render/RenderTarget.js.map +1 -1
  185. package/lib/cjs/render/RenderTexture.d.ts +2 -17
  186. package/lib/cjs/render/RenderTexture.d.ts.map +1 -1
  187. package/lib/cjs/render/RenderTexture.js +0 -17
  188. package/lib/cjs/render/RenderTexture.js.map +1 -1
  189. package/lib/cjs/render/primitives/EdgeParams.d.ts +84 -0
  190. package/lib/cjs/render/primitives/EdgeParams.d.ts.map +1 -0
  191. package/lib/cjs/render/primitives/EdgeParams.js +220 -0
  192. package/lib/cjs/render/primitives/EdgeParams.js.map +1 -0
  193. package/lib/cjs/render/primitives/PointStringParams.d.ts +16 -0
  194. package/lib/cjs/render/primitives/PointStringParams.d.ts.map +1 -0
  195. package/lib/cjs/render/primitives/PointStringParams.js +43 -0
  196. package/lib/cjs/render/primitives/PointStringParams.js.map +1 -0
  197. package/lib/cjs/render/primitives/PolylineParams.d.ts +44 -0
  198. package/lib/cjs/render/primitives/PolylineParams.d.ts.map +1 -0
  199. package/lib/cjs/render/primitives/PolylineParams.js +205 -0
  200. package/lib/cjs/render/primitives/PolylineParams.js.map +1 -0
  201. package/lib/cjs/render/primitives/Primitives.d.ts +1 -1
  202. package/lib/cjs/render/primitives/Primitives.d.ts.map +1 -1
  203. package/lib/cjs/render/primitives/Primitives.js.map +1 -1
  204. package/lib/cjs/render/primitives/SurfaceParams.d.ts +46 -0
  205. package/lib/cjs/render/primitives/SurfaceParams.d.ts.map +1 -0
  206. package/lib/cjs/render/primitives/SurfaceParams.js +42 -0
  207. package/lib/cjs/render/primitives/SurfaceParams.js.map +1 -0
  208. package/lib/cjs/render/primitives/VertexTable.d.ts +4 -123
  209. package/lib/cjs/render/primitives/VertexTable.d.ts.map +1 -1
  210. package/lib/cjs/render/primitives/VertexTable.js +16 -352
  211. package/lib/cjs/render/primitives/VertexTable.js.map +1 -1
  212. package/lib/cjs/render/primitives/geometry/GeometryAccumulator.d.ts +2 -0
  213. package/lib/cjs/render/primitives/geometry/GeometryAccumulator.d.ts.map +1 -1
  214. package/lib/cjs/render/primitives/geometry/GeometryAccumulator.js +2 -1
  215. package/lib/cjs/render/primitives/geometry/GeometryAccumulator.js.map +1 -1
  216. package/lib/cjs/render/primitives/geometry/GeometryListBuilder.d.ts.map +1 -1
  217. package/lib/cjs/render/primitives/geometry/GeometryListBuilder.js +1 -0
  218. package/lib/cjs/render/primitives/geometry/GeometryListBuilder.js.map +1 -1
  219. package/lib/cjs/render/primitives/mesh/MeshPrimitives.d.ts +2 -2
  220. package/lib/cjs/render/primitives/mesh/MeshPrimitives.d.ts.map +1 -1
  221. package/lib/cjs/render/primitives/mesh/MeshPrimitives.js +3 -3
  222. package/lib/cjs/render/primitives/mesh/MeshPrimitives.js.map +1 -1
  223. package/lib/cjs/render/primitives/mesh/RealityMeshPrimitive.d.ts +2 -0
  224. package/lib/cjs/render/primitives/mesh/RealityMeshPrimitive.d.ts.map +1 -1
  225. package/lib/cjs/render/primitives/mesh/RealityMeshPrimitive.js +39 -2
  226. package/lib/cjs/render/primitives/mesh/RealityMeshPrimitive.js.map +1 -1
  227. package/lib/cjs/render/primitives/mesh/TerrainMeshPrimitive.d.ts +1 -1
  228. package/lib/cjs/render/primitives/mesh/TerrainMeshPrimitive.js +1 -1
  229. package/lib/cjs/render/primitives/mesh/TerrainMeshPrimitive.js.map +1 -1
  230. package/lib/cjs/render/webgl/AttributeMap.js +5 -5
  231. package/lib/cjs/render/webgl/BackgroundMapDrape.js +1 -1
  232. package/lib/cjs/render/webgl/BackgroundMapDrape.js.map +1 -1
  233. package/lib/cjs/render/webgl/BranchUniforms.d.ts.map +1 -1
  234. package/lib/cjs/render/webgl/BranchUniforms.js +8 -5
  235. package/lib/cjs/render/webgl/BranchUniforms.js.map +1 -1
  236. package/lib/cjs/render/webgl/CachedGeometry.d.ts +16 -11
  237. package/lib/cjs/render/webgl/CachedGeometry.d.ts.map +1 -1
  238. package/lib/cjs/render/webgl/CachedGeometry.js +26 -23
  239. package/lib/cjs/render/webgl/CachedGeometry.js.map +1 -1
  240. package/lib/cjs/render/webgl/DrawCommand.d.ts +2 -3
  241. package/lib/cjs/render/webgl/DrawCommand.d.ts.map +1 -1
  242. package/lib/cjs/render/webgl/DrawCommand.js +6 -4
  243. package/lib/cjs/render/webgl/DrawCommand.js.map +1 -1
  244. package/lib/cjs/render/webgl/EdgeGeometry.d.ts +73 -0
  245. package/lib/cjs/render/webgl/EdgeGeometry.d.ts.map +1 -0
  246. package/lib/cjs/render/webgl/EdgeGeometry.js +141 -0
  247. package/lib/cjs/render/webgl/EdgeGeometry.js.map +1 -0
  248. package/lib/cjs/render/webgl/FeatureOverrides.d.ts +2 -0
  249. package/lib/cjs/render/webgl/FeatureOverrides.d.ts.map +1 -1
  250. package/lib/cjs/render/webgl/FeatureOverrides.js +11 -3
  251. package/lib/cjs/render/webgl/FeatureOverrides.js.map +1 -1
  252. package/lib/cjs/render/webgl/FloatRGBA.d.ts.map +1 -1
  253. package/lib/cjs/render/webgl/FloatRGBA.js +13 -11
  254. package/lib/cjs/render/webgl/FloatRGBA.js.map +1 -1
  255. package/lib/cjs/render/webgl/Graphic.d.ts +13 -0
  256. package/lib/cjs/render/webgl/Graphic.d.ts.map +1 -1
  257. package/lib/cjs/render/webgl/Graphic.js +41 -3
  258. package/lib/cjs/render/webgl/Graphic.js.map +1 -1
  259. package/lib/cjs/render/webgl/IndexedEdgeGeometry.d.ts +51 -0
  260. package/lib/cjs/render/webgl/IndexedEdgeGeometry.d.ts.map +1 -0
  261. package/lib/cjs/render/webgl/IndexedEdgeGeometry.js +90 -0
  262. package/lib/cjs/render/webgl/IndexedEdgeGeometry.js.map +1 -0
  263. package/lib/cjs/render/webgl/InstancedGeometry.d.ts +6 -5
  264. package/lib/cjs/render/webgl/InstancedGeometry.d.ts.map +1 -1
  265. package/lib/cjs/render/webgl/InstancedGeometry.js +2 -1
  266. package/lib/cjs/render/webgl/InstancedGeometry.js.map +1 -1
  267. package/lib/cjs/render/webgl/LightingUniforms.d.ts +1 -0
  268. package/lib/cjs/render/webgl/LightingUniforms.d.ts.map +1 -1
  269. package/lib/cjs/render/webgl/LightingUniforms.js +4 -1
  270. package/lib/cjs/render/webgl/LightingUniforms.js.map +1 -1
  271. package/lib/cjs/render/webgl/Material.d.ts +1 -1
  272. package/lib/cjs/render/webgl/Material.d.ts.map +1 -1
  273. package/lib/cjs/render/webgl/Material.js +2 -0
  274. package/lib/cjs/render/webgl/Material.js.map +1 -1
  275. package/lib/cjs/render/webgl/Mesh.d.ts +8 -162
  276. package/lib/cjs/render/webgl/Mesh.d.ts.map +1 -1
  277. package/lib/cjs/render/webgl/Mesh.js +18 -458
  278. package/lib/cjs/render/webgl/Mesh.js.map +1 -1
  279. package/lib/cjs/render/webgl/MeshData.d.ts +38 -0
  280. package/lib/cjs/render/webgl/MeshData.d.ts.map +1 -0
  281. package/lib/cjs/render/webgl/MeshData.js +66 -0
  282. package/lib/cjs/render/webgl/MeshData.js.map +1 -0
  283. package/lib/cjs/render/webgl/MeshGeometry.d.ts +38 -0
  284. package/lib/cjs/render/webgl/MeshGeometry.d.ts.map +1 -0
  285. package/lib/cjs/render/webgl/MeshGeometry.js +59 -0
  286. package/lib/cjs/render/webgl/MeshGeometry.js.map +1 -0
  287. package/lib/cjs/render/webgl/PlanarClassifier.d.ts.map +1 -1
  288. package/lib/cjs/render/webgl/PlanarClassifier.js +8 -4
  289. package/lib/cjs/render/webgl/PlanarClassifier.js.map +1 -1
  290. package/lib/cjs/render/webgl/PlanarGrid.d.ts +2 -3
  291. package/lib/cjs/render/webgl/PlanarGrid.d.ts.map +1 -1
  292. package/lib/cjs/render/webgl/PlanarGrid.js +3 -3
  293. package/lib/cjs/render/webgl/PlanarGrid.js.map +1 -1
  294. package/lib/cjs/render/webgl/PlanarTextureProjection.d.ts.map +1 -1
  295. package/lib/cjs/render/webgl/PlanarTextureProjection.js +1 -0
  296. package/lib/cjs/render/webgl/PlanarTextureProjection.js.map +1 -1
  297. package/lib/cjs/render/webgl/PointCloud.d.ts +2 -2
  298. package/lib/cjs/render/webgl/PointCloud.d.ts.map +1 -1
  299. package/lib/cjs/render/webgl/PointCloud.js +2 -2
  300. package/lib/cjs/render/webgl/PointCloud.js.map +1 -1
  301. package/lib/cjs/render/webgl/PointString.d.ts +3 -3
  302. package/lib/cjs/render/webgl/PointString.d.ts.map +1 -1
  303. package/lib/cjs/render/webgl/PointString.js +1 -1
  304. package/lib/cjs/render/webgl/PointString.js.map +1 -1
  305. package/lib/cjs/render/webgl/Polyline.d.ts +3 -3
  306. package/lib/cjs/render/webgl/Polyline.d.ts.map +1 -1
  307. package/lib/cjs/render/webgl/Polyline.js +6 -6
  308. package/lib/cjs/render/webgl/Polyline.js.map +1 -1
  309. package/lib/cjs/render/webgl/Primitive.d.ts +2 -2
  310. package/lib/cjs/render/webgl/Primitive.d.ts.map +1 -1
  311. package/lib/cjs/render/webgl/Primitive.js +5 -5
  312. package/lib/cjs/render/webgl/Primitive.js.map +1 -1
  313. package/lib/cjs/render/webgl/RealityMesh.d.ts +3 -2
  314. package/lib/cjs/render/webgl/RealityMesh.d.ts.map +1 -1
  315. package/lib/cjs/render/webgl/RealityMesh.js +10 -9
  316. package/lib/cjs/render/webgl/RealityMesh.js.map +1 -1
  317. package/lib/cjs/render/webgl/RenderCommands.d.ts +6 -2
  318. package/lib/cjs/render/webgl/RenderCommands.d.ts.map +1 -1
  319. package/lib/cjs/render/webgl/RenderCommands.js +81 -48
  320. package/lib/cjs/render/webgl/RenderCommands.js.map +1 -1
  321. package/lib/cjs/render/webgl/RenderFlags.d.ts +48 -1
  322. package/lib/cjs/render/webgl/RenderFlags.d.ts.map +1 -1
  323. package/lib/cjs/render/webgl/RenderFlags.js +64 -2
  324. package/lib/cjs/render/webgl/RenderFlags.js.map +1 -1
  325. package/lib/cjs/render/webgl/SceneCompositor.js +10 -9
  326. package/lib/cjs/render/webgl/SceneCompositor.js.map +1 -1
  327. package/lib/cjs/render/webgl/ScreenSpaceEffect.js +1 -1
  328. package/lib/cjs/render/webgl/ShaderBuilder.d.ts +23 -20
  329. package/lib/cjs/render/webgl/ShaderBuilder.d.ts.map +1 -1
  330. package/lib/cjs/render/webgl/ShaderBuilder.js +38 -32
  331. package/lib/cjs/render/webgl/ShaderBuilder.js.map +1 -1
  332. package/lib/cjs/render/webgl/ShaderProgram.d.ts +1 -1
  333. package/lib/cjs/render/webgl/ShaderProgram.d.ts.map +1 -1
  334. package/lib/cjs/render/webgl/ShaderProgram.js +4 -4
  335. package/lib/cjs/render/webgl/ShaderProgram.js.map +1 -1
  336. package/lib/cjs/render/webgl/SolarShadowMap.d.ts.map +1 -1
  337. package/lib/cjs/render/webgl/SolarShadowMap.js +4 -3
  338. package/lib/cjs/render/webgl/SolarShadowMap.js.map +1 -1
  339. package/lib/cjs/render/webgl/SurfaceGeometry.d.ts +54 -0
  340. package/lib/cjs/render/webgl/SurfaceGeometry.d.ts.map +1 -0
  341. package/lib/cjs/render/webgl/SurfaceGeometry.js +248 -0
  342. package/lib/cjs/render/webgl/SurfaceGeometry.js.map +1 -0
  343. package/lib/cjs/render/webgl/System.d.ts +13 -10
  344. package/lib/cjs/render/webgl/System.d.ts.map +1 -1
  345. package/lib/cjs/render/webgl/System.js +75 -21
  346. package/lib/cjs/render/webgl/System.js.map +1 -1
  347. package/lib/cjs/render/webgl/Target.d.ts +13 -1
  348. package/lib/cjs/render/webgl/Target.d.ts.map +1 -1
  349. package/lib/cjs/render/webgl/Target.js +88 -2
  350. package/lib/cjs/render/webgl/Target.js.map +1 -1
  351. package/lib/cjs/render/webgl/Technique.d.ts.map +1 -1
  352. package/lib/cjs/render/webgl/Technique.js +112 -119
  353. package/lib/cjs/render/webgl/Technique.js.map +1 -1
  354. package/lib/cjs/render/webgl/TechniqueFlags.d.ts +7 -1
  355. package/lib/cjs/render/webgl/TechniqueFlags.d.ts.map +1 -1
  356. package/lib/cjs/render/webgl/TechniqueFlags.js +10 -1
  357. package/lib/cjs/render/webgl/TechniqueFlags.js.map +1 -1
  358. package/lib/cjs/render/webgl/TechniqueId.d.ts +29 -28
  359. package/lib/cjs/render/webgl/TechniqueId.d.ts.map +1 -1
  360. package/lib/cjs/render/webgl/TechniqueId.js +7 -7
  361. package/lib/cjs/render/webgl/TechniqueId.js.map +1 -1
  362. package/lib/cjs/render/webgl/Texture.d.ts +15 -12
  363. package/lib/cjs/render/webgl/Texture.d.ts.map +1 -1
  364. package/lib/cjs/render/webgl/Texture.js +28 -25
  365. package/lib/cjs/render/webgl/Texture.js.map +1 -1
  366. package/lib/cjs/render/webgl/glsl/AmbientOcclusion.d.ts.map +1 -1
  367. package/lib/cjs/render/webgl/glsl/AmbientOcclusion.js +83 -18
  368. package/lib/cjs/render/webgl/glsl/AmbientOcclusion.js.map +1 -1
  369. package/lib/cjs/render/webgl/glsl/Animation.js +1 -1
  370. package/lib/cjs/render/webgl/glsl/Blur.js +1 -1
  371. package/lib/cjs/render/webgl/glsl/ClearPickAndColor.js +2 -2
  372. package/lib/cjs/render/webgl/glsl/ClearTranslucent.js +2 -2
  373. package/lib/cjs/render/webgl/glsl/Color.js +1 -1
  374. package/lib/cjs/render/webgl/glsl/Combine3Textures.js +1 -1
  375. package/lib/cjs/render/webgl/glsl/CombineTextures.js +1 -1
  376. package/lib/cjs/render/webgl/glsl/Composite.js +1 -1
  377. package/lib/cjs/render/webgl/glsl/CopyColor.d.ts.map +1 -1
  378. package/lib/cjs/render/webgl/glsl/CopyColor.js +17 -2
  379. package/lib/cjs/render/webgl/glsl/CopyColor.js.map +1 -1
  380. package/lib/cjs/render/webgl/glsl/CopyPickBuffers.js +2 -2
  381. package/lib/cjs/render/webgl/glsl/CopyStencil.d.ts.map +1 -1
  382. package/lib/cjs/render/webgl/glsl/CopyStencil.js +10 -13
  383. package/lib/cjs/render/webgl/glsl/CopyStencil.js.map +1 -1
  384. package/lib/cjs/render/webgl/glsl/EVSMFromDepth.js +2 -2
  385. package/lib/cjs/render/webgl/glsl/EVSMFromDepth.js.map +1 -1
  386. package/lib/cjs/render/webgl/glsl/Edge.d.ts +2 -1
  387. package/lib/cjs/render/webgl/glsl/Edge.d.ts.map +1 -1
  388. package/lib/cjs/render/webgl/glsl/Edge.js +132 -14
  389. package/lib/cjs/render/webgl/glsl/Edge.js.map +1 -1
  390. package/lib/cjs/render/webgl/glsl/FeatureSymbology.d.ts.map +1 -1
  391. package/lib/cjs/render/webgl/glsl/FeatureSymbology.js +43 -21
  392. package/lib/cjs/render/webgl/glsl/FeatureSymbology.js.map +1 -1
  393. package/lib/cjs/render/webgl/glsl/Fragment.d.ts.map +1 -1
  394. package/lib/cjs/render/webgl/glsl/Fragment.js +19 -11
  395. package/lib/cjs/render/webgl/glsl/Fragment.js.map +1 -1
  396. package/lib/cjs/render/webgl/glsl/Lighting.d.ts.map +1 -1
  397. package/lib/cjs/render/webgl/glsl/Lighting.js +16 -2
  398. package/lib/cjs/render/webgl/glsl/Lighting.js.map +1 -1
  399. package/lib/cjs/render/webgl/glsl/LogarithmicDepthBuffer.js +1 -1
  400. package/lib/cjs/render/webgl/glsl/LookupTable.d.ts +4 -2
  401. package/lib/cjs/render/webgl/glsl/LookupTable.d.ts.map +1 -1
  402. package/lib/cjs/render/webgl/glsl/LookupTable.js +7 -3
  403. package/lib/cjs/render/webgl/glsl/LookupTable.js.map +1 -1
  404. package/lib/cjs/render/webgl/glsl/PlanarClassification.d.ts.map +1 -1
  405. package/lib/cjs/render/webgl/glsl/PlanarClassification.js +13 -4
  406. package/lib/cjs/render/webgl/glsl/PlanarClassification.js.map +1 -1
  407. package/lib/cjs/render/webgl/glsl/PlanarGrid.js +2 -2
  408. package/lib/cjs/render/webgl/glsl/PlanarGrid.js.map +1 -1
  409. package/lib/cjs/render/webgl/glsl/PointCloud.js +2 -2
  410. package/lib/cjs/render/webgl/glsl/PointCloud.js.map +1 -1
  411. package/lib/cjs/render/webgl/glsl/PointString.js +1 -1
  412. package/lib/cjs/render/webgl/glsl/PointString.js.map +1 -1
  413. package/lib/cjs/render/webgl/glsl/Polyline.js +1 -1
  414. package/lib/cjs/render/webgl/glsl/Polyline.js.map +1 -1
  415. package/lib/cjs/render/webgl/glsl/RealityMesh.d.ts.map +1 -1
  416. package/lib/cjs/render/webgl/glsl/RealityMesh.js +9 -6
  417. package/lib/cjs/render/webgl/glsl/RealityMesh.js.map +1 -1
  418. package/lib/cjs/render/webgl/glsl/ScreenSpaceEffect.js +2 -2
  419. package/lib/cjs/render/webgl/glsl/ScreenSpaceEffect.js.map +1 -1
  420. package/lib/cjs/render/webgl/glsl/SkyBox.js +2 -2
  421. package/lib/cjs/render/webgl/glsl/SkyBox.js.map +1 -1
  422. package/lib/cjs/render/webgl/glsl/SkySphere.js +2 -2
  423. package/lib/cjs/render/webgl/glsl/Surface.d.ts.map +1 -1
  424. package/lib/cjs/render/webgl/glsl/Surface.js +41 -16
  425. package/lib/cjs/render/webgl/glsl/Surface.js.map +1 -1
  426. package/lib/cjs/render/webgl/glsl/Translucency.js +2 -2
  427. package/lib/cjs/render/webgl/glsl/Vertex.js +2 -2
  428. package/lib/cjs/render/webgl/glsl/Vertex.js.map +1 -1
  429. package/lib/cjs/render/webgl/glsl/ViewportQuad.js +1 -1
  430. package/lib/cjs/render/webgl/glsl/ViewportQuad.js.map +1 -1
  431. package/lib/cjs/render/webgl/glsl/Wiremesh.d.ts +9 -0
  432. package/lib/cjs/render/webgl/glsl/Wiremesh.d.ts.map +1 -0
  433. package/lib/cjs/render/webgl/glsl/Wiremesh.js +40 -0
  434. package/lib/cjs/render/webgl/glsl/Wiremesh.js.map +1 -0
  435. package/lib/cjs/render-primitives.d.ts +5 -1
  436. package/lib/cjs/render-primitives.d.ts.map +1 -1
  437. package/lib/cjs/render-primitives.js +5 -1
  438. package/lib/cjs/render-primitives.js.map +1 -1
  439. package/lib/cjs/request/Request.d.ts +167 -0
  440. package/lib/cjs/request/Request.d.ts.map +1 -0
  441. package/lib/cjs/request/Request.js +315 -0
  442. package/lib/cjs/request/Request.js.map +1 -0
  443. package/lib/cjs/tile/B3dmReader.d.ts +2 -1
  444. package/lib/cjs/tile/B3dmReader.d.ts.map +1 -1
  445. package/lib/cjs/tile/B3dmReader.js +11 -7
  446. package/lib/cjs/tile/B3dmReader.js.map +1 -1
  447. package/lib/cjs/tile/CesiumAssetProvider.d.ts +14 -0
  448. package/lib/cjs/tile/CesiumAssetProvider.d.ts.map +1 -0
  449. package/lib/cjs/tile/CesiumAssetProvider.js +35 -0
  450. package/lib/cjs/tile/CesiumAssetProvider.js.map +1 -0
  451. package/lib/cjs/tile/ContextShareProvider.d.ts +22 -0
  452. package/lib/cjs/tile/ContextShareProvider.d.ts.map +1 -0
  453. package/lib/cjs/tile/ContextShareProvider.js +129 -0
  454. package/lib/cjs/tile/ContextShareProvider.js.map +1 -0
  455. package/lib/cjs/tile/DynamicIModelTile.d.ts.map +1 -1
  456. package/lib/cjs/tile/DynamicIModelTile.js +10 -4
  457. package/lib/cjs/tile/DynamicIModelTile.js.map +1 -1
  458. package/lib/cjs/tile/GltfReader.d.ts +600 -56
  459. package/lib/cjs/tile/GltfReader.d.ts.map +1 -1
  460. package/lib/cjs/tile/GltfReader.js +790 -276
  461. package/lib/cjs/tile/GltfReader.js.map +1 -1
  462. package/lib/cjs/tile/I3dmReader.d.ts +2 -1
  463. package/lib/cjs/tile/I3dmReader.d.ts.map +1 -1
  464. package/lib/cjs/tile/I3dmReader.js +10 -6
  465. package/lib/cjs/tile/I3dmReader.js.map +1 -1
  466. package/lib/cjs/tile/IModelTile.d.ts.map +1 -1
  467. package/lib/cjs/tile/IModelTile.js +14 -7
  468. package/lib/cjs/tile/IModelTile.js.map +1 -1
  469. package/lib/cjs/tile/IModelTileTree.d.ts +8 -0
  470. package/lib/cjs/tile/IModelTileTree.d.ts.map +1 -1
  471. package/lib/cjs/tile/IModelTileTree.js +36 -1
  472. package/lib/cjs/tile/IModelTileTree.js.map +1 -1
  473. package/lib/cjs/tile/ImdlReader.d.ts +365 -10
  474. package/lib/cjs/tile/ImdlReader.d.ts.map +1 -1
  475. package/lib/cjs/tile/ImdlReader.js +202 -68
  476. package/lib/cjs/tile/ImdlReader.js.map +1 -1
  477. package/lib/cjs/tile/LRUTileList.d.ts +29 -29
  478. package/lib/cjs/tile/LRUTileList.d.ts.map +1 -1
  479. package/lib/cjs/tile/LRUTileList.js +50 -50
  480. package/lib/cjs/tile/LRUTileList.js.map +1 -1
  481. package/lib/cjs/tile/OrbitGtTileTree.d.ts +0 -9
  482. package/lib/cjs/tile/OrbitGtTileTree.d.ts.map +1 -1
  483. package/lib/cjs/tile/OrbitGtTileTree.js +11 -21
  484. package/lib/cjs/tile/OrbitGtTileTree.js.map +1 -1
  485. package/lib/cjs/tile/PrimaryTileTree.d.ts +14 -5
  486. package/lib/cjs/tile/PrimaryTileTree.d.ts.map +1 -1
  487. package/lib/cjs/tile/PrimaryTileTree.js +69 -14
  488. package/lib/cjs/tile/PrimaryTileTree.js.map +1 -1
  489. package/lib/cjs/tile/RealityModelTileTree.d.ts +22 -39
  490. package/lib/cjs/tile/RealityModelTileTree.d.ts.map +1 -1
  491. package/lib/cjs/tile/RealityModelTileTree.js +84 -219
  492. package/lib/cjs/tile/RealityModelTileTree.js.map +1 -1
  493. package/lib/cjs/tile/RealityTile.d.ts +17 -3
  494. package/lib/cjs/tile/RealityTile.d.ts.map +1 -1
  495. package/lib/cjs/tile/RealityTile.js +34 -2
  496. package/lib/cjs/tile/RealityTile.js.map +1 -1
  497. package/lib/cjs/tile/RealityTileLoader.d.ts +9 -5
  498. package/lib/cjs/tile/RealityTileLoader.d.ts.map +1 -1
  499. package/lib/cjs/tile/RealityTileLoader.js +23 -8
  500. package/lib/cjs/tile/RealityTileLoader.js.map +1 -1
  501. package/lib/cjs/tile/RealityTileTree.d.ts +3 -1
  502. package/lib/cjs/tile/RealityTileTree.d.ts.map +1 -1
  503. package/lib/cjs/tile/RealityTileTree.js +5 -1
  504. package/lib/cjs/tile/RealityTileTree.js.map +1 -1
  505. package/lib/cjs/tile/Tile.d.ts +5 -4
  506. package/lib/cjs/tile/Tile.d.ts.map +1 -1
  507. package/lib/cjs/tile/Tile.js +8 -3
  508. package/lib/cjs/tile/Tile.js.map +1 -1
  509. package/lib/cjs/tile/TileAdmin.d.ts +79 -48
  510. package/lib/cjs/tile/TileAdmin.d.ts.map +1 -1
  511. package/lib/cjs/tile/TileAdmin.js +122 -111
  512. package/lib/cjs/tile/TileAdmin.js.map +1 -1
  513. package/lib/cjs/tile/TileDrawArgs.d.ts +11 -0
  514. package/lib/cjs/tile/TileDrawArgs.d.ts.map +1 -1
  515. package/lib/cjs/tile/TileDrawArgs.js +6 -1
  516. package/lib/cjs/tile/TileDrawArgs.js.map +1 -1
  517. package/lib/cjs/tile/TileGeometryCollector.d.ts +80 -0
  518. package/lib/cjs/tile/TileGeometryCollector.d.ts.map +1 -0
  519. package/lib/cjs/tile/TileGeometryCollector.js +71 -0
  520. package/lib/cjs/tile/TileGeometryCollector.js.map +1 -0
  521. package/lib/cjs/tile/TileRequest.d.ts +12 -9
  522. package/lib/cjs/tile/TileRequest.d.ts.map +1 -1
  523. package/lib/cjs/tile/TileRequest.js +19 -11
  524. package/lib/cjs/tile/TileRequest.js.map +1 -1
  525. package/lib/cjs/tile/TileRequestChannel.js +3 -3
  526. package/lib/cjs/tile/TileRequestChannel.js.map +1 -1
  527. package/lib/cjs/tile/TileTree.d.ts +7 -1
  528. package/lib/cjs/tile/TileTree.d.ts.map +1 -1
  529. package/lib/cjs/tile/TileTree.js +8 -1
  530. package/lib/cjs/tile/TileTree.js.map +1 -1
  531. package/lib/cjs/tile/TileTreeReference.d.ts +25 -2
  532. package/lib/cjs/tile/TileTreeReference.d.ts.map +1 -1
  533. package/lib/cjs/tile/TileTreeReference.js +42 -1
  534. package/lib/cjs/tile/TileTreeReference.js.map +1 -1
  535. package/lib/cjs/tile/TileUsageMarker.d.ts +9 -9
  536. package/lib/cjs/tile/TileUsageMarker.d.ts.map +1 -1
  537. package/lib/cjs/tile/TileUsageMarker.js +9 -9
  538. package/lib/cjs/tile/TileUsageMarker.js.map +1 -1
  539. package/lib/cjs/tile/TileUser.d.ts +33 -0
  540. package/lib/cjs/tile/TileUser.d.ts.map +1 -0
  541. package/lib/cjs/tile/TileUser.js +28 -0
  542. package/lib/cjs/tile/TileUser.js.map +1 -0
  543. package/lib/cjs/tile/TileUserSet.d.ts +28 -0
  544. package/lib/cjs/tile/TileUserSet.d.ts.map +1 -0
  545. package/lib/cjs/tile/TileUserSet.js +123 -0
  546. package/lib/cjs/tile/TileUserSet.js.map +1 -0
  547. package/lib/cjs/tile/internal.d.ts +7 -1
  548. package/lib/cjs/tile/internal.d.ts.map +1 -1
  549. package/lib/cjs/tile/internal.js +7 -1
  550. package/lib/cjs/tile/internal.js.map +1 -1
  551. package/lib/cjs/tile/map/ArcGISTileMap.d.ts +22 -0
  552. package/lib/cjs/tile/map/ArcGISTileMap.d.ts.map +1 -0
  553. package/lib/cjs/tile/map/ArcGISTileMap.js +177 -0
  554. package/lib/cjs/tile/map/ArcGISTileMap.js.map +1 -0
  555. package/lib/cjs/tile/map/ArcGisTokenGenerator.js +3 -3
  556. package/lib/cjs/tile/map/ArcGisTokenGenerator.js.map +1 -1
  557. package/lib/cjs/tile/map/ArcGisUtilities.d.ts +1 -1
  558. package/lib/cjs/tile/map/ArcGisUtilities.d.ts.map +1 -1
  559. package/lib/cjs/tile/map/ArcGisUtilities.js +18 -10
  560. package/lib/cjs/tile/map/ArcGisUtilities.js.map +1 -1
  561. package/lib/cjs/tile/map/BingElevation.js +4 -4
  562. package/lib/cjs/tile/map/BingElevation.js.map +1 -1
  563. package/lib/cjs/tile/map/CesiumTerrainProvider.d.ts.map +1 -1
  564. package/lib/cjs/tile/map/CesiumTerrainProvider.js +27 -15
  565. package/lib/cjs/tile/map/CesiumTerrainProvider.js.map +1 -1
  566. package/lib/cjs/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.d.ts +3 -4
  567. package/lib/cjs/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.d.ts.map +1 -1
  568. package/lib/cjs/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js +24 -45
  569. package/lib/cjs/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js.map +1 -1
  570. package/lib/cjs/tile/map/ImageryProviders/AzureMapsLayerImageryProvider.d.ts +1 -2
  571. package/lib/cjs/tile/map/ImageryProviders/AzureMapsLayerImageryProvider.d.ts.map +1 -1
  572. package/lib/cjs/tile/map/ImageryProviders/AzureMapsLayerImageryProvider.js +1 -1
  573. package/lib/cjs/tile/map/ImageryProviders/AzureMapsLayerImageryProvider.js.map +1 -1
  574. package/lib/cjs/tile/map/ImageryProviders/BingImageryProvider.js +4 -4
  575. package/lib/cjs/tile/map/ImageryProviders/BingImageryProvider.js.map +1 -1
  576. package/lib/cjs/tile/map/ImageryProviders/MapBoxLayerImageryProvider.d.ts +1 -2
  577. package/lib/cjs/tile/map/ImageryProviders/MapBoxLayerImageryProvider.d.ts.map +1 -1
  578. package/lib/cjs/tile/map/ImageryProviders/MapBoxLayerImageryProvider.js +1 -1
  579. package/lib/cjs/tile/map/ImageryProviders/MapBoxLayerImageryProvider.js.map +1 -1
  580. package/lib/cjs/tile/map/ImageryProviders/WmsMapLayerImageryProvider.d.ts +8 -0
  581. package/lib/cjs/tile/map/ImageryProviders/WmsMapLayerImageryProvider.d.ts.map +1 -1
  582. package/lib/cjs/tile/map/ImageryProviders/WmsMapLayerImageryProvider.js +51 -10
  583. package/lib/cjs/tile/map/ImageryProviders/WmsMapLayerImageryProvider.js.map +1 -1
  584. package/lib/cjs/tile/map/ImageryProviders/WmtsMapLayerImageryProvider.d.ts +6 -1
  585. package/lib/cjs/tile/map/ImageryProviders/WmtsMapLayerImageryProvider.d.ts.map +1 -1
  586. package/lib/cjs/tile/map/ImageryProviders/WmtsMapLayerImageryProvider.js +63 -21
  587. package/lib/cjs/tile/map/ImageryProviders/WmtsMapLayerImageryProvider.js.map +1 -1
  588. package/lib/cjs/tile/map/ImageryTileTree.d.ts +6 -6
  589. package/lib/cjs/tile/map/ImageryTileTree.d.ts.map +1 -1
  590. package/lib/cjs/tile/map/ImageryTileTree.js +21 -25
  591. package/lib/cjs/tile/map/ImageryTileTree.js.map +1 -1
  592. package/lib/cjs/tile/map/MapCartoRectangle.js +1 -1
  593. package/lib/cjs/tile/map/MapCartoRectangle.js.map +1 -1
  594. package/lib/cjs/tile/map/MapLayerAuthentication.d.ts +20 -0
  595. package/lib/cjs/tile/map/MapLayerAuthentication.d.ts.map +1 -0
  596. package/lib/cjs/tile/map/MapLayerAuthentication.js +18 -0
  597. package/lib/cjs/tile/map/MapLayerAuthentication.js.map +1 -0
  598. package/lib/cjs/tile/map/MapLayerFormatRegistry.d.ts +6 -3
  599. package/lib/cjs/tile/map/MapLayerFormatRegistry.d.ts.map +1 -1
  600. package/lib/cjs/tile/map/MapLayerFormatRegistry.js +3 -1
  601. package/lib/cjs/tile/map/MapLayerFormatRegistry.js.map +1 -1
  602. package/lib/cjs/tile/map/MapLayerImageryFormats.d.ts +2 -2
  603. package/lib/cjs/tile/map/MapLayerImageryFormats.d.ts.map +1 -1
  604. package/lib/cjs/tile/map/MapLayerImageryFormats.js +21 -8
  605. package/lib/cjs/tile/map/MapLayerImageryFormats.js.map +1 -1
  606. package/lib/cjs/tile/map/MapLayerImageryProvider.d.ts +18 -6
  607. package/lib/cjs/tile/map/MapLayerImageryProvider.d.ts.map +1 -1
  608. package/lib/cjs/tile/map/MapLayerImageryProvider.js +47 -14
  609. package/lib/cjs/tile/map/MapLayerImageryProvider.js.map +1 -1
  610. package/lib/cjs/tile/map/MapLayerSources.d.ts +3 -11
  611. package/lib/cjs/tile/map/MapLayerSources.d.ts.map +1 -1
  612. package/lib/cjs/tile/map/MapLayerSources.js +5 -34
  613. package/lib/cjs/tile/map/MapLayerSources.js.map +1 -1
  614. package/lib/cjs/tile/map/MapTile.d.ts +7 -6
  615. package/lib/cjs/tile/map/MapTile.d.ts.map +1 -1
  616. package/lib/cjs/tile/map/MapTile.js +51 -37
  617. package/lib/cjs/tile/map/MapTile.js.map +1 -1
  618. package/lib/cjs/tile/map/MapTileLoader.d.ts +2 -1
  619. package/lib/cjs/tile/map/MapTileLoader.d.ts.map +1 -1
  620. package/lib/cjs/tile/map/MapTileLoader.js +6 -3
  621. package/lib/cjs/tile/map/MapTileLoader.js.map +1 -1
  622. package/lib/cjs/tile/map/MapTileTree.d.ts +9 -6
  623. package/lib/cjs/tile/map/MapTileTree.d.ts.map +1 -1
  624. package/lib/cjs/tile/map/MapTileTree.js +55 -28
  625. package/lib/cjs/tile/map/MapTileTree.js.map +1 -1
  626. package/lib/cjs/tile/map/MapTiledGraphicsProvider.d.ts +3 -3
  627. package/lib/cjs/tile/map/MapTiledGraphicsProvider.d.ts.map +1 -1
  628. package/lib/cjs/tile/map/MapTiledGraphicsProvider.js +4 -6
  629. package/lib/cjs/tile/map/MapTiledGraphicsProvider.js.map +1 -1
  630. package/lib/cjs/tile/map/MapTilingScheme.d.ts +7 -2
  631. package/lib/cjs/tile/map/MapTilingScheme.d.ts.map +1 -1
  632. package/lib/cjs/tile/map/MapTilingScheme.js +21 -8
  633. package/lib/cjs/tile/map/MapTilingScheme.js.map +1 -1
  634. package/lib/cjs/tile/map/QuadId.d.ts +1 -0
  635. package/lib/cjs/tile/map/QuadId.d.ts.map +1 -1
  636. package/lib/cjs/tile/map/QuadId.js +2 -1
  637. package/lib/cjs/tile/map/QuadId.js.map +1 -1
  638. package/lib/cjs/tile/map/TerrainMeshProvider.d.ts +1 -1
  639. package/lib/cjs/tile/map/TerrainMeshProvider.js.map +1 -1
  640. package/lib/cjs/tile/map/WmsCapabilities.d.ts +8 -1
  641. package/lib/cjs/tile/map/WmsCapabilities.d.ts.map +1 -1
  642. package/lib/cjs/tile/map/WmsCapabilities.js +39 -5
  643. package/lib/cjs/tile/map/WmsCapabilities.js.map +1 -1
  644. package/lib/cjs/tile/map/WmtsCapabilities.d.ts +11 -1
  645. package/lib/cjs/tile/map/WmtsCapabilities.d.ts.map +1 -1
  646. package/lib/cjs/tile/map/WmtsCapabilities.js +23 -9
  647. package/lib/cjs/tile/map/WmtsCapabilities.js.map +1 -1
  648. package/lib/cjs/tools/EditManipulator.d.ts.map +1 -1
  649. package/lib/cjs/tools/EditManipulator.js +1 -1
  650. package/lib/cjs/tools/EditManipulator.js.map +1 -1
  651. package/lib/cjs/tools/ElementSetTool.js +2 -2
  652. package/lib/cjs/tools/ElementSetTool.js.map +1 -1
  653. package/lib/cjs/tools/PrimitiveTool.d.ts +4 -4
  654. package/lib/cjs/tools/PrimitiveTool.d.ts.map +1 -1
  655. package/lib/cjs/tools/PrimitiveTool.js +2 -2
  656. package/lib/cjs/tools/PrimitiveTool.js.map +1 -1
  657. package/lib/cjs/tools/Tool.d.ts +29 -1
  658. package/lib/cjs/tools/Tool.d.ts.map +1 -1
  659. package/lib/cjs/tools/Tool.js +66 -0
  660. package/lib/cjs/tools/Tool.js.map +1 -1
  661. package/lib/cjs/tools/ToolAdmin.d.ts.map +1 -1
  662. package/lib/cjs/tools/ToolAdmin.js +20 -10
  663. package/lib/cjs/tools/ToolAdmin.js.map +1 -1
  664. package/lib/cjs/tools/ViewTool.d.ts.map +1 -1
  665. package/lib/cjs/tools/ViewTool.js +3 -11
  666. package/lib/cjs/tools/ViewTool.js.map +1 -1
  667. package/lib/cjs/webgl.d.ts +5 -0
  668. package/lib/cjs/webgl.d.ts.map +1 -1
  669. package/lib/cjs/webgl.js +5 -0
  670. package/lib/cjs/webgl.js.map +1 -1
  671. package/lib/esm/AccuSnap.js +3 -3
  672. package/lib/esm/AccuSnap.js.map +1 -1
  673. package/lib/esm/ApproximateTerrainHeights.d.ts.map +1 -1
  674. package/lib/esm/ApproximateTerrainHeights.js +10 -5
  675. package/lib/esm/ApproximateTerrainHeights.js.map +1 -1
  676. package/lib/esm/BackgroundMapGeometry.d.ts +1 -1
  677. package/lib/esm/BackgroundMapGeometry.d.ts.map +1 -1
  678. package/lib/esm/BackgroundMapGeometry.js +2 -2
  679. package/lib/esm/BackgroundMapGeometry.js.map +1 -1
  680. package/lib/esm/BingLocation.js +1 -1
  681. package/lib/esm/BingLocation.js.map +1 -1
  682. package/lib/esm/BriefcaseConnection.d.ts.map +1 -1
  683. package/lib/esm/BriefcaseConnection.js +6 -5
  684. package/lib/esm/BriefcaseConnection.js.map +1 -1
  685. package/lib/esm/CheckpointConnection.js +1 -1
  686. package/lib/esm/CheckpointConnection.js.map +1 -1
  687. package/lib/esm/ContextRealityModelState.js +1 -1
  688. package/lib/esm/ContextRealityModelState.js.map +1 -1
  689. package/lib/esm/DisplayStyleState.d.ts +11 -163
  690. package/lib/esm/DisplayStyleState.d.ts.map +1 -1
  691. package/lib/esm/DisplayStyleState.js +70 -346
  692. package/lib/esm/DisplayStyleState.js.map +1 -1
  693. package/lib/esm/DrawingViewState.d.ts +2 -2
  694. package/lib/esm/DrawingViewState.d.ts.map +1 -1
  695. package/lib/esm/DrawingViewState.js +6 -6
  696. package/lib/esm/DrawingViewState.js.map +1 -1
  697. package/lib/esm/ElementLocateManager.d.ts +5 -0
  698. package/lib/esm/ElementLocateManager.d.ts.map +1 -1
  699. package/lib/esm/ElementLocateManager.js +12 -2
  700. package/lib/esm/ElementLocateManager.js.map +1 -1
  701. package/lib/esm/EmphasizeElements.d.ts.map +1 -1
  702. package/lib/esm/EmphasizeElements.js +14 -4
  703. package/lib/esm/EmphasizeElements.js.map +1 -1
  704. package/lib/esm/EnvironmentDecorations.d.ts +39 -0
  705. package/lib/esm/EnvironmentDecorations.d.ts.map +1 -0
  706. package/lib/esm/EnvironmentDecorations.js +196 -0
  707. package/lib/esm/EnvironmentDecorations.js.map +1 -0
  708. package/lib/esm/FrontendHubAccess.d.ts +11 -7
  709. package/lib/esm/FrontendHubAccess.d.ts.map +1 -1
  710. package/lib/esm/FrontendHubAccess.js.map +1 -1
  711. package/lib/esm/FrontendLoggerCategory.d.ts +2 -8
  712. package/lib/esm/FrontendLoggerCategory.d.ts.map +1 -1
  713. package/lib/esm/FrontendLoggerCategory.js +2 -8
  714. package/lib/esm/FrontendLoggerCategory.js.map +1 -1
  715. package/lib/esm/HitDetail.js +7 -7
  716. package/lib/esm/HitDetail.js.map +1 -1
  717. package/lib/esm/IModelApp.d.ts +31 -24
  718. package/lib/esm/IModelApp.d.ts.map +1 -1
  719. package/lib/esm/IModelApp.js +34 -35
  720. package/lib/esm/IModelApp.js.map +1 -1
  721. package/lib/esm/IModelConnection.d.ts +4 -6
  722. package/lib/esm/IModelConnection.d.ts.map +1 -1
  723. package/lib/esm/IModelConnection.js +6 -11
  724. package/lib/esm/IModelConnection.js.map +1 -1
  725. package/lib/esm/IModeljs-css.d.ts.map +1 -1
  726. package/lib/esm/IModeljs-css.js +8 -6
  727. package/lib/esm/IModeljs-css.js.map +1 -1
  728. package/lib/esm/ImageUtil.d.ts +3 -3
  729. package/lib/esm/ImageUtil.d.ts.map +1 -1
  730. package/lib/esm/ImageUtil.js +7 -4
  731. package/lib/esm/ImageUtil.js.map +1 -1
  732. package/lib/esm/LocalhostIpcApp.d.ts +2 -1
  733. package/lib/esm/LocalhostIpcApp.d.ts.map +1 -1
  734. package/lib/esm/LocalhostIpcApp.js +22 -8
  735. package/lib/esm/LocalhostIpcApp.js.map +1 -1
  736. package/lib/esm/Marker.d.ts +9 -2
  737. package/lib/esm/Marker.d.ts.map +1 -1
  738. package/lib/esm/Marker.js +34 -6
  739. package/lib/esm/Marker.js.map +1 -1
  740. package/lib/esm/ModelState.js +1 -1
  741. package/lib/esm/ModelState.js.map +1 -1
  742. package/lib/esm/NativeApp.d.ts +3 -38
  743. package/lib/esm/NativeApp.d.ts.map +1 -1
  744. package/lib/esm/NativeApp.js +1 -69
  745. package/lib/esm/NativeApp.js.map +1 -1
  746. package/lib/esm/NoRenderApp.d.ts +0 -1
  747. package/lib/esm/NoRenderApp.d.ts.map +1 -1
  748. package/lib/esm/NoRenderApp.js +0 -1
  749. package/lib/esm/NoRenderApp.js.map +1 -1
  750. package/lib/esm/NotificationManager.d.ts +3 -1
  751. package/lib/esm/NotificationManager.d.ts.map +1 -1
  752. package/lib/esm/NotificationManager.js +2 -0
  753. package/lib/esm/NotificationManager.js.map +1 -1
  754. package/lib/esm/RealityDataSource.d.ts +59 -29
  755. package/lib/esm/RealityDataSource.d.ts.map +1 -1
  756. package/lib/esm/RealityDataSource.js +247 -92
  757. package/lib/esm/RealityDataSource.js.map +1 -1
  758. package/lib/esm/RenderScheduleState.d.ts +2 -0
  759. package/lib/esm/RenderScheduleState.d.ts.map +1 -1
  760. package/lib/esm/RenderScheduleState.js +8 -4
  761. package/lib/esm/RenderScheduleState.js.map +1 -1
  762. package/lib/esm/SheetViewState.d.ts +2 -2
  763. package/lib/esm/SheetViewState.d.ts.map +1 -1
  764. package/lib/esm/SheetViewState.js +11 -12
  765. package/lib/esm/SheetViewState.js.map +1 -1
  766. package/lib/esm/SpatialViewState.d.ts +10 -2
  767. package/lib/esm/SpatialViewState.d.ts.map +1 -1
  768. package/lib/esm/SpatialViewState.js +12 -2
  769. package/lib/esm/SpatialViewState.js.map +1 -1
  770. package/lib/esm/SubCategoriesCache.js +1 -1
  771. package/lib/esm/SubCategoriesCache.js.map +1 -1
  772. package/lib/esm/Tiles.d.ts +11 -1
  773. package/lib/esm/Tiles.d.ts.map +1 -1
  774. package/lib/esm/Tiles.js +7 -0
  775. package/lib/esm/Tiles.js.map +1 -1
  776. package/lib/esm/TwoWayViewportSync.d.ts +35 -6
  777. package/lib/esm/TwoWayViewportSync.d.ts.map +1 -1
  778. package/lib/esm/TwoWayViewportSync.js +49 -10
  779. package/lib/esm/TwoWayViewportSync.js.map +1 -1
  780. package/lib/esm/UserPreferences.d.ts +72 -0
  781. package/lib/esm/UserPreferences.d.ts.map +1 -0
  782. package/lib/esm/{extension/ExtensionLoader.js → UserPreferences.js} +1 -5
  783. package/lib/esm/UserPreferences.js.map +1 -0
  784. package/lib/esm/ViewContext.d.ts +3 -1
  785. package/lib/esm/ViewContext.d.ts.map +1 -1
  786. package/lib/esm/ViewContext.js +4 -0
  787. package/lib/esm/ViewContext.js.map +1 -1
  788. package/lib/esm/ViewCreator2d.js +3 -3
  789. package/lib/esm/ViewCreator2d.js.map +1 -1
  790. package/lib/esm/ViewCreator3d.d.ts +1 -1
  791. package/lib/esm/ViewCreator3d.d.ts.map +1 -1
  792. package/lib/esm/ViewCreator3d.js +5 -6
  793. package/lib/esm/ViewCreator3d.js.map +1 -1
  794. package/lib/esm/ViewManager.d.ts +6 -6
  795. package/lib/esm/ViewManager.d.ts.map +1 -1
  796. package/lib/esm/ViewManager.js +13 -13
  797. package/lib/esm/ViewManager.js.map +1 -1
  798. package/lib/esm/ViewState.d.ts +11 -5
  799. package/lib/esm/ViewState.d.ts.map +1 -1
  800. package/lib/esm/ViewState.js +21 -66
  801. package/lib/esm/ViewState.js.map +1 -1
  802. package/lib/esm/ViewingSpace.js +1 -1
  803. package/lib/esm/ViewingSpace.js.map +1 -1
  804. package/lib/esm/Viewport.d.ts +63 -14
  805. package/lib/esm/Viewport.d.ts.map +1 -1
  806. package/lib/esm/Viewport.js +73 -42
  807. package/lib/esm/Viewport.js.map +1 -1
  808. package/lib/esm/core-frontend.d.ts +17 -31
  809. package/lib/esm/core-frontend.d.ts.map +1 -1
  810. package/lib/esm/core-frontend.js +17 -31
  811. package/lib/esm/core-frontend.js.map +1 -1
  812. package/lib/esm/quantity-formatting/BaseUnitFormattingSettingsProvider.d.ts +3 -2
  813. package/lib/esm/quantity-formatting/BaseUnitFormattingSettingsProvider.d.ts.map +1 -1
  814. package/lib/esm/quantity-formatting/BaseUnitFormattingSettingsProvider.js +3 -2
  815. package/lib/esm/quantity-formatting/BaseUnitFormattingSettingsProvider.js.map +1 -1
  816. package/lib/esm/quantity-formatting/BasicUnitsProvider.d.ts +5 -1
  817. package/lib/esm/quantity-formatting/BasicUnitsProvider.d.ts.map +1 -1
  818. package/lib/esm/quantity-formatting/BasicUnitsProvider.js +18 -4
  819. package/lib/esm/quantity-formatting/BasicUnitsProvider.js.map +1 -1
  820. package/lib/esm/quantity-formatting/QuantityFormatter.d.ts +26 -3
  821. package/lib/esm/quantity-formatting/QuantityFormatter.d.ts.map +1 -1
  822. package/lib/esm/quantity-formatting/QuantityFormatter.js +45 -7
  823. package/lib/esm/quantity-formatting/QuantityFormatter.js.map +1 -1
  824. package/lib/esm/render/FeatureSymbology.d.ts.map +1 -1
  825. package/lib/esm/render/FeatureSymbology.js +3 -3
  826. package/lib/esm/render/FeatureSymbology.js.map +1 -1
  827. package/lib/esm/render/GraphicBranch.d.ts +18 -2
  828. package/lib/esm/render/GraphicBranch.d.ts.map +1 -1
  829. package/lib/esm/render/GraphicBranch.js +8 -0
  830. package/lib/esm/render/GraphicBranch.js.map +1 -1
  831. package/lib/esm/render/GraphicBuilder.d.ts +7 -1
  832. package/lib/esm/render/GraphicBuilder.d.ts.map +1 -1
  833. package/lib/esm/render/GraphicBuilder.js.map +1 -1
  834. package/lib/esm/render/MockRender.d.ts +3 -1
  835. package/lib/esm/render/MockRender.d.ts.map +1 -1
  836. package/lib/esm/render/MockRender.js.map +1 -1
  837. package/lib/esm/render/RenderMaterial.d.ts +61 -0
  838. package/lib/esm/render/RenderMaterial.d.ts.map +1 -0
  839. package/lib/esm/render/RenderMaterial.js +9 -0
  840. package/lib/esm/render/RenderMaterial.js.map +1 -0
  841. package/lib/esm/render/RenderMemory.d.ts +21 -15
  842. package/lib/esm/render/RenderMemory.d.ts.map +1 -1
  843. package/lib/esm/render/RenderMemory.js +21 -15
  844. package/lib/esm/render/RenderMemory.js.map +1 -1
  845. package/lib/esm/render/RenderSystem.d.ts +48 -10
  846. package/lib/esm/render/RenderSystem.d.ts.map +1 -1
  847. package/lib/esm/render/RenderSystem.js +33 -10
  848. package/lib/esm/render/RenderSystem.js.map +1 -1
  849. package/lib/esm/render/RenderTarget.d.ts +10 -2
  850. package/lib/esm/render/RenderTarget.d.ts.map +1 -1
  851. package/lib/esm/render/RenderTarget.js +2 -1
  852. package/lib/esm/render/RenderTarget.js.map +1 -1
  853. package/lib/esm/render/RenderTexture.d.ts +2 -17
  854. package/lib/esm/render/RenderTexture.d.ts.map +1 -1
  855. package/lib/esm/render/RenderTexture.js +1 -16
  856. package/lib/esm/render/RenderTexture.js.map +1 -1
  857. package/lib/esm/render/primitives/EdgeParams.d.ts +84 -0
  858. package/lib/esm/render/primitives/EdgeParams.d.ts.map +1 -0
  859. package/lib/esm/render/primitives/EdgeParams.js +217 -0
  860. package/lib/esm/render/primitives/EdgeParams.js.map +1 -0
  861. package/lib/esm/render/primitives/PointStringParams.d.ts +16 -0
  862. package/lib/esm/render/primitives/PointStringParams.d.ts.map +1 -0
  863. package/lib/esm/render/primitives/PointStringParams.js +39 -0
  864. package/lib/esm/render/primitives/PointStringParams.js.map +1 -0
  865. package/lib/esm/render/primitives/PolylineParams.d.ts +44 -0
  866. package/lib/esm/render/primitives/PolylineParams.d.ts.map +1 -0
  867. package/lib/esm/render/primitives/PolylineParams.js +199 -0
  868. package/lib/esm/render/primitives/PolylineParams.js.map +1 -0
  869. package/lib/esm/render/primitives/Primitives.d.ts +1 -1
  870. package/lib/esm/render/primitives/Primitives.d.ts.map +1 -1
  871. package/lib/esm/render/primitives/Primitives.js.map +1 -1
  872. package/lib/esm/render/primitives/SurfaceParams.d.ts +46 -0
  873. package/lib/esm/render/primitives/SurfaceParams.d.ts.map +1 -0
  874. package/lib/esm/render/primitives/SurfaceParams.js +37 -0
  875. package/lib/esm/render/primitives/SurfaceParams.js.map +1 -0
  876. package/lib/esm/render/primitives/VertexTable.d.ts +4 -123
  877. package/lib/esm/render/primitives/VertexTable.d.ts.map +1 -1
  878. package/lib/esm/render/primitives/VertexTable.js +11 -342
  879. package/lib/esm/render/primitives/VertexTable.js.map +1 -1
  880. package/lib/esm/render/primitives/geometry/GeometryAccumulator.d.ts +2 -0
  881. package/lib/esm/render/primitives/geometry/GeometryAccumulator.d.ts.map +1 -1
  882. package/lib/esm/render/primitives/geometry/GeometryAccumulator.js +2 -1
  883. package/lib/esm/render/primitives/geometry/GeometryAccumulator.js.map +1 -1
  884. package/lib/esm/render/primitives/geometry/GeometryListBuilder.d.ts.map +1 -1
  885. package/lib/esm/render/primitives/geometry/GeometryListBuilder.js +1 -0
  886. package/lib/esm/render/primitives/geometry/GeometryListBuilder.js.map +1 -1
  887. package/lib/esm/render/primitives/mesh/MeshPrimitives.d.ts +2 -2
  888. package/lib/esm/render/primitives/mesh/MeshPrimitives.d.ts.map +1 -1
  889. package/lib/esm/render/primitives/mesh/MeshPrimitives.js +3 -3
  890. package/lib/esm/render/primitives/mesh/MeshPrimitives.js.map +1 -1
  891. package/lib/esm/render/primitives/mesh/RealityMeshPrimitive.d.ts +2 -0
  892. package/lib/esm/render/primitives/mesh/RealityMeshPrimitive.d.ts.map +1 -1
  893. package/lib/esm/render/primitives/mesh/RealityMeshPrimitive.js +39 -2
  894. package/lib/esm/render/primitives/mesh/RealityMeshPrimitive.js.map +1 -1
  895. package/lib/esm/render/primitives/mesh/TerrainMeshPrimitive.d.ts +1 -1
  896. package/lib/esm/render/primitives/mesh/TerrainMeshPrimitive.js +1 -1
  897. package/lib/esm/render/primitives/mesh/TerrainMeshPrimitive.js.map +1 -1
  898. package/lib/esm/render/webgl/AttributeMap.js +5 -5
  899. package/lib/esm/render/webgl/BackgroundMapDrape.js +2 -2
  900. package/lib/esm/render/webgl/BackgroundMapDrape.js.map +1 -1
  901. package/lib/esm/render/webgl/BranchUniforms.d.ts.map +1 -1
  902. package/lib/esm/render/webgl/BranchUniforms.js +8 -5
  903. package/lib/esm/render/webgl/BranchUniforms.js.map +1 -1
  904. package/lib/esm/render/webgl/CachedGeometry.d.ts +16 -11
  905. package/lib/esm/render/webgl/CachedGeometry.d.ts.map +1 -1
  906. package/lib/esm/render/webgl/CachedGeometry.js +26 -23
  907. package/lib/esm/render/webgl/CachedGeometry.js.map +1 -1
  908. package/lib/esm/render/webgl/DrawCommand.d.ts +2 -3
  909. package/lib/esm/render/webgl/DrawCommand.d.ts.map +1 -1
  910. package/lib/esm/render/webgl/DrawCommand.js +6 -4
  911. package/lib/esm/render/webgl/DrawCommand.js.map +1 -1
  912. package/lib/esm/render/webgl/EdgeGeometry.d.ts +73 -0
  913. package/lib/esm/render/webgl/EdgeGeometry.d.ts.map +1 -0
  914. package/lib/esm/render/webgl/EdgeGeometry.js +135 -0
  915. package/lib/esm/render/webgl/EdgeGeometry.js.map +1 -0
  916. package/lib/esm/render/webgl/FeatureOverrides.d.ts +2 -0
  917. package/lib/esm/render/webgl/FeatureOverrides.d.ts.map +1 -1
  918. package/lib/esm/render/webgl/FeatureOverrides.js +11 -3
  919. package/lib/esm/render/webgl/FeatureOverrides.js.map +1 -1
  920. package/lib/esm/render/webgl/FloatRGBA.d.ts.map +1 -1
  921. package/lib/esm/render/webgl/FloatRGBA.js +13 -11
  922. package/lib/esm/render/webgl/FloatRGBA.js.map +1 -1
  923. package/lib/esm/render/webgl/Graphic.d.ts +13 -0
  924. package/lib/esm/render/webgl/Graphic.d.ts.map +1 -1
  925. package/lib/esm/render/webgl/Graphic.js +39 -2
  926. package/lib/esm/render/webgl/Graphic.js.map +1 -1
  927. package/lib/esm/render/webgl/IndexedEdgeGeometry.d.ts +51 -0
  928. package/lib/esm/render/webgl/IndexedEdgeGeometry.d.ts.map +1 -0
  929. package/lib/esm/render/webgl/IndexedEdgeGeometry.js +85 -0
  930. package/lib/esm/render/webgl/IndexedEdgeGeometry.js.map +1 -0
  931. package/lib/esm/render/webgl/InstancedGeometry.d.ts +6 -5
  932. package/lib/esm/render/webgl/InstancedGeometry.d.ts.map +1 -1
  933. package/lib/esm/render/webgl/InstancedGeometry.js +2 -1
  934. package/lib/esm/render/webgl/InstancedGeometry.js.map +1 -1
  935. package/lib/esm/render/webgl/LightingUniforms.d.ts +1 -0
  936. package/lib/esm/render/webgl/LightingUniforms.d.ts.map +1 -1
  937. package/lib/esm/render/webgl/LightingUniforms.js +4 -1
  938. package/lib/esm/render/webgl/LightingUniforms.js.map +1 -1
  939. package/lib/esm/render/webgl/Material.d.ts +1 -1
  940. package/lib/esm/render/webgl/Material.d.ts.map +1 -1
  941. package/lib/esm/render/webgl/Material.js +2 -0
  942. package/lib/esm/render/webgl/Material.js.map +1 -1
  943. package/lib/esm/render/webgl/Mesh.d.ts +8 -162
  944. package/lib/esm/render/webgl/Mesh.d.ts.map +1 -1
  945. package/lib/esm/render/webgl/Mesh.js +12 -445
  946. package/lib/esm/render/webgl/Mesh.js.map +1 -1
  947. package/lib/esm/render/webgl/MeshData.d.ts +38 -0
  948. package/lib/esm/render/webgl/MeshData.d.ts.map +1 -0
  949. package/lib/esm/render/webgl/MeshData.js +62 -0
  950. package/lib/esm/render/webgl/MeshData.js.map +1 -0
  951. package/lib/esm/render/webgl/MeshGeometry.d.ts +38 -0
  952. package/lib/esm/render/webgl/MeshGeometry.d.ts.map +1 -0
  953. package/lib/esm/render/webgl/MeshGeometry.js +55 -0
  954. package/lib/esm/render/webgl/MeshGeometry.js.map +1 -0
  955. package/lib/esm/render/webgl/PlanarClassifier.d.ts.map +1 -1
  956. package/lib/esm/render/webgl/PlanarClassifier.js +9 -5
  957. package/lib/esm/render/webgl/PlanarClassifier.js.map +1 -1
  958. package/lib/esm/render/webgl/PlanarGrid.d.ts +2 -3
  959. package/lib/esm/render/webgl/PlanarGrid.d.ts.map +1 -1
  960. package/lib/esm/render/webgl/PlanarGrid.js +3 -3
  961. package/lib/esm/render/webgl/PlanarGrid.js.map +1 -1
  962. package/lib/esm/render/webgl/PlanarTextureProjection.d.ts.map +1 -1
  963. package/lib/esm/render/webgl/PlanarTextureProjection.js +1 -0
  964. package/lib/esm/render/webgl/PlanarTextureProjection.js.map +1 -1
  965. package/lib/esm/render/webgl/PointCloud.d.ts +2 -2
  966. package/lib/esm/render/webgl/PointCloud.d.ts.map +1 -1
  967. package/lib/esm/render/webgl/PointCloud.js +2 -2
  968. package/lib/esm/render/webgl/PointCloud.js.map +1 -1
  969. package/lib/esm/render/webgl/PointString.d.ts +3 -3
  970. package/lib/esm/render/webgl/PointString.d.ts.map +1 -1
  971. package/lib/esm/render/webgl/PointString.js +1 -1
  972. package/lib/esm/render/webgl/PointString.js.map +1 -1
  973. package/lib/esm/render/webgl/Polyline.d.ts +3 -3
  974. package/lib/esm/render/webgl/Polyline.d.ts.map +1 -1
  975. package/lib/esm/render/webgl/Polyline.js +6 -6
  976. package/lib/esm/render/webgl/Polyline.js.map +1 -1
  977. package/lib/esm/render/webgl/Primitive.d.ts +2 -2
  978. package/lib/esm/render/webgl/Primitive.d.ts.map +1 -1
  979. package/lib/esm/render/webgl/Primitive.js +5 -5
  980. package/lib/esm/render/webgl/Primitive.js.map +1 -1
  981. package/lib/esm/render/webgl/RealityMesh.d.ts +3 -2
  982. package/lib/esm/render/webgl/RealityMesh.d.ts.map +1 -1
  983. package/lib/esm/render/webgl/RealityMesh.js +10 -9
  984. package/lib/esm/render/webgl/RealityMesh.js.map +1 -1
  985. package/lib/esm/render/webgl/RenderCommands.d.ts +6 -2
  986. package/lib/esm/render/webgl/RenderCommands.d.ts.map +1 -1
  987. package/lib/esm/render/webgl/RenderCommands.js +78 -45
  988. package/lib/esm/render/webgl/RenderCommands.js.map +1 -1
  989. package/lib/esm/render/webgl/RenderFlags.d.ts +48 -1
  990. package/lib/esm/render/webgl/RenderFlags.d.ts.map +1 -1
  991. package/lib/esm/render/webgl/RenderFlags.js +63 -1
  992. package/lib/esm/render/webgl/RenderFlags.js.map +1 -1
  993. package/lib/esm/render/webgl/SceneCompositor.js +10 -9
  994. package/lib/esm/render/webgl/SceneCompositor.js.map +1 -1
  995. package/lib/esm/render/webgl/ScreenSpaceEffect.js +1 -1
  996. package/lib/esm/render/webgl/ShaderBuilder.d.ts +23 -20
  997. package/lib/esm/render/webgl/ShaderBuilder.d.ts.map +1 -1
  998. package/lib/esm/render/webgl/ShaderBuilder.js +38 -32
  999. package/lib/esm/render/webgl/ShaderBuilder.js.map +1 -1
  1000. package/lib/esm/render/webgl/ShaderProgram.d.ts +1 -1
  1001. package/lib/esm/render/webgl/ShaderProgram.d.ts.map +1 -1
  1002. package/lib/esm/render/webgl/ShaderProgram.js +4 -4
  1003. package/lib/esm/render/webgl/ShaderProgram.js.map +1 -1
  1004. package/lib/esm/render/webgl/SolarShadowMap.d.ts.map +1 -1
  1005. package/lib/esm/render/webgl/SolarShadowMap.js +5 -4
  1006. package/lib/esm/render/webgl/SolarShadowMap.js.map +1 -1
  1007. package/lib/esm/render/webgl/SurfaceGeometry.d.ts +54 -0
  1008. package/lib/esm/render/webgl/SurfaceGeometry.d.ts.map +1 -0
  1009. package/lib/esm/render/webgl/SurfaceGeometry.js +243 -0
  1010. package/lib/esm/render/webgl/SurfaceGeometry.js.map +1 -0
  1011. package/lib/esm/render/webgl/System.d.ts +13 -10
  1012. package/lib/esm/render/webgl/System.d.ts.map +1 -1
  1013. package/lib/esm/render/webgl/System.js +77 -23
  1014. package/lib/esm/render/webgl/System.js.map +1 -1
  1015. package/lib/esm/render/webgl/Target.d.ts +13 -1
  1016. package/lib/esm/render/webgl/Target.d.ts.map +1 -1
  1017. package/lib/esm/render/webgl/Target.js +88 -2
  1018. package/lib/esm/render/webgl/Target.js.map +1 -1
  1019. package/lib/esm/render/webgl/Technique.d.ts.map +1 -1
  1020. package/lib/esm/render/webgl/Technique.js +112 -119
  1021. package/lib/esm/render/webgl/Technique.js.map +1 -1
  1022. package/lib/esm/render/webgl/TechniqueFlags.d.ts +7 -1
  1023. package/lib/esm/render/webgl/TechniqueFlags.d.ts.map +1 -1
  1024. package/lib/esm/render/webgl/TechniqueFlags.js +10 -1
  1025. package/lib/esm/render/webgl/TechniqueFlags.js.map +1 -1
  1026. package/lib/esm/render/webgl/TechniqueId.d.ts +29 -28
  1027. package/lib/esm/render/webgl/TechniqueId.d.ts.map +1 -1
  1028. package/lib/esm/render/webgl/TechniqueId.js +7 -7
  1029. package/lib/esm/render/webgl/TechniqueId.js.map +1 -1
  1030. package/lib/esm/render/webgl/Texture.d.ts +15 -12
  1031. package/lib/esm/render/webgl/Texture.d.ts.map +1 -1
  1032. package/lib/esm/render/webgl/Texture.js +29 -26
  1033. package/lib/esm/render/webgl/Texture.js.map +1 -1
  1034. package/lib/esm/render/webgl/glsl/AmbientOcclusion.d.ts.map +1 -1
  1035. package/lib/esm/render/webgl/glsl/AmbientOcclusion.js +84 -19
  1036. package/lib/esm/render/webgl/glsl/AmbientOcclusion.js.map +1 -1
  1037. package/lib/esm/render/webgl/glsl/Animation.js +1 -1
  1038. package/lib/esm/render/webgl/glsl/Blur.js +1 -1
  1039. package/lib/esm/render/webgl/glsl/ClearPickAndColor.js +2 -2
  1040. package/lib/esm/render/webgl/glsl/ClearTranslucent.js +2 -2
  1041. package/lib/esm/render/webgl/glsl/Color.js +1 -1
  1042. package/lib/esm/render/webgl/glsl/Combine3Textures.js +1 -1
  1043. package/lib/esm/render/webgl/glsl/CombineTextures.js +1 -1
  1044. package/lib/esm/render/webgl/glsl/Composite.js +1 -1
  1045. package/lib/esm/render/webgl/glsl/CopyColor.d.ts.map +1 -1
  1046. package/lib/esm/render/webgl/glsl/CopyColor.js +17 -2
  1047. package/lib/esm/render/webgl/glsl/CopyColor.js.map +1 -1
  1048. package/lib/esm/render/webgl/glsl/CopyPickBuffers.js +2 -2
  1049. package/lib/esm/render/webgl/glsl/CopyStencil.d.ts.map +1 -1
  1050. package/lib/esm/render/webgl/glsl/CopyStencil.js +10 -13
  1051. package/lib/esm/render/webgl/glsl/CopyStencil.js.map +1 -1
  1052. package/lib/esm/render/webgl/glsl/EVSMFromDepth.js +2 -2
  1053. package/lib/esm/render/webgl/glsl/EVSMFromDepth.js.map +1 -1
  1054. package/lib/esm/render/webgl/glsl/Edge.d.ts +2 -1
  1055. package/lib/esm/render/webgl/glsl/Edge.d.ts.map +1 -1
  1056. package/lib/esm/render/webgl/glsl/Edge.js +132 -14
  1057. package/lib/esm/render/webgl/glsl/Edge.js.map +1 -1
  1058. package/lib/esm/render/webgl/glsl/FeatureSymbology.d.ts.map +1 -1
  1059. package/lib/esm/render/webgl/glsl/FeatureSymbology.js +44 -22
  1060. package/lib/esm/render/webgl/glsl/FeatureSymbology.js.map +1 -1
  1061. package/lib/esm/render/webgl/glsl/Fragment.d.ts.map +1 -1
  1062. package/lib/esm/render/webgl/glsl/Fragment.js +19 -11
  1063. package/lib/esm/render/webgl/glsl/Fragment.js.map +1 -1
  1064. package/lib/esm/render/webgl/glsl/Lighting.d.ts.map +1 -1
  1065. package/lib/esm/render/webgl/glsl/Lighting.js +16 -2
  1066. package/lib/esm/render/webgl/glsl/Lighting.js.map +1 -1
  1067. package/lib/esm/render/webgl/glsl/LogarithmicDepthBuffer.js +1 -1
  1068. package/lib/esm/render/webgl/glsl/LookupTable.d.ts +4 -2
  1069. package/lib/esm/render/webgl/glsl/LookupTable.d.ts.map +1 -1
  1070. package/lib/esm/render/webgl/glsl/LookupTable.js +7 -3
  1071. package/lib/esm/render/webgl/glsl/LookupTable.js.map +1 -1
  1072. package/lib/esm/render/webgl/glsl/PlanarClassification.d.ts.map +1 -1
  1073. package/lib/esm/render/webgl/glsl/PlanarClassification.js +13 -4
  1074. package/lib/esm/render/webgl/glsl/PlanarClassification.js.map +1 -1
  1075. package/lib/esm/render/webgl/glsl/PlanarGrid.js +2 -2
  1076. package/lib/esm/render/webgl/glsl/PlanarGrid.js.map +1 -1
  1077. package/lib/esm/render/webgl/glsl/PointCloud.js +2 -2
  1078. package/lib/esm/render/webgl/glsl/PointCloud.js.map +1 -1
  1079. package/lib/esm/render/webgl/glsl/PointString.js +1 -1
  1080. package/lib/esm/render/webgl/glsl/PointString.js.map +1 -1
  1081. package/lib/esm/render/webgl/glsl/Polyline.js +1 -1
  1082. package/lib/esm/render/webgl/glsl/Polyline.js.map +1 -1
  1083. package/lib/esm/render/webgl/glsl/RealityMesh.d.ts.map +1 -1
  1084. package/lib/esm/render/webgl/glsl/RealityMesh.js +9 -6
  1085. package/lib/esm/render/webgl/glsl/RealityMesh.js.map +1 -1
  1086. package/lib/esm/render/webgl/glsl/ScreenSpaceEffect.js +2 -2
  1087. package/lib/esm/render/webgl/glsl/ScreenSpaceEffect.js.map +1 -1
  1088. package/lib/esm/render/webgl/glsl/SkyBox.js +2 -2
  1089. package/lib/esm/render/webgl/glsl/SkyBox.js.map +1 -1
  1090. package/lib/esm/render/webgl/glsl/SkySphere.js +2 -2
  1091. package/lib/esm/render/webgl/glsl/Surface.d.ts.map +1 -1
  1092. package/lib/esm/render/webgl/glsl/Surface.js +41 -16
  1093. package/lib/esm/render/webgl/glsl/Surface.js.map +1 -1
  1094. package/lib/esm/render/webgl/glsl/Translucency.js +2 -2
  1095. package/lib/esm/render/webgl/glsl/Vertex.js +3 -3
  1096. package/lib/esm/render/webgl/glsl/Vertex.js.map +1 -1
  1097. package/lib/esm/render/webgl/glsl/ViewportQuad.js +1 -1
  1098. package/lib/esm/render/webgl/glsl/ViewportQuad.js.map +1 -1
  1099. package/lib/esm/render/webgl/glsl/Wiremesh.d.ts +9 -0
  1100. package/lib/esm/render/webgl/glsl/Wiremesh.d.ts.map +1 -0
  1101. package/lib/esm/render/webgl/glsl/Wiremesh.js +36 -0
  1102. package/lib/esm/render/webgl/glsl/Wiremesh.js.map +1 -0
  1103. package/lib/esm/render-primitives.d.ts +5 -1
  1104. package/lib/esm/render-primitives.d.ts.map +1 -1
  1105. package/lib/esm/render-primitives.js +5 -1
  1106. package/lib/esm/render-primitives.js.map +1 -1
  1107. package/lib/esm/request/Request.d.ts +167 -0
  1108. package/lib/esm/request/Request.d.ts.map +1 -0
  1109. package/lib/esm/request/Request.js +289 -0
  1110. package/lib/esm/request/Request.js.map +1 -0
  1111. package/lib/esm/tile/B3dmReader.d.ts +2 -1
  1112. package/lib/esm/tile/B3dmReader.d.ts.map +1 -1
  1113. package/lib/esm/tile/B3dmReader.js +12 -8
  1114. package/lib/esm/tile/B3dmReader.js.map +1 -1
  1115. package/lib/esm/tile/CesiumAssetProvider.d.ts +14 -0
  1116. package/lib/esm/tile/CesiumAssetProvider.d.ts.map +1 -0
  1117. package/lib/esm/tile/CesiumAssetProvider.js +31 -0
  1118. package/lib/esm/tile/CesiumAssetProvider.js.map +1 -0
  1119. package/lib/esm/tile/ContextShareProvider.d.ts +22 -0
  1120. package/lib/esm/tile/ContextShareProvider.d.ts.map +1 -0
  1121. package/lib/esm/tile/ContextShareProvider.js +125 -0
  1122. package/lib/esm/tile/ContextShareProvider.js.map +1 -0
  1123. package/lib/esm/tile/DynamicIModelTile.d.ts.map +1 -1
  1124. package/lib/esm/tile/DynamicIModelTile.js +10 -4
  1125. package/lib/esm/tile/DynamicIModelTile.js.map +1 -1
  1126. package/lib/esm/tile/GltfReader.d.ts +600 -56
  1127. package/lib/esm/tile/GltfReader.d.ts.map +1 -1
  1128. package/lib/esm/tile/GltfReader.js +765 -254
  1129. package/lib/esm/tile/GltfReader.js.map +1 -1
  1130. package/lib/esm/tile/I3dmReader.d.ts +2 -1
  1131. package/lib/esm/tile/I3dmReader.d.ts.map +1 -1
  1132. package/lib/esm/tile/I3dmReader.js +11 -7
  1133. package/lib/esm/tile/I3dmReader.js.map +1 -1
  1134. package/lib/esm/tile/IModelTile.d.ts.map +1 -1
  1135. package/lib/esm/tile/IModelTile.js +14 -7
  1136. package/lib/esm/tile/IModelTile.js.map +1 -1
  1137. package/lib/esm/tile/IModelTileTree.d.ts +8 -0
  1138. package/lib/esm/tile/IModelTileTree.d.ts.map +1 -1
  1139. package/lib/esm/tile/IModelTileTree.js +36 -1
  1140. package/lib/esm/tile/IModelTileTree.js.map +1 -1
  1141. package/lib/esm/tile/ImdlReader.d.ts +365 -10
  1142. package/lib/esm/tile/ImdlReader.d.ts.map +1 -1
  1143. package/lib/esm/tile/ImdlReader.js +199 -66
  1144. package/lib/esm/tile/ImdlReader.js.map +1 -1
  1145. package/lib/esm/tile/LRUTileList.d.ts +29 -29
  1146. package/lib/esm/tile/LRUTileList.d.ts.map +1 -1
  1147. package/lib/esm/tile/LRUTileList.js +47 -47
  1148. package/lib/esm/tile/LRUTileList.js.map +1 -1
  1149. package/lib/esm/tile/OrbitGtTileTree.d.ts +0 -9
  1150. package/lib/esm/tile/OrbitGtTileTree.d.ts.map +1 -1
  1151. package/lib/esm/tile/OrbitGtTileTree.js +11 -21
  1152. package/lib/esm/tile/OrbitGtTileTree.js.map +1 -1
  1153. package/lib/esm/tile/PrimaryTileTree.d.ts +14 -5
  1154. package/lib/esm/tile/PrimaryTileTree.d.ts.map +1 -1
  1155. package/lib/esm/tile/PrimaryTileTree.js +70 -15
  1156. package/lib/esm/tile/PrimaryTileTree.js.map +1 -1
  1157. package/lib/esm/tile/RealityModelTileTree.d.ts +22 -39
  1158. package/lib/esm/tile/RealityModelTileTree.d.ts.map +1 -1
  1159. package/lib/esm/tile/RealityModelTileTree.js +83 -218
  1160. package/lib/esm/tile/RealityModelTileTree.js.map +1 -1
  1161. package/lib/esm/tile/RealityTile.d.ts +17 -3
  1162. package/lib/esm/tile/RealityTile.d.ts.map +1 -1
  1163. package/lib/esm/tile/RealityTile.js +34 -2
  1164. package/lib/esm/tile/RealityTile.js.map +1 -1
  1165. package/lib/esm/tile/RealityTileLoader.d.ts +9 -5
  1166. package/lib/esm/tile/RealityTileLoader.d.ts.map +1 -1
  1167. package/lib/esm/tile/RealityTileLoader.js +23 -8
  1168. package/lib/esm/tile/RealityTileLoader.js.map +1 -1
  1169. package/lib/esm/tile/RealityTileTree.d.ts +3 -1
  1170. package/lib/esm/tile/RealityTileTree.d.ts.map +1 -1
  1171. package/lib/esm/tile/RealityTileTree.js +7 -3
  1172. package/lib/esm/tile/RealityTileTree.js.map +1 -1
  1173. package/lib/esm/tile/Tile.d.ts +5 -4
  1174. package/lib/esm/tile/Tile.d.ts.map +1 -1
  1175. package/lib/esm/tile/Tile.js +8 -3
  1176. package/lib/esm/tile/Tile.js.map +1 -1
  1177. package/lib/esm/tile/TileAdmin.d.ts +79 -48
  1178. package/lib/esm/tile/TileAdmin.d.ts.map +1 -1
  1179. package/lib/esm/tile/TileAdmin.js +124 -113
  1180. package/lib/esm/tile/TileAdmin.js.map +1 -1
  1181. package/lib/esm/tile/TileDrawArgs.d.ts +11 -0
  1182. package/lib/esm/tile/TileDrawArgs.d.ts.map +1 -1
  1183. package/lib/esm/tile/TileDrawArgs.js +6 -1
  1184. package/lib/esm/tile/TileDrawArgs.js.map +1 -1
  1185. package/lib/esm/tile/TileGeometryCollector.d.ts +80 -0
  1186. package/lib/esm/tile/TileGeometryCollector.d.ts.map +1 -0
  1187. package/lib/esm/tile/TileGeometryCollector.js +67 -0
  1188. package/lib/esm/tile/TileGeometryCollector.js.map +1 -0
  1189. package/lib/esm/tile/TileRequest.d.ts +12 -9
  1190. package/lib/esm/tile/TileRequest.d.ts.map +1 -1
  1191. package/lib/esm/tile/TileRequest.js +19 -11
  1192. package/lib/esm/tile/TileRequest.js.map +1 -1
  1193. package/lib/esm/tile/TileRequestChannel.js +3 -3
  1194. package/lib/esm/tile/TileRequestChannel.js.map +1 -1
  1195. package/lib/esm/tile/TileTree.d.ts +7 -1
  1196. package/lib/esm/tile/TileTree.d.ts.map +1 -1
  1197. package/lib/esm/tile/TileTree.js +8 -1
  1198. package/lib/esm/tile/TileTree.js.map +1 -1
  1199. package/lib/esm/tile/TileTreeReference.d.ts +25 -2
  1200. package/lib/esm/tile/TileTreeReference.d.ts.map +1 -1
  1201. package/lib/esm/tile/TileTreeReference.js +44 -3
  1202. package/lib/esm/tile/TileTreeReference.js.map +1 -1
  1203. package/lib/esm/tile/TileUsageMarker.d.ts +9 -9
  1204. package/lib/esm/tile/TileUsageMarker.d.ts.map +1 -1
  1205. package/lib/esm/tile/TileUsageMarker.js +9 -9
  1206. package/lib/esm/tile/TileUsageMarker.js.map +1 -1
  1207. package/lib/esm/tile/TileUser.d.ts +33 -0
  1208. package/lib/esm/tile/TileUser.d.ts.map +1 -0
  1209. package/lib/esm/tile/TileUser.js +25 -0
  1210. package/lib/esm/tile/TileUser.js.map +1 -0
  1211. package/lib/esm/tile/TileUserSet.d.ts +28 -0
  1212. package/lib/esm/tile/TileUserSet.d.ts.map +1 -0
  1213. package/lib/esm/tile/TileUserSet.js +118 -0
  1214. package/lib/esm/tile/TileUserSet.js.map +1 -0
  1215. package/lib/esm/tile/internal.d.ts +7 -1
  1216. package/lib/esm/tile/internal.d.ts.map +1 -1
  1217. package/lib/esm/tile/internal.js +7 -1
  1218. package/lib/esm/tile/internal.js.map +1 -1
  1219. package/lib/esm/tile/map/ArcGISTileMap.d.ts +22 -0
  1220. package/lib/esm/tile/map/ArcGISTileMap.d.ts.map +1 -0
  1221. package/lib/esm/tile/map/ArcGISTileMap.js +173 -0
  1222. package/lib/esm/tile/map/ArcGISTileMap.js.map +1 -0
  1223. package/lib/esm/tile/map/ArcGisTokenGenerator.js +1 -1
  1224. package/lib/esm/tile/map/ArcGisTokenGenerator.js.map +1 -1
  1225. package/lib/esm/tile/map/ArcGisUtilities.d.ts +1 -1
  1226. package/lib/esm/tile/map/ArcGisUtilities.d.ts.map +1 -1
  1227. package/lib/esm/tile/map/ArcGisUtilities.js +14 -6
  1228. package/lib/esm/tile/map/ArcGisUtilities.js.map +1 -1
  1229. package/lib/esm/tile/map/BingElevation.js +1 -1
  1230. package/lib/esm/tile/map/BingElevation.js.map +1 -1
  1231. package/lib/esm/tile/map/CesiumTerrainProvider.d.ts.map +1 -1
  1232. package/lib/esm/tile/map/CesiumTerrainProvider.js +25 -13
  1233. package/lib/esm/tile/map/CesiumTerrainProvider.js.map +1 -1
  1234. package/lib/esm/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.d.ts +3 -4
  1235. package/lib/esm/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.d.ts.map +1 -1
  1236. package/lib/esm/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js +22 -43
  1237. package/lib/esm/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js.map +1 -1
  1238. package/lib/esm/tile/map/ImageryProviders/AzureMapsLayerImageryProvider.d.ts +1 -2
  1239. package/lib/esm/tile/map/ImageryProviders/AzureMapsLayerImageryProvider.d.ts.map +1 -1
  1240. package/lib/esm/tile/map/ImageryProviders/AzureMapsLayerImageryProvider.js +1 -1
  1241. package/lib/esm/tile/map/ImageryProviders/AzureMapsLayerImageryProvider.js.map +1 -1
  1242. package/lib/esm/tile/map/ImageryProviders/BingImageryProvider.js +3 -3
  1243. package/lib/esm/tile/map/ImageryProviders/BingImageryProvider.js.map +1 -1
  1244. package/lib/esm/tile/map/ImageryProviders/MapBoxLayerImageryProvider.d.ts +1 -2
  1245. package/lib/esm/tile/map/ImageryProviders/MapBoxLayerImageryProvider.d.ts.map +1 -1
  1246. package/lib/esm/tile/map/ImageryProviders/MapBoxLayerImageryProvider.js +1 -1
  1247. package/lib/esm/tile/map/ImageryProviders/MapBoxLayerImageryProvider.js.map +1 -1
  1248. package/lib/esm/tile/map/ImageryProviders/WmsMapLayerImageryProvider.d.ts +8 -0
  1249. package/lib/esm/tile/map/ImageryProviders/WmsMapLayerImageryProvider.d.ts.map +1 -1
  1250. package/lib/esm/tile/map/ImageryProviders/WmsMapLayerImageryProvider.js +51 -10
  1251. package/lib/esm/tile/map/ImageryProviders/WmsMapLayerImageryProvider.js.map +1 -1
  1252. package/lib/esm/tile/map/ImageryProviders/WmtsMapLayerImageryProvider.d.ts +6 -1
  1253. package/lib/esm/tile/map/ImageryProviders/WmtsMapLayerImageryProvider.d.ts.map +1 -1
  1254. package/lib/esm/tile/map/ImageryProviders/WmtsMapLayerImageryProvider.js +63 -21
  1255. package/lib/esm/tile/map/ImageryProviders/WmtsMapLayerImageryProvider.js.map +1 -1
  1256. package/lib/esm/tile/map/ImageryTileTree.d.ts +6 -6
  1257. package/lib/esm/tile/map/ImageryTileTree.d.ts.map +1 -1
  1258. package/lib/esm/tile/map/ImageryTileTree.js +22 -26
  1259. package/lib/esm/tile/map/ImageryTileTree.js.map +1 -1
  1260. package/lib/esm/tile/map/MapCartoRectangle.js +1 -1
  1261. package/lib/esm/tile/map/MapCartoRectangle.js.map +1 -1
  1262. package/lib/esm/tile/map/MapLayerAuthentication.d.ts +20 -0
  1263. package/lib/esm/tile/map/MapLayerAuthentication.d.ts.map +1 -0
  1264. package/lib/esm/tile/map/MapLayerAuthentication.js +15 -0
  1265. package/lib/esm/tile/map/MapLayerAuthentication.js.map +1 -0
  1266. package/lib/esm/tile/map/MapLayerFormatRegistry.d.ts +6 -3
  1267. package/lib/esm/tile/map/MapLayerFormatRegistry.d.ts.map +1 -1
  1268. package/lib/esm/tile/map/MapLayerFormatRegistry.js +3 -1
  1269. package/lib/esm/tile/map/MapLayerFormatRegistry.js.map +1 -1
  1270. package/lib/esm/tile/map/MapLayerImageryFormats.d.ts +2 -2
  1271. package/lib/esm/tile/map/MapLayerImageryFormats.d.ts.map +1 -1
  1272. package/lib/esm/tile/map/MapLayerImageryFormats.js +22 -9
  1273. package/lib/esm/tile/map/MapLayerImageryFormats.js.map +1 -1
  1274. package/lib/esm/tile/map/MapLayerImageryProvider.d.ts +18 -6
  1275. package/lib/esm/tile/map/MapLayerImageryProvider.d.ts.map +1 -1
  1276. package/lib/esm/tile/map/MapLayerImageryProvider.js +44 -11
  1277. package/lib/esm/tile/map/MapLayerImageryProvider.js.map +1 -1
  1278. package/lib/esm/tile/map/MapLayerSources.d.ts +3 -11
  1279. package/lib/esm/tile/map/MapLayerSources.d.ts.map +1 -1
  1280. package/lib/esm/tile/map/MapLayerSources.js +7 -36
  1281. package/lib/esm/tile/map/MapLayerSources.js.map +1 -1
  1282. package/lib/esm/tile/map/MapTile.d.ts +7 -6
  1283. package/lib/esm/tile/map/MapTile.d.ts.map +1 -1
  1284. package/lib/esm/tile/map/MapTile.js +51 -37
  1285. package/lib/esm/tile/map/MapTile.js.map +1 -1
  1286. package/lib/esm/tile/map/MapTileLoader.d.ts +2 -1
  1287. package/lib/esm/tile/map/MapTileLoader.d.ts.map +1 -1
  1288. package/lib/esm/tile/map/MapTileLoader.js +5 -2
  1289. package/lib/esm/tile/map/MapTileLoader.js.map +1 -1
  1290. package/lib/esm/tile/map/MapTileTree.d.ts +9 -6
  1291. package/lib/esm/tile/map/MapTileTree.d.ts.map +1 -1
  1292. package/lib/esm/tile/map/MapTileTree.js +56 -29
  1293. package/lib/esm/tile/map/MapTileTree.js.map +1 -1
  1294. package/lib/esm/tile/map/MapTiledGraphicsProvider.d.ts +3 -3
  1295. package/lib/esm/tile/map/MapTiledGraphicsProvider.d.ts.map +1 -1
  1296. package/lib/esm/tile/map/MapTiledGraphicsProvider.js +4 -6
  1297. package/lib/esm/tile/map/MapTiledGraphicsProvider.js.map +1 -1
  1298. package/lib/esm/tile/map/MapTilingScheme.d.ts +7 -2
  1299. package/lib/esm/tile/map/MapTilingScheme.d.ts.map +1 -1
  1300. package/lib/esm/tile/map/MapTilingScheme.js +22 -9
  1301. package/lib/esm/tile/map/MapTilingScheme.js.map +1 -1
  1302. package/lib/esm/tile/map/QuadId.d.ts +1 -0
  1303. package/lib/esm/tile/map/QuadId.d.ts.map +1 -1
  1304. package/lib/esm/tile/map/QuadId.js +2 -1
  1305. package/lib/esm/tile/map/QuadId.js.map +1 -1
  1306. package/lib/esm/tile/map/TerrainMeshProvider.d.ts +1 -1
  1307. package/lib/esm/tile/map/TerrainMeshProvider.js.map +1 -1
  1308. package/lib/esm/tile/map/WmsCapabilities.d.ts +8 -1
  1309. package/lib/esm/tile/map/WmsCapabilities.d.ts.map +1 -1
  1310. package/lib/esm/tile/map/WmsCapabilities.js +37 -3
  1311. package/lib/esm/tile/map/WmsCapabilities.js.map +1 -1
  1312. package/lib/esm/tile/map/WmtsCapabilities.d.ts +11 -1
  1313. package/lib/esm/tile/map/WmtsCapabilities.d.ts.map +1 -1
  1314. package/lib/esm/tile/map/WmtsCapabilities.js +20 -6
  1315. package/lib/esm/tile/map/WmtsCapabilities.js.map +1 -1
  1316. package/lib/esm/tools/EditManipulator.d.ts.map +1 -1
  1317. package/lib/esm/tools/EditManipulator.js +1 -1
  1318. package/lib/esm/tools/EditManipulator.js.map +1 -1
  1319. package/lib/esm/tools/ElementSetTool.js +2 -2
  1320. package/lib/esm/tools/ElementSetTool.js.map +1 -1
  1321. package/lib/esm/tools/PrimitiveTool.d.ts +4 -4
  1322. package/lib/esm/tools/PrimitiveTool.d.ts.map +1 -1
  1323. package/lib/esm/tools/PrimitiveTool.js +2 -2
  1324. package/lib/esm/tools/PrimitiveTool.js.map +1 -1
  1325. package/lib/esm/tools/Tool.d.ts +29 -1
  1326. package/lib/esm/tools/Tool.d.ts.map +1 -1
  1327. package/lib/esm/tools/Tool.js +66 -0
  1328. package/lib/esm/tools/Tool.js.map +1 -1
  1329. package/lib/esm/tools/ToolAdmin.d.ts.map +1 -1
  1330. package/lib/esm/tools/ToolAdmin.js +20 -10
  1331. package/lib/esm/tools/ToolAdmin.js.map +1 -1
  1332. package/lib/esm/tools/ViewTool.d.ts.map +1 -1
  1333. package/lib/esm/tools/ViewTool.js +3 -11
  1334. package/lib/esm/tools/ViewTool.js.map +1 -1
  1335. package/lib/esm/webgl.d.ts +5 -0
  1336. package/lib/esm/webgl.d.ts.map +1 -1
  1337. package/lib/esm/webgl.js +5 -0
  1338. package/lib/esm/webgl.js.map +1 -1
  1339. package/lib/public/locales/en/iModelJs.json +3 -1
  1340. package/package.json +33 -28
  1341. package/lib/cjs/RealityDataAccessProps.d.ts +0 -44
  1342. package/lib/cjs/RealityDataAccessProps.d.ts.map +0 -1
  1343. package/lib/cjs/RealityDataAccessProps.js +0 -23
  1344. package/lib/cjs/RealityDataAccessProps.js.map +0 -1
  1345. package/lib/cjs/RealityDataConnection.d.ts +0 -31
  1346. package/lib/cjs/RealityDataConnection.d.ts.map +0 -1
  1347. package/lib/cjs/RealityDataConnection.js +0 -101
  1348. package/lib/cjs/RealityDataConnection.js.map +0 -1
  1349. package/lib/cjs/ViewportSet.d.ts +0 -28
  1350. package/lib/cjs/ViewportSet.d.ts.map +0 -1
  1351. package/lib/cjs/ViewportSet.js +0 -126
  1352. package/lib/cjs/ViewportSet.js.map +0 -1
  1353. package/lib/cjs/extension/Extension.d.ts +0 -39
  1354. package/lib/cjs/extension/Extension.d.ts.map +0 -1
  1355. package/lib/cjs/extension/Extension.js +0 -39
  1356. package/lib/cjs/extension/Extension.js.map +0 -1
  1357. package/lib/cjs/extension/ExtensionAdmin.d.ts +0 -70
  1358. package/lib/cjs/extension/ExtensionAdmin.d.ts.map +0 -1
  1359. package/lib/cjs/extension/ExtensionAdmin.js +0 -105
  1360. package/lib/cjs/extension/ExtensionAdmin.js.map +0 -1
  1361. package/lib/cjs/extension/ExtensionHost.d.ts +0 -20
  1362. package/lib/cjs/extension/ExtensionHost.d.ts.map +0 -1
  1363. package/lib/cjs/extension/ExtensionHost.js +0 -19
  1364. package/lib/cjs/extension/ExtensionHost.js.map +0 -1
  1365. package/lib/cjs/extension/ExtensionImpl.d.ts +0 -16
  1366. package/lib/cjs/extension/ExtensionImpl.d.ts.map +0 -1
  1367. package/lib/cjs/extension/ExtensionImpl.js +0 -40
  1368. package/lib/cjs/extension/ExtensionImpl.js.map +0 -1
  1369. package/lib/cjs/extension/ExtensionLoader.d.ts +0 -20
  1370. package/lib/cjs/extension/ExtensionLoader.d.ts.map +0 -1
  1371. package/lib/cjs/extension/ExtensionLoader.js.map +0 -1
  1372. package/lib/cjs/extension/ExtensionRuntime.d.ts +0 -2
  1373. package/lib/cjs/extension/ExtensionRuntime.d.ts.map +0 -1
  1374. package/lib/cjs/extension/ExtensionRuntime.js +0 -60
  1375. package/lib/cjs/extension/ExtensionRuntime.js.map +0 -1
  1376. package/lib/cjs/extension/extensions.d.ts +0 -18
  1377. package/lib/cjs/extension/extensions.d.ts.map +0 -1
  1378. package/lib/cjs/extension/extensions.js +0 -35
  1379. package/lib/cjs/extension/extensions.js.map +0 -1
  1380. package/lib/cjs/tile/map/MapLayerSettingsService.d.ts +0 -39
  1381. package/lib/cjs/tile/map/MapLayerSettingsService.d.ts.map +0 -1
  1382. package/lib/cjs/tile/map/MapLayerSettingsService.js +0 -190
  1383. package/lib/cjs/tile/map/MapLayerSettingsService.js.map +0 -1
  1384. package/lib/esm/RealityDataAccessProps.d.ts +0 -44
  1385. package/lib/esm/RealityDataAccessProps.d.ts.map +0 -1
  1386. package/lib/esm/RealityDataAccessProps.js +0 -20
  1387. package/lib/esm/RealityDataAccessProps.js.map +0 -1
  1388. package/lib/esm/RealityDataConnection.d.ts +0 -31
  1389. package/lib/esm/RealityDataConnection.d.ts.map +0 -1
  1390. package/lib/esm/RealityDataConnection.js +0 -98
  1391. package/lib/esm/RealityDataConnection.js.map +0 -1
  1392. package/lib/esm/ViewportSet.d.ts +0 -28
  1393. package/lib/esm/ViewportSet.d.ts.map +0 -1
  1394. package/lib/esm/ViewportSet.js +0 -121
  1395. package/lib/esm/ViewportSet.js.map +0 -1
  1396. package/lib/esm/extension/Extension.d.ts +0 -39
  1397. package/lib/esm/extension/Extension.d.ts.map +0 -1
  1398. package/lib/esm/extension/Extension.js +0 -38
  1399. package/lib/esm/extension/Extension.js.map +0 -1
  1400. package/lib/esm/extension/ExtensionAdmin.d.ts +0 -70
  1401. package/lib/esm/extension/ExtensionAdmin.d.ts.map +0 -1
  1402. package/lib/esm/extension/ExtensionAdmin.js +0 -101
  1403. package/lib/esm/extension/ExtensionAdmin.js.map +0 -1
  1404. package/lib/esm/extension/ExtensionHost.d.ts +0 -20
  1405. package/lib/esm/extension/ExtensionHost.d.ts.map +0 -1
  1406. package/lib/esm/extension/ExtensionHost.js +0 -15
  1407. package/lib/esm/extension/ExtensionHost.js.map +0 -1
  1408. package/lib/esm/extension/ExtensionImpl.d.ts +0 -16
  1409. package/lib/esm/extension/ExtensionImpl.d.ts.map +0 -1
  1410. package/lib/esm/extension/ExtensionImpl.js +0 -35
  1411. package/lib/esm/extension/ExtensionImpl.js.map +0 -1
  1412. package/lib/esm/extension/ExtensionLoader.d.ts +0 -20
  1413. package/lib/esm/extension/ExtensionLoader.d.ts.map +0 -1
  1414. package/lib/esm/extension/ExtensionLoader.js.map +0 -1
  1415. package/lib/esm/extension/ExtensionRuntime.d.ts +0 -2
  1416. package/lib/esm/extension/ExtensionRuntime.d.ts.map +0 -1
  1417. package/lib/esm/extension/ExtensionRuntime.js +0 -58
  1418. package/lib/esm/extension/ExtensionRuntime.js.map +0 -1
  1419. package/lib/esm/extension/extensions.d.ts +0 -18
  1420. package/lib/esm/extension/extensions.d.ts.map +0 -1
  1421. package/lib/esm/extension/extensions.js +0 -23
  1422. package/lib/esm/extension/extensions.js.map +0 -1
  1423. package/lib/esm/tile/map/MapLayerSettingsService.d.ts +0 -39
  1424. package/lib/esm/tile/map/MapLayerSettingsService.d.ts.map +0 -1
  1425. package/lib/esm/tile/map/MapLayerSettingsService.js +0 -186
  1426. package/lib/esm/tile/map/MapLayerSettingsService.js.map +0 -1
@@ -6,7 +6,7 @@ exports.ArcGisUtilities = exports.ArcGisErrorCode = void 0;
6
6
  * See LICENSE.md in the project root for license terms and full copyright notice.
7
7
  *--------------------------------------------------------------------------------------------*/
8
8
  const core_geometry_1 = require("@itwin/core-geometry");
9
- const itwin_client_1 = require("@bentley/itwin-client");
9
+ const Request_1 = require("../../request/Request");
10
10
  const internal_1 = require("../internal");
11
11
  /** @packageDocumentation
12
12
  * @module Tiles
@@ -42,12 +42,15 @@ class ArcGisUtilities {
42
42
  return `${range.low.x * core_geometry_1.Angle.degreesPerRadian},${range.low.y * core_geometry_1.Angle.degreesPerRadian},${range.high.x * core_geometry_1.Angle.degreesPerRadian},${range.high.y * core_geometry_1.Angle.degreesPerRadian}`;
43
43
  }
44
44
  static async getEndpoint(url) {
45
- const capabilities = await (0, itwin_client_1.getJson)(`${url}?f=pjson`);
46
- return capabilities;
45
+ const capabilities = await (0, Request_1.request)(`${url}?f=pjson`, {
46
+ method: "GET",
47
+ responseType: "json",
48
+ });
49
+ return capabilities.body;
47
50
  }
48
51
  static async getNationalMapSources() {
49
52
  const sources = new Array();
50
- const services = await (0, itwin_client_1.getJson)("https://viewer.nationalmap.gov/tnmaccess/api/getMapServiceList");
53
+ const services = await (0, Request_1.getJson)("https://viewer.nationalmap.gov/tnmaccess/api/getMapServiceList");
51
54
  if (!Array.isArray(services))
52
55
  return sources;
53
56
  for (const service of services) {
@@ -73,7 +76,7 @@ class ArcGisUtilities {
73
76
  if (undefined === baseUrl)
74
77
  baseUrl = url;
75
78
  let sources = new Array();
76
- const json = await (0, itwin_client_1.getJson)(`${url}?f=json`);
79
+ const json = await (0, Request_1.getJson)(`${url}?f=json`);
77
80
  if (json !== undefined) {
78
81
  if (Array.isArray(json.folders)) {
79
82
  for (const folder of json.folders) {
@@ -97,7 +100,7 @@ class ArcGisUtilities {
97
100
  static async getSourcesFromQuery(range, url = "https://usgs.maps.arcgis.com/sharing/rest/search") {
98
101
  const sources = new Array();
99
102
  for (let start = 1; start > 0;) {
100
- const json = await (0, itwin_client_1.getJson)(`${url}?f=json&q=(group:9d1199a521334e77a7d15abbc29f8144) AND (type:"Map Service")&bbox=${ArcGisUtilities.getBBoxString(range)}&sortOrder=desc&start=${start}&num=100`);
103
+ const json = await (0, Request_1.getJson)(`${url}?f=json&q=(group:9d1199a521334e77a7d15abbc29f8144) AND (type:"Map Service")&bbox=${ArcGisUtilities.getBBoxString(range)}&sortOrder=desc&start=${start}&num=100`);
101
104
  if (!json)
102
105
  break;
103
106
  start = json.nextStart ? json.nextStart : -1;
@@ -112,16 +115,21 @@ class ArcGisUtilities {
112
115
  return sources;
113
116
  }
114
117
  static async validateSource(url, credentials, ignoreCache) {
118
+ let authMethod = internal_1.MapLayerAuthType.None;
115
119
  const json = await this.getServiceJson(url, credentials, ignoreCache);
116
120
  if (json === undefined) {
117
121
  return { status: internal_1.MapLayerSourceStatus.InvalidUrl };
118
122
  }
119
123
  else if (json.error !== undefined) {
124
+ // If we got a 'Token Required' error, lets check what authentification methods this ESRI service offers
125
+ // and return information needed to initiate the authentification process... the end-user
126
+ // will have to provide his credentials before we can fully validate this source.
120
127
  if (json.error.code === ArcGisErrorCode.TokenRequired) {
121
- return { status: internal_1.MapLayerSourceStatus.RequireAuth };
128
+ authMethod = internal_1.MapLayerAuthType.EsriToken;
129
+ return { status: internal_1.MapLayerSourceStatus.RequireAuth, authInfo: { authMethod, tokenEndpoint: undefined } };
122
130
  }
123
131
  else if (json.error.code === ArcGisErrorCode.InvalidCredentials)
124
- return { status: internal_1.MapLayerSourceStatus.InvalidCredentials };
132
+ return { status: internal_1.MapLayerSourceStatus.InvalidCredentials, authInfo: { authMethod: internal_1.MapLayerAuthType.EsriToken } };
125
133
  }
126
134
  let subLayers;
127
135
  if (json.layers) {
@@ -156,7 +164,7 @@ class ArcGisUtilities {
156
164
  return token; // An error occurred, return immediately
157
165
  }
158
166
  const finalUrl = `${url}?f=json${tokenParam}`;
159
- const data = await (0, itwin_client_1.request)(finalUrl, options);
167
+ const data = await (0, Request_1.request)(finalUrl, options);
160
168
  const json = (_a = data.body) !== null && _a !== void 0 ? _a : undefined;
161
169
  // Cache the response only if it doesn't contain a token error.
162
170
  if (!ArcGisUtilities.hasTokenError(data)) {
@@ -180,7 +188,7 @@ class ArcGisUtilities {
180
188
  if (token === null || token === void 0 ? void 0 : token.token)
181
189
  tokenParam = `&token=${token.token}`;
182
190
  }
183
- const json = await (0, itwin_client_1.getJson)(`${url}?f=json&option=footprints&outSR=4326${tokenParam}`);
191
+ const json = await (0, Request_1.getJson)(`${url}?f=json&option=footprints&outSR=4326${tokenParam}`);
184
192
  ArcGisUtilities._footprintCache.set(url, json);
185
193
  return json;
186
194
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ArcGisUtilities.js","sourceRoot":"","sources":["../../../../src/tile/map/ArcGisUtilities.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\nimport { Angle } from \"@itwin/core-geometry\";\r\nimport { MapSubLayerProps } from \"@itwin/core-common\";\r\nimport { getJson, request, RequestBasicCredentials, RequestOptions, Response } from \"@bentley/itwin-client\";\r\nimport {\r\n ArcGisTokenClientType, ArcGisTokenManager, MapCartoRectangle, MapLayerSource, MapLayerSourceStatus, MapLayerSourceValidation,\r\n} from \"../internal\";\r\n\r\n/** @packageDocumentation\r\n * @module Tiles\r\n */\r\n/** @internal */\r\nexport enum ArcGisErrorCode {\r\n InvalidCredentials = 401,\r\n InvalidToken = 498,\r\n TokenRequired = 499,\r\n UnknownError = 1000,\r\n NoTokenService = 1001,\r\n}\r\n\r\n/** @internal */\r\nexport class ArcGisUtilities {\r\n\r\n public static hasTokenError(response: Response): boolean {\r\n if (response.header && (response.header[\"content-type\"] as string)?.toLowerCase().includes(\"json\")) {\r\n try {\r\n // Tile response returns byte array, so we need to check the response data type and convert accordingly.\r\n const json = ((response.body instanceof ArrayBuffer) ? JSON.parse(Buffer.from(response.body).toString()) : response.body);\r\n return (json?.error?.code === ArcGisErrorCode.TokenRequired || json?.error?.code === ArcGisErrorCode.InvalidToken);\r\n } catch (_err) {\r\n return false; // that probably means we failed to convert byte array to JSON\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n private static getBBoxString(range?: MapCartoRectangle) {\r\n if (!range)\r\n range = MapCartoRectangle.create();\r\n\r\n return `${range.low.x * Angle.degreesPerRadian},${range.low.y * Angle.degreesPerRadian},${range.high.x * Angle.degreesPerRadian},${range.high.y * Angle.degreesPerRadian}`;\r\n }\r\n public static async getEndpoint(url: string): Promise<any | undefined> {\r\n const capabilities = await getJson(`${url}?f=pjson`);\r\n\r\n return capabilities;\r\n }\r\n public static async getNationalMapSources(): Promise<MapLayerSource[]> {\r\n const sources = new Array<MapLayerSource>();\r\n const services = await getJson(\"https://viewer.nationalmap.gov/tnmaccess/api/getMapServiceList\");\r\n\r\n if (!Array.isArray(services))\r\n return sources;\r\n\r\n for (const service of services) {\r\n if (service.wmsUrl.length === 0) // Exclude Wfs..\r\n continue;\r\n switch (service.serviceType) {\r\n case \"ArcGIS\":\r\n sources.push(MapLayerSource.fromJSON({ name: service.displayName, url: service.serviceLink, formatId: \"ArcGIS\" })!);\r\n break;\r\n default: {\r\n const wmsIndex = service.wmsUrl.lastIndexOf(\"/wms\");\r\n if (wmsIndex > 0) {\r\n const url = service.wmsUrl.slice(0, wmsIndex + 4);\r\n sources.push(MapLayerSource.fromJSON({ name: service.displayName, url, formatId: \"WMS\" })!);\r\n }\r\n break;\r\n }\r\n }\r\n }\r\n return sources;\r\n }\r\n public static async getServiceDirectorySources(url: string, baseUrl?: string): Promise<MapLayerSource[]> {\r\n if (undefined === baseUrl)\r\n baseUrl = url;\r\n let sources = new Array<MapLayerSource>();\r\n const json = await getJson(`${url}?f=json`);\r\n if (json !== undefined) {\r\n if (Array.isArray(json.folders)) {\r\n for (const folder of json.folders) {\r\n sources = sources.concat(await ArcGisUtilities.getServiceDirectorySources(`${url}/${folder}`, url));\r\n }\r\n }\r\n if (Array.isArray(json.services)) {\r\n for (const service of json.services) {\r\n let source;\r\n if (service.type === \"MapServer\")\r\n source = MapLayerSource.fromJSON({ name: service.name, url: `${baseUrl}/${service.name}/MapServer`, formatId: \"ArcGIS\" });\r\n else if (service.type === \"ImageServer\")\r\n source = MapLayerSource.fromJSON({ name: service.name, url: `${baseUrl}/${service.name}/ImageServer`, formatId: \"ArcGIS\" });\r\n if (source)\r\n sources.push(source);\r\n }\r\n }\r\n }\r\n\r\n return sources;\r\n }\r\n public static async getSourcesFromQuery(range?: MapCartoRectangle, url = \"https://usgs.maps.arcgis.com/sharing/rest/search\"): Promise<MapLayerSource[]> {\r\n const sources = new Array<MapLayerSource>();\r\n for (let start = 1; start > 0;) {\r\n const json = await getJson(`${url}?f=json&q=(group:9d1199a521334e77a7d15abbc29f8144) AND (type:\"Map Service\")&bbox=${ArcGisUtilities.getBBoxString(range)}&sortOrder=desc&start=${start}&num=100`);\r\n if (!json) break;\r\n start = json.nextStart ? json.nextStart : -1;\r\n if (json !== undefined && Array.isArray(json.results)) {\r\n for (const result of json.results) {\r\n const source = MapLayerSource.fromJSON({ name: result.name ? result.name : result.title, url: result.url, formatId: \"ArcGIS\" });\r\n if (source)\r\n sources.push(source);\r\n }\r\n }\r\n }\r\n\r\n return sources;\r\n }\r\n\r\n public static async validateSource(url: string, credentials?: RequestBasicCredentials, ignoreCache?: boolean): Promise<MapLayerSourceValidation> {\r\n const json = await this.getServiceJson(url, credentials, ignoreCache);\r\n if (json === undefined) {\r\n return { status: MapLayerSourceStatus.InvalidUrl };\r\n } else if (json.error !== undefined) {\r\n if (json.error.code === ArcGisErrorCode.TokenRequired) {\r\n return { status: MapLayerSourceStatus.RequireAuth };\r\n } else if (json.error.code === ArcGisErrorCode.InvalidCredentials)\r\n return { status: MapLayerSourceStatus.InvalidCredentials };\r\n }\r\n\r\n let subLayers;\r\n if (json.layers) {\r\n\r\n subLayers = new Array<MapSubLayerProps>();\r\n\r\n for (const layer of json.layers) {\r\n const parent = layer.parentLayerId < 0 ? undefined : layer.parentLayerId;\r\n const children = Array.isArray(layer.subLayerIds) ? layer.subLayerIds : undefined;\r\n subLayers.push({ name: layer.name, visible: layer.defaultVisibility !== false, id: layer.id, parent, children });\r\n }\r\n }\r\n return { status: MapLayerSourceStatus.Valid, subLayers };\r\n\r\n }\r\n private static _serviceCache = new Map<string, any>();\r\n public static async getServiceJson(url: string, credentials?: RequestBasicCredentials, ignoreCache?: boolean): Promise<any> {\r\n if (!ignoreCache) {\r\n const cached = ArcGisUtilities._serviceCache.get(url);\r\n if (cached !== undefined)\r\n return cached;\r\n }\r\n\r\n try {\r\n const options: RequestOptions = {\r\n method: \"GET\",\r\n responseType: \"json\",\r\n };\r\n let tokenParam = \"\";\r\n if (credentials) {\r\n const token = await ArcGisTokenManager.getToken(url, credentials.user, credentials.password, { client: ArcGisTokenClientType.referer });\r\n if (token?.token) {\r\n tokenParam = `&token=${token.token}`;\r\n } else if (token?.error)\r\n return token; // An error occurred, return immediately\r\n }\r\n const finalUrl = `${url}?f=json${tokenParam}`;\r\n const data = await request(finalUrl, options);\r\n const json = data.body ?? undefined;\r\n\r\n // Cache the response only if it doesn't contain a token error.\r\n if (!ArcGisUtilities.hasTokenError(data)) {\r\n ArcGisUtilities._serviceCache.set(url, json);\r\n }\r\n\r\n return json;\r\n } catch (_error) {\r\n ArcGisUtilities._serviceCache.set(url, undefined);\r\n return undefined;\r\n }\r\n }\r\n\r\n private static _footprintCache = new Map<string, any>();\r\n public static async getFootprintJson(url: string, credentials?: RequestBasicCredentials): Promise<any> {\r\n const cached = ArcGisUtilities._footprintCache.get(url);\r\n if (cached !== undefined)\r\n return cached;\r\n\r\n try {\r\n let tokenParam = \"\";\r\n if (credentials) {\r\n const token = await ArcGisTokenManager.getToken(url, credentials.user, credentials.password, { client: ArcGisTokenClientType.referer });\r\n if (token?.token)\r\n tokenParam = `&token=${token.token}`;\r\n }\r\n const json = await getJson(`${url}?f=json&option=footprints&outSR=4326${tokenParam}`);\r\n ArcGisUtilities._footprintCache.set(url, json);\r\n return json;\r\n } catch (_error) {\r\n ArcGisUtilities._footprintCache.set(url, undefined);\r\n return undefined;\r\n }\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"ArcGisUtilities.js","sourceRoot":"","sources":["../../../../src/tile/map/ArcGisUtilities.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\nimport { Angle } from \"@itwin/core-geometry\";\r\nimport { MapSubLayerProps } from \"@itwin/core-common\";\r\nimport { getJson, request, RequestBasicCredentials, RequestOptions, Response } from \"../../request/Request\";\r\nimport {\r\n ArcGisTokenClientType, ArcGisTokenManager, MapCartoRectangle, MapLayerAuthType, MapLayerSource, MapLayerSourceStatus, MapLayerSourceValidation,\r\n} from \"../internal\";\r\n\r\n/** @packageDocumentation\r\n * @module Tiles\r\n */\r\n/** @internal */\r\nexport enum ArcGisErrorCode {\r\n InvalidCredentials = 401,\r\n InvalidToken = 498,\r\n TokenRequired = 499,\r\n UnknownError = 1000,\r\n NoTokenService = 1001,\r\n}\r\n\r\n/** @internal */\r\nexport class ArcGisUtilities {\r\n\r\n public static hasTokenError(response: Response): boolean {\r\n if (response.header && (response.header[\"content-type\"] as string)?.toLowerCase().includes(\"json\")) {\r\n try {\r\n // Tile response returns byte array, so we need to check the response data type and convert accordingly.\r\n const json = ((response.body instanceof ArrayBuffer) ? JSON.parse(Buffer.from(response.body).toString()) : response.body);\r\n return (json?.error?.code === ArcGisErrorCode.TokenRequired || json?.error?.code === ArcGisErrorCode.InvalidToken);\r\n } catch (_err) {\r\n return false; // that probably means we failed to convert byte array to JSON\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n private static getBBoxString(range?: MapCartoRectangle) {\r\n if (!range)\r\n range = MapCartoRectangle.create();\r\n\r\n return `${range.low.x * Angle.degreesPerRadian},${range.low.y * Angle.degreesPerRadian},${range.high.x * Angle.degreesPerRadian},${range.high.y * Angle.degreesPerRadian}`;\r\n }\r\n public static async getEndpoint(url: string): Promise<any | undefined> {\r\n const capabilities = await request(`${url}?f=pjson`, {\r\n method: \"GET\",\r\n responseType: \"json\",\r\n });\r\n return capabilities.body;\r\n }\r\n\r\n public static async getNationalMapSources(): Promise<MapLayerSource[]> {\r\n const sources = new Array<MapLayerSource>();\r\n const services = await getJson(\"https://viewer.nationalmap.gov/tnmaccess/api/getMapServiceList\");\r\n\r\n if (!Array.isArray(services))\r\n return sources;\r\n\r\n for (const service of services) {\r\n if (service.wmsUrl.length === 0) // Exclude Wfs..\r\n continue;\r\n switch (service.serviceType) {\r\n case \"ArcGIS\":\r\n sources.push(MapLayerSource.fromJSON({ name: service.displayName, url: service.serviceLink, formatId: \"ArcGIS\" })!);\r\n break;\r\n default: {\r\n const wmsIndex = service.wmsUrl.lastIndexOf(\"/wms\");\r\n if (wmsIndex > 0) {\r\n const url = service.wmsUrl.slice(0, wmsIndex + 4);\r\n sources.push(MapLayerSource.fromJSON({ name: service.displayName, url, formatId: \"WMS\" })!);\r\n }\r\n break;\r\n }\r\n }\r\n }\r\n return sources;\r\n }\r\n public static async getServiceDirectorySources(url: string, baseUrl?: string): Promise<MapLayerSource[]> {\r\n if (undefined === baseUrl)\r\n baseUrl = url;\r\n let sources = new Array<MapLayerSource>();\r\n const json = await getJson(`${url}?f=json`);\r\n if (json !== undefined) {\r\n if (Array.isArray(json.folders)) {\r\n for (const folder of json.folders) {\r\n sources = sources.concat(await ArcGisUtilities.getServiceDirectorySources(`${url}/${folder}`, url));\r\n }\r\n }\r\n if (Array.isArray(json.services)) {\r\n for (const service of json.services) {\r\n let source;\r\n if (service.type === \"MapServer\")\r\n source = MapLayerSource.fromJSON({ name: service.name, url: `${baseUrl}/${service.name}/MapServer`, formatId: \"ArcGIS\" });\r\n else if (service.type === \"ImageServer\")\r\n source = MapLayerSource.fromJSON({ name: service.name, url: `${baseUrl}/${service.name}/ImageServer`, formatId: \"ArcGIS\" });\r\n if (source)\r\n sources.push(source);\r\n }\r\n }\r\n }\r\n\r\n return sources;\r\n }\r\n public static async getSourcesFromQuery(range?: MapCartoRectangle, url = \"https://usgs.maps.arcgis.com/sharing/rest/search\"): Promise<MapLayerSource[]> {\r\n const sources = new Array<MapLayerSource>();\r\n for (let start = 1; start > 0;) {\r\n const json = await getJson(`${url}?f=json&q=(group:9d1199a521334e77a7d15abbc29f8144) AND (type:\"Map Service\")&bbox=${ArcGisUtilities.getBBoxString(range)}&sortOrder=desc&start=${start}&num=100`);\r\n if (!json) break;\r\n start = json.nextStart ? json.nextStart : -1;\r\n if (json !== undefined && Array.isArray(json.results)) {\r\n for (const result of json.results) {\r\n const source = MapLayerSource.fromJSON({ name: result.name ? result.name : result.title, url: result.url, formatId: \"ArcGIS\" });\r\n if (source)\r\n sources.push(source);\r\n }\r\n }\r\n }\r\n\r\n return sources;\r\n }\r\n\r\n public static async validateSource(url: string, credentials?: RequestBasicCredentials, ignoreCache?: boolean): Promise<MapLayerSourceValidation> {\r\n\r\n let authMethod: MapLayerAuthType = MapLayerAuthType.None;\r\n\r\n const json = await this.getServiceJson(url, credentials, ignoreCache);\r\n if (json === undefined) {\r\n return { status: MapLayerSourceStatus.InvalidUrl };\r\n } else if (json.error !== undefined) {\r\n\r\n // If we got a 'Token Required' error, lets check what authentification methods this ESRI service offers\r\n // and return information needed to initiate the authentification process... the end-user\r\n // will have to provide his credentials before we can fully validate this source.\r\n if (json.error.code === ArcGisErrorCode.TokenRequired) {\r\n authMethod = MapLayerAuthType.EsriToken;\r\n return { status: MapLayerSourceStatus.RequireAuth, authInfo: { authMethod, tokenEndpoint: undefined } };\r\n } else if (json.error.code === ArcGisErrorCode.InvalidCredentials)\r\n return { status: MapLayerSourceStatus.InvalidCredentials, authInfo: { authMethod: MapLayerAuthType.EsriToken } };\r\n }\r\n\r\n let subLayers;\r\n if (json.layers) {\r\n\r\n subLayers = new Array<MapSubLayerProps>();\r\n\r\n for (const layer of json.layers) {\r\n const parent = layer.parentLayerId < 0 ? undefined : layer.parentLayerId;\r\n const children = Array.isArray(layer.subLayerIds) ? layer.subLayerIds : undefined;\r\n subLayers.push({ name: layer.name, visible: layer.defaultVisibility !== false, id: layer.id, parent, children });\r\n }\r\n }\r\n return { status: MapLayerSourceStatus.Valid, subLayers };\r\n }\r\n\r\n private static _serviceCache = new Map<string, any>();\r\n public static async getServiceJson(url: string, credentials?: RequestBasicCredentials, ignoreCache?: boolean): Promise<any> {\r\n if (!ignoreCache) {\r\n const cached = ArcGisUtilities._serviceCache.get(url);\r\n if (cached !== undefined)\r\n return cached;\r\n }\r\n\r\n try {\r\n const options: RequestOptions = {\r\n method: \"GET\",\r\n responseType: \"json\",\r\n };\r\n let tokenParam = \"\";\r\n if (credentials) {\r\n const token = await ArcGisTokenManager.getToken(url, credentials.user, credentials.password, { client: ArcGisTokenClientType.referer });\r\n if (token?.token) {\r\n tokenParam = `&token=${token.token}`;\r\n } else if (token?.error)\r\n return token; // An error occurred, return immediately\r\n }\r\n const finalUrl = `${url}?f=json${tokenParam}`;\r\n const data = await request(finalUrl, options);\r\n const json = data.body ?? undefined;\r\n\r\n // Cache the response only if it doesn't contain a token error.\r\n if (!ArcGisUtilities.hasTokenError(data)) {\r\n ArcGisUtilities._serviceCache.set(url, json);\r\n }\r\n\r\n return json;\r\n } catch (_error) {\r\n ArcGisUtilities._serviceCache.set(url, undefined);\r\n return undefined;\r\n }\r\n }\r\n\r\n private static _footprintCache = new Map<string, any>();\r\n public static async getFootprintJson(url: string, credentials?: RequestBasicCredentials): Promise<any> {\r\n const cached = ArcGisUtilities._footprintCache.get(url);\r\n if (cached !== undefined)\r\n return cached;\r\n\r\n try {\r\n let tokenParam = \"\";\r\n if (credentials) {\r\n const token = await ArcGisTokenManager.getToken(url, credentials.user, credentials.password, { client: ArcGisTokenClientType.referer });\r\n if (token?.token)\r\n tokenParam = `&token=${token.token}`;\r\n }\r\n const json = await getJson(`${url}?f=json&option=footprints&outSR=4326${tokenParam}`);\r\n ArcGisUtilities._footprintCache.set(url, json);\r\n return json;\r\n } catch (_error) {\r\n ArcGisUtilities._footprintCache.set(url, undefined);\r\n return undefined;\r\n }\r\n }\r\n}\r\n"]}
@@ -10,7 +10,7 @@ exports.BingElevationProvider = void 0;
10
10
  */
11
11
  const core_geometry_1 = require("@itwin/core-geometry");
12
12
  const core_common_1 = require("@itwin/core-common");
13
- const itwin_client_1 = require("@bentley/itwin-client");
13
+ const Request_1 = require("../../request/Request");
14
14
  const IModelApp_1 = require("../../IModelApp");
15
15
  const MeshPrimitives_1 = require("../../render/primitives/mesh/MeshPrimitives");
16
16
  const DisplayParams_1 = require("../../render/primitives/DisplayParams");
@@ -42,7 +42,7 @@ class BingElevationProvider {
42
42
  const requestUrl = this._heightListRequestTemplate.replace("{points}", `${carto.latitudeDegrees},${carto.longitudeDegrees}`).replace("{heights}", geodetic ? "ellipsoid" : "sealevel");
43
43
  const requestOptions = { method: "GET", responseType: "json" };
44
44
  try {
45
- const tileResponse = await (0, itwin_client_1.request)(requestUrl, requestOptions);
45
+ const tileResponse = await (0, Request_1.request)(requestUrl, requestOptions);
46
46
  return tileResponse.body.resourceSets[0].resources[0].elevations[0];
47
47
  }
48
48
  catch (error) {
@@ -55,7 +55,7 @@ class BingElevationProvider {
55
55
  const requestUrl = this._heightRangeRequestTemplate.replace("{boundingBox}", boundingBox);
56
56
  const tileRequestOptions = { method: "GET", responseType: "json" };
57
57
  try {
58
- const tileResponse = await (0, itwin_client_1.request)(requestUrl, tileRequestOptions);
58
+ const tileResponse = await (0, Request_1.request)(requestUrl, tileRequestOptions);
59
59
  return tileResponse.body.resourceSets[0].resources[0].elevations;
60
60
  }
61
61
  catch (error) {
@@ -70,7 +70,7 @@ class BingElevationProvider {
70
70
  const requestUrl = this._seaLevelOffsetRequestTemplate.replace("{points}", `${carto.latitudeDegrees},${carto.longitudeDegrees}`);
71
71
  const requestOptions = { method: "GET", responseType: "json" };
72
72
  try {
73
- const tileResponse = await (0, itwin_client_1.request)(requestUrl, requestOptions);
73
+ const tileResponse = await (0, Request_1.request)(requestUrl, requestOptions);
74
74
  return tileResponse.body.resourceSets[0].resources[0].offsets[0];
75
75
  }
76
76
  catch (error) {
@@ -1 +1 @@
1
- {"version":3,"file":"BingElevation.js","sourceRoot":"","sources":["../../../../src/tile/map/BingElevation.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n\r\n/** @packageDocumentation\r\n * @module Tiles\r\n */\r\nimport { BilinearPatch, Point2d, Point3d, Range1d, Range2d, Range3d } from \"@itwin/core-geometry\";\r\nimport { Cartographic, ColorDef, FillFlags, LinePixels, QParams3d, QPoint3d, RenderTexture, TextureMapping } from \"@itwin/core-common\";\r\nimport { request, RequestOptions, Response } from \"@bentley/itwin-client\";\r\nimport { IModelApp } from \"../../IModelApp\";\r\nimport { IModelConnection } from \"../../IModelConnection\";\r\nimport { Mesh, MeshArgs } from \"../../render/primitives/mesh/MeshPrimitives\";\r\nimport { DisplayParams } from \"../../render/primitives/DisplayParams\";\r\nimport { Triangle } from \"../../render/primitives/Primitives\";\r\nimport { VertexKey } from \"../../render/primitives/VertexKey\";\r\nimport { MeshParams } from \"../../render/primitives/VertexTable\";\r\nimport { RenderGraphic } from \"../../render/RenderGraphic\";\r\nimport { RenderSystem } from \"../../render/RenderSystem\";\r\n\r\n// cspell:ignore atae qdng uyzv auje sealevel\r\n\r\n/** Provides an interface to the [Bing Maps elevation services](https://docs.microsoft.com/en-us/bingmaps/rest-services/elevations/).\r\n * @public\r\n */\r\nexport class BingElevationProvider {\r\n private static _scratchRange = Range3d.createNull();\r\n private static _scratchVertex = Point3d.createZero();\r\n private static _scratchQParams = QParams3d.fromRange(BingElevationProvider._scratchRange);\r\n private static _scratchQPoint = QPoint3d.create(BingElevationProvider._scratchVertex, BingElevationProvider._scratchQParams);\r\n private static _scratchMeshArgs = new MeshArgs();\r\n private static _scratchUV = Point2d.createZero();\r\n private static _scratchPoint = Point3d.createZero();\r\n\r\n private _heightRangeRequestTemplate: string;\r\n private _seaLevelOffsetRequestTemplate: string;\r\n private _heightListRequestTemplate: string;\r\n\r\n /** @public */\r\n constructor() {\r\n let bingKey = \"\";\r\n if (IModelApp.mapLayerFormatRegistry.configOptions.BingMaps) {\r\n bingKey = IModelApp.mapLayerFormatRegistry.configOptions.BingMaps.value;\r\n }\r\n this._heightRangeRequestTemplate = \"https://dev.virtualearth.net/REST/v1/Elevation/Bounds?bounds={boundingBox}&rows=16&cols=16&heights=ellipsoid&key={BingMapsAPIKey}\".replace(\"{BingMapsAPIKey}\", bingKey);\r\n this._seaLevelOffsetRequestTemplate = \"https://dev.virtualearth.net/REST/v1/Elevation/SeaLevel?points={points}&key={BingMapsAPIKey}\".replace(\"{BingMapsAPIKey}\", bingKey);\r\n this._heightListRequestTemplate = \"https://dev.virtualearth.net/REST/v1/Elevation/List?points={points}&heights={heights}&key={BingMapsAPIKey}\".replace(\"{BingMapsAPIKey}\", bingKey);\r\n }\r\n\r\n /** Return the height (altitude) at a given cartographic location.\r\n * If geodetic is true (the default) then height is returned in the Ellipsoidal WGS84 datum. If geodetic is false then the sea level height id returned using the Earth Gravitational Model 2008 (EGM2008 2.5’).\r\n * @public\r\n */\r\n public async getHeight(carto: Cartographic, geodetic = true) {\r\n if (undefined === carto)\r\n return 0.0;\r\n const requestUrl = this._heightListRequestTemplate.replace(\"{points}\", `${carto.latitudeDegrees},${carto.longitudeDegrees}`).replace(\"{heights}\", geodetic ? \"ellipsoid\" : \"sealevel\");\r\n const requestOptions: RequestOptions = { method: \"GET\", responseType: \"json\" };\r\n try {\r\n const tileResponse: Response = await request(requestUrl, requestOptions);\r\n return tileResponse.body.resourceSets[0].resources[0].elevations[0];\r\n } catch (error) {\r\n return 0.0;\r\n }\r\n }\r\n /** @internal */\r\n private async getHeights(range: Range2d) {\r\n const boundingBox = `${range.low.y},${range.low.x},${range.high.y},${range.high.x}`;\r\n const requestUrl = this._heightRangeRequestTemplate.replace(\"{boundingBox}\", boundingBox);\r\n const tileRequestOptions: RequestOptions = { method: \"GET\", responseType: \"json\" };\r\n try {\r\n const tileResponse: Response = await request(requestUrl, tileRequestOptions);\r\n return tileResponse.body.resourceSets[0].resources[0].elevations;\r\n } catch (error) {\r\n return undefined;\r\n }\r\n }\r\n /** @internal */\r\n public async getGeodeticToSeaLevelOffset(point: Point3d, iModel: IModelConnection): Promise<number> {\r\n const carto = iModel.spatialToCartographicFromEcef(point);\r\n if (carto === undefined)\r\n return 0.0;\r\n const requestUrl = this._seaLevelOffsetRequestTemplate.replace(\"{points}\", `${carto.latitudeDegrees},${carto.longitudeDegrees}`);\r\n const requestOptions: RequestOptions = { method: \"GET\", responseType: \"json\" };\r\n try {\r\n const tileResponse: Response = await request(requestUrl, requestOptions);\r\n return tileResponse.body.resourceSets[0].resources[0].offsets[0];\r\n } catch (error) {\r\n return 0.0;\r\n }\r\n }\r\n /** Get the height (altitude) at a given iModel coordinate. The height is geodetic (WGS84 ellipsoid)\r\n * If geodetic is true (the default) then height is returned in the Ellipsoidal WGS84 datum. If geodetic is false then sea level height is returned using the Earth Gravitational Model 2008 (EGM2008 2.5’).\r\n *\r\n * @public\r\n */\r\n public async getHeightValue(point: Point3d, iModel: IModelConnection, geodetic = true): Promise<number> {\r\n return this.getHeight(iModel.spatialToCartographicFromEcef(point), geodetic);\r\n }\r\n\r\n /** Get the height (altitude) range for a given iModel project extents. The height values are geodetic (WGS84 ellipsoid).\r\n * @public\r\n */\r\n public async getHeightRange(iModel: IModelConnection) {\r\n const latLongRange = Range2d.createNull();\r\n const range = iModel.projectExtents.clone();\r\n range.expandInPlace(1000.); // Expand for project surroundings.\r\n for (const corner of range.corners()) {\r\n const carto = iModel.spatialToCartographicFromEcef(corner);\r\n latLongRange.extendXY(carto.longitudeDegrees, carto.latitudeDegrees);\r\n }\r\n const heights = await this.getHeights(latLongRange);\r\n return Range1d.createArray(heights);\r\n }\r\n\r\n /** Get the average height (altitude) for a given iModel project extents. The height values are geodetic (WGS84 ellipsoid).\r\n * @public\r\n */\r\n public async getHeightAverage(iModel: IModelConnection) {\r\n const latLongRange = Range2d.createNull();\r\n for (const corner of iModel.projectExtents.corners()) {\r\n const carto = iModel.spatialToCartographicFromEcef(corner);\r\n latLongRange.extendXY(carto.longitudeDegrees, carto.latitudeDegrees);\r\n }\r\n const heights = await this.getHeights(latLongRange);\r\n let total = 0.0;\r\n for (const height of heights) total += height;\r\n return total / heights.length;\r\n }\r\n /** @internal */\r\n public async getGraphic(latLongRange: Range2d, corners: Point3d[], groundBias: number, texture: RenderTexture, system: RenderSystem): Promise<RenderGraphic | undefined> {\r\n const heights = await this.getHeights(latLongRange);\r\n if (undefined === heights)\r\n return undefined;\r\n\r\n const patch = new BilinearPatch(corners[0], corners[1], corners[2], corners[3]);\r\n const textureParams = new TextureMapping.Params({ mapMode: TextureMapping.Mode.Parametric });\r\n const textureMapping = new TextureMapping(texture, textureParams);\r\n const displayParams = new DisplayParams(DisplayParams.Type.Mesh, ColorDef.white, ColorDef.white, 0.0, LinePixels.Solid, FillFlags.None, undefined, undefined, false, textureMapping);\r\n BingElevationProvider._scratchRange.setNull();\r\n BingElevationProvider._scratchRange.extendArray(corners);\r\n BingElevationProvider._scratchRange.low.z = 10E8;\r\n BingElevationProvider._scratchRange.high.z = -1.0E8;\r\n\r\n for (const height of heights) {\r\n BingElevationProvider._scratchRange.low.z = Math.min(BingElevationProvider._scratchRange.low.z, height);\r\n BingElevationProvider._scratchRange.high.z = Math.max(BingElevationProvider._scratchRange.high.z, height);\r\n }\r\n\r\n BingElevationProvider._scratchRange.low.z += groundBias;\r\n BingElevationProvider._scratchRange.high.z += groundBias;\r\n\r\n BingElevationProvider._scratchQParams.setFromRange(BingElevationProvider._scratchRange);\r\n const mesh = Mesh.create({ displayParams, type: Mesh.PrimitiveType.Mesh, range: BingElevationProvider._scratchRange, isPlanar: false, is2d: false });\r\n const size = 16;\r\n const sizeM1 = size - 1;\r\n const triangle0 = new Triangle(false), triangle1 = new Triangle(false);\r\n for (let row = 0; row < sizeM1; row++) {\r\n const thisRowIndex = row * size;\r\n const nextRowIndex = thisRowIndex + size;\r\n for (let col = 0; col < size - 1; col++) {\r\n const q0 = thisRowIndex + col, q1 = q0 + 1, q3 = nextRowIndex + col, q2 = q3 + 1;\r\n triangle0.setIndices(q0, q1, q2);\r\n triangle1.setIndices(q0, q2, q3);\r\n mesh.addTriangle(triangle0);\r\n mesh.addTriangle(triangle1);\r\n }\r\n }\r\n BingElevationProvider._scratchUV.y = 0.0;\r\n const delta = 1.0 / sizeM1;\r\n for (let row = 0; row < size; row++, BingElevationProvider._scratchUV.y += delta) {\r\n BingElevationProvider._scratchUV.x = 0;\r\n for (let col = 0; col < size; col++, BingElevationProvider._scratchUV.x += delta) {\r\n patch.uvFractionToPoint(BingElevationProvider._scratchUV.x, BingElevationProvider._scratchUV.y, BingElevationProvider._scratchPoint);\r\n BingElevationProvider._scratchPoint.z = groundBias + heights[(sizeM1 - row) * size + col];\r\n BingElevationProvider._scratchQPoint.init(BingElevationProvider._scratchPoint, BingElevationProvider._scratchQParams);\r\n mesh.addVertex(VertexKey.create({ position: BingElevationProvider._scratchQPoint, fillColor: 0xffffff, uvParam: BingElevationProvider._scratchUV }));\r\n }\r\n }\r\n BingElevationProvider._scratchMeshArgs.init(mesh);\r\n return system.createMesh(MeshParams.create(BingElevationProvider._scratchMeshArgs));\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"BingElevation.js","sourceRoot":"","sources":["../../../../src/tile/map/BingElevation.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n\r\n/** @packageDocumentation\r\n * @module Tiles\r\n */\r\nimport { BilinearPatch, Point2d, Point3d, Range1d, Range2d, Range3d } from \"@itwin/core-geometry\";\r\nimport { Cartographic, ColorDef, FillFlags, LinePixels, QParams3d, QPoint3d, RenderTexture, TextureMapping } from \"@itwin/core-common\";\r\nimport { request, RequestOptions, Response } from \"../../request/Request\";\r\nimport { IModelApp } from \"../../IModelApp\";\r\nimport { IModelConnection } from \"../../IModelConnection\";\r\nimport { Mesh, MeshArgs } from \"../../render/primitives/mesh/MeshPrimitives\";\r\nimport { DisplayParams } from \"../../render/primitives/DisplayParams\";\r\nimport { Triangle } from \"../../render/primitives/Primitives\";\r\nimport { VertexKey } from \"../../render/primitives/VertexKey\";\r\nimport { MeshParams } from \"../../render/primitives/VertexTable\";\r\nimport { RenderGraphic } from \"../../render/RenderGraphic\";\r\nimport { RenderSystem } from \"../../render/RenderSystem\";\r\n\r\n// cspell:ignore atae qdng uyzv auje sealevel\r\n\r\n/** Provides an interface to the [Bing Maps elevation services](https://docs.microsoft.com/en-us/bingmaps/rest-services/elevations/).\r\n * @public\r\n */\r\nexport class BingElevationProvider {\r\n private static _scratchRange = Range3d.createNull();\r\n private static _scratchVertex = Point3d.createZero();\r\n private static _scratchQParams = QParams3d.fromRange(BingElevationProvider._scratchRange);\r\n private static _scratchQPoint = QPoint3d.create(BingElevationProvider._scratchVertex, BingElevationProvider._scratchQParams);\r\n private static _scratchMeshArgs = new MeshArgs();\r\n private static _scratchUV = Point2d.createZero();\r\n private static _scratchPoint = Point3d.createZero();\r\n\r\n private _heightRangeRequestTemplate: string;\r\n private _seaLevelOffsetRequestTemplate: string;\r\n private _heightListRequestTemplate: string;\r\n\r\n /** @public */\r\n constructor() {\r\n let bingKey = \"\";\r\n if (IModelApp.mapLayerFormatRegistry.configOptions.BingMaps) {\r\n bingKey = IModelApp.mapLayerFormatRegistry.configOptions.BingMaps.value;\r\n }\r\n this._heightRangeRequestTemplate = \"https://dev.virtualearth.net/REST/v1/Elevation/Bounds?bounds={boundingBox}&rows=16&cols=16&heights=ellipsoid&key={BingMapsAPIKey}\".replace(\"{BingMapsAPIKey}\", bingKey);\r\n this._seaLevelOffsetRequestTemplate = \"https://dev.virtualearth.net/REST/v1/Elevation/SeaLevel?points={points}&key={BingMapsAPIKey}\".replace(\"{BingMapsAPIKey}\", bingKey);\r\n this._heightListRequestTemplate = \"https://dev.virtualearth.net/REST/v1/Elevation/List?points={points}&heights={heights}&key={BingMapsAPIKey}\".replace(\"{BingMapsAPIKey}\", bingKey);\r\n }\r\n\r\n /** Return the height (altitude) at a given cartographic location.\r\n * If geodetic is true (the default) then height is returned in the Ellipsoidal WGS84 datum. If geodetic is false then the sea level height id returned using the Earth Gravitational Model 2008 (EGM2008 2.5’).\r\n * @public\r\n */\r\n public async getHeight(carto: Cartographic, geodetic = true) {\r\n if (undefined === carto)\r\n return 0.0;\r\n const requestUrl = this._heightListRequestTemplate.replace(\"{points}\", `${carto.latitudeDegrees},${carto.longitudeDegrees}`).replace(\"{heights}\", geodetic ? \"ellipsoid\" : \"sealevel\");\r\n const requestOptions: RequestOptions = { method: \"GET\", responseType: \"json\" };\r\n try {\r\n const tileResponse: Response = await request(requestUrl, requestOptions);\r\n return tileResponse.body.resourceSets[0].resources[0].elevations[0];\r\n } catch (error) {\r\n return 0.0;\r\n }\r\n }\r\n /** @internal */\r\n private async getHeights(range: Range2d) {\r\n const boundingBox = `${range.low.y},${range.low.x},${range.high.y},${range.high.x}`;\r\n const requestUrl = this._heightRangeRequestTemplate.replace(\"{boundingBox}\", boundingBox);\r\n const tileRequestOptions: RequestOptions = { method: \"GET\", responseType: \"json\" };\r\n try {\r\n const tileResponse: Response = await request(requestUrl, tileRequestOptions);\r\n return tileResponse.body.resourceSets[0].resources[0].elevations;\r\n } catch (error) {\r\n return undefined;\r\n }\r\n }\r\n /** @internal */\r\n public async getGeodeticToSeaLevelOffset(point: Point3d, iModel: IModelConnection): Promise<number> {\r\n const carto = iModel.spatialToCartographicFromEcef(point);\r\n if (carto === undefined)\r\n return 0.0;\r\n const requestUrl = this._seaLevelOffsetRequestTemplate.replace(\"{points}\", `${carto.latitudeDegrees},${carto.longitudeDegrees}`);\r\n const requestOptions: RequestOptions = { method: \"GET\", responseType: \"json\" };\r\n try {\r\n const tileResponse: Response = await request(requestUrl, requestOptions);\r\n return tileResponse.body.resourceSets[0].resources[0].offsets[0];\r\n } catch (error) {\r\n return 0.0;\r\n }\r\n }\r\n /** Get the height (altitude) at a given iModel coordinate. The height is geodetic (WGS84 ellipsoid)\r\n * If geodetic is true (the default) then height is returned in the Ellipsoidal WGS84 datum. If geodetic is false then sea level height is returned using the Earth Gravitational Model 2008 (EGM2008 2.5’).\r\n *\r\n * @public\r\n */\r\n public async getHeightValue(point: Point3d, iModel: IModelConnection, geodetic = true): Promise<number> {\r\n return this.getHeight(iModel.spatialToCartographicFromEcef(point), geodetic);\r\n }\r\n\r\n /** Get the height (altitude) range for a given iModel project extents. The height values are geodetic (WGS84 ellipsoid).\r\n * @public\r\n */\r\n public async getHeightRange(iModel: IModelConnection) {\r\n const latLongRange = Range2d.createNull();\r\n const range = iModel.projectExtents.clone();\r\n range.expandInPlace(1000.); // Expand for project surroundings.\r\n for (const corner of range.corners()) {\r\n const carto = iModel.spatialToCartographicFromEcef(corner);\r\n latLongRange.extendXY(carto.longitudeDegrees, carto.latitudeDegrees);\r\n }\r\n const heights = await this.getHeights(latLongRange);\r\n return Range1d.createArray(heights);\r\n }\r\n\r\n /** Get the average height (altitude) for a given iModel project extents. The height values are geodetic (WGS84 ellipsoid).\r\n * @public\r\n */\r\n public async getHeightAverage(iModel: IModelConnection) {\r\n const latLongRange = Range2d.createNull();\r\n for (const corner of iModel.projectExtents.corners()) {\r\n const carto = iModel.spatialToCartographicFromEcef(corner);\r\n latLongRange.extendXY(carto.longitudeDegrees, carto.latitudeDegrees);\r\n }\r\n const heights = await this.getHeights(latLongRange);\r\n let total = 0.0;\r\n for (const height of heights) total += height;\r\n return total / heights.length;\r\n }\r\n /** @internal */\r\n public async getGraphic(latLongRange: Range2d, corners: Point3d[], groundBias: number, texture: RenderTexture, system: RenderSystem): Promise<RenderGraphic | undefined> {\r\n const heights = await this.getHeights(latLongRange);\r\n if (undefined === heights)\r\n return undefined;\r\n\r\n const patch = new BilinearPatch(corners[0], corners[1], corners[2], corners[3]);\r\n const textureParams = new TextureMapping.Params({ mapMode: TextureMapping.Mode.Parametric });\r\n const textureMapping = new TextureMapping(texture, textureParams);\r\n const displayParams = new DisplayParams(DisplayParams.Type.Mesh, ColorDef.white, ColorDef.white, 0.0, LinePixels.Solid, FillFlags.None, undefined, undefined, false, textureMapping);\r\n BingElevationProvider._scratchRange.setNull();\r\n BingElevationProvider._scratchRange.extendArray(corners);\r\n BingElevationProvider._scratchRange.low.z = 10E8;\r\n BingElevationProvider._scratchRange.high.z = -1.0E8;\r\n\r\n for (const height of heights) {\r\n BingElevationProvider._scratchRange.low.z = Math.min(BingElevationProvider._scratchRange.low.z, height);\r\n BingElevationProvider._scratchRange.high.z = Math.max(BingElevationProvider._scratchRange.high.z, height);\r\n }\r\n\r\n BingElevationProvider._scratchRange.low.z += groundBias;\r\n BingElevationProvider._scratchRange.high.z += groundBias;\r\n\r\n BingElevationProvider._scratchQParams.setFromRange(BingElevationProvider._scratchRange);\r\n const mesh = Mesh.create({ displayParams, type: Mesh.PrimitiveType.Mesh, range: BingElevationProvider._scratchRange, isPlanar: false, is2d: false });\r\n const size = 16;\r\n const sizeM1 = size - 1;\r\n const triangle0 = new Triangle(false), triangle1 = new Triangle(false);\r\n for (let row = 0; row < sizeM1; row++) {\r\n const thisRowIndex = row * size;\r\n const nextRowIndex = thisRowIndex + size;\r\n for (let col = 0; col < size - 1; col++) {\r\n const q0 = thisRowIndex + col, q1 = q0 + 1, q3 = nextRowIndex + col, q2 = q3 + 1;\r\n triangle0.setIndices(q0, q1, q2);\r\n triangle1.setIndices(q0, q2, q3);\r\n mesh.addTriangle(triangle0);\r\n mesh.addTriangle(triangle1);\r\n }\r\n }\r\n BingElevationProvider._scratchUV.y = 0.0;\r\n const delta = 1.0 / sizeM1;\r\n for (let row = 0; row < size; row++, BingElevationProvider._scratchUV.y += delta) {\r\n BingElevationProvider._scratchUV.x = 0;\r\n for (let col = 0; col < size; col++, BingElevationProvider._scratchUV.x += delta) {\r\n patch.uvFractionToPoint(BingElevationProvider._scratchUV.x, BingElevationProvider._scratchUV.y, BingElevationProvider._scratchPoint);\r\n BingElevationProvider._scratchPoint.z = groundBias + heights[(sizeM1 - row) * size + col];\r\n BingElevationProvider._scratchQPoint.init(BingElevationProvider._scratchPoint, BingElevationProvider._scratchQParams);\r\n mesh.addVertex(VertexKey.create({ position: BingElevationProvider._scratchQPoint, fillColor: 0xffffff, uvParam: BingElevationProvider._scratchUV }));\r\n }\r\n }\r\n BingElevationProvider._scratchMeshArgs.init(mesh);\r\n return system.createMesh(MeshParams.create(BingElevationProvider._scratchMeshArgs));\r\n }\r\n}\r\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"CesiumTerrainProvider.d.ts","sourceRoot":"","sources":["../../../../src/tile/map/CesiumTerrainProvider.ts"],"names":[],"mappings":"AAKA;;GAEG;AACH,OAAO,EAA+C,UAAU,EAA2B,MAAM,qBAAqB,CAAC;AAMvH,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAE1D,OAAO,EAC2F,mBAAmB,EACpH,MAAM,aAAa,CAAC;AASrB;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,CAEhF;AACD,gBAAgB;AAChB,wBAAgB,wBAAwB,IAAI,MAAM,GAAG,SAAS,CAO7D;AAED,gBAAgB;AAChB,wBAAsB,kCAAkC,CAAC,OAAO,SAAI,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAuBpI;AAED,gBAAgB;AAChB,wBAAsB,wBAAwB,CAAC,MAAM,EAAE,gBAAgB,EAAE,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,GAAG,SAAS,CAAC,CA8CvM"}
1
+ {"version":3,"file":"CesiumTerrainProvider.d.ts","sourceRoot":"","sources":["../../../../src/tile/map/CesiumTerrainProvider.ts"],"names":[],"mappings":"AAKA;;GAEG;AACH,OAAO,EAA+C,UAAU,EAA2B,MAAM,qBAAqB,CAAC;AAOvH,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAE1D,OAAO,EAC2F,mBAAmB,EACpH,MAAM,aAAa,CAAC;AASrB;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,CAEhF;AACD,gBAAgB;AAChB,wBAAgB,wBAAwB,IAAI,MAAM,GAAG,SAAS,CAO7D;AAED,gBAAgB;AAChB,wBAAsB,kCAAkC,CAAC,OAAO,SAAI,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAuBpI;AAaD,gBAAgB;AAChB,wBAAsB,wBAAwB,CAAC,MAAM,EAAE,gBAAgB,EAAE,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,GAAG,SAAS,CAAC,CAiDvM"}
@@ -11,7 +11,8 @@ exports.getCesiumTerrainProvider = exports.getCesiumAccessTokenAndEndpointUrl =
11
11
  const core_bentley_1 = require("@itwin/core-bentley");
12
12
  const core_geometry_1 = require("@itwin/core-geometry");
13
13
  const core_common_1 = require("@itwin/core-common");
14
- const itwin_client_1 = require("@bentley/itwin-client");
14
+ const appui_abstract_1 = require("@itwin/appui-abstract");
15
+ const Request_1 = require("../../request/Request");
15
16
  const ApproximateTerrainHeights_1 = require("../../ApproximateTerrainHeights");
16
17
  const IModelApp_1 = require("../../IModelApp");
17
18
  const TerrainMeshPrimitive_1 = require("../../render/primitives/mesh/TerrainMeshPrimitive");
@@ -50,7 +51,7 @@ async function getCesiumAccessTokenAndEndpointUrl(assetId = 1, requestKey) {
50
51
  const apiUrl = requestTemplate.replace("{CesiumRequestToken}", requestKey);
51
52
  const apiRequestOptions = { method: "GET", responseType: "json" };
52
53
  try {
53
- const apiResponse = await (0, itwin_client_1.request)(apiUrl, apiRequestOptions);
54
+ const apiResponse = await (0, Request_1.request)(apiUrl, apiRequestOptions);
54
55
  if (undefined === apiResponse || undefined === apiResponse.body || undefined === apiResponse.body.url) {
55
56
  (0, core_bentley_1.assert)(false);
56
57
  return {};
@@ -63,28 +64,38 @@ async function getCesiumAccessTokenAndEndpointUrl(assetId = 1, requestKey) {
63
64
  }
64
65
  }
65
66
  exports.getCesiumAccessTokenAndEndpointUrl = getCesiumAccessTokenAndEndpointUrl;
67
+ let notifiedTerrainError = false;
68
+ // Notify - once per session - of failure to obtain Cesium terrain provider.
69
+ function notifyTerrainError(detailedDescription) {
70
+ if (notifiedTerrainError)
71
+ return;
72
+ notifiedTerrainError = true;
73
+ IModelApp_1.IModelApp.notifications.displayMessage(appui_abstract_1.MessageSeverity.Information, IModelApp_1.IModelApp.localization.getLocalizedString(`BackgroundMap.CannotObtainTerrain`), detailedDescription);
74
+ }
66
75
  /** @internal */
67
76
  async function getCesiumTerrainProvider(iModel, modelId, wantSkirts, wantNormals, exaggeration) {
68
- let layers;
69
77
  const accessTokenAndEndpointUrl = await getCesiumAccessTokenAndEndpointUrl();
70
- if (!accessTokenAndEndpointUrl.token || !accessTokenAndEndpointUrl.url)
78
+ if (!accessTokenAndEndpointUrl.token || !accessTokenAndEndpointUrl.url) {
79
+ notifyTerrainError(IModelApp_1.IModelApp.localization.getLocalizedString(`BackgroundMap.MissingCesiumToken`));
71
80
  return undefined;
81
+ }
82
+ let layers;
72
83
  try {
73
84
  const layerRequestOptions = { method: "GET", responseType: "json", headers: { authorization: `Bearer ${accessTokenAndEndpointUrl.token}` } };
74
85
  const layerUrl = `${accessTokenAndEndpointUrl.url}layer.json`;
75
- const layerResponse = await (0, itwin_client_1.request)(layerUrl, layerRequestOptions);
86
+ const layerResponse = await (0, Request_1.request)(layerUrl, layerRequestOptions);
76
87
  if (undefined === layerResponse) {
77
- (0, core_bentley_1.assert)(false);
88
+ notifyTerrainError();
78
89
  return undefined;
79
90
  }
80
91
  layers = layerResponse.body;
81
92
  }
82
93
  catch (error) {
83
- (0, core_bentley_1.assert)(false);
94
+ notifyTerrainError();
84
95
  return undefined;
85
96
  }
86
97
  if (undefined === layers.tiles || undefined === layers.version) {
87
- (0, core_bentley_1.assert)(false);
98
+ notifyTerrainError();
88
99
  return undefined;
89
100
  }
90
101
  const tilingScheme = new internal_1.GeographicTilingScheme();
@@ -160,17 +171,18 @@ class CesiumTerrainProvider extends internal_1.TerrainMeshProvider {
160
171
  }
161
172
  forceTileLoad(tile) {
162
173
  // Force loading of the metadata availability tiles as these are required for determining the availability of descendants.
163
- return undefined !== this._metaDataAvailableLevel && tile.depth === 1 + this._metaDataAvailableLevel && !tile.everLoaded;
174
+ const mapTile = tile;
175
+ return undefined !== this._metaDataAvailableLevel && mapTile.quadId.level === this._metaDataAvailableLevel && !mapTile.everLoaded;
164
176
  }
165
177
  getLogo() {
166
- return IModelApp_1.IModelApp.makeLogoCard({ iconSrc: "images/cesium-ion.svg", heading: "Cesium Ion", notice: IModelApp_1.IModelApp.localization.getLocalizedString("iModelJs:BackgroundMap.CesiumWorldTerrainAttribution") });
178
+ return IModelApp_1.IModelApp.makeLogoCard({ iconSrc: `${IModelApp_1.IModelApp.publicPath}images/cesium-ion.svg`, heading: "Cesium Ion", notice: IModelApp_1.IModelApp.localization.getLocalizedString("iModelJs:BackgroundMap.CesiumWorldTerrainAttribution") });
167
179
  }
168
180
  get maxDepth() { return this._maxDepth; }
169
181
  get tilingScheme() { return this._tilingScheme; }
170
182
  isTileAvailable(quadId) {
171
183
  if (quadId.level > this.maxDepth)
172
184
  return false;
173
- return this._tileAvailability ? this._tileAvailability.isTileAvailable(quadId.level - 1, quadId.column, quadId.row) : true;
185
+ return this._tileAvailability ? this._tileAvailability.isTileAvailable(quadId.level, quadId.column, quadId.row) : true;
174
186
  }
175
187
  async getMesh(tile, data) {
176
188
  if (core_bentley_1.BeTimePoint.now().milliseconds > this._tokenTimeOut.milliseconds) {
@@ -185,10 +197,10 @@ class CesiumTerrainProvider extends internal_1.TerrainMeshProvider {
185
197
  (0, core_bentley_1.assert)(data instanceof Uint8Array);
186
198
  (0, core_bentley_1.assert)(tile instanceof internal_1.MapTile);
187
199
  const blob = data;
188
- const streamBuffer = new core_bentley_1.ByteStream(blob.buffer);
200
+ const streamBuffer = core_bentley_1.ByteStream.fromUint8Array(blob);
189
201
  const center = (0, core_common_1.nextPoint3d64FromByteStream)(streamBuffer);
190
202
  const quadId = internal_1.QuadId.createFromContentId(tile.contentId);
191
- const skirtHeight = this.getLevelMaximumGeometricError(quadId.level) * 10.0;
203
+ const skirtHeight = this.getLevelMaximumGeometricError(quadId.level + 1) * 10.0; // Add 1 to level to restore height calculation to before the quadId level was from root. (4326 unification)
192
204
  const minHeight = this._exaggeration * streamBuffer.nextFloat32;
193
205
  const maxHeight = this._exaggeration * streamBuffer.nextFloat32;
194
206
  const boundCenter = (0, core_common_1.nextPoint3d64FromByteStream)(streamBuffer);
@@ -336,10 +348,10 @@ class CesiumTerrainProvider extends internal_1.TerrainMeshProvider {
336
348
  return { method: "GET", responseType: "arraybuffer", headers: { authorization: `Bearer ${this._accessToken}` }, accept: "application/vnd.quantized-mesh;" /* extensions=octvertexnormals, */ + "application/octet-stream;q=0.9,*/*;q=0.01" };
337
349
  }
338
350
  constructUrl(row, column, zoomLevel) {
339
- return this._tileUrlTemplate.replace("{z}", (zoomLevel - 1).toString()).replace("{x}", column.toString()).replace("{y}", row.toString());
351
+ return this._tileUrlTemplate.replace("{z}", zoomLevel.toString()).replace("{x}", column.toString()).replace("{y}", row.toString());
340
352
  }
341
353
  getChildHeightRange(quadId, rectangle, parent) {
342
- return (quadId.level <= ApproximateTerrainHeights_1.ApproximateTerrainHeights.maxLevel) ? ApproximateTerrainHeights_1.ApproximateTerrainHeights.instance.getMinimumMaximumHeights(rectangle) : (parent).heightRange;
354
+ return (quadId.level < ApproximateTerrainHeights_1.ApproximateTerrainHeights.maxLevel) ? ApproximateTerrainHeights_1.ApproximateTerrainHeights.instance.getMinimumMaximumHeights(rectangle) : (parent).heightRange;
343
355
  }
344
356
  /**
345
357
  * Determines an appropriate geometric error estimate when the geometry comes from a heightmap.
@@ -1 +1 @@
1
- {"version":3,"file":"CesiumTerrainProvider.js","sourceRoot":"","sources":["../../../../src/tile/map/CesiumTerrainProvider.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n\r\n/** @packageDocumentation\r\n * @module Tiles\r\n */\r\nimport { assert, BeDuration, BeTimePoint, ByteStream, Id64String, JsonUtils, utf8ToString } from \"@itwin/core-bentley\";\r\nimport { Point2d, Point3d, Range1d, Vector3d } from \"@itwin/core-geometry\";\r\nimport { nextPoint3d64FromByteStream, OctEncodedNormal, QParams3d, QPoint2d } from \"@itwin/core-common\";\r\nimport { request, RequestOptions } from \"@bentley/itwin-client\";\r\nimport { ApproximateTerrainHeights } from \"../../ApproximateTerrainHeights\";\r\nimport { IModelApp } from \"../../IModelApp\";\r\nimport { IModelConnection } from \"../../IModelConnection\";\r\nimport { TerrainMeshPrimitive } from \"../../render/primitives/mesh/TerrainMeshPrimitive\";\r\nimport {\r\n GeographicTilingScheme, MapCartoRectangle, MapTile, MapTileProjection, MapTilingScheme, QuadId, TerrainMeshProvider, Tile, TileAvailability,\r\n} from \"../internal\";\r\n\r\n/** @internal */\r\nenum QuantizedMeshExtensionIds {\r\n OctEncodedNormals = 1,\r\n WaterMask = 2,\r\n Metadata = 4,\r\n}\r\n\r\n/** Return the URL for a Cesium ION asset from its asset ID and request Key.\r\n * @public\r\n */\r\nexport function getCesiumAssetUrl(osmAssetId: number, requestKey: string): string {\r\n return `$CesiumIonAsset=${osmAssetId}:${requestKey}`;\r\n}\r\n/** @internal */\r\nexport function getCesiumOSMBuildingsUrl(): string | undefined {\r\n const key = IModelApp.tileAdmin.cesiumIonKey;\r\n if (undefined === key)\r\n return undefined;\r\n\r\n const osmBuildingAssetId = 96188;\r\n return getCesiumAssetUrl(osmBuildingAssetId, key);\r\n}\r\n\r\n/** @internal */\r\nexport async function getCesiumAccessTokenAndEndpointUrl(assetId = 1, requestKey?: string): Promise<{ token?: string, url?: string }> {\r\n\r\n if (undefined === requestKey) {\r\n requestKey = IModelApp.tileAdmin.cesiumIonKey;\r\n if (undefined === requestKey)\r\n return {};\r\n }\r\n\r\n const requestTemplate = `https://api.cesium.com/v1/assets/${assetId}/endpoint?access_token={CesiumRequestToken}`;\r\n const apiUrl: string = requestTemplate.replace(\"{CesiumRequestToken}\", requestKey);\r\n const apiRequestOptions: RequestOptions = { method: \"GET\", responseType: \"json\" };\r\n\r\n try {\r\n const apiResponse = await request(apiUrl, apiRequestOptions);\r\n if (undefined === apiResponse || undefined === apiResponse.body || undefined === apiResponse.body.url) {\r\n assert(false);\r\n return {};\r\n }\r\n return { token: apiResponse.body.accessToken, url: apiResponse.body.url };\r\n } catch (error) {\r\n assert(false);\r\n return {};\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport async function getCesiumTerrainProvider(iModel: IModelConnection, modelId: Id64String, wantSkirts: boolean, wantNormals: boolean, exaggeration: number): Promise<TerrainMeshProvider | undefined> {\r\n let layers;\r\n\r\n const accessTokenAndEndpointUrl = await getCesiumAccessTokenAndEndpointUrl();\r\n if (!accessTokenAndEndpointUrl.token || !accessTokenAndEndpointUrl.url)\r\n return undefined;\r\n\r\n try {\r\n const layerRequestOptions: RequestOptions = { method: \"GET\", responseType: \"json\", headers: { authorization: `Bearer ${accessTokenAndEndpointUrl.token}` } };\r\n const layerUrl = `${accessTokenAndEndpointUrl.url}layer.json`;\r\n const layerResponse = await request(layerUrl, layerRequestOptions);\r\n if (undefined === layerResponse) {\r\n assert(false);\r\n return undefined;\r\n }\r\n layers = layerResponse.body;\r\n\r\n } catch (error) {\r\n assert(false);\r\n return undefined;\r\n }\r\n if (undefined === layers.tiles || undefined === layers.version) {\r\n assert(false);\r\n return undefined;\r\n }\r\n const tilingScheme = new GeographicTilingScheme();\r\n let tileAvailability;\r\n if (undefined !== layers.available) {\r\n const availableTiles = layers.available;\r\n tileAvailability = new TileAvailability(tilingScheme, availableTiles.length);\r\n for (let level = 0; level < layers.available.length; level++) {\r\n const rangesAtLevel = availableTiles[level];\r\n for (const range of rangesAtLevel) {\r\n tileAvailability.addAvailableTileRange(level, range.startX, range.startY, range.endX, range.endY);\r\n }\r\n }\r\n }\r\n\r\n let tileUrlTemplate = accessTokenAndEndpointUrl.url + layers.tiles[0].replace(\"{version}\", layers.version);\r\n if (wantNormals)\r\n tileUrlTemplate = tileUrlTemplate.replace(\"?\", \"?extensions=octvertexnormals-watermask-metadata&\");\r\n\r\n const maxDepth = JsonUtils.asInt(layers.maxzoom, 19);\r\n\r\n // TBD -- When we have an API extract the heights for the project from the terrain tiles - for use temporary Bing elevation.\r\n return new CesiumTerrainProvider(iModel, modelId, accessTokenAndEndpointUrl.token, tileUrlTemplate, maxDepth, wantSkirts, tilingScheme, tileAvailability, layers.metadataAvailability, exaggeration);\r\n}\r\nfunction zigZagDecode(value: number) {\r\n return (value >> 1) ^ (-(value & 1));\r\n}\r\n/**\r\n * Decodes delta and ZigZag encoded vertices. This modifies the buffers in place.\r\n *\r\n * @see {@link https://github.com/AnalyticalGraphicsInc/quantized-mesh|quantized-mesh-1.0 terrain format}\r\n */\r\nfunction zigZagDeltaDecode(uBuffer: Uint16Array, vBuffer: Uint16Array, heightBuffer: Uint16Array) {\r\n const count = uBuffer.length;\r\n let u = 0;\r\n let v = 0;\r\n let height = 0;\r\n\r\n for (let i = 0; i < count; ++i) {\r\n u += zigZagDecode(uBuffer[i]);\r\n v += zigZagDecode(vBuffer[i]);\r\n\r\n uBuffer[i] = u;\r\n vBuffer[i] = v;\r\n\r\n height += zigZagDecode(heightBuffer[i]);\r\n heightBuffer[i] = height;\r\n }\r\n}\r\n\r\nfunction getIndexArray(vertexCount: number, streamBuffer: ByteStream, indexCount: number): Uint16Array | Uint32Array {\r\n const indicesAre32Bit = vertexCount > 64 * 1024;\r\n const indexArray = (indicesAre32Bit) ? new Uint32Array(streamBuffer.arrayBuffer, streamBuffer.curPos, indexCount) : new Uint16Array(streamBuffer.arrayBuffer, streamBuffer.curPos, indexCount);\r\n streamBuffer.advance(indexCount * (indicesAre32Bit ? Uint32Array.BYTES_PER_ELEMENT : Uint16Array.BYTES_PER_ELEMENT));\r\n return indexArray;\r\n}\r\n\r\n/** @internal */\r\nclass CesiumTerrainProvider extends TerrainMeshProvider {\r\n private static _scratchQPoint2d = QPoint2d.fromScalars(0, 0);\r\n private static _scratchPoint2d = Point2d.createZero();\r\n private static _scratchPoint = Point3d.createZero();\r\n private static _scratchNormal = Vector3d.createZero();\r\n private static _scratchHeightRange = Range1d.createNull();\r\n private static _tokenTimeoutInterval = BeDuration.fromSeconds(60 * 30); // Request a new access token every 30 minutes...\r\n private _tokenTimeOut: BeTimePoint;\r\n\r\n public override forceTileLoad(tile: Tile): boolean {\r\n // Force loading of the metadata availability tiles as these are required for determining the availability of descendants.\r\n return undefined !== this._metaDataAvailableLevel && tile.depth === 1 + this._metaDataAvailableLevel && !(tile as MapTile).everLoaded;\r\n }\r\n\r\n constructor(iModel: IModelConnection, modelId: Id64String, private _accessToken: string, private _tileUrlTemplate: string,\r\n private _maxDepth: number, private readonly _wantSkirts: boolean, private _tilingScheme: MapTilingScheme, private _tileAvailability: TileAvailability | undefined, private _metaDataAvailableLevel: number | undefined, private _exaggeration: number) {\r\n super(iModel, modelId);\r\n this._tokenTimeOut = BeTimePoint.now().plus(CesiumTerrainProvider._tokenTimeoutInterval);\r\n }\r\n\r\n public override getLogo(): HTMLTableRowElement {\r\n return IModelApp.makeLogoCard({ iconSrc: \"images/cesium-ion.svg\", heading: \"Cesium Ion\", notice: IModelApp.localization.getLocalizedString(\"iModelJs:BackgroundMap.CesiumWorldTerrainAttribution\") });\r\n }\r\n\r\n public get maxDepth(): number { return this._maxDepth; }\r\n public get tilingScheme(): MapTilingScheme { return this._tilingScheme; }\r\n\r\n public isTileAvailable(quadId: QuadId) {\r\n if (quadId.level > this.maxDepth)\r\n return false;\r\n\r\n return this._tileAvailability ? this._tileAvailability.isTileAvailable(quadId.level - 1, quadId.column, quadId.row) : true;\r\n }\r\n\r\n public override async getMesh(tile: MapTile, data: Uint8Array): Promise<TerrainMeshPrimitive | undefined> {\r\n if (BeTimePoint.now().milliseconds > this._tokenTimeOut.milliseconds) {\r\n const accessTokenAndEndpointUrl = await getCesiumAccessTokenAndEndpointUrl();\r\n if (!accessTokenAndEndpointUrl.token) {\r\n assert(false);\r\n return undefined;\r\n }\r\n\r\n this._accessToken = accessTokenAndEndpointUrl.token;\r\n this._tokenTimeOut = BeTimePoint.now().plus(CesiumTerrainProvider._tokenTimeoutInterval);\r\n }\r\n\r\n assert(data instanceof Uint8Array);\r\n assert(tile instanceof MapTile);\r\n const blob = data;\r\n const streamBuffer = new ByteStream(blob.buffer);\r\n const center = nextPoint3d64FromByteStream(streamBuffer);\r\n const quadId = QuadId.createFromContentId(tile.contentId);\r\n const skirtHeight = this.getLevelMaximumGeometricError(quadId.level) * 10.0;\r\n const minHeight = this._exaggeration * streamBuffer.nextFloat32;\r\n const maxHeight = this._exaggeration * streamBuffer.nextFloat32;\r\n const boundCenter = nextPoint3d64FromByteStream(streamBuffer);\r\n const boundRadius = streamBuffer.nextFloat64;\r\n const horizonOcclusion = nextPoint3d64FromByteStream(streamBuffer);\r\n const terrainTile = tile;\r\n\r\n terrainTile.adjustHeights(minHeight, maxHeight);\r\n\r\n if (undefined === center || undefined === boundCenter || undefined === boundRadius || undefined === horizonOcclusion) { }\r\n const pointCount = streamBuffer.nextUint32;\r\n const encodedVertexBuffer = new Uint16Array(blob.buffer, streamBuffer.curPos, pointCount * 3);\r\n streamBuffer.advance(pointCount * 6);\r\n\r\n const uBuffer = encodedVertexBuffer.subarray(0, pointCount);\r\n const vBuffer = encodedVertexBuffer.subarray(pointCount, 2 * pointCount);\r\n const heightBuffer = encodedVertexBuffer.subarray(pointCount * 2, 3 * pointCount);\r\n\r\n zigZagDeltaDecode(uBuffer, vBuffer, heightBuffer);\r\n\r\n let bytesPerIndex = Uint16Array.BYTES_PER_ELEMENT;\r\n const triangleElements = 3;\r\n\r\n if (pointCount > 64 * 1024) {\r\n // More than 64k vertices, so indices are 32-bit.\r\n bytesPerIndex = Uint32Array.BYTES_PER_ELEMENT;\r\n }\r\n\r\n // skip over any additional padding that was added for 2/4 byte alignment\r\n if (streamBuffer.curPos % bytesPerIndex !== 0)\r\n streamBuffer.advance(bytesPerIndex - (streamBuffer.curPos % bytesPerIndex));\r\n\r\n const triangleCount = streamBuffer.nextUint32;\r\n const indexCount = triangleCount * triangleElements;\r\n\r\n const indices = getIndexArray(pointCount, streamBuffer, indexCount);\r\n // High water mark decoding based on decompressIndices_ in webgl-loader's loader.js.\r\n // https://code.google.com/p/webgl-loader/source/browse/trunk/samples/loader.js?r=99#55\r\n // Copyright 2012 Google Inc., Apache 2.0 license.\r\n let highest = 0;\r\n const length = indices.length;\r\n for (let i = 0; i < length; ++i) {\r\n const code = indices[i];\r\n indices[i] = highest - code;\r\n if (code === 0) {\r\n ++highest;\r\n }\r\n }\r\n\r\n CesiumTerrainProvider._scratchHeightRange.low = minHeight - skirtHeight;\r\n CesiumTerrainProvider._scratchHeightRange.high = maxHeight;\r\n const projection = terrainTile.getProjection(CesiumTerrainProvider._scratchHeightRange);\r\n const pointQParams = QParams3d.fromRange(projection.localRange);\r\n\r\n const uvScale = 1.0 / 32767.0;\r\n const heightScale = uvScale * (maxHeight - minHeight);\r\n\r\n const westCount = streamBuffer.nextUint32;\r\n const westIndices = getIndexArray(pointCount, streamBuffer, westCount);\r\n\r\n const southCount = streamBuffer.nextUint32;\r\n const southIndices = getIndexArray(pointCount, streamBuffer, southCount);\r\n\r\n const eastCount = streamBuffer.nextUint32;\r\n const eastIndices = getIndexArray(pointCount, streamBuffer, eastCount);\r\n\r\n const northCount = streamBuffer.nextUint32;\r\n const northIndices = getIndexArray(pointCount, streamBuffer, northCount);\r\n\r\n // Extensions...\r\n let encodedNormalsBuffer;\r\n while (streamBuffer.curPos < streamBuffer.length) {\r\n const extensionId = streamBuffer.nextUint8;\r\n const extensionLength = streamBuffer.nextUint32;\r\n switch (extensionId) {\r\n case QuantizedMeshExtensionIds.OctEncodedNormals:\r\n assert(pointCount * 2 === extensionLength);\r\n encodedNormalsBuffer = new Uint8Array(streamBuffer.arrayBuffer, streamBuffer.curPos, extensionLength);\r\n streamBuffer.advance(extensionLength);\r\n break;\r\n\r\n case QuantizedMeshExtensionIds.Metadata:\r\n const stringLength = streamBuffer.nextUint32;\r\n if (stringLength > 0) {\r\n const strData = streamBuffer.nextBytes(stringLength);\r\n const str = utf8ToString(strData);\r\n if (undefined !== str) {\r\n const metaData = JSON.parse(str);\r\n if (undefined !== metaData.available && undefined !== this._tileAvailability) {\r\n const availableTiles = metaData.available;\r\n for (let offset = 0; offset < availableTiles.length; ++offset) {\r\n const availableLevel = tile.depth + offset; // Our depth is includes root (1 + cesium Depth)\r\n const rangesAtLevel = availableTiles[offset];\r\n\r\n for (const range of rangesAtLevel)\r\n this._tileAvailability.addAvailableTileRange(availableLevel, range.startX, range.startY, range.endX, range.endY);\r\n }\r\n }\r\n }\r\n }\r\n\r\n break;\r\n default:\r\n streamBuffer.advance(extensionLength);\r\n break;\r\n }\r\n\r\n }\r\n\r\n const mesh = TerrainMeshPrimitive.create({ pointQParams, pointCount, indexCount, wantSkirts: this._wantSkirts, westCount, eastCount, southCount, northCount, wantNormals: undefined !== encodedNormalsBuffer });\r\n for (let i = 0; i < indexCount;)\r\n this.addTriangle(mesh, indices[i++], indices[i++], indices[i++]);\r\n\r\n const worldToEcef = tile.iModel.getEcefTransform().matrix;\r\n for (let i = 0; i < pointCount; i++) {\r\n const u = uBuffer[i];\r\n const v = vBuffer[i];\r\n projection.getPoint(uvScale * u, uvScale * v, minHeight + heightBuffer[i] * heightScale, CesiumTerrainProvider._scratchPoint);\r\n CesiumTerrainProvider._scratchQPoint2d.setFromScalars(u * 2, v * 2);\r\n if (encodedNormalsBuffer) {\r\n const normalIndex = i * 2;\r\n OctEncodedNormal.decodeValue(encodedNormalsBuffer[normalIndex + 1] << 8 | encodedNormalsBuffer[normalIndex], CesiumTerrainProvider._scratchNormal);\r\n worldToEcef.multiplyTransposeVector(CesiumTerrainProvider._scratchNormal, CesiumTerrainProvider._scratchNormal);\r\n mesh.addVertex(CesiumTerrainProvider._scratchPoint, CesiumTerrainProvider._scratchQPoint2d, OctEncodedNormal.encode(CesiumTerrainProvider._scratchNormal));\r\n } else {\r\n mesh.addVertex(CesiumTerrainProvider._scratchPoint, CesiumTerrainProvider._scratchQPoint2d);\r\n }\r\n }\r\n\r\n if (this._wantSkirts) {\r\n westIndices.sort((a, b) => vBuffer[a] - vBuffer[b]);\r\n eastIndices.sort((a, b) => vBuffer[a] - vBuffer[b]);\r\n northIndices.sort((a, b) => uBuffer[a] - uBuffer[b]);\r\n southIndices.sort((a, b) => uBuffer[a] - uBuffer[b]);\r\n const wantNormals = (encodedNormalsBuffer !== undefined);\r\n this.generateSkirts(mesh, westIndices, projection, -skirtHeight, heightBuffer, minHeight, heightScale, wantNormals);\r\n this.generateSkirts(mesh, eastIndices, projection, -skirtHeight, heightBuffer, minHeight, heightScale, wantNormals);\r\n this.generateSkirts(mesh, southIndices, projection, -skirtHeight, heightBuffer, minHeight, heightScale, wantNormals);\r\n this.generateSkirts(mesh, northIndices, projection, -skirtHeight, heightBuffer, minHeight, heightScale, wantNormals);\r\n }\r\n assert(mesh.isCompleted);\r\n return mesh;\r\n }\r\n\r\n private addTriangle(mesh: TerrainMeshPrimitive, i0: number, i1: number, i2: number) {\r\n mesh.addTriangle(i0, i1, i2);\r\n }\r\n\r\n private generateSkirts(mesh: TerrainMeshPrimitive, indices: Uint16Array | Uint32Array, projection: MapTileProjection, skirtOffset: number, heightBuffer: Uint16Array, minHeight: number, heightScale: number, wantNormals: boolean) {\r\n for (let i = 0; i < indices.length; i++) {\r\n const index = indices[i];\r\n const paramIndex = index * 2;\r\n const height = minHeight + heightBuffer[index] * heightScale;\r\n CesiumTerrainProvider._scratchQPoint2d.setFromScalars(mesh.uvs[paramIndex], mesh.uvs[paramIndex + 1]);\r\n const uv = mesh.uvQParams.unquantize(CesiumTerrainProvider._scratchQPoint2d.x, CesiumTerrainProvider._scratchQPoint2d.y, CesiumTerrainProvider._scratchPoint2d);\r\n if (wantNormals && mesh.normals) {\r\n mesh.addVertex(projection.getPoint(uv.x, uv.y, height + skirtOffset), CesiumTerrainProvider._scratchQPoint2d, mesh.normals[index]);\r\n } else {\r\n mesh.addVertex(projection.getPoint(uv.x, uv.y, height + skirtOffset), CesiumTerrainProvider._scratchQPoint2d);\r\n }\r\n\r\n if (i) {\r\n this.addTriangle(mesh, index, indices[i - 1], mesh.nextPointIndex - 2);\r\n this.addTriangle(mesh, index, mesh.nextPointIndex - 2, mesh.nextPointIndex - 1);\r\n }\r\n }\r\n }\r\n public override get requestOptions(): RequestOptions {\r\n return { method: \"GET\", responseType: \"arraybuffer\", headers: { authorization: `Bearer ${this._accessToken}` }, accept: \"application/vnd.quantized-mesh;\" /* extensions=octvertexnormals, */ + \"application/octet-stream;q=0.9,*/*;q=0.01\" };\r\n }\r\n\r\n public override constructUrl(row: number, column: number, zoomLevel: number): string {\r\n return this._tileUrlTemplate.replace(\"{z}\", (zoomLevel - 1).toString()).replace(\"{x}\", column.toString()).replace(\"{y}\", row.toString());\r\n }\r\n\r\n public getChildHeightRange(quadId: QuadId, rectangle: MapCartoRectangle, parent: MapTile): Range1d | undefined {\r\n return (quadId.level <= ApproximateTerrainHeights.maxLevel) ? ApproximateTerrainHeights.instance.getMinimumMaximumHeights(rectangle) : (parent).heightRange;\r\n }\r\n /**\r\n * Specifies the quality of terrain created from heightmaps. A value of 1.0 will\r\n * ensure that adjacent heightmap vertices are separated by no more than\r\n * screen pixels and will probably go very slowly.\r\n * A value of 0.5 will cut the estimated level zero geometric error in half, allowing twice the\r\n * screen pixels between adjacent heightmap vertices and thus rendering more quickly.\r\n * @type {Number}\r\n */\r\n public readonly heightmapTerrainQuality = 0.25;\r\n\r\n /**\r\n * Determines an appropriate geometric error estimate when the geometry comes from a heightmap.\r\n *\r\n * @param {Ellipsoid} ellipsoid The ellipsoid to which the terrain is attached.\r\n * @param {Number} tileImageWidth The width, in pixels, of the heightmap associated with a single tile.\r\n * @param {Number} numberOfTilesAtLevelZero The number of tiles in the horizontal direction at tile level zero.\r\n * @returns {Number} An estimated geometric error.\r\n */\r\n public getEstimatedLevelZeroGeometricErrorForAHeightmap(ellipsoidMaximumRadius = 6378137, tileImageWidth = 65, numberOfTilesAtLevelZero = 2) {\r\n return ellipsoidMaximumRadius * 2 * Math.PI * this.heightmapTerrainQuality / (tileImageWidth * numberOfTilesAtLevelZero);\r\n }\r\n\r\n public getLevelMaximumGeometricError(level: number) {\r\n return this.getEstimatedLevelZeroGeometricErrorForAHeightmap() / (1 << level);\r\n }\r\n\r\n public getHeightRange(parentRange: Range1d, quadId: QuadId): Range1d {\r\n const heightRange = quadId.level <= 6 ? ApproximateTerrainHeights.instance.getTileHeightRange(quadId) : undefined;\r\n\r\n return undefined === heightRange ? parentRange : heightRange;\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"CesiumTerrainProvider.js","sourceRoot":"","sources":["../../../../src/tile/map/CesiumTerrainProvider.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n\r\n/** @packageDocumentation\r\n * @module Tiles\r\n */\r\nimport { assert, BeDuration, BeTimePoint, ByteStream, Id64String, JsonUtils, utf8ToString } from \"@itwin/core-bentley\";\r\nimport { Point2d, Point3d, Range1d, Vector3d } from \"@itwin/core-geometry\";\r\nimport { nextPoint3d64FromByteStream, OctEncodedNormal, QParams3d, QPoint2d } from \"@itwin/core-common\";\r\nimport { MessageSeverity } from \"@itwin/appui-abstract\";\r\nimport { request, RequestOptions } from \"../../request/Request\";\r\nimport { ApproximateTerrainHeights } from \"../../ApproximateTerrainHeights\";\r\nimport { IModelApp } from \"../../IModelApp\";\r\nimport { IModelConnection } from \"../../IModelConnection\";\r\nimport { TerrainMeshPrimitive } from \"../../render/primitives/mesh/TerrainMeshPrimitive\";\r\nimport {\r\n GeographicTilingScheme, MapCartoRectangle, MapTile, MapTileProjection, MapTilingScheme, QuadId, TerrainMeshProvider, Tile, TileAvailability,\r\n} from \"../internal\";\r\n\r\n/** @internal */\r\nenum QuantizedMeshExtensionIds {\r\n OctEncodedNormals = 1,\r\n WaterMask = 2,\r\n Metadata = 4,\r\n}\r\n\r\n/** Return the URL for a Cesium ION asset from its asset ID and request Key.\r\n * @public\r\n */\r\nexport function getCesiumAssetUrl(osmAssetId: number, requestKey: string): string {\r\n return `$CesiumIonAsset=${osmAssetId}:${requestKey}`;\r\n}\r\n/** @internal */\r\nexport function getCesiumOSMBuildingsUrl(): string | undefined {\r\n const key = IModelApp.tileAdmin.cesiumIonKey;\r\n if (undefined === key)\r\n return undefined;\r\n\r\n const osmBuildingAssetId = 96188;\r\n return getCesiumAssetUrl(osmBuildingAssetId, key);\r\n}\r\n\r\n/** @internal */\r\nexport async function getCesiumAccessTokenAndEndpointUrl(assetId = 1, requestKey?: string): Promise<{ token?: string, url?: string }> {\r\n\r\n if (undefined === requestKey) {\r\n requestKey = IModelApp.tileAdmin.cesiumIonKey;\r\n if (undefined === requestKey)\r\n return {};\r\n }\r\n\r\n const requestTemplate = `https://api.cesium.com/v1/assets/${assetId}/endpoint?access_token={CesiumRequestToken}`;\r\n const apiUrl: string = requestTemplate.replace(\"{CesiumRequestToken}\", requestKey);\r\n const apiRequestOptions: RequestOptions = { method: \"GET\", responseType: \"json\" };\r\n\r\n try {\r\n const apiResponse = await request(apiUrl, apiRequestOptions);\r\n if (undefined === apiResponse || undefined === apiResponse.body || undefined === apiResponse.body.url) {\r\n assert(false);\r\n return {};\r\n }\r\n return { token: apiResponse.body.accessToken, url: apiResponse.body.url };\r\n } catch (error) {\r\n assert(false);\r\n return {};\r\n }\r\n}\r\n\r\nlet notifiedTerrainError = false;\r\n\r\n// Notify - once per session - of failure to obtain Cesium terrain provider.\r\nfunction notifyTerrainError(detailedDescription?: string): void {\r\n if (notifiedTerrainError)\r\n return;\r\n\r\n notifiedTerrainError = true;\r\n IModelApp.notifications.displayMessage(MessageSeverity.Information, IModelApp.localization.getLocalizedString(`BackgroundMap.CannotObtainTerrain`), detailedDescription);\r\n}\r\n\r\n/** @internal */\r\nexport async function getCesiumTerrainProvider(iModel: IModelConnection, modelId: Id64String, wantSkirts: boolean, wantNormals: boolean, exaggeration: number): Promise<TerrainMeshProvider | undefined> {\r\n const accessTokenAndEndpointUrl = await getCesiumAccessTokenAndEndpointUrl();\r\n if (!accessTokenAndEndpointUrl.token || !accessTokenAndEndpointUrl.url) {\r\n notifyTerrainError(IModelApp.localization.getLocalizedString(`BackgroundMap.MissingCesiumToken`));\r\n return undefined;\r\n }\r\n\r\n let layers;\r\n try {\r\n const layerRequestOptions: RequestOptions = { method: \"GET\", responseType: \"json\", headers: { authorization: `Bearer ${accessTokenAndEndpointUrl.token}` } };\r\n const layerUrl = `${accessTokenAndEndpointUrl.url}layer.json`;\r\n const layerResponse = await request(layerUrl, layerRequestOptions);\r\n if (undefined === layerResponse) {\r\n notifyTerrainError();\r\n return undefined;\r\n }\r\n\r\n layers = layerResponse.body;\r\n } catch (error) {\r\n notifyTerrainError();\r\n return undefined;\r\n }\r\n\r\n if (undefined === layers.tiles || undefined === layers.version) {\r\n notifyTerrainError();\r\n return undefined;\r\n }\r\n\r\n const tilingScheme = new GeographicTilingScheme();\r\n let tileAvailability;\r\n if (undefined !== layers.available) {\r\n const availableTiles = layers.available;\r\n tileAvailability = new TileAvailability(tilingScheme, availableTiles.length);\r\n for (let level = 0; level < layers.available.length; level++) {\r\n const rangesAtLevel = availableTiles[level];\r\n for (const range of rangesAtLevel) {\r\n tileAvailability.addAvailableTileRange(level, range.startX, range.startY, range.endX, range.endY);\r\n }\r\n }\r\n }\r\n\r\n let tileUrlTemplate = accessTokenAndEndpointUrl.url + layers.tiles[0].replace(\"{version}\", layers.version);\r\n if (wantNormals)\r\n tileUrlTemplate = tileUrlTemplate.replace(\"?\", \"?extensions=octvertexnormals-watermask-metadata&\");\r\n\r\n const maxDepth = JsonUtils.asInt(layers.maxzoom, 19);\r\n\r\n // TBD -- When we have an API extract the heights for the project from the terrain tiles - for use temporary Bing elevation.\r\n return new CesiumTerrainProvider(iModel, modelId, accessTokenAndEndpointUrl.token, tileUrlTemplate, maxDepth, wantSkirts, tilingScheme, tileAvailability, layers.metadataAvailability, exaggeration);\r\n}\r\nfunction zigZagDecode(value: number) {\r\n return (value >> 1) ^ (-(value & 1));\r\n}\r\n/**\r\n * Decodes delta and ZigZag encoded vertices. This modifies the buffers in place.\r\n *\r\n * @see {@link https://github.com/AnalyticalGraphicsInc/quantized-mesh|quantized-mesh-1.0 terrain format}\r\n */\r\nfunction zigZagDeltaDecode(uBuffer: Uint16Array, vBuffer: Uint16Array, heightBuffer: Uint16Array) {\r\n const count = uBuffer.length;\r\n let u = 0;\r\n let v = 0;\r\n let height = 0;\r\n\r\n for (let i = 0; i < count; ++i) {\r\n u += zigZagDecode(uBuffer[i]);\r\n v += zigZagDecode(vBuffer[i]);\r\n\r\n uBuffer[i] = u;\r\n vBuffer[i] = v;\r\n\r\n height += zigZagDecode(heightBuffer[i]);\r\n heightBuffer[i] = height;\r\n }\r\n}\r\n\r\nfunction getIndexArray(vertexCount: number, streamBuffer: ByteStream, indexCount: number): Uint16Array | Uint32Array {\r\n const indicesAre32Bit = vertexCount > 64 * 1024;\r\n const indexArray = (indicesAre32Bit) ? new Uint32Array(streamBuffer.arrayBuffer, streamBuffer.curPos, indexCount) : new Uint16Array(streamBuffer.arrayBuffer, streamBuffer.curPos, indexCount);\r\n streamBuffer.advance(indexCount * (indicesAre32Bit ? Uint32Array.BYTES_PER_ELEMENT : Uint16Array.BYTES_PER_ELEMENT));\r\n return indexArray;\r\n}\r\n\r\n/** @internal */\r\nclass CesiumTerrainProvider extends TerrainMeshProvider {\r\n private static _scratchQPoint2d = QPoint2d.fromScalars(0, 0);\r\n private static _scratchPoint2d = Point2d.createZero();\r\n private static _scratchPoint = Point3d.createZero();\r\n private static _scratchNormal = Vector3d.createZero();\r\n private static _scratchHeightRange = Range1d.createNull();\r\n private static _tokenTimeoutInterval = BeDuration.fromSeconds(60 * 30); // Request a new access token every 30 minutes...\r\n private _tokenTimeOut: BeTimePoint;\r\n\r\n public override forceTileLoad(tile: Tile): boolean {\r\n // Force loading of the metadata availability tiles as these are required for determining the availability of descendants.\r\n const mapTile = tile as MapTile;\r\n return undefined !== this._metaDataAvailableLevel && mapTile.quadId.level === this._metaDataAvailableLevel && !mapTile.everLoaded;\r\n }\r\n\r\n constructor(iModel: IModelConnection, modelId: Id64String, private _accessToken: string, private _tileUrlTemplate: string,\r\n private _maxDepth: number, private readonly _wantSkirts: boolean, private _tilingScheme: MapTilingScheme, private _tileAvailability: TileAvailability | undefined, private _metaDataAvailableLevel: number | undefined, private _exaggeration: number) {\r\n super(iModel, modelId);\r\n this._tokenTimeOut = BeTimePoint.now().plus(CesiumTerrainProvider._tokenTimeoutInterval);\r\n }\r\n\r\n public override getLogo(): HTMLTableRowElement {\r\n return IModelApp.makeLogoCard({ iconSrc: `${IModelApp.publicPath}images/cesium-ion.svg`, heading: \"Cesium Ion\", notice: IModelApp.localization.getLocalizedString(\"iModelJs:BackgroundMap.CesiumWorldTerrainAttribution\") });\r\n }\r\n\r\n public get maxDepth(): number { return this._maxDepth; }\r\n public get tilingScheme(): MapTilingScheme { return this._tilingScheme; }\r\n\r\n public isTileAvailable(quadId: QuadId) {\r\n if (quadId.level > this.maxDepth)\r\n return false;\r\n\r\n return this._tileAvailability ? this._tileAvailability.isTileAvailable(quadId.level, quadId.column, quadId.row) : true;\r\n }\r\n\r\n public override async getMesh(tile: MapTile, data: Uint8Array): Promise<TerrainMeshPrimitive | undefined> {\r\n if (BeTimePoint.now().milliseconds > this._tokenTimeOut.milliseconds) {\r\n const accessTokenAndEndpointUrl = await getCesiumAccessTokenAndEndpointUrl();\r\n if (!accessTokenAndEndpointUrl.token) {\r\n assert(false);\r\n return undefined;\r\n }\r\n\r\n this._accessToken = accessTokenAndEndpointUrl.token;\r\n this._tokenTimeOut = BeTimePoint.now().plus(CesiumTerrainProvider._tokenTimeoutInterval);\r\n }\r\n\r\n assert(data instanceof Uint8Array);\r\n assert(tile instanceof MapTile);\r\n const blob = data;\r\n const streamBuffer = ByteStream.fromUint8Array(blob);\r\n const center = nextPoint3d64FromByteStream(streamBuffer);\r\n const quadId = QuadId.createFromContentId(tile.contentId);\r\n const skirtHeight = this.getLevelMaximumGeometricError(quadId.level + 1) * 10.0; // Add 1 to level to restore height calculation to before the quadId level was from root. (4326 unification)\r\n const minHeight = this._exaggeration * streamBuffer.nextFloat32;\r\n const maxHeight = this._exaggeration * streamBuffer.nextFloat32;\r\n const boundCenter = nextPoint3d64FromByteStream(streamBuffer);\r\n const boundRadius = streamBuffer.nextFloat64;\r\n const horizonOcclusion = nextPoint3d64FromByteStream(streamBuffer);\r\n const terrainTile = tile;\r\n\r\n terrainTile.adjustHeights(minHeight, maxHeight);\r\n\r\n if (undefined === center || undefined === boundCenter || undefined === boundRadius || undefined === horizonOcclusion) { }\r\n const pointCount = streamBuffer.nextUint32;\r\n const encodedVertexBuffer = new Uint16Array(blob.buffer, streamBuffer.curPos, pointCount * 3);\r\n streamBuffer.advance(pointCount * 6);\r\n\r\n const uBuffer = encodedVertexBuffer.subarray(0, pointCount);\r\n const vBuffer = encodedVertexBuffer.subarray(pointCount, 2 * pointCount);\r\n const heightBuffer = encodedVertexBuffer.subarray(pointCount * 2, 3 * pointCount);\r\n\r\n zigZagDeltaDecode(uBuffer, vBuffer, heightBuffer);\r\n\r\n let bytesPerIndex = Uint16Array.BYTES_PER_ELEMENT;\r\n const triangleElements = 3;\r\n\r\n if (pointCount > 64 * 1024) {\r\n // More than 64k vertices, so indices are 32-bit.\r\n bytesPerIndex = Uint32Array.BYTES_PER_ELEMENT;\r\n }\r\n\r\n // skip over any additional padding that was added for 2/4 byte alignment\r\n if (streamBuffer.curPos % bytesPerIndex !== 0)\r\n streamBuffer.advance(bytesPerIndex - (streamBuffer.curPos % bytesPerIndex));\r\n\r\n const triangleCount = streamBuffer.nextUint32;\r\n const indexCount = triangleCount * triangleElements;\r\n\r\n const indices = getIndexArray(pointCount, streamBuffer, indexCount);\r\n // High water mark decoding based on decompressIndices_ in webgl-loader's loader.js.\r\n // https://code.google.com/p/webgl-loader/source/browse/trunk/samples/loader.js?r=99#55\r\n // Copyright 2012 Google Inc., Apache 2.0 license.\r\n let highest = 0;\r\n const length = indices.length;\r\n for (let i = 0; i < length; ++i) {\r\n const code = indices[i];\r\n indices[i] = highest - code;\r\n if (code === 0) {\r\n ++highest;\r\n }\r\n }\r\n\r\n CesiumTerrainProvider._scratchHeightRange.low = minHeight - skirtHeight;\r\n CesiumTerrainProvider._scratchHeightRange.high = maxHeight;\r\n const projection = terrainTile.getProjection(CesiumTerrainProvider._scratchHeightRange);\r\n const pointQParams = QParams3d.fromRange(projection.localRange);\r\n\r\n const uvScale = 1.0 / 32767.0;\r\n const heightScale = uvScale * (maxHeight - minHeight);\r\n\r\n const westCount = streamBuffer.nextUint32;\r\n const westIndices = getIndexArray(pointCount, streamBuffer, westCount);\r\n\r\n const southCount = streamBuffer.nextUint32;\r\n const southIndices = getIndexArray(pointCount, streamBuffer, southCount);\r\n\r\n const eastCount = streamBuffer.nextUint32;\r\n const eastIndices = getIndexArray(pointCount, streamBuffer, eastCount);\r\n\r\n const northCount = streamBuffer.nextUint32;\r\n const northIndices = getIndexArray(pointCount, streamBuffer, northCount);\r\n\r\n // Extensions...\r\n let encodedNormalsBuffer;\r\n while (streamBuffer.curPos < streamBuffer.length) {\r\n const extensionId = streamBuffer.nextUint8;\r\n const extensionLength = streamBuffer.nextUint32;\r\n switch (extensionId) {\r\n case QuantizedMeshExtensionIds.OctEncodedNormals:\r\n assert(pointCount * 2 === extensionLength);\r\n encodedNormalsBuffer = new Uint8Array(streamBuffer.arrayBuffer, streamBuffer.curPos, extensionLength);\r\n streamBuffer.advance(extensionLength);\r\n break;\r\n\r\n case QuantizedMeshExtensionIds.Metadata:\r\n const stringLength = streamBuffer.nextUint32;\r\n if (stringLength > 0) {\r\n const strData = streamBuffer.nextBytes(stringLength);\r\n const str = utf8ToString(strData);\r\n if (undefined !== str) {\r\n const metaData = JSON.parse(str);\r\n if (undefined !== metaData.available && undefined !== this._tileAvailability) {\r\n const availableTiles = metaData.available;\r\n for (let offset = 0; offset < availableTiles.length; ++offset) {\r\n const availableLevel = tile.depth + offset; // Our depth is includes root (1 + cesium Depth)\r\n const rangesAtLevel = availableTiles[offset];\r\n\r\n for (const range of rangesAtLevel)\r\n this._tileAvailability.addAvailableTileRange(availableLevel, range.startX, range.startY, range.endX, range.endY);\r\n }\r\n }\r\n }\r\n }\r\n\r\n break;\r\n default:\r\n streamBuffer.advance(extensionLength);\r\n break;\r\n }\r\n\r\n }\r\n\r\n const mesh = TerrainMeshPrimitive.create({ pointQParams, pointCount, indexCount, wantSkirts: this._wantSkirts, westCount, eastCount, southCount, northCount, wantNormals: undefined !== encodedNormalsBuffer });\r\n for (let i = 0; i < indexCount;)\r\n this.addTriangle(mesh, indices[i++], indices[i++], indices[i++]);\r\n\r\n const worldToEcef = tile.iModel.getEcefTransform().matrix;\r\n for (let i = 0; i < pointCount; i++) {\r\n const u = uBuffer[i];\r\n const v = vBuffer[i];\r\n projection.getPoint(uvScale * u, uvScale * v, minHeight + heightBuffer[i] * heightScale, CesiumTerrainProvider._scratchPoint);\r\n CesiumTerrainProvider._scratchQPoint2d.setFromScalars(u * 2, v * 2);\r\n if (encodedNormalsBuffer) {\r\n const normalIndex = i * 2;\r\n OctEncodedNormal.decodeValue(encodedNormalsBuffer[normalIndex + 1] << 8 | encodedNormalsBuffer[normalIndex], CesiumTerrainProvider._scratchNormal);\r\n worldToEcef.multiplyTransposeVector(CesiumTerrainProvider._scratchNormal, CesiumTerrainProvider._scratchNormal);\r\n mesh.addVertex(CesiumTerrainProvider._scratchPoint, CesiumTerrainProvider._scratchQPoint2d, OctEncodedNormal.encode(CesiumTerrainProvider._scratchNormal));\r\n } else {\r\n mesh.addVertex(CesiumTerrainProvider._scratchPoint, CesiumTerrainProvider._scratchQPoint2d);\r\n }\r\n }\r\n\r\n if (this._wantSkirts) {\r\n westIndices.sort((a, b) => vBuffer[a] - vBuffer[b]);\r\n eastIndices.sort((a, b) => vBuffer[a] - vBuffer[b]);\r\n northIndices.sort((a, b) => uBuffer[a] - uBuffer[b]);\r\n southIndices.sort((a, b) => uBuffer[a] - uBuffer[b]);\r\n const wantNormals = (encodedNormalsBuffer !== undefined);\r\n this.generateSkirts(mesh, westIndices, projection, -skirtHeight, heightBuffer, minHeight, heightScale, wantNormals);\r\n this.generateSkirts(mesh, eastIndices, projection, -skirtHeight, heightBuffer, minHeight, heightScale, wantNormals);\r\n this.generateSkirts(mesh, southIndices, projection, -skirtHeight, heightBuffer, minHeight, heightScale, wantNormals);\r\n this.generateSkirts(mesh, northIndices, projection, -skirtHeight, heightBuffer, minHeight, heightScale, wantNormals);\r\n }\r\n assert(mesh.isCompleted);\r\n return mesh;\r\n }\r\n\r\n private addTriangle(mesh: TerrainMeshPrimitive, i0: number, i1: number, i2: number) {\r\n mesh.addTriangle(i0, i1, i2);\r\n }\r\n\r\n private generateSkirts(mesh: TerrainMeshPrimitive, indices: Uint16Array | Uint32Array, projection: MapTileProjection, skirtOffset: number, heightBuffer: Uint16Array, minHeight: number, heightScale: number, wantNormals: boolean) {\r\n for (let i = 0; i < indices.length; i++) {\r\n const index = indices[i];\r\n const paramIndex = index * 2;\r\n const height = minHeight + heightBuffer[index] * heightScale;\r\n CesiumTerrainProvider._scratchQPoint2d.setFromScalars(mesh.uvs[paramIndex], mesh.uvs[paramIndex + 1]);\r\n const uv = mesh.uvQParams.unquantize(CesiumTerrainProvider._scratchQPoint2d.x, CesiumTerrainProvider._scratchQPoint2d.y, CesiumTerrainProvider._scratchPoint2d);\r\n if (wantNormals && mesh.normals) {\r\n mesh.addVertex(projection.getPoint(uv.x, uv.y, height + skirtOffset), CesiumTerrainProvider._scratchQPoint2d, mesh.normals[index]);\r\n } else {\r\n mesh.addVertex(projection.getPoint(uv.x, uv.y, height + skirtOffset), CesiumTerrainProvider._scratchQPoint2d);\r\n }\r\n\r\n if (i) {\r\n this.addTriangle(mesh, index, indices[i - 1], mesh.nextPointIndex - 2);\r\n this.addTriangle(mesh, index, mesh.nextPointIndex - 2, mesh.nextPointIndex - 1);\r\n }\r\n }\r\n }\r\n public override get requestOptions(): RequestOptions {\r\n return { method: \"GET\", responseType: \"arraybuffer\", headers: { authorization: `Bearer ${this._accessToken}` }, accept: \"application/vnd.quantized-mesh;\" /* extensions=octvertexnormals, */ + \"application/octet-stream;q=0.9,*/*;q=0.01\" };\r\n }\r\n\r\n public override constructUrl(row: number, column: number, zoomLevel: number): string {\r\n return this._tileUrlTemplate.replace(\"{z}\", zoomLevel.toString()).replace(\"{x}\", column.toString()).replace(\"{y}\", row.toString());\r\n }\r\n\r\n public getChildHeightRange(quadId: QuadId, rectangle: MapCartoRectangle, parent: MapTile): Range1d | undefined {\r\n return (quadId.level < ApproximateTerrainHeights.maxLevel) ? ApproximateTerrainHeights.instance.getMinimumMaximumHeights(rectangle) : (parent).heightRange;\r\n }\r\n /**\r\n * Specifies the quality of terrain created from heightmaps. A value of 1.0 will\r\n * ensure that adjacent heightmap vertices are separated by no more than\r\n * screen pixels and will probably go very slowly.\r\n * A value of 0.5 will cut the estimated level zero geometric error in half, allowing twice the\r\n * screen pixels between adjacent heightmap vertices and thus rendering more quickly.\r\n * @type {Number}\r\n */\r\n public readonly heightmapTerrainQuality = 0.25;\r\n\r\n /**\r\n * Determines an appropriate geometric error estimate when the geometry comes from a heightmap.\r\n *\r\n * @param {Ellipsoid} ellipsoid The ellipsoid to which the terrain is attached.\r\n * @param {Number} tileImageWidth The width, in pixels, of the heightmap associated with a single tile.\r\n * @param {Number} numberOfTilesAtLevelZero The number of tiles in the horizontal direction at tile level zero.\r\n * @returns {Number} An estimated geometric error.\r\n */\r\n public getEstimatedLevelZeroGeometricErrorForAHeightmap(ellipsoidMaximumRadius = 6378137, tileImageWidth = 65, numberOfTilesAtLevelZero = 2) {\r\n return ellipsoidMaximumRadius * 2 * Math.PI * this.heightmapTerrainQuality / (tileImageWidth * numberOfTilesAtLevelZero);\r\n }\r\n\r\n public getLevelMaximumGeometricError(level: number) {\r\n return this.getEstimatedLevelZeroGeometricErrorForAHeightmap() / (1 << level);\r\n }\r\n\r\n public getHeightRange(parentRange: Range1d, quadId: QuadId): Range1d {\r\n const heightRange = quadId.level <= 6 ? ApproximateTerrainHeights.instance.getTileHeightRange(quadId) : undefined;\r\n\r\n return undefined === heightRange ? parentRange : heightRange;\r\n }\r\n}\r\n"]}