@itwin/core-frontend 4.0.0-dev.2 → 4.0.0-dev.22

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 (534) hide show
  1. package/CHANGELOG.md +24 -1
  2. package/lib/cjs/IModelApp.d.ts +2 -3
  3. package/lib/cjs/IModelApp.d.ts.map +1 -1
  4. package/lib/cjs/IModelApp.js +3 -7
  5. package/lib/cjs/IModelApp.js.map +1 -1
  6. package/lib/cjs/IModelConnection.d.ts +1 -1
  7. package/lib/cjs/IModelConnection.js +1 -1
  8. package/lib/cjs/IModelConnection.js.map +1 -1
  9. package/lib/cjs/NoRenderApp.d.ts +11 -4
  10. package/lib/cjs/NoRenderApp.d.ts.map +1 -1
  11. package/lib/cjs/NoRenderApp.js +13 -6
  12. package/lib/cjs/NoRenderApp.js.map +1 -1
  13. package/lib/cjs/SelectionSet.d.ts +0 -1
  14. package/lib/cjs/SelectionSet.d.ts.map +1 -1
  15. package/lib/cjs/SelectionSet.js +0 -1
  16. package/lib/cjs/SelectionSet.js.map +1 -1
  17. package/lib/cjs/SubCategoriesCache.d.ts.map +1 -1
  18. package/lib/cjs/SubCategoriesCache.js +0 -1
  19. package/lib/cjs/SubCategoriesCache.js.map +1 -1
  20. package/lib/cjs/render/RealityMeshParams.d.ts +6 -3
  21. package/lib/cjs/render/RealityMeshParams.d.ts.map +1 -1
  22. package/lib/cjs/render/RealityMeshParams.js +15 -5
  23. package/lib/cjs/render/RealityMeshParams.js.map +1 -1
  24. package/lib/cjs/render/RenderSystem.d.ts +5 -16
  25. package/lib/cjs/render/RenderSystem.d.ts.map +1 -1
  26. package/lib/cjs/render/RenderSystem.js +0 -6
  27. package/lib/cjs/render/RenderSystem.js.map +1 -1
  28. package/lib/cjs/render/ScreenSpaceEffectBuilder.d.ts +3 -4
  29. package/lib/cjs/render/ScreenSpaceEffectBuilder.d.ts.map +1 -1
  30. package/lib/cjs/render/ScreenSpaceEffectBuilder.js.map +1 -1
  31. package/lib/cjs/render/webgl/AttributeBuffers.d.ts +9 -79
  32. package/lib/cjs/render/webgl/AttributeBuffers.d.ts.map +1 -1
  33. package/lib/cjs/render/webgl/AttributeBuffers.js +19 -152
  34. package/lib/cjs/render/webgl/AttributeBuffers.js.map +1 -1
  35. package/lib/cjs/render/webgl/BackgroundMapDrape.d.ts.map +1 -1
  36. package/lib/cjs/render/webgl/BackgroundMapDrape.js +0 -3
  37. package/lib/cjs/render/webgl/BackgroundMapDrape.js.map +1 -1
  38. package/lib/cjs/render/webgl/BranchUniforms.d.ts.map +1 -1
  39. package/lib/cjs/render/webgl/BranchUniforms.js +0 -8
  40. package/lib/cjs/render/webgl/BranchUniforms.js.map +1 -1
  41. package/lib/cjs/render/webgl/ClipStack.d.ts +0 -1
  42. package/lib/cjs/render/webgl/ClipStack.d.ts.map +1 -1
  43. package/lib/cjs/render/webgl/ClipStack.js +2 -6
  44. package/lib/cjs/render/webgl/ClipStack.js.map +1 -1
  45. package/lib/cjs/render/webgl/ClipVolume.d.ts.map +1 -1
  46. package/lib/cjs/render/webgl/ClipVolume.js +1 -5
  47. package/lib/cjs/render/webgl/ClipVolume.js.map +1 -1
  48. package/lib/cjs/render/webgl/ClippingProgram.d.ts +3 -2
  49. package/lib/cjs/render/webgl/ClippingProgram.d.ts.map +1 -1
  50. package/lib/cjs/render/webgl/ClippingProgram.js +10 -37
  51. package/lib/cjs/render/webgl/ClippingProgram.js.map +1 -1
  52. package/lib/cjs/render/webgl/DrawCommand.d.ts +2 -2
  53. package/lib/cjs/render/webgl/DrawCommand.d.ts.map +1 -1
  54. package/lib/cjs/render/webgl/DrawCommand.js +1 -1
  55. package/lib/cjs/render/webgl/DrawCommand.js.map +1 -1
  56. package/lib/cjs/render/webgl/FeatureOverrides.js +1 -1
  57. package/lib/cjs/render/webgl/FeatureOverrides.js.map +1 -1
  58. package/lib/cjs/render/webgl/FloatRGBA.d.ts.map +1 -1
  59. package/lib/cjs/render/webgl/FloatRGBA.js +0 -4
  60. package/lib/cjs/render/webgl/FloatRGBA.js.map +1 -1
  61. package/lib/cjs/render/webgl/FrameBuffer.js.map +1 -1
  62. package/lib/cjs/render/webgl/GLTimer.d.ts.map +1 -1
  63. package/lib/cjs/render/webgl/GLTimer.js +2 -35
  64. package/lib/cjs/render/webgl/GLTimer.js.map +1 -1
  65. package/lib/cjs/render/webgl/PlanarClassifier.d.ts.map +1 -1
  66. package/lib/cjs/render/webgl/PlanarClassifier.js +13 -71
  67. package/lib/cjs/render/webgl/PlanarClassifier.js.map +1 -1
  68. package/lib/cjs/render/webgl/PointCloud.d.ts.map +1 -1
  69. package/lib/cjs/render/webgl/PointCloud.js +1 -3
  70. package/lib/cjs/render/webgl/PointCloud.js.map +1 -1
  71. package/lib/cjs/render/webgl/RenderBuffer.d.ts +1 -1
  72. package/lib/cjs/render/webgl/RenderBuffer.d.ts.map +1 -1
  73. package/lib/cjs/render/webgl/RenderBuffer.js +2 -3
  74. package/lib/cjs/render/webgl/RenderBuffer.js.map +1 -1
  75. package/lib/cjs/render/webgl/RenderFlags.d.ts +1 -2
  76. package/lib/cjs/render/webgl/RenderFlags.d.ts.map +1 -1
  77. package/lib/cjs/render/webgl/RenderFlags.js +4 -6
  78. package/lib/cjs/render/webgl/RenderFlags.js.map +1 -1
  79. package/lib/cjs/render/webgl/SceneCompositor.d.ts +0 -2
  80. package/lib/cjs/render/webgl/SceneCompositor.d.ts.map +1 -1
  81. package/lib/cjs/render/webgl/SceneCompositor.js +754 -1135
  82. package/lib/cjs/render/webgl/SceneCompositor.js.map +1 -1
  83. package/lib/cjs/render/webgl/ScreenSpaceEffect.js +1 -1
  84. package/lib/cjs/render/webgl/ScreenSpaceEffect.js.map +1 -1
  85. package/lib/cjs/render/webgl/ShaderBuilder.d.ts +1 -2
  86. package/lib/cjs/render/webgl/ShaderBuilder.d.ts.map +1 -1
  87. package/lib/cjs/render/webgl/ShaderBuilder.js +13 -48
  88. package/lib/cjs/render/webgl/ShaderBuilder.js.map +1 -1
  89. package/lib/cjs/render/webgl/ShaderProgram.d.ts +1 -2
  90. package/lib/cjs/render/webgl/ShaderProgram.d.ts.map +1 -1
  91. package/lib/cjs/render/webgl/ShaderProgram.js.map +1 -1
  92. package/lib/cjs/render/webgl/SolarShadowMap.d.ts.map +1 -1
  93. package/lib/cjs/render/webgl/SolarShadowMap.js +5 -26
  94. package/lib/cjs/render/webgl/SolarShadowMap.js.map +1 -1
  95. package/lib/cjs/render/webgl/System.d.ts +10 -10
  96. package/lib/cjs/render/webgl/System.d.ts.map +1 -1
  97. package/lib/cjs/render/webgl/System.js +39 -122
  98. package/lib/cjs/render/webgl/System.js.map +1 -1
  99. package/lib/cjs/render/webgl/Technique.d.ts +4 -5
  100. package/lib/cjs/render/webgl/Technique.d.ts.map +1 -1
  101. package/lib/cjs/render/webgl/Technique.js +4 -28
  102. package/lib/cjs/render/webgl/Technique.js.map +1 -1
  103. package/lib/cjs/render/webgl/Texture.d.ts.map +1 -1
  104. package/lib/cjs/render/webgl/Texture.js +14 -18
  105. package/lib/cjs/render/webgl/Texture.js.map +1 -1
  106. package/lib/cjs/render/webgl/ThematicSensors.d.ts +4 -3
  107. package/lib/cjs/render/webgl/ThematicSensors.d.ts.map +1 -1
  108. package/lib/cjs/render/webgl/ThematicSensors.js +9 -50
  109. package/lib/cjs/render/webgl/ThematicSensors.js.map +1 -1
  110. package/lib/cjs/render/webgl/ThematicUniforms.js +1 -1
  111. package/lib/cjs/render/webgl/ThematicUniforms.js.map +1 -1
  112. package/lib/cjs/render/webgl/UniformHandle.d.ts.map +1 -1
  113. package/lib/cjs/render/webgl/UniformHandle.js +1 -4
  114. package/lib/cjs/render/webgl/UniformHandle.js.map +1 -1
  115. package/lib/cjs/render/webgl/glsl/AmbientOcclusion.d.ts +1 -2
  116. package/lib/cjs/render/webgl/glsl/AmbientOcclusion.d.ts.map +1 -1
  117. package/lib/cjs/render/webgl/glsl/AmbientOcclusion.js +1 -1
  118. package/lib/cjs/render/webgl/glsl/AmbientOcclusion.js.map +1 -1
  119. package/lib/cjs/render/webgl/glsl/Animation.d.ts +1 -2
  120. package/lib/cjs/render/webgl/glsl/Animation.d.ts.map +1 -1
  121. package/lib/cjs/render/webgl/glsl/Animation.js +23 -26
  122. package/lib/cjs/render/webgl/glsl/Animation.js.map +1 -1
  123. package/lib/cjs/render/webgl/glsl/Blur.d.ts +1 -2
  124. package/lib/cjs/render/webgl/glsl/Blur.d.ts.map +1 -1
  125. package/lib/cjs/render/webgl/glsl/Blur.js.map +1 -1
  126. package/lib/cjs/render/webgl/glsl/ClearPickAndColor.d.ts +1 -2
  127. package/lib/cjs/render/webgl/glsl/ClearPickAndColor.d.ts.map +1 -1
  128. package/lib/cjs/render/webgl/glsl/ClearPickAndColor.js +2 -9
  129. package/lib/cjs/render/webgl/glsl/ClearPickAndColor.js.map +1 -1
  130. package/lib/cjs/render/webgl/glsl/ClearTranslucent.d.ts +1 -2
  131. package/lib/cjs/render/webgl/glsl/ClearTranslucent.d.ts.map +1 -1
  132. package/lib/cjs/render/webgl/glsl/ClearTranslucent.js +2 -10
  133. package/lib/cjs/render/webgl/glsl/ClearTranslucent.js.map +1 -1
  134. package/lib/cjs/render/webgl/glsl/Clipping.d.ts +1 -1
  135. package/lib/cjs/render/webgl/glsl/Clipping.d.ts.map +1 -1
  136. package/lib/cjs/render/webgl/glsl/Clipping.js +5 -36
  137. package/lib/cjs/render/webgl/glsl/Clipping.js.map +1 -1
  138. package/lib/cjs/render/webgl/glsl/Combine3Textures.d.ts +1 -2
  139. package/lib/cjs/render/webgl/glsl/Combine3Textures.d.ts.map +1 -1
  140. package/lib/cjs/render/webgl/glsl/Combine3Textures.js.map +1 -1
  141. package/lib/cjs/render/webgl/glsl/CombineTextures.d.ts +1 -2
  142. package/lib/cjs/render/webgl/glsl/CombineTextures.d.ts.map +1 -1
  143. package/lib/cjs/render/webgl/glsl/CombineTextures.js.map +1 -1
  144. package/lib/cjs/render/webgl/glsl/Common.d.ts.map +1 -1
  145. package/lib/cjs/render/webgl/glsl/Common.js +9 -55
  146. package/lib/cjs/render/webgl/glsl/Common.js.map +1 -1
  147. package/lib/cjs/render/webgl/glsl/Composite.d.ts +1 -2
  148. package/lib/cjs/render/webgl/glsl/Composite.d.ts.map +1 -1
  149. package/lib/cjs/render/webgl/glsl/Composite.js.map +1 -1
  150. package/lib/cjs/render/webgl/glsl/CopyColor.d.ts +1 -2
  151. package/lib/cjs/render/webgl/glsl/CopyColor.d.ts.map +1 -1
  152. package/lib/cjs/render/webgl/glsl/CopyColor.js.map +1 -1
  153. package/lib/cjs/render/webgl/glsl/CopyPickBuffers.d.ts +1 -2
  154. package/lib/cjs/render/webgl/glsl/CopyPickBuffers.d.ts.map +1 -1
  155. package/lib/cjs/render/webgl/glsl/CopyPickBuffers.js +12 -19
  156. package/lib/cjs/render/webgl/glsl/CopyPickBuffers.js.map +1 -1
  157. package/lib/cjs/render/webgl/glsl/CopyStencil.d.ts +4 -7
  158. package/lib/cjs/render/webgl/glsl/CopyStencil.d.ts.map +1 -1
  159. package/lib/cjs/render/webgl/glsl/CopyStencil.js +2 -39
  160. package/lib/cjs/render/webgl/glsl/CopyStencil.js.map +1 -1
  161. package/lib/cjs/render/webgl/glsl/EDL.d.ts +4 -5
  162. package/lib/cjs/render/webgl/glsl/EDL.d.ts.map +1 -1
  163. package/lib/cjs/render/webgl/glsl/EDL.js.map +1 -1
  164. package/lib/cjs/render/webgl/glsl/EVSMFromDepth.d.ts +1 -2
  165. package/lib/cjs/render/webgl/glsl/EVSMFromDepth.d.ts.map +1 -1
  166. package/lib/cjs/render/webgl/glsl/EVSMFromDepth.js.map +1 -1
  167. package/lib/cjs/render/webgl/glsl/Edge.d.ts.map +1 -1
  168. package/lib/cjs/render/webgl/glsl/Edge.js +2 -2
  169. package/lib/cjs/render/webgl/glsl/Edge.js.map +1 -1
  170. package/lib/cjs/render/webgl/glsl/FeatureSymbology.d.ts.map +1 -1
  171. package/lib/cjs/render/webgl/glsl/FeatureSymbology.js +3 -24
  172. package/lib/cjs/render/webgl/glsl/FeatureSymbology.js.map +1 -1
  173. package/lib/cjs/render/webgl/glsl/Fragment.d.ts +0 -7
  174. package/lib/cjs/render/webgl/glsl/Fragment.d.ts.map +1 -1
  175. package/lib/cjs/render/webgl/glsl/Fragment.js +5 -40
  176. package/lib/cjs/render/webgl/glsl/Fragment.js.map +1 -1
  177. package/lib/cjs/render/webgl/glsl/Instancing.d.ts.map +1 -1
  178. package/lib/cjs/render/webgl/glsl/Instancing.js +1 -5
  179. package/lib/cjs/render/webgl/glsl/Instancing.js.map +1 -1
  180. package/lib/cjs/render/webgl/glsl/LogarithmicDepthBuffer.d.ts.map +1 -1
  181. package/lib/cjs/render/webgl/glsl/LogarithmicDepthBuffer.js +0 -2
  182. package/lib/cjs/render/webgl/glsl/LogarithmicDepthBuffer.js.map +1 -1
  183. package/lib/cjs/render/webgl/glsl/PlanarGrid.d.ts +1 -2
  184. package/lib/cjs/render/webgl/glsl/PlanarGrid.d.ts.map +1 -1
  185. package/lib/cjs/render/webgl/glsl/PlanarGrid.js +2 -12
  186. package/lib/cjs/render/webgl/glsl/PlanarGrid.js.map +1 -1
  187. package/lib/cjs/render/webgl/glsl/RealityMesh.d.ts.map +1 -1
  188. package/lib/cjs/render/webgl/glsl/RealityMesh.js +3 -8
  189. package/lib/cjs/render/webgl/glsl/RealityMesh.js.map +1 -1
  190. package/lib/cjs/render/webgl/glsl/SkyBox.d.ts +1 -2
  191. package/lib/cjs/render/webgl/glsl/SkyBox.d.ts.map +1 -1
  192. package/lib/cjs/render/webgl/glsl/SkyBox.js.map +1 -1
  193. package/lib/cjs/render/webgl/glsl/SkySphere.d.ts +1 -2
  194. package/lib/cjs/render/webgl/glsl/SkySphere.d.ts.map +1 -1
  195. package/lib/cjs/render/webgl/glsl/SkySphere.js.map +1 -1
  196. package/lib/cjs/render/webgl/glsl/SolarShadowMapping.js +1 -1
  197. package/lib/cjs/render/webgl/glsl/SolarShadowMapping.js.map +1 -1
  198. package/lib/cjs/render/webgl/glsl/Surface.d.ts.map +1 -1
  199. package/lib/cjs/render/webgl/glsl/Surface.js +33 -57
  200. package/lib/cjs/render/webgl/glsl/Surface.js.map +1 -1
  201. package/lib/cjs/render/webgl/glsl/Thematic.d.ts.map +1 -1
  202. package/lib/cjs/render/webgl/glsl/Thematic.js +3 -36
  203. package/lib/cjs/render/webgl/glsl/Thematic.js.map +1 -1
  204. package/lib/cjs/render/webgl/glsl/Translucency.d.ts.map +1 -1
  205. package/lib/cjs/render/webgl/glsl/Translucency.js +2 -12
  206. package/lib/cjs/render/webgl/glsl/Translucency.js.map +1 -1
  207. package/lib/cjs/render/webgl/glsl/Vertex.d.ts +1 -2
  208. package/lib/cjs/render/webgl/glsl/Vertex.d.ts.map +1 -1
  209. package/lib/cjs/render/webgl/glsl/Vertex.js +15 -78
  210. package/lib/cjs/render/webgl/glsl/Vertex.js.map +1 -1
  211. package/lib/cjs/render/webgl/glsl/Wiremesh.d.ts.map +1 -1
  212. package/lib/cjs/render/webgl/glsl/Wiremesh.js +2 -5
  213. package/lib/cjs/render/webgl/glsl/Wiremesh.js.map +1 -1
  214. package/lib/cjs/tile/PrimaryTileTree.d.ts +0 -3
  215. package/lib/cjs/tile/PrimaryTileTree.d.ts.map +1 -1
  216. package/lib/cjs/tile/PrimaryTileTree.js +6 -28
  217. package/lib/cjs/tile/PrimaryTileTree.js.map +1 -1
  218. package/lib/cjs/tile/RealityTile.d.ts +1 -1
  219. package/lib/cjs/tile/RealityTile.js +1 -1
  220. package/lib/cjs/tile/RealityTile.js.map +1 -1
  221. package/lib/cjs/tile/RealityTileTree.d.ts +1 -1
  222. package/lib/cjs/tile/RealityTileTree.d.ts.map +1 -1
  223. package/lib/cjs/tile/RealityTileTree.js +2 -3
  224. package/lib/cjs/tile/RealityTileTree.js.map +1 -1
  225. package/lib/cjs/tile/TileAdmin.d.ts +5 -1
  226. package/lib/cjs/tile/TileAdmin.d.ts.map +1 -1
  227. package/lib/cjs/tile/TileAdmin.js +2 -2
  228. package/lib/cjs/tile/TileAdmin.js.map +1 -1
  229. package/lib/cjs/tile/TileRequest.d.ts.map +1 -1
  230. package/lib/cjs/tile/TileRequest.js +2 -1
  231. package/lib/cjs/tile/TileRequest.js.map +1 -1
  232. package/lib/cjs/tile/TileRequestChannel.d.ts +23 -1
  233. package/lib/cjs/tile/TileRequestChannel.d.ts.map +1 -1
  234. package/lib/cjs/tile/TileRequestChannel.js +28 -7
  235. package/lib/cjs/tile/TileRequestChannel.js.map +1 -1
  236. package/lib/cjs/tile/map/EllipsoidTerrainProvider.d.ts +11 -3
  237. package/lib/cjs/tile/map/EllipsoidTerrainProvider.d.ts.map +1 -1
  238. package/lib/cjs/tile/map/EllipsoidTerrainProvider.js +17 -5
  239. package/lib/cjs/tile/map/EllipsoidTerrainProvider.js.map +1 -1
  240. package/lib/cjs/tile/map/ImageryTileTree.d.ts +2 -2
  241. package/lib/cjs/tile/map/ImageryTileTree.d.ts.map +1 -1
  242. package/lib/cjs/tile/map/ImageryTileTree.js +10 -5
  243. package/lib/cjs/tile/map/ImageryTileTree.js.map +1 -1
  244. package/lib/cjs/tile/map/MapCartoRectangle.d.ts +1 -1
  245. package/lib/cjs/tile/map/MapCartoRectangle.js +1 -1
  246. package/lib/cjs/tile/map/MapCartoRectangle.js.map +1 -1
  247. package/lib/cjs/tile/map/MapTile.d.ts +10 -2
  248. package/lib/cjs/tile/map/MapTile.d.ts.map +1 -1
  249. package/lib/cjs/tile/map/MapTile.js +28 -4
  250. package/lib/cjs/tile/map/MapTile.js.map +1 -1
  251. package/lib/cjs/tile/map/MapTileTree.d.ts +3 -2
  252. package/lib/cjs/tile/map/MapTileTree.d.ts.map +1 -1
  253. package/lib/cjs/tile/map/MapTileTree.js +12 -9
  254. package/lib/cjs/tile/map/MapTileTree.js.map +1 -1
  255. package/lib/cjs/tile/map/MapTilingScheme.d.ts +1 -1
  256. package/lib/cjs/tile/map/MapTilingScheme.js +1 -1
  257. package/lib/cjs/tile/map/MapTilingScheme.js.map +1 -1
  258. package/lib/cjs/tile/map/QuadId.d.ts +1 -1
  259. package/lib/cjs/tile/map/QuadId.js +1 -1
  260. package/lib/cjs/tile/map/QuadId.js.map +1 -1
  261. package/lib/cjs/tile/map/TerrainMeshProvider.d.ts +9 -4
  262. package/lib/cjs/tile/map/TerrainMeshProvider.d.ts.map +1 -1
  263. package/lib/cjs/tile/map/TerrainMeshProvider.js +6 -1
  264. package/lib/cjs/tile/map/TerrainMeshProvider.js.map +1 -1
  265. package/lib/cjs/tile/map/TerrainProvider.d.ts +2 -2
  266. package/lib/cjs/tile/map/TerrainProvider.js +1 -1
  267. package/lib/cjs/tile/map/TerrainProvider.js.map +1 -1
  268. package/lib/esm/IModelApp.d.ts +2 -3
  269. package/lib/esm/IModelApp.d.ts.map +1 -1
  270. package/lib/esm/IModelApp.js +3 -7
  271. package/lib/esm/IModelApp.js.map +1 -1
  272. package/lib/esm/IModelConnection.d.ts +1 -1
  273. package/lib/esm/IModelConnection.js +1 -1
  274. package/lib/esm/IModelConnection.js.map +1 -1
  275. package/lib/esm/NoRenderApp.d.ts +11 -4
  276. package/lib/esm/NoRenderApp.d.ts.map +1 -1
  277. package/lib/esm/NoRenderApp.js +11 -4
  278. package/lib/esm/NoRenderApp.js.map +1 -1
  279. package/lib/esm/SelectionSet.d.ts +0 -1
  280. package/lib/esm/SelectionSet.d.ts.map +1 -1
  281. package/lib/esm/SelectionSet.js +0 -1
  282. package/lib/esm/SelectionSet.js.map +1 -1
  283. package/lib/esm/SubCategoriesCache.d.ts.map +1 -1
  284. package/lib/esm/SubCategoriesCache.js +0 -1
  285. package/lib/esm/SubCategoriesCache.js.map +1 -1
  286. package/lib/esm/render/RealityMeshParams.d.ts +6 -3
  287. package/lib/esm/render/RealityMeshParams.d.ts.map +1 -1
  288. package/lib/esm/render/RealityMeshParams.js +15 -5
  289. package/lib/esm/render/RealityMeshParams.js.map +1 -1
  290. package/lib/esm/render/RenderSystem.d.ts +5 -16
  291. package/lib/esm/render/RenderSystem.d.ts.map +1 -1
  292. package/lib/esm/render/RenderSystem.js +0 -6
  293. package/lib/esm/render/RenderSystem.js.map +1 -1
  294. package/lib/esm/render/ScreenSpaceEffectBuilder.d.ts +3 -4
  295. package/lib/esm/render/ScreenSpaceEffectBuilder.d.ts.map +1 -1
  296. package/lib/esm/render/ScreenSpaceEffectBuilder.js.map +1 -1
  297. package/lib/esm/render/webgl/AttributeBuffers.d.ts +9 -79
  298. package/lib/esm/render/webgl/AttributeBuffers.d.ts.map +1 -1
  299. package/lib/esm/render/webgl/AttributeBuffers.js +16 -144
  300. package/lib/esm/render/webgl/AttributeBuffers.js.map +1 -1
  301. package/lib/esm/render/webgl/BackgroundMapDrape.d.ts.map +1 -1
  302. package/lib/esm/render/webgl/BackgroundMapDrape.js +0 -3
  303. package/lib/esm/render/webgl/BackgroundMapDrape.js.map +1 -1
  304. package/lib/esm/render/webgl/BranchUniforms.d.ts.map +1 -1
  305. package/lib/esm/render/webgl/BranchUniforms.js +0 -8
  306. package/lib/esm/render/webgl/BranchUniforms.js.map +1 -1
  307. package/lib/esm/render/webgl/ClipStack.d.ts +0 -1
  308. package/lib/esm/render/webgl/ClipStack.d.ts.map +1 -1
  309. package/lib/esm/render/webgl/ClipStack.js +2 -6
  310. package/lib/esm/render/webgl/ClipStack.js.map +1 -1
  311. package/lib/esm/render/webgl/ClipVolume.d.ts.map +1 -1
  312. package/lib/esm/render/webgl/ClipVolume.js +1 -5
  313. package/lib/esm/render/webgl/ClipVolume.js.map +1 -1
  314. package/lib/esm/render/webgl/ClippingProgram.d.ts +3 -2
  315. package/lib/esm/render/webgl/ClippingProgram.d.ts.map +1 -1
  316. package/lib/esm/render/webgl/ClippingProgram.js +10 -37
  317. package/lib/esm/render/webgl/ClippingProgram.js.map +1 -1
  318. package/lib/esm/render/webgl/DrawCommand.d.ts +2 -2
  319. package/lib/esm/render/webgl/DrawCommand.d.ts.map +1 -1
  320. package/lib/esm/render/webgl/DrawCommand.js +1 -1
  321. package/lib/esm/render/webgl/DrawCommand.js.map +1 -1
  322. package/lib/esm/render/webgl/FeatureOverrides.js +1 -1
  323. package/lib/esm/render/webgl/FeatureOverrides.js.map +1 -1
  324. package/lib/esm/render/webgl/FloatRGBA.d.ts.map +1 -1
  325. package/lib/esm/render/webgl/FloatRGBA.js +0 -4
  326. package/lib/esm/render/webgl/FloatRGBA.js.map +1 -1
  327. package/lib/esm/render/webgl/FrameBuffer.js.map +1 -1
  328. package/lib/esm/render/webgl/GLTimer.d.ts.map +1 -1
  329. package/lib/esm/render/webgl/GLTimer.js +2 -35
  330. package/lib/esm/render/webgl/GLTimer.js.map +1 -1
  331. package/lib/esm/render/webgl/PlanarClassifier.d.ts.map +1 -1
  332. package/lib/esm/render/webgl/PlanarClassifier.js +13 -71
  333. package/lib/esm/render/webgl/PlanarClassifier.js.map +1 -1
  334. package/lib/esm/render/webgl/PointCloud.d.ts.map +1 -1
  335. package/lib/esm/render/webgl/PointCloud.js +1 -3
  336. package/lib/esm/render/webgl/PointCloud.js.map +1 -1
  337. package/lib/esm/render/webgl/RenderBuffer.d.ts +1 -1
  338. package/lib/esm/render/webgl/RenderBuffer.d.ts.map +1 -1
  339. package/lib/esm/render/webgl/RenderBuffer.js +2 -3
  340. package/lib/esm/render/webgl/RenderBuffer.js.map +1 -1
  341. package/lib/esm/render/webgl/RenderFlags.d.ts +1 -2
  342. package/lib/esm/render/webgl/RenderFlags.d.ts.map +1 -1
  343. package/lib/esm/render/webgl/RenderFlags.js +4 -6
  344. package/lib/esm/render/webgl/RenderFlags.js.map +1 -1
  345. package/lib/esm/render/webgl/SceneCompositor.d.ts +0 -2
  346. package/lib/esm/render/webgl/SceneCompositor.d.ts.map +1 -1
  347. package/lib/esm/render/webgl/SceneCompositor.js +756 -1137
  348. package/lib/esm/render/webgl/SceneCompositor.js.map +1 -1
  349. package/lib/esm/render/webgl/ScreenSpaceEffect.js +1 -1
  350. package/lib/esm/render/webgl/ScreenSpaceEffect.js.map +1 -1
  351. package/lib/esm/render/webgl/ShaderBuilder.d.ts +1 -2
  352. package/lib/esm/render/webgl/ShaderBuilder.d.ts.map +1 -1
  353. package/lib/esm/render/webgl/ShaderBuilder.js +13 -48
  354. package/lib/esm/render/webgl/ShaderBuilder.js.map +1 -1
  355. package/lib/esm/render/webgl/ShaderProgram.d.ts +1 -2
  356. package/lib/esm/render/webgl/ShaderProgram.d.ts.map +1 -1
  357. package/lib/esm/render/webgl/ShaderProgram.js.map +1 -1
  358. package/lib/esm/render/webgl/SolarShadowMap.d.ts.map +1 -1
  359. package/lib/esm/render/webgl/SolarShadowMap.js +5 -26
  360. package/lib/esm/render/webgl/SolarShadowMap.js.map +1 -1
  361. package/lib/esm/render/webgl/System.d.ts +10 -10
  362. package/lib/esm/render/webgl/System.d.ts.map +1 -1
  363. package/lib/esm/render/webgl/System.js +41 -124
  364. package/lib/esm/render/webgl/System.js.map +1 -1
  365. package/lib/esm/render/webgl/Technique.d.ts +4 -5
  366. package/lib/esm/render/webgl/Technique.d.ts.map +1 -1
  367. package/lib/esm/render/webgl/Technique.js +5 -29
  368. package/lib/esm/render/webgl/Technique.js.map +1 -1
  369. package/lib/esm/render/webgl/Texture.d.ts.map +1 -1
  370. package/lib/esm/render/webgl/Texture.js +14 -18
  371. package/lib/esm/render/webgl/Texture.js.map +1 -1
  372. package/lib/esm/render/webgl/ThematicSensors.d.ts +4 -3
  373. package/lib/esm/render/webgl/ThematicSensors.d.ts.map +1 -1
  374. package/lib/esm/render/webgl/ThematicSensors.js +9 -50
  375. package/lib/esm/render/webgl/ThematicSensors.js.map +1 -1
  376. package/lib/esm/render/webgl/ThematicUniforms.js +1 -1
  377. package/lib/esm/render/webgl/ThematicUniforms.js.map +1 -1
  378. package/lib/esm/render/webgl/UniformHandle.d.ts.map +1 -1
  379. package/lib/esm/render/webgl/UniformHandle.js +1 -4
  380. package/lib/esm/render/webgl/UniformHandle.js.map +1 -1
  381. package/lib/esm/render/webgl/glsl/AmbientOcclusion.d.ts +1 -2
  382. package/lib/esm/render/webgl/glsl/AmbientOcclusion.d.ts.map +1 -1
  383. package/lib/esm/render/webgl/glsl/AmbientOcclusion.js +1 -1
  384. package/lib/esm/render/webgl/glsl/AmbientOcclusion.js.map +1 -1
  385. package/lib/esm/render/webgl/glsl/Animation.d.ts +1 -2
  386. package/lib/esm/render/webgl/glsl/Animation.d.ts.map +1 -1
  387. package/lib/esm/render/webgl/glsl/Animation.js +23 -26
  388. package/lib/esm/render/webgl/glsl/Animation.js.map +1 -1
  389. package/lib/esm/render/webgl/glsl/Blur.d.ts +1 -2
  390. package/lib/esm/render/webgl/glsl/Blur.d.ts.map +1 -1
  391. package/lib/esm/render/webgl/glsl/Blur.js.map +1 -1
  392. package/lib/esm/render/webgl/glsl/ClearPickAndColor.d.ts +1 -2
  393. package/lib/esm/render/webgl/glsl/ClearPickAndColor.d.ts.map +1 -1
  394. package/lib/esm/render/webgl/glsl/ClearPickAndColor.js +2 -9
  395. package/lib/esm/render/webgl/glsl/ClearPickAndColor.js.map +1 -1
  396. package/lib/esm/render/webgl/glsl/ClearTranslucent.d.ts +1 -2
  397. package/lib/esm/render/webgl/glsl/ClearTranslucent.d.ts.map +1 -1
  398. package/lib/esm/render/webgl/glsl/ClearTranslucent.js +2 -10
  399. package/lib/esm/render/webgl/glsl/ClearTranslucent.js.map +1 -1
  400. package/lib/esm/render/webgl/glsl/Clipping.d.ts +1 -1
  401. package/lib/esm/render/webgl/glsl/Clipping.d.ts.map +1 -1
  402. package/lib/esm/render/webgl/glsl/Clipping.js +5 -36
  403. package/lib/esm/render/webgl/glsl/Clipping.js.map +1 -1
  404. package/lib/esm/render/webgl/glsl/Combine3Textures.d.ts +1 -2
  405. package/lib/esm/render/webgl/glsl/Combine3Textures.d.ts.map +1 -1
  406. package/lib/esm/render/webgl/glsl/Combine3Textures.js.map +1 -1
  407. package/lib/esm/render/webgl/glsl/CombineTextures.d.ts +1 -2
  408. package/lib/esm/render/webgl/glsl/CombineTextures.d.ts.map +1 -1
  409. package/lib/esm/render/webgl/glsl/CombineTextures.js.map +1 -1
  410. package/lib/esm/render/webgl/glsl/Common.d.ts.map +1 -1
  411. package/lib/esm/render/webgl/glsl/Common.js +9 -55
  412. package/lib/esm/render/webgl/glsl/Common.js.map +1 -1
  413. package/lib/esm/render/webgl/glsl/Composite.d.ts +1 -2
  414. package/lib/esm/render/webgl/glsl/Composite.d.ts.map +1 -1
  415. package/lib/esm/render/webgl/glsl/Composite.js.map +1 -1
  416. package/lib/esm/render/webgl/glsl/CopyColor.d.ts +1 -2
  417. package/lib/esm/render/webgl/glsl/CopyColor.d.ts.map +1 -1
  418. package/lib/esm/render/webgl/glsl/CopyColor.js.map +1 -1
  419. package/lib/esm/render/webgl/glsl/CopyPickBuffers.d.ts +1 -2
  420. package/lib/esm/render/webgl/glsl/CopyPickBuffers.d.ts.map +1 -1
  421. package/lib/esm/render/webgl/glsl/CopyPickBuffers.js +12 -19
  422. package/lib/esm/render/webgl/glsl/CopyPickBuffers.js.map +1 -1
  423. package/lib/esm/render/webgl/glsl/CopyStencil.d.ts +4 -7
  424. package/lib/esm/render/webgl/glsl/CopyStencil.d.ts.map +1 -1
  425. package/lib/esm/render/webgl/glsl/CopyStencil.js +1 -37
  426. package/lib/esm/render/webgl/glsl/CopyStencil.js.map +1 -1
  427. package/lib/esm/render/webgl/glsl/EDL.d.ts +4 -5
  428. package/lib/esm/render/webgl/glsl/EDL.d.ts.map +1 -1
  429. package/lib/esm/render/webgl/glsl/EDL.js.map +1 -1
  430. package/lib/esm/render/webgl/glsl/EVSMFromDepth.d.ts +1 -2
  431. package/lib/esm/render/webgl/glsl/EVSMFromDepth.d.ts.map +1 -1
  432. package/lib/esm/render/webgl/glsl/EVSMFromDepth.js.map +1 -1
  433. package/lib/esm/render/webgl/glsl/Edge.d.ts.map +1 -1
  434. package/lib/esm/render/webgl/glsl/Edge.js +2 -2
  435. package/lib/esm/render/webgl/glsl/Edge.js.map +1 -1
  436. package/lib/esm/render/webgl/glsl/FeatureSymbology.d.ts.map +1 -1
  437. package/lib/esm/render/webgl/glsl/FeatureSymbology.js +3 -24
  438. package/lib/esm/render/webgl/glsl/FeatureSymbology.js.map +1 -1
  439. package/lib/esm/render/webgl/glsl/Fragment.d.ts +0 -7
  440. package/lib/esm/render/webgl/glsl/Fragment.d.ts.map +1 -1
  441. package/lib/esm/render/webgl/glsl/Fragment.js +4 -38
  442. package/lib/esm/render/webgl/glsl/Fragment.js.map +1 -1
  443. package/lib/esm/render/webgl/glsl/Instancing.d.ts.map +1 -1
  444. package/lib/esm/render/webgl/glsl/Instancing.js +1 -5
  445. package/lib/esm/render/webgl/glsl/Instancing.js.map +1 -1
  446. package/lib/esm/render/webgl/glsl/LogarithmicDepthBuffer.d.ts.map +1 -1
  447. package/lib/esm/render/webgl/glsl/LogarithmicDepthBuffer.js +0 -2
  448. package/lib/esm/render/webgl/glsl/LogarithmicDepthBuffer.js.map +1 -1
  449. package/lib/esm/render/webgl/glsl/PlanarGrid.d.ts +1 -2
  450. package/lib/esm/render/webgl/glsl/PlanarGrid.d.ts.map +1 -1
  451. package/lib/esm/render/webgl/glsl/PlanarGrid.js +2 -12
  452. package/lib/esm/render/webgl/glsl/PlanarGrid.js.map +1 -1
  453. package/lib/esm/render/webgl/glsl/RealityMesh.d.ts.map +1 -1
  454. package/lib/esm/render/webgl/glsl/RealityMesh.js +3 -8
  455. package/lib/esm/render/webgl/glsl/RealityMesh.js.map +1 -1
  456. package/lib/esm/render/webgl/glsl/SkyBox.d.ts +1 -2
  457. package/lib/esm/render/webgl/glsl/SkyBox.d.ts.map +1 -1
  458. package/lib/esm/render/webgl/glsl/SkyBox.js.map +1 -1
  459. package/lib/esm/render/webgl/glsl/SkySphere.d.ts +1 -2
  460. package/lib/esm/render/webgl/glsl/SkySphere.d.ts.map +1 -1
  461. package/lib/esm/render/webgl/glsl/SkySphere.js.map +1 -1
  462. package/lib/esm/render/webgl/glsl/SolarShadowMapping.js +1 -1
  463. package/lib/esm/render/webgl/glsl/SolarShadowMapping.js.map +1 -1
  464. package/lib/esm/render/webgl/glsl/Surface.d.ts.map +1 -1
  465. package/lib/esm/render/webgl/glsl/Surface.js +33 -57
  466. package/lib/esm/render/webgl/glsl/Surface.js.map +1 -1
  467. package/lib/esm/render/webgl/glsl/Thematic.d.ts.map +1 -1
  468. package/lib/esm/render/webgl/glsl/Thematic.js +3 -36
  469. package/lib/esm/render/webgl/glsl/Thematic.js.map +1 -1
  470. package/lib/esm/render/webgl/glsl/Translucency.d.ts.map +1 -1
  471. package/lib/esm/render/webgl/glsl/Translucency.js +3 -13
  472. package/lib/esm/render/webgl/glsl/Translucency.js.map +1 -1
  473. package/lib/esm/render/webgl/glsl/Vertex.d.ts +1 -2
  474. package/lib/esm/render/webgl/glsl/Vertex.d.ts.map +1 -1
  475. package/lib/esm/render/webgl/glsl/Vertex.js +16 -79
  476. package/lib/esm/render/webgl/glsl/Vertex.js.map +1 -1
  477. package/lib/esm/render/webgl/glsl/Wiremesh.d.ts.map +1 -1
  478. package/lib/esm/render/webgl/glsl/Wiremesh.js +2 -5
  479. package/lib/esm/render/webgl/glsl/Wiremesh.js.map +1 -1
  480. package/lib/esm/tile/PrimaryTileTree.d.ts +0 -3
  481. package/lib/esm/tile/PrimaryTileTree.d.ts.map +1 -1
  482. package/lib/esm/tile/PrimaryTileTree.js +8 -30
  483. package/lib/esm/tile/PrimaryTileTree.js.map +1 -1
  484. package/lib/esm/tile/RealityTile.d.ts +1 -1
  485. package/lib/esm/tile/RealityTile.js +1 -1
  486. package/lib/esm/tile/RealityTile.js.map +1 -1
  487. package/lib/esm/tile/RealityTileTree.d.ts +1 -1
  488. package/lib/esm/tile/RealityTileTree.d.ts.map +1 -1
  489. package/lib/esm/tile/RealityTileTree.js +2 -3
  490. package/lib/esm/tile/RealityTileTree.js.map +1 -1
  491. package/lib/esm/tile/TileAdmin.d.ts +5 -1
  492. package/lib/esm/tile/TileAdmin.d.ts.map +1 -1
  493. package/lib/esm/tile/TileAdmin.js +2 -2
  494. package/lib/esm/tile/TileAdmin.js.map +1 -1
  495. package/lib/esm/tile/TileRequest.d.ts.map +1 -1
  496. package/lib/esm/tile/TileRequest.js +2 -1
  497. package/lib/esm/tile/TileRequest.js.map +1 -1
  498. package/lib/esm/tile/TileRequestChannel.d.ts +23 -1
  499. package/lib/esm/tile/TileRequestChannel.d.ts.map +1 -1
  500. package/lib/esm/tile/TileRequestChannel.js +28 -7
  501. package/lib/esm/tile/TileRequestChannel.js.map +1 -1
  502. package/lib/esm/tile/map/EllipsoidTerrainProvider.d.ts +11 -3
  503. package/lib/esm/tile/map/EllipsoidTerrainProvider.d.ts.map +1 -1
  504. package/lib/esm/tile/map/EllipsoidTerrainProvider.js +17 -5
  505. package/lib/esm/tile/map/EllipsoidTerrainProvider.js.map +1 -1
  506. package/lib/esm/tile/map/ImageryTileTree.d.ts +2 -2
  507. package/lib/esm/tile/map/ImageryTileTree.d.ts.map +1 -1
  508. package/lib/esm/tile/map/ImageryTileTree.js +10 -5
  509. package/lib/esm/tile/map/ImageryTileTree.js.map +1 -1
  510. package/lib/esm/tile/map/MapCartoRectangle.d.ts +1 -1
  511. package/lib/esm/tile/map/MapCartoRectangle.js +1 -1
  512. package/lib/esm/tile/map/MapCartoRectangle.js.map +1 -1
  513. package/lib/esm/tile/map/MapTile.d.ts +10 -2
  514. package/lib/esm/tile/map/MapTile.d.ts.map +1 -1
  515. package/lib/esm/tile/map/MapTile.js +28 -4
  516. package/lib/esm/tile/map/MapTile.js.map +1 -1
  517. package/lib/esm/tile/map/MapTileTree.d.ts +3 -2
  518. package/lib/esm/tile/map/MapTileTree.d.ts.map +1 -1
  519. package/lib/esm/tile/map/MapTileTree.js +12 -9
  520. package/lib/esm/tile/map/MapTileTree.js.map +1 -1
  521. package/lib/esm/tile/map/MapTilingScheme.d.ts +1 -1
  522. package/lib/esm/tile/map/MapTilingScheme.js +1 -1
  523. package/lib/esm/tile/map/MapTilingScheme.js.map +1 -1
  524. package/lib/esm/tile/map/QuadId.d.ts +1 -1
  525. package/lib/esm/tile/map/QuadId.js +1 -1
  526. package/lib/esm/tile/map/QuadId.js.map +1 -1
  527. package/lib/esm/tile/map/TerrainMeshProvider.d.ts +9 -4
  528. package/lib/esm/tile/map/TerrainMeshProvider.d.ts.map +1 -1
  529. package/lib/esm/tile/map/TerrainMeshProvider.js +6 -1
  530. package/lib/esm/tile/map/TerrainMeshProvider.js.map +1 -1
  531. package/lib/esm/tile/map/TerrainProvider.d.ts +2 -2
  532. package/lib/esm/tile/map/TerrainProvider.js +1 -1
  533. package/lib/esm/tile/map/TerrainProvider.js.map +1 -1
  534. package/package.json +24 -24
@@ -26,7 +26,7 @@ class PrimaryTreeSupplier {
26
26
  compareTileTreeIds(lhs, rhs) {
27
27
  // NB: we don't compare isPlanProjection or is3d - they should always have the same value for a given modelId.
28
28
  return (0, core_bentley_1.compareStrings)(lhs.modelId, rhs.modelId) || (0, core_common_1.compareIModelTileTreeIds)(lhs.treeId, rhs.treeId)
29
- || (0, core_bentley_1.compareBooleans)(lhs.forceNoInstancing, rhs.forceNoInstancing) || (0, core_bentley_1.comparePossiblyUndefined)((x, y) => x.compareTo(y), lhs.timeline, rhs.timeline);
29
+ || (0, core_bentley_1.comparePossiblyUndefined)((x, y) => x.compareTo(y), lhs.timeline, rhs.timeline);
30
30
  }
31
31
  async createTileTree(id, iModel) {
32
32
  const treeId = id.treeId;
@@ -34,7 +34,7 @@ class PrimaryTreeSupplier {
34
34
  const props = await IModelApp_1.IModelApp.tileAdmin.requestTileTreeProps(iModel, idStr);
35
35
  // ###TODO remove restriction that animated tile trees can't contained instanced geometry.
36
36
  const isAnimated = undefined !== treeId.animationId || undefined !== id.timeline;
37
- const allowInstancing = !isAnimated && !treeId.enforceDisplayPriority && !treeId.sectionCut && !id.forceNoInstancing;
37
+ const allowInstancing = !isAnimated && !treeId.enforceDisplayPriority && !treeId.sectionCut;
38
38
  const options = {
39
39
  edges: treeId.edges,
40
40
  allowInstancing,
@@ -110,35 +110,16 @@ class PrimaryTreeReference extends internal_1.TileTreeReference {
110
110
  return cutApp ? app.extendAppearance(cutApp) : app;
111
111
  });
112
112
  }
113
- this._forceNoInstancing = false;
114
- if (!IModelApp_1.IModelApp.renderSystem.supportsNonuniformScaledInstancing) {
115
- this.checkForceNoInstancing(view.modelDisplayTransformProvider);
116
- view.onModelDisplayTransformProviderChanged.addListener((provider) => this.checkForceNoInstancing(provider));
117
- }
118
113
  const scriptInfo = IModelApp_1.IModelApp.tileAdmin.getScriptInfoForTreeId(model.id, view.displayStyle.scheduleScriptReference); // eslint-disable-line deprecation/deprecation
119
114
  this._id = {
120
115
  modelId: model.id,
121
116
  is3d: model.is3d,
122
117
  treeId: this.createTreeId(view, model.id),
123
118
  isPlanProjection: planProjection,
124
- forceNoInstancing: this._forceNoInstancing,
125
119
  timeline: scriptInfo === null || scriptInfo === void 0 ? void 0 : scriptInfo.timeline,
126
120
  };
127
121
  this._owner = primaryTreeSupplier.getOwner(this._id, model.iModel);
128
122
  }
129
- checkForceNoInstancing(provider) {
130
- var _a;
131
- // If this model has a display transform with a non-uniform scale then instancing needs to be forced off when using WebGL1.
132
- this._forceNoInstancing = false;
133
- const mat = (_a = provider === null || provider === void 0 ? void 0 : provider.getModelDisplayTransform(this.model.id)) === null || _a === void 0 ? void 0 : _a.matrix;
134
- if (!mat)
135
- return;
136
- const epsilon = core_geometry_1.Geometry.smallMetricDistance;
137
- const sx = mat.getColumn(0).magnitudeSquared();
138
- const sy = mat.getColumn(1).magnitudeSquared();
139
- if (Math.abs(sx - sy) > epsilon || Math.abs(sx - mat.getColumn(2).magnitudeSquared()) > epsilon)
140
- this._forceNoInstancing = true;
141
- }
142
123
  getAnimationTransformNodeId() {
143
124
  var _a;
144
125
  return (_a = this._animationTransformNodeId) !== null && _a !== void 0 ? _a : GraphicBranch_1.AnimationNodeId.Untransformed;
@@ -174,13 +155,12 @@ class PrimaryTreeReference extends internal_1.TileTreeReference {
174
155
  var _a;
175
156
  const newId = this.createTreeId(this.view, this._id.modelId);
176
157
  const timeline = (_a = IModelApp_1.IModelApp.tileAdmin.getScriptInfoForTreeId(this._id.modelId, this.view.displayStyle.scheduleScriptReference)) === null || _a === void 0 ? void 0 : _a.timeline; // eslint-disable-line deprecation/deprecation
177
- if (0 !== (0, core_common_1.compareIModelTileTreeIds)(newId, this._id.treeId) || this._forceNoInstancing !== this._id.forceNoInstancing || timeline !== this._id.timeline) {
158
+ if (0 !== (0, core_common_1.compareIModelTileTreeIds)(newId, this._id.treeId) || timeline !== this._id.timeline) {
178
159
  this._id = {
179
160
  modelId: this._id.modelId,
180
161
  is3d: this._id.is3d,
181
162
  treeId: newId,
182
163
  isPlanProjection: this._id.isPlanProjection,
183
- forceNoInstancing: this._forceNoInstancing,
184
164
  timeline,
185
165
  };
186
166
  this._owner = primaryTreeSupplier.getOwner(this._id, this.model.iModel);
@@ -341,7 +321,6 @@ class MaskTreeReference extends internal_1.TileTreeReference {
341
321
  is3d: model.is3d,
342
322
  treeId: this.createTreeId(),
343
323
  isPlanProjection: isPlanProjection(view, model),
344
- forceNoInstancing: false,
345
324
  };
346
325
  this._owner = primaryTreeSupplier.getOwner(this._id, model.iModel);
347
326
  }
@@ -349,7 +328,7 @@ class MaskTreeReference extends internal_1.TileTreeReference {
349
328
  get treeOwner() {
350
329
  const newId = this.createTreeId();
351
330
  if (0 !== (0, core_common_1.compareIModelTileTreeIds)(newId, this._id.treeId)) {
352
- this._id = { modelId: this._id.modelId, is3d: this._id.is3d, treeId: newId, isPlanProjection: false, forceNoInstancing: false };
331
+ this._id = { modelId: this._id.modelId, is3d: this._id.is3d, treeId: newId, isPlanProjection: false };
353
332
  this._owner = primaryTreeSupplier.getOwner(this._id, this.model.iModel);
354
333
  }
355
334
  return this._owner;
@@ -373,8 +352,7 @@ class ModelMapLayerTileTreeReference extends internal_1.MapLayerTileTreeReferenc
373
352
  modelId: _classifier.modelId,
374
353
  is3d: true,
375
354
  treeId: this.createTreeId(),
376
- isPlanProjection: false,
377
- forceNoInstancing: false,
355
+ isPlanProjection: false, // isPlanProjection(view, model),
378
356
  };
379
357
  this._owner = primaryTreeSupplier.getOwner(this._id, this.iModel);
380
358
  }
@@ -386,7 +364,7 @@ class ModelMapLayerTileTreeReference extends internal_1.MapLayerTileTreeReferenc
386
364
  get treeOwner() {
387
365
  const newId = this.createTreeId();
388
366
  if (0 !== (0, core_common_1.compareIModelTileTreeIds)(newId, this._id.treeId)) {
389
- this._id = { modelId: this._id.modelId, is3d: this._id.is3d, treeId: newId, isPlanProjection: false, forceNoInstancing: false };
367
+ this._id = { modelId: this._id.modelId, is3d: this._id.is3d, treeId: newId, isPlanProjection: false };
390
368
  this._owner = primaryTreeSupplier.getOwner(this._id, this.iModel);
391
369
  }
392
370
  return this._owner;
@@ -1 +1 @@
1
- {"version":3,"file":"PrimaryTileTree.js","sourceRoot":"","sources":["../../../src/tile/PrimaryTileTree.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module Tiles\r\n */\r\n\r\nimport {\r\n assert, compareBooleans, comparePossiblyUndefined, compareStrings, Id64String,\r\n} from \"@itwin/core-bentley\";\r\nimport {\r\n BatchType, compareIModelTileTreeIds, FeatureAppearance, FeatureAppearanceProvider, HiddenLine, iModelTileTreeIdToString, MapLayerSettings, ModelMapLayerSettings,\r\n PrimaryTileTreeId, RenderMode, RenderSchedule, SpatialClassifier, ViewFlagOverrides, ViewFlagsProperties,\r\n} from \"@itwin/core-common\";\r\nimport { Geometry, Range3d, StringifiedClipVector, Transform } from \"@itwin/core-geometry\";\r\nimport { DisplayStyleState } from \"../DisplayStyleState\";\r\nimport { IModelApp } from \"../IModelApp\";\r\nimport { IModelConnection } from \"../IModelConnection\";\r\nimport { GeometricModel3dState, GeometricModelState } from \"../ModelState\";\r\nimport { AnimationNodeId, formatAnimationBranchId } from \"../render/GraphicBranch\";\r\nimport { RenderClipVolume } from \"../render/RenderClipVolume\";\r\nimport { SpatialViewState } from \"../SpatialViewState\";\r\nimport { SceneContext } from \"../ViewContext\";\r\nimport { ModelDisplayTransformProvider, ViewState, ViewState3d } from \"../ViewState\";\r\nimport {\r\n IModelTileTree, IModelTileTreeParams, iModelTileTreeParamsFromJSON, MapLayerTileTreeReference, TileDrawArgs, TileGraphicType, TileTree, TileTreeOwner, TileTreeReference,\r\n TileTreeSupplier,\r\n} from \"./internal\";\r\n\r\ninterface PrimaryTreeId {\r\n treeId: PrimaryTileTreeId;\r\n modelId: Id64String;\r\n is3d: boolean;\r\n isPlanProjection: boolean;\r\n forceNoInstancing: boolean;\r\n timeline?: RenderSchedule.ModelTimeline;\r\n}\r\n\r\nclass PlanProjectionTileTree extends IModelTileTree {\r\n public readonly baseElevation: number;\r\n\r\n public constructor(params: IModelTileTreeParams, treeId: PrimaryTileTreeId, baseElevation: number) {\r\n super(params, treeId);\r\n this.baseElevation = baseElevation;\r\n }\r\n}\r\n\r\nclass PrimaryTreeSupplier implements TileTreeSupplier {\r\n public constructor() {\r\n }\r\n\r\n public compareTileTreeIds(lhs: PrimaryTreeId, rhs: PrimaryTreeId): number {\r\n // NB: we don't compare isPlanProjection or is3d - they should always have the same value for a given modelId.\r\n return compareStrings(lhs.modelId, rhs.modelId) || compareIModelTileTreeIds(lhs.treeId, rhs.treeId)\r\n || compareBooleans(lhs.forceNoInstancing, rhs.forceNoInstancing) || comparePossiblyUndefined((x, y) => x.compareTo(y), lhs.timeline, rhs.timeline);\r\n }\r\n\r\n public async createTileTree(id: PrimaryTreeId, iModel: IModelConnection): Promise<TileTree | undefined> {\r\n const treeId = id.treeId;\r\n const idStr = iModelTileTreeIdToString(id.modelId, treeId, IModelApp.tileAdmin);\r\n const props = await IModelApp.tileAdmin.requestTileTreeProps(iModel, idStr);\r\n\r\n // ###TODO remove restriction that animated tile trees can't contained instanced geometry.\r\n const isAnimated = undefined !== treeId.animationId || undefined !== id.timeline;\r\n const allowInstancing = !isAnimated && !treeId.enforceDisplayPriority && !treeId.sectionCut && !id.forceNoInstancing;\r\n const options = {\r\n edges: treeId.edges,\r\n allowInstancing,\r\n is3d: id.is3d,\r\n batchType: BatchType.Primary,\r\n timeline: id.timeline,\r\n };\r\n\r\n const params = iModelTileTreeParamsFromJSON(props, iModel, id.modelId, options);\r\n if (!id.isPlanProjection)\r\n return new IModelTileTree(params, id.treeId);\r\n\r\n let elevation = 0;\r\n try {\r\n const ranges = await iModel.models.queryExtents(id.modelId);\r\n if (1 === ranges.length) {\r\n const range = Range3d.fromJSON(ranges[0].extents);\r\n const lo = range.low.z;\r\n const hi = range.high.z;\r\n if (lo <= hi)\r\n elevation = (lo + hi) / 2;\r\n }\r\n } catch (_err) {\r\n //\r\n }\r\n\r\n return new PlanProjectionTileTree(params, id.treeId, elevation);\r\n }\r\n\r\n public getOwner(id: PrimaryTreeId, iModel: IModelConnection): TileTreeOwner {\r\n return iModel.tiles.getTileTreeOwner(id, this);\r\n }\r\n\r\n public addModelsAnimatedByScript(modelIds: Set<Id64String>, scriptSourceId: Id64String, trees: Iterable<{ id: PrimaryTreeId, owner: TileTreeOwner }>): void {\r\n // Note: This is invoked when an element hosting a schedule script is updated - it doesn't care about frontend schedule scripts.\r\n for (const tree of trees)\r\n if (scriptSourceId === tree.id.treeId.animationId)\r\n modelIds.add(tree.id.modelId);\r\n }\r\n\r\n public addSpatialModels(modelIds: Set<Id64String>, trees: Iterable<{ id: PrimaryTreeId, owner: TileTreeOwner }>): void {\r\n for (const tree of trees)\r\n if (tree.id.is3d)\r\n modelIds.add(tree.id.modelId);\r\n }\r\n}\r\n\r\nconst primaryTreeSupplier = new PrimaryTreeSupplier();\r\n\r\n/** Find all extant tile trees associated with the specified model Ids and dispose of them.\r\n * This is used by BriefcaseConnection when a GraphicalEditingScope is exited or after a change to the models' geometry guids\r\n * is committed, undone, redone, or merged.\r\n * @internal\r\n */\r\nexport function disposeTileTreesForGeometricModels(modelIds: Set<Id64String>, iModel: IModelConnection): void {\r\n const trees = iModel.tiles.getTreeOwnersForSupplier(primaryTreeSupplier);\r\n for (const kvp of trees) {\r\n const id = kvp.id as PrimaryTreeId;\r\n assert(undefined !== id.modelId);\r\n if (modelIds.has(id.modelId))\r\n kvp.owner.dispose();\r\n }\r\n}\r\n\r\nclass PrimaryTreeReference extends TileTreeReference {\r\n public readonly view: ViewState;\r\n public readonly model: GeometricModelState;\r\n /** Chiefly for debugging - disables iteration of this reference in SpatialModelRefs to e.g. omit the reference from the scene. */\r\n public deactivated = false;\r\n protected _viewFlagOverrides: ViewFlagOverrides;\r\n protected _id: PrimaryTreeId;\r\n private _owner: TileTreeOwner;\r\n private readonly _sectionClip?: StringifiedClipVector;\r\n private readonly _sectionCutAppearanceProvider?: FeatureAppearanceProvider;\r\n private _forceNoInstancing: boolean;\r\n protected readonly _animationTransformNodeId?: number;\r\n\r\n public constructor(view: ViewState, model: GeometricModelState, planProjection: boolean, transformNodeId: number | undefined, sectionClip?: StringifiedClipVector) {\r\n super();\r\n this.view = view;\r\n this.model = model;\r\n this._animationTransformNodeId = transformNodeId;\r\n\r\n this._sectionClip = sectionClip;\r\n this._viewFlagOverrides = { ...model.jsonProperties.viewFlagOverrides };\r\n if (sectionClip) {\r\n // Clipping will be applied on backend; don't clip out cut geometry.\r\n this._viewFlagOverrides.clipVolume = false;\r\n this._sectionCutAppearanceProvider = FeatureAppearanceProvider.supplement((app: FeatureAppearance) => {\r\n const cutApp = this.view.displayStyle.settings.clipStyle.cutStyle.appearance;\r\n return cutApp ? app.extendAppearance(cutApp) : app;\r\n });\r\n }\r\n\r\n this._forceNoInstancing = false;\r\n if (!IModelApp.renderSystem.supportsNonuniformScaledInstancing) {\r\n this.checkForceNoInstancing(view.modelDisplayTransformProvider);\r\n view.onModelDisplayTransformProviderChanged.addListener((provider: ModelDisplayTransformProvider | undefined) => this.checkForceNoInstancing(provider));\r\n }\r\n\r\n const scriptInfo = IModelApp.tileAdmin.getScriptInfoForTreeId(model.id, view.displayStyle.scheduleScriptReference); // eslint-disable-line deprecation/deprecation\r\n this._id = {\r\n modelId: model.id,\r\n is3d: model.is3d,\r\n treeId: this.createTreeId(view, model.id),\r\n isPlanProjection: planProjection,\r\n forceNoInstancing: this._forceNoInstancing,\r\n timeline: scriptInfo?.timeline,\r\n };\r\n\r\n this._owner = primaryTreeSupplier.getOwner(this._id, model.iModel);\r\n }\r\n\r\n private checkForceNoInstancing(provider: ModelDisplayTransformProvider | undefined) {\r\n // If this model has a display transform with a non-uniform scale then instancing needs to be forced off when using WebGL1.\r\n this._forceNoInstancing = false;\r\n\r\n const mat = provider?.getModelDisplayTransform(this.model.id)?.matrix;\r\n if (!mat)\r\n return;\r\n\r\n const epsilon = Geometry.smallMetricDistance;\r\n const sx = mat.getColumn(0).magnitudeSquared();\r\n const sy = mat.getColumn(1).magnitudeSquared();\r\n if (Math.abs(sx - sy) > epsilon || Math.abs(sx - mat.getColumn(2).magnitudeSquared()) > epsilon)\r\n this._forceNoInstancing = true;\r\n }\r\n\r\n protected override getAnimationTransformNodeId() {\r\n return this._animationTransformNodeId ?? AnimationNodeId.Untransformed;\r\n }\r\n\r\n protected override getViewFlagOverrides(_tree: TileTree) {\r\n return this._viewFlagOverrides;\r\n }\r\n\r\n protected override getAppearanceProvider(_tree: TileTree): FeatureAppearanceProvider | undefined {\r\n if (this._sectionCutAppearanceProvider && this.view.displayStyle.settings.clipStyle.cutStyle.appearance)\r\n return this._sectionCutAppearanceProvider;\r\n\r\n return undefined;\r\n }\r\n\r\n protected override getHiddenLineSettings(_tree: TileTree): HiddenLine.Settings | undefined {\r\n return this._sectionClip ? this.view.displayStyle.settings.clipStyle.cutStyle.hiddenLine : undefined;\r\n }\r\n\r\n public override get castsShadows() {\r\n return true;\r\n }\r\n\r\n protected get isPlanProjection(): boolean {\r\n return false;\r\n }\r\n\r\n protected override getClipVolume(_tree: TileTree): RenderClipVolume | undefined {\r\n // ###TODO: reduce frequency with which getModelClip() is called\r\n return this.view.is3d() && !this._sectionClip ? this.view.getModelClip(this.model.id) : undefined;\r\n }\r\n\r\n public override createDrawArgs(context: SceneContext): TileDrawArgs | undefined {\r\n const args = super.createDrawArgs(context);\r\n if (args)\r\n args.intersectionClip = this._sectionClip;\r\n\r\n return args;\r\n }\r\n\r\n public get treeOwner(): TileTreeOwner {\r\n const newId = this.createTreeId(this.view, this._id.modelId);\r\n const timeline = IModelApp.tileAdmin.getScriptInfoForTreeId(this._id.modelId, this.view.displayStyle.scheduleScriptReference)?.timeline; // eslint-disable-line deprecation/deprecation\r\n if (0 !== compareIModelTileTreeIds(newId, this._id.treeId) || this._forceNoInstancing !== this._id.forceNoInstancing || timeline !== this._id.timeline) {\r\n this._id = {\r\n modelId: this._id.modelId,\r\n is3d: this._id.is3d,\r\n treeId: newId,\r\n isPlanProjection: this._id.isPlanProjection,\r\n forceNoInstancing: this._forceNoInstancing,\r\n timeline,\r\n };\r\n\r\n this._owner = primaryTreeSupplier.getOwner(this._id, this.model.iModel);\r\n }\r\n\r\n return this._owner;\r\n }\r\n\r\n protected createTreeId(view: ViewState, modelId: Id64String): PrimaryTileTreeId {\r\n if (this._sectionClip) {\r\n // We do this each time in case the ClipStyle's overrides are modified.\r\n // ###TODO: can we avoid that? Event listeners maybe?\r\n this._viewFlagOverrides = {\r\n ...this.view.displayStyle.settings.clipStyle.cutStyle.viewflags,\r\n // Do not clip out the cut geometry intersecting the clip planes.\r\n clipVolume: false,\r\n // The cut geometry is planar - it should win a z-fight.\r\n // Also we need to preserve this flag if this is a plan projection tile tree reference.\r\n forceSurfaceDiscard: true,\r\n };\r\n }\r\n\r\n const animationId = IModelApp.tileAdmin.getScriptInfoForTreeId(modelId, view.displayStyle.scheduleScriptReference)?.animationId; // eslint-disable-line deprecation/deprecation\r\n const renderMode = this._viewFlagOverrides.renderMode ?? view.viewFlags.renderMode;\r\n const visibleEdges = this._viewFlagOverrides.visibleEdges ?? view.viewFlags.visibleEdges;\r\n const edgesRequired = visibleEdges || RenderMode.SmoothShade !== renderMode || IModelApp.tileAdmin.alwaysRequestEdges;\r\n const edges = edgesRequired ? IModelApp.tileAdmin.edgeOptions : false;\r\n const sectionCut = this._sectionClip?.clipString;\r\n return { type: BatchType.Primary, edges, animationId, sectionCut };\r\n }\r\n\r\n protected computeBaseTransform(tree: TileTree): Transform {\r\n return super.computeTransform(tree);\r\n }\r\n\r\n protected override computeTransform(tree: TileTree): Transform {\r\n const baseTf = this.computeBaseTransform(tree);\r\n const displayTf = this.view.modelDisplayTransformProvider?.getModelDisplayTransform(this.model.id);\r\n return displayTf ? baseTf.multiplyTransformTransform(displayTf, displayTf) : baseTf;\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport class AnimatedTreeReference extends PrimaryTreeReference {\r\n private readonly _branchId: string;\r\n\r\n public constructor(view: ViewState, model: GeometricModelState, transformNodeId: number) {\r\n super(view, model, false, transformNodeId);\r\n this._branchId = formatAnimationBranchId(model.id, transformNodeId);\r\n }\r\n\r\n protected override computeBaseTransform(tree: TileTree): Transform {\r\n const tf = super.computeBaseTransform(tree);\r\n const style = this.view.displayStyle;\r\n const script = style.scheduleScript;\r\n if (undefined === script || undefined === this._animationTransformNodeId)\r\n return tf;\r\n\r\n const timePoint = style.settings.timePoint ?? script.duration.low;\r\n const animTf = script.getTransform(this._id.modelId, this._animationTransformNodeId, timePoint);\r\n if (animTf)\r\n animTf.multiplyTransformTransform(tf, tf);\r\n\r\n return tf;\r\n }\r\n\r\n public override createDrawArgs(context: SceneContext): TileDrawArgs | undefined {\r\n const animBranch = context.viewport.target.animationBranches?.branchStates.get(this._branchId);\r\n if (animBranch && animBranch.omit)\r\n return undefined;\r\n\r\n const args = super.createDrawArgs(context);\r\n if (args?.tree && undefined !== this._animationTransformNodeId) {\r\n assert(args.tree instanceof IModelTileTree);\r\n args.boundingRange = args.tree.getTransformNodeRange(this._animationTransformNodeId);\r\n }\r\n\r\n return args;\r\n }\r\n}\r\n\r\nclass PlanProjectionTreeReference extends PrimaryTreeReference {\r\n private get _view3d() { return this.view as ViewState3d; }\r\n private readonly _baseTransform = Transform.createIdentity();\r\n\r\n public constructor(view: ViewState3d, model: GeometricModelState, sectionCut?: StringifiedClipVector) {\r\n super(view, model, true, undefined, sectionCut);\r\n this._viewFlagOverrides.forceSurfaceDiscard = true;\r\n }\r\n\r\n public override get castsShadows() {\r\n return false;\r\n }\r\n\r\n protected override get isPlanProjection(): boolean {\r\n return true;\r\n }\r\n\r\n public override createDrawArgs(context: SceneContext): TileDrawArgs | undefined {\r\n const args = super.createDrawArgs(context);\r\n if (undefined !== args && this._id.treeId.enforceDisplayPriority) {\r\n args.drawGraphics = () => { // eslint-disable-line @typescript-eslint/unbound-method\r\n const graphics = args.produceGraphics();\r\n if (undefined !== graphics) {\r\n const settings = this.getSettings();\r\n const asOverlay = undefined !== settings && settings.overlay;\r\n const transparency = settings?.transparency || 0;\r\n\r\n let elevation = settings?.elevation;\r\n if (undefined === elevation) {\r\n const tree = this.treeOwner.tileTree;\r\n if (tree) {\r\n assert(tree instanceof PlanProjectionTileTree);\r\n elevation = tree.baseElevation;\r\n } else {\r\n elevation = 0;\r\n }\r\n }\r\n\r\n context.outputGraphic(context.target.renderSystem.createGraphicLayerContainer(graphics, asOverlay, transparency, elevation));\r\n }\r\n };\r\n }\r\n\r\n return args;\r\n }\r\n\r\n protected override computeBaseTransform(tree: TileTree): Transform {\r\n assert(tree instanceof PlanProjectionTileTree);\r\n const transform = tree.iModelTransform.clone(this._baseTransform);\r\n\r\n const elevation = this.getSettings()?.elevation;\r\n if (undefined !== elevation)\r\n transform.origin.z = elevation;\r\n\r\n return transform;\r\n }\r\n\r\n public override draw(args: TileDrawArgs): void {\r\n const settings = this.getSettings();\r\n if (undefined === settings || settings.enforceDisplayPriority || !settings.overlay)\r\n super.draw(args);\r\n else\r\n args.context.withGraphicType(TileGraphicType.Overlay, () => args.tree.draw(args));\r\n }\r\n\r\n private getSettings() {\r\n return this._view3d.getDisplayStyle3d().settings.getPlanProjectionSettings(this.model.id);\r\n }\r\n\r\n protected override createTreeId(view: ViewState, modelId: Id64String): PrimaryTileTreeId {\r\n const id = super.createTreeId(view, modelId);\r\n const settings = this.getSettings();\r\n if (undefined !== settings && settings.enforceDisplayPriority)\r\n id.enforceDisplayPriority = true;\r\n\r\n return id;\r\n }\r\n}\r\n\r\nfunction isPlanProjection(view: ViewState, model: GeometricModelState): boolean {\r\n const model3d = view.is3d() ? model.asGeometricModel3d : undefined;\r\n return undefined !== model3d && model3d.isPlanProjection;\r\n}\r\n\r\nfunction createTreeRef(view: ViewState, model: GeometricModelState, sectionCut: StringifiedClipVector | undefined): PrimaryTreeReference {\r\n if (false !== IModelApp.renderSystem.options.planProjections && isPlanProjection(view, model))\r\n return new PlanProjectionTreeReference(view as ViewState3d, model, sectionCut);\r\n\r\n return new PrimaryTreeReference(view, model, false, undefined, sectionCut);\r\n}\r\n\r\n/** @internal */\r\nexport function createPrimaryTileTreeReference(view: ViewState, model: GeometricModelState): PrimaryTreeReference {\r\n return createTreeRef(view, model, undefined);\r\n}\r\n\r\nclass MaskTreeReference extends TileTreeReference {\r\n protected _id: PrimaryTreeId;\r\n private _owner: TileTreeOwner;\r\n public readonly model: GeometricModelState;\r\n public override get castsShadows() { return false; }\r\n public constructor(view: ViewState, model: GeometricModelState) {\r\n super();\r\n this.model = model;\r\n this._id = {\r\n modelId: model.id,\r\n is3d: model.is3d,\r\n treeId: this.createTreeId(),\r\n isPlanProjection: isPlanProjection(view, model),\r\n forceNoInstancing: false,\r\n };\r\n\r\n this._owner = primaryTreeSupplier.getOwner(this._id, model.iModel);\r\n }\r\n\r\n public get treeOwner(): TileTreeOwner {\r\n const newId = this.createTreeId();\r\n if (0 !== compareIModelTileTreeIds(newId, this._id.treeId)) {\r\n this._id = { modelId: this._id.modelId, is3d: this._id.is3d, treeId: newId, isPlanProjection: false, forceNoInstancing: false };\r\n this._owner = primaryTreeSupplier.getOwner(this._id, this.model.iModel);\r\n }\r\n\r\n return this._owner;\r\n }\r\n protected createTreeId(): PrimaryTileTreeId {\r\n return { type: BatchType.Primary, edges: false };\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport function createMaskTreeReference(view: ViewState, model: GeometricModelState): TileTreeReference {\r\n return new MaskTreeReference(view, model);\r\n}\r\n\r\n/** @internal */\r\nexport class ModelMapLayerTileTreeReference extends MapLayerTileTreeReference {\r\n private _id: PrimaryTreeId;\r\n private _owner: TileTreeOwner;\r\n public get isPlanar() { return true; }\r\n public get activeClassifier() { return this._classifier; }\r\n public constructor(layerSettings: MapLayerSettings, private _classifier: SpatialClassifier, layerIndex: number, iModel: IModelConnection, private _source?: DisplayStyleState) {\r\n super(layerSettings, layerIndex, iModel);\r\n this._id = {\r\n modelId: _classifier.modelId,\r\n is3d: true, // model.is3d,\r\n treeId: this.createTreeId(),\r\n isPlanProjection: false, // isPlanProjection(view, model),\r\n forceNoInstancing: false,\r\n };\r\n\r\n this._owner = primaryTreeSupplier.getOwner(this._id, this.iModel);\r\n }\r\n\r\n protected createTreeId(): PrimaryTileTreeId {\r\n return { type: BatchType.Primary, edges: false };\r\n }\r\n\r\n public get treeOwner(): TileTreeOwner {\r\n const newId = this.createTreeId();\r\n if (0 !== compareIModelTileTreeIds(newId, this._id.treeId)) {\r\n this._id = { modelId: this._id.modelId, is3d: this._id.is3d, treeId: newId, isPlanProjection: false, forceNoInstancing: false };\r\n this._owner = primaryTreeSupplier.getOwner(this._id, this.iModel);\r\n }\r\n\r\n return this._owner;\r\n }\r\n public get viewFlags(): Partial<ViewFlagsProperties> {\r\n return {\r\n renderMode: RenderMode.SmoothShade,\r\n transparency: true, // Igored for point clouds as they don't support transparency.\r\n textures: true,\r\n lighting: false,\r\n shadows: false,\r\n monochrome: false,\r\n materials: false,\r\n ambientOcclusion: false,\r\n visibleEdges: true,\r\n hiddenEdges: false,\r\n fill: true,\r\n };\r\n }\r\n}\r\n/** @internal */\r\nexport function createModelMapLayerTileTreeReference(layerSettings: ModelMapLayerSettings, layerIndex: number, iModel: IModelConnection): ModelMapLayerTileTreeReference | undefined {\r\n const classifier = SpatialClassifier.fromModelMapLayer(layerSettings);\r\n return classifier ? new ModelMapLayerTileTreeReference(layerSettings, classifier, layerIndex, iModel) : undefined;\r\n}\r\n\r\n/** Provides [[TileTreeReference]]s for the loaded models present in a [[SpatialViewState]]'s [[ModelSelectorState]].\r\n * @internal\r\n */\r\nexport interface SpatialTileTreeReferences extends Iterable<TileTreeReference> {\r\n /** Supplies an iterator over all of the [[TileTreeReference]]s. */\r\n [Symbol.iterator](): Iterator<TileTreeReference>;\r\n /** Requests that the set of [[TileTreeReference]]s be updated to match the current state of the view, e.g., after the model selector's contents have changed. */\r\n update(): void;\r\n /** See SpatialViewState.setTileTreeReferencesDeactivated. */\r\n setDeactivated(modelIds: Id64String | Id64String[] | undefined, deactivated: boolean | undefined, refs: \"all\" | \"animated\" | \"primary\" | \"section\" | number[]): void;\r\n}\r\n\r\n/** Provides [[TileTreeReference]]s for the loaded models present in a [[SpatialViewState]]'s [[ModelSelectorState]].\r\n * @internal\r\n */\r\nexport namespace SpatialTileTreeReferences {\r\n /** Create a SpatialTileTreeReferences object reflecting the contents of the specified view. */\r\n export function create(view: SpatialViewState): SpatialTileTreeReferences {\r\n return new SpatialRefs(view);\r\n }\r\n}\r\n\r\n/** Represents the [[TileTreeReference]]s associated with one model in a [[SpatialTileTreeReferences]]. */\r\nclass SpatialModelRefs implements Iterable<TileTreeReference> {\r\n /** The TileTreeReference representing the model's primary content. */\r\n private readonly _modelRef: TileTreeReference;\r\n /** TileTreeReferences representing nodes transformed by the view's schedule script. */\r\n private readonly _animatedRefs: PrimaryTreeReference[] = [];\r\n /** TileTreeReference providing cut geometry intersecting the view's clip volume. */\r\n private _sectionCutRef?: PrimaryTreeReference;\r\n /** Whether `this._modelRef` is a [[PrimaryTreeReference]] (as opposed to, e.g., a reality model tree reference). */\r\n private readonly _isPrimaryRef: boolean;\r\n\r\n public constructor(model: GeometricModel3dState, view: SpatialViewState) {\r\n this._modelRef = model.createTileTreeReference(view);\r\n this._isPrimaryRef = this._modelRef instanceof PrimaryTreeReference;\r\n }\r\n\r\n public *[Symbol.iterator](): Iterator<TileTreeReference> {\r\n if (!this._primaryRef || !this._primaryRef.deactivated)\r\n yield this._modelRef;\r\n\r\n for (const animated of this._animatedRefs)\r\n if (!animated.deactivated)\r\n yield animated;\r\n\r\n if (this._sectionCutRef && !this._sectionCutRef.deactivated)\r\n yield this._sectionCutRef;\r\n }\r\n\r\n public updateAnimated(script: RenderSchedule.ScriptReference | undefined): void {\r\n const ref = this._primaryRef;\r\n if (!ref)\r\n return;\r\n\r\n this._animatedRefs.length = 0;\r\n const nodeIds = script?.script.getTransformBatchIds(ref.model.id);\r\n if (nodeIds)\r\n for (const nodeId of nodeIds)\r\n this._animatedRefs.push(new AnimatedTreeReference(ref.view, ref.model, nodeId));\r\n }\r\n\r\n public updateSectionCut(clip: StringifiedClipVector | undefined): void {\r\n const ref = this._primaryRef;\r\n if (!ref) {\r\n assert(undefined === this._sectionCutRef);\r\n return;\r\n }\r\n\r\n // If the clip isn't supposed to apply to this model, don't produce cut geometry.\r\n const vfJson = clip ? ref.model.jsonProperties.viewFlagOverrides : undefined;\r\n const vfOvrs = vfJson ? { ...vfJson } : undefined;\r\n if (vfOvrs && !vfOvrs.clipVolume)\r\n clip = undefined;\r\n\r\n this._sectionCutRef = clip ? createTreeRef(ref.view, ref.model, clip) : undefined;\r\n }\r\n\r\n public setDeactivated(deactivated: boolean | undefined, which: \"all\" | \"animated\" | \"primary\" | \"section\" | number[]): void {\r\n if (typeof which !== \"string\") {\r\n for (const index of which)\r\n if (this._animatedRefs[index])\r\n this._animatedRefs[index].deactivated = deactivated ?? !this._animatedRefs[index].deactivated;\r\n\r\n return;\r\n }\r\n\r\n if ((\"all\" === which || \"primary\" === which) && this._primaryRef)\r\n this._primaryRef.deactivated = deactivated ?? !this._primaryRef.deactivated;\r\n\r\n if ((\"all\" === which || \"section\" === which) && this._sectionCutRef)\r\n this._sectionCutRef.deactivated = deactivated ?? !this._sectionCutRef.deactivated;\r\n\r\n if ((\"all\" === which || \"animated\" === which))\r\n for (const ref of this._animatedRefs)\r\n ref.deactivated = deactivated ?? !ref.deactivated;\r\n }\r\n\r\n private get _primaryRef(): PrimaryTreeReference | undefined {\r\n if (!this._isPrimaryRef)\r\n return undefined;\r\n\r\n assert(this._modelRef instanceof PrimaryTreeReference);\r\n return this._modelRef;\r\n }\r\n}\r\n\r\n/** Provides [[TileTreeReference]]s for the loaded models present in a [[SpatialViewState]]'s [[ModelSelectorState]]. */\r\nclass SpatialRefs implements SpatialTileTreeReferences {\r\n private _allLoaded = false;\r\n private readonly _view: SpatialViewState;\r\n private _refs = new Map<Id64String, SpatialModelRefs>();\r\n private _swapRefs = new Map<Id64String, SpatialModelRefs>();\r\n private _scheduleScript?: RenderSchedule.ScriptReference;\r\n private _sectionCut?: StringifiedClipVector;\r\n\r\n public constructor(view: SpatialViewState) {\r\n this._view = view;\r\n this._scheduleScript = view.displayStyle.scheduleScriptReference; // eslint-disable-line deprecation/deprecation\r\n this._sectionCut = this.getSectionCutFromView();\r\n }\r\n\r\n public update(): void {\r\n this._allLoaded = false;\r\n }\r\n\r\n public *[Symbol.iterator](): Iterator<TileTreeReference> {\r\n this.load();\r\n for (const modelRef of this._refs.values())\r\n for (const ref of modelRef)\r\n yield ref;\r\n }\r\n\r\n public setDeactivated(modelIds: Id64String | Id64String[] | undefined, deactivated: boolean, refs: \"all\" | \"animated\" | \"primary\" | \"section\" | number[]): void {\r\n if (undefined === modelIds) {\r\n for (const model of this._refs.values())\r\n model.setDeactivated(deactivated, refs);\r\n\r\n return;\r\n }\r\n\r\n if (typeof modelIds === \"string\")\r\n modelIds = [modelIds];\r\n\r\n for (const modelId of modelIds)\r\n this._refs.get(modelId)?.setDeactivated(deactivated, refs);\r\n }\r\n\r\n private load(): void {\r\n if (!this._allLoaded) {\r\n this._allLoaded = true;\r\n this.updateModels();\r\n }\r\n\r\n const curScript = this._view.displayStyle.scheduleScriptReference; // eslint-disable-line deprecation/deprecation\r\n const prevScript = this._scheduleScript;\r\n if (curScript !== prevScript) {\r\n this._scheduleScript = curScript;\r\n if (!curScript || !prevScript || !curScript.script.equals(prevScript.script))\r\n for (const ref of this._refs.values())\r\n ref.updateAnimated(curScript);\r\n }\r\n\r\n const sectionCut = this.getSectionCutFromView();\r\n if (sectionCut?.clipString !== this._sectionCut?.clipString) {\r\n this._sectionCut = sectionCut;\r\n for (const ref of this._refs.values())\r\n ref.updateSectionCut(sectionCut);\r\n }\r\n }\r\n\r\n private getSectionCutFromView(): StringifiedClipVector | undefined {\r\n const wantCut = this._view.viewFlags.clipVolume && this._view.displayStyle.settings.clipStyle.produceCutGeometry;\r\n const clip = wantCut ? this._view.getViewClip() : undefined;\r\n return StringifiedClipVector.fromClipVector(clip);\r\n }\r\n\r\n /** Ensure this._refs contains a SpatialModelRefs for all loaded models in the model selector. */\r\n private updateModels(): void {\r\n const prev = this._refs;\r\n const cur = this._swapRefs;\r\n this._refs = cur;\r\n this._swapRefs = prev;\r\n cur.clear();\r\n\r\n for (const modelId of this._view.modelSelector.models) {\r\n let modelRefs = prev.get(modelId);\r\n if (!modelRefs) {\r\n const model = this._view.iModel.models.getLoaded(modelId)?.asGeometricModel3d;\r\n if (model) {\r\n modelRefs = new SpatialModelRefs(model, this._view);\r\n modelRefs.updateAnimated(this._scheduleScript);\r\n modelRefs.updateSectionCut(this._sectionCut);\r\n }\r\n }\r\n\r\n if (modelRefs)\r\n cur.set(modelId, modelRefs);\r\n }\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"PrimaryTileTree.js","sourceRoot":"","sources":["../../../src/tile/PrimaryTileTree.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module Tiles\r\n */\r\n\r\nimport {\r\n assert, comparePossiblyUndefined, compareStrings, Id64String,\r\n} from \"@itwin/core-bentley\";\r\nimport {\r\n BatchType, compareIModelTileTreeIds, FeatureAppearance, FeatureAppearanceProvider, HiddenLine, iModelTileTreeIdToString, MapLayerSettings, ModelMapLayerSettings,\r\n PrimaryTileTreeId, RenderMode, RenderSchedule, SpatialClassifier, ViewFlagOverrides, ViewFlagsProperties,\r\n} from \"@itwin/core-common\";\r\nimport { Range3d, StringifiedClipVector, Transform } from \"@itwin/core-geometry\";\r\nimport { DisplayStyleState } from \"../DisplayStyleState\";\r\nimport { IModelApp } from \"../IModelApp\";\r\nimport { IModelConnection } from \"../IModelConnection\";\r\nimport { GeometricModel3dState, GeometricModelState } from \"../ModelState\";\r\nimport { AnimationNodeId, formatAnimationBranchId } from \"../render/GraphicBranch\";\r\nimport { RenderClipVolume } from \"../render/RenderClipVolume\";\r\nimport { SpatialViewState } from \"../SpatialViewState\";\r\nimport { SceneContext } from \"../ViewContext\";\r\nimport { ViewState, ViewState3d } from \"../ViewState\";\r\nimport {\r\n IModelTileTree, IModelTileTreeParams, iModelTileTreeParamsFromJSON, MapLayerTileTreeReference, TileDrawArgs, TileGraphicType, TileTree, TileTreeOwner, TileTreeReference,\r\n TileTreeSupplier,\r\n} from \"./internal\";\r\n\r\ninterface PrimaryTreeId {\r\n treeId: PrimaryTileTreeId;\r\n modelId: Id64String;\r\n is3d: boolean;\r\n isPlanProjection: boolean;\r\n timeline?: RenderSchedule.ModelTimeline;\r\n}\r\n\r\nclass PlanProjectionTileTree extends IModelTileTree {\r\n public readonly baseElevation: number;\r\n\r\n public constructor(params: IModelTileTreeParams, treeId: PrimaryTileTreeId, baseElevation: number) {\r\n super(params, treeId);\r\n this.baseElevation = baseElevation;\r\n }\r\n}\r\n\r\nclass PrimaryTreeSupplier implements TileTreeSupplier {\r\n public constructor() {\r\n }\r\n\r\n public compareTileTreeIds(lhs: PrimaryTreeId, rhs: PrimaryTreeId): number {\r\n // NB: we don't compare isPlanProjection or is3d - they should always have the same value for a given modelId.\r\n return compareStrings(lhs.modelId, rhs.modelId) || compareIModelTileTreeIds(lhs.treeId, rhs.treeId)\r\n || comparePossiblyUndefined((x, y) => x.compareTo(y), lhs.timeline, rhs.timeline);\r\n }\r\n\r\n public async createTileTree(id: PrimaryTreeId, iModel: IModelConnection): Promise<TileTree | undefined> {\r\n const treeId = id.treeId;\r\n const idStr = iModelTileTreeIdToString(id.modelId, treeId, IModelApp.tileAdmin);\r\n const props = await IModelApp.tileAdmin.requestTileTreeProps(iModel, idStr);\r\n\r\n // ###TODO remove restriction that animated tile trees can't contained instanced geometry.\r\n const isAnimated = undefined !== treeId.animationId || undefined !== id.timeline;\r\n const allowInstancing = !isAnimated && !treeId.enforceDisplayPriority && !treeId.sectionCut;\r\n const options = {\r\n edges: treeId.edges,\r\n allowInstancing,\r\n is3d: id.is3d,\r\n batchType: BatchType.Primary,\r\n timeline: id.timeline,\r\n };\r\n\r\n const params = iModelTileTreeParamsFromJSON(props, iModel, id.modelId, options);\r\n if (!id.isPlanProjection)\r\n return new IModelTileTree(params, id.treeId);\r\n\r\n let elevation = 0;\r\n try {\r\n const ranges = await iModel.models.queryExtents(id.modelId);\r\n if (1 === ranges.length) {\r\n const range = Range3d.fromJSON(ranges[0].extents);\r\n const lo = range.low.z;\r\n const hi = range.high.z;\r\n if (lo <= hi)\r\n elevation = (lo + hi) / 2;\r\n }\r\n } catch (_err) {\r\n //\r\n }\r\n\r\n return new PlanProjectionTileTree(params, id.treeId, elevation);\r\n }\r\n\r\n public getOwner(id: PrimaryTreeId, iModel: IModelConnection): TileTreeOwner {\r\n return iModel.tiles.getTileTreeOwner(id, this);\r\n }\r\n\r\n public addModelsAnimatedByScript(modelIds: Set<Id64String>, scriptSourceId: Id64String, trees: Iterable<{ id: PrimaryTreeId, owner: TileTreeOwner }>): void {\r\n // Note: This is invoked when an element hosting a schedule script is updated - it doesn't care about frontend schedule scripts.\r\n for (const tree of trees)\r\n if (scriptSourceId === tree.id.treeId.animationId)\r\n modelIds.add(tree.id.modelId);\r\n }\r\n\r\n public addSpatialModels(modelIds: Set<Id64String>, trees: Iterable<{ id: PrimaryTreeId, owner: TileTreeOwner }>): void {\r\n for (const tree of trees)\r\n if (tree.id.is3d)\r\n modelIds.add(tree.id.modelId);\r\n }\r\n}\r\n\r\nconst primaryTreeSupplier = new PrimaryTreeSupplier();\r\n\r\n/** Find all extant tile trees associated with the specified model Ids and dispose of them.\r\n * This is used by BriefcaseConnection when a GraphicalEditingScope is exited or after a change to the models' geometry guids\r\n * is committed, undone, redone, or merged.\r\n * @internal\r\n */\r\nexport function disposeTileTreesForGeometricModels(modelIds: Set<Id64String>, iModel: IModelConnection): void {\r\n const trees = iModel.tiles.getTreeOwnersForSupplier(primaryTreeSupplier);\r\n for (const kvp of trees) {\r\n const id = kvp.id as PrimaryTreeId;\r\n assert(undefined !== id.modelId);\r\n if (modelIds.has(id.modelId))\r\n kvp.owner.dispose();\r\n }\r\n}\r\n\r\nclass PrimaryTreeReference extends TileTreeReference {\r\n public readonly view: ViewState;\r\n public readonly model: GeometricModelState;\r\n /** Chiefly for debugging - disables iteration of this reference in SpatialModelRefs to e.g. omit the reference from the scene. */\r\n public deactivated = false;\r\n protected _viewFlagOverrides: ViewFlagOverrides;\r\n protected _id: PrimaryTreeId;\r\n private _owner: TileTreeOwner;\r\n private readonly _sectionClip?: StringifiedClipVector;\r\n private readonly _sectionCutAppearanceProvider?: FeatureAppearanceProvider;\r\n protected readonly _animationTransformNodeId?: number;\r\n\r\n public constructor(view: ViewState, model: GeometricModelState, planProjection: boolean, transformNodeId: number | undefined, sectionClip?: StringifiedClipVector) {\r\n super();\r\n this.view = view;\r\n this.model = model;\r\n this._animationTransformNodeId = transformNodeId;\r\n\r\n this._sectionClip = sectionClip;\r\n this._viewFlagOverrides = { ...model.jsonProperties.viewFlagOverrides };\r\n if (sectionClip) {\r\n // Clipping will be applied on backend; don't clip out cut geometry.\r\n this._viewFlagOverrides.clipVolume = false;\r\n this._sectionCutAppearanceProvider = FeatureAppearanceProvider.supplement((app: FeatureAppearance) => {\r\n const cutApp = this.view.displayStyle.settings.clipStyle.cutStyle.appearance;\r\n return cutApp ? app.extendAppearance(cutApp) : app;\r\n });\r\n }\r\n\r\n const scriptInfo = IModelApp.tileAdmin.getScriptInfoForTreeId(model.id, view.displayStyle.scheduleScriptReference); // eslint-disable-line deprecation/deprecation\r\n this._id = {\r\n modelId: model.id,\r\n is3d: model.is3d,\r\n treeId: this.createTreeId(view, model.id),\r\n isPlanProjection: planProjection,\r\n timeline: scriptInfo?.timeline,\r\n };\r\n\r\n this._owner = primaryTreeSupplier.getOwner(this._id, model.iModel);\r\n }\r\n\r\n protected override getAnimationTransformNodeId() {\r\n return this._animationTransformNodeId ?? AnimationNodeId.Untransformed;\r\n }\r\n\r\n protected override getViewFlagOverrides(_tree: TileTree) {\r\n return this._viewFlagOverrides;\r\n }\r\n\r\n protected override getAppearanceProvider(_tree: TileTree): FeatureAppearanceProvider | undefined {\r\n if (this._sectionCutAppearanceProvider && this.view.displayStyle.settings.clipStyle.cutStyle.appearance)\r\n return this._sectionCutAppearanceProvider;\r\n\r\n return undefined;\r\n }\r\n\r\n protected override getHiddenLineSettings(_tree: TileTree): HiddenLine.Settings | undefined {\r\n return this._sectionClip ? this.view.displayStyle.settings.clipStyle.cutStyle.hiddenLine : undefined;\r\n }\r\n\r\n public override get castsShadows() {\r\n return true;\r\n }\r\n\r\n protected get isPlanProjection(): boolean {\r\n return false;\r\n }\r\n\r\n protected override getClipVolume(_tree: TileTree): RenderClipVolume | undefined {\r\n // ###TODO: reduce frequency with which getModelClip() is called\r\n return this.view.is3d() && !this._sectionClip ? this.view.getModelClip(this.model.id) : undefined;\r\n }\r\n\r\n public override createDrawArgs(context: SceneContext): TileDrawArgs | undefined {\r\n const args = super.createDrawArgs(context);\r\n if (args)\r\n args.intersectionClip = this._sectionClip;\r\n\r\n return args;\r\n }\r\n\r\n public get treeOwner(): TileTreeOwner {\r\n const newId = this.createTreeId(this.view, this._id.modelId);\r\n const timeline = IModelApp.tileAdmin.getScriptInfoForTreeId(this._id.modelId, this.view.displayStyle.scheduleScriptReference)?.timeline; // eslint-disable-line deprecation/deprecation\r\n if (0 !== compareIModelTileTreeIds(newId, this._id.treeId) || timeline !== this._id.timeline) {\r\n this._id = {\r\n modelId: this._id.modelId,\r\n is3d: this._id.is3d,\r\n treeId: newId,\r\n isPlanProjection: this._id.isPlanProjection,\r\n timeline,\r\n };\r\n\r\n this._owner = primaryTreeSupplier.getOwner(this._id, this.model.iModel);\r\n }\r\n\r\n return this._owner;\r\n }\r\n\r\n protected createTreeId(view: ViewState, modelId: Id64String): PrimaryTileTreeId {\r\n if (this._sectionClip) {\r\n // We do this each time in case the ClipStyle's overrides are modified.\r\n // ###TODO: can we avoid that? Event listeners maybe?\r\n this._viewFlagOverrides = {\r\n ...this.view.displayStyle.settings.clipStyle.cutStyle.viewflags,\r\n // Do not clip out the cut geometry intersecting the clip planes.\r\n clipVolume: false,\r\n // The cut geometry is planar - it should win a z-fight.\r\n // Also we need to preserve this flag if this is a plan projection tile tree reference.\r\n forceSurfaceDiscard: true,\r\n };\r\n }\r\n\r\n const animationId = IModelApp.tileAdmin.getScriptInfoForTreeId(modelId, view.displayStyle.scheduleScriptReference)?.animationId; // eslint-disable-line deprecation/deprecation\r\n const renderMode = this._viewFlagOverrides.renderMode ?? view.viewFlags.renderMode;\r\n const visibleEdges = this._viewFlagOverrides.visibleEdges ?? view.viewFlags.visibleEdges;\r\n const edgesRequired = visibleEdges || RenderMode.SmoothShade !== renderMode || IModelApp.tileAdmin.alwaysRequestEdges;\r\n const edges = edgesRequired ? IModelApp.tileAdmin.edgeOptions : false;\r\n const sectionCut = this._sectionClip?.clipString;\r\n return { type: BatchType.Primary, edges, animationId, sectionCut };\r\n }\r\n\r\n protected computeBaseTransform(tree: TileTree): Transform {\r\n return super.computeTransform(tree);\r\n }\r\n\r\n protected override computeTransform(tree: TileTree): Transform {\r\n const baseTf = this.computeBaseTransform(tree);\r\n const displayTf = this.view.modelDisplayTransformProvider?.getModelDisplayTransform(this.model.id);\r\n return displayTf ? baseTf.multiplyTransformTransform(displayTf, displayTf) : baseTf;\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport class AnimatedTreeReference extends PrimaryTreeReference {\r\n private readonly _branchId: string;\r\n\r\n public constructor(view: ViewState, model: GeometricModelState, transformNodeId: number) {\r\n super(view, model, false, transformNodeId);\r\n this._branchId = formatAnimationBranchId(model.id, transformNodeId);\r\n }\r\n\r\n protected override computeBaseTransform(tree: TileTree): Transform {\r\n const tf = super.computeBaseTransform(tree);\r\n const style = this.view.displayStyle;\r\n const script = style.scheduleScript;\r\n if (undefined === script || undefined === this._animationTransformNodeId)\r\n return tf;\r\n\r\n const timePoint = style.settings.timePoint ?? script.duration.low;\r\n const animTf = script.getTransform(this._id.modelId, this._animationTransformNodeId, timePoint);\r\n if (animTf)\r\n animTf.multiplyTransformTransform(tf, tf);\r\n\r\n return tf;\r\n }\r\n\r\n public override createDrawArgs(context: SceneContext): TileDrawArgs | undefined {\r\n const animBranch = context.viewport.target.animationBranches?.branchStates.get(this._branchId);\r\n if (animBranch && animBranch.omit)\r\n return undefined;\r\n\r\n const args = super.createDrawArgs(context);\r\n if (args?.tree && undefined !== this._animationTransformNodeId) {\r\n assert(args.tree instanceof IModelTileTree);\r\n args.boundingRange = args.tree.getTransformNodeRange(this._animationTransformNodeId);\r\n }\r\n\r\n return args;\r\n }\r\n}\r\n\r\nclass PlanProjectionTreeReference extends PrimaryTreeReference {\r\n private get _view3d() { return this.view as ViewState3d; }\r\n private readonly _baseTransform = Transform.createIdentity();\r\n\r\n public constructor(view: ViewState3d, model: GeometricModelState, sectionCut?: StringifiedClipVector) {\r\n super(view, model, true, undefined, sectionCut);\r\n this._viewFlagOverrides.forceSurfaceDiscard = true;\r\n }\r\n\r\n public override get castsShadows() {\r\n return false;\r\n }\r\n\r\n protected override get isPlanProjection(): boolean {\r\n return true;\r\n }\r\n\r\n public override createDrawArgs(context: SceneContext): TileDrawArgs | undefined {\r\n const args = super.createDrawArgs(context);\r\n if (undefined !== args && this._id.treeId.enforceDisplayPriority) {\r\n args.drawGraphics = () => { // eslint-disable-line @typescript-eslint/unbound-method\r\n const graphics = args.produceGraphics();\r\n if (undefined !== graphics) {\r\n const settings = this.getSettings();\r\n const asOverlay = undefined !== settings && settings.overlay;\r\n const transparency = settings?.transparency || 0;\r\n\r\n let elevation = settings?.elevation;\r\n if (undefined === elevation) {\r\n const tree = this.treeOwner.tileTree;\r\n if (tree) {\r\n assert(tree instanceof PlanProjectionTileTree);\r\n elevation = tree.baseElevation;\r\n } else {\r\n elevation = 0;\r\n }\r\n }\r\n\r\n context.outputGraphic(context.target.renderSystem.createGraphicLayerContainer(graphics, asOverlay, transparency, elevation));\r\n }\r\n };\r\n }\r\n\r\n return args;\r\n }\r\n\r\n protected override computeBaseTransform(tree: TileTree): Transform {\r\n assert(tree instanceof PlanProjectionTileTree);\r\n const transform = tree.iModelTransform.clone(this._baseTransform);\r\n\r\n const elevation = this.getSettings()?.elevation;\r\n if (undefined !== elevation)\r\n transform.origin.z = elevation;\r\n\r\n return transform;\r\n }\r\n\r\n public override draw(args: TileDrawArgs): void {\r\n const settings = this.getSettings();\r\n if (undefined === settings || settings.enforceDisplayPriority || !settings.overlay)\r\n super.draw(args);\r\n else\r\n args.context.withGraphicType(TileGraphicType.Overlay, () => args.tree.draw(args));\r\n }\r\n\r\n private getSettings() {\r\n return this._view3d.getDisplayStyle3d().settings.getPlanProjectionSettings(this.model.id);\r\n }\r\n\r\n protected override createTreeId(view: ViewState, modelId: Id64String): PrimaryTileTreeId {\r\n const id = super.createTreeId(view, modelId);\r\n const settings = this.getSettings();\r\n if (undefined !== settings && settings.enforceDisplayPriority)\r\n id.enforceDisplayPriority = true;\r\n\r\n return id;\r\n }\r\n}\r\n\r\nfunction isPlanProjection(view: ViewState, model: GeometricModelState): boolean {\r\n const model3d = view.is3d() ? model.asGeometricModel3d : undefined;\r\n return undefined !== model3d && model3d.isPlanProjection;\r\n}\r\n\r\nfunction createTreeRef(view: ViewState, model: GeometricModelState, sectionCut: StringifiedClipVector | undefined): PrimaryTreeReference {\r\n if (false !== IModelApp.renderSystem.options.planProjections && isPlanProjection(view, model))\r\n return new PlanProjectionTreeReference(view as ViewState3d, model, sectionCut);\r\n\r\n return new PrimaryTreeReference(view, model, false, undefined, sectionCut);\r\n}\r\n\r\n/** @internal */\r\nexport function createPrimaryTileTreeReference(view: ViewState, model: GeometricModelState): PrimaryTreeReference {\r\n return createTreeRef(view, model, undefined);\r\n}\r\n\r\nclass MaskTreeReference extends TileTreeReference {\r\n protected _id: PrimaryTreeId;\r\n private _owner: TileTreeOwner;\r\n public readonly model: GeometricModelState;\r\n public override get castsShadows() { return false; }\r\n public constructor(view: ViewState, model: GeometricModelState) {\r\n super();\r\n this.model = model;\r\n this._id = {\r\n modelId: model.id,\r\n is3d: model.is3d,\r\n treeId: this.createTreeId(),\r\n isPlanProjection: isPlanProjection(view, model),\r\n };\r\n\r\n this._owner = primaryTreeSupplier.getOwner(this._id, model.iModel);\r\n }\r\n\r\n public get treeOwner(): TileTreeOwner {\r\n const newId = this.createTreeId();\r\n if (0 !== compareIModelTileTreeIds(newId, this._id.treeId)) {\r\n this._id = { modelId: this._id.modelId, is3d: this._id.is3d, treeId: newId, isPlanProjection: false };\r\n this._owner = primaryTreeSupplier.getOwner(this._id, this.model.iModel);\r\n }\r\n\r\n return this._owner;\r\n }\r\n protected createTreeId(): PrimaryTileTreeId {\r\n return { type: BatchType.Primary, edges: false };\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport function createMaskTreeReference(view: ViewState, model: GeometricModelState): TileTreeReference {\r\n return new MaskTreeReference(view, model);\r\n}\r\n\r\n/** @internal */\r\nexport class ModelMapLayerTileTreeReference extends MapLayerTileTreeReference {\r\n private _id: PrimaryTreeId;\r\n private _owner: TileTreeOwner;\r\n public get isPlanar() { return true; }\r\n public get activeClassifier() { return this._classifier; }\r\n public constructor(layerSettings: MapLayerSettings, private _classifier: SpatialClassifier, layerIndex: number, iModel: IModelConnection, private _source?: DisplayStyleState) {\r\n super(layerSettings, layerIndex, iModel);\r\n this._id = {\r\n modelId: _classifier.modelId,\r\n is3d: true, // model.is3d,\r\n treeId: this.createTreeId(),\r\n isPlanProjection: false, // isPlanProjection(view, model),\r\n };\r\n\r\n this._owner = primaryTreeSupplier.getOwner(this._id, this.iModel);\r\n }\r\n\r\n protected createTreeId(): PrimaryTileTreeId {\r\n return { type: BatchType.Primary, edges: false };\r\n }\r\n\r\n public get treeOwner(): TileTreeOwner {\r\n const newId = this.createTreeId();\r\n if (0 !== compareIModelTileTreeIds(newId, this._id.treeId)) {\r\n this._id = { modelId: this._id.modelId, is3d: this._id.is3d, treeId: newId, isPlanProjection: false };\r\n this._owner = primaryTreeSupplier.getOwner(this._id, this.iModel);\r\n }\r\n\r\n return this._owner;\r\n }\r\n public get viewFlags(): Partial<ViewFlagsProperties> {\r\n return {\r\n renderMode: RenderMode.SmoothShade,\r\n transparency: true, // Igored for point clouds as they don't support transparency.\r\n textures: true,\r\n lighting: false,\r\n shadows: false,\r\n monochrome: false,\r\n materials: false,\r\n ambientOcclusion: false,\r\n visibleEdges: true,\r\n hiddenEdges: false,\r\n fill: true,\r\n };\r\n }\r\n}\r\n/** @internal */\r\nexport function createModelMapLayerTileTreeReference(layerSettings: ModelMapLayerSettings, layerIndex: number, iModel: IModelConnection): ModelMapLayerTileTreeReference | undefined {\r\n const classifier = SpatialClassifier.fromModelMapLayer(layerSettings);\r\n return classifier ? new ModelMapLayerTileTreeReference(layerSettings, classifier, layerIndex, iModel) : undefined;\r\n}\r\n\r\n/** Provides [[TileTreeReference]]s for the loaded models present in a [[SpatialViewState]]'s [[ModelSelectorState]].\r\n * @internal\r\n */\r\nexport interface SpatialTileTreeReferences extends Iterable<TileTreeReference> {\r\n /** Supplies an iterator over all of the [[TileTreeReference]]s. */\r\n [Symbol.iterator](): Iterator<TileTreeReference>;\r\n /** Requests that the set of [[TileTreeReference]]s be updated to match the current state of the view, e.g., after the model selector's contents have changed. */\r\n update(): void;\r\n /** See SpatialViewState.setTileTreeReferencesDeactivated. */\r\n setDeactivated(modelIds: Id64String | Id64String[] | undefined, deactivated: boolean | undefined, refs: \"all\" | \"animated\" | \"primary\" | \"section\" | number[]): void;\r\n}\r\n\r\n/** Provides [[TileTreeReference]]s for the loaded models present in a [[SpatialViewState]]'s [[ModelSelectorState]].\r\n * @internal\r\n */\r\nexport namespace SpatialTileTreeReferences {\r\n /** Create a SpatialTileTreeReferences object reflecting the contents of the specified view. */\r\n export function create(view: SpatialViewState): SpatialTileTreeReferences {\r\n return new SpatialRefs(view);\r\n }\r\n}\r\n\r\n/** Represents the [[TileTreeReference]]s associated with one model in a [[SpatialTileTreeReferences]]. */\r\nclass SpatialModelRefs implements Iterable<TileTreeReference> {\r\n /** The TileTreeReference representing the model's primary content. */\r\n private readonly _modelRef: TileTreeReference;\r\n /** TileTreeReferences representing nodes transformed by the view's schedule script. */\r\n private readonly _animatedRefs: PrimaryTreeReference[] = [];\r\n /** TileTreeReference providing cut geometry intersecting the view's clip volume. */\r\n private _sectionCutRef?: PrimaryTreeReference;\r\n /** Whether `this._modelRef` is a [[PrimaryTreeReference]] (as opposed to, e.g., a reality model tree reference). */\r\n private readonly _isPrimaryRef: boolean;\r\n\r\n public constructor(model: GeometricModel3dState, view: SpatialViewState) {\r\n this._modelRef = model.createTileTreeReference(view);\r\n this._isPrimaryRef = this._modelRef instanceof PrimaryTreeReference;\r\n }\r\n\r\n public *[Symbol.iterator](): Iterator<TileTreeReference> {\r\n if (!this._primaryRef || !this._primaryRef.deactivated)\r\n yield this._modelRef;\r\n\r\n for (const animated of this._animatedRefs)\r\n if (!animated.deactivated)\r\n yield animated;\r\n\r\n if (this._sectionCutRef && !this._sectionCutRef.deactivated)\r\n yield this._sectionCutRef;\r\n }\r\n\r\n public updateAnimated(script: RenderSchedule.ScriptReference | undefined): void {\r\n const ref = this._primaryRef;\r\n if (!ref)\r\n return;\r\n\r\n this._animatedRefs.length = 0;\r\n const nodeIds = script?.script.getTransformBatchIds(ref.model.id);\r\n if (nodeIds)\r\n for (const nodeId of nodeIds)\r\n this._animatedRefs.push(new AnimatedTreeReference(ref.view, ref.model, nodeId));\r\n }\r\n\r\n public updateSectionCut(clip: StringifiedClipVector | undefined): void {\r\n const ref = this._primaryRef;\r\n if (!ref) {\r\n assert(undefined === this._sectionCutRef);\r\n return;\r\n }\r\n\r\n // If the clip isn't supposed to apply to this model, don't produce cut geometry.\r\n const vfJson = clip ? ref.model.jsonProperties.viewFlagOverrides : undefined;\r\n const vfOvrs = vfJson ? { ...vfJson } : undefined;\r\n if (vfOvrs && !vfOvrs.clipVolume)\r\n clip = undefined;\r\n\r\n this._sectionCutRef = clip ? createTreeRef(ref.view, ref.model, clip) : undefined;\r\n }\r\n\r\n public setDeactivated(deactivated: boolean | undefined, which: \"all\" | \"animated\" | \"primary\" | \"section\" | number[]): void {\r\n if (typeof which !== \"string\") {\r\n for (const index of which)\r\n if (this._animatedRefs[index])\r\n this._animatedRefs[index].deactivated = deactivated ?? !this._animatedRefs[index].deactivated;\r\n\r\n return;\r\n }\r\n\r\n if ((\"all\" === which || \"primary\" === which) && this._primaryRef)\r\n this._primaryRef.deactivated = deactivated ?? !this._primaryRef.deactivated;\r\n\r\n if ((\"all\" === which || \"section\" === which) && this._sectionCutRef)\r\n this._sectionCutRef.deactivated = deactivated ?? !this._sectionCutRef.deactivated;\r\n\r\n if ((\"all\" === which || \"animated\" === which))\r\n for (const ref of this._animatedRefs)\r\n ref.deactivated = deactivated ?? !ref.deactivated;\r\n }\r\n\r\n private get _primaryRef(): PrimaryTreeReference | undefined {\r\n if (!this._isPrimaryRef)\r\n return undefined;\r\n\r\n assert(this._modelRef instanceof PrimaryTreeReference);\r\n return this._modelRef;\r\n }\r\n}\r\n\r\n/** Provides [[TileTreeReference]]s for the loaded models present in a [[SpatialViewState]]'s [[ModelSelectorState]]. */\r\nclass SpatialRefs implements SpatialTileTreeReferences {\r\n private _allLoaded = false;\r\n private readonly _view: SpatialViewState;\r\n private _refs = new Map<Id64String, SpatialModelRefs>();\r\n private _swapRefs = new Map<Id64String, SpatialModelRefs>();\r\n private _scheduleScript?: RenderSchedule.ScriptReference;\r\n private _sectionCut?: StringifiedClipVector;\r\n\r\n public constructor(view: SpatialViewState) {\r\n this._view = view;\r\n this._scheduleScript = view.displayStyle.scheduleScriptReference; // eslint-disable-line deprecation/deprecation\r\n this._sectionCut = this.getSectionCutFromView();\r\n }\r\n\r\n public update(): void {\r\n this._allLoaded = false;\r\n }\r\n\r\n public *[Symbol.iterator](): Iterator<TileTreeReference> {\r\n this.load();\r\n for (const modelRef of this._refs.values())\r\n for (const ref of modelRef)\r\n yield ref;\r\n }\r\n\r\n public setDeactivated(modelIds: Id64String | Id64String[] | undefined, deactivated: boolean, refs: \"all\" | \"animated\" | \"primary\" | \"section\" | number[]): void {\r\n if (undefined === modelIds) {\r\n for (const model of this._refs.values())\r\n model.setDeactivated(deactivated, refs);\r\n\r\n return;\r\n }\r\n\r\n if (typeof modelIds === \"string\")\r\n modelIds = [modelIds];\r\n\r\n for (const modelId of modelIds)\r\n this._refs.get(modelId)?.setDeactivated(deactivated, refs);\r\n }\r\n\r\n private load(): void {\r\n if (!this._allLoaded) {\r\n this._allLoaded = true;\r\n this.updateModels();\r\n }\r\n\r\n const curScript = this._view.displayStyle.scheduleScriptReference; // eslint-disable-line deprecation/deprecation\r\n const prevScript = this._scheduleScript;\r\n if (curScript !== prevScript) {\r\n this._scheduleScript = curScript;\r\n if (!curScript || !prevScript || !curScript.script.equals(prevScript.script))\r\n for (const ref of this._refs.values())\r\n ref.updateAnimated(curScript);\r\n }\r\n\r\n const sectionCut = this.getSectionCutFromView();\r\n if (sectionCut?.clipString !== this._sectionCut?.clipString) {\r\n this._sectionCut = sectionCut;\r\n for (const ref of this._refs.values())\r\n ref.updateSectionCut(sectionCut);\r\n }\r\n }\r\n\r\n private getSectionCutFromView(): StringifiedClipVector | undefined {\r\n const wantCut = this._view.viewFlags.clipVolume && this._view.displayStyle.settings.clipStyle.produceCutGeometry;\r\n const clip = wantCut ? this._view.getViewClip() : undefined;\r\n return StringifiedClipVector.fromClipVector(clip);\r\n }\r\n\r\n /** Ensure this._refs contains a SpatialModelRefs for all loaded models in the model selector. */\r\n private updateModels(): void {\r\n const prev = this._refs;\r\n const cur = this._swapRefs;\r\n this._refs = cur;\r\n this._swapRefs = prev;\r\n cur.clear();\r\n\r\n for (const modelId of this._view.modelSelector.models) {\r\n let modelRefs = prev.get(modelId);\r\n if (!modelRefs) {\r\n const model = this._view.iModel.models.getLoaded(modelId)?.asGeometricModel3d;\r\n if (model) {\r\n modelRefs = new SpatialModelRefs(model, this._view);\r\n modelRefs.updateAnimated(this._scheduleScript);\r\n modelRefs.updateSectionCut(this._sectionCut);\r\n }\r\n }\r\n\r\n if (modelRefs)\r\n cur.set(modelId, modelRefs);\r\n }\r\n }\r\n}\r\n"]}
@@ -30,7 +30,7 @@ export interface RealityTileContent extends TileContent {
30
30
  geometry?: RealityTileGeometry;
31
31
  }
32
32
  /** A [[Tile]] within a [[RealityTileTree]], representing part of a reality model (e.g., a point cloud or photogrammetry mesh) or 3d terrain with map imagery.
33
- * @beta
33
+ * @public
34
34
  */
35
35
  export declare class RealityTile extends Tile {
36
36
  /** @internal */
@@ -20,7 +20,7 @@ const additiveRefinementThreshold = 10000; // Additive tiles (Cesium OSM tileset
20
20
  const additiveRefinementDepthLimit = 20;
21
21
  const scratchFrustum = new core_common_1.Frustum();
22
22
  /** A [[Tile]] within a [[RealityTileTree]], representing part of a reality model (e.g., a point cloud or photogrammetry mesh) or 3d terrain with map imagery.
23
- * @beta
23
+ * @public
24
24
  */
25
25
  class RealityTile extends internal_1.Tile {
26
26
  /** @internal */
@@ -1 +1 @@
1
- {"version":3,"file":"RealityTile.js","sourceRoot":"","sources":["../../../src/tile/RealityTile.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module Tiles\r\n */\r\n\r\nimport { BeTimePoint, dispose } from \"@itwin/core-bentley\";\r\nimport { ClipMaskXYZRangePlanes, ClipShape, ClipVector, Point3d, Polyface, Transform } from \"@itwin/core-geometry\";\r\nimport { ColorDef, Frustum } from \"@itwin/core-common\";\r\nimport { IModelApp } from \"../IModelApp\";\r\nimport { GraphicBranch, GraphicBranchOptions } from \"../render/GraphicBranch\";\r\nimport { GraphicBuilder } from \"../render/GraphicBuilder\";\r\nimport { RenderGraphic } from \"../render/RenderGraphic\";\r\nimport { RenderSystem } from \"../render/RenderSystem\";\r\nimport { ViewingSpace } from \"../ViewingSpace\";\r\nimport { Viewport } from \"../Viewport\";\r\nimport {\r\n RealityTileRegion, RealityTileTree, Tile, TileContent, TileDrawArgs, TileGeometryCollector, TileGraphicType, TileLoadStatus, TileParams, TileRequest, TileRequestChannel,\r\n TileTreeLoadStatus, TileUser, TraversalDetails, TraversalSelectionContext,\r\n} from \"./internal\";\r\n\r\n/** @internal */\r\nexport interface RealityTileParams extends TileParams {\r\n readonly transformToRoot?: Transform;\r\n readonly additiveRefinement?: boolean;\r\n readonly noContentButTerminateOnSelection?: boolean;\r\n readonly rangeCorners?: Point3d[];\r\n readonly region?: RealityTileRegion;\r\n readonly geometricError?: number;\r\n}\r\n\r\n/** The geometry representing the contents of a reality tile. Currently only polyfaces are returned\r\n * @alpha\r\n */\r\nexport interface RealityTileGeometry {\r\n polyfaces?: Polyface[];\r\n}\r\n\r\n/** @internal */\r\nexport interface RealityTileContent extends TileContent {\r\n geometry?: RealityTileGeometry;\r\n}\r\n\r\nconst scratchLoadedChildren = new Array<RealityTile>();\r\nconst scratchCorners = [Point3d.createZero(), Point3d.createZero(), Point3d.createZero(), Point3d.createZero(), Point3d.createZero(), Point3d.createZero(), Point3d.createZero(), Point3d.createZero()];\r\nconst additiveRefinementThreshold = 10000; // Additive tiles (Cesium OSM tileset) are subdivided until their range diagonal falls below this threshold to ensure accurate reprojection.\r\nconst additiveRefinementDepthLimit = 20;\r\nconst scratchFrustum = new Frustum();\r\n\r\n/** A [[Tile]] within a [[RealityTileTree]], representing part of a reality model (e.g., a point cloud or photogrammetry mesh) or 3d terrain with map imagery.\r\n * @beta\r\n */\r\nexport class RealityTile extends Tile {\r\n /** @internal */\r\n public readonly transformToRoot?: Transform;\r\n /** @internal */\r\n public readonly additiveRefinement?: boolean;\r\n /** @internal */\r\n public readonly noContentButTerminateOnSelection?: boolean;\r\n /** @internal */\r\n public readonly rangeCorners?: Point3d[];\r\n /** @internal */\r\n public readonly region?: RealityTileRegion;\r\n /** @internal */\r\n protected _geometry?: RealityTileGeometry;\r\n private _everDisplayed = false;\r\n /** @internal */\r\n protected _reprojectionTransform?: Transform;\r\n private _reprojectedGraphic?: RenderGraphic;\r\n private readonly _geometricError?: number;\r\n\r\n /** @internal */\r\n public constructor(props: RealityTileParams, tree: RealityTileTree) {\r\n super(props, tree);\r\n this.transformToRoot = props.transformToRoot;\r\n this.additiveRefinement = (undefined === props.additiveRefinement) ? this.realityParent?.additiveRefinement : props.additiveRefinement;\r\n this.noContentButTerminateOnSelection = props.noContentButTerminateOnSelection;\r\n this.rangeCorners = props.rangeCorners;\r\n this.region = props.region;\r\n this._geometricError = props.geometricError;\r\n\r\n if (undefined === this.transformToRoot)\r\n return;\r\n\r\n // Can transform be non-rigid?? -- if so would have to handle (readonly) radius.\r\n this.boundingSphere.transformBy(this.transformToRoot, this.boundingSphere);\r\n this.transformToRoot.multiplyRange(this.range, this.range);\r\n\r\n if (this.rangeCorners)\r\n this.transformToRoot.multiplyPoint3dArrayInPlace(this.rangeCorners);\r\n\r\n if (undefined !== this._contentRange)\r\n this.transformToRoot.multiplyRange(this._contentRange, this._contentRange);\r\n }\r\n\r\n /** @internal */\r\n public override setContent(content: RealityTileContent): void {\r\n super.setContent(content);\r\n this._geometry = content.geometry;\r\n }\r\n\r\n /** @internal */\r\n public get realityChildren(): RealityTile[] | undefined { return this.children as RealityTile[] | undefined; }\r\n /** @internal */\r\n public get realityParent(): RealityTile { return this.parent as RealityTile; }\r\n /** @internal */\r\n public get realityRoot(): RealityTileTree { return this.tree as RealityTileTree; }\r\n /** @internal */\r\n public get graphicType(): TileGraphicType | undefined { return undefined; } // If undefined, use tree type.\r\n /** @internal */\r\n public get maxDepth(): number { return this.realityRoot.loader.maxDepth; }\r\n /** @internal */\r\n public get isPointCloud() { return this.realityRoot.loader.containsPointClouds; }\r\n /** @internal */\r\n public get isLoaded() { return this.loadStatus === TileLoadStatus.Ready; } // Reality tiles may depend on secondary tiles (maps) so can ge loaded but not ready.\r\n /** @internal */\r\n public get geometry(): RealityTileGeometry | undefined { return this._geometry; }\r\n\r\n /** @internal */\r\n public override get isDisplayable(): boolean {\r\n if (this.noContentButTerminateOnSelection)\r\n return false;\r\n else\r\n return super.isDisplayable;\r\n }\r\n\r\n /** @internal */\r\n public markUsed(args: TileDrawArgs): void {\r\n args.markUsed(this);\r\n }\r\n\r\n /** @internal */\r\n public markDisplayed(): void {\r\n this._everDisplayed = true;\r\n }\r\n\r\n /** @internal */\r\n public isOccluded(_viewingSpace: ViewingSpace): boolean {\r\n return false;\r\n }\r\n\r\n /** @internal */\r\n public get channel(): TileRequestChannel {\r\n return this.realityRoot.loader.getRequestChannel(this);\r\n }\r\n\r\n /** @internal */\r\n public async requestContent(isCanceled: () => boolean): Promise<TileRequest.Response> {\r\n return this.realityRoot.loader.requestTileContent(this, isCanceled);\r\n }\r\n\r\n /** @internal */\r\n private useAdditiveRefinementStepchildren() {\r\n // Create additive stepchildren only if we are this tile is additive and we are re-projecting and the radius exceeds the additiveRefinementThreshold.\r\n // This criteria is currently only met by the Cesium OSM tileset.\r\n const rangeDiagonal = this.rangeCorners ? this.rangeCorners[0].distance(this.rangeCorners[3]) : 0;\r\n return this.additiveRefinement && this.isDisplayable && rangeDiagonal > additiveRefinementThreshold && this.depth < additiveRefinementDepthLimit && this.realityRoot.doReprojectChildren(this);\r\n }\r\n\r\n /** @internal */\r\n protected _loadChildren(resolve: (children: Tile[] | undefined) => void, reject: (error: Error) => void): void {\r\n this.realityRoot.loader.loadChildren(this).then((children: Tile[] | undefined) => {\r\n\r\n /* If this is a large tile is to be included additively, but we are re-projecting (Cesium OSM) then we must add step-children to display the geometry as an overly large\r\n tile cannot be reprojected accurately. */\r\n if (this.useAdditiveRefinementStepchildren())\r\n this.loadAdditiveRefinementChildren((stepChildren: Tile[]) => { children = children ? children?.concat(stepChildren) : stepChildren; });\r\n\r\n if (children)\r\n this.realityRoot.reprojectAndResolveChildren(this, children, resolve); /* Potentially reproject and resolve these children */\r\n\r\n }).catch((err) => {\r\n reject(err);\r\n });\r\n }\r\n\r\n /** @internal */\r\n public async readContent(data: TileRequest.ResponseData, system: RenderSystem, isCanceled?: () => boolean): Promise<TileContent> {\r\n return this.realityRoot.loader.loadTileContent(this, data, system, isCanceled);\r\n }\r\n\r\n /** @internal */\r\n public override computeLoadPriority(viewports: Iterable<Viewport>, users: Iterable<TileUser>): number {\r\n return this.realityRoot.loader.computeTilePriority(this, viewports, users);\r\n }\r\n\r\n /** @internal */\r\n public getContentClip(): ClipVector | undefined {\r\n return ClipVector.createCapture([ClipShape.createBlock(this.contentRange, ClipMaskXYZRangePlanes.All)]);\r\n }\r\n\r\n /** Allow tile to select additional tiles (Terrain Imagery...)\r\n * @internal\r\n */\r\n public selectSecondaryTiles(_args: TileDrawArgs, _context: TraversalSelectionContext) { }\r\n\r\n /** An upsampled tile is not loadable - will override to return loadable parent.\r\n * @internal\r\n */\r\n public get loadableTile(): RealityTile { return this; }\r\n\r\n /** @internal */\r\n public preloadRealityTilesAtDepth(depth: number, context: TraversalSelectionContext, args: TileDrawArgs) {\r\n if (this.depth === depth) {\r\n context.preload(this, args);\r\n return;\r\n }\r\n\r\n this.loadChildren();\r\n\r\n if (undefined !== this.realityChildren) {\r\n for (const child of this.realityChildren)\r\n child.preloadRealityTilesAtDepth(depth, context, args);\r\n }\r\n }\r\n\r\n /** @internal */\r\n protected selectRealityChildren(context: TraversalSelectionContext, args: TileDrawArgs, traversalDetails: TraversalDetails) {\r\n const childrenLoadStatus = this.loadChildren(); // NB: asynchronous\r\n if (TileTreeLoadStatus.Loading === childrenLoadStatus) {\r\n args.markChildrenLoading();\r\n traversalDetails.childrenLoading = true;\r\n return;\r\n }\r\n\r\n if (undefined !== this.realityChildren) {\r\n const traversalChildren = this.realityRoot.getTraversalChildren(this.depth);\r\n traversalChildren.initialize();\r\n for (let i = 0; i < this.children!.length; i++)\r\n this.realityChildren[i].selectRealityTiles(context, args, traversalChildren.getChildDetail(i));\r\n\r\n traversalChildren.combine(traversalDetails);\r\n }\r\n }\r\n\r\n /** @internal */\r\n public addBoundingGraphic(builder: GraphicBuilder, color: ColorDef) {\r\n builder.setSymbology(color, color, 3);\r\n let corners = this.rangeCorners ? this.rangeCorners : this.range.corners();\r\n if (this._reprojectionTransform)\r\n corners = this._reprojectionTransform.multiplyPoint3dArray(corners);\r\n builder.addRangeBoxFromCorners(corners);\r\n }\r\n\r\n /** @internal */\r\n public reproject(rootReprojection: Transform) {\r\n this._reprojectionTransform = rootReprojection;\r\n rootReprojection.multiplyRange(this.range, this.range);\r\n this.boundingSphere.transformBy(rootReprojection, this.boundingSphere);\r\n if (this.contentRange)\r\n rootReprojection.multiplyRange(this.contentRange, this.contentRange);\r\n if (this.rangeCorners)\r\n rootReprojection.multiplyPoint3dArrayInPlace(this.rangeCorners);\r\n }\r\n\r\n /** @internal */\r\n public allChildrenIncluded(tiles: Tile[]) {\r\n if (this.children === undefined || tiles.length !== this.children.length)\r\n return false;\r\n for (const tile of tiles)\r\n if (tile.parent !== this)\r\n return false;\r\n return true;\r\n }\r\n\r\n /** @internal */\r\n protected getLoadedRealityChildren(args: TileDrawArgs): boolean {\r\n if (this._childrenLoadStatus !== TileTreeLoadStatus.Loaded || this.realityChildren === undefined)\r\n return false;\r\n\r\n for (const child of this.realityChildren) {\r\n if (child.isReady && child.computeVisibilityFactor(args) > 0) {\r\n scratchLoadedChildren.push(child);\r\n } else if (!child.getLoadedRealityChildren(args))\r\n return false;\r\n }\r\n return true;\r\n }\r\n\r\n /** @internal */\r\n public forceSelectRealityTile(): boolean { return false; }\r\n\r\n /** @internal */\r\n public selectRealityTiles(context: TraversalSelectionContext, args: TileDrawArgs, traversalDetails: TraversalDetails) {\r\n const visibility = this.computeVisibilityFactor(args);\r\n if (visibility < 0)\r\n return;\r\n\r\n if (this.realityRoot.loader.forceTileLoad(this) && !this.isReady) {\r\n context.selectOrQueue(this, args, traversalDetails); // Force loading if loader requires this tile. (cesium terrain visibility).\r\n return;\r\n }\r\n\r\n if (visibility >= 1 && this.noContentButTerminateOnSelection)\r\n return;\r\n\r\n if (this.isDisplayable && (visibility >= 1 || this._anyChildNotFound || this.forceSelectRealityTile() || context.selectionCountExceeded)) {\r\n if (!this.isOccluded(args.viewingSpace)) {\r\n context.selectOrQueue(this, args, traversalDetails);\r\n\r\n if (!this.isReady) { // This tile is visible but not loaded - Use higher resolution children if present\r\n if (this.getLoadedRealityChildren(args))\r\n context.select(scratchLoadedChildren, args);\r\n scratchLoadedChildren.length = 0;\r\n }\r\n }\r\n } else {\r\n if (this.additiveRefinement && this.isDisplayable && !this.useAdditiveRefinementStepchildren())\r\n context.selectOrQueue(this, args, traversalDetails); // With additive refinement it is necessary to display this tile along with any displayed children.\r\n\r\n this.selectRealityChildren(context, args, traversalDetails);\r\n if (this.isReady && (traversalDetails.childrenLoading || 0 !== traversalDetails.queuedChildren.length)) {\r\n const minimumVisibleFactor = .25; // If the tile has not yet been displayed in this viewport -- display only if it is within 25% of visible. Avoid overly tiles popping into view unexpectedly (terrain)\r\n\r\n if (visibility > minimumVisibleFactor || this._everDisplayed)\r\n context.selectOrQueue(this, args, traversalDetails);\r\n }\r\n }\r\n }\r\n\r\n /** @internal */\r\n public purgeContents(olderThan: BeTimePoint): void {\r\n // Discard contents of tiles that have not been \"used\" recently, where \"used\" may mean: selected/preloaded for display or content requested.\r\n // Note we do not discard the child Tile objects themselves.\r\n if (this.usageMarker.isExpired(olderThan))\r\n this.disposeContents();\r\n\r\n const children = this.realityChildren;\r\n if (children)\r\n for (const child of children)\r\n child.purgeContents(olderThan);\r\n }\r\n\r\n /** @internal */\r\n public computeVisibilityFactor(args: TileDrawArgs): number {\r\n if (this.isEmpty)\r\n return -1;\r\n\r\n if (this.rangeCorners)\r\n scratchFrustum.setFromCorners(this.rangeCorners);\r\n else\r\n Frustum.fromRange(this.range, scratchFrustum);\r\n\r\n if (this.isFrustumCulled(scratchFrustum, args, true, this.boundingSphere))\r\n return -1;\r\n\r\n // some nodes are merely for structure and don't have any geometry\r\n if (0 === this.maximumSize)\r\n return 0;\r\n\r\n if (this.isLeaf)\r\n return this.hasContentRange && this.isContentCulled(args) ? -1 : 1;\r\n\r\n if (undefined !== this._geometricError) {\r\n const radius = args.getTileRadius(this);\r\n const center = args.getTileCenter(this);\r\n const pixelSize = args.computePixelSizeInMetersAtClosestPoint(center, radius);\r\n\r\n const sse = this._geometricError / pixelSize;\r\n return args.maximumScreenSpaceError / sse;\r\n }\r\n\r\n return this.maximumSize / args.getPixelSize(this);\r\n }\r\n\r\n /** @internal */\r\n public preloadTilesInFrustum(args: TileDrawArgs, context: TraversalSelectionContext, preloadSizeModifier: number) {\r\n const visibility = this.computeVisibilityFactor(args);\r\n if (visibility < 0)\r\n return;\r\n\r\n if (visibility * preloadSizeModifier > 1) {\r\n if (this.isDisplayable)\r\n context.preload(this, args);\r\n } else {\r\n const childrenLoadStatus = this.loadChildren(); // NB: asynchronous\r\n if (TileTreeLoadStatus.Loading === childrenLoadStatus) {\r\n args.markChildrenLoading();\r\n } else if (undefined !== this.realityChildren) {\r\n for (const child of this.realityChildren)\r\n child.preloadTilesInFrustum(args, context, preloadSizeModifier);\r\n }\r\n }\r\n }\r\n\r\n /** @internal */\r\n protected get _anyChildNotFound(): boolean {\r\n if (undefined !== this.children)\r\n for (const child of this.children)\r\n if (child.isNotFound)\r\n return true;\r\n\r\n return this._childrenLoadStatus === TileTreeLoadStatus.NotFound;\r\n }\r\n\r\n /** @internal */\r\n public override getSizeProjectionCorners(): Point3d[] | undefined {\r\n if (!this.tree.isContentUnbounded)\r\n return undefined; // For a non-global tree use the standard size algorithm.\r\n\r\n // For global tiles (as in OSM buildings) return the range corners or X-Y corners only if bounded by region- this allows an algorithm that uses the area of the projected corners to attenuate horizon tiles.\r\n if (!this.rangeCorners)\r\n return this.range.corners(scratchCorners);\r\n\r\n return this.region ? this.rangeCorners.slice(4) : this.rangeCorners;\r\n }\r\n\r\n /** @internal */\r\n public get isStepChild() { return false; }\r\n\r\n /** @internal */\r\n protected loadAdditiveRefinementChildren(resolve: (children: Tile[]) => void): void {\r\n const region = this.region;\r\n const corners = this.rangeCorners;\r\n if (!region || !corners)\r\n return;\r\n\r\n const maximumSize = this.maximumSize;\r\n const rangeDiagonal = corners[0].distance(corners[3]);\r\n const isLeaf = rangeDiagonal < additiveRefinementThreshold || this.depth > additiveRefinementDepthLimit;\r\n\r\n const stepChildren = new Array<AdditiveRefinementStepChild>();\r\n const latitudeDelta = (region.maxLatitude - region.minLatitude) / 2;\r\n const longitudeDelta = (region.maxLongitude - region.minLongitude) / 2;\r\n const minHeight = region.minHeight;\r\n const maxHeight = region.maxHeight;\r\n\r\n for (let i = 0, minLongitude = region.minLongitude, step = 0; i < 2; i++, minLongitude += longitudeDelta, step++) {\r\n for (let j = 0, minLatitude = region.minLatitude; j < 2; j++, minLatitude += latitudeDelta) {\r\n const childRegion = new RealityTileRegion({ minLatitude, maxLatitude: minLatitude + latitudeDelta, minLongitude, maxLongitude: minLongitude + longitudeDelta, minHeight, maxHeight });\r\n const childRange = childRegion.getRange();\r\n\r\n const contentId = `${this.contentId}_S${step++}`;\r\n const childParams: RealityTileParams = { rangeCorners: childRange.corners, contentId, range: childRange.range, maximumSize, parent: this, additiveRefinement: false, isLeaf, region: childRegion };\r\n\r\n stepChildren.push(new AdditiveRefinementStepChild(childParams, this.realityRoot));\r\n }\r\n }\r\n resolve(stepChildren);\r\n }\r\n\r\n /** @internal */\r\n public override produceGraphics(): RenderGraphic | undefined {\r\n if (undefined === this._reprojectionTransform)\r\n return super.produceGraphics();\r\n\r\n if (undefined === this._reprojectedGraphic && undefined !== this._graphic) {\r\n const branch = new GraphicBranch(false);\r\n branch.add(this._graphic);\r\n this._reprojectedGraphic = IModelApp.renderSystem.createGraphicBranch(branch, this._reprojectionTransform);\r\n }\r\n return this._reprojectedGraphic;\r\n }\r\n\r\n /** @internal */\r\n public get unprojectedGraphic(): RenderGraphic | undefined {\r\n return this._graphic;\r\n }\r\n\r\n /** @internal */\r\n public override disposeContents(): void {\r\n super.disposeContents();\r\n this._reprojectedGraphic = dispose(this._reprojectedGraphic);\r\n }\r\n\r\n /** @internal */\r\n public collectTileGeometry(collector: TileGeometryCollector): void {\r\n const status = collector.collectTile(this);\r\n\r\n switch(status) {\r\n case \"reject\":\r\n return;\r\n\r\n case \"continue\":\r\n if (!this.isLeaf && !this._anyChildNotFound) {\r\n const childrenLoadStatus = this.loadChildren();\r\n if (TileTreeLoadStatus.Loading === childrenLoadStatus) {\r\n collector.markLoading();\r\n } else if (undefined !== this.realityChildren && !this._anyChildNotFound) {\r\n for (const child of this.realityChildren)\r\n child.collectTileGeometry(collector);\r\n }\r\n\r\n break;\r\n } // else fall through to \"accept\"\r\n // eslint-disable-next-line no-fallthrough\r\n case \"accept\":\r\n if (!this.isReady)\r\n collector.addMissingTile(this.loadableTile);\r\n else if (this.geometry?.polyfaces)\r\n collector.polyfaces.push(...this.geometry.polyfaces);\r\n\r\n break;\r\n }\r\n }\r\n}\r\n\r\n/** When additive refinement is used (as in the Cesium OSM tileset) it is not possible to accurately reproject very large, low level tiles\r\n * In this case we create additional \"step\" children (grandchildren etc. ) that will clipped portions display the their ancestor's additive geometry.\r\n * These step children are subdivided until they are small enough to be accurately reprojected - this is controlled by the additiveRefinementThreshold (currently 2KM).\r\n * The stepchildren do not contain any tile graphics - they just create a branch with clipping and reprojection to display their additive refinement ancestor graphics.\r\n */\r\nclass AdditiveRefinementStepChild extends RealityTile {\r\n public override get isStepChild() { return true; }\r\n private _loadableTile: RealityTile;\r\n\r\n public constructor(props: RealityTileParams, tree: RealityTileTree) {\r\n super(props, tree);\r\n this._loadableTile = this.realityParent;\r\n for (; this._loadableTile && this._loadableTile.isStepChild; this._loadableTile = this._loadableTile.realityParent)\r\n ;\r\n }\r\n public override get loadableTile(): RealityTile {\r\n return this._loadableTile;\r\n }\r\n public override get isLoading(): boolean { return this._loadableTile.isLoading; }\r\n public override get isQueued(): boolean { return this._loadableTile.isQueued; }\r\n public override get isNotFound(): boolean { return this._loadableTile.isNotFound; }\r\n public override get isReady(): boolean { return this._loadableTile.isReady; }\r\n public override get isLoaded(): boolean { return this._loadableTile.isLoaded; }\r\n public override get isEmpty() { return false; }\r\n public override produceGraphics(): RenderGraphic | undefined {\r\n if (undefined === this._graphic) {\r\n const parentGraphics = this._loadableTile.unprojectedGraphic;\r\n\r\n if (!parentGraphics || !this._reprojectionTransform)\r\n return undefined;\r\n\r\n const branch = new GraphicBranch(false);\r\n branch.add(parentGraphics);\r\n const renderSystem = IModelApp.renderSystem;\r\n const branchOptions: GraphicBranchOptions = {};\r\n if (this.rangeCorners) {\r\n const clipPolygon = [this.rangeCorners[0], this.rangeCorners[1], this.rangeCorners[3], this.rangeCorners[2]];\r\n branchOptions.clipVolume = renderSystem.createClipVolume(ClipVector.create([ClipShape.createShape(clipPolygon, undefined, undefined, this.tree.iModelTransform)!]));\r\n }\r\n this._graphic = renderSystem.createGraphicBranch(branch, this._reprojectionTransform, branchOptions);\r\n }\r\n return this._graphic;\r\n }\r\n\r\n public override markUsed(args: TileDrawArgs): void {\r\n args.markUsed(this);\r\n args.markUsed(this._loadableTile);\r\n }\r\n protected override _loadChildren(resolve: (children: Tile[] | undefined) => void, _reject: (error: Error) => void): void {\r\n this.loadAdditiveRefinementChildren((stepChildren: Tile[]) => {\r\n if (stepChildren)\r\n this.realityRoot.reprojectAndResolveChildren(this, stepChildren, resolve);\r\n });\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"RealityTile.js","sourceRoot":"","sources":["../../../src/tile/RealityTile.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module Tiles\r\n */\r\n\r\nimport { BeTimePoint, dispose } from \"@itwin/core-bentley\";\r\nimport { ClipMaskXYZRangePlanes, ClipShape, ClipVector, Point3d, Polyface, Transform } from \"@itwin/core-geometry\";\r\nimport { ColorDef, Frustum } from \"@itwin/core-common\";\r\nimport { IModelApp } from \"../IModelApp\";\r\nimport { GraphicBranch, GraphicBranchOptions } from \"../render/GraphicBranch\";\r\nimport { GraphicBuilder } from \"../render/GraphicBuilder\";\r\nimport { RenderGraphic } from \"../render/RenderGraphic\";\r\nimport { RenderSystem } from \"../render/RenderSystem\";\r\nimport { ViewingSpace } from \"../ViewingSpace\";\r\nimport { Viewport } from \"../Viewport\";\r\nimport {\r\n RealityTileRegion, RealityTileTree, Tile, TileContent, TileDrawArgs, TileGeometryCollector, TileGraphicType, TileLoadStatus, TileParams, TileRequest, TileRequestChannel,\r\n TileTreeLoadStatus, TileUser, TraversalDetails, TraversalSelectionContext,\r\n} from \"./internal\";\r\n\r\n/** @internal */\r\nexport interface RealityTileParams extends TileParams {\r\n readonly transformToRoot?: Transform;\r\n readonly additiveRefinement?: boolean;\r\n readonly noContentButTerminateOnSelection?: boolean;\r\n readonly rangeCorners?: Point3d[];\r\n readonly region?: RealityTileRegion;\r\n readonly geometricError?: number;\r\n}\r\n\r\n/** The geometry representing the contents of a reality tile. Currently only polyfaces are returned\r\n * @alpha\r\n */\r\nexport interface RealityTileGeometry {\r\n polyfaces?: Polyface[];\r\n}\r\n\r\n/** @internal */\r\nexport interface RealityTileContent extends TileContent {\r\n geometry?: RealityTileGeometry;\r\n}\r\n\r\nconst scratchLoadedChildren = new Array<RealityTile>();\r\nconst scratchCorners = [Point3d.createZero(), Point3d.createZero(), Point3d.createZero(), Point3d.createZero(), Point3d.createZero(), Point3d.createZero(), Point3d.createZero(), Point3d.createZero()];\r\nconst additiveRefinementThreshold = 10000; // Additive tiles (Cesium OSM tileset) are subdivided until their range diagonal falls below this threshold to ensure accurate reprojection.\r\nconst additiveRefinementDepthLimit = 20;\r\nconst scratchFrustum = new Frustum();\r\n\r\n/** A [[Tile]] within a [[RealityTileTree]], representing part of a reality model (e.g., a point cloud or photogrammetry mesh) or 3d terrain with map imagery.\r\n * @public\r\n */\r\nexport class RealityTile extends Tile {\r\n /** @internal */\r\n public readonly transformToRoot?: Transform;\r\n /** @internal */\r\n public readonly additiveRefinement?: boolean;\r\n /** @internal */\r\n public readonly noContentButTerminateOnSelection?: boolean;\r\n /** @internal */\r\n public readonly rangeCorners?: Point3d[];\r\n /** @internal */\r\n public readonly region?: RealityTileRegion;\r\n /** @internal */\r\n protected _geometry?: RealityTileGeometry;\r\n private _everDisplayed = false;\r\n /** @internal */\r\n protected _reprojectionTransform?: Transform;\r\n private _reprojectedGraphic?: RenderGraphic;\r\n private readonly _geometricError?: number;\r\n\r\n /** @internal */\r\n public constructor(props: RealityTileParams, tree: RealityTileTree) {\r\n super(props, tree);\r\n this.transformToRoot = props.transformToRoot;\r\n this.additiveRefinement = (undefined === props.additiveRefinement) ? this.realityParent?.additiveRefinement : props.additiveRefinement;\r\n this.noContentButTerminateOnSelection = props.noContentButTerminateOnSelection;\r\n this.rangeCorners = props.rangeCorners;\r\n this.region = props.region;\r\n this._geometricError = props.geometricError;\r\n\r\n if (undefined === this.transformToRoot)\r\n return;\r\n\r\n // Can transform be non-rigid?? -- if so would have to handle (readonly) radius.\r\n this.boundingSphere.transformBy(this.transformToRoot, this.boundingSphere);\r\n this.transformToRoot.multiplyRange(this.range, this.range);\r\n\r\n if (this.rangeCorners)\r\n this.transformToRoot.multiplyPoint3dArrayInPlace(this.rangeCorners);\r\n\r\n if (undefined !== this._contentRange)\r\n this.transformToRoot.multiplyRange(this._contentRange, this._contentRange);\r\n }\r\n\r\n /** @internal */\r\n public override setContent(content: RealityTileContent): void {\r\n super.setContent(content);\r\n this._geometry = content.geometry;\r\n }\r\n\r\n /** @internal */\r\n public get realityChildren(): RealityTile[] | undefined { return this.children as RealityTile[] | undefined; }\r\n /** @internal */\r\n public get realityParent(): RealityTile { return this.parent as RealityTile; }\r\n /** @internal */\r\n public get realityRoot(): RealityTileTree { return this.tree as RealityTileTree; }\r\n /** @internal */\r\n public get graphicType(): TileGraphicType | undefined { return undefined; } // If undefined, use tree type.\r\n /** @internal */\r\n public get maxDepth(): number { return this.realityRoot.loader.maxDepth; }\r\n /** @internal */\r\n public get isPointCloud() { return this.realityRoot.loader.containsPointClouds; }\r\n /** @internal */\r\n public get isLoaded() { return this.loadStatus === TileLoadStatus.Ready; } // Reality tiles may depend on secondary tiles (maps) so can ge loaded but not ready.\r\n /** @internal */\r\n public get geometry(): RealityTileGeometry | undefined { return this._geometry; }\r\n\r\n /** @internal */\r\n public override get isDisplayable(): boolean {\r\n if (this.noContentButTerminateOnSelection)\r\n return false;\r\n else\r\n return super.isDisplayable;\r\n }\r\n\r\n /** @internal */\r\n public markUsed(args: TileDrawArgs): void {\r\n args.markUsed(this);\r\n }\r\n\r\n /** @internal */\r\n public markDisplayed(): void {\r\n this._everDisplayed = true;\r\n }\r\n\r\n /** @internal */\r\n public isOccluded(_viewingSpace: ViewingSpace): boolean {\r\n return false;\r\n }\r\n\r\n /** @internal */\r\n public get channel(): TileRequestChannel {\r\n return this.realityRoot.loader.getRequestChannel(this);\r\n }\r\n\r\n /** @internal */\r\n public async requestContent(isCanceled: () => boolean): Promise<TileRequest.Response> {\r\n return this.realityRoot.loader.requestTileContent(this, isCanceled);\r\n }\r\n\r\n /** @internal */\r\n private useAdditiveRefinementStepchildren() {\r\n // Create additive stepchildren only if we are this tile is additive and we are re-projecting and the radius exceeds the additiveRefinementThreshold.\r\n // This criteria is currently only met by the Cesium OSM tileset.\r\n const rangeDiagonal = this.rangeCorners ? this.rangeCorners[0].distance(this.rangeCorners[3]) : 0;\r\n return this.additiveRefinement && this.isDisplayable && rangeDiagonal > additiveRefinementThreshold && this.depth < additiveRefinementDepthLimit && this.realityRoot.doReprojectChildren(this);\r\n }\r\n\r\n /** @internal */\r\n protected _loadChildren(resolve: (children: Tile[] | undefined) => void, reject: (error: Error) => void): void {\r\n this.realityRoot.loader.loadChildren(this).then((children: Tile[] | undefined) => {\r\n\r\n /* If this is a large tile is to be included additively, but we are re-projecting (Cesium OSM) then we must add step-children to display the geometry as an overly large\r\n tile cannot be reprojected accurately. */\r\n if (this.useAdditiveRefinementStepchildren())\r\n this.loadAdditiveRefinementChildren((stepChildren: Tile[]) => { children = children ? children?.concat(stepChildren) : stepChildren; });\r\n\r\n if (children)\r\n this.realityRoot.reprojectAndResolveChildren(this, children, resolve); /* Potentially reproject and resolve these children */\r\n\r\n }).catch((err) => {\r\n reject(err);\r\n });\r\n }\r\n\r\n /** @internal */\r\n public async readContent(data: TileRequest.ResponseData, system: RenderSystem, isCanceled?: () => boolean): Promise<TileContent> {\r\n return this.realityRoot.loader.loadTileContent(this, data, system, isCanceled);\r\n }\r\n\r\n /** @internal */\r\n public override computeLoadPriority(viewports: Iterable<Viewport>, users: Iterable<TileUser>): number {\r\n return this.realityRoot.loader.computeTilePriority(this, viewports, users);\r\n }\r\n\r\n /** @internal */\r\n public getContentClip(): ClipVector | undefined {\r\n return ClipVector.createCapture([ClipShape.createBlock(this.contentRange, ClipMaskXYZRangePlanes.All)]);\r\n }\r\n\r\n /** Allow tile to select additional tiles (Terrain Imagery...)\r\n * @internal\r\n */\r\n public selectSecondaryTiles(_args: TileDrawArgs, _context: TraversalSelectionContext) { }\r\n\r\n /** An upsampled tile is not loadable - will override to return loadable parent.\r\n * @internal\r\n */\r\n public get loadableTile(): RealityTile { return this; }\r\n\r\n /** @internal */\r\n public preloadRealityTilesAtDepth(depth: number, context: TraversalSelectionContext, args: TileDrawArgs) {\r\n if (this.depth === depth) {\r\n context.preload(this, args);\r\n return;\r\n }\r\n\r\n this.loadChildren();\r\n\r\n if (undefined !== this.realityChildren) {\r\n for (const child of this.realityChildren)\r\n child.preloadRealityTilesAtDepth(depth, context, args);\r\n }\r\n }\r\n\r\n /** @internal */\r\n protected selectRealityChildren(context: TraversalSelectionContext, args: TileDrawArgs, traversalDetails: TraversalDetails) {\r\n const childrenLoadStatus = this.loadChildren(); // NB: asynchronous\r\n if (TileTreeLoadStatus.Loading === childrenLoadStatus) {\r\n args.markChildrenLoading();\r\n traversalDetails.childrenLoading = true;\r\n return;\r\n }\r\n\r\n if (undefined !== this.realityChildren) {\r\n const traversalChildren = this.realityRoot.getTraversalChildren(this.depth);\r\n traversalChildren.initialize();\r\n for (let i = 0; i < this.children!.length; i++)\r\n this.realityChildren[i].selectRealityTiles(context, args, traversalChildren.getChildDetail(i));\r\n\r\n traversalChildren.combine(traversalDetails);\r\n }\r\n }\r\n\r\n /** @internal */\r\n public addBoundingGraphic(builder: GraphicBuilder, color: ColorDef) {\r\n builder.setSymbology(color, color, 3);\r\n let corners = this.rangeCorners ? this.rangeCorners : this.range.corners();\r\n if (this._reprojectionTransform)\r\n corners = this._reprojectionTransform.multiplyPoint3dArray(corners);\r\n builder.addRangeBoxFromCorners(corners);\r\n }\r\n\r\n /** @internal */\r\n public reproject(rootReprojection: Transform) {\r\n this._reprojectionTransform = rootReprojection;\r\n rootReprojection.multiplyRange(this.range, this.range);\r\n this.boundingSphere.transformBy(rootReprojection, this.boundingSphere);\r\n if (this.contentRange)\r\n rootReprojection.multiplyRange(this.contentRange, this.contentRange);\r\n if (this.rangeCorners)\r\n rootReprojection.multiplyPoint3dArrayInPlace(this.rangeCorners);\r\n }\r\n\r\n /** @internal */\r\n public allChildrenIncluded(tiles: Tile[]) {\r\n if (this.children === undefined || tiles.length !== this.children.length)\r\n return false;\r\n for (const tile of tiles)\r\n if (tile.parent !== this)\r\n return false;\r\n return true;\r\n }\r\n\r\n /** @internal */\r\n protected getLoadedRealityChildren(args: TileDrawArgs): boolean {\r\n if (this._childrenLoadStatus !== TileTreeLoadStatus.Loaded || this.realityChildren === undefined)\r\n return false;\r\n\r\n for (const child of this.realityChildren) {\r\n if (child.isReady && child.computeVisibilityFactor(args) > 0) {\r\n scratchLoadedChildren.push(child);\r\n } else if (!child.getLoadedRealityChildren(args))\r\n return false;\r\n }\r\n return true;\r\n }\r\n\r\n /** @internal */\r\n public forceSelectRealityTile(): boolean { return false; }\r\n\r\n /** @internal */\r\n public selectRealityTiles(context: TraversalSelectionContext, args: TileDrawArgs, traversalDetails: TraversalDetails) {\r\n const visibility = this.computeVisibilityFactor(args);\r\n if (visibility < 0)\r\n return;\r\n\r\n if (this.realityRoot.loader.forceTileLoad(this) && !this.isReady) {\r\n context.selectOrQueue(this, args, traversalDetails); // Force loading if loader requires this tile. (cesium terrain visibility).\r\n return;\r\n }\r\n\r\n if (visibility >= 1 && this.noContentButTerminateOnSelection)\r\n return;\r\n\r\n if (this.isDisplayable && (visibility >= 1 || this._anyChildNotFound || this.forceSelectRealityTile() || context.selectionCountExceeded)) {\r\n if (!this.isOccluded(args.viewingSpace)) {\r\n context.selectOrQueue(this, args, traversalDetails);\r\n\r\n if (!this.isReady) { // This tile is visible but not loaded - Use higher resolution children if present\r\n if (this.getLoadedRealityChildren(args))\r\n context.select(scratchLoadedChildren, args);\r\n scratchLoadedChildren.length = 0;\r\n }\r\n }\r\n } else {\r\n if (this.additiveRefinement && this.isDisplayable && !this.useAdditiveRefinementStepchildren())\r\n context.selectOrQueue(this, args, traversalDetails); // With additive refinement it is necessary to display this tile along with any displayed children.\r\n\r\n this.selectRealityChildren(context, args, traversalDetails);\r\n if (this.isReady && (traversalDetails.childrenLoading || 0 !== traversalDetails.queuedChildren.length)) {\r\n const minimumVisibleFactor = .25; // If the tile has not yet been displayed in this viewport -- display only if it is within 25% of visible. Avoid overly tiles popping into view unexpectedly (terrain)\r\n\r\n if (visibility > minimumVisibleFactor || this._everDisplayed)\r\n context.selectOrQueue(this, args, traversalDetails);\r\n }\r\n }\r\n }\r\n\r\n /** @internal */\r\n public purgeContents(olderThan: BeTimePoint): void {\r\n // Discard contents of tiles that have not been \"used\" recently, where \"used\" may mean: selected/preloaded for display or content requested.\r\n // Note we do not discard the child Tile objects themselves.\r\n if (this.usageMarker.isExpired(olderThan))\r\n this.disposeContents();\r\n\r\n const children = this.realityChildren;\r\n if (children)\r\n for (const child of children)\r\n child.purgeContents(olderThan);\r\n }\r\n\r\n /** @internal */\r\n public computeVisibilityFactor(args: TileDrawArgs): number {\r\n if (this.isEmpty)\r\n return -1;\r\n\r\n if (this.rangeCorners)\r\n scratchFrustum.setFromCorners(this.rangeCorners);\r\n else\r\n Frustum.fromRange(this.range, scratchFrustum);\r\n\r\n if (this.isFrustumCulled(scratchFrustum, args, true, this.boundingSphere))\r\n return -1;\r\n\r\n // some nodes are merely for structure and don't have any geometry\r\n if (0 === this.maximumSize)\r\n return 0;\r\n\r\n if (this.isLeaf)\r\n return this.hasContentRange && this.isContentCulled(args) ? -1 : 1;\r\n\r\n if (undefined !== this._geometricError) {\r\n const radius = args.getTileRadius(this);\r\n const center = args.getTileCenter(this);\r\n const pixelSize = args.computePixelSizeInMetersAtClosestPoint(center, radius);\r\n\r\n const sse = this._geometricError / pixelSize;\r\n return args.maximumScreenSpaceError / sse;\r\n }\r\n\r\n return this.maximumSize / args.getPixelSize(this);\r\n }\r\n\r\n /** @internal */\r\n public preloadTilesInFrustum(args: TileDrawArgs, context: TraversalSelectionContext, preloadSizeModifier: number) {\r\n const visibility = this.computeVisibilityFactor(args);\r\n if (visibility < 0)\r\n return;\r\n\r\n if (visibility * preloadSizeModifier > 1) {\r\n if (this.isDisplayable)\r\n context.preload(this, args);\r\n } else {\r\n const childrenLoadStatus = this.loadChildren(); // NB: asynchronous\r\n if (TileTreeLoadStatus.Loading === childrenLoadStatus) {\r\n args.markChildrenLoading();\r\n } else if (undefined !== this.realityChildren) {\r\n for (const child of this.realityChildren)\r\n child.preloadTilesInFrustum(args, context, preloadSizeModifier);\r\n }\r\n }\r\n }\r\n\r\n /** @internal */\r\n protected get _anyChildNotFound(): boolean {\r\n if (undefined !== this.children)\r\n for (const child of this.children)\r\n if (child.isNotFound)\r\n return true;\r\n\r\n return this._childrenLoadStatus === TileTreeLoadStatus.NotFound;\r\n }\r\n\r\n /** @internal */\r\n public override getSizeProjectionCorners(): Point3d[] | undefined {\r\n if (!this.tree.isContentUnbounded)\r\n return undefined; // For a non-global tree use the standard size algorithm.\r\n\r\n // For global tiles (as in OSM buildings) return the range corners or X-Y corners only if bounded by region- this allows an algorithm that uses the area of the projected corners to attenuate horizon tiles.\r\n if (!this.rangeCorners)\r\n return this.range.corners(scratchCorners);\r\n\r\n return this.region ? this.rangeCorners.slice(4) : this.rangeCorners;\r\n }\r\n\r\n /** @internal */\r\n public get isStepChild() { return false; }\r\n\r\n /** @internal */\r\n protected loadAdditiveRefinementChildren(resolve: (children: Tile[]) => void): void {\r\n const region = this.region;\r\n const corners = this.rangeCorners;\r\n if (!region || !corners)\r\n return;\r\n\r\n const maximumSize = this.maximumSize;\r\n const rangeDiagonal = corners[0].distance(corners[3]);\r\n const isLeaf = rangeDiagonal < additiveRefinementThreshold || this.depth > additiveRefinementDepthLimit;\r\n\r\n const stepChildren = new Array<AdditiveRefinementStepChild>();\r\n const latitudeDelta = (region.maxLatitude - region.minLatitude) / 2;\r\n const longitudeDelta = (region.maxLongitude - region.minLongitude) / 2;\r\n const minHeight = region.minHeight;\r\n const maxHeight = region.maxHeight;\r\n\r\n for (let i = 0, minLongitude = region.minLongitude, step = 0; i < 2; i++, minLongitude += longitudeDelta, step++) {\r\n for (let j = 0, minLatitude = region.minLatitude; j < 2; j++, minLatitude += latitudeDelta) {\r\n const childRegion = new RealityTileRegion({ minLatitude, maxLatitude: minLatitude + latitudeDelta, minLongitude, maxLongitude: minLongitude + longitudeDelta, minHeight, maxHeight });\r\n const childRange = childRegion.getRange();\r\n\r\n const contentId = `${this.contentId}_S${step++}`;\r\n const childParams: RealityTileParams = { rangeCorners: childRange.corners, contentId, range: childRange.range, maximumSize, parent: this, additiveRefinement: false, isLeaf, region: childRegion };\r\n\r\n stepChildren.push(new AdditiveRefinementStepChild(childParams, this.realityRoot));\r\n }\r\n }\r\n resolve(stepChildren);\r\n }\r\n\r\n /** @internal */\r\n public override produceGraphics(): RenderGraphic | undefined {\r\n if (undefined === this._reprojectionTransform)\r\n return super.produceGraphics();\r\n\r\n if (undefined === this._reprojectedGraphic && undefined !== this._graphic) {\r\n const branch = new GraphicBranch(false);\r\n branch.add(this._graphic);\r\n this._reprojectedGraphic = IModelApp.renderSystem.createGraphicBranch(branch, this._reprojectionTransform);\r\n }\r\n return this._reprojectedGraphic;\r\n }\r\n\r\n /** @internal */\r\n public get unprojectedGraphic(): RenderGraphic | undefined {\r\n return this._graphic;\r\n }\r\n\r\n /** @internal */\r\n public override disposeContents(): void {\r\n super.disposeContents();\r\n this._reprojectedGraphic = dispose(this._reprojectedGraphic);\r\n }\r\n\r\n /** @internal */\r\n public collectTileGeometry(collector: TileGeometryCollector): void {\r\n const status = collector.collectTile(this);\r\n\r\n switch(status) {\r\n case \"reject\":\r\n return;\r\n\r\n case \"continue\":\r\n if (!this.isLeaf && !this._anyChildNotFound) {\r\n const childrenLoadStatus = this.loadChildren();\r\n if (TileTreeLoadStatus.Loading === childrenLoadStatus) {\r\n collector.markLoading();\r\n } else if (undefined !== this.realityChildren && !this._anyChildNotFound) {\r\n for (const child of this.realityChildren)\r\n child.collectTileGeometry(collector);\r\n }\r\n\r\n break;\r\n } // else fall through to \"accept\"\r\n // eslint-disable-next-line no-fallthrough\r\n case \"accept\":\r\n if (!this.isReady)\r\n collector.addMissingTile(this.loadableTile);\r\n else if (this.geometry?.polyfaces)\r\n collector.polyfaces.push(...this.geometry.polyfaces);\r\n\r\n break;\r\n }\r\n }\r\n}\r\n\r\n/** When additive refinement is used (as in the Cesium OSM tileset) it is not possible to accurately reproject very large, low level tiles\r\n * In this case we create additional \"step\" children (grandchildren etc. ) that will clipped portions display the their ancestor's additive geometry.\r\n * These step children are subdivided until they are small enough to be accurately reprojected - this is controlled by the additiveRefinementThreshold (currently 2KM).\r\n * The stepchildren do not contain any tile graphics - they just create a branch with clipping and reprojection to display their additive refinement ancestor graphics.\r\n */\r\nclass AdditiveRefinementStepChild extends RealityTile {\r\n public override get isStepChild() { return true; }\r\n private _loadableTile: RealityTile;\r\n\r\n public constructor(props: RealityTileParams, tree: RealityTileTree) {\r\n super(props, tree);\r\n this._loadableTile = this.realityParent;\r\n for (; this._loadableTile && this._loadableTile.isStepChild; this._loadableTile = this._loadableTile.realityParent)\r\n ;\r\n }\r\n public override get loadableTile(): RealityTile {\r\n return this._loadableTile;\r\n }\r\n public override get isLoading(): boolean { return this._loadableTile.isLoading; }\r\n public override get isQueued(): boolean { return this._loadableTile.isQueued; }\r\n public override get isNotFound(): boolean { return this._loadableTile.isNotFound; }\r\n public override get isReady(): boolean { return this._loadableTile.isReady; }\r\n public override get isLoaded(): boolean { return this._loadableTile.isLoaded; }\r\n public override get isEmpty() { return false; }\r\n public override produceGraphics(): RenderGraphic | undefined {\r\n if (undefined === this._graphic) {\r\n const parentGraphics = this._loadableTile.unprojectedGraphic;\r\n\r\n if (!parentGraphics || !this._reprojectionTransform)\r\n return undefined;\r\n\r\n const branch = new GraphicBranch(false);\r\n branch.add(parentGraphics);\r\n const renderSystem = IModelApp.renderSystem;\r\n const branchOptions: GraphicBranchOptions = {};\r\n if (this.rangeCorners) {\r\n const clipPolygon = [this.rangeCorners[0], this.rangeCorners[1], this.rangeCorners[3], this.rangeCorners[2]];\r\n branchOptions.clipVolume = renderSystem.createClipVolume(ClipVector.create([ClipShape.createShape(clipPolygon, undefined, undefined, this.tree.iModelTransform)!]));\r\n }\r\n this._graphic = renderSystem.createGraphicBranch(branch, this._reprojectionTransform, branchOptions);\r\n }\r\n return this._graphic;\r\n }\r\n\r\n public override markUsed(args: TileDrawArgs): void {\r\n args.markUsed(this);\r\n args.markUsed(this._loadableTile);\r\n }\r\n protected override _loadChildren(resolve: (children: Tile[] | undefined) => void, _reject: (error: Error) => void): void {\r\n this.loadAdditiveRefinementChildren((stepChildren: Tile[]) => {\r\n if (stepChildren)\r\n this.realityRoot.reprojectAndResolveChildren(this, stepChildren, resolve);\r\n });\r\n }\r\n}\r\n"]}
@@ -45,7 +45,7 @@ export interface RealityTileTreeParams extends TileTreeParams {
45
45
  }
46
46
  /** Base class for a [[TileTree]] representing a reality model (e.g., a point cloud or photogrammetry mesh) or 3d terrain with map imagery.
47
47
  * The tiles within the tree are instances of [[RealityTile]]s.
48
- * @beta
48
+ * @public
49
49
  */
50
50
  export declare class RealityTileTree extends TileTree {
51
51
  /** @internal */
@@ -1 +1 @@
1
- {"version":3,"file":"RealityTileTree.d.ts","sourceRoot":"","sources":["../../../src/tile/RealityTileTree.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"RealityTileTree.d.ts","sourceRoot":"","sources":["../../../src/tile/RealityTileTree.ts"],"names":[],"mappings":"AAIA;;GAEG;AAGH,OAAO,EACc,OAAO,EAAE,SAAS,EACtC,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAkE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAEvH,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAG9C,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAC+B,WAAW,EAAuB,iBAAiB,EAAE,iBAAiB,EAAE,IAAI,EAAE,YAAY,EAAE,qBAAqB,EACpI,UAAU,EAAE,QAAQ,EAAE,cAAc,EACtD,MAAM,YAAY,CAAC;AAEpB,gBAAgB;AAChB,qBAAa,gBAAgB;IACpB,cAAc,SAAqB;IACnC,eAAe,UAAS;IACxB,gBAAgB,UAAS;IAEzB,UAAU;CAKlB;AACD,gBAAgB;AAChB,qBAAa,wBAAwB;IACnC,OAAO,CAAC,aAAa,CAA0B;IAExC,UAAU;IAIV,cAAc,CAAC,KAAK,EAAE,MAAM;IAO5B,OAAO,CAAC,aAAa,EAAE,gBAAgB;CAW/C;AAED,gBAAgB;AAChB,qBAAa,yBAAyB;IAIjB,QAAQ,EAAE,IAAI,EAAE;IAAS,oBAAoB,EAAE,IAAI,EAAE,EAAE;IAAS,mBAAmB,CAAC;IAAkB,OAAO,CAAC,kBAAkB,CAAC;IAH7I,SAAS,mBAA0B;IACnC,OAAO,gBAA4B;IAC1C,IAAW,sBAAsB,YAAqI;gBACnJ,QAAQ,EAAE,IAAI,EAAE,EAAS,oBAAoB,EAAE,IAAI,EAAE,EAAE,EAAS,mBAAmB,CAAC,4BAAgB,EAAU,kBAAkB,CAAC,oBAAQ;IAErJ,aAAa,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,YAAY,EAAE,gBAAgB,EAAE,gBAAgB;IAkBvF,OAAO,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,YAAY,GAAG,IAAI;IAapD,MAAM,CAAC,KAAK,EAAE,WAAW,EAAE,EAAE,IAAI,EAAE,YAAY,GAAG,IAAI;CAO9D;AAeD,gBAAgB;AAChB,MAAM,WAAW,qBAAsB,SAAQ,cAAc;IAC3D,QAAQ,CAAC,MAAM,EAAE,iBAAiB,CAAC;IACnC,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,QAAQ,EAAE,iBAAiB,CAAC;IACrC,QAAQ,CAAC,UAAU,CAAC,EAAE,SAAS,CAAC;IAChC,QAAQ,CAAC,qBAAqB,EAAE,OAAO,CAAC;CACzC;AAED;;;GAGG;AACH,qBAAa,eAAgB,SAAQ,QAAQ;IAC3C,gBAAgB;IACT,wBAAwB,EAAE,wBAAwB,EAAE,CAAM;IACjE,gBAAgB;IAChB,SAAgB,MAAM,EAAE,iBAAiB,CAAC;IAC1C,gBAAgB;IAChB,SAAgB,OAAO,EAAE,OAAO,CAAC;IACjC,gBAAgB;IACT,cAAc,EAAE,OAAO,CAAC;IAC/B,gBAAgB;IACT,2BAA2B,EAAE,MAAM,CAAC;IAC3C,gBAAgB;IAChB,SAAS,CAAC,aAAa,EAAE,YAAY,GAAG,SAAS,CAAC;IAClD,gBAAgB;IAChB,SAAS,CAAC,SAAS,EAAE,WAAW,CAAC;IACjC,gBAAgB;IAChB,SAAS,CAAC,WAAW,CAAC,EAAE,SAAS,CAAC;IAClC,gBAAgB;IAChB,SAAS,CAAC,SAAS,CAAC,EAAE,SAAS,CAAC;IAEhC,gBAAgB;gBACG,MAAM,EAAE,qBAAqB;IAkBhD,gBAAgB;IAChB,IAAW,QAAQ,IAAI,WAAW,CAA2B;IAC7D,gBAAgB;IAChB,IAAW,IAAI,YAAmB;IAClC,gBAAgB;IAChB,IAAW,QAAQ,WAAmC;IACtD,gBAAgB;IAChB,IAAW,QAAQ,WAAmC;IACtD,gBAAgB;IAChB,IAAoB,kBAAkB,YAA6C;IACnF,gBAAgB;IAChB,IAAW,aAAa,YAAoB;IAE5C,gBAAgB;IAChB,SAAS,CAAC,YAAY,CAAC,IAAI,EAAE,YAAY,GAAG,IAAI,EAAE;IAClD,gBAAgB;IAChB,IAAW,iBAAiB,IAAI,iBAAiB,CAA0C;IAC3F,gBAAgB;IAChB,IAAoB,2BAA2B,YAAsD;IAErG,gBAAgB;IACT,UAAU,CAAC,KAAK,EAAE,UAAU,GAAG,WAAW;IAEjD;;OAEG;IACa,mBAAmB,CAAC,SAAS,EAAE,qBAAqB,GAAG,IAAI;IAI3E,gBAAgB;IACT,KAAK,IAAI,IAAI;IAKpB,gBAAgB;IACT,IAAI,CAAC,IAAI,EAAE,YAAY,GAAG,IAAI;IAuFrC,gBAAgB;IAChB,SAAS,CAAC,yBAAyB,CAAC,IAAI,EAAE,YAAY,EAAE,aAAa,EAAE,WAAW,EAAE;IAMpF,gBAAgB;IACT,oBAAoB,CAAC,KAAK,EAAE,MAAM;IAOzC,gBAAgB;IACT,mBAAmB,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO;IAS/C,gBAAgB;IACT,2BAA2B,CAAC,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,CAAC,QAAQ,EAAE,IAAI,EAAE,GAAG,SAAS,KAAK,IAAI,GAAG,IAAI;IA2EzH,gBAAgB;IACT,mBAAmB,CAAC,aAAa,EAAE,YAAY;IAEtD;;;OAGG;IACI,oBAAoB,CAAC,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,WAAW,EAAE;IAEzE,gBAAgB;IACT,kBAAkB,CAAC,IAAI,EAAE,YAAY,EAAE,oBAAoB,EAAE,WAAW,EAAE,EAAE,EAAE,mBAAmB,CAAC,EAAE,cAAc,GAAG,WAAW,EAAE;IAuDzI,gBAAgB;IACT,oBAAoB,CAAC,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,yBAAyB,EAAE,gBAAgB,CAAC,EAAE,SAAS;IAehH,gBAAgB;IAChB,SAAS,CAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,gBAAgB,CAAC,IAAI,CAAC;CAkBhE"}