@itwin/core-frontend 5.2.0-dev.3 → 5.2.0-dev.31

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 (701) hide show
  1. package/CHANGELOG.md +76 -1
  2. package/lib/cjs/BackgroundMapGeometry.js +13 -13
  3. package/lib/cjs/BackgroundMapGeometry.js.map +1 -1
  4. package/lib/cjs/BriefcaseConnection.d.ts.map +1 -1
  5. package/lib/cjs/BriefcaseConnection.js +2 -2
  6. package/lib/cjs/BriefcaseConnection.js.map +1 -1
  7. package/lib/cjs/CheckpointConnection.d.ts.map +1 -1
  8. package/lib/cjs/CheckpointConnection.js +3 -3
  9. package/lib/cjs/CheckpointConnection.js.map +1 -1
  10. package/lib/cjs/ContextRealityModelState.js.map +1 -1
  11. package/lib/cjs/ElementLocateManager.d.ts.map +1 -1
  12. package/lib/cjs/ElementLocateManager.js +7 -6
  13. package/lib/cjs/ElementLocateManager.js.map +1 -1
  14. package/lib/cjs/EmphasizeElements.d.ts.map +1 -1
  15. package/lib/cjs/EmphasizeElements.js +3 -1
  16. package/lib/cjs/EmphasizeElements.js.map +1 -1
  17. package/lib/cjs/EnvironmentDecorations.d.ts.map +1 -1
  18. package/lib/cjs/EnvironmentDecorations.js +4 -0
  19. package/lib/cjs/EnvironmentDecorations.js.map +1 -1
  20. package/lib/cjs/FrustumAnimator.d.ts.map +1 -1
  21. package/lib/cjs/FrustumAnimator.js +3 -2
  22. package/lib/cjs/FrustumAnimator.js.map +1 -1
  23. package/lib/cjs/GlobeAnimator.d.ts.map +1 -1
  24. package/lib/cjs/GlobeAnimator.js +7 -6
  25. package/lib/cjs/GlobeAnimator.js.map +1 -1
  26. package/lib/cjs/HitDetail.d.ts.map +1 -1
  27. package/lib/cjs/HitDetail.js +12 -7
  28. package/lib/cjs/HitDetail.js.map +1 -1
  29. package/lib/cjs/IModelApp.d.ts.map +1 -1
  30. package/lib/cjs/IModelApp.js +5 -1
  31. package/lib/cjs/IModelApp.js.map +1 -1
  32. package/lib/cjs/IModelConnection.d.ts +4 -0
  33. package/lib/cjs/IModelConnection.d.ts.map +1 -1
  34. package/lib/cjs/IModelConnection.js +156 -14
  35. package/lib/cjs/IModelConnection.js.map +1 -1
  36. package/lib/cjs/IpcApp.d.ts.map +1 -1
  37. package/lib/cjs/IpcApp.js +1 -1
  38. package/lib/cjs/IpcApp.js.map +1 -1
  39. package/lib/cjs/LinePlaneIntersect.d.ts.map +1 -1
  40. package/lib/cjs/LinePlaneIntersect.js +2 -0
  41. package/lib/cjs/LinePlaneIntersect.js.map +1 -1
  42. package/lib/cjs/LocalhostIpcApp.d.ts.map +1 -1
  43. package/lib/cjs/LocalhostIpcApp.js +2 -1
  44. package/lib/cjs/LocalhostIpcApp.js.map +1 -1
  45. package/lib/cjs/Marker.d.ts.map +1 -1
  46. package/lib/cjs/Marker.js +4 -3
  47. package/lib/cjs/Marker.js.map +1 -1
  48. package/lib/cjs/ModelState.d.ts.map +1 -1
  49. package/lib/cjs/ModelState.js +2 -2
  50. package/lib/cjs/ModelState.js.map +1 -1
  51. package/lib/cjs/NativeApp.d.ts.map +1 -1
  52. package/lib/cjs/NativeApp.js +5 -4
  53. package/lib/cjs/NativeApp.js.map +1 -1
  54. package/lib/cjs/NativeAppLogger.d.ts.map +1 -1
  55. package/lib/cjs/NativeAppLogger.js +1 -0
  56. package/lib/cjs/NativeAppLogger.js.map +1 -1
  57. package/lib/cjs/PlanarClipMaskState.d.ts +3 -0
  58. package/lib/cjs/PlanarClipMaskState.d.ts.map +1 -1
  59. package/lib/cjs/PlanarClipMaskState.js +8 -4
  60. package/lib/cjs/PlanarClipMaskState.js.map +1 -1
  61. package/lib/cjs/RealityDataSource.d.ts.map +1 -1
  62. package/lib/cjs/RealityDataSource.js +5 -1
  63. package/lib/cjs/RealityDataSource.js.map +1 -1
  64. package/lib/cjs/SelectionSet.d.ts.map +1 -1
  65. package/lib/cjs/SelectionSet.js +1 -0
  66. package/lib/cjs/SelectionSet.js.map +1 -1
  67. package/lib/cjs/SheetViewState.d.ts.map +1 -1
  68. package/lib/cjs/SheetViewState.js +5 -5
  69. package/lib/cjs/SheetViewState.js.map +1 -1
  70. package/lib/cjs/SpatialViewState.d.ts.map +1 -1
  71. package/lib/cjs/SpatialViewState.js +1 -1
  72. package/lib/cjs/SpatialViewState.js.map +1 -1
  73. package/lib/cjs/Sprites.js +2 -2
  74. package/lib/cjs/Sprites.js.map +1 -1
  75. package/lib/cjs/TentativePoint.d.ts.map +1 -1
  76. package/lib/cjs/TentativePoint.js +10 -9
  77. package/lib/cjs/TentativePoint.js.map +1 -1
  78. package/lib/cjs/ViewContext.d.ts +10 -1
  79. package/lib/cjs/ViewContext.d.ts.map +1 -1
  80. package/lib/cjs/ViewContext.js +12 -1
  81. package/lib/cjs/ViewContext.js.map +1 -1
  82. package/lib/cjs/ViewCreator2d.js +1 -1
  83. package/lib/cjs/ViewCreator2d.js.map +1 -1
  84. package/lib/cjs/ViewCreator3d.js +1 -1
  85. package/lib/cjs/ViewCreator3d.js.map +1 -1
  86. package/lib/cjs/ViewPose.d.ts.map +1 -1
  87. package/lib/cjs/ViewPose.js +4 -1
  88. package/lib/cjs/ViewPose.js.map +1 -1
  89. package/lib/cjs/ViewState.d.ts.map +1 -1
  90. package/lib/cjs/ViewState.js +17 -12
  91. package/lib/cjs/ViewState.js.map +1 -1
  92. package/lib/cjs/ViewingSpace.d.ts.map +1 -1
  93. package/lib/cjs/ViewingSpace.js +2 -0
  94. package/lib/cjs/ViewingSpace.js.map +1 -1
  95. package/lib/cjs/Viewport.d.ts.map +1 -1
  96. package/lib/cjs/Viewport.js +17 -10
  97. package/lib/cjs/Viewport.js.map +1 -1
  98. package/lib/cjs/common/ImageUtil.d.ts.map +1 -1
  99. package/lib/cjs/common/ImageUtil.js +2 -1
  100. package/lib/cjs/common/ImageUtil.js.map +1 -1
  101. package/lib/cjs/common/internal/render/GeometryAccumulator.d.ts.map +1 -1
  102. package/lib/cjs/common/internal/render/GeometryAccumulator.js +4 -3
  103. package/lib/cjs/common/internal/render/GeometryAccumulator.js.map +1 -1
  104. package/lib/cjs/common/internal/render/InstancedGraphicPropsBuilder.d.ts.map +1 -1
  105. package/lib/cjs/common/internal/render/InstancedGraphicPropsBuilder.js +2 -0
  106. package/lib/cjs/common/internal/render/InstancedGraphicPropsBuilder.js.map +1 -1
  107. package/lib/cjs/common/internal/render/MeshBuilder.js +1 -1
  108. package/lib/cjs/common/internal/render/MeshBuilder.js.map +1 -1
  109. package/lib/cjs/common/internal/render/VertexTableBuilder.d.ts.map +1 -1
  110. package/lib/cjs/common/internal/render/VertexTableBuilder.js +16 -7
  111. package/lib/cjs/common/internal/render/VertexTableBuilder.js.map +1 -1
  112. package/lib/cjs/extension/ExtensionAdmin.js +2 -2
  113. package/lib/cjs/extension/ExtensionAdmin.js.map +1 -1
  114. package/lib/cjs/internal/GoogleMapsDecorator.js +7 -7
  115. package/lib/cjs/internal/GoogleMapsDecorator.js.map +1 -1
  116. package/lib/cjs/internal/ScriptUtils.js +1 -0
  117. package/lib/cjs/internal/ScriptUtils.js.map +1 -1
  118. package/lib/cjs/internal/cross-package.d.ts +1 -1
  119. package/lib/cjs/internal/cross-package.d.ts.map +1 -1
  120. package/lib/cjs/internal/cross-package.js +2 -1
  121. package/lib/cjs/internal/cross-package.js.map +1 -1
  122. package/lib/cjs/internal/render/UpsampleRealityMeshParams.d.ts.map +1 -1
  123. package/lib/cjs/internal/render/UpsampleRealityMeshParams.js +2 -1
  124. package/lib/cjs/internal/render/UpsampleRealityMeshParams.js.map +1 -1
  125. package/lib/cjs/internal/render/webgl/AtmosphereUniforms.d.ts.map +1 -1
  126. package/lib/cjs/internal/render/webgl/AtmosphereUniforms.js +7 -2
  127. package/lib/cjs/internal/render/webgl/AtmosphereUniforms.js.map +1 -1
  128. package/lib/cjs/internal/render/webgl/AttributeBuffers.d.ts.map +1 -1
  129. package/lib/cjs/internal/render/webgl/AttributeBuffers.js +5 -3
  130. package/lib/cjs/internal/render/webgl/AttributeBuffers.js.map +1 -1
  131. package/lib/cjs/internal/render/webgl/AttributeMap.d.ts.map +1 -1
  132. package/lib/cjs/internal/render/webgl/AttributeMap.js +2 -0
  133. package/lib/cjs/internal/render/webgl/AttributeMap.js.map +1 -1
  134. package/lib/cjs/internal/render/webgl/BackgroundMapDrape.d.ts.map +1 -1
  135. package/lib/cjs/internal/render/webgl/BackgroundMapDrape.js +3 -3
  136. package/lib/cjs/internal/render/webgl/BackgroundMapDrape.js.map +1 -1
  137. package/lib/cjs/internal/render/webgl/BatchUniforms.d.ts +4 -1
  138. package/lib/cjs/internal/render/webgl/BatchUniforms.d.ts.map +1 -1
  139. package/lib/cjs/internal/render/webgl/BatchUniforms.js +16 -5
  140. package/lib/cjs/internal/render/webgl/BatchUniforms.js.map +1 -1
  141. package/lib/cjs/internal/render/webgl/BranchState.d.ts.map +1 -1
  142. package/lib/cjs/internal/render/webgl/BranchState.js +2 -1
  143. package/lib/cjs/internal/render/webgl/BranchState.js.map +1 -1
  144. package/lib/cjs/internal/render/webgl/BranchUniforms.js +2 -2
  145. package/lib/cjs/internal/render/webgl/BranchUniforms.js.map +1 -1
  146. package/lib/cjs/internal/render/webgl/CachedGeometry.d.ts.map +1 -1
  147. package/lib/cjs/internal/render/webgl/CachedGeometry.js +2 -2
  148. package/lib/cjs/internal/render/webgl/CachedGeometry.js.map +1 -1
  149. package/lib/cjs/internal/render/webgl/ClipStack.js +1 -1
  150. package/lib/cjs/internal/render/webgl/ClipStack.js.map +1 -1
  151. package/lib/cjs/internal/render/webgl/ColorInfo.js +1 -1
  152. package/lib/cjs/internal/render/webgl/ColorInfo.js.map +1 -1
  153. package/lib/cjs/internal/render/webgl/Contours.js +3 -3
  154. package/lib/cjs/internal/render/webgl/Contours.js.map +1 -1
  155. package/lib/cjs/internal/render/webgl/EDL.js +18 -18
  156. package/lib/cjs/internal/render/webgl/EDL.js.map +1 -1
  157. package/lib/cjs/internal/render/webgl/FeatureOverrides.d.ts +3 -3
  158. package/lib/cjs/internal/render/webgl/FeatureOverrides.d.ts.map +1 -1
  159. package/lib/cjs/internal/render/webgl/FeatureOverrides.js +14 -14
  160. package/lib/cjs/internal/render/webgl/FeatureOverrides.js.map +1 -1
  161. package/lib/cjs/internal/render/webgl/FrameBuffer.js +3 -3
  162. package/lib/cjs/internal/render/webgl/FrameBuffer.js.map +1 -1
  163. package/lib/cjs/internal/render/webgl/FrustumUniforms.d.ts.map +1 -1
  164. package/lib/cjs/internal/render/webgl/FrustumUniforms.js +2 -1
  165. package/lib/cjs/internal/render/webgl/FrustumUniforms.js.map +1 -1
  166. package/lib/cjs/internal/render/webgl/GLTimer.d.ts.map +1 -1
  167. package/lib/cjs/internal/render/webgl/GLTimer.js +2 -0
  168. package/lib/cjs/internal/render/webgl/GLTimer.js.map +1 -1
  169. package/lib/cjs/internal/render/webgl/Graphic.d.ts +3 -3
  170. package/lib/cjs/internal/render/webgl/Graphic.d.ts.map +1 -1
  171. package/lib/cjs/internal/render/webgl/Graphic.js +7 -7
  172. package/lib/cjs/internal/render/webgl/Graphic.js.map +1 -1
  173. package/lib/cjs/internal/render/webgl/MapLayerParams.js +2 -2
  174. package/lib/cjs/internal/render/webgl/MapLayerParams.js.map +1 -1
  175. package/lib/cjs/internal/render/webgl/MeshData.js +2 -2
  176. package/lib/cjs/internal/render/webgl/MeshData.js.map +1 -1
  177. package/lib/cjs/internal/render/webgl/PerformanceMetrics.js +1 -1
  178. package/lib/cjs/internal/render/webgl/PerformanceMetrics.js.map +1 -1
  179. package/lib/cjs/internal/render/webgl/PlanarClassifier.d.ts +1 -0
  180. package/lib/cjs/internal/render/webgl/PlanarClassifier.d.ts.map +1 -1
  181. package/lib/cjs/internal/render/webgl/PlanarClassifier.js +27 -11
  182. package/lib/cjs/internal/render/webgl/PlanarClassifier.js.map +1 -1
  183. package/lib/cjs/internal/render/webgl/PlanarGrid.js +1 -1
  184. package/lib/cjs/internal/render/webgl/PlanarGrid.js.map +1 -1
  185. package/lib/cjs/internal/render/webgl/PlanarTextureProjection.d.ts +0 -3
  186. package/lib/cjs/internal/render/webgl/PlanarTextureProjection.d.ts.map +1 -1
  187. package/lib/cjs/internal/render/webgl/PlanarTextureProjection.js +6 -5
  188. package/lib/cjs/internal/render/webgl/PlanarTextureProjection.js.map +1 -1
  189. package/lib/cjs/internal/render/webgl/PointCloud.js +1 -1
  190. package/lib/cjs/internal/render/webgl/PointCloud.js.map +1 -1
  191. package/lib/cjs/internal/render/webgl/RealityMesh.js +1 -1
  192. package/lib/cjs/internal/render/webgl/RealityMesh.js.map +1 -1
  193. package/lib/cjs/internal/render/webgl/RenderBuffer.js +2 -2
  194. package/lib/cjs/internal/render/webgl/RenderBuffer.js.map +1 -1
  195. package/lib/cjs/internal/render/webgl/RenderCommands.d.ts +2 -1
  196. package/lib/cjs/internal/render/webgl/RenderCommands.d.ts.map +1 -1
  197. package/lib/cjs/internal/render/webgl/RenderCommands.js +3 -1
  198. package/lib/cjs/internal/render/webgl/RenderCommands.js.map +1 -1
  199. package/lib/cjs/internal/render/webgl/SceneCompositor.d.ts.map +1 -1
  200. package/lib/cjs/internal/render/webgl/SceneCompositor.js +118 -85
  201. package/lib/cjs/internal/render/webgl/SceneCompositor.js.map +1 -1
  202. package/lib/cjs/internal/render/webgl/ScratchDrawParams.d.ts.map +1 -1
  203. package/lib/cjs/internal/render/webgl/ScratchDrawParams.js +11 -10
  204. package/lib/cjs/internal/render/webgl/ScratchDrawParams.js.map +1 -1
  205. package/lib/cjs/internal/render/webgl/ScreenSpaceEffect.js +3 -3
  206. package/lib/cjs/internal/render/webgl/ScreenSpaceEffect.js.map +1 -1
  207. package/lib/cjs/internal/render/webgl/ShaderProgram.js +3 -3
  208. package/lib/cjs/internal/render/webgl/ShaderProgram.js.map +1 -1
  209. package/lib/cjs/internal/render/webgl/ShadowUniforms.d.ts.map +1 -1
  210. package/lib/cjs/internal/render/webgl/ShadowUniforms.js +2 -1
  211. package/lib/cjs/internal/render/webgl/ShadowUniforms.js.map +1 -1
  212. package/lib/cjs/internal/render/webgl/SolarShadowMap.d.ts.map +1 -1
  213. package/lib/cjs/internal/render/webgl/SolarShadowMap.js +6 -4
  214. package/lib/cjs/internal/render/webgl/SolarShadowMap.js.map +1 -1
  215. package/lib/cjs/internal/render/webgl/System.d.ts.map +1 -1
  216. package/lib/cjs/internal/render/webgl/System.js +1 -1
  217. package/lib/cjs/internal/render/webgl/System.js.map +1 -1
  218. package/lib/cjs/internal/render/webgl/Target.d.ts.map +1 -1
  219. package/lib/cjs/internal/render/webgl/Target.js +12 -9
  220. package/lib/cjs/internal/render/webgl/Target.js.map +1 -1
  221. package/lib/cjs/internal/render/webgl/Texture.d.ts.map +1 -1
  222. package/lib/cjs/internal/render/webgl/Texture.js +10 -8
  223. package/lib/cjs/internal/render/webgl/Texture.js.map +1 -1
  224. package/lib/cjs/internal/render/webgl/VisibleTileFeatures.js +1 -1
  225. package/lib/cjs/internal/render/webgl/VisibleTileFeatures.js.map +1 -1
  226. package/lib/cjs/internal/render/webgl/glsl/Animation.d.ts.map +1 -1
  227. package/lib/cjs/internal/render/webgl/glsl/Animation.js +4 -2
  228. package/lib/cjs/internal/render/webgl/glsl/Animation.js.map +1 -1
  229. package/lib/cjs/internal/render/webgl/glsl/Color.d.ts.map +1 -1
  230. package/lib/cjs/internal/render/webgl/glsl/Color.js +2 -1
  231. package/lib/cjs/internal/render/webgl/glsl/Color.js.map +1 -1
  232. package/lib/cjs/internal/render/webgl/glsl/Composite.js +1 -1
  233. package/lib/cjs/internal/render/webgl/glsl/Composite.js.map +1 -1
  234. package/lib/cjs/internal/render/webgl/glsl/CopyStencil.d.ts.map +1 -1
  235. package/lib/cjs/internal/render/webgl/glsl/CopyStencil.js +3 -2
  236. package/lib/cjs/internal/render/webgl/glsl/CopyStencil.js.map +1 -1
  237. package/lib/cjs/internal/render/webgl/glsl/PlanarClassification.js +3 -3
  238. package/lib/cjs/internal/render/webgl/glsl/PlanarClassification.js.map +1 -1
  239. package/lib/cjs/internal/render/webgl/glsl/PlanarGrid.d.ts.map +1 -1
  240. package/lib/cjs/internal/render/webgl/glsl/PlanarGrid.js +4 -3
  241. package/lib/cjs/internal/render/webgl/glsl/PlanarGrid.js.map +1 -1
  242. package/lib/cjs/internal/render/webgl/glsl/RealityMesh.js +8 -8
  243. package/lib/cjs/internal/render/webgl/glsl/RealityMesh.js.map +1 -1
  244. package/lib/cjs/internal/render/webgl/glsl/Surface.js +10 -10
  245. package/lib/cjs/internal/render/webgl/glsl/Surface.js.map +1 -1
  246. package/lib/cjs/internal/render/webgl/glsl/Vertex.js +2 -2
  247. package/lib/cjs/internal/render/webgl/glsl/Vertex.js.map +1 -1
  248. package/lib/cjs/internal/tile/B3dmReader.d.ts.map +1 -1
  249. package/lib/cjs/internal/tile/B3dmReader.js +1 -1
  250. package/lib/cjs/internal/tile/B3dmReader.js.map +1 -1
  251. package/lib/cjs/internal/tile/DynamicIModelTile.js +1 -0
  252. package/lib/cjs/internal/tile/DynamicIModelTile.js.map +1 -1
  253. package/lib/cjs/internal/tile/FetchCloudStorage.js +1 -1
  254. package/lib/cjs/internal/tile/FetchCloudStorage.js.map +1 -1
  255. package/lib/cjs/internal/tile/LRUTileList.d.ts.map +1 -1
  256. package/lib/cjs/internal/tile/LRUTileList.js +4 -0
  257. package/lib/cjs/internal/tile/LRUTileList.js.map +1 -1
  258. package/lib/cjs/internal/tile/LayerTileTreeReferenceHandler.d.ts.map +1 -1
  259. package/lib/cjs/internal/tile/LayerTileTreeReferenceHandler.js +2 -1
  260. package/lib/cjs/internal/tile/LayerTileTreeReferenceHandler.js.map +1 -1
  261. package/lib/cjs/internal/tile/OPCFormatInterpreter.js +4 -4
  262. package/lib/cjs/internal/tile/OPCFormatInterpreter.js.map +1 -1
  263. package/lib/cjs/internal/tile/OrbitGtTileTree.d.ts.map +1 -1
  264. package/lib/cjs/internal/tile/OrbitGtTileTree.js +2 -2
  265. package/lib/cjs/internal/tile/OrbitGtTileTree.js.map +1 -1
  266. package/lib/cjs/internal/tile/PrimaryTileTree.d.ts +2 -0
  267. package/lib/cjs/internal/tile/PrimaryTileTree.d.ts.map +1 -1
  268. package/lib/cjs/internal/tile/PrimaryTileTree.js +17 -12
  269. package/lib/cjs/internal/tile/PrimaryTileTree.js.map +1 -1
  270. package/lib/cjs/internal/tile/RealityModelTileTree.d.ts.map +1 -1
  271. package/lib/cjs/internal/tile/RealityModelTileTree.js +3 -3
  272. package/lib/cjs/internal/tile/RealityModelTileTree.js.map +1 -1
  273. package/lib/cjs/internal/tile/RealityTileLoader.d.ts.map +1 -1
  274. package/lib/cjs/internal/tile/RealityTileLoader.js +3 -0
  275. package/lib/cjs/internal/tile/RealityTileLoader.js.map +1 -1
  276. package/lib/cjs/internal/tile/ThreeDTileFormatInterpreter.js +3 -3
  277. package/lib/cjs/internal/tile/ThreeDTileFormatInterpreter.js.map +1 -1
  278. package/lib/cjs/internal/tile/TileUserSet.d.ts.map +1 -1
  279. package/lib/cjs/internal/tile/TileUserSet.js +4 -0
  280. package/lib/cjs/internal/tile/TileUserSet.js.map +1 -1
  281. package/lib/cjs/internal/tile/map/ArcGISTileMap.js +1 -1
  282. package/lib/cjs/internal/tile/map/ArcGISTileMap.js.map +1 -1
  283. package/lib/cjs/internal/tile/map/ArcGisUtilities.d.ts.map +1 -1
  284. package/lib/cjs/internal/tile/map/ArcGisUtilities.js +4 -0
  285. package/lib/cjs/internal/tile/map/ArcGisUtilities.js.map +1 -1
  286. package/lib/cjs/internal/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.d.ts.map +1 -1
  287. package/lib/cjs/internal/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js +3 -1
  288. package/lib/cjs/internal/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js.map +1 -1
  289. package/lib/cjs/internal/tile/map/ImageryProviders/BingImageryProvider.js +2 -2
  290. package/lib/cjs/internal/tile/map/ImageryProviders/BingImageryProvider.js.map +1 -1
  291. package/lib/cjs/internal/tile/map/ImageryProviders/WmsMapLayerImageryProvider.js +1 -1
  292. package/lib/cjs/internal/tile/map/ImageryProviders/WmsMapLayerImageryProvider.js.map +1 -1
  293. package/lib/cjs/internal/tile/map/MapTileAvailability.d.ts.map +1 -1
  294. package/lib/cjs/internal/tile/map/MapTileAvailability.js +5 -2
  295. package/lib/cjs/internal/tile/map/MapTileAvailability.js.map +1 -1
  296. package/lib/cjs/internal/tile/map/WmtsCapabilities.d.ts.map +1 -1
  297. package/lib/cjs/internal/tile/map/WmtsCapabilities.js +3 -2
  298. package/lib/cjs/internal/tile/map/WmtsCapabilities.js.map +1 -1
  299. package/lib/cjs/properties/FormattedQuantityDescription.d.ts.map +1 -1
  300. package/lib/cjs/properties/FormattedQuantityDescription.js +2 -0
  301. package/lib/cjs/properties/FormattedQuantityDescription.js.map +1 -1
  302. package/lib/cjs/quantity-formatting/BaseUnitFormattingSettingsProvider.d.ts.map +1 -1
  303. package/lib/cjs/quantity-formatting/BaseUnitFormattingSettingsProvider.js +2 -0
  304. package/lib/cjs/quantity-formatting/BaseUnitFormattingSettingsProvider.js.map +1 -1
  305. package/lib/cjs/quantity-formatting/QuantityFormatter.d.ts.map +1 -1
  306. package/lib/cjs/quantity-formatting/QuantityFormatter.js +5 -3
  307. package/lib/cjs/quantity-formatting/QuantityFormatter.js.map +1 -1
  308. package/lib/cjs/tile/GltfReader.d.ts +5 -2
  309. package/lib/cjs/tile/GltfReader.d.ts.map +1 -1
  310. package/lib/cjs/tile/GltfReader.js +69 -17
  311. package/lib/cjs/tile/GltfReader.js.map +1 -1
  312. package/lib/cjs/tile/RealityTile.d.ts.map +1 -1
  313. package/lib/cjs/tile/RealityTile.js +2 -2
  314. package/lib/cjs/tile/RealityTile.js.map +1 -1
  315. package/lib/cjs/tile/RealityTileTree.d.ts.map +1 -1
  316. package/lib/cjs/tile/RealityTileTree.js +5 -5
  317. package/lib/cjs/tile/RealityTileTree.js.map +1 -1
  318. package/lib/cjs/tile/TileAdmin.js.map +1 -1
  319. package/lib/cjs/tile/TileDrawArgs.d.ts.map +1 -1
  320. package/lib/cjs/tile/TileDrawArgs.js +2 -1
  321. package/lib/cjs/tile/TileDrawArgs.js.map +1 -1
  322. package/lib/cjs/tile/map/ImageryTileTree.js +1 -1
  323. package/lib/cjs/tile/map/ImageryTileTree.js.map +1 -1
  324. package/lib/cjs/tile/map/MapLayerFormatRegistry.js +1 -1
  325. package/lib/cjs/tile/map/MapLayerFormatRegistry.js.map +1 -1
  326. package/lib/cjs/tile/map/MapLayerSources.d.ts.map +1 -1
  327. package/lib/cjs/tile/map/MapLayerSources.js +9 -1
  328. package/lib/cjs/tile/map/MapLayerSources.js.map +1 -1
  329. package/lib/cjs/tile/map/MapTile.d.ts.map +1 -1
  330. package/lib/cjs/tile/map/MapTile.js +10 -8
  331. package/lib/cjs/tile/map/MapTile.js.map +1 -1
  332. package/lib/cjs/tile/map/MapTileTree.d.ts.map +1 -1
  333. package/lib/cjs/tile/map/MapTileTree.js +8 -7
  334. package/lib/cjs/tile/map/MapTileTree.js.map +1 -1
  335. package/lib/cjs/tile/map/MapTilingScheme.d.ts.map +1 -1
  336. package/lib/cjs/tile/map/MapTilingScheme.js +2 -1
  337. package/lib/cjs/tile/map/MapTilingScheme.js.map +1 -1
  338. package/lib/cjs/tools/Tool.js +1 -1
  339. package/lib/cjs/tools/Tool.js.map +1 -1
  340. package/lib/cjs/tools/ToolAdmin.d.ts +5 -0
  341. package/lib/cjs/tools/ToolAdmin.d.ts.map +1 -1
  342. package/lib/cjs/tools/ToolAdmin.js +9 -0
  343. package/lib/cjs/tools/ToolAdmin.js.map +1 -1
  344. package/lib/cjs/workers/ImdlParser/webpack.config.js +8 -0
  345. package/lib/esm/BackgroundMapGeometry.js +14 -14
  346. package/lib/esm/BackgroundMapGeometry.js.map +1 -1
  347. package/lib/esm/BriefcaseConnection.d.ts.map +1 -1
  348. package/lib/esm/BriefcaseConnection.js +2 -2
  349. package/lib/esm/BriefcaseConnection.js.map +1 -1
  350. package/lib/esm/CheckpointConnection.d.ts.map +1 -1
  351. package/lib/esm/CheckpointConnection.js +4 -4
  352. package/lib/esm/CheckpointConnection.js.map +1 -1
  353. package/lib/esm/ContextRealityModelState.js.map +1 -1
  354. package/lib/esm/ElementLocateManager.d.ts.map +1 -1
  355. package/lib/esm/ElementLocateManager.js +8 -7
  356. package/lib/esm/ElementLocateManager.js.map +1 -1
  357. package/lib/esm/EmphasizeElements.d.ts.map +1 -1
  358. package/lib/esm/EmphasizeElements.js +3 -1
  359. package/lib/esm/EmphasizeElements.js.map +1 -1
  360. package/lib/esm/EnvironmentDecorations.d.ts.map +1 -1
  361. package/lib/esm/EnvironmentDecorations.js +4 -0
  362. package/lib/esm/EnvironmentDecorations.js.map +1 -1
  363. package/lib/esm/FrustumAnimator.d.ts.map +1 -1
  364. package/lib/esm/FrustumAnimator.js +3 -2
  365. package/lib/esm/FrustumAnimator.js.map +1 -1
  366. package/lib/esm/GlobeAnimator.d.ts.map +1 -1
  367. package/lib/esm/GlobeAnimator.js +7 -6
  368. package/lib/esm/GlobeAnimator.js.map +1 -1
  369. package/lib/esm/HitDetail.d.ts.map +1 -1
  370. package/lib/esm/HitDetail.js +12 -7
  371. package/lib/esm/HitDetail.js.map +1 -1
  372. package/lib/esm/IModelApp.d.ts.map +1 -1
  373. package/lib/esm/IModelApp.js +7 -3
  374. package/lib/esm/IModelApp.js.map +1 -1
  375. package/lib/esm/IModelConnection.d.ts +4 -0
  376. package/lib/esm/IModelConnection.d.ts.map +1 -1
  377. package/lib/esm/IModelConnection.js +158 -16
  378. package/lib/esm/IModelConnection.js.map +1 -1
  379. package/lib/esm/IpcApp.d.ts.map +1 -1
  380. package/lib/esm/IpcApp.js +2 -2
  381. package/lib/esm/IpcApp.js.map +1 -1
  382. package/lib/esm/LinePlaneIntersect.d.ts.map +1 -1
  383. package/lib/esm/LinePlaneIntersect.js +2 -0
  384. package/lib/esm/LinePlaneIntersect.js.map +1 -1
  385. package/lib/esm/LocalhostIpcApp.d.ts.map +1 -1
  386. package/lib/esm/LocalhostIpcApp.js +2 -1
  387. package/lib/esm/LocalhostIpcApp.js.map +1 -1
  388. package/lib/esm/Marker.d.ts.map +1 -1
  389. package/lib/esm/Marker.js +5 -4
  390. package/lib/esm/Marker.js.map +1 -1
  391. package/lib/esm/ModelState.d.ts.map +1 -1
  392. package/lib/esm/ModelState.js +3 -3
  393. package/lib/esm/ModelState.js.map +1 -1
  394. package/lib/esm/NativeApp.d.ts.map +1 -1
  395. package/lib/esm/NativeApp.js +5 -4
  396. package/lib/esm/NativeApp.js.map +1 -1
  397. package/lib/esm/NativeAppLogger.d.ts.map +1 -1
  398. package/lib/esm/NativeAppLogger.js +1 -0
  399. package/lib/esm/NativeAppLogger.js.map +1 -1
  400. package/lib/esm/PlanarClipMaskState.d.ts +3 -0
  401. package/lib/esm/PlanarClipMaskState.d.ts.map +1 -1
  402. package/lib/esm/PlanarClipMaskState.js +8 -4
  403. package/lib/esm/PlanarClipMaskState.js.map +1 -1
  404. package/lib/esm/RealityDataSource.d.ts.map +1 -1
  405. package/lib/esm/RealityDataSource.js +5 -1
  406. package/lib/esm/RealityDataSource.js.map +1 -1
  407. package/lib/esm/SelectionSet.d.ts.map +1 -1
  408. package/lib/esm/SelectionSet.js +2 -1
  409. package/lib/esm/SelectionSet.js.map +1 -1
  410. package/lib/esm/SheetViewState.d.ts.map +1 -1
  411. package/lib/esm/SheetViewState.js +6 -6
  412. package/lib/esm/SheetViewState.js.map +1 -1
  413. package/lib/esm/SpatialViewState.d.ts.map +1 -1
  414. package/lib/esm/SpatialViewState.js +2 -2
  415. package/lib/esm/SpatialViewState.js.map +1 -1
  416. package/lib/esm/Sprites.js +2 -2
  417. package/lib/esm/Sprites.js.map +1 -1
  418. package/lib/esm/TentativePoint.d.ts.map +1 -1
  419. package/lib/esm/TentativePoint.js +10 -9
  420. package/lib/esm/TentativePoint.js.map +1 -1
  421. package/lib/esm/ViewContext.d.ts +10 -1
  422. package/lib/esm/ViewContext.d.ts.map +1 -1
  423. package/lib/esm/ViewContext.js +12 -1
  424. package/lib/esm/ViewContext.js.map +1 -1
  425. package/lib/esm/ViewCreator2d.js +1 -1
  426. package/lib/esm/ViewCreator2d.js.map +1 -1
  427. package/lib/esm/ViewCreator3d.js +1 -1
  428. package/lib/esm/ViewCreator3d.js.map +1 -1
  429. package/lib/esm/ViewPose.d.ts.map +1 -1
  430. package/lib/esm/ViewPose.js +4 -1
  431. package/lib/esm/ViewPose.js.map +1 -1
  432. package/lib/esm/ViewState.d.ts.map +1 -1
  433. package/lib/esm/ViewState.js +18 -13
  434. package/lib/esm/ViewState.js.map +1 -1
  435. package/lib/esm/ViewingSpace.d.ts.map +1 -1
  436. package/lib/esm/ViewingSpace.js +2 -0
  437. package/lib/esm/ViewingSpace.js.map +1 -1
  438. package/lib/esm/Viewport.d.ts.map +1 -1
  439. package/lib/esm/Viewport.js +18 -11
  440. package/lib/esm/Viewport.js.map +1 -1
  441. package/lib/esm/common/ImageUtil.d.ts.map +1 -1
  442. package/lib/esm/common/ImageUtil.js +2 -1
  443. package/lib/esm/common/ImageUtil.js.map +1 -1
  444. package/lib/esm/common/internal/render/GeometryAccumulator.d.ts.map +1 -1
  445. package/lib/esm/common/internal/render/GeometryAccumulator.js +4 -3
  446. package/lib/esm/common/internal/render/GeometryAccumulator.js.map +1 -1
  447. package/lib/esm/common/internal/render/InstancedGraphicPropsBuilder.d.ts.map +1 -1
  448. package/lib/esm/common/internal/render/InstancedGraphicPropsBuilder.js +2 -0
  449. package/lib/esm/common/internal/render/InstancedGraphicPropsBuilder.js.map +1 -1
  450. package/lib/esm/common/internal/render/MeshBuilder.js +2 -2
  451. package/lib/esm/common/internal/render/MeshBuilder.js.map +1 -1
  452. package/lib/esm/common/internal/render/VertexTableBuilder.d.ts.map +1 -1
  453. package/lib/esm/common/internal/render/VertexTableBuilder.js +17 -8
  454. package/lib/esm/common/internal/render/VertexTableBuilder.js.map +1 -1
  455. package/lib/esm/extension/ExtensionAdmin.js +2 -2
  456. package/lib/esm/extension/ExtensionAdmin.js.map +1 -1
  457. package/lib/esm/internal/GoogleMapsDecorator.js +7 -7
  458. package/lib/esm/internal/GoogleMapsDecorator.js.map +1 -1
  459. package/lib/esm/internal/ScriptUtils.js +1 -0
  460. package/lib/esm/internal/ScriptUtils.js.map +1 -1
  461. package/lib/esm/internal/cross-package.d.ts +1 -1
  462. package/lib/esm/internal/cross-package.d.ts.map +1 -1
  463. package/lib/esm/internal/cross-package.js +1 -1
  464. package/lib/esm/internal/cross-package.js.map +1 -1
  465. package/lib/esm/internal/render/UpsampleRealityMeshParams.d.ts.map +1 -1
  466. package/lib/esm/internal/render/UpsampleRealityMeshParams.js +2 -1
  467. package/lib/esm/internal/render/UpsampleRealityMeshParams.js.map +1 -1
  468. package/lib/esm/internal/render/webgl/AtmosphereUniforms.d.ts.map +1 -1
  469. package/lib/esm/internal/render/webgl/AtmosphereUniforms.js +7 -2
  470. package/lib/esm/internal/render/webgl/AtmosphereUniforms.js.map +1 -1
  471. package/lib/esm/internal/render/webgl/AttributeBuffers.d.ts.map +1 -1
  472. package/lib/esm/internal/render/webgl/AttributeBuffers.js +5 -3
  473. package/lib/esm/internal/render/webgl/AttributeBuffers.js.map +1 -1
  474. package/lib/esm/internal/render/webgl/AttributeMap.d.ts.map +1 -1
  475. package/lib/esm/internal/render/webgl/AttributeMap.js +2 -0
  476. package/lib/esm/internal/render/webgl/AttributeMap.js.map +1 -1
  477. package/lib/esm/internal/render/webgl/BackgroundMapDrape.d.ts.map +1 -1
  478. package/lib/esm/internal/render/webgl/BackgroundMapDrape.js +4 -4
  479. package/lib/esm/internal/render/webgl/BackgroundMapDrape.js.map +1 -1
  480. package/lib/esm/internal/render/webgl/BatchUniforms.d.ts +4 -1
  481. package/lib/esm/internal/render/webgl/BatchUniforms.d.ts.map +1 -1
  482. package/lib/esm/internal/render/webgl/BatchUniforms.js +16 -5
  483. package/lib/esm/internal/render/webgl/BatchUniforms.js.map +1 -1
  484. package/lib/esm/internal/render/webgl/BranchState.d.ts.map +1 -1
  485. package/lib/esm/internal/render/webgl/BranchState.js +2 -1
  486. package/lib/esm/internal/render/webgl/BranchState.js.map +1 -1
  487. package/lib/esm/internal/render/webgl/BranchUniforms.js +3 -3
  488. package/lib/esm/internal/render/webgl/BranchUniforms.js.map +1 -1
  489. package/lib/esm/internal/render/webgl/CachedGeometry.d.ts.map +1 -1
  490. package/lib/esm/internal/render/webgl/CachedGeometry.js +3 -3
  491. package/lib/esm/internal/render/webgl/CachedGeometry.js.map +1 -1
  492. package/lib/esm/internal/render/webgl/ClipStack.js +1 -1
  493. package/lib/esm/internal/render/webgl/ClipStack.js.map +1 -1
  494. package/lib/esm/internal/render/webgl/ColorInfo.js +2 -2
  495. package/lib/esm/internal/render/webgl/ColorInfo.js.map +1 -1
  496. package/lib/esm/internal/render/webgl/Contours.js +4 -4
  497. package/lib/esm/internal/render/webgl/Contours.js.map +1 -1
  498. package/lib/esm/internal/render/webgl/EDL.js +19 -19
  499. package/lib/esm/internal/render/webgl/EDL.js.map +1 -1
  500. package/lib/esm/internal/render/webgl/FeatureOverrides.d.ts +3 -3
  501. package/lib/esm/internal/render/webgl/FeatureOverrides.d.ts.map +1 -1
  502. package/lib/esm/internal/render/webgl/FeatureOverrides.js +15 -15
  503. package/lib/esm/internal/render/webgl/FeatureOverrides.js.map +1 -1
  504. package/lib/esm/internal/render/webgl/FrameBuffer.js +4 -4
  505. package/lib/esm/internal/render/webgl/FrameBuffer.js.map +1 -1
  506. package/lib/esm/internal/render/webgl/FrustumUniforms.d.ts.map +1 -1
  507. package/lib/esm/internal/render/webgl/FrustumUniforms.js +2 -1
  508. package/lib/esm/internal/render/webgl/FrustumUniforms.js.map +1 -1
  509. package/lib/esm/internal/render/webgl/GLTimer.d.ts.map +1 -1
  510. package/lib/esm/internal/render/webgl/GLTimer.js +2 -0
  511. package/lib/esm/internal/render/webgl/GLTimer.js.map +1 -1
  512. package/lib/esm/internal/render/webgl/Graphic.d.ts +3 -3
  513. package/lib/esm/internal/render/webgl/Graphic.d.ts.map +1 -1
  514. package/lib/esm/internal/render/webgl/Graphic.js +7 -7
  515. package/lib/esm/internal/render/webgl/Graphic.js.map +1 -1
  516. package/lib/esm/internal/render/webgl/MapLayerParams.js +3 -3
  517. package/lib/esm/internal/render/webgl/MapLayerParams.js.map +1 -1
  518. package/lib/esm/internal/render/webgl/MeshData.js +3 -3
  519. package/lib/esm/internal/render/webgl/MeshData.js.map +1 -1
  520. package/lib/esm/internal/render/webgl/PerformanceMetrics.js +1 -1
  521. package/lib/esm/internal/render/webgl/PerformanceMetrics.js.map +1 -1
  522. package/lib/esm/internal/render/webgl/PlanarClassifier.d.ts +1 -0
  523. package/lib/esm/internal/render/webgl/PlanarClassifier.d.ts.map +1 -1
  524. package/lib/esm/internal/render/webgl/PlanarClassifier.js +28 -12
  525. package/lib/esm/internal/render/webgl/PlanarClassifier.js.map +1 -1
  526. package/lib/esm/internal/render/webgl/PlanarGrid.js +2 -2
  527. package/lib/esm/internal/render/webgl/PlanarGrid.js.map +1 -1
  528. package/lib/esm/internal/render/webgl/PlanarTextureProjection.d.ts +0 -3
  529. package/lib/esm/internal/render/webgl/PlanarTextureProjection.d.ts.map +1 -1
  530. package/lib/esm/internal/render/webgl/PlanarTextureProjection.js +6 -5
  531. package/lib/esm/internal/render/webgl/PlanarTextureProjection.js.map +1 -1
  532. package/lib/esm/internal/render/webgl/PointCloud.js +2 -2
  533. package/lib/esm/internal/render/webgl/PointCloud.js.map +1 -1
  534. package/lib/esm/internal/render/webgl/RealityMesh.js +2 -2
  535. package/lib/esm/internal/render/webgl/RealityMesh.js.map +1 -1
  536. package/lib/esm/internal/render/webgl/RenderBuffer.js +3 -3
  537. package/lib/esm/internal/render/webgl/RenderBuffer.js.map +1 -1
  538. package/lib/esm/internal/render/webgl/RenderCommands.d.ts +2 -1
  539. package/lib/esm/internal/render/webgl/RenderCommands.d.ts.map +1 -1
  540. package/lib/esm/internal/render/webgl/RenderCommands.js +3 -1
  541. package/lib/esm/internal/render/webgl/RenderCommands.js.map +1 -1
  542. package/lib/esm/internal/render/webgl/SceneCompositor.d.ts.map +1 -1
  543. package/lib/esm/internal/render/webgl/SceneCompositor.js +119 -86
  544. package/lib/esm/internal/render/webgl/SceneCompositor.js.map +1 -1
  545. package/lib/esm/internal/render/webgl/ScratchDrawParams.d.ts.map +1 -1
  546. package/lib/esm/internal/render/webgl/ScratchDrawParams.js +11 -10
  547. package/lib/esm/internal/render/webgl/ScratchDrawParams.js.map +1 -1
  548. package/lib/esm/internal/render/webgl/ScreenSpaceEffect.js +4 -4
  549. package/lib/esm/internal/render/webgl/ScreenSpaceEffect.js.map +1 -1
  550. package/lib/esm/internal/render/webgl/ShaderProgram.js +4 -4
  551. package/lib/esm/internal/render/webgl/ShaderProgram.js.map +1 -1
  552. package/lib/esm/internal/render/webgl/ShadowUniforms.d.ts.map +1 -1
  553. package/lib/esm/internal/render/webgl/ShadowUniforms.js +2 -1
  554. package/lib/esm/internal/render/webgl/ShadowUniforms.js.map +1 -1
  555. package/lib/esm/internal/render/webgl/SolarShadowMap.d.ts.map +1 -1
  556. package/lib/esm/internal/render/webgl/SolarShadowMap.js +7 -5
  557. package/lib/esm/internal/render/webgl/SolarShadowMap.js.map +1 -1
  558. package/lib/esm/internal/render/webgl/System.d.ts.map +1 -1
  559. package/lib/esm/internal/render/webgl/System.js +2 -2
  560. package/lib/esm/internal/render/webgl/System.js.map +1 -1
  561. package/lib/esm/internal/render/webgl/Target.d.ts.map +1 -1
  562. package/lib/esm/internal/render/webgl/Target.js +13 -10
  563. package/lib/esm/internal/render/webgl/Target.js.map +1 -1
  564. package/lib/esm/internal/render/webgl/Texture.d.ts.map +1 -1
  565. package/lib/esm/internal/render/webgl/Texture.js +11 -9
  566. package/lib/esm/internal/render/webgl/Texture.js.map +1 -1
  567. package/lib/esm/internal/render/webgl/VisibleTileFeatures.js +1 -1
  568. package/lib/esm/internal/render/webgl/VisibleTileFeatures.js.map +1 -1
  569. package/lib/esm/internal/render/webgl/glsl/Animation.d.ts.map +1 -1
  570. package/lib/esm/internal/render/webgl/glsl/Animation.js +5 -3
  571. package/lib/esm/internal/render/webgl/glsl/Animation.js.map +1 -1
  572. package/lib/esm/internal/render/webgl/glsl/Color.d.ts.map +1 -1
  573. package/lib/esm/internal/render/webgl/glsl/Color.js +2 -1
  574. package/lib/esm/internal/render/webgl/glsl/Color.js.map +1 -1
  575. package/lib/esm/internal/render/webgl/glsl/Composite.js +2 -2
  576. package/lib/esm/internal/render/webgl/glsl/Composite.js.map +1 -1
  577. package/lib/esm/internal/render/webgl/glsl/CopyStencil.d.ts.map +1 -1
  578. package/lib/esm/internal/render/webgl/glsl/CopyStencil.js +3 -2
  579. package/lib/esm/internal/render/webgl/glsl/CopyStencil.js.map +1 -1
  580. package/lib/esm/internal/render/webgl/glsl/PlanarClassification.js +4 -4
  581. package/lib/esm/internal/render/webgl/glsl/PlanarClassification.js.map +1 -1
  582. package/lib/esm/internal/render/webgl/glsl/PlanarGrid.d.ts.map +1 -1
  583. package/lib/esm/internal/render/webgl/glsl/PlanarGrid.js +4 -3
  584. package/lib/esm/internal/render/webgl/glsl/PlanarGrid.js.map +1 -1
  585. package/lib/esm/internal/render/webgl/glsl/RealityMesh.js +9 -9
  586. package/lib/esm/internal/render/webgl/glsl/RealityMesh.js.map +1 -1
  587. package/lib/esm/internal/render/webgl/glsl/Surface.js +11 -11
  588. package/lib/esm/internal/render/webgl/glsl/Surface.js.map +1 -1
  589. package/lib/esm/internal/render/webgl/glsl/Vertex.js +3 -3
  590. package/lib/esm/internal/render/webgl/glsl/Vertex.js.map +1 -1
  591. package/lib/esm/internal/tile/B3dmReader.d.ts.map +1 -1
  592. package/lib/esm/internal/tile/B3dmReader.js +2 -2
  593. package/lib/esm/internal/tile/B3dmReader.js.map +1 -1
  594. package/lib/esm/internal/tile/DynamicIModelTile.js +1 -0
  595. package/lib/esm/internal/tile/DynamicIModelTile.js.map +1 -1
  596. package/lib/esm/internal/tile/FetchCloudStorage.js +1 -1
  597. package/lib/esm/internal/tile/FetchCloudStorage.js.map +1 -1
  598. package/lib/esm/internal/tile/LRUTileList.d.ts.map +1 -1
  599. package/lib/esm/internal/tile/LRUTileList.js +4 -0
  600. package/lib/esm/internal/tile/LRUTileList.js.map +1 -1
  601. package/lib/esm/internal/tile/LayerTileTreeReferenceHandler.d.ts.map +1 -1
  602. package/lib/esm/internal/tile/LayerTileTreeReferenceHandler.js +2 -1
  603. package/lib/esm/internal/tile/LayerTileTreeReferenceHandler.js.map +1 -1
  604. package/lib/esm/internal/tile/OPCFormatInterpreter.js +5 -5
  605. package/lib/esm/internal/tile/OPCFormatInterpreter.js.map +1 -1
  606. package/lib/esm/internal/tile/OrbitGtTileTree.d.ts.map +1 -1
  607. package/lib/esm/internal/tile/OrbitGtTileTree.js +3 -3
  608. package/lib/esm/internal/tile/OrbitGtTileTree.js.map +1 -1
  609. package/lib/esm/internal/tile/PrimaryTileTree.d.ts +2 -0
  610. package/lib/esm/internal/tile/PrimaryTileTree.d.ts.map +1 -1
  611. package/lib/esm/internal/tile/PrimaryTileTree.js +16 -12
  612. package/lib/esm/internal/tile/PrimaryTileTree.js.map +1 -1
  613. package/lib/esm/internal/tile/RealityModelTileTree.d.ts.map +1 -1
  614. package/lib/esm/internal/tile/RealityModelTileTree.js +4 -4
  615. package/lib/esm/internal/tile/RealityModelTileTree.js.map +1 -1
  616. package/lib/esm/internal/tile/RealityTileLoader.d.ts.map +1 -1
  617. package/lib/esm/internal/tile/RealityTileLoader.js +3 -0
  618. package/lib/esm/internal/tile/RealityTileLoader.js.map +1 -1
  619. package/lib/esm/internal/tile/ThreeDTileFormatInterpreter.js +4 -4
  620. package/lib/esm/internal/tile/ThreeDTileFormatInterpreter.js.map +1 -1
  621. package/lib/esm/internal/tile/TileUserSet.d.ts.map +1 -1
  622. package/lib/esm/internal/tile/TileUserSet.js +4 -0
  623. package/lib/esm/internal/tile/TileUserSet.js.map +1 -1
  624. package/lib/esm/internal/tile/map/ArcGISTileMap.js +1 -1
  625. package/lib/esm/internal/tile/map/ArcGISTileMap.js.map +1 -1
  626. package/lib/esm/internal/tile/map/ArcGisUtilities.d.ts.map +1 -1
  627. package/lib/esm/internal/tile/map/ArcGisUtilities.js +4 -0
  628. package/lib/esm/internal/tile/map/ArcGisUtilities.js.map +1 -1
  629. package/lib/esm/internal/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.d.ts.map +1 -1
  630. package/lib/esm/internal/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js +3 -1
  631. package/lib/esm/internal/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js.map +1 -1
  632. package/lib/esm/internal/tile/map/ImageryProviders/BingImageryProvider.js +3 -3
  633. package/lib/esm/internal/tile/map/ImageryProviders/BingImageryProvider.js.map +1 -1
  634. package/lib/esm/internal/tile/map/ImageryProviders/WmsMapLayerImageryProvider.js +2 -2
  635. package/lib/esm/internal/tile/map/ImageryProviders/WmsMapLayerImageryProvider.js.map +1 -1
  636. package/lib/esm/internal/tile/map/MapTileAvailability.d.ts.map +1 -1
  637. package/lib/esm/internal/tile/map/MapTileAvailability.js +6 -3
  638. package/lib/esm/internal/tile/map/MapTileAvailability.js.map +1 -1
  639. package/lib/esm/internal/tile/map/WmtsCapabilities.d.ts.map +1 -1
  640. package/lib/esm/internal/tile/map/WmtsCapabilities.js +3 -2
  641. package/lib/esm/internal/tile/map/WmtsCapabilities.js.map +1 -1
  642. package/lib/esm/properties/FormattedQuantityDescription.d.ts.map +1 -1
  643. package/lib/esm/properties/FormattedQuantityDescription.js +2 -0
  644. package/lib/esm/properties/FormattedQuantityDescription.js.map +1 -1
  645. package/lib/esm/quantity-formatting/BaseUnitFormattingSettingsProvider.d.ts.map +1 -1
  646. package/lib/esm/quantity-formatting/BaseUnitFormattingSettingsProvider.js +2 -0
  647. package/lib/esm/quantity-formatting/BaseUnitFormattingSettingsProvider.js.map +1 -1
  648. package/lib/esm/quantity-formatting/QuantityFormatter.d.ts.map +1 -1
  649. package/lib/esm/quantity-formatting/QuantityFormatter.js +5 -3
  650. package/lib/esm/quantity-formatting/QuantityFormatter.js.map +1 -1
  651. package/lib/esm/tile/GltfReader.d.ts +5 -2
  652. package/lib/esm/tile/GltfReader.d.ts.map +1 -1
  653. package/lib/esm/tile/GltfReader.js +70 -18
  654. package/lib/esm/tile/GltfReader.js.map +1 -1
  655. package/lib/esm/tile/RealityTile.d.ts.map +1 -1
  656. package/lib/esm/tile/RealityTile.js +3 -3
  657. package/lib/esm/tile/RealityTile.js.map +1 -1
  658. package/lib/esm/tile/RealityTileTree.d.ts.map +1 -1
  659. package/lib/esm/tile/RealityTileTree.js +6 -6
  660. package/lib/esm/tile/RealityTileTree.js.map +1 -1
  661. package/lib/esm/tile/TileAdmin.js.map +1 -1
  662. package/lib/esm/tile/TileDrawArgs.d.ts.map +1 -1
  663. package/lib/esm/tile/TileDrawArgs.js +2 -1
  664. package/lib/esm/tile/TileDrawArgs.js.map +1 -1
  665. package/lib/esm/tile/map/ImageryTileTree.js +2 -2
  666. package/lib/esm/tile/map/ImageryTileTree.js.map +1 -1
  667. package/lib/esm/tile/map/MapLayerFormatRegistry.js +2 -2
  668. package/lib/esm/tile/map/MapLayerFormatRegistry.js.map +1 -1
  669. package/lib/esm/tile/map/MapLayerSources.d.ts.map +1 -1
  670. package/lib/esm/tile/map/MapLayerSources.js +10 -2
  671. package/lib/esm/tile/map/MapLayerSources.js.map +1 -1
  672. package/lib/esm/tile/map/MapTile.d.ts.map +1 -1
  673. package/lib/esm/tile/map/MapTile.js +11 -9
  674. package/lib/esm/tile/map/MapTile.js.map +1 -1
  675. package/lib/esm/tile/map/MapTileTree.d.ts.map +1 -1
  676. package/lib/esm/tile/map/MapTileTree.js +9 -8
  677. package/lib/esm/tile/map/MapTileTree.js.map +1 -1
  678. package/lib/esm/tile/map/MapTilingScheme.d.ts.map +1 -1
  679. package/lib/esm/tile/map/MapTilingScheme.js +2 -1
  680. package/lib/esm/tile/map/MapTilingScheme.js.map +1 -1
  681. package/lib/esm/tools/Tool.js +2 -2
  682. package/lib/esm/tools/Tool.js.map +1 -1
  683. package/lib/esm/tools/ToolAdmin.d.ts +5 -0
  684. package/lib/esm/tools/ToolAdmin.d.ts.map +1 -1
  685. package/lib/esm/tools/ToolAdmin.js +9 -0
  686. package/lib/esm/tools/ToolAdmin.js.map +1 -1
  687. package/lib/esm/workers/ImdlParser/webpack.config.js +8 -0
  688. package/lib/public/images/GoogleMaps_Logo_Gray.svg +50 -0
  689. package/lib/public/images/GoogleMaps_Logo_WithDarkOutline.svg +78 -0
  690. package/lib/public/images/GoogleMaps_Logo_WithLightOutline.svg +78 -0
  691. package/lib/public/locales/en/iModelJs.json +1 -1
  692. package/lib/public/scripts/draco_decoder.wasm +0 -0
  693. package/lib/public/scripts/draco_encoder.js +52 -0
  694. package/lib/public/scripts/draco_wasm_wrapper.js +117 -0
  695. package/lib/public/scripts/parse-imdl-worker.js +1 -1
  696. package/lib/workers/webpack/parse-imdl-worker.js +1 -1
  697. package/package.json +25 -23
  698. package/lib/public/images/google_on_non_white.png +0 -0
  699. package/lib/public/images/google_on_non_white_hdpi.png +0 -0
  700. package/lib/public/images/google_on_white.png +0 -0
  701. package/lib/public/images/google_on_white_hdpi.png +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"MapTile.d.ts","sourceRoot":"","sources":["../../../../src/tile/map/MapTile.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"MapTile.d.ts","sourceRoot":"","sources":["../../../../src/tile/map/MapTile.ts"],"names":[],"mappings":"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"}
@@ -69,7 +69,7 @@ class EllipsoidProjection extends MapTileProjection {
69
69
  getPoint(u, v, height, result) {
70
70
  const angles = this._patch.uvFractionToAngles(u, v, height, EllipsoidProjection._scratchAngles);
71
71
  const ray = this._patch.anglesToUnitNormalRay(angles, EllipsoidProjection._scratchRay);
72
- return core_geometry_1.Point3d.createFrom(ray.origin, result);
72
+ return core_geometry_1.Point3d.createFrom((0, core_bentley_1.expectDefined)(ray).origin, result);
73
73
  }
74
74
  get ellipsoidPatch() { return this._patch; }
75
75
  }
@@ -81,7 +81,7 @@ class PlanarProjection extends MapTileProjection {
81
81
  constructor(patch, heightRange) {
82
82
  super();
83
83
  this.transformFromLocal = core_geometry_1.Transform.createOriginAndMatrix(patch.corners[0], core_geometry_1.Matrix3d.createRigidHeadsUp(patch.normal, core_geometry_1.AxisOrder.ZYX));
84
- const planeCorners = this.transformFromLocal.multiplyInversePoint3dArray([patch.corners[0], patch.corners[1], patch.corners[2], patch.corners[3]]);
84
+ const planeCorners = (0, core_bentley_1.expectDefined)(this.transformFromLocal.multiplyInversePoint3dArray([patch.corners[0], patch.corners[1], patch.corners[2], patch.corners[3]]));
85
85
  this.localRange = core_geometry_1.Range3d.createArray(planeCorners);
86
86
  this.localRange.low.z += heightRange ? heightRange.low : 0;
87
87
  this.localRange.high.z += heightRange ? heightRange.high : 0;
@@ -165,7 +165,7 @@ class MapTile extends internal_1.RealityTile {
165
165
  }
166
166
  /** @internal */
167
167
  getRangeCorners(result) {
168
- return this._patch instanceof PlanarTilePatch ? this._patch.getRangeCorners(this.heightRange, result) : this.range.corners(result);
168
+ return this._patch instanceof PlanarTilePatch ? this._patch.getRangeCorners((0, core_bentley_1.expectDefined)(this.heightRange), result) : this.range.corners(result);
169
169
  }
170
170
  /** @internal */
171
171
  getSizeProjectionCorners() {
@@ -220,7 +220,7 @@ class MapTile extends internal_1.RealityTile {
220
220
  return;
221
221
  const heightRange = (this.heightRange === undefined) ? core_geometry_1.Range1d.createXX(-1, 1) : this.heightRange;
222
222
  const lows = [], highs = [], reorder = [0, 1, 3, 2, 0];
223
- const cornerRays = this._cornerRays;
223
+ const cornerRays = (0, core_bentley_1.expectDefined)(this._cornerRays);
224
224
  if (this._patch instanceof PlanarTilePatch) {
225
225
  const normal = this._patch.normal;
226
226
  for (let i = 0; i < 5; i++) {
@@ -284,7 +284,7 @@ class MapTile extends internal_1.RealityTile {
284
284
  return core_geometry_1.ClipVector.createCapture([clipPrimitive]);
285
285
  }
286
286
  else {
287
- return core_geometry_1.ClipVector.createCapture([core_geometry_1.ClipShape.createShape(points)]);
287
+ return core_geometry_1.ClipVector.createCapture([(0, core_bentley_1.expectDefined)(core_geometry_1.ClipShape.createShape(points))]);
288
288
  }
289
289
  }
290
290
  /** @internal */
@@ -449,6 +449,8 @@ class MapTile extends internal_1.RealityTile {
449
449
  }
450
450
  /** @internal */
451
451
  getClipShape() {
452
+ if (undefined === this._cornerRays)
453
+ throw new Error("MapTile.getClipShape called before corner rays were set");
452
454
  return (this._patch instanceof PlanarTilePatch) ? this._patch.getClipShape() : [this._cornerRays[0].origin, this._cornerRays[1].origin, this._cornerRays[3].origin, this._cornerRays[2].origin];
453
455
  }
454
456
  /** @internal */
@@ -487,11 +489,11 @@ class MapTile extends internal_1.RealityTile {
487
489
  if (undefined === this._heightRange)
488
490
  this._heightRange = core_geometry_1.Range1d.createXX(minHeight, maxHeight);
489
491
  else {
490
- this._heightRange.low = Math.max(this.heightRange.low, minHeight);
491
- this._heightRange.high = Math.min(this.heightRange.high, maxHeight);
492
+ this._heightRange.low = Math.max((0, core_bentley_1.expectDefined)(this.heightRange).low, minHeight);
493
+ this._heightRange.high = Math.min((0, core_bentley_1.expectDefined)(this.heightRange).high, maxHeight);
492
494
  }
493
495
  if (this.rangeCorners && this._patch instanceof PlanarTilePatch)
494
- this._patch.getRangeCorners(this.heightRange, this.rangeCorners);
496
+ this._patch.getRangeCorners((0, core_bentley_1.expectDefined)(this.heightRange), this.rangeCorners);
495
497
  }
496
498
  /** Obtain a [[MapTileProjection]] to project positions within this tile's area into 3d space. */
497
499
  getProjection(heightRange) {
@@ -1 +1 @@
1
- {"version":3,"file":"MapTile.js","sourceRoot":"","sources":["../../../../src/tile/map/MapTile.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/** @packageDocumentation\r\n * @module Tiles\r\n */\r\n\r\nimport { assert, dispose } from \"@itwin/core-bentley\";\r\nimport { ColorByName, ColorDef, FrustumPlanes, GlobeMode, PackedFeatureTable, RenderTexture } from \"@itwin/core-common\";\r\nimport { AxisOrder, BilinearPatch, ClipPlane, ClipPrimitive, ClipShape, ClipVector, Constant, ConvexClipPlaneSet, EllipsoidPatch, LongitudeLatitudeNumber, Matrix3d, Point3d, PolygonOps, Range1d, Range2d, Range3d, Ray3d, Transform, Vector2d, Vector3d } from \"@itwin/core-geometry\";\r\nimport { IModelApp } from \"../../IModelApp\";\r\nimport { GraphicBuilder } from \"../../render/GraphicBuilder\";\r\nimport { RealityMeshParams } from \"../../render/RealityMeshParams\";\r\nimport { upsampleRealityMeshParams } from \"../../internal/render/UpsampleRealityMeshParams\";\r\nimport { RenderGraphic } from \"../../render/RenderGraphic\";\r\nimport { RenderMemory } from \"../../render/RenderMemory\";\r\nimport { RenderSystem } from \"../../render/RenderSystem\";\r\nimport { RenderTerrainGeometry, TerrainTexture } from \"../../internal/render/RenderTerrain\";\r\nimport { ViewingSpace } from \"../../ViewingSpace\";\r\nimport {\r\n ImageryMapTile, MapCartoRectangle, MapTileLoader, MapTileTree, QuadId, RealityTile, RealityTileParams, Tile, TileContent, TileDrawArgs, TileGraphicType,\r\n TileLoadStatus, TileTreeLoadStatus, TraversalSelectionContext,\r\n} from \"../internal\";\r\n\r\n/** @internal */\r\nexport class PlanarTilePatch {\r\n constructor(public corners: Point3d[], public normal: Vector3d, private _chordHeight: number) {\r\n }\r\n\r\n public getRangeCorners(heightRange: Range1d, result: Point3d[]): Point3d[] {\r\n let index = 0;\r\n for (const corner of this.corners)\r\n corner.plusScaled(this.normal, heightRange.low - this._chordHeight, result[index++]);\r\n\r\n for (const corner of this.corners)\r\n corner.plusScaled(this.normal, heightRange.high + this._chordHeight, result[index++]);\r\n\r\n return result;\r\n }\r\n public getClipShape(): Point3d[] {\r\n return [this.corners[0], this.corners[1], this.corners[3], this.corners[2]];\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport type TilePatch = PlanarTilePatch | EllipsoidPatch;\r\n\r\n/** Projects points within the rectangular region of a [[MapTile]] into 3d space.\r\n * @see [[MapTile.getProjection]] to obtain the projection for a [[MapTile]].\r\n * @public\r\n */\r\nexport abstract class MapTileProjection {\r\n /** The extents of the volume of space associated with the projected [[MapTile]]. */\r\n public abstract get localRange(): Range3d;\r\n /** @alpha */\r\n public abstract get transformFromLocal(): Transform;\r\n\r\n /** Given parametric coordinates in [0, 1] within the tile's rectangular region, and an elevation above the Earth,\r\n * compute the 3d position in space.\r\n */\r\n public abstract getPoint(u: number, v: number, height: number, result?: Point3d): Point3d;\r\n\r\n /** @alpha */\r\n public get ellipsoidPatch(): EllipsoidPatch | undefined { return undefined; }\r\n\r\n /** @alpha */\r\n public getGlobalPoint(u: number, v: number, z: number, result?: Point3d): Point3d {\r\n const point = this.getPoint(u, v, z, result);\r\n return this.transformFromLocal.multiplyPoint3d(point, point);\r\n }\r\n}\r\n\r\n/** @alpha */\r\nclass EllipsoidProjection extends MapTileProjection {\r\n public transformFromLocal = Transform.createIdentity();\r\n public localRange: Range3d;\r\n constructor(private _patch: EllipsoidPatch, heightRange?: Range1d) {\r\n super();\r\n this.localRange = _patch.range();\r\n this.localRange.expandInPlace(heightRange ? (heightRange.high - heightRange.low) : 0);\r\n }\r\n private static _scratchAngles = LongitudeLatitudeNumber.createZero();\r\n private static _scratchRay = Ray3d.createZero();\r\n public getPoint(u: number, v: number, height: number, result?: Point3d): Point3d {\r\n const angles = this._patch.uvFractionToAngles(u, v, height, EllipsoidProjection._scratchAngles);\r\n const ray = this._patch.anglesToUnitNormalRay(angles, EllipsoidProjection._scratchRay);\r\n return Point3d.createFrom(ray!.origin, result);\r\n }\r\n public override get ellipsoidPatch() { return this._patch; }\r\n}\r\n\r\n/** @alpha */\r\nexport class PlanarProjection extends MapTileProjection {\r\n private _bilinearPatch: BilinearPatch;\r\n public transformFromLocal: Transform;\r\n public localRange: Range3d;\r\n constructor(patch: PlanarTilePatch, heightRange?: Range1d) {\r\n super();\r\n this.transformFromLocal = Transform.createOriginAndMatrix(patch.corners[0], Matrix3d.createRigidHeadsUp(patch.normal, AxisOrder.ZYX));\r\n const planeCorners = this.transformFromLocal.multiplyInversePoint3dArray([patch.corners[0], patch.corners[1], patch.corners[2], patch.corners[3]])!;\r\n this.localRange = Range3d.createArray(planeCorners);\r\n this.localRange.low.z += heightRange ? heightRange.low : 0;\r\n this.localRange.high.z += heightRange ? heightRange.high : 0;\r\n this._bilinearPatch = new BilinearPatch(planeCorners[0], planeCorners[1], planeCorners[2], planeCorners[3]);\r\n }\r\n public getPoint(u: number, v: number, z: number, result?: Point3d): Point3d {\r\n result = this._bilinearPatch.uvFractionToPoint(u, v, result);\r\n result.z += z;\r\n return result;\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport interface TerrainTileContent extends TileContent {\r\n terrain?: {\r\n renderGeometry?: RenderTerrainGeometry;\r\n /** Used on leaves to support up-sampling. */\r\n mesh?: RealityMeshParams;\r\n };\r\n}\r\n\r\nconst scratchNormal = Vector3d.create();\r\nconst scratchViewZ = Vector3d.create();\r\nconst scratchPoint = Point3d.create();\r\nconst scratchClipPlanes = [ClipPlane.createNormalAndPoint(scratchNormal, scratchPoint), ClipPlane.createNormalAndPoint(scratchNormal, scratchPoint), ClipPlane.createNormalAndPoint(scratchNormal, scratchPoint), ClipPlane.createNormalAndPoint(scratchNormal, scratchPoint)];\r\nconst scratchCorners = [Point3d.createZero(), Point3d.createZero(), Point3d.createZero(), Point3d.createZero(), Point3d.createZero(), Point3d.createZero(), Point3d.createZero(), Point3d.createZero()];\r\n\r\n/** A [[Tile]] belonging to a [[MapTileTree]] representing a rectangular region of a map of the Earth.\r\n * @public\r\n */\r\nexport class MapTile extends RealityTile {\r\n private static _maxParentHeightDepth = 4;\r\n private _imageryTiles?: ImageryMapTile[];\r\n private _hiddenTiles?: ImageryMapTile[];\r\n private _highResolutionReplacementTiles?: ImageryMapTile[];\r\n /** @internal */\r\n public everLoaded = false; // If the tile is only required for availability metadata, load it once and then allow it to be unloaded.\r\n /** @internal */\r\n protected _heightRange: Range1d | undefined;\r\n /** @internal */\r\n protected _renderGeometry?: RenderTerrainGeometry;\r\n /** @internal */\r\n protected _mesh?: RealityMeshParams; // Primitive retained on leaves only for upsampling.\r\n /** @internal */\r\n public override get isReady(): boolean {\r\n return super.isReady && this.baseImageryIsReady;\r\n }\r\n\r\n /** @internal */\r\n public override get hasGraphics(): boolean {\r\n return this._renderGeometry !== undefined;\r\n }\r\n\r\n /** @internal */\r\n public get renderGeometry() { return this._renderGeometry; }\r\n /** @internal */\r\n public get mesh() { return this._mesh; }\r\n /** @internal */\r\n public get loadableTerrainTile() { return this.loadableTile as MapTile; }\r\n /** @internal */\r\n public get isPlanar(): boolean { return this._patch instanceof PlanarTilePatch; }\r\n /** @internal */\r\n public get imageryTiles(): ImageryMapTile[] | undefined { return this._imageryTiles; }\r\n /** List of selected tiles but are currently in hidden state (i.e. scale range visibility)\r\n * @internal\r\n */\r\n public get hiddenImageryTiles(): ImageryMapTile[] | undefined { return this._hiddenTiles; }\r\n\r\n /** List of leafs tiles that have been selected as a replacement for missing high resolution tiles.\r\n * When this list is non-empty this means we are past the maximum LOD available of the tile tree.\r\n * By using those tiles, you are likely to get a display where tiles looks pixelated..\r\n * in some cases this is preferred to have no tile at all.\r\n * @internal\r\n */\r\n public get highResolutionReplacementTiles(): ImageryMapTile[] | undefined { return this._highResolutionReplacementTiles; }\r\n\r\n /** The [[MapTileTree]] to which this tile belongs. */\r\n public readonly mapTree: MapTileTree;\r\n /** Uniquely identifies this tile within its [[mapTree]]. */\r\n public readonly quadId: QuadId;\r\n private _patch: TilePatch;\r\n /** The area of the surface of the Earth that this tile represents. */\r\n public readonly rectangle: MapCartoRectangle;\r\n /** @internal */\r\n protected _cornerRays?: Ray3d[];\r\n\r\n /** @internal */\r\n constructor(params: RealityTileParams, mapTree: MapTileTree, quadId: QuadId, patch: TilePatch, rectangle: MapCartoRectangle, heightRange: Range1d | undefined, cornerRays: Ray3d[] | undefined) {\r\n super(params, mapTree);\r\n this.mapTree = mapTree;\r\n this.quadId = quadId;\r\n this._patch = patch;\r\n this.rectangle = rectangle;\r\n this._cornerRays = cornerRays;\r\n this._heightRange = heightRange?.clone();\r\n }\r\n\r\n /** @internal */\r\n public getRangeCorners(result: Point3d[]): Point3d[] {\r\n return this._patch instanceof PlanarTilePatch ? this._patch.getRangeCorners(this.heightRange!, result) : this.range.corners(result);\r\n }\r\n\r\n /** @internal */\r\n public override getSizeProjectionCorners(): Point3d[] | undefined {\r\n // Use only the first 4 corners -- On terrain tiles the height is initially exagerated to world height range which can cause excessive tile loading.\r\n const rangeCorners = this.getRangeCorners(scratchCorners);\r\n return rangeCorners.slice(0, 4);\r\n }\r\n\r\n /** @internal */\r\n public override markUsed(args: TileDrawArgs) {\r\n super.markUsed(args);\r\n if (this._imageryTiles)\r\n for (const imageryTile of this._imageryTiles)\r\n imageryTile.markUsed(args);\r\n }\r\n\r\n /** @internal */\r\n public override get graphicType() {\r\n if (this.mapTree.isOverlay)\r\n return TileGraphicType.Overlay;\r\n\r\n return (this.mapTree.useDepthBuffer || this._forceDepthBuffer) ? TileGraphicType.Scene : TileGraphicType.BackgroundMap;\r\n }\r\n\r\n /** @internal */\r\n public get mapLoader() { return this.realityRoot.loader as MapTileLoader; }\r\n /** @internal */\r\n public get isUpsampled() { return false; }\r\n\r\n /** @internal */\r\n public tileFromQuadId(quadId: QuadId): MapTile | undefined {\r\n if (0 === quadId.compare(this.quadId))\r\n return this;\r\n\r\n assert(quadId.level > this.quadId.level);\r\n if (quadId.level <= this.quadId.level)\r\n return undefined;\r\n\r\n if (this.children) {\r\n const shift = quadId.level - this.quadId.level - 1;\r\n const childRow = quadId.row >> shift;\r\n const childColumn = quadId.column >> shift;\r\n for (const child of this.children) {\r\n const mapChild = child as MapTile;\r\n const childQuadId = mapChild.quadId;\r\n if (childQuadId.row === childRow && childQuadId.column === childColumn)\r\n return mapChild.tileFromQuadId(quadId);\r\n }\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n private get _forceDepthBuffer() {\r\n // For large ellipsoidal globe tile force the depth buffer on to avoid anomalies at horizon.\r\n return this.mapTree.globeMode === GlobeMode.Ellipsoid && this.depth < 8;\r\n }\r\n\r\n /** @internal */\r\n public override addBoundingGraphic(builder: GraphicBuilder, color: ColorDef) {\r\n if (!this.isDisplayable)\r\n return;\r\n\r\n const heightRange = (this.heightRange === undefined) ? Range1d.createXX(-1, 1) : this.heightRange;\r\n const lows = [], highs = [], reorder = [0, 1, 3, 2, 0];\r\n const cornerRays = this._cornerRays!;\r\n if (this._patch instanceof PlanarTilePatch) {\r\n const normal = this._patch.normal;\r\n for (let i = 0; i < 5; i++) {\r\n const corner = this._patch.corners[reorder[i]];\r\n lows.push(corner.plusScaled(normal, heightRange.low));\r\n highs.push(corner.plusScaled(normal, heightRange.high));\r\n }\r\n } else {\r\n for (let i = 0; i < 5; i++) {\r\n const cornerRay = cornerRays[reorder[i]];\r\n lows.push(cornerRay.origin.plusScaled(cornerRay.direction, heightRange.low));\r\n highs.push(cornerRay.origin.plusScaled(cornerRay.direction, heightRange.high));\r\n }\r\n }\r\n\r\n builder.setSymbology(color, color, 1);\r\n builder.addLineString(lows);\r\n builder.addLineString(highs);\r\n for (let i = 0; i < 4; i++)\r\n builder.addLineString([lows[i], highs[i]]);\r\n\r\n const inColor = ColorDef.create(ColorByName.cornflowerBlue);\r\n const outColor = ColorDef.create(ColorByName.chartreuse);\r\n const transitionColor = ColorDef.create(ColorByName.aquamarine);\r\n\r\n const inPoints = [], outPoints = [], transitionPoints = [];\r\n\r\n for (const point of highs)\r\n if (this.mapTree.cartesianRange.containsPoint(point))\r\n inPoints.push(point);\r\n else if (this.mapTree.cartesianRange.distanceToPoint(point) < this.mapTree.cartesianTransitionDistance)\r\n transitionPoints.push(point);\r\n else\r\n outPoints.push(point);\r\n\r\n builder.setSymbology(inColor, inColor, 15);\r\n builder.addPointString(inPoints);\r\n builder.setSymbology(outColor, outColor, 15);\r\n builder.addPointString(outPoints);\r\n builder.setSymbology(transitionColor, transitionColor, 31);\r\n builder.addPointString(transitionPoints);\r\n }\r\n\r\n /** @internal */\r\n public override getContentClip(): ClipVector | undefined {\r\n const points = this.getClipShape();\r\n if (points.length < 3)\r\n return undefined;\r\n if (this.mapTree.globeMode === GlobeMode.Ellipsoid) {\r\n const normal = PolygonOps.areaNormal(points);\r\n const globeOrigin = this.mapTree.globeOrigin;\r\n const globeNormal = Vector3d.createStartEnd(globeOrigin, points[0]);\r\n const negate = normal.dotProduct(globeNormal) < 0;\r\n const clipPlanes = [];\r\n for (let i = 0; i < 4; i++) {\r\n const point = points[i];\r\n const clipNormal = globeOrigin.crossProductToPoints(point, points[(i + 1) % 4], scratchNormal);\r\n if (negate)\r\n clipNormal.negate(clipNormal);\r\n\r\n const clipPlane = ClipPlane.createNormalAndPoint(clipNormal, point, false, false, scratchClipPlanes[i]);\r\n if (clipPlane !== undefined) // Undefined at pole tiles...\r\n clipPlanes.push(clipPlane);\r\n }\r\n\r\n const planeSet = ConvexClipPlaneSet.createPlanes(clipPlanes);\r\n const clipPrimitive = ClipPrimitive.createCapture(planeSet);\r\n\r\n return ClipVector.createCapture([clipPrimitive]);\r\n } else {\r\n return ClipVector.createCapture([ClipShape.createShape(points)!]);\r\n }\r\n }\r\n\r\n /** @internal */\r\n public override setNotFound(): void {\r\n super.setNotFound();\r\n\r\n // For map tiles assume that an unfound tile implies descendants and siblings will also be unfound.\r\n if (undefined !== this.parent)\r\n this.parent.setLeaf();\r\n }\r\n\r\n /** @internal */\r\n public getGraphic(_system: RenderSystem, _texture: RenderTexture): RenderGraphic | undefined {\r\n return undefined;\r\n }\r\n\r\n /** For globe tiles displaying less then depth 2 appears distorted\r\n * @internal\r\n */\r\n public override get isDisplayable() {\r\n return this.mapTree.globeMode === GlobeMode.Ellipsoid ? (this.depth >= MapTileTree.minDisplayableDepth) : super.isDisplayable;\r\n }\r\n\r\n /** @internal */\r\n public override isOccluded(viewingSpace: ViewingSpace): boolean {\r\n if (undefined === this._cornerRays || this.mapTree.globeMode !== GlobeMode.Ellipsoid)\r\n return false;\r\n\r\n if (viewingSpace.eyePoint !== undefined) {\r\n if (!this.mapTree.pointAboveEllipsoid(viewingSpace.eyePoint))\r\n return false;\r\n\r\n for (const cornerNormal of this._cornerRays) {\r\n const eyeNormal = Vector3d.createStartEnd(viewingSpace.eyePoint, cornerNormal.origin, scratchNormal);\r\n eyeNormal.normalizeInPlace();\r\n if (eyeNormal.dotProduct(cornerNormal.direction) < .01)\r\n return false;\r\n }\r\n } else {\r\n const viewZ = viewingSpace.rotation.getRow(2, scratchViewZ);\r\n for (const cornerNormal of this._cornerRays)\r\n if (cornerNormal.direction.dotProduct(viewZ) > 0)\r\n return false;\r\n }\r\n\r\n return true;\r\n }\r\n\r\n /** @internal */\r\n protected override _loadChildren(resolve: (children: Tile[] | undefined) => void, _reject: (error: Error) => void): void {\r\n const mapTree = this.mapTree;\r\n const childLevel = this.quadId.level + 1;\r\n const rowCount = mapTree.sourceTilingScheme.getNumberOfYChildrenAtLevel(childLevel);\r\n const columnCount = mapTree.sourceTilingScheme.getNumberOfXChildrenAtLevel(childLevel);\r\n\r\n const resolveChildren = (children: Tile[]) => {\r\n const childrenRange = Range3d.createNull();\r\n for (const child of children)\r\n childrenRange.extendRange(child.range);\r\n\r\n if (!this.range.containsRange(childrenRange))\r\n this.range.extendRange(childrenRange);\r\n\r\n resolve(children);\r\n };\r\n\r\n if (mapTree.doCreateGlobeChildren(this)) {\r\n this.createGlobeChildren(columnCount, rowCount, resolveChildren);\r\n return;\r\n }\r\n\r\n const resolvePlanarChildren = (childCorners: Point3d[][]) => {\r\n const level = this.quadId.level + 1;\r\n const column = this.quadId.column * 2;\r\n const row = this.quadId.row * 2;\r\n const children = [];\r\n const childrenAreLeaves = (this.depth + 1) === mapTree.loader.maxDepth;\r\n const globeMode = this.mapTree.globeMode;\r\n for (let j = 0; j < rowCount; j++) {\r\n for (let i = 0; i < columnCount; i++) {\r\n const quadId = new QuadId(level, column + i, row + j);\r\n const corners = childCorners[j * columnCount + i];\r\n const rectangle = mapTree.getTileRectangle(quadId);\r\n const normal = PolygonOps.areaNormal([corners[0], corners[1], corners[3], corners[2]]);\r\n normal.normalizeInPlace();\r\n\r\n const heightRange = this.mapTree.getChildHeightRange(quadId, rectangle, this);\r\n const diagonal = Math.max(corners[0].distance(corners[3]), corners[1].distance(corners[2])) / 2.0;\r\n const chordHeight = globeMode === GlobeMode.Ellipsoid ? Math.sqrt(diagonal * diagonal + Constant.earthRadiusWGS84.equator * Constant.earthRadiusWGS84.equator) - Constant.earthRadiusWGS84.equator : 0.0;\r\n const rangeCorners = MapTile.computeRangeCorners(corners, normal, chordHeight, undefined, heightRange);\r\n const range = Range3d.createArray(rangeCorners);\r\n const child = this.mapTree.createPlanarChild({ contentId: quadId.contentId, maximumSize: 512, range, parent: this, isLeaf: childrenAreLeaves }, quadId, corners, normal, rectangle, chordHeight, heightRange);\r\n if (child)\r\n children.push(child);\r\n }\r\n }\r\n\r\n resolveChildren(children);\r\n };\r\n\r\n mapTree.getPlanarChildCorners(this, columnCount, rowCount, resolvePlanarChildren);\r\n }\r\n\r\n private createGlobeChildren(columnCount: number, rowCount: number, resolve: (children: MapTile[]) => void) {\r\n const level = this.quadId.level + 1;\r\n const column = this.quadId.column * 2;\r\n const row = this.quadId.row * 2;\r\n const mapTree = this.mapTree;\r\n const children = [];\r\n\r\n for (let j = 0; j < rowCount; j++) {\r\n for (let i = 0; i < columnCount; i++) {\r\n const quadId = new QuadId(level, column + i, row + j);\r\n const angleSweep = quadId.getAngleSweep(mapTree.sourceTilingScheme);\r\n const ellipsoidPatch = EllipsoidPatch.createCapture(this.mapTree.earthEllipsoid, angleSweep.longitude, angleSweep.latitude);\r\n const range = ellipsoidPatch.range();\r\n const rectangle = mapTree.getTileRectangle(quadId);\r\n const heightRange = this.mapTree.getChildHeightRange(quadId, rectangle, this);\r\n if (undefined !== heightRange)\r\n range.expandInPlace(heightRange.high - heightRange.low);\r\n\r\n children.push(this.mapTree.createGlobeChild({ contentId: quadId.contentId, maximumSize: 512, range, parent: this, isLeaf: false }, quadId, range.corners(), rectangle, ellipsoidPatch, heightRange));\r\n }\r\n }\r\n\r\n resolve(children);\r\n return children;\r\n }\r\n\r\n /** @internal */\r\n public static computeRangeCorners(corners: Point3d[], normal: Vector3d, chordHeight: number, result?: Point3d[], heightRange?: Range1d) {\r\n if (result === undefined) {\r\n result = [];\r\n for (let i = 0; i < 8; i++)\r\n result.push(Point3d.create());\r\n }\r\n\r\n let index = 0;\r\n assert(corners.length === 4);\r\n const deltaLow = normal.scale(- chordHeight + (heightRange ? heightRange.low : 0));\r\n const deltaHigh = normal.scale(chordHeight + (heightRange ? heightRange.high : 0));\r\n\r\n for (const corner of corners)\r\n corner.plus(deltaLow, result[index++]);\r\n\r\n for (const corner of corners)\r\n corner.plus(deltaHigh, result[index++]);\r\n\r\n return result;\r\n }\r\n\r\n /** @internal */\r\n public override isRegionCulled(args: TileDrawArgs): boolean {\r\n return this.isContentCulled(args);\r\n }\r\n\r\n /** @internal */\r\n public override isContentCulled(args: TileDrawArgs): boolean {\r\n return FrustumPlanes.Containment.Outside === args.frustumPlanes.computeContainment(this.getRangeCorners(scratchCorners));\r\n }\r\n\r\n private clearImageryTiles() {\r\n if (this._imageryTiles) {\r\n this._imageryTiles.forEach((tile) => tile.releaseMapTileUsage());\r\n this._imageryTiles = undefined;\r\n }\r\n if (this._hiddenTiles) {\r\n this._hiddenTiles = undefined;\r\n }\r\n if (this._highResolutionReplacementTiles) {\r\n this._highResolutionReplacementTiles = undefined;\r\n }\r\n }\r\n\r\n /** @internal */\r\n public override produceGraphics(): RenderGraphic | undefined {\r\n if (undefined !== this._graphic && this.imageryIsReady)\r\n return this._graphic;\r\n\r\n const geometry = this.renderGeometry;\r\n if (undefined === geometry)\r\n return undefined;\r\n\r\n const textures = this.getDrapeTextures();\r\n const { baseColor, baseTransparent } = this.mapTree;\r\n const layerClassifiers = this.mapTree.layerHandler.layerClassifiers;\r\n const graphic = IModelApp.renderSystem.createRealityMeshGraphic({ realityMesh: geometry, projection: this.getProjection(), tileRectangle: this.rectangle, featureTable: PackedFeatureTable.pack(this.mapLoader.featureTable), tileId: this.contentId, baseColor, baseTransparent, textures, layerClassifiers, disableClipStyle: true }, true);\r\n\r\n // If there are no layer classifiers then we can save this graphic for re-use. If layer classifiers exist they are regenerated based on view and we must collate them with the imagery.\r\n if (this.imageryIsReady && 0 === this.mapTree.layerHandler.layerClassifiers.size)\r\n this._graphic = graphic;\r\n\r\n return graphic;\r\n }\r\n\r\n /** @internal */\r\n public getClipShape(): Point3d[] {\r\n return (this._patch instanceof PlanarTilePatch) ? this._patch.getClipShape() : [this._cornerRays![0].origin, this._cornerRays![1].origin, this._cornerRays![3].origin, this._cornerRays![2].origin];\r\n }\r\n\r\n /** @internal */\r\n protected override _collectStatistics(stats: RenderMemory.Statistics): void {\r\n super._collectStatistics(stats);\r\n\r\n this._renderGeometry?.collectStatistics(stats);\r\n if (this._mesh) {\r\n stats.addTerrain(this._mesh.indices.byteLength\r\n + this._mesh.positions.points.byteLength\r\n + this._mesh.uvs.points.byteLength\r\n + (this._mesh.normals ? this._mesh.normals.byteLength : 0),\r\n );\r\n }\r\n }\r\n\r\n /** Height range is along with the tile corners to detect if tile intersects view frustum.\r\n * Range will be single value fo ron-terrain tiles -- if terrain tile is not loaded it will\r\n * inherit height from ancestors.\r\n * @internal\r\n */\r\n public get heightRange(): Range1d | undefined {\r\n if (undefined !== this._heightRange)\r\n return this._heightRange;\r\n\r\n for (let parent = this.parent; undefined !== parent; parent = parent.parent) {\r\n const mapParent = parent as MapTile;\r\n if (undefined !== mapParent._heightRange)\r\n return mapParent._heightRange;\r\n }\r\n\r\n assert(false);\r\n return Range1d.createNull();\r\n }\r\n\r\n /** @internal */\r\n public get mapTilingScheme() {\r\n return this.mapTree.sourceTilingScheme;\r\n }\r\n\r\n /** Adjust the minimum and maximum elevations of the terrain within this tile. */\r\n public adjustHeights(minHeight: number, maxHeight: number) {\r\n if (undefined === this._heightRange)\r\n this._heightRange = Range1d.createXX(minHeight, maxHeight);\r\n else {\r\n this._heightRange.low = Math.max(this.heightRange!.low, minHeight);\r\n this._heightRange.high = Math.min(this.heightRange!.high, maxHeight);\r\n }\r\n\r\n if (this.rangeCorners && this._patch instanceof PlanarTilePatch)\r\n this._patch.getRangeCorners(this.heightRange!, this.rangeCorners);\r\n }\r\n\r\n /** Obtain a [[MapTileProjection]] to project positions within this tile's area into 3d space. */\r\n public getProjection(heightRange?: Range1d): MapTileProjection {\r\n return this._patch instanceof PlanarTilePatch ? new PlanarProjection(this._patch, heightRange) : new EllipsoidProjection(this._patch, heightRange);\r\n }\r\n\r\n /** @internal */\r\n public get baseImageryIsReady(): boolean {\r\n if (undefined !== this.mapTree.baseColor || 0 === this.mapTree.layerHandler.layerImageryTrees.length)\r\n return true;\r\n\r\n if (undefined === this._imageryTiles)\r\n return false;\r\n\r\n const baseTreeId = this.mapTree.layerHandler.layerImageryTrees[0].tree.modelId;\r\n return this._imageryTiles.every((imageryTile) => imageryTile.imageryTree.modelId !== baseTreeId || imageryTile.isReady);\r\n }\r\n\r\n /** @internal */\r\n public get imageryIsReady(): boolean {\r\n if (undefined === this._imageryTiles)\r\n return 0 === this.mapTree.layerHandler.layerImageryTrees.length;\r\n\r\n return this._imageryTiles.every((tile) => tile.isReady);\r\n }\r\n\r\n /** Select secondary (imagery) tiles\r\n * @internal\r\n */\r\n public override selectSecondaryTiles(args: TileDrawArgs, context: TraversalSelectionContext) {\r\n if (0 === this.mapTree.layerHandler.layerImageryTrees.length || this.imageryIsReady)\r\n return;\r\n\r\n this.clearImageryTiles();\r\n this._imageryTiles = new Array<ImageryMapTile>();\r\n this._hiddenTiles = new Array<ImageryMapTile>();\r\n this._highResolutionReplacementTiles = new Array<ImageryMapTile>();\r\n for (const layerImageryTree of this.mapTree.layerHandler.layerImageryTrees) {\r\n let tmpTiles = new Array<ImageryMapTile>();\r\n const tmpLeafTiles = new Array<ImageryMapTile>();\r\n if (TileTreeLoadStatus.Loaded !== layerImageryTree.tree.selectCartoDrapeTiles(tmpTiles, tmpLeafTiles, this, args)) {\r\n this._imageryTiles = undefined;\r\n return;\r\n }\r\n\r\n // When the base layer is zoomed-in beyond it's max resolution,\r\n // we display leaf tiles and stretched them if needed.\r\n // We don't want the same behavior non-base layers, in the case,\r\n // the layer will simply disappear past its max resolution.\r\n // Note: Replacement leaf tiles are kept as a mean to determine which\r\n // imagery tree has reached it's maximum zoom level.\r\n if (layerImageryTree.baseImageryLayer) {\r\n tmpTiles = [...tmpTiles, ...tmpLeafTiles];\r\n } else {\r\n this._highResolutionReplacementTiles = [...this._highResolutionReplacementTiles, ...tmpLeafTiles];\r\n }\r\n\r\n // MapTileTree might include a non-visible imagery tree, we need to check for that.\r\n if (layerImageryTree.settings.visible && !layerImageryTree.settings.allSubLayersInvisible) {\r\n for (const imageryTile of tmpTiles) {\r\n imageryTile.markMapTileUsage();\r\n if (imageryTile.isReady)\r\n args.markReady(imageryTile);\r\n else\r\n context.missing.push(imageryTile);\r\n this._imageryTiles.push(imageryTile);\r\n }\r\n } else {\r\n // Even though those selected imagery tile are not visible,\r\n // we keep track of them for scale range reporting.\r\n for (const imageryTile of tmpTiles) {\r\n this._hiddenTiles.push(imageryTile);\r\n }\r\n }\r\n }\r\n }\r\n\r\n private static _scratchRectangle1 = MapCartoRectangle.createZero();\r\n private static _scratchRectangle2 = MapCartoRectangle.createZero();\r\n\r\n /** The height range for terrain tiles is not known until the tiles are unloaded. We use \"ApproximateTerrainHeight\" for first 6 levels but below\r\n * that the tiles inherit height range from parents. This is problematic as tiles with large height range will be unnecessarily selected as\r\n * they apparently intersect view frustum. To avoid this force loading of terrain tiles if they exceed \"_maxParentHightDepth\".\r\n * @internal\r\n */\r\n protected override forceSelectRealityTile(): boolean {\r\n let parentHeightDepth = 0;\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-this-alias\r\n for (let parent: MapTile = this; parent !== undefined && parent._heightRange === undefined; parent = parent.parent as MapTile)\r\n parentHeightDepth++;\r\n\r\n return parentHeightDepth > MapTile._maxParentHeightDepth;\r\n }\r\n\r\n /** @internal */\r\n protected override minimumVisibleFactor(): number {\r\n // if minimumVisibleFactor is more than 0, it stops parents from loading when children are not ready, to fill in gaps\r\n return 0.0;\r\n }\r\n\r\n private static _scratchThisDiagonal = Vector2d.create();\r\n private static _scratchDrapeDiagonal = Vector2d.create();\r\n\r\n /** @internal */\r\n public getDrapeTextures(): TerrainTexture[] | undefined {\r\n if (undefined === this._imageryTiles)\r\n return undefined;\r\n\r\n const drapeTextures: TerrainTexture[] = [];\r\n const thisRectangle = this.loadableTerrainTile.rectangle;\r\n const thisDiagonal = thisRectangle.diagonal(MapTile._scratchThisDiagonal);\r\n const bordersNorthPole = this.quadId.bordersNorthPole(this.mapTree.sourceTilingScheme);\r\n const bordersSouthPole = this.quadId.bordersSouthPole(this.mapTree.sourceTilingScheme);\r\n for (const imageryTile of this._imageryTiles) {\r\n if (imageryTile.texture) {\r\n drapeTextures.push(this.computeDrapeTexture(thisRectangle, thisDiagonal, imageryTile, imageryTile.rectangle));\r\n\r\n if ((bordersNorthPole && imageryTile.quadId.bordersNorthPole(imageryTile.tilingScheme) && imageryTile.rectangle.high.y < thisRectangle.high.y) ||\r\n (bordersSouthPole && imageryTile.quadId.bordersSouthPole(imageryTile.tilingScheme) && imageryTile.rectangle.low.y > thisRectangle.low.y)) {\r\n // Add separate texture stretching last sliver of tile imagery to cover pole.\r\n const sliverRectangle = imageryTile.rectangle.clone(MapTile._scratchRectangle1);\r\n const clipRectangle = thisRectangle.clone(MapTile._scratchRectangle2);\r\n const sliverHeight = sliverRectangle.high.y - sliverRectangle.low.y;\r\n\r\n if (bordersSouthPole) {\r\n clipRectangle.high.y = sliverRectangle.low.y;\r\n sliverRectangle.low.y = thisRectangle.low.y;\r\n sliverRectangle.high.y += 1 / sliverHeight;\r\n } else {\r\n clipRectangle.low.y = sliverRectangle.high.y;\r\n sliverRectangle.high.y = thisRectangle.high.y;\r\n sliverRectangle.low.y -= 1 / sliverHeight;\r\n }\r\n\r\n drapeTextures.push(this.computeDrapeTexture(thisRectangle, thisDiagonal, imageryTile, sliverRectangle, clipRectangle));\r\n }\r\n } else {\r\n for (let parent = imageryTile.parent; undefined !== parent; parent = parent.parent) {\r\n const mapTile = parent as ImageryMapTile;\r\n if (mapTile.texture) {\r\n drapeTextures.push(this.computeDrapeTexture(thisRectangle, thisDiagonal, mapTile, mapTile.rectangle, imageryTile.rectangle));\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n\r\n return drapeTextures.length > 0 ? drapeTextures : undefined;\r\n }\r\n\r\n private static _scratchIntersectRange = Range2d.createNull();\r\n\r\n private computeDrapeTexture(thisRectangle: Range2d, thisDiagonal: Vector2d, imageryTile: ImageryMapTile, drapeRectangle: Range2d, clipRectangle?: Range2d): TerrainTexture {\r\n assert(imageryTile.texture !== undefined);\r\n\r\n // Compute transformation from the terrain tile texture coordinates (0-1) to the drape tile texture coordinates.\r\n const drapeDiagonal = drapeRectangle.diagonal(MapTile._scratchDrapeDiagonal);\r\n const translate = Vector2d.create((thisRectangle.low.x - drapeRectangle.low.x) / drapeDiagonal.x, (thisRectangle.low.y - drapeRectangle.low.y) / drapeDiagonal.y);\r\n const scale = Vector2d.create(thisDiagonal.x / drapeDiagonal.x, thisDiagonal.y / drapeDiagonal.y);\r\n const featureIndex = this.mapLoader.getFeatureIndex(imageryTile.imageryTree.modelId);\r\n let clipRect;\r\n if (undefined !== clipRectangle) {\r\n const intersect = clipRectangle.intersect(drapeRectangle, MapTile._scratchIntersectRange);\r\n assert(!intersect.isNull);\r\n clipRect = Range2d.createXYXY((intersect.low.x - drapeRectangle.low.x) / drapeDiagonal.x, (intersect.low.y - drapeRectangle.low.y) / drapeDiagonal.y, (intersect.high.x - drapeRectangle.low.x) / drapeDiagonal.x, (intersect.high.y - drapeRectangle.low.y) / drapeDiagonal.y);\r\n }\r\n\r\n const imageryModelId = imageryTile.tree.modelId;\r\n return new TerrainTexture(imageryTile.texture, featureIndex, scale, translate, drapeRectangle, this.mapTree.getLayerIndex(imageryModelId), this.mapTree.getLayerTransparency(imageryModelId), clipRect);\r\n }\r\n\r\n /** @internal */\r\n public override setContent(content: TerrainTileContent): void {\r\n\r\n if (this.quadId.level < this.maxDepth) {\r\n const childIds = this.quadId.getChildIds();\r\n for (const childId of childIds) {\r\n if (!this.mapLoader.isTileAvailable(childId)) {\r\n this._mesh = content.terrain?.mesh; // If a child is unavailable retain mesh for upsampling.\r\n break;\r\n }\r\n }\r\n }\r\n\r\n if (this.mapTree.produceGeometry) {\r\n const iModelTransform = this.mapTree.iModelTransform;\r\n const geometryTransform = content.terrain?.renderGeometry?.transform;\r\n const transform = geometryTransform ? iModelTransform.multiplyTransformTransform(geometryTransform) : iModelTransform;\r\n const polyface = content.terrain?.mesh ? RealityMeshParams.toPolyface(content.terrain.mesh, { transform }) : undefined;\r\n this._geometry = polyface ? { polyfaces: [polyface] } : undefined;\r\n\r\n } else {\r\n dispose(this._renderGeometry);\r\n this._renderGeometry = content.terrain?.renderGeometry;\r\n }\r\n\r\n this.everLoaded = true;\r\n\r\n if (undefined !== content.contentRange)\r\n this._contentRange = content.contentRange;\r\n\r\n this.setIsReady();\r\n }\r\n\r\n /** @internal */\r\n public override freeMemory(): void {\r\n // ###TODO MapTiles and ImageryMapTiles share resources and don't currently interact well with TileAdmin.freeMemory(). Opt out for now.\r\n }\r\n\r\n /** @internal */\r\n public override disposeContents() {\r\n super.disposeContents();\r\n this._renderGeometry = dispose(this._renderGeometry);\r\n this.clearImageryTiles();\r\n // Note - don't dispose of mesh - these should only ever exist on terrain leaf tile and are required by children. Let garbage collector handle them.\r\n }\r\n}\r\n\r\n/** A child tile that has no content of its own available. It instead produces content by up-sampling the content of an ancestor tile.\r\n * @internal\r\n */\r\nexport class UpsampledMapTile extends MapTile {\r\n /** The ancestor tile whose content will be up-sampled. */\r\n private readonly _loadableTile: MapTile;\r\n\r\n constructor(params: RealityTileParams, mapTree: MapTileTree, quadId: QuadId, patch: TilePatch, rectangle: MapCartoRectangle, heightRange: Range1d | undefined, cornerRays: Ray3d[] | undefined, loadableTile: MapTile) {\r\n super(params, mapTree, quadId, patch, rectangle, heightRange, cornerRays);\r\n this._loadableTile = loadableTile;\r\n }\r\n\r\n public override get isUpsampled() { return true; }\r\n public override get isEmpty() { return false; }\r\n public override get loadableTile(): RealityTile { return this._loadableTile; }\r\n\r\n private upsampleFromParent() {\r\n const parent = this.loadableTerrainTile;\r\n const parentMesh = parent.mesh;\r\n if (undefined === parentMesh) {\r\n return undefined;\r\n }\r\n const thisId = this.quadId, parentId = parent.quadId;\r\n const levelDelta = thisId.level - parentId.level;\r\n const thisColumn = thisId.column - (parentId.column << levelDelta);\r\n const thisRow = thisId.row - (parentId.row << levelDelta);\r\n const scale = 1.0 / (1 << levelDelta);\r\n const parentParameterRange = Range2d.createXYXY(scale * thisColumn, scale * thisRow, scale * (thisColumn + 1), scale * (thisRow + 1));\r\n const upsample = upsampleRealityMeshParams(parentMesh, parentParameterRange);\r\n this.adjustHeights(upsample.heightRange.low, upsample.heightRange.high);\r\n return upsample;\r\n }\r\n\r\n public override get renderGeometry() {\r\n if (undefined === this._renderGeometry) {\r\n const upsample = this.upsampleFromParent();\r\n const projection = this.loadableTerrainTile.getProjection(this.heightRange);\r\n if (upsample)\r\n this._renderGeometry = IModelApp.renderSystem.createTerrainMesh(upsample.mesh, projection.transformFromLocal, true);\r\n }\r\n return this._renderGeometry;\r\n }\r\n\r\n public override get isLoading(): boolean { return this.loadableTile.isLoading; }\r\n public override get isQueued(): boolean { return this.loadableTile.isQueued; }\r\n public override get isNotFound(): boolean { return this.loadableTile.isNotFound; }\r\n public override get isReady(): boolean { return (this._renderGeometry !== undefined || this.loadableTile.loadStatus === TileLoadStatus.Ready) && this.baseImageryIsReady; }\r\n\r\n public override markUsed(args: TileDrawArgs): void {\r\n args.markUsed(this);\r\n args.markUsed(this.loadableTile);\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"MapTile.js","sourceRoot":"","sources":["../../../../src/tile/map/MapTile.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/** @packageDocumentation\r\n * @module Tiles\r\n */\r\n\r\nimport { assert, dispose, expectDefined } from \"@itwin/core-bentley\";\r\nimport { ColorByName, ColorDef, FrustumPlanes, GlobeMode, PackedFeatureTable, RenderTexture } from \"@itwin/core-common\";\r\nimport { AxisOrder, BilinearPatch, ClipPlane, ClipPrimitive, ClipShape, ClipVector, Constant, ConvexClipPlaneSet, EllipsoidPatch, LongitudeLatitudeNumber, Matrix3d, Point3d, PolygonOps, Range1d, Range2d, Range3d, Ray3d, Transform, Vector2d, Vector3d } from \"@itwin/core-geometry\";\r\nimport { IModelApp } from \"../../IModelApp\";\r\nimport { GraphicBuilder } from \"../../render/GraphicBuilder\";\r\nimport { RealityMeshParams } from \"../../render/RealityMeshParams\";\r\nimport { upsampleRealityMeshParams } from \"../../internal/render/UpsampleRealityMeshParams\";\r\nimport { RenderGraphic } from \"../../render/RenderGraphic\";\r\nimport { RenderMemory } from \"../../render/RenderMemory\";\r\nimport { RenderSystem } from \"../../render/RenderSystem\";\r\nimport { RenderTerrainGeometry, TerrainTexture } from \"../../internal/render/RenderTerrain\";\r\nimport { ViewingSpace } from \"../../ViewingSpace\";\r\nimport {\r\n ImageryMapTile, MapCartoRectangle, MapTileLoader, MapTileTree, QuadId, RealityTile, RealityTileParams, Tile, TileContent, TileDrawArgs, TileGraphicType,\r\n TileLoadStatus, TileTreeLoadStatus, TraversalSelectionContext,\r\n} from \"../internal\";\r\n\r\n/** @internal */\r\nexport class PlanarTilePatch {\r\n constructor(public corners: Point3d[], public normal: Vector3d, private _chordHeight: number) {\r\n }\r\n\r\n public getRangeCorners(heightRange: Range1d, result: Point3d[]): Point3d[] {\r\n let index = 0;\r\n for (const corner of this.corners)\r\n corner.plusScaled(this.normal, heightRange.low - this._chordHeight, result[index++]);\r\n\r\n for (const corner of this.corners)\r\n corner.plusScaled(this.normal, heightRange.high + this._chordHeight, result[index++]);\r\n\r\n return result;\r\n }\r\n public getClipShape(): Point3d[] {\r\n return [this.corners[0], this.corners[1], this.corners[3], this.corners[2]];\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport type TilePatch = PlanarTilePatch | EllipsoidPatch;\r\n\r\n/** Projects points within the rectangular region of a [[MapTile]] into 3d space.\r\n * @see [[MapTile.getProjection]] to obtain the projection for a [[MapTile]].\r\n * @public\r\n */\r\nexport abstract class MapTileProjection {\r\n /** The extents of the volume of space associated with the projected [[MapTile]]. */\r\n public abstract get localRange(): Range3d;\r\n /** @alpha */\r\n public abstract get transformFromLocal(): Transform;\r\n\r\n /** Given parametric coordinates in [0, 1] within the tile's rectangular region, and an elevation above the Earth,\r\n * compute the 3d position in space.\r\n */\r\n public abstract getPoint(u: number, v: number, height: number, result?: Point3d): Point3d;\r\n\r\n /** @alpha */\r\n public get ellipsoidPatch(): EllipsoidPatch | undefined { return undefined; }\r\n\r\n /** @alpha */\r\n public getGlobalPoint(u: number, v: number, z: number, result?: Point3d): Point3d {\r\n const point = this.getPoint(u, v, z, result);\r\n return this.transformFromLocal.multiplyPoint3d(point, point);\r\n }\r\n}\r\n\r\n/** @alpha */\r\nclass EllipsoidProjection extends MapTileProjection {\r\n public transformFromLocal = Transform.createIdentity();\r\n public localRange: Range3d;\r\n constructor(private _patch: EllipsoidPatch, heightRange?: Range1d) {\r\n super();\r\n this.localRange = _patch.range();\r\n this.localRange.expandInPlace(heightRange ? (heightRange.high - heightRange.low) : 0);\r\n }\r\n private static _scratchAngles = LongitudeLatitudeNumber.createZero();\r\n private static _scratchRay = Ray3d.createZero();\r\n public getPoint(u: number, v: number, height: number, result?: Point3d): Point3d {\r\n const angles = this._patch.uvFractionToAngles(u, v, height, EllipsoidProjection._scratchAngles);\r\n const ray = this._patch.anglesToUnitNormalRay(angles, EllipsoidProjection._scratchRay);\r\n return Point3d.createFrom(expectDefined(ray).origin, result);\r\n }\r\n public override get ellipsoidPatch() { return this._patch; }\r\n}\r\n\r\n/** @alpha */\r\nexport class PlanarProjection extends MapTileProjection {\r\n private _bilinearPatch: BilinearPatch;\r\n public transformFromLocal: Transform;\r\n public localRange: Range3d;\r\n constructor(patch: PlanarTilePatch, heightRange?: Range1d) {\r\n super();\r\n this.transformFromLocal = Transform.createOriginAndMatrix(patch.corners[0], Matrix3d.createRigidHeadsUp(patch.normal, AxisOrder.ZYX));\r\n const planeCorners = expectDefined(this.transformFromLocal.multiplyInversePoint3dArray([patch.corners[0], patch.corners[1], patch.corners[2], patch.corners[3]]));\r\n this.localRange = Range3d.createArray(planeCorners);\r\n this.localRange.low.z += heightRange ? heightRange.low : 0;\r\n this.localRange.high.z += heightRange ? heightRange.high : 0;\r\n this._bilinearPatch = new BilinearPatch(planeCorners[0], planeCorners[1], planeCorners[2], planeCorners[3]);\r\n }\r\n public getPoint(u: number, v: number, z: number, result?: Point3d): Point3d {\r\n result = this._bilinearPatch.uvFractionToPoint(u, v, result);\r\n result.z += z;\r\n return result;\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport interface TerrainTileContent extends TileContent {\r\n terrain?: {\r\n renderGeometry?: RenderTerrainGeometry;\r\n /** Used on leaves to support up-sampling. */\r\n mesh?: RealityMeshParams;\r\n };\r\n}\r\n\r\nconst scratchNormal = Vector3d.create();\r\nconst scratchViewZ = Vector3d.create();\r\nconst scratchPoint = Point3d.create();\r\nconst scratchClipPlanes = [ClipPlane.createNormalAndPoint(scratchNormal, scratchPoint), ClipPlane.createNormalAndPoint(scratchNormal, scratchPoint), ClipPlane.createNormalAndPoint(scratchNormal, scratchPoint), ClipPlane.createNormalAndPoint(scratchNormal, scratchPoint)];\r\nconst scratchCorners = [Point3d.createZero(), Point3d.createZero(), Point3d.createZero(), Point3d.createZero(), Point3d.createZero(), Point3d.createZero(), Point3d.createZero(), Point3d.createZero()];\r\n\r\n/** A [[Tile]] belonging to a [[MapTileTree]] representing a rectangular region of a map of the Earth.\r\n * @public\r\n */\r\nexport class MapTile extends RealityTile {\r\n private static _maxParentHeightDepth = 4;\r\n private _imageryTiles?: ImageryMapTile[];\r\n private _hiddenTiles?: ImageryMapTile[];\r\n private _highResolutionReplacementTiles?: ImageryMapTile[];\r\n /** @internal */\r\n public everLoaded = false; // If the tile is only required for availability metadata, load it once and then allow it to be unloaded.\r\n /** @internal */\r\n protected _heightRange: Range1d | undefined;\r\n /** @internal */\r\n protected _renderGeometry?: RenderTerrainGeometry;\r\n /** @internal */\r\n protected _mesh?: RealityMeshParams; // Primitive retained on leaves only for upsampling.\r\n /** @internal */\r\n public override get isReady(): boolean {\r\n return super.isReady && this.baseImageryIsReady;\r\n }\r\n\r\n /** @internal */\r\n public override get hasGraphics(): boolean {\r\n return this._renderGeometry !== undefined;\r\n }\r\n\r\n /** @internal */\r\n public get renderGeometry() { return this._renderGeometry; }\r\n /** @internal */\r\n public get mesh() { return this._mesh; }\r\n /** @internal */\r\n public get loadableTerrainTile() { return this.loadableTile as MapTile; }\r\n /** @internal */\r\n public get isPlanar(): boolean { return this._patch instanceof PlanarTilePatch; }\r\n /** @internal */\r\n public get imageryTiles(): ImageryMapTile[] | undefined { return this._imageryTiles; }\r\n /** List of selected tiles but are currently in hidden state (i.e. scale range visibility)\r\n * @internal\r\n */\r\n public get hiddenImageryTiles(): ImageryMapTile[] | undefined { return this._hiddenTiles; }\r\n\r\n /** List of leafs tiles that have been selected as a replacement for missing high resolution tiles.\r\n * When this list is non-empty this means we are past the maximum LOD available of the tile tree.\r\n * By using those tiles, you are likely to get a display where tiles looks pixelated..\r\n * in some cases this is preferred to have no tile at all.\r\n * @internal\r\n */\r\n public get highResolutionReplacementTiles(): ImageryMapTile[] | undefined { return this._highResolutionReplacementTiles; }\r\n\r\n /** The [[MapTileTree]] to which this tile belongs. */\r\n public readonly mapTree: MapTileTree;\r\n /** Uniquely identifies this tile within its [[mapTree]]. */\r\n public readonly quadId: QuadId;\r\n private _patch: TilePatch;\r\n /** The area of the surface of the Earth that this tile represents. */\r\n public readonly rectangle: MapCartoRectangle;\r\n /** @internal */\r\n protected _cornerRays?: Ray3d[];\r\n\r\n /** @internal */\r\n constructor(params: RealityTileParams, mapTree: MapTileTree, quadId: QuadId, patch: TilePatch, rectangle: MapCartoRectangle, heightRange: Range1d | undefined, cornerRays: Ray3d[] | undefined) {\r\n super(params, mapTree);\r\n this.mapTree = mapTree;\r\n this.quadId = quadId;\r\n this._patch = patch;\r\n this.rectangle = rectangle;\r\n this._cornerRays = cornerRays;\r\n this._heightRange = heightRange?.clone();\r\n }\r\n\r\n /** @internal */\r\n public getRangeCorners(result: Point3d[]): Point3d[] {\r\n return this._patch instanceof PlanarTilePatch ? this._patch.getRangeCorners(expectDefined(this.heightRange), result) : this.range.corners(result);\r\n }\r\n\r\n /** @internal */\r\n public override getSizeProjectionCorners(): Point3d[] | undefined {\r\n // Use only the first 4 corners -- On terrain tiles the height is initially exagerated to world height range which can cause excessive tile loading.\r\n const rangeCorners = this.getRangeCorners(scratchCorners);\r\n return rangeCorners.slice(0, 4);\r\n }\r\n\r\n /** @internal */\r\n public override markUsed(args: TileDrawArgs) {\r\n super.markUsed(args);\r\n if (this._imageryTiles)\r\n for (const imageryTile of this._imageryTiles)\r\n imageryTile.markUsed(args);\r\n }\r\n\r\n /** @internal */\r\n public override get graphicType() {\r\n if (this.mapTree.isOverlay)\r\n return TileGraphicType.Overlay;\r\n\r\n return (this.mapTree.useDepthBuffer || this._forceDepthBuffer) ? TileGraphicType.Scene : TileGraphicType.BackgroundMap;\r\n }\r\n\r\n /** @internal */\r\n public get mapLoader() { return this.realityRoot.loader as MapTileLoader; }\r\n /** @internal */\r\n public get isUpsampled() { return false; }\r\n\r\n /** @internal */\r\n public tileFromQuadId(quadId: QuadId): MapTile | undefined {\r\n if (0 === quadId.compare(this.quadId))\r\n return this;\r\n\r\n assert(quadId.level > this.quadId.level);\r\n if (quadId.level <= this.quadId.level)\r\n return undefined;\r\n\r\n if (this.children) {\r\n const shift = quadId.level - this.quadId.level - 1;\r\n const childRow = quadId.row >> shift;\r\n const childColumn = quadId.column >> shift;\r\n for (const child of this.children) {\r\n const mapChild = child as MapTile;\r\n const childQuadId = mapChild.quadId;\r\n if (childQuadId.row === childRow && childQuadId.column === childColumn)\r\n return mapChild.tileFromQuadId(quadId);\r\n }\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n private get _forceDepthBuffer() {\r\n // For large ellipsoidal globe tile force the depth buffer on to avoid anomalies at horizon.\r\n return this.mapTree.globeMode === GlobeMode.Ellipsoid && this.depth < 8;\r\n }\r\n\r\n /** @internal */\r\n public override addBoundingGraphic(builder: GraphicBuilder, color: ColorDef) {\r\n if (!this.isDisplayable)\r\n return;\r\n\r\n const heightRange = (this.heightRange === undefined) ? Range1d.createXX(-1, 1) : this.heightRange;\r\n const lows = [], highs = [], reorder = [0, 1, 3, 2, 0];\r\n const cornerRays = expectDefined(this._cornerRays);\r\n if (this._patch instanceof PlanarTilePatch) {\r\n const normal = this._patch.normal;\r\n for (let i = 0; i < 5; i++) {\r\n const corner = this._patch.corners[reorder[i]];\r\n lows.push(corner.plusScaled(normal, heightRange.low));\r\n highs.push(corner.plusScaled(normal, heightRange.high));\r\n }\r\n } else {\r\n for (let i = 0; i < 5; i++) {\r\n const cornerRay = cornerRays[reorder[i]];\r\n lows.push(cornerRay.origin.plusScaled(cornerRay.direction, heightRange.low));\r\n highs.push(cornerRay.origin.plusScaled(cornerRay.direction, heightRange.high));\r\n }\r\n }\r\n\r\n builder.setSymbology(color, color, 1);\r\n builder.addLineString(lows);\r\n builder.addLineString(highs);\r\n for (let i = 0; i < 4; i++)\r\n builder.addLineString([lows[i], highs[i]]);\r\n\r\n const inColor = ColorDef.create(ColorByName.cornflowerBlue);\r\n const outColor = ColorDef.create(ColorByName.chartreuse);\r\n const transitionColor = ColorDef.create(ColorByName.aquamarine);\r\n\r\n const inPoints = [], outPoints = [], transitionPoints = [];\r\n\r\n for (const point of highs)\r\n if (this.mapTree.cartesianRange.containsPoint(point))\r\n inPoints.push(point);\r\n else if (this.mapTree.cartesianRange.distanceToPoint(point) < this.mapTree.cartesianTransitionDistance)\r\n transitionPoints.push(point);\r\n else\r\n outPoints.push(point);\r\n\r\n builder.setSymbology(inColor, inColor, 15);\r\n builder.addPointString(inPoints);\r\n builder.setSymbology(outColor, outColor, 15);\r\n builder.addPointString(outPoints);\r\n builder.setSymbology(transitionColor, transitionColor, 31);\r\n builder.addPointString(transitionPoints);\r\n }\r\n\r\n /** @internal */\r\n public override getContentClip(): ClipVector | undefined {\r\n const points = this.getClipShape();\r\n if (points.length < 3)\r\n return undefined;\r\n if (this.mapTree.globeMode === GlobeMode.Ellipsoid) {\r\n const normal = PolygonOps.areaNormal(points);\r\n const globeOrigin = this.mapTree.globeOrigin;\r\n const globeNormal = Vector3d.createStartEnd(globeOrigin, points[0]);\r\n const negate = normal.dotProduct(globeNormal) < 0;\r\n const clipPlanes = [];\r\n for (let i = 0; i < 4; i++) {\r\n const point = points[i];\r\n const clipNormal = globeOrigin.crossProductToPoints(point, points[(i + 1) % 4], scratchNormal);\r\n if (negate)\r\n clipNormal.negate(clipNormal);\r\n\r\n const clipPlane = ClipPlane.createNormalAndPoint(clipNormal, point, false, false, scratchClipPlanes[i]);\r\n if (clipPlane !== undefined) // Undefined at pole tiles...\r\n clipPlanes.push(clipPlane);\r\n }\r\n\r\n const planeSet = ConvexClipPlaneSet.createPlanes(clipPlanes);\r\n const clipPrimitive = ClipPrimitive.createCapture(planeSet);\r\n\r\n return ClipVector.createCapture([clipPrimitive]);\r\n } else {\r\n return ClipVector.createCapture([expectDefined(ClipShape.createShape(points))]);\r\n }\r\n }\r\n\r\n /** @internal */\r\n public override setNotFound(): void {\r\n super.setNotFound();\r\n\r\n // For map tiles assume that an unfound tile implies descendants and siblings will also be unfound.\r\n if (undefined !== this.parent)\r\n this.parent.setLeaf();\r\n }\r\n\r\n /** @internal */\r\n public getGraphic(_system: RenderSystem, _texture: RenderTexture): RenderGraphic | undefined {\r\n return undefined;\r\n }\r\n\r\n /** For globe tiles displaying less then depth 2 appears distorted\r\n * @internal\r\n */\r\n public override get isDisplayable() {\r\n return this.mapTree.globeMode === GlobeMode.Ellipsoid ? (this.depth >= MapTileTree.minDisplayableDepth) : super.isDisplayable;\r\n }\r\n\r\n /** @internal */\r\n public override isOccluded(viewingSpace: ViewingSpace): boolean {\r\n if (undefined === this._cornerRays || this.mapTree.globeMode !== GlobeMode.Ellipsoid)\r\n return false;\r\n\r\n if (viewingSpace.eyePoint !== undefined) {\r\n if (!this.mapTree.pointAboveEllipsoid(viewingSpace.eyePoint))\r\n return false;\r\n\r\n for (const cornerNormal of this._cornerRays) {\r\n const eyeNormal = Vector3d.createStartEnd(viewingSpace.eyePoint, cornerNormal.origin, scratchNormal);\r\n eyeNormal.normalizeInPlace();\r\n if (eyeNormal.dotProduct(cornerNormal.direction) < .01)\r\n return false;\r\n }\r\n } else {\r\n const viewZ = viewingSpace.rotation.getRow(2, scratchViewZ);\r\n for (const cornerNormal of this._cornerRays)\r\n if (cornerNormal.direction.dotProduct(viewZ) > 0)\r\n return false;\r\n }\r\n\r\n return true;\r\n }\r\n\r\n /** @internal */\r\n protected override _loadChildren(resolve: (children: Tile[] | undefined) => void, _reject: (error: Error) => void): void {\r\n const mapTree = this.mapTree;\r\n const childLevel = this.quadId.level + 1;\r\n const rowCount = mapTree.sourceTilingScheme.getNumberOfYChildrenAtLevel(childLevel);\r\n const columnCount = mapTree.sourceTilingScheme.getNumberOfXChildrenAtLevel(childLevel);\r\n\r\n const resolveChildren = (children: Tile[]) => {\r\n const childrenRange = Range3d.createNull();\r\n for (const child of children)\r\n childrenRange.extendRange(child.range);\r\n\r\n if (!this.range.containsRange(childrenRange))\r\n this.range.extendRange(childrenRange);\r\n\r\n resolve(children);\r\n };\r\n\r\n if (mapTree.doCreateGlobeChildren(this)) {\r\n this.createGlobeChildren(columnCount, rowCount, resolveChildren);\r\n return;\r\n }\r\n\r\n const resolvePlanarChildren = (childCorners: Point3d[][]) => {\r\n const level = this.quadId.level + 1;\r\n const column = this.quadId.column * 2;\r\n const row = this.quadId.row * 2;\r\n const children = [];\r\n const childrenAreLeaves = (this.depth + 1) === mapTree.loader.maxDepth;\r\n const globeMode = this.mapTree.globeMode;\r\n for (let j = 0; j < rowCount; j++) {\r\n for (let i = 0; i < columnCount; i++) {\r\n const quadId = new QuadId(level, column + i, row + j);\r\n const corners = childCorners[j * columnCount + i];\r\n const rectangle = mapTree.getTileRectangle(quadId);\r\n const normal = PolygonOps.areaNormal([corners[0], corners[1], corners[3], corners[2]]);\r\n normal.normalizeInPlace();\r\n\r\n const heightRange = this.mapTree.getChildHeightRange(quadId, rectangle, this);\r\n const diagonal = Math.max(corners[0].distance(corners[3]), corners[1].distance(corners[2])) / 2.0;\r\n const chordHeight = globeMode === GlobeMode.Ellipsoid ? Math.sqrt(diagonal * diagonal + Constant.earthRadiusWGS84.equator * Constant.earthRadiusWGS84.equator) - Constant.earthRadiusWGS84.equator : 0.0;\r\n const rangeCorners = MapTile.computeRangeCorners(corners, normal, chordHeight, undefined, heightRange);\r\n const range = Range3d.createArray(rangeCorners);\r\n const child = this.mapTree.createPlanarChild({ contentId: quadId.contentId, maximumSize: 512, range, parent: this, isLeaf: childrenAreLeaves }, quadId, corners, normal, rectangle, chordHeight, heightRange);\r\n if (child)\r\n children.push(child);\r\n }\r\n }\r\n\r\n resolveChildren(children);\r\n };\r\n\r\n mapTree.getPlanarChildCorners(this, columnCount, rowCount, resolvePlanarChildren);\r\n }\r\n\r\n private createGlobeChildren(columnCount: number, rowCount: number, resolve: (children: MapTile[]) => void) {\r\n const level = this.quadId.level + 1;\r\n const column = this.quadId.column * 2;\r\n const row = this.quadId.row * 2;\r\n const mapTree = this.mapTree;\r\n const children = [];\r\n\r\n for (let j = 0; j < rowCount; j++) {\r\n for (let i = 0; i < columnCount; i++) {\r\n const quadId = new QuadId(level, column + i, row + j);\r\n const angleSweep = quadId.getAngleSweep(mapTree.sourceTilingScheme);\r\n const ellipsoidPatch = EllipsoidPatch.createCapture(this.mapTree.earthEllipsoid, angleSweep.longitude, angleSweep.latitude);\r\n const range = ellipsoidPatch.range();\r\n const rectangle = mapTree.getTileRectangle(quadId);\r\n const heightRange = this.mapTree.getChildHeightRange(quadId, rectangle, this);\r\n if (undefined !== heightRange)\r\n range.expandInPlace(heightRange.high - heightRange.low);\r\n\r\n children.push(this.mapTree.createGlobeChild({ contentId: quadId.contentId, maximumSize: 512, range, parent: this, isLeaf: false }, quadId, range.corners(), rectangle, ellipsoidPatch, heightRange));\r\n }\r\n }\r\n\r\n resolve(children);\r\n return children;\r\n }\r\n\r\n /** @internal */\r\n public static computeRangeCorners(corners: Point3d[], normal: Vector3d, chordHeight: number, result?: Point3d[], heightRange?: Range1d) {\r\n if (result === undefined) {\r\n result = [];\r\n for (let i = 0; i < 8; i++)\r\n result.push(Point3d.create());\r\n }\r\n\r\n let index = 0;\r\n assert(corners.length === 4);\r\n const deltaLow = normal.scale(- chordHeight + (heightRange ? heightRange.low : 0));\r\n const deltaHigh = normal.scale(chordHeight + (heightRange ? heightRange.high : 0));\r\n\r\n for (const corner of corners)\r\n corner.plus(deltaLow, result[index++]);\r\n\r\n for (const corner of corners)\r\n corner.plus(deltaHigh, result[index++]);\r\n\r\n return result;\r\n }\r\n\r\n /** @internal */\r\n public override isRegionCulled(args: TileDrawArgs): boolean {\r\n return this.isContentCulled(args);\r\n }\r\n\r\n /** @internal */\r\n public override isContentCulled(args: TileDrawArgs): boolean {\r\n return FrustumPlanes.Containment.Outside === args.frustumPlanes.computeContainment(this.getRangeCorners(scratchCorners));\r\n }\r\n\r\n private clearImageryTiles() {\r\n if (this._imageryTiles) {\r\n this._imageryTiles.forEach((tile) => tile.releaseMapTileUsage());\r\n this._imageryTiles = undefined;\r\n }\r\n if (this._hiddenTiles) {\r\n this._hiddenTiles = undefined;\r\n }\r\n if (this._highResolutionReplacementTiles) {\r\n this._highResolutionReplacementTiles = undefined;\r\n }\r\n }\r\n\r\n /** @internal */\r\n public override produceGraphics(): RenderGraphic | undefined {\r\n if (undefined !== this._graphic && this.imageryIsReady)\r\n return this._graphic;\r\n\r\n const geometry = this.renderGeometry;\r\n if (undefined === geometry)\r\n return undefined;\r\n\r\n const textures = this.getDrapeTextures();\r\n const { baseColor, baseTransparent } = this.mapTree;\r\n const layerClassifiers = this.mapTree.layerHandler.layerClassifiers;\r\n const graphic = IModelApp.renderSystem.createRealityMeshGraphic({ realityMesh: geometry, projection: this.getProjection(), tileRectangle: this.rectangle, featureTable: PackedFeatureTable.pack(this.mapLoader.featureTable), tileId: this.contentId, baseColor, baseTransparent, textures, layerClassifiers, disableClipStyle: true }, true);\r\n\r\n // If there are no layer classifiers then we can save this graphic for re-use. If layer classifiers exist they are regenerated based on view and we must collate them with the imagery.\r\n if (this.imageryIsReady && 0 === this.mapTree.layerHandler.layerClassifiers.size)\r\n this._graphic = graphic;\r\n\r\n return graphic;\r\n }\r\n\r\n /** @internal */\r\n public getClipShape(): Point3d[] {\r\n if (undefined === this._cornerRays)\r\n throw new Error(\"MapTile.getClipShape called before corner rays were set\");\r\n return (this._patch instanceof PlanarTilePatch) ? this._patch.getClipShape() : [this._cornerRays[0].origin, this._cornerRays[1].origin, this._cornerRays[3].origin, this._cornerRays[2].origin];\r\n }\r\n\r\n /** @internal */\r\n protected override _collectStatistics(stats: RenderMemory.Statistics): void {\r\n super._collectStatistics(stats);\r\n\r\n this._renderGeometry?.collectStatistics(stats);\r\n if (this._mesh) {\r\n stats.addTerrain(this._mesh.indices.byteLength\r\n + this._mesh.positions.points.byteLength\r\n + this._mesh.uvs.points.byteLength\r\n + (this._mesh.normals ? this._mesh.normals.byteLength : 0),\r\n );\r\n }\r\n }\r\n\r\n /** Height range is along with the tile corners to detect if tile intersects view frustum.\r\n * Range will be single value fo ron-terrain tiles -- if terrain tile is not loaded it will\r\n * inherit height from ancestors.\r\n * @internal\r\n */\r\n public get heightRange(): Range1d | undefined {\r\n if (undefined !== this._heightRange)\r\n return this._heightRange;\r\n\r\n for (let parent = this.parent; undefined !== parent; parent = parent.parent) {\r\n const mapParent = parent as MapTile;\r\n if (undefined !== mapParent._heightRange)\r\n return mapParent._heightRange;\r\n }\r\n\r\n assert(false);\r\n return Range1d.createNull();\r\n }\r\n\r\n /** @internal */\r\n public get mapTilingScheme() {\r\n return this.mapTree.sourceTilingScheme;\r\n }\r\n\r\n /** Adjust the minimum and maximum elevations of the terrain within this tile. */\r\n public adjustHeights(minHeight: number, maxHeight: number) {\r\n if (undefined === this._heightRange)\r\n this._heightRange = Range1d.createXX(minHeight, maxHeight);\r\n else {\r\n this._heightRange.low = Math.max(expectDefined(this.heightRange).low, minHeight);\r\n this._heightRange.high = Math.min(expectDefined(this.heightRange).high, maxHeight);\r\n }\r\n\r\n if (this.rangeCorners && this._patch instanceof PlanarTilePatch)\r\n this._patch.getRangeCorners(expectDefined(this.heightRange), this.rangeCorners);\r\n }\r\n\r\n /** Obtain a [[MapTileProjection]] to project positions within this tile's area into 3d space. */\r\n public getProjection(heightRange?: Range1d): MapTileProjection {\r\n return this._patch instanceof PlanarTilePatch ? new PlanarProjection(this._patch, heightRange) : new EllipsoidProjection(this._patch, heightRange);\r\n }\r\n\r\n /** @internal */\r\n public get baseImageryIsReady(): boolean {\r\n if (undefined !== this.mapTree.baseColor || 0 === this.mapTree.layerHandler.layerImageryTrees.length)\r\n return true;\r\n\r\n if (undefined === this._imageryTiles)\r\n return false;\r\n\r\n const baseTreeId = this.mapTree.layerHandler.layerImageryTrees[0].tree.modelId;\r\n return this._imageryTiles.every((imageryTile) => imageryTile.imageryTree.modelId !== baseTreeId || imageryTile.isReady);\r\n }\r\n\r\n /** @internal */\r\n public get imageryIsReady(): boolean {\r\n if (undefined === this._imageryTiles)\r\n return 0 === this.mapTree.layerHandler.layerImageryTrees.length;\r\n\r\n return this._imageryTiles.every((tile) => tile.isReady);\r\n }\r\n\r\n /** Select secondary (imagery) tiles\r\n * @internal\r\n */\r\n public override selectSecondaryTiles(args: TileDrawArgs, context: TraversalSelectionContext) {\r\n if (0 === this.mapTree.layerHandler.layerImageryTrees.length || this.imageryIsReady)\r\n return;\r\n\r\n this.clearImageryTiles();\r\n this._imageryTiles = new Array<ImageryMapTile>();\r\n this._hiddenTiles = new Array<ImageryMapTile>();\r\n this._highResolutionReplacementTiles = new Array<ImageryMapTile>();\r\n for (const layerImageryTree of this.mapTree.layerHandler.layerImageryTrees) {\r\n let tmpTiles = new Array<ImageryMapTile>();\r\n const tmpLeafTiles = new Array<ImageryMapTile>();\r\n if (TileTreeLoadStatus.Loaded !== layerImageryTree.tree.selectCartoDrapeTiles(tmpTiles, tmpLeafTiles, this, args)) {\r\n this._imageryTiles = undefined;\r\n return;\r\n }\r\n\r\n // When the base layer is zoomed-in beyond it's max resolution,\r\n // we display leaf tiles and stretched them if needed.\r\n // We don't want the same behavior non-base layers, in the case,\r\n // the layer will simply disappear past its max resolution.\r\n // Note: Replacement leaf tiles are kept as a mean to determine which\r\n // imagery tree has reached it's maximum zoom level.\r\n if (layerImageryTree.baseImageryLayer) {\r\n tmpTiles = [...tmpTiles, ...tmpLeafTiles];\r\n } else {\r\n this._highResolutionReplacementTiles = [...this._highResolutionReplacementTiles, ...tmpLeafTiles];\r\n }\r\n\r\n // MapTileTree might include a non-visible imagery tree, we need to check for that.\r\n if (layerImageryTree.settings.visible && !layerImageryTree.settings.allSubLayersInvisible) {\r\n for (const imageryTile of tmpTiles) {\r\n imageryTile.markMapTileUsage();\r\n if (imageryTile.isReady)\r\n args.markReady(imageryTile);\r\n else\r\n context.missing.push(imageryTile);\r\n this._imageryTiles.push(imageryTile);\r\n }\r\n } else {\r\n // Even though those selected imagery tile are not visible,\r\n // we keep track of them for scale range reporting.\r\n for (const imageryTile of tmpTiles) {\r\n this._hiddenTiles.push(imageryTile);\r\n }\r\n }\r\n }\r\n }\r\n\r\n private static _scratchRectangle1 = MapCartoRectangle.createZero();\r\n private static _scratchRectangle2 = MapCartoRectangle.createZero();\r\n\r\n /** The height range for terrain tiles is not known until the tiles are unloaded. We use \"ApproximateTerrainHeight\" for first 6 levels but below\r\n * that the tiles inherit height range from parents. This is problematic as tiles with large height range will be unnecessarily selected as\r\n * they apparently intersect view frustum. To avoid this force loading of terrain tiles if they exceed \"_maxParentHightDepth\".\r\n * @internal\r\n */\r\n protected override forceSelectRealityTile(): boolean {\r\n let parentHeightDepth = 0;\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-this-alias\r\n for (let parent: MapTile = this; parent !== undefined && parent._heightRange === undefined; parent = parent.parent as MapTile)\r\n parentHeightDepth++;\r\n\r\n return parentHeightDepth > MapTile._maxParentHeightDepth;\r\n }\r\n\r\n /** @internal */\r\n protected override minimumVisibleFactor(): number {\r\n // if minimumVisibleFactor is more than 0, it stops parents from loading when children are not ready, to fill in gaps\r\n return 0.0;\r\n }\r\n\r\n private static _scratchThisDiagonal = Vector2d.create();\r\n private static _scratchDrapeDiagonal = Vector2d.create();\r\n\r\n /** @internal */\r\n public getDrapeTextures(): TerrainTexture[] | undefined {\r\n if (undefined === this._imageryTiles)\r\n return undefined;\r\n\r\n const drapeTextures: TerrainTexture[] = [];\r\n const thisRectangle = this.loadableTerrainTile.rectangle;\r\n const thisDiagonal = thisRectangle.diagonal(MapTile._scratchThisDiagonal);\r\n const bordersNorthPole = this.quadId.bordersNorthPole(this.mapTree.sourceTilingScheme);\r\n const bordersSouthPole = this.quadId.bordersSouthPole(this.mapTree.sourceTilingScheme);\r\n for (const imageryTile of this._imageryTiles) {\r\n if (imageryTile.texture) {\r\n drapeTextures.push(this.computeDrapeTexture(thisRectangle, thisDiagonal, imageryTile, imageryTile.rectangle));\r\n\r\n if ((bordersNorthPole && imageryTile.quadId.bordersNorthPole(imageryTile.tilingScheme) && imageryTile.rectangle.high.y < thisRectangle.high.y) ||\r\n (bordersSouthPole && imageryTile.quadId.bordersSouthPole(imageryTile.tilingScheme) && imageryTile.rectangle.low.y > thisRectangle.low.y)) {\r\n // Add separate texture stretching last sliver of tile imagery to cover pole.\r\n const sliverRectangle = imageryTile.rectangle.clone(MapTile._scratchRectangle1);\r\n const clipRectangle = thisRectangle.clone(MapTile._scratchRectangle2);\r\n const sliverHeight = sliverRectangle.high.y - sliverRectangle.low.y;\r\n\r\n if (bordersSouthPole) {\r\n clipRectangle.high.y = sliverRectangle.low.y;\r\n sliverRectangle.low.y = thisRectangle.low.y;\r\n sliverRectangle.high.y += 1 / sliverHeight;\r\n } else {\r\n clipRectangle.low.y = sliverRectangle.high.y;\r\n sliverRectangle.high.y = thisRectangle.high.y;\r\n sliverRectangle.low.y -= 1 / sliverHeight;\r\n }\r\n\r\n drapeTextures.push(this.computeDrapeTexture(thisRectangle, thisDiagonal, imageryTile, sliverRectangle, clipRectangle));\r\n }\r\n } else {\r\n for (let parent = imageryTile.parent; undefined !== parent; parent = parent.parent) {\r\n const mapTile = parent as ImageryMapTile;\r\n if (mapTile.texture) {\r\n drapeTextures.push(this.computeDrapeTexture(thisRectangle, thisDiagonal, mapTile, mapTile.rectangle, imageryTile.rectangle));\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n\r\n return drapeTextures.length > 0 ? drapeTextures : undefined;\r\n }\r\n\r\n private static _scratchIntersectRange = Range2d.createNull();\r\n\r\n private computeDrapeTexture(thisRectangle: Range2d, thisDiagonal: Vector2d, imageryTile: ImageryMapTile, drapeRectangle: Range2d, clipRectangle?: Range2d): TerrainTexture {\r\n assert(imageryTile.texture !== undefined);\r\n\r\n // Compute transformation from the terrain tile texture coordinates (0-1) to the drape tile texture coordinates.\r\n const drapeDiagonal = drapeRectangle.diagonal(MapTile._scratchDrapeDiagonal);\r\n const translate = Vector2d.create((thisRectangle.low.x - drapeRectangle.low.x) / drapeDiagonal.x, (thisRectangle.low.y - drapeRectangle.low.y) / drapeDiagonal.y);\r\n const scale = Vector2d.create(thisDiagonal.x / drapeDiagonal.x, thisDiagonal.y / drapeDiagonal.y);\r\n const featureIndex = this.mapLoader.getFeatureIndex(imageryTile.imageryTree.modelId);\r\n let clipRect;\r\n if (undefined !== clipRectangle) {\r\n const intersect = clipRectangle.intersect(drapeRectangle, MapTile._scratchIntersectRange);\r\n assert(!intersect.isNull);\r\n clipRect = Range2d.createXYXY((intersect.low.x - drapeRectangle.low.x) / drapeDiagonal.x, (intersect.low.y - drapeRectangle.low.y) / drapeDiagonal.y, (intersect.high.x - drapeRectangle.low.x) / drapeDiagonal.x, (intersect.high.y - drapeRectangle.low.y) / drapeDiagonal.y);\r\n }\r\n\r\n const imageryModelId = imageryTile.tree.modelId;\r\n return new TerrainTexture(imageryTile.texture, featureIndex, scale, translate, drapeRectangle, this.mapTree.getLayerIndex(imageryModelId), this.mapTree.getLayerTransparency(imageryModelId), clipRect);\r\n }\r\n\r\n /** @internal */\r\n public override setContent(content: TerrainTileContent): void {\r\n\r\n if (this.quadId.level < this.maxDepth) {\r\n const childIds = this.quadId.getChildIds();\r\n for (const childId of childIds) {\r\n if (!this.mapLoader.isTileAvailable(childId)) {\r\n this._mesh = content.terrain?.mesh; // If a child is unavailable retain mesh for upsampling.\r\n break;\r\n }\r\n }\r\n }\r\n\r\n if (this.mapTree.produceGeometry) {\r\n const iModelTransform = this.mapTree.iModelTransform;\r\n const geometryTransform = content.terrain?.renderGeometry?.transform;\r\n const transform = geometryTransform ? iModelTransform.multiplyTransformTransform(geometryTransform) : iModelTransform;\r\n const polyface = content.terrain?.mesh ? RealityMeshParams.toPolyface(content.terrain.mesh, { transform }) : undefined;\r\n this._geometry = polyface ? { polyfaces: [polyface] } : undefined;\r\n\r\n } else {\r\n dispose(this._renderGeometry);\r\n this._renderGeometry = content.terrain?.renderGeometry;\r\n }\r\n\r\n this.everLoaded = true;\r\n\r\n if (undefined !== content.contentRange)\r\n this._contentRange = content.contentRange;\r\n\r\n this.setIsReady();\r\n }\r\n\r\n /** @internal */\r\n public override freeMemory(): void {\r\n // ###TODO MapTiles and ImageryMapTiles share resources and don't currently interact well with TileAdmin.freeMemory(). Opt out for now.\r\n }\r\n\r\n /** @internal */\r\n public override disposeContents() {\r\n super.disposeContents();\r\n this._renderGeometry = dispose(this._renderGeometry);\r\n this.clearImageryTiles();\r\n // Note - don't dispose of mesh - these should only ever exist on terrain leaf tile and are required by children. Let garbage collector handle them.\r\n }\r\n}\r\n\r\n/** A child tile that has no content of its own available. It instead produces content by up-sampling the content of an ancestor tile.\r\n * @internal\r\n */\r\nexport class UpsampledMapTile extends MapTile {\r\n /** The ancestor tile whose content will be up-sampled. */\r\n private readonly _loadableTile: MapTile;\r\n\r\n constructor(params: RealityTileParams, mapTree: MapTileTree, quadId: QuadId, patch: TilePatch, rectangle: MapCartoRectangle, heightRange: Range1d | undefined, cornerRays: Ray3d[] | undefined, loadableTile: MapTile) {\r\n super(params, mapTree, quadId, patch, rectangle, heightRange, cornerRays);\r\n this._loadableTile = loadableTile;\r\n }\r\n\r\n public override get isUpsampled() { return true; }\r\n public override get isEmpty() { return false; }\r\n public override get loadableTile(): RealityTile { return this._loadableTile; }\r\n\r\n private upsampleFromParent() {\r\n const parent = this.loadableTerrainTile;\r\n const parentMesh = parent.mesh;\r\n if (undefined === parentMesh) {\r\n return undefined;\r\n }\r\n const thisId = this.quadId, parentId = parent.quadId;\r\n const levelDelta = thisId.level - parentId.level;\r\n const thisColumn = thisId.column - (parentId.column << levelDelta);\r\n const thisRow = thisId.row - (parentId.row << levelDelta);\r\n const scale = 1.0 / (1 << levelDelta);\r\n const parentParameterRange = Range2d.createXYXY(scale * thisColumn, scale * thisRow, scale * (thisColumn + 1), scale * (thisRow + 1));\r\n const upsample = upsampleRealityMeshParams(parentMesh, parentParameterRange);\r\n this.adjustHeights(upsample.heightRange.low, upsample.heightRange.high);\r\n return upsample;\r\n }\r\n\r\n public override get renderGeometry() {\r\n if (undefined === this._renderGeometry) {\r\n const upsample = this.upsampleFromParent();\r\n const projection = this.loadableTerrainTile.getProjection(this.heightRange);\r\n if (upsample)\r\n this._renderGeometry = IModelApp.renderSystem.createTerrainMesh(upsample.mesh, projection.transformFromLocal, true);\r\n }\r\n return this._renderGeometry;\r\n }\r\n\r\n public override get isLoading(): boolean { return this.loadableTile.isLoading; }\r\n public override get isQueued(): boolean { return this.loadableTile.isQueued; }\r\n public override get isNotFound(): boolean { return this.loadableTile.isNotFound; }\r\n public override get isReady(): boolean { return (this._renderGeometry !== undefined || this.loadableTile.loadStatus === TileLoadStatus.Ready) && this.baseImageryIsReady; }\r\n\r\n public override markUsed(args: TileDrawArgs): void {\r\n args.markUsed(this);\r\n args.markUsed(this.loadableTile);\r\n }\r\n}\r\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"MapTileTree.d.ts","sourceRoot":"","sources":["../../../../src/tile/map/MapTileTree.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"MapTileTree.d.ts","sourceRoot":"","sources":["../../../../src/tile/map/MapTileTree.ts"],"names":[],"mappings":"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"}
@@ -237,10 +237,10 @@ class MapTileTree extends internal_1.RealityTileTree {
237
237
  getCornerRays(rectangle) {
238
238
  const rays = new Array();
239
239
  if (this.globeMode === core_common_1.GlobeMode.Ellipsoid) {
240
- rays.push(this.earthEllipsoid.radiansToUnitNormalRay(rectangle.low.x, core_common_1.Cartographic.parametricLatitudeFromGeodeticLatitude(rectangle.high.y)));
241
- rays.push(this.earthEllipsoid.radiansToUnitNormalRay(rectangle.high.x, core_common_1.Cartographic.parametricLatitudeFromGeodeticLatitude(rectangle.high.y)));
242
- rays.push(this.earthEllipsoid.radiansToUnitNormalRay(rectangle.low.x, core_common_1.Cartographic.parametricLatitudeFromGeodeticLatitude(rectangle.low.y)));
243
- rays.push(this.earthEllipsoid.radiansToUnitNormalRay(rectangle.high.x, core_common_1.Cartographic.parametricLatitudeFromGeodeticLatitude(rectangle.low.y)));
240
+ rays.push((0, core_bentley_1.expectDefined)(this.earthEllipsoid.radiansToUnitNormalRay(rectangle.low.x, core_common_1.Cartographic.parametricLatitudeFromGeodeticLatitude(rectangle.high.y))));
241
+ rays.push((0, core_bentley_1.expectDefined)(this.earthEllipsoid.radiansToUnitNormalRay(rectangle.high.x, core_common_1.Cartographic.parametricLatitudeFromGeodeticLatitude(rectangle.high.y))));
242
+ rays.push((0, core_bentley_1.expectDefined)(this.earthEllipsoid.radiansToUnitNormalRay(rectangle.low.x, core_common_1.Cartographic.parametricLatitudeFromGeodeticLatitude(rectangle.low.y))));
243
+ rays.push((0, core_bentley_1.expectDefined)(this.earthEllipsoid.radiansToUnitNormalRay(rectangle.high.x, core_common_1.Cartographic.parametricLatitudeFromGeodeticLatitude(rectangle.low.y))));
244
244
  }
245
245
  else {
246
246
  const mercatorFractionRange = rectangle.getTileFractionRange(this._mercatorTilingScheme);
@@ -253,7 +253,7 @@ class MapTileTree extends internal_1.RealityTileTree {
253
253
  }
254
254
  /** @internal */
255
255
  pointAboveEllipsoid(point) {
256
- return this.earthEllipsoid.worldToLocal(point, scratchPoint).magnitude() > 1;
256
+ return (0, core_bentley_1.expectDefined)(this.earthEllipsoid.worldToLocal(point, scratchPoint)).magnitude() > 1;
257
257
  }
258
258
  getMercatorFractionChildGridPoints(tile, columnCount, rowCount) {
259
259
  const gridPoints = [];
@@ -292,7 +292,7 @@ class MapTileTree extends internal_1.RealityTileTree {
292
292
  y: this._mercatorTilingScheme.yFractionToLatitude(gridPoint.y) * core_geometry_1.Angle.degreesPerRadian,
293
293
  z: this.bimElevationBias,
294
294
  });
295
- const iModelCoordinates = this._gcsConverter.getCachedIModelCoordinatesFromGeoCoordinates(requestProps);
295
+ const iModelCoordinates = (0, core_bentley_1.expectDefined)(this._gcsConverter).getCachedIModelCoordinatesFromGeoCoordinates(requestProps);
296
296
  if (iModelCoordinates.missing)
297
297
  return undefined;
298
298
  return iModelCoordinates.result.map((result) => !result || result.s ? undefined : core_geometry_1.Point3d.fromJSON(result.p));
@@ -320,7 +320,7 @@ class MapTileTree extends internal_1.RealityTileTree {
320
320
  });
321
321
  }
322
322
  }
323
- await this._gcsConverter.getIModelCoordinatesFromGeoCoordinates(requestProps);
323
+ await (0, core_bentley_1.expectDefined)(this._gcsConverter).getIModelCoordinatesFromGeoCoordinates(requestProps);
324
324
  }
325
325
  static _scratchCarto = core_common_1.Cartographic.createZero();
326
326
  /** Get the corners for planar children.
@@ -334,6 +334,7 @@ class MapTileTree extends internal_1.RealityTileTree {
334
334
  this._mercatorFractionToDb.multiplyPoint3d(gridPoint, scratchCorner);
335
335
  if (this.globeMode !== core_common_1.GlobeMode.Ellipsoid || this.cartesianRange.containsPoint(scratchCorner)) {
336
336
  if (reprojected !== undefined && reprojected[i] !== undefined)
337
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
337
338
  reprojected[i].clone(gridPoint);
338
339
  else
339
340
  scratchCorner.clone(gridPoint);