@itwin/core-frontend 5.0.0-dev.40 → 5.0.0-dev.49

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 (566) hide show
  1. package/CHANGELOG.md +11 -1
  2. package/lib/cjs/AccuDraw.d.ts +21 -3
  3. package/lib/cjs/AccuDraw.d.ts.map +1 -1
  4. package/lib/cjs/AccuDraw.js +174 -56
  5. package/lib/cjs/AccuDraw.js.map +1 -1
  6. package/lib/cjs/BriefcaseConnection.js +1 -1
  7. package/lib/cjs/BriefcaseConnection.js.map +1 -1
  8. package/lib/cjs/BriefcaseTxns.d.ts +1 -1
  9. package/lib/cjs/BriefcaseTxns.d.ts.map +1 -1
  10. package/lib/cjs/BriefcaseTxns.js +1 -1
  11. package/lib/cjs/BriefcaseTxns.js.map +1 -1
  12. package/lib/cjs/DrawingViewState.js +2 -2
  13. package/lib/cjs/DrawingViewState.js.map +1 -1
  14. package/lib/cjs/EnvironmentDecorations.d.ts +1 -1
  15. package/lib/cjs/EnvironmentDecorations.d.ts.map +1 -1
  16. package/lib/cjs/EnvironmentDecorations.js +1 -1
  17. package/lib/cjs/EnvironmentDecorations.js.map +1 -1
  18. package/lib/cjs/GraphicalEditingScope.d.ts +3 -1
  19. package/lib/cjs/GraphicalEditingScope.d.ts.map +1 -1
  20. package/lib/cjs/GraphicalEditingScope.js +7 -3
  21. package/lib/cjs/GraphicalEditingScope.js.map +1 -1
  22. package/lib/cjs/IModelApp.d.ts +0 -5
  23. package/lib/cjs/IModelApp.d.ts.map +1 -1
  24. package/lib/cjs/IModelApp.js +0 -5
  25. package/lib/cjs/IModelApp.js.map +1 -1
  26. package/lib/cjs/IModelConnection.js +1 -1
  27. package/lib/cjs/IModelConnection.js.map +1 -1
  28. package/lib/cjs/NoRenderApp.d.ts +1 -1
  29. package/lib/cjs/NoRenderApp.d.ts.map +1 -1
  30. package/lib/cjs/NoRenderApp.js +1 -2
  31. package/lib/cjs/NoRenderApp.js.map +1 -1
  32. package/lib/cjs/SheetViewState.js +6 -6
  33. package/lib/cjs/SheetViewState.js.map +1 -1
  34. package/lib/cjs/SubCategoriesCache.d.ts +1 -1
  35. package/lib/cjs/SubCategoriesCache.d.ts.map +1 -1
  36. package/lib/cjs/SubCategoriesCache.js +1 -1
  37. package/lib/cjs/SubCategoriesCache.js.map +1 -1
  38. package/lib/cjs/Tiles.d.ts +1 -1
  39. package/lib/cjs/Tiles.d.ts.map +1 -1
  40. package/lib/cjs/Tiles.js +6 -6
  41. package/lib/cjs/Tiles.js.map +1 -1
  42. package/lib/cjs/ViewManager.js +1 -1
  43. package/lib/cjs/ViewManager.js.map +1 -1
  44. package/lib/cjs/ViewState.js +1 -1
  45. package/lib/cjs/ViewState.js.map +1 -1
  46. package/lib/cjs/Viewport.d.ts +5 -3
  47. package/lib/cjs/Viewport.d.ts.map +1 -1
  48. package/lib/cjs/Viewport.js +8 -4
  49. package/lib/cjs/Viewport.js.map +1 -1
  50. package/lib/cjs/common/internal/render/MeshPrimitives.js +1 -1
  51. package/lib/cjs/common/internal/render/MeshPrimitives.js.map +1 -1
  52. package/lib/cjs/core-frontend.d.ts +1 -0
  53. package/lib/cjs/core-frontend.d.ts.map +1 -1
  54. package/lib/cjs/core-frontend.js +1 -0
  55. package/lib/cjs/core-frontend.js.map +1 -1
  56. package/lib/cjs/internal/render/RenderGeometry.d.ts +1 -2
  57. package/lib/cjs/internal/render/RenderGeometry.d.ts.map +1 -1
  58. package/lib/cjs/internal/render/RenderGeometry.js.map +1 -1
  59. package/lib/cjs/render/Decorations.d.ts +3 -2
  60. package/lib/cjs/render/Decorations.d.ts.map +1 -1
  61. package/lib/cjs/render/Decorations.js +5 -1
  62. package/lib/cjs/render/Decorations.js.map +1 -1
  63. package/lib/cjs/render/GraphicBranch.d.ts +4 -2
  64. package/lib/cjs/render/GraphicBranch.d.ts.map +1 -1
  65. package/lib/cjs/render/GraphicBranch.js +5 -1
  66. package/lib/cjs/render/GraphicBranch.js.map +1 -1
  67. package/lib/cjs/render/MockRender.d.ts +2 -2
  68. package/lib/cjs/render/MockRender.d.ts.map +1 -1
  69. package/lib/cjs/render/MockRender.js +3 -4
  70. package/lib/cjs/render/MockRender.js.map +1 -1
  71. package/lib/cjs/render/RenderGraphic.d.ts +3 -2
  72. package/lib/cjs/render/RenderGraphic.d.ts.map +1 -1
  73. package/lib/cjs/render/RenderGraphic.js +4 -1
  74. package/lib/cjs/render/RenderGraphic.js.map +1 -1
  75. package/lib/cjs/render/RenderPlanarClassifier.d.ts +3 -3
  76. package/lib/cjs/render/RenderPlanarClassifier.d.ts.map +1 -1
  77. package/lib/cjs/render/RenderPlanarClassifier.js.map +1 -1
  78. package/lib/cjs/render/RenderSystem.d.ts +9 -8
  79. package/lib/cjs/render/RenderSystem.d.ts.map +1 -1
  80. package/lib/cjs/render/RenderSystem.js +3 -0
  81. package/lib/cjs/render/RenderSystem.js.map +1 -1
  82. package/lib/cjs/render/RenderTarget.d.ts +3 -3
  83. package/lib/cjs/render/RenderTarget.d.ts.map +1 -1
  84. package/lib/cjs/render/RenderTarget.js +1 -1
  85. package/lib/cjs/render/RenderTarget.js.map +1 -1
  86. package/lib/cjs/render/VisibleFeature.d.ts.map +1 -1
  87. package/lib/cjs/render/VisibleFeature.js +60 -3
  88. package/lib/cjs/render/VisibleFeature.js.map +1 -1
  89. package/lib/cjs/render/webgl/AtmosphereUniforms.d.ts +2 -0
  90. package/lib/cjs/render/webgl/AtmosphereUniforms.d.ts.map +1 -1
  91. package/lib/cjs/render/webgl/AtmosphereUniforms.js +5 -1
  92. package/lib/cjs/render/webgl/AtmosphereUniforms.js.map +1 -1
  93. package/lib/cjs/render/webgl/AttributeBuffers.d.ts +6 -2
  94. package/lib/cjs/render/webgl/AttributeBuffers.d.ts.map +1 -1
  95. package/lib/cjs/render/webgl/AttributeBuffers.js +12 -4
  96. package/lib/cjs/render/webgl/AttributeBuffers.js.map +1 -1
  97. package/lib/cjs/render/webgl/BackgroundMapDrape.d.ts +1 -1
  98. package/lib/cjs/render/webgl/BackgroundMapDrape.d.ts.map +1 -1
  99. package/lib/cjs/render/webgl/BackgroundMapDrape.js +3 -3
  100. package/lib/cjs/render/webgl/BackgroundMapDrape.js.map +1 -1
  101. package/lib/cjs/render/webgl/CachedGeometry.d.ts +8 -8
  102. package/lib/cjs/render/webgl/CachedGeometry.d.ts.map +1 -1
  103. package/lib/cjs/render/webgl/CachedGeometry.js +8 -8
  104. package/lib/cjs/render/webgl/CachedGeometry.js.map +1 -1
  105. package/lib/cjs/render/webgl/ClippingProgram.d.ts +2 -0
  106. package/lib/cjs/render/webgl/ClippingProgram.d.ts.map +1 -1
  107. package/lib/cjs/render/webgl/ClippingProgram.js +5 -1
  108. package/lib/cjs/render/webgl/ClippingProgram.js.map +1 -1
  109. package/lib/cjs/render/webgl/Contours.d.ts +1 -1
  110. package/lib/cjs/render/webgl/Contours.d.ts.map +1 -1
  111. package/lib/cjs/render/webgl/Contours.js +1 -1
  112. package/lib/cjs/render/webgl/Contours.js.map +1 -1
  113. package/lib/cjs/render/webgl/Disposable.d.ts +1 -2
  114. package/lib/cjs/render/webgl/Disposable.d.ts.map +1 -1
  115. package/lib/cjs/render/webgl/Disposable.js +4 -0
  116. package/lib/cjs/render/webgl/Disposable.js.map +1 -1
  117. package/lib/cjs/render/webgl/EDL.d.ts +1 -1
  118. package/lib/cjs/render/webgl/EDL.d.ts.map +1 -1
  119. package/lib/cjs/render/webgl/EDL.js +3 -3
  120. package/lib/cjs/render/webgl/EDL.js.map +1 -1
  121. package/lib/cjs/render/webgl/EdgeGeometry.d.ts +3 -3
  122. package/lib/cjs/render/webgl/EdgeGeometry.d.ts.map +1 -1
  123. package/lib/cjs/render/webgl/EdgeGeometry.js +4 -4
  124. package/lib/cjs/render/webgl/EdgeGeometry.js.map +1 -1
  125. package/lib/cjs/render/webgl/FeatureOverrides.d.ts +1 -1
  126. package/lib/cjs/render/webgl/FeatureOverrides.d.ts.map +1 -1
  127. package/lib/cjs/render/webgl/FeatureOverrides.js +1 -1
  128. package/lib/cjs/render/webgl/FeatureOverrides.js.map +1 -1
  129. package/lib/cjs/render/webgl/FrameBuffer.d.ts +1 -1
  130. package/lib/cjs/render/webgl/FrameBuffer.d.ts.map +1 -1
  131. package/lib/cjs/render/webgl/FrameBuffer.js +1 -1
  132. package/lib/cjs/render/webgl/FrameBuffer.js.map +1 -1
  133. package/lib/cjs/render/webgl/Graphic.d.ts +2 -2
  134. package/lib/cjs/render/webgl/Graphic.d.ts.map +1 -1
  135. package/lib/cjs/render/webgl/Graphic.js +11 -11
  136. package/lib/cjs/render/webgl/Graphic.js.map +1 -1
  137. package/lib/cjs/render/webgl/IndexedEdgeGeometry.d.ts +2 -2
  138. package/lib/cjs/render/webgl/IndexedEdgeGeometry.d.ts.map +1 -1
  139. package/lib/cjs/render/webgl/IndexedEdgeGeometry.js +2 -2
  140. package/lib/cjs/render/webgl/IndexedEdgeGeometry.js.map +1 -1
  141. package/lib/cjs/render/webgl/InstancedGeometry.d.ts +4 -4
  142. package/lib/cjs/render/webgl/InstancedGeometry.d.ts.map +1 -1
  143. package/lib/cjs/render/webgl/InstancedGeometry.js +5 -6
  144. package/lib/cjs/render/webgl/InstancedGeometry.js.map +1 -1
  145. package/lib/cjs/render/webgl/Layer.js +1 -1
  146. package/lib/cjs/render/webgl/Layer.js.map +1 -1
  147. package/lib/cjs/render/webgl/Mesh.d.ts +1 -1
  148. package/lib/cjs/render/webgl/Mesh.d.ts.map +1 -1
  149. package/lib/cjs/render/webgl/Mesh.js +1 -1
  150. package/lib/cjs/render/webgl/Mesh.js.map +1 -1
  151. package/lib/cjs/render/webgl/MeshData.d.ts +1 -1
  152. package/lib/cjs/render/webgl/MeshData.d.ts.map +1 -1
  153. package/lib/cjs/render/webgl/MeshData.js +2 -2
  154. package/lib/cjs/render/webgl/MeshData.js.map +1 -1
  155. package/lib/cjs/render/webgl/PlanarClassifier.d.ts +1 -1
  156. package/lib/cjs/render/webgl/PlanarClassifier.d.ts.map +1 -1
  157. package/lib/cjs/render/webgl/PlanarClassifier.js +22 -9
  158. package/lib/cjs/render/webgl/PlanarClassifier.js.map +1 -1
  159. package/lib/cjs/render/webgl/PointCloud.d.ts +1 -1
  160. package/lib/cjs/render/webgl/PointCloud.d.ts.map +1 -1
  161. package/lib/cjs/render/webgl/PointCloud.js +1 -1
  162. package/lib/cjs/render/webgl/PointCloud.js.map +1 -1
  163. package/lib/cjs/render/webgl/PointString.d.ts +1 -1
  164. package/lib/cjs/render/webgl/PointString.d.ts.map +1 -1
  165. package/lib/cjs/render/webgl/PointString.js +1 -1
  166. package/lib/cjs/render/webgl/PointString.js.map +1 -1
  167. package/lib/cjs/render/webgl/Polyline.d.ts +1 -1
  168. package/lib/cjs/render/webgl/Polyline.d.ts.map +1 -1
  169. package/lib/cjs/render/webgl/Polyline.js +1 -1
  170. package/lib/cjs/render/webgl/Polyline.js.map +1 -1
  171. package/lib/cjs/render/webgl/RealityMesh.d.ts +6 -10
  172. package/lib/cjs/render/webgl/RealityMesh.d.ts.map +1 -1
  173. package/lib/cjs/render/webgl/RealityMesh.js +6 -6
  174. package/lib/cjs/render/webgl/RealityMesh.js.map +1 -1
  175. package/lib/cjs/render/webgl/RenderBuffer.d.ts +2 -2
  176. package/lib/cjs/render/webgl/RenderBuffer.d.ts.map +1 -1
  177. package/lib/cjs/render/webgl/RenderBuffer.js +2 -2
  178. package/lib/cjs/render/webgl/RenderBuffer.js.map +1 -1
  179. package/lib/cjs/render/webgl/SceneCompositor.d.ts +1 -1
  180. package/lib/cjs/render/webgl/SceneCompositor.d.ts.map +1 -1
  181. package/lib/cjs/render/webgl/SceneCompositor.js +6 -6
  182. package/lib/cjs/render/webgl/SceneCompositor.js.map +1 -1
  183. package/lib/cjs/render/webgl/ScreenSpaceEffect.d.ts +1 -1
  184. package/lib/cjs/render/webgl/ScreenSpaceEffect.d.ts.map +1 -1
  185. package/lib/cjs/render/webgl/ScreenSpaceEffect.js +2 -2
  186. package/lib/cjs/render/webgl/ScreenSpaceEffect.js.map +1 -1
  187. package/lib/cjs/render/webgl/ShaderProgram.d.ts +5 -1
  188. package/lib/cjs/render/webgl/ShaderProgram.d.ts.map +1 -1
  189. package/lib/cjs/render/webgl/ShaderProgram.js +11 -3
  190. package/lib/cjs/render/webgl/ShaderProgram.js.map +1 -1
  191. package/lib/cjs/render/webgl/SolarShadowMap.d.ts +1 -1
  192. package/lib/cjs/render/webgl/SolarShadowMap.d.ts.map +1 -1
  193. package/lib/cjs/render/webgl/SolarShadowMap.js +3 -3
  194. package/lib/cjs/render/webgl/SolarShadowMap.js.map +1 -1
  195. package/lib/cjs/render/webgl/SurfaceGeometry.d.ts +1 -1
  196. package/lib/cjs/render/webgl/SurfaceGeometry.d.ts.map +1 -1
  197. package/lib/cjs/render/webgl/SurfaceGeometry.js +1 -1
  198. package/lib/cjs/render/webgl/SurfaceGeometry.js.map +1 -1
  199. package/lib/cjs/render/webgl/System.d.ts +1 -1
  200. package/lib/cjs/render/webgl/System.d.ts.map +1 -1
  201. package/lib/cjs/render/webgl/System.js +1 -1
  202. package/lib/cjs/render/webgl/System.js.map +1 -1
  203. package/lib/cjs/render/webgl/Target.d.ts +2 -2
  204. package/lib/cjs/render/webgl/Target.d.ts.map +1 -1
  205. package/lib/cjs/render/webgl/Target.js +9 -10
  206. package/lib/cjs/render/webgl/Target.js.map +1 -1
  207. package/lib/cjs/render/webgl/TargetGraphics.d.ts +1 -1
  208. package/lib/cjs/render/webgl/TargetGraphics.d.ts.map +1 -1
  209. package/lib/cjs/render/webgl/TargetGraphics.js +1 -1
  210. package/lib/cjs/render/webgl/TargetGraphics.js.map +1 -1
  211. package/lib/cjs/render/webgl/Technique.d.ts +6 -0
  212. package/lib/cjs/render/webgl/Technique.d.ts.map +1 -1
  213. package/lib/cjs/render/webgl/Technique.js +97 -15
  214. package/lib/cjs/render/webgl/Technique.js.map +1 -1
  215. package/lib/cjs/render/webgl/Texture.d.ts +1 -1
  216. package/lib/cjs/render/webgl/Texture.d.ts.map +1 -1
  217. package/lib/cjs/render/webgl/Texture.js +1 -1
  218. package/lib/cjs/render/webgl/Texture.js.map +1 -1
  219. package/lib/cjs/render/webgl/TextureDrape.d.ts +1 -1
  220. package/lib/cjs/render/webgl/TextureDrape.d.ts.map +1 -1
  221. package/lib/cjs/render/webgl/TextureDrape.js +1 -1
  222. package/lib/cjs/render/webgl/TextureDrape.js.map +1 -1
  223. package/lib/cjs/render/webgl/ThematicSensors.d.ts +1 -1
  224. package/lib/cjs/render/webgl/ThematicSensors.d.ts.map +1 -1
  225. package/lib/cjs/render/webgl/ThematicSensors.js +1 -1
  226. package/lib/cjs/render/webgl/ThematicSensors.js.map +1 -1
  227. package/lib/cjs/render/webgl/ThematicUniforms.d.ts +1 -1
  228. package/lib/cjs/render/webgl/ThematicUniforms.d.ts.map +1 -1
  229. package/lib/cjs/render/webgl/ThematicUniforms.js +1 -1
  230. package/lib/cjs/render/webgl/ThematicUniforms.js.map +1 -1
  231. package/lib/cjs/render/webgl/VertexLUT.d.ts +2 -2
  232. package/lib/cjs/render/webgl/VertexLUT.d.ts.map +1 -1
  233. package/lib/cjs/render/webgl/VertexLUT.js +2 -2
  234. package/lib/cjs/render/webgl/VertexLUT.js.map +1 -1
  235. package/lib/cjs/render/webgl/VisibleTileFeatures.js +60 -3
  236. package/lib/cjs/render/webgl/VisibleTileFeatures.js.map +1 -1
  237. package/lib/cjs/tile/ClassifierTileTree.js +1 -1
  238. package/lib/cjs/tile/ClassifierTileTree.js.map +1 -1
  239. package/lib/cjs/tile/DynamicIModelTile.js +3 -3
  240. package/lib/cjs/tile/DynamicIModelTile.js.map +1 -1
  241. package/lib/cjs/tile/IModelTileTree.d.ts +1 -1
  242. package/lib/cjs/tile/IModelTileTree.d.ts.map +1 -1
  243. package/lib/cjs/tile/IModelTileTree.js +12 -10
  244. package/lib/cjs/tile/IModelTileTree.js.map +1 -1
  245. package/lib/cjs/tile/ImdlDecoder.d.ts +1 -1
  246. package/lib/cjs/tile/ImdlDecoder.js +1 -1
  247. package/lib/cjs/tile/ImdlDecoder.js.map +1 -1
  248. package/lib/cjs/tile/LRUTileList.d.ts +1 -1
  249. package/lib/cjs/tile/LRUTileList.d.ts.map +1 -1
  250. package/lib/cjs/tile/LRUTileList.js +1 -1
  251. package/lib/cjs/tile/LRUTileList.js.map +1 -1
  252. package/lib/cjs/tile/OrbitGtTileTree.d.ts +1 -1
  253. package/lib/cjs/tile/OrbitGtTileTree.d.ts.map +1 -1
  254. package/lib/cjs/tile/OrbitGtTileTree.js +6 -6
  255. package/lib/cjs/tile/OrbitGtTileTree.js.map +1 -1
  256. package/lib/cjs/tile/PrimaryTileTree.js +1 -1
  257. package/lib/cjs/tile/PrimaryTileTree.js.map +1 -1
  258. package/lib/cjs/tile/Tile.d.ts +2 -0
  259. package/lib/cjs/tile/Tile.d.ts.map +1 -1
  260. package/lib/cjs/tile/Tile.js +6 -2
  261. package/lib/cjs/tile/Tile.js.map +1 -1
  262. package/lib/cjs/tile/TileAdmin.js +1 -1
  263. package/lib/cjs/tile/TileAdmin.js.map +1 -1
  264. package/lib/cjs/tile/TileTree.d.ts +2 -0
  265. package/lib/cjs/tile/TileTree.d.ts.map +1 -1
  266. package/lib/cjs/tile/TileTree.js +5 -1
  267. package/lib/cjs/tile/TileTree.js.map +1 -1
  268. package/lib/cjs/tile/TileTreeOwner.d.ts +1 -1
  269. package/lib/cjs/tile/TileTreeOwner.d.ts.map +1 -1
  270. package/lib/cjs/tile/TileTreeOwner.js.map +1 -1
  271. package/lib/cjs/tile/map/ImageryTileTree.d.ts +1 -1
  272. package/lib/cjs/tile/map/ImageryTileTree.d.ts.map +1 -1
  273. package/lib/cjs/tile/map/ImageryTileTree.js +2 -2
  274. package/lib/cjs/tile/map/ImageryTileTree.js.map +1 -1
  275. package/lib/cjs/tools/AccuDrawTool.d.ts +4 -2
  276. package/lib/cjs/tools/AccuDrawTool.d.ts.map +1 -1
  277. package/lib/cjs/tools/AccuDrawTool.js +34 -56
  278. package/lib/cjs/tools/AccuDrawTool.js.map +1 -1
  279. package/lib/cjs/tools/AccuDrawViewportUI.d.ts +154 -0
  280. package/lib/cjs/tools/AccuDrawViewportUI.d.ts.map +1 -0
  281. package/lib/cjs/tools/AccuDrawViewportUI.js +715 -0
  282. package/lib/cjs/tools/AccuDrawViewportUI.js.map +1 -0
  283. package/lib/esm/AccuDraw.d.ts +21 -3
  284. package/lib/esm/AccuDraw.d.ts.map +1 -1
  285. package/lib/esm/AccuDraw.js +174 -56
  286. package/lib/esm/AccuDraw.js.map +1 -1
  287. package/lib/esm/BriefcaseConnection.js +1 -1
  288. package/lib/esm/BriefcaseConnection.js.map +1 -1
  289. package/lib/esm/BriefcaseTxns.d.ts +1 -1
  290. package/lib/esm/BriefcaseTxns.d.ts.map +1 -1
  291. package/lib/esm/BriefcaseTxns.js +1 -1
  292. package/lib/esm/BriefcaseTxns.js.map +1 -1
  293. package/lib/esm/DrawingViewState.js +2 -2
  294. package/lib/esm/DrawingViewState.js.map +1 -1
  295. package/lib/esm/EnvironmentDecorations.d.ts +1 -1
  296. package/lib/esm/EnvironmentDecorations.d.ts.map +1 -1
  297. package/lib/esm/EnvironmentDecorations.js +1 -1
  298. package/lib/esm/EnvironmentDecorations.js.map +1 -1
  299. package/lib/esm/GraphicalEditingScope.d.ts +3 -1
  300. package/lib/esm/GraphicalEditingScope.d.ts.map +1 -1
  301. package/lib/esm/GraphicalEditingScope.js +7 -3
  302. package/lib/esm/GraphicalEditingScope.js.map +1 -1
  303. package/lib/esm/IModelApp.d.ts +0 -5
  304. package/lib/esm/IModelApp.d.ts.map +1 -1
  305. package/lib/esm/IModelApp.js +0 -5
  306. package/lib/esm/IModelApp.js.map +1 -1
  307. package/lib/esm/IModelConnection.js +1 -1
  308. package/lib/esm/IModelConnection.js.map +1 -1
  309. package/lib/esm/NoRenderApp.d.ts +1 -1
  310. package/lib/esm/NoRenderApp.d.ts.map +1 -1
  311. package/lib/esm/NoRenderApp.js +1 -2
  312. package/lib/esm/NoRenderApp.js.map +1 -1
  313. package/lib/esm/SheetViewState.js +6 -6
  314. package/lib/esm/SheetViewState.js.map +1 -1
  315. package/lib/esm/SubCategoriesCache.d.ts +1 -1
  316. package/lib/esm/SubCategoriesCache.d.ts.map +1 -1
  317. package/lib/esm/SubCategoriesCache.js +1 -1
  318. package/lib/esm/SubCategoriesCache.js.map +1 -1
  319. package/lib/esm/Tiles.d.ts +1 -1
  320. package/lib/esm/Tiles.d.ts.map +1 -1
  321. package/lib/esm/Tiles.js +6 -6
  322. package/lib/esm/Tiles.js.map +1 -1
  323. package/lib/esm/ViewManager.js +1 -1
  324. package/lib/esm/ViewManager.js.map +1 -1
  325. package/lib/esm/ViewState.js +1 -1
  326. package/lib/esm/ViewState.js.map +1 -1
  327. package/lib/esm/Viewport.d.ts +5 -3
  328. package/lib/esm/Viewport.d.ts.map +1 -1
  329. package/lib/esm/Viewport.js +8 -4
  330. package/lib/esm/Viewport.js.map +1 -1
  331. package/lib/esm/common/internal/render/MeshPrimitives.js +2 -2
  332. package/lib/esm/common/internal/render/MeshPrimitives.js.map +1 -1
  333. package/lib/esm/core-frontend.d.ts +1 -0
  334. package/lib/esm/core-frontend.d.ts.map +1 -1
  335. package/lib/esm/core-frontend.js +1 -0
  336. package/lib/esm/core-frontend.js.map +1 -1
  337. package/lib/esm/internal/render/RenderGeometry.d.ts +1 -2
  338. package/lib/esm/internal/render/RenderGeometry.d.ts.map +1 -1
  339. package/lib/esm/internal/render/RenderGeometry.js.map +1 -1
  340. package/lib/esm/render/Decorations.d.ts +3 -2
  341. package/lib/esm/render/Decorations.d.ts.map +1 -1
  342. package/lib/esm/render/Decorations.js +5 -1
  343. package/lib/esm/render/Decorations.js.map +1 -1
  344. package/lib/esm/render/GraphicBranch.d.ts +4 -2
  345. package/lib/esm/render/GraphicBranch.d.ts.map +1 -1
  346. package/lib/esm/render/GraphicBranch.js +5 -1
  347. package/lib/esm/render/GraphicBranch.js.map +1 -1
  348. package/lib/esm/render/MockRender.d.ts +2 -2
  349. package/lib/esm/render/MockRender.d.ts.map +1 -1
  350. package/lib/esm/render/MockRender.js +3 -4
  351. package/lib/esm/render/MockRender.js.map +1 -1
  352. package/lib/esm/render/RenderGraphic.d.ts +3 -2
  353. package/lib/esm/render/RenderGraphic.d.ts.map +1 -1
  354. package/lib/esm/render/RenderGraphic.js +4 -1
  355. package/lib/esm/render/RenderGraphic.js.map +1 -1
  356. package/lib/esm/render/RenderPlanarClassifier.d.ts +3 -3
  357. package/lib/esm/render/RenderPlanarClassifier.d.ts.map +1 -1
  358. package/lib/esm/render/RenderPlanarClassifier.js.map +1 -1
  359. package/lib/esm/render/RenderSystem.d.ts +9 -8
  360. package/lib/esm/render/RenderSystem.d.ts.map +1 -1
  361. package/lib/esm/render/RenderSystem.js +3 -0
  362. package/lib/esm/render/RenderSystem.js.map +1 -1
  363. package/lib/esm/render/RenderTarget.d.ts +3 -3
  364. package/lib/esm/render/RenderTarget.d.ts.map +1 -1
  365. package/lib/esm/render/RenderTarget.js +1 -1
  366. package/lib/esm/render/RenderTarget.js.map +1 -1
  367. package/lib/esm/render/VisibleFeature.d.ts.map +1 -1
  368. package/lib/esm/render/VisibleFeature.js +60 -3
  369. package/lib/esm/render/VisibleFeature.js.map +1 -1
  370. package/lib/esm/render/webgl/AtmosphereUniforms.d.ts +2 -0
  371. package/lib/esm/render/webgl/AtmosphereUniforms.d.ts.map +1 -1
  372. package/lib/esm/render/webgl/AtmosphereUniforms.js +5 -1
  373. package/lib/esm/render/webgl/AtmosphereUniforms.js.map +1 -1
  374. package/lib/esm/render/webgl/AttributeBuffers.d.ts +6 -2
  375. package/lib/esm/render/webgl/AttributeBuffers.d.ts.map +1 -1
  376. package/lib/esm/render/webgl/AttributeBuffers.js +12 -4
  377. package/lib/esm/render/webgl/AttributeBuffers.js.map +1 -1
  378. package/lib/esm/render/webgl/BackgroundMapDrape.d.ts +1 -1
  379. package/lib/esm/render/webgl/BackgroundMapDrape.d.ts.map +1 -1
  380. package/lib/esm/render/webgl/BackgroundMapDrape.js +3 -3
  381. package/lib/esm/render/webgl/BackgroundMapDrape.js.map +1 -1
  382. package/lib/esm/render/webgl/CachedGeometry.d.ts +8 -8
  383. package/lib/esm/render/webgl/CachedGeometry.d.ts.map +1 -1
  384. package/lib/esm/render/webgl/CachedGeometry.js +8 -8
  385. package/lib/esm/render/webgl/CachedGeometry.js.map +1 -1
  386. package/lib/esm/render/webgl/ClippingProgram.d.ts +2 -0
  387. package/lib/esm/render/webgl/ClippingProgram.d.ts.map +1 -1
  388. package/lib/esm/render/webgl/ClippingProgram.js +5 -1
  389. package/lib/esm/render/webgl/ClippingProgram.js.map +1 -1
  390. package/lib/esm/render/webgl/Contours.d.ts +1 -1
  391. package/lib/esm/render/webgl/Contours.d.ts.map +1 -1
  392. package/lib/esm/render/webgl/Contours.js +1 -1
  393. package/lib/esm/render/webgl/Contours.js.map +1 -1
  394. package/lib/esm/render/webgl/Disposable.d.ts +1 -2
  395. package/lib/esm/render/webgl/Disposable.d.ts.map +1 -1
  396. package/lib/esm/render/webgl/Disposable.js +4 -0
  397. package/lib/esm/render/webgl/Disposable.js.map +1 -1
  398. package/lib/esm/render/webgl/EDL.d.ts +1 -1
  399. package/lib/esm/render/webgl/EDL.d.ts.map +1 -1
  400. package/lib/esm/render/webgl/EDL.js +3 -3
  401. package/lib/esm/render/webgl/EDL.js.map +1 -1
  402. package/lib/esm/render/webgl/EdgeGeometry.d.ts +3 -3
  403. package/lib/esm/render/webgl/EdgeGeometry.d.ts.map +1 -1
  404. package/lib/esm/render/webgl/EdgeGeometry.js +4 -4
  405. package/lib/esm/render/webgl/EdgeGeometry.js.map +1 -1
  406. package/lib/esm/render/webgl/FeatureOverrides.d.ts +1 -1
  407. package/lib/esm/render/webgl/FeatureOverrides.d.ts.map +1 -1
  408. package/lib/esm/render/webgl/FeatureOverrides.js +1 -1
  409. package/lib/esm/render/webgl/FeatureOverrides.js.map +1 -1
  410. package/lib/esm/render/webgl/FrameBuffer.d.ts +1 -1
  411. package/lib/esm/render/webgl/FrameBuffer.d.ts.map +1 -1
  412. package/lib/esm/render/webgl/FrameBuffer.js +1 -1
  413. package/lib/esm/render/webgl/FrameBuffer.js.map +1 -1
  414. package/lib/esm/render/webgl/Graphic.d.ts +2 -2
  415. package/lib/esm/render/webgl/Graphic.d.ts.map +1 -1
  416. package/lib/esm/render/webgl/Graphic.js +11 -11
  417. package/lib/esm/render/webgl/Graphic.js.map +1 -1
  418. package/lib/esm/render/webgl/IndexedEdgeGeometry.d.ts +2 -2
  419. package/lib/esm/render/webgl/IndexedEdgeGeometry.d.ts.map +1 -1
  420. package/lib/esm/render/webgl/IndexedEdgeGeometry.js +2 -2
  421. package/lib/esm/render/webgl/IndexedEdgeGeometry.js.map +1 -1
  422. package/lib/esm/render/webgl/InstancedGeometry.d.ts +4 -4
  423. package/lib/esm/render/webgl/InstancedGeometry.d.ts.map +1 -1
  424. package/lib/esm/render/webgl/InstancedGeometry.js +5 -6
  425. package/lib/esm/render/webgl/InstancedGeometry.js.map +1 -1
  426. package/lib/esm/render/webgl/Layer.js +1 -1
  427. package/lib/esm/render/webgl/Layer.js.map +1 -1
  428. package/lib/esm/render/webgl/Mesh.d.ts +1 -1
  429. package/lib/esm/render/webgl/Mesh.d.ts.map +1 -1
  430. package/lib/esm/render/webgl/Mesh.js +1 -1
  431. package/lib/esm/render/webgl/Mesh.js.map +1 -1
  432. package/lib/esm/render/webgl/MeshData.d.ts +1 -1
  433. package/lib/esm/render/webgl/MeshData.d.ts.map +1 -1
  434. package/lib/esm/render/webgl/MeshData.js +2 -2
  435. package/lib/esm/render/webgl/MeshData.js.map +1 -1
  436. package/lib/esm/render/webgl/PlanarClassifier.d.ts +1 -1
  437. package/lib/esm/render/webgl/PlanarClassifier.d.ts.map +1 -1
  438. package/lib/esm/render/webgl/PlanarClassifier.js +22 -9
  439. package/lib/esm/render/webgl/PlanarClassifier.js.map +1 -1
  440. package/lib/esm/render/webgl/PointCloud.d.ts +1 -1
  441. package/lib/esm/render/webgl/PointCloud.d.ts.map +1 -1
  442. package/lib/esm/render/webgl/PointCloud.js +1 -1
  443. package/lib/esm/render/webgl/PointCloud.js.map +1 -1
  444. package/lib/esm/render/webgl/PointString.d.ts +1 -1
  445. package/lib/esm/render/webgl/PointString.d.ts.map +1 -1
  446. package/lib/esm/render/webgl/PointString.js +1 -1
  447. package/lib/esm/render/webgl/PointString.js.map +1 -1
  448. package/lib/esm/render/webgl/Polyline.d.ts +1 -1
  449. package/lib/esm/render/webgl/Polyline.d.ts.map +1 -1
  450. package/lib/esm/render/webgl/Polyline.js +1 -1
  451. package/lib/esm/render/webgl/Polyline.js.map +1 -1
  452. package/lib/esm/render/webgl/RealityMesh.d.ts +6 -10
  453. package/lib/esm/render/webgl/RealityMesh.d.ts.map +1 -1
  454. package/lib/esm/render/webgl/RealityMesh.js +6 -6
  455. package/lib/esm/render/webgl/RealityMesh.js.map +1 -1
  456. package/lib/esm/render/webgl/RenderBuffer.d.ts +2 -2
  457. package/lib/esm/render/webgl/RenderBuffer.d.ts.map +1 -1
  458. package/lib/esm/render/webgl/RenderBuffer.js +2 -2
  459. package/lib/esm/render/webgl/RenderBuffer.js.map +1 -1
  460. package/lib/esm/render/webgl/SceneCompositor.d.ts +1 -1
  461. package/lib/esm/render/webgl/SceneCompositor.d.ts.map +1 -1
  462. package/lib/esm/render/webgl/SceneCompositor.js +6 -6
  463. package/lib/esm/render/webgl/SceneCompositor.js.map +1 -1
  464. package/lib/esm/render/webgl/ScreenSpaceEffect.d.ts +1 -1
  465. package/lib/esm/render/webgl/ScreenSpaceEffect.d.ts.map +1 -1
  466. package/lib/esm/render/webgl/ScreenSpaceEffect.js +2 -2
  467. package/lib/esm/render/webgl/ScreenSpaceEffect.js.map +1 -1
  468. package/lib/esm/render/webgl/ShaderProgram.d.ts +5 -1
  469. package/lib/esm/render/webgl/ShaderProgram.d.ts.map +1 -1
  470. package/lib/esm/render/webgl/ShaderProgram.js +11 -3
  471. package/lib/esm/render/webgl/ShaderProgram.js.map +1 -1
  472. package/lib/esm/render/webgl/SolarShadowMap.d.ts +1 -1
  473. package/lib/esm/render/webgl/SolarShadowMap.d.ts.map +1 -1
  474. package/lib/esm/render/webgl/SolarShadowMap.js +3 -3
  475. package/lib/esm/render/webgl/SolarShadowMap.js.map +1 -1
  476. package/lib/esm/render/webgl/SurfaceGeometry.d.ts +1 -1
  477. package/lib/esm/render/webgl/SurfaceGeometry.d.ts.map +1 -1
  478. package/lib/esm/render/webgl/SurfaceGeometry.js +1 -1
  479. package/lib/esm/render/webgl/SurfaceGeometry.js.map +1 -1
  480. package/lib/esm/render/webgl/System.d.ts +1 -1
  481. package/lib/esm/render/webgl/System.d.ts.map +1 -1
  482. package/lib/esm/render/webgl/System.js +1 -1
  483. package/lib/esm/render/webgl/System.js.map +1 -1
  484. package/lib/esm/render/webgl/Target.d.ts +2 -2
  485. package/lib/esm/render/webgl/Target.d.ts.map +1 -1
  486. package/lib/esm/render/webgl/Target.js +9 -10
  487. package/lib/esm/render/webgl/Target.js.map +1 -1
  488. package/lib/esm/render/webgl/TargetGraphics.d.ts +1 -1
  489. package/lib/esm/render/webgl/TargetGraphics.d.ts.map +1 -1
  490. package/lib/esm/render/webgl/TargetGraphics.js +1 -1
  491. package/lib/esm/render/webgl/TargetGraphics.js.map +1 -1
  492. package/lib/esm/render/webgl/Technique.d.ts +6 -0
  493. package/lib/esm/render/webgl/Technique.d.ts.map +1 -1
  494. package/lib/esm/render/webgl/Technique.js +98 -16
  495. package/lib/esm/render/webgl/Technique.js.map +1 -1
  496. package/lib/esm/render/webgl/Texture.d.ts +1 -1
  497. package/lib/esm/render/webgl/Texture.d.ts.map +1 -1
  498. package/lib/esm/render/webgl/Texture.js +1 -1
  499. package/lib/esm/render/webgl/Texture.js.map +1 -1
  500. package/lib/esm/render/webgl/TextureDrape.d.ts +1 -1
  501. package/lib/esm/render/webgl/TextureDrape.d.ts.map +1 -1
  502. package/lib/esm/render/webgl/TextureDrape.js +1 -1
  503. package/lib/esm/render/webgl/TextureDrape.js.map +1 -1
  504. package/lib/esm/render/webgl/ThematicSensors.d.ts +1 -1
  505. package/lib/esm/render/webgl/ThematicSensors.d.ts.map +1 -1
  506. package/lib/esm/render/webgl/ThematicSensors.js +1 -1
  507. package/lib/esm/render/webgl/ThematicSensors.js.map +1 -1
  508. package/lib/esm/render/webgl/ThematicUniforms.d.ts +1 -1
  509. package/lib/esm/render/webgl/ThematicUniforms.d.ts.map +1 -1
  510. package/lib/esm/render/webgl/ThematicUniforms.js +1 -1
  511. package/lib/esm/render/webgl/ThematicUniforms.js.map +1 -1
  512. package/lib/esm/render/webgl/VertexLUT.d.ts +2 -2
  513. package/lib/esm/render/webgl/VertexLUT.d.ts.map +1 -1
  514. package/lib/esm/render/webgl/VertexLUT.js +2 -2
  515. package/lib/esm/render/webgl/VertexLUT.js.map +1 -1
  516. package/lib/esm/render/webgl/VisibleTileFeatures.js +60 -3
  517. package/lib/esm/render/webgl/VisibleTileFeatures.js.map +1 -1
  518. package/lib/esm/tile/ClassifierTileTree.js +1 -1
  519. package/lib/esm/tile/ClassifierTileTree.js.map +1 -1
  520. package/lib/esm/tile/DynamicIModelTile.js +3 -3
  521. package/lib/esm/tile/DynamicIModelTile.js.map +1 -1
  522. package/lib/esm/tile/IModelTileTree.d.ts +1 -1
  523. package/lib/esm/tile/IModelTileTree.d.ts.map +1 -1
  524. package/lib/esm/tile/IModelTileTree.js +12 -10
  525. package/lib/esm/tile/IModelTileTree.js.map +1 -1
  526. package/lib/esm/tile/ImdlDecoder.d.ts +1 -1
  527. package/lib/esm/tile/ImdlDecoder.js +1 -1
  528. package/lib/esm/tile/ImdlDecoder.js.map +1 -1
  529. package/lib/esm/tile/LRUTileList.d.ts +1 -1
  530. package/lib/esm/tile/LRUTileList.d.ts.map +1 -1
  531. package/lib/esm/tile/LRUTileList.js +1 -1
  532. package/lib/esm/tile/LRUTileList.js.map +1 -1
  533. package/lib/esm/tile/OrbitGtTileTree.d.ts +1 -1
  534. package/lib/esm/tile/OrbitGtTileTree.d.ts.map +1 -1
  535. package/lib/esm/tile/OrbitGtTileTree.js +6 -6
  536. package/lib/esm/tile/OrbitGtTileTree.js.map +1 -1
  537. package/lib/esm/tile/PrimaryTileTree.js +1 -1
  538. package/lib/esm/tile/PrimaryTileTree.js.map +1 -1
  539. package/lib/esm/tile/Tile.d.ts +2 -0
  540. package/lib/esm/tile/Tile.d.ts.map +1 -1
  541. package/lib/esm/tile/Tile.js +6 -2
  542. package/lib/esm/tile/Tile.js.map +1 -1
  543. package/lib/esm/tile/TileAdmin.js +1 -1
  544. package/lib/esm/tile/TileAdmin.js.map +1 -1
  545. package/lib/esm/tile/TileTree.d.ts +2 -0
  546. package/lib/esm/tile/TileTree.d.ts.map +1 -1
  547. package/lib/esm/tile/TileTree.js +5 -1
  548. package/lib/esm/tile/TileTree.js.map +1 -1
  549. package/lib/esm/tile/TileTreeOwner.d.ts +1 -1
  550. package/lib/esm/tile/TileTreeOwner.d.ts.map +1 -1
  551. package/lib/esm/tile/TileTreeOwner.js.map +1 -1
  552. package/lib/esm/tile/map/ImageryTileTree.d.ts +1 -1
  553. package/lib/esm/tile/map/ImageryTileTree.d.ts.map +1 -1
  554. package/lib/esm/tile/map/ImageryTileTree.js +2 -2
  555. package/lib/esm/tile/map/ImageryTileTree.js.map +1 -1
  556. package/lib/esm/tools/AccuDrawTool.d.ts +4 -2
  557. package/lib/esm/tools/AccuDrawTool.d.ts.map +1 -1
  558. package/lib/esm/tools/AccuDrawTool.js +34 -56
  559. package/lib/esm/tools/AccuDrawTool.js.map +1 -1
  560. package/lib/esm/tools/AccuDrawViewportUI.d.ts +154 -0
  561. package/lib/esm/tools/AccuDrawViewportUI.d.ts.map +1 -0
  562. package/lib/esm/tools/AccuDrawViewportUI.js +711 -0
  563. package/lib/esm/tools/AccuDrawViewportUI.js.map +1 -0
  564. package/lib/public/scripts/parse-imdl-worker.js +1 -1
  565. package/lib/workers/webpack/parse-imdl-worker.js +1 -1
  566. package/package.json +16 -17
@@ -1 +1 @@
1
- {"version":3,"file":"ThematicUniforms.js","sourceRoot":"","sources":["../../../../src/render/webgl/ThematicUniforms.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;AAC/F;;GAEG;;;AAEH,sDAAsD;AACtD,oDAE4B;AAG5B,+CAA4C;AAC5C,iCAAsC;AACtC,uCAA0C;AAC1C,uDAAoD;AACpD,wDAA2E;AAE3E,qCAAkC;AAClC,2CAAwC;AAExC;;GAEG;AACH,MAAa,gBAAgB;IAA7B;QAGmB,WAAM,GAAG,IAAI,YAAY,CAAC,CAAC,CAAC,CAAC;QACtC,cAAS,GAAG,GAAG,CAAC;QACP,UAAK,GAAG,IAAI,YAAY,CAAC,CAAC,CAAC,CAAC;QAC5B,kBAAa,GAAG,IAAI,YAAY,CAAC,CAAC,CAAC,CAAC;QACpC,iBAAY,GAAG,IAAI,qBAAS,EAAE,CAAC;QAC/B,iBAAY,GAAG,IAAI,YAAY,CAAC,CAAC,CAAC,CAAC;QACnC,kBAAa,GAAG,IAAI,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,4EAA4E;QAC1H,gBAAW,GAAG,CAAC,CAAC;QAChB,uBAAkB,GAAG,qBAAqB,EAAE,CAAC;QAG9C,YAAO,GAAG,CAAC,CAAC;QA8BX,mBAAc,GAAG,IAAI,wBAAQ,EAAE,CAAC;IAwI1C,CAAC;IApKC,IAAY,eAAe,KAAa,OAAO,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAEvE,IAAW,eAAe;QACxB,OAAO,IAAI,CAAC,gBAAgB,CAAC;IAC/B,CAAC;IAED,IAAW,YAAY;QACrB,IAAI,SAAS,KAAK,IAAI,CAAC,eAAe;YACpC,OAAO,iCAAmB,CAAC,MAAM,KAAK,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,kCAAoB,CAAC,QAAQ,KAAK,IAAI,CAAC,eAAe,CAAC,gBAAgB,CAAC,IAAI,CAAC;QAC7I,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAW,aAAa;QACtB,OAAO,CAAC,SAAS,KAAK,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,iCAAmB,CAAC,KAAK,KAAK,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;IAC3G,CAAC;IAED,IAAW,iBAAiB;QAC1B,OAAO,CAAC,SAAS,KAAK,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,iCAAmB,CAAC,SAAS,KAAK,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;IAC/G,CAAC;IAED,IAAW,uBAAuB;QAChC,OAAO,CAAC,CAAC,IAAI,CAAC,eAAe,GAAG,CAAC,CAAC,CAAC;IACrC,CAAC;IAED,IAAW,SAAS;QAClB,OAAO,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;IACrD,CAAC;IAIO,WAAW,CAAC,IAAc,EAAE,UAAsB;QACxD,MAAM,KAAK,GAAG,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QACvG,KAAK,CAAC,gBAAgB,EAAE,CAAC;QACzB,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;QACxB,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;QACxB,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;IAC1B,CAAC;IAEO,mBAAmB,CAAC,MAAgB,EAAE,UAAqB;QACjE,UAAU,CAAC,cAAc,CAAC,MAAM,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;QACvD,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAChD,IAAI,CAAC,cAAc,CAAC,gBAAgB,EAAE,CAAC;QACvC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC;QAC9C,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC;QAC9C,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC;IAChD,CAAC;IAEM,MAAM,CAAC,MAAc;QAC1B,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;QAEzB,IAAI,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YACzG,IAAI,SAAS,KAAK,IAAI,CAAC,QAAQ;gBAC7B,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;YAE3D,IAAI,iCAAmB,CAAC,KAAK,KAAK,IAAI,CAAC,eAAe,CAAC,WAAW,EAAE,CAAC;gBACnE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;gBAChF,IAAA,aAAM,EAAC,IAAI,CAAC,CAAC;YACf,CAAC;iBAAM,IAAI,iCAAmB,CAAC,SAAS,KAAK,IAAI,CAAC,eAAe,CAAC,WAAW,EAAE,CAAC;gBAC9E,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,eAAe,CAAC,YAAY,EAAE,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;gBAChG,IAAA,aAAM,EAAC,IAAI,CAAC,CAAC;YACf,CAAC;YAED,OAAO;QACT,CAAC;QAED,IAAA,aAAM,EAAC,IAAI,CAAC,CAAC;QAEb,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,QAAQ,CAAC;QACtC,IAAI,CAAC,QAAQ,GAAG,IAAA,sBAAO,EAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACvC,IAAI,CAAC,IAAI,CAAC,eAAe;YACvB,OAAO;QAET,IAAI,iCAAmB,CAAC,KAAK,KAAK,IAAI,CAAC,eAAe,CAAC,WAAW,EAAE,CAAC;YACnE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,qBAAK,CAAC,gBAAgB,CAAC,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACxE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,qBAAK,CAAC,gBAAgB,CAAC,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC3E,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,GAAG,CAAC;YAChD,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,IAAI,CAAC;QACnD,CAAC;QAED,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,eAAe,CAAC,gBAAgB,CAAC,QAAQ,CAAC;QAEhE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,CAAC,iCAAmB,CAAC,KAAK,KAAK,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QAE/J,IAAI,iCAAmB,CAAC,SAAS,KAAK,IAAI,CAAC,eAAe,CAAC,WAAW;YACpE,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,eAAe,CAAC,YAAY,EAAE,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QAElG,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,IAAI,CAAC,eAAe,CAAC,gBAAgB,CAAC,WAAW,CAAC,CAAC;QAEjF,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC;QAExD,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC,gBAAgB,CAAC,IAAI,CAAC;QAEnE,MAAM,cAAc,GAAG,IAAI,CAAC,eAAe,CAAC,cAAc,CAAC;QAC3D,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,KAAK,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,cAAc,CAAC,cAAc,CAAC;QAEhH,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,eAAe,CAAC,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAC,kBAAkB,CAAC,CAAC;QAC3G,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC,gBAAgB,CAAC,gBAAgB,KAAK,8CAAgC,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;QAE5I,8FAA8F;QAC9F,IAAI,MAAM,CAAC,mBAAmB,IAAI,CAAC,CAAC,IAAI,CAAC,eAAe,GAAG,CAAC,CAAC,EAAE,CAAC;YAC9D,IAAI,CAAC,WAAW,GAAG,cAAc,CAAC,OAAO,CAAC,MAAM,CAAC;YACjD,IAAI,CAAC,QAAQ,GAAG,IAAA,sBAAO,EAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACvC,IAAI,CAAC,QAAQ,GAAG,iCAAe,CAAC,MAAM,CAAC,MAAM,EAAE,uBAAO,CAAC,UAAU,EAAE,CAAC,CAAC;QACvE,CAAC;QAED,MAAM,IAAI,GAAG,sBAAQ,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,eAAe,CAAC,gBAAgB,CAAC,CAAC;QACjF,MAAM,KAAK,GAAG,IAAI,CAAC,2BAA2B,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;QACxE,IAAI,CAAC,QAAQ,GAAG,uBAAa,CAAC,oBAAoB,CAAC,KAAK,EAAE,2BAAa,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;IACjG,CAAC;IAEM,SAAS,CAAC,OAAsB;QACrC,IAAI,CAAC,IAAA,WAAI,EAAC,IAAI,EAAE,OAAO,CAAC;YACtB,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACvC,CAAC;IAEM,QAAQ,CAAC,OAAsB;QACpC,IAAI,CAAC,IAAA,WAAI,EAAC,IAAI,EAAE,OAAO,CAAC;YACtB,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACtC,CAAC;IAEM,gBAAgB,CAAC,OAAsB;QAC5C,IAAI,CAAC,IAAA,WAAI,EAAC,IAAI,EAAE,OAAO,CAAC;YACtB,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IAC9C,CAAC;IAEM,eAAe,CAAC,OAAsB;QAC3C,IAAI,CAAC,IAAA,WAAI,EAAC,IAAI,EAAE,OAAO,CAAC;YACtB,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACpC,CAAC;IAEM,eAAe,CAAC,OAAsB;QAC3C,IAAI,CAAC,IAAA,WAAI,EAAC,IAAI,EAAE,OAAO,CAAC;YACtB,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IAC7C,CAAC;IAEM,gBAAgB,CAAC,OAAsB;QAC5C,IAAI,CAAC,IAAA,WAAI,EAAC,IAAI,EAAE,OAAO,CAAC;YACtB,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IAC9C,CAAC;IAEM,WAAW,CAAC,OAAsB,EAAE,IAAiB;QAC1D,IAAA,qBAAM,EAAC,SAAS,KAAK,IAAI,CAAC,QAAQ,CAAC,CAAC;QACpC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IAC3C,CAAC;IAEM,cAAc,CAAC,OAAsB;QAC1C,IAAI,CAAC,IAAA,WAAI,EAAC,IAAI,EAAE,OAAO,CAAC;YACtB,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAC3C,CAAC;IAEM,WAAW,CAAC,OAAsB;QACvC,IAAA,qBAAM,EAAC,SAAS,KAAK,IAAI,CAAC,QAAQ,CAAC,CAAC;QACpC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,WAAW,CAAC,OAAO,EAAE,yBAAW,CAAC,eAAe,CAAC,CAAC;IAC1E,CAAC;IAED,IAAW,UAAU;QACnB,OAAO,SAAS,KAAK,IAAI,CAAC,QAAQ,IAAI,SAAS,KAAK,IAAI,CAAC,QAAQ,CAAC;IACpE,CAAC;IAEM,OAAO;QACZ,IAAI,CAAC,QAAQ,GAAG,IAAA,sBAAO,EAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACvC,IAAI,CAAC,QAAQ,GAAG,IAAA,sBAAO,EAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACzC,CAAC;CACF;AApLD,4CAoLC;AAED,SAAS,qBAAqB;IAC5B,MAAM,eAAe,GAAG,IAAI,CAAC;IAC7B,MAAM,YAAY,GAAG,eAAM,CAAC,QAAQ,CAAC,cAAc,CAAC;IACpD,OAAO,CAAC,eAAe,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,eAAe,CAAC;AAC3E,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module WebGL\n */\n\nimport { assert, dispose } from \"@itwin/core-bentley\";\nimport {\n Gradient, RenderTexture, ThematicDisplay, ThematicDisplayMode, ThematicGradientMode, ThematicGradientTransparencyMode,\n} from \"@itwin/core-common\";\nimport { WebGLDisposable } from \"./Disposable\";\nimport { UniformHandle } from \"./UniformHandle\";\nimport { TextureUnit } from \"./RenderFlags\";\nimport { desync, sync } from \"./Sync\";\nimport { TextureHandle } from \"./Texture\";\nimport { ThematicSensors } from \"./ThematicSensors\";\nimport { Angle, Range3d, Transform, Vector3d } from \"@itwin/core-geometry\";\nimport { Target } from \"./Target\";\nimport { System } from \"./System\";\nimport { FloatRgba } from \"./FloatRGBA\";\n\n/** Maintains state for uniforms related to thematic display.\n * @internal\n */\nexport class ThematicUniforms implements WebGLDisposable {\n private _sensors?: ThematicSensors; // NB: This is only used if no distance cutoff is applied (this is shared among all batches)\n private _texture?: TextureHandle;\n private readonly _range = new Float32Array(2);\n private _colorMix = 0.0;\n private readonly _axis = new Float32Array(3);\n private readonly _sunDirection = new Float32Array(3);\n private readonly _marginColor = new FloatRgba();\n private readonly _displayMode = new Float32Array(1);\n private readonly _fragSettings = new Float32Array(4); // gradientMode, distanceCutoff, stepCount, > 0.0 if multiply gradient alpha\n private _numSensors = 0;\n private _gradientDimension = _getGradientDimension();\n private _thematicDisplay?: ThematicDisplay;\n\n public syncKey = 0;\n\n private get _distanceCutoff(): number { return this._fragSettings[1]; }\n\n public get thematicDisplay(): ThematicDisplay | undefined {\n return this._thematicDisplay;\n }\n\n public get wantIsoLines(): boolean {\n if (undefined !== this.thematicDisplay)\n return ThematicDisplayMode.Height === this._displayMode[0] && ThematicGradientMode.IsoLines === this.thematicDisplay.gradientSettings.mode;\n return false;\n }\n\n public get wantSlopeMode(): boolean {\n return (undefined !== this.thematicDisplay) ? ThematicDisplayMode.Slope === this._displayMode[0] : false;\n }\n\n public get wantHillShadeMode(): boolean {\n return (undefined !== this.thematicDisplay) ? ThematicDisplayMode.HillShade === this._displayMode[0] : false;\n }\n\n public get wantGlobalSensorTexture(): boolean {\n return !(this._distanceCutoff > 0);\n }\n\n public get bytesUsed(): number {\n return this._sensors ? this._sensors.bytesUsed : 0;\n }\n\n private _scratchVector = new Vector3d();\n\n private _updateAxis(axis: Vector3d, viewMatrix?: Transform) {\n const tAxis = (viewMatrix !== undefined) ? viewMatrix.multiplyVector(axis, this._scratchVector) : axis;\n tAxis.normalizeInPlace();\n this._axis[0] = tAxis.x;\n this._axis[1] = tAxis.y;\n this._axis[2] = tAxis.z;\n }\n\n private _updateSunDirection(sunDir: Vector3d, viewMatrix: Transform) {\n viewMatrix.multiplyVector(sunDir, this._scratchVector);\n this._scratchVector.negate(this._scratchVector);\n this._scratchVector.normalizeInPlace();\n this._sunDirection[0] = this._scratchVector.x;\n this._sunDirection[1] = this._scratchVector.y;\n this._sunDirection[2] = this._scratchVector.z;\n }\n\n public update(target: Target): void {\n const plan = target.plan;\n\n if (this.thematicDisplay && plan.thematic && this.thematicDisplay.equals(plan.thematic) && this._texture) {\n if (undefined !== this._sensors)\n this._sensors.update(target.uniforms.frustum.viewMatrix);\n\n if (ThematicDisplayMode.Slope === this.thematicDisplay.displayMode) {\n this._updateAxis(this.thematicDisplay.axis, target.uniforms.frustum.viewMatrix);\n desync(this);\n } else if (ThematicDisplayMode.HillShade === this.thematicDisplay.displayMode) {\n this._updateSunDirection(this.thematicDisplay.sunDirection, target.uniforms.frustum.viewMatrix);\n desync(this);\n }\n\n return;\n }\n\n desync(this);\n\n this._thematicDisplay = plan.thematic;\n this._texture = dispose(this._texture);\n if (!this.thematicDisplay)\n return;\n\n if (ThematicDisplayMode.Slope === this.thematicDisplay.displayMode) {\n this._range[0] = Angle.degreesToRadians(this.thematicDisplay.range.low);\n this._range[1] = Angle.degreesToRadians(this.thematicDisplay.range.high);\n } else {\n this._range[0] = this.thematicDisplay.range.low;\n this._range[1] = this.thematicDisplay.range.high;\n }\n\n this._colorMix = this.thematicDisplay.gradientSettings.colorMix;\n\n this._updateAxis(this.thematicDisplay.axis, (ThematicDisplayMode.Slope === this.thematicDisplay.displayMode) ? target.uniforms.frustum.viewMatrix : undefined);\n\n if (ThematicDisplayMode.HillShade === this.thematicDisplay.displayMode)\n this._updateSunDirection(this.thematicDisplay.sunDirection, target.uniforms.frustum.viewMatrix);\n\n this._marginColor.setColorDef(this.thematicDisplay.gradientSettings.marginColor);\n\n this._displayMode[0] = this.thematicDisplay.displayMode;\n\n this._fragSettings[0] = this.thematicDisplay.gradientSettings.mode;\n\n const sensorSettings = this.thematicDisplay.sensorSettings;\n this._fragSettings[1] = (undefined === sensorSettings) ? 0 : this.thematicDisplay.sensorSettings.distanceCutoff;\n\n this._fragSettings[2] = Math.min(this.thematicDisplay.gradientSettings.stepCount, this._gradientDimension);\n this._fragSettings[3] = this.thematicDisplay.gradientSettings.transparencyMode === ThematicGradientTransparencyMode.SurfaceOnly ? 0.0 : 1.0;\n\n // If we want sensors and have no distance cutoff, then create a global shared sensor texture.\n if (target.wantThematicSensors && !(this._distanceCutoff > 0)) {\n this._numSensors = sensorSettings.sensors.length;\n this._sensors = dispose(this._sensors);\n this._sensors = ThematicSensors.create(target, Range3d.createNull());\n }\n\n const symb = Gradient.Symb.createThematic(this.thematicDisplay.gradientSettings);\n const image = symb.getThematicImageForRenderer(this._gradientDimension);\n this._texture = TextureHandle.createForImageBuffer(image, RenderTexture.Type.ThematicGradient);\n }\n\n public bindRange(uniform: UniformHandle): void {\n if (!sync(this, uniform))\n uniform.setUniform2fv(this._range);\n }\n\n public bindAxis(uniform: UniformHandle): void {\n if (!sync(this, uniform))\n uniform.setUniform3fv(this._axis);\n }\n\n public bindSunDirection(uniform: UniformHandle): void {\n if (!sync(this, uniform))\n uniform.setUniform3fv(this._sunDirection);\n }\n\n public bindMarginColor(uniform: UniformHandle): void {\n if (!sync(this, uniform))\n this._marginColor.bind(uniform);\n }\n\n public bindDisplayMode(uniform: UniformHandle): void {\n if (!sync(this, uniform))\n uniform.setUniform1fv(this._displayMode);\n }\n\n public bindFragSettings(uniform: UniformHandle): void {\n if (!sync(this, uniform))\n uniform.setUniform4fv(this._fragSettings);\n }\n\n public bindTexture(uniform: UniformHandle, unit: TextureUnit): void {\n assert(undefined !== this._texture);\n this._texture.bindSampler(uniform, unit);\n }\n\n public bindNumSensors(uniform: UniformHandle): void {\n if (!sync(this, uniform))\n uniform.setUniform1i(this._numSensors);\n }\n\n public bindSensors(uniform: UniformHandle): void {\n assert(undefined !== this._sensors);\n this._sensors.texture.bindSampler(uniform, TextureUnit.ThematicSensors);\n }\n\n public get isDisposed(): boolean {\n return undefined === this._texture && undefined === this._sensors;\n }\n\n public dispose() {\n this._texture = dispose(this._texture);\n this._sensors = dispose(this._sensors);\n }\n}\n\nfunction _getGradientDimension(): number {\n const preferDimension = 8192;\n const maxDimension = System.instance.maxTextureSize;\n return (preferDimension > maxDimension) ? maxDimension : preferDimension;\n}\n"]}
1
+ {"version":3,"file":"ThematicUniforms.js","sourceRoot":"","sources":["../../../../src/render/webgl/ThematicUniforms.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module WebGL\n */\n\nimport { assert, dispose } from \"@itwin/core-bentley\";\nimport {\n Gradient, RenderTexture, ThematicDisplay, ThematicDisplayMode, ThematicGradientMode, ThematicGradientTransparencyMode,\n} from \"@itwin/core-common\";\nimport { WebGLDisposable } from \"./Disposable\";\nimport { UniformHandle } from \"./UniformHandle\";\nimport { TextureUnit } from \"./RenderFlags\";\nimport { desync, sync } from \"./Sync\";\nimport { TextureHandle } from \"./Texture\";\nimport { ThematicSensors } from \"./ThematicSensors\";\nimport { Angle, Range3d, Transform, Vector3d } from \"@itwin/core-geometry\";\nimport { Target } from \"./Target\";\nimport { System } from \"./System\";\nimport { FloatRgba } from \"./FloatRGBA\";\n\n/** Maintains state for uniforms related to thematic display.\n * @internal\n */\nexport class ThematicUniforms implements WebGLDisposable {\n private _sensors?: ThematicSensors; // NB: This is only used if no distance cutoff is applied (this is shared among all batches)\n private _texture?: TextureHandle;\n private readonly _range = new Float32Array(2);\n private _colorMix = 0.0;\n private readonly _axis = new Float32Array(3);\n private readonly _sunDirection = new Float32Array(3);\n private readonly _marginColor = new FloatRgba();\n private readonly _displayMode = new Float32Array(1);\n private readonly _fragSettings = new Float32Array(4); // gradientMode, distanceCutoff, stepCount, > 0.0 if multiply gradient alpha\n private _numSensors = 0;\n private _gradientDimension = _getGradientDimension();\n private _thematicDisplay?: ThematicDisplay;\n\n public syncKey = 0;\n\n private get _distanceCutoff(): number { return this._fragSettings[1]; }\n\n public get thematicDisplay(): ThematicDisplay | undefined {\n return this._thematicDisplay;\n }\n\n public get wantIsoLines(): boolean {\n if (undefined !== this.thematicDisplay)\n return ThematicDisplayMode.Height === this._displayMode[0] && ThematicGradientMode.IsoLines === this.thematicDisplay.gradientSettings.mode;\n return false;\n }\n\n public get wantSlopeMode(): boolean {\n return (undefined !== this.thematicDisplay) ? ThematicDisplayMode.Slope === this._displayMode[0] : false;\n }\n\n public get wantHillShadeMode(): boolean {\n return (undefined !== this.thematicDisplay) ? ThematicDisplayMode.HillShade === this._displayMode[0] : false;\n }\n\n public get wantGlobalSensorTexture(): boolean {\n return !(this._distanceCutoff > 0);\n }\n\n public get bytesUsed(): number {\n return this._sensors ? this._sensors.bytesUsed : 0;\n }\n\n private _scratchVector = new Vector3d();\n\n private _updateAxis(axis: Vector3d, viewMatrix?: Transform) {\n const tAxis = (viewMatrix !== undefined) ? viewMatrix.multiplyVector(axis, this._scratchVector) : axis;\n tAxis.normalizeInPlace();\n this._axis[0] = tAxis.x;\n this._axis[1] = tAxis.y;\n this._axis[2] = tAxis.z;\n }\n\n private _updateSunDirection(sunDir: Vector3d, viewMatrix: Transform) {\n viewMatrix.multiplyVector(sunDir, this._scratchVector);\n this._scratchVector.negate(this._scratchVector);\n this._scratchVector.normalizeInPlace();\n this._sunDirection[0] = this._scratchVector.x;\n this._sunDirection[1] = this._scratchVector.y;\n this._sunDirection[2] = this._scratchVector.z;\n }\n\n public update(target: Target): void {\n const plan = target.plan;\n\n if (this.thematicDisplay && plan.thematic && this.thematicDisplay.equals(plan.thematic) && this._texture) {\n if (undefined !== this._sensors)\n this._sensors.update(target.uniforms.frustum.viewMatrix);\n\n if (ThematicDisplayMode.Slope === this.thematicDisplay.displayMode) {\n this._updateAxis(this.thematicDisplay.axis, target.uniforms.frustum.viewMatrix);\n desync(this);\n } else if (ThematicDisplayMode.HillShade === this.thematicDisplay.displayMode) {\n this._updateSunDirection(this.thematicDisplay.sunDirection, target.uniforms.frustum.viewMatrix);\n desync(this);\n }\n\n return;\n }\n\n desync(this);\n\n this._thematicDisplay = plan.thematic;\n this._texture = dispose(this._texture);\n if (!this.thematicDisplay)\n return;\n\n if (ThematicDisplayMode.Slope === this.thematicDisplay.displayMode) {\n this._range[0] = Angle.degreesToRadians(this.thematicDisplay.range.low);\n this._range[1] = Angle.degreesToRadians(this.thematicDisplay.range.high);\n } else {\n this._range[0] = this.thematicDisplay.range.low;\n this._range[1] = this.thematicDisplay.range.high;\n }\n\n this._colorMix = this.thematicDisplay.gradientSettings.colorMix;\n\n this._updateAxis(this.thematicDisplay.axis, (ThematicDisplayMode.Slope === this.thematicDisplay.displayMode) ? target.uniforms.frustum.viewMatrix : undefined);\n\n if (ThematicDisplayMode.HillShade === this.thematicDisplay.displayMode)\n this._updateSunDirection(this.thematicDisplay.sunDirection, target.uniforms.frustum.viewMatrix);\n\n this._marginColor.setColorDef(this.thematicDisplay.gradientSettings.marginColor);\n\n this._displayMode[0] = this.thematicDisplay.displayMode;\n\n this._fragSettings[0] = this.thematicDisplay.gradientSettings.mode;\n\n const sensorSettings = this.thematicDisplay.sensorSettings;\n this._fragSettings[1] = (undefined === sensorSettings) ? 0 : this.thematicDisplay.sensorSettings.distanceCutoff;\n\n this._fragSettings[2] = Math.min(this.thematicDisplay.gradientSettings.stepCount, this._gradientDimension);\n this._fragSettings[3] = this.thematicDisplay.gradientSettings.transparencyMode === ThematicGradientTransparencyMode.SurfaceOnly ? 0.0 : 1.0;\n\n // If we want sensors and have no distance cutoff, then create a global shared sensor texture.\n if (target.wantThematicSensors && !(this._distanceCutoff > 0)) {\n this._numSensors = sensorSettings.sensors.length;\n this._sensors = dispose(this._sensors);\n this._sensors = ThematicSensors.create(target, Range3d.createNull());\n }\n\n const symb = Gradient.Symb.createThematic(this.thematicDisplay.gradientSettings);\n const image = symb.getThematicImageForRenderer(this._gradientDimension);\n this._texture = TextureHandle.createForImageBuffer(image, RenderTexture.Type.ThematicGradient);\n }\n\n public bindRange(uniform: UniformHandle): void {\n if (!sync(this, uniform))\n uniform.setUniform2fv(this._range);\n }\n\n public bindAxis(uniform: UniformHandle): void {\n if (!sync(this, uniform))\n uniform.setUniform3fv(this._axis);\n }\n\n public bindSunDirection(uniform: UniformHandle): void {\n if (!sync(this, uniform))\n uniform.setUniform3fv(this._sunDirection);\n }\n\n public bindMarginColor(uniform: UniformHandle): void {\n if (!sync(this, uniform))\n this._marginColor.bind(uniform);\n }\n\n public bindDisplayMode(uniform: UniformHandle): void {\n if (!sync(this, uniform))\n uniform.setUniform1fv(this._displayMode);\n }\n\n public bindFragSettings(uniform: UniformHandle): void {\n if (!sync(this, uniform))\n uniform.setUniform4fv(this._fragSettings);\n }\n\n public bindTexture(uniform: UniformHandle, unit: TextureUnit): void {\n assert(undefined !== this._texture);\n this._texture.bindSampler(uniform, unit);\n }\n\n public bindNumSensors(uniform: UniformHandle): void {\n if (!sync(this, uniform))\n uniform.setUniform1i(this._numSensors);\n }\n\n public bindSensors(uniform: UniformHandle): void {\n assert(undefined !== this._sensors);\n this._sensors.texture.bindSampler(uniform, TextureUnit.ThematicSensors);\n }\n\n public get isDisposed(): boolean {\n return undefined === this._texture && undefined === this._sensors;\n }\n\n public [Symbol.dispose]() {\n this._texture = dispose(this._texture);\n this._sensors = dispose(this._sensors);\n }\n}\n\nfunction _getGradientDimension(): number {\n const preferDimension = 8192;\n const maxDimension = System.instance.maxTextureSize;\n return (preferDimension > maxDimension) ? maxDimension : preferDimension;\n}\n"]}
@@ -19,7 +19,7 @@ export declare class AuxChannelLUT implements WebGLDisposable {
19
19
  get bytesUsed(): number;
20
20
  get hasScalarAnimation(): boolean;
21
21
  get isDisposed(): boolean;
22
- dispose(): void;
22
+ [Symbol.dispose](): void;
23
23
  static create(table: AuxChannelTable): AuxChannelLUT | undefined;
24
24
  }
25
25
  /** Represents the finished lookup table ready for submission to GPU.
@@ -41,6 +41,6 @@ export declare class VertexLUT implements WebGLDisposable {
41
41
  static createFromVertexTable(vt: VertexTable, aux?: AuxChannelTable): VertexLUT | undefined;
42
42
  private constructor();
43
43
  get isDisposed(): boolean;
44
- dispose(): void;
44
+ [Symbol.dispose](): void;
45
45
  }
46
46
  //# sourceMappingURL=VertexLUT.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"VertexLUT.d.ts","sourceRoot":"","sources":["../../../../src/render/webgl/VertexLUT.ts"],"names":[],"mappings":"AAIA;;GAEG;AAIH,OAAO,EAAE,WAAW,EAAE,MAAM,0CAA0C,CAAC;AACvE,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAE/C,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,sBAAsB,EAAE,eAAe,EAAE,MAAM,8CAA8C,CAAC;AAIpI,gBAAgB;AAChB,qBAAa,aAAc,YAAW,eAAe;IACnD,SAAgB,OAAO,EAAE,aAAa,CAAC;IACvC,SAAgB,WAAW,EAAE,MAAM,CAAC;IACpC,SAAgB,iBAAiB,EAAE,MAAM,CAAC;IACnC,aAAa,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,sBAAsB,CAAC,CAAC;IACpD,OAAO,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IAClC,MAAM,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;IAE7C,OAAO;IAUP,OAAO,CAAC,YAAY;IAcpB,IAAW,SAAS,IAAI,MAAM,CAAmC;IACjE,IAAW,kBAAkB,YAAwC;IAErE,IAAW,UAAU,IAAI,OAAO,CAAoC;IAE7D,OAAO;WAIA,MAAM,CAAC,KAAK,EAAE,eAAe,GAAG,aAAa,GAAG,SAAS;CAIxE;AAED;;GAEG;AACH,qBAAa,SAAU,YAAW,eAAe;IAC/C,SAAgB,OAAO,EAAE,aAAa,CAAC;IACvC,SAAgB,WAAW,EAAE,MAAM,CAAC;IACpC,SAAgB,gBAAgB,EAAE,MAAM,CAAC;IACzC,SAAgB,SAAS,EAAE,SAAS,CAAC;IACrC,SAAgB,sBAAsB,EAAE,OAAO,CAAC;IAChD,SAAgB,OAAO,EAAE,YAAY,CAAC;IACtC,SAAgB,MAAM,EAAE,YAAY,CAAC;IACrC,SAAgB,SAAS,CAAC,EAAE,YAAY,CAAC;IACzC,SAAgB,WAAW,CAAC,EAAE,aAAa,CAAC;IAE5C,IAAW,YAAY,YAA6C;IACpE,IAAW,kBAAkB,YAAoF;IAEjH,IAAW,SAAS,IAAI,MAAM,CAM7B;WAEa,qBAAqB,CAAC,EAAE,EAAE,WAAW,EAAE,GAAG,CAAC,EAAE,eAAe,GAAG,SAAS,GAAG,SAAS;IASlG,OAAO;IAcP,IAAW,UAAU,IAAI,OAAO,CAAoC;IAE7D,OAAO;CAGf"}
1
+ {"version":3,"file":"VertexLUT.d.ts","sourceRoot":"","sources":["../../../../src/render/webgl/VertexLUT.ts"],"names":[],"mappings":"AAIA;;GAEG;AAIH,OAAO,EAAE,WAAW,EAAE,MAAM,0CAA0C,CAAC;AACvE,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAE/C,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,sBAAsB,EAAE,eAAe,EAAE,MAAM,8CAA8C,CAAC;AAIpI,gBAAgB;AAChB,qBAAa,aAAc,YAAW,eAAe;IACnD,SAAgB,OAAO,EAAE,aAAa,CAAC;IACvC,SAAgB,WAAW,EAAE,MAAM,CAAC;IACpC,SAAgB,iBAAiB,EAAE,MAAM,CAAC;IACnC,aAAa,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,sBAAsB,CAAC,CAAC;IACpD,OAAO,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IAClC,MAAM,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;IAE7C,OAAO;IAUP,OAAO,CAAC,YAAY;IAcpB,IAAW,SAAS,IAAI,MAAM,CAAmC;IACjE,IAAW,kBAAkB,YAAwC;IAErE,IAAW,UAAU,IAAI,OAAO,CAAoC;IAE7D,CAAC,MAAM,CAAC,OAAO,CAAC;WAIT,MAAM,CAAC,KAAK,EAAE,eAAe,GAAG,aAAa,GAAG,SAAS;CAIxE;AAED;;GAEG;AACH,qBAAa,SAAU,YAAW,eAAe;IAC/C,SAAgB,OAAO,EAAE,aAAa,CAAC;IACvC,SAAgB,WAAW,EAAE,MAAM,CAAC;IACpC,SAAgB,gBAAgB,EAAE,MAAM,CAAC;IACzC,SAAgB,SAAS,EAAE,SAAS,CAAC;IACrC,SAAgB,sBAAsB,EAAE,OAAO,CAAC;IAChD,SAAgB,OAAO,EAAE,YAAY,CAAC;IACtC,SAAgB,MAAM,EAAE,YAAY,CAAC;IACrC,SAAgB,SAAS,CAAC,EAAE,YAAY,CAAC;IACzC,SAAgB,WAAW,CAAC,EAAE,aAAa,CAAC;IAE5C,IAAW,YAAY,YAA6C;IACpE,IAAW,kBAAkB,YAAoF;IAEjH,IAAW,SAAS,IAAI,MAAM,CAM7B;WAEa,qBAAqB,CAAC,EAAE,EAAE,WAAW,EAAE,GAAG,CAAC,EAAE,eAAe,GAAG,SAAS,GAAG,SAAS;IASlG,OAAO;IAcP,IAAW,UAAU,IAAI,OAAO,CAAoC;IAE7D,CAAC,MAAM,CAAC,OAAO,CAAC;CAGxB"}
@@ -36,7 +36,7 @@ class AuxChannelLUT {
36
36
  get bytesUsed() { return this.texture.bytesUsed; }
37
37
  get hasScalarAnimation() { return undefined !== this.params; }
38
38
  get isDisposed() { return this.texture.isDisposed; }
39
- dispose() {
39
+ [Symbol.dispose]() {
40
40
  (0, core_bentley_1.dispose)(this.texture);
41
41
  }
42
42
  static create(table) {
@@ -77,7 +77,7 @@ class VertexLUT {
77
77
  this.uvQParams = (0, AttributeBuffers_1.qparams2dToArray)(uvParams);
78
78
  }
79
79
  get isDisposed() { return this.texture.isDisposed; }
80
- dispose() {
80
+ [Symbol.dispose]() {
81
81
  (0, core_bentley_1.dispose)(this.texture);
82
82
  }
83
83
  }
@@ -1 +1 @@
1
- {"version":3,"file":"VertexLUT.js","sourceRoot":"","sources":["../../../../src/render/webgl/VertexLUT.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module WebGL\n */\n\nimport { dispose } from \"@itwin/core-bentley\";\nimport { QParams2d, QParams3d } from \"@itwin/core-common\";\nimport { VertexTable } from \"../../common/internal/render/VertexTable\";\nimport { ColorInfo } from \"./ColorInfo\";\nimport { WebGLDisposable } from \"./Disposable\";\nimport { qorigin3dToArray, qparams2dToArray, qscale3dToArray } from \"./AttributeBuffers\";\nimport { TextureHandle } from \"./Texture\";\nimport { AuxChannel, AuxChannelTable, AuxDisplacementChannel, AuxParamChannel } from \"../../common/internal/render/AuxChannelTable\";\n\ntype ChannelPropName = \"normals\" | \"displacements\" | \"params\";\n\n/** @internal */\nexport class AuxChannelLUT implements WebGLDisposable {\n public readonly texture: TextureHandle;\n public readonly numVertices: number;\n public readonly numBytesPerVertex: number;\n public displacements?: Map<string, AuxDisplacementChannel>;\n public normals?: Map<string, AuxChannel>;\n public params?: Map<string, AuxParamChannel>;\n\n private constructor(texture: TextureHandle, table: AuxChannelTable) {\n this.texture = texture;\n this.numVertices = table.numVertices;\n this.numBytesPerVertex = table.numBytesPerVertex;\n\n this.initChannels<AuxDisplacementChannel>(table, \"displacements\");\n this.initChannels<AuxChannel>(table, \"normals\");\n this.initChannels<AuxParamChannel>(table, \"params\");\n }\n\n private initChannels<T extends AuxChannel>(table: AuxChannelTable, name: ChannelPropName): void {\n const channels = table[name];\n if (undefined === channels)\n return;\n\n const map = new Map<string, T>();\n\n // TS2322: Type 'Map<string, T>' is not assignable to type 'Map<string, AuxChannel> & Map<string, AuxDisplacementChannel> & Map<string, AuxParamChannel>'.\n // (Compiler cannot detect that the specific property name is matched to the correct subtype at each call site - but we know that).\n this[name] = map as any;\n for (const channel of channels)\n map.set(channel.name, channel as T);\n }\n\n public get bytesUsed(): number { return this.texture.bytesUsed; }\n public get hasScalarAnimation() { return undefined !== this.params; }\n\n public get isDisposed(): boolean { return this.texture.isDisposed; }\n\n public dispose() {\n dispose(this.texture);\n }\n\n public static create(table: AuxChannelTable): AuxChannelLUT | undefined {\n const texture = TextureHandle.createForData(table.width, table.height, table.data);\n return undefined !== texture ? new AuxChannelLUT(texture, table) : undefined;\n }\n}\n\n/** Represents the finished lookup table ready for submission to GPU.\n * @internal\n */\nexport class VertexLUT implements WebGLDisposable {\n public readonly texture: TextureHandle; // Texture containing vertex data\n public readonly numVertices: number;\n public readonly numRgbaPerVertex: number;\n public readonly colorInfo: ColorInfo;\n public readonly usesQuantizedPositions: boolean; // If true, positions are 16-bit integers quantized to qOrigin and qScale; otherwise they are unquantized 32-bit floats.\n public readonly qOrigin: Float32Array; // Origin of quantized range\n public readonly qScale: Float32Array; // Scale of quantized range\n public readonly uvQParams?: Float32Array; // If vertices contain texture UV params, quantization parameters as [origin.x, origin.y, scale.x, scale.y ]\n public readonly auxChannels?: AuxChannelLUT;\n\n public get hasAnimation() { return undefined !== this.auxChannels; }\n public get hasScalarAnimation() { return undefined !== this.auxChannels && this.auxChannels.hasScalarAnimation; }\n\n public get bytesUsed(): number {\n let bytesUsed = this.texture.bytesUsed;\n if (undefined !== this.auxChannels)\n bytesUsed += this.auxChannels.bytesUsed;\n\n return bytesUsed;\n }\n\n public static createFromVertexTable(vt: VertexTable, aux?: AuxChannelTable): VertexLUT | undefined {\n const texture = TextureHandle.createForData(vt.width, vt.height, vt.data);\n if (undefined === texture)\n return undefined;\n\n const auxLUT = undefined !== aux ? AuxChannelLUT.create(aux) : undefined;\n return new VertexLUT(texture, vt, ColorInfo.createFromVertexTable(vt), vt.qparams, !vt.usesUnquantizedPositions, vt.uvParams, auxLUT);\n }\n\n private constructor(texture: TextureHandle, table: VertexTable, colorInfo: ColorInfo, qparams: QParams3d, positionsAreQuantized: boolean, uvParams?: QParams2d, auxChannels?: AuxChannelLUT) {\n this.texture = texture;\n this.numVertices = table.numVertices;\n this.numRgbaPerVertex = table.numRgbaPerVertex;\n this.colorInfo = colorInfo;\n this.qOrigin = qorigin3dToArray(qparams.origin);\n this.qScale = qscale3dToArray(qparams.scale);\n this.usesQuantizedPositions = positionsAreQuantized;\n this.auxChannels = auxChannels;\n\n if (undefined !== uvParams)\n this.uvQParams = qparams2dToArray(uvParams);\n }\n\n public get isDisposed(): boolean { return this.texture.isDisposed; }\n\n public dispose() {\n dispose(this.texture);\n }\n}\n"]}
1
+ {"version":3,"file":"VertexLUT.js","sourceRoot":"","sources":["../../../../src/render/webgl/VertexLUT.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module WebGL\n */\n\nimport { dispose } from \"@itwin/core-bentley\";\nimport { QParams2d, QParams3d } from \"@itwin/core-common\";\nimport { VertexTable } from \"../../common/internal/render/VertexTable\";\nimport { ColorInfo } from \"./ColorInfo\";\nimport { WebGLDisposable } from \"./Disposable\";\nimport { qorigin3dToArray, qparams2dToArray, qscale3dToArray } from \"./AttributeBuffers\";\nimport { TextureHandle } from \"./Texture\";\nimport { AuxChannel, AuxChannelTable, AuxDisplacementChannel, AuxParamChannel } from \"../../common/internal/render/AuxChannelTable\";\n\ntype ChannelPropName = \"normals\" | \"displacements\" | \"params\";\n\n/** @internal */\nexport class AuxChannelLUT implements WebGLDisposable {\n public readonly texture: TextureHandle;\n public readonly numVertices: number;\n public readonly numBytesPerVertex: number;\n public displacements?: Map<string, AuxDisplacementChannel>;\n public normals?: Map<string, AuxChannel>;\n public params?: Map<string, AuxParamChannel>;\n\n private constructor(texture: TextureHandle, table: AuxChannelTable) {\n this.texture = texture;\n this.numVertices = table.numVertices;\n this.numBytesPerVertex = table.numBytesPerVertex;\n\n this.initChannels<AuxDisplacementChannel>(table, \"displacements\");\n this.initChannels<AuxChannel>(table, \"normals\");\n this.initChannels<AuxParamChannel>(table, \"params\");\n }\n\n private initChannels<T extends AuxChannel>(table: AuxChannelTable, name: ChannelPropName): void {\n const channels = table[name];\n if (undefined === channels)\n return;\n\n const map = new Map<string, T>();\n\n // TS2322: Type 'Map<string, T>' is not assignable to type 'Map<string, AuxChannel> & Map<string, AuxDisplacementChannel> & Map<string, AuxParamChannel>'.\n // (Compiler cannot detect that the specific property name is matched to the correct subtype at each call site - but we know that).\n this[name] = map as any;\n for (const channel of channels)\n map.set(channel.name, channel as T);\n }\n\n public get bytesUsed(): number { return this.texture.bytesUsed; }\n public get hasScalarAnimation() { return undefined !== this.params; }\n\n public get isDisposed(): boolean { return this.texture.isDisposed; }\n\n public [Symbol.dispose]() {\n dispose(this.texture);\n }\n\n public static create(table: AuxChannelTable): AuxChannelLUT | undefined {\n const texture = TextureHandle.createForData(table.width, table.height, table.data);\n return undefined !== texture ? new AuxChannelLUT(texture, table) : undefined;\n }\n}\n\n/** Represents the finished lookup table ready for submission to GPU.\n * @internal\n */\nexport class VertexLUT implements WebGLDisposable {\n public readonly texture: TextureHandle; // Texture containing vertex data\n public readonly numVertices: number;\n public readonly numRgbaPerVertex: number;\n public readonly colorInfo: ColorInfo;\n public readonly usesQuantizedPositions: boolean; // If true, positions are 16-bit integers quantized to qOrigin and qScale; otherwise they are unquantized 32-bit floats.\n public readonly qOrigin: Float32Array; // Origin of quantized range\n public readonly qScale: Float32Array; // Scale of quantized range\n public readonly uvQParams?: Float32Array; // If vertices contain texture UV params, quantization parameters as [origin.x, origin.y, scale.x, scale.y ]\n public readonly auxChannels?: AuxChannelLUT;\n\n public get hasAnimation() { return undefined !== this.auxChannels; }\n public get hasScalarAnimation() { return undefined !== this.auxChannels && this.auxChannels.hasScalarAnimation; }\n\n public get bytesUsed(): number {\n let bytesUsed = this.texture.bytesUsed;\n if (undefined !== this.auxChannels)\n bytesUsed += this.auxChannels.bytesUsed;\n\n return bytesUsed;\n }\n\n public static createFromVertexTable(vt: VertexTable, aux?: AuxChannelTable): VertexLUT | undefined {\n const texture = TextureHandle.createForData(vt.width, vt.height, vt.data);\n if (undefined === texture)\n return undefined;\n\n const auxLUT = undefined !== aux ? AuxChannelLUT.create(aux) : undefined;\n return new VertexLUT(texture, vt, ColorInfo.createFromVertexTable(vt), vt.qparams, !vt.usesUnquantizedPositions, vt.uvParams, auxLUT);\n }\n\n private constructor(texture: TextureHandle, table: VertexTable, colorInfo: ColorInfo, qparams: QParams3d, positionsAreQuantized: boolean, uvParams?: QParams2d, auxChannels?: AuxChannelLUT) {\n this.texture = texture;\n this.numVertices = table.numVertices;\n this.numRgbaPerVertex = table.numRgbaPerVertex;\n this.colorInfo = colorInfo;\n this.qOrigin = qorigin3dToArray(qparams.origin);\n this.qScale = qscale3dToArray(qparams.scale);\n this.usesQuantizedPositions = positionsAreQuantized;\n this.auxChannels = auxChannels;\n\n if (undefined !== uvParams)\n this.uvQParams = qparams2dToArray(uvParams);\n }\n\n public get isDisposed(): boolean { return this.texture.isDisposed; }\n\n public [Symbol.dispose]() {\n dispose(this.texture);\n }\n}\n"]}
@@ -6,6 +6,58 @@
6
6
  /** @packageDocumentation
7
7
  * @module WebGL
8
8
  */
9
+ var __addDisposableResource = (this && this.__addDisposableResource) || function (env, value, async) {
10
+ if (value !== null && value !== void 0) {
11
+ if (typeof value !== "object" && typeof value !== "function") throw new TypeError("Object expected.");
12
+ var dispose, inner;
13
+ if (async) {
14
+ if (!Symbol.asyncDispose) throw new TypeError("Symbol.asyncDispose is not defined.");
15
+ dispose = value[Symbol.asyncDispose];
16
+ }
17
+ if (dispose === void 0) {
18
+ if (!Symbol.dispose) throw new TypeError("Symbol.dispose is not defined.");
19
+ dispose = value[Symbol.dispose];
20
+ if (async) inner = dispose;
21
+ }
22
+ if (typeof dispose !== "function") throw new TypeError("Object not disposable.");
23
+ if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };
24
+ env.stack.push({ value: value, dispose: dispose, async: async });
25
+ }
26
+ else if (async) {
27
+ env.stack.push({ async: true });
28
+ }
29
+ return value;
30
+ };
31
+ var __disposeResources = (this && this.__disposeResources) || (function (SuppressedError) {
32
+ return function (env) {
33
+ function fail(e) {
34
+ env.error = env.hasError ? new SuppressedError(e, env.error, "An error was suppressed during disposal.") : e;
35
+ env.hasError = true;
36
+ }
37
+ var r, s = 0;
38
+ function next() {
39
+ while (r = env.stack.pop()) {
40
+ try {
41
+ if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);
42
+ if (r.dispose) {
43
+ var result = r.dispose.call(r.value);
44
+ if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });
45
+ }
46
+ else s |= 1;
47
+ }
48
+ catch (e) {
49
+ fail(e);
50
+ }
51
+ }
52
+ if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();
53
+ if (env.hasError) throw env.error;
54
+ }
55
+ return next();
56
+ };
57
+ })(typeof SuppressedError === "function" ? SuppressedError : function (error, suppressed, message) {
58
+ var e = new Error(message);
59
+ return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e;
60
+ });
9
61
  Object.defineProperty(exports, "__esModule", { value: true });
10
62
  exports.VisibleTileFeatures = void 0;
11
63
  const core_bentley_1 = require("@itwin/core-bentley");
@@ -45,9 +97,10 @@ function isFeatureVisible(feature, target, includeNonLocatable) {
45
97
  return undefined !== app && (includeNonLocatable || !app.nonLocatable);
46
98
  }
47
99
  function* commandIterator(features, pass) {
48
- const commands = features.renderCommands.getCommands(pass);
49
- const executor = new ShaderProgram_1.ShaderProgramExecutor(features.target, pass);
100
+ const env_1 = { stack: [], error: void 0, hasError: false };
50
101
  try {
102
+ const commands = features.renderCommands.getCommands(pass);
103
+ const executor = __addDisposableResource(env_1, new ShaderProgram_1.ShaderProgramExecutor(features.target, pass), false);
51
104
  for (const command of commands) {
52
105
  if (command.opcode !== "drawPrimitive")
53
106
  command.execute(executor);
@@ -71,8 +124,12 @@ function* commandIterator(features, pass) {
71
124
  }
72
125
  }
73
126
  }
127
+ catch (e_1) {
128
+ env_1.error = e_1;
129
+ env_1.hasError = true;
130
+ }
74
131
  finally {
75
- executor.dispose();
132
+ __disposeResources(env_1);
76
133
  }
77
134
  }
78
135
  function* iterator(features) {
@@ -1 +1 @@
1
- {"version":3,"file":"VisibleTileFeatures.js","sourceRoot":"","sources":["../../../../src/render/webgl/VisibleTileFeatures.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module WebGL\n */\n\nimport { Id64 } from \"@itwin/core-bentley\";\nimport { BatchType, PackedFeature } from \"@itwin/core-common\";\nimport { IModelConnection } from \"../../IModelConnection\";\nimport { QueryTileFeaturesOptions, VisibleFeature } from \"../VisibleFeature\";\nimport { RenderPass } from \"./RenderFlags\";\nimport { RenderCommands } from \"./RenderCommands\";\nimport { ShaderProgramExecutor } from \"./ShaderProgram\";\nimport { Target } from \"./Target\";\n\n/** Iterates over features visible in tiles selected for display by a Target by inspecting its RenderCommands.\n * @internal\n */\nexport class VisibleTileFeatures implements Iterable<VisibleFeature> {\n public readonly includeNonLocatable: boolean;\n public readonly renderCommands: RenderCommands;\n public readonly target: Target;\n public readonly iModel: IModelConnection;\n\n public constructor(commands: RenderCommands, options: QueryTileFeaturesOptions, target: Target, iModel: IModelConnection) {\n this.includeNonLocatable = true === options.includeNonLocatable;\n this.renderCommands = commands;\n this.target = target;\n this.iModel = iModel;\n\n target.compositor.preDraw();\n }\n\n public [Symbol.iterator](): Iterator<VisibleFeature> {\n return iterator(this);\n }\n}\n\nconst clippedPasses: RenderPass[] = [\n RenderPass.BackgroundMap,\n RenderPass.OpaqueLayers,\n RenderPass.OpaqueLinear,\n RenderPass.OpaquePlanar,\n RenderPass.OpaqueGeneral,\n RenderPass.TranslucentLayers,\n RenderPass.Translucent,\n RenderPass.OverlayLayers,\n];\n\nfunction isFeatureVisible(feature: PackedFeature, target: Target, includeNonLocatable: boolean) {\n const ovrs = target.currentFeatureSymbologyOverrides;\n if (!ovrs)\n return true;\n\n const app = target.currentBranch.getFeatureAppearance(\n ovrs,\n feature.elementId.lower, feature.elementId.upper,\n feature.subCategoryId.lower, feature.subCategoryId.upper,\n feature.geometryClass,\n feature.modelId.lower, feature.modelId.upper,\n BatchType.Primary, feature.animationNodeId);\n\n return undefined !== app && (includeNonLocatable || !app.nonLocatable);\n}\n\nfunction* commandIterator(features: VisibleTileFeatures, pass: RenderPass) {\n const commands = features.renderCommands.getCommands(pass);\n const executor = new ShaderProgramExecutor(features.target, pass);\n try {\n for (const command of commands) {\n if (command.opcode !== \"drawPrimitive\")\n command.execute(executor);\n\n if (command.opcode !== \"pushBatch\")\n continue;\n\n const ovrs = command.batch.getOverrides(features.target);\n if (ovrs.allHidden)\n continue;\n\n const scratchFeature = PackedFeature.createWithIndex();\n const table = command.batch.featureTable;\n for (const feature of table.iterable(scratchFeature)) {\n if (!ovrs.anyOverridden || isFeatureVisible(feature, features.target, features.includeNonLocatable)) {\n yield {\n elementId: Id64.fromUint32PairObject(feature.elementId),\n subCategoryId: Id64.fromUint32PairObject(feature.subCategoryId),\n geometryClass: feature.geometryClass,\n modelId: Id64.fromUint32PairObject(feature.modelId),\n iModel: command.batch.batchIModel ?? features.iModel,\n };\n }\n }\n }\n } finally {\n executor.dispose();\n }\n}\n\nfunction* iterator(features: VisibleTileFeatures) {\n try {\n features.target.pushViewClip();\n for (const pass of clippedPasses)\n yield* commandIterator(features, pass);\n } finally {\n features.target.popViewClip();\n }\n}\n"]}
1
+ {"version":3,"file":"VisibleTileFeatures.js","sourceRoot":"","sources":["../../../../src/render/webgl/VisibleTileFeatures.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module WebGL\n */\n\nimport { Id64 } from \"@itwin/core-bentley\";\nimport { BatchType, PackedFeature } from \"@itwin/core-common\";\nimport { IModelConnection } from \"../../IModelConnection\";\nimport { QueryTileFeaturesOptions, VisibleFeature } from \"../VisibleFeature\";\nimport { RenderPass } from \"./RenderFlags\";\nimport { RenderCommands } from \"./RenderCommands\";\nimport { ShaderProgramExecutor } from \"./ShaderProgram\";\nimport { Target } from \"./Target\";\n\n/** Iterates over features visible in tiles selected for display by a Target by inspecting its RenderCommands.\n * @internal\n */\nexport class VisibleTileFeatures implements Iterable<VisibleFeature> {\n public readonly includeNonLocatable: boolean;\n public readonly renderCommands: RenderCommands;\n public readonly target: Target;\n public readonly iModel: IModelConnection;\n\n public constructor(commands: RenderCommands, options: QueryTileFeaturesOptions, target: Target, iModel: IModelConnection) {\n this.includeNonLocatable = true === options.includeNonLocatable;\n this.renderCommands = commands;\n this.target = target;\n this.iModel = iModel;\n\n target.compositor.preDraw();\n }\n\n public [Symbol.iterator](): Iterator<VisibleFeature> {\n return iterator(this);\n }\n}\n\nconst clippedPasses: RenderPass[] = [\n RenderPass.BackgroundMap,\n RenderPass.OpaqueLayers,\n RenderPass.OpaqueLinear,\n RenderPass.OpaquePlanar,\n RenderPass.OpaqueGeneral,\n RenderPass.TranslucentLayers,\n RenderPass.Translucent,\n RenderPass.OverlayLayers,\n];\n\nfunction isFeatureVisible(feature: PackedFeature, target: Target, includeNonLocatable: boolean) {\n const ovrs = target.currentFeatureSymbologyOverrides;\n if (!ovrs)\n return true;\n\n const app = target.currentBranch.getFeatureAppearance(\n ovrs,\n feature.elementId.lower, feature.elementId.upper,\n feature.subCategoryId.lower, feature.subCategoryId.upper,\n feature.geometryClass,\n feature.modelId.lower, feature.modelId.upper,\n BatchType.Primary, feature.animationNodeId);\n\n return undefined !== app && (includeNonLocatable || !app.nonLocatable);\n}\n\nfunction* commandIterator(features: VisibleTileFeatures, pass: RenderPass) {\n const commands = features.renderCommands.getCommands(pass);\n using executor = new ShaderProgramExecutor(features.target, pass);\n\n for (const command of commands) {\n if (command.opcode !== \"drawPrimitive\")\n command.execute(executor);\n\n if (command.opcode !== \"pushBatch\")\n continue;\n\n const ovrs = command.batch.getOverrides(features.target);\n if (ovrs.allHidden)\n continue;\n\n const scratchFeature = PackedFeature.createWithIndex();\n const table = command.batch.featureTable;\n for (const feature of table.iterable(scratchFeature)) {\n if (!ovrs.anyOverridden || isFeatureVisible(feature, features.target, features.includeNonLocatable)) {\n yield {\n elementId: Id64.fromUint32PairObject(feature.elementId),\n subCategoryId: Id64.fromUint32PairObject(feature.subCategoryId),\n geometryClass: feature.geometryClass,\n modelId: Id64.fromUint32PairObject(feature.modelId),\n iModel: command.batch.batchIModel ?? features.iModel,\n };\n }\n }\n }\n}\n\nfunction* iterator(features: VisibleTileFeatures) {\n try {\n features.target.pushViewClip();\n for (const pass of clippedPasses)\n yield* commandIterator(features, pass);\n } finally {\n features.target.popViewClip();\n }\n}\n"]}
@@ -25,7 +25,7 @@ class ClassifierTreeSupplier {
25
25
  tileTree: undefined,
26
26
  loadStatus: internal_1.TileTreeLoadStatus.NotFound,
27
27
  load: () => undefined,
28
- dispose: () => undefined,
28
+ [Symbol.dispose]: () => undefined,
29
29
  loadTree: async () => undefined,
30
30
  iModel: undefined,
31
31
  };
@@ -1 +1 @@
1
- {"version":3,"file":"ClassifierTileTree.js","sourceRoot":"","sources":["../../../src/tile/ClassifierTileTree.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Tiles\n */\nimport { compareNumbers, comparePossiblyUndefined, compareStrings, compareStringsOrUndefined, Id64, Id64String } from \"@itwin/core-bentley\";\nimport {\n BatchType, ClassifierTileTreeId, iModelTileTreeIdToString, RenderMode, RenderSchedule, SpatialClassifier, ViewFlagsProperties,\n} from \"@itwin/core-common\";\nimport { DisplayStyleState } from \"../DisplayStyleState\";\nimport { IModelApp } from \"../IModelApp\";\nimport { IModelConnection } from \"../IModelConnection\";\nimport { GeometricModelState } from \"../ModelState\";\nimport { SceneContext } from \"../ViewContext\";\nimport { ViewState } from \"../ViewState\";\nimport { ActiveSpatialClassifier, SpatialClassifiersState } from \"../SpatialClassifiersState\";\nimport {\n DisclosedTileTreeSet, IModelTileTree, iModelTileTreeParamsFromJSON, TileTree, TileTreeLoadStatus, TileTreeOwner, TileTreeReference, TileTreeSupplier,\n} from \"./internal\";\n\ninterface ClassifierTreeId extends ClassifierTileTreeId {\n modelId: Id64String;\n timeline?: RenderSchedule.ModelTimeline;\n}\n\nfunction compareIds(lhs: ClassifierTreeId, rhs: ClassifierTreeId): number {\n return compareNumbers(lhs.type, rhs.type) || compareNumbers(lhs.expansion, rhs.expansion)\n || compareStrings(lhs.modelId, rhs.modelId) || compareStringsOrUndefined(lhs.animationId, rhs.animationId)\n || comparePossiblyUndefined((x, y) => x.compareTo(y), lhs.timeline, rhs.timeline);\n}\n\nclass ClassifierTreeSupplier implements TileTreeSupplier {\n private readonly _nonexistentTreeOwner = {\n tileTree: undefined,\n loadStatus: TileTreeLoadStatus.NotFound,\n load: () => undefined,\n dispose: () => undefined,\n loadTree: async () => undefined,\n iModel: undefined as unknown as IModelConnection,\n };\n\n public compareTileTreeIds(lhs: ClassifierTreeId, rhs: ClassifierTreeId): number {\n return compareIds(lhs, rhs);\n }\n\n public async createTileTree(id: ClassifierTreeId, iModel: IModelConnection): Promise<TileTree | undefined> {\n await iModel.models.load(id.modelId);\n const model = iModel.models.getLoaded(id.modelId);\n if (undefined === model || !(model instanceof GeometricModelState))\n return undefined;\n\n const idStr = iModelTileTreeIdToString(id.modelId, id, IModelApp.tileAdmin);\n const props = await IModelApp.tileAdmin.requestTileTreeProps(iModel, idStr);\n\n const params = iModelTileTreeParamsFromJSON(props, iModel, id.modelId, {\n edges: false,\n allowInstancing: false,\n is3d: true,\n batchType: id.type,\n timeline: id.timeline,\n });\n\n return new IModelTileTree(params, id);\n }\n\n public getOwner(id: ClassifierTreeId, iModel: IModelConnection): TileTreeOwner {\n return Id64.isValid(id.modelId) ? iModel.tiles.getTileTreeOwner(id, this) : this._nonexistentTreeOwner;\n }\n\n public addModelsAnimatedByScript(modelIds: Set<Id64String>, scriptSourceId: Id64String, trees: Iterable<{ id: ClassifierTreeId, owner: TileTreeOwner }>): void {\n // Note: This is invoked when an element hosting a schedule script is updated - it doesn't care about frontend schedule scripts.\n for (const tree of trees)\n if (scriptSourceId === tree.id.animationId)\n modelIds.add(tree.id.modelId);\n }\n\n public addSpatialModels(modelIds: Set<Id64String>, trees: Iterable<{ id: ClassifierTreeId, owner: TileTreeOwner }>): void {\n for (const tree of trees)\n modelIds.add(tree.id.modelId);\n }\n}\n\nconst classifierTreeSupplier = new ClassifierTreeSupplier();\n\n/** @internal */\nexport abstract class SpatialClassifierTileTreeReference extends TileTreeReference {\n public abstract get isPlanar(): boolean;\n public abstract get activeClassifier(): ActiveSpatialClassifier | undefined;\n public abstract get viewFlags(): Partial<ViewFlagsProperties>;\n public get transparency(): number | undefined { return undefined; }\n}\n\n/** @internal */\nclass ClassifierTreeReference extends SpatialClassifierTileTreeReference {\n private _id: ClassifierTreeId;\n private readonly _classifiers: SpatialClassifiersState;\n private readonly _source: ViewState | DisplayStyleState;\n private readonly _iModel: IModelConnection;\n private readonly _classifiedTree: TileTreeReference;\n private _owner: TileTreeOwner;\n\n public constructor(classifiers: SpatialClassifiersState, classifiedTree: TileTreeReference, iModel: IModelConnection, source: ViewState | DisplayStyleState) {\n super();\n this._id = createClassifierId(classifiers.active, source);\n this._source = source;\n this._iModel = iModel;\n this._classifiers = classifiers;\n this._classifiedTree = classifiedTree;\n this._owner = classifierTreeSupplier.getOwner(this._id, iModel);\n }\n\n public get classifiers(): SpatialClassifiersState { return this._classifiers; }\n public get activeClassifier(): ActiveSpatialClassifier | undefined { return this.classifiers.activeClassifier; }\n\n public override get castsShadows() {\n return false;\n }\n\n public get treeOwner(): TileTreeOwner {\n const newId = createClassifierId(this._classifiers.active, this._source);\n if (0 !== compareIds(this._id, newId)) {\n this._id = newId;\n this._owner = classifierTreeSupplier.getOwner(this._id, this._iModel);\n }\n\n return this.activeClassifier?.tileTreeReference?.treeOwner ?? this._owner;\n }\n\n public override discloseTileTrees(trees: DisclosedTileTreeSet): void {\n // NB: We do NOT call super because we don't use our tree if no classifier is active.\n trees.disclose(this._classifiedTree);\n\n const classifier = this.activeClassifier;\n const classifierTree = undefined !== classifier ? this.treeOwner.tileTree : undefined;\n if (undefined !== classifierTree)\n trees.add(classifierTree);\n }\n\n public get isPlanar() {\n if (this.activeClassifier?.flags.isVolumeClassifier) {\n return false;\n }\n\n return true;\n }\n\n public get viewFlags(): Partial<ViewFlagsProperties> {\n return {\n renderMode: RenderMode.SmoothShade,\n transparency: true, // Igored for point clouds as they don't support transparency.\n textures: false,\n lighting: false,\n shadows: false,\n monochrome: false,\n materials: false,\n ambientOcclusion: false,\n visibleEdges: false,\n hiddenEdges: false,\n };\n }\n\n // Add volume classifiers to scene (planar classifiers are added seperately.)\n public override addToScene(context: SceneContext): void {\n if (this.isPlanar)\n return;\n\n const classifiedTree = this._classifiedTree.treeOwner.load();\n if (undefined === classifiedTree)\n return;\n\n const classifier = this._classifiers.activeClassifier;\n if (undefined === classifier)\n return;\n\n const classifierTree = this.treeOwner.load();\n if (undefined === classifierTree)\n return;\n\n context.setVolumeClassifier(classifier, classifiedTree.modelId);\n super.addToScene(context);\n }\n\n}\n\n/** @internal */\nexport function createClassifierTileTreeReference(classifiers: SpatialClassifiersState, classifiedTree: TileTreeReference, iModel: IModelConnection, source: ViewState | DisplayStyleState): SpatialClassifierTileTreeReference {\n return new ClassifierTreeReference(classifiers, classifiedTree, iModel, source);\n}\n\nfunction createClassifierId(classifier: SpatialClassifier | undefined, source: ViewState | DisplayStyleState | undefined): ClassifierTreeId {\n if (undefined === classifier)\n return { modelId: Id64.invalid, type: BatchType.PlanarClassifier, expansion: 0, animationId: undefined };\n\n const type = classifier.flags.isVolumeClassifier ? BatchType.VolumeClassifier : BatchType.PlanarClassifier;\n const scriptInfo = IModelApp.tileAdmin.getScriptInfoForTreeId(classifier.modelId, source?.scheduleScriptReference); // eslint-disable-line @typescript-eslint/no-deprecated\n return {\n modelId: classifier.modelId,\n type,\n expansion: classifier.expand,\n animationId: scriptInfo?.animationId,\n timeline: scriptInfo?.timeline,\n };\n}\n"]}
1
+ {"version":3,"file":"ClassifierTileTree.js","sourceRoot":"","sources":["../../../src/tile/ClassifierTileTree.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Tiles\n */\nimport { compareNumbers, comparePossiblyUndefined, compareStrings, compareStringsOrUndefined, Id64, Id64String } from \"@itwin/core-bentley\";\nimport {\n BatchType, ClassifierTileTreeId, iModelTileTreeIdToString, RenderMode, RenderSchedule, SpatialClassifier, ViewFlagsProperties,\n} from \"@itwin/core-common\";\nimport { DisplayStyleState } from \"../DisplayStyleState\";\nimport { IModelApp } from \"../IModelApp\";\nimport { IModelConnection } from \"../IModelConnection\";\nimport { GeometricModelState } from \"../ModelState\";\nimport { SceneContext } from \"../ViewContext\";\nimport { ViewState } from \"../ViewState\";\nimport { ActiveSpatialClassifier, SpatialClassifiersState } from \"../SpatialClassifiersState\";\nimport {\n DisclosedTileTreeSet, IModelTileTree, iModelTileTreeParamsFromJSON, TileTree, TileTreeLoadStatus, TileTreeOwner, TileTreeReference, TileTreeSupplier,\n} from \"./internal\";\n\ninterface ClassifierTreeId extends ClassifierTileTreeId {\n modelId: Id64String;\n timeline?: RenderSchedule.ModelTimeline;\n}\n\nfunction compareIds(lhs: ClassifierTreeId, rhs: ClassifierTreeId): number {\n return compareNumbers(lhs.type, rhs.type) || compareNumbers(lhs.expansion, rhs.expansion)\n || compareStrings(lhs.modelId, rhs.modelId) || compareStringsOrUndefined(lhs.animationId, rhs.animationId)\n || comparePossiblyUndefined((x, y) => x.compareTo(y), lhs.timeline, rhs.timeline);\n}\n\nclass ClassifierTreeSupplier implements TileTreeSupplier {\n private readonly _nonexistentTreeOwner = {\n tileTree: undefined,\n loadStatus: TileTreeLoadStatus.NotFound,\n load: () => undefined,\n [Symbol.dispose]: () => undefined,\n loadTree: async () => undefined,\n iModel: undefined as unknown as IModelConnection,\n };\n\n public compareTileTreeIds(lhs: ClassifierTreeId, rhs: ClassifierTreeId): number {\n return compareIds(lhs, rhs);\n }\n\n public async createTileTree(id: ClassifierTreeId, iModel: IModelConnection): Promise<TileTree | undefined> {\n await iModel.models.load(id.modelId);\n const model = iModel.models.getLoaded(id.modelId);\n if (undefined === model || !(model instanceof GeometricModelState))\n return undefined;\n\n const idStr = iModelTileTreeIdToString(id.modelId, id, IModelApp.tileAdmin);\n const props = await IModelApp.tileAdmin.requestTileTreeProps(iModel, idStr);\n\n const params = iModelTileTreeParamsFromJSON(props, iModel, id.modelId, {\n edges: false,\n allowInstancing: false,\n is3d: true,\n batchType: id.type,\n timeline: id.timeline,\n });\n\n return new IModelTileTree(params, id);\n }\n\n public getOwner(id: ClassifierTreeId, iModel: IModelConnection): TileTreeOwner {\n return Id64.isValid(id.modelId) ? iModel.tiles.getTileTreeOwner(id, this) : this._nonexistentTreeOwner;\n }\n\n public addModelsAnimatedByScript(modelIds: Set<Id64String>, scriptSourceId: Id64String, trees: Iterable<{ id: ClassifierTreeId, owner: TileTreeOwner }>): void {\n // Note: This is invoked when an element hosting a schedule script is updated - it doesn't care about frontend schedule scripts.\n for (const tree of trees)\n if (scriptSourceId === tree.id.animationId)\n modelIds.add(tree.id.modelId);\n }\n\n public addSpatialModels(modelIds: Set<Id64String>, trees: Iterable<{ id: ClassifierTreeId, owner: TileTreeOwner }>): void {\n for (const tree of trees)\n modelIds.add(tree.id.modelId);\n }\n}\n\nconst classifierTreeSupplier = new ClassifierTreeSupplier();\n\n/** @internal */\nexport abstract class SpatialClassifierTileTreeReference extends TileTreeReference {\n public abstract get isPlanar(): boolean;\n public abstract get activeClassifier(): ActiveSpatialClassifier | undefined;\n public abstract get viewFlags(): Partial<ViewFlagsProperties>;\n public get transparency(): number | undefined { return undefined; }\n}\n\n/** @internal */\nclass ClassifierTreeReference extends SpatialClassifierTileTreeReference {\n private _id: ClassifierTreeId;\n private readonly _classifiers: SpatialClassifiersState;\n private readonly _source: ViewState | DisplayStyleState;\n private readonly _iModel: IModelConnection;\n private readonly _classifiedTree: TileTreeReference;\n private _owner: TileTreeOwner;\n\n public constructor(classifiers: SpatialClassifiersState, classifiedTree: TileTreeReference, iModel: IModelConnection, source: ViewState | DisplayStyleState) {\n super();\n this._id = createClassifierId(classifiers.active, source);\n this._source = source;\n this._iModel = iModel;\n this._classifiers = classifiers;\n this._classifiedTree = classifiedTree;\n this._owner = classifierTreeSupplier.getOwner(this._id, iModel);\n }\n\n public get classifiers(): SpatialClassifiersState { return this._classifiers; }\n public get activeClassifier(): ActiveSpatialClassifier | undefined { return this.classifiers.activeClassifier; }\n\n public override get castsShadows() {\n return false;\n }\n\n public get treeOwner(): TileTreeOwner {\n const newId = createClassifierId(this._classifiers.active, this._source);\n if (0 !== compareIds(this._id, newId)) {\n this._id = newId;\n this._owner = classifierTreeSupplier.getOwner(this._id, this._iModel);\n }\n\n return this.activeClassifier?.tileTreeReference?.treeOwner ?? this._owner;\n }\n\n public override discloseTileTrees(trees: DisclosedTileTreeSet): void {\n // NB: We do NOT call super because we don't use our tree if no classifier is active.\n trees.disclose(this._classifiedTree);\n\n const classifier = this.activeClassifier;\n const classifierTree = undefined !== classifier ? this.treeOwner.tileTree : undefined;\n if (undefined !== classifierTree)\n trees.add(classifierTree);\n }\n\n public get isPlanar() {\n if (this.activeClassifier?.flags.isVolumeClassifier) {\n return false;\n }\n\n return true;\n }\n\n public get viewFlags(): Partial<ViewFlagsProperties> {\n return {\n renderMode: RenderMode.SmoothShade,\n transparency: true, // Igored for point clouds as they don't support transparency.\n textures: false,\n lighting: false,\n shadows: false,\n monochrome: false,\n materials: false,\n ambientOcclusion: false,\n visibleEdges: false,\n hiddenEdges: false,\n };\n }\n\n // Add volume classifiers to scene (planar classifiers are added seperately.)\n public override addToScene(context: SceneContext): void {\n if (this.isPlanar)\n return;\n\n const classifiedTree = this._classifiedTree.treeOwner.load();\n if (undefined === classifiedTree)\n return;\n\n const classifier = this._classifiers.activeClassifier;\n if (undefined === classifier)\n return;\n\n const classifierTree = this.treeOwner.load();\n if (undefined === classifierTree)\n return;\n\n context.setVolumeClassifier(classifier, classifiedTree.modelId);\n super.addToScene(context);\n }\n\n}\n\n/** @internal */\nexport function createClassifierTileTreeReference(classifiers: SpatialClassifiersState, classifiedTree: TileTreeReference, iModel: IModelConnection, source: ViewState | DisplayStyleState): SpatialClassifierTileTreeReference {\n return new ClassifierTreeReference(classifiers, classifiedTree, iModel, source);\n}\n\nfunction createClassifierId(classifier: SpatialClassifier | undefined, source: ViewState | DisplayStyleState | undefined): ClassifierTreeId {\n if (undefined === classifier)\n return { modelId: Id64.invalid, type: BatchType.PlanarClassifier, expansion: 0, animationId: undefined };\n\n const type = classifier.flags.isVolumeClassifier ? BatchType.VolumeClassifier : BatchType.PlanarClassifier;\n const scriptInfo = IModelApp.tileAdmin.getScriptInfoForTreeId(classifier.modelId, source?.scheduleScriptReference); // eslint-disable-line @typescript-eslint/no-deprecated\n return {\n modelId: classifier.modelId,\n type,\n expansion: classifier.expand,\n animationId: scriptInfo?.animationId,\n timeline: scriptInfo?.timeline,\n };\n}\n"]}
@@ -82,7 +82,7 @@ class RootTile extends DynamicIModelTile {
82
82
  let tile = this._elements.findEquivalent((t) => (0, core_bentley_1.compareStrings)(t.contentId, change.id));
83
83
  if (change.type === core_bentley_1.DbOpcode.Delete) {
84
84
  if (tile) {
85
- tile.dispose();
85
+ tile[Symbol.dispose]();
86
86
  this._elements.remove(tile);
87
87
  }
88
88
  }
@@ -162,7 +162,7 @@ class ElementTile extends internal_1.Tile {
162
162
  if (partitionIndex < children.length) {
163
163
  const expired = children.splice(partitionIndex);
164
164
  for (const child of expired)
165
- child.dispose();
165
+ child[Symbol.dispose]();
166
166
  }
167
167
  // Restore ordering.
168
168
  children.sort((x, y) => y.toleranceLog10 - x.toleranceLog10);
@@ -226,7 +226,7 @@ class ElementTile extends internal_1.Tile {
226
226
  // Discard out-dated graphics.
227
227
  (0, core_bentley_1.assert)(undefined !== this.children);
228
228
  for (const child of this.children)
229
- child.dispose();
229
+ child[Symbol.dispose]();
230
230
  this.children.length = 0;
231
231
  }
232
232
  }
@@ -1 +1 @@
1
- {"version":3,"file":"DynamicIModelTile.js","sourceRoot":"","sources":["../../../src/tile/DynamicIModelTile.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Tiles\n */\n\nimport {\n assert, BeTimePoint, ByteStream, compareStrings, DbOpcode, Id64, Id64Array, Id64String, partitionArray, SortedArray,\n} from \"@itwin/core-bentley\";\nimport { Range3d, Transform } from \"@itwin/core-geometry\";\nimport {\n BatchType, ElementGeometryChange, ElementGraphicsRequestProps, FeatureAppearance, FeatureAppearanceProvider, FeatureAppearanceSource, GeometryClass, TileFormat,\n} from \"@itwin/core-common\";\nimport { RenderSystem } from \"../render/RenderSystem\";\nimport { IModelApp } from \"../IModelApp\";\nimport {\n ImdlReader, IModelTileTree, RootIModelTile, Tile, TileContent, TileDrawArgs, TileParams, TileRequest, TileRequestChannel, TileTree,\n} from \"./internal\";\n\n/** The root tile for the branch of an [[IModelTileTree]] containing graphics for elements that have been modified during the current\n * Not intended for direct consumption - exported for use by [[IModelTileTree]].\n * [[GraphicalEditingScope]].\n * @internal\n */\nexport abstract class DynamicIModelTile extends Tile {\n protected constructor(params: TileParams, tree: TileTree) {\n super(params, tree);\n }\n\n public static create(root: RootIModelTile, elements: Iterable<ElementGeometryChange>): DynamicIModelTile {\n return new RootTile(root, elements);\n }\n\n /** Updates the tiles when elements are modified during the editing scope. */\n public abstract handleGeometryChanges(changes: Iterable<ElementGeometryChange>): void;\n\n /** Overrides symbology of the *static* [[IModelTile]]s to hide elements that have been deleted or modified. */\n public abstract get appearanceProvider(): FeatureAppearanceProvider;\n\n /** Exposed strictly for tests. */\n public abstract get hiddenElements(): Id64Array;\n\n /** Select tiles for display, requesting content for tiles as necessary. */\n public abstract selectTiles(selected: Tile[], args: TileDrawArgs): void;\n\n /** Discard tiles that have not been used since the specified time point. */\n public abstract pruneChildren(olderThan: BeTimePoint): void;\n}\n\n/** The child tiles of the root tile, representing inserted or modified elements and sorted by element Id. */\nclass ElementTiles extends SortedArray<ElementTile> {\n public constructor() {\n super((lhs, rhs) => compareStrings(lhs.contentId, rhs.contentId));\n }\n\n public get array(): ElementTile[] {\n return this._array;\n }\n}\n\n/** The root tile. Each of its children represent a newly-inserted or modified element. */\nclass RootTile extends DynamicIModelTile implements FeatureAppearanceProvider {\n private readonly _hiddenElements: Id64.Uint32Set;\n public readonly transformToTree: Transform;\n private readonly _elements: ElementTiles;\n\n private get _imodelRoot() { return this.parent as RootIModelTile; }\n\n private get _elementChildren(): ElementTile[] {\n assert(undefined !== this.children);\n assert(this.children === this._elements.array);\n return this._elements.array;\n }\n\n public constructor(parent: RootIModelTile, elements: Iterable<ElementGeometryChange>) {\n const params: TileParams = {\n parent,\n isLeaf: false,\n contentId: \"dynamic\",\n range: Range3d.createNull(),\n maximumSize: parent.tileScreenSize,\n };\n\n super(params, parent.tree);\n\n this._hiddenElements = new Id64.Uint32Set();\n\n const inverseTransform = parent.tree.iModelTransform.inverse();\n assert(undefined !== inverseTransform);\n this.transformToTree = inverseTransform;\n\n this._elements = new ElementTiles();\n this.loadChildren(); // initially empty.\n assert(undefined !== this.children);\n\n this.setIsReady();\n this.handleGeometryChanges(elements);\n }\n\n public get hiddenElements(): Id64Array {\n return this._hiddenElements.toId64Array();\n }\n\n public get appearanceProvider(): FeatureAppearanceProvider {\n return this;\n }\n\n public getFeatureAppearance(source: FeatureAppearanceSource, elemLo: number, elemHi: number, subcatLo: number, subcatHi: number, geomClass: GeometryClass, modelLo: number, modelHi: number, type: BatchType, animationNodeId: number): FeatureAppearance | undefined {\n if (this._hiddenElements.has(elemLo, elemHi))\n return undefined;\n\n return source.getAppearance(elemLo, elemHi, subcatLo, subcatHi, geomClass, modelLo, modelHi, type, animationNodeId);\n }\n\n public handleGeometryChanges(changes: Iterable<ElementGeometryChange>): void {\n assert(undefined !== this.children);\n\n for (const change of changes) {\n if (change.type !== DbOpcode.Insert)\n this._hiddenElements.addId(change.id);\n\n let tile = this._elements.findEquivalent((t: ElementTile) => compareStrings(t.contentId, change.id));\n if (change.type === DbOpcode.Delete) {\n if (tile) {\n tile.dispose();\n this._elements.remove(tile);\n }\n } else {\n const range = change.range.isNull ? change.range.clone() : this.transformToTree.multiplyRange(change.range);\n if (tile)\n tile.update(range);\n else\n this._elements.insert(tile = new ElementTile(this, change.id, range));\n }\n }\n\n // Recompute range.\n this.range.setNull();\n for (const element of this._elements)\n this.range.extendRange(element.range);\n\n this._imodelRoot.updateDynamicRange(this);\n }\n\n protected _loadChildren(resolve: (children: Tile[] | undefined) => void, _reject: (errpr: Error) => void): void {\n // This is invoked from constructor. We will add a child per element later - for now just mark the children as having been loaded.\n resolve(this._elements.array);\n }\n\n public get channel(): TileRequestChannel {\n throw new Error(\"Root dynamic tile has no content\");\n }\n\n public async requestContent(): Promise<TileRequest.Response> {\n assert(false, \"Root dynamic tile has no content\");\n return undefined;\n }\n\n public async readContent(_data: TileRequest.ResponseData, _system: RenderSystem, _isCanceled: () => boolean): Promise<TileContent> {\n throw new Error(\"Root dynamic tile has no content\");\n }\n\n public selectTiles(selected: Tile[], args: TileDrawArgs): void {\n for (const child of this._elementChildren)\n child.selectTiles(selected, args);\n }\n\n public pruneChildren(olderThan: BeTimePoint): void {\n // Never discard ElementTiles - do discard not-recently-used graphics.\n for (const child of this._elementChildren)\n child.pruneChildren(olderThan);\n }\n}\n\n/** Represents a single element that has been inserted or had its geometric properties modified during the current [[GraphicalEditingScope]].\n * It has no graphics of its own; it has any number of child tiles, each of which have graphics of a different level of detail.\n * Its contentId is the element's Id.\n */\nclass ElementTile extends Tile {\n public constructor(parent: RootTile, elementId: Id64String, range: Range3d) {\n super({\n parent,\n isLeaf: false,\n contentId: elementId,\n range,\n maximumSize: parent.maximumSize,\n }, parent.tree);\n\n this.loadChildren();\n this.setIsReady();\n }\n\n protected _loadChildren(resolve: (children: Tile[] | undefined) => void, _reject: (error: Error) => void): void {\n // Invoked from constructor. We'll add child tiles later as needed.\n resolve([]);\n }\n\n public get channel(): TileRequestChannel {\n throw new Error(\"ElementTile has no content\");\n }\n\n public async requestContent(_isCanceled: () => boolean): Promise<TileRequest.Response> {\n assert(false, \"ElementTile has no content\");\n return undefined;\n }\n\n public async readContent(_data: TileRequest.ResponseData, _system: RenderSystem, _isCanceled: () => boolean): Promise<TileContent> {\n throw new Error(\"ElementTile has no content\");\n }\n\n public pruneChildren(olderThan: BeTimePoint): void {\n const children = this.children as GraphicsTile[];\n assert(undefined !== children);\n\n const partitionIndex = partitionArray(children, (child) => !child.usageMarker.isExpired(olderThan));\n\n // Remove expired children.\n if (partitionIndex < children.length) {\n const expired = children.splice(partitionIndex);\n for (const child of expired)\n child.dispose();\n }\n\n // Restore ordering.\n children.sort((x, y) => y.toleranceLog10 - x.toleranceLog10);\n }\n\n public selectTiles(selected: Tile[], args: TileDrawArgs): void {\n assert(undefined !== this.children);\n if (this.isRegionCulled(args))\n return;\n\n args.markUsed(this);\n\n // ###TODO: Test content range culled.\n\n // Compute the ideal chord tolerance.\n assert(this.maximumSize > 0);\n const pixelSize = args.getPixelSizeInMetersAtClosestPoint(this);\n assert(pixelSize > 0);\n\n // Round down to the nearest power of ten.\n const toleranceLog10 = Math.floor(Math.log10(pixelSize));\n\n // Find (or create) a child tile of desired tolerance. Also find a child tile that can be substituted for the desired tile if that tile's content is not yet loaded.\n // NB: Children are sorted in descending order by log10(tolerance)\n const children = this.children as GraphicsTile[];\n let closestMatch: GraphicsTile | undefined;\n let exactMatch: GraphicsTile | undefined;\n for (let i = 0; i < children.length; i++) {\n const child = children[i];\n const tol = child.toleranceLog10;\n if (tol > toleranceLog10) {\n assert(undefined === exactMatch);\n if (child.hasGraphics)\n closestMatch = child;\n } else if (tol === toleranceLog10) {\n exactMatch = child;\n } else if (tol < toleranceLog10) {\n if (!exactMatch)\n children.splice(i++, 0, exactMatch = new GraphicsTile(this, toleranceLog10));\n\n if (child.hasGraphics && (!closestMatch || closestMatch.toleranceLog10 > toleranceLog10))\n closestMatch = child;\n }\n }\n\n if (!exactMatch) {\n assert(children.length === 0 || children[children.length - 1].toleranceLog10 > toleranceLog10);\n children.push(exactMatch = new GraphicsTile(this, toleranceLog10));\n }\n\n if (!exactMatch.isReady) {\n args.insertMissing(exactMatch);\n if (closestMatch) {\n selected.push(closestMatch);\n args.markUsed(closestMatch);\n }\n } else if (exactMatch.hasGraphics) {\n selected.push(exactMatch);\n args.markUsed(exactMatch);\n }\n }\n\n public update(range: Range3d): void {\n range.clone(this.range);\n const center = this.range.low.interpolate(0.5, this.range.high);\n const radius = 0.5 * this.range.low.distance(this.range.high);\n this.boundingSphere.init(center, radius);\n\n // Discard out-dated graphics.\n assert(undefined !== this.children);\n for (const child of this.children)\n child.dispose();\n\n this.children.length = 0;\n }\n}\n\nfunction* makeIdSequence() {\n let current = 0;\n while (true) {\n if (current >= Number.MAX_SAFE_INTEGER)\n current = 0;\n\n yield ++current;\n }\n}\n\nconst requestIdSequence = makeIdSequence();\n\n/** Supplies graphics of a specific LOD for a single element. */\nclass GraphicsTile extends Tile {\n public readonly toleranceLog10: number;\n public readonly tolerance: number;\n\n public constructor(parent: ElementTile, toleranceLog10: number) {\n assert(Math.round(toleranceLog10) === toleranceLog10);\n super({\n parent,\n isLeaf: true,\n contentId: `${parent.contentId}_${toleranceLog10}`,\n range: parent.range,\n maximumSize: parent.maximumSize,\n }, parent.tree);\n\n this.toleranceLog10 = toleranceLog10;\n this.tolerance = 10 ** toleranceLog10;\n }\n\n public override computeLoadPriority(): number {\n // We want the element's graphics to be updated as soon as possible\n return 0;\n }\n\n protected _loadChildren(resolve: (children: Tile[] | undefined) => void, _reject: (error: Error) => void): void {\n resolve(undefined);\n }\n\n public get channel(): TileRequestChannel {\n return IModelApp.tileAdmin.channels.elementGraphicsRpc;\n }\n\n public async requestContent(_isCanceled: () => boolean): Promise<TileRequest.Response> {\n // ###TODO tree flags (enforce display priority)\n // ###TODO classifiers, animation\n\n assert(undefined !== this.parent);\n\n const requestId = requestIdSequence.next();\n assert(!requestId.done);\n\n assert(this.tree instanceof IModelTileTree);\n const idProvider = this.tree.contentIdProvider;\n\n const props: ElementGraphicsRequestProps = {\n id: requestId.value.toString(16),\n elementId: this.parent.contentId,\n toleranceLog10: this.toleranceLog10,\n formatVersion: idProvider.majorFormatVersion,\n location: this.tree.iModelTransform.toJSON(),\n contentFlags: idProvider.contentFlags,\n omitEdges: !this.tree.edgeOptions,\n edgeType: this.tree.edgeOptions && \"non-indexed\" !== this.tree.edgeOptions.type ? 2 : 1,\n smoothPolyfaceEdges: this.tree.edgeOptions && this.tree.edgeOptions.smooth,\n clipToProjectExtents: this.tree.is3d,\n sectionCut: this.tree.stringifiedSectionClip,\n };\n\n return IModelApp.tileAdmin.requestElementGraphics(this.tree.iModel, props);\n }\n\n public async readContent(data: TileRequest.ResponseData, system: RenderSystem, isCanceled: () => boolean): Promise<TileContent> {\n if (undefined === isCanceled)\n isCanceled = () => !this.isLoading;\n\n assert(data instanceof Uint8Array);\n const stream = ByteStream.fromUint8Array(data);\n\n const position = stream.curPos;\n const format = stream.readUint32();\n stream.curPos = position;\n\n // ###TODO: IModelGraphics format wraps IModel format.\n assert(TileFormat.IModel === format);\n\n const tree = this.tree;\n assert(tree instanceof IModelTileTree);\n const { iModel, modelId, is3d, containsTransformNodes } = tree;\n const reader = ImdlReader.create({\n stream, iModel, modelId, is3d, system, isCanceled, containsTransformNodes,\n type: tree.batchType,\n loadEdges: false !== tree.edgeOptions,\n options: { tileId: this.contentId },\n timeline: tree.timeline,\n });\n\n let content: TileContent = { isLeaf: true };\n if (reader) {\n try {\n content = await reader.read();\n } catch {\n //\n }\n }\n\n return content;\n }\n}\n"]}
1
+ {"version":3,"file":"DynamicIModelTile.js","sourceRoot":"","sources":["../../../src/tile/DynamicIModelTile.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Tiles\n */\n\nimport {\n assert, BeTimePoint, ByteStream, compareStrings, DbOpcode, Id64, Id64Array, Id64String, partitionArray, SortedArray,\n} from \"@itwin/core-bentley\";\nimport { Range3d, Transform } from \"@itwin/core-geometry\";\nimport {\n BatchType, ElementGeometryChange, ElementGraphicsRequestProps, FeatureAppearance, FeatureAppearanceProvider, FeatureAppearanceSource, GeometryClass, TileFormat,\n} from \"@itwin/core-common\";\nimport { RenderSystem } from \"../render/RenderSystem\";\nimport { IModelApp } from \"../IModelApp\";\nimport {\n ImdlReader, IModelTileTree, RootIModelTile, Tile, TileContent, TileDrawArgs, TileParams, TileRequest, TileRequestChannel, TileTree,\n} from \"./internal\";\n\n/** The root tile for the branch of an [[IModelTileTree]] containing graphics for elements that have been modified during the current\n * Not intended for direct consumption - exported for use by [[IModelTileTree]].\n * [[GraphicalEditingScope]].\n * @internal\n */\nexport abstract class DynamicIModelTile extends Tile {\n protected constructor(params: TileParams, tree: TileTree) {\n super(params, tree);\n }\n\n public static create(root: RootIModelTile, elements: Iterable<ElementGeometryChange>): DynamicIModelTile {\n return new RootTile(root, elements);\n }\n\n /** Updates the tiles when elements are modified during the editing scope. */\n public abstract handleGeometryChanges(changes: Iterable<ElementGeometryChange>): void;\n\n /** Overrides symbology of the *static* [[IModelTile]]s to hide elements that have been deleted or modified. */\n public abstract get appearanceProvider(): FeatureAppearanceProvider;\n\n /** Exposed strictly for tests. */\n public abstract get hiddenElements(): Id64Array;\n\n /** Select tiles for display, requesting content for tiles as necessary. */\n public abstract selectTiles(selected: Tile[], args: TileDrawArgs): void;\n\n /** Discard tiles that have not been used since the specified time point. */\n public abstract pruneChildren(olderThan: BeTimePoint): void;\n}\n\n/** The child tiles of the root tile, representing inserted or modified elements and sorted by element Id. */\nclass ElementTiles extends SortedArray<ElementTile> {\n public constructor() {\n super((lhs, rhs) => compareStrings(lhs.contentId, rhs.contentId));\n }\n\n public get array(): ElementTile[] {\n return this._array;\n }\n}\n\n/** The root tile. Each of its children represent a newly-inserted or modified element. */\nclass RootTile extends DynamicIModelTile implements FeatureAppearanceProvider {\n private readonly _hiddenElements: Id64.Uint32Set;\n public readonly transformToTree: Transform;\n private readonly _elements: ElementTiles;\n\n private get _imodelRoot() { return this.parent as RootIModelTile; }\n\n private get _elementChildren(): ElementTile[] {\n assert(undefined !== this.children);\n assert(this.children === this._elements.array);\n return this._elements.array;\n }\n\n public constructor(parent: RootIModelTile, elements: Iterable<ElementGeometryChange>) {\n const params: TileParams = {\n parent,\n isLeaf: false,\n contentId: \"dynamic\",\n range: Range3d.createNull(),\n maximumSize: parent.tileScreenSize,\n };\n\n super(params, parent.tree);\n\n this._hiddenElements = new Id64.Uint32Set();\n\n const inverseTransform = parent.tree.iModelTransform.inverse();\n assert(undefined !== inverseTransform);\n this.transformToTree = inverseTransform;\n\n this._elements = new ElementTiles();\n this.loadChildren(); // initially empty.\n assert(undefined !== this.children);\n\n this.setIsReady();\n this.handleGeometryChanges(elements);\n }\n\n public get hiddenElements(): Id64Array {\n return this._hiddenElements.toId64Array();\n }\n\n public get appearanceProvider(): FeatureAppearanceProvider {\n return this;\n }\n\n public getFeatureAppearance(source: FeatureAppearanceSource, elemLo: number, elemHi: number, subcatLo: number, subcatHi: number, geomClass: GeometryClass, modelLo: number, modelHi: number, type: BatchType, animationNodeId: number): FeatureAppearance | undefined {\n if (this._hiddenElements.has(elemLo, elemHi))\n return undefined;\n\n return source.getAppearance(elemLo, elemHi, subcatLo, subcatHi, geomClass, modelLo, modelHi, type, animationNodeId);\n }\n\n public handleGeometryChanges(changes: Iterable<ElementGeometryChange>): void {\n assert(undefined !== this.children);\n\n for (const change of changes) {\n if (change.type !== DbOpcode.Insert)\n this._hiddenElements.addId(change.id);\n\n let tile = this._elements.findEquivalent((t: ElementTile) => compareStrings(t.contentId, change.id));\n if (change.type === DbOpcode.Delete) {\n if (tile) {\n tile[Symbol.dispose]();\n this._elements.remove(tile);\n }\n } else {\n const range = change.range.isNull ? change.range.clone() : this.transformToTree.multiplyRange(change.range);\n if (tile)\n tile.update(range);\n else\n this._elements.insert(tile = new ElementTile(this, change.id, range));\n }\n }\n\n // Recompute range.\n this.range.setNull();\n for (const element of this._elements)\n this.range.extendRange(element.range);\n\n this._imodelRoot.updateDynamicRange(this);\n }\n\n protected _loadChildren(resolve: (children: Tile[] | undefined) => void, _reject: (errpr: Error) => void): void {\n // This is invoked from constructor. We will add a child per element later - for now just mark the children as having been loaded.\n resolve(this._elements.array);\n }\n\n public get channel(): TileRequestChannel {\n throw new Error(\"Root dynamic tile has no content\");\n }\n\n public async requestContent(): Promise<TileRequest.Response> {\n assert(false, \"Root dynamic tile has no content\");\n return undefined;\n }\n\n public async readContent(_data: TileRequest.ResponseData, _system: RenderSystem, _isCanceled: () => boolean): Promise<TileContent> {\n throw new Error(\"Root dynamic tile has no content\");\n }\n\n public selectTiles(selected: Tile[], args: TileDrawArgs): void {\n for (const child of this._elementChildren)\n child.selectTiles(selected, args);\n }\n\n public pruneChildren(olderThan: BeTimePoint): void {\n // Never discard ElementTiles - do discard not-recently-used graphics.\n for (const child of this._elementChildren)\n child.pruneChildren(olderThan);\n }\n}\n\n/** Represents a single element that has been inserted or had its geometric properties modified during the current [[GraphicalEditingScope]].\n * It has no graphics of its own; it has any number of child tiles, each of which have graphics of a different level of detail.\n * Its contentId is the element's Id.\n */\nclass ElementTile extends Tile {\n public constructor(parent: RootTile, elementId: Id64String, range: Range3d) {\n super({\n parent,\n isLeaf: false,\n contentId: elementId,\n range,\n maximumSize: parent.maximumSize,\n }, parent.tree);\n\n this.loadChildren();\n this.setIsReady();\n }\n\n protected _loadChildren(resolve: (children: Tile[] | undefined) => void, _reject: (error: Error) => void): void {\n // Invoked from constructor. We'll add child tiles later as needed.\n resolve([]);\n }\n\n public get channel(): TileRequestChannel {\n throw new Error(\"ElementTile has no content\");\n }\n\n public async requestContent(_isCanceled: () => boolean): Promise<TileRequest.Response> {\n assert(false, \"ElementTile has no content\");\n return undefined;\n }\n\n public async readContent(_data: TileRequest.ResponseData, _system: RenderSystem, _isCanceled: () => boolean): Promise<TileContent> {\n throw new Error(\"ElementTile has no content\");\n }\n\n public pruneChildren(olderThan: BeTimePoint): void {\n const children = this.children as GraphicsTile[];\n assert(undefined !== children);\n\n const partitionIndex = partitionArray(children, (child) => !child.usageMarker.isExpired(olderThan));\n\n // Remove expired children.\n if (partitionIndex < children.length) {\n const expired = children.splice(partitionIndex);\n for (const child of expired)\n child[Symbol.dispose]();\n }\n\n // Restore ordering.\n children.sort((x, y) => y.toleranceLog10 - x.toleranceLog10);\n }\n\n public selectTiles(selected: Tile[], args: TileDrawArgs): void {\n assert(undefined !== this.children);\n if (this.isRegionCulled(args))\n return;\n\n args.markUsed(this);\n\n // ###TODO: Test content range culled.\n\n // Compute the ideal chord tolerance.\n assert(this.maximumSize > 0);\n const pixelSize = args.getPixelSizeInMetersAtClosestPoint(this);\n assert(pixelSize > 0);\n\n // Round down to the nearest power of ten.\n const toleranceLog10 = Math.floor(Math.log10(pixelSize));\n\n // Find (or create) a child tile of desired tolerance. Also find a child tile that can be substituted for the desired tile if that tile's content is not yet loaded.\n // NB: Children are sorted in descending order by log10(tolerance)\n const children = this.children as GraphicsTile[];\n let closestMatch: GraphicsTile | undefined;\n let exactMatch: GraphicsTile | undefined;\n for (let i = 0; i < children.length; i++) {\n const child = children[i];\n const tol = child.toleranceLog10;\n if (tol > toleranceLog10) {\n assert(undefined === exactMatch);\n if (child.hasGraphics)\n closestMatch = child;\n } else if (tol === toleranceLog10) {\n exactMatch = child;\n } else if (tol < toleranceLog10) {\n if (!exactMatch)\n children.splice(i++, 0, exactMatch = new GraphicsTile(this, toleranceLog10));\n\n if (child.hasGraphics && (!closestMatch || closestMatch.toleranceLog10 > toleranceLog10))\n closestMatch = child;\n }\n }\n\n if (!exactMatch) {\n assert(children.length === 0 || children[children.length - 1].toleranceLog10 > toleranceLog10);\n children.push(exactMatch = new GraphicsTile(this, toleranceLog10));\n }\n\n if (!exactMatch.isReady) {\n args.insertMissing(exactMatch);\n if (closestMatch) {\n selected.push(closestMatch);\n args.markUsed(closestMatch);\n }\n } else if (exactMatch.hasGraphics) {\n selected.push(exactMatch);\n args.markUsed(exactMatch);\n }\n }\n\n public update(range: Range3d): void {\n range.clone(this.range);\n const center = this.range.low.interpolate(0.5, this.range.high);\n const radius = 0.5 * this.range.low.distance(this.range.high);\n this.boundingSphere.init(center, radius);\n\n // Discard out-dated graphics.\n assert(undefined !== this.children);\n for (const child of this.children)\n child[Symbol.dispose]();\n\n this.children.length = 0;\n }\n}\n\nfunction* makeIdSequence() {\n let current = 0;\n while (true) {\n if (current >= Number.MAX_SAFE_INTEGER)\n current = 0;\n\n yield ++current;\n }\n}\n\nconst requestIdSequence = makeIdSequence();\n\n/** Supplies graphics of a specific LOD for a single element. */\nclass GraphicsTile extends Tile {\n public readonly toleranceLog10: number;\n public readonly tolerance: number;\n\n public constructor(parent: ElementTile, toleranceLog10: number) {\n assert(Math.round(toleranceLog10) === toleranceLog10);\n super({\n parent,\n isLeaf: true,\n contentId: `${parent.contentId}_${toleranceLog10}`,\n range: parent.range,\n maximumSize: parent.maximumSize,\n }, parent.tree);\n\n this.toleranceLog10 = toleranceLog10;\n this.tolerance = 10 ** toleranceLog10;\n }\n\n public override computeLoadPriority(): number {\n // We want the element's graphics to be updated as soon as possible\n return 0;\n }\n\n protected _loadChildren(resolve: (children: Tile[] | undefined) => void, _reject: (error: Error) => void): void {\n resolve(undefined);\n }\n\n public get channel(): TileRequestChannel {\n return IModelApp.tileAdmin.channels.elementGraphicsRpc;\n }\n\n public async requestContent(_isCanceled: () => boolean): Promise<TileRequest.Response> {\n // ###TODO tree flags (enforce display priority)\n // ###TODO classifiers, animation\n\n assert(undefined !== this.parent);\n\n const requestId = requestIdSequence.next();\n assert(!requestId.done);\n\n assert(this.tree instanceof IModelTileTree);\n const idProvider = this.tree.contentIdProvider;\n\n const props: ElementGraphicsRequestProps = {\n id: requestId.value.toString(16),\n elementId: this.parent.contentId,\n toleranceLog10: this.toleranceLog10,\n formatVersion: idProvider.majorFormatVersion,\n location: this.tree.iModelTransform.toJSON(),\n contentFlags: idProvider.contentFlags,\n omitEdges: !this.tree.edgeOptions,\n edgeType: this.tree.edgeOptions && \"non-indexed\" !== this.tree.edgeOptions.type ? 2 : 1,\n smoothPolyfaceEdges: this.tree.edgeOptions && this.tree.edgeOptions.smooth,\n clipToProjectExtents: this.tree.is3d,\n sectionCut: this.tree.stringifiedSectionClip,\n };\n\n return IModelApp.tileAdmin.requestElementGraphics(this.tree.iModel, props);\n }\n\n public async readContent(data: TileRequest.ResponseData, system: RenderSystem, isCanceled: () => boolean): Promise<TileContent> {\n if (undefined === isCanceled)\n isCanceled = () => !this.isLoading;\n\n assert(data instanceof Uint8Array);\n const stream = ByteStream.fromUint8Array(data);\n\n const position = stream.curPos;\n const format = stream.readUint32();\n stream.curPos = position;\n\n // ###TODO: IModelGraphics format wraps IModel format.\n assert(TileFormat.IModel === format);\n\n const tree = this.tree;\n assert(tree instanceof IModelTileTree);\n const { iModel, modelId, is3d, containsTransformNodes } = tree;\n const reader = ImdlReader.create({\n stream, iModel, modelId, is3d, system, isCanceled, containsTransformNodes,\n type: tree.batchType,\n loadEdges: false !== tree.edgeOptions,\n options: { tileId: this.contentId },\n timeline: tree.timeline,\n });\n\n let content: TileContent = { isLeaf: true };\n if (reader) {\n try {\n content = await reader.read();\n } catch {\n //\n }\n }\n\n return content;\n }\n}\n"]}
@@ -60,7 +60,7 @@ export declare class IModelTileTree extends TileTree {
60
60
  */
61
61
  private _numStaticTilesSelected;
62
62
  constructor(params: IModelTileTreeParams, treeId: IModelTileTreeId);
63
- dispose(): void;
63
+ [Symbol.dispose](): void;
64
64
  get maxDepth(): number;
65
65
  get rootTile(): Tile;
66
66
  /** Exposed chiefly for tests. */
@@ -1 +1 @@
1
- {"version":3,"file":"IModelTileTree.d.ts","sourceRoot":"","sources":["../../../src/tile/IModelTileTree.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"IModelTileTree.d.ts","sourceRoot":"","sources":["../../../src/tile/IModelTileTree.ts"],"names":[],"mappings":"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"}