@itwin/core-frontend 3.6.0-dev.5 → 3.6.0-dev.51

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 (385) hide show
  1. package/CHANGELOG.md +36 -1
  2. package/LICENSE.md +1 -1
  3. package/lib/cjs/AccuDraw.js +1 -1
  4. package/lib/cjs/AccuDraw.js.map +1 -1
  5. package/lib/cjs/BriefcaseConnection.d.ts +23 -3
  6. package/lib/cjs/BriefcaseConnection.d.ts.map +1 -1
  7. package/lib/cjs/BriefcaseConnection.js +11 -3
  8. package/lib/cjs/BriefcaseConnection.js.map +1 -1
  9. package/lib/cjs/IModelApp.d.ts +3 -3
  10. package/lib/cjs/IModelApp.d.ts.map +1 -1
  11. package/lib/cjs/IModelApp.js +2 -2
  12. package/lib/cjs/IModelApp.js.map +1 -1
  13. package/lib/cjs/NativeApp.d.ts +7 -0
  14. package/lib/cjs/NativeApp.d.ts.map +1 -1
  15. package/lib/cjs/NativeApp.js +9 -5
  16. package/lib/cjs/NativeApp.js.map +1 -1
  17. package/lib/cjs/NoRenderApp.d.ts.map +1 -1
  18. package/lib/cjs/NoRenderApp.js +3 -0
  19. package/lib/cjs/NoRenderApp.js.map +1 -1
  20. package/lib/cjs/Tiles.d.ts +4 -0
  21. package/lib/cjs/Tiles.d.ts.map +1 -1
  22. package/lib/cjs/Tiles.js +11 -0
  23. package/lib/cjs/Tiles.js.map +1 -1
  24. package/lib/cjs/ViewContext.js +1 -1
  25. package/lib/cjs/ViewContext.js.map +1 -1
  26. package/lib/cjs/ViewManager.d.ts.map +1 -1
  27. package/lib/cjs/ViewManager.js +2 -3
  28. package/lib/cjs/ViewManager.js.map +1 -1
  29. package/lib/cjs/ViewState.d.ts +4 -5
  30. package/lib/cjs/ViewState.d.ts.map +1 -1
  31. package/lib/cjs/ViewState.js +0 -1
  32. package/lib/cjs/ViewState.js.map +1 -1
  33. package/lib/cjs/Viewport.d.ts +52 -3
  34. package/lib/cjs/Viewport.d.ts.map +1 -1
  35. package/lib/cjs/Viewport.js +81 -30
  36. package/lib/cjs/Viewport.js.map +1 -1
  37. package/lib/cjs/extension/ExtensionRuntime.js +3 -0
  38. package/lib/cjs/extension/ExtensionRuntime.js.map +1 -1
  39. package/lib/cjs/render/GraphicBranch.d.ts +3 -0
  40. package/lib/cjs/render/GraphicBranch.d.ts.map +1 -1
  41. package/lib/cjs/render/GraphicBranch.js.map +1 -1
  42. package/lib/cjs/render/MockRender.d.ts.map +1 -1
  43. package/lib/cjs/render/MockRender.js +3 -0
  44. package/lib/cjs/render/MockRender.js.map +1 -1
  45. package/lib/cjs/render/RealityMeshParams.d.ts +3 -4
  46. package/lib/cjs/render/RealityMeshParams.d.ts.map +1 -1
  47. package/lib/cjs/render/RealityMeshParams.js +9 -5
  48. package/lib/cjs/render/RealityMeshParams.js.map +1 -1
  49. package/lib/cjs/render/VisibleFeature.d.ts +5 -5
  50. package/lib/cjs/render/VisibleFeature.js.map +1 -1
  51. package/lib/cjs/render/webgl/BackgroundMapDrape.js +3 -3
  52. package/lib/cjs/render/webgl/BackgroundMapDrape.js.map +1 -1
  53. package/lib/cjs/render/webgl/BranchState.d.ts +3 -0
  54. package/lib/cjs/render/webgl/BranchState.d.ts.map +1 -1
  55. package/lib/cjs/render/webgl/BranchState.js +5 -0
  56. package/lib/cjs/render/webgl/BranchState.js.map +1 -1
  57. package/lib/cjs/render/webgl/CachedGeometry.d.ts +32 -0
  58. package/lib/cjs/render/webgl/CachedGeometry.d.ts.map +1 -1
  59. package/lib/cjs/render/webgl/CachedGeometry.js +74 -1
  60. package/lib/cjs/render/webgl/CachedGeometry.js.map +1 -1
  61. package/lib/cjs/render/webgl/DrawCommand.d.ts.map +1 -1
  62. package/lib/cjs/render/webgl/DrawCommand.js +6 -4
  63. package/lib/cjs/render/webgl/DrawCommand.js.map +1 -1
  64. package/lib/cjs/render/webgl/EDL.d.ts +40 -0
  65. package/lib/cjs/render/webgl/EDL.d.ts.map +1 -0
  66. package/lib/cjs/render/webgl/EDL.js +264 -0
  67. package/lib/cjs/render/webgl/EDL.js.map +1 -0
  68. package/lib/cjs/render/webgl/EdgeSettings.js +2 -2
  69. package/lib/cjs/render/webgl/FrameBuffer.d.ts +4 -0
  70. package/lib/cjs/render/webgl/FrameBuffer.d.ts.map +1 -1
  71. package/lib/cjs/render/webgl/FrameBuffer.js +9 -0
  72. package/lib/cjs/render/webgl/FrameBuffer.js.map +1 -1
  73. package/lib/cjs/render/webgl/FrustumUniforms.d.ts +7 -0
  74. package/lib/cjs/render/webgl/FrustumUniforms.d.ts.map +1 -1
  75. package/lib/cjs/render/webgl/FrustumUniforms.js.map +1 -1
  76. package/lib/cjs/render/webgl/Layer.js +2 -2
  77. package/lib/cjs/render/webgl/LayerCommands.js +2 -2
  78. package/lib/cjs/render/webgl/PlanarClassifier.d.ts.map +1 -1
  79. package/lib/cjs/render/webgl/PlanarClassifier.js +9 -8
  80. package/lib/cjs/render/webgl/PlanarClassifier.js.map +1 -1
  81. package/lib/cjs/render/webgl/PlanarTextureProjection.js +1 -1
  82. package/lib/cjs/render/webgl/PlanarTextureProjection.js.map +1 -1
  83. package/lib/cjs/render/webgl/PointCloud.d.ts +2 -2
  84. package/lib/cjs/render/webgl/PointCloud.d.ts.map +1 -1
  85. package/lib/cjs/render/webgl/PointCloud.js +2 -0
  86. package/lib/cjs/render/webgl/PointCloud.js.map +1 -1
  87. package/lib/cjs/render/webgl/RealityMesh.d.ts +3 -1
  88. package/lib/cjs/render/webgl/RealityMesh.d.ts.map +1 -1
  89. package/lib/cjs/render/webgl/RealityMesh.js +8 -3
  90. package/lib/cjs/render/webgl/RealityMesh.js.map +1 -1
  91. package/lib/cjs/render/webgl/RealityModelUniforms.d.ts +9 -0
  92. package/lib/cjs/render/webgl/RealityModelUniforms.d.ts.map +1 -1
  93. package/lib/cjs/render/webgl/RealityModelUniforms.js +50 -0
  94. package/lib/cjs/render/webgl/RealityModelUniforms.js.map +1 -1
  95. package/lib/cjs/render/webgl/RenderCommands.d.ts +2 -1
  96. package/lib/cjs/render/webgl/RenderCommands.d.ts.map +1 -1
  97. package/lib/cjs/render/webgl/RenderCommands.js +46 -38
  98. package/lib/cjs/render/webgl/RenderCommands.js.map +1 -1
  99. package/lib/cjs/render/webgl/RenderFlags.d.ts +19 -17
  100. package/lib/cjs/render/webgl/RenderFlags.d.ts.map +1 -1
  101. package/lib/cjs/render/webgl/RenderFlags.js +8 -6
  102. package/lib/cjs/render/webgl/RenderFlags.js.map +1 -1
  103. package/lib/cjs/render/webgl/SceneCompositor.d.ts +6 -1
  104. package/lib/cjs/render/webgl/SceneCompositor.d.ts.map +1 -1
  105. package/lib/cjs/render/webgl/SceneCompositor.js +195 -76
  106. package/lib/cjs/render/webgl/SceneCompositor.js.map +1 -1
  107. package/lib/cjs/render/webgl/SolarShadowMap.js +3 -3
  108. package/lib/cjs/render/webgl/SolarShadowMap.js.map +1 -1
  109. package/lib/cjs/render/webgl/SurfaceGeometry.js +5 -5
  110. package/lib/cjs/render/webgl/Target.js +7 -7
  111. package/lib/cjs/render/webgl/Target.js.map +1 -1
  112. package/lib/cjs/render/webgl/Technique.d.ts.map +1 -1
  113. package/lib/cjs/render/webgl/Technique.js +18 -3
  114. package/lib/cjs/render/webgl/Technique.js.map +1 -1
  115. package/lib/cjs/render/webgl/TechniqueFlags.js +4 -4
  116. package/lib/cjs/render/webgl/TechniqueFlags.js.map +1 -1
  117. package/lib/cjs/render/webgl/TechniqueId.d.ts +6 -2
  118. package/lib/cjs/render/webgl/TechniqueId.d.ts.map +1 -1
  119. package/lib/cjs/render/webgl/TechniqueId.js.map +1 -1
  120. package/lib/cjs/render/webgl/UniformHandle.d.ts.map +1 -1
  121. package/lib/cjs/render/webgl/UniformHandle.js +1 -2
  122. package/lib/cjs/render/webgl/UniformHandle.js.map +1 -1
  123. package/lib/cjs/render/webgl/VisibleTileFeatures.js +5 -5
  124. package/lib/cjs/render/webgl/glsl/EDL.d.ts +14 -0
  125. package/lib/cjs/render/webgl/glsl/EDL.d.ts.map +1 -0
  126. package/lib/cjs/render/webgl/glsl/EDL.js +260 -0
  127. package/lib/cjs/render/webgl/glsl/EDL.js.map +1 -0
  128. package/lib/cjs/render/webgl/glsl/RenderPass.js +12 -12
  129. package/lib/cjs/render/webgl/glsl/RenderPass.js.map +1 -1
  130. package/lib/cjs/tile/BatchedTileIdMap.js +1 -1
  131. package/lib/cjs/tile/BatchedTileIdMap.js.map +1 -1
  132. package/lib/cjs/tile/DynamicIModelTile.js +1 -1
  133. package/lib/cjs/tile/DynamicIModelTile.js.map +1 -1
  134. package/lib/cjs/tile/GltfReader.js +1 -1
  135. package/lib/cjs/tile/GltfReader.js.map +1 -1
  136. package/lib/cjs/tile/IModelTile.js +1 -1
  137. package/lib/cjs/tile/IModelTile.js.map +1 -1
  138. package/lib/cjs/tile/ImdlReader.js +5 -5
  139. package/lib/cjs/tile/ImdlReader.js.map +1 -1
  140. package/lib/cjs/tile/OrbitGtTileTree.js +1 -1
  141. package/lib/cjs/tile/OrbitGtTileTree.js.map +1 -1
  142. package/lib/cjs/tile/RealityModelTileTree.d.ts.map +1 -1
  143. package/lib/cjs/tile/RealityModelTileTree.js +2 -1
  144. package/lib/cjs/tile/RealityModelTileTree.js.map +1 -1
  145. package/lib/cjs/tile/RealityTileLoader.js +2 -2
  146. package/lib/cjs/tile/RealityTileLoader.js.map +1 -1
  147. package/lib/cjs/tile/RealityTileTree.d.ts +5 -0
  148. package/lib/cjs/tile/RealityTileTree.d.ts.map +1 -1
  149. package/lib/cjs/tile/RealityTileTree.js +9 -4
  150. package/lib/cjs/tile/RealityTileTree.js.map +1 -1
  151. package/lib/cjs/tile/TileDrawArgs.js +1 -1
  152. package/lib/cjs/tile/TileDrawArgs.js.map +1 -1
  153. package/lib/cjs/tile/TileTreeReference.d.ts +3 -0
  154. package/lib/cjs/tile/TileTreeReference.d.ts.map +1 -1
  155. package/lib/cjs/tile/TileTreeReference.js +3 -0
  156. package/lib/cjs/tile/TileTreeReference.js.map +1 -1
  157. package/lib/cjs/tile/map/CesiumTerrainProvider.js +9 -9
  158. package/lib/cjs/tile/map/CesiumTerrainProvider.js.map +1 -1
  159. package/lib/cjs/tile/map/ImageryProviders/ArcGISImageryProvider.d.ts.map +1 -1
  160. package/lib/cjs/tile/map/ImageryProviders/ArcGISImageryProvider.js +1 -2
  161. package/lib/cjs/tile/map/ImageryProviders/ArcGISImageryProvider.js.map +1 -1
  162. package/lib/cjs/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js +2 -2
  163. package/lib/cjs/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js.map +1 -1
  164. package/lib/cjs/tile/map/ImageryProviders/WmtsMapLayerImageryProvider.js +1 -1
  165. package/lib/cjs/tile/map/ImageryProviders/WmtsMapLayerImageryProvider.js.map +1 -1
  166. package/lib/cjs/tile/map/ImageryTileTree.d.ts +26 -1
  167. package/lib/cjs/tile/map/ImageryTileTree.d.ts.map +1 -1
  168. package/lib/cjs/tile/map/ImageryTileTree.js +54 -4
  169. package/lib/cjs/tile/map/ImageryTileTree.js.map +1 -1
  170. package/lib/cjs/tile/map/MapLayerImageryProvider.d.ts +7 -3
  171. package/lib/cjs/tile/map/MapLayerImageryProvider.d.ts.map +1 -1
  172. package/lib/cjs/tile/map/MapLayerImageryProvider.js +12 -8
  173. package/lib/cjs/tile/map/MapLayerImageryProvider.js.map +1 -1
  174. package/lib/cjs/tile/map/MapTile.d.ts +5 -0
  175. package/lib/cjs/tile/map/MapTile.d.ts.map +1 -1
  176. package/lib/cjs/tile/map/MapTile.js +33 -13
  177. package/lib/cjs/tile/map/MapTile.js.map +1 -1
  178. package/lib/cjs/tile/map/MapTileTree.d.ts +42 -3
  179. package/lib/cjs/tile/map/MapTileTree.d.ts.map +1 -1
  180. package/lib/cjs/tile/map/MapTileTree.js +126 -9
  181. package/lib/cjs/tile/map/MapTileTree.js.map +1 -1
  182. package/lib/cjs/tile/map/MapTiledGraphicsProvider.d.ts +17 -0
  183. package/lib/cjs/tile/map/MapTiledGraphicsProvider.d.ts.map +1 -1
  184. package/lib/cjs/tile/map/MapTiledGraphicsProvider.js +26 -0
  185. package/lib/cjs/tile/map/MapTiledGraphicsProvider.js.map +1 -1
  186. package/lib/cjs/tile/map/WmtsCapabilities.d.ts +23 -68
  187. package/lib/cjs/tile/map/WmtsCapabilities.d.ts.map +1 -1
  188. package/lib/cjs/tile/map/WmtsCapabilities.js +269 -260
  189. package/lib/cjs/tile/map/WmtsCapabilities.js.map +1 -1
  190. package/lib/cjs/tools/ClipViewTool.js +2 -2
  191. package/lib/cjs/tools/ClipViewTool.js.map +1 -1
  192. package/lib/cjs/tools/MeasureTool.js +2 -2
  193. package/lib/cjs/tools/MeasureTool.js.map +1 -1
  194. package/lib/esm/AccuDraw.js +1 -1
  195. package/lib/esm/AccuDraw.js.map +1 -1
  196. package/lib/esm/BriefcaseConnection.d.ts +23 -3
  197. package/lib/esm/BriefcaseConnection.d.ts.map +1 -1
  198. package/lib/esm/BriefcaseConnection.js +11 -3
  199. package/lib/esm/BriefcaseConnection.js.map +1 -1
  200. package/lib/esm/IModelApp.d.ts +3 -3
  201. package/lib/esm/IModelApp.d.ts.map +1 -1
  202. package/lib/esm/IModelApp.js +2 -2
  203. package/lib/esm/IModelApp.js.map +1 -1
  204. package/lib/esm/NativeApp.d.ts +7 -0
  205. package/lib/esm/NativeApp.d.ts.map +1 -1
  206. package/lib/esm/NativeApp.js +9 -5
  207. package/lib/esm/NativeApp.js.map +1 -1
  208. package/lib/esm/NoRenderApp.d.ts.map +1 -1
  209. package/lib/esm/NoRenderApp.js +3 -0
  210. package/lib/esm/NoRenderApp.js.map +1 -1
  211. package/lib/esm/Tiles.d.ts +4 -0
  212. package/lib/esm/Tiles.d.ts.map +1 -1
  213. package/lib/esm/Tiles.js +11 -0
  214. package/lib/esm/Tiles.js.map +1 -1
  215. package/lib/esm/ViewContext.js +1 -1
  216. package/lib/esm/ViewContext.js.map +1 -1
  217. package/lib/esm/ViewManager.d.ts.map +1 -1
  218. package/lib/esm/ViewManager.js +2 -3
  219. package/lib/esm/ViewManager.js.map +1 -1
  220. package/lib/esm/ViewState.d.ts +4 -5
  221. package/lib/esm/ViewState.d.ts.map +1 -1
  222. package/lib/esm/ViewState.js +0 -1
  223. package/lib/esm/ViewState.js.map +1 -1
  224. package/lib/esm/Viewport.d.ts +52 -3
  225. package/lib/esm/Viewport.d.ts.map +1 -1
  226. package/lib/esm/Viewport.js +82 -31
  227. package/lib/esm/Viewport.js.map +1 -1
  228. package/lib/esm/extension/ExtensionRuntime.js +5 -2
  229. package/lib/esm/extension/ExtensionRuntime.js.map +1 -1
  230. package/lib/esm/render/GraphicBranch.d.ts +3 -0
  231. package/lib/esm/render/GraphicBranch.d.ts.map +1 -1
  232. package/lib/esm/render/GraphicBranch.js.map +1 -1
  233. package/lib/esm/render/MockRender.d.ts.map +1 -1
  234. package/lib/esm/render/MockRender.js +3 -0
  235. package/lib/esm/render/MockRender.js.map +1 -1
  236. package/lib/esm/render/RealityMeshParams.d.ts +3 -4
  237. package/lib/esm/render/RealityMeshParams.d.ts.map +1 -1
  238. package/lib/esm/render/RealityMeshParams.js +10 -6
  239. package/lib/esm/render/RealityMeshParams.js.map +1 -1
  240. package/lib/esm/render/VisibleFeature.d.ts +5 -5
  241. package/lib/esm/render/VisibleFeature.js.map +1 -1
  242. package/lib/esm/render/webgl/BackgroundMapDrape.js +3 -3
  243. package/lib/esm/render/webgl/BackgroundMapDrape.js.map +1 -1
  244. package/lib/esm/render/webgl/BranchState.d.ts +3 -0
  245. package/lib/esm/render/webgl/BranchState.d.ts.map +1 -1
  246. package/lib/esm/render/webgl/BranchState.js +5 -0
  247. package/lib/esm/render/webgl/BranchState.js.map +1 -1
  248. package/lib/esm/render/webgl/CachedGeometry.d.ts +32 -0
  249. package/lib/esm/render/webgl/CachedGeometry.d.ts.map +1 -1
  250. package/lib/esm/render/webgl/CachedGeometry.js +69 -0
  251. package/lib/esm/render/webgl/CachedGeometry.js.map +1 -1
  252. package/lib/esm/render/webgl/DrawCommand.d.ts.map +1 -1
  253. package/lib/esm/render/webgl/DrawCommand.js +6 -4
  254. package/lib/esm/render/webgl/DrawCommand.js.map +1 -1
  255. package/lib/esm/render/webgl/EDL.d.ts +40 -0
  256. package/lib/esm/render/webgl/EDL.d.ts.map +1 -0
  257. package/lib/esm/render/webgl/EDL.js +260 -0
  258. package/lib/esm/render/webgl/EDL.js.map +1 -0
  259. package/lib/esm/render/webgl/EdgeSettings.js +2 -2
  260. package/lib/esm/render/webgl/FrameBuffer.d.ts +4 -0
  261. package/lib/esm/render/webgl/FrameBuffer.d.ts.map +1 -1
  262. package/lib/esm/render/webgl/FrameBuffer.js +9 -0
  263. package/lib/esm/render/webgl/FrameBuffer.js.map +1 -1
  264. package/lib/esm/render/webgl/FrustumUniforms.d.ts +7 -0
  265. package/lib/esm/render/webgl/FrustumUniforms.d.ts.map +1 -1
  266. package/lib/esm/render/webgl/FrustumUniforms.js.map +1 -1
  267. package/lib/esm/render/webgl/Layer.js +2 -2
  268. package/lib/esm/render/webgl/LayerCommands.js +2 -2
  269. package/lib/esm/render/webgl/PlanarClassifier.d.ts.map +1 -1
  270. package/lib/esm/render/webgl/PlanarClassifier.js +9 -8
  271. package/lib/esm/render/webgl/PlanarClassifier.js.map +1 -1
  272. package/lib/esm/render/webgl/PlanarTextureProjection.js +1 -1
  273. package/lib/esm/render/webgl/PlanarTextureProjection.js.map +1 -1
  274. package/lib/esm/render/webgl/PointCloud.d.ts +2 -2
  275. package/lib/esm/render/webgl/PointCloud.d.ts.map +1 -1
  276. package/lib/esm/render/webgl/PointCloud.js +2 -0
  277. package/lib/esm/render/webgl/PointCloud.js.map +1 -1
  278. package/lib/esm/render/webgl/RealityMesh.d.ts +3 -1
  279. package/lib/esm/render/webgl/RealityMesh.d.ts.map +1 -1
  280. package/lib/esm/render/webgl/RealityMesh.js +8 -3
  281. package/lib/esm/render/webgl/RealityMesh.js.map +1 -1
  282. package/lib/esm/render/webgl/RealityModelUniforms.d.ts +9 -0
  283. package/lib/esm/render/webgl/RealityModelUniforms.d.ts.map +1 -1
  284. package/lib/esm/render/webgl/RealityModelUniforms.js +50 -0
  285. package/lib/esm/render/webgl/RealityModelUniforms.js.map +1 -1
  286. package/lib/esm/render/webgl/RenderCommands.d.ts +2 -1
  287. package/lib/esm/render/webgl/RenderCommands.d.ts.map +1 -1
  288. package/lib/esm/render/webgl/RenderCommands.js +46 -38
  289. package/lib/esm/render/webgl/RenderCommands.js.map +1 -1
  290. package/lib/esm/render/webgl/RenderFlags.d.ts +19 -17
  291. package/lib/esm/render/webgl/RenderFlags.d.ts.map +1 -1
  292. package/lib/esm/render/webgl/RenderFlags.js +8 -6
  293. package/lib/esm/render/webgl/RenderFlags.js.map +1 -1
  294. package/lib/esm/render/webgl/SceneCompositor.d.ts +6 -1
  295. package/lib/esm/render/webgl/SceneCompositor.d.ts.map +1 -1
  296. package/lib/esm/render/webgl/SceneCompositor.js +194 -77
  297. package/lib/esm/render/webgl/SceneCompositor.js.map +1 -1
  298. package/lib/esm/render/webgl/SolarShadowMap.js +3 -3
  299. package/lib/esm/render/webgl/SolarShadowMap.js.map +1 -1
  300. package/lib/esm/render/webgl/SurfaceGeometry.js +5 -5
  301. package/lib/esm/render/webgl/Target.js +7 -7
  302. package/lib/esm/render/webgl/Target.js.map +1 -1
  303. package/lib/esm/render/webgl/Technique.d.ts.map +1 -1
  304. package/lib/esm/render/webgl/Technique.js +18 -3
  305. package/lib/esm/render/webgl/Technique.js.map +1 -1
  306. package/lib/esm/render/webgl/TechniqueFlags.js +4 -4
  307. package/lib/esm/render/webgl/TechniqueFlags.js.map +1 -1
  308. package/lib/esm/render/webgl/TechniqueId.d.ts +6 -2
  309. package/lib/esm/render/webgl/TechniqueId.d.ts.map +1 -1
  310. package/lib/esm/render/webgl/TechniqueId.js.map +1 -1
  311. package/lib/esm/render/webgl/UniformHandle.d.ts.map +1 -1
  312. package/lib/esm/render/webgl/UniformHandle.js +1 -2
  313. package/lib/esm/render/webgl/UniformHandle.js.map +1 -1
  314. package/lib/esm/render/webgl/VisibleTileFeatures.js +5 -5
  315. package/lib/esm/render/webgl/glsl/EDL.d.ts +14 -0
  316. package/lib/esm/render/webgl/glsl/EDL.d.ts.map +1 -0
  317. package/lib/esm/render/webgl/glsl/EDL.js +253 -0
  318. package/lib/esm/render/webgl/glsl/EDL.js.map +1 -0
  319. package/lib/esm/render/webgl/glsl/RenderPass.js +12 -12
  320. package/lib/esm/render/webgl/glsl/RenderPass.js.map +1 -1
  321. package/lib/esm/tile/BatchedTileIdMap.js +1 -1
  322. package/lib/esm/tile/BatchedTileIdMap.js.map +1 -1
  323. package/lib/esm/tile/DynamicIModelTile.js +1 -1
  324. package/lib/esm/tile/DynamicIModelTile.js.map +1 -1
  325. package/lib/esm/tile/GltfReader.js +1 -1
  326. package/lib/esm/tile/GltfReader.js.map +1 -1
  327. package/lib/esm/tile/IModelTile.js +1 -1
  328. package/lib/esm/tile/IModelTile.js.map +1 -1
  329. package/lib/esm/tile/ImdlReader.js +5 -5
  330. package/lib/esm/tile/ImdlReader.js.map +1 -1
  331. package/lib/esm/tile/OrbitGtTileTree.js +1 -1
  332. package/lib/esm/tile/OrbitGtTileTree.js.map +1 -1
  333. package/lib/esm/tile/RealityModelTileTree.d.ts.map +1 -1
  334. package/lib/esm/tile/RealityModelTileTree.js +2 -1
  335. package/lib/esm/tile/RealityModelTileTree.js.map +1 -1
  336. package/lib/esm/tile/RealityTileLoader.js +2 -2
  337. package/lib/esm/tile/RealityTileLoader.js.map +1 -1
  338. package/lib/esm/tile/RealityTileTree.d.ts +5 -0
  339. package/lib/esm/tile/RealityTileTree.d.ts.map +1 -1
  340. package/lib/esm/tile/RealityTileTree.js +9 -4
  341. package/lib/esm/tile/RealityTileTree.js.map +1 -1
  342. package/lib/esm/tile/TileDrawArgs.js +1 -1
  343. package/lib/esm/tile/TileDrawArgs.js.map +1 -1
  344. package/lib/esm/tile/TileTreeReference.d.ts +3 -0
  345. package/lib/esm/tile/TileTreeReference.d.ts.map +1 -1
  346. package/lib/esm/tile/TileTreeReference.js +3 -0
  347. package/lib/esm/tile/TileTreeReference.js.map +1 -1
  348. package/lib/esm/tile/map/CesiumTerrainProvider.js +9 -9
  349. package/lib/esm/tile/map/CesiumTerrainProvider.js.map +1 -1
  350. package/lib/esm/tile/map/ImageryProviders/ArcGISImageryProvider.d.ts.map +1 -1
  351. package/lib/esm/tile/map/ImageryProviders/ArcGISImageryProvider.js +1 -2
  352. package/lib/esm/tile/map/ImageryProviders/ArcGISImageryProvider.js.map +1 -1
  353. package/lib/esm/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js +2 -2
  354. package/lib/esm/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js.map +1 -1
  355. package/lib/esm/tile/map/ImageryProviders/WmtsMapLayerImageryProvider.js +2 -2
  356. package/lib/esm/tile/map/ImageryProviders/WmtsMapLayerImageryProvider.js.map +1 -1
  357. package/lib/esm/tile/map/ImageryTileTree.d.ts +26 -1
  358. package/lib/esm/tile/map/ImageryTileTree.d.ts.map +1 -1
  359. package/lib/esm/tile/map/ImageryTileTree.js +53 -4
  360. package/lib/esm/tile/map/ImageryTileTree.js.map +1 -1
  361. package/lib/esm/tile/map/MapLayerImageryProvider.d.ts +7 -3
  362. package/lib/esm/tile/map/MapLayerImageryProvider.d.ts.map +1 -1
  363. package/lib/esm/tile/map/MapLayerImageryProvider.js +12 -8
  364. package/lib/esm/tile/map/MapLayerImageryProvider.js.map +1 -1
  365. package/lib/esm/tile/map/MapTile.d.ts +5 -0
  366. package/lib/esm/tile/map/MapTile.d.ts.map +1 -1
  367. package/lib/esm/tile/map/MapTile.js +33 -13
  368. package/lib/esm/tile/map/MapTile.js.map +1 -1
  369. package/lib/esm/tile/map/MapTileTree.d.ts +42 -3
  370. package/lib/esm/tile/map/MapTileTree.d.ts.map +1 -1
  371. package/lib/esm/tile/map/MapTileTree.js +126 -9
  372. package/lib/esm/tile/map/MapTileTree.js.map +1 -1
  373. package/lib/esm/tile/map/MapTiledGraphicsProvider.d.ts +17 -0
  374. package/lib/esm/tile/map/MapTiledGraphicsProvider.d.ts.map +1 -1
  375. package/lib/esm/tile/map/MapTiledGraphicsProvider.js +26 -0
  376. package/lib/esm/tile/map/MapTiledGraphicsProvider.js.map +1 -1
  377. package/lib/esm/tile/map/WmtsCapabilities.d.ts +23 -68
  378. package/lib/esm/tile/map/WmtsCapabilities.d.ts.map +1 -1
  379. package/lib/esm/tile/map/WmtsCapabilities.js +268 -259
  380. package/lib/esm/tile/map/WmtsCapabilities.js.map +1 -1
  381. package/lib/esm/tools/ClipViewTool.js +2 -2
  382. package/lib/esm/tools/ClipViewTool.js.map +1 -1
  383. package/lib/esm/tools/MeasureTool.js +2 -2
  384. package/lib/esm/tools/MeasureTool.js.map +1 -1
  385. package/package.json +22 -23
@@ -86,11 +86,15 @@ class NativeApp {
86
86
  }
87
87
  static async requestDownloadBriefcase(iTwinId, iModelId, downloadOptions, asOf = core_common_1.IModelVersion.latest(), progress) {
88
88
  var _b;
89
+ const shouldReportProgress = !!progress || !!downloadOptions.progressCallback;
89
90
  let stopProgressEvents = () => { };
90
- if (progress !== undefined) {
91
- stopProgressEvents = IpcApp_1.IpcApp.addListener(`nativeApp.progress-${iModelId}`, (_evt, data) => {
92
- progress(data);
93
- });
91
+ if (shouldReportProgress) {
92
+ const handleProgress = (_evt, data) => {
93
+ var _b;
94
+ progress === null || progress === void 0 ? void 0 : progress(data);
95
+ (_b = downloadOptions.progressCallback) === null || _b === void 0 ? void 0 : _b.call(downloadOptions, data);
96
+ };
97
+ stopProgressEvents = IpcApp_1.IpcApp.addListener(`nativeApp.progress-${iModelId}`, handleProgress);
94
98
  }
95
99
  const briefcaseId = (undefined !== downloadOptions.briefcaseId) ? downloadOptions.briefcaseId :
96
100
  (downloadOptions.syncMode === core_common_1.SyncMode.PullOnly ? 0 : await this.nativeAppIpc.acquireNewBriefcaseId(iModelId));
@@ -98,7 +102,7 @@ class NativeApp {
98
102
  const requestProps = { iModelId, briefcaseId, iTwinId, asOf: asOf.toJSON(), fileName };
99
103
  const doDownload = async () => {
100
104
  try {
101
- await this.nativeAppIpc.downloadBriefcase(requestProps, progress !== undefined, downloadOptions.progressInterval);
105
+ await this.nativeAppIpc.downloadBriefcase(requestProps, shouldReportProgress, downloadOptions.progressInterval);
102
106
  }
103
107
  finally {
104
108
  stopProgressEvents();
@@ -1 +1 @@
1
- {"version":3,"file":"NativeApp.js","sourceRoot":"","sources":["../../src/NativeApp.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 NativeApp\r\n */\r\n\r\nimport { AsyncMethodsOf, BeEvent, GuidString, Logger, PromiseReturnType } from \"@itwin/core-bentley\";\r\nimport {\r\n BriefcaseDownloader, BriefcaseProps, IModelVersion, InternetConnectivityStatus, IpcSocketFrontend, LocalBriefcaseProps,\r\n nativeAppChannel, NativeAppFunctions, NativeAppNotifications, nativeAppNotify, OverriddenBy,\r\n RemoveFunction, RequestNewBriefcaseProps, StorageValue, SyncMode,\r\n} from \"@itwin/core-common\";\r\nimport { ProgressCallback, RequestGlobalOptions } from \"./request/Request\";\r\nimport { FrontendLoggerCategory } from \"./FrontendLoggerCategory\";\r\nimport { IpcApp, IpcAppOptions, NotificationHandler } from \"./IpcApp\";\r\nimport { NativeAppLogger } from \"./NativeAppLogger\";\r\n\r\n/** Properties for specifying the BriefcaseId for downloading. May either specify a BriefcaseId directly (preferable) or, for\r\n * backwards compatibility, a [SyncMode]($common). If [SyncMode.PullAndPush]($common) is supplied, a new briefcaseId will be acquired.\r\n * @public\r\n */\r\nexport type DownloadBriefcaseId =\r\n { syncMode?: SyncMode, briefcaseId?: never } |\r\n { briefcaseId: number, syncMode?: never };\r\n\r\n/**\r\n* Options to download a briefcase\r\n* @public\r\n*/\r\nexport type DownloadBriefcaseOptions = DownloadBriefcaseId & {\r\n /** the full path for the briefcase file */\r\n fileName?: string;\r\n /** interval for calling progress function, in milliseconds */\r\n progressInterval?: number;\r\n};\r\n\r\n/** NativeApp notifications from backend */\r\nclass NativeAppNotifyHandler extends NotificationHandler implements NativeAppNotifications {\r\n public get channelName() { return nativeAppNotify; }\r\n public notifyInternetConnectivityChanged(status: InternetConnectivityStatus) {\r\n Logger.logInfo(FrontendLoggerCategory.NativeApp, \"Internet connectivity changed\");\r\n NativeApp.onInternetConnectivityChanged.raiseEvent(status);\r\n }\r\n}\r\n\r\n/**\r\n * Options for [[NativeApp.startup]]\r\n * @public\r\n */\r\nexport interface NativeAppOpts extends IpcAppOptions {\r\n nativeApp?: {};\r\n}\r\n\r\n/**\r\n * The frontend of a native application\r\n * @see [Native Applications]($docs/learning/NativeApps.md)\r\n * @public\r\n */\r\nexport class NativeApp {\r\n private static _removeAppNotify?: RemoveFunction;\r\n\r\n /** @deprecated use nativeAppIpc */\r\n public static async callNativeHost<T extends AsyncMethodsOf<NativeAppFunctions>>(methodName: T, ...args: Parameters<NativeAppFunctions[T]>) {\r\n return IpcApp.callIpcChannel(nativeAppChannel, methodName, ...args) as PromiseReturnType<NativeAppFunctions[T]>;\r\n }\r\n /** A Proxy to call one of the [NativeAppFunctions]($common) functions via IPC. */\r\n public static nativeAppIpc = IpcApp.makeIpcProxy<NativeAppFunctions>(nativeAppChannel);\r\n\r\n private static _storages = new Map<string, Storage>();\r\n private static _onOnline = async () => {\r\n await NativeApp.setConnectivity(OverriddenBy.Browser, InternetConnectivityStatus.Online);\r\n };\r\n private static _onOffline = async () => {\r\n await NativeApp.setConnectivity(OverriddenBy.Browser, InternetConnectivityStatus.Offline);\r\n };\r\n private static async setConnectivity(by: OverriddenBy, status: InternetConnectivityStatus) {\r\n RequestGlobalOptions.online = (status === InternetConnectivityStatus.Online);\r\n await this.nativeAppIpc.overrideInternetConnectivity(by, status);\r\n }\r\n private static hookBrowserConnectivityEvents() {\r\n if (typeof window === \"object\" && window.ononline && window.onoffline) {\r\n window.addEventListener(\"online\", this._onOnline);\r\n window.addEventListener(\"offline\", this._onOffline);\r\n }\r\n }\r\n private static unhookBrowserConnectivityEvents() {\r\n if (typeof window === \"object\" && window.ononline && window.onoffline) {\r\n window.removeEventListener(\"online\", this._onOnline);\r\n window.removeEventListener(\"offline\", this._onOffline);\r\n }\r\n }\r\n /** event called when internet connectivity changes, if known */\r\n public static onInternetConnectivityChanged = new BeEvent<(status: InternetConnectivityStatus) => void>();\r\n\r\n /** determine whether the app currently has internet connectivity, if known */\r\n public static async checkInternetConnectivity(): Promise<InternetConnectivityStatus> {\r\n return this.nativeAppIpc.checkInternetConnectivity();\r\n }\r\n /** @internal */\r\n public static async overrideInternetConnectivity(status: InternetConnectivityStatus): Promise<void> {\r\n return this.nativeAppIpc.overrideInternetConnectivity(OverriddenBy.User, status);\r\n }\r\n private static _isValid = false;\r\n public static get isValid(): boolean { return this._isValid; }\r\n\r\n /**\r\n * This is called by either ElectronApp.startup or MobileApp.startup - it should not be called directly\r\n * @internal\r\n */\r\n public static async startup(ipc: IpcSocketFrontend, opts?: NativeAppOpts) {\r\n await IpcApp.startup(ipc, opts);\r\n if (this._isValid)\r\n return;\r\n this._isValid = true;\r\n\r\n this._removeAppNotify = NativeAppNotifyHandler.register(); // receives notifications from backend\r\n NativeApp.hookBrowserConnectivityEvents();\r\n\r\n // initialize current online state.\r\n if (window.navigator.onLine) {\r\n RequestGlobalOptions.online = window.navigator.onLine;\r\n await this.setConnectivity(OverriddenBy.Browser, window.navigator.onLine ? InternetConnectivityStatus.Online : InternetConnectivityStatus.Offline);\r\n }\r\n }\r\n\r\n /** @internal */\r\n public static async shutdown() {\r\n this._removeAppNotify?.();\r\n NativeApp.unhookBrowserConnectivityEvents();\r\n await NativeAppLogger.flush();\r\n await IpcApp.shutdown();\r\n this._isValid = false;\r\n }\r\n\r\n public static async requestDownloadBriefcase(iTwinId: string, iModelId: string, downloadOptions: DownloadBriefcaseOptions,\r\n asOf: IModelVersion = IModelVersion.latest(), progress?: ProgressCallback): Promise<BriefcaseDownloader> {\r\n\r\n let stopProgressEvents = () => { };\r\n if (progress !== undefined) {\r\n stopProgressEvents = IpcApp.addListener(`nativeApp.progress-${iModelId}`, (_evt: Event, data: { loaded: number, total: number }) => {\r\n progress(data);\r\n });\r\n }\r\n\r\n const briefcaseId = (undefined !== downloadOptions.briefcaseId) ? downloadOptions.briefcaseId :\r\n (downloadOptions.syncMode === SyncMode.PullOnly ? 0 : await this.nativeAppIpc.acquireNewBriefcaseId(iModelId));\r\n\r\n const fileName = downloadOptions.fileName ?? await this.getBriefcaseFileName({ briefcaseId, iModelId });\r\n const requestProps: RequestNewBriefcaseProps = { iModelId, briefcaseId, iTwinId, asOf: asOf.toJSON(), fileName };\r\n\r\n const doDownload = async (): Promise<void> => {\r\n try {\r\n await this.nativeAppIpc.downloadBriefcase(requestProps, progress !== undefined, downloadOptions.progressInterval);\r\n } finally {\r\n stopProgressEvents();\r\n }\r\n };\r\n\r\n const requestCancel = async (): Promise<boolean> => {\r\n const status = await this.nativeAppIpc.requestCancelDownloadBriefcase(fileName);\r\n if (status)\r\n stopProgressEvents();\r\n return status;\r\n };\r\n\r\n return { briefcaseId, fileName, downloadPromise: doDownload(), requestCancel };\r\n }\r\n\r\n /** Get the full path filename for a briefcase within the briefcase cache */\r\n public static async getBriefcaseFileName(props: BriefcaseProps): Promise<string> {\r\n return this.nativeAppIpc.getBriefcaseFileName(props);\r\n }\r\n\r\n /** Delete an existing briefcase\r\n * @param fileName the briefcase fileName\r\n */\r\n public static async deleteBriefcase(fileName: string): Promise<void> {\r\n await this.nativeAppIpc.deleteBriefcaseFiles(fileName);\r\n }\r\n\r\n /** Get a list of all briefcase files held in the local briefcase cache directory */\r\n public static async getCachedBriefcases(iModelId?: GuidString): Promise<LocalBriefcaseProps[]> {\r\n return this.nativeAppIpc.getCachedBriefcases(iModelId);\r\n }\r\n\r\n /**\r\n * Open a [[Storage]]. Creates a new Storage with that name if it does not already exist.\r\n * @param name Should be a local filename without an extension.\r\n * @returns a Promise for the [[Storage]].\r\n */\r\n public static async openStorage(name: string): Promise<Storage> {\r\n if (this._storages.has(name))\r\n return this._storages.get(name)!;\r\n\r\n const storage = new Storage(await this.nativeAppIpc.storageMgrOpen(name));\r\n this._storages.set(storage.id, storage);\r\n return storage;\r\n }\r\n\r\n /**\r\n * Close a Storage and optionally delete it.\r\n * @param storage normally not call directly instead use Storage.close()\r\n * @param deleteStorage if true, delete the storage from disk after closing it.\r\n */\r\n public static async closeStorage(storage: Storage, deleteStorage: boolean = false): Promise<void> {\r\n if (!this._storages.has(storage.id))\r\n throw new Error(`Storage [Id=${storage.id}] not open`);\r\n\r\n await this.nativeAppIpc.storageMgrClose(storage.id, deleteStorage);\r\n this._storages.delete(storage.id);\r\n }\r\n\r\n /** Get the list of existing Storages on the local disk. */\r\n public static async getStorageNames(): Promise<string[]> {\r\n return NativeApp.nativeAppIpc.storageMgrNames();\r\n }\r\n}\r\n\r\n/**\r\n * A local disk-based cache for key value pairs for NativeApps.\r\n * @note This should be used only for local caching, since its not guaranteed to exist permanently.\r\n * @public\r\n */\r\nexport class Storage {\r\n constructor(public readonly id: string) { }\r\n\r\n /** get the type of a value for a key, or undefined if not present. */\r\n public async getValueType(key: string): Promise<\"number\" | \"string\" | \"boolean\" | \"Uint8Array\" | \"null\" | undefined> {\r\n return NativeApp.nativeAppIpc.storageGetValueType(this.id, key);\r\n }\r\n\r\n /** Get the value for a key */\r\n public async getData(key: string): Promise<StorageValue> {\r\n return NativeApp.nativeAppIpc.storageGet(this.id, key);\r\n }\r\n\r\n /** Set value for a key */\r\n public async setData(key: string, value: StorageValue): Promise<void> {\r\n return NativeApp.nativeAppIpc.storageSet(this.id, key, value);\r\n }\r\n\r\n /**\r\n * Return an array of all keys in this Storage.\r\n * @note This can be expensive, depending on the number of keys present.\r\n */\r\n public async getKeys(): Promise<string[]> {\r\n return NativeApp.nativeAppIpc.storageKeys(this.id);\r\n }\r\n\r\n /** Remove a key and its data. */\r\n public async removeData(key: string): Promise<void> {\r\n return NativeApp.nativeAppIpc.storageRemove(this.id, key);\r\n }\r\n\r\n /** Remove all keys and their data. */\r\n public async removeAll(): Promise<void> {\r\n return NativeApp.nativeAppIpc.storageRemoveAll(this.id);\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"NativeApp.js","sourceRoot":"","sources":["../../src/NativeApp.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 NativeApp\r\n */\r\n\r\nimport { AsyncMethodsOf, BeEvent, GuidString, Logger, PromiseReturnType } from \"@itwin/core-bentley\";\r\nimport {\r\n BriefcaseDownloader, BriefcaseProps, IModelVersion, InternetConnectivityStatus, IpcSocketFrontend, LocalBriefcaseProps,\r\n nativeAppChannel, NativeAppFunctions, NativeAppNotifications, nativeAppNotify, OverriddenBy,\r\n RemoveFunction, RequestNewBriefcaseProps, StorageValue, SyncMode,\r\n} from \"@itwin/core-common\";\r\nimport { ProgressCallback, RequestGlobalOptions } from \"./request/Request\";\r\nimport { FrontendLoggerCategory } from \"./FrontendLoggerCategory\";\r\nimport { IpcApp, IpcAppOptions, NotificationHandler } from \"./IpcApp\";\r\nimport { NativeAppLogger } from \"./NativeAppLogger\";\r\nimport { OnDownloadProgress } from \"./BriefcaseConnection\";\r\n\r\n/** Properties for specifying the BriefcaseId for downloading. May either specify a BriefcaseId directly (preferable) or, for\r\n * backwards compatibility, a [SyncMode]($common). If [SyncMode.PullAndPush]($common) is supplied, a new briefcaseId will be acquired.\r\n * @public\r\n */\r\nexport type DownloadBriefcaseId =\r\n { syncMode?: SyncMode, briefcaseId?: never } |\r\n { briefcaseId: number, syncMode?: never };\r\n\r\n/**\r\n* Options to download a briefcase\r\n* @public\r\n*/\r\nexport type DownloadBriefcaseOptions = DownloadBriefcaseId & {\r\n /** the full path for the briefcase file */\r\n fileName?: string;\r\n /** Function called regularly to report progress of download. */\r\n progressCallback?: OnDownloadProgress;\r\n /** interval for calling progress function, in milliseconds */\r\n progressInterval?: number;\r\n};\r\n\r\n/** NativeApp notifications from backend */\r\nclass NativeAppNotifyHandler extends NotificationHandler implements NativeAppNotifications {\r\n public get channelName() { return nativeAppNotify; }\r\n public notifyInternetConnectivityChanged(status: InternetConnectivityStatus) {\r\n Logger.logInfo(FrontendLoggerCategory.NativeApp, \"Internet connectivity changed\");\r\n NativeApp.onInternetConnectivityChanged.raiseEvent(status);\r\n }\r\n}\r\n\r\n/**\r\n * Options for [[NativeApp.startup]]\r\n * @public\r\n */\r\nexport interface NativeAppOpts extends IpcAppOptions {\r\n nativeApp?: {};\r\n}\r\n\r\n/**\r\n * The frontend of a native application\r\n * @see [Native Applications]($docs/learning/NativeApps.md)\r\n * @public\r\n */\r\nexport class NativeApp {\r\n private static _removeAppNotify?: RemoveFunction;\r\n\r\n /** @deprecated use nativeAppIpc */\r\n public static async callNativeHost<T extends AsyncMethodsOf<NativeAppFunctions>>(methodName: T, ...args: Parameters<NativeAppFunctions[T]>) {\r\n return IpcApp.callIpcChannel(nativeAppChannel, methodName, ...args) as PromiseReturnType<NativeAppFunctions[T]>;\r\n }\r\n /** A Proxy to call one of the [NativeAppFunctions]($common) functions via IPC. */\r\n public static nativeAppIpc = IpcApp.makeIpcProxy<NativeAppFunctions>(nativeAppChannel);\r\n\r\n private static _storages = new Map<string, Storage>();\r\n private static _onOnline = async () => {\r\n await NativeApp.setConnectivity(OverriddenBy.Browser, InternetConnectivityStatus.Online);\r\n };\r\n private static _onOffline = async () => {\r\n await NativeApp.setConnectivity(OverriddenBy.Browser, InternetConnectivityStatus.Offline);\r\n };\r\n private static async setConnectivity(by: OverriddenBy, status: InternetConnectivityStatus) {\r\n RequestGlobalOptions.online = (status === InternetConnectivityStatus.Online);\r\n await this.nativeAppIpc.overrideInternetConnectivity(by, status);\r\n }\r\n private static hookBrowserConnectivityEvents() {\r\n if (typeof window === \"object\" && window.ononline && window.onoffline) {\r\n window.addEventListener(\"online\", this._onOnline);\r\n window.addEventListener(\"offline\", this._onOffline);\r\n }\r\n }\r\n private static unhookBrowserConnectivityEvents() {\r\n if (typeof window === \"object\" && window.ononline && window.onoffline) {\r\n window.removeEventListener(\"online\", this._onOnline);\r\n window.removeEventListener(\"offline\", this._onOffline);\r\n }\r\n }\r\n /** event called when internet connectivity changes, if known */\r\n public static onInternetConnectivityChanged = new BeEvent<(status: InternetConnectivityStatus) => void>();\r\n\r\n /** determine whether the app currently has internet connectivity, if known */\r\n public static async checkInternetConnectivity(): Promise<InternetConnectivityStatus> {\r\n return this.nativeAppIpc.checkInternetConnectivity();\r\n }\r\n /** @internal */\r\n public static async overrideInternetConnectivity(status: InternetConnectivityStatus): Promise<void> {\r\n return this.nativeAppIpc.overrideInternetConnectivity(OverriddenBy.User, status);\r\n }\r\n private static _isValid = false;\r\n public static get isValid(): boolean { return this._isValid; }\r\n\r\n /**\r\n * This is called by either ElectronApp.startup or MobileApp.startup - it should not be called directly\r\n * @internal\r\n */\r\n public static async startup(ipc: IpcSocketFrontend, opts?: NativeAppOpts) {\r\n await IpcApp.startup(ipc, opts);\r\n if (this._isValid)\r\n return;\r\n this._isValid = true;\r\n\r\n this._removeAppNotify = NativeAppNotifyHandler.register(); // receives notifications from backend\r\n NativeApp.hookBrowserConnectivityEvents();\r\n\r\n // initialize current online state.\r\n if (window.navigator.onLine) {\r\n RequestGlobalOptions.online = window.navigator.onLine;\r\n await this.setConnectivity(OverriddenBy.Browser, window.navigator.onLine ? InternetConnectivityStatus.Online : InternetConnectivityStatus.Offline);\r\n }\r\n }\r\n\r\n /** @internal */\r\n public static async shutdown() {\r\n this._removeAppNotify?.();\r\n NativeApp.unhookBrowserConnectivityEvents();\r\n await NativeAppLogger.flush();\r\n await IpcApp.shutdown();\r\n this._isValid = false;\r\n }\r\n\r\n public static async requestDownloadBriefcase(iTwinId: string, iModelId: string, downloadOptions: DownloadBriefcaseOptions,\r\n asOf?: IModelVersion): Promise<BriefcaseDownloader>;\r\n\r\n /**\r\n * @deprecated in 3.6. [[progress]] argument is now deprecated, use [[DownloadBriefcaseOptions.progressCallback]] instead.\r\n */\r\n public static async requestDownloadBriefcase(iTwinId: string, iModelId: string, downloadOptions: DownloadBriefcaseOptions,\r\n // eslint-disable-next-line @typescript-eslint/unified-signatures\r\n asOf?: IModelVersion, progress?: ProgressCallback): Promise<BriefcaseDownloader>;\r\n\r\n public static async requestDownloadBriefcase(\r\n iTwinId: string,\r\n iModelId: string,\r\n downloadOptions: DownloadBriefcaseOptions,\r\n asOf: IModelVersion = IModelVersion.latest(),\r\n progress?: ProgressCallback\r\n ): Promise<BriefcaseDownloader> {\r\n const shouldReportProgress = !!progress || !!downloadOptions.progressCallback;\r\n\r\n let stopProgressEvents = () => { };\r\n if (shouldReportProgress) {\r\n const handleProgress = (_evt: Event, data: { loaded: number, total: number }) => {\r\n progress?.(data);\r\n downloadOptions.progressCallback?.(data);\r\n };\r\n\r\n stopProgressEvents = IpcApp.addListener(`nativeApp.progress-${iModelId}`, handleProgress);\r\n }\r\n\r\n const briefcaseId = (undefined !== downloadOptions.briefcaseId) ? downloadOptions.briefcaseId :\r\n (downloadOptions.syncMode === SyncMode.PullOnly ? 0 : await this.nativeAppIpc.acquireNewBriefcaseId(iModelId));\r\n\r\n const fileName = downloadOptions.fileName ?? await this.getBriefcaseFileName({ briefcaseId, iModelId });\r\n const requestProps: RequestNewBriefcaseProps = { iModelId, briefcaseId, iTwinId, asOf: asOf.toJSON(), fileName };\r\n\r\n const doDownload = async (): Promise<void> => {\r\n try {\r\n await this.nativeAppIpc.downloadBriefcase(requestProps, shouldReportProgress, downloadOptions.progressInterval);\r\n } finally {\r\n stopProgressEvents();\r\n }\r\n };\r\n\r\n const requestCancel = async (): Promise<boolean> => {\r\n const status = await this.nativeAppIpc.requestCancelDownloadBriefcase(fileName);\r\n if (status)\r\n stopProgressEvents();\r\n return status;\r\n };\r\n\r\n return { briefcaseId, fileName, downloadPromise: doDownload(), requestCancel };\r\n }\r\n\r\n /** Get the full path filename for a briefcase within the briefcase cache */\r\n public static async getBriefcaseFileName(props: BriefcaseProps): Promise<string> {\r\n return this.nativeAppIpc.getBriefcaseFileName(props);\r\n }\r\n\r\n /** Delete an existing briefcase\r\n * @param fileName the briefcase fileName\r\n */\r\n public static async deleteBriefcase(fileName: string): Promise<void> {\r\n await this.nativeAppIpc.deleteBriefcaseFiles(fileName);\r\n }\r\n\r\n /** Get a list of all briefcase files held in the local briefcase cache directory */\r\n public static async getCachedBriefcases(iModelId?: GuidString): Promise<LocalBriefcaseProps[]> {\r\n return this.nativeAppIpc.getCachedBriefcases(iModelId);\r\n }\r\n\r\n /**\r\n * Open a [[Storage]]. Creates a new Storage with that name if it does not already exist.\r\n * @param name Should be a local filename without an extension.\r\n * @returns a Promise for the [[Storage]].\r\n */\r\n public static async openStorage(name: string): Promise<Storage> {\r\n if (this._storages.has(name))\r\n return this._storages.get(name)!;\r\n\r\n const storage = new Storage(await this.nativeAppIpc.storageMgrOpen(name));\r\n this._storages.set(storage.id, storage);\r\n return storage;\r\n }\r\n\r\n /**\r\n * Close a Storage and optionally delete it.\r\n * @param storage normally not call directly instead use Storage.close()\r\n * @param deleteStorage if true, delete the storage from disk after closing it.\r\n */\r\n public static async closeStorage(storage: Storage, deleteStorage: boolean = false): Promise<void> {\r\n if (!this._storages.has(storage.id))\r\n throw new Error(`Storage [Id=${storage.id}] not open`);\r\n\r\n await this.nativeAppIpc.storageMgrClose(storage.id, deleteStorage);\r\n this._storages.delete(storage.id);\r\n }\r\n\r\n /** Get the list of existing Storages on the local disk. */\r\n public static async getStorageNames(): Promise<string[]> {\r\n return NativeApp.nativeAppIpc.storageMgrNames();\r\n }\r\n}\r\n\r\n/**\r\n * A local disk-based cache for key value pairs for NativeApps.\r\n * @note This should be used only for local caching, since its not guaranteed to exist permanently.\r\n * @public\r\n */\r\nexport class Storage {\r\n constructor(public readonly id: string) { }\r\n\r\n /** get the type of a value for a key, or undefined if not present. */\r\n public async getValueType(key: string): Promise<\"number\" | \"string\" | \"boolean\" | \"Uint8Array\" | \"null\" | undefined> {\r\n return NativeApp.nativeAppIpc.storageGetValueType(this.id, key);\r\n }\r\n\r\n /** Get the value for a key */\r\n public async getData(key: string): Promise<StorageValue> {\r\n return NativeApp.nativeAppIpc.storageGet(this.id, key);\r\n }\r\n\r\n /** Set value for a key */\r\n public async setData(key: string, value: StorageValue): Promise<void> {\r\n return NativeApp.nativeAppIpc.storageSet(this.id, key, value);\r\n }\r\n\r\n /**\r\n * Return an array of all keys in this Storage.\r\n * @note This can be expensive, depending on the number of keys present.\r\n */\r\n public async getKeys(): Promise<string[]> {\r\n return NativeApp.nativeAppIpc.storageKeys(this.id);\r\n }\r\n\r\n /** Remove a key and its data. */\r\n public async removeData(key: string): Promise<void> {\r\n return NativeApp.nativeAppIpc.storageRemove(this.id, key);\r\n }\r\n\r\n /** Remove all keys and their data. */\r\n public async removeAll(): Promise<void> {\r\n return NativeApp.nativeAppIpc.storageRemoveAll(this.id);\r\n }\r\n}\r\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"NoRenderApp.d.ts","sourceRoot":"","sources":["../../src/NoRenderApp.ts"],"names":[],"mappings":"AAIA,OAAO,EAAa,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC1D,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEtC;;;;GAIG;AACH,qBAAa,UAAW,SAAQ,YAAY;IAC1C,IAAW,gBAAgB,IAAI,MAAM,CAAc;IACnD,IAAW,gBAAgB,CAAC,SAAS,EAAE,MAAM,EAAK;IAClD,IAAW,YAAY,QAA+B;IACtD,IAAW,QAAQ,IAAI,QAAQ,CAA2B;IAC1D,IAAW,yBAAyB,IAAI,OAAO,CAAkB;IACjE,IAAoB,iBAAiB,IAAI,qBAAqB,GAAG,SAAS,CAAsB;IAChG,IAAoB,iBAAiB,CAAC,SAAS,EAAE,qBAAqB,GAAG,SAAS,EAAK;IAChF,SAAS,IAAI,IAAI;IACR,KAAK,IAAI,IAAI;IACtB,WAAW,IAAI,IAAI;IACnB,cAAc,IAAI,IAAI;IACtB,iBAAiB,IAAI,IAAI;IACzB,gBAAgB,IAAI,IAAI;IACxB,SAAS,CAAC,mBAAmB,CAAC,EAAE,MAAM,GAAG,IAAI;IACpC,wBAAwB,IAAI,IAAI;IAChC,YAAY,IAAI,IAAI;IACpB,UAAU,IAAI,IAAI;IAC3B,WAAW,IAAI,IAAI;IACV,SAAS,IAAI,IAAI;IACjB,OAAO,IAAI,IAAI;IACxB,cAAc,IAAI,OAAO;IACzB,UAAU,IAAI,IAAI;IACzB,IAAW,kBAAkB,IAAI,QAAQ,CAAC,MAAM,CAAC,CAAe;IAChE,IAAW,kBAAkB,CAAC,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,EAAK;CAC9D;AAED;;;;GAIG;AACH,qBAAa,gBAAiB,SAAQ,YAAY;IAChD,IAAW,OAAO,IAAI,OAAO,CAAkB;IACxC,UAAU,IAAI,OAAO;IACrB,YAAY;IACZ,qBAAqB;IACrB,aAAa;IACb,iBAAiB;IACjB,mBAAmB;IACnB,WAAW;IACX,OAAO;;IAEE,mBAAmB;CACpC;AAED;;;;GAIG;AACH,qBAAa,WAAW;WACF,OAAO,CAAC,IAAI,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;CAMpE"}
1
+ {"version":3,"file":"NoRenderApp.d.ts","sourceRoot":"","sources":["../../src/NoRenderApp.ts"],"names":[],"mappings":"AAKA,OAAO,EAAa,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC1D,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEtC;;;;GAIG;AACH,qBAAa,UAAW,SAAQ,YAAY;IAC1C,IAAW,gBAAgB,IAAI,MAAM,CAAc;IACnD,IAAW,gBAAgB,CAAC,SAAS,EAAE,MAAM,EAAK;IAClD,IAAW,YAAY,QAA+B;IACtD,IAAW,QAAQ,IAAI,QAAQ,CAA2B;IAC1D,IAAW,yBAAyB,IAAI,OAAO,CAAkB;IACjE,IAAoB,iBAAiB,IAAI,qBAAqB,GAAG,SAAS,CAAsB;IAChG,IAAoB,iBAAiB,CAAC,SAAS,EAAE,qBAAqB,GAAG,SAAS,EAAK;IAChF,SAAS,IAAI,IAAI;IACR,KAAK,IAAI,IAAI;IACtB,WAAW,IAAI,IAAI;IACnB,cAAc,IAAI,IAAI;IACtB,iBAAiB,IAAI,IAAI;IACzB,gBAAgB,IAAI,IAAI;IACxB,SAAS,CAAC,mBAAmB,CAAC,EAAE,MAAM,GAAG,IAAI;IACpC,wBAAwB,IAAI,IAAI;IAChC,YAAY,IAAI,IAAI;IACpB,UAAU,IAAI,IAAI;IAC3B,WAAW,IAAI,IAAI;IACV,SAAS,IAAI,IAAI;IACjB,OAAO,IAAI,IAAI;IACxB,cAAc,IAAI,OAAO;IACzB,UAAU,IAAI,IAAI;IACzB,IAAW,kBAAkB,IAAI,QAAQ,CAAC,MAAM,CAAC,CAAe;IAChE,IAAW,kBAAkB,CAAC,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,EAAK;CAC9D;AAED;;;;GAIG;AACH,qBAAa,gBAAiB,SAAQ,YAAY;IAChD,IAAW,OAAO,IAAI,OAAO,CAAkB;IACxC,UAAU,IAAI,OAAO;IACrB,YAAY;IACZ,qBAAqB;IACrB,aAAa;IACb,iBAAiB;IACjB,mBAAmB;IACnB,WAAW;IACX,OAAO;;IAEE,mBAAmB;CACpC;AAED;;;;GAIG;AACH,qBAAa,WAAW;WACF,OAAO,CAAC,IAAI,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;CAOpE"}
@@ -5,6 +5,7 @@ exports.NoRenderApp = exports.NullRenderSystem = exports.NullTarget = void 0;
5
5
  * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
6
6
  * See LICENSE.md in the project root for license terms and full copyright notice.
7
7
  *--------------------------------------------------------------------------------------------*/
8
+ const core_common_1 = require("@itwin/core-common");
8
9
  const IModelApp_1 = require("./IModelApp");
9
10
  const RenderSystem_1 = require("./render/RenderSystem");
10
11
  const RenderTarget_1 = require("./render/RenderTarget");
@@ -67,9 +68,11 @@ exports.NullRenderSystem = NullRenderSystem;
67
68
  */
68
69
  class NoRenderApp {
69
70
  static async startup(opts) {
71
+ var _a;
70
72
  opts = opts ? opts : {};
71
73
  opts.renderSys = new NullRenderSystem();
72
74
  opts.noRender = true;
75
+ opts.localization = (_a = opts.localization) !== null && _a !== void 0 ? _a : new core_common_1.EmptyLocalization();
73
76
  await IModelApp_1.IModelApp.startup(opts);
74
77
  }
75
78
  }
@@ -1 +1 @@
1
- {"version":3,"file":"NoRenderApp.js","sourceRoot":"","sources":["../../src/NoRenderApp.ts"],"names":[],"mappings":";;;AAAA;;;+FAG+F;AAC/F,2CAA0D;AAE1D,wDAAqD;AACrD,wDAAqD;AACrD,yCAAsC;AAEtC;;;;GAIG;AACH,MAAa,UAAW,SAAQ,2BAAY;IAC1C,IAAW,gBAAgB,KAAa,OAAO,CAAC,CAAC,CAAC,CAAC;IACnD,IAAW,gBAAgB,CAAC,SAAiB,IAAI,CAAC;IAClD,IAAW,YAAY,KAAK,OAAO,SAAgB,CAAC,CAAC,CAAC;IACtD,IAAW,QAAQ,KAAe,OAAO,IAAI,mBAAQ,EAAE,CAAC,CAAC,CAAC;IAC1D,IAAW,yBAAyB,KAAc,OAAO,KAAK,CAAC,CAAC,CAAC;IACjE,IAAoB,iBAAiB,KAAwC,OAAO,SAAS,CAAC,CAAC,CAAC;IAChG,IAAoB,iBAAiB,CAAC,SAA4C,IAAI,CAAC;IAChF,SAAS,KAAW,CAAC;IACZ,KAAK,KAAW,CAAC;IAC1B,WAAW,KAAW,CAAC;IACvB,cAAc,KAAW,CAAC;IAC1B,iBAAiB,KAAW,CAAC;IAC7B,gBAAgB,KAAW,CAAC;IAC5B,SAAS,CAAC,mBAA4B,IAAU,CAAC;IACxC,wBAAwB,KAAW,CAAC;IACpC,YAAY,KAAW,CAAC;IACxB,UAAU,KAAW,CAAC;IAC/B,WAAW,KAAW,CAAC;IACd,SAAS,KAAW,CAAC;IACrB,OAAO,KAAW,CAAC;IAC5B,cAAc,KAAc,OAAO,KAAK,CAAC,CAAC,CAAC;IAC3C,UAAU,KAAW,CAAC;IAC7B,IAAW,kBAAkB,KAAuB,OAAO,EAAE,CAAC,CAAC,CAAC;IAChE,IAAW,kBAAkB,CAAC,QAA0B,IAAI,CAAC;CAC9D;AAzBD,gCAyBC;AAED;;;;GAIG;AACH,MAAa,gBAAiB,SAAQ,2BAAY;IAChD,IAAW,OAAO,KAAc,OAAO,KAAK,CAAC,CAAC,CAAC;IACxC,UAAU,KAAc,OAAO,KAAK,CAAC,CAAC,CAAC;IACvC,YAAY,KAAK,OAAO,IAAI,UAAU,EAAE,CAAC,CAAC,CAAC;IAC3C,qBAAqB,KAAK,OAAO,IAAI,UAAU,EAAE,CAAC,CAAC,CAAC;IACpD,aAAa,KAAK,OAAO,SAAgB,CAAC,CAAC,CAAC;IAC5C,iBAAiB,KAAK,OAAO,SAAgB,CAAC,CAAC,CAAC;IAChD,mBAAmB,KAAK,OAAO,SAAgB,CAAC,CAAC,CAAC;IAClD,WAAW,KAAK,OAAO,SAAgB,CAAC,CAAC,CAAC;IAC1C,OAAO,KAAK,CAAC;IACpB,gBAAuB,KAAK,EAAE,CAAC,CAAC,CAAC;IACjB,mBAAmB,KAAK,OAAO,SAAS,CAAC,CAAC,CAAC;CAC5D;AAZD,4CAYC;AAED;;;;GAIG;AACH,MAAa,WAAW;IACf,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,IAAuB;QACjD,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;QACxB,IAAI,CAAC,SAAS,GAAG,IAAI,gBAAgB,EAAE,CAAC;QACxC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACrB,MAAM,qBAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAChC,CAAC;CACF;AAPD,kCAOC","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\nimport { IModelApp, IModelAppOptions } from \"./IModelApp\";\r\nimport { AnimationBranchStates } from \"./render/GraphicBranch\";\r\nimport { RenderSystem } from \"./render/RenderSystem\";\r\nimport { RenderTarget } from \"./render/RenderTarget\";\r\nimport { ViewRect } from \"./ViewRect\";\r\n\r\n/**\r\n * A RenderTarget for applications that must run in environments where WebGL is not present.\r\n * This is typically used in tests.\r\n * @internal\r\n */\r\nexport class NullTarget extends RenderTarget {\r\n public get analysisFraction(): number { return 0; }\r\n public set analysisFraction(_fraction: number) { }\r\n public get renderSystem() { return undefined as any; }\r\n public get viewRect(): ViewRect { return new ViewRect(); }\r\n public get wantInvertBlackBackground(): boolean { return false; }\r\n public override get animationBranches(): AnimationBranchStates | undefined { return undefined; }\r\n public override set animationBranches(_branches: AnimationBranchStates | undefined) { }\r\n public onDestroy(): void { }\r\n public override reset(): void { }\r\n public changeScene(): void { }\r\n public changeDynamics(): void { }\r\n public changeDecorations(): void { }\r\n public changeRenderPlan(): void { }\r\n public drawFrame(_sceneMilSecElapsed?: number): void { }\r\n public override overrideFeatureSymbology(): void { }\r\n public override setHiliteSet(): void { }\r\n public override setFlashed(): void { }\r\n public setViewRect(): void { }\r\n public override onResized(): void { }\r\n public override dispose(): void { }\r\n public updateViewRect(): boolean { return false; }\r\n public readPixels(): void { }\r\n public get screenSpaceEffects(): Iterable<string> { return []; }\r\n public set screenSpaceEffects(_effects: Iterable<string>) { }\r\n}\r\n\r\n/**\r\n * A RenderSystem for applications that must run in environments where WebGL is not present.\r\n * This is typically used in tests.\r\n * @internal\r\n */\r\nexport class NullRenderSystem extends RenderSystem {\r\n public get isValid(): boolean { return false; }\r\n public doIdleWork(): boolean { return false; }\r\n public createTarget() { return new NullTarget(); }\r\n public createOffscreenTarget() { return new NullTarget(); }\r\n public createGraphic() { return undefined as any; }\r\n public createGraphicList() { return undefined as any; }\r\n public createGraphicBranch() { return undefined as any; }\r\n public createBatch() { return undefined as any; }\r\n public dispose() { }\r\n public constructor() { super(); }\r\n public override createRenderGraphic() { return undefined; }\r\n}\r\n\r\n/**\r\n * A class for applications that must run in environments where WebGL is not present.\r\n * This is typically used in tests.\r\n * @internal\r\n */\r\nexport class NoRenderApp {\r\n public static async startup(opts?: IModelAppOptions): Promise<void> {\r\n opts = opts ? opts : {};\r\n opts.renderSys = new NullRenderSystem();\r\n opts.noRender = true;\r\n await IModelApp.startup(opts);\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"NoRenderApp.js","sourceRoot":"","sources":["../../src/NoRenderApp.ts"],"names":[],"mappings":";;;AAAA;;;+FAG+F;AAC/F,oDAAuD;AACvD,2CAA0D;AAE1D,wDAAqD;AACrD,wDAAqD;AACrD,yCAAsC;AAEtC;;;;GAIG;AACH,MAAa,UAAW,SAAQ,2BAAY;IAC1C,IAAW,gBAAgB,KAAa,OAAO,CAAC,CAAC,CAAC,CAAC;IACnD,IAAW,gBAAgB,CAAC,SAAiB,IAAI,CAAC;IAClD,IAAW,YAAY,KAAK,OAAO,SAAgB,CAAC,CAAC,CAAC;IACtD,IAAW,QAAQ,KAAe,OAAO,IAAI,mBAAQ,EAAE,CAAC,CAAC,CAAC;IAC1D,IAAW,yBAAyB,KAAc,OAAO,KAAK,CAAC,CAAC,CAAC;IACjE,IAAoB,iBAAiB,KAAwC,OAAO,SAAS,CAAC,CAAC,CAAC;IAChG,IAAoB,iBAAiB,CAAC,SAA4C,IAAI,CAAC;IAChF,SAAS,KAAW,CAAC;IACZ,KAAK,KAAW,CAAC;IAC1B,WAAW,KAAW,CAAC;IACvB,cAAc,KAAW,CAAC;IAC1B,iBAAiB,KAAW,CAAC;IAC7B,gBAAgB,KAAW,CAAC;IAC5B,SAAS,CAAC,mBAA4B,IAAU,CAAC;IACxC,wBAAwB,KAAW,CAAC;IACpC,YAAY,KAAW,CAAC;IACxB,UAAU,KAAW,CAAC;IAC/B,WAAW,KAAW,CAAC;IACd,SAAS,KAAW,CAAC;IACrB,OAAO,KAAW,CAAC;IAC5B,cAAc,KAAc,OAAO,KAAK,CAAC,CAAC,CAAC;IAC3C,UAAU,KAAW,CAAC;IAC7B,IAAW,kBAAkB,KAAuB,OAAO,EAAE,CAAC,CAAC,CAAC;IAChE,IAAW,kBAAkB,CAAC,QAA0B,IAAI,CAAC;CAC9D;AAzBD,gCAyBC;AAED;;;;GAIG;AACH,MAAa,gBAAiB,SAAQ,2BAAY;IAChD,IAAW,OAAO,KAAc,OAAO,KAAK,CAAC,CAAC,CAAC;IACxC,UAAU,KAAc,OAAO,KAAK,CAAC,CAAC,CAAC;IACvC,YAAY,KAAK,OAAO,IAAI,UAAU,EAAE,CAAC,CAAC,CAAC;IAC3C,qBAAqB,KAAK,OAAO,IAAI,UAAU,EAAE,CAAC,CAAC,CAAC;IACpD,aAAa,KAAK,OAAO,SAAgB,CAAC,CAAC,CAAC;IAC5C,iBAAiB,KAAK,OAAO,SAAgB,CAAC,CAAC,CAAC;IAChD,mBAAmB,KAAK,OAAO,SAAgB,CAAC,CAAC,CAAC;IAClD,WAAW,KAAK,OAAO,SAAgB,CAAC,CAAC,CAAC;IAC1C,OAAO,KAAK,CAAC;IACpB,gBAAuB,KAAK,EAAE,CAAC,CAAC,CAAC;IACjB,mBAAmB,KAAK,OAAO,SAAS,CAAC,CAAC,CAAC;CAC5D;AAZD,4CAYC;AAED;;;;GAIG;AACH,MAAa,WAAW;IACf,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,IAAuB;;QACjD,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;QACxB,IAAI,CAAC,SAAS,GAAG,IAAI,gBAAgB,EAAE,CAAC;QACxC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACrB,IAAI,CAAC,YAAY,GAAG,MAAA,IAAI,CAAC,YAAY,mCAAI,IAAI,+BAAiB,EAAE,CAAC;QACjE,MAAM,qBAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAChC,CAAC;CACF;AARD,kCAQC","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\nimport { EmptyLocalization } from \"@itwin/core-common\";\r\nimport { IModelApp, IModelAppOptions } from \"./IModelApp\";\r\nimport { AnimationBranchStates } from \"./render/GraphicBranch\";\r\nimport { RenderSystem } from \"./render/RenderSystem\";\r\nimport { RenderTarget } from \"./render/RenderTarget\";\r\nimport { ViewRect } from \"./ViewRect\";\r\n\r\n/**\r\n * A RenderTarget for applications that must run in environments where WebGL is not present.\r\n * This is typically used in tests.\r\n * @internal\r\n */\r\nexport class NullTarget extends RenderTarget {\r\n public get analysisFraction(): number { return 0; }\r\n public set analysisFraction(_fraction: number) { }\r\n public get renderSystem() { return undefined as any; }\r\n public get viewRect(): ViewRect { return new ViewRect(); }\r\n public get wantInvertBlackBackground(): boolean { return false; }\r\n public override get animationBranches(): AnimationBranchStates | undefined { return undefined; }\r\n public override set animationBranches(_branches: AnimationBranchStates | undefined) { }\r\n public onDestroy(): void { }\r\n public override reset(): void { }\r\n public changeScene(): void { }\r\n public changeDynamics(): void { }\r\n public changeDecorations(): void { }\r\n public changeRenderPlan(): void { }\r\n public drawFrame(_sceneMilSecElapsed?: number): void { }\r\n public override overrideFeatureSymbology(): void { }\r\n public override setHiliteSet(): void { }\r\n public override setFlashed(): void { }\r\n public setViewRect(): void { }\r\n public override onResized(): void { }\r\n public override dispose(): void { }\r\n public updateViewRect(): boolean { return false; }\r\n public readPixels(): void { }\r\n public get screenSpaceEffects(): Iterable<string> { return []; }\r\n public set screenSpaceEffects(_effects: Iterable<string>) { }\r\n}\r\n\r\n/**\r\n * A RenderSystem for applications that must run in environments where WebGL is not present.\r\n * This is typically used in tests.\r\n * @internal\r\n */\r\nexport class NullRenderSystem extends RenderSystem {\r\n public get isValid(): boolean { return false; }\r\n public doIdleWork(): boolean { return false; }\r\n public createTarget() { return new NullTarget(); }\r\n public createOffscreenTarget() { return new NullTarget(); }\r\n public createGraphic() { return undefined as any; }\r\n public createGraphicList() { return undefined as any; }\r\n public createGraphicBranch() { return undefined as any; }\r\n public createBatch() { return undefined as any; }\r\n public dispose() { }\r\n public constructor() { super(); }\r\n public override createRenderGraphic() { return undefined; }\r\n}\r\n\r\n/**\r\n * A class for applications that must run in environments where WebGL is not present.\r\n * This is typically used in tests.\r\n * @internal\r\n */\r\nexport class NoRenderApp {\r\n public static async startup(opts?: IModelAppOptions): Promise<void> {\r\n opts = opts ? opts : {};\r\n opts.renderSys = new NullRenderSystem();\r\n opts.noRender = true;\r\n opts.localization = opts.localization ?? new EmptyLocalization();\r\n await IModelApp.startup(opts);\r\n }\r\n}\r\n"]}
@@ -48,6 +48,10 @@ export declare class Tiles implements Iterable<{
48
48
  * A [[TileTreeReference]] uses this method to obtain the tile tree to which it refers.
49
49
  */
50
50
  getTileTreeOwner(id: any, supplier: TileTreeSupplier): TileTreeOwner;
51
+ /** Remove tile tree matching the provided tile tree supplier/id
52
+ * @internal
53
+ */
54
+ resetTileTreeOwner(id: any, supplier: TileTreeSupplier): void;
51
55
  /** Disposes of all [[TileTree]]s belonging to `supplier` and removes `supplier` from the set of known tile tree suppliers. */
52
56
  dropSupplier(supplier: TileTreeSupplier): void;
53
57
  /** Invokes a function on each extant TileTreeOwner. */
@@ -1 +1 @@
1
- {"version":3,"file":"Tiles.d.ts","sourceRoot":"","sources":["../../src/Tiles.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,EAAE,WAAW,EAAuB,SAAS,EAAE,UAAU,EAAgB,MAAM,qBAAqB,CAAC;AAE5G,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,QAAQ,EAAsB,aAAa,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAyDhG;;;;;;;GAOG;AACH,qBAAa,KAAM,YAAW,QAAQ,CAAC;IAAE,QAAQ,EAAE,gBAAgB,CAAC;IAAC,EAAE,EAAE,GAAG,CAAC;IAAC,KAAK,EAAE,aAAa,CAAA;CAAE,CAAC;IACnG,OAAO,CAAC,OAAO,CAAmB;IAClC,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAA2D;IAC5F,OAAO,CAAC,SAAS,CAAS;IAE1B,gBAAgB;IAChB,IAAW,UAAU,YAA6B;IAElD,gBAAgB;gBACJ,MAAM,EAAE,gBAAgB;IAiBpC,gBAAgB;IACT,OAAO,IAAI,IAAI;IAKtB;;OAEG;IACI,KAAK,IAAI,IAAI;IAOpB,gBAAgB;IACH,cAAc,CAAC,QAAQ,EAAE,SAAS,GAAG,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;IAI3E,OAAO,CAAC,iCAAiC;IASzC;;;;;;OAMG;IACU,uBAAuB,CAAC,qBAAqB,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;YAIxE,eAAe;IAS7B,OAAO,CAAC,gBAAgB;IASxB;;;OAGG;IACI,gBAAgB,CAAC,EAAE,EAAE,GAAG,EAAE,QAAQ,EAAE,gBAAgB,GAAG,aAAa;IAgB3E,8HAA8H;IACvH,YAAY,CAAC,QAAQ,EAAE,gBAAgB,GAAG,IAAI;IASrD,uDAAuD;IAChD,gBAAgB,CAAC,IAAI,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,GAAG,IAAI;IAKnE,8CAA8C;IACrC,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,QAAQ,CAAC;QAAE,QAAQ,EAAE,gBAAgB,CAAC;QAAC,EAAE,EAAE,GAAG,CAAC;QAAC,KAAK,EAAE,aAAa,CAAA;KAAE,CAAC;IAOrG,oEAAoE;IAC7D,wBAAwB,CAAC,QAAQ,EAAE,gBAAgB,GAAG,QAAQ,CAAC;QAAE,EAAE,EAAE,GAAG,CAAC;QAAC,KAAK,EAAE,aAAa,CAAA;KAAE,CAAC;IAYxG;;OAEG;IACI,KAAK,CAAC,SAAS,EAAE,WAAW,EAAE,OAAO,CAAC,EAAE,GAAG,CAAC,QAAQ,CAAC,GAAG,IAAI;CAYpE"}
1
+ {"version":3,"file":"Tiles.d.ts","sourceRoot":"","sources":["../../src/Tiles.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,EAAE,WAAW,EAAuB,SAAS,EAAE,UAAU,EAAgB,MAAM,qBAAqB,CAAC;AAE5G,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,QAAQ,EAAsB,aAAa,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAyDhG;;;;;;;GAOG;AACH,qBAAa,KAAM,YAAW,QAAQ,CAAC;IAAE,QAAQ,EAAE,gBAAgB,CAAC;IAAC,EAAE,EAAE,GAAG,CAAC;IAAC,KAAK,EAAE,aAAa,CAAA;CAAE,CAAC;IACnG,OAAO,CAAC,OAAO,CAAmB;IAClC,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAA2D;IAC5F,OAAO,CAAC,SAAS,CAAS;IAE1B,gBAAgB;IAChB,IAAW,UAAU,YAA6B;IAElD,gBAAgB;gBACJ,MAAM,EAAE,gBAAgB;IAiBpC,gBAAgB;IACT,OAAO,IAAI,IAAI;IAKtB;;OAEG;IACI,KAAK,IAAI,IAAI;IAOpB,gBAAgB;IACH,cAAc,CAAC,QAAQ,EAAE,SAAS,GAAG,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;IAI3E,OAAO,CAAC,iCAAiC;IASzC;;;;;;OAMG;IACU,uBAAuB,CAAC,qBAAqB,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;YAIxE,eAAe;IAS7B,OAAO,CAAC,gBAAgB;IASxB;;;OAGG;IACI,gBAAgB,CAAC,EAAE,EAAE,GAAG,EAAE,QAAQ,EAAE,gBAAgB,GAAG,aAAa;IAgB3E;;OAEG;IACI,kBAAkB,CAAC,EAAE,EAAE,GAAG,EAAE,QAAQ,EAAE,gBAAgB;IAS7D,8HAA8H;IACvH,YAAY,CAAC,QAAQ,EAAE,gBAAgB,GAAG,IAAI;IASrD,uDAAuD;IAChD,gBAAgB,CAAC,IAAI,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,GAAG,IAAI;IAKnE,8CAA8C;IACrC,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,QAAQ,CAAC;QAAE,QAAQ,EAAE,gBAAgB,CAAC;QAAC,EAAE,EAAE,GAAG,CAAC;QAAC,KAAK,EAAE,aAAa,CAAA;KAAE,CAAC;IAOrG,oEAAoE;IAC7D,wBAAwB,CAAC,QAAQ,EAAE,gBAAgB,GAAG,QAAQ,CAAC;QAAE,EAAE,EAAE,GAAG,CAAC;QAAC,KAAK,EAAE,aAAa,CAAA;KAAE,CAAC;IAYxG;;OAEG;IACI,KAAK,CAAC,SAAS,EAAE,WAAW,EAAE,OAAO,CAAC,EAAE,GAAG,CAAC,QAAQ,CAAC,GAAG,IAAI;CAYpE"}
package/lib/cjs/Tiles.js CHANGED
@@ -146,6 +146,17 @@ class Tiles {
146
146
  }
147
147
  return tree;
148
148
  }
149
+ /** Remove tile tree matching the provided tile tree supplier/id
150
+ * @internal
151
+ */
152
+ resetTileTreeOwner(id, supplier) {
153
+ const trees = this._treesBySupplier.get(supplier);
154
+ const tree = trees === null || trees === void 0 ? void 0 : trees.get(id);
155
+ if (tree) {
156
+ tree.dispose();
157
+ trees === null || trees === void 0 ? void 0 : trees.delete(id);
158
+ }
159
+ }
149
160
  /** Disposes of all [[TileTree]]s belonging to `supplier` and removes `supplier` from the set of known tile tree suppliers. */
150
161
  dropSupplier(supplier) {
151
162
  const trees = this._treesBySupplier.get(supplier);
@@ -1 +1 @@
1
- {"version":3,"file":"Tiles.js","sourceRoot":"","sources":["../../src/Tiles.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 IModelConnection\r\n */\r\n\r\nimport { BeTimePoint, Dictionary, dispose, Id64Array, Id64String, IModelStatus } from \"@itwin/core-bentley\";\r\nimport { IModelApp } from \"./IModelApp\";\r\nimport { IModelConnection } from \"./IModelConnection\";\r\nimport { TileTree, TileTreeLoadStatus, TileTreeOwner, TileTreeSupplier } from \"./tile/internal\";\r\n\r\nclass TreeOwner implements TileTreeOwner {\r\n private _tileTree?: TileTree;\r\n private _loadStatus: TileTreeLoadStatus = TileTreeLoadStatus.NotLoaded;\r\n private readonly _supplier: TileTreeSupplier;\r\n private readonly _iModel: IModelConnection;\r\n\r\n public readonly id: any;\r\n\r\n public get tileTree(): TileTree | undefined { return this._tileTree; }\r\n public get loadStatus(): TileTreeLoadStatus { return this._loadStatus; }\r\n public get iModel(): IModelConnection { return this._iModel; }\r\n\r\n public constructor(id: any, supplier: TileTreeSupplier, iModel: IModelConnection) {\r\n this.id = id;\r\n this._supplier = supplier;\r\n this._iModel = iModel;\r\n }\r\n\r\n public load(): TileTree | undefined {\r\n this._load(); // eslint-disable-line @typescript-eslint/no-floating-promises\r\n return this.tileTree;\r\n }\r\n\r\n public async loadTree(): Promise<TileTree | undefined> {\r\n await this._load();\r\n return this.tileTree;\r\n }\r\n\r\n public dispose(): void {\r\n this._tileTree = dispose(this._tileTree);\r\n this._loadStatus = TileTreeLoadStatus.NotLoaded;\r\n }\r\n\r\n private async _load(): Promise<void> {\r\n if (TileTreeLoadStatus.NotLoaded !== this.loadStatus)\r\n return;\r\n\r\n this._loadStatus = TileTreeLoadStatus.Loading;\r\n let tree: TileTree | undefined;\r\n let newStatus: TileTreeLoadStatus;\r\n try {\r\n tree = await this._supplier.createTileTree(this.id, this._iModel);\r\n newStatus = undefined !== tree && !tree.rootTile.contentRange.isNull ? TileTreeLoadStatus.Loaded : TileTreeLoadStatus.NotFound;\r\n } catch (err: any) {\r\n newStatus = (err.errorNumber && err.errorNumber === IModelStatus.ServerTimeout) ? TileTreeLoadStatus.NotLoaded : TileTreeLoadStatus.NotFound;\r\n }\r\n\r\n if (TileTreeLoadStatus.Loading === this._loadStatus) {\r\n this._tileTree = tree;\r\n this._loadStatus = newStatus;\r\n IModelApp.tileAdmin.onTileTreeLoad.raiseEvent(this);\r\n }\r\n }\r\n}\r\n\r\n/** Provides access to [[TileTree]]s associated with an [[IModelConnection]].\r\n * The tile trees are accessed indirectly via their corresponding [[TileTreeOwner]]s.\r\n * Loaded tile trees will be discarded after the iModel is closed, after a period of disuse, or when the contents of a [[GeometricModelState]] they represent\r\n * change.\r\n * @see [[IModelConnection.tiles]].\r\n * @public\r\n * @extensions\r\n */\r\nexport class Tiles implements Iterable<{ supplier: TileTreeSupplier, id: any, owner: TileTreeOwner }> {\r\n private _iModel: IModelConnection;\r\n private readonly _treesBySupplier = new Map<TileTreeSupplier, Dictionary<any, TreeOwner>>();\r\n private _disposed = false;\r\n\r\n /** @internal */\r\n public get isDisposed() { return this._disposed; }\r\n\r\n /** @internal */\r\n constructor(iModel: IModelConnection) {\r\n this._iModel = iModel;\r\n\r\n iModel.onEcefLocationChanged.addListener(() => {\r\n for (const supplier of this._treesBySupplier.keys()) {\r\n if (supplier.isEcefDependent)\r\n this.dropSupplier(supplier);\r\n }\r\n });\r\n\r\n // When project extents change, purge tile trees for spatial models.\r\n iModel.onProjectExtentsChanged.addListener(async () => {\r\n if (!iModel.isBriefcaseConnection() || !iModel.editingScope)\r\n await this.purgeModelTrees(this.getSpatialModels());\r\n });\r\n }\r\n\r\n /** @internal */\r\n public dispose(): void {\r\n this.reset();\r\n this._disposed = true;\r\n }\r\n\r\n /** Intended strictly for tests.\r\n * @internal\r\n */\r\n public reset(): void {\r\n for (const supplier of this._treesBySupplier)\r\n supplier[1].forEach((_key, value) => value.dispose());\r\n\r\n this._treesBySupplier.clear();\r\n }\r\n\r\n /** @internal */\r\n public async purgeTileTrees(modelIds: Id64Array | undefined): Promise<void> {\r\n return IModelApp.tileAdmin.purgeTileTrees(this._iModel, modelIds);\r\n }\r\n\r\n private getModelsAnimatedByScheduleScript(scriptSourceElementId: Id64String): Set<Id64String> {\r\n const modelIds = new Set<Id64String>();\r\n for (const supplier of this._treesBySupplier.keys())\r\n if (supplier.addModelsAnimatedByScript)\r\n supplier.addModelsAnimatedByScript(modelIds, scriptSourceElementId, this.getTreeOwnersForSupplier(supplier));\r\n\r\n return modelIds;\r\n }\r\n\r\n /** Update the [[Tile]]s for any [[TileTree]]s that use the [RenderSchedule.Script]($common) hosted by the specified\r\n * [RenderTimeline]($backend) or [DisplayStyle]($backend) element. This method should be invoked after\r\n * the host element is updated in the database with a new script, so that any [[Viewport]]s displaying tiles produced\r\n * based on the previous version of the script are updated to use the new version of the script.\r\n * @param scriptSourceElementId The Id of the RenderTimeline or DisplayStyle element that hosts the script.\r\n * @public\r\n */\r\n public async updateForScheduleScript(scriptSourceElementId: Id64String): Promise<void> {\r\n return this.purgeModelTrees(this.getModelsAnimatedByScheduleScript(scriptSourceElementId));\r\n }\r\n\r\n private async purgeModelTrees(modelIds: Set<Id64String>): Promise<void> {\r\n if (0 === modelIds.size)\r\n return;\r\n\r\n const ids = Array.from(modelIds);\r\n await this.purgeTileTrees(ids);\r\n IModelApp.viewManager.refreshForModifiedModels(ids);\r\n }\r\n\r\n private getSpatialModels(): Set<Id64String> {\r\n const modelIds = new Set<Id64String>();\r\n for (const supplier of this._treesBySupplier.keys())\r\n if (supplier.addSpatialModels)\r\n supplier.addSpatialModels(modelIds, this.getTreeOwnersForSupplier(supplier));\r\n\r\n return modelIds;\r\n }\r\n\r\n /** Obtain the owner of a TileTree.\r\n * The `id` is unique within all tile trees associated with `supplier`; its specific structure is an implementation detail known only to the supplier.\r\n * A [[TileTreeReference]] uses this method to obtain the tile tree to which it refers.\r\n */\r\n public getTileTreeOwner(id: any, supplier: TileTreeSupplier): TileTreeOwner {\r\n let trees = this._treesBySupplier.get(supplier);\r\n if (undefined === trees) {\r\n trees = new Dictionary<any, TreeOwner>((lhs, rhs) => supplier.compareTileTreeIds(lhs, rhs));\r\n this._treesBySupplier.set(supplier, trees);\r\n }\r\n\r\n let tree = trees.get(id);\r\n if (undefined === tree) {\r\n tree = new TreeOwner(id, supplier, this._iModel);\r\n trees.set(id, tree);\r\n }\r\n\r\n return tree;\r\n }\r\n\r\n /** Disposes of all [[TileTree]]s belonging to `supplier` and removes `supplier` from the set of known tile tree suppliers. */\r\n public dropSupplier(supplier: TileTreeSupplier): void {\r\n const trees = this._treesBySupplier.get(supplier);\r\n if (undefined === trees)\r\n return;\r\n\r\n trees.forEach((_key, value) => value.dispose());\r\n this._treesBySupplier.delete(supplier);\r\n }\r\n\r\n /** Invokes a function on each extant TileTreeOwner. */\r\n public forEachTreeOwner(func: (owner: TileTreeOwner) => void): void {\r\n for (const dict of this._treesBySupplier.values())\r\n dict.forEach((_key, value) => func(value));\r\n }\r\n\r\n /** Iterate over all of the TileTreeOwners. */\r\n public * [Symbol.iterator](): Iterator<{ supplier: TileTreeSupplier, id: any, owner: TileTreeOwner }> {\r\n for (const [supplier, dict] of this._treesBySupplier) {\r\n for (const entry of dict)\r\n yield { supplier, id: entry.key, owner: entry.value };\r\n }\r\n }\r\n\r\n /** Obtain the TileTreeOwners supplied by the specified supplier. */\r\n public getTreeOwnersForSupplier(supplier: TileTreeSupplier): Iterable<{ id: any, owner: TileTreeOwner }> {\r\n function* iterator(trees: Dictionary<any, TreeOwner> | undefined) {\r\n if (trees)\r\n for (const entry of trees)\r\n yield { id: entry.key, owner: entry.value };\r\n }\r\n\r\n return {\r\n [Symbol.iterator]: () => iterator(this._treesBySupplier.get(supplier)),\r\n };\r\n }\r\n\r\n /** Unload any tile trees which have not been drawn since at least the specified time, excluding any of the specified TileTrees.\r\n * @internal\r\n */\r\n public purge(olderThan: BeTimePoint, exclude?: Set<TileTree>): void {\r\n // NB: It would be nice to be able to detect completely useless leftover Owners or Suppliers, but we can't know if any TileTreeReferences exist pointing to a given Owner.\r\n for (const entry of this._treesBySupplier) {\r\n const dict = entry[1];\r\n dict.forEach((_treeId, owner) => {\r\n const tree = owner.tileTree;\r\n if (undefined !== tree && tree.lastSelectedTime.milliseconds < olderThan.milliseconds)\r\n if (undefined === exclude || !exclude.has(tree))\r\n owner.dispose();\r\n });\r\n }\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"Tiles.js","sourceRoot":"","sources":["../../src/Tiles.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 IModelConnection\r\n */\r\n\r\nimport { BeTimePoint, Dictionary, dispose, Id64Array, Id64String, IModelStatus } from \"@itwin/core-bentley\";\r\nimport { IModelApp } from \"./IModelApp\";\r\nimport { IModelConnection } from \"./IModelConnection\";\r\nimport { TileTree, TileTreeLoadStatus, TileTreeOwner, TileTreeSupplier } from \"./tile/internal\";\r\n\r\nclass TreeOwner implements TileTreeOwner {\r\n private _tileTree?: TileTree;\r\n private _loadStatus: TileTreeLoadStatus = TileTreeLoadStatus.NotLoaded;\r\n private readonly _supplier: TileTreeSupplier;\r\n private readonly _iModel: IModelConnection;\r\n\r\n public readonly id: any;\r\n\r\n public get tileTree(): TileTree | undefined { return this._tileTree; }\r\n public get loadStatus(): TileTreeLoadStatus { return this._loadStatus; }\r\n public get iModel(): IModelConnection { return this._iModel; }\r\n\r\n public constructor(id: any, supplier: TileTreeSupplier, iModel: IModelConnection) {\r\n this.id = id;\r\n this._supplier = supplier;\r\n this._iModel = iModel;\r\n }\r\n\r\n public load(): TileTree | undefined {\r\n this._load(); // eslint-disable-line @typescript-eslint/no-floating-promises\r\n return this.tileTree;\r\n }\r\n\r\n public async loadTree(): Promise<TileTree | undefined> {\r\n await this._load();\r\n return this.tileTree;\r\n }\r\n\r\n public dispose(): void {\r\n this._tileTree = dispose(this._tileTree);\r\n this._loadStatus = TileTreeLoadStatus.NotLoaded;\r\n }\r\n\r\n private async _load(): Promise<void> {\r\n if (TileTreeLoadStatus.NotLoaded !== this.loadStatus)\r\n return;\r\n\r\n this._loadStatus = TileTreeLoadStatus.Loading;\r\n let tree: TileTree | undefined;\r\n let newStatus: TileTreeLoadStatus;\r\n try {\r\n tree = await this._supplier.createTileTree(this.id, this._iModel);\r\n newStatus = undefined !== tree && !tree.rootTile.contentRange.isNull ? TileTreeLoadStatus.Loaded : TileTreeLoadStatus.NotFound;\r\n } catch (err: any) {\r\n newStatus = (err.errorNumber && err.errorNumber === IModelStatus.ServerTimeout) ? TileTreeLoadStatus.NotLoaded : TileTreeLoadStatus.NotFound;\r\n }\r\n\r\n if (TileTreeLoadStatus.Loading === this._loadStatus) {\r\n this._tileTree = tree;\r\n this._loadStatus = newStatus;\r\n IModelApp.tileAdmin.onTileTreeLoad.raiseEvent(this);\r\n }\r\n }\r\n}\r\n\r\n/** Provides access to [[TileTree]]s associated with an [[IModelConnection]].\r\n * The tile trees are accessed indirectly via their corresponding [[TileTreeOwner]]s.\r\n * Loaded tile trees will be discarded after the iModel is closed, after a period of disuse, or when the contents of a [[GeometricModelState]] they represent\r\n * change.\r\n * @see [[IModelConnection.tiles]].\r\n * @public\r\n * @extensions\r\n */\r\nexport class Tiles implements Iterable<{ supplier: TileTreeSupplier, id: any, owner: TileTreeOwner }> {\r\n private _iModel: IModelConnection;\r\n private readonly _treesBySupplier = new Map<TileTreeSupplier, Dictionary<any, TreeOwner>>();\r\n private _disposed = false;\r\n\r\n /** @internal */\r\n public get isDisposed() { return this._disposed; }\r\n\r\n /** @internal */\r\n constructor(iModel: IModelConnection) {\r\n this._iModel = iModel;\r\n\r\n iModel.onEcefLocationChanged.addListener(() => {\r\n for (const supplier of this._treesBySupplier.keys()) {\r\n if (supplier.isEcefDependent)\r\n this.dropSupplier(supplier);\r\n }\r\n });\r\n\r\n // When project extents change, purge tile trees for spatial models.\r\n iModel.onProjectExtentsChanged.addListener(async () => {\r\n if (!iModel.isBriefcaseConnection() || !iModel.editingScope)\r\n await this.purgeModelTrees(this.getSpatialModels());\r\n });\r\n }\r\n\r\n /** @internal */\r\n public dispose(): void {\r\n this.reset();\r\n this._disposed = true;\r\n }\r\n\r\n /** Intended strictly for tests.\r\n * @internal\r\n */\r\n public reset(): void {\r\n for (const supplier of this._treesBySupplier)\r\n supplier[1].forEach((_key, value) => value.dispose());\r\n\r\n this._treesBySupplier.clear();\r\n }\r\n\r\n /** @internal */\r\n public async purgeTileTrees(modelIds: Id64Array | undefined): Promise<void> {\r\n return IModelApp.tileAdmin.purgeTileTrees(this._iModel, modelIds);\r\n }\r\n\r\n private getModelsAnimatedByScheduleScript(scriptSourceElementId: Id64String): Set<Id64String> {\r\n const modelIds = new Set<Id64String>();\r\n for (const supplier of this._treesBySupplier.keys())\r\n if (supplier.addModelsAnimatedByScript)\r\n supplier.addModelsAnimatedByScript(modelIds, scriptSourceElementId, this.getTreeOwnersForSupplier(supplier));\r\n\r\n return modelIds;\r\n }\r\n\r\n /** Update the [[Tile]]s for any [[TileTree]]s that use the [RenderSchedule.Script]($common) hosted by the specified\r\n * [RenderTimeline]($backend) or [DisplayStyle]($backend) element. This method should be invoked after\r\n * the host element is updated in the database with a new script, so that any [[Viewport]]s displaying tiles produced\r\n * based on the previous version of the script are updated to use the new version of the script.\r\n * @param scriptSourceElementId The Id of the RenderTimeline or DisplayStyle element that hosts the script.\r\n * @public\r\n */\r\n public async updateForScheduleScript(scriptSourceElementId: Id64String): Promise<void> {\r\n return this.purgeModelTrees(this.getModelsAnimatedByScheduleScript(scriptSourceElementId));\r\n }\r\n\r\n private async purgeModelTrees(modelIds: Set<Id64String>): Promise<void> {\r\n if (0 === modelIds.size)\r\n return;\r\n\r\n const ids = Array.from(modelIds);\r\n await this.purgeTileTrees(ids);\r\n IModelApp.viewManager.refreshForModifiedModels(ids);\r\n }\r\n\r\n private getSpatialModels(): Set<Id64String> {\r\n const modelIds = new Set<Id64String>();\r\n for (const supplier of this._treesBySupplier.keys())\r\n if (supplier.addSpatialModels)\r\n supplier.addSpatialModels(modelIds, this.getTreeOwnersForSupplier(supplier));\r\n\r\n return modelIds;\r\n }\r\n\r\n /** Obtain the owner of a TileTree.\r\n * The `id` is unique within all tile trees associated with `supplier`; its specific structure is an implementation detail known only to the supplier.\r\n * A [[TileTreeReference]] uses this method to obtain the tile tree to which it refers.\r\n */\r\n public getTileTreeOwner(id: any, supplier: TileTreeSupplier): TileTreeOwner {\r\n let trees = this._treesBySupplier.get(supplier);\r\n if (undefined === trees) {\r\n trees = new Dictionary<any, TreeOwner>((lhs, rhs) => supplier.compareTileTreeIds(lhs, rhs));\r\n this._treesBySupplier.set(supplier, trees);\r\n }\r\n\r\n let tree = trees.get(id);\r\n if (undefined === tree) {\r\n tree = new TreeOwner(id, supplier, this._iModel);\r\n trees.set(id, tree);\r\n }\r\n\r\n return tree;\r\n }\r\n\r\n /** Remove tile tree matching the provided tile tree supplier/id\r\n * @internal\r\n */\r\n public resetTileTreeOwner(id: any, supplier: TileTreeSupplier) {\r\n const trees = this._treesBySupplier.get(supplier);\r\n const tree = trees?.get(id);\r\n if (tree) {\r\n tree.dispose();\r\n trees?.delete(id);\r\n }\r\n }\r\n\r\n /** Disposes of all [[TileTree]]s belonging to `supplier` and removes `supplier` from the set of known tile tree suppliers. */\r\n public dropSupplier(supplier: TileTreeSupplier): void {\r\n const trees = this._treesBySupplier.get(supplier);\r\n if (undefined === trees)\r\n return;\r\n\r\n trees.forEach((_key, value) => value.dispose());\r\n this._treesBySupplier.delete(supplier);\r\n }\r\n\r\n /** Invokes a function on each extant TileTreeOwner. */\r\n public forEachTreeOwner(func: (owner: TileTreeOwner) => void): void {\r\n for (const dict of this._treesBySupplier.values())\r\n dict.forEach((_key, value) => func(value));\r\n }\r\n\r\n /** Iterate over all of the TileTreeOwners. */\r\n public * [Symbol.iterator](): Iterator<{ supplier: TileTreeSupplier, id: any, owner: TileTreeOwner }> {\r\n for (const [supplier, dict] of this._treesBySupplier) {\r\n for (const entry of dict)\r\n yield { supplier, id: entry.key, owner: entry.value };\r\n }\r\n }\r\n\r\n /** Obtain the TileTreeOwners supplied by the specified supplier. */\r\n public getTreeOwnersForSupplier(supplier: TileTreeSupplier): Iterable<{ id: any, owner: TileTreeOwner }> {\r\n function* iterator(trees: Dictionary<any, TreeOwner> | undefined) {\r\n if (trees)\r\n for (const entry of trees)\r\n yield { id: entry.key, owner: entry.value };\r\n }\r\n\r\n return {\r\n [Symbol.iterator]: () => iterator(this._treesBySupplier.get(supplier)),\r\n };\r\n }\r\n\r\n /** Unload any tile trees which have not been drawn since at least the specified time, excluding any of the specified TileTrees.\r\n * @internal\r\n */\r\n public purge(olderThan: BeTimePoint, exclude?: Set<TileTree>): void {\r\n // NB: It would be nice to be able to detect completely useless leftover Owners or Suppliers, but we can't know if any TileTreeReferences exist pointing to a given Owner.\r\n for (const entry of this._treesBySupplier) {\r\n const dict = entry[1];\r\n dict.forEach((_treeId, owner) => {\r\n const tree = owner.tileTree;\r\n if (undefined !== tree && tree.lastSelectedTime.milliseconds < olderThan.milliseconds)\r\n if (undefined === exclude || !exclude.has(tree))\r\n owner.dispose();\r\n });\r\n }\r\n }\r\n}\r\n"]}
@@ -23,7 +23,7 @@ class RenderContext {
23
23
  this._viewport = vp;
24
24
  this.viewFlags = vp.viewFlags;
25
25
  this.frustum = frustum ? frustum : vp.getFrustum();
26
- this.frustumPlanes = new core_common_1.FrustumPlanes(this.frustum);
26
+ this.frustumPlanes = core_common_1.FrustumPlanes.fromFrustum(this.frustum);
27
27
  }
28
28
  /** Given a point in world coordinates, determine approximately how many pixels it occupies on screen based on this context's frustum. */
29
29
  getPixelSizeAtPoint(inPoint) {
@@ -1 +1 @@
1
- {"version":3,"file":"ViewContext.js","sourceRoot":"","sources":["../../src/ViewContext.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 Rendering\r\n */\r\n\r\nimport { assert, Id64String } from \"@itwin/core-bentley\";\r\nimport {\r\n Matrix3d, Point2d,\r\n Point3d, Range1d, Transform, XAndY,\r\n} from \"@itwin/core-geometry\";\r\nimport { Frustum, FrustumPlanes, SpatialClassifier, ViewFlags } from \"@itwin/core-common\";\r\nimport { CachedDecoration, DecorationsCache } from \"./DecorationsCache\";\r\nimport { IModelApp } from \"./IModelApp\";\r\nimport { PlanarClipMaskState } from \"./PlanarClipMaskState\";\r\nimport { CanvasDecoration } from \"./render/CanvasDecoration\";\r\nimport { Decorations } from \"./render/Decorations\";\r\nimport { GraphicBranch, GraphicBranchOptions } from \"./render/GraphicBranch\";\r\nimport { GraphicBuilder, GraphicType, ViewportGraphicBuilderOptions } from \"./render/GraphicBuilder\";\r\nimport { GraphicList, RenderGraphic } from \"./render/RenderGraphic\";\r\nimport { RenderPlanarClassifier } from \"./render/RenderPlanarClassifier\";\r\nimport { RenderSystem, RenderTextureDrape } from \"./render/RenderSystem\";\r\nimport { RenderTarget } from \"./render/RenderTarget\";\r\nimport { Scene } from \"./render/Scene\";\r\nimport { SpatialClassifierTileTreeReference, Tile, TileGraphicType, TileLoadStatus, TileTreeReference } from \"./tile/internal\";\r\nimport { ViewingSpace } from \"./ViewingSpace\";\r\nimport { ELEMENT_MARKED_FOR_REMOVAL, ScreenViewport, Viewport, ViewportDecorator } from \"./Viewport\";\r\n\r\n/** Provides context for producing [[RenderGraphic]]s for drawing within a [[Viewport]].\r\n * @public\r\n */\r\nexport class RenderContext {\r\n /** ViewFlags extracted from the context's [[Viewport]]. */\r\n public readonly viewFlags: ViewFlags;\r\n private readonly _viewport: Viewport;\r\n /** Frustum extracted from the context's [[Viewport]]. */\r\n public readonly frustum: Frustum;\r\n /** Frustum planes extracted from the context's [[Viewport]]. */\r\n public readonly frustumPlanes: FrustumPlanes;\r\n\r\n constructor(vp: Viewport, frustum?: Frustum) {\r\n this._viewport = vp;\r\n this.viewFlags = vp.viewFlags;\r\n this.frustum = frustum ? frustum : vp.getFrustum();\r\n this.frustumPlanes = new FrustumPlanes(this.frustum);\r\n }\r\n\r\n /** Given a point in world coordinates, determine approximately how many pixels it occupies on screen based on this context's frustum. */\r\n public getPixelSizeAtPoint(inPoint?: Point3d): number {\r\n return this.viewport.viewingSpace.getPixelSizeAtPoint(inPoint);\r\n }\r\n\r\n /** The [[Viewport]] associated with this context. */\r\n public get viewport(): Viewport {\r\n return this._viewport;\r\n }\r\n\r\n /** The [[RenderSystem]] being used to produce graphics for this context. */\r\n public get renderSystem(): RenderSystem {\r\n return this.target.renderSystem;\r\n }\r\n\r\n /** @internal */\r\n public get target(): RenderTarget { return this.viewport.target; }\r\n\r\n /** @internal */\r\n protected _createGraphicBuilder(options: Omit<ViewportGraphicBuilderOptions, \"viewport\">): GraphicBuilder {\r\n return this.target.createGraphicBuilder({ ...options, viewport: this.viewport });\r\n }\r\n\r\n /** Create a builder for creating a [[GraphicType.Scene]] [[RenderGraphic]] for rendering within this context's [[Viewport]].\r\n * @param transform the local-to-world transform in which the builder's geometry is to be defined.\r\n * @returns A builder for creating a [[GraphicType.Scene]] [[RenderGraphic]] for rendering within this context's [[Viewport]].\r\n */\r\n public createSceneGraphicBuilder(transform?: Transform): GraphicBuilder {\r\n return this._createGraphicBuilder({ type: GraphicType.Scene, placement: transform });\r\n }\r\n\r\n /** Create a graphic from a [[GraphicBranch]]. */\r\n public createGraphicBranch(branch: GraphicBranch, location: Transform, opts?: GraphicBranchOptions): RenderGraphic {\r\n return this.target.renderSystem.createGraphicBranch(branch, location, opts);\r\n }\r\n\r\n /** Create a [[RenderGraphic]] which groups a set of graphics into a node in a scene graph, applying to each a transform and optional clip volume and symbology overrides.\r\n * @param branch Contains the group of graphics and the symbology overrides.\r\n * @param location the local-to-world transform applied to the grouped graphics.\r\n * @returns A RenderGraphic suitable for drawing the scene graph node within this context's [[Viewport]].\r\n * @see [[RenderSystem.createBranch]]\r\n */\r\n public createBranch(branch: GraphicBranch, location: Transform): RenderGraphic { return this.createGraphicBranch(branch, location); }\r\n\r\n /** Given the size of a logical pixel in meters, convert it to the size of a physical pixel in meters, if [[RenderSystem.dpiAwareLOD]] is `true`.\r\n * Used when computing LOD for graphics.\r\n * @internal\r\n */\r\n public adjustPixelSizeForLOD(cssPixelSize: number): number {\r\n return this.viewport.target.adjustPixelSizeForLOD(cssPixelSize);\r\n }\r\n}\r\n\r\n/** Provides context for an [[InteractiveTool]] to display decorations representing its current state.\r\n * @see [[InteractiveTool.onDynamicFrame]]\r\n * @public\r\n */\r\nexport class DynamicsContext extends RenderContext {\r\n private _dynamics?: GraphicList;\r\n\r\n /** Add a graphic to the list of dynamic graphics to be drawn in this context's [[Viewport]]. */\r\n public addGraphic(graphic: RenderGraphic) {\r\n if (undefined === this._dynamics)\r\n this._dynamics = [];\r\n this._dynamics.push(graphic);\r\n }\r\n\r\n /** @internal */\r\n public changeDynamics(): void {\r\n this.viewport.changeDynamics(this._dynamics);\r\n }\r\n\r\n /** Create a builder for producing a [[RenderGraphic]] appropriate for rendering within this context's [[Viewport]].\r\n * @param options Options describing how to create the builder.\r\n * @returns A builder that produces a [[RenderGraphic]].\r\n */\r\n public createGraphic(options: Omit<ViewportGraphicBuilderOptions, \"viewport\">): GraphicBuilder {\r\n return this._createGraphicBuilder(options);\r\n }\r\n}\r\n\r\n/** Provides context for a [[ViewportDecorator]] to add [[Decorations]] to be rendered within a [[Viewport]].\r\n * @public\r\n */\r\nexport class DecorateContext extends RenderContext {\r\n private readonly _decorations: Decorations;\r\n private readonly _cache: DecorationsCache;\r\n private _curCacheableDecorator?: ViewportDecorator;\r\n\r\n /** The [[ScreenViewport]] in which this context's [[Decorations]] will be drawn. */\r\n public override get viewport(): ScreenViewport {\r\n return super.viewport as ScreenViewport;\r\n }\r\n\r\n /** @internal */\r\n constructor(vp: ScreenViewport, decorations: Decorations, cache: DecorationsCache) {\r\n super(vp);\r\n this._decorations = decorations;\r\n this._cache = cache;\r\n }\r\n\r\n /** Create a builder for creating a [[RenderGraphic]] of the specified type appropriate for rendering within this context's [[Viewport]].\r\n * @param type The type of builder to create.\r\n * @param transform the local-to-world transform in which the builder's geometry is to be defined.\r\n * @param id If the decoration is to be pickable, a unique identifier to associate with the resultant [[RenderGraphic]].\r\n * @returns A builder for creating a [[RenderGraphic]] of the specified type appropriate for rendering within this context's [[Viewport]].\r\n * @see [[IModelConnection.transientIds]] for obtaining an ID for a pickable decoration.\r\n * @see [[createGraphic]] for more options.\r\n */\r\n public createGraphicBuilder(type: GraphicType, transform?: Transform, id?: Id64String): GraphicBuilder {\r\n return this.createGraphic({ type, placement: transform, pickable: undefined !== id ? { id } : undefined });\r\n }\r\n\r\n /** Create a builder for producing a [[RenderGraphic]] appropriate for rendering within this context's [[Viewport]].\r\n * @param options Options describing how to create the builder.\r\n * @returns A builder that produces a [[RenderGraphic]].\r\n */\r\n public createGraphic(options: Omit<ViewportGraphicBuilderOptions, \"viewport\">): GraphicBuilder {\r\n return this._createGraphicBuilder(options);\r\n }\r\n\r\n /** @internal */\r\n public addFromDecorator(decorator: ViewportDecorator): void {\r\n assert(undefined === this._curCacheableDecorator);\r\n try {\r\n if (decorator.useCachedDecorations) {\r\n const cached = this._cache.get(decorator);\r\n if (cached) {\r\n this.restoreCache(cached);\r\n return;\r\n }\r\n\r\n this._curCacheableDecorator = decorator;\r\n }\r\n\r\n decorator.decorate(this);\r\n } finally {\r\n this._curCacheableDecorator = undefined;\r\n }\r\n }\r\n\r\n /** Restores decorations onto this context from the specified array of cached decorations. */\r\n private restoreCache(cachedDecorations: CachedDecoration[]) {\r\n cachedDecorations.forEach((cachedDecoration) => {\r\n switch (cachedDecoration.type) {\r\n case \"graphic\":\r\n this.addDecoration(cachedDecoration.graphicType, cachedDecoration.graphicOwner);\r\n break;\r\n case \"canvas\":\r\n this.addCanvasDecoration(cachedDecoration.canvasDecoration, cachedDecoration.atFront);\r\n break;\r\n case \"html\":\r\n this.addHtmlDecoration(cachedDecoration.htmlElement);\r\n break;\r\n }\r\n });\r\n }\r\n\r\n private _appendToCache(decoration: CachedDecoration) {\r\n assert(undefined !== this._curCacheableDecorator);\r\n this._cache.add(this._curCacheableDecorator, decoration);\r\n }\r\n\r\n /** Calls [[GraphicBuilder.finish]] on the supplied builder to obtain a [[RenderGraphic]], then adds the graphic to the appropriate list of\r\n * [[Decorations]].\r\n * @param builder The builder from which to extract the graphic.\r\n * @note The builder should not be used after calling this method.\r\n */\r\n public addDecorationFromBuilder(builder: GraphicBuilder) {\r\n this.addDecoration(builder.type, builder.finish());\r\n }\r\n\r\n /** Adds a graphic to the set of [[Decorations]] to be drawn in this context's [[ScreenViewport]].\r\n * @param The type of the graphic, which determines to which list of decorations it is added.\r\n * @param decoration The decoration graphic to add.\r\n * @note The type must match the type with which the [[RenderGraphic]]'s [[GraphicBuilder]] was constructed.\r\n * @see [[DecorateContext.addDecorationFromBuilder]] for a more convenient API.\r\n */\r\n public addDecoration(type: GraphicType, decoration: RenderGraphic) {\r\n if (this._curCacheableDecorator) {\r\n const graphicOwner = this.target.renderSystem.createGraphicOwner(decoration);\r\n this._appendToCache({ type: \"graphic\", graphicOwner, graphicType: type });\r\n decoration = graphicOwner;\r\n }\r\n\r\n switch (type) {\r\n case GraphicType.Scene:\r\n if (undefined === this._decorations.normal)\r\n this._decorations.normal = [];\r\n this._decorations.normal.push(decoration);\r\n break;\r\n\r\n case GraphicType.WorldDecoration:\r\n if (!this._decorations.world)\r\n this._decorations.world = [];\r\n this._decorations.world.push(decoration);\r\n break;\r\n\r\n case GraphicType.WorldOverlay:\r\n if (!this._decorations.worldOverlay)\r\n this._decorations.worldOverlay = [];\r\n this._decorations.worldOverlay.push(decoration);\r\n break;\r\n\r\n case GraphicType.ViewOverlay:\r\n if (!this._decorations.viewOverlay)\r\n this._decorations.viewOverlay = [];\r\n this._decorations.viewOverlay.push(decoration);\r\n break;\r\n\r\n case GraphicType.ViewBackground:\r\n this.setViewBackground(decoration);\r\n break;\r\n }\r\n }\r\n\r\n /** Add a [[CanvasDecoration]] to be drawn in this context's [[ScreenViewport]]. */\r\n public addCanvasDecoration(decoration: CanvasDecoration, atFront = false) {\r\n if (this._curCacheableDecorator)\r\n this._appendToCache({ type: \"canvas\", canvasDecoration: decoration, atFront });\r\n\r\n if (undefined === this._decorations.canvasDecorations)\r\n this._decorations.canvasDecorations = [];\r\n\r\n const list = this._decorations.canvasDecorations;\r\n if (0 === list.length || true === atFront)\r\n list.push(decoration);\r\n else\r\n list.unshift(decoration);\r\n }\r\n\r\n /** Add an HTMLElement to be drawn as a decoration in this context's [[ScreenViewport]]. */\r\n public addHtmlDecoration(decoration: HTMLElement) {\r\n if (this._curCacheableDecorator)\r\n this._appendToCache({ type: \"html\", htmlElement: decoration });\r\n\r\n // an element decoration being added might already be on the decorationDiv, just marked for removal\r\n if (decoration[ELEMENT_MARKED_FOR_REMOVAL]) {\r\n decoration[ELEMENT_MARKED_FOR_REMOVAL] = false;\r\n } else if (decoration.parentElement !== this.viewport.decorationDiv) {\r\n this.viewport.decorationDiv.appendChild(decoration);\r\n }\r\n }\r\n\r\n /** @internal */\r\n public drawStandardGrid(gridOrigin: Point3d, rMatrix: Matrix3d, spacing: XAndY, gridsPerRef: number, _isoGrid: boolean = false, _fixedRepetitions?: Point2d): void {\r\n const vp = this.viewport;\r\n\r\n if (vp.viewingGlobe)\r\n return;\r\n\r\n const color = vp.getContrastToBackgroundColor();\r\n const planarGrid = this.viewport.target.renderSystem.createPlanarGrid(vp.getFrustum(), { origin: gridOrigin, rMatrix, spacing, gridsPerRef, color });\r\n if (planarGrid) {\r\n this.addDecoration(GraphicType.WorldDecoration, planarGrid);\r\n }\r\n }\r\n\r\n /** Display skyBox graphic that encompasses entire scene and rotates with camera.\r\n * @see [[RenderSystem.createSkyBox]].\r\n */\r\n public setSkyBox(graphic: RenderGraphic) {\r\n this._decorations.skyBox = graphic;\r\n }\r\n\r\n /** Set the graphic to be displayed behind all other geometry as the background of this context's [[ScreenViewport]]. */\r\n public setViewBackground(graphic: RenderGraphic) {\r\n this._decorations.viewBackground = graphic;\r\n }\r\n}\r\n\r\n/** Context used to create the scene to be drawn in a [[Viewport]]. The scene consists of a set of [[RenderGraphic]]s produced by the\r\n * [[TileTree]]s visible within the viewport. Creating the scene may result in the enqueueing of requests for [[Tile]] content which\r\n * should be displayed in the viewport but are not yet loaded.\r\n * @public\r\n */\r\nexport class SceneContext extends RenderContext {\r\n private _missingChildTiles = false;\r\n /** The graphics comprising the scene. */\r\n public readonly scene = new Scene();\r\n\r\n /** @internal */\r\n public readonly missingTiles = new Set<Tile>();\r\n\r\n /** @internal */\r\n public markChildrenLoading(): void {\r\n this._missingChildTiles = true;\r\n }\r\n\r\n /** @internal */\r\n public get hasMissingTiles(): boolean {\r\n return this._missingChildTiles || this.missingTiles.size > 0;\r\n }\r\n\r\n private _viewingSpace?: ViewingSpace;\r\n private _graphicType: TileGraphicType = TileGraphicType.Scene;\r\n\r\n public constructor(vp: Viewport, frustum?: Frustum) {\r\n super(vp, frustum);\r\n }\r\n\r\n /** The viewed volume containing the scene. */\r\n public get viewingSpace(): ViewingSpace {\r\n return undefined !== this._viewingSpace ? this._viewingSpace : this.viewport.viewingSpace;\r\n }\r\n\r\n /** @internal */\r\n public get graphicType() { return this._graphicType; }\r\n\r\n /** Add the specified graphic to the scene. */\r\n public outputGraphic(graphic: RenderGraphic): void {\r\n switch (this._graphicType) {\r\n case TileGraphicType.BackgroundMap:\r\n this.backgroundGraphics.push(graphic);\r\n break;\r\n case TileGraphicType.Overlay:\r\n this.overlayGraphics.push(graphic);\r\n break;\r\n default:\r\n this.graphics.push(graphic);\r\n break;\r\n }\r\n }\r\n\r\n /** Indicate that the specified tile is desired for the scene but is not yet ready. A request to load its contents will later be enqueued. */\r\n public insertMissingTile(tile: Tile): void {\r\n switch (tile.loadStatus) {\r\n case TileLoadStatus.NotLoaded:\r\n case TileLoadStatus.Queued:\r\n case TileLoadStatus.Loading:\r\n this.missingTiles.add(tile);\r\n break;\r\n }\r\n }\r\n\r\n /** @internal */\r\n public requestMissingTiles(): void {\r\n IModelApp.tileAdmin.requestTiles(this.viewport, this.missingTiles);\r\n }\r\n\r\n /** @internal */\r\n public addPlanarClassifier(classifiedModelId: Id64String, classifierTree?: SpatialClassifierTileTreeReference, planarClipMask?: PlanarClipMaskState): RenderPlanarClassifier | undefined {\r\n // Target may have the classifier from a previous frame; if not we must create one.\r\n let classifier = this.viewport.target.getPlanarClassifier(classifiedModelId);\r\n if (undefined === classifier)\r\n classifier = this.viewport.target.createPlanarClassifier(classifierTree?.activeClassifier);\r\n\r\n // Either way, we need to collect the graphics to draw for this frame, and record that we did so.\r\n if (undefined !== classifier) {\r\n this.planarClassifiers.set(classifiedModelId, classifier);\r\n classifier.setSource(classifierTree, planarClipMask);\r\n }\r\n\r\n return classifier;\r\n }\r\n\r\n /** @internal */\r\n public getPlanarClassifierForModel(modelId: Id64String) {\r\n return this.planarClassifiers.get(modelId);\r\n }\r\n\r\n /** @internal */\r\n public addBackgroundDrapedModel(drapedTreeRef: TileTreeReference, _heightRange: Range1d | undefined): RenderTextureDrape | undefined {\r\n const drapedTree = drapedTreeRef.treeOwner.tileTree;\r\n if (undefined === drapedTree)\r\n return undefined;\r\n\r\n const id = drapedTree.modelId;\r\n let drape = this.getTextureDrapeForModel(id);\r\n if (undefined !== drape)\r\n return drape;\r\n\r\n drape = this.viewport.target.getTextureDrape(id);\r\n if (undefined === drape && this.viewport.backgroundDrapeMap)\r\n drape = this.viewport.target.renderSystem.createBackgroundMapDrape(drapedTreeRef, this.viewport.backgroundDrapeMap);\r\n\r\n if (undefined !== drape)\r\n this.textureDrapes.set(id, drape);\r\n\r\n return drape;\r\n }\r\n\r\n /** @internal */\r\n public getTextureDrapeForModel(modelId: Id64String) {\r\n return this.textureDrapes.get(modelId);\r\n }\r\n\r\n /** @internal */\r\n public withGraphicType(type: TileGraphicType, func: () => void): void {\r\n const prevType = this._graphicType;\r\n this._graphicType = type;\r\n\r\n func();\r\n\r\n this._graphicType = prevType;\r\n }\r\n\r\n /** The graphics in the scene that will be drawn with depth. */\r\n public get graphics() { return this.scene.foreground; }\r\n /** The graphics that will be drawn behind everything else in the scene. */\r\n public get backgroundGraphics() { return this.scene.background; }\r\n /** The graphics that will be drawn in front of everything else in the scene. */\r\n public get overlayGraphics() { return this.scene.overlay; }\r\n /** @internal */\r\n public get planarClassifiers() { return this.scene.planarClassifiers; }\r\n /** @internal */\r\n public get textureDrapes() { return this.scene.textureDrapes; }\r\n\r\n /** @internal */\r\n public setVolumeClassifier(classifier: SpatialClassifier, modelId: Id64String): void {\r\n this.scene.volumeClassifier = { classifier, modelId };\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"ViewContext.js","sourceRoot":"","sources":["../../src/ViewContext.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;AAC/F;;GAEG;;;AAEH,sDAAyD;AAKzD,oDAA0F;AAE1F,2CAAwC;AAKxC,4DAAqG;AAKrG,0CAAuC;AACvC,8CAA+H;AAE/H,yCAAqG;AAErG;;GAEG;AACH,MAAa,aAAa;IASxB,YAAY,EAAY,EAAE,OAAiB;QACzC,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;QACpB,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC,SAAS,CAAC;QAC9B,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,EAAE,CAAC;QACnD,IAAI,CAAC,aAAa,GAAG,2BAAa,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC/D,CAAC;IAED,yIAAyI;IAClI,mBAAmB,CAAC,OAAiB;QAC1C,OAAO,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC;IACjE,CAAC;IAED,qDAAqD;IACrD,IAAW,QAAQ;QACjB,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAED,4EAA4E;IAC5E,IAAW,YAAY;QACrB,OAAO,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC;IAClC,CAAC;IAED,gBAAgB;IAChB,IAAW,MAAM,KAAmB,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;IAElE,gBAAgB;IACN,qBAAqB,CAAC,OAAwD;QACtF,OAAO,IAAI,CAAC,MAAM,CAAC,oBAAoB,CAAC,EAAE,GAAG,OAAO,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;IACnF,CAAC;IAED;;;OAGG;IACI,yBAAyB,CAAC,SAAqB;QACpD,OAAO,IAAI,CAAC,qBAAqB,CAAC,EAAE,IAAI,EAAE,4BAAW,CAAC,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC,CAAC;IACvF,CAAC;IAED,iDAAiD;IAC1C,mBAAmB,CAAC,MAAqB,EAAE,QAAmB,EAAE,IAA2B;QAChG,OAAO,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,mBAAmB,CAAC,MAAM,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC;IAC9E,CAAC;IAED;;;;;OAKG;IACI,YAAY,CAAC,MAAqB,EAAE,QAAmB,IAAmB,OAAO,IAAI,CAAC,mBAAmB,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;IAErI;;;OAGG;IACI,qBAAqB,CAAC,YAAoB;QAC/C,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,qBAAqB,CAAC,YAAY,CAAC,CAAC;IAClE,CAAC;CACF;AAnED,sCAmEC;AAED;;;GAGG;AACH,MAAa,eAAgB,SAAQ,aAAa;IAGhD,gGAAgG;IACzF,UAAU,CAAC,OAAsB;QACtC,IAAI,SAAS,KAAK,IAAI,CAAC,SAAS;YAC9B,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;QACtB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC/B,CAAC;IAED,gBAAgB;IACT,cAAc;QACnB,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAC/C,CAAC;IAED;;;OAGG;IACI,aAAa,CAAC,OAAwD;QAC3E,OAAO,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC;IAC7C,CAAC;CACF;AAtBD,0CAsBC;AAED;;GAEG;AACH,MAAa,eAAgB,SAAQ,aAAa;IAUhD,gBAAgB;IAChB,YAAY,EAAkB,EAAE,WAAwB,EAAE,KAAuB;QAC/E,KAAK,CAAC,EAAE,CAAC,CAAC;QACV,IAAI,CAAC,YAAY,GAAG,WAAW,CAAC;QAChC,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;IACtB,CAAC;IAVD,oFAAoF;IACpF,IAAoB,QAAQ;QAC1B,OAAO,KAAK,CAAC,QAA0B,CAAC;IAC1C,CAAC;IASD;;;;;;;OAOG;IACI,oBAAoB,CAAC,IAAiB,EAAE,SAAqB,EAAE,EAAe;QACnF,OAAO,IAAI,CAAC,aAAa,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC;IAC7G,CAAC;IAED;;;OAGG;IACI,aAAa,CAAC,OAAwD;QAC3E,OAAO,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC;IAC7C,CAAC;IAED,gBAAgB;IACT,gBAAgB,CAAC,SAA4B;QAClD,IAAA,qBAAM,EAAC,SAAS,KAAK,IAAI,CAAC,sBAAsB,CAAC,CAAC;QAClD,IAAI;YACF,IAAI,SAAS,CAAC,oBAAoB,EAAE;gBAClC,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;gBAC1C,IAAI,MAAM,EAAE;oBACV,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;oBAC1B,OAAO;iBACR;gBAED,IAAI,CAAC,sBAAsB,GAAG,SAAS,CAAC;aACzC;YAED,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;SAC1B;gBAAS;YACR,IAAI,CAAC,sBAAsB,GAAG,SAAS,CAAC;SACzC;IACH,CAAC;IAED,6FAA6F;IACrF,YAAY,CAAC,iBAAqC;QACxD,iBAAiB,CAAC,OAAO,CAAC,CAAC,gBAAgB,EAAE,EAAE;YAC7C,QAAQ,gBAAgB,CAAC,IAAI,EAAE;gBAC7B,KAAK,SAAS;oBACZ,IAAI,CAAC,aAAa,CAAC,gBAAgB,CAAC,WAAW,EAAE,gBAAgB,CAAC,YAAY,CAAC,CAAC;oBAChF,MAAM;gBACR,KAAK,QAAQ;oBACX,IAAI,CAAC,mBAAmB,CAAC,gBAAgB,CAAC,gBAAgB,EAAE,gBAAgB,CAAC,OAAO,CAAC,CAAC;oBACtF,MAAM;gBACR,KAAK,MAAM;oBACT,IAAI,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,WAAW,CAAC,CAAC;oBACrD,MAAM;aACT;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,cAAc,CAAC,UAA4B;QACjD,IAAA,qBAAM,EAAC,SAAS,KAAK,IAAI,CAAC,sBAAsB,CAAC,CAAC;QAClD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,sBAAsB,EAAE,UAAU,CAAC,CAAC;IAC3D,CAAC;IAED;;;;OAIG;IACI,wBAAwB,CAAC,OAAuB;QACrD,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IACrD,CAAC;IAED;;;;;OAKG;IACI,aAAa,CAAC,IAAiB,EAAE,UAAyB;QAC/D,IAAI,IAAI,CAAC,sBAAsB,EAAE;YAC/B,MAAM,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,kBAAkB,CAAC,UAAU,CAAC,CAAC;YAC7E,IAAI,CAAC,cAAc,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,YAAY,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC;YAC1E,UAAU,GAAG,YAAY,CAAC;SAC3B;QAED,QAAQ,IAAI,EAAE;YACZ,KAAK,4BAAW,CAAC,KAAK;gBACpB,IAAI,SAAS,KAAK,IAAI,CAAC,YAAY,CAAC,MAAM;oBACxC,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,EAAE,CAAC;gBAChC,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;gBAC1C,MAAM;YAER,KAAK,4BAAW,CAAC,eAAe;gBAC9B,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK;oBAC1B,IAAI,CAAC,YAAY,CAAC,KAAK,GAAG,EAAE,CAAC;gBAC/B,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;gBACzC,MAAM;YAER,KAAK,4BAAW,CAAC,YAAY;gBAC3B,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,YAAY;oBACjC,IAAI,CAAC,YAAY,CAAC,YAAY,GAAG,EAAE,CAAC;gBACtC,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;gBAChD,MAAM;YAER,KAAK,4BAAW,CAAC,WAAW;gBAC1B,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,WAAW;oBAChC,IAAI,CAAC,YAAY,CAAC,WAAW,GAAG,EAAE,CAAC;gBACrC,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;gBAC/C,MAAM;YAER,KAAK,4BAAW,CAAC,cAAc;gBAC7B,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC;gBACnC,MAAM;SACT;IACH,CAAC;IAED,mFAAmF;IAC5E,mBAAmB,CAAC,UAA4B,EAAE,OAAO,GAAG,KAAK;QACtE,IAAI,IAAI,CAAC,sBAAsB;YAC7B,IAAI,CAAC,cAAc,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,gBAAgB,EAAE,UAAU,EAAE,OAAO,EAAE,CAAC,CAAC;QAEjF,IAAI,SAAS,KAAK,IAAI,CAAC,YAAY,CAAC,iBAAiB;YACnD,IAAI,CAAC,YAAY,CAAC,iBAAiB,GAAG,EAAE,CAAC;QAE3C,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,iBAAiB,CAAC;QACjD,IAAI,CAAC,KAAK,IAAI,CAAC,MAAM,IAAI,IAAI,KAAK,OAAO;YACvC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;;YAEtB,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IAC7B,CAAC;IAED,2FAA2F;IACpF,iBAAiB,CAAC,UAAuB;QAC9C,IAAI,IAAI,CAAC,sBAAsB;YAC7B,IAAI,CAAC,cAAc,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,UAAU,EAAE,CAAC,CAAC;QAEjE,mGAAmG;QACnG,IAAI,UAAU,CAAC,qCAA0B,CAAC,EAAE;YAC1C,UAAU,CAAC,qCAA0B,CAAC,GAAG,KAAK,CAAC;SAChD;aAAM,IAAI,UAAU,CAAC,aAAa,KAAK,IAAI,CAAC,QAAQ,CAAC,aAAa,EAAE;YACnE,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;SACrD;IACH,CAAC;IAED,gBAAgB;IACT,gBAAgB,CAAC,UAAmB,EAAE,OAAiB,EAAE,OAAc,EAAE,WAAmB,EAAE,WAAoB,KAAK,EAAE,iBAA2B;QACzJ,MAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC;QAEzB,IAAI,EAAE,CAAC,YAAY;YACjB,OAAO;QAET,MAAM,KAAK,GAAG,EAAE,CAAC,4BAA4B,EAAE,CAAC;QAChD,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,YAAY,CAAC,gBAAgB,CAAC,EAAE,CAAC,UAAU,EAAE,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,CAAC;QACrJ,IAAI,UAAU,EAAE;YACd,IAAI,CAAC,aAAa,CAAC,4BAAW,CAAC,eAAe,EAAE,UAAU,CAAC,CAAC;SAC7D;IACH,CAAC;IAED;;OAEG;IACI,SAAS,CAAC,OAAsB;QACrC,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,OAAO,CAAC;IACrC,CAAC;IAED,wHAAwH;IACjH,iBAAiB,CAAC,OAAsB;QAC7C,IAAI,CAAC,YAAY,CAAC,cAAc,GAAG,OAAO,CAAC;IAC7C,CAAC;CACF;AAzLD,0CAyLC;AAED;;;;GAIG;AACH,MAAa,YAAa,SAAQ,aAAa;IAqB7C,YAAmB,EAAY,EAAE,OAAiB;QAChD,KAAK,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;QArBb,uBAAkB,GAAG,KAAK,CAAC;QACnC,yCAAyC;QACzB,UAAK,GAAG,IAAI,aAAK,EAAE,CAAC;QAEpC,gBAAgB;QACA,iBAAY,GAAG,IAAI,GAAG,EAAQ,CAAC;QAavC,iBAAY,GAAoB,0BAAe,CAAC,KAAK,CAAC;IAI9D,CAAC;IAfD,gBAAgB;IACT,mBAAmB;QACxB,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC;IACjC,CAAC;IAED,gBAAgB;IAChB,IAAW,eAAe;QACxB,OAAO,IAAI,CAAC,kBAAkB,IAAI,IAAI,CAAC,YAAY,CAAC,IAAI,GAAG,CAAC,CAAC;IAC/D,CAAC;IASD,8CAA8C;IAC9C,IAAW,YAAY;QACrB,OAAO,SAAS,KAAK,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC;IAC5F,CAAC;IAED,gBAAgB;IAChB,IAAW,WAAW,KAAK,OAAO,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;IAEtD,8CAA8C;IACvC,aAAa,CAAC,OAAsB;QACzC,QAAQ,IAAI,CAAC,YAAY,EAAE;YACzB,KAAK,0BAAe,CAAC,aAAa;gBAChC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBACtC,MAAM;YACR,KAAK,0BAAe,CAAC,OAAO;gBAC1B,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBACnC,MAAM;YACR;gBACE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBAC5B,MAAM;SACT;IACH,CAAC;IAED,6IAA6I;IACtI,iBAAiB,CAAC,IAAU;QACjC,QAAQ,IAAI,CAAC,UAAU,EAAE;YACvB,KAAK,yBAAc,CAAC,SAAS,CAAC;YAC9B,KAAK,yBAAc,CAAC,MAAM,CAAC;YAC3B,KAAK,yBAAc,CAAC,OAAO;gBACzB,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;gBAC5B,MAAM;SACT;IACH,CAAC;IAED,gBAAgB;IACT,mBAAmB;QACxB,qBAAS,CAAC,SAAS,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;IACrE,CAAC;IAED,gBAAgB;IACT,mBAAmB,CAAC,iBAA6B,EAAE,cAAmD,EAAE,cAAoC;QACjJ,mFAAmF;QACnF,IAAI,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,mBAAmB,CAAC,iBAAiB,CAAC,CAAC;QAC7E,IAAI,SAAS,KAAK,UAAU;YAC1B,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,sBAAsB,CAAC,cAAc,aAAd,cAAc,uBAAd,cAAc,CAAE,gBAAgB,CAAC,CAAC;QAE7F,iGAAiG;QACjG,IAAI,SAAS,KAAK,UAAU,EAAE;YAC5B,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,iBAAiB,EAAE,UAAU,CAAC,CAAC;YAC1D,UAAU,CAAC,SAAS,CAAC,cAAc,EAAE,cAAc,CAAC,CAAC;SACtD;QAED,OAAO,UAAU,CAAC;IACpB,CAAC;IAED,gBAAgB;IACT,2BAA2B,CAAC,OAAmB;QACpD,OAAO,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IAC7C,CAAC;IAED,gBAAgB;IACT,wBAAwB,CAAC,aAAgC,EAAE,YAAiC;QACjG,MAAM,UAAU,GAAG,aAAa,CAAC,SAAS,CAAC,QAAQ,CAAC;QACpD,IAAI,SAAS,KAAK,UAAU;YAC1B,OAAO,SAAS,CAAC;QAEnB,MAAM,EAAE,GAAG,UAAU,CAAC,OAAO,CAAC;QAC9B,IAAI,KAAK,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,CAAC,CAAC;QAC7C,IAAI,SAAS,KAAK,KAAK;YACrB,OAAO,KAAK,CAAC;QAEf,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC;QACjD,IAAI,SAAS,KAAK,KAAK,IAAI,IAAI,CAAC,QAAQ,CAAC,kBAAkB;YACzD,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,YAAY,CAAC,wBAAwB,CAAC,aAAa,EAAE,IAAI,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAC;QAEtH,IAAI,SAAS,KAAK,KAAK;YACrB,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;QAEpC,OAAO,KAAK,CAAC;IACf,CAAC;IAED,gBAAgB;IACT,uBAAuB,CAAC,OAAmB;QAChD,OAAO,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACzC,CAAC;IAED,gBAAgB;IACT,eAAe,CAAC,IAAqB,EAAE,IAAgB;QAC5D,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC;QACnC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;QAEzB,IAAI,EAAE,CAAC;QAEP,IAAI,CAAC,YAAY,GAAG,QAAQ,CAAC;IAC/B,CAAC;IAED,+DAA+D;IAC/D,IAAW,QAAQ,KAAK,OAAO,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC;IACvD,2EAA2E;IAC3E,IAAW,kBAAkB,KAAK,OAAO,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC;IACjE,gFAAgF;IAChF,IAAW,eAAe,KAAK,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;IAC3D,gBAAgB;IAChB,IAAW,iBAAiB,KAAK,OAAO,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC,CAAC;IACvE,gBAAgB;IAChB,IAAW,aAAa,KAAK,OAAO,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC;IAE/D,gBAAgB;IACT,mBAAmB,CAAC,UAA6B,EAAE,OAAmB;QAC3E,IAAI,CAAC,KAAK,CAAC,gBAAgB,GAAG,EAAE,UAAU,EAAE,OAAO,EAAE,CAAC;IACxD,CAAC;CACF;AAxID,oCAwIC","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 Rendering\r\n */\r\n\r\nimport { assert, Id64String } from \"@itwin/core-bentley\";\r\nimport {\r\n Matrix3d, Point2d,\r\n Point3d, Range1d, Transform, XAndY,\r\n} from \"@itwin/core-geometry\";\r\nimport { Frustum, FrustumPlanes, SpatialClassifier, ViewFlags } from \"@itwin/core-common\";\r\nimport { CachedDecoration, DecorationsCache } from \"./DecorationsCache\";\r\nimport { IModelApp } from \"./IModelApp\";\r\nimport { PlanarClipMaskState } from \"./PlanarClipMaskState\";\r\nimport { CanvasDecoration } from \"./render/CanvasDecoration\";\r\nimport { Decorations } from \"./render/Decorations\";\r\nimport { GraphicBranch, GraphicBranchOptions } from \"./render/GraphicBranch\";\r\nimport { GraphicBuilder, GraphicType, ViewportGraphicBuilderOptions } from \"./render/GraphicBuilder\";\r\nimport { GraphicList, RenderGraphic } from \"./render/RenderGraphic\";\r\nimport { RenderPlanarClassifier } from \"./render/RenderPlanarClassifier\";\r\nimport { RenderSystem, RenderTextureDrape } from \"./render/RenderSystem\";\r\nimport { RenderTarget } from \"./render/RenderTarget\";\r\nimport { Scene } from \"./render/Scene\";\r\nimport { SpatialClassifierTileTreeReference, Tile, TileGraphicType, TileLoadStatus, TileTreeReference } from \"./tile/internal\";\r\nimport { ViewingSpace } from \"./ViewingSpace\";\r\nimport { ELEMENT_MARKED_FOR_REMOVAL, ScreenViewport, Viewport, ViewportDecorator } from \"./Viewport\";\r\n\r\n/** Provides context for producing [[RenderGraphic]]s for drawing within a [[Viewport]].\r\n * @public\r\n */\r\nexport class RenderContext {\r\n /** ViewFlags extracted from the context's [[Viewport]]. */\r\n public readonly viewFlags: ViewFlags;\r\n private readonly _viewport: Viewport;\r\n /** Frustum extracted from the context's [[Viewport]]. */\r\n public readonly frustum: Frustum;\r\n /** Frustum planes extracted from the context's [[Viewport]]. */\r\n public readonly frustumPlanes: FrustumPlanes;\r\n\r\n constructor(vp: Viewport, frustum?: Frustum) {\r\n this._viewport = vp;\r\n this.viewFlags = vp.viewFlags;\r\n this.frustum = frustum ? frustum : vp.getFrustum();\r\n this.frustumPlanes = FrustumPlanes.fromFrustum(this.frustum);\r\n }\r\n\r\n /** Given a point in world coordinates, determine approximately how many pixels it occupies on screen based on this context's frustum. */\r\n public getPixelSizeAtPoint(inPoint?: Point3d): number {\r\n return this.viewport.viewingSpace.getPixelSizeAtPoint(inPoint);\r\n }\r\n\r\n /** The [[Viewport]] associated with this context. */\r\n public get viewport(): Viewport {\r\n return this._viewport;\r\n }\r\n\r\n /** The [[RenderSystem]] being used to produce graphics for this context. */\r\n public get renderSystem(): RenderSystem {\r\n return this.target.renderSystem;\r\n }\r\n\r\n /** @internal */\r\n public get target(): RenderTarget { return this.viewport.target; }\r\n\r\n /** @internal */\r\n protected _createGraphicBuilder(options: Omit<ViewportGraphicBuilderOptions, \"viewport\">): GraphicBuilder {\r\n return this.target.createGraphicBuilder({ ...options, viewport: this.viewport });\r\n }\r\n\r\n /** Create a builder for creating a [[GraphicType.Scene]] [[RenderGraphic]] for rendering within this context's [[Viewport]].\r\n * @param transform the local-to-world transform in which the builder's geometry is to be defined.\r\n * @returns A builder for creating a [[GraphicType.Scene]] [[RenderGraphic]] for rendering within this context's [[Viewport]].\r\n */\r\n public createSceneGraphicBuilder(transform?: Transform): GraphicBuilder {\r\n return this._createGraphicBuilder({ type: GraphicType.Scene, placement: transform });\r\n }\r\n\r\n /** Create a graphic from a [[GraphicBranch]]. */\r\n public createGraphicBranch(branch: GraphicBranch, location: Transform, opts?: GraphicBranchOptions): RenderGraphic {\r\n return this.target.renderSystem.createGraphicBranch(branch, location, opts);\r\n }\r\n\r\n /** Create a [[RenderGraphic]] which groups a set of graphics into a node in a scene graph, applying to each a transform and optional clip volume and symbology overrides.\r\n * @param branch Contains the group of graphics and the symbology overrides.\r\n * @param location the local-to-world transform applied to the grouped graphics.\r\n * @returns A RenderGraphic suitable for drawing the scene graph node within this context's [[Viewport]].\r\n * @see [[RenderSystem.createBranch]]\r\n */\r\n public createBranch(branch: GraphicBranch, location: Transform): RenderGraphic { return this.createGraphicBranch(branch, location); }\r\n\r\n /** Given the size of a logical pixel in meters, convert it to the size of a physical pixel in meters, if [[RenderSystem.dpiAwareLOD]] is `true`.\r\n * Used when computing LOD for graphics.\r\n * @internal\r\n */\r\n public adjustPixelSizeForLOD(cssPixelSize: number): number {\r\n return this.viewport.target.adjustPixelSizeForLOD(cssPixelSize);\r\n }\r\n}\r\n\r\n/** Provides context for an [[InteractiveTool]] to display decorations representing its current state.\r\n * @see [[InteractiveTool.onDynamicFrame]]\r\n * @public\r\n */\r\nexport class DynamicsContext extends RenderContext {\r\n private _dynamics?: GraphicList;\r\n\r\n /** Add a graphic to the list of dynamic graphics to be drawn in this context's [[Viewport]]. */\r\n public addGraphic(graphic: RenderGraphic) {\r\n if (undefined === this._dynamics)\r\n this._dynamics = [];\r\n this._dynamics.push(graphic);\r\n }\r\n\r\n /** @internal */\r\n public changeDynamics(): void {\r\n this.viewport.changeDynamics(this._dynamics);\r\n }\r\n\r\n /** Create a builder for producing a [[RenderGraphic]] appropriate for rendering within this context's [[Viewport]].\r\n * @param options Options describing how to create the builder.\r\n * @returns A builder that produces a [[RenderGraphic]].\r\n */\r\n public createGraphic(options: Omit<ViewportGraphicBuilderOptions, \"viewport\">): GraphicBuilder {\r\n return this._createGraphicBuilder(options);\r\n }\r\n}\r\n\r\n/** Provides context for a [[ViewportDecorator]] to add [[Decorations]] to be rendered within a [[Viewport]].\r\n * @public\r\n */\r\nexport class DecorateContext extends RenderContext {\r\n private readonly _decorations: Decorations;\r\n private readonly _cache: DecorationsCache;\r\n private _curCacheableDecorator?: ViewportDecorator;\r\n\r\n /** The [[ScreenViewport]] in which this context's [[Decorations]] will be drawn. */\r\n public override get viewport(): ScreenViewport {\r\n return super.viewport as ScreenViewport;\r\n }\r\n\r\n /** @internal */\r\n constructor(vp: ScreenViewport, decorations: Decorations, cache: DecorationsCache) {\r\n super(vp);\r\n this._decorations = decorations;\r\n this._cache = cache;\r\n }\r\n\r\n /** Create a builder for creating a [[RenderGraphic]] of the specified type appropriate for rendering within this context's [[Viewport]].\r\n * @param type The type of builder to create.\r\n * @param transform the local-to-world transform in which the builder's geometry is to be defined.\r\n * @param id If the decoration is to be pickable, a unique identifier to associate with the resultant [[RenderGraphic]].\r\n * @returns A builder for creating a [[RenderGraphic]] of the specified type appropriate for rendering within this context's [[Viewport]].\r\n * @see [[IModelConnection.transientIds]] for obtaining an ID for a pickable decoration.\r\n * @see [[createGraphic]] for more options.\r\n */\r\n public createGraphicBuilder(type: GraphicType, transform?: Transform, id?: Id64String): GraphicBuilder {\r\n return this.createGraphic({ type, placement: transform, pickable: undefined !== id ? { id } : undefined });\r\n }\r\n\r\n /** Create a builder for producing a [[RenderGraphic]] appropriate for rendering within this context's [[Viewport]].\r\n * @param options Options describing how to create the builder.\r\n * @returns A builder that produces a [[RenderGraphic]].\r\n */\r\n public createGraphic(options: Omit<ViewportGraphicBuilderOptions, \"viewport\">): GraphicBuilder {\r\n return this._createGraphicBuilder(options);\r\n }\r\n\r\n /** @internal */\r\n public addFromDecorator(decorator: ViewportDecorator): void {\r\n assert(undefined === this._curCacheableDecorator);\r\n try {\r\n if (decorator.useCachedDecorations) {\r\n const cached = this._cache.get(decorator);\r\n if (cached) {\r\n this.restoreCache(cached);\r\n return;\r\n }\r\n\r\n this._curCacheableDecorator = decorator;\r\n }\r\n\r\n decorator.decorate(this);\r\n } finally {\r\n this._curCacheableDecorator = undefined;\r\n }\r\n }\r\n\r\n /** Restores decorations onto this context from the specified array of cached decorations. */\r\n private restoreCache(cachedDecorations: CachedDecoration[]) {\r\n cachedDecorations.forEach((cachedDecoration) => {\r\n switch (cachedDecoration.type) {\r\n case \"graphic\":\r\n this.addDecoration(cachedDecoration.graphicType, cachedDecoration.graphicOwner);\r\n break;\r\n case \"canvas\":\r\n this.addCanvasDecoration(cachedDecoration.canvasDecoration, cachedDecoration.atFront);\r\n break;\r\n case \"html\":\r\n this.addHtmlDecoration(cachedDecoration.htmlElement);\r\n break;\r\n }\r\n });\r\n }\r\n\r\n private _appendToCache(decoration: CachedDecoration) {\r\n assert(undefined !== this._curCacheableDecorator);\r\n this._cache.add(this._curCacheableDecorator, decoration);\r\n }\r\n\r\n /** Calls [[GraphicBuilder.finish]] on the supplied builder to obtain a [[RenderGraphic]], then adds the graphic to the appropriate list of\r\n * [[Decorations]].\r\n * @param builder The builder from which to extract the graphic.\r\n * @note The builder should not be used after calling this method.\r\n */\r\n public addDecorationFromBuilder(builder: GraphicBuilder) {\r\n this.addDecoration(builder.type, builder.finish());\r\n }\r\n\r\n /** Adds a graphic to the set of [[Decorations]] to be drawn in this context's [[ScreenViewport]].\r\n * @param The type of the graphic, which determines to which list of decorations it is added.\r\n * @param decoration The decoration graphic to add.\r\n * @note The type must match the type with which the [[RenderGraphic]]'s [[GraphicBuilder]] was constructed.\r\n * @see [[DecorateContext.addDecorationFromBuilder]] for a more convenient API.\r\n */\r\n public addDecoration(type: GraphicType, decoration: RenderGraphic) {\r\n if (this._curCacheableDecorator) {\r\n const graphicOwner = this.target.renderSystem.createGraphicOwner(decoration);\r\n this._appendToCache({ type: \"graphic\", graphicOwner, graphicType: type });\r\n decoration = graphicOwner;\r\n }\r\n\r\n switch (type) {\r\n case GraphicType.Scene:\r\n if (undefined === this._decorations.normal)\r\n this._decorations.normal = [];\r\n this._decorations.normal.push(decoration);\r\n break;\r\n\r\n case GraphicType.WorldDecoration:\r\n if (!this._decorations.world)\r\n this._decorations.world = [];\r\n this._decorations.world.push(decoration);\r\n break;\r\n\r\n case GraphicType.WorldOverlay:\r\n if (!this._decorations.worldOverlay)\r\n this._decorations.worldOverlay = [];\r\n this._decorations.worldOverlay.push(decoration);\r\n break;\r\n\r\n case GraphicType.ViewOverlay:\r\n if (!this._decorations.viewOverlay)\r\n this._decorations.viewOverlay = [];\r\n this._decorations.viewOverlay.push(decoration);\r\n break;\r\n\r\n case GraphicType.ViewBackground:\r\n this.setViewBackground(decoration);\r\n break;\r\n }\r\n }\r\n\r\n /** Add a [[CanvasDecoration]] to be drawn in this context's [[ScreenViewport]]. */\r\n public addCanvasDecoration(decoration: CanvasDecoration, atFront = false) {\r\n if (this._curCacheableDecorator)\r\n this._appendToCache({ type: \"canvas\", canvasDecoration: decoration, atFront });\r\n\r\n if (undefined === this._decorations.canvasDecorations)\r\n this._decorations.canvasDecorations = [];\r\n\r\n const list = this._decorations.canvasDecorations;\r\n if (0 === list.length || true === atFront)\r\n list.push(decoration);\r\n else\r\n list.unshift(decoration);\r\n }\r\n\r\n /** Add an HTMLElement to be drawn as a decoration in this context's [[ScreenViewport]]. */\r\n public addHtmlDecoration(decoration: HTMLElement) {\r\n if (this._curCacheableDecorator)\r\n this._appendToCache({ type: \"html\", htmlElement: decoration });\r\n\r\n // an element decoration being added might already be on the decorationDiv, just marked for removal\r\n if (decoration[ELEMENT_MARKED_FOR_REMOVAL]) {\r\n decoration[ELEMENT_MARKED_FOR_REMOVAL] = false;\r\n } else if (decoration.parentElement !== this.viewport.decorationDiv) {\r\n this.viewport.decorationDiv.appendChild(decoration);\r\n }\r\n }\r\n\r\n /** @internal */\r\n public drawStandardGrid(gridOrigin: Point3d, rMatrix: Matrix3d, spacing: XAndY, gridsPerRef: number, _isoGrid: boolean = false, _fixedRepetitions?: Point2d): void {\r\n const vp = this.viewport;\r\n\r\n if (vp.viewingGlobe)\r\n return;\r\n\r\n const color = vp.getContrastToBackgroundColor();\r\n const planarGrid = this.viewport.target.renderSystem.createPlanarGrid(vp.getFrustum(), { origin: gridOrigin, rMatrix, spacing, gridsPerRef, color });\r\n if (planarGrid) {\r\n this.addDecoration(GraphicType.WorldDecoration, planarGrid);\r\n }\r\n }\r\n\r\n /** Display skyBox graphic that encompasses entire scene and rotates with camera.\r\n * @see [[RenderSystem.createSkyBox]].\r\n */\r\n public setSkyBox(graphic: RenderGraphic) {\r\n this._decorations.skyBox = graphic;\r\n }\r\n\r\n /** Set the graphic to be displayed behind all other geometry as the background of this context's [[ScreenViewport]]. */\r\n public setViewBackground(graphic: RenderGraphic) {\r\n this._decorations.viewBackground = graphic;\r\n }\r\n}\r\n\r\n/** Context used to create the scene to be drawn in a [[Viewport]]. The scene consists of a set of [[RenderGraphic]]s produced by the\r\n * [[TileTree]]s visible within the viewport. Creating the scene may result in the enqueueing of requests for [[Tile]] content which\r\n * should be displayed in the viewport but are not yet loaded.\r\n * @public\r\n */\r\nexport class SceneContext extends RenderContext {\r\n private _missingChildTiles = false;\r\n /** The graphics comprising the scene. */\r\n public readonly scene = new Scene();\r\n\r\n /** @internal */\r\n public readonly missingTiles = new Set<Tile>();\r\n\r\n /** @internal */\r\n public markChildrenLoading(): void {\r\n this._missingChildTiles = true;\r\n }\r\n\r\n /** @internal */\r\n public get hasMissingTiles(): boolean {\r\n return this._missingChildTiles || this.missingTiles.size > 0;\r\n }\r\n\r\n private _viewingSpace?: ViewingSpace;\r\n private _graphicType: TileGraphicType = TileGraphicType.Scene;\r\n\r\n public constructor(vp: Viewport, frustum?: Frustum) {\r\n super(vp, frustum);\r\n }\r\n\r\n /** The viewed volume containing the scene. */\r\n public get viewingSpace(): ViewingSpace {\r\n return undefined !== this._viewingSpace ? this._viewingSpace : this.viewport.viewingSpace;\r\n }\r\n\r\n /** @internal */\r\n public get graphicType() { return this._graphicType; }\r\n\r\n /** Add the specified graphic to the scene. */\r\n public outputGraphic(graphic: RenderGraphic): void {\r\n switch (this._graphicType) {\r\n case TileGraphicType.BackgroundMap:\r\n this.backgroundGraphics.push(graphic);\r\n break;\r\n case TileGraphicType.Overlay:\r\n this.overlayGraphics.push(graphic);\r\n break;\r\n default:\r\n this.graphics.push(graphic);\r\n break;\r\n }\r\n }\r\n\r\n /** Indicate that the specified tile is desired for the scene but is not yet ready. A request to load its contents will later be enqueued. */\r\n public insertMissingTile(tile: Tile): void {\r\n switch (tile.loadStatus) {\r\n case TileLoadStatus.NotLoaded:\r\n case TileLoadStatus.Queued:\r\n case TileLoadStatus.Loading:\r\n this.missingTiles.add(tile);\r\n break;\r\n }\r\n }\r\n\r\n /** @internal */\r\n public requestMissingTiles(): void {\r\n IModelApp.tileAdmin.requestTiles(this.viewport, this.missingTiles);\r\n }\r\n\r\n /** @internal */\r\n public addPlanarClassifier(classifiedModelId: Id64String, classifierTree?: SpatialClassifierTileTreeReference, planarClipMask?: PlanarClipMaskState): RenderPlanarClassifier | undefined {\r\n // Target may have the classifier from a previous frame; if not we must create one.\r\n let classifier = this.viewport.target.getPlanarClassifier(classifiedModelId);\r\n if (undefined === classifier)\r\n classifier = this.viewport.target.createPlanarClassifier(classifierTree?.activeClassifier);\r\n\r\n // Either way, we need to collect the graphics to draw for this frame, and record that we did so.\r\n if (undefined !== classifier) {\r\n this.planarClassifiers.set(classifiedModelId, classifier);\r\n classifier.setSource(classifierTree, planarClipMask);\r\n }\r\n\r\n return classifier;\r\n }\r\n\r\n /** @internal */\r\n public getPlanarClassifierForModel(modelId: Id64String) {\r\n return this.planarClassifiers.get(modelId);\r\n }\r\n\r\n /** @internal */\r\n public addBackgroundDrapedModel(drapedTreeRef: TileTreeReference, _heightRange: Range1d | undefined): RenderTextureDrape | undefined {\r\n const drapedTree = drapedTreeRef.treeOwner.tileTree;\r\n if (undefined === drapedTree)\r\n return undefined;\r\n\r\n const id = drapedTree.modelId;\r\n let drape = this.getTextureDrapeForModel(id);\r\n if (undefined !== drape)\r\n return drape;\r\n\r\n drape = this.viewport.target.getTextureDrape(id);\r\n if (undefined === drape && this.viewport.backgroundDrapeMap)\r\n drape = this.viewport.target.renderSystem.createBackgroundMapDrape(drapedTreeRef, this.viewport.backgroundDrapeMap);\r\n\r\n if (undefined !== drape)\r\n this.textureDrapes.set(id, drape);\r\n\r\n return drape;\r\n }\r\n\r\n /** @internal */\r\n public getTextureDrapeForModel(modelId: Id64String) {\r\n return this.textureDrapes.get(modelId);\r\n }\r\n\r\n /** @internal */\r\n public withGraphicType(type: TileGraphicType, func: () => void): void {\r\n const prevType = this._graphicType;\r\n this._graphicType = type;\r\n\r\n func();\r\n\r\n this._graphicType = prevType;\r\n }\r\n\r\n /** The graphics in the scene that will be drawn with depth. */\r\n public get graphics() { return this.scene.foreground; }\r\n /** The graphics that will be drawn behind everything else in the scene. */\r\n public get backgroundGraphics() { return this.scene.background; }\r\n /** The graphics that will be drawn in front of everything else in the scene. */\r\n public get overlayGraphics() { return this.scene.overlay; }\r\n /** @internal */\r\n public get planarClassifiers() { return this.scene.planarClassifiers; }\r\n /** @internal */\r\n public get textureDrapes() { return this.scene.textureDrapes; }\r\n\r\n /** @internal */\r\n public setVolumeClassifier(classifier: SpatialClassifier, modelId: Id64String): void {\r\n this.scene.volumeClassifier = { classifier, modelId };\r\n }\r\n}\r\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"ViewManager.d.ts","sourceRoot":"","sources":["../../src/ViewManager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ViewManager.d.ts","sourceRoot":"","sources":["../../src/ViewManager.ts"],"names":[],"mappings":"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"}
@@ -11,7 +11,6 @@ exports.ViewManager = void 0;
11
11
  const core_bentley_1 = require("@itwin/core-bentley");
12
12
  const IModelApp_1 = require("./IModelApp");
13
13
  const internal_1 = require("./tile/internal");
14
- const EventController_1 = require("./tools/EventController");
15
14
  const Tool_1 = require("./tools/Tool");
16
15
  const System_1 = require("./render/webgl/System");
17
16
  /** The ViewManager holds the list of opened views, plus the *selected view*. It also provides notifications of view open/close and suspend/resume.
@@ -172,7 +171,7 @@ class ViewManager {
172
171
  addViewport(newVp) {
173
172
  if (this.hasViewport(newVp)) // make sure its not already added
174
173
  return core_bentley_1.BentleyStatus.ERROR;
175
- newVp.setEventController(new EventController_1.EventController(newVp)); // this will direct events to the viewport
174
+ newVp.onViewManagerAdd();
176
175
  this._viewports.push(newVp);
177
176
  this.updateRenderToScreen();
178
177
  this.setSelectedView(newVp); // eslint-disable-line @typescript-eslint/no-floating-promises
@@ -201,7 +200,7 @@ class ViewManager {
201
200
  this.onViewClose.emit(vp);
202
201
  // make sure tools don't think the cursor is still in this viewport
203
202
  IModelApp_1.IModelApp.toolAdmin.forgetViewport(vp);
204
- vp.setEventController(undefined);
203
+ vp.onViewManagerDrop();
205
204
  this._viewports.splice(index, 1);
206
205
  if (this.selectedView === vp) // if removed viewport was selectedView, set it to undefined.
207
206
  this.setSelectedView(undefined); // eslint-disable-line @typescript-eslint/no-floating-promises