@itwin/core-frontend 5.0.0-dev.98 → 5.0.0

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 (681) hide show
  1. package/CHANGELOG.md +89 -1
  2. package/lib/cjs/AccuDraw.d.ts +2 -0
  3. package/lib/cjs/AccuDraw.d.ts.map +1 -1
  4. package/lib/cjs/AccuDraw.js +22 -41
  5. package/lib/cjs/AccuDraw.js.map +1 -1
  6. package/lib/cjs/AccuSnap.d.ts +1 -0
  7. package/lib/cjs/AccuSnap.d.ts.map +1 -1
  8. package/lib/cjs/AccuSnap.js +71 -3
  9. package/lib/cjs/AccuSnap.js.map +1 -1
  10. package/lib/cjs/BriefcaseConnection.d.ts +1 -1
  11. package/lib/cjs/BriefcaseConnection.d.ts.map +1 -1
  12. package/lib/cjs/BriefcaseConnection.js.map +1 -1
  13. package/lib/cjs/CatalogConnection.d.ts +71 -0
  14. package/lib/cjs/CatalogConnection.d.ts.map +1 -0
  15. package/lib/cjs/CatalogConnection.js +95 -0
  16. package/lib/cjs/CatalogConnection.js.map +1 -0
  17. package/lib/cjs/ElementLocateManager.d.ts.map +1 -1
  18. package/lib/cjs/ElementLocateManager.js +5 -2
  19. package/lib/cjs/ElementLocateManager.js.map +1 -1
  20. package/lib/cjs/GraphicalEditingScope.d.ts +1 -1
  21. package/lib/cjs/GraphicalEditingScope.d.ts.map +1 -1
  22. package/lib/cjs/GraphicalEditingScope.js +1 -1
  23. package/lib/cjs/GraphicalEditingScope.js.map +1 -1
  24. package/lib/cjs/HitDetail.d.ts +30 -3
  25. package/lib/cjs/HitDetail.d.ts.map +1 -1
  26. package/lib/cjs/HitDetail.js +14 -0
  27. package/lib/cjs/HitDetail.js.map +1 -1
  28. package/lib/cjs/IModelApp.d.ts +16 -1
  29. package/lib/cjs/IModelApp.d.ts.map +1 -1
  30. package/lib/cjs/IModelApp.js +20 -1
  31. package/lib/cjs/IModelApp.js.map +1 -1
  32. package/lib/cjs/IModelConnection.d.ts +18 -6
  33. package/lib/cjs/IModelConnection.d.ts.map +1 -1
  34. package/lib/cjs/IModelConnection.js +27 -6
  35. package/lib/cjs/IModelConnection.js.map +1 -1
  36. package/lib/cjs/IpcApp.d.ts +2 -2
  37. package/lib/cjs/IpcApp.d.ts.map +1 -1
  38. package/lib/cjs/IpcApp.js +1 -1
  39. package/lib/cjs/IpcApp.js.map +1 -1
  40. package/lib/cjs/ModelState.d.ts.map +1 -1
  41. package/lib/cjs/ModelState.js +7 -5
  42. package/lib/cjs/ModelState.js.map +1 -1
  43. package/lib/cjs/NativeApp.d.ts +2 -1
  44. package/lib/cjs/NativeApp.d.ts.map +1 -1
  45. package/lib/cjs/NativeApp.js +1 -0
  46. package/lib/cjs/NativeApp.js.map +1 -1
  47. package/lib/cjs/SelectionSet.d.ts +7 -7
  48. package/lib/cjs/SelectionSet.js +3 -3
  49. package/lib/cjs/SelectionSet.js.map +1 -1
  50. package/lib/cjs/ViewContext.d.ts +4 -1
  51. package/lib/cjs/ViewContext.d.ts.map +1 -1
  52. package/lib/cjs/ViewContext.js +10 -5
  53. package/lib/cjs/ViewContext.js.map +1 -1
  54. package/lib/cjs/ViewManager.js +2 -2
  55. package/lib/cjs/ViewManager.js.map +1 -1
  56. package/lib/cjs/ViewState.d.ts +1 -1
  57. package/lib/cjs/ViewState.js +1 -1
  58. package/lib/cjs/ViewState.js.map +1 -1
  59. package/lib/cjs/Viewport.d.ts +7 -5
  60. package/lib/cjs/Viewport.d.ts.map +1 -1
  61. package/lib/cjs/Viewport.js +10 -5
  62. package/lib/cjs/Viewport.js.map +1 -1
  63. package/lib/cjs/core-frontend.d.ts +2 -1
  64. package/lib/cjs/core-frontend.d.ts.map +1 -1
  65. package/lib/cjs/core-frontend.js +1 -0
  66. package/lib/cjs/core-frontend.js.map +1 -1
  67. package/lib/cjs/extension/ExtensionRuntime.js +15 -2
  68. package/lib/cjs/extension/ExtensionRuntime.js.map +1 -1
  69. package/lib/cjs/extension/providers/ExtensionLoadScript.d.ts.map +1 -1
  70. package/lib/cjs/extension/providers/ExtensionLoadScript.js +24 -6
  71. package/lib/cjs/extension/providers/ExtensionLoadScript.js.map +1 -1
  72. package/lib/cjs/internal/cross-package.d.ts +1 -1
  73. package/lib/cjs/internal/cross-package.d.ts.map +1 -1
  74. package/lib/cjs/internal/cross-package.js +3 -1
  75. package/lib/cjs/internal/cross-package.js.map +1 -1
  76. package/lib/cjs/internal/render/MockRender.d.ts +1 -1
  77. package/lib/cjs/internal/render/MockRender.d.ts.map +1 -1
  78. package/lib/cjs/internal/render/MockRender.js +1 -1
  79. package/lib/cjs/internal/render/MockRender.js.map +1 -1
  80. package/lib/cjs/internal/render/webgl/AtmosphereUniforms.d.ts +1 -1
  81. package/lib/cjs/internal/render/webgl/AtmosphereUniforms.d.ts.map +1 -1
  82. package/lib/cjs/internal/render/webgl/AtmosphereUniforms.js +1 -1
  83. package/lib/cjs/internal/render/webgl/AtmosphereUniforms.js.map +1 -1
  84. package/lib/cjs/internal/render/webgl/AttributeBuffers.d.ts +2 -2
  85. package/lib/cjs/internal/render/webgl/AttributeBuffers.d.ts.map +1 -1
  86. package/lib/cjs/internal/render/webgl/AttributeBuffers.js +2 -2
  87. package/lib/cjs/internal/render/webgl/AttributeBuffers.js.map +1 -1
  88. package/lib/cjs/internal/render/webgl/ClippingProgram.d.ts +1 -1
  89. package/lib/cjs/internal/render/webgl/ClippingProgram.d.ts.map +1 -1
  90. package/lib/cjs/internal/render/webgl/ClippingProgram.js +1 -1
  91. package/lib/cjs/internal/render/webgl/ClippingProgram.js.map +1 -1
  92. package/lib/cjs/internal/render/webgl/FrustumUniforms.d.ts +2 -0
  93. package/lib/cjs/internal/render/webgl/FrustumUniforms.d.ts.map +1 -1
  94. package/lib/cjs/internal/render/webgl/FrustumUniforms.js +7 -0
  95. package/lib/cjs/internal/render/webgl/FrustumUniforms.js.map +1 -1
  96. package/lib/cjs/internal/render/webgl/MapLayerParams.d.ts +0 -1
  97. package/lib/cjs/internal/render/webgl/MapLayerParams.d.ts.map +1 -1
  98. package/lib/cjs/internal/render/webgl/MapLayerParams.js +11 -20
  99. package/lib/cjs/internal/render/webgl/MapLayerParams.js.map +1 -1
  100. package/lib/cjs/internal/render/webgl/RenderCommands.d.ts.map +1 -1
  101. package/lib/cjs/internal/render/webgl/RenderCommands.js +2 -3
  102. package/lib/cjs/internal/render/webgl/RenderCommands.js.map +1 -1
  103. package/lib/cjs/internal/render/webgl/SceneCompositor.d.ts +9 -0
  104. package/lib/cjs/internal/render/webgl/SceneCompositor.d.ts.map +1 -1
  105. package/lib/cjs/internal/render/webgl/SceneCompositor.js +86 -11
  106. package/lib/cjs/internal/render/webgl/SceneCompositor.js.map +1 -1
  107. package/lib/cjs/internal/render/webgl/ShaderBuilder.d.ts +4 -3
  108. package/lib/cjs/internal/render/webgl/ShaderBuilder.d.ts.map +1 -1
  109. package/lib/cjs/internal/render/webgl/ShaderBuilder.js +3 -3
  110. package/lib/cjs/internal/render/webgl/ShaderBuilder.js.map +1 -1
  111. package/lib/cjs/internal/render/webgl/ShaderProgram.d.ts +2 -2
  112. package/lib/cjs/internal/render/webgl/ShaderProgram.d.ts.map +1 -1
  113. package/lib/cjs/internal/render/webgl/ShaderProgram.js +2 -2
  114. package/lib/cjs/internal/render/webgl/ShaderProgram.js.map +1 -1
  115. package/lib/cjs/internal/render/webgl/SolarShadowMap.js +2 -2
  116. package/lib/cjs/internal/render/webgl/SolarShadowMap.js.map +1 -1
  117. package/lib/cjs/internal/render/webgl/SurfaceGeometry.d.ts.map +1 -1
  118. package/lib/cjs/internal/render/webgl/SurfaceGeometry.js +20 -8
  119. package/lib/cjs/internal/render/webgl/SurfaceGeometry.js.map +1 -1
  120. package/lib/cjs/internal/render/webgl/Target.d.ts +1 -1
  121. package/lib/cjs/internal/render/webgl/Target.d.ts.map +1 -1
  122. package/lib/cjs/internal/render/webgl/Target.js +2 -2
  123. package/lib/cjs/internal/render/webgl/Target.js.map +1 -1
  124. package/lib/cjs/internal/render/webgl/TargetGraphics.d.ts +3 -3
  125. package/lib/cjs/internal/render/webgl/TargetGraphics.d.ts.map +1 -1
  126. package/lib/cjs/internal/render/webgl/TargetGraphics.js +10 -7
  127. package/lib/cjs/internal/render/webgl/TargetGraphics.js.map +1 -1
  128. package/lib/cjs/internal/render/webgl/Technique.d.ts +3 -3
  129. package/lib/cjs/internal/render/webgl/Technique.d.ts.map +1 -1
  130. package/lib/cjs/internal/render/webgl/Technique.js +3 -3
  131. package/lib/cjs/internal/render/webgl/Technique.js.map +1 -1
  132. package/lib/cjs/internal/render/webgl/glsl/Atmosphere.js +1 -1
  133. package/lib/cjs/internal/render/webgl/glsl/ClearPickAndColor.d.ts.map +1 -1
  134. package/lib/cjs/internal/render/webgl/glsl/ClearPickAndColor.js +2 -1
  135. package/lib/cjs/internal/render/webgl/glsl/ClearPickAndColor.js.map +1 -1
  136. package/lib/cjs/internal/render/webgl/glsl/Contours.d.ts.map +1 -1
  137. package/lib/cjs/internal/render/webgl/glsl/Contours.js +31 -1
  138. package/lib/cjs/internal/render/webgl/glsl/Contours.js.map +1 -1
  139. package/lib/cjs/internal/render/webgl/glsl/Fragment.d.ts.map +1 -1
  140. package/lib/cjs/internal/render/webgl/glsl/Fragment.js +7 -2
  141. package/lib/cjs/internal/render/webgl/glsl/Fragment.js.map +1 -1
  142. package/lib/cjs/internal/render/webgl/glsl/RealityMesh.js +1 -1
  143. package/lib/cjs/internal/render/webgl/glsl/Surface.js +1 -1
  144. package/lib/cjs/internal/tile/ClassifierTileTree.js +3 -1
  145. package/lib/cjs/internal/tile/ClassifierTileTree.js.map +1 -1
  146. package/lib/cjs/internal/tile/GraphicsCollector.d.ts +2 -0
  147. package/lib/cjs/internal/tile/GraphicsCollector.d.ts.map +1 -1
  148. package/lib/cjs/internal/tile/GraphicsCollector.js +2 -0
  149. package/lib/cjs/internal/tile/GraphicsCollector.js.map +1 -1
  150. package/lib/cjs/internal/tile/IModelTile.d.ts.map +1 -1
  151. package/lib/cjs/internal/tile/IModelTile.js +6 -0
  152. package/lib/cjs/internal/tile/IModelTile.js.map +1 -1
  153. package/lib/cjs/internal/tile/IModelTileTree.d.ts +4 -1
  154. package/lib/cjs/internal/tile/IModelTileTree.d.ts.map +1 -1
  155. package/lib/cjs/internal/tile/IModelTileTree.js +6 -0
  156. package/lib/cjs/internal/tile/IModelTileTree.js.map +1 -1
  157. package/lib/cjs/internal/tile/ImdlDecoder.d.ts +2 -0
  158. package/lib/cjs/internal/tile/ImdlDecoder.d.ts.map +1 -1
  159. package/lib/cjs/internal/tile/ImdlDecoder.js.map +1 -1
  160. package/lib/cjs/internal/tile/ImdlGraphicsCreator.d.ts +2 -2
  161. package/lib/cjs/internal/tile/ImdlGraphicsCreator.d.ts.map +1 -1
  162. package/lib/cjs/internal/tile/ImdlGraphicsCreator.js +2 -1
  163. package/lib/cjs/internal/tile/ImdlGraphicsCreator.js.map +1 -1
  164. package/lib/cjs/{tile → internal/tile}/LayerTileTreeHandler.d.ts +3 -3
  165. package/lib/cjs/internal/tile/LayerTileTreeHandler.d.ts.map +1 -0
  166. package/lib/cjs/{tile → internal/tile}/LayerTileTreeHandler.js +3 -2
  167. package/lib/cjs/internal/tile/LayerTileTreeHandler.js.map +1 -0
  168. package/lib/cjs/{tile → internal/tile}/LayerTileTreeReferenceHandler.d.ts +7 -5
  169. package/lib/cjs/internal/tile/LayerTileTreeReferenceHandler.d.ts.map +1 -0
  170. package/lib/cjs/{tile → internal/tile}/LayerTileTreeReferenceHandler.js +27 -4
  171. package/lib/cjs/internal/tile/LayerTileTreeReferenceHandler.js.map +1 -0
  172. package/lib/cjs/internal/tile/PrimaryTileTree.d.ts +9 -4
  173. package/lib/cjs/internal/tile/PrimaryTileTree.d.ts.map +1 -1
  174. package/lib/cjs/internal/tile/PrimaryTileTree.js +34 -11
  175. package/lib/cjs/internal/tile/PrimaryTileTree.js.map +1 -1
  176. package/lib/cjs/internal/tile/RealityModelTileTree.d.ts +15 -3
  177. package/lib/cjs/internal/tile/RealityModelTileTree.d.ts.map +1 -1
  178. package/lib/cjs/internal/tile/RealityModelTileTree.js +27 -32
  179. package/lib/cjs/internal/tile/RealityModelTileTree.js.map +1 -1
  180. package/lib/cjs/internal/tile/RealityTileLoader.d.ts.map +1 -1
  181. package/lib/cjs/internal/tile/RealityTileLoader.js +2 -1
  182. package/lib/cjs/internal/tile/RealityTileLoader.js.map +1 -1
  183. package/lib/cjs/internal/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.d.ts +1 -1
  184. package/lib/cjs/internal/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.d.ts.map +1 -1
  185. package/lib/cjs/internal/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js +1 -1
  186. package/lib/cjs/internal/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js.map +1 -1
  187. package/lib/cjs/internal/tile/map/ImageryProviders/AzureMapsLayerImageryProvider.d.ts +1 -1
  188. package/lib/cjs/internal/tile/map/ImageryProviders/AzureMapsLayerImageryProvider.d.ts.map +1 -1
  189. package/lib/cjs/internal/tile/map/ImageryProviders/AzureMapsLayerImageryProvider.js +1 -1
  190. package/lib/cjs/internal/tile/map/ImageryProviders/AzureMapsLayerImageryProvider.js.map +1 -1
  191. package/lib/cjs/internal/tile/map/ImageryProviders/BingImageryProvider.d.ts +1 -1
  192. package/lib/cjs/internal/tile/map/ImageryProviders/BingImageryProvider.d.ts.map +1 -1
  193. package/lib/cjs/internal/tile/map/ImageryProviders/BingImageryProvider.js +1 -1
  194. package/lib/cjs/internal/tile/map/ImageryProviders/BingImageryProvider.js.map +1 -1
  195. package/lib/cjs/internal/tile/map/ImageryProviders/MapBoxLayerImageryProvider.d.ts +1 -1
  196. package/lib/cjs/internal/tile/map/ImageryProviders/MapBoxLayerImageryProvider.d.ts.map +1 -1
  197. package/lib/cjs/internal/tile/map/ImageryProviders/MapBoxLayerImageryProvider.js +1 -1
  198. package/lib/cjs/internal/tile/map/ImageryProviders/MapBoxLayerImageryProvider.js.map +1 -1
  199. package/lib/cjs/properties/AngleDescription.d.ts +4 -1
  200. package/lib/cjs/properties/AngleDescription.d.ts.map +1 -1
  201. package/lib/cjs/properties/AngleDescription.js +10 -2
  202. package/lib/cjs/properties/AngleDescription.js.map +1 -1
  203. package/lib/cjs/properties/FormattedQuantityDescription.d.ts +11 -1
  204. package/lib/cjs/properties/FormattedQuantityDescription.d.ts.map +1 -1
  205. package/lib/cjs/properties/FormattedQuantityDescription.js +7 -2
  206. package/lib/cjs/properties/FormattedQuantityDescription.js.map +1 -1
  207. package/lib/cjs/properties/LengthDescription.d.ts +12 -3
  208. package/lib/cjs/properties/LengthDescription.d.ts.map +1 -1
  209. package/lib/cjs/properties/LengthDescription.js +30 -6
  210. package/lib/cjs/properties/LengthDescription.js.map +1 -1
  211. package/lib/cjs/quantity-formatting/QuantityFormatter.d.ts +103 -7
  212. package/lib/cjs/quantity-formatting/QuantityFormatter.d.ts.map +1 -1
  213. package/lib/cjs/quantity-formatting/QuantityFormatter.js +212 -23
  214. package/lib/cjs/quantity-formatting/QuantityFormatter.js.map +1 -1
  215. package/lib/cjs/render/Decorations.d.ts +1 -1
  216. package/lib/cjs/render/Decorations.d.ts.map +1 -1
  217. package/lib/cjs/render/Decorations.js +1 -1
  218. package/lib/cjs/render/Decorations.js.map +1 -1
  219. package/lib/cjs/render/GraphicBranch.d.ts +1 -1
  220. package/lib/cjs/render/GraphicBranch.d.ts.map +1 -1
  221. package/lib/cjs/render/GraphicBranch.js +1 -1
  222. package/lib/cjs/render/GraphicBranch.js.map +1 -1
  223. package/lib/cjs/render/Pixel.d.ts +13 -2
  224. package/lib/cjs/render/Pixel.d.ts.map +1 -1
  225. package/lib/cjs/render/Pixel.js +20 -8
  226. package/lib/cjs/render/Pixel.js.map +1 -1
  227. package/lib/cjs/render/RenderGraphic.d.ts +1 -1
  228. package/lib/cjs/render/RenderGraphic.d.ts.map +1 -1
  229. package/lib/cjs/render/RenderGraphic.js.map +1 -1
  230. package/lib/cjs/render/RenderSystem.d.ts +2 -2
  231. package/lib/cjs/render/RenderSystem.d.ts.map +1 -1
  232. package/lib/cjs/render/RenderSystem.js.map +1 -1
  233. package/lib/cjs/render/RenderTarget.d.ts +1 -1
  234. package/lib/cjs/render/RenderTarget.d.ts.map +1 -1
  235. package/lib/cjs/render/RenderTarget.js.map +1 -1
  236. package/lib/cjs/render/ScreenSpaceEffectBuilder.d.ts +1 -1
  237. package/lib/cjs/render/ScreenSpaceEffectBuilder.js.map +1 -1
  238. package/lib/cjs/request/Request.d.ts +2 -2
  239. package/lib/cjs/request/Request.js.map +1 -1
  240. package/lib/cjs/tile/ImdlReader.d.ts +3 -2
  241. package/lib/cjs/tile/ImdlReader.d.ts.map +1 -1
  242. package/lib/cjs/tile/ImdlReader.js +1 -0
  243. package/lib/cjs/tile/ImdlReader.js.map +1 -1
  244. package/lib/cjs/tile/RealityTileTree.d.ts.map +1 -1
  245. package/lib/cjs/tile/RealityTileTree.js +1 -1
  246. package/lib/cjs/tile/RealityTileTree.js.map +1 -1
  247. package/lib/cjs/tile/Tile.d.ts +1 -1
  248. package/lib/cjs/tile/Tile.d.ts.map +1 -1
  249. package/lib/cjs/tile/Tile.js +1 -1
  250. package/lib/cjs/tile/Tile.js.map +1 -1
  251. package/lib/cjs/tile/TileAdmin.d.ts +10 -0
  252. package/lib/cjs/tile/TileAdmin.d.ts.map +1 -1
  253. package/lib/cjs/tile/TileAdmin.js +3 -0
  254. package/lib/cjs/tile/TileAdmin.js.map +1 -1
  255. package/lib/cjs/tile/TileDrawArgs.d.ts +1 -0
  256. package/lib/cjs/tile/TileDrawArgs.d.ts.map +1 -1
  257. package/lib/cjs/tile/TileDrawArgs.js +2 -0
  258. package/lib/cjs/tile/TileDrawArgs.js.map +1 -1
  259. package/lib/cjs/tile/TileTree.d.ts +1 -1
  260. package/lib/cjs/tile/TileTree.d.ts.map +1 -1
  261. package/lib/cjs/tile/TileTree.js +1 -1
  262. package/lib/cjs/tile/TileTree.js.map +1 -1
  263. package/lib/cjs/tile/TileTreeReference.d.ts +1 -1
  264. package/lib/cjs/tile/TileTreeReference.d.ts.map +1 -1
  265. package/lib/cjs/tile/TileTreeReference.js +1 -1
  266. package/lib/cjs/tile/TileTreeReference.js.map +1 -1
  267. package/lib/cjs/tile/internal.d.ts +3 -2
  268. package/lib/cjs/tile/internal.d.ts.map +1 -1
  269. package/lib/cjs/tile/internal.js +3 -2
  270. package/lib/cjs/tile/internal.js.map +1 -1
  271. package/lib/cjs/tile/map/CesiumTerrainProvider.d.ts +1 -1
  272. package/lib/cjs/tile/map/CesiumTerrainProvider.d.ts.map +1 -1
  273. package/lib/cjs/tile/map/CesiumTerrainProvider.js +3 -4
  274. package/lib/cjs/tile/map/CesiumTerrainProvider.js.map +1 -1
  275. package/lib/cjs/tile/map/ImageryTileTree.d.ts +2 -2
  276. package/lib/cjs/tile/map/ImageryTileTree.d.ts.map +1 -1
  277. package/lib/cjs/tile/map/ImageryTileTree.js +2 -2
  278. package/lib/cjs/tile/map/ImageryTileTree.js.map +1 -1
  279. package/lib/cjs/tile/map/MapCartoRectangle.d.ts +10 -0
  280. package/lib/cjs/tile/map/MapCartoRectangle.d.ts.map +1 -1
  281. package/lib/cjs/tile/map/MapCartoRectangle.js +12 -0
  282. package/lib/cjs/tile/map/MapCartoRectangle.js.map +1 -1
  283. package/lib/cjs/tile/map/MapLayerImageryProvider.d.ts +3 -3
  284. package/lib/cjs/tile/map/MapLayerImageryProvider.d.ts.map +1 -1
  285. package/lib/cjs/tile/map/MapLayerImageryProvider.js +9 -5
  286. package/lib/cjs/tile/map/MapLayerImageryProvider.js.map +1 -1
  287. package/lib/cjs/tile/map/MapTileTree.d.ts +1 -1
  288. package/lib/cjs/tile/map/MapTileTree.d.ts.map +1 -1
  289. package/lib/cjs/tile/map/MapTileTree.js +3 -5
  290. package/lib/cjs/tile/map/MapTileTree.js.map +1 -1
  291. package/lib/cjs/tile/map/QuadId.d.ts +15 -0
  292. package/lib/cjs/tile/map/QuadId.d.ts.map +1 -1
  293. package/lib/cjs/tile/map/QuadId.js +12 -0
  294. package/lib/cjs/tile/map/QuadId.js.map +1 -1
  295. package/lib/cjs/tile/map/TerrainMeshProvider.d.ts +1 -1
  296. package/lib/cjs/tile/map/TerrainMeshProvider.d.ts.map +1 -1
  297. package/lib/cjs/tile/map/TerrainMeshProvider.js +1 -1
  298. package/lib/cjs/tile/map/TerrainMeshProvider.js.map +1 -1
  299. package/lib/cjs/tools/AccuDrawTool.d.ts +0 -12
  300. package/lib/cjs/tools/AccuDrawTool.d.ts.map +1 -1
  301. package/lib/cjs/tools/AccuDrawTool.js +2 -60
  302. package/lib/cjs/tools/AccuDrawTool.js.map +1 -1
  303. package/lib/cjs/tools/AccuDrawViewportUI.d.ts +7 -1
  304. package/lib/cjs/tools/AccuDrawViewportUI.d.ts.map +1 -1
  305. package/lib/cjs/tools/AccuDrawViewportUI.js +29 -19
  306. package/lib/cjs/tools/AccuDrawViewportUI.js.map +1 -1
  307. package/lib/cjs/tools/ElementSetTool.d.ts +9 -1
  308. package/lib/cjs/tools/ElementSetTool.d.ts.map +1 -1
  309. package/lib/cjs/tools/ElementSetTool.js +128 -7
  310. package/lib/cjs/tools/ElementSetTool.js.map +1 -1
  311. package/lib/cjs/tools/MeasureTool.d.ts +9 -0
  312. package/lib/cjs/tools/MeasureTool.d.ts.map +1 -1
  313. package/lib/cjs/tools/MeasureTool.js +53 -22
  314. package/lib/cjs/tools/MeasureTool.js.map +1 -1
  315. package/lib/cjs/tools/SelectTool.d.ts +2 -2
  316. package/lib/cjs/tools/SelectTool.d.ts.map +1 -1
  317. package/lib/cjs/tools/SelectTool.js +26 -97
  318. package/lib/cjs/tools/SelectTool.js.map +1 -1
  319. package/lib/cjs/tools/Tool.d.ts +10 -1
  320. package/lib/cjs/tools/Tool.d.ts.map +1 -1
  321. package/lib/cjs/tools/Tool.js +27 -4
  322. package/lib/cjs/tools/Tool.js.map +1 -1
  323. package/lib/cjs/tools/ToolAdmin.d.ts +1 -0
  324. package/lib/cjs/tools/ToolAdmin.d.ts.map +1 -1
  325. package/lib/cjs/tools/ToolAdmin.js +8 -2
  326. package/lib/cjs/tools/ToolAdmin.js.map +1 -1
  327. package/lib/cjs/tools/ToolSettings.d.ts +5 -0
  328. package/lib/cjs/tools/ToolSettings.d.ts.map +1 -1
  329. package/lib/cjs/tools/ToolSettings.js +5 -0
  330. package/lib/cjs/tools/ToolSettings.js.map +1 -1
  331. package/lib/cjs/tools/ViewTool.d.ts +26 -18
  332. package/lib/cjs/tools/ViewTool.d.ts.map +1 -1
  333. package/lib/cjs/tools/ViewTool.js +39 -87
  334. package/lib/cjs/tools/ViewTool.js.map +1 -1
  335. package/lib/esm/AccuDraw.d.ts +2 -0
  336. package/lib/esm/AccuDraw.d.ts.map +1 -1
  337. package/lib/esm/AccuDraw.js +23 -42
  338. package/lib/esm/AccuDraw.js.map +1 -1
  339. package/lib/esm/AccuSnap.d.ts +1 -0
  340. package/lib/esm/AccuSnap.d.ts.map +1 -1
  341. package/lib/esm/AccuSnap.js +71 -3
  342. package/lib/esm/AccuSnap.js.map +1 -1
  343. package/lib/esm/BriefcaseConnection.d.ts +1 -1
  344. package/lib/esm/BriefcaseConnection.d.ts.map +1 -1
  345. package/lib/esm/BriefcaseConnection.js.map +1 -1
  346. package/lib/esm/CatalogConnection.d.ts +71 -0
  347. package/lib/esm/CatalogConnection.d.ts.map +1 -0
  348. package/lib/esm/CatalogConnection.js +92 -0
  349. package/lib/esm/CatalogConnection.js.map +1 -0
  350. package/lib/esm/ElementLocateManager.d.ts.map +1 -1
  351. package/lib/esm/ElementLocateManager.js +5 -2
  352. package/lib/esm/ElementLocateManager.js.map +1 -1
  353. package/lib/esm/GraphicalEditingScope.d.ts +1 -1
  354. package/lib/esm/GraphicalEditingScope.d.ts.map +1 -1
  355. package/lib/esm/GraphicalEditingScope.js +1 -1
  356. package/lib/esm/GraphicalEditingScope.js.map +1 -1
  357. package/lib/esm/HitDetail.d.ts +30 -3
  358. package/lib/esm/HitDetail.d.ts.map +1 -1
  359. package/lib/esm/HitDetail.js +14 -0
  360. package/lib/esm/HitDetail.js.map +1 -1
  361. package/lib/esm/IModelApp.d.ts +16 -1
  362. package/lib/esm/IModelApp.d.ts.map +1 -1
  363. package/lib/esm/IModelApp.js +21 -2
  364. package/lib/esm/IModelApp.js.map +1 -1
  365. package/lib/esm/IModelConnection.d.ts +18 -6
  366. package/lib/esm/IModelConnection.d.ts.map +1 -1
  367. package/lib/esm/IModelConnection.js +27 -6
  368. package/lib/esm/IModelConnection.js.map +1 -1
  369. package/lib/esm/IpcApp.d.ts +2 -2
  370. package/lib/esm/IpcApp.d.ts.map +1 -1
  371. package/lib/esm/IpcApp.js +1 -1
  372. package/lib/esm/IpcApp.js.map +1 -1
  373. package/lib/esm/ModelState.d.ts.map +1 -1
  374. package/lib/esm/ModelState.js +7 -5
  375. package/lib/esm/ModelState.js.map +1 -1
  376. package/lib/esm/NativeApp.d.ts +2 -1
  377. package/lib/esm/NativeApp.d.ts.map +1 -1
  378. package/lib/esm/NativeApp.js +1 -0
  379. package/lib/esm/NativeApp.js.map +1 -1
  380. package/lib/esm/SelectionSet.d.ts +7 -7
  381. package/lib/esm/SelectionSet.js +3 -3
  382. package/lib/esm/SelectionSet.js.map +1 -1
  383. package/lib/esm/ViewContext.d.ts +4 -1
  384. package/lib/esm/ViewContext.d.ts.map +1 -1
  385. package/lib/esm/ViewContext.js +10 -5
  386. package/lib/esm/ViewContext.js.map +1 -1
  387. package/lib/esm/ViewManager.js +2 -2
  388. package/lib/esm/ViewManager.js.map +1 -1
  389. package/lib/esm/ViewState.d.ts +1 -1
  390. package/lib/esm/ViewState.js +1 -1
  391. package/lib/esm/ViewState.js.map +1 -1
  392. package/lib/esm/Viewport.d.ts +7 -5
  393. package/lib/esm/Viewport.d.ts.map +1 -1
  394. package/lib/esm/Viewport.js +10 -5
  395. package/lib/esm/Viewport.js.map +1 -1
  396. package/lib/esm/core-frontend.d.ts +2 -1
  397. package/lib/esm/core-frontend.d.ts.map +1 -1
  398. package/lib/esm/core-frontend.js +1 -0
  399. package/lib/esm/core-frontend.js.map +1 -1
  400. package/lib/esm/extension/ExtensionRuntime.js +15 -2
  401. package/lib/esm/extension/ExtensionRuntime.js.map +1 -1
  402. package/lib/esm/extension/providers/ExtensionLoadScript.d.ts.map +1 -1
  403. package/lib/esm/extension/providers/ExtensionLoadScript.js +1 -6
  404. package/lib/esm/extension/providers/ExtensionLoadScript.js.map +1 -1
  405. package/lib/esm/internal/cross-package.d.ts +1 -1
  406. package/lib/esm/internal/cross-package.d.ts.map +1 -1
  407. package/lib/esm/internal/cross-package.js +1 -1
  408. package/lib/esm/internal/cross-package.js.map +1 -1
  409. package/lib/esm/internal/render/MockRender.d.ts +1 -1
  410. package/lib/esm/internal/render/MockRender.d.ts.map +1 -1
  411. package/lib/esm/internal/render/MockRender.js +1 -1
  412. package/lib/esm/internal/render/MockRender.js.map +1 -1
  413. package/lib/esm/internal/render/webgl/AtmosphereUniforms.d.ts +1 -1
  414. package/lib/esm/internal/render/webgl/AtmosphereUniforms.d.ts.map +1 -1
  415. package/lib/esm/internal/render/webgl/AtmosphereUniforms.js +1 -1
  416. package/lib/esm/internal/render/webgl/AtmosphereUniforms.js.map +1 -1
  417. package/lib/esm/internal/render/webgl/AttributeBuffers.d.ts +2 -2
  418. package/lib/esm/internal/render/webgl/AttributeBuffers.d.ts.map +1 -1
  419. package/lib/esm/internal/render/webgl/AttributeBuffers.js +2 -2
  420. package/lib/esm/internal/render/webgl/AttributeBuffers.js.map +1 -1
  421. package/lib/esm/internal/render/webgl/ClippingProgram.d.ts +1 -1
  422. package/lib/esm/internal/render/webgl/ClippingProgram.d.ts.map +1 -1
  423. package/lib/esm/internal/render/webgl/ClippingProgram.js +1 -1
  424. package/lib/esm/internal/render/webgl/ClippingProgram.js.map +1 -1
  425. package/lib/esm/internal/render/webgl/FrustumUniforms.d.ts +2 -0
  426. package/lib/esm/internal/render/webgl/FrustumUniforms.d.ts.map +1 -1
  427. package/lib/esm/internal/render/webgl/FrustumUniforms.js +8 -1
  428. package/lib/esm/internal/render/webgl/FrustumUniforms.js.map +1 -1
  429. package/lib/esm/internal/render/webgl/MapLayerParams.d.ts +0 -1
  430. package/lib/esm/internal/render/webgl/MapLayerParams.d.ts.map +1 -1
  431. package/lib/esm/internal/render/webgl/MapLayerParams.js +11 -20
  432. package/lib/esm/internal/render/webgl/MapLayerParams.js.map +1 -1
  433. package/lib/esm/internal/render/webgl/RenderCommands.d.ts.map +1 -1
  434. package/lib/esm/internal/render/webgl/RenderCommands.js +2 -3
  435. package/lib/esm/internal/render/webgl/RenderCommands.js.map +1 -1
  436. package/lib/esm/internal/render/webgl/SceneCompositor.d.ts +9 -0
  437. package/lib/esm/internal/render/webgl/SceneCompositor.d.ts.map +1 -1
  438. package/lib/esm/internal/render/webgl/SceneCompositor.js +86 -11
  439. package/lib/esm/internal/render/webgl/SceneCompositor.js.map +1 -1
  440. package/lib/esm/internal/render/webgl/ShaderBuilder.d.ts +4 -3
  441. package/lib/esm/internal/render/webgl/ShaderBuilder.d.ts.map +1 -1
  442. package/lib/esm/internal/render/webgl/ShaderBuilder.js +3 -3
  443. package/lib/esm/internal/render/webgl/ShaderBuilder.js.map +1 -1
  444. package/lib/esm/internal/render/webgl/ShaderProgram.d.ts +2 -2
  445. package/lib/esm/internal/render/webgl/ShaderProgram.d.ts.map +1 -1
  446. package/lib/esm/internal/render/webgl/ShaderProgram.js +2 -2
  447. package/lib/esm/internal/render/webgl/ShaderProgram.js.map +1 -1
  448. package/lib/esm/internal/render/webgl/SolarShadowMap.js +2 -2
  449. package/lib/esm/internal/render/webgl/SolarShadowMap.js.map +1 -1
  450. package/lib/esm/internal/render/webgl/SurfaceGeometry.d.ts.map +1 -1
  451. package/lib/esm/internal/render/webgl/SurfaceGeometry.js +20 -8
  452. package/lib/esm/internal/render/webgl/SurfaceGeometry.js.map +1 -1
  453. package/lib/esm/internal/render/webgl/Target.d.ts +1 -1
  454. package/lib/esm/internal/render/webgl/Target.d.ts.map +1 -1
  455. package/lib/esm/internal/render/webgl/Target.js +2 -2
  456. package/lib/esm/internal/render/webgl/Target.js.map +1 -1
  457. package/lib/esm/internal/render/webgl/TargetGraphics.d.ts +3 -3
  458. package/lib/esm/internal/render/webgl/TargetGraphics.d.ts.map +1 -1
  459. package/lib/esm/internal/render/webgl/TargetGraphics.js +10 -7
  460. package/lib/esm/internal/render/webgl/TargetGraphics.js.map +1 -1
  461. package/lib/esm/internal/render/webgl/Technique.d.ts +3 -3
  462. package/lib/esm/internal/render/webgl/Technique.d.ts.map +1 -1
  463. package/lib/esm/internal/render/webgl/Technique.js +3 -3
  464. package/lib/esm/internal/render/webgl/Technique.js.map +1 -1
  465. package/lib/esm/internal/render/webgl/glsl/Atmosphere.js +1 -1
  466. package/lib/esm/internal/render/webgl/glsl/ClearPickAndColor.d.ts.map +1 -1
  467. package/lib/esm/internal/render/webgl/glsl/ClearPickAndColor.js +2 -1
  468. package/lib/esm/internal/render/webgl/glsl/ClearPickAndColor.js.map +1 -1
  469. package/lib/esm/internal/render/webgl/glsl/Contours.d.ts.map +1 -1
  470. package/lib/esm/internal/render/webgl/glsl/Contours.js +31 -1
  471. package/lib/esm/internal/render/webgl/glsl/Contours.js.map +1 -1
  472. package/lib/esm/internal/render/webgl/glsl/Fragment.d.ts.map +1 -1
  473. package/lib/esm/internal/render/webgl/glsl/Fragment.js +7 -2
  474. package/lib/esm/internal/render/webgl/glsl/Fragment.js.map +1 -1
  475. package/lib/esm/internal/render/webgl/glsl/RealityMesh.js +1 -1
  476. package/lib/esm/internal/render/webgl/glsl/Surface.js +1 -1
  477. package/lib/esm/internal/tile/ClassifierTileTree.js +3 -1
  478. package/lib/esm/internal/tile/ClassifierTileTree.js.map +1 -1
  479. package/lib/esm/internal/tile/GraphicsCollector.d.ts +2 -0
  480. package/lib/esm/internal/tile/GraphicsCollector.d.ts.map +1 -1
  481. package/lib/esm/internal/tile/GraphicsCollector.js +2 -0
  482. package/lib/esm/internal/tile/GraphicsCollector.js.map +1 -1
  483. package/lib/esm/internal/tile/IModelTile.d.ts.map +1 -1
  484. package/lib/esm/internal/tile/IModelTile.js +7 -1
  485. package/lib/esm/internal/tile/IModelTile.js.map +1 -1
  486. package/lib/esm/internal/tile/IModelTileTree.d.ts +4 -1
  487. package/lib/esm/internal/tile/IModelTileTree.d.ts.map +1 -1
  488. package/lib/esm/internal/tile/IModelTileTree.js +7 -1
  489. package/lib/esm/internal/tile/IModelTileTree.js.map +1 -1
  490. package/lib/esm/internal/tile/ImdlDecoder.d.ts +2 -0
  491. package/lib/esm/internal/tile/ImdlDecoder.d.ts.map +1 -1
  492. package/lib/esm/internal/tile/ImdlDecoder.js.map +1 -1
  493. package/lib/esm/internal/tile/ImdlGraphicsCreator.d.ts +2 -2
  494. package/lib/esm/internal/tile/ImdlGraphicsCreator.d.ts.map +1 -1
  495. package/lib/esm/internal/tile/ImdlGraphicsCreator.js +2 -1
  496. package/lib/esm/internal/tile/ImdlGraphicsCreator.js.map +1 -1
  497. package/lib/esm/{tile → internal/tile}/LayerTileTreeHandler.d.ts +3 -3
  498. package/lib/esm/internal/tile/LayerTileTreeHandler.d.ts.map +1 -0
  499. package/lib/esm/{tile → internal/tile}/LayerTileTreeHandler.js +3 -2
  500. package/lib/esm/internal/tile/LayerTileTreeHandler.js.map +1 -0
  501. package/lib/esm/{tile → internal/tile}/LayerTileTreeReferenceHandler.d.ts +7 -5
  502. package/lib/esm/internal/tile/LayerTileTreeReferenceHandler.d.ts.map +1 -0
  503. package/lib/esm/{tile → internal/tile}/LayerTileTreeReferenceHandler.js +27 -4
  504. package/lib/esm/internal/tile/LayerTileTreeReferenceHandler.js.map +1 -0
  505. package/lib/esm/internal/tile/PrimaryTileTree.d.ts +9 -4
  506. package/lib/esm/internal/tile/PrimaryTileTree.d.ts.map +1 -1
  507. package/lib/esm/internal/tile/PrimaryTileTree.js +36 -13
  508. package/lib/esm/internal/tile/PrimaryTileTree.js.map +1 -1
  509. package/lib/esm/internal/tile/RealityModelTileTree.d.ts +15 -3
  510. package/lib/esm/internal/tile/RealityModelTileTree.d.ts.map +1 -1
  511. package/lib/esm/internal/tile/RealityModelTileTree.js +26 -32
  512. package/lib/esm/internal/tile/RealityModelTileTree.js.map +1 -1
  513. package/lib/esm/internal/tile/RealityTileLoader.d.ts.map +1 -1
  514. package/lib/esm/internal/tile/RealityTileLoader.js +2 -1
  515. package/lib/esm/internal/tile/RealityTileLoader.js.map +1 -1
  516. package/lib/esm/internal/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.d.ts +1 -1
  517. package/lib/esm/internal/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.d.ts.map +1 -1
  518. package/lib/esm/internal/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js +1 -1
  519. package/lib/esm/internal/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js.map +1 -1
  520. package/lib/esm/internal/tile/map/ImageryProviders/AzureMapsLayerImageryProvider.d.ts +1 -1
  521. package/lib/esm/internal/tile/map/ImageryProviders/AzureMapsLayerImageryProvider.d.ts.map +1 -1
  522. package/lib/esm/internal/tile/map/ImageryProviders/AzureMapsLayerImageryProvider.js +1 -1
  523. package/lib/esm/internal/tile/map/ImageryProviders/AzureMapsLayerImageryProvider.js.map +1 -1
  524. package/lib/esm/internal/tile/map/ImageryProviders/BingImageryProvider.d.ts +1 -1
  525. package/lib/esm/internal/tile/map/ImageryProviders/BingImageryProvider.d.ts.map +1 -1
  526. package/lib/esm/internal/tile/map/ImageryProviders/BingImageryProvider.js +1 -1
  527. package/lib/esm/internal/tile/map/ImageryProviders/BingImageryProvider.js.map +1 -1
  528. package/lib/esm/internal/tile/map/ImageryProviders/MapBoxLayerImageryProvider.d.ts +1 -1
  529. package/lib/esm/internal/tile/map/ImageryProviders/MapBoxLayerImageryProvider.d.ts.map +1 -1
  530. package/lib/esm/internal/tile/map/ImageryProviders/MapBoxLayerImageryProvider.js +1 -1
  531. package/lib/esm/internal/tile/map/ImageryProviders/MapBoxLayerImageryProvider.js.map +1 -1
  532. package/lib/esm/properties/AngleDescription.d.ts +4 -1
  533. package/lib/esm/properties/AngleDescription.d.ts.map +1 -1
  534. package/lib/esm/properties/AngleDescription.js +10 -2
  535. package/lib/esm/properties/AngleDescription.js.map +1 -1
  536. package/lib/esm/properties/FormattedQuantityDescription.d.ts +11 -1
  537. package/lib/esm/properties/FormattedQuantityDescription.d.ts.map +1 -1
  538. package/lib/esm/properties/FormattedQuantityDescription.js +7 -2
  539. package/lib/esm/properties/FormattedQuantityDescription.js.map +1 -1
  540. package/lib/esm/properties/LengthDescription.d.ts +12 -3
  541. package/lib/esm/properties/LengthDescription.d.ts.map +1 -1
  542. package/lib/esm/properties/LengthDescription.js +30 -6
  543. package/lib/esm/properties/LengthDescription.js.map +1 -1
  544. package/lib/esm/quantity-formatting/QuantityFormatter.d.ts +103 -7
  545. package/lib/esm/quantity-formatting/QuantityFormatter.d.ts.map +1 -1
  546. package/lib/esm/quantity-formatting/QuantityFormatter.js +210 -23
  547. package/lib/esm/quantity-formatting/QuantityFormatter.js.map +1 -1
  548. package/lib/esm/render/Decorations.d.ts +1 -1
  549. package/lib/esm/render/Decorations.d.ts.map +1 -1
  550. package/lib/esm/render/Decorations.js +1 -1
  551. package/lib/esm/render/Decorations.js.map +1 -1
  552. package/lib/esm/render/GraphicBranch.d.ts +1 -1
  553. package/lib/esm/render/GraphicBranch.d.ts.map +1 -1
  554. package/lib/esm/render/GraphicBranch.js +1 -1
  555. package/lib/esm/render/GraphicBranch.js.map +1 -1
  556. package/lib/esm/render/Pixel.d.ts +13 -2
  557. package/lib/esm/render/Pixel.d.ts.map +1 -1
  558. package/lib/esm/render/Pixel.js +20 -8
  559. package/lib/esm/render/Pixel.js.map +1 -1
  560. package/lib/esm/render/RenderGraphic.d.ts +1 -1
  561. package/lib/esm/render/RenderGraphic.d.ts.map +1 -1
  562. package/lib/esm/render/RenderGraphic.js.map +1 -1
  563. package/lib/esm/render/RenderSystem.d.ts +2 -2
  564. package/lib/esm/render/RenderSystem.d.ts.map +1 -1
  565. package/lib/esm/render/RenderSystem.js.map +1 -1
  566. package/lib/esm/render/RenderTarget.d.ts +1 -1
  567. package/lib/esm/render/RenderTarget.d.ts.map +1 -1
  568. package/lib/esm/render/RenderTarget.js.map +1 -1
  569. package/lib/esm/render/ScreenSpaceEffectBuilder.d.ts +1 -1
  570. package/lib/esm/render/ScreenSpaceEffectBuilder.js.map +1 -1
  571. package/lib/esm/request/Request.d.ts +2 -2
  572. package/lib/esm/request/Request.js.map +1 -1
  573. package/lib/esm/tile/ImdlReader.d.ts +3 -2
  574. package/lib/esm/tile/ImdlReader.d.ts.map +1 -1
  575. package/lib/esm/tile/ImdlReader.js +1 -0
  576. package/lib/esm/tile/ImdlReader.js.map +1 -1
  577. package/lib/esm/tile/RealityTileTree.d.ts.map +1 -1
  578. package/lib/esm/tile/RealityTileTree.js +2 -2
  579. package/lib/esm/tile/RealityTileTree.js.map +1 -1
  580. package/lib/esm/tile/Tile.d.ts +1 -1
  581. package/lib/esm/tile/Tile.d.ts.map +1 -1
  582. package/lib/esm/tile/Tile.js +1 -1
  583. package/lib/esm/tile/Tile.js.map +1 -1
  584. package/lib/esm/tile/TileAdmin.d.ts +10 -0
  585. package/lib/esm/tile/TileAdmin.d.ts.map +1 -1
  586. package/lib/esm/tile/TileAdmin.js +3 -0
  587. package/lib/esm/tile/TileAdmin.js.map +1 -1
  588. package/lib/esm/tile/TileDrawArgs.d.ts +1 -0
  589. package/lib/esm/tile/TileDrawArgs.d.ts.map +1 -1
  590. package/lib/esm/tile/TileDrawArgs.js +2 -0
  591. package/lib/esm/tile/TileDrawArgs.js.map +1 -1
  592. package/lib/esm/tile/TileTree.d.ts +1 -1
  593. package/lib/esm/tile/TileTree.d.ts.map +1 -1
  594. package/lib/esm/tile/TileTree.js +1 -1
  595. package/lib/esm/tile/TileTree.js.map +1 -1
  596. package/lib/esm/tile/TileTreeReference.d.ts +1 -1
  597. package/lib/esm/tile/TileTreeReference.d.ts.map +1 -1
  598. package/lib/esm/tile/TileTreeReference.js +1 -1
  599. package/lib/esm/tile/TileTreeReference.js.map +1 -1
  600. package/lib/esm/tile/internal.d.ts +3 -2
  601. package/lib/esm/tile/internal.d.ts.map +1 -1
  602. package/lib/esm/tile/internal.js +3 -2
  603. package/lib/esm/tile/internal.js.map +1 -1
  604. package/lib/esm/tile/map/CesiumTerrainProvider.d.ts +1 -1
  605. package/lib/esm/tile/map/CesiumTerrainProvider.d.ts.map +1 -1
  606. package/lib/esm/tile/map/CesiumTerrainProvider.js +4 -5
  607. package/lib/esm/tile/map/CesiumTerrainProvider.js.map +1 -1
  608. package/lib/esm/tile/map/ImageryTileTree.d.ts +2 -2
  609. package/lib/esm/tile/map/ImageryTileTree.d.ts.map +1 -1
  610. package/lib/esm/tile/map/ImageryTileTree.js +2 -2
  611. package/lib/esm/tile/map/ImageryTileTree.js.map +1 -1
  612. package/lib/esm/tile/map/MapCartoRectangle.d.ts +10 -0
  613. package/lib/esm/tile/map/MapCartoRectangle.d.ts.map +1 -1
  614. package/lib/esm/tile/map/MapCartoRectangle.js +12 -0
  615. package/lib/esm/tile/map/MapCartoRectangle.js.map +1 -1
  616. package/lib/esm/tile/map/MapLayerImageryProvider.d.ts +3 -3
  617. package/lib/esm/tile/map/MapLayerImageryProvider.d.ts.map +1 -1
  618. package/lib/esm/tile/map/MapLayerImageryProvider.js +9 -5
  619. package/lib/esm/tile/map/MapLayerImageryProvider.js.map +1 -1
  620. package/lib/esm/tile/map/MapTileTree.d.ts +1 -1
  621. package/lib/esm/tile/map/MapTileTree.d.ts.map +1 -1
  622. package/lib/esm/tile/map/MapTileTree.js +3 -5
  623. package/lib/esm/tile/map/MapTileTree.js.map +1 -1
  624. package/lib/esm/tile/map/QuadId.d.ts +15 -0
  625. package/lib/esm/tile/map/QuadId.d.ts.map +1 -1
  626. package/lib/esm/tile/map/QuadId.js +12 -0
  627. package/lib/esm/tile/map/QuadId.js.map +1 -1
  628. package/lib/esm/tile/map/TerrainMeshProvider.d.ts +1 -1
  629. package/lib/esm/tile/map/TerrainMeshProvider.d.ts.map +1 -1
  630. package/lib/esm/tile/map/TerrainMeshProvider.js +1 -1
  631. package/lib/esm/tile/map/TerrainMeshProvider.js.map +1 -1
  632. package/lib/esm/tools/AccuDrawTool.d.ts +0 -12
  633. package/lib/esm/tools/AccuDrawTool.d.ts.map +1 -1
  634. package/lib/esm/tools/AccuDrawTool.js +3 -60
  635. package/lib/esm/tools/AccuDrawTool.js.map +1 -1
  636. package/lib/esm/tools/AccuDrawViewportUI.d.ts +7 -1
  637. package/lib/esm/tools/AccuDrawViewportUI.d.ts.map +1 -1
  638. package/lib/esm/tools/AccuDrawViewportUI.js +30 -20
  639. package/lib/esm/tools/AccuDrawViewportUI.js.map +1 -1
  640. package/lib/esm/tools/ElementSetTool.d.ts +9 -1
  641. package/lib/esm/tools/ElementSetTool.d.ts.map +1 -1
  642. package/lib/esm/tools/ElementSetTool.js +130 -9
  643. package/lib/esm/tools/ElementSetTool.js.map +1 -1
  644. package/lib/esm/tools/MeasureTool.d.ts +9 -0
  645. package/lib/esm/tools/MeasureTool.d.ts.map +1 -1
  646. package/lib/esm/tools/MeasureTool.js +53 -22
  647. package/lib/esm/tools/MeasureTool.js.map +1 -1
  648. package/lib/esm/tools/SelectTool.d.ts +2 -2
  649. package/lib/esm/tools/SelectTool.d.ts.map +1 -1
  650. package/lib/esm/tools/SelectTool.js +26 -97
  651. package/lib/esm/tools/SelectTool.js.map +1 -1
  652. package/lib/esm/tools/Tool.d.ts +10 -1
  653. package/lib/esm/tools/Tool.d.ts.map +1 -1
  654. package/lib/esm/tools/Tool.js +27 -4
  655. package/lib/esm/tools/Tool.js.map +1 -1
  656. package/lib/esm/tools/ToolAdmin.d.ts +1 -0
  657. package/lib/esm/tools/ToolAdmin.d.ts.map +1 -1
  658. package/lib/esm/tools/ToolAdmin.js +8 -2
  659. package/lib/esm/tools/ToolAdmin.js.map +1 -1
  660. package/lib/esm/tools/ToolSettings.d.ts +5 -0
  661. package/lib/esm/tools/ToolSettings.d.ts.map +1 -1
  662. package/lib/esm/tools/ToolSettings.js +5 -0
  663. package/lib/esm/tools/ToolSettings.js.map +1 -1
  664. package/lib/esm/tools/ViewTool.d.ts +26 -18
  665. package/lib/esm/tools/ViewTool.d.ts.map +1 -1
  666. package/lib/esm/tools/ViewTool.js +39 -87
  667. package/lib/esm/tools/ViewTool.js.map +1 -1
  668. package/lib/public/locales/en/CoreTools.json +0 -5
  669. package/lib/public/scripts/parse-imdl-worker.js +1 -1
  670. package/lib/public/sprites/SnapPerpendicularPoint.png +0 -0
  671. package/lib/public/sprites/SnapTangentPoint.png +0 -0
  672. package/lib/workers/webpack/parse-imdl-worker.js +1 -1
  673. package/package.json +20 -16
  674. package/lib/cjs/tile/LayerTileTreeHandler.d.ts.map +0 -1
  675. package/lib/cjs/tile/LayerTileTreeHandler.js.map +0 -1
  676. package/lib/cjs/tile/LayerTileTreeReferenceHandler.d.ts.map +0 -1
  677. package/lib/cjs/tile/LayerTileTreeReferenceHandler.js.map +0 -1
  678. package/lib/esm/tile/LayerTileTreeHandler.d.ts.map +0 -1
  679. package/lib/esm/tile/LayerTileTreeHandler.js.map +0 -1
  680. package/lib/esm/tile/LayerTileTreeReferenceHandler.d.ts.map +0 -1
  681. package/lib/esm/tile/LayerTileTreeReferenceHandler.js.map +0 -1
@@ -9,6 +9,7 @@ import { ContourDisplay } from "@itwin/core-common";
9
9
  import { TextureUnit } from "../RenderFlags";
10
10
  import { addFeatureIndex } from "./FeatureSymbology";
11
11
  import { addInstancedRtcMatrix } from "./Vertex";
12
+ import { encodeDepthRgb } from "./Decode";
12
13
  const computeContourNdx = `
13
14
  if (u_contourLUTWidth == 0u)
14
15
  return 15.0;
@@ -36,6 +37,21 @@ vec4 unpackAndNormalize2BytesVec4(vec4 f, bool upper) {
36
37
  return unpack2BytesVec4(f, upper) / 255.0;
37
38
  }
38
39
  `;
40
+ const encodeContourLineInfo = `
41
+ void encodeContourLineInfo(int groupIndex, bool isMajor, float interval) {
42
+ // ContourDisplay.maxContourGroups is currently 5. Must change this code if that changes.
43
+ float groupIndexAndType = float(groupIndex + (isMajor ? 16 : 8));
44
+
45
+ // Find nearest multiple of interval to pixel world height.
46
+ float elevation = (v_height >= 0.0 ? floor((v_height + interval / 2.0) / interval) : ceil((v_height - interval / 2.0) / interval)) * interval;
47
+
48
+ // Convert elevation to a fraction of the frustum's world Z extents
49
+ elevation = clamp((elevation - u_worldFrustumZRange.x) / (u_worldFrustumZRange.y - u_worldFrustumZRange.x), 0.0, 1.0);
50
+
51
+ // Encode elevation in RGB and the rest of the info in A
52
+ g_contourLineInfo = vec4(groupIndexAndType * 0.03125, encodeDepthRgb(elevation));
53
+ }
54
+ `;
39
55
  const applyContours = `
40
56
  int contourNdx = int(v_contourNdx + 0.5);
41
57
  if (contourNdx > 14) // 15 => no contours
@@ -80,8 +96,13 @@ const applyContours = `
80
96
  uint msk = 1u << uint(offset);
81
97
  contourAlpha *= (patterns[(lineCodeWt / 16) & 0xf] & msk) > 0u ? 1.0 : 0.0;
82
98
  contourAlpha = min(contourAlpha, 1.0);
99
+
100
+ bool isContourLine = contourAlpha >= 0.5;
101
+ if (isContourLine)
102
+ encodeContourLineInfo(contourNdxC, maj, intervals.r);
103
+
83
104
  if (rgbfp.a / 65536.0 < 0.5) { // showGeometry == 0
84
- if (contourAlpha < 0.5)
105
+ if (!isContourLine)
85
106
  discard;
86
107
  return vec4(rgbf.rgb, 1.0);
87
108
  }
@@ -121,14 +142,23 @@ float computeWorldHeight(vec4 rawPosition) {
121
142
  params.target.uniforms.branch.bindModelToWorldTransform(uniform, params.geometry, false);
122
143
  });
123
144
  });
145
+ builder.frag.addUniform("u_worldFrustumZRange", 3 /* VariableType.Vec2 */, (prog) => {
146
+ prog.addProgramUniform("u_worldFrustumZRange", (uniform, params) => {
147
+ uniform.setUniform2fv(params.target.uniforms.frustum.worldFrustumZRange);
148
+ });
149
+ });
124
150
  const contourDefsSize = 8;
125
151
  builder.frag.addUniformArray("u_contourDefs", 5 /* VariableType.Vec4 */, contourDefsSize, (prog) => {
126
152
  prog.addGraphicUniform("u_contourDefs", (uniform, params) => {
127
153
  params.target.uniforms.contours.bindcontourDefs(uniform);
128
154
  });
129
155
  });
156
+ builder.frag.addGlobal("g_contourLineInfo", 5 /* VariableType.Vec4 */, "vec4(0.0)");
157
+ builder.frag.addFunction(encodeDepthRgb);
158
+ builder.frag.addFunction(encodeContourLineInfo);
130
159
  builder.frag.addFunction(unpack2BytesVec4);
131
160
  builder.frag.addFunction(unpackAndNormalize2BytesVec4);
132
161
  builder.frag.set(11 /* FragmentShaderComponent.ApplyContours */, applyContours);
162
+ builder.frag.set(23 /* FragmentShaderComponent.ComputeContourLineInfo */, "return g_contourLineInfo;");
133
163
  }
134
164
  //# sourceMappingURL=Contours.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Contours.js","sourceRoot":"","sources":["../../../../../../src/internal/render/webgl/glsl/Contours.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 */\nimport { ContourDisplay } from \"@itwin/core-common\";\nimport { TextureUnit } from \"../RenderFlags\";\nimport {\n FragmentShaderComponent, ProgramBuilder, VariableType,\n} from \"../ShaderBuilder\";\nimport { addFeatureIndex } from \"./FeatureSymbology\";\nimport { addInstancedRtcMatrix } from \"./Vertex\";\n\nconst computeContourNdx = `\n if (u_contourLUTWidth == 0u)\n return 15.0;\n uint lutIndex = uint(getFeatureIndex());\n bool odd = bool(lutIndex & 1u);\n lutIndex /= 2u;\n uint byteSel = lutIndex & 0x3u;\n lutIndex /= 4u;\n ivec2 coords = ivec2(lutIndex % u_contourLUTWidth, lutIndex / u_contourLUTWidth);\n uvec4 contourNdx4 = uvec4(texelFetch(u_contourLUT, coords, 0) * 255.0 + 0.5);\n uvec2 contourNdx2 = bool(byteSel & 2u) ? contourNdx4.ba : contourNdx4.rg;\n uint contourNdx = bool(byteSel & 1u) ? contourNdx2.g : contourNdx2.r;\n return float(odd ? contourNdx >> 4u : contourNdx & 0xFu);\n`;\n\nconst unpack2BytesVec4 = `\nvec4 unpack2BytesVec4(vec4 f, bool upper) {\n f = floor(f + 0.5);\n vec4 outUpper = floor(f / 256.0);\n vec4 outLower = floor(f - outUpper * 256.0);\n return upper ? outUpper : outLower;\n}\n`;\n\nconst unpackAndNormalize2BytesVec4 = `\nvec4 unpackAndNormalize2BytesVec4(vec4 f, bool upper) {\n return unpack2BytesVec4(f, upper) / 255.0;\n}\n`;\n\nconst applyContours = `\n int contourNdx = int(v_contourNdx + 0.5);\n if (contourNdx > 14) // 15 => no contours\n return baseColor;\n\n const int maxDefs = ${ContourDisplay.maxContourGroups}; // max number of contour definitions allowed, have to change index arrays if this changes\n int contourNdxC = clamp(contourNdx, 0, maxDefs - 1);\n\n bool even = (contourNdxC & 1) == 0;\n vec4 rgbfp = u_contourDefs[even ? contourNdxC * 3 / 2 : (contourNdxC - 1) * 3 / 2 + 2];\n vec4 intervalsPair = u_contourDefs[(contourNdxC / 2) * 3 + 1];\n // intervals.r => minor interval distance, intervals.g => major index count\n vec2 intervals = even ? intervalsPair.rg : intervalsPair.ba;\n\n float coord = v_height / intervals.r;\n // determine if this is in the vicinity of a major contour line (1/2 an interval either way, which is one limit of drawing width)\n bool maj = (fract((abs(coord) + 0.5) / intervals.g) < (1.0 / intervals.g));\n vec4 rgbf = unpackAndNormalize2BytesVec4(rgbfp, maj);\n // rgbf.a => (4-bit linecode / 4-bit weight) maj/min, where the 4-bit weight is a 3-bit weight value with one fraction bit and a 1.5 offset.\n // This gives a weight range of 1.5 to 9 in 0.5 increments.\n // NB: the showGeometry bit flag is stuck in at bit 16 of this, so the major line code has an extra bit in it that needs to be masked out\n int lineCodeWt = int((rgbf.a * 255.0) + 0.5);\n // first * 0.5 is for fractional part of width, then have to add 1.0 for offset, then another 1.0 for actual width bias\n float lineRadius = (float(lineCodeWt & 0xf) * 0.5 + 2.0) * 0.5;\n\n // abs(fract(coord - 0.5) - 0.5) will produce 0.0 at the contour line, and 0.5 at the mid-point between contour lines\n // fwidth(coord) is sum of absolute diffs in coord in adjacent pixels\n float line = abs(fract(coord - 0.5) - 0.5) / fwidth(coord);\n // If line is 0 (like at contour line), contourAlpha = lineRadius, so will use draw in contour color\n\t// If line >= lineRadius, contourAlpha = 0, so won't show contour\n float contourAlpha = lineRadius - min(line, lineRadius);\n\n // figure out which direction line is going, to know which screen pattern offset to use\n float dx = dFdx(contourAlpha);\n float dy = dFdy(contourAlpha);\n\n const float patLength = 32.0;\n uint patterns[10] = uint[](0xffffffffu, 0x80808080u, 0xf8f8f8f8u, 0xffe0ffe0u, 0xfe10fe10u, 0xe0e0e0e0u, 0xf888f888u, 0xff18ff18u, 0xccccccccu, 0x00000001u);\n\n float offset = trunc((abs(dx) > abs(dy)) ? gl_FragCoord.y : gl_FragCoord.x);\n offset = mod(offset, patLength);\n uint msk = 1u << uint(offset);\n contourAlpha *= (patterns[(lineCodeWt / 16) & 0xf] & msk) > 0u ? 1.0 : 0.0;\n contourAlpha = min(contourAlpha, 1.0);\n if (rgbfp.a / 65536.0 < 0.5) { // showGeometry == 0\n if (contourAlpha < 0.5)\n discard;\n return vec4(rgbf.rgb, 1.0);\n }\n // set contour opaque even if base color is transparent\n float alpha = contourAlpha >= 0.5 ? 1.0 : baseColor.a;\n return vec4(mix(baseColor.rgb, rgbf.rgb, contourAlpha), alpha);\n`;\n\n/** @internal */\nexport function addApplyContours(builder: ProgramBuilder) {\n const modelPos = builder.vert.usesInstancedGeometry ? \"(g_instancedRtcMatrix * rawPosition)\" : \"rawPosition\";\n\n const computeWorldHeight = `\nfloat computeWorldHeight(vec4 rawPosition) {\n float height = (u_modelToWorldC * ${modelPos}).z;\n // TODO: apply ECEF correction to height\n return height;\n}\n`;\n\n addFeatureIndex(builder.vert);\n\n builder.addFunctionComputedVarying(\"v_contourNdx\", VariableType.Float, \"computeContourNdx\", computeContourNdx);\n builder.addFunctionComputedVaryingWithArgs(\"v_height\", VariableType.Float, \"computeWorldHeight(rawPosition)\", computeWorldHeight);\n\n if (builder.vert.usesInstancedGeometry)\n addInstancedRtcMatrix(builder.vert);\n\n builder.vert.addUniform(\"u_contourLUT\", VariableType.Sampler2D, (prog) => {\n prog.addGraphicUniform(\"u_contourLUT\", (uniform, params) => {\n // set this uniform here so that it won't cause problems (e.g.: loopback) if it does not end up being set by bindContourLUT call\n uniform.setUniform1i(TextureUnit.Contours - TextureUnit.Zero);\n params.target.uniforms.batch.bindContourLUT(uniform);\n });\n });\n\n builder.vert.addUniform(\"u_contourLUTWidth\", VariableType.Uint, (prog) => {\n prog.addGraphicUniform(\"u_contourLUTWidth\", (uniform, params) => {\n params.target.uniforms.batch.bindContourLUTWidth(uniform);\n });\n });\n\n builder.vert.addUniform(\"u_modelToWorldC\", VariableType.Mat4, (prog) => {\n prog.addGraphicUniform(\"u_modelToWorldC\", (uniform, params) => {\n params.target.uniforms.branch.bindModelToWorldTransform(uniform, params.geometry, false);\n });\n });\n\n const contourDefsSize = 8;\n builder.frag.addUniformArray(\"u_contourDefs\", VariableType.Vec4, contourDefsSize, (prog) => {\n prog.addGraphicUniform(\"u_contourDefs\", (uniform, params) => {\n params.target.uniforms.contours.bindcontourDefs(uniform);\n });\n });\n\n builder.frag.addFunction(unpack2BytesVec4);\n builder.frag.addFunction(unpackAndNormalize2BytesVec4);\n builder.frag.set(FragmentShaderComponent.ApplyContours, applyContours);\n}\n"]}
1
+ {"version":3,"file":"Contours.js","sourceRoot":"","sources":["../../../../../../src/internal/render/webgl/glsl/Contours.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 */\nimport { ContourDisplay } from \"@itwin/core-common\";\nimport { TextureUnit } from \"../RenderFlags\";\nimport {\n FragmentShaderComponent, ProgramBuilder, VariableType,\n} from \"../ShaderBuilder\";\nimport { addFeatureIndex } from \"./FeatureSymbology\";\nimport { addInstancedRtcMatrix } from \"./Vertex\";\nimport { encodeDepthRgb } from \"./Decode\";\n\nconst computeContourNdx = `\n if (u_contourLUTWidth == 0u)\n return 15.0;\n uint lutIndex = uint(getFeatureIndex());\n bool odd = bool(lutIndex & 1u);\n lutIndex /= 2u;\n uint byteSel = lutIndex & 0x3u;\n lutIndex /= 4u;\n ivec2 coords = ivec2(lutIndex % u_contourLUTWidth, lutIndex / u_contourLUTWidth);\n uvec4 contourNdx4 = uvec4(texelFetch(u_contourLUT, coords, 0) * 255.0 + 0.5);\n uvec2 contourNdx2 = bool(byteSel & 2u) ? contourNdx4.ba : contourNdx4.rg;\n uint contourNdx = bool(byteSel & 1u) ? contourNdx2.g : contourNdx2.r;\n return float(odd ? contourNdx >> 4u : contourNdx & 0xFu);\n`;\n\nconst unpack2BytesVec4 = `\nvec4 unpack2BytesVec4(vec4 f, bool upper) {\n f = floor(f + 0.5);\n vec4 outUpper = floor(f / 256.0);\n vec4 outLower = floor(f - outUpper * 256.0);\n return upper ? outUpper : outLower;\n}\n`;\n\nconst unpackAndNormalize2BytesVec4 = `\nvec4 unpackAndNormalize2BytesVec4(vec4 f, bool upper) {\n return unpack2BytesVec4(f, upper) / 255.0;\n}\n`;\n\nconst encodeContourLineInfo = `\n void encodeContourLineInfo(int groupIndex, bool isMajor, float interval) {\n // ContourDisplay.maxContourGroups is currently 5. Must change this code if that changes.\n float groupIndexAndType = float(groupIndex + (isMajor ? 16 : 8));\n\n // Find nearest multiple of interval to pixel world height.\n float elevation = (v_height >= 0.0 ? floor((v_height + interval / 2.0) / interval) : ceil((v_height - interval / 2.0) / interval)) * interval;\n\n // Convert elevation to a fraction of the frustum's world Z extents\n elevation = clamp((elevation - u_worldFrustumZRange.x) / (u_worldFrustumZRange.y - u_worldFrustumZRange.x), 0.0, 1.0);\n\n // Encode elevation in RGB and the rest of the info in A\n g_contourLineInfo = vec4(groupIndexAndType * 0.03125, encodeDepthRgb(elevation));\n }\n`;\n\nconst applyContours = `\n int contourNdx = int(v_contourNdx + 0.5);\n if (contourNdx > 14) // 15 => no contours\n return baseColor;\n\n const int maxDefs = ${ContourDisplay.maxContourGroups}; // max number of contour definitions allowed, have to change index arrays if this changes\n int contourNdxC = clamp(contourNdx, 0, maxDefs - 1);\n\n bool even = (contourNdxC & 1) == 0;\n vec4 rgbfp = u_contourDefs[even ? contourNdxC * 3 / 2 : (contourNdxC - 1) * 3 / 2 + 2];\n vec4 intervalsPair = u_contourDefs[(contourNdxC / 2) * 3 + 1];\n // intervals.r => minor interval distance, intervals.g => major index count\n vec2 intervals = even ? intervalsPair.rg : intervalsPair.ba;\n\n float coord = v_height / intervals.r;\n // determine if this is in the vicinity of a major contour line (1/2 an interval either way, which is one limit of drawing width)\n bool maj = (fract((abs(coord) + 0.5) / intervals.g) < (1.0 / intervals.g));\n vec4 rgbf = unpackAndNormalize2BytesVec4(rgbfp, maj);\n // rgbf.a => (4-bit linecode / 4-bit weight) maj/min, where the 4-bit weight is a 3-bit weight value with one fraction bit and a 1.5 offset.\n // This gives a weight range of 1.5 to 9 in 0.5 increments.\n // NB: the showGeometry bit flag is stuck in at bit 16 of this, so the major line code has an extra bit in it that needs to be masked out\n int lineCodeWt = int((rgbf.a * 255.0) + 0.5);\n // first * 0.5 is for fractional part of width, then have to add 1.0 for offset, then another 1.0 for actual width bias\n float lineRadius = (float(lineCodeWt & 0xf) * 0.5 + 2.0) * 0.5;\n\n // abs(fract(coord - 0.5) - 0.5) will produce 0.0 at the contour line, and 0.5 at the mid-point between contour lines\n // fwidth(coord) is sum of absolute diffs in coord in adjacent pixels\n float line = abs(fract(coord - 0.5) - 0.5) / fwidth(coord);\n // If line is 0 (like at contour line), contourAlpha = lineRadius, so will use draw in contour color\n\t// If line >= lineRadius, contourAlpha = 0, so won't show contour\n float contourAlpha = lineRadius - min(line, lineRadius);\n\n // figure out which direction line is going, to know which screen pattern offset to use\n float dx = dFdx(contourAlpha);\n float dy = dFdy(contourAlpha);\n\n const float patLength = 32.0;\n uint patterns[10] = uint[](0xffffffffu, 0x80808080u, 0xf8f8f8f8u, 0xffe0ffe0u, 0xfe10fe10u, 0xe0e0e0e0u, 0xf888f888u, 0xff18ff18u, 0xccccccccu, 0x00000001u);\n\n float offset = trunc((abs(dx) > abs(dy)) ? gl_FragCoord.y : gl_FragCoord.x);\n offset = mod(offset, patLength);\n uint msk = 1u << uint(offset);\n contourAlpha *= (patterns[(lineCodeWt / 16) & 0xf] & msk) > 0u ? 1.0 : 0.0;\n contourAlpha = min(contourAlpha, 1.0);\n\n bool isContourLine = contourAlpha >= 0.5;\n if (isContourLine)\n encodeContourLineInfo(contourNdxC, maj, intervals.r);\n\n if (rgbfp.a / 65536.0 < 0.5) { // showGeometry == 0\n if (!isContourLine)\n discard;\n return vec4(rgbf.rgb, 1.0);\n }\n // set contour opaque even if base color is transparent\n float alpha = contourAlpha >= 0.5 ? 1.0 : baseColor.a;\n return vec4(mix(baseColor.rgb, rgbf.rgb, contourAlpha), alpha);\n`;\n\n/** @internal */\nexport function addApplyContours(builder: ProgramBuilder) {\n const modelPos = builder.vert.usesInstancedGeometry ? \"(g_instancedRtcMatrix * rawPosition)\" : \"rawPosition\";\n\n const computeWorldHeight = `\nfloat computeWorldHeight(vec4 rawPosition) {\n float height = (u_modelToWorldC * ${modelPos}).z;\n // TODO: apply ECEF correction to height\n return height;\n}\n`;\n\n addFeatureIndex(builder.vert);\n\n builder.addFunctionComputedVarying(\"v_contourNdx\", VariableType.Float, \"computeContourNdx\", computeContourNdx);\n builder.addFunctionComputedVaryingWithArgs(\"v_height\", VariableType.Float, \"computeWorldHeight(rawPosition)\", computeWorldHeight);\n\n if (builder.vert.usesInstancedGeometry)\n addInstancedRtcMatrix(builder.vert);\n\n builder.vert.addUniform(\"u_contourLUT\", VariableType.Sampler2D, (prog) => {\n prog.addGraphicUniform(\"u_contourLUT\", (uniform, params) => {\n // set this uniform here so that it won't cause problems (e.g.: loopback) if it does not end up being set by bindContourLUT call\n uniform.setUniform1i(TextureUnit.Contours - TextureUnit.Zero);\n params.target.uniforms.batch.bindContourLUT(uniform);\n });\n });\n\n builder.vert.addUniform(\"u_contourLUTWidth\", VariableType.Uint, (prog) => {\n prog.addGraphicUniform(\"u_contourLUTWidth\", (uniform, params) => {\n params.target.uniforms.batch.bindContourLUTWidth(uniform);\n });\n });\n\n builder.vert.addUniform(\"u_modelToWorldC\", VariableType.Mat4, (prog) => {\n prog.addGraphicUniform(\"u_modelToWorldC\", (uniform, params) => {\n params.target.uniforms.branch.bindModelToWorldTransform(uniform, params.geometry, false);\n });\n });\n\n builder.frag.addUniform(\"u_worldFrustumZRange\", VariableType.Vec2, (prog) => {\n prog.addProgramUniform(\"u_worldFrustumZRange\", (uniform, params) => {\n uniform.setUniform2fv(params.target.uniforms.frustum.worldFrustumZRange);\n });\n });\n\n const contourDefsSize = 8;\n builder.frag.addUniformArray(\"u_contourDefs\", VariableType.Vec4, contourDefsSize, (prog) => {\n prog.addGraphicUniform(\"u_contourDefs\", (uniform, params) => {\n params.target.uniforms.contours.bindcontourDefs(uniform);\n });\n });\n\n builder.frag.addGlobal(\"g_contourLineInfo\", VariableType.Vec4, \"vec4(0.0)\");\n builder.frag.addFunction(encodeDepthRgb);\n builder.frag.addFunction(encodeContourLineInfo);\n \n builder.frag.addFunction(unpack2BytesVec4);\n builder.frag.addFunction(unpackAndNormalize2BytesVec4);\n builder.frag.set(FragmentShaderComponent.ApplyContours, applyContours);\n builder.frag.set(FragmentShaderComponent.ComputeContourLineInfo, \"return g_contourLineInfo;\");\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"Fragment.d.ts","sourceRoot":"","sources":["../../../../../../src/internal/render/webgl/glsl/Fragment.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,EAAE,qBAAqB,EAAwD,MAAM,kBAAkB,CAAC;AAI/G,gBAAgB;AAChB,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,qBAAqB,QAQ/D;AAED,gBAAgB;AAChB,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,qBAAqB,QASlE;AA0CD,gBAAgB;AAChB,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,qBAAqB,GAAG,IAAI,CA8BtE;AAED,gBAAgB;AAChB,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,qBAAqB,GAAG,IAAI,CAazE;AAED,gBAAgB;AAChB,wBAAgB,kCAAkC,CAAC,IAAI,EAAE,qBAAqB,GAAG,IAAI,CASpF;AAED,gBAAgB;AAChB,eAAO,MAAM,eAAe,2BAA2B,CAAC;AAWxD,gBAAgB;AAChB,eAAO,MAAM,kBAAkB,qPAQ9B,CAAC"}
1
+ {"version":3,"file":"Fragment.d.ts","sourceRoot":"","sources":["../../../../../../src/internal/render/webgl/glsl/Fragment.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,EAAE,qBAAqB,EAAwD,MAAM,kBAAkB,CAAC;AAI/G,gBAAgB;AAChB,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,qBAAqB,QAQ/D;AAED,gBAAgB;AAChB,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,qBAAqB,QASlE;AA4CD,gBAAgB;AAChB,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,qBAAqB,GAAG,IAAI,CAkCtE;AAED,gBAAgB;AAChB,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,qBAAqB,GAAG,IAAI,CAazE;AAED,gBAAgB;AAChB,wBAAgB,kCAAkC,CAAC,IAAI,EAAE,qBAAqB,GAAG,IAAI,CASpF;AAED,gBAAgB;AAChB,eAAO,MAAM,eAAe,2BAA2B,CAAC;AAWxD,gBAAgB;AAChB,eAAO,MAAM,kBAAkB,qPAQ9B,CAAC"}
@@ -56,11 +56,13 @@ const computeAltPickBufferOutputs = `${multiplyAlpha}
56
56
  vec4 output0 = baseColor;
57
57
  vec4 output1 = vec4(0.0);
58
58
  vec4 output2 = vec4(0.0);
59
+ vec4 output3 = vec4(0.0);
59
60
  `;
60
61
  const assignPickBufferOutputsMRT = `
61
62
  FragColor0 = output0;
62
63
  FragColor1 = output1;
63
64
  FragColor2 = output2;
65
+ FragColor3 = output3;
64
66
  `;
65
67
  const reassignFeatureId = " output1 = overrideFeatureId(output1);";
66
68
  /** @internal */
@@ -77,6 +79,9 @@ export function addPickBufferOutputs(frag) {
77
79
  prelude.addline(" float renderOrder = u_renderOrder;");
78
80
  }
79
81
  prelude.add(computePickBufferOutputs);
82
+ const computeContourLineInfo = frag.get(23 /* FragmentShaderComponent.ComputeContourLineInfo */) ?? "return vec4(0.0);";
83
+ frag.addFunction("vec4 computeContourLineInfo()", computeContourLineInfo);
84
+ prelude.addline(" vec4 output3 = computeContourLineInfo();");
80
85
  const overrideColor = frag.get(21 /* FragmentShaderComponent.OverrideColor */);
81
86
  if (undefined !== overrideColor) {
82
87
  frag.addFunction("vec4 overrideColor(vec4 currentColor)", overrideColor);
@@ -88,7 +93,7 @@ export function addPickBufferOutputs(frag) {
88
93
  prelude.addline(reassignFeatureId);
89
94
  }
90
95
  addRenderPass(frag);
91
- frag.addDrawBuffersExtension(3);
96
+ frag.addDrawBuffersExtension(4);
92
97
  frag.set(18 /* FragmentShaderComponent.AssignFragData */, prelude.source + assignPickBufferOutputsMRT);
93
98
  }
94
99
  /** @internal */
@@ -101,7 +106,7 @@ export function addAltPickBufferOutputs(frag) {
101
106
  prelude.addline(" output0 = overrideColor(output0);");
102
107
  }
103
108
  addRenderPass(frag);
104
- frag.addDrawBuffersExtension(3);
109
+ frag.addDrawBuffersExtension(4);
105
110
  frag.set(18 /* FragmentShaderComponent.AssignFragData */, prelude.source + assignPickBufferOutputsMRT);
106
111
  }
107
112
  /** @internal */
@@ -1 +1 @@
1
- {"version":3,"file":"Fragment.js","sourceRoot":"","sources":["../../../../../../src/internal/render/webgl/glsl/Fragment.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 { FragmentShaderBuilder, FragmentShaderComponent, SourceBuilder, VariableType } from \"../ShaderBuilder\";\nimport { encodeDepthRgb } from \"./Decode\";\nimport { addRenderPass } from \"./RenderPass\";\n\n/** @internal */\nexport function addWindowToTexCoords(frag: FragmentShaderBuilder) {\n const windowCoordsToTexCoords = `\\nvec2 windowCoordsToTexCoords(vec2 wc) { return wc * u_invScreenSize; }\\n`;\n frag.addFunction(windowCoordsToTexCoords);\n frag.addUniform(\"u_invScreenSize\", VariableType.Vec2, (prog) => {\n prog.addProgramUniform(\"u_invScreenSize\", (uniform, params) => {\n params.target.uniforms.viewRect.bindInverseDimensions(uniform);\n });\n });\n}\n\n/** @internal */\nexport function addWhiteOnWhiteReversal(frag: FragmentShaderBuilder) {\n frag.addUniform(\"u_reverseWhiteOnWhite\", VariableType.Boolean, (prog) => {\n prog.addGraphicUniform(\"u_reverseWhiteOnWhite\", (uniform, params) => {\n const wantWoW = params.target.uniforms.style.wantWoWReversal;\n const doReversal = (wantWoW && params.geometry.wantWoWReversal(params.programParams)) ? 1 : 0;\n uniform.setUniform1i(doReversal);\n });\n });\n frag.set(FragmentShaderComponent.ReverseWhiteOnWhite, reverseWhiteOnWhite);\n}\n\nconst reverseWhiteOnWhite = `\n const vec3 white = vec3(1.0);\n const vec3 epsilon = vec3(0.0001);\n vec3 color = baseColor.rgb;\n vec3 delta = (color + epsilon) - white;\n vec4 wowColor = vec4(baseColor.rgb * vec3(float(delta.x <= 0.0 || delta.y <= 0.0 || delta.z <= 0.0)), baseColor.a); // set to black if almost white\n return u_reverseWhiteOnWhite ? wowColor : baseColor;\n`;\n\nconst multiplyAlpha = `\n if (u_renderPass >= kRenderPass_OpaqueLinear && u_renderPass <= kRenderPass_OpaqueGeneral)\n baseColor.a = 1.0;\n else\n baseColor = vec4(baseColor.rgb * baseColor.a, baseColor.a);\n`;\n\nconst computePickBufferOutputs = `${multiplyAlpha}\n vec4 output0 = baseColor;\n\n // Fix interpolation errors despite all vertices sending exact same feature_id...\n ivec4 feature_id_i = ivec4(feature_id * 255.0 + 0.5);\n vec4 output1 = vec4(feature_id_i) / 255.0;\n float linearDepth = computeLinearDepth(v_eyeSpace.z);\n vec4 output2 = vec4(renderOrder * 0.0625, encodeDepthRgb(linearDepth)); // near=1, far=0\n`;\n\nconst computeAltPickBufferOutputs = `${multiplyAlpha}\n vec4 output0 = baseColor;\n vec4 output1 = vec4(0.0);\n vec4 output2 = vec4(0.0);\n`;\n\nconst assignPickBufferOutputsMRT = `\n FragColor0 = output0;\n FragColor1 = output1;\n FragColor2 = output2;\n`;\n\nconst reassignFeatureId = \" output1 = overrideFeatureId(output1);\";\n\n/** @internal */\nexport function addPickBufferOutputs(frag: FragmentShaderBuilder): void {\n frag.addFunction(encodeDepthRgb);\n frag.addFunction(computeLinearDepth);\n\n const prelude = new SourceBuilder();\n const overrideOrder = frag.get(FragmentShaderComponent.OverrideRenderOrder);\n if (overrideOrder) {\n frag.addFunction(\"float overrideRenderOrder(float currentOrder)\", overrideOrder);\n prelude.addline(\" float renderOrder = overrideRenderOrder(u_renderOrder);\");\n } else {\n prelude.addline(\" float renderOrder = u_renderOrder;\");\n }\n\n prelude.add(computePickBufferOutputs);\n\n const overrideColor = frag.get(FragmentShaderComponent.OverrideColor);\n if (undefined !== overrideColor) {\n frag.addFunction(\"vec4 overrideColor(vec4 currentColor)\", overrideColor);\n prelude.addline(\" output0 = overrideColor(output0);\");\n }\n\n const overrideFeatureId = frag.get(FragmentShaderComponent.OverrideFeatureId);\n if (undefined !== overrideFeatureId) {\n frag.addFunction(\"vec4 overrideFeatureId(vec4 currentId)\", overrideFeatureId);\n prelude.addline(reassignFeatureId);\n }\n\n addRenderPass(frag);\n frag.addDrawBuffersExtension(3);\n frag.set(FragmentShaderComponent.AssignFragData, prelude.source + assignPickBufferOutputsMRT);\n}\n\n/** @internal */\nexport function addAltPickBufferOutputs(frag: FragmentShaderBuilder): void {\n const prelude = new SourceBuilder();\n prelude.add(computeAltPickBufferOutputs);\n\n const overrideColor = frag.get(FragmentShaderComponent.OverrideColor);\n if (undefined !== overrideColor) {\n frag.addFunction(\"vec4 overrideColor(vec4 currentColor)\", overrideColor);\n prelude.addline(\" output0 = overrideColor(output0);\");\n }\n\n addRenderPass(frag);\n frag.addDrawBuffersExtension(3);\n frag.set(FragmentShaderComponent.AssignFragData, prelude.source + assignPickBufferOutputsMRT);\n}\n\n/** @internal */\nexport function addFragColorWithPreMultipliedAlpha(frag: FragmentShaderBuilder): void {\n addRenderPass(frag);\n const overrideColor = frag.get(FragmentShaderComponent.OverrideColor);\n if (undefined === overrideColor) {\n frag.set(FragmentShaderComponent.AssignFragData, assignFragColorWithPreMultipliedAlpha);\n } else {\n frag.addFunction(\"vec4 overrideColor(vec4 currentColor)\", overrideColor);\n frag.set(FragmentShaderComponent.AssignFragData, overrideAndAssignFragColorWithPreMultipliedAlpha);\n }\n}\n\n/** @internal */\nexport const assignFragColor = \"FragColor = baseColor;\";\n\nconst assignFragColorWithPreMultipliedAlpha = `${multiplyAlpha}\n FragColor = baseColor;\n`;\n\nconst overrideAndAssignFragColorWithPreMultipliedAlpha = `${multiplyAlpha}\n vec4 fragColor = overrideColor(baseColor);\n FragColor = fragColor;\n`;\n\n/** @internal */\nexport const computeLinearDepth = `\nfloat computeLinearDepth(float eyeSpaceZ) {\n float eyeZ = -eyeSpaceZ;\n float near = u_frustum.x, far = u_frustum.y;\n float depthRange = far - near;\n float linearDepth = (eyeZ - near) / depthRange;\n return 1.0 - linearDepth;\n}\n`;\n"]}
1
+ {"version":3,"file":"Fragment.js","sourceRoot":"","sources":["../../../../../../src/internal/render/webgl/glsl/Fragment.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 { FragmentShaderBuilder, FragmentShaderComponent, SourceBuilder, VariableType } from \"../ShaderBuilder\";\nimport { encodeDepthRgb } from \"./Decode\";\nimport { addRenderPass } from \"./RenderPass\";\n\n/** @internal */\nexport function addWindowToTexCoords(frag: FragmentShaderBuilder) {\n const windowCoordsToTexCoords = `\\nvec2 windowCoordsToTexCoords(vec2 wc) { return wc * u_invScreenSize; }\\n`;\n frag.addFunction(windowCoordsToTexCoords);\n frag.addUniform(\"u_invScreenSize\", VariableType.Vec2, (prog) => {\n prog.addProgramUniform(\"u_invScreenSize\", (uniform, params) => {\n params.target.uniforms.viewRect.bindInverseDimensions(uniform);\n });\n });\n}\n\n/** @internal */\nexport function addWhiteOnWhiteReversal(frag: FragmentShaderBuilder) {\n frag.addUniform(\"u_reverseWhiteOnWhite\", VariableType.Boolean, (prog) => {\n prog.addGraphicUniform(\"u_reverseWhiteOnWhite\", (uniform, params) => {\n const wantWoW = params.target.uniforms.style.wantWoWReversal;\n const doReversal = (wantWoW && params.geometry.wantWoWReversal(params.programParams)) ? 1 : 0;\n uniform.setUniform1i(doReversal);\n });\n });\n frag.set(FragmentShaderComponent.ReverseWhiteOnWhite, reverseWhiteOnWhite);\n}\n\nconst reverseWhiteOnWhite = `\n const vec3 white = vec3(1.0);\n const vec3 epsilon = vec3(0.0001);\n vec3 color = baseColor.rgb;\n vec3 delta = (color + epsilon) - white;\n vec4 wowColor = vec4(baseColor.rgb * vec3(float(delta.x <= 0.0 || delta.y <= 0.0 || delta.z <= 0.0)), baseColor.a); // set to black if almost white\n return u_reverseWhiteOnWhite ? wowColor : baseColor;\n`;\n\nconst multiplyAlpha = `\n if (u_renderPass >= kRenderPass_OpaqueLinear && u_renderPass <= kRenderPass_OpaqueGeneral)\n baseColor.a = 1.0;\n else\n baseColor = vec4(baseColor.rgb * baseColor.a, baseColor.a);\n`;\n\nconst computePickBufferOutputs = `${multiplyAlpha}\n vec4 output0 = baseColor;\n\n // Fix interpolation errors despite all vertices sending exact same feature_id...\n ivec4 feature_id_i = ivec4(feature_id * 255.0 + 0.5);\n vec4 output1 = vec4(feature_id_i) / 255.0;\n float linearDepth = computeLinearDepth(v_eyeSpace.z);\n vec4 output2 = vec4(renderOrder * 0.0625, encodeDepthRgb(linearDepth)); // near=1, far=0\n`;\n\nconst computeAltPickBufferOutputs = `${multiplyAlpha}\n vec4 output0 = baseColor;\n vec4 output1 = vec4(0.0);\n vec4 output2 = vec4(0.0);\n vec4 output3 = vec4(0.0);\n`;\n\nconst assignPickBufferOutputsMRT = `\n FragColor0 = output0;\n FragColor1 = output1;\n FragColor2 = output2;\n FragColor3 = output3;\n`;\n\nconst reassignFeatureId = \" output1 = overrideFeatureId(output1);\";\n\n/** @internal */\nexport function addPickBufferOutputs(frag: FragmentShaderBuilder): void {\n frag.addFunction(encodeDepthRgb);\n frag.addFunction(computeLinearDepth);\n\n const prelude = new SourceBuilder();\n const overrideOrder = frag.get(FragmentShaderComponent.OverrideRenderOrder);\n if (overrideOrder) {\n frag.addFunction(\"float overrideRenderOrder(float currentOrder)\", overrideOrder);\n prelude.addline(\" float renderOrder = overrideRenderOrder(u_renderOrder);\");\n } else {\n prelude.addline(\" float renderOrder = u_renderOrder;\");\n }\n\n prelude.add(computePickBufferOutputs);\n\n const computeContourLineInfo = frag.get(FragmentShaderComponent.ComputeContourLineInfo) ?? \"return vec4(0.0);\";\n frag.addFunction(\"vec4 computeContourLineInfo()\", computeContourLineInfo);\n prelude.addline(\" vec4 output3 = computeContourLineInfo();\");\n\n const overrideColor = frag.get(FragmentShaderComponent.OverrideColor);\n if (undefined !== overrideColor) {\n frag.addFunction(\"vec4 overrideColor(vec4 currentColor)\", overrideColor);\n prelude.addline(\" output0 = overrideColor(output0);\");\n }\n\n const overrideFeatureId = frag.get(FragmentShaderComponent.OverrideFeatureId);\n if (undefined !== overrideFeatureId) {\n frag.addFunction(\"vec4 overrideFeatureId(vec4 currentId)\", overrideFeatureId);\n prelude.addline(reassignFeatureId);\n }\n\n addRenderPass(frag);\n frag.addDrawBuffersExtension(4);\n frag.set(FragmentShaderComponent.AssignFragData, prelude.source + assignPickBufferOutputsMRT);\n}\n\n/** @internal */\nexport function addAltPickBufferOutputs(frag: FragmentShaderBuilder): void {\n const prelude = new SourceBuilder();\n prelude.add(computeAltPickBufferOutputs);\n\n const overrideColor = frag.get(FragmentShaderComponent.OverrideColor);\n if (undefined !== overrideColor) {\n frag.addFunction(\"vec4 overrideColor(vec4 currentColor)\", overrideColor);\n prelude.addline(\" output0 = overrideColor(output0);\");\n }\n\n addRenderPass(frag);\n frag.addDrawBuffersExtension(4);\n frag.set(FragmentShaderComponent.AssignFragData, prelude.source + assignPickBufferOutputsMRT);\n}\n\n/** @internal */\nexport function addFragColorWithPreMultipliedAlpha(frag: FragmentShaderBuilder): void {\n addRenderPass(frag);\n const overrideColor = frag.get(FragmentShaderComponent.OverrideColor);\n if (undefined === overrideColor) {\n frag.set(FragmentShaderComponent.AssignFragData, assignFragColorWithPreMultipliedAlpha);\n } else {\n frag.addFunction(\"vec4 overrideColor(vec4 currentColor)\", overrideColor);\n frag.set(FragmentShaderComponent.AssignFragData, overrideAndAssignFragColorWithPreMultipliedAlpha);\n }\n}\n\n/** @internal */\nexport const assignFragColor = \"FragColor = baseColor;\";\n\nconst assignFragColorWithPreMultipliedAlpha = `${multiplyAlpha}\n FragColor = baseColor;\n`;\n\nconst overrideAndAssignFragColorWithPreMultipliedAlpha = `${multiplyAlpha}\n vec4 fragColor = overrideColor(baseColor);\n FragColor = fragColor;\n`;\n\n/** @internal */\nexport const computeLinearDepth = `\nfloat computeLinearDepth(float eyeSpaceZ) {\n float eyeZ = -eyeSpaceZ;\n float near = u_frustum.x, far = u_frustum.y;\n float depthRange = far - near;\n float linearDepth = (eyeZ - near) / depthRange;\n return 1.0 - linearDepth;\n}\n`;\n"]}
@@ -135,7 +135,7 @@ function addThematicToRealityMesh(builder, gradientTextureUnit) {
135
135
  builder.vert.addGlobal("g_hillshadeIndex", 2 /* VariableType.Float */);
136
136
  builder.addFunctionComputedVarying("v_n", 4 /* VariableType.Vec3 */, "computeLightingNormal", computeNormal);
137
137
  builder.frag.addGlobal("g_normal", 4 /* VariableType.Vec3 */);
138
- builder.frag.set(24 /* FragmentShaderComponent.FinalizeNormal */, finalizeNormal);
138
+ builder.frag.set(25 /* FragmentShaderComponent.FinalizeNormal */, finalizeNormal);
139
139
  addThematicDisplay(builder, false, true);
140
140
  builder.addInlineComputedVarying("v_thematicIndex", 2 /* VariableType.Float */, getComputeThematicIndex(builder.vert.usesInstancedGeometry, false, false));
141
141
  builder.vert.addUniform("u_worldToViewN", 6 /* VariableType.Mat3 */, (prog) => {
@@ -481,7 +481,7 @@ function addNormal(builder, animated) {
481
481
  });
482
482
  });
483
483
  finalizeNormal += finalizeNormalPostlude;
484
- builder.frag.set(24 /* FragmentShaderComponent.FinalizeNormal */, finalizeNormal);
484
+ builder.frag.set(25 /* FragmentShaderComponent.FinalizeNormal */, finalizeNormal);
485
485
  // Set to true to colorize surfaces based on normals (in world space).
486
486
  // You must also set checkMaxVarying to false in ProgramBuilder.buildProgram to avoid assertions, if using a non-optimized build.
487
487
  const debugNormals = false;
@@ -140,8 +140,9 @@ export function createClassifierTileTreeReference(classifiers, classifiedTree, i
140
140
  return new ClassifierTreeReference(classifiers, classifiedTree, iModel, source);
141
141
  }
142
142
  function createClassifierId(classifier, source) {
143
+ const disablePolyfaceDecimation = IModelApp.tileAdmin.disablePolyfaceDecimation;
143
144
  if (undefined === classifier)
144
- return { modelId: Id64.invalid, type: BatchType.PlanarClassifier, expansion: 0, animationId: undefined };
145
+ return { modelId: Id64.invalid, type: BatchType.PlanarClassifier, expansion: 0, animationId: undefined, disablePolyfaceDecimation };
145
146
  const type = classifier.flags.isVolumeClassifier ? BatchType.VolumeClassifier : BatchType.PlanarClassifier;
146
147
  const scriptInfo = IModelApp.tileAdmin.getScriptInfoForTreeId(classifier.modelId, source ? source[_scheduleScriptReference] : undefined);
147
148
  return {
@@ -150,6 +151,7 @@ function createClassifierId(classifier, source) {
150
151
  expansion: classifier.expand,
151
152
  animationId: scriptInfo?.animationId,
152
153
  timeline: scriptInfo?.timeline,
154
+ disablePolyfaceDecimation,
153
155
  };
154
156
  }
155
157
  //# sourceMappingURL=ClassifierTileTree.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ClassifierTileTree.js","sourceRoot":"","sources":["../../../../src/internal/tile/ClassifierTileTree.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F;;GAEG;AACH,OAAO,EAAE,cAAc,EAAE,wBAAwB,EAAE,cAAc,EAAE,yBAAyB,EAAE,IAAI,EAAc,MAAM,qBAAqB,CAAC;AAC5I,OAAO,EACL,SAAS,EAAwB,wBAAwB,EAAE,UAAU,GACtE,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAIvD,OAAO,EACiB,cAAc,EAAE,4BAA4B,EAAY,kBAAkB,EAAiB,iBAAiB,GACnI,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AAOzE,SAAS,UAAU,CAAC,GAAqB,EAAE,GAAqB;IAC9D,OAAO,cAAc,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,IAAI,cAAc,CAAC,GAAG,CAAC,SAAS,EAAE,GAAG,CAAC,SAAS,CAAC;WACpF,cAAc,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,OAAO,CAAC,IAAI,yBAAyB,CAAC,GAAG,CAAC,WAAW,EAAE,GAAG,CAAC,WAAW,CAAC;WACvG,wBAAwB,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC;AACtF,CAAC;AAED,MAAM,sBAAsB;IACT,qBAAqB,GAAG;QACvC,QAAQ,EAAE,SAAS;QACnB,UAAU,EAAE,kBAAkB,CAAC,QAAQ;QACvC,IAAI,EAAE,GAAG,EAAE,CAAC,SAAS;QACrB,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,CAAC,SAAS;QACjC,QAAQ,EAAE,KAAK,IAAI,EAAE,CAAC,SAAS;QAC/B,MAAM,EAAE,SAAwC;KACjD,CAAC;IAEK,kBAAkB,CAAC,GAAqB,EAAE,GAAqB;QACpE,OAAO,UAAU,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IAC9B,CAAC;IAEM,KAAK,CAAC,cAAc,CAAC,EAAoB,EAAE,MAAwB;QACxE,MAAM,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC;QACrC,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC;QAClD,IAAI,SAAS,KAAK,KAAK,IAAI,CAAC,CAAC,KAAK,YAAY,mBAAmB,CAAC;YAChE,OAAO,SAAS,CAAC;QAEnB,MAAM,KAAK,GAAG,wBAAwB,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;QAC5E,MAAM,KAAK,GAAG,MAAM,SAAS,CAAC,SAAS,CAAC,oBAAoB,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QAE5E,MAAM,MAAM,GAAG,4BAA4B,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,CAAC,OAAO,EAAE;YACrE,KAAK,EAAE,KAAK;YACZ,eAAe,EAAE,KAAK;YACtB,IAAI,EAAE,IAAI;YACV,SAAS,EAAE,EAAE,CAAC,IAAI;YAClB,QAAQ,EAAE,EAAE,CAAC,QAAQ;SACtB,CAAC,CAAC;QAEH,OAAO,IAAI,cAAc,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IACxC,CAAC;IAEM,QAAQ,CAAC,EAAoB,EAAE,MAAwB;QAC5D,OAAO,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,gBAAgB,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,qBAAqB,CAAC;IACzG,CAAC;IAEM,yBAAyB,CAAC,QAAyB,EAAE,cAA0B,EAAE,KAA+D;QACrJ,gIAAgI;QAChI,KAAK,MAAM,IAAI,IAAI,KAAK;YACtB,IAAI,cAAc,KAAK,IAAI,CAAC,EAAE,CAAC,WAAW;gBACxC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC;IACpC,CAAC;IAEM,gBAAgB,CAAC,QAAyB,EAAE,KAA+D;QAChH,KAAK,MAAM,IAAI,IAAI,KAAK;YACtB,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC;IAClC,CAAC;CACF;AAED,MAAM,sBAAsB,GAAG,IAAI,sBAAsB,EAAE,CAAC;AAE5D,MAAM,OAAgB,kCAAmC,SAAQ,iBAAiB;IAIhF,IAAW,YAAY,KAAyB,OAAO,SAAS,CAAC,CAAC,CAAC;CACpE;AAED,MAAM,uBAAwB,SAAQ,kCAAkC;IAC9D,GAAG,CAAmB;IACb,YAAY,CAA0B;IACtC,OAAO,CAAgC;IACvC,OAAO,CAAmB;IAC1B,eAAe,CAAoB;IAC5C,MAAM,CAAgB;IAE9B,YAAmB,WAAoC,EAAE,cAAiC,EAAE,MAAwB,EAAE,MAAqC;QACzJ,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,GAAG,GAAG,kBAAkB,CAAC,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAC1D,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;QACtB,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;QACtB,IAAI,CAAC,YAAY,GAAG,WAAW,CAAC;QAChC,IAAI,CAAC,eAAe,GAAG,cAAc,CAAC;QACtC,IAAI,CAAC,MAAM,GAAG,sBAAsB,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IAClE,CAAC;IAED,IAAW,WAAW,KAA8B,OAAO,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;IAC/E,IAAW,gBAAgB,KAA0C,OAAO,IAAI,CAAC,WAAW,CAAC,gBAAgB,CAAC,CAAC,CAAC;IAEhH,IAAoB,YAAY;QAC9B,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAW,SAAS;QAClB,MAAM,KAAK,GAAG,kBAAkB,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QACzE,IAAI,CAAC,KAAK,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,CAAC;YACtC,IAAI,CAAC,GAAG,GAAG,KAAK,CAAC;YACjB,IAAI,CAAC,MAAM,GAAG,sBAAsB,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QACxE,CAAC;QAED,OAAO,IAAI,CAAC,gBAAgB,EAAE,iBAAiB,EAAE,SAAS,IAAI,IAAI,CAAC,MAAM,CAAC;IAC5E,CAAC;IAEe,iBAAiB,CAAC,KAA2B;QAC3D,qFAAqF;QACrF,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QAErC,MAAM,UAAU,GAAG,IAAI,CAAC,gBAAgB,CAAC;QACzC,MAAM,cAAc,GAAG,SAAS,KAAK,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC;QACtF,IAAI,SAAS,KAAK,cAAc;YAC9B,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAC9B,CAAC;IAED,IAAW,QAAQ;QACjB,IAAI,IAAI,CAAC,gBAAgB,EAAE,KAAK,CAAC,kBAAkB,EAAE,CAAC;YACpD,OAAO,KAAK,CAAC;QACf,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAW,SAAS;QAClB,OAAO;YACL,UAAU,EAAE,UAAU,CAAC,WAAW;YAClC,YAAY,EAAE,IAAI,EAAO,8DAA8D;YACvF,QAAQ,EAAE,KAAK;YACf,QAAQ,EAAE,KAAK;YACf,OAAO,EAAE,KAAK;YACd,UAAU,EAAE,KAAK;YACjB,SAAS,EAAE,KAAK;YAChB,gBAAgB,EAAE,KAAK;YACvB,YAAY,EAAE,KAAK;YACnB,WAAW,EAAE,KAAK;SACnB,CAAC;IACJ,CAAC;IAED,6EAA6E;IAC7D,UAAU,CAAC,OAAqB;QAC9C,IAAI,IAAI,CAAC,QAAQ;YACf,OAAO;QAET,MAAM,cAAc,GAAG,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;QAC7D,IAAI,SAAS,KAAK,cAAc;YAC9B,OAAO;QAET,MAAM,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC,gBAAgB,CAAC;QACtD,IAAI,SAAS,KAAK,UAAU;YAC1B,OAAO;QAET,MAAM,cAAc,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;QAC7C,IAAI,SAAS,KAAK,cAAc;YAC9B,OAAO;QAET,OAAO,CAAC,mBAAmB,CAAC,UAAU,EAAE,cAAc,CAAC,OAAO,CAAC,CAAC;QAChE,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;IAC5B,CAAC;CAEF;AAED,MAAM,UAAU,iCAAiC,CAAC,WAAoC,EAAE,cAAiC,EAAE,MAAwB,EAAE,MAAqC;IACxL,OAAO,IAAI,uBAAuB,CAAC,WAAW,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;AAClF,CAAC;AAED,SAAS,kBAAkB,CAAC,UAAyC,EAAE,MAAiD;IACtH,IAAI,SAAS,KAAK,UAAU;QAC1B,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE,SAAS,CAAC,gBAAgB,EAAE,SAAS,EAAE,CAAC,EAAE,WAAW,EAAE,SAAS,EAAE,CAAC;IAE3G,MAAM,IAAI,GAAG,UAAU,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC,CAAC,SAAS,CAAC,gBAAgB,CAAC;IAC3G,MAAM,UAAU,GAAG,SAAS,CAAC,SAAS,CAAC,sBAAsB,CAAC,UAAU,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IACzI,OAAO;QACL,OAAO,EAAE,UAAU,CAAC,OAAO;QAC3B,IAAI;QACJ,SAAS,EAAE,UAAU,CAAC,MAAM;QAC5B,WAAW,EAAE,UAAU,EAAE,WAAW;QACpC,QAAQ,EAAE,UAAU,EAAE,QAAQ;KAC/B,CAAC;AACJ,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 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 \"../../tile/internal\";\nimport { _scheduleScriptReference } from \"../../common/internal/Symbols\";\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\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\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\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 ? source[_scheduleScriptReference] : undefined);\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/internal/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 \"../../tile/internal\";\nimport { _scheduleScriptReference } from \"../../common/internal/Symbols\";\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\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\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\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 const disablePolyfaceDecimation = IModelApp.tileAdmin.disablePolyfaceDecimation;\n if (undefined === classifier)\n return { modelId: Id64.invalid, type: BatchType.PlanarClassifier, expansion: 0, animationId: undefined, disablePolyfaceDecimation };\n\n const type = classifier.flags.isVolumeClassifier ? BatchType.VolumeClassifier : BatchType.PlanarClassifier;\n const scriptInfo = IModelApp.tileAdmin.getScriptInfoForTreeId(classifier.modelId, source ? source[_scheduleScriptReference] : undefined);\n return {\n modelId: classifier.modelId,\n type,\n expansion: classifier.expand,\n animationId: scriptInfo?.animationId,\n timeline: scriptInfo?.timeline,\n disablePolyfaceDecimation,\n };\n}\n"]}
@@ -10,6 +10,7 @@ import { TileDrawArgs, TileGraphicType, TileTreeReference } from "../../tile/int
10
10
  export interface GraphicsCollector {
11
11
  addGraphic(graphic: RenderGraphic): void;
12
12
  }
13
+ /** @internal*/
13
14
  export declare class GraphicsCollectorDrawArgs extends TileDrawArgs {
14
15
  private _planes;
15
16
  private _worldToViewMap;
@@ -20,5 +21,6 @@ export declare class GraphicsCollectorDrawArgs extends TileDrawArgs {
20
21
  drawGraphicsWithType(_graphicType: TileGraphicType, graphics: GraphicBranch): void;
21
22
  drawGraphics(): void;
22
23
  static create(context: SceneContext, collector: GraphicsCollector, ref: TileTreeReference, planes: FrustumPlanes, worldToViewMap: Map4d): TileDrawArgs | undefined;
24
+ get shouldCollectClassifierGraphics(): boolean;
23
25
  }
24
26
  //# sourceMappingURL=GraphicsCollector.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"GraphicsCollector.d.ts","sourceRoot":"","sources":["../../../../src/internal/tile/GraphicsCollector.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAEvF,MAAM,WAAW,iBAAiB;IAChC,UAAU,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI,CAAC;CAC1C;AAED,qBAAa,yBAA0B,SAAQ,YAAY;IACzD,OAAO,CAAC,OAAO,CAAgB;IAC/B,OAAO,CAAC,eAAe,CAAQ;IAC/B,OAAO,CAAC,UAAU,CAAoB;IAEtC,OAAO;IAQP,IAAoB,aAAa,IAAI,aAAa,CAAyB;IAC3E,IAAoB,cAAc,IAAI,KAAK,CAAiC;IAC5D,oBAAoB,CAAC,YAAY,EAAE,eAAe,EAAE,QAAQ,EAAE,aAAa;IAI3E,YAAY,IAAI,IAAI;WAQtB,MAAM,CAAC,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,iBAAiB,EAAE,GAAG,EAAE,iBAAiB,EAAE,MAAM,EAAE,aAAa,EAAE,cAAc,EAAE,KAAK,GAAG,YAAY,GAAG,SAAS;CAO1K"}
1
+ {"version":3,"file":"GraphicsCollector.d.ts","sourceRoot":"","sources":["../../../../src/internal/tile/GraphicsCollector.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAEvF,MAAM,WAAW,iBAAiB;IAChC,UAAU,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI,CAAC;CAC1C;AAED,eAAe;AACf,qBAAa,yBAA0B,SAAQ,YAAY;IACzD,OAAO,CAAC,OAAO,CAAgB;IAC/B,OAAO,CAAC,eAAe,CAAQ;IAC/B,OAAO,CAAC,UAAU,CAAoB;IAEtC,OAAO;IAQP,IAAoB,aAAa,IAAI,aAAa,CAAyB;IAC3E,IAAoB,cAAc,IAAI,KAAK,CAAiC;IAC5D,oBAAoB,CAAC,YAAY,EAAE,eAAe,EAAE,QAAQ,EAAE,aAAa;IAI3E,YAAY,IAAI,IAAI;WAQtB,MAAM,CAAC,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,iBAAiB,EAAE,GAAG,EAAE,iBAAiB,EAAE,MAAM,EAAE,aAAa,EAAE,cAAc,EAAE,KAAK,GAAG,YAAY,GAAG,SAAS;IAQzK,IAAoB,+BAA+B,IAAI,OAAO,CAAkB;CACjF"}
@@ -6,6 +6,7 @@
6
6
  * @module Tiles
7
7
  */
8
8
  import { TileDrawArgs } from "../../tile/internal";
9
+ /** @internal*/
9
10
  export class GraphicsCollectorDrawArgs extends TileDrawArgs {
10
11
  _planes;
11
12
  _worldToViewMap;
@@ -34,5 +35,6 @@ export class GraphicsCollectorDrawArgs extends TileDrawArgs {
34
35
  return undefined;
35
36
  return new GraphicsCollectorDrawArgs(planes, worldToViewMap, collector, args);
36
37
  }
38
+ get shouldCollectClassifierGraphics() { return false; }
37
39
  }
38
40
  //# sourceMappingURL=GraphicsCollector.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"GraphicsCollector.js","sourceRoot":"","sources":["../../../../src/internal/tile/GraphicsCollector.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F;;GAEG;AAOH,OAAO,EAAE,YAAY,EAAsC,MAAM,qBAAqB,CAAC;AAMvF,MAAM,OAAO,yBAA0B,SAAQ,YAAY;IACjD,OAAO,CAAgB;IACvB,eAAe,CAAQ;IACvB,UAAU,CAAoB;IAEtC,YAAoB,MAAqB,EAAE,cAAqB,EAAE,SAA4B,EAAE,IAAkB;QAChH,KAAK,CAAC,IAAI,CAAC,CAAC;QAEZ,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;QACtB,IAAI,CAAC,eAAe,GAAG,cAAc,CAAC;QACtC,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;IAC9B,CAAC;IAED,IAAoB,aAAa,KAAoB,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;IAC3E,IAAoB,cAAc,KAAY,OAAO,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC;IAC5D,oBAAoB,CAAC,YAA6B,EAAE,QAAuB;QACzF,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;IACjF,CAAC;IAEe,YAAY;QAC1B,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;YAC3B,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;YACxC,IAAI,SAAS,KAAK,QAAQ;gBACxB,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;QACzC,CAAC;IACH,CAAC;IAEM,MAAM,CAAC,MAAM,CAAC,OAAqB,EAAE,SAA4B,EAAE,GAAsB,EAAE,MAAqB,EAAE,cAAqB;QAC5I,MAAM,IAAI,GAAG,GAAG,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;QACzC,IAAI,SAAS,KAAK,IAAI;YACpB,OAAO,SAAS,CAAC;QAEnB,OAAO,IAAI,yBAAyB,CAAC,MAAM,EAAE,cAAc,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;IAChF,CAAC;CACF","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 { Map4d } from \"@itwin/core-geometry\";\nimport { FrustumPlanes } from \"@itwin/core-common\";\nimport { GraphicBranch } from \"../../render/GraphicBranch\";\nimport { RenderGraphic } from \"../../render/RenderGraphic\";\nimport { SceneContext } from \"../../ViewContext\";\nimport { TileDrawArgs, TileGraphicType, TileTreeReference } from \"../../tile/internal\";\n\nexport interface GraphicsCollector {\n addGraphic(graphic: RenderGraphic): void;\n}\n\nexport class GraphicsCollectorDrawArgs extends TileDrawArgs {\n private _planes: FrustumPlanes;\n private _worldToViewMap: Map4d;\n private _collector: GraphicsCollector;\n\n private constructor(planes: FrustumPlanes, worldToViewMap: Map4d, collector: GraphicsCollector, args: TileDrawArgs) {\n super(args);\n\n this._planes = planes;\n this._worldToViewMap = worldToViewMap;\n this._collector = collector;\n }\n\n public override get frustumPlanes(): FrustumPlanes { return this._planes; }\n public override get worldToViewMap(): Map4d { return this._worldToViewMap; }\n public override drawGraphicsWithType(_graphicType: TileGraphicType, graphics: GraphicBranch) {\n this._collector.addGraphic(this.context.createBranch(graphics, this.location));\n }\n\n public override drawGraphics(): void {\n if (!this.graphics.isEmpty) {\n const graphics = this.produceGraphics();\n if (undefined !== graphics)\n this._collector.addGraphic(graphics);\n }\n }\n\n public static create(context: SceneContext, collector: GraphicsCollector, ref: TileTreeReference, planes: FrustumPlanes, worldToViewMap: Map4d): TileDrawArgs | undefined {\n const args = ref.createDrawArgs(context);\n if (undefined === args)\n return undefined;\n\n return new GraphicsCollectorDrawArgs(planes, worldToViewMap, collector, args);\n }\n}\n"]}
1
+ {"version":3,"file":"GraphicsCollector.js","sourceRoot":"","sources":["../../../../src/internal/tile/GraphicsCollector.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F;;GAEG;AAOH,OAAO,EAAE,YAAY,EAAsC,MAAM,qBAAqB,CAAC;AAMvF,eAAe;AACf,MAAM,OAAO,yBAA0B,SAAQ,YAAY;IACjD,OAAO,CAAgB;IACvB,eAAe,CAAQ;IACvB,UAAU,CAAoB;IAEtC,YAAoB,MAAqB,EAAE,cAAqB,EAAE,SAA4B,EAAE,IAAkB;QAChH,KAAK,CAAC,IAAI,CAAC,CAAC;QAEZ,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;QACtB,IAAI,CAAC,eAAe,GAAG,cAAc,CAAC;QACtC,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;IAC9B,CAAC;IAED,IAAoB,aAAa,KAAoB,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;IAC3E,IAAoB,cAAc,KAAY,OAAO,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC;IAC5D,oBAAoB,CAAC,YAA6B,EAAE,QAAuB;QACzF,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;IACjF,CAAC;IAEe,YAAY;QAC1B,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;YAC3B,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;YACxC,IAAI,SAAS,KAAK,QAAQ;gBACxB,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;QACzC,CAAC;IACH,CAAC;IAEM,MAAM,CAAC,MAAM,CAAC,OAAqB,EAAE,SAA4B,EAAE,GAAsB,EAAE,MAAqB,EAAE,cAAqB;QAC5I,MAAM,IAAI,GAAG,GAAG,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;QACzC,IAAI,SAAS,KAAK,IAAI;YACpB,OAAO,SAAS,CAAC;QAEnB,OAAO,IAAI,yBAAyB,CAAC,MAAM,EAAE,cAAc,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;IAChF,CAAC;IAED,IAAoB,+BAA+B,KAAc,OAAO,KAAK,CAAC,CAAC,CAAC;CACjF","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 { Map4d } from \"@itwin/core-geometry\";\nimport { FrustumPlanes } from \"@itwin/core-common\";\nimport { GraphicBranch } from \"../../render/GraphicBranch\";\nimport { RenderGraphic } from \"../../render/RenderGraphic\";\nimport { SceneContext } from \"../../ViewContext\";\nimport { TileDrawArgs, TileGraphicType, TileTreeReference } from \"../../tile/internal\";\n\nexport interface GraphicsCollector {\n addGraphic(graphic: RenderGraphic): void;\n}\n\n/** @internal*/\nexport class GraphicsCollectorDrawArgs extends TileDrawArgs {\n private _planes: FrustumPlanes;\n private _worldToViewMap: Map4d;\n private _collector: GraphicsCollector;\n\n private constructor(planes: FrustumPlanes, worldToViewMap: Map4d, collector: GraphicsCollector, args: TileDrawArgs) {\n super(args);\n\n this._planes = planes;\n this._worldToViewMap = worldToViewMap;\n this._collector = collector;\n }\n\n public override get frustumPlanes(): FrustumPlanes { return this._planes; }\n public override get worldToViewMap(): Map4d { return this._worldToViewMap; }\n public override drawGraphicsWithType(_graphicType: TileGraphicType, graphics: GraphicBranch) {\n this._collector.addGraphic(this.context.createBranch(graphics, this.location));\n }\n\n public override drawGraphics(): void {\n if (!this.graphics.isEmpty) {\n const graphics = this.produceGraphics();\n if (undefined !== graphics)\n this._collector.addGraphic(graphics);\n }\n }\n\n public static create(context: SceneContext, collector: GraphicsCollector, ref: TileTreeReference, planes: FrustumPlanes, worldToViewMap: Map4d): TileDrawArgs | undefined {\n const args = ref.createDrawArgs(context);\n if (undefined === args)\n return undefined;\n\n return new GraphicsCollectorDrawArgs(planes, worldToViewMap, collector, args);\n }\n\n public override get shouldCollectClassifierGraphics(): boolean { return false; }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"IModelTile.d.ts","sourceRoot":"","sources":["../../../../src/internal/tile/IModelTile.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,EAAwB,WAAW,EAAc,MAAM,qBAAqB,CAAC;AAEpF,OAAO,EACL,QAAQ,EAAyH,SAAS,EAC3I,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EACY,cAAc,EAAE,IAAI,EAAE,iBAAiB,EAAE,WAAW,EAAE,YAAY,EAAkB,UAAU,EAAE,WAAW,EAC5H,kBAAkB,EACnB,MAAM,uBAAuB,CAAC;AAE/B;GACG;AACH,MAAM,WAAW,gBAAiB,SAAQ,UAAU;IAClD,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,GAAG,SAAS,GAAG,gBAAgB,CAS3G;AAED;;GAEG;AACH,oBAAY,YAAY;IACtB,EAAE,IAAA;IACF,GAAG,IAAA;CACJ;AAED,MAAM,WAAW,iBAAkB,SAAQ,WAAW;IACpD,0FAA0F;IAC1F,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,qEAAqE;IACrE,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED;GACG;AACH,qBAAa,UAAW,SAAQ,IAAI;IAClC,OAAO,CAAC,eAAe,CAAC,CAAS;IACjC,OAAO,CAAC,kBAAkB,CAAC,CAAS;IACpC;;OAEG;IACI,cAAc,CAAC,EAAE,kBAAkB,CAAC;gBAExB,MAAM,EAAE,gBAAgB,EAAE,IAAI,EAAE,cAAc;IAYjE,IAAW,UAAU,IAAI,cAAc,CAAwC;IAC/E,IAAW,cAAc,IAAI,UAAU,EAAE,GAAG,SAAS,CAAsD;IAC3G,IAAW,iBAAiB,IAAI,MAAM,CAAyC;IAE/E,IAAW,cAAc,IAAI,MAAM,GAAG,SAAS,CAAiC;IAChF,IAAW,iBAAiB,YAAgD;IAC5E,IAAoB,WAAW,IAAI,MAAM,CAExC;IAED,IAAW,OAAO,IAAI,kBAAkB,CAEvC;IAEY,cAAc,IAAI,OAAO,CAAC,WAAW,CAAC,QAAQ,CAAC;IAI/C,WAAW,CAAC,IAAI,EAAE,WAAW,CAAC,YAAY,EAAE,MAAM,EAAE,YAAY,EAAE,UAAU,CAAC,EAAE,MAAM,OAAO,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAgCtH,UAAU,CAAC,OAAO,EAAE,iBAAiB,GAAG,IAAI;IAoB5D,SAAS,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,IAAI,EAAE,KAAK,IAAI,EAAE,MAAM,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,GAAG,IAAI;IAkBlG,cAAuB,iBAAiB,IAAI,QAAQ,CAEnD;cAEkB,eAAe,CAAC,OAAO,EAAE,cAAc,EAAE,IAAI,EAAE,iBAAiB,GAAG,IAAI;IAgBnF,aAAa,CAAC,SAAS,EAAE,WAAW,GAAG,IAAI;IAc3C,WAAW,CAAC,QAAQ,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,GAAG,YAAY;CAkI3F"}
1
+ {"version":3,"file":"IModelTile.d.ts","sourceRoot":"","sources":["../../../../src/internal/tile/IModelTile.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,EAAwB,WAAW,EAAc,MAAM,qBAAqB,CAAC;AAEpF,OAAO,EACL,QAAQ,EAAyH,SAAS,EAC3I,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EACY,cAAc,EAAE,IAAI,EAAE,iBAAiB,EAAE,WAAW,EAAE,YAAY,EAAkB,UAAU,EAAE,WAAW,EAC5H,kBAAkB,EACnB,MAAM,uBAAuB,CAAC;AAE/B;GACG;AACH,MAAM,WAAW,gBAAiB,SAAQ,UAAU;IAClD,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,GAAG,SAAS,GAAG,gBAAgB,CAS3G;AAED;;GAEG;AACH,oBAAY,YAAY;IACtB,EAAE,IAAA;IACF,GAAG,IAAA;CACJ;AAED,MAAM,WAAW,iBAAkB,SAAQ,WAAW;IACpD,0FAA0F;IAC1F,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,qEAAqE;IACrE,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED;GACG;AACH,qBAAa,UAAW,SAAQ,IAAI;IAClC,OAAO,CAAC,eAAe,CAAC,CAAS;IACjC,OAAO,CAAC,kBAAkB,CAAC,CAAS;IACpC;;OAEG;IACI,cAAc,CAAC,EAAE,kBAAkB,CAAC;gBAExB,MAAM,EAAE,gBAAgB,EAAE,IAAI,EAAE,cAAc;IAYjE,IAAW,UAAU,IAAI,cAAc,CAAwC;IAC/E,IAAW,cAAc,IAAI,UAAU,EAAE,GAAG,SAAS,CAAsD;IAC3G,IAAW,iBAAiB,IAAI,MAAM,CAAyC;IAE/E,IAAW,cAAc,IAAI,MAAM,GAAG,SAAS,CAAiC;IAChF,IAAW,iBAAiB,YAAgD;IAC5E,IAAoB,WAAW,IAAI,MAAM,CAExC;IAED,IAAW,OAAO,IAAI,kBAAkB,CAEvC;IAEY,cAAc,IAAI,OAAO,CAAC,WAAW,CAAC,QAAQ,CAAC;IAI/C,WAAW,CAAC,IAAI,EAAE,WAAW,CAAC,YAAY,EAAE,MAAM,EAAE,YAAY,EAAE,UAAU,CAAC,EAAE,MAAM,OAAO,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAuCtH,UAAU,CAAC,OAAO,EAAE,iBAAiB,GAAG,IAAI;IAoB5D,SAAS,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,IAAI,EAAE,KAAK,IAAI,EAAE,MAAM,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,GAAG,IAAI;IAkBlG,cAAuB,iBAAiB,IAAI,QAAQ,CAEnD;cAEkB,eAAe,CAAC,OAAO,EAAE,cAAc,EAAE,IAAI,EAAE,iBAAiB,GAAG,IAAI;IAgBnF,aAAa,CAAC,SAAS,EAAE,WAAW,GAAG,IAAI;IAc3C,WAAW,CAAC,QAAQ,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,GAAG,YAAY;CAkI3F"}
@@ -6,7 +6,7 @@
6
6
  * @module Tiles
7
7
  */
8
8
  import { assert, BentleyError, ByteStream } from "@itwin/core-bentley";
9
- import { Range3d } from "@itwin/core-geometry";
9
+ import { Range3d, Transform } from "@itwin/core-geometry";
10
10
  import { ColorDef, computeChildTileProps, computeChildTileRanges, computeTileChordTolerance, LinePixels, TileFormat, } from "@itwin/core-common";
11
11
  import { IModelApp } from "../../IModelApp";
12
12
  import { addRangeGraphic, Tile, TileBoundingBoxes, TileLoadStatus, TileTreeLoadStatus, TileVisibility, } from "./../../tile/internal";
@@ -72,6 +72,7 @@ export class IModelTile extends Tile {
72
72
  if (format !== TileFormat.IModel)
73
73
  return content;
74
74
  const sizeMultiplier = this.hasSizeMultiplier ? this.sizeMultiplier : undefined;
75
+ const ecefTransform = this.tree.iModel.isGeoLocated ? this.tree.iModel.getEcefTransform() : Transform.createIdentity();
75
76
  try {
76
77
  content = await this.iModelTree.decoder.decode({
77
78
  stream: streamBuffer,
@@ -79,6 +80,11 @@ export class IModelTile extends Tile {
79
80
  system,
80
81
  isCanceled,
81
82
  sizeMultiplier,
83
+ tileData: {
84
+ ecefTransform,
85
+ range: this.range,
86
+ layerClassifiers: this.tree.layerHandler?.layerClassifiers,
87
+ },
82
88
  });
83
89
  }
84
90
  catch {
@@ -1 +1 @@
1
- {"version":3,"file":"IModelTile.js","sourceRoot":"","sources":["../../../../src/internal/tile/IModelTile.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 { assert, BentleyError, BeTimePoint, ByteStream } from \"@itwin/core-bentley\";\nimport { Range3d } from \"@itwin/core-geometry\";\nimport {\n ColorDef, computeChildTileProps, computeChildTileRanges, computeTileChordTolerance, ElementAlignedBox3d, LinePixels, TileFormat, TileProps,\n} from \"@itwin/core-common\";\nimport { IModelApp } from \"../../IModelApp\";\nimport { GraphicBuilder } from \"../../render/GraphicBuilder\";\nimport { RenderSystem } from \"../../render/RenderSystem\";\nimport {\n addRangeGraphic, IModelTileTree, Tile, TileBoundingBoxes, TileContent, TileDrawArgs, TileLoadStatus, TileParams, TileRequest,\n TileRequestChannel, TileTreeLoadStatus, TileVisibility,\n} from \"./../../tile/internal\";\n\n/** Parameters used to construct an [[IModelTile]].\n */\nexport interface IModelTileParams extends TileParams {\n sizeMultiplier?: number;\n}\n\nexport function iModelTileParamsFromJSON(props: TileProps, parent: IModelTile | undefined): IModelTileParams {\n const { contentId, maximumSize, isLeaf, sizeMultiplier } = props;\n const range = Range3d.fromJSON(props.range);\n\n let contentRange;\n if (undefined !== props.contentRange)\n contentRange = Range3d.fromJSON<ElementAlignedBox3d>(props.contentRange);\n\n return { contentId, range, maximumSize, isLeaf, parent, contentRange, sizeMultiplier };\n}\n\n/**\n * Indicates whether a parent tile should be drawn in place of a child tile.\n */\nexport enum SelectParent {\n No,\n Yes,\n}\n\nexport interface IModelTileContent extends TileContent {\n /** If this tile was produced by refinement, the multiplier applied to its screen size. */\n sizeMultiplier?: number;\n /** A bitfield describing empty sub-volumes of this tile's volume. */\n emptySubRangeMask?: number;\n}\n\n/** A tile belonging to an [[IModelTileTree].\n */\nexport class IModelTile extends Tile {\n private _sizeMultiplier?: number;\n private _emptySubRangeMask?: number;\n /** If an initial attempt to obtain this tile's content (e.g., from cloud storage cache) failed,\n * the next channel to try.\n */\n public requestChannel?: TileRequestChannel;\n\n public constructor(params: IModelTileParams, tree: IModelTileTree) {\n super(params, tree);\n this._sizeMultiplier = params.sizeMultiplier;\n\n if (!this.isLeaf && this.tree.is3d && !this.isReady) { // ###TODO: Want to know specifically if tree is *spatial*.\n // Do not sub-divide such that chord tolerance would be below specified minimum, if minimum defined.\n const minTolerance = IModelApp.tileAdmin.minimumSpatialTolerance;\n if (minTolerance > 0 && computeTileChordTolerance(this, this.tree.is3d, this.iModelTree.tileScreenSize) <= minTolerance)\n this.setLeaf();\n }\n }\n\n public get iModelTree(): IModelTileTree { return this.tree as IModelTileTree; }\n public get iModelChildren(): IModelTile[] | undefined { return this.children as IModelTile[] | undefined; }\n public get emptySubRangeMask(): number { return this._emptySubRangeMask ?? 0; }\n\n public get sizeMultiplier(): number | undefined { return this._sizeMultiplier; }\n public get hasSizeMultiplier() { return undefined !== this.sizeMultiplier; }\n public override get maximumSize(): number {\n return super.maximumSize * (this.sizeMultiplier ?? 1.0);\n }\n\n public get channel(): TileRequestChannel {\n return IModelApp.tileAdmin.channels.getIModelTileChannel(this);\n }\n\n public async requestContent(): Promise<TileRequest.Response> {\n return IModelApp.tileAdmin.generateTileContent(this);\n }\n\n public async readContent(data: TileRequest.ResponseData, system: RenderSystem, isCanceled?: () => boolean): Promise<IModelTileContent> {\n if (undefined === isCanceled)\n isCanceled = () => !this.isLoading;\n\n assert(data instanceof Uint8Array);\n const streamBuffer = ByteStream.fromUint8Array(data);\n\n const position = streamBuffer.curPos;\n const format = streamBuffer.readUint32();\n streamBuffer.curPos = position;\n\n let content: IModelTileContent = { isLeaf: true };\n assert(TileFormat.IModel === format);\n if (format !== TileFormat.IModel)\n return content;\n\n const sizeMultiplier = this.hasSizeMultiplier ? this.sizeMultiplier : undefined;\n try {\n content = await this.iModelTree.decoder.decode({\n stream: streamBuffer,\n options: { tileId: this.contentId },\n system,\n isCanceled,\n sizeMultiplier,\n });\n } catch {\n //\n }\n\n return content;\n }\n\n public override setContent(content: IModelTileContent): void {\n super.setContent(content);\n\n this._emptySubRangeMask = content.emptySubRangeMask;\n\n // NB: If this tile has no graphics, it may or may not have children - but we don't want to load the children until\n // this tile is too coarse for view based on its size in pixels.\n // That is different than an \"undisplayable\" tile (maximumSize=0) whose children should be loaded immediately.\n if (undefined !== content.graphic && 0 === this.maximumSize)\n this._maximumSize = this.iModelTree.tileScreenSize;\n\n const sizeMult = content.sizeMultiplier;\n if (undefined !== sizeMult && (undefined === this._sizeMultiplier || sizeMult > this._sizeMultiplier)) {\n this._sizeMultiplier = sizeMult;\n this._contentId = this.iModelTree.contentIdProvider.idFromParentAndMultiplier(this.contentId, sizeMult);\n if (undefined !== this.children && this.children.length > 1)\n this.disposeChildren();\n }\n }\n\n protected _loadChildren(resolve: (children: Tile[]) => void, reject: (error: Error) => void): void {\n try {\n const tree = this.iModelTree;\n const kids = computeChildTileProps(this, tree.contentIdProvider, tree);\n IModelApp.tileAdmin.onTilesElided(kids.numEmpty);\n\n const children: IModelTile[] = [];\n for (const props of kids.children) {\n const child = new IModelTile(iModelTileParamsFromJSON(props, this), tree);\n children.push(child);\n }\n\n resolve(children);\n } catch (err) {\n reject(err instanceof Error ? err : new Error(BentleyError.getErrorMessage(err)));\n }\n }\n\n protected override get rangeGraphicColor(): ColorDef {\n return this.hasSizeMultiplier ? ColorDef.red : super.rangeGraphicColor;\n }\n\n protected override addRangeGraphic(builder: GraphicBuilder, type: TileBoundingBoxes): void {\n if (TileBoundingBoxes.ChildVolumes !== type) {\n super.addRangeGraphic(builder, type);\n return;\n }\n\n const ranges = computeChildTileRanges(this, this.iModelTree);\n for (const range of ranges) {\n const color = range.isEmpty ? ColorDef.blue : ColorDef.green;\n const pixels = !range.isEmpty ? LinePixels.HiddenLine : LinePixels.Solid;\n const width = !range.isEmpty ? 2 : 1;\n builder.setSymbology(color, color, width, pixels);\n addRangeGraphic(builder, range.range, this.tree.is2d);\n }\n }\n\n public pruneChildren(olderThan: BeTimePoint): void {\n // A tile's usage marker indicates its the most recent time its *children* were used.\n if (this.usageMarker.isExpired(olderThan)) {\n this.disposeChildren();\n return;\n }\n\n // this node has been used recently. Keep it, but potentially unload its grandchildren.\n const children = this.iModelChildren;\n if (undefined !== children)\n for (const child of children)\n child.pruneChildren(olderThan);\n }\n\n public selectTiles(selected: Tile[], args: TileDrawArgs, numSkipped: number): SelectParent {\n let vis = this.computeVisibility(args);\n if (TileVisibility.OutsideFrustum === vis)\n return SelectParent.No;\n\n const maxDepth = this.iModelTree.debugMaxDepth;\n if (undefined !== maxDepth && this.depth >= maxDepth)\n vis = TileVisibility.Visible;\n\n if (TileVisibility.Visible === vis) {\n // This tile is of appropriate resolution to draw. If need loading or refinement, enqueue.\n if (!this.isReady)\n args.insertMissing(this);\n\n if (this.hasGraphics) {\n // It can be drawn - select it\n args.markReady(this);\n selected.push(this);\n } else if (!this.isReady) {\n // It can't be drawn. Try to draw children in its place; otherwise draw the parent.\n // Do not load/request the children for this purpose.\n const initialSize = selected.length;\n const kids = this.iModelChildren;\n if (undefined === kids)\n return SelectParent.Yes;\n\n // Find any descendant to draw, until we exceed max initial tiles to skip.\n if (this.depth < this.iModelTree.maxInitialTilesToSkip) {\n for (const kid of kids) {\n if (SelectParent.Yes === kid.selectTiles(selected, args, numSkipped)) {\n selected.length = initialSize;\n return SelectParent.Yes;\n }\n\n return SelectParent.No;\n }\n }\n\n // If all visible direct children can be drawn, draw them.\n for (const kid of kids) {\n if (TileVisibility.OutsideFrustum !== kid.computeVisibility(args)) {\n if (!kid.hasGraphics) {\n selected.length = initialSize;\n return SelectParent.Yes;\n } else {\n selected.push(kid);\n }\n }\n }\n\n args.markUsed(this);\n }\n\n // We're drawing either this tile, or its direct children.\n return SelectParent.No;\n }\n\n // This tile is too coarse to draw. Try to draw something more appropriate.\n // If it is not ready to draw, we may want to skip loading in favor of loading its descendants.\n // If we previously loaded and later unloaded content for this tile to free memory, don't force it to reload its content - proceed to children.\n let canSkipThisTile = (this._hadGraphics && !this.hasGraphics) || this.depth < this.iModelTree.maxInitialTilesToSkip;\n if (canSkipThisTile) {\n numSkipped = 1;\n } else {\n canSkipThisTile = this.isReady || this.isParentDisplayable || this.depth < this.iModelTree.maxInitialTilesToSkip;\n if (canSkipThisTile && this.isDisplayable) { // skipping an undisplayable tile doesn't count toward the maximum\n // Some tiles do not sub-divide - they only facet the same geometry to a higher resolution. We can skip directly to the correct resolution.\n const isNotReady = !this.isReady && !this.hasGraphics && !this.hasSizeMultiplier;\n if (isNotReady) {\n if (numSkipped >= this.iModelTree.maxTilesToSkip)\n canSkipThisTile = false;\n else\n numSkipped += 1;\n }\n }\n }\n\n const childrenLoadStatus = this.loadChildren(); // NB: asynchronous\n const children = canSkipThisTile ? this.iModelChildren : undefined;\n if (canSkipThisTile && TileTreeLoadStatus.Loading === childrenLoadStatus) {\n args.markChildrenLoading();\n args.markUsed(this);\n }\n\n if (undefined !== children) {\n // If we are the root tile and we are not displayable, then we want to draw *any* currently available children in our place, or else we would draw nothing.\n // Otherwise, if we want to draw children in our place, we should wait for *all* of them to load, or else we would show missing chunks where not-yet-loaded children belong.\n const isUndisplayableRootTile = this.isUndisplayableRootTile;\n args.markUsed(this);\n let drawChildren = true;\n const initialSize = selected.length;\n for (const child of children) {\n // NB: We must continue iterating children so that they can be requested if missing.\n if (SelectParent.Yes === child.selectTiles(selected, args, numSkipped)) {\n if (child.loadStatus === TileLoadStatus.NotFound) {\n // At least one child we want to draw failed to load. e.g., we reached max depth of map tile tree. Draw parent instead.\n drawChildren = canSkipThisTile = false;\n } else {\n // At least one child we want to draw is not yet loaded. Wait for it to load before drawing it and its siblings, unless we have nothing to draw in their place.\n drawChildren = isUndisplayableRootTile;\n }\n }\n }\n\n if (drawChildren)\n return SelectParent.No;\n\n // Some types of tiles (like maps) allow the ready children to be drawn on top of the parent while other children are not yet loaded.\n if (args.parentsAndChildrenExclusive)\n selected.length = initialSize;\n }\n\n if (this.isReady) {\n if (this.hasGraphics) {\n selected.push(this);\n if (!canSkipThisTile) {\n // This tile is too coarse, but we require loading it before we can start loading higher-res children.\n args.markReady(this);\n }\n }\n\n return SelectParent.No;\n }\n\n // This tile is not ready to be drawn. Request it *only* if we cannot skip it.\n if (!canSkipThisTile)\n args.insertMissing(this);\n\n return this.isParentDisplayable ? SelectParent.Yes : SelectParent.No;\n }\n}\n"]}
1
+ {"version":3,"file":"IModelTile.js","sourceRoot":"","sources":["../../../../src/internal/tile/IModelTile.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 { assert, BentleyError, BeTimePoint, ByteStream } from \"@itwin/core-bentley\";\nimport { Range3d, Transform } from \"@itwin/core-geometry\";\nimport {\n ColorDef, computeChildTileProps, computeChildTileRanges, computeTileChordTolerance, ElementAlignedBox3d, LinePixels, TileFormat, TileProps,\n} from \"@itwin/core-common\";\nimport { IModelApp } from \"../../IModelApp\";\nimport { GraphicBuilder } from \"../../render/GraphicBuilder\";\nimport { RenderSystem } from \"../../render/RenderSystem\";\nimport {\n addRangeGraphic, IModelTileTree, Tile, TileBoundingBoxes, TileContent, TileDrawArgs, TileLoadStatus, TileParams, TileRequest,\n TileRequestChannel, TileTreeLoadStatus, TileVisibility,\n} from \"./../../tile/internal\";\n\n/** Parameters used to construct an [[IModelTile]].\n */\nexport interface IModelTileParams extends TileParams {\n sizeMultiplier?: number;\n}\n\nexport function iModelTileParamsFromJSON(props: TileProps, parent: IModelTile | undefined): IModelTileParams {\n const { contentId, maximumSize, isLeaf, sizeMultiplier } = props;\n const range = Range3d.fromJSON(props.range);\n\n let contentRange;\n if (undefined !== props.contentRange)\n contentRange = Range3d.fromJSON<ElementAlignedBox3d>(props.contentRange);\n\n return { contentId, range, maximumSize, isLeaf, parent, contentRange, sizeMultiplier };\n}\n\n/**\n * Indicates whether a parent tile should be drawn in place of a child tile.\n */\nexport enum SelectParent {\n No,\n Yes,\n}\n\nexport interface IModelTileContent extends TileContent {\n /** If this tile was produced by refinement, the multiplier applied to its screen size. */\n sizeMultiplier?: number;\n /** A bitfield describing empty sub-volumes of this tile's volume. */\n emptySubRangeMask?: number;\n}\n\n/** A tile belonging to an [[IModelTileTree].\n */\nexport class IModelTile extends Tile {\n private _sizeMultiplier?: number;\n private _emptySubRangeMask?: number;\n /** If an initial attempt to obtain this tile's content (e.g., from cloud storage cache) failed,\n * the next channel to try.\n */\n public requestChannel?: TileRequestChannel;\n\n public constructor(params: IModelTileParams, tree: IModelTileTree) {\n super(params, tree);\n this._sizeMultiplier = params.sizeMultiplier;\n\n if (!this.isLeaf && this.tree.is3d && !this.isReady) { // ###TODO: Want to know specifically if tree is *spatial*.\n // Do not sub-divide such that chord tolerance would be below specified minimum, if minimum defined.\n const minTolerance = IModelApp.tileAdmin.minimumSpatialTolerance;\n if (minTolerance > 0 && computeTileChordTolerance(this, this.tree.is3d, this.iModelTree.tileScreenSize) <= minTolerance)\n this.setLeaf();\n }\n }\n\n public get iModelTree(): IModelTileTree { return this.tree as IModelTileTree; }\n public get iModelChildren(): IModelTile[] | undefined { return this.children as IModelTile[] | undefined; }\n public get emptySubRangeMask(): number { return this._emptySubRangeMask ?? 0; }\n\n public get sizeMultiplier(): number | undefined { return this._sizeMultiplier; }\n public get hasSizeMultiplier() { return undefined !== this.sizeMultiplier; }\n public override get maximumSize(): number {\n return super.maximumSize * (this.sizeMultiplier ?? 1.0);\n }\n\n public get channel(): TileRequestChannel {\n return IModelApp.tileAdmin.channels.getIModelTileChannel(this);\n }\n\n public async requestContent(): Promise<TileRequest.Response> {\n return IModelApp.tileAdmin.generateTileContent(this);\n }\n\n public async readContent(data: TileRequest.ResponseData, system: RenderSystem, isCanceled?: () => boolean): Promise<IModelTileContent> {\n if (undefined === isCanceled)\n isCanceled = () => !this.isLoading;\n\n assert(data instanceof Uint8Array);\n const streamBuffer = ByteStream.fromUint8Array(data);\n\n const position = streamBuffer.curPos;\n const format = streamBuffer.readUint32();\n streamBuffer.curPos = position;\n\n let content: IModelTileContent = { isLeaf: true };\n assert(TileFormat.IModel === format);\n if (format !== TileFormat.IModel)\n return content;\n\n const sizeMultiplier = this.hasSizeMultiplier ? this.sizeMultiplier : undefined;\n\n const ecefTransform = this.tree.iModel.isGeoLocated ? this.tree.iModel.getEcefTransform() : Transform.createIdentity();\n try {\n content = await this.iModelTree.decoder.decode({\n stream: streamBuffer,\n options: { tileId: this.contentId },\n system,\n isCanceled,\n sizeMultiplier,\n tileData: {\n ecefTransform,\n range: this.range,\n layerClassifiers: this.tree.layerHandler?.layerClassifiers,\n },\n });\n } catch {\n //\n }\n\n return content;\n }\n\n public override setContent(content: IModelTileContent): void {\n super.setContent(content);\n\n this._emptySubRangeMask = content.emptySubRangeMask;\n\n // NB: If this tile has no graphics, it may or may not have children - but we don't want to load the children until\n // this tile is too coarse for view based on its size in pixels.\n // That is different than an \"undisplayable\" tile (maximumSize=0) whose children should be loaded immediately.\n if (undefined !== content.graphic && 0 === this.maximumSize)\n this._maximumSize = this.iModelTree.tileScreenSize;\n\n const sizeMult = content.sizeMultiplier;\n if (undefined !== sizeMult && (undefined === this._sizeMultiplier || sizeMult > this._sizeMultiplier)) {\n this._sizeMultiplier = sizeMult;\n this._contentId = this.iModelTree.contentIdProvider.idFromParentAndMultiplier(this.contentId, sizeMult);\n if (undefined !== this.children && this.children.length > 1)\n this.disposeChildren();\n }\n }\n\n protected _loadChildren(resolve: (children: Tile[]) => void, reject: (error: Error) => void): void {\n try {\n const tree = this.iModelTree;\n const kids = computeChildTileProps(this, tree.contentIdProvider, tree);\n IModelApp.tileAdmin.onTilesElided(kids.numEmpty);\n\n const children: IModelTile[] = [];\n for (const props of kids.children) {\n const child = new IModelTile(iModelTileParamsFromJSON(props, this), tree);\n children.push(child);\n }\n\n resolve(children);\n } catch (err) {\n reject(err instanceof Error ? err : new Error(BentleyError.getErrorMessage(err)));\n }\n }\n\n protected override get rangeGraphicColor(): ColorDef {\n return this.hasSizeMultiplier ? ColorDef.red : super.rangeGraphicColor;\n }\n\n protected override addRangeGraphic(builder: GraphicBuilder, type: TileBoundingBoxes): void {\n if (TileBoundingBoxes.ChildVolumes !== type) {\n super.addRangeGraphic(builder, type);\n return;\n }\n\n const ranges = computeChildTileRanges(this, this.iModelTree);\n for (const range of ranges) {\n const color = range.isEmpty ? ColorDef.blue : ColorDef.green;\n const pixels = !range.isEmpty ? LinePixels.HiddenLine : LinePixels.Solid;\n const width = !range.isEmpty ? 2 : 1;\n builder.setSymbology(color, color, width, pixels);\n addRangeGraphic(builder, range.range, this.tree.is2d);\n }\n }\n\n public pruneChildren(olderThan: BeTimePoint): void {\n // A tile's usage marker indicates its the most recent time its *children* were used.\n if (this.usageMarker.isExpired(olderThan)) {\n this.disposeChildren();\n return;\n }\n\n // this node has been used recently. Keep it, but potentially unload its grandchildren.\n const children = this.iModelChildren;\n if (undefined !== children)\n for (const child of children)\n child.pruneChildren(olderThan);\n }\n\n public selectTiles(selected: Tile[], args: TileDrawArgs, numSkipped: number): SelectParent {\n let vis = this.computeVisibility(args);\n if (TileVisibility.OutsideFrustum === vis)\n return SelectParent.No;\n\n const maxDepth = this.iModelTree.debugMaxDepth;\n if (undefined !== maxDepth && this.depth >= maxDepth)\n vis = TileVisibility.Visible;\n\n if (TileVisibility.Visible === vis) {\n // This tile is of appropriate resolution to draw. If need loading or refinement, enqueue.\n if (!this.isReady)\n args.insertMissing(this);\n\n if (this.hasGraphics) {\n // It can be drawn - select it\n args.markReady(this);\n selected.push(this);\n } else if (!this.isReady) {\n // It can't be drawn. Try to draw children in its place; otherwise draw the parent.\n // Do not load/request the children for this purpose.\n const initialSize = selected.length;\n const kids = this.iModelChildren;\n if (undefined === kids)\n return SelectParent.Yes;\n\n // Find any descendant to draw, until we exceed max initial tiles to skip.\n if (this.depth < this.iModelTree.maxInitialTilesToSkip) {\n for (const kid of kids) {\n if (SelectParent.Yes === kid.selectTiles(selected, args, numSkipped)) {\n selected.length = initialSize;\n return SelectParent.Yes;\n }\n\n return SelectParent.No;\n }\n }\n\n // If all visible direct children can be drawn, draw them.\n for (const kid of kids) {\n if (TileVisibility.OutsideFrustum !== kid.computeVisibility(args)) {\n if (!kid.hasGraphics) {\n selected.length = initialSize;\n return SelectParent.Yes;\n } else {\n selected.push(kid);\n }\n }\n }\n\n args.markUsed(this);\n }\n\n // We're drawing either this tile, or its direct children.\n return SelectParent.No;\n }\n\n // This tile is too coarse to draw. Try to draw something more appropriate.\n // If it is not ready to draw, we may want to skip loading in favor of loading its descendants.\n // If we previously loaded and later unloaded content for this tile to free memory, don't force it to reload its content - proceed to children.\n let canSkipThisTile = (this._hadGraphics && !this.hasGraphics) || this.depth < this.iModelTree.maxInitialTilesToSkip;\n if (canSkipThisTile) {\n numSkipped = 1;\n } else {\n canSkipThisTile = this.isReady || this.isParentDisplayable || this.depth < this.iModelTree.maxInitialTilesToSkip;\n if (canSkipThisTile && this.isDisplayable) { // skipping an undisplayable tile doesn't count toward the maximum\n // Some tiles do not sub-divide - they only facet the same geometry to a higher resolution. We can skip directly to the correct resolution.\n const isNotReady = !this.isReady && !this.hasGraphics && !this.hasSizeMultiplier;\n if (isNotReady) {\n if (numSkipped >= this.iModelTree.maxTilesToSkip)\n canSkipThisTile = false;\n else\n numSkipped += 1;\n }\n }\n }\n\n const childrenLoadStatus = this.loadChildren(); // NB: asynchronous\n const children = canSkipThisTile ? this.iModelChildren : undefined;\n if (canSkipThisTile && TileTreeLoadStatus.Loading === childrenLoadStatus) {\n args.markChildrenLoading();\n args.markUsed(this);\n }\n\n if (undefined !== children) {\n // If we are the root tile and we are not displayable, then we want to draw *any* currently available children in our place, or else we would draw nothing.\n // Otherwise, if we want to draw children in our place, we should wait for *all* of them to load, or else we would show missing chunks where not-yet-loaded children belong.\n const isUndisplayableRootTile = this.isUndisplayableRootTile;\n args.markUsed(this);\n let drawChildren = true;\n const initialSize = selected.length;\n for (const child of children) {\n // NB: We must continue iterating children so that they can be requested if missing.\n if (SelectParent.Yes === child.selectTiles(selected, args, numSkipped)) {\n if (child.loadStatus === TileLoadStatus.NotFound) {\n // At least one child we want to draw failed to load. e.g., we reached max depth of map tile tree. Draw parent instead.\n drawChildren = canSkipThisTile = false;\n } else {\n // At least one child we want to draw is not yet loaded. Wait for it to load before drawing it and its siblings, unless we have nothing to draw in their place.\n drawChildren = isUndisplayableRootTile;\n }\n }\n }\n\n if (drawChildren)\n return SelectParent.No;\n\n // Some types of tiles (like maps) allow the ready children to be drawn on top of the parent while other children are not yet loaded.\n if (args.parentsAndChildrenExclusive)\n selected.length = initialSize;\n }\n\n if (this.isReady) {\n if (this.hasGraphics) {\n selected.push(this);\n if (!canSkipThisTile) {\n // This tile is too coarse, but we require loading it before we can start loading higher-res children.\n args.markReady(this);\n }\n }\n\n return SelectParent.No;\n }\n\n // This tile is not ready to be drawn. Request it *only* if we cannot skip it.\n if (!canSkipThisTile)\n args.insertMissing(this);\n\n return this.isParentDisplayable ? SelectParent.Yes : SelectParent.No;\n }\n}\n"]}
@@ -5,7 +5,7 @@ import { GuidString, Id64Array, Id64String } from "@itwin/core-bentley";
5
5
  import { Range3d } from "@itwin/core-geometry";
6
6
  import { BatchType, ContentIdProvider, EdgeOptions, IModelTileTreeId, IModelTileTreeProps, RenderSchedule, TileProps } from "@itwin/core-common";
7
7
  import { IModelConnection } from "../../IModelConnection";
8
- import { ImdlDecoder, IModelTile, Tile, TileDrawArgs, TileLoadPriority, TileTree, TileTreeParams } from "../../tile/internal";
8
+ import { ImdlDecoder, IModelTile, LayerTileTreeHandler, MapLayerTreeSetting, Tile, TileDrawArgs, TileLoadPriority, TileTree, TileTreeParams } from "../../tile/internal";
9
9
  export interface IModelTileTreeOptions {
10
10
  readonly allowInstancing: boolean;
11
11
  readonly edges: EdgeOptions | false;
@@ -55,6 +55,9 @@ export declare class IModelTileTree extends TileTree {
55
55
  * used by draw().
56
56
  */
57
57
  private _numStaticTilesSelected;
58
+ layerImageryTrees: MapLayerTreeSetting[];
59
+ private readonly _layerHandler;
60
+ get layerHandler(): LayerTileTreeHandler;
58
61
  constructor(params: IModelTileTreeParams, treeId: IModelTileTreeId);
59
62
  [Symbol.dispose](): void;
60
63
  get maxDepth(): number;
@@ -1 +1 @@
1
- {"version":3,"file":"IModelTileTree.d.ts","sourceRoot":"","sources":["../../../../src/internal/tile/IModelTileTree.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"IModelTileTree.d.ts","sourceRoot":"","sources":["../../../../src/internal/tile/IModelTileTree.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,EAAuB,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAC7F,OAAO,EAAE,OAAO,EAAa,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EACL,SAAS,EAAE,iBAAiB,EAAE,WAAW,EACzC,gBAAgB,EAAE,mBAAmB,EAAwB,cAAc,EAAE,SAAS,EACvF,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAI1D,OAAO,EACkC,WAAW,EAAE,UAAU,EAA8C,oBAAoB,EAAE,mBAAmB,EAAE,IAAI,EAC9I,YAAY,EAAE,gBAAgB,EAA+C,QAAQ,EAAE,cAAc,EACnH,MAAM,qBAAqB,CAAC;AAE7B,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,eAAe,EAAE,OAAO,CAAC;IAClC,QAAQ,CAAC,KAAK,EAAE,WAAW,GAAG,KAAK,CAAC;IACpC,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC;IAC9B,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,QAAQ,EAAE,cAAc,CAAC,aAAa,GAAG,SAAS,CAAC;CAC7D;AAKD;GACG;AACH,MAAM,WAAW,oBAAqB,SAAQ,cAAc;IAC1D,QAAQ,EAAE,SAAS,CAAC;IACpB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,YAAY,CAAC,EAAE,UAAU,CAAC;IAC1B,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;IACvB,OAAO,EAAE,qBAAqB,CAAC;IAC/B,mBAAmB,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC5C;AAED,wBAAgB,4BAA4B,CAAC,KAAK,EAAE,mBAAmB,EAAE,MAAM,EAAE,gBAAgB,EAAE,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,qBAAqB,GAAG,oBAAoB,CAiC5K;AAyFD;GACG;AACH,MAAM,MAAM,cAAc,GAAG,IAAI,GAAG;IAAE,cAAc,EAAE,MAAM,CAAC;IAAC,kBAAkB,EAAE,CAAC,SAAS,EAAE,IAAI,KAAK,IAAI,CAAA;CAAE,CAAC;AAiK9G;;GAEG;AACH,qBAAa,cAAe,SAAQ,QAAQ;IAC1C,SAAgB,OAAO,EAAE,WAAW,CAAC;IACrC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAW;IACrC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAwB;IACjD,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAC,CAAuB;IAC7D,SAAgB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5C,SAAgB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtC,SAAgB,cAAc,EAAE,MAAM,CAAC;IACvC,SAAgB,qBAAqB,EAAE,MAAM,CAAC;IAC9C,SAAgB,iBAAiB,EAAE,iBAAiB,CAAC;IACrD,SAAgB,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChD,SAAgB,cAAc,EAAE,MAAM,CAAC;IACvC,SAAgB,gBAAgB,EAAE,gBAAgB,CAAC;IACnD,6FAA6F;IACtF,aAAa,CAAC,EAAE,MAAM,CAAC;IAC9B;;;OAGG;IACH,OAAO,CAAC,uBAAuB,CAAK;IAC7B,iBAAiB,EAAE,mBAAmB,EAAE,CAAM;IAErD,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAuB;IACrD,IAAoB,YAAY,yBAAiC;gBAE9C,MAAM,EAAE,oBAAoB,EAAE,MAAM,EAAE,gBAAgB;IAkC1D,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,IAAI;IAKvC,IAAW,QAAQ,WAAiB;IACpC,IAAW,QAAQ,IAAI,IAAI,CAA2B;IACtD,iCAAiC;IACjC,IAAW,YAAY,IAAI,UAAU,CAAwC;IAC7E,IAAW,IAAI,YAAiC;IAChD,IAAoB,kBAAkB,YAAoB;IAC1D,IAAW,iBAAiB,OAAgC;IAE5D,IAAW,SAAS,IAAI,SAAS,CAAoC;IACrE,IAAW,WAAW,IAAI,WAAW,GAAG,KAAK,CAAgC;IAC7E,IAAW,QAAQ,IAAI,cAAc,CAAC,aAAa,GAAG,SAAS,CAAmC;IAElG,IAAoB,YAAY,IAAI,gBAAgB,CAGnD;IAED,SAAS,CAAC,YAAY,CAAC,IAAI,EAAE,YAAY,GAAG,IAAI,EAAE;IAY3C,IAAI,CAAC,IAAI,EAAE,YAAY,GAAG,IAAI;IAO9B,KAAK,IAAI,IAAI;IAKpB,kCAAkC;IAClC,IAAW,SAAS,IAAI,QAAQ,GAAG,SAAS,GAAG,aAAa,GAAG,UAAU,CAExE;IAED,kCAAkC;IAClC,IAAW,cAAc,IAAI,SAAS,CAGrC;IAEM,qBAAqB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS;IAIjE,IAAW,sBAAsB,IAAI,OAAO,CAE3C;CACF"}