@itwin/core-frontend 3.2.0-dev.7 → 3.2.0-dev.70

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 (1076) hide show
  1. package/CHANGELOG.md +60 -1
  2. package/lib/cjs/AccuDraw.d.ts +2 -0
  3. package/lib/cjs/AccuDraw.d.ts.map +1 -1
  4. package/lib/cjs/AccuDraw.js +2 -0
  5. package/lib/cjs/AccuDraw.js.map +1 -1
  6. package/lib/cjs/AccuSnap.d.ts +1 -0
  7. package/lib/cjs/AccuSnap.d.ts.map +1 -1
  8. package/lib/cjs/AccuSnap.js +1 -0
  9. package/lib/cjs/AccuSnap.js.map +1 -1
  10. package/lib/cjs/ApproximateTerrainHeights.d.ts.map +1 -1
  11. package/lib/cjs/ApproximateTerrainHeights.js +4 -2
  12. package/lib/cjs/ApproximateTerrainHeights.js.map +1 -1
  13. package/lib/cjs/ApproximateTerrainHeightsProps.d.ts +1 -1
  14. package/lib/cjs/ApproximateTerrainHeightsProps.d.ts.map +1 -1
  15. package/lib/cjs/ApproximateTerrainHeightsProps.js +2 -2
  16. package/lib/cjs/ApproximateTerrainHeightsProps.js.map +1 -1
  17. package/lib/cjs/AuxCoordSys.d.ts +12 -2
  18. package/lib/cjs/AuxCoordSys.d.ts.map +1 -1
  19. package/lib/cjs/AuxCoordSys.js +12 -2
  20. package/lib/cjs/AuxCoordSys.js.map +1 -1
  21. package/lib/cjs/BingLocation.d.ts +1 -0
  22. package/lib/cjs/BingLocation.d.ts.map +1 -1
  23. package/lib/cjs/BingLocation.js +1 -0
  24. package/lib/cjs/BingLocation.js.map +1 -1
  25. package/lib/cjs/BriefcaseConnection.d.ts +35 -1
  26. package/lib/cjs/BriefcaseConnection.d.ts.map +1 -1
  27. package/lib/cjs/BriefcaseConnection.js +52 -1
  28. package/lib/cjs/BriefcaseConnection.js.map +1 -1
  29. package/lib/cjs/CategorySelectorState.d.ts +1 -0
  30. package/lib/cjs/CategorySelectorState.d.ts.map +1 -1
  31. package/lib/cjs/CategorySelectorState.js +1 -0
  32. package/lib/cjs/CategorySelectorState.js.map +1 -1
  33. package/lib/cjs/ChangeFlags.d.ts +1 -0
  34. package/lib/cjs/ChangeFlags.d.ts.map +1 -1
  35. package/lib/cjs/ChangeFlags.js +1 -0
  36. package/lib/cjs/ChangeFlags.js.map +1 -1
  37. package/lib/cjs/ContextRealityModelState.d.ts +1 -0
  38. package/lib/cjs/ContextRealityModelState.d.ts.map +1 -1
  39. package/lib/cjs/ContextRealityModelState.js +1 -0
  40. package/lib/cjs/ContextRealityModelState.js.map +1 -1
  41. package/lib/cjs/CoordSystem.d.ts +1 -0
  42. package/lib/cjs/CoordSystem.d.ts.map +1 -1
  43. package/lib/cjs/CoordSystem.js +1 -0
  44. package/lib/cjs/CoordSystem.js.map +1 -1
  45. package/lib/cjs/DisplayStyleState.d.ts +4 -0
  46. package/lib/cjs/DisplayStyleState.d.ts.map +1 -1
  47. package/lib/cjs/DisplayStyleState.js +9 -4
  48. package/lib/cjs/DisplayStyleState.js.map +1 -1
  49. package/lib/cjs/DrawingViewState.d.ts +5 -2
  50. package/lib/cjs/DrawingViewState.d.ts.map +1 -1
  51. package/lib/cjs/DrawingViewState.js +34 -3
  52. package/lib/cjs/DrawingViewState.js.map +1 -1
  53. package/lib/cjs/ElementLocateManager.d.ts +23 -5
  54. package/lib/cjs/ElementLocateManager.d.ts.map +1 -1
  55. package/lib/cjs/ElementLocateManager.js +19 -4
  56. package/lib/cjs/ElementLocateManager.js.map +1 -1
  57. package/lib/cjs/EmphasizeElements.d.ts +1 -0
  58. package/lib/cjs/EmphasizeElements.d.ts.map +1 -1
  59. package/lib/cjs/EmphasizeElements.js +1 -0
  60. package/lib/cjs/EmphasizeElements.js.map +1 -1
  61. package/lib/cjs/EntityState.d.ts +2 -0
  62. package/lib/cjs/EntityState.d.ts.map +1 -1
  63. package/lib/cjs/EntityState.js +2 -0
  64. package/lib/cjs/EntityState.js.map +1 -1
  65. package/lib/cjs/FeatureOverrideProvider.d.ts +1 -0
  66. package/lib/cjs/FeatureOverrideProvider.d.ts.map +1 -1
  67. package/lib/cjs/FeatureOverrideProvider.js.map +1 -1
  68. package/lib/cjs/FlashSettings.d.ts +3 -0
  69. package/lib/cjs/FlashSettings.d.ts.map +1 -1
  70. package/lib/cjs/FlashSettings.js +2 -0
  71. package/lib/cjs/FlashSettings.js.map +1 -1
  72. package/lib/cjs/FrontendHubAccess.d.ts +4 -1
  73. package/lib/cjs/FrontendHubAccess.d.ts.map +1 -1
  74. package/lib/cjs/FrontendHubAccess.js.map +1 -1
  75. package/lib/cjs/FrontendLoggerCategory.d.ts +1 -0
  76. package/lib/cjs/FrontendLoggerCategory.d.ts.map +1 -1
  77. package/lib/cjs/FrontendLoggerCategory.js +1 -0
  78. package/lib/cjs/FrontendLoggerCategory.js.map +1 -1
  79. package/lib/cjs/FrustumAnimator.d.ts +2 -0
  80. package/lib/cjs/FrustumAnimator.d.ts.map +1 -1
  81. package/lib/cjs/FrustumAnimator.js +2 -0
  82. package/lib/cjs/FrustumAnimator.js.map +1 -1
  83. package/lib/cjs/FuzzySearch.d.ts +1 -0
  84. package/lib/cjs/FuzzySearch.d.ts.map +1 -1
  85. package/lib/cjs/FuzzySearch.js.map +1 -1
  86. package/lib/cjs/GlobeAnimator.d.ts +1 -0
  87. package/lib/cjs/GlobeAnimator.d.ts.map +1 -1
  88. package/lib/cjs/GlobeAnimator.js +1 -0
  89. package/lib/cjs/GlobeAnimator.js.map +1 -1
  90. package/lib/cjs/HitDetail.d.ts +26 -5
  91. package/lib/cjs/HitDetail.d.ts.map +1 -1
  92. package/lib/cjs/HitDetail.js +26 -5
  93. package/lib/cjs/HitDetail.js.map +1 -1
  94. package/lib/cjs/IModelApp.d.ts +9 -0
  95. package/lib/cjs/IModelApp.d.ts.map +1 -1
  96. package/lib/cjs/IModelApp.js +38 -23
  97. package/lib/cjs/IModelApp.js.map +1 -1
  98. package/lib/cjs/IModelConnection.d.ts +11 -2
  99. package/lib/cjs/IModelConnection.d.ts.map +1 -1
  100. package/lib/cjs/IModelConnection.js +23 -2
  101. package/lib/cjs/IModelConnection.js.map +1 -1
  102. package/lib/cjs/ImageUtil.d.ts +15 -2
  103. package/lib/cjs/ImageUtil.d.ts.map +1 -1
  104. package/lib/cjs/ImageUtil.js +19 -4
  105. package/lib/cjs/ImageUtil.js.map +1 -1
  106. package/lib/cjs/IpcApp.d.ts +1 -0
  107. package/lib/cjs/IpcApp.d.ts.map +1 -1
  108. package/lib/cjs/IpcApp.js +1 -0
  109. package/lib/cjs/IpcApp.js.map +1 -1
  110. package/lib/cjs/MarginPercent.d.ts +1 -0
  111. package/lib/cjs/MarginPercent.d.ts.map +1 -1
  112. package/lib/cjs/MarginPercent.js +1 -0
  113. package/lib/cjs/MarginPercent.js.map +1 -1
  114. package/lib/cjs/Marker.d.ts +16 -3
  115. package/lib/cjs/Marker.d.ts.map +1 -1
  116. package/lib/cjs/Marker.js +3 -0
  117. package/lib/cjs/Marker.js.map +1 -1
  118. package/lib/cjs/ModelSelectorState.d.ts +1 -0
  119. package/lib/cjs/ModelSelectorState.d.ts.map +1 -1
  120. package/lib/cjs/ModelSelectorState.js +1 -0
  121. package/lib/cjs/ModelSelectorState.js.map +1 -1
  122. package/lib/cjs/ModelState.d.ts +10 -0
  123. package/lib/cjs/ModelState.d.ts.map +1 -1
  124. package/lib/cjs/ModelState.js +10 -0
  125. package/lib/cjs/ModelState.js.map +1 -1
  126. package/lib/cjs/NotificationManager.d.ts +11 -0
  127. package/lib/cjs/NotificationManager.d.ts.map +1 -1
  128. package/lib/cjs/NotificationManager.js +10 -0
  129. package/lib/cjs/NotificationManager.js.map +1 -1
  130. package/lib/cjs/PerModelCategoryVisibility.d.ts +1 -0
  131. package/lib/cjs/PerModelCategoryVisibility.d.ts.map +1 -1
  132. package/lib/cjs/PerModelCategoryVisibility.js +1 -0
  133. package/lib/cjs/PerModelCategoryVisibility.js.map +1 -1
  134. package/lib/cjs/SelectionSet.d.ts +7 -0
  135. package/lib/cjs/SelectionSet.d.ts.map +1 -1
  136. package/lib/cjs/SelectionSet.js +3 -0
  137. package/lib/cjs/SelectionSet.js.map +1 -1
  138. package/lib/cjs/SheetViewState.d.ts +6 -5
  139. package/lib/cjs/SheetViewState.d.ts.map +1 -1
  140. package/lib/cjs/SheetViewState.js +58 -6
  141. package/lib/cjs/SheetViewState.js.map +1 -1
  142. package/lib/cjs/SpatialViewState.d.ts +7 -2
  143. package/lib/cjs/SpatialViewState.d.ts.map +1 -1
  144. package/lib/cjs/SpatialViewState.js +17 -3
  145. package/lib/cjs/SpatialViewState.js.map +1 -1
  146. package/lib/cjs/Sprites.d.ts +3 -0
  147. package/lib/cjs/Sprites.d.ts.map +1 -1
  148. package/lib/cjs/Sprites.js +3 -0
  149. package/lib/cjs/Sprites.js.map +1 -1
  150. package/lib/cjs/StandardView.d.ts +1 -0
  151. package/lib/cjs/StandardView.d.ts.map +1 -1
  152. package/lib/cjs/StandardView.js +1 -0
  153. package/lib/cjs/StandardView.js.map +1 -1
  154. package/lib/cjs/SubCategoriesCache.d.ts +14 -7
  155. package/lib/cjs/SubCategoriesCache.d.ts.map +1 -1
  156. package/lib/cjs/SubCategoriesCache.js +36 -8
  157. package/lib/cjs/SubCategoriesCache.js.map +1 -1
  158. package/lib/cjs/TentativePoint.d.ts +4 -1
  159. package/lib/cjs/TentativePoint.d.ts.map +1 -1
  160. package/lib/cjs/TentativePoint.js +4 -1
  161. package/lib/cjs/TentativePoint.js.map +1 -1
  162. package/lib/cjs/Tiles.d.ts +1 -0
  163. package/lib/cjs/Tiles.d.ts.map +1 -1
  164. package/lib/cjs/Tiles.js +1 -0
  165. package/lib/cjs/Tiles.js.map +1 -1
  166. package/lib/cjs/ViewAnimation.d.ts +6 -0
  167. package/lib/cjs/ViewAnimation.d.ts.map +1 -1
  168. package/lib/cjs/ViewAnimation.js.map +1 -1
  169. package/lib/cjs/ViewCreator2d.d.ts +2 -0
  170. package/lib/cjs/ViewCreator2d.d.ts.map +1 -1
  171. package/lib/cjs/ViewCreator2d.js +1 -0
  172. package/lib/cjs/ViewCreator2d.js.map +1 -1
  173. package/lib/cjs/ViewCreator3d.d.ts +2 -8
  174. package/lib/cjs/ViewCreator3d.d.ts.map +1 -1
  175. package/lib/cjs/ViewCreator3d.js +12 -38
  176. package/lib/cjs/ViewCreator3d.js.map +1 -1
  177. package/lib/cjs/ViewGlobalLocation.d.ts +3 -0
  178. package/lib/cjs/ViewGlobalLocation.d.ts.map +1 -1
  179. package/lib/cjs/ViewGlobalLocation.js +1 -0
  180. package/lib/cjs/ViewGlobalLocation.js.map +1 -1
  181. package/lib/cjs/ViewManager.d.ts +3 -0
  182. package/lib/cjs/ViewManager.d.ts.map +1 -1
  183. package/lib/cjs/ViewManager.js +2 -0
  184. package/lib/cjs/ViewManager.js.map +1 -1
  185. package/lib/cjs/ViewPose.d.ts +1 -0
  186. package/lib/cjs/ViewPose.d.ts.map +1 -1
  187. package/lib/cjs/ViewPose.js +1 -0
  188. package/lib/cjs/ViewPose.js.map +1 -1
  189. package/lib/cjs/ViewRect.d.ts +1 -0
  190. package/lib/cjs/ViewRect.d.ts.map +1 -1
  191. package/lib/cjs/ViewRect.js +1 -0
  192. package/lib/cjs/ViewRect.js.map +1 -1
  193. package/lib/cjs/ViewState.d.ts +17 -2
  194. package/lib/cjs/ViewState.d.ts.map +1 -1
  195. package/lib/cjs/ViewState.js +40 -9
  196. package/lib/cjs/ViewState.js.map +1 -1
  197. package/lib/cjs/ViewStatus.d.ts +1 -0
  198. package/lib/cjs/ViewStatus.d.ts.map +1 -1
  199. package/lib/cjs/ViewStatus.js +1 -0
  200. package/lib/cjs/ViewStatus.js.map +1 -1
  201. package/lib/cjs/ViewingSpace.d.ts +1 -0
  202. package/lib/cjs/ViewingSpace.d.ts.map +1 -1
  203. package/lib/cjs/ViewingSpace.js +1 -0
  204. package/lib/cjs/ViewingSpace.js.map +1 -1
  205. package/lib/cjs/Viewport.d.ts +6 -2
  206. package/lib/cjs/Viewport.d.ts.map +1 -1
  207. package/lib/cjs/Viewport.js +12 -4
  208. package/lib/cjs/Viewport.js.map +1 -1
  209. package/lib/cjs/core-frontend.d.ts +6 -5
  210. package/lib/cjs/core-frontend.d.ts.map +1 -1
  211. package/lib/cjs/core-frontend.js +7 -5
  212. package/lib/cjs/core-frontend.js.map +1 -1
  213. package/lib/cjs/extension/Extension.d.ts +22 -3
  214. package/lib/cjs/extension/Extension.d.ts.map +1 -1
  215. package/lib/cjs/extension/Extension.js +0 -8
  216. package/lib/cjs/extension/Extension.js.map +1 -1
  217. package/lib/cjs/extension/ExtensionAdmin.d.ts +1 -3
  218. package/lib/cjs/extension/ExtensionAdmin.d.ts.map +1 -1
  219. package/lib/cjs/extension/ExtensionAdmin.js +1 -4
  220. package/lib/cjs/extension/ExtensionAdmin.js.map +1 -1
  221. package/lib/cjs/extension/ExtensionRuntime.js +231 -59
  222. package/lib/cjs/extension/ExtensionRuntime.js.map +1 -1
  223. package/lib/cjs/quantity-formatting/QuantityFormatter.d.ts.map +1 -1
  224. package/lib/cjs/quantity-formatting/QuantityFormatter.js +2 -1
  225. package/lib/cjs/quantity-formatting/QuantityFormatter.js.map +1 -1
  226. package/lib/cjs/render/CanvasDecoration.d.ts +2 -0
  227. package/lib/cjs/render/CanvasDecoration.d.ts.map +1 -1
  228. package/lib/cjs/render/CanvasDecoration.js.map +1 -1
  229. package/lib/cjs/render/Decorations.d.ts +1 -0
  230. package/lib/cjs/render/Decorations.d.ts.map +1 -1
  231. package/lib/cjs/render/Decorations.js +1 -0
  232. package/lib/cjs/render/Decorations.js.map +1 -1
  233. package/lib/cjs/render/FeatureSymbology.d.ts +1 -0
  234. package/lib/cjs/render/FeatureSymbology.d.ts.map +1 -1
  235. package/lib/cjs/render/FeatureSymbology.js +1 -0
  236. package/lib/cjs/render/FeatureSymbology.js.map +1 -1
  237. package/lib/cjs/render/GraphicBranch.d.ts +2 -0
  238. package/lib/cjs/render/GraphicBranch.d.ts.map +1 -1
  239. package/lib/cjs/render/GraphicBranch.js +1 -0
  240. package/lib/cjs/render/GraphicBranch.js.map +1 -1
  241. package/lib/cjs/render/GraphicBuilder.d.ts +33 -2
  242. package/lib/cjs/render/GraphicBuilder.d.ts.map +1 -1
  243. package/lib/cjs/render/GraphicBuilder.js +26 -0
  244. package/lib/cjs/render/GraphicBuilder.js.map +1 -1
  245. package/lib/cjs/render/GraphicPrimitive.d.ts +14 -0
  246. package/lib/cjs/render/GraphicPrimitive.d.ts.map +1 -1
  247. package/lib/cjs/render/GraphicPrimitive.js.map +1 -1
  248. package/lib/cjs/render/ParticleCollectionBuilder.d.ts +3 -0
  249. package/lib/cjs/render/ParticleCollectionBuilder.d.ts.map +1 -1
  250. package/lib/cjs/render/ParticleCollectionBuilder.js.map +1 -1
  251. package/lib/cjs/render/Pixel.d.ts +1 -0
  252. package/lib/cjs/render/Pixel.d.ts.map +1 -1
  253. package/lib/cjs/render/Pixel.js +1 -0
  254. package/lib/cjs/render/Pixel.js.map +1 -1
  255. package/lib/cjs/render/RenderClipVolume.d.ts +1 -0
  256. package/lib/cjs/render/RenderClipVolume.d.ts.map +1 -1
  257. package/lib/cjs/render/RenderClipVolume.js +1 -0
  258. package/lib/cjs/render/RenderClipVolume.js.map +1 -1
  259. package/lib/cjs/render/RenderGraphic.d.ts +3 -0
  260. package/lib/cjs/render/RenderGraphic.d.ts.map +1 -1
  261. package/lib/cjs/render/RenderGraphic.js +2 -0
  262. package/lib/cjs/render/RenderGraphic.js.map +1 -1
  263. package/lib/cjs/render/RenderSystem.d.ts +4 -3
  264. package/lib/cjs/render/RenderSystem.d.ts.map +1 -1
  265. package/lib/cjs/render/RenderSystem.js +4 -3
  266. package/lib/cjs/render/RenderSystem.js.map +1 -1
  267. package/lib/cjs/render/RenderTexture.d.ts +7 -0
  268. package/lib/cjs/render/RenderTexture.d.ts.map +1 -1
  269. package/lib/cjs/render/RenderTexture.js.map +1 -1
  270. package/lib/cjs/render/Scene.d.ts +1 -0
  271. package/lib/cjs/render/Scene.d.ts.map +1 -1
  272. package/lib/cjs/render/Scene.js +1 -0
  273. package/lib/cjs/render/Scene.js.map +1 -1
  274. package/lib/cjs/render/ScreenSpaceEffectBuilder.d.ts +10 -0
  275. package/lib/cjs/render/ScreenSpaceEffectBuilder.d.ts.map +1 -1
  276. package/lib/cjs/render/ScreenSpaceEffectBuilder.js +2 -0
  277. package/lib/cjs/render/ScreenSpaceEffectBuilder.js.map +1 -1
  278. package/lib/cjs/render/primitives/VertexKey.d.ts +4 -2
  279. package/lib/cjs/render/primitives/VertexKey.d.ts.map +1 -1
  280. package/lib/cjs/render/primitives/VertexKey.js +23 -12
  281. package/lib/cjs/render/primitives/VertexKey.js.map +1 -1
  282. package/lib/cjs/render/primitives/VertexTable.d.ts +1 -1
  283. package/lib/cjs/render/primitives/VertexTable.js +30 -2
  284. package/lib/cjs/render/primitives/VertexTable.js.map +1 -1
  285. package/lib/cjs/render/primitives/geometry/GeometryAccumulator.d.ts +12 -4
  286. package/lib/cjs/render/primitives/geometry/GeometryAccumulator.d.ts.map +1 -1
  287. package/lib/cjs/render/primitives/geometry/GeometryAccumulator.js +20 -15
  288. package/lib/cjs/render/primitives/geometry/GeometryAccumulator.js.map +1 -1
  289. package/lib/cjs/render/primitives/geometry/GeometryListBuilder.d.ts +2 -1
  290. package/lib/cjs/render/primitives/geometry/GeometryListBuilder.d.ts.map +1 -1
  291. package/lib/cjs/render/primitives/geometry/GeometryListBuilder.js +6 -1
  292. package/lib/cjs/render/primitives/geometry/GeometryListBuilder.js.map +1 -1
  293. package/lib/cjs/render/primitives/geometry/GeometryPrimitives.d.ts +14 -12
  294. package/lib/cjs/render/primitives/geometry/GeometryPrimitives.d.ts.map +1 -1
  295. package/lib/cjs/render/primitives/geometry/GeometryPrimitives.js +26 -25
  296. package/lib/cjs/render/primitives/geometry/GeometryPrimitives.js.map +1 -1
  297. package/lib/cjs/render/primitives/mesh/MeshBuilder.d.ts +8 -8
  298. package/lib/cjs/render/primitives/mesh/MeshBuilder.d.ts.map +1 -1
  299. package/lib/cjs/render/primitives/mesh/MeshBuilder.js +15 -15
  300. package/lib/cjs/render/primitives/mesh/MeshBuilder.js.map +1 -1
  301. package/lib/cjs/render/primitives/mesh/MeshBuilderMap.d.ts +11 -6
  302. package/lib/cjs/render/primitives/mesh/MeshBuilderMap.d.ts.map +1 -1
  303. package/lib/cjs/render/primitives/mesh/MeshBuilderMap.js +12 -15
  304. package/lib/cjs/render/primitives/mesh/MeshBuilderMap.js.map +1 -1
  305. package/lib/cjs/render/primitives/mesh/MeshPrimitives.d.ts +1 -1
  306. package/lib/cjs/render/primitives/mesh/MeshPrimitives.d.ts.map +1 -1
  307. package/lib/cjs/render/primitives/mesh/MeshPrimitives.js +6 -2
  308. package/lib/cjs/render/primitives/mesh/MeshPrimitives.js.map +1 -1
  309. package/lib/cjs/render/webgl/AttributeMap.js +1 -1
  310. package/lib/cjs/render/webgl/CachedGeometry.d.ts +7 -1
  311. package/lib/cjs/render/webgl/CachedGeometry.d.ts.map +1 -1
  312. package/lib/cjs/render/webgl/CachedGeometry.js +20 -10
  313. package/lib/cjs/render/webgl/CachedGeometry.js.map +1 -1
  314. package/lib/cjs/render/webgl/DrawCommand.d.ts.map +1 -1
  315. package/lib/cjs/render/webgl/DrawCommand.js +2 -1
  316. package/lib/cjs/render/webgl/DrawCommand.js.map +1 -1
  317. package/lib/cjs/render/webgl/InstancedGeometry.d.ts +1 -0
  318. package/lib/cjs/render/webgl/InstancedGeometry.d.ts.map +1 -1
  319. package/lib/cjs/render/webgl/InstancedGeometry.js +1 -0
  320. package/lib/cjs/render/webgl/InstancedGeometry.js.map +1 -1
  321. package/lib/cjs/render/webgl/RealityMesh.d.ts +14 -11
  322. package/lib/cjs/render/webgl/RealityMesh.d.ts.map +1 -1
  323. package/lib/cjs/render/webgl/RealityMesh.js +26 -17
  324. package/lib/cjs/render/webgl/RealityMesh.js.map +1 -1
  325. package/lib/cjs/render/webgl/SceneCompositor.d.ts +2 -0
  326. package/lib/cjs/render/webgl/SceneCompositor.d.ts.map +1 -1
  327. package/lib/cjs/render/webgl/SceneCompositor.js +219 -52
  328. package/lib/cjs/render/webgl/SceneCompositor.js.map +1 -1
  329. package/lib/cjs/render/webgl/ShaderBuilder.d.ts +5 -4
  330. package/lib/cjs/render/webgl/ShaderBuilder.d.ts.map +1 -1
  331. package/lib/cjs/render/webgl/ShaderBuilder.js +7 -6
  332. package/lib/cjs/render/webgl/ShaderBuilder.js.map +1 -1
  333. package/lib/cjs/render/webgl/System.d.ts +4 -4
  334. package/lib/cjs/render/webgl/System.d.ts.map +1 -1
  335. package/lib/cjs/render/webgl/System.js +6 -6
  336. package/lib/cjs/render/webgl/System.js.map +1 -1
  337. package/lib/cjs/render/webgl/Target.d.ts +6 -1
  338. package/lib/cjs/render/webgl/Target.d.ts.map +1 -1
  339. package/lib/cjs/render/webgl/Target.js +64 -13
  340. package/lib/cjs/render/webgl/Target.js.map +1 -1
  341. package/lib/cjs/render/webgl/Technique.d.ts +4 -2
  342. package/lib/cjs/render/webgl/Technique.d.ts.map +1 -1
  343. package/lib/cjs/render/webgl/Technique.js +166 -135
  344. package/lib/cjs/render/webgl/Technique.js.map +1 -1
  345. package/lib/cjs/render/webgl/TechniqueFlags.d.ts +7 -3
  346. package/lib/cjs/render/webgl/TechniqueFlags.d.ts.map +1 -1
  347. package/lib/cjs/render/webgl/TechniqueFlags.js +17 -4
  348. package/lib/cjs/render/webgl/TechniqueFlags.js.map +1 -1
  349. package/lib/cjs/render/webgl/TechniqueId.d.ts +8 -7
  350. package/lib/cjs/render/webgl/TechniqueId.d.ts.map +1 -1
  351. package/lib/cjs/render/webgl/TechniqueId.js.map +1 -1
  352. package/lib/cjs/render/webgl/glsl/Animation.d.ts.map +1 -1
  353. package/lib/cjs/render/webgl/glsl/Animation.js +2 -0
  354. package/lib/cjs/render/webgl/glsl/Animation.js.map +1 -1
  355. package/lib/cjs/render/webgl/glsl/Blur.d.ts +2 -1
  356. package/lib/cjs/render/webgl/glsl/Blur.d.ts.map +1 -1
  357. package/lib/cjs/render/webgl/glsl/Blur.js +38 -6
  358. package/lib/cjs/render/webgl/glsl/Blur.js.map +1 -1
  359. package/lib/cjs/render/webgl/glsl/Color.d.ts.map +1 -1
  360. package/lib/cjs/render/webgl/glsl/Color.js +8 -7
  361. package/lib/cjs/render/webgl/glsl/Color.js.map +1 -1
  362. package/lib/cjs/render/webgl/glsl/CopyStencil.js +1 -1
  363. package/lib/cjs/render/webgl/glsl/Decode.d.ts +2 -1
  364. package/lib/cjs/render/webgl/glsl/Decode.d.ts.map +1 -1
  365. package/lib/cjs/render/webgl/glsl/Decode.js +16 -2
  366. package/lib/cjs/render/webgl/glsl/Decode.js.map +1 -1
  367. package/lib/cjs/render/webgl/glsl/Edge.d.ts +2 -2
  368. package/lib/cjs/render/webgl/glsl/Edge.d.ts.map +1 -1
  369. package/lib/cjs/render/webgl/glsl/Edge.js +6 -19
  370. package/lib/cjs/render/webgl/glsl/Edge.js.map +1 -1
  371. package/lib/cjs/render/webgl/glsl/FeatureSymbology.d.ts.map +1 -1
  372. package/lib/cjs/render/webgl/glsl/FeatureSymbology.js +0 -2
  373. package/lib/cjs/render/webgl/glsl/FeatureSymbology.js.map +1 -1
  374. package/lib/cjs/render/webgl/glsl/PointString.d.ts +3 -3
  375. package/lib/cjs/render/webgl/glsl/PointString.d.ts.map +1 -1
  376. package/lib/cjs/render/webgl/glsl/PointString.js +6 -6
  377. package/lib/cjs/render/webgl/glsl/PointString.js.map +1 -1
  378. package/lib/cjs/render/webgl/glsl/Polyline.d.ts +3 -3
  379. package/lib/cjs/render/webgl/glsl/Polyline.d.ts.map +1 -1
  380. package/lib/cjs/render/webgl/glsl/Polyline.js +6 -21
  381. package/lib/cjs/render/webgl/glsl/Polyline.js.map +1 -1
  382. package/lib/cjs/render/webgl/glsl/Surface.d.ts +2 -2
  383. package/lib/cjs/render/webgl/glsl/Surface.d.ts.map +1 -1
  384. package/lib/cjs/render/webgl/glsl/Surface.js +50 -34
  385. package/lib/cjs/render/webgl/glsl/Surface.js.map +1 -1
  386. package/lib/cjs/render/webgl/glsl/Vertex.d.ts +3 -3
  387. package/lib/cjs/render/webgl/glsl/Vertex.d.ts.map +1 -1
  388. package/lib/cjs/render/webgl/glsl/Vertex.js +143 -57
  389. package/lib/cjs/render/webgl/glsl/Vertex.js.map +1 -1
  390. package/lib/cjs/tile/DisclosedTileTreeSet.d.ts +2 -0
  391. package/lib/cjs/tile/DisclosedTileTreeSet.d.ts.map +1 -1
  392. package/lib/cjs/tile/DisclosedTileTreeSet.js +1 -0
  393. package/lib/cjs/tile/DisclosedTileTreeSet.js.map +1 -1
  394. package/lib/cjs/tile/GltfReader.d.ts +19 -9
  395. package/lib/cjs/tile/GltfReader.d.ts.map +1 -1
  396. package/lib/cjs/tile/GltfReader.js +24 -7
  397. package/lib/cjs/tile/GltfReader.js.map +1 -1
  398. package/lib/cjs/tile/IModelTileRequestChannels.d.ts +3 -3
  399. package/lib/cjs/tile/IModelTileRequestChannels.d.ts.map +1 -1
  400. package/lib/cjs/tile/IModelTileRequestChannels.js +7 -11
  401. package/lib/cjs/tile/IModelTileRequestChannels.js.map +1 -1
  402. package/lib/cjs/tile/ImdlReader.d.ts +2 -0
  403. package/lib/cjs/tile/ImdlReader.d.ts.map +1 -1
  404. package/lib/cjs/tile/ImdlReader.js +2 -0
  405. package/lib/cjs/tile/ImdlReader.js.map +1 -1
  406. package/lib/cjs/tile/OPCFormatInterpreter.d.ts.map +1 -1
  407. package/lib/cjs/tile/OPCFormatInterpreter.js +1 -2
  408. package/lib/cjs/tile/OPCFormatInterpreter.js.map +1 -1
  409. package/lib/cjs/tile/RealityTileLoader.d.ts +1 -1
  410. package/lib/cjs/tile/RealityTileLoader.d.ts.map +1 -1
  411. package/lib/cjs/tile/RealityTileLoader.js +34 -6
  412. package/lib/cjs/tile/RealityTileLoader.js.map +1 -1
  413. package/lib/cjs/tile/Tile.d.ts +5 -0
  414. package/lib/cjs/tile/Tile.d.ts.map +1 -1
  415. package/lib/cjs/tile/Tile.js +5 -0
  416. package/lib/cjs/tile/Tile.js.map +1 -1
  417. package/lib/cjs/tile/TileAdmin.d.ts +3 -0
  418. package/lib/cjs/tile/TileAdmin.d.ts.map +1 -1
  419. package/lib/cjs/tile/TileAdmin.js +1 -5
  420. package/lib/cjs/tile/TileAdmin.js.map +1 -1
  421. package/lib/cjs/tile/TileContent.d.ts +1 -0
  422. package/lib/cjs/tile/TileContent.d.ts.map +1 -1
  423. package/lib/cjs/tile/TileContent.js.map +1 -1
  424. package/lib/cjs/tile/TileDrawArgs.d.ts +2 -0
  425. package/lib/cjs/tile/TileDrawArgs.d.ts.map +1 -1
  426. package/lib/cjs/tile/TileDrawArgs.js +1 -0
  427. package/lib/cjs/tile/TileDrawArgs.js.map +1 -1
  428. package/lib/cjs/tile/TileParams.d.ts +1 -0
  429. package/lib/cjs/tile/TileParams.d.ts.map +1 -1
  430. package/lib/cjs/tile/TileParams.js.map +1 -1
  431. package/lib/cjs/tile/TileRequest.d.ts +1 -0
  432. package/lib/cjs/tile/TileRequest.d.ts.map +1 -1
  433. package/lib/cjs/tile/TileRequest.js +1 -0
  434. package/lib/cjs/tile/TileRequest.js.map +1 -1
  435. package/lib/cjs/tile/TileRequestChannel.d.ts +2 -0
  436. package/lib/cjs/tile/TileRequestChannel.d.ts.map +1 -1
  437. package/lib/cjs/tile/TileRequestChannel.js +2 -0
  438. package/lib/cjs/tile/TileRequestChannel.js.map +1 -1
  439. package/lib/cjs/tile/TileRequestChannels.d.ts +1 -4
  440. package/lib/cjs/tile/TileRequestChannels.d.ts.map +1 -1
  441. package/lib/cjs/tile/TileRequestChannels.js +2 -6
  442. package/lib/cjs/tile/TileRequestChannels.js.map +1 -1
  443. package/lib/cjs/tile/TileTree.d.ts +2 -0
  444. package/lib/cjs/tile/TileTree.d.ts.map +1 -1
  445. package/lib/cjs/tile/TileTree.js +2 -0
  446. package/lib/cjs/tile/TileTree.js.map +1 -1
  447. package/lib/cjs/tile/TileTreeOwner.d.ts +1 -0
  448. package/lib/cjs/tile/TileTreeOwner.d.ts.map +1 -1
  449. package/lib/cjs/tile/TileTreeOwner.js.map +1 -1
  450. package/lib/cjs/tile/TileTreeParams.d.ts +1 -0
  451. package/lib/cjs/tile/TileTreeParams.d.ts.map +1 -1
  452. package/lib/cjs/tile/TileTreeParams.js.map +1 -1
  453. package/lib/cjs/tile/TileTreeReference.d.ts +2 -0
  454. package/lib/cjs/tile/TileTreeReference.d.ts.map +1 -1
  455. package/lib/cjs/tile/TileTreeReference.js +2 -0
  456. package/lib/cjs/tile/TileTreeReference.js.map +1 -1
  457. package/lib/cjs/tile/TileTreeSupplier.d.ts +1 -0
  458. package/lib/cjs/tile/TileTreeSupplier.d.ts.map +1 -1
  459. package/lib/cjs/tile/TileTreeSupplier.js.map +1 -1
  460. package/lib/cjs/tile/TileUsageMarker.d.ts +1 -0
  461. package/lib/cjs/tile/TileUsageMarker.d.ts.map +1 -1
  462. package/lib/cjs/tile/TileUsageMarker.js +1 -0
  463. package/lib/cjs/tile/TileUsageMarker.js.map +1 -1
  464. package/lib/cjs/tile/TiledGraphicsProvider.d.ts +1 -0
  465. package/lib/cjs/tile/TiledGraphicsProvider.d.ts.map +1 -1
  466. package/lib/cjs/tile/TiledGraphicsProvider.js.map +1 -1
  467. package/lib/cjs/tile/map/ArcGisUtilities.d.ts.map +1 -1
  468. package/lib/cjs/tile/map/ArcGisUtilities.js +13 -0
  469. package/lib/cjs/tile/map/ArcGisUtilities.js.map +1 -1
  470. package/lib/cjs/tile/map/BingElevation.d.ts +1 -0
  471. package/lib/cjs/tile/map/BingElevation.d.ts.map +1 -1
  472. package/lib/cjs/tile/map/BingElevation.js +1 -0
  473. package/lib/cjs/tile/map/BingElevation.js.map +1 -1
  474. package/lib/cjs/tile/map/ImageryProviders/WmsMapLayerImageryProvider.d.ts +0 -1
  475. package/lib/cjs/tile/map/ImageryProviders/WmsMapLayerImageryProvider.d.ts.map +1 -1
  476. package/lib/cjs/tile/map/ImageryProviders/WmsMapLayerImageryProvider.js +12 -10
  477. package/lib/cjs/tile/map/ImageryProviders/WmsMapLayerImageryProvider.js.map +1 -1
  478. package/lib/cjs/tile/map/MapLayerFormatRegistry.d.ts +5 -1
  479. package/lib/cjs/tile/map/MapLayerFormatRegistry.d.ts.map +1 -1
  480. package/lib/cjs/tile/map/MapLayerFormatRegistry.js.map +1 -1
  481. package/lib/cjs/tile/map/MapTile.js +2 -2
  482. package/lib/cjs/tile/map/MapTile.js.map +1 -1
  483. package/lib/cjs/tile/map/MapTileLoader.js +1 -1
  484. package/lib/cjs/tile/map/MapTileLoader.js.map +1 -1
  485. package/lib/cjs/tile/map/MapTileTree.js +2 -2
  486. package/lib/cjs/tile/map/MapTileTree.js.map +1 -1
  487. package/lib/cjs/tile/map/WmsCapabilities.d.ts +3 -2
  488. package/lib/cjs/tile/map/WmsCapabilities.d.ts.map +1 -1
  489. package/lib/cjs/tile/map/WmsCapabilities.js +11 -10
  490. package/lib/cjs/tile/map/WmsCapabilities.js.map +1 -1
  491. package/lib/cjs/tools/ClipViewTool.d.ts +5 -3
  492. package/lib/cjs/tools/ClipViewTool.d.ts.map +1 -1
  493. package/lib/cjs/tools/ClipViewTool.js +4 -3
  494. package/lib/cjs/tools/ClipViewTool.js.map +1 -1
  495. package/lib/cjs/tools/EditManipulator.d.ts +1 -0
  496. package/lib/cjs/tools/EditManipulator.d.ts.map +1 -1
  497. package/lib/cjs/tools/EditManipulator.js +1 -0
  498. package/lib/cjs/tools/EditManipulator.js.map +1 -1
  499. package/lib/cjs/tools/EventController.d.ts +1 -0
  500. package/lib/cjs/tools/EventController.d.ts.map +1 -1
  501. package/lib/cjs/tools/EventController.js +1 -0
  502. package/lib/cjs/tools/EventController.js.map +1 -1
  503. package/lib/cjs/tools/PrimitiveTool.d.ts +4 -0
  504. package/lib/cjs/tools/PrimitiveTool.d.ts.map +1 -1
  505. package/lib/cjs/tools/PrimitiveTool.js +7 -0
  506. package/lib/cjs/tools/PrimitiveTool.js.map +1 -1
  507. package/lib/cjs/tools/SelectTool.d.ts +3 -0
  508. package/lib/cjs/tools/SelectTool.d.ts.map +1 -1
  509. package/lib/cjs/tools/SelectTool.js +3 -0
  510. package/lib/cjs/tools/SelectTool.js.map +1 -1
  511. package/lib/cjs/tools/Tool.d.ts +41 -6
  512. package/lib/cjs/tools/Tool.d.ts.map +1 -1
  513. package/lib/cjs/tools/Tool.js +27 -4
  514. package/lib/cjs/tools/Tool.js.map +1 -1
  515. package/lib/cjs/tools/ToolAdmin.d.ts +16 -23
  516. package/lib/cjs/tools/ToolAdmin.d.ts.map +1 -1
  517. package/lib/cjs/tools/ToolAdmin.js +47 -20
  518. package/lib/cjs/tools/ToolAdmin.js.map +1 -1
  519. package/lib/cjs/tools/ToolAssistance.d.ts +7 -0
  520. package/lib/cjs/tools/ToolAssistance.d.ts.map +1 -1
  521. package/lib/cjs/tools/ToolAssistance.js +3 -0
  522. package/lib/cjs/tools/ToolAssistance.js.map +1 -1
  523. package/lib/cjs/tools/ToolSettings.d.ts +3 -0
  524. package/lib/cjs/tools/ToolSettings.d.ts.map +1 -1
  525. package/lib/cjs/tools/ToolSettings.js +3 -0
  526. package/lib/cjs/tools/ToolSettings.js.map +1 -1
  527. package/lib/cjs/tools/ViewTool.d.ts +3 -1
  528. package/lib/cjs/tools/ViewTool.d.ts.map +1 -1
  529. package/lib/cjs/tools/ViewTool.js +9 -5
  530. package/lib/cjs/tools/ViewTool.js.map +1 -1
  531. package/lib/esm/AccuDraw.d.ts +2 -0
  532. package/lib/esm/AccuDraw.d.ts.map +1 -1
  533. package/lib/esm/AccuDraw.js +2 -0
  534. package/lib/esm/AccuDraw.js.map +1 -1
  535. package/lib/esm/AccuSnap.d.ts +1 -0
  536. package/lib/esm/AccuSnap.d.ts.map +1 -1
  537. package/lib/esm/AccuSnap.js +1 -0
  538. package/lib/esm/AccuSnap.js.map +1 -1
  539. package/lib/esm/ApproximateTerrainHeights.d.ts.map +1 -1
  540. package/lib/esm/ApproximateTerrainHeights.js +4 -2
  541. package/lib/esm/ApproximateTerrainHeights.js.map +1 -1
  542. package/lib/esm/ApproximateTerrainHeightsProps.d.ts +1 -1
  543. package/lib/esm/ApproximateTerrainHeightsProps.d.ts.map +1 -1
  544. package/lib/esm/ApproximateTerrainHeightsProps.js +1 -1
  545. package/lib/esm/ApproximateTerrainHeightsProps.js.map +1 -1
  546. package/lib/esm/AuxCoordSys.d.ts +12 -2
  547. package/lib/esm/AuxCoordSys.d.ts.map +1 -1
  548. package/lib/esm/AuxCoordSys.js +12 -2
  549. package/lib/esm/AuxCoordSys.js.map +1 -1
  550. package/lib/esm/BingLocation.d.ts +1 -0
  551. package/lib/esm/BingLocation.d.ts.map +1 -1
  552. package/lib/esm/BingLocation.js +1 -0
  553. package/lib/esm/BingLocation.js.map +1 -1
  554. package/lib/esm/BriefcaseConnection.d.ts +35 -1
  555. package/lib/esm/BriefcaseConnection.d.ts.map +1 -1
  556. package/lib/esm/BriefcaseConnection.js +50 -0
  557. package/lib/esm/BriefcaseConnection.js.map +1 -1
  558. package/lib/esm/CategorySelectorState.d.ts +1 -0
  559. package/lib/esm/CategorySelectorState.d.ts.map +1 -1
  560. package/lib/esm/CategorySelectorState.js +1 -0
  561. package/lib/esm/CategorySelectorState.js.map +1 -1
  562. package/lib/esm/ChangeFlags.d.ts +1 -0
  563. package/lib/esm/ChangeFlags.d.ts.map +1 -1
  564. package/lib/esm/ChangeFlags.js +1 -0
  565. package/lib/esm/ChangeFlags.js.map +1 -1
  566. package/lib/esm/ContextRealityModelState.d.ts +1 -0
  567. package/lib/esm/ContextRealityModelState.d.ts.map +1 -1
  568. package/lib/esm/ContextRealityModelState.js +1 -0
  569. package/lib/esm/ContextRealityModelState.js.map +1 -1
  570. package/lib/esm/CoordSystem.d.ts +1 -0
  571. package/lib/esm/CoordSystem.d.ts.map +1 -1
  572. package/lib/esm/CoordSystem.js +1 -0
  573. package/lib/esm/CoordSystem.js.map +1 -1
  574. package/lib/esm/DisplayStyleState.d.ts +4 -0
  575. package/lib/esm/DisplayStyleState.d.ts.map +1 -1
  576. package/lib/esm/DisplayStyleState.js +9 -4
  577. package/lib/esm/DisplayStyleState.js.map +1 -1
  578. package/lib/esm/DrawingViewState.d.ts +5 -2
  579. package/lib/esm/DrawingViewState.d.ts.map +1 -1
  580. package/lib/esm/DrawingViewState.js +34 -3
  581. package/lib/esm/DrawingViewState.js.map +1 -1
  582. package/lib/esm/ElementLocateManager.d.ts +23 -5
  583. package/lib/esm/ElementLocateManager.d.ts.map +1 -1
  584. package/lib/esm/ElementLocateManager.js +19 -4
  585. package/lib/esm/ElementLocateManager.js.map +1 -1
  586. package/lib/esm/EmphasizeElements.d.ts +1 -0
  587. package/lib/esm/EmphasizeElements.d.ts.map +1 -1
  588. package/lib/esm/EmphasizeElements.js +1 -0
  589. package/lib/esm/EmphasizeElements.js.map +1 -1
  590. package/lib/esm/EntityState.d.ts +2 -0
  591. package/lib/esm/EntityState.d.ts.map +1 -1
  592. package/lib/esm/EntityState.js +2 -0
  593. package/lib/esm/EntityState.js.map +1 -1
  594. package/lib/esm/FeatureOverrideProvider.d.ts +1 -0
  595. package/lib/esm/FeatureOverrideProvider.d.ts.map +1 -1
  596. package/lib/esm/FeatureOverrideProvider.js.map +1 -1
  597. package/lib/esm/FlashSettings.d.ts +3 -0
  598. package/lib/esm/FlashSettings.d.ts.map +1 -1
  599. package/lib/esm/FlashSettings.js +2 -0
  600. package/lib/esm/FlashSettings.js.map +1 -1
  601. package/lib/esm/FrontendHubAccess.d.ts +4 -1
  602. package/lib/esm/FrontendHubAccess.d.ts.map +1 -1
  603. package/lib/esm/FrontendHubAccess.js.map +1 -1
  604. package/lib/esm/FrontendLoggerCategory.d.ts +1 -0
  605. package/lib/esm/FrontendLoggerCategory.d.ts.map +1 -1
  606. package/lib/esm/FrontendLoggerCategory.js +1 -0
  607. package/lib/esm/FrontendLoggerCategory.js.map +1 -1
  608. package/lib/esm/FrustumAnimator.d.ts +2 -0
  609. package/lib/esm/FrustumAnimator.d.ts.map +1 -1
  610. package/lib/esm/FrustumAnimator.js +2 -0
  611. package/lib/esm/FrustumAnimator.js.map +1 -1
  612. package/lib/esm/FuzzySearch.d.ts +1 -0
  613. package/lib/esm/FuzzySearch.d.ts.map +1 -1
  614. package/lib/esm/FuzzySearch.js.map +1 -1
  615. package/lib/esm/GlobeAnimator.d.ts +1 -0
  616. package/lib/esm/GlobeAnimator.d.ts.map +1 -1
  617. package/lib/esm/GlobeAnimator.js +1 -0
  618. package/lib/esm/GlobeAnimator.js.map +1 -1
  619. package/lib/esm/HitDetail.d.ts +26 -5
  620. package/lib/esm/HitDetail.d.ts.map +1 -1
  621. package/lib/esm/HitDetail.js +26 -5
  622. package/lib/esm/HitDetail.js.map +1 -1
  623. package/lib/esm/IModelApp.d.ts +9 -0
  624. package/lib/esm/IModelApp.d.ts.map +1 -1
  625. package/lib/esm/IModelApp.js +37 -22
  626. package/lib/esm/IModelApp.js.map +1 -1
  627. package/lib/esm/IModelConnection.d.ts +11 -2
  628. package/lib/esm/IModelConnection.d.ts.map +1 -1
  629. package/lib/esm/IModelConnection.js +23 -2
  630. package/lib/esm/IModelConnection.js.map +1 -1
  631. package/lib/esm/ImageUtil.d.ts +15 -2
  632. package/lib/esm/ImageUtil.d.ts.map +1 -1
  633. package/lib/esm/ImageUtil.js +19 -4
  634. package/lib/esm/ImageUtil.js.map +1 -1
  635. package/lib/esm/IpcApp.d.ts +1 -0
  636. package/lib/esm/IpcApp.d.ts.map +1 -1
  637. package/lib/esm/IpcApp.js +1 -0
  638. package/lib/esm/IpcApp.js.map +1 -1
  639. package/lib/esm/MarginPercent.d.ts +1 -0
  640. package/lib/esm/MarginPercent.d.ts.map +1 -1
  641. package/lib/esm/MarginPercent.js +1 -0
  642. package/lib/esm/MarginPercent.js.map +1 -1
  643. package/lib/esm/Marker.d.ts +16 -3
  644. package/lib/esm/Marker.d.ts.map +1 -1
  645. package/lib/esm/Marker.js +3 -0
  646. package/lib/esm/Marker.js.map +1 -1
  647. package/lib/esm/ModelSelectorState.d.ts +1 -0
  648. package/lib/esm/ModelSelectorState.d.ts.map +1 -1
  649. package/lib/esm/ModelSelectorState.js +1 -0
  650. package/lib/esm/ModelSelectorState.js.map +1 -1
  651. package/lib/esm/ModelState.d.ts +10 -0
  652. package/lib/esm/ModelState.d.ts.map +1 -1
  653. package/lib/esm/ModelState.js +10 -0
  654. package/lib/esm/ModelState.js.map +1 -1
  655. package/lib/esm/NotificationManager.d.ts +11 -0
  656. package/lib/esm/NotificationManager.d.ts.map +1 -1
  657. package/lib/esm/NotificationManager.js +10 -0
  658. package/lib/esm/NotificationManager.js.map +1 -1
  659. package/lib/esm/PerModelCategoryVisibility.d.ts +1 -0
  660. package/lib/esm/PerModelCategoryVisibility.d.ts.map +1 -1
  661. package/lib/esm/PerModelCategoryVisibility.js +1 -0
  662. package/lib/esm/PerModelCategoryVisibility.js.map +1 -1
  663. package/lib/esm/SelectionSet.d.ts +7 -0
  664. package/lib/esm/SelectionSet.d.ts.map +1 -1
  665. package/lib/esm/SelectionSet.js +3 -0
  666. package/lib/esm/SelectionSet.js.map +1 -1
  667. package/lib/esm/SheetViewState.d.ts +6 -5
  668. package/lib/esm/SheetViewState.d.ts.map +1 -1
  669. package/lib/esm/SheetViewState.js +59 -7
  670. package/lib/esm/SheetViewState.js.map +1 -1
  671. package/lib/esm/SpatialViewState.d.ts +7 -2
  672. package/lib/esm/SpatialViewState.d.ts.map +1 -1
  673. package/lib/esm/SpatialViewState.js +18 -4
  674. package/lib/esm/SpatialViewState.js.map +1 -1
  675. package/lib/esm/Sprites.d.ts +3 -0
  676. package/lib/esm/Sprites.d.ts.map +1 -1
  677. package/lib/esm/Sprites.js +3 -0
  678. package/lib/esm/Sprites.js.map +1 -1
  679. package/lib/esm/StandardView.d.ts +1 -0
  680. package/lib/esm/StandardView.d.ts.map +1 -1
  681. package/lib/esm/StandardView.js +1 -0
  682. package/lib/esm/StandardView.js.map +1 -1
  683. package/lib/esm/SubCategoriesCache.d.ts +14 -7
  684. package/lib/esm/SubCategoriesCache.d.ts.map +1 -1
  685. package/lib/esm/SubCategoriesCache.js +37 -9
  686. package/lib/esm/SubCategoriesCache.js.map +1 -1
  687. package/lib/esm/TentativePoint.d.ts +4 -1
  688. package/lib/esm/TentativePoint.d.ts.map +1 -1
  689. package/lib/esm/TentativePoint.js +4 -1
  690. package/lib/esm/TentativePoint.js.map +1 -1
  691. package/lib/esm/Tiles.d.ts +1 -0
  692. package/lib/esm/Tiles.d.ts.map +1 -1
  693. package/lib/esm/Tiles.js +1 -0
  694. package/lib/esm/Tiles.js.map +1 -1
  695. package/lib/esm/ViewAnimation.d.ts +6 -0
  696. package/lib/esm/ViewAnimation.d.ts.map +1 -1
  697. package/lib/esm/ViewAnimation.js.map +1 -1
  698. package/lib/esm/ViewCreator2d.d.ts +2 -0
  699. package/lib/esm/ViewCreator2d.d.ts.map +1 -1
  700. package/lib/esm/ViewCreator2d.js +1 -0
  701. package/lib/esm/ViewCreator2d.js.map +1 -1
  702. package/lib/esm/ViewCreator3d.d.ts +2 -8
  703. package/lib/esm/ViewCreator3d.d.ts.map +1 -1
  704. package/lib/esm/ViewCreator3d.js +12 -38
  705. package/lib/esm/ViewCreator3d.js.map +1 -1
  706. package/lib/esm/ViewGlobalLocation.d.ts +3 -0
  707. package/lib/esm/ViewGlobalLocation.d.ts.map +1 -1
  708. package/lib/esm/ViewGlobalLocation.js +1 -0
  709. package/lib/esm/ViewGlobalLocation.js.map +1 -1
  710. package/lib/esm/ViewManager.d.ts +3 -0
  711. package/lib/esm/ViewManager.d.ts.map +1 -1
  712. package/lib/esm/ViewManager.js +2 -0
  713. package/lib/esm/ViewManager.js.map +1 -1
  714. package/lib/esm/ViewPose.d.ts +1 -0
  715. package/lib/esm/ViewPose.d.ts.map +1 -1
  716. package/lib/esm/ViewPose.js +1 -0
  717. package/lib/esm/ViewPose.js.map +1 -1
  718. package/lib/esm/ViewRect.d.ts +1 -0
  719. package/lib/esm/ViewRect.d.ts.map +1 -1
  720. package/lib/esm/ViewRect.js +1 -0
  721. package/lib/esm/ViewRect.js.map +1 -1
  722. package/lib/esm/ViewState.d.ts +17 -2
  723. package/lib/esm/ViewState.d.ts.map +1 -1
  724. package/lib/esm/ViewState.js +41 -10
  725. package/lib/esm/ViewState.js.map +1 -1
  726. package/lib/esm/ViewStatus.d.ts +1 -0
  727. package/lib/esm/ViewStatus.d.ts.map +1 -1
  728. package/lib/esm/ViewStatus.js +1 -0
  729. package/lib/esm/ViewStatus.js.map +1 -1
  730. package/lib/esm/ViewingSpace.d.ts +1 -0
  731. package/lib/esm/ViewingSpace.d.ts.map +1 -1
  732. package/lib/esm/ViewingSpace.js +1 -0
  733. package/lib/esm/ViewingSpace.js.map +1 -1
  734. package/lib/esm/Viewport.d.ts +6 -2
  735. package/lib/esm/Viewport.d.ts.map +1 -1
  736. package/lib/esm/Viewport.js +12 -4
  737. package/lib/esm/Viewport.js.map +1 -1
  738. package/lib/esm/core-frontend.d.ts +6 -5
  739. package/lib/esm/core-frontend.d.ts.map +1 -1
  740. package/lib/esm/core-frontend.js +7 -5
  741. package/lib/esm/core-frontend.js.map +1 -1
  742. package/lib/esm/extension/Extension.d.ts +22 -3
  743. package/lib/esm/extension/Extension.d.ts.map +1 -1
  744. package/lib/esm/extension/Extension.js +1 -7
  745. package/lib/esm/extension/Extension.js.map +1 -1
  746. package/lib/esm/extension/ExtensionAdmin.d.ts +1 -3
  747. package/lib/esm/extension/ExtensionAdmin.d.ts.map +1 -1
  748. package/lib/esm/extension/ExtensionAdmin.js +1 -4
  749. package/lib/esm/extension/ExtensionAdmin.js.map +1 -1
  750. package/lib/esm/extension/ExtensionRuntime.js +239 -59
  751. package/lib/esm/extension/ExtensionRuntime.js.map +1 -1
  752. package/lib/esm/quantity-formatting/QuantityFormatter.d.ts.map +1 -1
  753. package/lib/esm/quantity-formatting/QuantityFormatter.js +3 -2
  754. package/lib/esm/quantity-formatting/QuantityFormatter.js.map +1 -1
  755. package/lib/esm/render/CanvasDecoration.d.ts +2 -0
  756. package/lib/esm/render/CanvasDecoration.d.ts.map +1 -1
  757. package/lib/esm/render/CanvasDecoration.js.map +1 -1
  758. package/lib/esm/render/Decorations.d.ts +1 -0
  759. package/lib/esm/render/Decorations.d.ts.map +1 -1
  760. package/lib/esm/render/Decorations.js +1 -0
  761. package/lib/esm/render/Decorations.js.map +1 -1
  762. package/lib/esm/render/FeatureSymbology.d.ts +1 -0
  763. package/lib/esm/render/FeatureSymbology.d.ts.map +1 -1
  764. package/lib/esm/render/FeatureSymbology.js +1 -0
  765. package/lib/esm/render/FeatureSymbology.js.map +1 -1
  766. package/lib/esm/render/GraphicBranch.d.ts +2 -0
  767. package/lib/esm/render/GraphicBranch.d.ts.map +1 -1
  768. package/lib/esm/render/GraphicBranch.js +1 -0
  769. package/lib/esm/render/GraphicBranch.js.map +1 -1
  770. package/lib/esm/render/GraphicBuilder.d.ts +33 -2
  771. package/lib/esm/render/GraphicBuilder.d.ts.map +1 -1
  772. package/lib/esm/render/GraphicBuilder.js +27 -1
  773. package/lib/esm/render/GraphicBuilder.js.map +1 -1
  774. package/lib/esm/render/GraphicPrimitive.d.ts +14 -0
  775. package/lib/esm/render/GraphicPrimitive.d.ts.map +1 -1
  776. package/lib/esm/render/GraphicPrimitive.js.map +1 -1
  777. package/lib/esm/render/ParticleCollectionBuilder.d.ts +3 -0
  778. package/lib/esm/render/ParticleCollectionBuilder.d.ts.map +1 -1
  779. package/lib/esm/render/ParticleCollectionBuilder.js.map +1 -1
  780. package/lib/esm/render/Pixel.d.ts +1 -0
  781. package/lib/esm/render/Pixel.d.ts.map +1 -1
  782. package/lib/esm/render/Pixel.js +1 -0
  783. package/lib/esm/render/Pixel.js.map +1 -1
  784. package/lib/esm/render/RenderClipVolume.d.ts +1 -0
  785. package/lib/esm/render/RenderClipVolume.d.ts.map +1 -1
  786. package/lib/esm/render/RenderClipVolume.js +1 -0
  787. package/lib/esm/render/RenderClipVolume.js.map +1 -1
  788. package/lib/esm/render/RenderGraphic.d.ts +3 -0
  789. package/lib/esm/render/RenderGraphic.d.ts.map +1 -1
  790. package/lib/esm/render/RenderGraphic.js +2 -0
  791. package/lib/esm/render/RenderGraphic.js.map +1 -1
  792. package/lib/esm/render/RenderSystem.d.ts +4 -3
  793. package/lib/esm/render/RenderSystem.d.ts.map +1 -1
  794. package/lib/esm/render/RenderSystem.js +4 -3
  795. package/lib/esm/render/RenderSystem.js.map +1 -1
  796. package/lib/esm/render/RenderTexture.d.ts +7 -0
  797. package/lib/esm/render/RenderTexture.d.ts.map +1 -1
  798. package/lib/esm/render/RenderTexture.js.map +1 -1
  799. package/lib/esm/render/Scene.d.ts +1 -0
  800. package/lib/esm/render/Scene.d.ts.map +1 -1
  801. package/lib/esm/render/Scene.js +1 -0
  802. package/lib/esm/render/Scene.js.map +1 -1
  803. package/lib/esm/render/ScreenSpaceEffectBuilder.d.ts +10 -0
  804. package/lib/esm/render/ScreenSpaceEffectBuilder.d.ts.map +1 -1
  805. package/lib/esm/render/ScreenSpaceEffectBuilder.js +2 -0
  806. package/lib/esm/render/ScreenSpaceEffectBuilder.js.map +1 -1
  807. package/lib/esm/render/primitives/VertexKey.d.ts +4 -2
  808. package/lib/esm/render/primitives/VertexKey.d.ts.map +1 -1
  809. package/lib/esm/render/primitives/VertexKey.js +24 -13
  810. package/lib/esm/render/primitives/VertexKey.js.map +1 -1
  811. package/lib/esm/render/primitives/VertexTable.d.ts +1 -1
  812. package/lib/esm/render/primitives/VertexTable.js +30 -2
  813. package/lib/esm/render/primitives/VertexTable.js.map +1 -1
  814. package/lib/esm/render/primitives/geometry/GeometryAccumulator.d.ts +12 -4
  815. package/lib/esm/render/primitives/geometry/GeometryAccumulator.d.ts.map +1 -1
  816. package/lib/esm/render/primitives/geometry/GeometryAccumulator.js +20 -15
  817. package/lib/esm/render/primitives/geometry/GeometryAccumulator.js.map +1 -1
  818. package/lib/esm/render/primitives/geometry/GeometryListBuilder.d.ts +2 -1
  819. package/lib/esm/render/primitives/geometry/GeometryListBuilder.d.ts.map +1 -1
  820. package/lib/esm/render/primitives/geometry/GeometryListBuilder.js +7 -2
  821. package/lib/esm/render/primitives/geometry/GeometryListBuilder.js.map +1 -1
  822. package/lib/esm/render/primitives/geometry/GeometryPrimitives.d.ts +14 -12
  823. package/lib/esm/render/primitives/geometry/GeometryPrimitives.d.ts.map +1 -1
  824. package/lib/esm/render/primitives/geometry/GeometryPrimitives.js +26 -25
  825. package/lib/esm/render/primitives/geometry/GeometryPrimitives.js.map +1 -1
  826. package/lib/esm/render/primitives/mesh/MeshBuilder.d.ts +8 -8
  827. package/lib/esm/render/primitives/mesh/MeshBuilder.d.ts.map +1 -1
  828. package/lib/esm/render/primitives/mesh/MeshBuilder.js +15 -15
  829. package/lib/esm/render/primitives/mesh/MeshBuilder.js.map +1 -1
  830. package/lib/esm/render/primitives/mesh/MeshBuilderMap.d.ts +11 -6
  831. package/lib/esm/render/primitives/mesh/MeshBuilderMap.d.ts.map +1 -1
  832. package/lib/esm/render/primitives/mesh/MeshBuilderMap.js +13 -16
  833. package/lib/esm/render/primitives/mesh/MeshBuilderMap.js.map +1 -1
  834. package/lib/esm/render/primitives/mesh/MeshPrimitives.d.ts +1 -1
  835. package/lib/esm/render/primitives/mesh/MeshPrimitives.d.ts.map +1 -1
  836. package/lib/esm/render/primitives/mesh/MeshPrimitives.js +6 -2
  837. package/lib/esm/render/primitives/mesh/MeshPrimitives.js.map +1 -1
  838. package/lib/esm/render/webgl/AttributeMap.js +1 -1
  839. package/lib/esm/render/webgl/CachedGeometry.d.ts +7 -1
  840. package/lib/esm/render/webgl/CachedGeometry.d.ts.map +1 -1
  841. package/lib/esm/render/webgl/CachedGeometry.js +19 -9
  842. package/lib/esm/render/webgl/CachedGeometry.js.map +1 -1
  843. package/lib/esm/render/webgl/DrawCommand.d.ts.map +1 -1
  844. package/lib/esm/render/webgl/DrawCommand.js +2 -1
  845. package/lib/esm/render/webgl/DrawCommand.js.map +1 -1
  846. package/lib/esm/render/webgl/InstancedGeometry.d.ts +1 -0
  847. package/lib/esm/render/webgl/InstancedGeometry.d.ts.map +1 -1
  848. package/lib/esm/render/webgl/InstancedGeometry.js +1 -0
  849. package/lib/esm/render/webgl/InstancedGeometry.js.map +1 -1
  850. package/lib/esm/render/webgl/RealityMesh.d.ts +14 -11
  851. package/lib/esm/render/webgl/RealityMesh.d.ts.map +1 -1
  852. package/lib/esm/render/webgl/RealityMesh.js +27 -18
  853. package/lib/esm/render/webgl/RealityMesh.js.map +1 -1
  854. package/lib/esm/render/webgl/SceneCompositor.d.ts +2 -0
  855. package/lib/esm/render/webgl/SceneCompositor.d.ts.map +1 -1
  856. package/lib/esm/render/webgl/SceneCompositor.js +220 -53
  857. package/lib/esm/render/webgl/SceneCompositor.js.map +1 -1
  858. package/lib/esm/render/webgl/ShaderBuilder.d.ts +5 -4
  859. package/lib/esm/render/webgl/ShaderBuilder.d.ts.map +1 -1
  860. package/lib/esm/render/webgl/ShaderBuilder.js +7 -6
  861. package/lib/esm/render/webgl/ShaderBuilder.js.map +1 -1
  862. package/lib/esm/render/webgl/System.d.ts +4 -4
  863. package/lib/esm/render/webgl/System.d.ts.map +1 -1
  864. package/lib/esm/render/webgl/System.js +6 -6
  865. package/lib/esm/render/webgl/System.js.map +1 -1
  866. package/lib/esm/render/webgl/Target.d.ts +6 -1
  867. package/lib/esm/render/webgl/Target.d.ts.map +1 -1
  868. package/lib/esm/render/webgl/Target.js +64 -13
  869. package/lib/esm/render/webgl/Target.js.map +1 -1
  870. package/lib/esm/render/webgl/Technique.d.ts +4 -2
  871. package/lib/esm/render/webgl/Technique.d.ts.map +1 -1
  872. package/lib/esm/render/webgl/Technique.js +166 -135
  873. package/lib/esm/render/webgl/Technique.js.map +1 -1
  874. package/lib/esm/render/webgl/TechniqueFlags.d.ts +7 -3
  875. package/lib/esm/render/webgl/TechniqueFlags.d.ts.map +1 -1
  876. package/lib/esm/render/webgl/TechniqueFlags.js +17 -4
  877. package/lib/esm/render/webgl/TechniqueFlags.js.map +1 -1
  878. package/lib/esm/render/webgl/TechniqueId.d.ts +8 -7
  879. package/lib/esm/render/webgl/TechniqueId.d.ts.map +1 -1
  880. package/lib/esm/render/webgl/TechniqueId.js.map +1 -1
  881. package/lib/esm/render/webgl/glsl/Animation.d.ts.map +1 -1
  882. package/lib/esm/render/webgl/glsl/Animation.js +2 -0
  883. package/lib/esm/render/webgl/glsl/Animation.js.map +1 -1
  884. package/lib/esm/render/webgl/glsl/Blur.d.ts +2 -1
  885. package/lib/esm/render/webgl/glsl/Blur.d.ts.map +1 -1
  886. package/lib/esm/render/webgl/glsl/Blur.js +38 -6
  887. package/lib/esm/render/webgl/glsl/Blur.js.map +1 -1
  888. package/lib/esm/render/webgl/glsl/Color.d.ts.map +1 -1
  889. package/lib/esm/render/webgl/glsl/Color.js +8 -7
  890. package/lib/esm/render/webgl/glsl/Color.js.map +1 -1
  891. package/lib/esm/render/webgl/glsl/CopyStencil.js +1 -1
  892. package/lib/esm/render/webgl/glsl/Decode.d.ts +2 -1
  893. package/lib/esm/render/webgl/glsl/Decode.d.ts.map +1 -1
  894. package/lib/esm/render/webgl/glsl/Decode.js +15 -1
  895. package/lib/esm/render/webgl/glsl/Decode.js.map +1 -1
  896. package/lib/esm/render/webgl/glsl/Edge.d.ts +2 -2
  897. package/lib/esm/render/webgl/glsl/Edge.d.ts.map +1 -1
  898. package/lib/esm/render/webgl/glsl/Edge.js +7 -20
  899. package/lib/esm/render/webgl/glsl/Edge.js.map +1 -1
  900. package/lib/esm/render/webgl/glsl/FeatureSymbology.d.ts.map +1 -1
  901. package/lib/esm/render/webgl/glsl/FeatureSymbology.js +1 -3
  902. package/lib/esm/render/webgl/glsl/FeatureSymbology.js.map +1 -1
  903. package/lib/esm/render/webgl/glsl/PointString.d.ts +3 -3
  904. package/lib/esm/render/webgl/glsl/PointString.d.ts.map +1 -1
  905. package/lib/esm/render/webgl/glsl/PointString.js +6 -6
  906. package/lib/esm/render/webgl/glsl/PointString.js.map +1 -1
  907. package/lib/esm/render/webgl/glsl/Polyline.d.ts +3 -3
  908. package/lib/esm/render/webgl/glsl/Polyline.d.ts.map +1 -1
  909. package/lib/esm/render/webgl/glsl/Polyline.js +7 -22
  910. package/lib/esm/render/webgl/glsl/Polyline.js.map +1 -1
  911. package/lib/esm/render/webgl/glsl/Surface.d.ts +2 -2
  912. package/lib/esm/render/webgl/glsl/Surface.d.ts.map +1 -1
  913. package/lib/esm/render/webgl/glsl/Surface.js +51 -35
  914. package/lib/esm/render/webgl/glsl/Surface.js.map +1 -1
  915. package/lib/esm/render/webgl/glsl/Vertex.d.ts +3 -3
  916. package/lib/esm/render/webgl/glsl/Vertex.d.ts.map +1 -1
  917. package/lib/esm/render/webgl/glsl/Vertex.js +142 -56
  918. package/lib/esm/render/webgl/glsl/Vertex.js.map +1 -1
  919. package/lib/esm/tile/DisclosedTileTreeSet.d.ts +2 -0
  920. package/lib/esm/tile/DisclosedTileTreeSet.d.ts.map +1 -1
  921. package/lib/esm/tile/DisclosedTileTreeSet.js +1 -0
  922. package/lib/esm/tile/DisclosedTileTreeSet.js.map +1 -1
  923. package/lib/esm/tile/GltfReader.d.ts +19 -9
  924. package/lib/esm/tile/GltfReader.d.ts.map +1 -1
  925. package/lib/esm/tile/GltfReader.js +23 -6
  926. package/lib/esm/tile/GltfReader.js.map +1 -1
  927. package/lib/esm/tile/IModelTileRequestChannels.d.ts +3 -3
  928. package/lib/esm/tile/IModelTileRequestChannels.d.ts.map +1 -1
  929. package/lib/esm/tile/IModelTileRequestChannels.js +7 -11
  930. package/lib/esm/tile/IModelTileRequestChannels.js.map +1 -1
  931. package/lib/esm/tile/ImdlReader.d.ts +2 -0
  932. package/lib/esm/tile/ImdlReader.d.ts.map +1 -1
  933. package/lib/esm/tile/ImdlReader.js +2 -0
  934. package/lib/esm/tile/ImdlReader.js.map +1 -1
  935. package/lib/esm/tile/OPCFormatInterpreter.d.ts.map +1 -1
  936. package/lib/esm/tile/OPCFormatInterpreter.js +2 -3
  937. package/lib/esm/tile/OPCFormatInterpreter.js.map +1 -1
  938. package/lib/esm/tile/RealityTileLoader.d.ts +1 -1
  939. package/lib/esm/tile/RealityTileLoader.d.ts.map +1 -1
  940. package/lib/esm/tile/RealityTileLoader.js +36 -8
  941. package/lib/esm/tile/RealityTileLoader.js.map +1 -1
  942. package/lib/esm/tile/Tile.d.ts +5 -0
  943. package/lib/esm/tile/Tile.d.ts.map +1 -1
  944. package/lib/esm/tile/Tile.js +5 -0
  945. package/lib/esm/tile/Tile.js.map +1 -1
  946. package/lib/esm/tile/TileAdmin.d.ts +3 -0
  947. package/lib/esm/tile/TileAdmin.d.ts.map +1 -1
  948. package/lib/esm/tile/TileAdmin.js +1 -5
  949. package/lib/esm/tile/TileAdmin.js.map +1 -1
  950. package/lib/esm/tile/TileContent.d.ts +1 -0
  951. package/lib/esm/tile/TileContent.d.ts.map +1 -1
  952. package/lib/esm/tile/TileContent.js.map +1 -1
  953. package/lib/esm/tile/TileDrawArgs.d.ts +2 -0
  954. package/lib/esm/tile/TileDrawArgs.d.ts.map +1 -1
  955. package/lib/esm/tile/TileDrawArgs.js +1 -0
  956. package/lib/esm/tile/TileDrawArgs.js.map +1 -1
  957. package/lib/esm/tile/TileParams.d.ts +1 -0
  958. package/lib/esm/tile/TileParams.d.ts.map +1 -1
  959. package/lib/esm/tile/TileParams.js.map +1 -1
  960. package/lib/esm/tile/TileRequest.d.ts +1 -0
  961. package/lib/esm/tile/TileRequest.d.ts.map +1 -1
  962. package/lib/esm/tile/TileRequest.js +1 -0
  963. package/lib/esm/tile/TileRequest.js.map +1 -1
  964. package/lib/esm/tile/TileRequestChannel.d.ts +2 -0
  965. package/lib/esm/tile/TileRequestChannel.d.ts.map +1 -1
  966. package/lib/esm/tile/TileRequestChannel.js +2 -0
  967. package/lib/esm/tile/TileRequestChannel.js.map +1 -1
  968. package/lib/esm/tile/TileRequestChannels.d.ts +1 -4
  969. package/lib/esm/tile/TileRequestChannels.d.ts.map +1 -1
  970. package/lib/esm/tile/TileRequestChannels.js +2 -6
  971. package/lib/esm/tile/TileRequestChannels.js.map +1 -1
  972. package/lib/esm/tile/TileTree.d.ts +2 -0
  973. package/lib/esm/tile/TileTree.d.ts.map +1 -1
  974. package/lib/esm/tile/TileTree.js +2 -0
  975. package/lib/esm/tile/TileTree.js.map +1 -1
  976. package/lib/esm/tile/TileTreeOwner.d.ts +1 -0
  977. package/lib/esm/tile/TileTreeOwner.d.ts.map +1 -1
  978. package/lib/esm/tile/TileTreeOwner.js.map +1 -1
  979. package/lib/esm/tile/TileTreeParams.d.ts +1 -0
  980. package/lib/esm/tile/TileTreeParams.d.ts.map +1 -1
  981. package/lib/esm/tile/TileTreeParams.js.map +1 -1
  982. package/lib/esm/tile/TileTreeReference.d.ts +2 -0
  983. package/lib/esm/tile/TileTreeReference.d.ts.map +1 -1
  984. package/lib/esm/tile/TileTreeReference.js +2 -0
  985. package/lib/esm/tile/TileTreeReference.js.map +1 -1
  986. package/lib/esm/tile/TileTreeSupplier.d.ts +1 -0
  987. package/lib/esm/tile/TileTreeSupplier.d.ts.map +1 -1
  988. package/lib/esm/tile/TileTreeSupplier.js.map +1 -1
  989. package/lib/esm/tile/TileUsageMarker.d.ts +1 -0
  990. package/lib/esm/tile/TileUsageMarker.d.ts.map +1 -1
  991. package/lib/esm/tile/TileUsageMarker.js +1 -0
  992. package/lib/esm/tile/TileUsageMarker.js.map +1 -1
  993. package/lib/esm/tile/TiledGraphicsProvider.d.ts +1 -0
  994. package/lib/esm/tile/TiledGraphicsProvider.d.ts.map +1 -1
  995. package/lib/esm/tile/TiledGraphicsProvider.js.map +1 -1
  996. package/lib/esm/tile/map/ArcGisUtilities.d.ts.map +1 -1
  997. package/lib/esm/tile/map/ArcGisUtilities.js +13 -0
  998. package/lib/esm/tile/map/ArcGisUtilities.js.map +1 -1
  999. package/lib/esm/tile/map/BingElevation.d.ts +1 -0
  1000. package/lib/esm/tile/map/BingElevation.d.ts.map +1 -1
  1001. package/lib/esm/tile/map/BingElevation.js +1 -0
  1002. package/lib/esm/tile/map/BingElevation.js.map +1 -1
  1003. package/lib/esm/tile/map/ImageryProviders/WmsMapLayerImageryProvider.d.ts +0 -1
  1004. package/lib/esm/tile/map/ImageryProviders/WmsMapLayerImageryProvider.d.ts.map +1 -1
  1005. package/lib/esm/tile/map/ImageryProviders/WmsMapLayerImageryProvider.js +12 -10
  1006. package/lib/esm/tile/map/ImageryProviders/WmsMapLayerImageryProvider.js.map +1 -1
  1007. package/lib/esm/tile/map/MapLayerFormatRegistry.d.ts +5 -1
  1008. package/lib/esm/tile/map/MapLayerFormatRegistry.d.ts.map +1 -1
  1009. package/lib/esm/tile/map/MapLayerFormatRegistry.js.map +1 -1
  1010. package/lib/esm/tile/map/MapTile.js +2 -2
  1011. package/lib/esm/tile/map/MapTile.js.map +1 -1
  1012. package/lib/esm/tile/map/MapTileLoader.js +1 -1
  1013. package/lib/esm/tile/map/MapTileLoader.js.map +1 -1
  1014. package/lib/esm/tile/map/MapTileTree.js +2 -2
  1015. package/lib/esm/tile/map/MapTileTree.js.map +1 -1
  1016. package/lib/esm/tile/map/WmsCapabilities.d.ts +3 -2
  1017. package/lib/esm/tile/map/WmsCapabilities.d.ts.map +1 -1
  1018. package/lib/esm/tile/map/WmsCapabilities.js +11 -10
  1019. package/lib/esm/tile/map/WmsCapabilities.js.map +1 -1
  1020. package/lib/esm/tools/ClipViewTool.d.ts +5 -3
  1021. package/lib/esm/tools/ClipViewTool.d.ts.map +1 -1
  1022. package/lib/esm/tools/ClipViewTool.js +4 -3
  1023. package/lib/esm/tools/ClipViewTool.js.map +1 -1
  1024. package/lib/esm/tools/EditManipulator.d.ts +1 -0
  1025. package/lib/esm/tools/EditManipulator.d.ts.map +1 -1
  1026. package/lib/esm/tools/EditManipulator.js +1 -0
  1027. package/lib/esm/tools/EditManipulator.js.map +1 -1
  1028. package/lib/esm/tools/EventController.d.ts +1 -0
  1029. package/lib/esm/tools/EventController.d.ts.map +1 -1
  1030. package/lib/esm/tools/EventController.js +1 -0
  1031. package/lib/esm/tools/EventController.js.map +1 -1
  1032. package/lib/esm/tools/PrimitiveTool.d.ts +4 -0
  1033. package/lib/esm/tools/PrimitiveTool.d.ts.map +1 -1
  1034. package/lib/esm/tools/PrimitiveTool.js +7 -0
  1035. package/lib/esm/tools/PrimitiveTool.js.map +1 -1
  1036. package/lib/esm/tools/SelectTool.d.ts +3 -0
  1037. package/lib/esm/tools/SelectTool.d.ts.map +1 -1
  1038. package/lib/esm/tools/SelectTool.js +3 -0
  1039. package/lib/esm/tools/SelectTool.js.map +1 -1
  1040. package/lib/esm/tools/Tool.d.ts +41 -6
  1041. package/lib/esm/tools/Tool.d.ts.map +1 -1
  1042. package/lib/esm/tools/Tool.js +27 -4
  1043. package/lib/esm/tools/Tool.js.map +1 -1
  1044. package/lib/esm/tools/ToolAdmin.d.ts +16 -23
  1045. package/lib/esm/tools/ToolAdmin.d.ts.map +1 -1
  1046. package/lib/esm/tools/ToolAdmin.js +48 -21
  1047. package/lib/esm/tools/ToolAdmin.js.map +1 -1
  1048. package/lib/esm/tools/ToolAssistance.d.ts +7 -0
  1049. package/lib/esm/tools/ToolAssistance.d.ts.map +1 -1
  1050. package/lib/esm/tools/ToolAssistance.js +3 -0
  1051. package/lib/esm/tools/ToolAssistance.js.map +1 -1
  1052. package/lib/esm/tools/ToolSettings.d.ts +3 -0
  1053. package/lib/esm/tools/ToolSettings.d.ts.map +1 -1
  1054. package/lib/esm/tools/ToolSettings.js +3 -0
  1055. package/lib/esm/tools/ToolSettings.js.map +1 -1
  1056. package/lib/esm/tools/ViewTool.d.ts +3 -1
  1057. package/lib/esm/tools/ViewTool.d.ts.map +1 -1
  1058. package/lib/esm/tools/ViewTool.js +9 -5
  1059. package/lib/esm/tools/ViewTool.js.map +1 -1
  1060. package/package.json +32 -22
  1061. package/lib/cjs/extension/ExtensionLoader.d.ts +0 -26
  1062. package/lib/cjs/extension/ExtensionLoader.d.ts.map +0 -1
  1063. package/lib/cjs/extension/ExtensionLoader.js +0 -10
  1064. package/lib/cjs/extension/ExtensionLoader.js.map +0 -1
  1065. package/lib/cjs/extension/extensions.d.ts +0 -19
  1066. package/lib/cjs/extension/extensions.d.ts.map +0 -1
  1067. package/lib/cjs/extension/extensions.js +0 -36
  1068. package/lib/cjs/extension/extensions.js.map +0 -1
  1069. package/lib/esm/extension/ExtensionLoader.d.ts +0 -26
  1070. package/lib/esm/extension/ExtensionLoader.d.ts.map +0 -1
  1071. package/lib/esm/extension/ExtensionLoader.js +0 -9
  1072. package/lib/esm/extension/ExtensionLoader.js.map +0 -1
  1073. package/lib/esm/extension/extensions.d.ts +0 -19
  1074. package/lib/esm/extension/extensions.d.ts.map +0 -1
  1075. package/lib/esm/extension/extensions.js +0 -24
  1076. package/lib/esm/extension/extensions.js.map +0 -1
@@ -11,7 +11,6 @@ export declare class WmsMapLayerImageryProvider extends MapLayerImageryProvider
11
11
  private _allLayersRange?;
12
12
  private _subLayerRanges;
13
13
  private _baseUrl;
14
- private _isVersion1_1;
15
14
  private _crsSupport;
16
15
  constructor(settings: ImageMapLayerSettings);
17
16
  initialize(): Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"WmsMapLayerImageryProvider.d.ts","sourceRoot":"","sources":["../../../../../src/tile/map/ImageryProviders/WmsMapLayerImageryProvider.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,YAAY,EAAE,qBAAqB,EAAoC,MAAM,oBAAoB,CAAC;AAE3G,OAAO,EACL,kBAAkB,EAAqB,uBAAuB,EAAiC,MAAM,EAEtG,MAAM,gBAAgB,CAAC;AAOxB,gBAAgB;AAChB,MAAM,WAAW,aAAa;IAC5B,WAAW,EAAE,OAAO,CAAC;IACrB,WAAW,EAAE,OAAO,CAAC;CACtB;AAED,gBAAgB;AAChB,qBAAa,0BAA2B,SAAQ,uBAAuB;IACrE,OAAO,CAAC,aAAa,CAAC,CAAkB;IACxC,OAAO,CAAC,eAAe,CAAC,CAAoB;IAC5C,OAAO,CAAC,eAAe,CAAwC;IAC/D,OAAO,CAAC,QAAQ,CAAS;IAEzB,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,WAAW,CAA0B;gBAEjC,QAAQ,EAAE,qBAAqB;IAKrB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IA2CjD,OAAO,CAAC,qBAAqB;IAK7B,OAAO,CAAC,gBAAgB;IAIxB,OAAO,CAAC,mBAAmB;IAM3B,OAAO,CAAC,kBAAkB;IAe1B,OAAO,CAAC,+BAA+B;IAQhC,aAAa,IAAI,aAAa;IAyBxB,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAwBpE,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE,IAAI,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC;CAoBlI"}
1
+ {"version":3,"file":"WmsMapLayerImageryProvider.d.ts","sourceRoot":"","sources":["../../../../../src/tile/map/ImageryProviders/WmsMapLayerImageryProvider.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,YAAY,EAAE,qBAAqB,EAAoC,MAAM,oBAAoB,CAAC;AAE3G,OAAO,EACL,kBAAkB,EAAqB,uBAAuB,EAAiC,MAAM,EAEtG,MAAM,gBAAgB,CAAC;AAOxB,gBAAgB;AAChB,MAAM,WAAW,aAAa;IAC5B,WAAW,EAAE,OAAO,CAAC;IACrB,WAAW,EAAE,OAAO,CAAC;CACtB;AAED,gBAAgB;AAChB,qBAAa,0BAA2B,SAAQ,uBAAuB;IACrE,OAAO,CAAC,aAAa,CAAC,CAAkB;IACxC,OAAO,CAAC,eAAe,CAAC,CAAoB;IAC5C,OAAO,CAAC,eAAe,CAAwC;IAC/D,OAAO,CAAC,QAAQ,CAAS;IAEzB,OAAO,CAAC,WAAW,CAA0B;gBAEjC,QAAQ,EAAE,qBAAqB;IAKrB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IA0CjD,OAAO,CAAC,qBAAqB;IAK7B,OAAO,CAAC,gBAAgB;IAIxB,OAAO,CAAC,mBAAmB;IAM3B,OAAO,CAAC,kBAAkB;IAe1B,OAAO,CAAC,+BAA+B;IAQhC,aAAa,IAAI,aAAa;IAyBxB,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IA6BpE,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE,IAAI,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC;CAqBlI"}
@@ -17,8 +17,6 @@ export class WmsMapLayerImageryProvider extends MapLayerImageryProvider {
17
17
  constructor(settings) {
18
18
  super(settings, false);
19
19
  this._subLayerRanges = new Map();
20
- // eslint-disable-next-line @typescript-eslint/naming-convention
21
- this._isVersion1_1 = false;
22
20
  this._baseUrl = WmsUtilities.getBaseUrl(this._settings.url);
23
21
  }
24
22
  async initialize() {
@@ -26,7 +24,6 @@ export class WmsMapLayerImageryProvider extends MapLayerImageryProvider {
26
24
  this._capabilities = await WmsCapabilities.create(this._baseUrl);
27
25
  if (undefined !== this._capabilities) {
28
26
  this._allLayersRange = this._capabilities.cartoRange;
29
- this._isVersion1_1 = this._capabilities.version !== undefined && 0 === this._capabilities.version.indexOf("1.1");
30
27
  if (this._capabilities.layer && Array.isArray(this._capabilities.layer.subLayers)) {
31
28
  const mapCartoRanges = ((subLayer) => {
32
29
  if (Array.isArray(subLayer.children))
@@ -122,7 +119,7 @@ export class WmsMapLayerImageryProvider extends MapLayerImageryProvider {
122
119
  }
123
120
  // construct the Url from the desired Tile
124
121
  async constructUrl(row, column, zoomLevel) {
125
- var _a, _b;
122
+ var _a, _b, _c, _d, _e;
126
123
  let bboxString = "";
127
124
  let crsString = "";
128
125
  // We support 2 SRS: EPSG:3857 and EPSG:4326, we prefer EPSG:3857.
@@ -133,16 +130,20 @@ export class WmsMapLayerImageryProvider extends MapLayerImageryProvider {
133
130
  else if ((_b = this._crsSupport) === null || _b === void 0 ? void 0 : _b.support4326) {
134
131
  // The WMS 1.3.0 specification mandates using the axis ordering as defined in the EPSG database.
135
132
  // For instance, for EPSG:4326 the axis ordering is latitude/longitude, or north/east.
136
- bboxString = this.getEPSG4326ExtentString(row, column, zoomLevel, true); // lat/long ordering
137
- crsString = "EPSG%3A4326";
133
+ // WMS 1.1.0 always requires the axis ordering to be longitude/latitude. *sigh*
134
+ if (this._capabilities !== undefined) {
135
+ bboxString = this.getEPSG4326ExtentString(row, column, zoomLevel, (_c = this._capabilities) === null || _c === void 0 ? void 0 : _c.isVersion13); // lat/long ordering
136
+ crsString = "EPSG%3A4326";
137
+ }
138
138
  }
139
139
  const layerString = this.getVisibleLayerString();
140
140
  if (bboxString.length === 0 || crsString.length === 0 || layerString.length === 0)
141
141
  return "";
142
- return `${this._baseUrl}?SERVICE=WMS&VERSION=1.3.0&REQUEST=GetMap&FORMAT=image%2Fpng&TRANSPARENT=${this.transparentBackgroundString}&LAYERS=${layerString}&WIDTH=${this.tileSize}&HEIGHT=${this.tileSize}&CRS=${crsString}&STYLES=&BBOX=${bboxString}`;
142
+ const crsParamName = ((_d = this._capabilities) === null || _d === void 0 ? void 0 : _d.isVersion13) ? "CRS" : "SRS";
143
+ return `${this._baseUrl}?SERVICE=WMS&VERSION=${(_e = this._capabilities) === null || _e === void 0 ? void 0 : _e.version}&REQUEST=GetMap&FORMAT=image%2Fpng&TRANSPARENT=${this.transparentBackgroundString}&LAYERS=${layerString}&WIDTH=${this.tileSize}&HEIGHT=${this.tileSize}&${crsParamName}=${crsString}&STYLES=&BBOX=${bboxString}`;
143
144
  }
144
145
  async getToolTip(strings, quadId, carto, tree) {
145
- var _a;
146
+ var _a, _b, _c, _d;
146
147
  await super.getToolTip(strings, quadId, carto, tree);
147
148
  const infoFormats = (_a = this._capabilities) === null || _a === void 0 ? void 0 : _a.featureInfoFormats;
148
149
  if (!doToolTips || undefined === infoFormats)
@@ -158,8 +159,9 @@ export class WmsMapLayerImageryProvider extends MapLayerImageryProvider {
158
159
  const fraction = rectangle.worldToLocal(Point2d.create(carto.longitude, carto.latitude, scratchPoint2d));
159
160
  const x = Math.floor(.5 + fraction.x * this.tileSize);
160
161
  const y = Math.floor(.5 + (1.0 - fraction.y) * this.tileSize);
161
- const coordinateString = (false && this._isVersion1_1) ? `&x=${x}&y=${y}` : `&i=${x}&j=${y}`;
162
- const getFeatureUrl = `${this._baseUrl}?SERVICE=WMS&VERSION=1.3.0&REQUEST=GetFeatureInfo&LAYERS=${layerString}&WIDTH=${this.tileSize}&HEIGHT=${this.tileSize}&CRS=EPSG%3A3857&BBOX=${bboxString}&QUERY_LAYERS=${layerString}${coordinateString}&info_format=${formatString}`;
162
+ const coordinateString = ((_b = this._capabilities) === null || _b === void 0 ? void 0 : _b.isVersion13) ? `&i=${x}&j=${y}` : `&x=${x}&y=${y}`;
163
+ const crsParamName = ((_c = this._capabilities) === null || _c === void 0 ? void 0 : _c.isVersion13) ? "CRS" : "SRS";
164
+ const getFeatureUrl = `${this._baseUrl}?SERVICE=WMS&VERSION=${(_d = this._capabilities) === null || _d === void 0 ? void 0 : _d.version}&REQUEST=GetFeatureInfo&LAYERS=${layerString}&WIDTH=${this.tileSize}&HEIGHT=${this.tileSize}&${crsParamName}=EPSG%3A3857&BBOX=${bboxString}&QUERY_LAYERS=${layerString}${coordinateString}&info_format=${formatString}`;
163
165
  return this.toolTipFromUrl(strings, getFeatureUrl);
164
166
  }
165
167
  }
@@ -1 +1 @@
1
- {"version":3,"file":"WmsMapLayerImageryProvider.js","sourceRoot":"","sources":["../../../../../src/tile/map/ImageryProviders/WmsMapLayerImageryProvider.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\nimport { IModelStatus } from \"@itwin/core-bentley\";\r\nimport { Cartographic, ImageMapLayerSettings, MapSubLayerSettings, ServerError } from \"@itwin/core-common\";\r\nimport { Point2d } from \"@itwin/core-geometry\";\r\nimport {\r\n ImageryMapTileTree, MapCartoRectangle, MapLayerImageryProvider, MapLayerImageryProviderStatus, QuadId, WmsCapabilities,\r\n WmsCapability, WmsUtilities,\r\n} from \"../../internal\";\r\n\r\n// eslint-disable-next-line prefer-const\r\nlet doToolTips = true;\r\n\r\nconst scratchPoint2d = Point2d.createZero();\r\n\r\n/** @internal */\r\nexport interface WmsCrsSupport {\r\n support3857: boolean;\r\n support4326: boolean;\r\n}\r\n\r\n/** @internal */\r\nexport class WmsMapLayerImageryProvider extends MapLayerImageryProvider {\r\n private _capabilities?: WmsCapabilities;\r\n private _allLayersRange?: MapCartoRectangle;\r\n private _subLayerRanges = new Map<string, MapCartoRectangle>();\r\n private _baseUrl: string;\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n private _isVersion1_1 = false;\r\n private _crsSupport: WmsCrsSupport|undefined;\r\n\r\n constructor(settings: ImageMapLayerSettings) {\r\n super(settings, false);\r\n this._baseUrl = WmsUtilities.getBaseUrl(this._settings.url);\r\n }\r\n\r\n public override async initialize(): Promise<void> {\r\n try {\r\n this._capabilities = await WmsCapabilities.create(this._baseUrl);\r\n if (undefined !== this._capabilities) {\r\n this._allLayersRange = this._capabilities.cartoRange;\r\n this._isVersion1_1 = this._capabilities.version !== undefined && 0 === this._capabilities.version.indexOf(\"1.1\");\r\n if (this._capabilities.layer && Array.isArray(this._capabilities.layer.subLayers)) {\r\n const mapCartoRanges = ((subLayer: WmsCapability.SubLayer) => {\r\n if (Array.isArray(subLayer.children))\r\n subLayer.children.forEach((child) => mapCartoRanges(child));\r\n else if (subLayer.cartoRange)\r\n this._subLayerRanges.set(subLayer.name, subLayer.cartoRange);\r\n });\r\n this._capabilities.layer.subLayers.forEach((subLayer) => mapCartoRanges(subLayer));\r\n this._settings.subLayers.forEach((subLayer) => {\r\n if (subLayer.isNamed && this._settings.isSubLayerVisible(subLayer)) {\r\n const subLayerRange = this._subLayerRanges.get(subLayer.name);\r\n if (subLayerRange)\r\n if (this.cartoRange)\r\n this.cartoRange.extendRange(subLayerRange);\r\n else\r\n this.cartoRange = subLayerRange.clone();\r\n }\r\n });\r\n }\r\n\r\n if (!this.cartoRange)\r\n this.cartoRange = this._allLayersRange;\r\n\r\n this._crsSupport = this.getCrsSupport();\r\n }\r\n } catch (error: any) {\r\n // Don't throw error if unauthorized status:\r\n // We want the tile tree to be created, so that end-user can get feedback on which layer is missing credentials.\r\n // When credentials will be provided, a new provider will be created, and initialization should be fine.\r\n if (error?.status === 401) {\r\n this.setStatus(MapLayerImageryProviderStatus.RequireAuth);\r\n } else {\r\n throw new ServerError(IModelStatus.ValidationFailed, \"\");\r\n }\r\n }\r\n }\r\n\r\n private getVisibleLayerString() {\r\n const layerNames = this.getVisibleLayers().map((layer)=>layer.name);\r\n return layerNames.join(\"%2C\");\r\n }\r\n\r\n private getVisibleLayers(): MapSubLayerSettings[] {\r\n return this._settings.subLayers.filter((subLayer) => this._settings.isSubLayerVisible(subLayer) && subLayer.isNamed);\r\n }\r\n\r\n private getVisibleLayersSrs() {\r\n const visibleLayers = this.getVisibleLayers();\r\n const visibleLayerNames = visibleLayers.map((layer) => layer.name);\r\n return this._capabilities?.getSubLayersCrs(visibleLayerNames);\r\n }\r\n\r\n private getQueryableLayers(): string[] {\r\n const layerNames = new Array<string>();\r\n const getQueryableSubLayers = ((subLayer: WmsCapability.SubLayer) => {\r\n if (!subLayer)\r\n return;\r\n\r\n if (subLayer.queryable)\r\n layerNames.push(subLayer.name);\r\n\r\n subLayer.children?.forEach((childSubLayer) => { getQueryableSubLayers(childSubLayer); });\r\n });\r\n this._capabilities?.layer?.subLayers?.forEach((subLayer) => { getQueryableSubLayers(subLayer); });\r\n return layerNames;\r\n }\r\n\r\n private getVisibleQueryableLayersString(): string {\r\n const layers = new Array<string>();\r\n const queryable = this.getQueryableLayers();\r\n const visibleLayerNames = this.getVisibleLayers().map((layer) => layer.name);\r\n queryable.forEach((layer: string) => { if (visibleLayerNames.includes(layer)) layers.push(layer); });\r\n return layers.join(\"%2C\");\r\n }\r\n\r\n public getCrsSupport(): WmsCrsSupport {\r\n const layersCrs = this.getVisibleLayersSrs();\r\n\r\n let support3857: boolean|undefined;\r\n let support4326: boolean|undefined;\r\n if (layersCrs) {\r\n for (const [_layerName, crs] of layersCrs) {\r\n if (crs.find((layerCrs) => {return layerCrs.includes(\"3857\");}) === undefined ) {\r\n support3857 = false;\r\n } else if (support3857 === undefined) {\r\n support3857 = true;\r\n }\r\n\r\n if (crs.find((layerCrs) => {return layerCrs.includes(\"4326\");}) === undefined ) {\r\n support4326 = false;\r\n } else if (support4326 === undefined) {\r\n support4326 = true;\r\n }\r\n }\r\n }\r\n\r\n return {support3857: support3857 ?? false, support4326: support4326 ?? false};\r\n }\r\n\r\n // construct the Url from the desired Tile\r\n public async constructUrl(row: number, column: number, zoomLevel: number): Promise<string> {\r\n\r\n let bboxString =\"\";\r\n let crsString =\"\";\r\n\r\n // We support 2 SRS: EPSG:3857 and EPSG:4326, we prefer EPSG:3857.\r\n if (this._crsSupport?.support3857) {\r\n bboxString = this.getEPSG3857ExtentString(row, column, zoomLevel);\r\n crsString= \"EPSG%3A3857\";\r\n } else if (this._crsSupport?.support4326) {\r\n // The WMS 1.3.0 specification mandates using the axis ordering as defined in the EPSG database.\r\n // For instance, for EPSG:4326 the axis ordering is latitude/longitude, or north/east.\r\n bboxString = this.getEPSG4326ExtentString(row, column, zoomLevel, true); // lat/long ordering\r\n crsString= \"EPSG%3A4326\";\r\n }\r\n\r\n const layerString = this.getVisibleLayerString();\r\n\r\n if (bboxString.length === 0 || crsString.length === 0 ||layerString.length === 0)\r\n return \"\";\r\n\r\n return `${this._baseUrl}?SERVICE=WMS&VERSION=1.3.0&REQUEST=GetMap&FORMAT=image%2Fpng&TRANSPARENT=${this.transparentBackgroundString}&LAYERS=${layerString}&WIDTH=${this.tileSize}&HEIGHT=${this.tileSize}&CRS=${crsString}&STYLES=&BBOX=${bboxString}`;\r\n }\r\n\r\n public override async getToolTip(strings: string[], quadId: QuadId, carto: Cartographic, tree: ImageryMapTileTree): Promise<void> {\r\n await super.getToolTip(strings, quadId, carto, tree);\r\n const infoFormats = this._capabilities?.featureInfoFormats;\r\n if (!doToolTips || undefined === infoFormats)\r\n return;\r\n let formatString = infoFormats.find((format) => format === \"text/html\");\r\n if (!formatString) formatString = infoFormats[0];\r\n\r\n const bboxString = this.getEPSG3857ExtentString(quadId.row, quadId.column, quadId.level);\r\n const layerString = this.getVisibleQueryableLayersString();\r\n if (layerString.length === 0)\r\n return;\r\n const rectangle = tree.getTileRectangle(quadId);\r\n const fraction = rectangle.worldToLocal(Point2d.create(carto.longitude, carto.latitude, scratchPoint2d))!;\r\n const x = Math.floor(.5 + fraction.x * this.tileSize);\r\n const y = Math.floor(.5 + (1.0 - fraction.y) * this.tileSize);\r\n const coordinateString = (false && this._isVersion1_1) ? `&x=${x}&y=${y}` : `&i=${x}&j=${y}`;\r\n const getFeatureUrl = `${this._baseUrl}?SERVICE=WMS&VERSION=1.3.0&REQUEST=GetFeatureInfo&LAYERS=${layerString}&WIDTH=${this.tileSize}&HEIGHT=${this.tileSize}&CRS=EPSG%3A3857&BBOX=${bboxString}&QUERY_LAYERS=${layerString}${coordinateString}&info_format=${formatString}`;\r\n return this.toolTipFromUrl(strings, getFeatureUrl);\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"WmsMapLayerImageryProvider.js","sourceRoot":"","sources":["../../../../../src/tile/map/ImageryProviders/WmsMapLayerImageryProvider.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\nimport { IModelStatus } from \"@itwin/core-bentley\";\r\nimport { Cartographic, ImageMapLayerSettings, MapSubLayerSettings, ServerError } from \"@itwin/core-common\";\r\nimport { Point2d } from \"@itwin/core-geometry\";\r\nimport {\r\n ImageryMapTileTree, MapCartoRectangle, MapLayerImageryProvider, MapLayerImageryProviderStatus, QuadId, WmsCapabilities,\r\n WmsCapability, WmsUtilities,\r\n} from \"../../internal\";\r\n\r\n// eslint-disable-next-line prefer-const\r\nlet doToolTips = true;\r\n\r\nconst scratchPoint2d = Point2d.createZero();\r\n\r\n/** @internal */\r\nexport interface WmsCrsSupport {\r\n support3857: boolean;\r\n support4326: boolean;\r\n}\r\n\r\n/** @internal */\r\nexport class WmsMapLayerImageryProvider extends MapLayerImageryProvider {\r\n private _capabilities?: WmsCapabilities;\r\n private _allLayersRange?: MapCartoRectangle;\r\n private _subLayerRanges = new Map<string, MapCartoRectangle>();\r\n private _baseUrl: string;\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n private _crsSupport: WmsCrsSupport|undefined;\r\n\r\n constructor(settings: ImageMapLayerSettings) {\r\n super(settings, false);\r\n this._baseUrl = WmsUtilities.getBaseUrl(this._settings.url);\r\n }\r\n\r\n public override async initialize(): Promise<void> {\r\n try {\r\n this._capabilities = await WmsCapabilities.create(this._baseUrl);\r\n if (undefined !== this._capabilities) {\r\n this._allLayersRange = this._capabilities.cartoRange;\r\n if (this._capabilities.layer && Array.isArray(this._capabilities.layer.subLayers)) {\r\n const mapCartoRanges = ((subLayer: WmsCapability.SubLayer) => {\r\n if (Array.isArray(subLayer.children))\r\n subLayer.children.forEach((child) => mapCartoRanges(child));\r\n else if (subLayer.cartoRange)\r\n this._subLayerRanges.set(subLayer.name, subLayer.cartoRange);\r\n });\r\n this._capabilities.layer.subLayers.forEach((subLayer) => mapCartoRanges(subLayer));\r\n this._settings.subLayers.forEach((subLayer) => {\r\n if (subLayer.isNamed && this._settings.isSubLayerVisible(subLayer)) {\r\n const subLayerRange = this._subLayerRanges.get(subLayer.name);\r\n if (subLayerRange)\r\n if (this.cartoRange)\r\n this.cartoRange.extendRange(subLayerRange);\r\n else\r\n this.cartoRange = subLayerRange.clone();\r\n }\r\n });\r\n }\r\n\r\n if (!this.cartoRange)\r\n this.cartoRange = this._allLayersRange;\r\n\r\n this._crsSupport = this.getCrsSupport();\r\n }\r\n } catch (error: any) {\r\n // Don't throw error if unauthorized status:\r\n // We want the tile tree to be created, so that end-user can get feedback on which layer is missing credentials.\r\n // When credentials will be provided, a new provider will be created, and initialization should be fine.\r\n if (error?.status === 401) {\r\n this.setStatus(MapLayerImageryProviderStatus.RequireAuth);\r\n } else {\r\n throw new ServerError(IModelStatus.ValidationFailed, \"\");\r\n }\r\n }\r\n }\r\n\r\n private getVisibleLayerString() {\r\n const layerNames = this.getVisibleLayers().map((layer)=>layer.name);\r\n return layerNames.join(\"%2C\");\r\n }\r\n\r\n private getVisibleLayers(): MapSubLayerSettings[] {\r\n return this._settings.subLayers.filter((subLayer) => this._settings.isSubLayerVisible(subLayer) && subLayer.isNamed);\r\n }\r\n\r\n private getVisibleLayersSrs() {\r\n const visibleLayers = this.getVisibleLayers();\r\n const visibleLayerNames = visibleLayers.map((layer) => layer.name);\r\n return this._capabilities?.getSubLayersCrs(visibleLayerNames);\r\n }\r\n\r\n private getQueryableLayers(): string[] {\r\n const layerNames = new Array<string>();\r\n const getQueryableSubLayers = ((subLayer: WmsCapability.SubLayer) => {\r\n if (!subLayer)\r\n return;\r\n\r\n if (subLayer.queryable)\r\n layerNames.push(subLayer.name);\r\n\r\n subLayer.children?.forEach((childSubLayer) => { getQueryableSubLayers(childSubLayer); });\r\n });\r\n this._capabilities?.layer?.subLayers?.forEach((subLayer) => { getQueryableSubLayers(subLayer); });\r\n return layerNames;\r\n }\r\n\r\n private getVisibleQueryableLayersString(): string {\r\n const layers = new Array<string>();\r\n const queryable = this.getQueryableLayers();\r\n const visibleLayerNames = this.getVisibleLayers().map((layer) => layer.name);\r\n queryable.forEach((layer: string) => { if (visibleLayerNames.includes(layer)) layers.push(layer); });\r\n return layers.join(\"%2C\");\r\n }\r\n\r\n public getCrsSupport(): WmsCrsSupport {\r\n const layersCrs = this.getVisibleLayersSrs();\r\n\r\n let support3857: boolean|undefined;\r\n let support4326: boolean|undefined;\r\n if (layersCrs) {\r\n for (const [_layerName, crs] of layersCrs) {\r\n if (crs.find((layerCrs) => {return layerCrs.includes(\"3857\");}) === undefined ) {\r\n support3857 = false;\r\n } else if (support3857 === undefined) {\r\n support3857 = true;\r\n }\r\n\r\n if (crs.find((layerCrs) => {return layerCrs.includes(\"4326\");}) === undefined ) {\r\n support4326 = false;\r\n } else if (support4326 === undefined) {\r\n support4326 = true;\r\n }\r\n }\r\n }\r\n\r\n return {support3857: support3857 ?? false, support4326: support4326 ?? false};\r\n }\r\n\r\n // construct the Url from the desired Tile\r\n public async constructUrl(row: number, column: number, zoomLevel: number): Promise<string> {\r\n\r\n let bboxString =\"\";\r\n let crsString =\"\";\r\n\r\n // We support 2 SRS: EPSG:3857 and EPSG:4326, we prefer EPSG:3857.\r\n if (this._crsSupport?.support3857) {\r\n bboxString = this.getEPSG3857ExtentString(row, column, zoomLevel);\r\n crsString= \"EPSG%3A3857\";\r\n } else if (this._crsSupport?.support4326) {\r\n // The WMS 1.3.0 specification mandates using the axis ordering as defined in the EPSG database.\r\n // For instance, for EPSG:4326 the axis ordering is latitude/longitude, or north/east.\r\n // WMS 1.1.0 always requires the axis ordering to be longitude/latitude. *sigh*\r\n if (this._capabilities !== undefined) {\r\n bboxString = this.getEPSG4326ExtentString(row, column, zoomLevel, this._capabilities?.isVersion13); // lat/long ordering\r\n crsString= \"EPSG%3A4326\";\r\n }\r\n\r\n }\r\n\r\n const layerString = this.getVisibleLayerString();\r\n\r\n if (bboxString.length === 0 || crsString.length === 0 ||layerString.length === 0)\r\n return \"\";\r\n\r\n const crsParamName = this._capabilities?.isVersion13 ? \"CRS\" : \"SRS\";\r\n return `${this._baseUrl}?SERVICE=WMS&VERSION=${this._capabilities?.version}&REQUEST=GetMap&FORMAT=image%2Fpng&TRANSPARENT=${this.transparentBackgroundString}&LAYERS=${layerString}&WIDTH=${this.tileSize}&HEIGHT=${this.tileSize}&${crsParamName}=${crsString}&STYLES=&BBOX=${bboxString}`;\r\n }\r\n\r\n public override async getToolTip(strings: string[], quadId: QuadId, carto: Cartographic, tree: ImageryMapTileTree): Promise<void> {\r\n await super.getToolTip(strings, quadId, carto, tree);\r\n const infoFormats = this._capabilities?.featureInfoFormats;\r\n if (!doToolTips || undefined === infoFormats)\r\n return;\r\n let formatString = infoFormats.find((format) => format === \"text/html\");\r\n if (!formatString) formatString = infoFormats[0];\r\n\r\n const bboxString = this.getEPSG3857ExtentString(quadId.row, quadId.column, quadId.level);\r\n const layerString = this.getVisibleQueryableLayersString();\r\n if (layerString.length === 0)\r\n return;\r\n const rectangle = tree.getTileRectangle(quadId);\r\n const fraction = rectangle.worldToLocal(Point2d.create(carto.longitude, carto.latitude, scratchPoint2d))!;\r\n const x = Math.floor(.5 + fraction.x * this.tileSize);\r\n const y = Math.floor(.5 + (1.0 - fraction.y) * this.tileSize);\r\n const coordinateString = this._capabilities?.isVersion13 ? `&i=${x}&j=${y}` : `&x=${x}&y=${y}`;\r\n const crsParamName = this._capabilities?.isVersion13 ? \"CRS\" : \"SRS\";\r\n const getFeatureUrl = `${this._baseUrl}?SERVICE=WMS&VERSION=${this._capabilities?.version}&REQUEST=GetFeatureInfo&LAYERS=${layerString}&WIDTH=${this.tileSize}&HEIGHT=${this.tileSize}&${crsParamName}=EPSG%3A3857&BBOX=${bboxString}&QUERY_LAYERS=${layerString}${coordinateString}&info_format=${formatString}`;\r\n return this.toolTipFromUrl(strings, getFeatureUrl);\r\n }\r\n}\r\n"]}
@@ -22,13 +22,17 @@ export interface MapLayerSourceValidation {
22
22
  authInfo?: MapLayerAuthenticationInfo;
23
23
  }
24
24
  /**
25
- * Options to be passed to the IModelApp on startup which contain access keys for various layer formats
25
+ * Options supplied at startup via [[IModelAppOptions.mapLayerOptions]] to specify access keys for various map layer formats.
26
26
  * @beta
27
27
  */
28
28
  export interface MapLayerOptions {
29
+ /** Access key for Azure Maps in the format `{ key: "subscription-key", value: "your-azure-maps-key" }`. */
29
30
  AzureMaps?: MapLayerKey;
31
+ /** Access key for Mapbox in the format `{ key: "access_token", value: "your-mapbox-key" }`. */
30
32
  MapboxImagery?: MapLayerKey;
33
+ /** Access key for Bing Maps in the format `{ key: "key", value: "your-bing-maps-key" }`. */
31
34
  BingMaps?: MapLayerKey;
35
+ /** Access keys for additional map layer formats. */
32
36
  [format: string]: MapLayerKey | undefined;
33
37
  }
34
38
  /** @internal */
@@ -1 +1 @@
1
- {"version":3,"file":"MapLayerFormatRegistry.d.ts","sourceRoot":"","sources":["../../../../src/tile/map/MapLayerFormatRegistry.ts"],"names":[],"mappings":"AAIA;;GAEG;AAGH,OAAO,EAAE,qBAAqB,EAAE,WAAW,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAE5G,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,4BAA4B,EAAkC,0BAA0B,EAAE,uBAAuB,EAAE,oBAAoB,EAAE,yBAAyB,EAAE,MAAM,aAAa,CAAC;AACjM,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAEhE,gBAAgB;AAChB,qBAAa,cAAc;IACzB,OAAc,QAAQ,EAAE,MAAM,CAAC;WACjB,QAAQ;WACR,qBAAqB,CAAC,SAAS,EAAE,gBAAgB,GAAG,uBAAuB,GAAG,SAAS;WACvF,kBAAkB,CAAC,cAAc,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,gBAAgB,GAAG,yBAAyB,GAAG,SAAS;WAIrI,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,uBAAuB,EAAE,YAAY,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,wBAAwB,CAAC;CACpJ;AAED,gBAAgB;AAChB,oBAAY,kBAAkB,GAAG,OAAO,cAAc,CAAC;AAEvD,gBAAgB;AAChB,MAAM,WAAW,wBAAwB;IACvC,MAAM,EAAE,oBAAoB,CAAC;IAC7B,SAAS,CAAC,EAAE,gBAAgB,EAAE,CAAC;IAC/B,QAAQ,CAAC,EAAE,0BAA0B,CAAC;CACvC;AAED;;;GAGG;AACH,MAAM,WAAW,eAAe;IAE9B,SAAS,CAAC,EAAE,WAAW,CAAC;IAExB,aAAa,CAAC,EAAE,WAAW,CAAC;IAE5B,QAAQ,CAAC,EAAE,WAAW,CAAC;IACvB,CAAC,MAAM,EAAE,MAAM,GAAG,WAAW,GAAG,SAAS,CAAC;CAC3C;AAED,gBAAgB;AAChB,qBAAa,sBAAsB;IACjC,OAAO,CAAC,cAAc,CAAkB;gBAC5B,IAAI,CAAC,EAAE,eAAe;IAIlC,OAAO,CAAC,QAAQ,CAAyC;IAClD,QAAQ,CAAC,WAAW,EAAE,kBAAkB;IAM/C,IAAW,aAAa,IAAI,eAAe,CAE1C;IACM,yBAAyB,CAAC,aAAa,EAAE,qBAAqB,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,gBAAgB,GAAG,4BAA4B,GAAG,SAAS;IAIvJ,qBAAqB,CAAC,aAAa,EAAE,qBAAqB,GAAG,uBAAuB,GAAG,SAAS;IAS1F,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,uBAAuB,EAAE,WAAW,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,wBAAwB,CAAC;CAI5J"}
1
+ {"version":3,"file":"MapLayerFormatRegistry.d.ts","sourceRoot":"","sources":["../../../../src/tile/map/MapLayerFormatRegistry.ts"],"names":[],"mappings":"AAIA;;GAEG;AAGH,OAAO,EAAE,qBAAqB,EAAE,WAAW,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAE5G,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,4BAA4B,EAAkC,0BAA0B,EAAE,uBAAuB,EAAE,oBAAoB,EAAE,yBAAyB,EAAE,MAAM,aAAa,CAAC;AACjM,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAEhE,gBAAgB;AAChB,qBAAa,cAAc;IACzB,OAAc,QAAQ,EAAE,MAAM,CAAC;WACjB,QAAQ;WACR,qBAAqB,CAAC,SAAS,EAAE,gBAAgB,GAAG,uBAAuB,GAAG,SAAS;WACvF,kBAAkB,CAAC,cAAc,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,gBAAgB,GAAG,yBAAyB,GAAG,SAAS;WAIrI,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,uBAAuB,EAAE,YAAY,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,wBAAwB,CAAC;CACpJ;AAED,gBAAgB;AAChB,oBAAY,kBAAkB,GAAG,OAAO,cAAc,CAAC;AAEvD,gBAAgB;AAChB,MAAM,WAAW,wBAAwB;IACvC,MAAM,EAAE,oBAAoB,CAAC;IAC7B,SAAS,CAAC,EAAE,gBAAgB,EAAE,CAAC;IAC/B,QAAQ,CAAC,EAAE,0BAA0B,CAAC;CACvC;AAED;;;GAGG;AACH,MAAM,WAAW,eAAe;IAC9B,2GAA2G;IAE3G,SAAS,CAAC,EAAE,WAAW,CAAC;IACxB,+FAA+F;IAE/F,aAAa,CAAC,EAAE,WAAW,CAAC;IAC5B,4FAA4F;IAE5F,QAAQ,CAAC,EAAE,WAAW,CAAC;IACvB,oDAAoD;IACpD,CAAC,MAAM,EAAE,MAAM,GAAG,WAAW,GAAG,SAAS,CAAC;CAC3C;AAED,gBAAgB;AAChB,qBAAa,sBAAsB;IACjC,OAAO,CAAC,cAAc,CAAkB;gBAC5B,IAAI,CAAC,EAAE,eAAe;IAIlC,OAAO,CAAC,QAAQ,CAAyC;IAClD,QAAQ,CAAC,WAAW,EAAE,kBAAkB;IAM/C,IAAW,aAAa,IAAI,eAAe,CAE1C;IACM,yBAAyB,CAAC,aAAa,EAAE,qBAAqB,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,gBAAgB,GAAG,4BAA4B,GAAG,SAAS;IAIvJ,qBAAqB,CAAC,aAAa,EAAE,qBAAqB,GAAG,uBAAuB,GAAG,SAAS;IAS1F,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,uBAAuB,EAAE,WAAW,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,wBAAwB,CAAC;CAI5J"}
@@ -1 +1 @@
1
- {"version":3,"file":"MapLayerFormatRegistry.js","sourceRoot":"","sources":["../../../../src/tile/map/MapLayerFormatRegistry.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 MapLayers\r\n */\r\n\r\nimport { assert } from \"@itwin/core-bentley\";\r\nimport { ImageMapLayerSettings, MapLayerKey, MapLayerSettings, MapSubLayerProps } from \"@itwin/core-common\";\r\nimport { IModelApp } from \"../../IModelApp\";\r\nimport { IModelConnection } from \"../../IModelConnection\";\r\nimport { ImageryMapLayerTreeReference, internalMapLayerImageryFormats, MapLayerAuthenticationInfo, MapLayerImageryProvider, MapLayerSourceStatus, MapLayerTileTreeReference } from \"../internal\";\r\nimport { RequestBasicCredentials } from \"../../request/Request\";\r\n\r\n/** @internal */\r\nexport class MapLayerFormat {\r\n public static formatId: string;\r\n public static register() { IModelApp.mapLayerFormatRegistry.register(this); }\r\n public static createImageryProvider(_settings: MapLayerSettings): MapLayerImageryProvider | undefined { assert(false); }\r\n public static createMapLayerTree(_layerSettings: MapLayerSettings, _layerIndex: number, _iModel: IModelConnection): MapLayerTileTreeReference | undefined {\r\n assert(false);\r\n return undefined;\r\n }\r\n public static async validateSource(_url: string, _credentials?: RequestBasicCredentials, _ignoreCache?: boolean): Promise<MapLayerSourceValidation> { return { status: MapLayerSourceStatus.Valid }; }\r\n}\r\n\r\n/** @internal */\r\nexport type MapLayerFormatType = typeof MapLayerFormat;\r\n\r\n/** @internal */\r\nexport interface MapLayerSourceValidation {\r\n status: MapLayerSourceStatus;\r\n subLayers?: MapSubLayerProps[];\r\n authInfo?: MapLayerAuthenticationInfo;\r\n}\r\n\r\n/**\r\n * Options to be passed to the IModelApp on startup which contain access keys for various layer formats\r\n * @beta\r\n */\r\nexport interface MapLayerOptions {\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n AzureMaps?: MapLayerKey;\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n MapboxImagery?: MapLayerKey;\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n BingMaps?: MapLayerKey;\r\n [format: string]: MapLayerKey | undefined;\r\n}\r\n\r\n/** @internal */\r\nexport class MapLayerFormatRegistry {\r\n private _configOptions: MapLayerOptions;\r\n constructor(opts?: MapLayerOptions) {\r\n this._configOptions = opts ?? {};\r\n internalMapLayerImageryFormats.forEach((format) => this.register(format));\r\n }\r\n private _formats = new Map<string, MapLayerFormatType>();\r\n public register(formatClass: MapLayerFormatType) {\r\n if (formatClass.formatId.length === 0)\r\n return; // must be an abstract class, ignore it\r\n\r\n this._formats.set(formatClass.formatId, formatClass);\r\n }\r\n public get configOptions(): MapLayerOptions {\r\n return this._configOptions;\r\n }\r\n public createImageryMapLayerTree(layerSettings: ImageMapLayerSettings, layerIndex: number, iModel: IModelConnection): ImageryMapLayerTreeReference | undefined {\r\n const format = this._formats.get(layerSettings.formatId);\r\n return format !== undefined ? (format.createMapLayerTree(layerSettings, layerIndex, iModel) as ImageryMapLayerTreeReference) : undefined;\r\n }\r\n public createImageryProvider(layerSettings: ImageMapLayerSettings): MapLayerImageryProvider | undefined {\r\n const format = this._formats.get(layerSettings.formatId);\r\n if (this._configOptions[layerSettings.formatId] !== undefined) {\r\n const keyValuePair = this._configOptions[layerSettings.formatId]!;\r\n const key: MapLayerKey = { key: keyValuePair.key, value: keyValuePair.value };\r\n layerSettings = layerSettings.clone({ accessKey: key });\r\n }\r\n return (format === undefined) ? undefined : format.createImageryProvider(layerSettings);\r\n }\r\n public async validateSource(formatId: string, url: string, credentials?: RequestBasicCredentials, ignoreCache?: boolean): Promise<MapLayerSourceValidation> {\r\n const format = this._formats.get(formatId);\r\n return (format === undefined) ? { status: MapLayerSourceStatus.InvalidFormat } : format.validateSource(url, credentials, ignoreCache);\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"MapLayerFormatRegistry.js","sourceRoot":"","sources":["../../../../src/tile/map/MapLayerFormatRegistry.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 MapLayers\r\n */\r\n\r\nimport { assert } from \"@itwin/core-bentley\";\r\nimport { ImageMapLayerSettings, MapLayerKey, MapLayerSettings, MapSubLayerProps } from \"@itwin/core-common\";\r\nimport { IModelApp } from \"../../IModelApp\";\r\nimport { IModelConnection } from \"../../IModelConnection\";\r\nimport { ImageryMapLayerTreeReference, internalMapLayerImageryFormats, MapLayerAuthenticationInfo, MapLayerImageryProvider, MapLayerSourceStatus, MapLayerTileTreeReference } from \"../internal\";\r\nimport { RequestBasicCredentials } from \"../../request/Request\";\r\n\r\n/** @internal */\r\nexport class MapLayerFormat {\r\n public static formatId: string;\r\n public static register() { IModelApp.mapLayerFormatRegistry.register(this); }\r\n public static createImageryProvider(_settings: MapLayerSettings): MapLayerImageryProvider | undefined { assert(false); }\r\n public static createMapLayerTree(_layerSettings: MapLayerSettings, _layerIndex: number, _iModel: IModelConnection): MapLayerTileTreeReference | undefined {\r\n assert(false);\r\n return undefined;\r\n }\r\n public static async validateSource(_url: string, _credentials?: RequestBasicCredentials, _ignoreCache?: boolean): Promise<MapLayerSourceValidation> { return { status: MapLayerSourceStatus.Valid }; }\r\n}\r\n\r\n/** @internal */\r\nexport type MapLayerFormatType = typeof MapLayerFormat;\r\n\r\n/** @internal */\r\nexport interface MapLayerSourceValidation {\r\n status: MapLayerSourceStatus;\r\n subLayers?: MapSubLayerProps[];\r\n authInfo?: MapLayerAuthenticationInfo;\r\n}\r\n\r\n/**\r\n * Options supplied at startup via [[IModelAppOptions.mapLayerOptions]] to specify access keys for various map layer formats.\r\n * @beta\r\n */\r\nexport interface MapLayerOptions {\r\n /** Access key for Azure Maps in the format `{ key: \"subscription-key\", value: \"your-azure-maps-key\" }`. */\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n AzureMaps?: MapLayerKey;\r\n /** Access key for Mapbox in the format `{ key: \"access_token\", value: \"your-mapbox-key\" }`. */\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n MapboxImagery?: MapLayerKey;\r\n /** Access key for Bing Maps in the format `{ key: \"key\", value: \"your-bing-maps-key\" }`. */\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n BingMaps?: MapLayerKey;\r\n /** Access keys for additional map layer formats. */\r\n [format: string]: MapLayerKey | undefined;\r\n}\r\n\r\n/** @internal */\r\nexport class MapLayerFormatRegistry {\r\n private _configOptions: MapLayerOptions;\r\n constructor(opts?: MapLayerOptions) {\r\n this._configOptions = opts ?? {};\r\n internalMapLayerImageryFormats.forEach((format) => this.register(format));\r\n }\r\n private _formats = new Map<string, MapLayerFormatType>();\r\n public register(formatClass: MapLayerFormatType) {\r\n if (formatClass.formatId.length === 0)\r\n return; // must be an abstract class, ignore it\r\n\r\n this._formats.set(formatClass.formatId, formatClass);\r\n }\r\n public get configOptions(): MapLayerOptions {\r\n return this._configOptions;\r\n }\r\n public createImageryMapLayerTree(layerSettings: ImageMapLayerSettings, layerIndex: number, iModel: IModelConnection): ImageryMapLayerTreeReference | undefined {\r\n const format = this._formats.get(layerSettings.formatId);\r\n return format !== undefined ? (format.createMapLayerTree(layerSettings, layerIndex, iModel) as ImageryMapLayerTreeReference) : undefined;\r\n }\r\n public createImageryProvider(layerSettings: ImageMapLayerSettings): MapLayerImageryProvider | undefined {\r\n const format = this._formats.get(layerSettings.formatId);\r\n if (this._configOptions[layerSettings.formatId] !== undefined) {\r\n const keyValuePair = this._configOptions[layerSettings.formatId]!;\r\n const key: MapLayerKey = { key: keyValuePair.key, value: keyValuePair.value };\r\n layerSettings = layerSettings.clone({ accessKey: key });\r\n }\r\n return (format === undefined) ? undefined : format.createImageryProvider(layerSettings);\r\n }\r\n public async validateSource(formatId: string, url: string, credentials?: RequestBasicCredentials, ignoreCache?: boolean): Promise<MapLayerSourceValidation> {\r\n const format = this._formats.get(formatId);\r\n return (format === undefined) ? { status: MapLayerSourceStatus.InvalidFormat } : format.validateSource(url, credentials, ignoreCache);\r\n }\r\n}\r\n"]}
@@ -357,7 +357,7 @@ export class MapTile extends RealityTile {
357
357
  return undefined;
358
358
  const textures = this.getDrapeTextures();
359
359
  const { baseColor, baseTransparent, layerClassifiers } = this.mapTree;
360
- 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 });
360
+ 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 }, true);
361
361
  // 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.
362
362
  if (this.imageryIsReady && 0 === this.mapTree.layerClassifiers.size)
363
363
  this._graphic = graphic;
@@ -575,7 +575,7 @@ export class UpsampledMapTile extends MapTile {
575
575
  const upsample = this.upsampleFromParent();
576
576
  const projection = this.loadableTerrainTile.getProjection(this.heightRange);
577
577
  if (upsample)
578
- this._renderGeometry = IModelApp.renderSystem.createRealityMeshFromTerrain(upsample.mesh, projection.transformFromLocal);
578
+ this._renderGeometry = IModelApp.renderSystem.createRealityMeshFromTerrain(upsample.mesh, projection.transformFromLocal, true);
579
579
  }
580
580
  return this._renderGeometry;
581
581
  }
@@ -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 { TerrainMeshPrimitive } from \"../../render/primitives/mesh/TerrainMeshPrimitive\";\r\nimport { RenderGraphic } from \"../../render/RenderGraphic\";\r\nimport { RenderMemory } from \"../../render/RenderMemory\";\r\nimport { RenderSystem, RenderTerrainGeometry, TerrainTexture } from \"../../render/RenderSystem\";\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/** @internal */\r\nexport abstract class MapTileProjection {\r\n abstract get localRange(): Range3d;\r\n abstract get transformFromLocal(): Transform;\r\n public abstract getPoint(u: number, v: number, height: number, result?: Point3d): Point3d;\r\n public get ellipsoidPatch(): EllipsoidPatch | undefined { return undefined; }\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/** @internal */\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/** @internal */\r\nclass 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?: TerrainMeshPrimitive;\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/**\r\n * A specialization of Tile for maps imagery. Holds the corners (possibly reprojected) as well as the height range.\r\n * @internal\r\n */\r\n\r\n/** @internal */\r\nexport class MapTile extends RealityTile {\r\n private static _maxParentHeightDepth = 4;\r\n private _imageryTiles?: ImageryMapTile[];\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 protected _heightRange: Range1d | undefined;\r\n protected _renderGeometry?: RenderTerrainGeometry;\r\n protected _mesh?: TerrainMeshPrimitive; // Primitive retained on leaves only for upsampling.\r\n public override get isReady(): boolean { return super.isReady && this.baseImageryIsReady; }\r\n public override get hasGraphics(): boolean { return this._renderGeometry !== undefined; }\r\n public get renderGeometry() { return this._renderGeometry; }\r\n public get mesh() { return this._mesh; }\r\n public get loadableTerrainTile() { return this.loadableTile as MapTile; }\r\n public get isPlanar(): boolean { return this._patch instanceof PlanarTilePatch; }\r\n public get imageryTiles(): ImageryMapTile[] | undefined { return this._imageryTiles; }\r\n\r\n public getRangeCorners(result: Point3d[]): Point3d[] { return this._patch instanceof PlanarTilePatch ? this._patch.getRangeCorners(this.heightRange!, result) : this.range.corners(result); }\r\n constructor(params: RealityTileParams, public readonly mapTree: MapTileTree, public quadId: QuadId, private _patch: TilePatch, public readonly rectangle: MapCartoRectangle, heightRange: Range1d | undefined, protected _cornerRays: Ray3d[] | undefined) {\r\n super(params, mapTree);\r\n this._heightRange = heightRange ? heightRange.clone() : undefined;\r\n }\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 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 public override get graphicType() {\r\n return this.mapTree.isOverlay ? TileGraphicType.Overlay : ((this.mapTree.useDepthBuffer || this._forceDepthBuffer) ? TileGraphicType.Scene : TileGraphicType.BackgroundMap);\r\n }\r\n\r\n public get mapLoader() { return this.realityRoot.loader as MapTileLoader; }\r\n public get isUpsampled() { return false; }\r\n\r\n public tileFromQuadId(quadId: QuadId): MapTile | undefined {\r\n if (0 === quadId.compare(this.quadId))\r\n return this;\r\n\r\n if (quadId.level <= this.quadId.level) {\r\n assert(false);\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 return undefined;\r\n }\r\n private get _forceDepthBuffer() {\r\n return this.mapTree.globeMode === GlobeMode.Ellipsoid && this.depth < 8; // For large ellipsoidal globe tile force the depth buffer on to avoid anomalies at horizon. These are large enough that they\r\n }\r\n\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 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 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 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 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 public getGraphic(_system: RenderSystem, _texture: RenderTexture): RenderGraphic | undefined { return undefined; }\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 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 return true;\r\n }\r\n\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 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 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 resolve(children);\r\n return children;\r\n }\r\n\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\r\n public override isRegionCulled(args: TileDrawArgs): boolean {\r\n return this.isContentCulled(args);\r\n }\r\n public override isContentCulled(args: TileDrawArgs): boolean {\r\n return FrustumPlanes.Containment.Outside === args.frustumPlanes.computeContainment(this.getRangeCorners(scratchCorners));\r\n }\r\n public clearLayers() {\r\n this.clearImageryTiles();\r\n this._graphic = undefined;\r\n if (this.children)\r\n for (const child of this.children)\r\n (child as MapTile).clearLayers();\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 }\r\n\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 assert(undefined !== geometry);\r\n if (undefined === geometry)\r\n return undefined;\r\n\r\n const textures = this.getDrapeTextures();\r\n const { baseColor, baseTransparent, layerClassifiers } = this.mapTree;\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 });\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.layerClassifiers.size)\r\n this._graphic = graphic;\r\n\r\n return graphic;\r\n }\r\n\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 protected override _collectStatistics(stats: RenderMemory.Statistics): void {\r\n super._collectStatistics(stats);\r\n\r\n this._renderGeometry?.collectStatistics(stats);\r\n this._mesh?.collectStatistics(stats);\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 public get mapTilingScheme() {\r\n return this.mapTree.sourceTilingScheme;\r\n }\r\n\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 if (this.rangeCorners && this._patch instanceof PlanarTilePatch)\r\n this._patch.getRangeCorners(this.heightRange!, this.rangeCorners);\r\n }\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 public get baseImageryIsReady(): boolean {\r\n if (undefined !== this.mapTree.baseColor || 0 === this.mapTree.imageryTrees.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.imageryTrees[0].modelId;\r\n return this._imageryTiles.every((imageryTile) => imageryTile.imageryTree.modelId !== baseTreeId || imageryTile.isReady);\r\n }\r\n\r\n public get imageryIsReady(): boolean {\r\n if (undefined === this._imageryTiles)\r\n return 0 === this.mapTree.imageryTrees.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.imageryTrees.length || this.imageryIsReady)\r\n return;\r\n\r\n this.clearImageryTiles();\r\n this._imageryTiles = new Array<ImageryMapTile>();\r\n for (const imageryTree of this.mapTree.imageryTrees) {\r\n if (TileTreeLoadStatus.Loaded !== imageryTree.selectCartoDrapeTiles(this._imageryTiles, this, args)) {\r\n this._imageryTiles = undefined;\r\n return;\r\n }\r\n }\r\n\r\n for (const imageryTile of this._imageryTiles) {\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 }\r\n }\r\n\r\n private static _scratchRectangle1 = new MapCartoRectangle();\r\n private static _scratchRectangle2 = new MapCartoRectangle();\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\r\n public override forceSelectRealityTile(): boolean {\r\n\r\n let parentHeightDepth = 0;\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 private static _scratchThisDiagonal = Vector2d.create();\r\n private static _scratchDrapeDiagonal = Vector2d.create();\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 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 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 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 return drapeTextures.length > 0 ? drapeTextures : undefined;\r\n }\r\n\r\n private static _scratchIntersectRange = Range2d.createNull();\r\n private computeDrapeTexture(thisRectangle: Range2d, thisDiagonal: Vector2d, imageryTile: ImageryMapTile, drapeRectangle: Range2d, clipRectangle?: Range2d): TerrainTexture {\r\n assert(imageryTile.texture !== undefined);\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 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 public override setContent(content: TerrainTileContent): void {\r\n this._mesh = content.terrain?.mesh;\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?.createPolyface(transform);\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 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 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/** @internal */\r\nexport class UpsampledMapTile extends MapTile {\r\n public override get isUpsampled() { return true; }\r\n public override get isEmpty() { return false; }\r\n public override get loadableTile(): RealityTile {\r\n let parent = this.parent as MapTile;\r\n for (; parent && parent.isUpsampled; parent = parent.parent as MapTile)\r\n ;\r\n return parent;\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 = parentMesh.upsample(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.createRealityMeshFromTerrain(upsample.mesh, projection.transformFromLocal);\r\n }\r\n return this._renderGeometry;\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 } 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 { TerrainMeshPrimitive } from \"../../render/primitives/mesh/TerrainMeshPrimitive\";\r\nimport { RenderGraphic } from \"../../render/RenderGraphic\";\r\nimport { RenderMemory } from \"../../render/RenderMemory\";\r\nimport { RenderSystem, RenderTerrainGeometry, TerrainTexture } from \"../../render/RenderSystem\";\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/** @internal */\r\nexport abstract class MapTileProjection {\r\n abstract get localRange(): Range3d;\r\n abstract get transformFromLocal(): Transform;\r\n public abstract getPoint(u: number, v: number, height: number, result?: Point3d): Point3d;\r\n public get ellipsoidPatch(): EllipsoidPatch | undefined { return undefined; }\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/** @internal */\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/** @internal */\r\nclass 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?: TerrainMeshPrimitive;\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/**\r\n * A specialization of Tile for maps imagery. Holds the corners (possibly reprojected) as well as the height range.\r\n * @internal\r\n */\r\n\r\n/** @internal */\r\nexport class MapTile extends RealityTile {\r\n private static _maxParentHeightDepth = 4;\r\n private _imageryTiles?: ImageryMapTile[];\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 protected _heightRange: Range1d | undefined;\r\n protected _renderGeometry?: RenderTerrainGeometry;\r\n protected _mesh?: TerrainMeshPrimitive; // Primitive retained on leaves only for upsampling.\r\n public override get isReady(): boolean { return super.isReady && this.baseImageryIsReady; }\r\n public override get hasGraphics(): boolean { return this._renderGeometry !== undefined; }\r\n public get renderGeometry() { return this._renderGeometry; }\r\n public get mesh() { return this._mesh; }\r\n public get loadableTerrainTile() { return this.loadableTile as MapTile; }\r\n public get isPlanar(): boolean { return this._patch instanceof PlanarTilePatch; }\r\n public get imageryTiles(): ImageryMapTile[] | undefined { return this._imageryTiles; }\r\n\r\n public getRangeCorners(result: Point3d[]): Point3d[] { return this._patch instanceof PlanarTilePatch ? this._patch.getRangeCorners(this.heightRange!, result) : this.range.corners(result); }\r\n constructor(params: RealityTileParams, public readonly mapTree: MapTileTree, public quadId: QuadId, private _patch: TilePatch, public readonly rectangle: MapCartoRectangle, heightRange: Range1d | undefined, protected _cornerRays: Ray3d[] | undefined) {\r\n super(params, mapTree);\r\n this._heightRange = heightRange ? heightRange.clone() : undefined;\r\n }\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 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 public override get graphicType() {\r\n return this.mapTree.isOverlay ? TileGraphicType.Overlay : ((this.mapTree.useDepthBuffer || this._forceDepthBuffer) ? TileGraphicType.Scene : TileGraphicType.BackgroundMap);\r\n }\r\n\r\n public get mapLoader() { return this.realityRoot.loader as MapTileLoader; }\r\n public get isUpsampled() { return false; }\r\n\r\n public tileFromQuadId(quadId: QuadId): MapTile | undefined {\r\n if (0 === quadId.compare(this.quadId))\r\n return this;\r\n\r\n if (quadId.level <= this.quadId.level) {\r\n assert(false);\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 return undefined;\r\n }\r\n private get _forceDepthBuffer() {\r\n return this.mapTree.globeMode === GlobeMode.Ellipsoid && this.depth < 8; // For large ellipsoidal globe tile force the depth buffer on to avoid anomalies at horizon. These are large enough that they\r\n }\r\n\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 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 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 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 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 public getGraphic(_system: RenderSystem, _texture: RenderTexture): RenderGraphic | undefined { return undefined; }\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 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 return true;\r\n }\r\n\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 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 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 resolve(children);\r\n return children;\r\n }\r\n\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\r\n public override isRegionCulled(args: TileDrawArgs): boolean {\r\n return this.isContentCulled(args);\r\n }\r\n public override isContentCulled(args: TileDrawArgs): boolean {\r\n return FrustumPlanes.Containment.Outside === args.frustumPlanes.computeContainment(this.getRangeCorners(scratchCorners));\r\n }\r\n public clearLayers() {\r\n this.clearImageryTiles();\r\n this._graphic = undefined;\r\n if (this.children)\r\n for (const child of this.children)\r\n (child as MapTile).clearLayers();\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 }\r\n\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 assert(undefined !== geometry);\r\n if (undefined === geometry)\r\n return undefined;\r\n\r\n const textures = this.getDrapeTextures();\r\n const { baseColor, baseTransparent, layerClassifiers } = this.mapTree;\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 }, 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.layerClassifiers.size)\r\n this._graphic = graphic;\r\n\r\n return graphic;\r\n }\r\n\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 protected override _collectStatistics(stats: RenderMemory.Statistics): void {\r\n super._collectStatistics(stats);\r\n\r\n this._renderGeometry?.collectStatistics(stats);\r\n this._mesh?.collectStatistics(stats);\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 public get mapTilingScheme() {\r\n return this.mapTree.sourceTilingScheme;\r\n }\r\n\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 if (this.rangeCorners && this._patch instanceof PlanarTilePatch)\r\n this._patch.getRangeCorners(this.heightRange!, this.rangeCorners);\r\n }\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 public get baseImageryIsReady(): boolean {\r\n if (undefined !== this.mapTree.baseColor || 0 === this.mapTree.imageryTrees.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.imageryTrees[0].modelId;\r\n return this._imageryTiles.every((imageryTile) => imageryTile.imageryTree.modelId !== baseTreeId || imageryTile.isReady);\r\n }\r\n\r\n public get imageryIsReady(): boolean {\r\n if (undefined === this._imageryTiles)\r\n return 0 === this.mapTree.imageryTrees.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.imageryTrees.length || this.imageryIsReady)\r\n return;\r\n\r\n this.clearImageryTiles();\r\n this._imageryTiles = new Array<ImageryMapTile>();\r\n for (const imageryTree of this.mapTree.imageryTrees) {\r\n if (TileTreeLoadStatus.Loaded !== imageryTree.selectCartoDrapeTiles(this._imageryTiles, this, args)) {\r\n this._imageryTiles = undefined;\r\n return;\r\n }\r\n }\r\n\r\n for (const imageryTile of this._imageryTiles) {\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 }\r\n }\r\n\r\n private static _scratchRectangle1 = new MapCartoRectangle();\r\n private static _scratchRectangle2 = new MapCartoRectangle();\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\r\n public override forceSelectRealityTile(): boolean {\r\n\r\n let parentHeightDepth = 0;\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 private static _scratchThisDiagonal = Vector2d.create();\r\n private static _scratchDrapeDiagonal = Vector2d.create();\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 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 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 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 return drapeTextures.length > 0 ? drapeTextures : undefined;\r\n }\r\n\r\n private static _scratchIntersectRange = Range2d.createNull();\r\n private computeDrapeTexture(thisRectangle: Range2d, thisDiagonal: Vector2d, imageryTile: ImageryMapTile, drapeRectangle: Range2d, clipRectangle?: Range2d): TerrainTexture {\r\n assert(imageryTile.texture !== undefined);\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 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 public override setContent(content: TerrainTileContent): void {\r\n this._mesh = content.terrain?.mesh;\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?.createPolyface(transform);\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 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 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/** @internal */\r\nexport class UpsampledMapTile extends MapTile {\r\n public override get isUpsampled() { return true; }\r\n public override get isEmpty() { return false; }\r\n public override get loadableTile(): RealityTile {\r\n let parent = this.parent as MapTile;\r\n for (; parent && parent.isUpsampled; parent = parent.parent as MapTile)\r\n ;\r\n return parent;\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 = parentMesh.upsample(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.createRealityMeshFromTerrain(upsample.mesh, projection.transformFromLocal, true);\r\n }\r\n return this._renderGeometry;\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"]}
@@ -67,7 +67,7 @@ export class MapTileLoader extends RealityTileLoader {
67
67
  if (isCanceled())
68
68
  return {};
69
69
  const projection = tile.getProjection(tile.heightRange);
70
- const terrainGeometry = system.createRealityMeshFromTerrain(mesh, projection.transformFromLocal);
70
+ const terrainGeometry = system.createRealityMeshFromTerrain(mesh, projection.transformFromLocal, true);
71
71
  let unavailableChild = false;
72
72
  if (quadId.level < this.maxDepth) {
73
73
  const childIds = quadId.getChildIds();