@itwin/core-frontend 5.0.0-dev.99 → 5.1.0-dev.1

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 (295) hide show
  1. package/CHANGELOG.md +6 -1
  2. package/lib/cjs/AccuDraw.d.ts.map +1 -1
  3. package/lib/cjs/AccuDraw.js +20 -41
  4. package/lib/cjs/AccuDraw.js.map +1 -1
  5. package/lib/cjs/AccuSnap.d.ts +1 -0
  6. package/lib/cjs/AccuSnap.d.ts.map +1 -1
  7. package/lib/cjs/AccuSnap.js +69 -1
  8. package/lib/cjs/AccuSnap.js.map +1 -1
  9. package/lib/cjs/BriefcaseConnection.d.ts +1 -1
  10. package/lib/cjs/BriefcaseConnection.d.ts.map +1 -1
  11. package/lib/cjs/BriefcaseConnection.js.map +1 -1
  12. package/lib/cjs/CatalogConnection.d.ts +71 -0
  13. package/lib/cjs/CatalogConnection.d.ts.map +1 -0
  14. package/lib/cjs/CatalogConnection.js +95 -0
  15. package/lib/cjs/CatalogConnection.js.map +1 -0
  16. package/lib/cjs/ElementLocateManager.d.ts.map +1 -1
  17. package/lib/cjs/ElementLocateManager.js +5 -2
  18. package/lib/cjs/ElementLocateManager.js.map +1 -1
  19. package/lib/cjs/HitDetail.d.ts +29 -2
  20. package/lib/cjs/HitDetail.d.ts.map +1 -1
  21. package/lib/cjs/HitDetail.js +14 -0
  22. package/lib/cjs/HitDetail.js.map +1 -1
  23. package/lib/cjs/IpcApp.d.ts +1 -1
  24. package/lib/cjs/IpcApp.d.ts.map +1 -1
  25. package/lib/cjs/IpcApp.js.map +1 -1
  26. package/lib/cjs/ModelState.d.ts.map +1 -1
  27. package/lib/cjs/ModelState.js +7 -5
  28. package/lib/cjs/ModelState.js.map +1 -1
  29. package/lib/cjs/NativeApp.d.ts +2 -1
  30. package/lib/cjs/NativeApp.d.ts.map +1 -1
  31. package/lib/cjs/NativeApp.js +1 -0
  32. package/lib/cjs/NativeApp.js.map +1 -1
  33. package/lib/cjs/Viewport.d.ts.map +1 -1
  34. package/lib/cjs/Viewport.js +1 -0
  35. package/lib/cjs/Viewport.js.map +1 -1
  36. package/lib/cjs/core-frontend.d.ts +1 -0
  37. package/lib/cjs/core-frontend.d.ts.map +1 -1
  38. package/lib/cjs/core-frontend.js +1 -0
  39. package/lib/cjs/core-frontend.js.map +1 -1
  40. package/lib/cjs/internal/cross-package.d.ts +1 -1
  41. package/lib/cjs/internal/cross-package.d.ts.map +1 -1
  42. package/lib/cjs/internal/cross-package.js +3 -1
  43. package/lib/cjs/internal/cross-package.js.map +1 -1
  44. package/lib/cjs/internal/render/webgl/FrustumUniforms.d.ts +2 -0
  45. package/lib/cjs/internal/render/webgl/FrustumUniforms.d.ts.map +1 -1
  46. package/lib/cjs/internal/render/webgl/FrustumUniforms.js +7 -0
  47. package/lib/cjs/internal/render/webgl/FrustumUniforms.js.map +1 -1
  48. package/lib/cjs/internal/render/webgl/MapLayerParams.d.ts +0 -1
  49. package/lib/cjs/internal/render/webgl/MapLayerParams.d.ts.map +1 -1
  50. package/lib/cjs/internal/render/webgl/MapLayerParams.js +11 -20
  51. package/lib/cjs/internal/render/webgl/MapLayerParams.js.map +1 -1
  52. package/lib/cjs/internal/render/webgl/SceneCompositor.d.ts +9 -0
  53. package/lib/cjs/internal/render/webgl/SceneCompositor.d.ts.map +1 -1
  54. package/lib/cjs/internal/render/webgl/SceneCompositor.js +86 -11
  55. package/lib/cjs/internal/render/webgl/SceneCompositor.js.map +1 -1
  56. package/lib/cjs/internal/render/webgl/ShaderBuilder.d.ts +4 -3
  57. package/lib/cjs/internal/render/webgl/ShaderBuilder.d.ts.map +1 -1
  58. package/lib/cjs/internal/render/webgl/ShaderBuilder.js +3 -3
  59. package/lib/cjs/internal/render/webgl/ShaderBuilder.js.map +1 -1
  60. package/lib/cjs/internal/render/webgl/SolarShadowMap.js +2 -2
  61. package/lib/cjs/internal/render/webgl/SolarShadowMap.js.map +1 -1
  62. package/lib/cjs/internal/render/webgl/SurfaceGeometry.d.ts.map +1 -1
  63. package/lib/cjs/internal/render/webgl/SurfaceGeometry.js +20 -8
  64. package/lib/cjs/internal/render/webgl/SurfaceGeometry.js.map +1 -1
  65. package/lib/cjs/internal/render/webgl/glsl/Atmosphere.js +1 -1
  66. package/lib/cjs/internal/render/webgl/glsl/ClearPickAndColor.d.ts.map +1 -1
  67. package/lib/cjs/internal/render/webgl/glsl/ClearPickAndColor.js +2 -1
  68. package/lib/cjs/internal/render/webgl/glsl/ClearPickAndColor.js.map +1 -1
  69. package/lib/cjs/internal/render/webgl/glsl/Contours.d.ts.map +1 -1
  70. package/lib/cjs/internal/render/webgl/glsl/Contours.js +31 -1
  71. package/lib/cjs/internal/render/webgl/glsl/Contours.js.map +1 -1
  72. package/lib/cjs/internal/render/webgl/glsl/Fragment.d.ts.map +1 -1
  73. package/lib/cjs/internal/render/webgl/glsl/Fragment.js +7 -2
  74. package/lib/cjs/internal/render/webgl/glsl/Fragment.js.map +1 -1
  75. package/lib/cjs/internal/render/webgl/glsl/RealityMesh.js +1 -1
  76. package/lib/cjs/internal/render/webgl/glsl/Surface.js +1 -1
  77. package/lib/cjs/internal/tile/GraphicsCollector.d.ts +1 -0
  78. package/lib/cjs/internal/tile/GraphicsCollector.d.ts.map +1 -1
  79. package/lib/cjs/internal/tile/GraphicsCollector.js +1 -0
  80. package/lib/cjs/internal/tile/GraphicsCollector.js.map +1 -1
  81. package/lib/cjs/internal/tile/IModelTile.d.ts.map +1 -1
  82. package/lib/cjs/internal/tile/IModelTile.js +5 -0
  83. package/lib/cjs/internal/tile/IModelTile.js.map +1 -1
  84. package/lib/cjs/internal/tile/IModelTileTree.d.ts +4 -1
  85. package/lib/cjs/internal/tile/IModelTileTree.d.ts.map +1 -1
  86. package/lib/cjs/internal/tile/IModelTileTree.js +5 -0
  87. package/lib/cjs/internal/tile/IModelTileTree.js.map +1 -1
  88. package/lib/cjs/internal/tile/ImdlDecoder.d.ts +2 -0
  89. package/lib/cjs/internal/tile/ImdlDecoder.d.ts.map +1 -1
  90. package/lib/cjs/internal/tile/ImdlDecoder.js.map +1 -1
  91. package/lib/cjs/internal/tile/ImdlGraphicsCreator.d.ts +2 -2
  92. package/lib/cjs/internal/tile/ImdlGraphicsCreator.d.ts.map +1 -1
  93. package/lib/cjs/internal/tile/ImdlGraphicsCreator.js +2 -1
  94. package/lib/cjs/internal/tile/ImdlGraphicsCreator.js.map +1 -1
  95. package/lib/cjs/{tile → internal/tile}/LayerTileTreeHandler.d.ts +3 -3
  96. package/lib/cjs/internal/tile/LayerTileTreeHandler.d.ts.map +1 -0
  97. package/lib/cjs/{tile → internal/tile}/LayerTileTreeHandler.js +3 -2
  98. package/lib/cjs/internal/tile/LayerTileTreeHandler.js.map +1 -0
  99. package/lib/cjs/{tile → internal/tile}/LayerTileTreeReferenceHandler.d.ts +7 -5
  100. package/lib/cjs/internal/tile/LayerTileTreeReferenceHandler.d.ts.map +1 -0
  101. package/lib/cjs/{tile → internal/tile}/LayerTileTreeReferenceHandler.js +29 -4
  102. package/lib/cjs/internal/tile/LayerTileTreeReferenceHandler.js.map +1 -0
  103. package/lib/cjs/internal/tile/PrimaryTileTree.d.ts +9 -4
  104. package/lib/cjs/internal/tile/PrimaryTileTree.d.ts.map +1 -1
  105. package/lib/cjs/internal/tile/PrimaryTileTree.js +30 -8
  106. package/lib/cjs/internal/tile/PrimaryTileTree.js.map +1 -1
  107. package/lib/cjs/internal/tile/RealityModelTileTree.d.ts +0 -2
  108. package/lib/cjs/internal/tile/RealityModelTileTree.d.ts.map +1 -1
  109. package/lib/cjs/internal/tile/RealityModelTileTree.js +2 -21
  110. package/lib/cjs/internal/tile/RealityModelTileTree.js.map +1 -1
  111. package/lib/cjs/render/Pixel.d.ts +13 -2
  112. package/lib/cjs/render/Pixel.d.ts.map +1 -1
  113. package/lib/cjs/render/Pixel.js +20 -8
  114. package/lib/cjs/render/Pixel.js.map +1 -1
  115. package/lib/cjs/tile/ImdlReader.d.ts +3 -2
  116. package/lib/cjs/tile/ImdlReader.d.ts.map +1 -1
  117. package/lib/cjs/tile/ImdlReader.js +1 -0
  118. package/lib/cjs/tile/ImdlReader.js.map +1 -1
  119. package/lib/cjs/tile/internal.d.ts +3 -2
  120. package/lib/cjs/tile/internal.d.ts.map +1 -1
  121. package/lib/cjs/tile/internal.js +3 -2
  122. package/lib/cjs/tile/internal.js.map +1 -1
  123. package/lib/cjs/tile/map/CesiumTerrainProvider.d.ts +1 -1
  124. package/lib/cjs/tile/map/CesiumTerrainProvider.d.ts.map +1 -1
  125. package/lib/cjs/tile/map/CesiumTerrainProvider.js +2 -3
  126. package/lib/cjs/tile/map/CesiumTerrainProvider.js.map +1 -1
  127. package/lib/cjs/tile/map/MapTileTree.d.ts.map +1 -1
  128. package/lib/cjs/tile/map/MapTileTree.js +2 -4
  129. package/lib/cjs/tile/map/MapTileTree.js.map +1 -1
  130. package/lib/cjs/tools/AccuDrawTool.d.ts +0 -12
  131. package/lib/cjs/tools/AccuDrawTool.d.ts.map +1 -1
  132. package/lib/cjs/tools/AccuDrawTool.js +2 -60
  133. package/lib/cjs/tools/AccuDrawTool.js.map +1 -1
  134. package/lib/cjs/tools/AccuDrawViewportUI.d.ts +0 -1
  135. package/lib/cjs/tools/AccuDrawViewportUI.d.ts.map +1 -1
  136. package/lib/cjs/tools/AccuDrawViewportUI.js +15 -19
  137. package/lib/cjs/tools/AccuDrawViewportUI.js.map +1 -1
  138. package/lib/cjs/tools/ViewTool.d.ts +25 -16
  139. package/lib/cjs/tools/ViewTool.d.ts.map +1 -1
  140. package/lib/cjs/tools/ViewTool.js +29 -40
  141. package/lib/cjs/tools/ViewTool.js.map +1 -1
  142. package/lib/esm/AccuDraw.d.ts.map +1 -1
  143. package/lib/esm/AccuDraw.js +21 -42
  144. package/lib/esm/AccuDraw.js.map +1 -1
  145. package/lib/esm/AccuSnap.d.ts +1 -0
  146. package/lib/esm/AccuSnap.d.ts.map +1 -1
  147. package/lib/esm/AccuSnap.js +69 -1
  148. package/lib/esm/AccuSnap.js.map +1 -1
  149. package/lib/esm/BriefcaseConnection.d.ts +1 -1
  150. package/lib/esm/BriefcaseConnection.d.ts.map +1 -1
  151. package/lib/esm/BriefcaseConnection.js.map +1 -1
  152. package/lib/esm/CatalogConnection.d.ts +71 -0
  153. package/lib/esm/CatalogConnection.d.ts.map +1 -0
  154. package/lib/esm/CatalogConnection.js +92 -0
  155. package/lib/esm/CatalogConnection.js.map +1 -0
  156. package/lib/esm/ElementLocateManager.d.ts.map +1 -1
  157. package/lib/esm/ElementLocateManager.js +5 -2
  158. package/lib/esm/ElementLocateManager.js.map +1 -1
  159. package/lib/esm/HitDetail.d.ts +29 -2
  160. package/lib/esm/HitDetail.d.ts.map +1 -1
  161. package/lib/esm/HitDetail.js +14 -0
  162. package/lib/esm/HitDetail.js.map +1 -1
  163. package/lib/esm/IpcApp.d.ts +1 -1
  164. package/lib/esm/IpcApp.d.ts.map +1 -1
  165. package/lib/esm/IpcApp.js.map +1 -1
  166. package/lib/esm/ModelState.d.ts.map +1 -1
  167. package/lib/esm/ModelState.js +7 -5
  168. package/lib/esm/ModelState.js.map +1 -1
  169. package/lib/esm/NativeApp.d.ts +2 -1
  170. package/lib/esm/NativeApp.d.ts.map +1 -1
  171. package/lib/esm/NativeApp.js +1 -0
  172. package/lib/esm/NativeApp.js.map +1 -1
  173. package/lib/esm/Viewport.d.ts.map +1 -1
  174. package/lib/esm/Viewport.js +1 -0
  175. package/lib/esm/Viewport.js.map +1 -1
  176. package/lib/esm/core-frontend.d.ts +1 -0
  177. package/lib/esm/core-frontend.d.ts.map +1 -1
  178. package/lib/esm/core-frontend.js +1 -0
  179. package/lib/esm/core-frontend.js.map +1 -1
  180. package/lib/esm/internal/cross-package.d.ts +1 -1
  181. package/lib/esm/internal/cross-package.d.ts.map +1 -1
  182. package/lib/esm/internal/cross-package.js +1 -1
  183. package/lib/esm/internal/cross-package.js.map +1 -1
  184. package/lib/esm/internal/render/webgl/FrustumUniforms.d.ts +2 -0
  185. package/lib/esm/internal/render/webgl/FrustumUniforms.d.ts.map +1 -1
  186. package/lib/esm/internal/render/webgl/FrustumUniforms.js +8 -1
  187. package/lib/esm/internal/render/webgl/FrustumUniforms.js.map +1 -1
  188. package/lib/esm/internal/render/webgl/MapLayerParams.d.ts +0 -1
  189. package/lib/esm/internal/render/webgl/MapLayerParams.d.ts.map +1 -1
  190. package/lib/esm/internal/render/webgl/MapLayerParams.js +11 -20
  191. package/lib/esm/internal/render/webgl/MapLayerParams.js.map +1 -1
  192. package/lib/esm/internal/render/webgl/SceneCompositor.d.ts +9 -0
  193. package/lib/esm/internal/render/webgl/SceneCompositor.d.ts.map +1 -1
  194. package/lib/esm/internal/render/webgl/SceneCompositor.js +86 -11
  195. package/lib/esm/internal/render/webgl/SceneCompositor.js.map +1 -1
  196. package/lib/esm/internal/render/webgl/ShaderBuilder.d.ts +4 -3
  197. package/lib/esm/internal/render/webgl/ShaderBuilder.d.ts.map +1 -1
  198. package/lib/esm/internal/render/webgl/ShaderBuilder.js +3 -3
  199. package/lib/esm/internal/render/webgl/ShaderBuilder.js.map +1 -1
  200. package/lib/esm/internal/render/webgl/SolarShadowMap.js +2 -2
  201. package/lib/esm/internal/render/webgl/SolarShadowMap.js.map +1 -1
  202. package/lib/esm/internal/render/webgl/SurfaceGeometry.d.ts.map +1 -1
  203. package/lib/esm/internal/render/webgl/SurfaceGeometry.js +20 -8
  204. package/lib/esm/internal/render/webgl/SurfaceGeometry.js.map +1 -1
  205. package/lib/esm/internal/render/webgl/glsl/Atmosphere.js +1 -1
  206. package/lib/esm/internal/render/webgl/glsl/ClearPickAndColor.d.ts.map +1 -1
  207. package/lib/esm/internal/render/webgl/glsl/ClearPickAndColor.js +2 -1
  208. package/lib/esm/internal/render/webgl/glsl/ClearPickAndColor.js.map +1 -1
  209. package/lib/esm/internal/render/webgl/glsl/Contours.d.ts.map +1 -1
  210. package/lib/esm/internal/render/webgl/glsl/Contours.js +31 -1
  211. package/lib/esm/internal/render/webgl/glsl/Contours.js.map +1 -1
  212. package/lib/esm/internal/render/webgl/glsl/Fragment.d.ts.map +1 -1
  213. package/lib/esm/internal/render/webgl/glsl/Fragment.js +7 -2
  214. package/lib/esm/internal/render/webgl/glsl/Fragment.js.map +1 -1
  215. package/lib/esm/internal/render/webgl/glsl/RealityMesh.js +1 -1
  216. package/lib/esm/internal/render/webgl/glsl/Surface.js +1 -1
  217. package/lib/esm/internal/tile/GraphicsCollector.d.ts +1 -0
  218. package/lib/esm/internal/tile/GraphicsCollector.d.ts.map +1 -1
  219. package/lib/esm/internal/tile/GraphicsCollector.js +1 -0
  220. package/lib/esm/internal/tile/GraphicsCollector.js.map +1 -1
  221. package/lib/esm/internal/tile/IModelTile.d.ts.map +1 -1
  222. package/lib/esm/internal/tile/IModelTile.js +6 -1
  223. package/lib/esm/internal/tile/IModelTile.js.map +1 -1
  224. package/lib/esm/internal/tile/IModelTileTree.d.ts +4 -1
  225. package/lib/esm/internal/tile/IModelTileTree.d.ts.map +1 -1
  226. package/lib/esm/internal/tile/IModelTileTree.js +6 -1
  227. package/lib/esm/internal/tile/IModelTileTree.js.map +1 -1
  228. package/lib/esm/internal/tile/ImdlDecoder.d.ts +2 -0
  229. package/lib/esm/internal/tile/ImdlDecoder.d.ts.map +1 -1
  230. package/lib/esm/internal/tile/ImdlDecoder.js.map +1 -1
  231. package/lib/esm/internal/tile/ImdlGraphicsCreator.d.ts +2 -2
  232. package/lib/esm/internal/tile/ImdlGraphicsCreator.d.ts.map +1 -1
  233. package/lib/esm/internal/tile/ImdlGraphicsCreator.js +2 -1
  234. package/lib/esm/internal/tile/ImdlGraphicsCreator.js.map +1 -1
  235. package/lib/esm/{tile → internal/tile}/LayerTileTreeHandler.d.ts +3 -3
  236. package/lib/esm/internal/tile/LayerTileTreeHandler.d.ts.map +1 -0
  237. package/lib/esm/{tile → internal/tile}/LayerTileTreeHandler.js +3 -2
  238. package/lib/esm/internal/tile/LayerTileTreeHandler.js.map +1 -0
  239. package/lib/esm/{tile → internal/tile}/LayerTileTreeReferenceHandler.d.ts +7 -5
  240. package/lib/esm/internal/tile/LayerTileTreeReferenceHandler.d.ts.map +1 -0
  241. package/lib/esm/{tile → internal/tile}/LayerTileTreeReferenceHandler.js +29 -4
  242. package/lib/esm/internal/tile/LayerTileTreeReferenceHandler.js.map +1 -0
  243. package/lib/esm/internal/tile/PrimaryTileTree.d.ts +9 -4
  244. package/lib/esm/internal/tile/PrimaryTileTree.d.ts.map +1 -1
  245. package/lib/esm/internal/tile/PrimaryTileTree.js +32 -10
  246. package/lib/esm/internal/tile/PrimaryTileTree.js.map +1 -1
  247. package/lib/esm/internal/tile/RealityModelTileTree.d.ts +0 -2
  248. package/lib/esm/internal/tile/RealityModelTileTree.d.ts.map +1 -1
  249. package/lib/esm/internal/tile/RealityModelTileTree.js +2 -21
  250. package/lib/esm/internal/tile/RealityModelTileTree.js.map +1 -1
  251. package/lib/esm/render/Pixel.d.ts +13 -2
  252. package/lib/esm/render/Pixel.d.ts.map +1 -1
  253. package/lib/esm/render/Pixel.js +20 -8
  254. package/lib/esm/render/Pixel.js.map +1 -1
  255. package/lib/esm/tile/ImdlReader.d.ts +3 -2
  256. package/lib/esm/tile/ImdlReader.d.ts.map +1 -1
  257. package/lib/esm/tile/ImdlReader.js +1 -0
  258. package/lib/esm/tile/ImdlReader.js.map +1 -1
  259. package/lib/esm/tile/internal.d.ts +3 -2
  260. package/lib/esm/tile/internal.d.ts.map +1 -1
  261. package/lib/esm/tile/internal.js +3 -2
  262. package/lib/esm/tile/internal.js.map +1 -1
  263. package/lib/esm/tile/map/CesiumTerrainProvider.d.ts +1 -1
  264. package/lib/esm/tile/map/CesiumTerrainProvider.d.ts.map +1 -1
  265. package/lib/esm/tile/map/CesiumTerrainProvider.js +3 -4
  266. package/lib/esm/tile/map/CesiumTerrainProvider.js.map +1 -1
  267. package/lib/esm/tile/map/MapTileTree.d.ts.map +1 -1
  268. package/lib/esm/tile/map/MapTileTree.js +2 -4
  269. package/lib/esm/tile/map/MapTileTree.js.map +1 -1
  270. package/lib/esm/tools/AccuDrawTool.d.ts +0 -12
  271. package/lib/esm/tools/AccuDrawTool.d.ts.map +1 -1
  272. package/lib/esm/tools/AccuDrawTool.js +3 -60
  273. package/lib/esm/tools/AccuDrawTool.js.map +1 -1
  274. package/lib/esm/tools/AccuDrawViewportUI.d.ts +0 -1
  275. package/lib/esm/tools/AccuDrawViewportUI.d.ts.map +1 -1
  276. package/lib/esm/tools/AccuDrawViewportUI.js +16 -20
  277. package/lib/esm/tools/AccuDrawViewportUI.js.map +1 -1
  278. package/lib/esm/tools/ViewTool.d.ts +25 -16
  279. package/lib/esm/tools/ViewTool.d.ts.map +1 -1
  280. package/lib/esm/tools/ViewTool.js +29 -40
  281. package/lib/esm/tools/ViewTool.js.map +1 -1
  282. package/lib/public/locales/en/CoreTools.json +0 -5
  283. package/lib/public/scripts/parse-imdl-worker.js +1 -1
  284. package/lib/public/sprites/SnapPerpendicularPoint.png +0 -0
  285. package/lib/public/sprites/SnapTangentPoint.png +0 -0
  286. package/lib/workers/webpack/parse-imdl-worker.js +1 -1
  287. package/package.json +16 -16
  288. package/lib/cjs/tile/LayerTileTreeHandler.d.ts.map +0 -1
  289. package/lib/cjs/tile/LayerTileTreeHandler.js.map +0 -1
  290. package/lib/cjs/tile/LayerTileTreeReferenceHandler.d.ts.map +0 -1
  291. package/lib/cjs/tile/LayerTileTreeReferenceHandler.js.map +0 -1
  292. package/lib/esm/tile/LayerTileTreeHandler.d.ts.map +0 -1
  293. package/lib/esm/tile/LayerTileTreeHandler.js.map +0 -1
  294. package/lib/esm/tile/LayerTileTreeReferenceHandler.d.ts.map +0 -1
  295. package/lib/esm/tile/LayerTileTreeReferenceHandler.js.map +0 -1
@@ -231,6 +231,7 @@ function createPrimitiveGeometry(primitive, options, viOrigin) {
231
231
  textureMapping,
232
232
  indices: new VertexIndices(primitive.params.surface.indices),
233
233
  },
234
+ tileData: options.tileData,
234
235
  }, viOrigin);
235
236
  }
236
237
  }
@@ -322,7 +323,7 @@ export async function decodeImdlGraphics(options) {
322
323
  return undefined;
323
324
  const patterns = new Map();
324
325
  const graphicsOptions = { ...options, textures, patterns };
325
- graphicsOptions.tile = options.tile;
326
+ graphicsOptions.tileData = options.tileData;
326
327
  for (const [name, primitives] of options.document.patterns)
327
328
  patterns.set(name, createPatternGeometries(primitives, graphicsOptions));
328
329
  const system = options.system;
@@ -1 +1 @@
1
- {"version":3,"file":"ImdlGraphicsCreator.js","sourceRoot":"","sources":["../../../../src/internal/tile/ImdlGraphicsCreator.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Tiles\n */\n\nimport { assert, Id64, JsonUtils } from \"@itwin/core-bentley\";\nimport { ClipVector, Point2d, Point3d, Range3d, Transform } from \"@itwin/core-geometry\";\nimport {\n ColorDef, Gradient, ImageSource, RenderMaterial, RenderMaterialParams, RenderTexture, RenderTextureParams, TextureMapping,\n} from \"@itwin/core-common\";\nimport { AuxChannelTable } from \"../../common/internal/render/AuxChannelTable\";\nimport { createSurfaceMaterial } from \"../../common/internal/render/SurfaceParams\";\nimport { ImdlModel as Imdl } from \"../../common/imdl/ImdlModel\";\nimport { ImdlColorDef, ImdlNamedTexture, ImdlTextureMapping } from \"../../common/imdl/ImdlSchema\";\nimport { convertFeatureTable, edgeParamsFromImdl, toMaterialParams, toVertexTable } from \"../../common/imdl/ParseImdlDocument\";\nimport { VertexIndices } from \"../../common/internal/render/VertexIndices\";\nimport type { RenderGraphic } from \"../../render/RenderGraphic\";\nimport { GraphicBranch } from \"../../render/GraphicBranch\";\nimport type { RenderSystem } from \"../../render/RenderSystem\";\nimport { InstancedGraphicParams } from \"../../common/render/InstancedGraphicParams\";\nimport type { IModelConnection } from \"../../IModelConnection\";\nimport { GraphicDescription } from \"../../common/render/GraphicDescriptionBuilder\";\nimport { GraphicDescriptionImpl, isGraphicDescription } from \"../../common/internal/render/GraphicDescriptionBuilderImpl\";\nimport { GraphicDescriptionContext } from \"../../common/render/GraphicDescriptionContext\";\nimport { _implementationProhibited, _textures } from \"../../common/internal/Symbols\";\nimport { RenderGeometry } from \"../../internal/render/RenderGeometry\";\nimport { createGraphicTemplate, GraphicTemplateBatch, GraphicTemplateBranch } from \"../../internal/render/GraphicTemplateImpl\";\nimport { GraphicTemplate } from \"../../render/GraphicTemplate\";\nimport { Tile } from \"../../tile/internal\";\n\n/** Options provided to [[decodeImdlContent]].\n */\nexport interface ImdlDecodeOptions {\n document: Imdl.Document;\n system: RenderSystem;\n iModel: IModelConnection;\n isCanceled?: () => boolean;\n tile?: Tile;\n}\n\nasync function loadNamedTexture(name: string, namedTex: ImdlNamedTexture, options: ImdlDecodeOptions): Promise<RenderTexture | undefined> {\n // Reasons a texture could be embedded in the tile content instead of requested separately from the backend:\n // - external textures are disabled\n // - the texture name is not a valid Id64 string\n // - the texture is below a certain backend-hardcoded size threshold\n // The bufferViewJson being defined signifies any of the above conditions. In that case, the image content\n // has been embedded in the tile contents. Otherwise, we will attempt to request the image content separately\n // from the backend.\n\n try {\n let textureType = RenderTexture.Type.Normal;\n const isGlyph = JsonUtils.asBool(namedTex.isGlyph);\n const isTileSection = !isGlyph && JsonUtils.asBool(namedTex.isTileSection);\n if (isGlyph)\n textureType = RenderTexture.Type.Glyph;\n else if (isTileSection)\n textureType = RenderTexture.Type.TileSection;\n\n // We produce unique tile sections for very large (> 8 megapixel) textures, and unique glyph atlases for raster text.\n // Neither should be cached.\n const cacheable = !isGlyph && !isTileSection;\n const ownership = cacheable ? { iModel: options.iModel, key: name } : undefined;\n\n const bufferViewId = JsonUtils.asString(namedTex.bufferView);\n const bufferViewJson = 0 !== bufferViewId.length ? options.document.json.bufferViews[bufferViewId] : undefined;\n\n if (undefined !== bufferViewJson) { // presence of bufferViewJson signifies we should read the texture from the tile content\n const byteOffset = JsonUtils.asInt(bufferViewJson.byteOffset);\n const byteLength = JsonUtils.asInt(bufferViewJson.byteLength);\n if (0 === byteLength)\n return undefined;\n\n const texBytes = options.document.binaryData.subarray(byteOffset, byteOffset + byteLength);\n const format = namedTex.format;\n const source = new ImageSource(texBytes, format);\n return await options.system.createTextureFromSource({ source, ownership, type: textureType, transparency: namedTex.transparency });\n }\n\n // bufferViewJson was undefined, so attempt to request the texture directly from the backend\n const params = new RenderTextureParams(cacheable ? name : undefined, textureType);\n return options.system.createTextureFromElement(name, options.iModel, params, namedTex.format);\n } catch {\n return undefined;\n }\n}\n\nasync function loadNamedTextures(options: ImdlDecodeOptions): Promise<Map<string, RenderTexture>> {\n const result = new Map<string, RenderTexture>();\n const namedTextures = options.document.json.namedTextures;\n if (!namedTextures)\n return result;\n\n const promises = new Array<Promise<void>>();\n for (const [name, namedTexture] of Object.entries(namedTextures)) {\n const texture = options.system.findTexture(name, options.iModel);\n if (texture) {\n result.set(name, texture);\n continue;\n } else if (namedTexture) {\n promises.push(loadNamedTexture(name, namedTexture, options).then((tx) => {\n if (tx)\n result.set(name, tx);\n }));\n }\n }\n\n if (promises.length > 0)\n await Promise.all(promises);\n\n return result;\n}\n\ninterface GraphicsOptions {\n document?: Imdl.Document;\n iModel?: IModelConnection;\n system: RenderSystem;\n isCanceled?: () => boolean;\n textures: Map<string, RenderTexture>;\n patterns: Map<string, RenderGeometry[]>;\n tile?: Tile;\n}\n\nfunction constantLodParamPropsFromJson(propsJson: { repetitions?: number, offset?: number[], minDistClamp?: number, maxDistClamp?: number } | undefined): TextureMapping.ConstantLodParamProps | undefined {\n if (undefined === propsJson)\n return undefined;\n\n const constantLodPops: TextureMapping.ConstantLodParamProps = {\n repetitions: JsonUtils.asDouble(propsJson.repetitions, 1.0),\n offset: { x: propsJson.offset ? JsonUtils.asDouble(propsJson.offset[0]) : 0.0, y: propsJson.offset ? JsonUtils.asDouble(propsJson.offset[1]) : 0.0 },\n minDistClamp: JsonUtils.asDouble(propsJson.minDistClamp, 1.0),\n maxDistClamp: JsonUtils.asDouble(propsJson.maxDistClamp, 4096.0 * 1024.0 * 1024.0),\n };\n return constantLodPops;\n}\n\nfunction textureMappingFromJson(json: ImdlTextureMapping | undefined, options: GraphicsOptions): TextureMapping | undefined {\n if (!json)\n return undefined;\n\n const texture = options.textures.get(JsonUtils.asString(json.name));\n if (!texture)\n return undefined;\n\n const paramsJson = json.params;\n const tf = paramsJson.transform;\n\n const paramProps: TextureMapping.ParamProps = {\n textureMat2x3: new TextureMapping.Trans2x3(tf[0][0], tf[0][1], tf[0][2], tf[1][0], tf[1][1], tf[1][2]),\n textureWeight: JsonUtils.asDouble(paramsJson.weight, 1.0),\n mapMode: JsonUtils.asInt(paramsJson.mode),\n worldMapping: JsonUtils.asBool(paramsJson.worldMapping),\n useConstantLod: JsonUtils.asBool(paramsJson.useConstantLod),\n constantLodProps: constantLodParamPropsFromJson(paramsJson.constantLodParams),\n };\n\n const textureMapping = new TextureMapping(texture, new TextureMapping.Params(paramProps));\n\n const normalMapJson = json.normalMapParams;\n if (normalMapJson) {\n let normalMap;\n const normalTexName = JsonUtils.asString(normalMapJson.textureName);\n if (normalTexName.length === 0 || undefined !== (normalMap = options.textures.get(normalTexName))) {\n textureMapping.normalMapParams = {\n normalMap,\n greenUp: JsonUtils.asBool(normalMapJson.greenUp),\n scale: JsonUtils.asDouble(normalMapJson.scale, 1),\n useConstantLod: JsonUtils.asBool(normalMapJson.useConstantLod),\n };\n }\n }\n\n return textureMapping;\n}\n\nfunction getMaterial(mat: string | Imdl.SurfaceMaterialParams, options: GraphicsOptions): RenderMaterial | undefined {\n if (typeof mat !== \"string\") {\n const args = toMaterialParams(mat);\n return options.system.createRenderMaterial(args);\n }\n\n if (!options.iModel) {\n return undefined;\n }\n\n const material = options.system.findMaterial(mat, options.iModel);\n if (material || !options.document?.json.renderMaterials)\n return material;\n\n const json = options.document.json.renderMaterials[mat];\n if (!json)\n return undefined;\n\n function colorDefFromJson(col: ImdlColorDef | undefined): ColorDef | undefined {\n return col ? ColorDef.from(col[0] * 255 + 0.5, col[1] * 255 + 0.5, col[2] * 255 + 0.5) : undefined;\n }\n\n const params = new RenderMaterialParams(mat);\n params.diffuseColor = colorDefFromJson(json.diffuseColor);\n if (json.diffuse !== undefined)\n params.diffuse = JsonUtils.asDouble(json.diffuse);\n\n params.specularColor = colorDefFromJson(json.specularColor);\n if (json.specular !== undefined)\n params.specular = JsonUtils.asDouble(json.specular);\n\n params.reflectColor = colorDefFromJson(json.reflectColor);\n if (json.reflect !== undefined)\n params.reflect = JsonUtils.asDouble(json.reflect);\n\n if (json.specularExponent !== undefined)\n params.specularExponent = json.specularExponent;\n\n if (undefined !== json.transparency)\n params.alpha = 1.0 - json.transparency;\n\n params.refract = JsonUtils.asDouble(json.refract);\n params.shadows = JsonUtils.asBool(json.shadows);\n params.ambient = JsonUtils.asDouble(json.ambient);\n\n if (undefined !== json.textureMapping)\n params.textureMapping = textureMappingFromJson(json.textureMapping.texture, options);\n\n return options.system.createRenderMaterial({\n diffuse: {color: params.diffuseColor, weight: params.diffuse},\n specular: {color: params.specularColor, weight: params.specular, exponent: params.specularExponent},\n alpha: params.alpha,\n textureMapping: params.textureMapping\n });;\n}\n\nfunction getModifiers(primitive: Imdl.Primitive): { viOrigin?: Point3d, instances?: InstancedGraphicParams } {\n const mod = primitive.modifier;\n switch (mod?.type) {\n case \"instances\":\n return { instances: InstancedGraphicParams.fromProps(mod) };\n case \"viewIndependentOrigin\":\n return {\n viOrigin: Point3d.fromJSON(mod.origin),\n };\n default:\n return {};\n }\n}\n\nfunction createPrimitiveGeometry(primitive: Imdl.Primitive, options: GraphicsOptions, viOrigin: Point3d | undefined): RenderGeometry | undefined {\n switch (primitive.type) {\n case \"point\":\n return options.system.createPointStringGeometry({\n ...primitive.params,\n vertices: toVertexTable(primitive.params.vertices),\n indices: new VertexIndices(primitive.params.indices),\n }, viOrigin);\n case \"polyline\":\n return options.system.createPolylineGeometry({\n ...primitive.params,\n vertices: toVertexTable(primitive.params.vertices),\n polyline: {\n ...primitive.params.polyline,\n indices: new VertexIndices(primitive.params.polyline.indices),\n prevIndices: new VertexIndices(primitive.params.polyline.prevIndices),\n },\n }, viOrigin);\n case \"mesh\": {\n const surf = primitive.params.surface;\n let material;\n if (surf.material) {\n if (!surf.material.isAtlas)\n material = createSurfaceMaterial(getMaterial(surf.material.material, options));\n else\n material = surf.material;\n }\n\n let textureMapping;\n if (surf.textureMapping) {\n let texture;\n if (typeof surf.textureMapping.texture === \"string\") {\n texture = options.textures.get(surf.textureMapping.texture);\n } else {\n const gradient = Gradient.Symb.fromJSON(surf.textureMapping.texture);\n texture = options.system.getGradientTexture(gradient, options.iModel);\n }\n\n if (texture)\n textureMapping = { texture, alwaysDisplayed: surf.textureMapping.alwaysDisplayed };\n }\n\n return options.system.createMeshGeometry({\n ...primitive.params,\n edges: primitive.params.edges ? edgeParamsFromImdl(primitive.params.edges) : undefined,\n vertices: toVertexTable(primitive.params.vertices),\n auxChannels: primitive.params.auxChannels ? AuxChannelTable.fromJSON(primitive.params.auxChannels) : undefined,\n surface: {\n ...primitive.params.surface,\n material,\n textureMapping,\n indices: new VertexIndices(primitive.params.surface.indices),\n },\n }, viOrigin);\n }\n }\n}\n\nfunction createPrimitiveGraphic(primitive: Imdl.Primitive, options: GraphicsOptions): RenderGraphic | undefined {\n const mods = getModifiers(primitive);\n const geometry = createPrimitiveGeometry(primitive, options, mods.viOrigin);\n return geometry ? options.system.createRenderGraphic(geometry, mods.instances) : undefined;\n}\n\nfunction createPatternGeometries(primitives: Imdl.Primitive[], options: GraphicsOptions): RenderGeometry[] {\n const geometries = [];\n for (const primitive of primitives) {\n const geometry = createPrimitiveGeometry(primitive, options, undefined);\n if (geometry)\n geometries.push(geometry);\n }\n\n return geometries;\n}\n\nfunction createPatternGraphic(params: Imdl.AreaPatternParams, options: GraphicsOptions): RenderGraphic | undefined {\n const geometries = options.patterns.get(params.symbolName);\n if (!geometries || geometries.length === 0)\n return undefined;\n\n const clip = ClipVector.fromJSON(params.clip);\n const clipVolume = clip?.isValid ? options.system.createClipVolume(clip) : undefined;\n if (!clipVolume)\n return undefined;\n\n const viewIndependentOrigin = params.viewIndependentOrigin ? Point3d.fromJSON(params.viewIndependentOrigin) : undefined;\n const pattern = options.system.createAreaPattern({\n xyOffsets: params.xyOffsets,\n featureId: params.featureId,\n orgTransform: Transform.fromJSON(params.orgTransform),\n origin: Point2d.fromJSON(params.origin),\n scale: params.scale,\n spacing: Point2d.fromJSON(params.spacing),\n patternToModel: Transform.fromJSON(params.modelTransform),\n range: Range3d.fromJSON(params.range),\n symbolTranslation: Point3d.fromJSON(params.symbolTranslation),\n viewIndependentOrigin,\n });\n\n if (!pattern)\n return undefined;\n\n const branch = new GraphicBranch(true);\n for (const geometry of geometries) {\n const graphic = options.system.createRenderGraphic(geometry, pattern);\n if (graphic)\n branch.add(graphic);\n }\n\n return branch.isEmpty ? undefined : options.system.createGraphicBranch(branch, Transform.createIdentity(), { clipVolume });\n}\n\nfunction createNodeGraphics(node: Imdl.Node, options: GraphicsOptions): RenderGraphic[] {\n if (undefined === node.groupId)\n return createPrimitivesNodeGraphics(node, options);\n\n const graphics: RenderGraphic[] = [];\n for (const child of node.nodes) {\n graphics.push(...createPrimitivesNodeGraphics(child, options));\n }\n\n if (graphics.length === 0)\n return graphics;\n\n const branch = new GraphicBranch(true);\n branch.groupNodeId = node.groupId;\n branch.entries.push(...graphics);\n return [options.system.createBranch(branch, Transform.createIdentity())];\n}\n\nfunction createPrimitivesNodeGraphics(node: Imdl.PrimitivesNode, options: GraphicsOptions): RenderGraphic[] {\n let graphics = [];\n for (const primitive of node.primitives) {\n const graphic = primitive.type === \"pattern\" ? createPatternGraphic(primitive.params, options) : createPrimitiveGraphic(primitive, options);\n if (graphic)\n graphics.push(graphic);\n }\n\n if (!graphics.length)\n return graphics;\n\n if (undefined !== node.layerId) {\n const layerGraphic = 1 === graphics.length ? graphics[0] : options.system.createGraphicList(graphics);\n graphics = [options.system.createGraphicLayer(layerGraphic, node.layerId)];\n } else if (undefined !== node.animationNodeId) {\n const branch = new GraphicBranch(true);\n branch.animationId = node.animationId;\n branch.animationNodeId = node.animationNodeId;\n branch.entries.push(...graphics);\n graphics = [options.system.createBranch(branch, Transform.createIdentity())];\n }\n\n return graphics;\n}\n\nexport async function decodeImdlGraphics(options: ImdlDecodeOptions): Promise<RenderGraphic | undefined> {\n const textures = await loadNamedTextures(options);\n if (options.isCanceled && options.isCanceled())\n return undefined;\n\n const patterns = new Map<string, RenderGeometry[]>();\n const graphicsOptions = { ...options, textures, patterns };\n graphicsOptions.tile = options.tile;\n\n for (const [name, primitives] of options.document.patterns)\n patterns.set(name, createPatternGeometries(primitives, graphicsOptions));\n\n const system = options.system;\n const graphics: RenderGraphic[] = [];\n for (const node of options.document.nodes) {\n graphics.push(...createNodeGraphics(node, graphicsOptions));\n }\n\n switch (graphics.length) {\n case 0: return undefined;\n case 1: return graphics[0];\n default: return system.createGraphicList(graphics);\n }\n}\n\nfunction remapGraphicDescription(descr: GraphicDescriptionImpl, context: GraphicDescriptionContext): void {\n if (descr.remapContext === context) {\n // Already remapped.\n return;\n } else if (descr.remapContext) {\n throw new Error(\"You cannot create a graphic from a GraphicDescription using two different contexts\");\n }\n\n descr.remapContext = context;\n\n const batch = descr.batch;\n if (!batch) {\n return;\n }\n\n if (Id64.isTransient(batch.modelId)) {\n const modelLocalId = context.remapTransientLocalId(Id64.getLocalId(batch.modelId));\n batch.modelId = Id64.fromLocalAndBriefcaseIds(modelLocalId, 0xffffff);\n }\n\n const data = batch.featureTable.data;\n const remapId = (offset: number) => {\n const hi = data[offset + 1];\n if (hi >= 0xffffff00) {\n const hi8 = hi & 0xff;\n const lo = data[offset];\n\n // Avoid bitwise operators because they truncate at 32 bits (we need 40) and are stupid about the sign bit.\n const sourceLocalId = lo + (hi8 * 0xffffffff);\n const localId = context.remapTransientLocalId(sourceLocalId);\n data[offset] = localId & 0xffffffff;\n data[offset + 1] = 0xffffff00 + hi8;\n }\n };\n\n const subCatsOffset = 3 * batch.featureTable.numFeatures;\n for (let i = 0; i < subCatsOffset; i += 3) {\n remapId(i);\n }\n\n const subCatsEnd = undefined !== batch.featureTable.numSubCategories ? subCatsOffset + 2 * batch.featureTable.numSubCategories : data.length;\n for (let i = subCatsOffset; i < subCatsEnd; i++) {\n remapId(i);\n }\n\n if (undefined !== batch.featureTable.numSubCategories) {\n for (let i = subCatsEnd; i < data.length; i++) {\n remapId(i + 1);\n }\n }\n}\n\nexport function createGraphicTemplateFromDescription(descr: GraphicDescription, context: GraphicDescriptionContext, system: RenderSystem): GraphicTemplate {\n if (!isGraphicDescription(descr)) {\n throw new Error(\"Invalid GraphicDescription\");\n }\n\n remapGraphicDescription(descr, context);\n\n const graphicsOptions: GraphicsOptions = {\n system,\n textures: context[_textures],\n patterns: new Map(),\n };\n\n const geometry: RenderGeometry[] = [];\n for (const primitive of descr.primitives) {\n const mods = getModifiers(primitive);\n\n // GraphicDescriptionBuilder providers no way to include instances in a GraphicDescription.\n assert(undefined === mods?.instances);\n\n const geom = createPrimitiveGeometry(primitive, graphicsOptions, mods.viOrigin);\n if (geom) {\n geometry.push(geom);\n }\n }\n\n let batch: GraphicTemplateBatch | undefined;\n if (descr.batch) {\n const featureTable = convertFeatureTable(descr.batch.featureTable, descr.batch.modelId);\n batch = {\n options: { ...descr.batch },\n range: Range3d.fromJSON(descr.batch.range),\n featureTable,\n };\n }\n\n let branch: GraphicTemplateBranch | undefined;\n if (descr.translation) {\n branch = { transform: Transform.createTranslation(Point3d.fromJSON(descr.translation)) };\n }\n\n return createGraphicTemplate({\n nodes: [{ geometry }],\n batch,\n branch,\n noDispose: true,\n });\n}\n\nexport function createGraphicFromDescription(descr: GraphicDescription, context: GraphicDescriptionContext, system: RenderSystem): RenderGraphic | undefined {\n const template = createGraphicTemplateFromDescription(descr, context, system);\n return system.createGraphicFromTemplate({ template });\n}\n"]}
1
+ {"version":3,"file":"ImdlGraphicsCreator.js","sourceRoot":"","sources":["../../../../src/internal/tile/ImdlGraphicsCreator.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F;;GAEG;AAEH,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAC9D,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACxF,OAAO,EACL,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAkB,oBAAoB,EAAE,aAAa,EAAE,mBAAmB,EAAE,cAAc,GAC1H,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,eAAe,EAAE,MAAM,8CAA8C,CAAC;AAC/E,OAAO,EAAE,qBAAqB,EAAE,MAAM,4CAA4C,CAAC;AAGnF,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,qCAAqC,CAAC;AAC/H,OAAO,EAAE,aAAa,EAAE,MAAM,4CAA4C,CAAC;AAE3E,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAE3D,OAAO,EAAE,sBAAsB,EAAE,MAAM,4CAA4C,CAAC;AAGpF,OAAO,EAA0B,oBAAoB,EAAE,MAAM,4DAA4D,CAAC;AAE1H,OAAO,EAA6B,SAAS,EAAE,MAAM,+BAA+B,CAAC;AAErF,OAAO,EAAE,qBAAqB,EAA+C,MAAM,2CAA2C,CAAC;AAc/H,KAAK,UAAU,gBAAgB,CAAC,IAAY,EAAE,QAA0B,EAAE,OAA0B;IAClG,4GAA4G;IAC5G,mCAAmC;IACnC,gDAAgD;IAChD,oEAAoE;IACpE,0GAA0G;IAC1G,6GAA6G;IAC7G,oBAAoB;IAEpB,IAAI,CAAC;QACH,IAAI,WAAW,GAAG,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC;QAC5C,MAAM,OAAO,GAAG,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QACnD,MAAM,aAAa,GAAG,CAAC,OAAO,IAAI,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;QAC3E,IAAI,OAAO;YACT,WAAW,GAAG,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC;aACpC,IAAI,aAAa;YACpB,WAAW,GAAG,aAAa,CAAC,IAAI,CAAC,WAAW,CAAC;QAE/C,qHAAqH;QACrH,4BAA4B;QAC5B,MAAM,SAAS,GAAG,CAAC,OAAO,IAAI,CAAC,aAAa,CAAC;QAC7C,MAAM,SAAS,GAAG,SAAS,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;QAEhF,MAAM,YAAY,GAAG,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;QAC7D,MAAM,cAAc,GAAG,CAAC,KAAK,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAE/G,IAAI,SAAS,KAAK,cAAc,EAAE,CAAC,CAAC,wFAAwF;YAC1H,MAAM,UAAU,GAAG,SAAS,CAAC,KAAK,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;YAC9D,MAAM,UAAU,GAAG,SAAS,CAAC,KAAK,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;YAC9D,IAAI,CAAC,KAAK,UAAU;gBAClB,OAAO,SAAS,CAAC;YAEnB,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,QAAQ,CAAC,UAAU,EAAE,UAAU,GAAG,UAAU,CAAC,CAAC;YAC3F,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC;YAC/B,MAAM,MAAM,GAAG,IAAI,WAAW,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;YACjD,OAAO,MAAM,OAAO,CAAC,MAAM,CAAC,uBAAuB,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,WAAW,EAAE,YAAY,EAAE,QAAQ,CAAC,YAAY,EAAE,CAAC,CAAC;QACrI,CAAC;QAED,4FAA4F;QAC5F,MAAM,MAAM,GAAG,IAAI,mBAAmB,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;QAClF,OAAO,OAAO,CAAC,MAAM,CAAC,wBAAwB,CAAC,IAAI,EAAE,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;IAChG,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AAED,KAAK,UAAU,iBAAiB,CAAC,OAA0B;IACzD,MAAM,MAAM,GAAG,IAAI,GAAG,EAAyB,CAAC;IAChD,MAAM,aAAa,GAAG,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC;IAC1D,IAAI,CAAC,aAAa;QAChB,OAAO,MAAM,CAAC;IAEhB,MAAM,QAAQ,GAAG,IAAI,KAAK,EAAiB,CAAC;IAC5C,KAAK,MAAM,CAAC,IAAI,EAAE,YAAY,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE,CAAC;QACjE,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;QACjE,IAAI,OAAO,EAAE,CAAC;YACZ,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;YAC1B,SAAS;QACX,CAAC;aAAM,IAAI,YAAY,EAAE,CAAC;YACxB,QAAQ,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,YAAY,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE;gBACtE,IAAI,EAAE;oBACJ,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YACzB,CAAC,CAAC,CAAC,CAAC;QACN,CAAC;IACH,CAAC;IAED,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC;QACrB,MAAM,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAE9B,OAAO,MAAM,CAAC;AAChB,CAAC;AAYD,SAAS,6BAA6B,CAAC,SAAgH;IACrJ,IAAI,SAAS,KAAK,SAAS;QACzB,OAAO,SAAS,CAAC;IAEnB,MAAM,eAAe,GAAyC;QAC5D,WAAW,EAAE,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,WAAW,EAAE,GAAG,CAAC;QAC3D,MAAM,EAAE,EAAE,CAAC,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE;QACpJ,YAAY,EAAE,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,YAAY,EAAE,GAAG,CAAC;QAC7D,YAAY,EAAE,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;KACnF,CAAC;IACF,OAAO,eAAe,CAAC;AACzB,CAAC;AAED,SAAS,sBAAsB,CAAC,IAAoC,EAAE,OAAwB;IAC5F,IAAI,CAAC,IAAI;QACP,OAAO,SAAS,CAAC;IAEnB,MAAM,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IACpE,IAAI,CAAC,OAAO;QACV,OAAO,SAAS,CAAC;IAEnB,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC;IAC/B,MAAM,EAAE,GAAG,UAAU,CAAC,SAAS,CAAC;IAEhC,MAAM,UAAU,GAA8B;QAC5C,aAAa,EAAE,IAAI,cAAc,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACtG,aAAa,EAAE,SAAS,CAAC,QAAQ,CAAC,UAAU,CAAC,MAAM,EAAE,GAAG,CAAC;QACzD,OAAO,EAAE,SAAS,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC;QACzC,YAAY,EAAE,SAAS,CAAC,MAAM,CAAC,UAAU,CAAC,YAAY,CAAC;QACvD,cAAc,EAAE,SAAS,CAAC,MAAM,CAAC,UAAU,CAAC,cAAc,CAAC;QAC3D,gBAAgB,EAAE,6BAA6B,CAAC,UAAU,CAAC,iBAAiB,CAAC;KAC9E,CAAC;IAEF,MAAM,cAAc,GAAG,IAAI,cAAc,CAAC,OAAO,EAAE,IAAI,cAAc,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC;IAE1F,MAAM,aAAa,GAAG,IAAI,CAAC,eAAe,CAAC;IAC3C,IAAI,aAAa,EAAE,CAAC;QAClB,IAAI,SAAS,CAAC;QACd,MAAM,aAAa,GAAG,SAAS,CAAC,QAAQ,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;QACpE,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,IAAI,SAAS,KAAK,CAAC,SAAS,GAAG,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,EAAE,CAAC;YAClG,cAAc,CAAC,eAAe,GAAG;gBAC/B,SAAS;gBACT,OAAO,EAAE,SAAS,CAAC,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC;gBAChD,KAAK,EAAE,SAAS,CAAC,QAAQ,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC,CAAC;gBACjD,cAAc,EAAE,SAAS,CAAC,MAAM,CAAC,aAAa,CAAC,cAAc,CAAC;aAC/D,CAAC;QACJ,CAAC;IACH,CAAC;IAED,OAAO,cAAc,CAAC;AACxB,CAAC;AAED,SAAS,WAAW,CAAC,GAAwC,EAAE,OAAwB;IACrF,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;QAC5B,MAAM,IAAI,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC;QACnC,OAAO,OAAO,CAAC,MAAM,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC;IACnD,CAAC;IAED,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;QACpB,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC,GAAG,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;IAClE,IAAI,QAAQ,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC,eAAe;QACrD,OAAO,QAAQ,CAAC;IAElB,MAAM,IAAI,GAAG,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC;IACxD,IAAI,CAAC,IAAI;QACP,OAAO,SAAS,CAAC;IAEnB,SAAS,gBAAgB,CAAC,GAA6B;QACrD,OAAO,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACrG,CAAC;IAED,MAAM,MAAM,GAAG,IAAI,oBAAoB,CAAC,GAAG,CAAC,CAAC;IAC7C,MAAM,CAAC,YAAY,GAAG,gBAAgB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IAC1D,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS;QAC5B,MAAM,CAAC,OAAO,GAAG,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAEpD,MAAM,CAAC,aAAa,GAAG,gBAAgB,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IAC5D,IAAI,IAAI,CAAC,QAAQ,KAAK,SAAS;QAC7B,MAAM,CAAC,QAAQ,GAAG,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAEtD,MAAM,CAAC,YAAY,GAAG,gBAAgB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IAC1D,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS;QAC5B,MAAM,CAAC,OAAO,GAAG,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAEpD,IAAI,IAAI,CAAC,gBAAgB,KAAK,SAAS;QACrC,MAAM,CAAC,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,CAAC;IAElD,IAAI,SAAS,KAAK,IAAI,CAAC,YAAY;QACjC,MAAM,CAAC,KAAK,GAAG,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC;IAEzC,MAAM,CAAC,OAAO,GAAG,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAClD,MAAM,CAAC,OAAO,GAAG,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAChD,MAAM,CAAC,OAAO,GAAG,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAElD,IAAI,SAAS,KAAK,IAAI,CAAC,cAAc;QACnC,MAAM,CAAC,cAAc,GAAG,sBAAsB,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAEvF,OAAO,OAAO,CAAC,MAAM,CAAC,oBAAoB,CAAC;QACzC,OAAO,EAAE,EAAC,KAAK,EAAE,MAAM,CAAC,YAAY,EAAE,MAAM,EAAE,MAAM,CAAC,OAAO,EAAC;QAC7D,QAAQ,EAAE,EAAC,KAAK,EAAE,MAAM,CAAC,aAAa,EAAE,MAAM,EAAE,MAAM,CAAC,QAAQ,EAAE,QAAQ,EAAE,MAAM,CAAC,gBAAgB,EAAC;QACnG,KAAK,EAAE,MAAM,CAAC,KAAK;QACnB,cAAc,EAAE,MAAM,CAAC,cAAc;KACrC,CAAC,CAAC;IAAA,CAAC;AACP,CAAC;AAED,SAAS,YAAY,CAAC,SAAyB;IAC7C,MAAM,GAAG,GAAG,SAAS,CAAC,QAAQ,CAAC;IAC/B,QAAQ,GAAG,EAAE,IAAI,EAAE,CAAC;QAClB,KAAK,WAAW;YACd,OAAO,EAAE,SAAS,EAAE,sBAAsB,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC;QAC9D,KAAK,uBAAuB;YAC1B,OAAO;gBACL,QAAQ,EAAE,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC;aACvC,CAAC;QACJ;YACE,OAAO,EAAE,CAAC;IACd,CAAC;AACH,CAAC;AAED,SAAS,uBAAuB,CAAC,SAAyB,EAAE,OAAwB,EAAE,QAA6B;IACjH,QAAQ,SAAS,CAAC,IAAI,EAAE,CAAC;QACvB,KAAK,OAAO;YACV,OAAO,OAAO,CAAC,MAAM,CAAC,yBAAyB,CAAC;gBAC9C,GAAG,SAAS,CAAC,MAAM;gBACnB,QAAQ,EAAE,aAAa,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC;gBAClD,OAAO,EAAE,IAAI,aAAa,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC;aACrD,EAAE,QAAQ,CAAC,CAAC;QACf,KAAK,UAAU;YACb,OAAO,OAAO,CAAC,MAAM,CAAC,sBAAsB,CAAC;gBAC3C,GAAG,SAAS,CAAC,MAAM;gBACnB,QAAQ,EAAE,aAAa,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC;gBAClD,QAAQ,EAAE;oBACR,GAAG,SAAS,CAAC,MAAM,CAAC,QAAQ;oBAC5B,OAAO,EAAE,IAAI,aAAa,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC;oBAC7D,WAAW,EAAE,IAAI,aAAa,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC;iBACtE;aACF,EAAE,QAAQ,CAAC,CAAC;QACf,KAAK,MAAM,CAAC,CAAC,CAAC;YACZ,MAAM,IAAI,GAAG,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC;YACtC,IAAI,QAAQ,CAAC;YACb,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAClB,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO;oBACxB,QAAQ,GAAG,qBAAqB,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC;;oBAE/E,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;YAC7B,CAAC;YAED,IAAI,cAAc,CAAC;YACnB,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;gBACxB,IAAI,OAAO,CAAC;gBACZ,IAAI,OAAO,IAAI,CAAC,cAAc,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;oBACpD,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;gBAC9D,CAAC;qBAAM,CAAC;oBACN,MAAM,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;oBACrE,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,kBAAkB,CAAC,QAAQ,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;gBACxE,CAAC;gBAED,IAAI,OAAO;oBACT,cAAc,GAAG,EAAE,OAAO,EAAE,eAAe,EAAE,IAAI,CAAC,cAAc,CAAC,eAAe,EAAE,CAAC;YACvF,CAAC;YAED,OAAO,OAAO,CAAC,MAAM,CAAC,kBAAkB,CAAC;gBACvC,GAAG,SAAS,CAAC,MAAM;gBACnB,KAAK,EAAE,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,kBAAkB,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS;gBACtF,QAAQ,EAAE,aAAa,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC;gBAClD,WAAW,EAAE,SAAS,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,eAAe,CAAC,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,SAAS;gBAC9G,OAAO,EAAE;oBACP,GAAG,SAAS,CAAC,MAAM,CAAC,OAAO;oBAC3B,QAAQ;oBACR,cAAc;oBACd,OAAO,EAAE,IAAI,aAAa,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC;iBAC7D;gBACD,QAAQ,EAAE,OAAO,CAAC,QAAQ;aAC3B,EAAE,QAAQ,CAAC,CAAC;QACf,CAAC;IACH,CAAC;AACH,CAAC;AAED,SAAS,sBAAsB,CAAC,SAAyB,EAAE,OAAwB;IACjF,MAAM,IAAI,GAAG,YAAY,CAAC,SAAS,CAAC,CAAC;IACrC,MAAM,QAAQ,GAAG,uBAAuB,CAAC,SAAS,EAAE,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC5E,OAAO,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,mBAAmB,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AAC7F,CAAC;AAED,SAAS,uBAAuB,CAAC,UAA4B,EAAE,OAAwB;IACrF,MAAM,UAAU,GAAG,EAAE,CAAC;IACtB,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;QACnC,MAAM,QAAQ,GAAG,uBAAuB,CAAC,SAAS,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;QACxE,IAAI,QAAQ;YACV,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC9B,CAAC;IAED,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,SAAS,oBAAoB,CAAC,MAA8B,EAAE,OAAwB;IACpF,MAAM,UAAU,GAAG,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;IAC3D,IAAI,CAAC,UAAU,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC;QACxC,OAAO,SAAS,CAAC;IAEnB,MAAM,IAAI,GAAG,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAC9C,MAAM,UAAU,GAAG,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACrF,IAAI,CAAC,UAAU;QACb,OAAO,SAAS,CAAC;IAEnB,MAAM,qBAAqB,GAAG,MAAM,CAAC,qBAAqB,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACxH,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,iBAAiB,CAAC;QAC/C,SAAS,EAAE,MAAM,CAAC,SAAS;QAC3B,SAAS,EAAE,MAAM,CAAC,SAAS;QAC3B,YAAY,EAAE,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,YAAY,CAAC;QACrD,MAAM,EAAE,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC;QACvC,KAAK,EAAE,MAAM,CAAC,KAAK;QACnB,OAAO,EAAE,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC;QACzC,cAAc,EAAE,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,cAAc,CAAC;QACzD,KAAK,EAAE,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC;QACrC,iBAAiB,EAAE,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,iBAAiB,CAAC;QAC7D,qBAAqB;KACtB,CAAC,CAAC;IAEH,IAAI,CAAC,OAAO;QACV,OAAO,SAAS,CAAC;IAEnB,MAAM,MAAM,GAAG,IAAI,aAAa,CAAC,IAAI,CAAC,CAAC;IACvC,KAAK,MAAM,QAAQ,IAAI,UAAU,EAAE,CAAC;QAClC,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,mBAAmB,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QACtE,IAAI,OAAO;YACT,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACxB,CAAC;IAED,OAAO,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,mBAAmB,CAAC,MAAM,EAAE,SAAS,CAAC,cAAc,EAAE,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC;AAC7H,CAAC;AAED,SAAS,kBAAkB,CAAC,IAAe,EAAE,OAAwB;IACnE,IAAI,SAAS,KAAK,IAAI,CAAC,OAAO;QAC5B,OAAO,4BAA4B,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAErD,MAAM,QAAQ,GAAoB,EAAE,CAAC;IACrC,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;QAC/B,QAAQ,CAAC,IAAI,CAAC,GAAG,4BAA4B,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC;IACjE,CAAC;IAED,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;QACvB,OAAO,QAAQ,CAAC;IAElB,MAAM,MAAM,GAAG,IAAI,aAAa,CAAC,IAAI,CAAC,CAAC;IACvC,MAAM,CAAC,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC;IAClC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,CAAC;IACjC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC,MAAM,EAAE,SAAS,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC;AAC3E,CAAC;AAED,SAAS,4BAA4B,CAAC,IAAyB,EAAE,OAAwB;IACvF,IAAI,QAAQ,GAAG,EAAE,CAAC;IAClB,KAAK,MAAM,SAAS,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;QACxC,MAAM,OAAO,GAAG,SAAS,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,oBAAoB,CAAC,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,sBAAsB,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QAC5I,IAAI,OAAO;YACT,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC3B,CAAC;IAED,IAAI,CAAC,QAAQ,CAAC,MAAM;QAClB,OAAO,QAAQ,CAAC;IAElB,IAAI,SAAS,KAAK,IAAI,CAAC,OAAO,EAAE,CAAC;QAC/B,MAAM,YAAY,GAAG,CAAC,KAAK,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC;QACtG,QAAQ,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,kBAAkB,CAAC,YAAY,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;IAC7E,CAAC;SAAM,IAAI,SAAS,KAAK,IAAI,CAAC,eAAe,EAAE,CAAC;QAC9C,MAAM,MAAM,GAAG,IAAI,aAAa,CAAC,IAAI,CAAC,CAAC;QACvC,MAAM,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;QACtC,MAAM,CAAC,eAAe,GAAG,IAAI,CAAC,eAAe,CAAC;QAC9C,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,CAAC;QACjC,QAAQ,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC,MAAM,EAAE,SAAS,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC;IAC/E,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,OAA0B;IACjE,MAAM,QAAQ,GAAG,MAAM,iBAAiB,CAAC,OAAO,CAAC,CAAC;IAClD,IAAI,OAAO,CAAC,UAAU,IAAI,OAAO,CAAC,UAAU,EAAE;QAC5C,OAAO,SAAS,CAAC;IAEnB,MAAM,QAAQ,GAAG,IAAI,GAAG,EAA4B,CAAC;IACrD,MAAM,eAAe,GAAG,EAAE,GAAG,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC;IAC3D,eAAe,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;IAE5C,KAAK,MAAM,CAAC,IAAI,EAAE,UAAU,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,QAAQ;QACxD,QAAQ,CAAC,GAAG,CAAC,IAAI,EAAE,uBAAuB,CAAC,UAAU,EAAE,eAAe,CAAC,CAAC,CAAC;IAE3E,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAC9B,MAAM,QAAQ,GAAoB,EAAE,CAAC;IACrC,KAAK,MAAM,IAAI,IAAI,OAAO,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;QAC1C,QAAQ,CAAC,IAAI,CAAC,GAAG,kBAAkB,CAAC,IAAI,EAAE,eAAe,CAAC,CAAC,CAAC;IAC9D,CAAC;IAED,QAAQ,QAAQ,CAAC,MAAM,EAAE,CAAC;QACxB,KAAK,CAAC,CAAC,CAAC,OAAO,SAAS,CAAC;QACzB,KAAK,CAAC,CAAC,CAAC,OAAO,QAAQ,CAAC,CAAC,CAAC,CAAC;QAC3B,OAAO,CAAC,CAAC,OAAO,MAAM,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC;IACrD,CAAC;AACH,CAAC;AAED,SAAS,uBAAuB,CAAC,KAA6B,EAAE,OAAkC;IAChG,IAAI,KAAK,CAAC,YAAY,KAAK,OAAO,EAAE,CAAC;QACnC,oBAAoB;QACpB,OAAO;IACT,CAAC;SAAM,IAAI,KAAK,CAAC,YAAY,EAAE,CAAC;QAC9B,MAAM,IAAI,KAAK,CAAC,oFAAoF,CAAC,CAAC;IACxG,CAAC;IAED,KAAK,CAAC,YAAY,GAAG,OAAO,CAAC;IAE7B,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;IAC1B,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO;IACT,CAAC;IAED,IAAI,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;QACpC,MAAM,YAAY,GAAG,OAAO,CAAC,qBAAqB,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;QACnF,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,wBAAwB,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;IACxE,CAAC;IAED,MAAM,IAAI,GAAG,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC;IACrC,MAAM,OAAO,GAAG,CAAC,MAAc,EAAE,EAAE;QACjC,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QAC5B,IAAI,EAAE,IAAI,UAAU,EAAE,CAAC;YACrB,MAAM,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC;YACtB,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;YAExB,2GAA2G;YAC3G,MAAM,aAAa,GAAG,EAAE,GAAG,CAAC,GAAG,GAAG,UAAU,CAAC,CAAC;YAC9C,MAAM,OAAO,GAAG,OAAO,CAAC,qBAAqB,CAAC,aAAa,CAAC,CAAC;YAC7D,IAAI,CAAC,MAAM,CAAC,GAAG,OAAO,GAAG,UAAU,CAAC;YACpC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,UAAU,GAAG,GAAG,CAAC;QACtC,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,aAAa,GAAG,CAAC,GAAG,KAAK,CAAC,YAAY,CAAC,WAAW,CAAC;IACzD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,aAAa,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;QAC1C,OAAO,CAAC,CAAC,CAAC,CAAC;IACb,CAAC;IAED,MAAM,UAAU,GAAG,SAAS,KAAK,KAAK,CAAC,YAAY,CAAC,gBAAgB,CAAC,CAAC,CAAC,aAAa,GAAG,CAAC,GAAG,KAAK,CAAC,YAAY,CAAC,gBAAgB,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC;IAC7I,KAAK,IAAI,CAAC,GAAG,aAAa,EAAE,CAAC,GAAG,UAAU,EAAE,CAAC,EAAE,EAAE,CAAC;QAChD,OAAO,CAAC,CAAC,CAAC,CAAC;IACb,CAAC;IAED,IAAI,SAAS,KAAK,KAAK,CAAC,YAAY,CAAC,gBAAgB,EAAE,CAAC;QACtD,KAAK,IAAI,CAAC,GAAG,UAAU,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAC9C,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QACjB,CAAC;IACH,CAAC;AACH,CAAC;AAED,MAAM,UAAU,oCAAoC,CAAC,KAAyB,EAAE,OAAkC,EAAE,MAAoB;IACtI,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,EAAE,CAAC;QACjC,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;IAChD,CAAC;IAED,uBAAuB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IAExC,MAAM,eAAe,GAAoB;QACvC,MAAM;QACN,QAAQ,EAAE,OAAO,CAAC,SAAS,CAAC;QAC5B,QAAQ,EAAE,IAAI,GAAG,EAAE;KACpB,CAAC;IAEF,MAAM,QAAQ,GAAqB,EAAE,CAAC;IACtC,KAAK,MAAM,SAAS,IAAI,KAAK,CAAC,UAAU,EAAE,CAAC;QACzC,MAAM,IAAI,GAAG,YAAY,CAAC,SAAS,CAAC,CAAC;QAErC,2FAA2F;QAC3F,MAAM,CAAC,SAAS,KAAK,IAAI,EAAE,SAAS,CAAC,CAAC;QAEtC,MAAM,IAAI,GAAG,uBAAuB,CAAC,SAAS,EAAE,eAAe,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;QAChF,IAAI,IAAI,EAAE,CAAC;YACT,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACtB,CAAC;IACH,CAAC;IAED,IAAI,KAAuC,CAAC;IAC5C,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;QAChB,MAAM,YAAY,GAAG,mBAAmB,CAAC,KAAK,CAAC,KAAK,CAAC,YAAY,EAAE,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACxF,KAAK,GAAG;YACN,OAAO,EAAE,EAAE,GAAG,KAAK,CAAC,KAAK,EAAE;YAC3B,KAAK,EAAE,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC;YAC1C,YAAY;SACb,CAAC;IACJ,CAAC;IAED,IAAI,MAAyC,CAAC;IAC9C,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC;QACtB,MAAM,GAAG,EAAE,SAAS,EAAE,SAAS,CAAC,iBAAiB,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC;IAC3F,CAAC;IAED,OAAO,qBAAqB,CAAC;QAC3B,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC;QACrB,KAAK;QACL,MAAM;QACN,SAAS,EAAE,IAAI;KAChB,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,4BAA4B,CAAC,KAAyB,EAAE,OAAkC,EAAE,MAAoB;IAC9H,MAAM,QAAQ,GAAG,oCAAoC,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;IAC9E,OAAO,MAAM,CAAC,yBAAyB,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC;AACxD,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Tiles\n */\n\nimport { assert, Id64, JsonUtils } from \"@itwin/core-bentley\";\nimport { ClipVector, Point2d, Point3d, Range3d, Transform } from \"@itwin/core-geometry\";\nimport {\n ColorDef, Gradient, ImageSource, RenderMaterial, RenderMaterialParams, RenderTexture, RenderTextureParams, TextureMapping,\n} from \"@itwin/core-common\";\nimport { AuxChannelTable } from \"../../common/internal/render/AuxChannelTable\";\nimport { createSurfaceMaterial } from \"../../common/internal/render/SurfaceParams\";\nimport { ImdlModel as Imdl } from \"../../common/imdl/ImdlModel\";\nimport { ImdlColorDef, ImdlNamedTexture, ImdlTextureMapping } from \"../../common/imdl/ImdlSchema\";\nimport { convertFeatureTable, edgeParamsFromImdl, toMaterialParams, toVertexTable } from \"../../common/imdl/ParseImdlDocument\";\nimport { VertexIndices } from \"../../common/internal/render/VertexIndices\";\nimport type { RenderGraphic } from \"../../render/RenderGraphic\";\nimport { GraphicBranch } from \"../../render/GraphicBranch\";\nimport type { RenderSystem } from \"../../render/RenderSystem\";\nimport { InstancedGraphicParams } from \"../../common/render/InstancedGraphicParams\";\nimport type { IModelConnection } from \"../../IModelConnection\";\nimport { GraphicDescription } from \"../../common/render/GraphicDescriptionBuilder\";\nimport { GraphicDescriptionImpl, isGraphicDescription } from \"../../common/internal/render/GraphicDescriptionBuilderImpl\";\nimport { GraphicDescriptionContext } from \"../../common/render/GraphicDescriptionContext\";\nimport { _implementationProhibited, _textures } from \"../../common/internal/Symbols\";\nimport { RenderGeometry } from \"../../internal/render/RenderGeometry\";\nimport { createGraphicTemplate, GraphicTemplateBatch, GraphicTemplateBranch } from \"../../internal/render/GraphicTemplateImpl\";\nimport { GraphicTemplate } from \"../../render/GraphicTemplate\";\nimport { LayerTileData } from \"../render/webgl/MapLayerParams\";\n\n/** Options provided to [[decodeImdlContent]].\n */\nexport interface ImdlDecodeOptions {\n document: Imdl.Document;\n system: RenderSystem;\n iModel: IModelConnection;\n isCanceled?: () => boolean;\n tileData?: LayerTileData;\n}\n\nasync function loadNamedTexture(name: string, namedTex: ImdlNamedTexture, options: ImdlDecodeOptions): Promise<RenderTexture | undefined> {\n // Reasons a texture could be embedded in the tile content instead of requested separately from the backend:\n // - external textures are disabled\n // - the texture name is not a valid Id64 string\n // - the texture is below a certain backend-hardcoded size threshold\n // The bufferViewJson being defined signifies any of the above conditions. In that case, the image content\n // has been embedded in the tile contents. Otherwise, we will attempt to request the image content separately\n // from the backend.\n\n try {\n let textureType = RenderTexture.Type.Normal;\n const isGlyph = JsonUtils.asBool(namedTex.isGlyph);\n const isTileSection = !isGlyph && JsonUtils.asBool(namedTex.isTileSection);\n if (isGlyph)\n textureType = RenderTexture.Type.Glyph;\n else if (isTileSection)\n textureType = RenderTexture.Type.TileSection;\n\n // We produce unique tile sections for very large (> 8 megapixel) textures, and unique glyph atlases for raster text.\n // Neither should be cached.\n const cacheable = !isGlyph && !isTileSection;\n const ownership = cacheable ? { iModel: options.iModel, key: name } : undefined;\n\n const bufferViewId = JsonUtils.asString(namedTex.bufferView);\n const bufferViewJson = 0 !== bufferViewId.length ? options.document.json.bufferViews[bufferViewId] : undefined;\n\n if (undefined !== bufferViewJson) { // presence of bufferViewJson signifies we should read the texture from the tile content\n const byteOffset = JsonUtils.asInt(bufferViewJson.byteOffset);\n const byteLength = JsonUtils.asInt(bufferViewJson.byteLength);\n if (0 === byteLength)\n return undefined;\n\n const texBytes = options.document.binaryData.subarray(byteOffset, byteOffset + byteLength);\n const format = namedTex.format;\n const source = new ImageSource(texBytes, format);\n return await options.system.createTextureFromSource({ source, ownership, type: textureType, transparency: namedTex.transparency });\n }\n\n // bufferViewJson was undefined, so attempt to request the texture directly from the backend\n const params = new RenderTextureParams(cacheable ? name : undefined, textureType);\n return options.system.createTextureFromElement(name, options.iModel, params, namedTex.format);\n } catch {\n return undefined;\n }\n}\n\nasync function loadNamedTextures(options: ImdlDecodeOptions): Promise<Map<string, RenderTexture>> {\n const result = new Map<string, RenderTexture>();\n const namedTextures = options.document.json.namedTextures;\n if (!namedTextures)\n return result;\n\n const promises = new Array<Promise<void>>();\n for (const [name, namedTexture] of Object.entries(namedTextures)) {\n const texture = options.system.findTexture(name, options.iModel);\n if (texture) {\n result.set(name, texture);\n continue;\n } else if (namedTexture) {\n promises.push(loadNamedTexture(name, namedTexture, options).then((tx) => {\n if (tx)\n result.set(name, tx);\n }));\n }\n }\n\n if (promises.length > 0)\n await Promise.all(promises);\n\n return result;\n}\n\ninterface GraphicsOptions {\n document?: Imdl.Document;\n iModel?: IModelConnection;\n system: RenderSystem;\n isCanceled?: () => boolean;\n textures: Map<string, RenderTexture>;\n patterns: Map<string, RenderGeometry[]>;\n tileData?: LayerTileData;\n}\n\nfunction constantLodParamPropsFromJson(propsJson: { repetitions?: number, offset?: number[], minDistClamp?: number, maxDistClamp?: number } | undefined): TextureMapping.ConstantLodParamProps | undefined {\n if (undefined === propsJson)\n return undefined;\n\n const constantLodPops: TextureMapping.ConstantLodParamProps = {\n repetitions: JsonUtils.asDouble(propsJson.repetitions, 1.0),\n offset: { x: propsJson.offset ? JsonUtils.asDouble(propsJson.offset[0]) : 0.0, y: propsJson.offset ? JsonUtils.asDouble(propsJson.offset[1]) : 0.0 },\n minDistClamp: JsonUtils.asDouble(propsJson.minDistClamp, 1.0),\n maxDistClamp: JsonUtils.asDouble(propsJson.maxDistClamp, 4096.0 * 1024.0 * 1024.0),\n };\n return constantLodPops;\n}\n\nfunction textureMappingFromJson(json: ImdlTextureMapping | undefined, options: GraphicsOptions): TextureMapping | undefined {\n if (!json)\n return undefined;\n\n const texture = options.textures.get(JsonUtils.asString(json.name));\n if (!texture)\n return undefined;\n\n const paramsJson = json.params;\n const tf = paramsJson.transform;\n\n const paramProps: TextureMapping.ParamProps = {\n textureMat2x3: new TextureMapping.Trans2x3(tf[0][0], tf[0][1], tf[0][2], tf[1][0], tf[1][1], tf[1][2]),\n textureWeight: JsonUtils.asDouble(paramsJson.weight, 1.0),\n mapMode: JsonUtils.asInt(paramsJson.mode),\n worldMapping: JsonUtils.asBool(paramsJson.worldMapping),\n useConstantLod: JsonUtils.asBool(paramsJson.useConstantLod),\n constantLodProps: constantLodParamPropsFromJson(paramsJson.constantLodParams),\n };\n\n const textureMapping = new TextureMapping(texture, new TextureMapping.Params(paramProps));\n\n const normalMapJson = json.normalMapParams;\n if (normalMapJson) {\n let normalMap;\n const normalTexName = JsonUtils.asString(normalMapJson.textureName);\n if (normalTexName.length === 0 || undefined !== (normalMap = options.textures.get(normalTexName))) {\n textureMapping.normalMapParams = {\n normalMap,\n greenUp: JsonUtils.asBool(normalMapJson.greenUp),\n scale: JsonUtils.asDouble(normalMapJson.scale, 1),\n useConstantLod: JsonUtils.asBool(normalMapJson.useConstantLod),\n };\n }\n }\n\n return textureMapping;\n}\n\nfunction getMaterial(mat: string | Imdl.SurfaceMaterialParams, options: GraphicsOptions): RenderMaterial | undefined {\n if (typeof mat !== \"string\") {\n const args = toMaterialParams(mat);\n return options.system.createRenderMaterial(args);\n }\n\n if (!options.iModel) {\n return undefined;\n }\n\n const material = options.system.findMaterial(mat, options.iModel);\n if (material || !options.document?.json.renderMaterials)\n return material;\n\n const json = options.document.json.renderMaterials[mat];\n if (!json)\n return undefined;\n\n function colorDefFromJson(col: ImdlColorDef | undefined): ColorDef | undefined {\n return col ? ColorDef.from(col[0] * 255 + 0.5, col[1] * 255 + 0.5, col[2] * 255 + 0.5) : undefined;\n }\n\n const params = new RenderMaterialParams(mat);\n params.diffuseColor = colorDefFromJson(json.diffuseColor);\n if (json.diffuse !== undefined)\n params.diffuse = JsonUtils.asDouble(json.diffuse);\n\n params.specularColor = colorDefFromJson(json.specularColor);\n if (json.specular !== undefined)\n params.specular = JsonUtils.asDouble(json.specular);\n\n params.reflectColor = colorDefFromJson(json.reflectColor);\n if (json.reflect !== undefined)\n params.reflect = JsonUtils.asDouble(json.reflect);\n\n if (json.specularExponent !== undefined)\n params.specularExponent = json.specularExponent;\n\n if (undefined !== json.transparency)\n params.alpha = 1.0 - json.transparency;\n\n params.refract = JsonUtils.asDouble(json.refract);\n params.shadows = JsonUtils.asBool(json.shadows);\n params.ambient = JsonUtils.asDouble(json.ambient);\n\n if (undefined !== json.textureMapping)\n params.textureMapping = textureMappingFromJson(json.textureMapping.texture, options);\n\n return options.system.createRenderMaterial({\n diffuse: {color: params.diffuseColor, weight: params.diffuse},\n specular: {color: params.specularColor, weight: params.specular, exponent: params.specularExponent},\n alpha: params.alpha,\n textureMapping: params.textureMapping\n });;\n}\n\nfunction getModifiers(primitive: Imdl.Primitive): { viOrigin?: Point3d, instances?: InstancedGraphicParams } {\n const mod = primitive.modifier;\n switch (mod?.type) {\n case \"instances\":\n return { instances: InstancedGraphicParams.fromProps(mod) };\n case \"viewIndependentOrigin\":\n return {\n viOrigin: Point3d.fromJSON(mod.origin),\n };\n default:\n return {};\n }\n}\n\nfunction createPrimitiveGeometry(primitive: Imdl.Primitive, options: GraphicsOptions, viOrigin: Point3d | undefined): RenderGeometry | undefined {\n switch (primitive.type) {\n case \"point\":\n return options.system.createPointStringGeometry({\n ...primitive.params,\n vertices: toVertexTable(primitive.params.vertices),\n indices: new VertexIndices(primitive.params.indices),\n }, viOrigin);\n case \"polyline\":\n return options.system.createPolylineGeometry({\n ...primitive.params,\n vertices: toVertexTable(primitive.params.vertices),\n polyline: {\n ...primitive.params.polyline,\n indices: new VertexIndices(primitive.params.polyline.indices),\n prevIndices: new VertexIndices(primitive.params.polyline.prevIndices),\n },\n }, viOrigin);\n case \"mesh\": {\n const surf = primitive.params.surface;\n let material;\n if (surf.material) {\n if (!surf.material.isAtlas)\n material = createSurfaceMaterial(getMaterial(surf.material.material, options));\n else\n material = surf.material;\n }\n\n let textureMapping;\n if (surf.textureMapping) {\n let texture;\n if (typeof surf.textureMapping.texture === \"string\") {\n texture = options.textures.get(surf.textureMapping.texture);\n } else {\n const gradient = Gradient.Symb.fromJSON(surf.textureMapping.texture);\n texture = options.system.getGradientTexture(gradient, options.iModel);\n }\n\n if (texture)\n textureMapping = { texture, alwaysDisplayed: surf.textureMapping.alwaysDisplayed };\n }\n\n return options.system.createMeshGeometry({\n ...primitive.params,\n edges: primitive.params.edges ? edgeParamsFromImdl(primitive.params.edges) : undefined,\n vertices: toVertexTable(primitive.params.vertices),\n auxChannels: primitive.params.auxChannels ? AuxChannelTable.fromJSON(primitive.params.auxChannels) : undefined,\n surface: {\n ...primitive.params.surface,\n material,\n textureMapping,\n indices: new VertexIndices(primitive.params.surface.indices),\n },\n tileData: options.tileData,\n }, viOrigin);\n }\n }\n}\n\nfunction createPrimitiveGraphic(primitive: Imdl.Primitive, options: GraphicsOptions): RenderGraphic | undefined {\n const mods = getModifiers(primitive);\n const geometry = createPrimitiveGeometry(primitive, options, mods.viOrigin);\n return geometry ? options.system.createRenderGraphic(geometry, mods.instances) : undefined;\n}\n\nfunction createPatternGeometries(primitives: Imdl.Primitive[], options: GraphicsOptions): RenderGeometry[] {\n const geometries = [];\n for (const primitive of primitives) {\n const geometry = createPrimitiveGeometry(primitive, options, undefined);\n if (geometry)\n geometries.push(geometry);\n }\n\n return geometries;\n}\n\nfunction createPatternGraphic(params: Imdl.AreaPatternParams, options: GraphicsOptions): RenderGraphic | undefined {\n const geometries = options.patterns.get(params.symbolName);\n if (!geometries || geometries.length === 0)\n return undefined;\n\n const clip = ClipVector.fromJSON(params.clip);\n const clipVolume = clip?.isValid ? options.system.createClipVolume(clip) : undefined;\n if (!clipVolume)\n return undefined;\n\n const viewIndependentOrigin = params.viewIndependentOrigin ? Point3d.fromJSON(params.viewIndependentOrigin) : undefined;\n const pattern = options.system.createAreaPattern({\n xyOffsets: params.xyOffsets,\n featureId: params.featureId,\n orgTransform: Transform.fromJSON(params.orgTransform),\n origin: Point2d.fromJSON(params.origin),\n scale: params.scale,\n spacing: Point2d.fromJSON(params.spacing),\n patternToModel: Transform.fromJSON(params.modelTransform),\n range: Range3d.fromJSON(params.range),\n symbolTranslation: Point3d.fromJSON(params.symbolTranslation),\n viewIndependentOrigin,\n });\n\n if (!pattern)\n return undefined;\n\n const branch = new GraphicBranch(true);\n for (const geometry of geometries) {\n const graphic = options.system.createRenderGraphic(geometry, pattern);\n if (graphic)\n branch.add(graphic);\n }\n\n return branch.isEmpty ? undefined : options.system.createGraphicBranch(branch, Transform.createIdentity(), { clipVolume });\n}\n\nfunction createNodeGraphics(node: Imdl.Node, options: GraphicsOptions): RenderGraphic[] {\n if (undefined === node.groupId)\n return createPrimitivesNodeGraphics(node, options);\n\n const graphics: RenderGraphic[] = [];\n for (const child of node.nodes) {\n graphics.push(...createPrimitivesNodeGraphics(child, options));\n }\n\n if (graphics.length === 0)\n return graphics;\n\n const branch = new GraphicBranch(true);\n branch.groupNodeId = node.groupId;\n branch.entries.push(...graphics);\n return [options.system.createBranch(branch, Transform.createIdentity())];\n}\n\nfunction createPrimitivesNodeGraphics(node: Imdl.PrimitivesNode, options: GraphicsOptions): RenderGraphic[] {\n let graphics = [];\n for (const primitive of node.primitives) {\n const graphic = primitive.type === \"pattern\" ? createPatternGraphic(primitive.params, options) : createPrimitiveGraphic(primitive, options);\n if (graphic)\n graphics.push(graphic);\n }\n\n if (!graphics.length)\n return graphics;\n\n if (undefined !== node.layerId) {\n const layerGraphic = 1 === graphics.length ? graphics[0] : options.system.createGraphicList(graphics);\n graphics = [options.system.createGraphicLayer(layerGraphic, node.layerId)];\n } else if (undefined !== node.animationNodeId) {\n const branch = new GraphicBranch(true);\n branch.animationId = node.animationId;\n branch.animationNodeId = node.animationNodeId;\n branch.entries.push(...graphics);\n graphics = [options.system.createBranch(branch, Transform.createIdentity())];\n }\n\n return graphics;\n}\n\nexport async function decodeImdlGraphics(options: ImdlDecodeOptions): Promise<RenderGraphic | undefined> {\n const textures = await loadNamedTextures(options);\n if (options.isCanceled && options.isCanceled())\n return undefined;\n\n const patterns = new Map<string, RenderGeometry[]>();\n const graphicsOptions = { ...options, textures, patterns };\n graphicsOptions.tileData = options.tileData;\n\n for (const [name, primitives] of options.document.patterns)\n patterns.set(name, createPatternGeometries(primitives, graphicsOptions));\n\n const system = options.system;\n const graphics: RenderGraphic[] = [];\n for (const node of options.document.nodes) {\n graphics.push(...createNodeGraphics(node, graphicsOptions));\n }\n\n switch (graphics.length) {\n case 0: return undefined;\n case 1: return graphics[0];\n default: return system.createGraphicList(graphics);\n }\n}\n\nfunction remapGraphicDescription(descr: GraphicDescriptionImpl, context: GraphicDescriptionContext): void {\n if (descr.remapContext === context) {\n // Already remapped.\n return;\n } else if (descr.remapContext) {\n throw new Error(\"You cannot create a graphic from a GraphicDescription using two different contexts\");\n }\n\n descr.remapContext = context;\n\n const batch = descr.batch;\n if (!batch) {\n return;\n }\n\n if (Id64.isTransient(batch.modelId)) {\n const modelLocalId = context.remapTransientLocalId(Id64.getLocalId(batch.modelId));\n batch.modelId = Id64.fromLocalAndBriefcaseIds(modelLocalId, 0xffffff);\n }\n\n const data = batch.featureTable.data;\n const remapId = (offset: number) => {\n const hi = data[offset + 1];\n if (hi >= 0xffffff00) {\n const hi8 = hi & 0xff;\n const lo = data[offset];\n\n // Avoid bitwise operators because they truncate at 32 bits (we need 40) and are stupid about the sign bit.\n const sourceLocalId = lo + (hi8 * 0xffffffff);\n const localId = context.remapTransientLocalId(sourceLocalId);\n data[offset] = localId & 0xffffffff;\n data[offset + 1] = 0xffffff00 + hi8;\n }\n };\n\n const subCatsOffset = 3 * batch.featureTable.numFeatures;\n for (let i = 0; i < subCatsOffset; i += 3) {\n remapId(i);\n }\n\n const subCatsEnd = undefined !== batch.featureTable.numSubCategories ? subCatsOffset + 2 * batch.featureTable.numSubCategories : data.length;\n for (let i = subCatsOffset; i < subCatsEnd; i++) {\n remapId(i);\n }\n\n if (undefined !== batch.featureTable.numSubCategories) {\n for (let i = subCatsEnd; i < data.length; i++) {\n remapId(i + 1);\n }\n }\n}\n\nexport function createGraphicTemplateFromDescription(descr: GraphicDescription, context: GraphicDescriptionContext, system: RenderSystem): GraphicTemplate {\n if (!isGraphicDescription(descr)) {\n throw new Error(\"Invalid GraphicDescription\");\n }\n\n remapGraphicDescription(descr, context);\n\n const graphicsOptions: GraphicsOptions = {\n system,\n textures: context[_textures],\n patterns: new Map(),\n };\n\n const geometry: RenderGeometry[] = [];\n for (const primitive of descr.primitives) {\n const mods = getModifiers(primitive);\n\n // GraphicDescriptionBuilder providers no way to include instances in a GraphicDescription.\n assert(undefined === mods?.instances);\n\n const geom = createPrimitiveGeometry(primitive, graphicsOptions, mods.viOrigin);\n if (geom) {\n geometry.push(geom);\n }\n }\n\n let batch: GraphicTemplateBatch | undefined;\n if (descr.batch) {\n const featureTable = convertFeatureTable(descr.batch.featureTable, descr.batch.modelId);\n batch = {\n options: { ...descr.batch },\n range: Range3d.fromJSON(descr.batch.range),\n featureTable,\n };\n }\n\n let branch: GraphicTemplateBranch | undefined;\n if (descr.translation) {\n branch = { transform: Transform.createTranslation(Point3d.fromJSON(descr.translation)) };\n }\n\n return createGraphicTemplate({\n nodes: [{ geometry }],\n batch,\n branch,\n noDispose: true,\n });\n}\n\nexport function createGraphicFromDescription(descr: GraphicDescription, context: GraphicDescriptionContext, system: RenderSystem): RenderGraphic | undefined {\n const template = createGraphicTemplateFromDescription(descr, context, system);\n return system.createGraphicFromTemplate({ template });\n}\n"]}
@@ -2,10 +2,10 @@
2
2
  * @module Tiles
3
3
  */
4
4
  import { Id64String } from "@itwin/core-bentley";
5
- import { ImageryMapTileTree, ImageryTileTreeState, ModelMapLayerTileTreeReference, Tile, TileDrawArgs } from "./internal";
5
+ import { ImageryMapTileTree, ImageryTileTreeState, ModelMapLayerTileTreeReference, Tile, TileDrawArgs } from "../../tile/internal";
6
6
  import { MapLayerSettings } from "@itwin/core-common";
7
- import { RenderPlanarClassifier } from "../internal/render/RenderPlanarClassifier";
8
- import { SceneContext } from "../ViewContext";
7
+ import { RenderPlanarClassifier } from "../render/RenderPlanarClassifier";
8
+ import { SceneContext } from "../../ViewContext";
9
9
  /** Utility interface that ties an imagery tile tree to its corresponding map-layer settings object.
10
10
  * @internal
11
11
  */
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LayerTileTreeHandler.d.ts","sourceRoot":"","sources":["../../../../src/internal/tile/LayerTileTreeHandler.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,8BAA8B,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnI,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,sBAAsB,EAAE,MAAM,kCAAkC,CAAC;AAC1E,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEjD;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,kBAAkB,CAAC;IACzB,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,gBAAgB,EAAE,OAAO,CAAC;CAC3B;AAED,gBAAgB;AAChB,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,UAAU,CAAC;IACpB,QAAQ,EAAE,IAAI,CAAC;IACf,YAAY,EAAE,OAAO,CAAC;IACtB,iBAAiB,EAAE,mBAAmB,EAAE,CAAC;CAC1C;AAED,gBAAgB;AAChB,qBAAa,oBAAoB;IAC/B,SAAS,CAAC,cAAc,gCAA2C;IACnE,SAAS,CAAC,iBAAiB,oCAA+C;IAC1E,SAAS,CAAC,eAAe,sBAAiC;IACnD,gBAAgB,sCAA6C;IACpE,OAAO,CAAC,IAAI,CAAgB;IAE5B,IAAW,gBAAgB,sCAAqC;IAChE,IAAW,aAAa,kCAAkC;IAC1D,IAAW,cAAc,wBAAmC;IAC5D,IAAW,iBAAiB,0BAA0C;gBAE1D,GAAG,EAAE,aAAa;IAI9B;;OAEG;IACI,eAAe,CAAC,IAAI,EAAE,kBAAkB,EAAE,QAAQ,EAAE,gBAAgB,EAAE,KAAK,EAAE,MAAM,EAAE,gBAAgB,EAAE,OAAO;IAQrH,gBAAgB;IACT,aAAa,CAAC,YAAY,EAAE,8BAA8B,EAAE,OAAO,EAAE,YAAY;IAOxF,gBAAgB;IACT,WAAW;IAIlB,gBAAgB;IACT,yBAAyB,CAAC,IAAI,EAAE,YAAY,EAAE,aAAa,EAAE,IAAI,EAAE;CAK3E"}
@@ -5,7 +5,7 @@
5
5
  /** @packageDocumentation
6
6
  * @module Tiles
7
7
  */
8
- import { ImageryTileTreeState } from "./internal";
8
+ import { ImageryTileTreeState } from "../../tile/internal";
9
9
  /** @internal */
10
10
  export class LayerTileTreeHandler {
11
11
  _layerSettings = new Map();
@@ -32,7 +32,8 @@ export class LayerTileTreeHandler {
32
32
  }
33
33
  /** @internal */
34
34
  addModelLayer(layerTreeRef, context) {
35
- const classifier = context.addPlanarClassifier(`MapLayer ${this._ref.modelId}-${layerTreeRef.layerIndex}`, layerTreeRef);
35
+ const tileTreeClassName = this._ref.rootTile.tree.constructor.name;
36
+ const classifier = context.addPlanarClassifier(`MapLayer ${tileTreeClassName}-${this._ref.modelId}-${layerTreeRef.layerIndex}`, layerTreeRef);
36
37
  if (classifier)
37
38
  this.layerClassifiers.set(layerTreeRef.layerIndex, classifier);
38
39
  }
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LayerTileTreeHandler.js","sourceRoot":"","sources":["../../../../src/internal/tile/LayerTileTreeHandler.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F;;GAEG;AAGH,OAAO,EAAsB,oBAAoB,EAAsD,MAAM,qBAAqB,CAAC;AAsBnI,gBAAgB;AAChB,MAAM,OAAO,oBAAoB;IACrB,cAAc,GAAG,IAAI,GAAG,EAAgC,CAAC;IACzD,iBAAiB,GAAG,IAAI,GAAG,EAAoC,CAAC;IAChE,eAAe,GAAG,IAAI,GAAG,EAAsB,CAAC;IACnD,gBAAgB,GAAG,IAAI,GAAG,EAAkC,CAAC;IAC5D,IAAI,CAAgB;IAE5B,IAAW,gBAAgB,KAAK,OAAO,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC;IAChE,IAAW,aAAa,KAAK,OAAO,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC;IAC1D,IAAW,cAAc,KAAK,OAAO,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC;IAC5D,IAAW,iBAAiB,KAAK,OAAO,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC;IAEtE,YAAY,GAAkB;QAC5B,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC;IAClB,CAAC;IAED;;OAEG;IACI,eAAe,CAAC,IAAwB,EAAE,QAA0B,EAAE,KAAa,EAAE,gBAAyB;QACnH,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,gBAAgB,EAAE,CAAC,CAAC;QACvE,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QAChD,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC;YAC3C,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,oBAAoB,EAAE,CAAC,CAAC;QACvE,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IAChD,CAAC;IAED,gBAAgB;IACT,aAAa,CAAC,YAA4C,EAAE,OAAqB;QACtF,MAAM,iBAAiB,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;QACnE,MAAM,UAAU,GAAG,OAAO,CAAC,mBAAmB,CAAC,YAAY,iBAAiB,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,YAAY,CAAC,UAAU,EAAE,EAAE,YAAY,CAAC,CAAC;QAC9I,IAAI,UAAU;YACZ,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,YAAY,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;IACnE,CAAC;IAED,gBAAgB;IACT,WAAW;QAChB,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC;IACnC,CAAC;IAED,gBAAgB;IACT,yBAAyB,CAAC,IAAkB,EAAE,aAAqB;QACxE,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,eAAuC,EAAE,EAAE;YACxE,eAAe,CAAC,eAAe,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,YAAY,EAAE,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC;QACrK,CAAC,CAAC,CAAC;IACL,CAAC;CACF","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Tiles\n */\n\nimport { Id64String } from \"@itwin/core-bentley\";\nimport { ImageryMapTileTree, ImageryTileTreeState, ModelMapLayerTileTreeReference, Tile, TileDrawArgs } from \"../../tile/internal\";\nimport { MapLayerSettings } from \"@itwin/core-common\";\nimport { RenderPlanarClassifier } from \"../render/RenderPlanarClassifier\";\nimport { SceneContext } from \"../../ViewContext\";\n\n/** Utility interface that ties an imagery tile tree to its corresponding map-layer settings object.\n * @internal\n */\nexport interface MapLayerTreeSetting {\n tree: ImageryMapTileTree;\n settings: MapLayerSettings;\n baseImageryLayer: boolean;\n}\n\n/** @internal */\nexport interface LayerTileTree {\n modelId: Id64String;\n rootTile: Tile;\n isPointCloud: boolean;\n layerImageryTrees: MapLayerTreeSetting[];\n}\n\n/** @internal */\nexport class LayerTileTreeHandler {\n protected _layerSettings = new Map<Id64String, MapLayerSettings>();\n protected _imageryTreeState = new Map<Id64String, ImageryTileTreeState>();\n protected _modelIdToIndex = new Map<Id64String, number>();\n public layerClassifiers = new Map<number, RenderPlanarClassifier>();\n private _ref: LayerTileTree;\n\n public get imageryTreeState() { return this._imageryTreeState; }\n public get layerSettings() { return this._layerSettings; }\n public get modelIdToIndex() { return this._modelIdToIndex; }\n public get layerImageryTrees() { return this._ref.layerImageryTrees; }\n\n constructor(ref: LayerTileTree) {\n this._ref = ref;\n }\n\n /** Add a new imagery tile tree / map-layer settings pair and initialize the imagery tile tree state.\n * @internal\n */\n public addImageryLayer(tree: ImageryMapTileTree, settings: MapLayerSettings, index: number, baseImageryLayer: boolean) {\n this._ref.layerImageryTrees.push({ tree, settings, baseImageryLayer });\n this._layerSettings.set(tree.modelId, settings);\n if (!this._imageryTreeState.has(tree.modelId))\n this._imageryTreeState.set(tree.modelId, new ImageryTileTreeState());\n this._modelIdToIndex.set(tree.modelId, index);\n }\n\n /** @internal */\n public addModelLayer(layerTreeRef: ModelMapLayerTileTreeReference, context: SceneContext) {\n const tileTreeClassName = this._ref.rootTile.tree.constructor.name;\n const classifier = context.addPlanarClassifier(`MapLayer ${tileTreeClassName}-${this._ref.modelId}-${layerTreeRef.layerIndex}`, layerTreeRef);\n if (classifier)\n this.layerClassifiers.set(layerTreeRef.layerIndex, classifier);\n }\n\n /** @internal */\n public clearLayers() {\n this._ref.rootTile.clearLayers();\n }\n\n /** @internal */\n public collectClassifierGraphics(args: TileDrawArgs, selectedTiles: Tile[]) {\n this.layerClassifiers.forEach((layerClassifier: RenderPlanarClassifier) => {\n layerClassifier.collectGraphics(args.context, { modelId: this._ref.modelId, tiles: selectedTiles, location: args.location, isPointCloud: this._ref.isPointCloud });\n });\n }\n}\n"]}
@@ -2,15 +2,14 @@
2
2
  * @module Tiles
3
3
  */
4
4
  import { BaseLayerSettings, ColorDef, MapLayerSettings } from "@itwin/core-common";
5
- import { SceneContext } from "../ViewContext";
6
- import { MapLayerTileTreeReference, TileTreeOwner } from "./internal";
7
- import { IModelConnection } from "../IModelConnection";
5
+ import { SceneContext } from "../../ViewContext";
6
+ import { DisclosedTileTreeSet, MapLayerTileTreeReference, TileTreeOwner } from "../../tile/internal";
7
+ import { IModelConnection } from "../../IModelConnection";
8
8
  /** @internal */
9
9
  export interface LayerTileTreeReference {
10
10
  iModel: IModelConnection;
11
11
  treeOwner: TileTreeOwner;
12
12
  shouldDrapeLayer: (layerTreeRef?: MapLayerTileTreeReference) => boolean;
13
- preInitializeLayers?: (context: SceneContext) => void;
14
13
  }
15
14
  /** @internal */
16
15
  export declare class LayerTileTreeReferenceHandler {
@@ -22,12 +21,15 @@ export declare class LayerTileTreeReferenceHandler {
22
21
  protected _baseColor?: ColorDef;
23
22
  protected _layerSettings: MapLayerSettings[];
24
23
  private _ref;
24
+ private readonly _mapTile;
25
+ private readonly _detachFromDisplayStyle;
25
26
  get layerTrees(): (MapLayerTileTreeReference | undefined)[];
26
27
  get baseColor(): ColorDef | undefined;
27
28
  get baseTransparent(): boolean;
28
29
  get baseImageryLayerIncluded(): boolean;
29
30
  get layerSettings(): MapLayerSettings[];
30
- constructor(ref: LayerTileTreeReference, pIsOverlay: boolean, baseLayerSettings?: BaseLayerSettings, layerSettings?: MapLayerSettings[]);
31
+ discloseTileTrees(trees: DisclosedTileTreeSet): void;
32
+ constructor(ref: LayerTileTreeReference, pIsOverlay: boolean, baseLayerSettings?: BaseLayerSettings, layerSettings?: MapLayerSettings[], mapTile?: boolean);
31
33
  initializeLayers(context: SceneContext): boolean;
32
34
  setBaseLayerSettings(baseLayerSettings: BaseLayerSettings): void;
33
35
  clearLayers(): void;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LayerTileTreeReferenceHandler.d.ts","sourceRoot":"","sources":["../../../../src/internal/tile/LayerTileTreeReferenceHandler.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,EAAE,iBAAiB,EAAE,QAAQ,EAAsB,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACvG,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAgD,oBAAoB,EAAoD,yBAAyB,EAAsD,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACzP,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAE1D,gBAAgB;AAChB,MAAM,WAAW,sBAAsB;IACrC,MAAM,EAAE,gBAAgB,CAAC;IACzB,SAAS,EAAE,aAAa,CAAC;IACzB,gBAAgB,EAAE,CAAC,YAAY,CAAC,EAAE,yBAAyB,KAAK,OAAO,CAAC;CACzE;AAED,gBAAgB;AAChB,qBAAa,6BAA6B;IACxC,SAAS,CAAC,QAAQ,CAAC,WAAW,4CAAsD;IAC7E,SAAS,EAAE,OAAO,CAAC;IAC1B,SAAS,CAAC,yBAAyB,UAAS;IAC5C,SAAS,CAAC,kBAAkB,CAAC,EAAE,iBAAiB,CAAC;IACjD,SAAS,CAAC,gBAAgB,UAAS;IACnC,SAAS,CAAC,UAAU,CAAC,EAAE,QAAQ,CAAC;IAChC,SAAS,CAAC,cAAc,EAAE,gBAAgB,EAAE,CAAC;IAC7C,OAAO,CAAC,IAAI,CAAyB;IACrC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAU;IACnC,OAAO,CAAC,QAAQ,CAAC,uBAAuB,CAAsB;IAE9D,IAAW,UAAU,8CAA+B;IACpD,IAAW,SAAS,yBAA8B;IAClD,IAAW,eAAe,YAAoC;IAC9D,IAAW,wBAAwB,YAA6C;IAChF,IAAW,aAAa,uBAAkC;IAEnD,iBAAiB,CAAC,KAAK,EAAE,oBAAoB,GAAG,IAAI;gBAMxC,GAAG,EAAE,sBAAsB,EAAE,UAAU,EAAE,OAAO,EAAE,iBAAiB,CAAC,EAAE,iBAAiB,EAAE,aAAa,CAAC,EAAE,gBAAgB,EAAE,EAAE,OAAO,GAAE,OAAe;IA4BjK,gBAAgB,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO;IA8EhD,oBAAoB,CAAC,iBAAiB,EAAE,iBAAiB;IA0BzD,WAAW;IAOX,gBAAgB,CAAC,aAAa,EAAE,gBAAgB,EAAE;CAY1D"}
@@ -6,7 +6,7 @@
6
6
  * @module Tiles
7
7
  */
8
8
  import { MapLayerSettings } from "@itwin/core-common";
9
- import { createMapLayerTreeReference, ImageryMapLayerTreeReference, ImageryMapTileTree, ModelMapLayerTileTreeReference, TileTreeLoadStatus } from "./internal";
9
+ import { compareMapLayer, createMapLayerTreeReference, ImageryMapLayerTreeReference, ImageryMapTileTree, ModelMapLayerTileTreeReference, TileTreeLoadStatus } from "../../tile/internal";
10
10
  /** @internal */
11
11
  export class LayerTileTreeReferenceHandler {
12
12
  _layerTrees = new Array();
@@ -17,16 +17,24 @@ export class LayerTileTreeReferenceHandler {
17
17
  _baseColor;
18
18
  _layerSettings;
19
19
  _ref;
20
+ _mapTile;
21
+ _detachFromDisplayStyle = [];
20
22
  get layerTrees() { return this._layerTrees; }
21
23
  get baseColor() { return this._baseColor; }
22
24
  get baseTransparent() { return this._baseTransparent; }
23
25
  get baseImageryLayerIncluded() { return this._baseImageryLayerIncluded; }
24
26
  get layerSettings() { return this._layerSettings; }
25
- constructor(ref, pIsOverlay, baseLayerSettings, layerSettings) {
27
+ discloseTileTrees(trees) {
28
+ for (const imageryTree of this.layerTrees)
29
+ if (imageryTree)
30
+ trees.disclose(imageryTree);
31
+ }
32
+ constructor(ref, pIsOverlay, baseLayerSettings, layerSettings, mapTile = false) {
26
33
  this._ref = ref;
27
34
  this._baseLayerSettings = baseLayerSettings;
28
35
  this._layerSettings = layerSettings ? layerSettings : [];
29
36
  this.isOverlay = pIsOverlay;
37
+ this._mapTile = mapTile;
30
38
  let tree;
31
39
  if (!this.isOverlay && this._baseLayerSettings !== undefined) {
32
40
  if (this._baseLayerSettings instanceof MapLayerSettings) {
@@ -47,8 +55,25 @@ export class LayerTileTreeReferenceHandler {
47
55
  }
48
56
  }
49
57
  initializeLayers(context) {
50
- if (undefined !== this._ref.preInitializeLayers)
51
- this._ref.preInitializeLayers(context);
58
+ // Map tiles handle refresh logic differently
59
+ if (!this._mapTile) {
60
+ const removals = this._detachFromDisplayStyle;
61
+ const mapImagery = context.viewport.displayStyle.settings.mapImagery;
62
+ if (0 === removals.length) {
63
+ removals.push(context.viewport.displayStyle.settings.onMapImageryChanged.addListener((imagery) => {
64
+ this.setBaseLayerSettings(imagery.backgroundBase);
65
+ this.setLayerSettings(imagery.backgroundLayers);
66
+ this.clearLayers();
67
+ }));
68
+ }
69
+ removals.push(context.viewport.onChangeView.addListener((vp, previousViewState) => {
70
+ if (compareMapLayer(previousViewState, vp.view)) {
71
+ this.setBaseLayerSettings(mapImagery.backgroundBase);
72
+ this.setLayerSettings(mapImagery.backgroundLayers);
73
+ this.clearLayers();
74
+ }
75
+ }));
76
+ }
52
77
  let hasLoadedTileTree = false;
53
78
  const layerHandler = this._ref.treeOwner.load()?.layerHandler;
54
79
  if (undefined === layerHandler) {
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LayerTileTreeReferenceHandler.js","sourceRoot":"","sources":["../../../../src/internal/tile/LayerTileTreeReferenceHandler.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Tiles\n */\n\nimport { BaseLayerSettings, ColorDef, MapImagerySettings, MapLayerSettings } from \"@itwin/core-common\";\nimport { SceneContext } from \"../../ViewContext\";\nimport { compareMapLayer, createMapLayerTreeReference, DisclosedTileTreeSet, ImageryMapLayerTreeReference, ImageryMapTileTree, MapLayerTileTreeReference, ModelMapLayerTileTreeReference, TileTreeLoadStatus, TileTreeOwner } from \"../../tile/internal\";\nimport { IModelConnection } from \"../../IModelConnection\";\n\n/** @internal */\nexport interface LayerTileTreeReference {\n iModel: IModelConnection;\n treeOwner: TileTreeOwner;\n shouldDrapeLayer: (layerTreeRef?: MapLayerTileTreeReference) => boolean;\n}\n\n/** @internal */\nexport class LayerTileTreeReferenceHandler {\n protected readonly _layerTrees = new Array<MapLayerTileTreeReference | undefined>();\n public isOverlay: boolean;\n protected _baseImageryLayerIncluded = false;\n protected _baseLayerSettings?: BaseLayerSettings;\n protected _baseTransparent = false;\n protected _baseColor?: ColorDef;\n protected _layerSettings: MapLayerSettings[];\n private _ref: LayerTileTreeReference;\n private readonly _mapTile: boolean;\n private readonly _detachFromDisplayStyle: VoidFunction[] = [];\n\n public get layerTrees() { return this._layerTrees; }\n public get baseColor() { return this._baseColor; }\n public get baseTransparent() { return this._baseTransparent; }\n public get baseImageryLayerIncluded() { return this._baseImageryLayerIncluded; }\n public get layerSettings() { return this._layerSettings; }\n\n public discloseTileTrees(trees: DisclosedTileTreeSet): void {\n for (const imageryTree of this.layerTrees)\n if (imageryTree)\n trees.disclose(imageryTree);\n }\n\n public constructor(ref: LayerTileTreeReference, pIsOverlay: boolean, baseLayerSettings?: BaseLayerSettings, layerSettings?: MapLayerSettings[], mapTile: boolean = false) {\n this._ref = ref;\n this._baseLayerSettings = baseLayerSettings;\n this._layerSettings = layerSettings ? layerSettings : [];\n this.isOverlay = pIsOverlay;\n this._mapTile = mapTile;\n\n let tree;\n if (!this.isOverlay && this._baseLayerSettings !== undefined) {\n if (this._baseLayerSettings instanceof MapLayerSettings) {\n tree = createMapLayerTreeReference(this._baseLayerSettings, 0, this._ref.iModel);\n this._baseTransparent = this._baseLayerSettings.transparency > 0;\n } else {\n this._baseColor = this._baseLayerSettings;\n this._baseTransparent = this._baseColor?.getTransparency() > 0;\n }\n }\n\n if (this._baseImageryLayerIncluded = (undefined !== tree))\n this._layerTrees.push(tree);\n\n if (undefined !== this._layerSettings) {\n for (let i = 0; i < this._layerSettings.length; i++)\n if (undefined !== (tree = createMapLayerTreeReference(this._layerSettings[i], i + 1, this._ref.iModel)))\n this._layerTrees.push(tree);\n }\n }\n\n public initializeLayers(context: SceneContext): boolean {\n // Map tiles handle refresh logic differently\n if(!this._mapTile){\n const removals = this._detachFromDisplayStyle;\n const mapImagery = context.viewport.displayStyle.settings.mapImagery;\n if (0 === removals.length) {\n removals.push(context.viewport.displayStyle.settings.onMapImageryChanged.addListener((imagery: Readonly<MapImagerySettings>) => {\n this.setBaseLayerSettings(imagery.backgroundBase);\n this.setLayerSettings(imagery.backgroundLayers);\n this.clearLayers();\n }));\n }\n removals.push(context.viewport.onChangeView.addListener((vp, previousViewState) => {\n if(compareMapLayer(previousViewState, vp.view)){\n this.setBaseLayerSettings(mapImagery.backgroundBase);\n this.setLayerSettings(mapImagery.backgroundLayers);\n this.clearLayers();\n }\n }));\n }\n\n let hasLoadedTileTree = false;\n const layerHandler = this._ref.treeOwner.load()?.layerHandler;\n if (undefined === layerHandler) {\n return hasLoadedTileTree; // Not loaded yet - or no layerHandler on tree.\n }\n\n layerHandler.layerImageryTrees.length = 0;\n if (0 === this._layerTrees.length) {\n return !this.isOverlay;\n }\n\n let treeIndex = this._layerTrees.length - 1;\n // Start displaying at the highest completely opaque layer...\n for (; treeIndex >= 1; treeIndex--) {\n const layerTreeRef = this._layerTrees[treeIndex];\n if (layerTreeRef?.isOpaque)\n break; // This layer is completely opaque and will obscure all others so ignore lower ones.\n }\n\n for (; treeIndex < this._layerTrees.length; treeIndex++) {\n const layerTreeRef = this._layerTrees[treeIndex];\n const hasValidTileTree = layerTreeRef && TileTreeLoadStatus.NotFound !== layerTreeRef.treeOwner.loadStatus;\n const isImageryMapLayer = layerTreeRef instanceof ImageryMapLayerTreeReference;\n const isLayerVisible = (isImageryMapLayer || (!isImageryMapLayer && layerTreeRef?.layerSettings.visible));\n\n if (!this._ref.shouldDrapeLayer(layerTreeRef)) {\n // If the layer is not to be displayed, then we should skip adding it to the tile tree.\n // The _shouldDrapeLayerFunc() function is sent in from MapTileTreeReference or RealityTileTree.\n hasLoadedTileTree = true; // ###TODO had to set this to true so addToScene actually works. alternative?\n continue;\n }\n\n // Load tile tree for each configured layer.\n // Note: Non-visible imagery layer are always added to allow proper tile tree scale range visibility reporting.\n if (hasValidTileTree\n && isLayerVisible\n && !layerTreeRef.layerSettings.allSubLayersInvisible) {\n const layerTree = layerTreeRef.treeOwner.load();\n if (layerTree !== undefined) {\n hasLoadedTileTree = true;\n } else {\n // Let's continue, there might be loaded tile tree in the list\n continue;\n }\n\n // Add loaded TileTree\n const baseImageryLayer = this._baseImageryLayerIncluded && (treeIndex === 0);\n if (layerTree instanceof ImageryMapTileTree) {\n layerHandler.addImageryLayer(layerTree, layerTreeRef.layerSettings, treeIndex, baseImageryLayer);\n } else if (layerTreeRef instanceof ModelMapLayerTileTreeReference)\n layerHandler.addModelLayer(layerTreeRef, context);\n }\n }\n\n return hasLoadedTileTree;\n }\n\n public setBaseLayerSettings(baseLayerSettings: BaseLayerSettings) {\n let tree;\n this._baseLayerSettings = baseLayerSettings;\n\n if (baseLayerSettings instanceof MapLayerSettings) {\n tree = createMapLayerTreeReference(baseLayerSettings, 0, this._ref.iModel);\n this._baseColor = undefined;\n this._baseTransparent = baseLayerSettings.transparency > 0;\n } else {\n this._baseColor = baseLayerSettings;\n this._baseTransparent = this._baseColor.getTransparency() > 0;\n }\n\n if (tree) {\n if (this._baseImageryLayerIncluded)\n this._layerTrees[0] = tree;\n else\n this._layerTrees.splice(0, 0, tree);\n } else {\n if (this._baseImageryLayerIncluded)\n this._layerTrees.shift();\n }\n this._baseImageryLayerIncluded = tree !== undefined;\n this.clearLayers();\n }\n\n public clearLayers() {\n const layerHandler = this._ref.treeOwner.tileTree?.layerHandler;\n if (undefined !== layerHandler) {\n layerHandler.clearLayers();\n }\n }\n\n public setLayerSettings(layerSettings: MapLayerSettings[]) {\n this._layerSettings = layerSettings;\n const baseLayerIndex = this._baseImageryLayerIncluded ? 1 : 0;\n\n this._layerTrees.length = Math.min(layerSettings.length + baseLayerIndex, this._layerTrees.length); // Truncate if number of layers reduced.\n for (let i = 0; i < layerSettings.length; i++) {\n const treeIndex = i + baseLayerIndex;\n if (treeIndex >= this._layerTrees.length || !this._layerTrees[treeIndex]?.layerSettings.displayMatches(layerSettings[i]))\n this._layerTrees[treeIndex] = createMapLayerTreeReference(layerSettings[i], treeIndex, this._ref.iModel)!;\n }\n this.clearLayers();\n }\n}\n"]}
@@ -2,7 +2,7 @@
2
2
  * @module Tiles
3
3
  */
4
4
  import { Id64String, OrderedId64Iterable } from "@itwin/core-bentley";
5
- import { FeatureAppearanceProvider, HiddenLine, MapLayerSettings, ModelMapLayerSettings, PrimaryTileTreeId, RenderSchedule, SpatialClassifier, ViewFlagOverrides, ViewFlagsProperties } from "@itwin/core-common";
5
+ import { BaseLayerSettings, FeatureAppearanceProvider, HiddenLine, MapLayerSettings, ModelMapLayerSettings, PrimaryTileTreeId, RenderSchedule, SpatialClassifier, ViewFlagOverrides, ViewFlagsProperties } from "@itwin/core-common";
6
6
  import { Range3d, StringifiedClipVector, Transform } from "@itwin/core-geometry";
7
7
  import { DisplayStyleState } from "../../DisplayStyleState";
8
8
  import { IModelConnection } from "../../IModelConnection";
@@ -11,7 +11,7 @@ import { RenderClipVolume } from "../../render/RenderClipVolume";
11
11
  import { SpatialViewState } from "../../SpatialViewState";
12
12
  import { SceneContext } from "../../ViewContext";
13
13
  import { AttachToViewportArgs, ViewState } from "../../ViewState";
14
- import { MapLayerTileTreeReference, TileDrawArgs, TileTree, TileTreeOwner, TileTreeReference } from "../../tile/internal";
14
+ import { DisclosedTileTreeSet, MapLayerTileTreeReference, TileDrawArgs, TileTree, TileTreeOwner, TileTreeReference } from "../../tile/internal";
15
15
  interface PrimaryTreeId {
16
16
  treeId: PrimaryTileTreeId;
17
17
  modelId: Id64String;
@@ -35,13 +35,17 @@ declare class PrimaryTreeReference extends TileTreeReference {
35
35
  private readonly _sectionClip?;
36
36
  private readonly _sectionCutAppearanceProvider?;
37
37
  protected readonly _animationTransformNodeId?: number;
38
- constructor(view: ViewState, model: GeometricModelState, planProjection: boolean, transformNodeId: number | undefined, sectionClip?: StringifiedClipVector);
38
+ private _layerRefHandler;
39
+ readonly iModel: IModelConnection;
40
+ shouldDrapeLayer(layerTreeRef?: MapLayerTileTreeReference): boolean;
41
+ constructor(view: ViewState, model: GeometricModelState, planProjection: boolean, transformNodeId: number | undefined, sectionClip?: StringifiedClipVector, backgroundBase?: BaseLayerSettings, backgroundLayers?: MapLayerSettings[]);
39
42
  protected getAnimationTransformNodeId(): number;
40
43
  protected getViewFlagOverrides(_tree: TileTree): Partial<import("@itwin/core-bentley").Mutable<import("@itwin/core-bentley").NonFunctionPropertiesOf<import("@itwin/core-common").ViewFlags>>>;
41
44
  protected getAppearanceProvider(_tree: TileTree): FeatureAppearanceProvider | undefined;
42
45
  protected getHiddenLineSettings(_tree: TileTree): HiddenLine.Settings | undefined;
43
46
  get castsShadows(): boolean;
44
47
  protected get isPlanProjection(): boolean;
48
+ discloseTileTrees(trees: DisclosedTileTreeSet): void;
45
49
  protected getClipVolume(_tree: TileTree): RenderClipVolume | undefined;
46
50
  canSupplyToolTip(): boolean;
47
51
  createDrawArgs(context: SceneContext): TileDrawArgs | undefined;
@@ -49,6 +53,7 @@ declare class PrimaryTreeReference extends TileTreeReference {
49
53
  protected createTreeId(view: ViewState, modelId: Id64String): PrimaryTileTreeId;
50
54
  protected computeBaseTransform(tree: TileTree): Transform;
51
55
  protected computeTransform(tree: TileTree): Transform;
56
+ addToScene(context: SceneContext): void;
52
57
  }
53
58
  export declare class AnimatedTreeReference extends PrimaryTreeReference {
54
59
  private readonly _branchId;
@@ -56,7 +61,7 @@ export declare class AnimatedTreeReference extends PrimaryTreeReference {
56
61
  protected computeBaseTransform(tree: TileTree): Transform;
57
62
  createDrawArgs(context: SceneContext): TileDrawArgs | undefined;
58
63
  }
59
- export declare function createPrimaryTileTreeReference(view: ViewState, model: GeometricModelState): PrimaryTreeReference;
64
+ export declare function createPrimaryTileTreeReference(view: ViewState, model: GeometricModelState, getBackgroundBase?: () => BaseLayerSettings, getBackgroundLayers?: () => MapLayerSettings[]): PrimaryTreeReference;
60
65
  export declare function createMaskTreeReference(view: ViewState, model: GeometricModelState): TileTreeReference;
61
66
  export declare class ModelMapLayerTileTreeReference extends MapLayerTileTreeReference {
62
67
  private _classifier;
@@ -1 +1 @@
1
- {"version":3,"file":"PrimaryTileTree.d.ts","sourceRoot":"","sources":["../../../../src/internal/tile/PrimaryTileTree.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,EAC6C,UAAU,EAC5D,mBAAmB,EACpB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACmD,yBAAyB,EAAE,UAAU,EAA4B,gBAAgB,EAAE,qBAAqB,EAChK,iBAAiB,EAAc,cAAc,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,mBAAmB,EACzG,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,OAAO,EAAE,qBAAqB,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjF,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAE5D,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAyB,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAG9E,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,oBAAoB,EAAE,SAAS,EAAe,MAAM,iBAAiB,CAAC;AAC/E,OAAO,EAC+D,yBAAyB,EAAE,YAAY,EAAmB,QAAQ,EAAE,aAAa,EAAE,iBAAiB,EAEzK,MAAM,qBAAqB,CAAC;AAG7B,UAAU,aAAa;IACrB,MAAM,EAAE,iBAAiB,CAAC;IAC1B,OAAO,EAAE,UAAU,CAAC;IACpB,IAAI,EAAE,OAAO,CAAC;IACd,gBAAgB,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,EAAE,cAAc,CAAC,aAAa,CAAC;CACzC;AA8ED;;;GAGG;AACH,wBAAgB,kCAAkC,CAAC,QAAQ,EAAE,GAAG,CAAC,UAAU,CAAC,EAAE,MAAM,EAAE,gBAAgB,GAAG,IAAI,CAQ5G;AAED,cAAM,oBAAqB,SAAQ,iBAAiB;IAClD,SAAgB,IAAI,EAAE,SAAS,CAAC;IAChC,SAAgB,KAAK,EAAE,mBAAmB,CAAC;IAC3C,kIAAkI;IAC3H,WAAW,UAAS;IAC3B,SAAS,CAAC,kBAAkB,EAAE,iBAAiB,CAAC;IAChD,SAAS,CAAC,GAAG,EAAE,aAAa,CAAC;IAC7B,OAAO,CAAC,MAAM,CAAgB;IAC9B,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAwB;IACtD,OAAO,CAAC,QAAQ,CAAC,6BAA6B,CAAC,CAA4B;IAC3E,SAAS,CAAC,QAAQ,CAAC,yBAAyB,CAAC,EAAE,MAAM,CAAC;gBAEnC,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,mBAAmB,EAAE,cAAc,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,GAAG,SAAS,EAAE,WAAW,CAAC,EAAE,qBAAqB;cA8B9I,2BAA2B;cAI3B,oBAAoB,CAAC,KAAK,EAAE,QAAQ;cAIpC,qBAAqB,CAAC,KAAK,EAAE,QAAQ,GAAG,yBAAyB,GAAG,SAAS;cAO7E,qBAAqB,CAAC,KAAK,EAAE,QAAQ,GAAG,UAAU,CAAC,QAAQ,GAAG,SAAS;IAI1F,IAAoB,YAAY,YAE/B;IAED,SAAS,KAAK,gBAAgB,IAAI,OAAO,CAExC;cAEkB,aAAa,CAAC,KAAK,EAAE,QAAQ,GAAG,gBAAgB,GAAG,SAAS;IAK/D,gBAAgB;IAIhB,cAAc,CAAC,OAAO,EAAE,YAAY,GAAG,YAAY,GAAG,SAAS;IAQ/E,IAAW,SAAS,IAAI,aAAa,CAgBpC;IAED,SAAS,CAAC,YAAY,CAAC,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,UAAU,GAAG,iBAAiB;IAuB/E,SAAS,CAAC,oBAAoB,CAAC,IAAI,EAAE,QAAQ,GAAG,SAAS;cAItC,gBAAgB,CAAC,IAAI,EAAE,QAAQ,GAAG,SAAS;CAQ/D;AAED,qBAAa,qBAAsB,SAAQ,oBAAoB;IAC7D,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;gBAEhB,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,mBAAmB,EAAE,eAAe,EAAE,MAAM;cAKpE,oBAAoB,CAAC,IAAI,EAAE,QAAQ,GAAG,SAAS;IAelD,cAAc,CAAC,OAAO,EAAE,YAAY,GAAG,YAAY,GAAG,SAAS;CAahF;AA6FD,wBAAgB,8BAA8B,CAAC,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,mBAAmB,GAAG,oBAAoB,CAEhH;AAkCD,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,mBAAmB,GAAG,iBAAiB,CAEtG;AAED,qBAAa,8BAA+B,SAAQ,yBAAyB;IAKvB,OAAO,CAAC,WAAW;IAAmE,OAAO,CAAC,OAAO,CAAC;IAJ1J,OAAO,CAAC,GAAG,CAAgB;IAC3B,OAAO,CAAC,MAAM,CAAgB;IAC9B,IAAW,QAAQ,YAAmB;IACtC,IAAW,gBAAgB,sBAA+B;gBACvC,aAAa,EAAE,gBAAgB,EAAU,WAAW,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,gBAAgB,EAAU,OAAO,CAAC,EAAE,iBAAiB,YAAA;IAY7K,SAAS,CAAC,YAAY,IAAI,iBAAiB;IAI3C,IAAW,SAAS,IAAI,aAAa,CAQpC;IACD,IAAW,SAAS,IAAI,OAAO,CAAC,mBAAmB,CAAC,CAcnD;CACF;AACD,wBAAgB,oCAAoC,CAAC,aAAa,EAAE,qBAAqB,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,gBAAgB,GAAG,8BAA8B,GAAG,SAAS,CAGnL;AAED;;GAEG;AACH,MAAM,WAAW,yBAA0B,SAAQ,QAAQ,CAAC,iBAAiB,CAAC;IAC5E,mEAAmE;IACnE,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,QAAQ,CAAC,iBAAiB,CAAC,CAAC;IACjD,iKAAiK;IACjK,MAAM,IAAI,IAAI,CAAC;IACf,6DAA6D;IAC7D,cAAc,CAAC,QAAQ,EAAE,UAAU,GAAG,UAAU,EAAE,GAAG,SAAS,EAAE,WAAW,EAAE,OAAO,GAAG,SAAS,EAAE,IAAI,EAAE,KAAK,GAAG,UAAU,GAAG,SAAS,GAAG,SAAS,GAAG,MAAM,EAAE,GAAG,IAAI,CAAC;IACrK,6CAA6C;IAC7C,gBAAgB,CAAC,IAAI,EAAE,oBAAoB,GAAG,IAAI,CAAC;IACnD,+CAA+C;IAC/C,kBAAkB,IAAI,IAAI,CAAC;IAC3B,2CAA2C;IAC3C,eAAe,CAAC,QAAQ,EAAE,mBAAmB,EAAE,YAAY,EAAE,iBAAiB,EAAE,EAAE,SAAS,EAAE,OAAO,GAAG,IAAI,CAAC;IAC5G,8CAA8C;IAC9C,kBAAkB,CAAC,UAAU,EAAE,mBAAmB,GAAG,SAAS,EAAE,UAAU,EAAE,OAAO,GAAG,UAAU,EAAE,GAAG,SAAS,CAAC;CAChH;AAED;;;GAGG;AACH,wBAAgB,+BAA+B,CAAC,IAAI,EAAE,gBAAgB,EAAE,cAAc,CAAC,EAAE,GAAG,CAAC,UAAU,CAAC,GAAG,yBAAyB,CAEnI;AAED;;GAEG;AACH,yBAAiB,yBAAyB,CAAC;IACzC,+FAA+F;IAC/F,SAAgB,MAAM,CAAC,IAAI,EAAE,gBAAgB,GAAG,yBAAyB,CAExE;CACF"}
1
+ {"version":3,"file":"PrimaryTileTree.d.ts","sourceRoot":"","sources":["../../../../src/internal/tile/PrimaryTileTree.ts"],"names":[],"mappings":"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"}
@@ -6,12 +6,12 @@
6
6
  * @module Tiles
7
7
  */
8
8
  import { assert, comparePossiblyUndefined, compareStrings, } from "@itwin/core-bentley";
9
- import { BatchType, compareIModelTileTreeIds, FeatureAppearanceProvider, iModelTileTreeIdToString, RenderMode, SpatialClassifier, } from "@itwin/core-common";
9
+ import { BatchType, compareIModelTileTreeIds, FeatureAppearanceProvider, iModelTileTreeIdToString, ModelMapLayerDrapeTarget, ModelMapLayerSettings, RenderMode, SpatialClassifier, } from "@itwin/core-common";
10
10
  import { Range3d, StringifiedClipVector, Transform } from "@itwin/core-geometry";
11
11
  import { IModelApp } from "../../IModelApp";
12
12
  import { formatAnimationBranchId } from "../../internal/render/AnimationBranchState";
13
13
  import { AnimationNodeId } from "../../common/internal/render/AnimationNodeId";
14
- import { IModelTileTree, iModelTileTreeParamsFromJSON, MapLayerTileTreeReference, TileGraphicType, TileTreeReference, } from "../../tile/internal";
14
+ import { IModelTileTree, iModelTileTreeParamsFromJSON, LayerTileTreeReferenceHandler, MapLayerTileTreeReference, TileGraphicType, TileTreeReference, } from "../../tile/internal";
15
15
  import { _scheduleScriptReference } from "../../common/internal/Symbols";
16
16
  class PlanProjectionTileTree extends IModelTileTree {
17
17
  baseElevation;
@@ -101,8 +101,18 @@ class PrimaryTreeReference extends TileTreeReference {
101
101
  _sectionClip;
102
102
  _sectionCutAppearanceProvider;
103
103
  _animationTransformNodeId;
104
- constructor(view, model, planProjection, transformNodeId, sectionClip) {
104
+ _layerRefHandler;
105
+ iModel;
106
+ shouldDrapeLayer(layerTreeRef) {
107
+ const mapLayerSettings = layerTreeRef?.layerSettings;
108
+ if (mapLayerSettings && mapLayerSettings instanceof ModelMapLayerSettings)
109
+ return ModelMapLayerDrapeTarget.IModel === mapLayerSettings.drapeTarget;
110
+ return false;
111
+ }
112
+ constructor(view, model, planProjection, transformNodeId, sectionClip, backgroundBase, backgroundLayers) {
105
113
  super();
114
+ this.iModel = model.iModel;
115
+ this._layerRefHandler = new LayerTileTreeReferenceHandler(this, false, backgroundBase, backgroundLayers, false);
106
116
  this.view = view;
107
117
  this.model = model;
108
118
  this._animationTransformNodeId = transformNodeId;
@@ -146,6 +156,10 @@ class PrimaryTreeReference extends TileTreeReference {
146
156
  get isPlanProjection() {
147
157
  return false;
148
158
  }
159
+ discloseTileTrees(trees) {
160
+ super.discloseTileTrees(trees);
161
+ this._layerRefHandler.discloseTileTrees(trees);
162
+ }
149
163
  getClipVolume(_tree) {
150
164
  // ###TODO: reduce frequency with which getModelClip() is called
151
165
  return this.view.is3d() && !this._sectionClip ? this.view.getModelClip(this.model.id) : undefined;
@@ -205,6 +219,12 @@ class PrimaryTreeReference extends TileTreeReference {
205
219
  return baseTf;
206
220
  return displayTf.premultiply ? displayTf.transform.multiplyTransformTransform(baseTf) : baseTf.multiplyTransformTransform(displayTf.transform);
207
221
  }
222
+ addToScene(context) {
223
+ const tree = this.treeOwner.load();
224
+ if (undefined === tree || !this._layerRefHandler.initializeLayers(context))
225
+ return; // Not loaded yet.
226
+ super.addToScene(context);
227
+ }
208
228
  }
209
229
  export class AnimatedTreeReference extends PrimaryTreeReference {
210
230
  _branchId;
@@ -239,8 +259,8 @@ export class AnimatedTreeReference extends PrimaryTreeReference {
239
259
  class PlanProjectionTreeReference extends PrimaryTreeReference {
240
260
  get _view3d() { return this.view; }
241
261
  _baseTransform = Transform.createIdentity();
242
- constructor(view, model, sectionCut) {
243
- super(view, model, true, undefined, sectionCut);
262
+ constructor(view, model, sectionCut, backgroundBase, backgroundLayers) {
263
+ super(view, model, true, undefined, sectionCut, backgroundBase, backgroundLayers);
244
264
  this._viewFlagOverrides.forceSurfaceDiscard = true;
245
265
  }
246
266
  get castsShadows() {
@@ -305,13 +325,15 @@ function isPlanProjection(view, model) {
305
325
  const model3d = view.is3d() ? model.asGeometricModel3d : undefined;
306
326
  return undefined !== model3d && model3d.isPlanProjection;
307
327
  }
308
- function createTreeRef(view, model, sectionCut) {
328
+ function createTreeRef(view, model, sectionCut, backgroundBase, backgroundLayers) {
309
329
  if (false !== IModelApp.renderSystem.options.planProjections && isPlanProjection(view, model))
310
- return new PlanProjectionTreeReference(view, model, sectionCut);
311
- return new PrimaryTreeReference(view, model, false, undefined, sectionCut);
330
+ return new PlanProjectionTreeReference(view, model, sectionCut, backgroundBase, backgroundLayers);
331
+ return new PrimaryTreeReference(view, model, false, undefined, sectionCut, backgroundBase, backgroundLayers);
312
332
  }
313
- export function createPrimaryTileTreeReference(view, model) {
314
- return createTreeRef(view, model, undefined);
333
+ export function createPrimaryTileTreeReference(view, model, getBackgroundBase, getBackgroundLayers) {
334
+ const backgroundBase = getBackgroundBase?.();
335
+ const backgroundLayers = getBackgroundLayers?.();
336
+ return createTreeRef(view, model, undefined, backgroundBase, backgroundLayers);
315
337
  }
316
338
  class MaskTreeReference extends TileTreeReference {
317
339
  _id;