@itwin/core-frontend 3.6.0-dev.3 → 3.6.0-dev.33

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 (314) hide show
  1. package/CHANGELOG.md +29 -1
  2. package/lib/cjs/AccuDraw.js +1 -1
  3. package/lib/cjs/AccuDraw.js.map +1 -1
  4. package/lib/cjs/EnvironmentDecorations.d.ts +4 -4
  5. package/lib/cjs/EnvironmentDecorations.d.ts.map +1 -1
  6. package/lib/cjs/EnvironmentDecorations.js +69 -52
  7. package/lib/cjs/EnvironmentDecorations.js.map +1 -1
  8. package/lib/cjs/NoRenderApp.d.ts.map +1 -1
  9. package/lib/cjs/NoRenderApp.js +3 -0
  10. package/lib/cjs/NoRenderApp.js.map +1 -1
  11. package/lib/cjs/Tiles.d.ts +4 -0
  12. package/lib/cjs/Tiles.d.ts.map +1 -1
  13. package/lib/cjs/Tiles.js +11 -0
  14. package/lib/cjs/Tiles.js.map +1 -1
  15. package/lib/cjs/ViewManager.d.ts.map +1 -1
  16. package/lib/cjs/ViewManager.js +2 -3
  17. package/lib/cjs/ViewManager.js.map +1 -1
  18. package/lib/cjs/Viewport.d.ts +16 -1
  19. package/lib/cjs/Viewport.d.ts.map +1 -1
  20. package/lib/cjs/Viewport.js +42 -12
  21. package/lib/cjs/Viewport.js.map +1 -1
  22. package/lib/cjs/extension/ExtensionRuntime.js +2 -0
  23. package/lib/cjs/extension/ExtensionRuntime.js.map +1 -1
  24. package/lib/cjs/render/GraphicBranch.d.ts +3 -0
  25. package/lib/cjs/render/GraphicBranch.d.ts.map +1 -1
  26. package/lib/cjs/render/GraphicBranch.js.map +1 -1
  27. package/lib/cjs/render/MockRender.d.ts.map +1 -1
  28. package/lib/cjs/render/MockRender.js +3 -0
  29. package/lib/cjs/render/MockRender.js.map +1 -1
  30. package/lib/cjs/render/RealityMeshParams.d.ts +3 -4
  31. package/lib/cjs/render/RealityMeshParams.d.ts.map +1 -1
  32. package/lib/cjs/render/RealityMeshParams.js +9 -5
  33. package/lib/cjs/render/RealityMeshParams.js.map +1 -1
  34. package/lib/cjs/render/webgl/BackgroundMapDrape.js +2 -2
  35. package/lib/cjs/render/webgl/BranchState.d.ts +3 -0
  36. package/lib/cjs/render/webgl/BranchState.d.ts.map +1 -1
  37. package/lib/cjs/render/webgl/BranchState.js +5 -0
  38. package/lib/cjs/render/webgl/BranchState.js.map +1 -1
  39. package/lib/cjs/render/webgl/CachedGeometry.d.ts +32 -0
  40. package/lib/cjs/render/webgl/CachedGeometry.d.ts.map +1 -1
  41. package/lib/cjs/render/webgl/CachedGeometry.js +74 -1
  42. package/lib/cjs/render/webgl/CachedGeometry.js.map +1 -1
  43. package/lib/cjs/render/webgl/DrawCommand.d.ts.map +1 -1
  44. package/lib/cjs/render/webgl/DrawCommand.js +6 -4
  45. package/lib/cjs/render/webgl/DrawCommand.js.map +1 -1
  46. package/lib/cjs/render/webgl/EDL.d.ts +40 -0
  47. package/lib/cjs/render/webgl/EDL.d.ts.map +1 -0
  48. package/lib/cjs/render/webgl/EDL.js +264 -0
  49. package/lib/cjs/render/webgl/EDL.js.map +1 -0
  50. package/lib/cjs/render/webgl/EdgeSettings.js +2 -2
  51. package/lib/cjs/render/webgl/FrameBuffer.d.ts +4 -0
  52. package/lib/cjs/render/webgl/FrameBuffer.d.ts.map +1 -1
  53. package/lib/cjs/render/webgl/FrameBuffer.js +9 -0
  54. package/lib/cjs/render/webgl/FrameBuffer.js.map +1 -1
  55. package/lib/cjs/render/webgl/FrustumUniforms.d.ts +7 -0
  56. package/lib/cjs/render/webgl/FrustumUniforms.d.ts.map +1 -1
  57. package/lib/cjs/render/webgl/FrustumUniforms.js.map +1 -1
  58. package/lib/cjs/render/webgl/Layer.js +2 -2
  59. package/lib/cjs/render/webgl/LayerCommands.js +2 -2
  60. package/lib/cjs/render/webgl/PlanarClassifier.js +7 -7
  61. package/lib/cjs/render/webgl/PlanarClassifier.js.map +1 -1
  62. package/lib/cjs/render/webgl/PointCloud.d.ts +2 -2
  63. package/lib/cjs/render/webgl/PointCloud.d.ts.map +1 -1
  64. package/lib/cjs/render/webgl/PointCloud.js +2 -0
  65. package/lib/cjs/render/webgl/PointCloud.js.map +1 -1
  66. package/lib/cjs/render/webgl/RealityMesh.d.ts +3 -1
  67. package/lib/cjs/render/webgl/RealityMesh.d.ts.map +1 -1
  68. package/lib/cjs/render/webgl/RealityMesh.js +8 -3
  69. package/lib/cjs/render/webgl/RealityMesh.js.map +1 -1
  70. package/lib/cjs/render/webgl/RealityModelUniforms.d.ts +9 -0
  71. package/lib/cjs/render/webgl/RealityModelUniforms.d.ts.map +1 -1
  72. package/lib/cjs/render/webgl/RealityModelUniforms.js +50 -0
  73. package/lib/cjs/render/webgl/RealityModelUniforms.js.map +1 -1
  74. package/lib/cjs/render/webgl/RenderCommands.d.ts +2 -1
  75. package/lib/cjs/render/webgl/RenderCommands.d.ts.map +1 -1
  76. package/lib/cjs/render/webgl/RenderCommands.js +45 -37
  77. package/lib/cjs/render/webgl/RenderCommands.js.map +1 -1
  78. package/lib/cjs/render/webgl/RenderFlags.d.ts +19 -17
  79. package/lib/cjs/render/webgl/RenderFlags.d.ts.map +1 -1
  80. package/lib/cjs/render/webgl/RenderFlags.js +8 -6
  81. package/lib/cjs/render/webgl/RenderFlags.js.map +1 -1
  82. package/lib/cjs/render/webgl/SceneCompositor.d.ts +6 -1
  83. package/lib/cjs/render/webgl/SceneCompositor.d.ts.map +1 -1
  84. package/lib/cjs/render/webgl/SceneCompositor.js +195 -76
  85. package/lib/cjs/render/webgl/SceneCompositor.js.map +1 -1
  86. package/lib/cjs/render/webgl/SolarShadowMap.js +2 -2
  87. package/lib/cjs/render/webgl/SurfaceGeometry.js +5 -5
  88. package/lib/cjs/render/webgl/Target.js +7 -7
  89. package/lib/cjs/render/webgl/Target.js.map +1 -1
  90. package/lib/cjs/render/webgl/Technique.d.ts.map +1 -1
  91. package/lib/cjs/render/webgl/Technique.js +18 -3
  92. package/lib/cjs/render/webgl/Technique.js.map +1 -1
  93. package/lib/cjs/render/webgl/TechniqueFlags.js +4 -4
  94. package/lib/cjs/render/webgl/TechniqueFlags.js.map +1 -1
  95. package/lib/cjs/render/webgl/TechniqueId.d.ts +6 -2
  96. package/lib/cjs/render/webgl/TechniqueId.d.ts.map +1 -1
  97. package/lib/cjs/render/webgl/TechniqueId.js.map +1 -1
  98. package/lib/cjs/render/webgl/UniformHandle.d.ts.map +1 -1
  99. package/lib/cjs/render/webgl/UniformHandle.js +1 -2
  100. package/lib/cjs/render/webgl/UniformHandle.js.map +1 -1
  101. package/lib/cjs/render/webgl/VisibleTileFeatures.js +5 -5
  102. package/lib/cjs/render/webgl/glsl/EDL.d.ts +14 -0
  103. package/lib/cjs/render/webgl/glsl/EDL.d.ts.map +1 -0
  104. package/lib/cjs/render/webgl/glsl/EDL.js +260 -0
  105. package/lib/cjs/render/webgl/glsl/EDL.js.map +1 -0
  106. package/lib/cjs/render/webgl/glsl/RenderPass.js +12 -12
  107. package/lib/cjs/render/webgl/glsl/RenderPass.js.map +1 -1
  108. package/lib/cjs/tile/BatchedTileIdMap.js +1 -1
  109. package/lib/cjs/tile/BatchedTileIdMap.js.map +1 -1
  110. package/lib/cjs/tile/DynamicIModelTile.js +1 -1
  111. package/lib/cjs/tile/DynamicIModelTile.js.map +1 -1
  112. package/lib/cjs/tile/GltfReader.js +1 -1
  113. package/lib/cjs/tile/GltfReader.js.map +1 -1
  114. package/lib/cjs/tile/IModelTile.js +1 -1
  115. package/lib/cjs/tile/IModelTile.js.map +1 -1
  116. package/lib/cjs/tile/ImdlReader.js +5 -5
  117. package/lib/cjs/tile/ImdlReader.js.map +1 -1
  118. package/lib/cjs/tile/RealityModelTileTree.d.ts.map +1 -1
  119. package/lib/cjs/tile/RealityModelTileTree.js +2 -1
  120. package/lib/cjs/tile/RealityModelTileTree.js.map +1 -1
  121. package/lib/cjs/tile/RealityTileLoader.js +2 -2
  122. package/lib/cjs/tile/RealityTileLoader.js.map +1 -1
  123. package/lib/cjs/tile/TileTreeReference.d.ts +3 -0
  124. package/lib/cjs/tile/TileTreeReference.d.ts.map +1 -1
  125. package/lib/cjs/tile/TileTreeReference.js +3 -0
  126. package/lib/cjs/tile/TileTreeReference.js.map +1 -1
  127. package/lib/cjs/tile/map/CesiumTerrainProvider.js +9 -9
  128. package/lib/cjs/tile/map/CesiumTerrainProvider.js.map +1 -1
  129. package/lib/cjs/tile/map/ImageryProviders/ArcGISImageryProvider.d.ts.map +1 -1
  130. package/lib/cjs/tile/map/ImageryProviders/ArcGISImageryProvider.js +1 -2
  131. package/lib/cjs/tile/map/ImageryProviders/ArcGISImageryProvider.js.map +1 -1
  132. package/lib/cjs/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js +2 -2
  133. package/lib/cjs/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js.map +1 -1
  134. package/lib/cjs/tile/map/ImageryProviders/WmtsMapLayerImageryProvider.js +1 -1
  135. package/lib/cjs/tile/map/ImageryProviders/WmtsMapLayerImageryProvider.js.map +1 -1
  136. package/lib/cjs/tile/map/ImageryTileTree.d.ts +1 -0
  137. package/lib/cjs/tile/map/ImageryTileTree.d.ts.map +1 -1
  138. package/lib/cjs/tile/map/ImageryTileTree.js +4 -1
  139. package/lib/cjs/tile/map/ImageryTileTree.js.map +1 -1
  140. package/lib/cjs/tile/map/MapLayerImageryProvider.d.ts +7 -3
  141. package/lib/cjs/tile/map/MapLayerImageryProvider.d.ts.map +1 -1
  142. package/lib/cjs/tile/map/MapLayerImageryProvider.js +12 -8
  143. package/lib/cjs/tile/map/MapLayerImageryProvider.js.map +1 -1
  144. package/lib/cjs/tile/map/MapTileTree.js +1 -1
  145. package/lib/cjs/tile/map/MapTileTree.js.map +1 -1
  146. package/lib/cjs/tile/map/MapTiledGraphicsProvider.d.ts +1 -0
  147. package/lib/cjs/tile/map/MapTiledGraphicsProvider.d.ts.map +1 -1
  148. package/lib/cjs/tile/map/MapTiledGraphicsProvider.js +4 -0
  149. package/lib/cjs/tile/map/MapTiledGraphicsProvider.js.map +1 -1
  150. package/lib/cjs/tile/map/WmtsCapabilities.d.ts +23 -68
  151. package/lib/cjs/tile/map/WmtsCapabilities.d.ts.map +1 -1
  152. package/lib/cjs/tile/map/WmtsCapabilities.js +269 -260
  153. package/lib/cjs/tile/map/WmtsCapabilities.js.map +1 -1
  154. package/lib/cjs/tools/ClipViewTool.js +2 -2
  155. package/lib/cjs/tools/ClipViewTool.js.map +1 -1
  156. package/lib/cjs/tools/MeasureTool.js +1 -1
  157. package/lib/cjs/tools/MeasureTool.js.map +1 -1
  158. package/lib/esm/AccuDraw.js +1 -1
  159. package/lib/esm/AccuDraw.js.map +1 -1
  160. package/lib/esm/EnvironmentDecorations.d.ts +4 -4
  161. package/lib/esm/EnvironmentDecorations.d.ts.map +1 -1
  162. package/lib/esm/EnvironmentDecorations.js +69 -52
  163. package/lib/esm/EnvironmentDecorations.js.map +1 -1
  164. package/lib/esm/NoRenderApp.d.ts.map +1 -1
  165. package/lib/esm/NoRenderApp.js +3 -0
  166. package/lib/esm/NoRenderApp.js.map +1 -1
  167. package/lib/esm/Tiles.d.ts +4 -0
  168. package/lib/esm/Tiles.d.ts.map +1 -1
  169. package/lib/esm/Tiles.js +11 -0
  170. package/lib/esm/Tiles.js.map +1 -1
  171. package/lib/esm/ViewManager.d.ts.map +1 -1
  172. package/lib/esm/ViewManager.js +2 -3
  173. package/lib/esm/ViewManager.js.map +1 -1
  174. package/lib/esm/Viewport.d.ts +16 -1
  175. package/lib/esm/Viewport.d.ts.map +1 -1
  176. package/lib/esm/Viewport.js +42 -12
  177. package/lib/esm/Viewport.js.map +1 -1
  178. package/lib/esm/extension/ExtensionRuntime.js +3 -1
  179. package/lib/esm/extension/ExtensionRuntime.js.map +1 -1
  180. package/lib/esm/render/GraphicBranch.d.ts +3 -0
  181. package/lib/esm/render/GraphicBranch.d.ts.map +1 -1
  182. package/lib/esm/render/GraphicBranch.js.map +1 -1
  183. package/lib/esm/render/MockRender.d.ts.map +1 -1
  184. package/lib/esm/render/MockRender.js +3 -0
  185. package/lib/esm/render/MockRender.js.map +1 -1
  186. package/lib/esm/render/RealityMeshParams.d.ts +3 -4
  187. package/lib/esm/render/RealityMeshParams.d.ts.map +1 -1
  188. package/lib/esm/render/RealityMeshParams.js +10 -6
  189. package/lib/esm/render/RealityMeshParams.js.map +1 -1
  190. package/lib/esm/render/webgl/BackgroundMapDrape.js +2 -2
  191. package/lib/esm/render/webgl/BranchState.d.ts +3 -0
  192. package/lib/esm/render/webgl/BranchState.d.ts.map +1 -1
  193. package/lib/esm/render/webgl/BranchState.js +5 -0
  194. package/lib/esm/render/webgl/BranchState.js.map +1 -1
  195. package/lib/esm/render/webgl/CachedGeometry.d.ts +32 -0
  196. package/lib/esm/render/webgl/CachedGeometry.d.ts.map +1 -1
  197. package/lib/esm/render/webgl/CachedGeometry.js +69 -0
  198. package/lib/esm/render/webgl/CachedGeometry.js.map +1 -1
  199. package/lib/esm/render/webgl/DrawCommand.d.ts.map +1 -1
  200. package/lib/esm/render/webgl/DrawCommand.js +6 -4
  201. package/lib/esm/render/webgl/DrawCommand.js.map +1 -1
  202. package/lib/esm/render/webgl/EDL.d.ts +40 -0
  203. package/lib/esm/render/webgl/EDL.d.ts.map +1 -0
  204. package/lib/esm/render/webgl/EDL.js +260 -0
  205. package/lib/esm/render/webgl/EDL.js.map +1 -0
  206. package/lib/esm/render/webgl/EdgeSettings.js +2 -2
  207. package/lib/esm/render/webgl/FrameBuffer.d.ts +4 -0
  208. package/lib/esm/render/webgl/FrameBuffer.d.ts.map +1 -1
  209. package/lib/esm/render/webgl/FrameBuffer.js +9 -0
  210. package/lib/esm/render/webgl/FrameBuffer.js.map +1 -1
  211. package/lib/esm/render/webgl/FrustumUniforms.d.ts +7 -0
  212. package/lib/esm/render/webgl/FrustumUniforms.d.ts.map +1 -1
  213. package/lib/esm/render/webgl/FrustumUniforms.js.map +1 -1
  214. package/lib/esm/render/webgl/Layer.js +2 -2
  215. package/lib/esm/render/webgl/LayerCommands.js +2 -2
  216. package/lib/esm/render/webgl/PlanarClassifier.js +7 -7
  217. package/lib/esm/render/webgl/PlanarClassifier.js.map +1 -1
  218. package/lib/esm/render/webgl/PointCloud.d.ts +2 -2
  219. package/lib/esm/render/webgl/PointCloud.d.ts.map +1 -1
  220. package/lib/esm/render/webgl/PointCloud.js +2 -0
  221. package/lib/esm/render/webgl/PointCloud.js.map +1 -1
  222. package/lib/esm/render/webgl/RealityMesh.d.ts +3 -1
  223. package/lib/esm/render/webgl/RealityMesh.d.ts.map +1 -1
  224. package/lib/esm/render/webgl/RealityMesh.js +8 -3
  225. package/lib/esm/render/webgl/RealityMesh.js.map +1 -1
  226. package/lib/esm/render/webgl/RealityModelUniforms.d.ts +9 -0
  227. package/lib/esm/render/webgl/RealityModelUniforms.d.ts.map +1 -1
  228. package/lib/esm/render/webgl/RealityModelUniforms.js +50 -0
  229. package/lib/esm/render/webgl/RealityModelUniforms.js.map +1 -1
  230. package/lib/esm/render/webgl/RenderCommands.d.ts +2 -1
  231. package/lib/esm/render/webgl/RenderCommands.d.ts.map +1 -1
  232. package/lib/esm/render/webgl/RenderCommands.js +45 -37
  233. package/lib/esm/render/webgl/RenderCommands.js.map +1 -1
  234. package/lib/esm/render/webgl/RenderFlags.d.ts +19 -17
  235. package/lib/esm/render/webgl/RenderFlags.d.ts.map +1 -1
  236. package/lib/esm/render/webgl/RenderFlags.js +8 -6
  237. package/lib/esm/render/webgl/RenderFlags.js.map +1 -1
  238. package/lib/esm/render/webgl/SceneCompositor.d.ts +6 -1
  239. package/lib/esm/render/webgl/SceneCompositor.d.ts.map +1 -1
  240. package/lib/esm/render/webgl/SceneCompositor.js +194 -77
  241. package/lib/esm/render/webgl/SceneCompositor.js.map +1 -1
  242. package/lib/esm/render/webgl/SolarShadowMap.js +2 -2
  243. package/lib/esm/render/webgl/SurfaceGeometry.js +5 -5
  244. package/lib/esm/render/webgl/Target.js +7 -7
  245. package/lib/esm/render/webgl/Target.js.map +1 -1
  246. package/lib/esm/render/webgl/Technique.d.ts.map +1 -1
  247. package/lib/esm/render/webgl/Technique.js +18 -3
  248. package/lib/esm/render/webgl/Technique.js.map +1 -1
  249. package/lib/esm/render/webgl/TechniqueFlags.js +4 -4
  250. package/lib/esm/render/webgl/TechniqueFlags.js.map +1 -1
  251. package/lib/esm/render/webgl/TechniqueId.d.ts +6 -2
  252. package/lib/esm/render/webgl/TechniqueId.d.ts.map +1 -1
  253. package/lib/esm/render/webgl/TechniqueId.js.map +1 -1
  254. package/lib/esm/render/webgl/UniformHandle.d.ts.map +1 -1
  255. package/lib/esm/render/webgl/UniformHandle.js +1 -2
  256. package/lib/esm/render/webgl/UniformHandle.js.map +1 -1
  257. package/lib/esm/render/webgl/VisibleTileFeatures.js +5 -5
  258. package/lib/esm/render/webgl/glsl/EDL.d.ts +14 -0
  259. package/lib/esm/render/webgl/glsl/EDL.d.ts.map +1 -0
  260. package/lib/esm/render/webgl/glsl/EDL.js +253 -0
  261. package/lib/esm/render/webgl/glsl/EDL.js.map +1 -0
  262. package/lib/esm/render/webgl/glsl/RenderPass.js +12 -12
  263. package/lib/esm/render/webgl/glsl/RenderPass.js.map +1 -1
  264. package/lib/esm/tile/BatchedTileIdMap.js +1 -1
  265. package/lib/esm/tile/BatchedTileIdMap.js.map +1 -1
  266. package/lib/esm/tile/DynamicIModelTile.js +1 -1
  267. package/lib/esm/tile/DynamicIModelTile.js.map +1 -1
  268. package/lib/esm/tile/GltfReader.js +1 -1
  269. package/lib/esm/tile/GltfReader.js.map +1 -1
  270. package/lib/esm/tile/IModelTile.js +1 -1
  271. package/lib/esm/tile/IModelTile.js.map +1 -1
  272. package/lib/esm/tile/ImdlReader.js +5 -5
  273. package/lib/esm/tile/ImdlReader.js.map +1 -1
  274. package/lib/esm/tile/RealityModelTileTree.d.ts.map +1 -1
  275. package/lib/esm/tile/RealityModelTileTree.js +2 -1
  276. package/lib/esm/tile/RealityModelTileTree.js.map +1 -1
  277. package/lib/esm/tile/RealityTileLoader.js +2 -2
  278. package/lib/esm/tile/RealityTileLoader.js.map +1 -1
  279. package/lib/esm/tile/TileTreeReference.d.ts +3 -0
  280. package/lib/esm/tile/TileTreeReference.d.ts.map +1 -1
  281. package/lib/esm/tile/TileTreeReference.js +3 -0
  282. package/lib/esm/tile/TileTreeReference.js.map +1 -1
  283. package/lib/esm/tile/map/CesiumTerrainProvider.js +9 -9
  284. package/lib/esm/tile/map/CesiumTerrainProvider.js.map +1 -1
  285. package/lib/esm/tile/map/ImageryProviders/ArcGISImageryProvider.d.ts.map +1 -1
  286. package/lib/esm/tile/map/ImageryProviders/ArcGISImageryProvider.js +1 -2
  287. package/lib/esm/tile/map/ImageryProviders/ArcGISImageryProvider.js.map +1 -1
  288. package/lib/esm/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js +2 -2
  289. package/lib/esm/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js.map +1 -1
  290. package/lib/esm/tile/map/ImageryProviders/WmtsMapLayerImageryProvider.js +2 -2
  291. package/lib/esm/tile/map/ImageryProviders/WmtsMapLayerImageryProvider.js.map +1 -1
  292. package/lib/esm/tile/map/ImageryTileTree.d.ts +1 -0
  293. package/lib/esm/tile/map/ImageryTileTree.d.ts.map +1 -1
  294. package/lib/esm/tile/map/ImageryTileTree.js +4 -1
  295. package/lib/esm/tile/map/ImageryTileTree.js.map +1 -1
  296. package/lib/esm/tile/map/MapLayerImageryProvider.d.ts +7 -3
  297. package/lib/esm/tile/map/MapLayerImageryProvider.d.ts.map +1 -1
  298. package/lib/esm/tile/map/MapLayerImageryProvider.js +12 -8
  299. package/lib/esm/tile/map/MapLayerImageryProvider.js.map +1 -1
  300. package/lib/esm/tile/map/MapTileTree.js +1 -1
  301. package/lib/esm/tile/map/MapTileTree.js.map +1 -1
  302. package/lib/esm/tile/map/MapTiledGraphicsProvider.d.ts +1 -0
  303. package/lib/esm/tile/map/MapTiledGraphicsProvider.d.ts.map +1 -1
  304. package/lib/esm/tile/map/MapTiledGraphicsProvider.js +4 -0
  305. package/lib/esm/tile/map/MapTiledGraphicsProvider.js.map +1 -1
  306. package/lib/esm/tile/map/WmtsCapabilities.d.ts +23 -68
  307. package/lib/esm/tile/map/WmtsCapabilities.d.ts.map +1 -1
  308. package/lib/esm/tile/map/WmtsCapabilities.js +268 -259
  309. package/lib/esm/tile/map/WmtsCapabilities.js.map +1 -1
  310. package/lib/esm/tools/ClipViewTool.js +2 -2
  311. package/lib/esm/tools/ClipViewTool.js.map +1 -1
  312. package/lib/esm/tools/MeasureTool.js +1 -1
  313. package/lib/esm/tools/MeasureTool.js.map +1 -1
  314. package/package.json +22 -23
@@ -12,8 +12,8 @@ export interface GroundPlaneDecorations {
12
12
  }
13
13
  /** @internal */
14
14
  export interface SkyBoxDecorations {
15
- params?: RenderSkyBoxParams | undefined;
16
- promise?: Promise<RenderSkyBoxParams | undefined>;
15
+ params?: RenderSkyBoxParams;
16
+ promise?: Promise<boolean>;
17
17
  }
18
18
  /** @internal */
19
19
  export declare class EnvironmentDecorations {
@@ -29,9 +29,9 @@ export declare class EnvironmentDecorations {
29
29
  decorate(context: DecorateContext): void;
30
30
  private loadGround;
31
31
  private createGroundParams;
32
- private loadSky;
32
+ private loadSkyBox;
33
33
  private setSky;
34
- private loadSkyParams;
34
+ private loadSkyBoxParams;
35
35
  private createCubeImageKey;
36
36
  private createSkyGradientParams;
37
37
  private imageFromSpec;
@@ -1 +1 @@
1
- {"version":3,"file":"EnvironmentDecorations.d.ts","sourceRoot":"","sources":["../../src/EnvironmentDecorations.ts"],"names":[],"mappings":"AAIA;;GAEG;AAIH,OAAO,EACK,WAAW,EAAY,aAAa,EAC/C,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAGhD,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAE3D,gBAAgB;AAChB,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,WAAW,EAAE,aAAa,CAAC;IACpC,QAAQ,CAAC,WAAW,EAAE,aAAa,CAAC;CACrC;AAED,gBAAgB;AAChB,MAAM,WAAW,iBAAiB;IAChC,MAAM,CAAC,EAAE,kBAAkB,GAAG,SAAS,CAAC;IACxC,OAAO,CAAC,EAAE,OAAO,CAAC,kBAAkB,GAAG,SAAS,CAAC,CAAC;CACnD;AAED,gBAAgB;AAChB,qBAAa,sBAAsB;IACjC,SAAS,CAAC,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAC;IACtC,SAAS,CAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,IAAI,CAAC;IACzC,SAAS,CAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,IAAI,CAAC;IAC1C,SAAS,CAAC,YAAY,EAAE,WAAW,CAAC;IACpC,SAAS,CAAC,OAAO,CAAC,EAAE,sBAAsB,CAAC;IAC3C,SAAS,CAAC,IAAI,EAAE,iBAAiB,CAAC;gBAEf,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,IAAI,EAAE,SAAS,EAAE,MAAM,IAAI;IAY1E,OAAO,IAAI,IAAI;IAQf,cAAc,CAAC,GAAG,EAAE,WAAW,GAAG,IAAI;IAmBtC,QAAQ,CAAC,OAAO,EAAE,eAAe,GAAG,IAAI;IAoC/C,OAAO,CAAC,UAAU;IAQlB,OAAO,CAAC,kBAAkB;IAqC1B,OAAO,CAAC,OAAO;IAgBf,OAAO,CAAC,MAAM;YAMA,aAAa;IAyD3B,OAAO,CAAC,kBAAkB;IAK1B,OAAO,CAAC,uBAAuB;YAIjB,aAAa;CAM5B"}
1
+ {"version":3,"file":"EnvironmentDecorations.d.ts","sourceRoot":"","sources":["../../src/EnvironmentDecorations.ts"],"names":[],"mappings":"AAIA;;GAEG;AAIH,OAAO,EACK,WAAW,EAAY,aAAa,EAC/C,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAGhD,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAE3D,gBAAgB;AAChB,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,WAAW,EAAE,aAAa,CAAC;IACpC,QAAQ,CAAC,WAAW,EAAE,aAAa,CAAC;CACrC;AASD,gBAAgB;AAChB,MAAM,WAAW,iBAAiB;IAChC,MAAM,CAAC,EAAE,kBAAkB,CAAC;IAC5B,OAAO,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;CAC5B;AAED,gBAAgB;AAChB,qBAAa,sBAAsB;IACjC,SAAS,CAAC,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAC;IACtC,SAAS,CAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,IAAI,CAAC;IACzC,SAAS,CAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,IAAI,CAAC;IAC1C,SAAS,CAAC,YAAY,EAAE,WAAW,CAAC;IACpC,SAAS,CAAC,OAAO,CAAC,EAAE,sBAAsB,CAAC;IAC3C,SAAS,CAAC,IAAI,EAAE,iBAAiB,CAAC;gBAEf,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,IAAI,EAAE,SAAS,EAAE,MAAM,IAAI;IAY1E,OAAO,IAAI,IAAI;IAOf,cAAc,CAAC,GAAG,EAAE,WAAW,GAAG,IAAI;IAmBtC,QAAQ,CAAC,OAAO,EAAE,eAAe,GAAG,IAAI;IAoC/C,OAAO,CAAC,UAAU;IAQlB,OAAO,CAAC,kBAAkB;IAqC1B,OAAO,CAAC,UAAU;IAkBlB,OAAO,CAAC,MAAM;IAMd,OAAO,CAAC,gBAAgB;IAqExB,OAAO,CAAC,kBAAkB;IAK1B,OAAO,CAAC,uBAAuB;YAQjB,aAAa;CAM5B"}
@@ -19,13 +19,13 @@ export class EnvironmentDecorations {
19
19
  this._onLoaded = onLoaded;
20
20
  this._onDispose = onDispose;
21
21
  this._sky = {};
22
- this.loadSky();
22
+ this.loadSkyBox();
23
23
  if (this._environment.displayGround)
24
24
  this.loadGround();
25
25
  }
26
26
  dispose() {
27
27
  this._ground = undefined;
28
- this._sky.promise = this._sky.params = undefined;
28
+ this._sky.params = this._sky.promise = undefined;
29
29
  this._onDispose();
30
30
  }
31
31
  setEnvironment(env) {
@@ -40,7 +40,7 @@ export class EnvironmentDecorations {
40
40
  this.loadGround();
41
41
  // Update sky box
42
42
  if (env.sky !== prev.sky)
43
- this.loadSky();
43
+ this.loadSkyBox();
44
44
  }
45
45
  decorate(context) {
46
46
  const env = this._environment;
@@ -109,82 +109,99 @@ export class EnvironmentDecorations {
109
109
  params.material = material;
110
110
  return params;
111
111
  }
112
- loadSky() {
113
- const promise = this.loadSkyParams();
112
+ loadSkyBox() {
113
+ const loader = this.loadSkyBoxParams();
114
+ if (undefined === loader.preload) {
115
+ this.setSky(loader.load());
116
+ return;
117
+ }
118
+ const promise = loader.preload;
114
119
  this._sky.promise = promise;
115
- // eslint-disable-next-line @typescript-eslint/no-floating-promises
116
- promise.then((params) => {
120
+ loader.preload.then((loaded) => {
117
121
  if (promise === this._sky.promise)
118
- this.setSky(params !== null && params !== void 0 ? params : this.createSkyGradientParams());
119
- });
120
- promise.catch(() => {
121
- if (this._sky.promise === promise)
122
- this.setSky(this.createSkyGradientParams());
122
+ this.setSky(loaded ? loader.load() : undefined);
123
+ }).catch(() => {
124
+ if (promise === this._sky.promise)
125
+ this.setSky(undefined);
123
126
  });
124
127
  }
125
128
  setSky(params) {
126
129
  this._sky.promise = undefined;
127
- this._sky.params = params;
130
+ this._sky.params = params !== null && params !== void 0 ? params : this.createSkyGradientParams();
128
131
  this._onLoaded();
129
132
  }
130
- async loadSkyParams() {
133
+ loadSkyBoxParams() {
134
+ let load;
135
+ let preload;
131
136
  const sky = this._environment.sky;
132
137
  if (sky instanceof SkyCube) {
133
138
  const key = this.createCubeImageKey(sky);
134
- const existingTexture = IModelApp.renderSystem.findTexture(key, this._view.iModel);
135
- if (existingTexture)
136
- return { type: "cube", texture: existingTexture };
137
- // Some faces may use the same image. Only request each image once.
138
- const specs = new Set([sky.images.front, sky.images.back, sky.images.left, sky.images.right, sky.images.top, sky.images.bottom]);
139
- const promises = [];
140
- for (const spec of specs)
141
- promises.push(this.imageFromSpec(spec));
142
- return Promise.all(promises).then((images) => {
143
- const idToImage = new Map();
144
- let index = 0;
145
- for (const spec of specs) {
146
- const image = images[index++];
147
- if (!image)
148
- return undefined;
149
- else
150
- idToImage.set(spec, image);
151
- }
152
- // eslint-disable-next-line deprecation/deprecation
153
- const params = new RenderTexture.Params(key, RenderTexture.Type.SkyBox);
154
- const txImgs = [
155
- idToImage.get(sky.images.front), idToImage.get(sky.images.back), idToImage.get(sky.images.top),
156
- idToImage.get(sky.images.bottom), idToImage.get(sky.images.right), idToImage.get(sky.images.left),
157
- ];
158
- const texture = IModelApp.renderSystem.createTextureFromCubeImages(txImgs[0], txImgs[1], txImgs[2], txImgs[3], txImgs[4], txImgs[5], this._view.iModel, params);
139
+ load = () => {
140
+ const texture = IModelApp.renderSystem.findTexture(key, this._view.iModel);
159
141
  return texture ? { type: "cube", texture } : undefined;
160
- });
142
+ };
143
+ if (!IModelApp.renderSystem.findTexture(key, this._view.iModel)) {
144
+ // Some faces may use the same image. Only request each image once.
145
+ const promises = [];
146
+ const specs = new Set([sky.images.front, sky.images.back, sky.images.left, sky.images.right, sky.images.top, sky.images.bottom]);
147
+ for (const spec of specs)
148
+ promises.push(this.imageFromSpec(spec));
149
+ preload = Promise.all(promises).then((images) => {
150
+ const idToImage = new Map();
151
+ let index = 0;
152
+ for (const spec of specs) {
153
+ const image = images[index++];
154
+ if (!image)
155
+ return false;
156
+ else
157
+ idToImage.set(spec, image);
158
+ }
159
+ // eslint-disable-next-line deprecation/deprecation
160
+ const params = new RenderTexture.Params(key, RenderTexture.Type.SkyBox);
161
+ const txImgs = [
162
+ idToImage.get(sky.images.front), idToImage.get(sky.images.back), idToImage.get(sky.images.top),
163
+ idToImage.get(sky.images.bottom), idToImage.get(sky.images.right), idToImage.get(sky.images.left),
164
+ ];
165
+ return undefined !== IModelApp.renderSystem.createTextureFromCubeImages(txImgs[0], txImgs[1], txImgs[2], txImgs[3], txImgs[4], txImgs[5], this._view.iModel, params);
166
+ });
167
+ }
161
168
  }
162
169
  else if (sky instanceof SkySphere) {
163
- const rotation = 0; // ###TODO where is this supposed to come from?
164
- let texture = IModelApp.renderSystem.findTexture(sky.image, this._view.iModel);
165
- if (!texture) {
166
- const image = await this.imageFromSpec(sky.image);
167
- if (image) {
168
- texture = IModelApp.renderSystem.createTexture({
170
+ load = () => {
171
+ const texture = IModelApp.renderSystem.findTexture(sky.image, this._view.iModel);
172
+ return texture ? {
173
+ type: "sphere",
174
+ texture,
175
+ rotation: 0,
176
+ zOffset: this._view.iModel.globalOrigin.z,
177
+ } : undefined;
178
+ };
179
+ if (!IModelApp.renderSystem.findTexture(sky.image, this._view.iModel)) {
180
+ preload = this.imageFromSpec(sky.image).then((image) => {
181
+ if (!image)
182
+ return false;
183
+ return undefined !== IModelApp.renderSystem.createTexture({
169
184
  image: { source: image },
170
185
  ownership: { iModel: this._view.iModel, key: sky.image },
171
186
  });
172
- }
187
+ });
173
188
  }
174
- if (!texture)
175
- return undefined;
176
- return { type: "sphere", texture, rotation, zOffset: this._view.iModel.globalOrigin.z };
177
189
  }
178
190
  else {
179
- return this.createSkyGradientParams();
191
+ load = () => this.createSkyGradientParams();
180
192
  }
193
+ return { load, preload };
181
194
  }
182
195
  createCubeImageKey(sky) {
183
196
  const i = sky.images;
184
197
  return `skycube:${i.front}:${i.back}:${i.left}:${i.right}:${i.top}:${i.bottom}`;
185
198
  }
186
199
  createSkyGradientParams() {
187
- return { type: "gradient", gradient: this._environment.sky.gradient, zOffset: this._view.iModel.globalOrigin.z };
200
+ return {
201
+ type: "gradient",
202
+ gradient: this._environment.sky.gradient,
203
+ zOffset: this._view.iModel.globalOrigin.z,
204
+ };
188
205
  }
189
206
  async imageFromSpec(spec) {
190
207
  var _a;
@@ -1 +1 @@
1
- {"version":3,"file":"EnvironmentDecorations.js","sourceRoot":"","sources":["../../src/EnvironmentDecorations.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F;;GAEG;AAEH,OAAO,EAAE,MAAM,EAAE,IAAI,EAAC,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,OAAO,EAAW,eAAe,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACxF,OAAO,EACL,QAAQ,EAAe,QAAQ,EAAE,aAAa,EAAE,aAAa,EAAE,OAAO,EAAE,SAAS,EAAoB,cAAc,GACpH,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAGxC,OAAO,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAetD,gBAAgB;AAChB,MAAM,OAAO,sBAAsB;IAQjC,YAAmB,IAAiB,EAAE,QAAoB,EAAE,SAAqB;QAC/E,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC;QAClD,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAClB,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;QAC1B,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;QAE5B,IAAI,CAAC,IAAI,GAAG,EAAG,CAAC;QAChB,IAAI,CAAC,OAAO,EAAE,CAAC;QACf,IAAI,IAAI,CAAC,YAAY,CAAC,aAAa;YACjC,IAAI,CAAC,UAAU,EAAE,CAAC;IACtB,CAAC;IAEM,OAAO;QACZ,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC;QAEzB,IAAI,CAAC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC;QAEjD,IAAI,CAAC,UAAU,EAAE,CAAC;IACpB,CAAC;IAEM,cAAc,CAAC,GAAgB;QACpC,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC;QAC/B,IAAI,IAAI,KAAK,GAAG;YACd,OAAO;QAET,IAAI,CAAC,YAAY,GAAG,GAAG,CAAC;QAExB,sBAAsB;QACtB,IAAI,CAAC,GAAG,CAAC,aAAa,IAAI,GAAG,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM;YAClD,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC;QAE3B,IAAI,GAAG,CAAC,aAAa,IAAI,CAAC,IAAI,CAAC,OAAO;YACpC,IAAI,CAAC,UAAU,EAAE,CAAC;QAEpB,iBAAiB;QACjB,IAAI,GAAG,CAAC,GAAG,KAAK,IAAI,CAAC,GAAG;YACtB,IAAI,CAAC,OAAO,EAAE,CAAC;IACnB,CAAC;IAEM,QAAQ,CAAC,OAAwB;QACtC,MAAM,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC;QAC9B,IAAI,GAAG,CAAC,UAAU,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;YACtC,MAAM,GAAG,GAAG,SAAS,CAAC,YAAY,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAClE,IAAI,GAAG;gBACL,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;SAC1B;QAED,IAAI,CAAC,GAAG,CAAC,aAAa,IAAI,CAAC,IAAI,CAAC,OAAO;YACrC,OAAO;QAET,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAC9D,IAAI,OAAO,CAAC,MAAM;YAChB,OAAO;QAET,MAAM,MAAM,GAAc,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;QACjH,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;QAC7B,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;QAE5B,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAC9D,MAAM,MAAM,GAAG,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC;QACjF,MAAM,OAAO,GAAG,OAAO,CAAC,oBAAoB,CAAC,WAAW,CAAC,eAAe,CAAC,CAAC;QAC1E,OAAO,CAAC,qBAAqB,CAAC,MAAM,CAAC,CAAC;QAEtC,MAAM,aAAa,GAAG,IAAI,aAAa,EAAE,CAAC;QAC1C,aAAa,CAAC,UAAU,GAAG,IAAI,CAAC;QAChC,MAAM,eAAe,GAAG,eAAe,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;QAC9D,eAAe,CAAC,uBAAuB,EAAE,CAAC;QAC1C,MAAM,QAAQ,GAAc,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QACrH,eAAe,CAAC,YAAY,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;QAC/C,MAAM,QAAQ,GAAG,eAAe,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAEtD,OAAO,CAAC,WAAW,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QACpC,OAAO,CAAC,wBAAwB,CAAC,OAAO,CAAC,CAAC;IAC5C,CAAC;IAEO,UAAU;QAChB,MAAM,CAAC,SAAS,KAAK,IAAI,CAAC,OAAO,CAAC,CAAC;QACnC,MAAM,WAAW,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;QAClD,MAAM,WAAW,GAAG,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;QACnD,IAAI,WAAW,IAAI,WAAW;YAC5B,IAAI,CAAC,OAAO,GAAG,EAAE,WAAW,EAAE,WAAW,EAAE,CAAC;IAChD,CAAC;IAEO,kBAAkB,CAAC,KAAc;QACvC,6BAA6B;QAC7B,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC;QACxC,MAAM,MAAM,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,GAAG,CAAE,CAAC;QAC/B,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC;QAC5D,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;QAClC,MAAM,YAAY,GAAG,CAAC,KAAK,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;QAClE,YAAY,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;QAElE,MAAM,QAAQ,GAAG,IAAI,QAAQ,CAAC,IAAI,EAAE,CAAC;QACrC,QAAQ,CAAC,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC;QACxC,QAAQ,CAAC,IAAI,GAAG,CAAC,EAAE,KAAK,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAC3J,MAAM,OAAO,GAAG,SAAS,CAAC,YAAY,CAAC,kBAAkB,CAAC,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QACvF,IAAI,CAAC,OAAO;YACV,OAAO,SAAS,CAAC;QAEnB,+CAA+C;QAC/C,MAAM,QAAQ,GAAG,SAAS,CAAC,YAAY,CAAC,oBAAoB,CAAC;YAC3D,OAAO,EAAE,EAAE,KAAK,EAAE,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC,EAAE;YAC7C,cAAc,EAAE;gBACd,OAAO;gBACP,SAAS,EAAE,IAAI,cAAc,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;aACzD;SACF,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ;YACX,OAAO,SAAS,CAAC;QAEnB,2CAA2C;QAC3C,MAAM,MAAM,GAAG,IAAI,aAAa,EAAE,CAAC;QACnC,MAAM,CAAC,SAAS,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;QAC1C,MAAM,CAAC,SAAS,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAE,6DAA6D;QACjG,MAAM,CAAC,QAAQ,GAAG,QAAQ,CAAC;QAE3B,OAAO,MAAM,CAAC;IAChB,CAAC;IAEO,OAAO;QACb,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;QACrC,IAAI,CAAC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QAE5B,mEAAmE;QACnE,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE;YACtB,IAAI,OAAO,KAAK,IAAI,CAAC,IAAI,CAAC,OAAO;gBAC/B,IAAI,CAAC,MAAM,CAAC,MAAM,aAAN,MAAM,cAAN,MAAM,GAAI,IAAI,CAAC,uBAAuB,EAAE,CAAC,CAAC;QAC1D,CAAC,CAAC,CAAC;QAEH,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE;YACjB,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,KAAK,OAAO;gBAC/B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,uBAAuB,EAAE,CAAC,CAAC;QAChD,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,MAAM,CAAC,MAA0B;QACvC,IAAI,CAAC,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC;QAC9B,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QAC1B,IAAI,CAAC,SAAS,EAAE,CAAC;IACnB,CAAC;IAEO,KAAK,CAAC,aAAa;QACzB,MAAM,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC;QAClC,IAAI,GAAG,YAAY,OAAO,EAAE;YAC1B,MAAM,GAAG,GAAG,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC;YACzC,MAAM,eAAe,GAAG,SAAS,CAAC,YAAY,CAAC,WAAW,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YACnF,IAAI,eAAe;gBACjB,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,eAAe,EAAE,CAAC;YAEpD,mEAAmE;YACnE,MAAM,KAAK,GAAG,IAAI,GAAG,CAAS,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;YACzI,MAAM,QAAQ,GAAG,EAAE,CAAC;YACpB,KAAK,MAAM,IAAI,IAAI,KAAK;gBACtB,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC;YAE1C,OAAO,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE;gBAC3C,MAAM,SAAS,GAAG,IAAI,GAAG,EAAsC,CAAC;gBAChE,IAAI,KAAK,GAAG,CAAC,CAAC;gBACd,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;oBACxB,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;oBAC9B,IAAI,CAAC,KAAK;wBACR,OAAO,SAAS,CAAC;;wBAEjB,SAAS,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;iBAC9B;gBAED,mDAAmD;gBACnD,MAAM,MAAM,GAAG,IAAI,aAAa,CAAC,MAAM,CAAC,GAAG,EAAE,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBACxE,MAAM,MAAM,GAAG;oBACb,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAE,EAAE,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAE,EAAE,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAE;oBACjG,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAE,EAAE,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAE,EAAE,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAE;iBACrG,CAAC;gBAEF,MAAM,OAAO,GAAG,SAAS,CAAC,YAAY,CAAC,2BAA2B,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;gBAChK,OAAO,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;YACzD,CAAC,CAAC,CAAC;SACJ;aAAM,IAAI,GAAG,YAAY,SAAS,EAAE;YACnC,MAAM,QAAQ,GAAG,CAAC,CAAC,CAAC,+CAA+C;YACnE,IAAI,OAAO,GAAG,SAAS,CAAC,YAAY,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YAC/E,IAAI,CAAC,OAAO,EAAE;gBACZ,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;gBAClD,IAAI,KAAK,EAAE;oBACT,OAAO,GAAG,SAAS,CAAC,YAAY,CAAC,aAAa,CAAC;wBAC7C,KAAK,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE;wBACxB,SAAS,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,GAAG,EAAE,GAAG,CAAC,KAAK,EAAE;qBACzD,CAAC,CAAC;iBACJ;aACF;YAED,IAAI,CAAC,OAAO;gBACV,OAAO,SAAS,CAAC;YAEnB,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC;SACzF;aAAM;YACL,OAAO,IAAI,CAAC,uBAAuB,EAAE,CAAC;SACvC;IACH,CAAC;IAEO,kBAAkB,CAAC,GAAY;QACrC,MAAM,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC;QACrB,OAAO,WAAW,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC;IAClF,CAAC;IAEO,uBAAuB;QAC7B,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,EAAE,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC;IACnH,CAAC;IAEO,KAAK,CAAC,aAAa,CAAC,IAAsB;;QAChD,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;YACxB,OAAO,MAAA,CAAC,MAAM,SAAS,CAAC,YAAY,CAAC,gBAAgB,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,0CAAE,KAAK,CAAC;QAEzF,OAAO,sBAAsB,CAAC,IAAI,CAAC,CAAC;IACtC,CAAC;CACF","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 Views\r\n */\r\n\r\nimport { assert, Id64} from \"@itwin/core-bentley\";\r\nimport { Point2d, Point3d, PolyfaceBuilder, StrokeOptions } from \"@itwin/core-geometry\";\r\nimport {\r\n ColorDef, Environment, Gradient, GraphicParams, RenderTexture, SkyCube, SkySphere, TextureImageSpec, TextureMapping,\r\n} from \"@itwin/core-common\";\r\nimport { IModelApp } from \"./IModelApp\";\r\nimport { ViewState3d } from \"./ViewState\";\r\nimport { DecorateContext } from \"./ViewContext\";\r\nimport { tryImageElementFromUrl } from \"./ImageUtil\";\r\nimport { GraphicType } from \"./render/GraphicBuilder\";\r\nimport { RenderSkyBoxParams } from \"./render/RenderSystem\";\r\n\r\n/** @internal */\r\nexport interface GroundPlaneDecorations {\r\n readonly aboveParams: GraphicParams;\r\n readonly belowParams: GraphicParams;\r\n}\r\n\r\n/** @internal */\r\nexport interface SkyBoxDecorations {\r\n params?: RenderSkyBoxParams | undefined;\r\n promise?: Promise<RenderSkyBoxParams | undefined>;\r\n}\r\n\r\n/** @internal */\r\nexport class EnvironmentDecorations {\r\n protected readonly _view: ViewState3d;\r\n protected readonly _onLoaded: () => void;\r\n protected readonly _onDispose: () => void;\r\n protected _environment: Environment;\r\n protected _ground?: GroundPlaneDecorations;\r\n protected _sky: SkyBoxDecorations;\r\n\r\n public constructor(view: ViewState3d, onLoaded: () => void, onDispose: () => void) {\r\n this._environment = view.displayStyle.environment;\r\n this._view = view;\r\n this._onLoaded = onLoaded;\r\n this._onDispose = onDispose;\r\n\r\n this._sky = { };\r\n this.loadSky();\r\n if (this._environment.displayGround)\r\n this.loadGround();\r\n }\r\n\r\n public dispose(): void {\r\n this._ground = undefined;\r\n\r\n this._sky.promise = this._sky.params = undefined;\r\n\r\n this._onDispose();\r\n }\r\n\r\n public setEnvironment(env: Environment): void {\r\n const prev = this._environment;\r\n if (prev === env)\r\n return;\r\n\r\n this._environment = env;\r\n\r\n // Update ground plane\r\n if (!env.displayGround || env.ground !== prev.ground)\r\n this._ground = undefined;\r\n\r\n if (env.displayGround && !this._ground)\r\n this.loadGround();\r\n\r\n // Update sky box\r\n if (env.sky !== prev.sky)\r\n this.loadSky();\r\n }\r\n\r\n public decorate(context: DecorateContext): void {\r\n const env = this._environment;\r\n if (env.displaySky && this._sky.params) {\r\n const sky = IModelApp.renderSystem.createSkyBox(this._sky.params);\r\n if (sky)\r\n context.setSkyBox(sky);\r\n }\r\n\r\n if (!env.displayGround || !this._ground)\r\n return;\r\n\r\n const extents = this._view.getGroundExtents(context.viewport);\r\n if (extents.isNull)\r\n return;\r\n\r\n const points: Point3d[] = [extents.low.clone(), extents.low.clone(), extents.high.clone(), extents.high.clone()];\r\n points[1].x = extents.high.x;\r\n points[3].x = extents.low.x;\r\n\r\n const aboveGround = this._view.isEyePointAbove(extents.low.z);\r\n const params = aboveGround ? this._ground.aboveParams : this._ground.belowParams;\r\n const builder = context.createGraphicBuilder(GraphicType.WorldDecoration);\r\n builder.activateGraphicParams(params);\r\n\r\n const strokeOptions = new StrokeOptions();\r\n strokeOptions.needParams = true;\r\n const polyfaceBuilder = PolyfaceBuilder.create(strokeOptions);\r\n polyfaceBuilder.toggleReversedFacetFlag();\r\n const uvParams: Point2d[] = [Point2d.create(0, 0), Point2d.create(1, 0), Point2d.create(1, 1), Point2d.create(0, 1)];\r\n polyfaceBuilder.addQuadFacet(points, uvParams);\r\n const polyface = polyfaceBuilder.claimPolyface(false);\r\n\r\n builder.addPolyface(polyface, true);\r\n context.addDecorationFromBuilder(builder);\r\n }\r\n\r\n private loadGround(): void {\r\n assert(undefined === this._ground);\r\n const aboveParams = this.createGroundParams(true);\r\n const belowParams = this.createGroundParams(false);\r\n if (aboveParams && belowParams)\r\n this._ground = { aboveParams, belowParams };\r\n }\r\n\r\n private createGroundParams(above: boolean): GraphicParams | undefined {\r\n // Create a gradient texture.\r\n const ground = this._environment.ground;\r\n const values = [0, 0.25, 0.5 ];\r\n const color = above ? ground.aboveColor : ground.belowColor;\r\n const alpha = above ? 0x80 : 0x85;\r\n const groundColors = [color.withTransparency(0xff), color, color];\r\n groundColors[1] = groundColors[2] = color.withTransparency(alpha);\r\n\r\n const gradient = new Gradient.Symb();\r\n gradient.mode = Gradient.Mode.Spherical;\r\n gradient.keys = [{ color: groundColors[0], value: values[0] }, { color: groundColors[1], value: values[1] }, { color: groundColors[2], value: values[2] }];\r\n const texture = IModelApp.renderSystem.getGradientTexture(gradient, this._view.iModel);\r\n if (!texture)\r\n return undefined;\r\n\r\n // Create a material using the gradient texture\r\n const material = IModelApp.renderSystem.createRenderMaterial({\r\n diffuse: { color: ColorDef.white, weight: 0 },\r\n textureMapping: {\r\n texture,\r\n transform: new TextureMapping.Trans2x3(0, 1, 0, 1, 0, 0),\r\n },\r\n });\r\n\r\n if (!material)\r\n return undefined;\r\n\r\n // Create GraphicParams using the material.\r\n const params = new GraphicParams();\r\n params.lineColor = gradient.keys[0].color;\r\n params.fillColor = ColorDef.white; // Fill should be set to opaque white for gradient texture...\r\n params.material = material;\r\n\r\n return params;\r\n }\r\n\r\n private loadSky(): void {\r\n const promise = this.loadSkyParams();\r\n this._sky.promise = promise;\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\r\n promise.then((params) => {\r\n if (promise === this._sky.promise)\r\n this.setSky(params ?? this.createSkyGradientParams());\r\n });\r\n\r\n promise.catch(() => {\r\n if (this._sky.promise === promise)\r\n this.setSky(this.createSkyGradientParams());\r\n });\r\n }\r\n\r\n private setSky(params: RenderSkyBoxParams): void {\r\n this._sky.promise = undefined;\r\n this._sky.params = params;\r\n this._onLoaded();\r\n }\r\n\r\n private async loadSkyParams(): Promise<RenderSkyBoxParams | undefined> {\r\n const sky = this._environment.sky;\r\n if (sky instanceof SkyCube) {\r\n const key = this.createCubeImageKey(sky);\r\n const existingTexture = IModelApp.renderSystem.findTexture(key, this._view.iModel);\r\n if (existingTexture)\r\n return { type: \"cube\", texture: existingTexture };\r\n\r\n // Some faces may use the same image. Only request each image once.\r\n const specs = new Set<string>([sky.images.front, sky.images.back, sky.images.left, sky.images.right, sky.images.top, sky.images.bottom]);\r\n const promises = [];\r\n for (const spec of specs)\r\n promises.push(this.imageFromSpec(spec));\r\n\r\n return Promise.all(promises).then((images) => {\r\n const idToImage = new Map<TextureImageSpec, HTMLImageElement>();\r\n let index = 0;\r\n for (const spec of specs) {\r\n const image = images[index++];\r\n if (!image)\r\n return undefined;\r\n else\r\n idToImage.set(spec, image);\r\n }\r\n\r\n // eslint-disable-next-line deprecation/deprecation\r\n const params = new RenderTexture.Params(key, RenderTexture.Type.SkyBox);\r\n const txImgs = [\r\n idToImage.get(sky.images.front)!, idToImage.get(sky.images.back)!, idToImage.get(sky.images.top)!,\r\n idToImage.get(sky.images.bottom)!, idToImage.get(sky.images.right)!, idToImage.get(sky.images.left)!,\r\n ];\r\n\r\n const texture = IModelApp.renderSystem.createTextureFromCubeImages(txImgs[0], txImgs[1], txImgs[2], txImgs[3], txImgs[4], txImgs[5], this._view.iModel, params);\r\n return texture ? { type: \"cube\", texture } : undefined;\r\n });\r\n } else if (sky instanceof SkySphere) {\r\n const rotation = 0; // ###TODO where is this supposed to come from?\r\n let texture = IModelApp.renderSystem.findTexture(sky.image, this._view.iModel);\r\n if (!texture) {\r\n const image = await this.imageFromSpec(sky.image);\r\n if (image) {\r\n texture = IModelApp.renderSystem.createTexture({\r\n image: { source: image },\r\n ownership: { iModel: this._view.iModel, key: sky.image },\r\n });\r\n }\r\n }\r\n\r\n if (!texture)\r\n return undefined;\r\n\r\n return { type: \"sphere\", texture, rotation, zOffset: this._view.iModel.globalOrigin.z };\r\n } else {\r\n return this.createSkyGradientParams();\r\n }\r\n }\r\n\r\n private createCubeImageKey(sky: SkyCube): string {\r\n const i = sky.images;\r\n return `skycube:${i.front}:${i.back}:${i.left}:${i.right}:${i.top}:${i.bottom}`;\r\n }\r\n\r\n private createSkyGradientParams(): RenderSkyBoxParams {\r\n return { type: \"gradient\", gradient: this._environment.sky.gradient, zOffset: this._view.iModel.globalOrigin.z };\r\n }\r\n\r\n private async imageFromSpec(spec: TextureImageSpec): Promise<HTMLImageElement | undefined> {\r\n if (Id64.isValidId64(spec))\r\n return (await IModelApp.renderSystem.loadTextureImage(spec, this._view.iModel))?.image;\r\n\r\n return tryImageElementFromUrl(spec);\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"EnvironmentDecorations.js","sourceRoot":"","sources":["../../src/EnvironmentDecorations.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 Views\r\n */\r\n\r\nimport { assert, Id64} from \"@itwin/core-bentley\";\r\nimport { Point2d, Point3d, PolyfaceBuilder, StrokeOptions } from \"@itwin/core-geometry\";\r\nimport {\r\n ColorDef, Environment, Gradient, GraphicParams, RenderTexture, SkyCube, SkySphere, TextureImageSpec, TextureMapping,\r\n} from \"@itwin/core-common\";\r\nimport { IModelApp } from \"./IModelApp\";\r\nimport { ViewState3d } from \"./ViewState\";\r\nimport { DecorateContext } from \"./ViewContext\";\r\nimport { tryImageElementFromUrl } from \"./ImageUtil\";\r\nimport { GraphicType } from \"./render/GraphicBuilder\";\r\nimport { RenderSkyBoxParams } from \"./render/RenderSystem\";\r\n\r\n/** @internal */\r\nexport interface GroundPlaneDecorations {\r\n readonly aboveParams: GraphicParams;\r\n readonly belowParams: GraphicParams;\r\n}\r\n\r\ninterface SkyBoxParamsLoader {\r\n // Invoke to obtain sky box params.\r\n load(): RenderSkyBoxParams | undefined;\r\n // If defined, await before invoking load().\r\n preload?: Promise<boolean>;\r\n}\r\n\r\n/** @internal */\r\nexport interface SkyBoxDecorations {\r\n params?: RenderSkyBoxParams;\r\n promise?: Promise<boolean>;\r\n}\r\n\r\n/** @internal */\r\nexport class EnvironmentDecorations {\r\n protected readonly _view: ViewState3d;\r\n protected readonly _onLoaded: () => void;\r\n protected readonly _onDispose: () => void;\r\n protected _environment: Environment;\r\n protected _ground?: GroundPlaneDecorations;\r\n protected _sky: SkyBoxDecorations;\r\n\r\n public constructor(view: ViewState3d, onLoaded: () => void, onDispose: () => void) {\r\n this._environment = view.displayStyle.environment;\r\n this._view = view;\r\n this._onLoaded = onLoaded;\r\n this._onDispose = onDispose;\r\n\r\n this._sky = { };\r\n this.loadSkyBox();\r\n if (this._environment.displayGround)\r\n this.loadGround();\r\n }\r\n\r\n public dispose(): void {\r\n this._ground = undefined;\r\n this._sky.params = this._sky.promise = undefined;\r\n\r\n this._onDispose();\r\n }\r\n\r\n public setEnvironment(env: Environment): void {\r\n const prev = this._environment;\r\n if (prev === env)\r\n return;\r\n\r\n this._environment = env;\r\n\r\n // Update ground plane\r\n if (!env.displayGround || env.ground !== prev.ground)\r\n this._ground = undefined;\r\n\r\n if (env.displayGround && !this._ground)\r\n this.loadGround();\r\n\r\n // Update sky box\r\n if (env.sky !== prev.sky)\r\n this.loadSkyBox();\r\n }\r\n\r\n public decorate(context: DecorateContext): void {\r\n const env = this._environment;\r\n if (env.displaySky && this._sky.params) {\r\n const sky = IModelApp.renderSystem.createSkyBox(this._sky.params);\r\n if (sky)\r\n context.setSkyBox(sky);\r\n }\r\n\r\n if (!env.displayGround || !this._ground)\r\n return;\r\n\r\n const extents = this._view.getGroundExtents(context.viewport);\r\n if (extents.isNull)\r\n return;\r\n\r\n const points: Point3d[] = [extents.low.clone(), extents.low.clone(), extents.high.clone(), extents.high.clone()];\r\n points[1].x = extents.high.x;\r\n points[3].x = extents.low.x;\r\n\r\n const aboveGround = this._view.isEyePointAbove(extents.low.z);\r\n const params = aboveGround ? this._ground.aboveParams : this._ground.belowParams;\r\n const builder = context.createGraphicBuilder(GraphicType.WorldDecoration);\r\n builder.activateGraphicParams(params);\r\n\r\n const strokeOptions = new StrokeOptions();\r\n strokeOptions.needParams = true;\r\n const polyfaceBuilder = PolyfaceBuilder.create(strokeOptions);\r\n polyfaceBuilder.toggleReversedFacetFlag();\r\n const uvParams: Point2d[] = [Point2d.create(0, 0), Point2d.create(1, 0), Point2d.create(1, 1), Point2d.create(0, 1)];\r\n polyfaceBuilder.addQuadFacet(points, uvParams);\r\n const polyface = polyfaceBuilder.claimPolyface(false);\r\n\r\n builder.addPolyface(polyface, true);\r\n context.addDecorationFromBuilder(builder);\r\n }\r\n\r\n private loadGround(): void {\r\n assert(undefined === this._ground);\r\n const aboveParams = this.createGroundParams(true);\r\n const belowParams = this.createGroundParams(false);\r\n if (aboveParams && belowParams)\r\n this._ground = { aboveParams, belowParams };\r\n }\r\n\r\n private createGroundParams(above: boolean): GraphicParams | undefined {\r\n // Create a gradient texture.\r\n const ground = this._environment.ground;\r\n const values = [0, 0.25, 0.5 ];\r\n const color = above ? ground.aboveColor : ground.belowColor;\r\n const alpha = above ? 0x80 : 0x85;\r\n const groundColors = [color.withTransparency(0xff), color, color];\r\n groundColors[1] = groundColors[2] = color.withTransparency(alpha);\r\n\r\n const gradient = new Gradient.Symb();\r\n gradient.mode = Gradient.Mode.Spherical;\r\n gradient.keys = [{ color: groundColors[0], value: values[0] }, { color: groundColors[1], value: values[1] }, { color: groundColors[2], value: values[2] }];\r\n const texture = IModelApp.renderSystem.getGradientTexture(gradient, this._view.iModel);\r\n if (!texture)\r\n return undefined;\r\n\r\n // Create a material using the gradient texture\r\n const material = IModelApp.renderSystem.createRenderMaterial({\r\n diffuse: { color: ColorDef.white, weight: 0 },\r\n textureMapping: {\r\n texture,\r\n transform: new TextureMapping.Trans2x3(0, 1, 0, 1, 0, 0),\r\n },\r\n });\r\n\r\n if (!material)\r\n return undefined;\r\n\r\n // Create GraphicParams using the material.\r\n const params = new GraphicParams();\r\n params.lineColor = gradient.keys[0].color;\r\n params.fillColor = ColorDef.white; // Fill should be set to opaque white for gradient texture...\r\n params.material = material;\r\n\r\n return params;\r\n }\r\n\r\n private loadSkyBox(): void {\r\n const loader = this.loadSkyBoxParams();\r\n if (undefined === loader.preload) {\r\n this.setSky(loader.load());\r\n return;\r\n }\r\n\r\n const promise = loader.preload;\r\n this._sky.promise = promise;\r\n loader.preload.then((loaded) => {\r\n if (promise === this._sky.promise)\r\n this.setSky(loaded ? loader.load() : undefined);\r\n }).catch(() => {\r\n if (promise === this._sky.promise)\r\n this.setSky(undefined);\r\n });\r\n }\r\n\r\n private setSky(params: RenderSkyBoxParams | undefined): void {\r\n this._sky.promise = undefined;\r\n this._sky.params = params ?? this.createSkyGradientParams();\r\n this._onLoaded();\r\n }\r\n\r\n private loadSkyBoxParams(): SkyBoxParamsLoader {\r\n let load: (() => RenderSkyBoxParams | undefined);\r\n let preload: Promise<boolean> | undefined;\r\n\r\n const sky = this._environment.sky;\r\n if (sky instanceof SkyCube) {\r\n const key = this.createCubeImageKey(sky);\r\n load = () => {\r\n const texture = IModelApp.renderSystem.findTexture(key, this._view.iModel);\r\n return texture ? { type: \"cube\", texture } : undefined;\r\n };\r\n\r\n if (!IModelApp.renderSystem.findTexture(key, this._view.iModel)) {\r\n // Some faces may use the same image. Only request each image once.\r\n const promises = [];\r\n const specs = new Set<string>([sky.images.front, sky.images.back, sky.images.left, sky.images.right, sky.images.top, sky.images.bottom]);\r\n for (const spec of specs)\r\n promises.push(this.imageFromSpec(spec));\r\n\r\n preload = Promise.all(promises).then((images) => {\r\n const idToImage = new Map<TextureImageSpec, HTMLImageElement>();\r\n let index = 0;\r\n for (const spec of specs) {\r\n const image = images[index++];\r\n if (!image)\r\n return false;\r\n else\r\n idToImage.set(spec, image);\r\n }\r\n\r\n // eslint-disable-next-line deprecation/deprecation\r\n const params = new RenderTexture.Params(key, RenderTexture.Type.SkyBox);\r\n const txImgs = [\r\n idToImage.get(sky.images.front)!, idToImage.get(sky.images.back)!, idToImage.get(sky.images.top)!,\r\n idToImage.get(sky.images.bottom)!, idToImage.get(sky.images.right)!, idToImage.get(sky.images.left)!,\r\n ];\r\n\r\n return undefined !== IModelApp.renderSystem.createTextureFromCubeImages(txImgs[0], txImgs[1], txImgs[2], txImgs[3], txImgs[4], txImgs[5], this._view.iModel, params);\r\n });\r\n }\r\n } else if (sky instanceof SkySphere) {\r\n load = () => {\r\n const texture = IModelApp.renderSystem.findTexture(sky.image, this._view.iModel);\r\n return texture ? {\r\n type: \"sphere\",\r\n texture,\r\n rotation: 0,\r\n zOffset: this._view.iModel.globalOrigin.z,\r\n } : undefined;\r\n };\r\n\r\n if (!IModelApp.renderSystem.findTexture(sky.image, this._view.iModel)) {\r\n preload = this.imageFromSpec(sky.image).then((image) => {\r\n if (!image)\r\n return false;\r\n\r\n return undefined !== IModelApp.renderSystem.createTexture({\r\n image: { source: image },\r\n ownership: { iModel: this._view.iModel, key: sky.image },\r\n });\r\n });\r\n }\r\n } else {\r\n load = () => this.createSkyGradientParams();\r\n }\r\n\r\n return { load, preload };\r\n }\r\n\r\n private createCubeImageKey(sky: SkyCube): string {\r\n const i = sky.images;\r\n return `skycube:${i.front}:${i.back}:${i.left}:${i.right}:${i.top}:${i.bottom}`;\r\n }\r\n\r\n private createSkyGradientParams(): RenderSkyBoxParams {\r\n return {\r\n type: \"gradient\",\r\n gradient: this._environment.sky.gradient,\r\n zOffset: this._view.iModel.globalOrigin.z,\r\n };\r\n }\r\n\r\n private async imageFromSpec(spec: TextureImageSpec): Promise<HTMLImageElement | undefined> {\r\n if (Id64.isValidId64(spec))\r\n return (await IModelApp.renderSystem.loadTextureImage(spec, this._view.iModel))?.image;\r\n\r\n return tryImageElementFromUrl(spec);\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"}
@@ -2,6 +2,7 @@
2
2
  * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
3
3
  * See LICENSE.md in the project root for license terms and full copyright notice.
4
4
  *--------------------------------------------------------------------------------------------*/
5
+ import { EmptyLocalization } from "@itwin/core-common";
5
6
  import { IModelApp } from "./IModelApp";
6
7
  import { RenderSystem } from "./render/RenderSystem";
7
8
  import { RenderTarget } from "./render/RenderTarget";
@@ -62,9 +63,11 @@ export class NullRenderSystem extends RenderSystem {
62
63
  */
63
64
  export class NoRenderApp {
64
65
  static async startup(opts) {
66
+ var _a;
65
67
  opts = opts ? opts : {};
66
68
  opts.renderSys = new NullRenderSystem();
67
69
  opts.noRender = true;
70
+ opts.localization = (_a = opts.localization) !== null && _a !== void 0 ? _a : new EmptyLocalization();
68
71
  await IModelApp.startup(opts);
69
72
  }
70
73
  }
@@ -1 +1 @@
1
- {"version":3,"file":"NoRenderApp.js","sourceRoot":"","sources":["../../src/NoRenderApp.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F,OAAO,EAAE,SAAS,EAAoB,MAAM,aAAa,CAAC;AAE1D,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,MAAM,OAAO,UAAW,SAAQ,YAAY;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,QAAQ,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;AAED;;;;GAIG;AACH,MAAM,OAAO,gBAAiB,SAAQ,YAAY;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;AAED;;;;GAIG;AACH,MAAM,OAAO,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,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAChC,CAAC;CACF","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,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,SAAS,EAAoB,MAAM,aAAa,CAAC;AAE1D,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,MAAM,OAAO,UAAW,SAAQ,YAAY;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,QAAQ,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;AAED;;;;GAIG;AACH,MAAM,OAAO,gBAAiB,SAAQ,YAAY;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;AAED;;;;GAIG;AACH,MAAM,OAAO,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,iBAAiB,EAAE,CAAC;QACjE,MAAM,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAChC,CAAC;CACF","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/esm/Tiles.js CHANGED
@@ -143,6 +143,17 @@ export class Tiles {
143
143
  }
144
144
  return tree;
145
145
  }
146
+ /** Remove tile tree matching the provided tile tree supplier/id
147
+ * @internal
148
+ */
149
+ resetTileTreeOwner(id, supplier) {
150
+ const trees = this._treesBySupplier.get(supplier);
151
+ const tree = trees === null || trees === void 0 ? void 0 : trees.get(id);
152
+ if (tree) {
153
+ tree.dispose();
154
+ trees === null || trees === void 0 ? void 0 : trees.delete(id);
155
+ }
156
+ }
146
157
  /** Disposes of all [[TileTree]]s belonging to `supplier` and removes `supplier` from the set of known tile tree suppliers. */
147
158
  dropSupplier(supplier) {
148
159
  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":"AAAA;;;+FAG+F;AAC/F;;GAEG;AAEH,OAAO,EAAe,UAAU,EAAE,OAAO,EAAyB,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAC5G,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC,OAAO,EAAY,kBAAkB,EAAmC,MAAM,iBAAiB,CAAC;AAEhG,MAAM,SAAS;IAYb,YAAmB,EAAO,EAAE,QAA0B,EAAE,MAAwB;QAVxE,gBAAW,GAAuB,kBAAkB,CAAC,SAAS,CAAC;QAWrE,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;QAC1B,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;IACxB,CAAC;IARD,IAAW,QAAQ,KAA2B,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;IACtE,IAAW,UAAU,KAAyB,OAAO,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;IACxE,IAAW,MAAM,KAAuB,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;IAQvD,IAAI;QACT,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,8DAA8D;QAC5E,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;IAEM,KAAK,CAAC,QAAQ;QACnB,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;QACnB,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;IAEM,OAAO;QACZ,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACzC,IAAI,CAAC,WAAW,GAAG,kBAAkB,CAAC,SAAS,CAAC;IAClD,CAAC;IAEO,KAAK,CAAC,KAAK;QACjB,IAAI,kBAAkB,CAAC,SAAS,KAAK,IAAI,CAAC,UAAU;YAClD,OAAO;QAET,IAAI,CAAC,WAAW,GAAG,kBAAkB,CAAC,OAAO,CAAC;QAC9C,IAAI,IAA0B,CAAC;QAC/B,IAAI,SAA6B,CAAC;QAClC,IAAI;YACF,IAAI,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;YAClE,SAAS,GAAG,SAAS,KAAK,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC,CAAC,kBAAkB,CAAC,QAAQ,CAAC;SAChI;QAAC,OAAO,GAAQ,EAAE;YACjB,SAAS,GAAG,CAAC,GAAG,CAAC,WAAW,IAAI,GAAG,CAAC,WAAW,KAAK,YAAY,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC,CAAC,kBAAkB,CAAC,QAAQ,CAAC;SAC9I;QAED,IAAI,kBAAkB,CAAC,OAAO,KAAK,IAAI,CAAC,WAAW,EAAE;YACnD,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;YACtB,IAAI,CAAC,WAAW,GAAG,SAAS,CAAC;YAC7B,SAAS,CAAC,SAAS,CAAC,cAAc,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;SACrD;IACH,CAAC;CACF;AAED;;;;;;;GAOG;AACH,MAAM,OAAO,KAAK;IAQhB,gBAAgB;IAChB,YAAY,MAAwB;QAPnB,qBAAgB,GAAG,IAAI,GAAG,EAAgD,CAAC;QACpF,cAAS,GAAG,KAAK,CAAC;QAOxB,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;QAEtB,MAAM,CAAC,qBAAqB,CAAC,WAAW,CAAC,GAAG,EAAE;YAC5C,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,EAAE;gBACnD,IAAI,QAAQ,CAAC,eAAe;oBAC1B,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;aAC/B;QACH,CAAC,CAAC,CAAC;QAEH,oEAAoE;QACpE,MAAM,CAAC,uBAAuB,CAAC,WAAW,CAAC,KAAK,IAAI,EAAE;YACpD,IAAI,CAAC,MAAM,CAAC,qBAAqB,EAAE,IAAI,CAAC,MAAM,CAAC,YAAY;gBACzD,MAAM,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC,CAAC;QACxD,CAAC,CAAC,CAAC;IACL,CAAC;IAnBD,gBAAgB;IAChB,IAAW,UAAU,KAAK,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;IAoBlD,gBAAgB;IACT,OAAO;QACZ,IAAI,CAAC,KAAK,EAAE,CAAC;QACb,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;IACxB,CAAC;IAED;;OAEG;IACI,KAAK;QACV,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,gBAAgB;YAC1C,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QAExD,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,CAAC;IAChC,CAAC;IAED,gBAAgB;IACT,KAAK,CAAC,cAAc,CAAC,QAA+B;QACzD,OAAO,SAAS,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IACpE,CAAC;IAEO,iCAAiC,CAAC,qBAAiC;QACzE,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAc,CAAC;QACvC,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE;YACjD,IAAI,QAAQ,CAAC,yBAAyB;gBACpC,QAAQ,CAAC,yBAAyB,CAAC,QAAQ,EAAE,qBAAqB,EAAE,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,CAAC,CAAC;QAEjH,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED;;;;;;OAMG;IACI,KAAK,CAAC,uBAAuB,CAAC,qBAAiC;QACpE,OAAO,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,iCAAiC,CAAC,qBAAqB,CAAC,CAAC,CAAC;IAC7F,CAAC;IAEO,KAAK,CAAC,eAAe,CAAC,QAAyB;QACrD,IAAI,CAAC,KAAK,QAAQ,CAAC,IAAI;YACrB,OAAO;QAET,MAAM,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACjC,MAAM,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;QAC/B,SAAS,CAAC,WAAW,CAAC,wBAAwB,CAAC,GAAG,CAAC,CAAC;IACtD,CAAC;IAEO,gBAAgB;QACtB,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAc,CAAC;QACvC,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE;YACjD,IAAI,QAAQ,CAAC,gBAAgB;gBAC3B,QAAQ,CAAC,gBAAgB,CAAC,QAAQ,EAAE,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,CAAC,CAAC;QAEjF,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED;;;OAGG;IACI,gBAAgB,CAAC,EAAO,EAAE,QAA0B;QACzD,IAAI,KAAK,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAChD,IAAI,SAAS,KAAK,KAAK,EAAE;YACvB,KAAK,GAAG,IAAI,UAAU,CAAiB,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,QAAQ,CAAC,kBAAkB,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;YAC5F,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;SAC5C;QAED,IAAI,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACzB,IAAI,SAAS,KAAK,IAAI,EAAE;YACtB,IAAI,GAAG,IAAI,SAAS,CAAC,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;YACjD,KAAK,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;SACrB;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;OAEG;IACI,kBAAkB,CAAC,EAAO,EAAE,QAA0B;QAC3D,MAAM,KAAK,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAClD,MAAM,IAAI,GAAG,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,GAAG,CAAC,EAAE,CAAC,CAAC;QAC5B,IAAI,IAAI,EAAE;YACR,IAAI,CAAC,OAAO,EAAE,CAAC;YACf,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,MAAM,CAAC,EAAE,CAAC,CAAC;SACnB;IACH,CAAC;IAED,8HAA8H;IACvH,YAAY,CAAC,QAA0B;QAC5C,MAAM,KAAK,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAClD,IAAI,SAAS,KAAK,KAAK;YACrB,OAAO;QAET,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QAChD,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IACzC,CAAC;IAED,uDAAuD;IAChD,gBAAgB,CAAC,IAAoC;QAC1D,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE;YAC/C,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IAC/C,CAAC;IAED,8CAA8C;IACvC,CAAE,CAAC,MAAM,CAAC,QAAQ,CAAC;QACxB,KAAK,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC,gBAAgB,EAAE;YACpD,KAAK,MAAM,KAAK,IAAI,IAAI;gBACtB,MAAM,EAAE,QAAQ,EAAE,EAAE,EAAE,KAAK,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC;SACzD;IACH,CAAC;IAED,oEAAoE;IAC7D,wBAAwB,CAAC,QAA0B;QACxD,QAAQ,CAAC,CAAC,QAAQ,CAAC,KAA6C;YAC9D,IAAI,KAAK;gBACP,KAAK,MAAM,KAAK,IAAI,KAAK;oBACvB,MAAM,EAAE,EAAE,EAAE,KAAK,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC;QAClD,CAAC;QAED,OAAO;YACL,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;SACvE,CAAC;IACJ,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,SAAsB,EAAE,OAAuB;QAC1D,0KAA0K;QAC1K,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,gBAAgB,EAAE;YACzC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YACtB,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE;gBAC9B,MAAM,IAAI,GAAG,KAAK,CAAC,QAAQ,CAAC;gBAC5B,IAAI,SAAS,KAAK,IAAI,IAAI,IAAI,CAAC,gBAAgB,CAAC,YAAY,GAAG,SAAS,CAAC,YAAY;oBACnF,IAAI,SAAS,KAAK,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;wBAC7C,KAAK,CAAC,OAAO,EAAE,CAAC;YACtB,CAAC,CAAC,CAAC;SACJ;IACH,CAAC;CACF","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"]}
@@ -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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"}
@@ -8,7 +8,6 @@
8
8
  import { BeEvent, BentleyStatus, BeUiEvent } from "@itwin/core-bentley";
9
9
  import { IModelApp } from "./IModelApp";
10
10
  import { DisclosedTileTreeSet } from "./tile/internal";
11
- import { EventController } from "./tools/EventController";
12
11
  import { EventHandled } from "./tools/Tool";
13
12
  import { System } from "./render/webgl/System";
14
13
  /** The ViewManager holds the list of opened views, plus the *selected view*. It also provides notifications of view open/close and suspend/resume.
@@ -169,7 +168,7 @@ export class ViewManager {
169
168
  addViewport(newVp) {
170
169
  if (this.hasViewport(newVp)) // make sure its not already added
171
170
  return BentleyStatus.ERROR;
172
- newVp.setEventController(new EventController(newVp)); // this will direct events to the viewport
171
+ newVp.onViewManagerAdd();
173
172
  this._viewports.push(newVp);
174
173
  this.updateRenderToScreen();
175
174
  this.setSelectedView(newVp); // eslint-disable-line @typescript-eslint/no-floating-promises
@@ -198,7 +197,7 @@ export class ViewManager {
198
197
  this.onViewClose.emit(vp);
199
198
  // make sure tools don't think the cursor is still in this viewport
200
199
  IModelApp.toolAdmin.forgetViewport(vp);
201
- vp.setEventController(undefined);
200
+ vp.onViewManagerDrop();
202
201
  this._viewports.splice(index, 1);
203
202
  if (this.selectedView === vp) // if removed viewport was selectedView, set it to undefined.
204
203
  this.setSelectedView(undefined); // eslint-disable-line @typescript-eslint/no-floating-promises