@itwin/core-frontend 5.1.0-dev.5 → 5.1.0-dev.52

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 (549) hide show
  1. package/CHANGELOG.md +101 -1
  2. package/lib/cjs/AccuDraw.d.ts +2 -0
  3. package/lib/cjs/AccuDraw.d.ts.map +1 -1
  4. package/lib/cjs/AccuDraw.js +2 -0
  5. package/lib/cjs/AccuDraw.js.map +1 -1
  6. package/lib/cjs/AccuSnap.js +2 -2
  7. package/lib/cjs/AccuSnap.js.map +1 -1
  8. package/lib/cjs/GraphicalEditingScope.d.ts +1 -1
  9. package/lib/cjs/GraphicalEditingScope.d.ts.map +1 -1
  10. package/lib/cjs/GraphicalEditingScope.js +1 -1
  11. package/lib/cjs/GraphicalEditingScope.js.map +1 -1
  12. package/lib/cjs/HitDetail.d.ts +1 -1
  13. package/lib/cjs/HitDetail.d.ts.map +1 -1
  14. package/lib/cjs/HitDetail.js.map +1 -1
  15. package/lib/cjs/IModelApp.d.ts +19 -4
  16. package/lib/cjs/IModelApp.d.ts.map +1 -1
  17. package/lib/cjs/IModelApp.js +21 -2
  18. package/lib/cjs/IModelApp.js.map +1 -1
  19. package/lib/cjs/IModelConnection.d.ts +6 -6
  20. package/lib/cjs/IModelConnection.js +6 -6
  21. package/lib/cjs/IModelConnection.js.map +1 -1
  22. package/lib/cjs/IpcApp.d.ts +2 -1
  23. package/lib/cjs/IpcApp.d.ts.map +1 -1
  24. package/lib/cjs/IpcApp.js +4 -2
  25. package/lib/cjs/IpcApp.js.map +1 -1
  26. package/lib/cjs/RealityDataSource.d.ts +65 -3
  27. package/lib/cjs/RealityDataSource.d.ts.map +1 -1
  28. package/lib/cjs/RealityDataSource.js +79 -3
  29. package/lib/cjs/RealityDataSource.js.map +1 -1
  30. package/lib/cjs/RealityDataSourceTilesetUrlImpl.js +1 -1
  31. package/lib/cjs/RealityDataSourceTilesetUrlImpl.js.map +1 -1
  32. package/lib/cjs/SelectionSet.d.ts +7 -7
  33. package/lib/cjs/SelectionSet.js +3 -3
  34. package/lib/cjs/SelectionSet.js.map +1 -1
  35. package/lib/cjs/SheetViewState.d.ts +2 -0
  36. package/lib/cjs/SheetViewState.d.ts.map +1 -1
  37. package/lib/cjs/SheetViewState.js +25 -3
  38. package/lib/cjs/SheetViewState.js.map +1 -1
  39. package/lib/cjs/ViewContext.d.ts +4 -1
  40. package/lib/cjs/ViewContext.d.ts.map +1 -1
  41. package/lib/cjs/ViewContext.js +10 -5
  42. package/lib/cjs/ViewContext.js.map +1 -1
  43. package/lib/cjs/ViewManager.js +2 -2
  44. package/lib/cjs/ViewManager.js.map +1 -1
  45. package/lib/cjs/ViewState.d.ts +1 -1
  46. package/lib/cjs/ViewState.js +1 -1
  47. package/lib/cjs/ViewState.js.map +1 -1
  48. package/lib/cjs/Viewport.d.ts +7 -5
  49. package/lib/cjs/Viewport.d.ts.map +1 -1
  50. package/lib/cjs/Viewport.js +9 -5
  51. package/lib/cjs/Viewport.js.map +1 -1
  52. package/lib/cjs/core-frontend.d.ts +1 -1
  53. package/lib/cjs/core-frontend.d.ts.map +1 -1
  54. package/lib/cjs/core-frontend.js.map +1 -1
  55. package/lib/cjs/extension/ExtensionRuntime.js +15 -2
  56. package/lib/cjs/extension/ExtensionRuntime.js.map +1 -1
  57. package/lib/cjs/extension/providers/ExtensionLoadScript.js.map +1 -1
  58. package/lib/cjs/internal/GoogleMapsDecorator.d.ts +53 -0
  59. package/lib/cjs/internal/GoogleMapsDecorator.d.ts.map +1 -0
  60. package/lib/cjs/internal/GoogleMapsDecorator.js +132 -0
  61. package/lib/cjs/internal/GoogleMapsDecorator.js.map +1 -0
  62. package/lib/cjs/internal/RealityDataSourceGoogle3dTilesImpl.d.ts +83 -0
  63. package/lib/cjs/internal/RealityDataSourceGoogle3dTilesImpl.d.ts.map +1 -0
  64. package/lib/cjs/internal/RealityDataSourceGoogle3dTilesImpl.js +201 -0
  65. package/lib/cjs/internal/RealityDataSourceGoogle3dTilesImpl.js.map +1 -0
  66. package/lib/cjs/internal/cross-package.d.ts +1 -0
  67. package/lib/cjs/internal/cross-package.d.ts.map +1 -1
  68. package/lib/cjs/internal/cross-package.js +4 -1
  69. package/lib/cjs/internal/cross-package.js.map +1 -1
  70. package/lib/cjs/internal/render/MockRender.d.ts +1 -1
  71. package/lib/cjs/internal/render/MockRender.d.ts.map +1 -1
  72. package/lib/cjs/internal/render/MockRender.js +1 -1
  73. package/lib/cjs/internal/render/MockRender.js.map +1 -1
  74. package/lib/cjs/internal/render/webgl/AtmosphereUniforms.d.ts +1 -1
  75. package/lib/cjs/internal/render/webgl/AtmosphereUniforms.d.ts.map +1 -1
  76. package/lib/cjs/internal/render/webgl/AtmosphereUniforms.js +1 -1
  77. package/lib/cjs/internal/render/webgl/AtmosphereUniforms.js.map +1 -1
  78. package/lib/cjs/internal/render/webgl/AttributeBuffers.d.ts +2 -2
  79. package/lib/cjs/internal/render/webgl/AttributeBuffers.d.ts.map +1 -1
  80. package/lib/cjs/internal/render/webgl/AttributeBuffers.js +2 -2
  81. package/lib/cjs/internal/render/webgl/AttributeBuffers.js.map +1 -1
  82. package/lib/cjs/internal/render/webgl/ClippingProgram.d.ts +1 -1
  83. package/lib/cjs/internal/render/webgl/ClippingProgram.d.ts.map +1 -1
  84. package/lib/cjs/internal/render/webgl/ClippingProgram.js +1 -1
  85. package/lib/cjs/internal/render/webgl/ClippingProgram.js.map +1 -1
  86. package/lib/cjs/internal/render/webgl/RenderCommands.d.ts.map +1 -1
  87. package/lib/cjs/internal/render/webgl/RenderCommands.js +2 -3
  88. package/lib/cjs/internal/render/webgl/RenderCommands.js.map +1 -1
  89. package/lib/cjs/internal/render/webgl/ShaderProgram.d.ts +2 -2
  90. package/lib/cjs/internal/render/webgl/ShaderProgram.d.ts.map +1 -1
  91. package/lib/cjs/internal/render/webgl/ShaderProgram.js +2 -2
  92. package/lib/cjs/internal/render/webgl/ShaderProgram.js.map +1 -1
  93. package/lib/cjs/internal/render/webgl/Target.d.ts +1 -1
  94. package/lib/cjs/internal/render/webgl/Target.d.ts.map +1 -1
  95. package/lib/cjs/internal/render/webgl/Target.js +2 -2
  96. package/lib/cjs/internal/render/webgl/Target.js.map +1 -1
  97. package/lib/cjs/internal/render/webgl/TargetGraphics.d.ts +3 -3
  98. package/lib/cjs/internal/render/webgl/TargetGraphics.d.ts.map +1 -1
  99. package/lib/cjs/internal/render/webgl/TargetGraphics.js +10 -7
  100. package/lib/cjs/internal/render/webgl/TargetGraphics.js.map +1 -1
  101. package/lib/cjs/internal/render/webgl/Technique.d.ts +3 -3
  102. package/lib/cjs/internal/render/webgl/Technique.d.ts.map +1 -1
  103. package/lib/cjs/internal/render/webgl/Technique.js +3 -3
  104. package/lib/cjs/internal/render/webgl/Technique.js.map +1 -1
  105. package/lib/cjs/internal/tile/ClassifierTileTree.js +3 -1
  106. package/lib/cjs/internal/tile/ClassifierTileTree.js.map +1 -1
  107. package/lib/cjs/internal/tile/IModelTile.d.ts +1 -0
  108. package/lib/cjs/internal/tile/IModelTile.d.ts.map +1 -1
  109. package/lib/cjs/internal/tile/IModelTile.js +4 -0
  110. package/lib/cjs/internal/tile/IModelTile.js.map +1 -1
  111. package/lib/cjs/internal/tile/LayerTileTreeReferenceHandler.d.ts.map +1 -1
  112. package/lib/cjs/internal/tile/LayerTileTreeReferenceHandler.js +8 -0
  113. package/lib/cjs/internal/tile/LayerTileTreeReferenceHandler.js.map +1 -1
  114. package/lib/cjs/internal/tile/OrbitGtTileTree.d.ts +4 -1
  115. package/lib/cjs/internal/tile/OrbitGtTileTree.d.ts.map +1 -1
  116. package/lib/cjs/internal/tile/OrbitGtTileTree.js +4 -0
  117. package/lib/cjs/internal/tile/OrbitGtTileTree.js.map +1 -1
  118. package/lib/cjs/internal/tile/PrimaryTileTree.d.ts.map +1 -1
  119. package/lib/cjs/internal/tile/PrimaryTileTree.js +4 -3
  120. package/lib/cjs/internal/tile/PrimaryTileTree.js.map +1 -1
  121. package/lib/cjs/internal/tile/RealityModelTileTree.d.ts +20 -3
  122. package/lib/cjs/internal/tile/RealityModelTileTree.d.ts.map +1 -1
  123. package/lib/cjs/internal/tile/RealityModelTileTree.js +39 -14
  124. package/lib/cjs/internal/tile/RealityModelTileTree.js.map +1 -1
  125. package/lib/cjs/internal/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.d.ts +1 -1
  126. package/lib/cjs/internal/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.d.ts.map +1 -1
  127. package/lib/cjs/internal/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js +1 -1
  128. package/lib/cjs/internal/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js.map +1 -1
  129. package/lib/cjs/internal/tile/map/ImageryProviders/AzureMapsLayerImageryProvider.d.ts +1 -1
  130. package/lib/cjs/internal/tile/map/ImageryProviders/AzureMapsLayerImageryProvider.d.ts.map +1 -1
  131. package/lib/cjs/internal/tile/map/ImageryProviders/AzureMapsLayerImageryProvider.js +1 -1
  132. package/lib/cjs/internal/tile/map/ImageryProviders/AzureMapsLayerImageryProvider.js.map +1 -1
  133. package/lib/cjs/internal/tile/map/ImageryProviders/BingImageryProvider.d.ts +1 -1
  134. package/lib/cjs/internal/tile/map/ImageryProviders/BingImageryProvider.d.ts.map +1 -1
  135. package/lib/cjs/internal/tile/map/ImageryProviders/BingImageryProvider.js +1 -1
  136. package/lib/cjs/internal/tile/map/ImageryProviders/BingImageryProvider.js.map +1 -1
  137. package/lib/cjs/internal/tile/map/ImageryProviders/MapBoxLayerImageryProvider.d.ts +1 -1
  138. package/lib/cjs/internal/tile/map/ImageryProviders/MapBoxLayerImageryProvider.d.ts.map +1 -1
  139. package/lib/cjs/internal/tile/map/ImageryProviders/MapBoxLayerImageryProvider.js +1 -1
  140. package/lib/cjs/internal/tile/map/ImageryProviders/MapBoxLayerImageryProvider.js.map +1 -1
  141. package/lib/cjs/internal/tile/map/ImageryProviders/WmtsMapLayerImageryProvider.d.ts +4 -0
  142. package/lib/cjs/internal/tile/map/ImageryProviders/WmtsMapLayerImageryProvider.d.ts.map +1 -1
  143. package/lib/cjs/internal/tile/map/ImageryProviders/WmtsMapLayerImageryProvider.js +52 -11
  144. package/lib/cjs/internal/tile/map/ImageryProviders/WmtsMapLayerImageryProvider.js.map +1 -1
  145. package/lib/cjs/internal/tile/map/WmtsCapabilities.d.ts +7 -0
  146. package/lib/cjs/internal/tile/map/WmtsCapabilities.d.ts.map +1 -1
  147. package/lib/cjs/internal/tile/map/WmtsCapabilities.js +17 -0
  148. package/lib/cjs/internal/tile/map/WmtsCapabilities.js.map +1 -1
  149. package/lib/cjs/properties/AngleDescription.d.ts +4 -1
  150. package/lib/cjs/properties/AngleDescription.d.ts.map +1 -1
  151. package/lib/cjs/properties/AngleDescription.js +10 -2
  152. package/lib/cjs/properties/AngleDescription.js.map +1 -1
  153. package/lib/cjs/properties/FormattedQuantityDescription.d.ts +11 -1
  154. package/lib/cjs/properties/FormattedQuantityDescription.d.ts.map +1 -1
  155. package/lib/cjs/properties/FormattedQuantityDescription.js +7 -2
  156. package/lib/cjs/properties/FormattedQuantityDescription.js.map +1 -1
  157. package/lib/cjs/properties/LengthDescription.d.ts +12 -3
  158. package/lib/cjs/properties/LengthDescription.d.ts.map +1 -1
  159. package/lib/cjs/properties/LengthDescription.js +30 -6
  160. package/lib/cjs/properties/LengthDescription.js.map +1 -1
  161. package/lib/cjs/quantity-formatting/QuantityFormatter.d.ts +103 -7
  162. package/lib/cjs/quantity-formatting/QuantityFormatter.d.ts.map +1 -1
  163. package/lib/cjs/quantity-formatting/QuantityFormatter.js +212 -23
  164. package/lib/cjs/quantity-formatting/QuantityFormatter.js.map +1 -1
  165. package/lib/cjs/render/Decorations.d.ts +1 -1
  166. package/lib/cjs/render/Decorations.d.ts.map +1 -1
  167. package/lib/cjs/render/Decorations.js +1 -1
  168. package/lib/cjs/render/Decorations.js.map +1 -1
  169. package/lib/cjs/render/GraphicBranch.d.ts +1 -1
  170. package/lib/cjs/render/GraphicBranch.d.ts.map +1 -1
  171. package/lib/cjs/render/GraphicBranch.js +1 -1
  172. package/lib/cjs/render/GraphicBranch.js.map +1 -1
  173. package/lib/cjs/render/RenderGraphic.d.ts +1 -1
  174. package/lib/cjs/render/RenderGraphic.d.ts.map +1 -1
  175. package/lib/cjs/render/RenderGraphic.js.map +1 -1
  176. package/lib/cjs/render/RenderSystem.d.ts +2 -2
  177. package/lib/cjs/render/RenderSystem.d.ts.map +1 -1
  178. package/lib/cjs/render/RenderSystem.js.map +1 -1
  179. package/lib/cjs/render/RenderTarget.d.ts +1 -1
  180. package/lib/cjs/render/RenderTarget.d.ts.map +1 -1
  181. package/lib/cjs/render/RenderTarget.js.map +1 -1
  182. package/lib/cjs/render/ScreenSpaceEffectBuilder.d.ts +1 -1
  183. package/lib/cjs/render/ScreenSpaceEffectBuilder.js.map +1 -1
  184. package/lib/cjs/request/Request.d.ts +2 -2
  185. package/lib/cjs/request/Request.js.map +1 -1
  186. package/lib/cjs/tile/GltfReader.d.ts +1 -0
  187. package/lib/cjs/tile/GltfReader.d.ts.map +1 -1
  188. package/lib/cjs/tile/GltfReader.js +1 -0
  189. package/lib/cjs/tile/GltfReader.js.map +1 -1
  190. package/lib/cjs/tile/RealityTile.d.ts +5 -0
  191. package/lib/cjs/tile/RealityTile.d.ts.map +1 -1
  192. package/lib/cjs/tile/RealityTile.js +5 -0
  193. package/lib/cjs/tile/RealityTile.js.map +1 -1
  194. package/lib/cjs/tile/Tile.d.ts +1 -1
  195. package/lib/cjs/tile/Tile.d.ts.map +1 -1
  196. package/lib/cjs/tile/Tile.js +1 -1
  197. package/lib/cjs/tile/Tile.js.map +1 -1
  198. package/lib/cjs/tile/TileAdmin.d.ts +10 -0
  199. package/lib/cjs/tile/TileAdmin.d.ts.map +1 -1
  200. package/lib/cjs/tile/TileAdmin.js +3 -0
  201. package/lib/cjs/tile/TileAdmin.js.map +1 -1
  202. package/lib/cjs/tile/TileTree.d.ts +1 -1
  203. package/lib/cjs/tile/TileTree.d.ts.map +1 -1
  204. package/lib/cjs/tile/TileTree.js +1 -1
  205. package/lib/cjs/tile/TileTree.js.map +1 -1
  206. package/lib/cjs/tile/TileTreeReference.d.ts +1 -1
  207. package/lib/cjs/tile/TileTreeReference.d.ts.map +1 -1
  208. package/lib/cjs/tile/TileTreeReference.js +1 -1
  209. package/lib/cjs/tile/TileTreeReference.js.map +1 -1
  210. package/lib/cjs/tile/map/CesiumTerrainProvider.js +1 -1
  211. package/lib/cjs/tile/map/CesiumTerrainProvider.js.map +1 -1
  212. package/lib/cjs/tile/map/ImageryTileTree.d.ts +2 -2
  213. package/lib/cjs/tile/map/ImageryTileTree.d.ts.map +1 -1
  214. package/lib/cjs/tile/map/ImageryTileTree.js +2 -2
  215. package/lib/cjs/tile/map/ImageryTileTree.js.map +1 -1
  216. package/lib/cjs/tile/map/MapCartoRectangle.d.ts +10 -0
  217. package/lib/cjs/tile/map/MapCartoRectangle.d.ts.map +1 -1
  218. package/lib/cjs/tile/map/MapCartoRectangle.js +12 -0
  219. package/lib/cjs/tile/map/MapCartoRectangle.js.map +1 -1
  220. package/lib/cjs/tile/map/MapLayerImageryProvider.d.ts +3 -3
  221. package/lib/cjs/tile/map/MapLayerImageryProvider.d.ts.map +1 -1
  222. package/lib/cjs/tile/map/MapLayerImageryProvider.js +9 -5
  223. package/lib/cjs/tile/map/MapLayerImageryProvider.js.map +1 -1
  224. package/lib/cjs/tile/map/MapTileTree.d.ts +1 -1
  225. package/lib/cjs/tile/map/MapTileTree.d.ts.map +1 -1
  226. package/lib/cjs/tile/map/MapTileTree.js +1 -1
  227. package/lib/cjs/tile/map/MapTileTree.js.map +1 -1
  228. package/lib/cjs/tile/map/QuadId.d.ts +15 -0
  229. package/lib/cjs/tile/map/QuadId.d.ts.map +1 -1
  230. package/lib/cjs/tile/map/QuadId.js +12 -0
  231. package/lib/cjs/tile/map/QuadId.js.map +1 -1
  232. package/lib/cjs/tile/map/TerrainMeshProvider.d.ts +1 -1
  233. package/lib/cjs/tile/map/TerrainMeshProvider.d.ts.map +1 -1
  234. package/lib/cjs/tile/map/TerrainMeshProvider.js +1 -1
  235. package/lib/cjs/tile/map/TerrainMeshProvider.js.map +1 -1
  236. package/lib/cjs/tools/AccuDrawViewportUI.d.ts +7 -0
  237. package/lib/cjs/tools/AccuDrawViewportUI.d.ts.map +1 -1
  238. package/lib/cjs/tools/AccuDrawViewportUI.js +14 -0
  239. package/lib/cjs/tools/AccuDrawViewportUI.js.map +1 -1
  240. package/lib/cjs/tools/ElementSetTool.d.ts +9 -1
  241. package/lib/cjs/tools/ElementSetTool.d.ts.map +1 -1
  242. package/lib/cjs/tools/ElementSetTool.js +128 -7
  243. package/lib/cjs/tools/ElementSetTool.js.map +1 -1
  244. package/lib/cjs/tools/MeasureTool.d.ts +9 -0
  245. package/lib/cjs/tools/MeasureTool.d.ts.map +1 -1
  246. package/lib/cjs/tools/MeasureTool.js +53 -22
  247. package/lib/cjs/tools/MeasureTool.js.map +1 -1
  248. package/lib/cjs/tools/PrimitiveTool.d.ts +1 -1
  249. package/lib/cjs/tools/PrimitiveTool.d.ts.map +1 -1
  250. package/lib/cjs/tools/PrimitiveTool.js +2 -2
  251. package/lib/cjs/tools/PrimitiveTool.js.map +1 -1
  252. package/lib/cjs/tools/SelectTool.d.ts +2 -2
  253. package/lib/cjs/tools/SelectTool.d.ts.map +1 -1
  254. package/lib/cjs/tools/SelectTool.js +26 -97
  255. package/lib/cjs/tools/SelectTool.js.map +1 -1
  256. package/lib/cjs/tools/Tool.d.ts +10 -1
  257. package/lib/cjs/tools/Tool.d.ts.map +1 -1
  258. package/lib/cjs/tools/Tool.js +27 -4
  259. package/lib/cjs/tools/Tool.js.map +1 -1
  260. package/lib/cjs/tools/ToolAdmin.d.ts +1 -0
  261. package/lib/cjs/tools/ToolAdmin.d.ts.map +1 -1
  262. package/lib/cjs/tools/ToolAdmin.js +8 -2
  263. package/lib/cjs/tools/ToolAdmin.js.map +1 -1
  264. package/lib/cjs/tools/ToolSettings.d.ts +5 -0
  265. package/lib/cjs/tools/ToolSettings.d.ts.map +1 -1
  266. package/lib/cjs/tools/ToolSettings.js +5 -0
  267. package/lib/cjs/tools/ToolSettings.js.map +1 -1
  268. package/lib/cjs/tools/ViewTool.d.ts +1 -2
  269. package/lib/cjs/tools/ViewTool.d.ts.map +1 -1
  270. package/lib/cjs/tools/ViewTool.js +10 -47
  271. package/lib/cjs/tools/ViewTool.js.map +1 -1
  272. package/lib/esm/AccuDraw.d.ts +2 -0
  273. package/lib/esm/AccuDraw.d.ts.map +1 -1
  274. package/lib/esm/AccuDraw.js +2 -0
  275. package/lib/esm/AccuDraw.js.map +1 -1
  276. package/lib/esm/AccuSnap.js +2 -2
  277. package/lib/esm/AccuSnap.js.map +1 -1
  278. package/lib/esm/GraphicalEditingScope.d.ts +1 -1
  279. package/lib/esm/GraphicalEditingScope.d.ts.map +1 -1
  280. package/lib/esm/GraphicalEditingScope.js +1 -1
  281. package/lib/esm/GraphicalEditingScope.js.map +1 -1
  282. package/lib/esm/HitDetail.d.ts +1 -1
  283. package/lib/esm/HitDetail.d.ts.map +1 -1
  284. package/lib/esm/HitDetail.js.map +1 -1
  285. package/lib/esm/IModelApp.d.ts +19 -4
  286. package/lib/esm/IModelApp.d.ts.map +1 -1
  287. package/lib/esm/IModelApp.js +22 -3
  288. package/lib/esm/IModelApp.js.map +1 -1
  289. package/lib/esm/IModelConnection.d.ts +6 -6
  290. package/lib/esm/IModelConnection.js +6 -6
  291. package/lib/esm/IModelConnection.js.map +1 -1
  292. package/lib/esm/IpcApp.d.ts +2 -1
  293. package/lib/esm/IpcApp.d.ts.map +1 -1
  294. package/lib/esm/IpcApp.js +4 -2
  295. package/lib/esm/IpcApp.js.map +1 -1
  296. package/lib/esm/RealityDataSource.d.ts +65 -3
  297. package/lib/esm/RealityDataSource.d.ts.map +1 -1
  298. package/lib/esm/RealityDataSource.js +77 -3
  299. package/lib/esm/RealityDataSource.js.map +1 -1
  300. package/lib/esm/RealityDataSourceTilesetUrlImpl.js +1 -1
  301. package/lib/esm/RealityDataSourceTilesetUrlImpl.js.map +1 -1
  302. package/lib/esm/SelectionSet.d.ts +7 -7
  303. package/lib/esm/SelectionSet.js +3 -3
  304. package/lib/esm/SelectionSet.js.map +1 -1
  305. package/lib/esm/SheetViewState.d.ts +2 -0
  306. package/lib/esm/SheetViewState.d.ts.map +1 -1
  307. package/lib/esm/SheetViewState.js +25 -3
  308. package/lib/esm/SheetViewState.js.map +1 -1
  309. package/lib/esm/ViewContext.d.ts +4 -1
  310. package/lib/esm/ViewContext.d.ts.map +1 -1
  311. package/lib/esm/ViewContext.js +10 -5
  312. package/lib/esm/ViewContext.js.map +1 -1
  313. package/lib/esm/ViewManager.js +2 -2
  314. package/lib/esm/ViewManager.js.map +1 -1
  315. package/lib/esm/ViewState.d.ts +1 -1
  316. package/lib/esm/ViewState.js +1 -1
  317. package/lib/esm/ViewState.js.map +1 -1
  318. package/lib/esm/Viewport.d.ts +7 -5
  319. package/lib/esm/Viewport.d.ts.map +1 -1
  320. package/lib/esm/Viewport.js +9 -5
  321. package/lib/esm/Viewport.js.map +1 -1
  322. package/lib/esm/core-frontend.d.ts +1 -1
  323. package/lib/esm/core-frontend.d.ts.map +1 -1
  324. package/lib/esm/core-frontend.js.map +1 -1
  325. package/lib/esm/extension/ExtensionRuntime.js +15 -2
  326. package/lib/esm/extension/ExtensionRuntime.js.map +1 -1
  327. package/lib/esm/extension/providers/ExtensionLoadScript.js +1 -1
  328. package/lib/esm/extension/providers/ExtensionLoadScript.js.map +1 -1
  329. package/lib/esm/internal/GoogleMapsDecorator.d.ts +53 -0
  330. package/lib/esm/internal/GoogleMapsDecorator.d.ts.map +1 -0
  331. package/lib/esm/internal/GoogleMapsDecorator.js +126 -0
  332. package/lib/esm/internal/GoogleMapsDecorator.js.map +1 -0
  333. package/lib/esm/internal/RealityDataSourceGoogle3dTilesImpl.d.ts +83 -0
  334. package/lib/esm/internal/RealityDataSourceGoogle3dTilesImpl.d.ts.map +1 -0
  335. package/lib/esm/internal/RealityDataSourceGoogle3dTilesImpl.js +197 -0
  336. package/lib/esm/internal/RealityDataSourceGoogle3dTilesImpl.js.map +1 -0
  337. package/lib/esm/internal/cross-package.d.ts +1 -0
  338. package/lib/esm/internal/cross-package.d.ts.map +1 -1
  339. package/lib/esm/internal/cross-package.js +1 -0
  340. package/lib/esm/internal/cross-package.js.map +1 -1
  341. package/lib/esm/internal/render/MockRender.d.ts +1 -1
  342. package/lib/esm/internal/render/MockRender.d.ts.map +1 -1
  343. package/lib/esm/internal/render/MockRender.js +1 -1
  344. package/lib/esm/internal/render/MockRender.js.map +1 -1
  345. package/lib/esm/internal/render/webgl/AtmosphereUniforms.d.ts +1 -1
  346. package/lib/esm/internal/render/webgl/AtmosphereUniforms.d.ts.map +1 -1
  347. package/lib/esm/internal/render/webgl/AtmosphereUniforms.js +1 -1
  348. package/lib/esm/internal/render/webgl/AtmosphereUniforms.js.map +1 -1
  349. package/lib/esm/internal/render/webgl/AttributeBuffers.d.ts +2 -2
  350. package/lib/esm/internal/render/webgl/AttributeBuffers.d.ts.map +1 -1
  351. package/lib/esm/internal/render/webgl/AttributeBuffers.js +2 -2
  352. package/lib/esm/internal/render/webgl/AttributeBuffers.js.map +1 -1
  353. package/lib/esm/internal/render/webgl/ClippingProgram.d.ts +1 -1
  354. package/lib/esm/internal/render/webgl/ClippingProgram.d.ts.map +1 -1
  355. package/lib/esm/internal/render/webgl/ClippingProgram.js +1 -1
  356. package/lib/esm/internal/render/webgl/ClippingProgram.js.map +1 -1
  357. package/lib/esm/internal/render/webgl/RenderCommands.d.ts.map +1 -1
  358. package/lib/esm/internal/render/webgl/RenderCommands.js +2 -3
  359. package/lib/esm/internal/render/webgl/RenderCommands.js.map +1 -1
  360. package/lib/esm/internal/render/webgl/ShaderProgram.d.ts +2 -2
  361. package/lib/esm/internal/render/webgl/ShaderProgram.d.ts.map +1 -1
  362. package/lib/esm/internal/render/webgl/ShaderProgram.js +2 -2
  363. package/lib/esm/internal/render/webgl/ShaderProgram.js.map +1 -1
  364. package/lib/esm/internal/render/webgl/Target.d.ts +1 -1
  365. package/lib/esm/internal/render/webgl/Target.d.ts.map +1 -1
  366. package/lib/esm/internal/render/webgl/Target.js +2 -2
  367. package/lib/esm/internal/render/webgl/Target.js.map +1 -1
  368. package/lib/esm/internal/render/webgl/TargetGraphics.d.ts +3 -3
  369. package/lib/esm/internal/render/webgl/TargetGraphics.d.ts.map +1 -1
  370. package/lib/esm/internal/render/webgl/TargetGraphics.js +10 -7
  371. package/lib/esm/internal/render/webgl/TargetGraphics.js.map +1 -1
  372. package/lib/esm/internal/render/webgl/Technique.d.ts +3 -3
  373. package/lib/esm/internal/render/webgl/Technique.d.ts.map +1 -1
  374. package/lib/esm/internal/render/webgl/Technique.js +3 -3
  375. package/lib/esm/internal/render/webgl/Technique.js.map +1 -1
  376. package/lib/esm/internal/tile/ClassifierTileTree.js +3 -1
  377. package/lib/esm/internal/tile/ClassifierTileTree.js.map +1 -1
  378. package/lib/esm/internal/tile/IModelTile.d.ts +1 -0
  379. package/lib/esm/internal/tile/IModelTile.d.ts.map +1 -1
  380. package/lib/esm/internal/tile/IModelTile.js +4 -0
  381. package/lib/esm/internal/tile/IModelTile.js.map +1 -1
  382. package/lib/esm/internal/tile/LayerTileTreeReferenceHandler.d.ts.map +1 -1
  383. package/lib/esm/internal/tile/LayerTileTreeReferenceHandler.js +8 -0
  384. package/lib/esm/internal/tile/LayerTileTreeReferenceHandler.js.map +1 -1
  385. package/lib/esm/internal/tile/OrbitGtTileTree.d.ts +4 -1
  386. package/lib/esm/internal/tile/OrbitGtTileTree.d.ts.map +1 -1
  387. package/lib/esm/internal/tile/OrbitGtTileTree.js +5 -1
  388. package/lib/esm/internal/tile/OrbitGtTileTree.js.map +1 -1
  389. package/lib/esm/internal/tile/PrimaryTileTree.d.ts.map +1 -1
  390. package/lib/esm/internal/tile/PrimaryTileTree.js +4 -3
  391. package/lib/esm/internal/tile/PrimaryTileTree.js.map +1 -1
  392. package/lib/esm/internal/tile/RealityModelTileTree.d.ts +20 -3
  393. package/lib/esm/internal/tile/RealityModelTileTree.d.ts.map +1 -1
  394. package/lib/esm/internal/tile/RealityModelTileTree.js +38 -14
  395. package/lib/esm/internal/tile/RealityModelTileTree.js.map +1 -1
  396. package/lib/esm/internal/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.d.ts +1 -1
  397. package/lib/esm/internal/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.d.ts.map +1 -1
  398. package/lib/esm/internal/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js +1 -1
  399. package/lib/esm/internal/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js.map +1 -1
  400. package/lib/esm/internal/tile/map/ImageryProviders/AzureMapsLayerImageryProvider.d.ts +1 -1
  401. package/lib/esm/internal/tile/map/ImageryProviders/AzureMapsLayerImageryProvider.d.ts.map +1 -1
  402. package/lib/esm/internal/tile/map/ImageryProviders/AzureMapsLayerImageryProvider.js +1 -1
  403. package/lib/esm/internal/tile/map/ImageryProviders/AzureMapsLayerImageryProvider.js.map +1 -1
  404. package/lib/esm/internal/tile/map/ImageryProviders/BingImageryProvider.d.ts +1 -1
  405. package/lib/esm/internal/tile/map/ImageryProviders/BingImageryProvider.d.ts.map +1 -1
  406. package/lib/esm/internal/tile/map/ImageryProviders/BingImageryProvider.js +1 -1
  407. package/lib/esm/internal/tile/map/ImageryProviders/BingImageryProvider.js.map +1 -1
  408. package/lib/esm/internal/tile/map/ImageryProviders/MapBoxLayerImageryProvider.d.ts +1 -1
  409. package/lib/esm/internal/tile/map/ImageryProviders/MapBoxLayerImageryProvider.d.ts.map +1 -1
  410. package/lib/esm/internal/tile/map/ImageryProviders/MapBoxLayerImageryProvider.js +1 -1
  411. package/lib/esm/internal/tile/map/ImageryProviders/MapBoxLayerImageryProvider.js.map +1 -1
  412. package/lib/esm/internal/tile/map/ImageryProviders/WmtsMapLayerImageryProvider.d.ts +4 -0
  413. package/lib/esm/internal/tile/map/ImageryProviders/WmtsMapLayerImageryProvider.d.ts.map +1 -1
  414. package/lib/esm/internal/tile/map/ImageryProviders/WmtsMapLayerImageryProvider.js +52 -11
  415. package/lib/esm/internal/tile/map/ImageryProviders/WmtsMapLayerImageryProvider.js.map +1 -1
  416. package/lib/esm/internal/tile/map/WmtsCapabilities.d.ts +7 -0
  417. package/lib/esm/internal/tile/map/WmtsCapabilities.d.ts.map +1 -1
  418. package/lib/esm/internal/tile/map/WmtsCapabilities.js +17 -0
  419. package/lib/esm/internal/tile/map/WmtsCapabilities.js.map +1 -1
  420. package/lib/esm/properties/AngleDescription.d.ts +4 -1
  421. package/lib/esm/properties/AngleDescription.d.ts.map +1 -1
  422. package/lib/esm/properties/AngleDescription.js +10 -2
  423. package/lib/esm/properties/AngleDescription.js.map +1 -1
  424. package/lib/esm/properties/FormattedQuantityDescription.d.ts +11 -1
  425. package/lib/esm/properties/FormattedQuantityDescription.d.ts.map +1 -1
  426. package/lib/esm/properties/FormattedQuantityDescription.js +7 -2
  427. package/lib/esm/properties/FormattedQuantityDescription.js.map +1 -1
  428. package/lib/esm/properties/LengthDescription.d.ts +12 -3
  429. package/lib/esm/properties/LengthDescription.d.ts.map +1 -1
  430. package/lib/esm/properties/LengthDescription.js +30 -6
  431. package/lib/esm/properties/LengthDescription.js.map +1 -1
  432. package/lib/esm/quantity-formatting/QuantityFormatter.d.ts +103 -7
  433. package/lib/esm/quantity-formatting/QuantityFormatter.d.ts.map +1 -1
  434. package/lib/esm/quantity-formatting/QuantityFormatter.js +210 -23
  435. package/lib/esm/quantity-formatting/QuantityFormatter.js.map +1 -1
  436. package/lib/esm/render/Decorations.d.ts +1 -1
  437. package/lib/esm/render/Decorations.d.ts.map +1 -1
  438. package/lib/esm/render/Decorations.js +1 -1
  439. package/lib/esm/render/Decorations.js.map +1 -1
  440. package/lib/esm/render/GraphicBranch.d.ts +1 -1
  441. package/lib/esm/render/GraphicBranch.d.ts.map +1 -1
  442. package/lib/esm/render/GraphicBranch.js +1 -1
  443. package/lib/esm/render/GraphicBranch.js.map +1 -1
  444. package/lib/esm/render/RenderGraphic.d.ts +1 -1
  445. package/lib/esm/render/RenderGraphic.d.ts.map +1 -1
  446. package/lib/esm/render/RenderGraphic.js.map +1 -1
  447. package/lib/esm/render/RenderSystem.d.ts +2 -2
  448. package/lib/esm/render/RenderSystem.d.ts.map +1 -1
  449. package/lib/esm/render/RenderSystem.js.map +1 -1
  450. package/lib/esm/render/RenderTarget.d.ts +1 -1
  451. package/lib/esm/render/RenderTarget.d.ts.map +1 -1
  452. package/lib/esm/render/RenderTarget.js.map +1 -1
  453. package/lib/esm/render/ScreenSpaceEffectBuilder.d.ts +1 -1
  454. package/lib/esm/render/ScreenSpaceEffectBuilder.js.map +1 -1
  455. package/lib/esm/request/Request.d.ts +2 -2
  456. package/lib/esm/request/Request.js.map +1 -1
  457. package/lib/esm/tile/GltfReader.d.ts +1 -0
  458. package/lib/esm/tile/GltfReader.d.ts.map +1 -1
  459. package/lib/esm/tile/GltfReader.js +1 -0
  460. package/lib/esm/tile/GltfReader.js.map +1 -1
  461. package/lib/esm/tile/RealityTile.d.ts +5 -0
  462. package/lib/esm/tile/RealityTile.d.ts.map +1 -1
  463. package/lib/esm/tile/RealityTile.js +5 -0
  464. package/lib/esm/tile/RealityTile.js.map +1 -1
  465. package/lib/esm/tile/Tile.d.ts +1 -1
  466. package/lib/esm/tile/Tile.d.ts.map +1 -1
  467. package/lib/esm/tile/Tile.js +1 -1
  468. package/lib/esm/tile/Tile.js.map +1 -1
  469. package/lib/esm/tile/TileAdmin.d.ts +10 -0
  470. package/lib/esm/tile/TileAdmin.d.ts.map +1 -1
  471. package/lib/esm/tile/TileAdmin.js +3 -0
  472. package/lib/esm/tile/TileAdmin.js.map +1 -1
  473. package/lib/esm/tile/TileTree.d.ts +1 -1
  474. package/lib/esm/tile/TileTree.d.ts.map +1 -1
  475. package/lib/esm/tile/TileTree.js +1 -1
  476. package/lib/esm/tile/TileTree.js.map +1 -1
  477. package/lib/esm/tile/TileTreeReference.d.ts +1 -1
  478. package/lib/esm/tile/TileTreeReference.d.ts.map +1 -1
  479. package/lib/esm/tile/TileTreeReference.js +1 -1
  480. package/lib/esm/tile/TileTreeReference.js.map +1 -1
  481. package/lib/esm/tile/map/CesiumTerrainProvider.js +1 -1
  482. package/lib/esm/tile/map/CesiumTerrainProvider.js.map +1 -1
  483. package/lib/esm/tile/map/ImageryTileTree.d.ts +2 -2
  484. package/lib/esm/tile/map/ImageryTileTree.d.ts.map +1 -1
  485. package/lib/esm/tile/map/ImageryTileTree.js +2 -2
  486. package/lib/esm/tile/map/ImageryTileTree.js.map +1 -1
  487. package/lib/esm/tile/map/MapCartoRectangle.d.ts +10 -0
  488. package/lib/esm/tile/map/MapCartoRectangle.d.ts.map +1 -1
  489. package/lib/esm/tile/map/MapCartoRectangle.js +12 -0
  490. package/lib/esm/tile/map/MapCartoRectangle.js.map +1 -1
  491. package/lib/esm/tile/map/MapLayerImageryProvider.d.ts +3 -3
  492. package/lib/esm/tile/map/MapLayerImageryProvider.d.ts.map +1 -1
  493. package/lib/esm/tile/map/MapLayerImageryProvider.js +9 -5
  494. package/lib/esm/tile/map/MapLayerImageryProvider.js.map +1 -1
  495. package/lib/esm/tile/map/MapTileTree.d.ts +1 -1
  496. package/lib/esm/tile/map/MapTileTree.d.ts.map +1 -1
  497. package/lib/esm/tile/map/MapTileTree.js +1 -1
  498. package/lib/esm/tile/map/MapTileTree.js.map +1 -1
  499. package/lib/esm/tile/map/QuadId.d.ts +15 -0
  500. package/lib/esm/tile/map/QuadId.d.ts.map +1 -1
  501. package/lib/esm/tile/map/QuadId.js +12 -0
  502. package/lib/esm/tile/map/QuadId.js.map +1 -1
  503. package/lib/esm/tile/map/TerrainMeshProvider.d.ts +1 -1
  504. package/lib/esm/tile/map/TerrainMeshProvider.d.ts.map +1 -1
  505. package/lib/esm/tile/map/TerrainMeshProvider.js +1 -1
  506. package/lib/esm/tile/map/TerrainMeshProvider.js.map +1 -1
  507. package/lib/esm/tools/AccuDrawViewportUI.d.ts +7 -0
  508. package/lib/esm/tools/AccuDrawViewportUI.d.ts.map +1 -1
  509. package/lib/esm/tools/AccuDrawViewportUI.js +14 -0
  510. package/lib/esm/tools/AccuDrawViewportUI.js.map +1 -1
  511. package/lib/esm/tools/ElementSetTool.d.ts +9 -1
  512. package/lib/esm/tools/ElementSetTool.d.ts.map +1 -1
  513. package/lib/esm/tools/ElementSetTool.js +130 -9
  514. package/lib/esm/tools/ElementSetTool.js.map +1 -1
  515. package/lib/esm/tools/MeasureTool.d.ts +9 -0
  516. package/lib/esm/tools/MeasureTool.d.ts.map +1 -1
  517. package/lib/esm/tools/MeasureTool.js +53 -22
  518. package/lib/esm/tools/MeasureTool.js.map +1 -1
  519. package/lib/esm/tools/PrimitiveTool.d.ts +1 -1
  520. package/lib/esm/tools/PrimitiveTool.d.ts.map +1 -1
  521. package/lib/esm/tools/PrimitiveTool.js +2 -2
  522. package/lib/esm/tools/PrimitiveTool.js.map +1 -1
  523. package/lib/esm/tools/SelectTool.d.ts +2 -2
  524. package/lib/esm/tools/SelectTool.d.ts.map +1 -1
  525. package/lib/esm/tools/SelectTool.js +26 -97
  526. package/lib/esm/tools/SelectTool.js.map +1 -1
  527. package/lib/esm/tools/Tool.d.ts +10 -1
  528. package/lib/esm/tools/Tool.d.ts.map +1 -1
  529. package/lib/esm/tools/Tool.js +27 -4
  530. package/lib/esm/tools/Tool.js.map +1 -1
  531. package/lib/esm/tools/ToolAdmin.d.ts +1 -0
  532. package/lib/esm/tools/ToolAdmin.d.ts.map +1 -1
  533. package/lib/esm/tools/ToolAdmin.js +8 -2
  534. package/lib/esm/tools/ToolAdmin.js.map +1 -1
  535. package/lib/esm/tools/ToolSettings.d.ts +5 -0
  536. package/lib/esm/tools/ToolSettings.d.ts.map +1 -1
  537. package/lib/esm/tools/ToolSettings.js +5 -0
  538. package/lib/esm/tools/ToolSettings.js.map +1 -1
  539. package/lib/esm/tools/ViewTool.d.ts +1 -2
  540. package/lib/esm/tools/ViewTool.d.ts.map +1 -1
  541. package/lib/esm/tools/ViewTool.js +10 -47
  542. package/lib/esm/tools/ViewTool.js.map +1 -1
  543. package/lib/public/images/google_on_non_white.png +0 -0
  544. package/lib/public/images/google_on_non_white_hdpi.png +0 -0
  545. package/lib/public/images/google_on_white.png +0 -0
  546. package/lib/public/images/google_on_white_hdpi.png +0 -0
  547. package/lib/public/scripts/parse-imdl-worker.js +1 -1
  548. package/lib/workers/webpack/parse-imdl-worker.js +1 -1
  549. package/package.json +22 -20
@@ -1 +1 @@
1
- {"version":3,"file":"IModelTile.d.ts","sourceRoot":"","sources":["../../../../src/internal/tile/IModelTile.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,EAAwB,WAAW,EAAc,MAAM,qBAAqB,CAAC;AAEpF,OAAO,EACL,QAAQ,EAAyH,SAAS,EAC3I,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EACY,cAAc,EAAE,IAAI,EAAE,iBAAiB,EAAE,WAAW,EAAE,YAAY,EAAkB,UAAU,EAAE,WAAW,EAC5H,kBAAkB,EACnB,MAAM,uBAAuB,CAAC;AAE/B;GACG;AACH,MAAM,WAAW,gBAAiB,SAAQ,UAAU;IAClD,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,GAAG,SAAS,GAAG,gBAAgB,CAS3G;AAED;;GAEG;AACH,oBAAY,YAAY;IACtB,EAAE,IAAA;IACF,GAAG,IAAA;CACJ;AAED,MAAM,WAAW,iBAAkB,SAAQ,WAAW;IACpD,0FAA0F;IAC1F,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,qEAAqE;IACrE,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED;GACG;AACH,qBAAa,UAAW,SAAQ,IAAI;IAClC,OAAO,CAAC,eAAe,CAAC,CAAS;IACjC,OAAO,CAAC,kBAAkB,CAAC,CAAS;IACpC;;OAEG;IACI,cAAc,CAAC,EAAE,kBAAkB,CAAC;gBAExB,MAAM,EAAE,gBAAgB,EAAE,IAAI,EAAE,cAAc;IAYjE,IAAW,UAAU,IAAI,cAAc,CAAwC;IAC/E,IAAW,cAAc,IAAI,UAAU,EAAE,GAAG,SAAS,CAAsD;IAC3G,IAAW,iBAAiB,IAAI,MAAM,CAAyC;IAE/E,IAAW,cAAc,IAAI,MAAM,GAAG,SAAS,CAAiC;IAChF,IAAW,iBAAiB,YAAgD;IAC5E,IAAoB,WAAW,IAAI,MAAM,CAExC;IAED,IAAW,OAAO,IAAI,kBAAkB,CAEvC;IAEY,cAAc,IAAI,OAAO,CAAC,WAAW,CAAC,QAAQ,CAAC;IAI/C,WAAW,CAAC,IAAI,EAAE,WAAW,CAAC,YAAY,EAAE,MAAM,EAAE,YAAY,EAAE,UAAU,CAAC,EAAE,MAAM,OAAO,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAuCtH,UAAU,CAAC,OAAO,EAAE,iBAAiB,GAAG,IAAI;IAoB5D,SAAS,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,IAAI,EAAE,KAAK,IAAI,EAAE,MAAM,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,GAAG,IAAI;IAkBlG,cAAuB,iBAAiB,IAAI,QAAQ,CAEnD;cAEkB,eAAe,CAAC,OAAO,EAAE,cAAc,EAAE,IAAI,EAAE,iBAAiB,GAAG,IAAI;IAgBnF,aAAa,CAAC,SAAS,EAAE,WAAW,GAAG,IAAI;IAc3C,WAAW,CAAC,QAAQ,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,GAAG,YAAY;CAkI3F"}
1
+ {"version":3,"file":"IModelTile.d.ts","sourceRoot":"","sources":["../../../../src/internal/tile/IModelTile.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,EAAwB,WAAW,EAAc,MAAM,qBAAqB,CAAC;AAEpF,OAAO,EACL,QAAQ,EAAyH,SAAS,EAC3I,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EACY,cAAc,EAAE,IAAI,EAAE,iBAAiB,EAAE,WAAW,EAAE,YAAY,EAAkB,UAAU,EAAE,WAAW,EAC5H,kBAAkB,EACnB,MAAM,uBAAuB,CAAC;AAE/B;GACG;AACH,MAAM,WAAW,gBAAiB,SAAQ,UAAU;IAClD,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,GAAG,SAAS,GAAG,gBAAgB,CAS3G;AAED;;GAEG;AACH,oBAAY,YAAY;IACtB,EAAE,IAAA;IACF,GAAG,IAAA;CACJ;AAED,MAAM,WAAW,iBAAkB,SAAQ,WAAW;IACpD,0FAA0F;IAC1F,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,qEAAqE;IACrE,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED;GACG;AACH,qBAAa,UAAW,SAAQ,IAAI;IAClC,OAAO,CAAC,eAAe,CAAC,CAAS;IACjC,OAAO,CAAC,kBAAkB,CAAC,CAAS;IACpC;;OAEG;IACI,cAAc,CAAC,EAAE,kBAAkB,CAAC;gBAExB,MAAM,EAAE,gBAAgB,EAAE,IAAI,EAAE,cAAc;IAYjE,IAAW,UAAU,IAAI,cAAc,CAAwC;IAC/E,IAAW,cAAc,IAAI,UAAU,EAAE,GAAG,SAAS,CAAsD;IAC3G,IAAW,iBAAiB,IAAI,MAAM,CAAyC;IAE/E,IAAW,cAAc,IAAI,MAAM,GAAG,SAAS,CAAiC;IAChF,IAAW,iBAAiB,YAAgD;IAC5E,IAAoB,WAAW,IAAI,MAAM,CAExC;IAED,IAAW,OAAO,IAAI,kBAAkB,CAEvC;IAEY,cAAc,IAAI,OAAO,CAAC,WAAW,CAAC,QAAQ,CAAC;IAI/C,WAAW,CAAC,IAAI,EAAE,WAAW,CAAC,YAAY,EAAE,MAAM,EAAE,YAAY,EAAE,UAAU,CAAC,EAAE,MAAM,OAAO,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAuCtH,UAAU,CAAC,OAAO,EAAE,iBAAiB,GAAG,IAAI;IAoB5D,SAAS,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,IAAI,EAAE,KAAK,IAAI,EAAE,MAAM,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,GAAG,IAAI;IAkBlG,cAAuB,iBAAiB,IAAI,QAAQ,CAEnD;cAEkB,eAAe,CAAC,OAAO,EAAE,cAAc,EAAE,IAAI,EAAE,iBAAiB,GAAG,IAAI;IAgBnF,aAAa,CAAC,SAAS,EAAE,WAAW,GAAG,IAAI;IAc3C,WAAW,CAAC,QAAQ,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,GAAG,YAAY;IAmI1E,WAAW,IAAI,IAAI;CAIpC"}
@@ -274,6 +274,10 @@ class IModelTile extends internal_1.Tile {
274
274
  args.insertMissing(this);
275
275
  return this.isParentDisplayable ? SelectParent.Yes : SelectParent.No;
276
276
  }
277
+ clearLayers() {
278
+ super.clearLayers();
279
+ this.disposeChildren();
280
+ }
277
281
  }
278
282
  exports.IModelTile = IModelTile;
279
283
  //# sourceMappingURL=IModelTile.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"IModelTile.js","sourceRoot":"","sources":["../../../../src/internal/tile/IModelTile.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Tiles\n */\n\nimport { assert, BentleyError, BeTimePoint, ByteStream } from \"@itwin/core-bentley\";\nimport { Range3d, Transform } from \"@itwin/core-geometry\";\nimport {\n ColorDef, computeChildTileProps, computeChildTileRanges, computeTileChordTolerance, ElementAlignedBox3d, LinePixels, TileFormat, TileProps,\n} from \"@itwin/core-common\";\nimport { IModelApp } from \"../../IModelApp\";\nimport { GraphicBuilder } from \"../../render/GraphicBuilder\";\nimport { RenderSystem } from \"../../render/RenderSystem\";\nimport {\n addRangeGraphic, IModelTileTree, Tile, TileBoundingBoxes, TileContent, TileDrawArgs, TileLoadStatus, TileParams, TileRequest,\n TileRequestChannel, TileTreeLoadStatus, TileVisibility,\n} from \"./../../tile/internal\";\n\n/** Parameters used to construct an [[IModelTile]].\n */\nexport interface IModelTileParams extends TileParams {\n sizeMultiplier?: number;\n}\n\nexport function iModelTileParamsFromJSON(props: TileProps, parent: IModelTile | undefined): IModelTileParams {\n const { contentId, maximumSize, isLeaf, sizeMultiplier } = props;\n const range = Range3d.fromJSON(props.range);\n\n let contentRange;\n if (undefined !== props.contentRange)\n contentRange = Range3d.fromJSON<ElementAlignedBox3d>(props.contentRange);\n\n return { contentId, range, maximumSize, isLeaf, parent, contentRange, sizeMultiplier };\n}\n\n/**\n * Indicates whether a parent tile should be drawn in place of a child tile.\n */\nexport enum SelectParent {\n No,\n Yes,\n}\n\nexport interface IModelTileContent extends TileContent {\n /** If this tile was produced by refinement, the multiplier applied to its screen size. */\n sizeMultiplier?: number;\n /** A bitfield describing empty sub-volumes of this tile's volume. */\n emptySubRangeMask?: number;\n}\n\n/** A tile belonging to an [[IModelTileTree].\n */\nexport class IModelTile extends Tile {\n private _sizeMultiplier?: number;\n private _emptySubRangeMask?: number;\n /** If an initial attempt to obtain this tile's content (e.g., from cloud storage cache) failed,\n * the next channel to try.\n */\n public requestChannel?: TileRequestChannel;\n\n public constructor(params: IModelTileParams, tree: IModelTileTree) {\n super(params, tree);\n this._sizeMultiplier = params.sizeMultiplier;\n\n if (!this.isLeaf && this.tree.is3d && !this.isReady) { // ###TODO: Want to know specifically if tree is *spatial*.\n // Do not sub-divide such that chord tolerance would be below specified minimum, if minimum defined.\n const minTolerance = IModelApp.tileAdmin.minimumSpatialTolerance;\n if (minTolerance > 0 && computeTileChordTolerance(this, this.tree.is3d, this.iModelTree.tileScreenSize) <= minTolerance)\n this.setLeaf();\n }\n }\n\n public get iModelTree(): IModelTileTree { return this.tree as IModelTileTree; }\n public get iModelChildren(): IModelTile[] | undefined { return this.children as IModelTile[] | undefined; }\n public get emptySubRangeMask(): number { return this._emptySubRangeMask ?? 0; }\n\n public get sizeMultiplier(): number | undefined { return this._sizeMultiplier; }\n public get hasSizeMultiplier() { return undefined !== this.sizeMultiplier; }\n public override get maximumSize(): number {\n return super.maximumSize * (this.sizeMultiplier ?? 1.0);\n }\n\n public get channel(): TileRequestChannel {\n return IModelApp.tileAdmin.channels.getIModelTileChannel(this);\n }\n\n public async requestContent(): Promise<TileRequest.Response> {\n return IModelApp.tileAdmin.generateTileContent(this);\n }\n\n public async readContent(data: TileRequest.ResponseData, system: RenderSystem, isCanceled?: () => boolean): Promise<IModelTileContent> {\n if (undefined === isCanceled)\n isCanceled = () => !this.isLoading;\n\n assert(data instanceof Uint8Array);\n const streamBuffer = ByteStream.fromUint8Array(data);\n\n const position = streamBuffer.curPos;\n const format = streamBuffer.readUint32();\n streamBuffer.curPos = position;\n\n let content: IModelTileContent = { isLeaf: true };\n assert(TileFormat.IModel === format);\n if (format !== TileFormat.IModel)\n return content;\n\n const sizeMultiplier = this.hasSizeMultiplier ? this.sizeMultiplier : undefined;\n\n const ecefTransform = this.tree.iModel.isGeoLocated ? this.tree.iModel.getEcefTransform() : Transform.createIdentity();\n try {\n content = await this.iModelTree.decoder.decode({\n stream: streamBuffer,\n options: { tileId: this.contentId },\n system,\n isCanceled,\n sizeMultiplier,\n tileData: {\n ecefTransform,\n range: this.range,\n layerClassifiers: this.tree.layerHandler?.layerClassifiers,\n },\n });\n } catch {\n //\n }\n\n return content;\n }\n\n public override setContent(content: IModelTileContent): void {\n super.setContent(content);\n\n this._emptySubRangeMask = content.emptySubRangeMask;\n\n // NB: If this tile has no graphics, it may or may not have children - but we don't want to load the children until\n // this tile is too coarse for view based on its size in pixels.\n // That is different than an \"undisplayable\" tile (maximumSize=0) whose children should be loaded immediately.\n if (undefined !== content.graphic && 0 === this.maximumSize)\n this._maximumSize = this.iModelTree.tileScreenSize;\n\n const sizeMult = content.sizeMultiplier;\n if (undefined !== sizeMult && (undefined === this._sizeMultiplier || sizeMult > this._sizeMultiplier)) {\n this._sizeMultiplier = sizeMult;\n this._contentId = this.iModelTree.contentIdProvider.idFromParentAndMultiplier(this.contentId, sizeMult);\n if (undefined !== this.children && this.children.length > 1)\n this.disposeChildren();\n }\n }\n\n protected _loadChildren(resolve: (children: Tile[]) => void, reject: (error: Error) => void): void {\n try {\n const tree = this.iModelTree;\n const kids = computeChildTileProps(this, tree.contentIdProvider, tree);\n IModelApp.tileAdmin.onTilesElided(kids.numEmpty);\n\n const children: IModelTile[] = [];\n for (const props of kids.children) {\n const child = new IModelTile(iModelTileParamsFromJSON(props, this), tree);\n children.push(child);\n }\n\n resolve(children);\n } catch (err) {\n reject(err instanceof Error ? err : new Error(BentleyError.getErrorMessage(err)));\n }\n }\n\n protected override get rangeGraphicColor(): ColorDef {\n return this.hasSizeMultiplier ? ColorDef.red : super.rangeGraphicColor;\n }\n\n protected override addRangeGraphic(builder: GraphicBuilder, type: TileBoundingBoxes): void {\n if (TileBoundingBoxes.ChildVolumes !== type) {\n super.addRangeGraphic(builder, type);\n return;\n }\n\n const ranges = computeChildTileRanges(this, this.iModelTree);\n for (const range of ranges) {\n const color = range.isEmpty ? ColorDef.blue : ColorDef.green;\n const pixels = !range.isEmpty ? LinePixels.HiddenLine : LinePixels.Solid;\n const width = !range.isEmpty ? 2 : 1;\n builder.setSymbology(color, color, width, pixels);\n addRangeGraphic(builder, range.range, this.tree.is2d);\n }\n }\n\n public pruneChildren(olderThan: BeTimePoint): void {\n // A tile's usage marker indicates its the most recent time its *children* were used.\n if (this.usageMarker.isExpired(olderThan)) {\n this.disposeChildren();\n return;\n }\n\n // this node has been used recently. Keep it, but potentially unload its grandchildren.\n const children = this.iModelChildren;\n if (undefined !== children)\n for (const child of children)\n child.pruneChildren(olderThan);\n }\n\n public selectTiles(selected: Tile[], args: TileDrawArgs, numSkipped: number): SelectParent {\n let vis = this.computeVisibility(args);\n if (TileVisibility.OutsideFrustum === vis)\n return SelectParent.No;\n\n const maxDepth = this.iModelTree.debugMaxDepth;\n if (undefined !== maxDepth && this.depth >= maxDepth)\n vis = TileVisibility.Visible;\n\n if (TileVisibility.Visible === vis) {\n // This tile is of appropriate resolution to draw. If need loading or refinement, enqueue.\n if (!this.isReady)\n args.insertMissing(this);\n\n if (this.hasGraphics) {\n // It can be drawn - select it\n args.markReady(this);\n selected.push(this);\n } else if (!this.isReady) {\n // It can't be drawn. Try to draw children in its place; otherwise draw the parent.\n // Do not load/request the children for this purpose.\n const initialSize = selected.length;\n const kids = this.iModelChildren;\n if (undefined === kids)\n return SelectParent.Yes;\n\n // Find any descendant to draw, until we exceed max initial tiles to skip.\n if (this.depth < this.iModelTree.maxInitialTilesToSkip) {\n for (const kid of kids) {\n if (SelectParent.Yes === kid.selectTiles(selected, args, numSkipped)) {\n selected.length = initialSize;\n return SelectParent.Yes;\n }\n\n return SelectParent.No;\n }\n }\n\n // If all visible direct children can be drawn, draw them.\n for (const kid of kids) {\n if (TileVisibility.OutsideFrustum !== kid.computeVisibility(args)) {\n if (!kid.hasGraphics) {\n selected.length = initialSize;\n return SelectParent.Yes;\n } else {\n selected.push(kid);\n }\n }\n }\n\n args.markUsed(this);\n }\n\n // We're drawing either this tile, or its direct children.\n return SelectParent.No;\n }\n\n // This tile is too coarse to draw. Try to draw something more appropriate.\n // If it is not ready to draw, we may want to skip loading in favor of loading its descendants.\n // If we previously loaded and later unloaded content for this tile to free memory, don't force it to reload its content - proceed to children.\n let canSkipThisTile = (this._hadGraphics && !this.hasGraphics) || this.depth < this.iModelTree.maxInitialTilesToSkip;\n if (canSkipThisTile) {\n numSkipped = 1;\n } else {\n canSkipThisTile = this.isReady || this.isParentDisplayable || this.depth < this.iModelTree.maxInitialTilesToSkip;\n if (canSkipThisTile && this.isDisplayable) { // skipping an undisplayable tile doesn't count toward the maximum\n // Some tiles do not sub-divide - they only facet the same geometry to a higher resolution. We can skip directly to the correct resolution.\n const isNotReady = !this.isReady && !this.hasGraphics && !this.hasSizeMultiplier;\n if (isNotReady) {\n if (numSkipped >= this.iModelTree.maxTilesToSkip)\n canSkipThisTile = false;\n else\n numSkipped += 1;\n }\n }\n }\n\n const childrenLoadStatus = this.loadChildren(); // NB: asynchronous\n const children = canSkipThisTile ? this.iModelChildren : undefined;\n if (canSkipThisTile && TileTreeLoadStatus.Loading === childrenLoadStatus) {\n args.markChildrenLoading();\n args.markUsed(this);\n }\n\n if (undefined !== children) {\n // If we are the root tile and we are not displayable, then we want to draw *any* currently available children in our place, or else we would draw nothing.\n // Otherwise, if we want to draw children in our place, we should wait for *all* of them to load, or else we would show missing chunks where not-yet-loaded children belong.\n const isUndisplayableRootTile = this.isUndisplayableRootTile;\n args.markUsed(this);\n let drawChildren = true;\n const initialSize = selected.length;\n for (const child of children) {\n // NB: We must continue iterating children so that they can be requested if missing.\n if (SelectParent.Yes === child.selectTiles(selected, args, numSkipped)) {\n if (child.loadStatus === TileLoadStatus.NotFound) {\n // At least one child we want to draw failed to load. e.g., we reached max depth of map tile tree. Draw parent instead.\n drawChildren = canSkipThisTile = false;\n } else {\n // At least one child we want to draw is not yet loaded. Wait for it to load before drawing it and its siblings, unless we have nothing to draw in their place.\n drawChildren = isUndisplayableRootTile;\n }\n }\n }\n\n if (drawChildren)\n return SelectParent.No;\n\n // Some types of tiles (like maps) allow the ready children to be drawn on top of the parent while other children are not yet loaded.\n if (args.parentsAndChildrenExclusive)\n selected.length = initialSize;\n }\n\n if (this.isReady) {\n if (this.hasGraphics) {\n selected.push(this);\n if (!canSkipThisTile) {\n // This tile is too coarse, but we require loading it before we can start loading higher-res children.\n args.markReady(this);\n }\n }\n\n return SelectParent.No;\n }\n\n // This tile is not ready to be drawn. Request it *only* if we cannot skip it.\n if (!canSkipThisTile)\n args.insertMissing(this);\n\n return this.isParentDisplayable ? SelectParent.Yes : SelectParent.No;\n }\n}\n"]}
1
+ {"version":3,"file":"IModelTile.js","sourceRoot":"","sources":["../../../../src/internal/tile/IModelTile.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Tiles\n */\n\nimport { assert, BentleyError, BeTimePoint, ByteStream } from \"@itwin/core-bentley\";\nimport { Range3d, Transform } from \"@itwin/core-geometry\";\nimport {\n ColorDef, computeChildTileProps, computeChildTileRanges, computeTileChordTolerance, ElementAlignedBox3d, LinePixels, TileFormat, TileProps,\n} from \"@itwin/core-common\";\nimport { IModelApp } from \"../../IModelApp\";\nimport { GraphicBuilder } from \"../../render/GraphicBuilder\";\nimport { RenderSystem } from \"../../render/RenderSystem\";\nimport {\n addRangeGraphic, IModelTileTree, Tile, TileBoundingBoxes, TileContent, TileDrawArgs, TileLoadStatus, TileParams, TileRequest,\n TileRequestChannel, TileTreeLoadStatus, TileVisibility,\n} from \"./../../tile/internal\";\n\n/** Parameters used to construct an [[IModelTile]].\n */\nexport interface IModelTileParams extends TileParams {\n sizeMultiplier?: number;\n}\n\nexport function iModelTileParamsFromJSON(props: TileProps, parent: IModelTile | undefined): IModelTileParams {\n const { contentId, maximumSize, isLeaf, sizeMultiplier } = props;\n const range = Range3d.fromJSON(props.range);\n\n let contentRange;\n if (undefined !== props.contentRange)\n contentRange = Range3d.fromJSON<ElementAlignedBox3d>(props.contentRange);\n\n return { contentId, range, maximumSize, isLeaf, parent, contentRange, sizeMultiplier };\n}\n\n/**\n * Indicates whether a parent tile should be drawn in place of a child tile.\n */\nexport enum SelectParent {\n No,\n Yes,\n}\n\nexport interface IModelTileContent extends TileContent {\n /** If this tile was produced by refinement, the multiplier applied to its screen size. */\n sizeMultiplier?: number;\n /** A bitfield describing empty sub-volumes of this tile's volume. */\n emptySubRangeMask?: number;\n}\n\n/** A tile belonging to an [[IModelTileTree].\n */\nexport class IModelTile extends Tile {\n private _sizeMultiplier?: number;\n private _emptySubRangeMask?: number;\n /** If an initial attempt to obtain this tile's content (e.g., from cloud storage cache) failed,\n * the next channel to try.\n */\n public requestChannel?: TileRequestChannel;\n\n public constructor(params: IModelTileParams, tree: IModelTileTree) {\n super(params, tree);\n this._sizeMultiplier = params.sizeMultiplier;\n\n if (!this.isLeaf && this.tree.is3d && !this.isReady) { // ###TODO: Want to know specifically if tree is *spatial*.\n // Do not sub-divide such that chord tolerance would be below specified minimum, if minimum defined.\n const minTolerance = IModelApp.tileAdmin.minimumSpatialTolerance;\n if (minTolerance > 0 && computeTileChordTolerance(this, this.tree.is3d, this.iModelTree.tileScreenSize) <= minTolerance)\n this.setLeaf();\n }\n }\n\n public get iModelTree(): IModelTileTree { return this.tree as IModelTileTree; }\n public get iModelChildren(): IModelTile[] | undefined { return this.children as IModelTile[] | undefined; }\n public get emptySubRangeMask(): number { return this._emptySubRangeMask ?? 0; }\n\n public get sizeMultiplier(): number | undefined { return this._sizeMultiplier; }\n public get hasSizeMultiplier() { return undefined !== this.sizeMultiplier; }\n public override get maximumSize(): number {\n return super.maximumSize * (this.sizeMultiplier ?? 1.0);\n }\n\n public get channel(): TileRequestChannel {\n return IModelApp.tileAdmin.channels.getIModelTileChannel(this);\n }\n\n public async requestContent(): Promise<TileRequest.Response> {\n return IModelApp.tileAdmin.generateTileContent(this);\n }\n\n public async readContent(data: TileRequest.ResponseData, system: RenderSystem, isCanceled?: () => boolean): Promise<IModelTileContent> {\n if (undefined === isCanceled)\n isCanceled = () => !this.isLoading;\n\n assert(data instanceof Uint8Array);\n const streamBuffer = ByteStream.fromUint8Array(data);\n\n const position = streamBuffer.curPos;\n const format = streamBuffer.readUint32();\n streamBuffer.curPos = position;\n\n let content: IModelTileContent = { isLeaf: true };\n assert(TileFormat.IModel === format);\n if (format !== TileFormat.IModel)\n return content;\n\n const sizeMultiplier = this.hasSizeMultiplier ? this.sizeMultiplier : undefined;\n\n const ecefTransform = this.tree.iModel.isGeoLocated ? this.tree.iModel.getEcefTransform() : Transform.createIdentity();\n try {\n content = await this.iModelTree.decoder.decode({\n stream: streamBuffer,\n options: { tileId: this.contentId },\n system,\n isCanceled,\n sizeMultiplier,\n tileData: {\n ecefTransform,\n range: this.range,\n layerClassifiers: this.tree.layerHandler?.layerClassifiers,\n },\n });\n } catch {\n //\n }\n\n return content;\n }\n\n public override setContent(content: IModelTileContent): void {\n super.setContent(content);\n\n this._emptySubRangeMask = content.emptySubRangeMask;\n\n // NB: If this tile has no graphics, it may or may not have children - but we don't want to load the children until\n // this tile is too coarse for view based on its size in pixels.\n // That is different than an \"undisplayable\" tile (maximumSize=0) whose children should be loaded immediately.\n if (undefined !== content.graphic && 0 === this.maximumSize)\n this._maximumSize = this.iModelTree.tileScreenSize;\n\n const sizeMult = content.sizeMultiplier;\n if (undefined !== sizeMult && (undefined === this._sizeMultiplier || sizeMult > this._sizeMultiplier)) {\n this._sizeMultiplier = sizeMult;\n this._contentId = this.iModelTree.contentIdProvider.idFromParentAndMultiplier(this.contentId, sizeMult);\n if (undefined !== this.children && this.children.length > 1)\n this.disposeChildren();\n }\n }\n\n protected _loadChildren(resolve: (children: Tile[]) => void, reject: (error: Error) => void): void {\n try {\n const tree = this.iModelTree;\n const kids = computeChildTileProps(this, tree.contentIdProvider, tree);\n IModelApp.tileAdmin.onTilesElided(kids.numEmpty);\n\n const children: IModelTile[] = [];\n for (const props of kids.children) {\n const child = new IModelTile(iModelTileParamsFromJSON(props, this), tree);\n children.push(child);\n }\n\n resolve(children);\n } catch (err) {\n reject(err instanceof Error ? err : new Error(BentleyError.getErrorMessage(err)));\n }\n }\n\n protected override get rangeGraphicColor(): ColorDef {\n return this.hasSizeMultiplier ? ColorDef.red : super.rangeGraphicColor;\n }\n\n protected override addRangeGraphic(builder: GraphicBuilder, type: TileBoundingBoxes): void {\n if (TileBoundingBoxes.ChildVolumes !== type) {\n super.addRangeGraphic(builder, type);\n return;\n }\n\n const ranges = computeChildTileRanges(this, this.iModelTree);\n for (const range of ranges) {\n const color = range.isEmpty ? ColorDef.blue : ColorDef.green;\n const pixels = !range.isEmpty ? LinePixels.HiddenLine : LinePixels.Solid;\n const width = !range.isEmpty ? 2 : 1;\n builder.setSymbology(color, color, width, pixels);\n addRangeGraphic(builder, range.range, this.tree.is2d);\n }\n }\n\n public pruneChildren(olderThan: BeTimePoint): void {\n // A tile's usage marker indicates its the most recent time its *children* were used.\n if (this.usageMarker.isExpired(olderThan)) {\n this.disposeChildren();\n return;\n }\n\n // this node has been used recently. Keep it, but potentially unload its grandchildren.\n const children = this.iModelChildren;\n if (undefined !== children)\n for (const child of children)\n child.pruneChildren(olderThan);\n }\n\n public selectTiles(selected: Tile[], args: TileDrawArgs, numSkipped: number): SelectParent {\n let vis = this.computeVisibility(args);\n if (TileVisibility.OutsideFrustum === vis)\n return SelectParent.No;\n\n const maxDepth = this.iModelTree.debugMaxDepth;\n if (undefined !== maxDepth && this.depth >= maxDepth)\n vis = TileVisibility.Visible;\n\n if (TileVisibility.Visible === vis) {\n // This tile is of appropriate resolution to draw. If need loading or refinement, enqueue.\n if (!this.isReady)\n args.insertMissing(this);\n\n if (this.hasGraphics) {\n // It can be drawn - select it\n args.markReady(this);\n selected.push(this);\n } else if (!this.isReady) {\n // It can't be drawn. Try to draw children in its place; otherwise draw the parent.\n // Do not load/request the children for this purpose.\n const initialSize = selected.length;\n const kids = this.iModelChildren;\n if (undefined === kids)\n return SelectParent.Yes;\n\n // Find any descendant to draw, until we exceed max initial tiles to skip.\n if (this.depth < this.iModelTree.maxInitialTilesToSkip) {\n for (const kid of kids) {\n if (SelectParent.Yes === kid.selectTiles(selected, args, numSkipped)) {\n selected.length = initialSize;\n return SelectParent.Yes;\n }\n\n return SelectParent.No;\n }\n }\n\n // If all visible direct children can be drawn, draw them.\n for (const kid of kids) {\n if (TileVisibility.OutsideFrustum !== kid.computeVisibility(args)) {\n if (!kid.hasGraphics) {\n selected.length = initialSize;\n return SelectParent.Yes;\n } else {\n selected.push(kid);\n }\n }\n }\n\n args.markUsed(this);\n }\n\n // We're drawing either this tile, or its direct children.\n return SelectParent.No;\n }\n\n // This tile is too coarse to draw. Try to draw something more appropriate.\n // If it is not ready to draw, we may want to skip loading in favor of loading its descendants.\n // If we previously loaded and later unloaded content for this tile to free memory, don't force it to reload its content - proceed to children.\n let canSkipThisTile = (this._hadGraphics && !this.hasGraphics) || this.depth < this.iModelTree.maxInitialTilesToSkip;\n if (canSkipThisTile) {\n numSkipped = 1;\n } else {\n canSkipThisTile = this.isReady || this.isParentDisplayable || this.depth < this.iModelTree.maxInitialTilesToSkip;\n if (canSkipThisTile && this.isDisplayable) { // skipping an undisplayable tile doesn't count toward the maximum\n // Some tiles do not sub-divide - they only facet the same geometry to a higher resolution. We can skip directly to the correct resolution.\n const isNotReady = !this.isReady && !this.hasGraphics && !this.hasSizeMultiplier;\n if (isNotReady) {\n if (numSkipped >= this.iModelTree.maxTilesToSkip)\n canSkipThisTile = false;\n else\n numSkipped += 1;\n }\n }\n }\n\n const childrenLoadStatus = this.loadChildren(); // NB: asynchronous\n const children = canSkipThisTile ? this.iModelChildren : undefined;\n if (canSkipThisTile && TileTreeLoadStatus.Loading === childrenLoadStatus) {\n args.markChildrenLoading();\n args.markUsed(this);\n }\n\n if (undefined !== children) {\n // If we are the root tile and we are not displayable, then we want to draw *any* currently available children in our place, or else we would draw nothing.\n // Otherwise, if we want to draw children in our place, we should wait for *all* of them to load, or else we would show missing chunks where not-yet-loaded children belong.\n const isUndisplayableRootTile = this.isUndisplayableRootTile;\n args.markUsed(this);\n let drawChildren = true;\n const initialSize = selected.length;\n for (const child of children) {\n // NB: We must continue iterating children so that they can be requested if missing.\n if (SelectParent.Yes === child.selectTiles(selected, args, numSkipped)) {\n if (child.loadStatus === TileLoadStatus.NotFound) {\n // At least one child we want to draw failed to load. e.g., we reached max depth of map tile tree. Draw parent instead.\n drawChildren = canSkipThisTile = false;\n } else {\n // At least one child we want to draw is not yet loaded. Wait for it to load before drawing it and its siblings, unless we have nothing to draw in their place.\n drawChildren = isUndisplayableRootTile;\n }\n }\n }\n\n if (drawChildren)\n return SelectParent.No;\n\n // Some types of tiles (like maps) allow the ready children to be drawn on top of the parent while other children are not yet loaded.\n if (args.parentsAndChildrenExclusive)\n selected.length = initialSize;\n }\n\n if (this.isReady) {\n if (this.hasGraphics) {\n selected.push(this);\n if (!canSkipThisTile) {\n // This tile is too coarse, but we require loading it before we can start loading higher-res children.\n args.markReady(this);\n }\n }\n\n return SelectParent.No;\n }\n\n // This tile is not ready to be drawn. Request it *only* if we cannot skip it.\n if (!canSkipThisTile)\n args.insertMissing(this);\n\n return this.isParentDisplayable ? SelectParent.Yes : SelectParent.No;\n }\n\n public override clearLayers(): void {\n super.clearLayers();\n this.disposeChildren();\n }\n}\n"]}
@@ -1 +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;IA4EhD,oBAAoB,CAAC,iBAAiB,EAAE,iBAAiB;IA0BzD,WAAW;IAOX,gBAAgB,CAAC,aAAa,EAAE,gBAAgB,EAAE;CAY1D"}
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;IAoFhD,oBAAoB,CAAC,iBAAiB,EAAE,iBAAiB;IA0BzD,WAAW;IAOX,gBAAgB,CAAC,aAAa,EAAE,gBAAgB,EAAE;CAY1D"}
@@ -74,6 +74,14 @@ class LayerTileTreeReferenceHandler {
74
74
  this.setLayerSettings(mapImagery.backgroundLayers);
75
75
  }
76
76
  }));
77
+ removals.push(context.viewport.onViewedModelsChanged.addListener((viewport) => {
78
+ const layers = viewport.displayStyle.settings.mapImagery.backgroundLayers;
79
+ if (layers.length > 0) {
80
+ this.setBaseLayerSettings(mapImagery.backgroundBase);
81
+ this.setLayerSettings(mapImagery.backgroundLayers);
82
+ viewport.invalidateScene();
83
+ }
84
+ }));
77
85
  }
78
86
  let hasLoadedTileTree = false;
79
87
  const layerHandler = this._ref.treeOwner.load()?.layerHandler;
@@ -1 +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 }));\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 }\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"]}
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 }));\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 }\n }));\n removals.push(context.viewport.onViewedModelsChanged.addListener((viewport) => {\n const layers = viewport.displayStyle.settings.mapImagery.backgroundLayers;\n if (layers.length > 0) {\n this.setBaseLayerSettings(mapImagery.backgroundBase);\n this.setLayerSettings(mapImagery.backgroundLayers);\n viewport.invalidateScene();\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"]}
@@ -9,7 +9,7 @@ import { HitDetail } from "../../HitDetail";
9
9
  import { IModelConnection } from "../../IModelConnection";
10
10
  import { RenderMemory } from "../../render/RenderMemory";
11
11
  import { RenderSystem } from "../../render/RenderSystem";
12
- import { RealityModelTileTree, Tile, TileContent, TileDrawArgs, TileParams, TileRequest, TileTree, TileTreeOwner, TileTreeParams } from "../../tile/internal";
12
+ import { LayerTileTreeHandler, MapLayerTreeSetting, RealityModelTileTree, Tile, TileContent, TileDrawArgs, TileParams, TileRequest, TileTree, TileTreeOwner, TileTreeParams } from "../../tile/internal";
13
13
  export declare function createOrbitGtTileTreeReference(props: OrbitGtTileTree.ReferenceProps): RealityModelTileTree.Reference;
14
14
  declare class OrbitGtRootTile extends Tile {
15
15
  protected _loadChildren(_resolve: (children: Tile[] | undefined) => void, _reject: (error: Error) => void): void;
@@ -27,6 +27,9 @@ export declare class OrbitGtTileTree extends TileTree {
27
27
  rootTile: OrbitGtRootTile;
28
28
  viewFlagOverrides: ViewFlagOverrides;
29
29
  private _tileGraphics;
30
+ private readonly _layerHandler;
31
+ layerImageryTrees: MapLayerTreeSetting[];
32
+ get layerHandler(): LayerTileTreeHandler;
30
33
  constructor(treeParams: TileTreeParams, _dataManager: OrbitGtDataManager, cloudRange: Range3d, _centerOffset: Vector3d, _ecefTransform: Transform);
31
34
  getEcefTransform(): Promise<Transform | undefined>;
32
35
  [Symbol.dispose](): void;
@@ -1 +1 @@
1
- {"version":3,"file":"OrbitGtTileTree.d.ts","sourceRoot":"","sources":["../../../../src/internal/tile/OrbitGtTileTree.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"OrbitGtTileTree.d.ts","sourceRoot":"","sources":["../../../../src/internal/tile/OrbitGtTileTree.ts"],"names":[],"mappings":"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"}
@@ -183,11 +183,15 @@ class OrbitGtTileTree extends internal_1.TileTree {
183
183
  rootTile;
184
184
  viewFlagOverrides = {};
185
185
  _tileGraphics = new Map();
186
+ _layerHandler;
187
+ layerImageryTrees = [];
188
+ get layerHandler() { return this._layerHandler; }
186
189
  constructor(treeParams, _dataManager, cloudRange, _centerOffset, _ecefTransform) {
187
190
  super(treeParams);
188
191
  this._dataManager = _dataManager;
189
192
  this._centerOffset = _centerOffset;
190
193
  this._ecefTransform = _ecefTransform;
194
+ this._layerHandler = new internal_1.LayerTileTreeHandler(this);
191
195
  this._tileParams = { contentId: "0", range: cloudRange, maximumSize: 256 };
192
196
  this.rootTile = new OrbitGtRootTile(this._tileParams, this);
193
197
  }
@@ -1 +1 @@
1
- {"version":3,"file":"OrbitGtTileTree.js","sourceRoot":"","sources":["../../../../src/internal/tile/OrbitGtTileTree.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module TileTreeSupplier\r\n */\r\n\r\nimport { assert, BeTimePoint, compareStringsOrUndefined, Id64, Id64String } from \"@itwin/core-bentley\";\r\nimport {\r\n BatchType, Cartographic, ColorDef, Feature, FeatureTable, Frustum, FrustumPlanes, GeoCoordStatus, OrbitGtBlobProps, PackedFeatureTable, QParams3d,\r\n Quantization, RealityDataFormat, RealityDataProvider, RealityDataSourceKey, ViewFlagOverrides,\r\n} from \"@itwin/core-common\";\r\nimport { Point3d, Range3d, Transform, Vector3d } from \"@itwin/core-geometry\";\r\nimport {\r\n ALong, CRSManager, Downloader, DownloaderXhr, OnlineEngine, OPCReader, OrbitGtAList, OrbitGtBlockIndex, OrbitGtBounds, OrbitGtCoordinate,\r\n OrbitGtDataManager, OrbitGtFrameData, OrbitGtIProjectToViewForSort, OrbitGtIViewRequest, OrbitGtLevel, OrbitGtTileIndex, OrbitGtTileLoadSorter,\r\n OrbitGtTransform, PageCachedFile, PointDataRaw, UrlFS,\r\n} from \"@itwin/core-orbitgt\";\r\nimport { calculateEcefToDbTransformAtLocation } from \"../../BackgroundMapGeometry\";\r\nimport { DisplayStyleState } from \"../../DisplayStyleState\";\r\nimport { HitDetail } from \"../../HitDetail\";\r\nimport { IModelApp } from \"../../IModelApp\";\r\nimport { IModelConnection } from \"../../IModelConnection\";\r\nimport { RealityDataSource } from \"../../RealityDataSource\";\r\nimport { Mesh } from \"../../common/internal/render/MeshPrimitives\";\r\nimport { RenderGraphic } from \"../../render/RenderGraphic\";\r\nimport { RenderMemory } from \"../../render/RenderMemory\";\r\nimport { RenderSystem } from \"../../render/RenderSystem\";\r\nimport { ViewingSpace } from \"../../ViewingSpace\";\r\nimport { Viewport } from \"../../Viewport\";\r\nimport {\r\n RealityModelTileTree, Tile, TileContent, TileDrawArgs, TileLoadPriority, TileParams, TileRequest, TileTree, TileTreeOwner,\r\n TileTreeParams, TileTreeSupplier, TileUsageMarker,\r\n} from \"../../tile/internal\";\r\n\r\nconst scratchRange = Range3d.create();\r\nconst scratchWorldFrustum = new Frustum();\r\n\r\ninterface OrbitGtTreeId {\r\n rdSourceKey: RealityDataSourceKey;\r\n modelId: Id64String;\r\n}\r\n\r\nfunction compareSourceKeys(lhs: RealityDataSourceKey, rhs: RealityDataSourceKey): number {\r\n return compareStringsOrUndefined(lhs.id, rhs.id) || compareStringsOrUndefined(lhs.format, rhs.format) || compareStringsOrUndefined(lhs.iTwinId, rhs.iTwinId);\r\n}\r\n\r\nclass OrbitGtTreeSupplier implements TileTreeSupplier {\r\n public getOwner(treeId: OrbitGtTreeId, iModel: IModelConnection): TileTreeOwner {\r\n return iModel.tiles.getTileTreeOwner(treeId, this);\r\n }\r\n\r\n public async createTileTree(treeId: OrbitGtTreeId, iModel: IModelConnection): Promise<TileTree | undefined> {\r\n return OrbitGtTileTree.createOrbitGtTileTree(treeId.rdSourceKey, iModel, treeId.modelId);\r\n }\r\n\r\n public compareTileTreeIds(lhs: OrbitGtTreeId, rhs: OrbitGtTreeId): number {\r\n return compareStringsOrUndefined(lhs.modelId, rhs.modelId) || compareSourceKeys(lhs.rdSourceKey, rhs.rdSourceKey);\r\n }\r\n\r\n public findCompatibleContextRealityModelId(sourceKey: RealityDataSourceKey, style: DisplayStyleState): Id64String | undefined {\r\n const owners = style.iModel.tiles.getTreeOwnersForSupplier(this);\r\n for (const owner of owners) {\r\n // Find an existing tree with the same reality data source key.\r\n if (0 === compareSourceKeys(sourceKey, owner.id.rdSourceKey)) {\r\n const modelId = owner.id.modelId;\r\n assert(undefined !== modelId);\r\n\r\n // If the model Id is unused by any other context reality model in the view and does not identify a persistent reality model, use it.\r\n if (Id64.isTransientId64(modelId) && !style.contextRealityModelStates.some((model) => model.modelId === modelId))\r\n return modelId;\r\n }\r\n }\r\n\r\n return undefined;\r\n }\r\n}\r\n\r\nconst orbitGtTreeSupplier = new OrbitGtTreeSupplier();\r\n\r\nfunction transformFromOrbitGt(ogtTransform: OrbitGtTransform, result?: Transform): Transform {\r\n if (undefined === result)\r\n result = Transform.createIdentity();\r\n\r\n result.matrix.setRowValues(\r\n ogtTransform.getElement(0, 0), ogtTransform.getElement(0, 1), ogtTransform.getElement(0, 2),\r\n ogtTransform.getElement(1, 0), ogtTransform.getElement(1, 1), ogtTransform.getElement(1, 2),\r\n ogtTransform.getElement(2, 0), ogtTransform.getElement(2, 1), ogtTransform.getElement(2, 2));\r\n\r\n result.origin.x = ogtTransform.getElement(0, 3);\r\n result.origin.y = ogtTransform.getElement(1, 3);\r\n result.origin.z = ogtTransform.getElement(2, 3);\r\n return result;\r\n}\r\n\r\nfunction pointFromOrbitGt(ogtCoordinate: OrbitGtCoordinate, result?: Point3d): Point3d {\r\n if (undefined === result)\r\n result = Point3d.create();\r\n\r\n result.x = ogtCoordinate.x;\r\n result.y = ogtCoordinate.y;\r\n result.z = ogtCoordinate.z;\r\n\r\n return result;\r\n}\r\n\r\nfunction rangeFromOrbitGt(ogtBounds: OrbitGtBounds, result?: Range3d) {\r\n if (undefined === result)\r\n result = Range3d.create();\r\n\r\n pointFromOrbitGt(ogtBounds.min, result.low);\r\n pointFromOrbitGt(ogtBounds.max, result.high);\r\n return result;\r\n}\r\n\r\nexport function createOrbitGtTileTreeReference(props: OrbitGtTileTree.ReferenceProps): RealityModelTileTree.Reference {\r\n return new OrbitGtTreeReference(props);\r\n}\r\n\r\nclass OrbitGtTileTreeParams implements TileTreeParams {\r\n public id: string;\r\n public modelId: string;\r\n public iModel: IModelConnection;\r\n public get priority(): TileLoadPriority { return TileLoadPriority.Context; }\r\n\r\n public constructor(rdSourceKey: RealityDataSourceKey, iModel: IModelConnection, modelId: Id64String, public location: Transform) {\r\n const key = rdSourceKey;\r\n this.id = `${key.provider}:${key.format}:${key.id}:${key.iTwinId}`;\r\n this.modelId = modelId;\r\n this.iModel = iModel;\r\n }\r\n}\r\n\r\nclass OrbitGtRootTile extends Tile {\r\n protected _loadChildren(_resolve: (children: Tile[] | undefined) => void, _reject: (error: Error) => void): void { }\r\n public async requestContent(_isCanceled: () => boolean): Promise<TileRequest.Response> { return undefined; }\r\n public get channel() { return IModelApp.tileAdmin.channels.getForHttp(\"itwinjs-orbitgit\"); }\r\n public async readContent(_data: TileRequest.ResponseData, _system: RenderSystem, _isCanceled?: () => boolean): Promise<TileContent> { return {}; }\r\n public override freeMemory(): void { }\r\n\r\n constructor(params: TileParams, tree: TileTree) { super(params, tree); }\r\n}\r\n\r\nclass OrbitGtViewRequest extends OrbitGtIViewRequest {\r\n private _tileToIModelTransform: Transform;\r\n constructor(private _tileDrawArgs: TileDrawArgs, private _centerOffset: Vector3d) {\r\n super();\r\n this._tileToIModelTransform = _tileDrawArgs.location.multiplyTransformTransform(Transform.createTranslation(_centerOffset));\r\n }\r\n\r\n public isVisibleBox(bounds: OrbitGtBounds): boolean {\r\n const box = Frustum.fromRange(rangeFromOrbitGt(bounds, scratchRange));\r\n const worldBox = box.transformBy(this._tileToIModelTransform, scratchWorldFrustum);\r\n return FrustumPlanes.Containment.Outside !== this._tileDrawArgs.frustumPlanes.computeFrustumContainment(worldBox, undefined);\r\n }\r\n public getFrameTime(): number {\r\n return this._tileDrawArgs.now.milliseconds;\r\n }\r\n\r\n public shouldSplit(level: OrbitGtLevel, tile: OrbitGtTileIndex) {\r\n // get the world size of the tile voxels\r\n const tileCenter: OrbitGtCoordinate = level.getTileGrid().getCellCenter(tile.gridIndex);\r\n tileCenter.x += this._centerOffset.x;\r\n tileCenter.y += this._centerOffset.y;\r\n tileCenter.z += this._centerOffset.z;\r\n const worldCenter: Point3d = this._tileDrawArgs.location.multiplyXYZ(tileCenter.x, tileCenter.y, tileCenter.z);\r\n const worldCenter2: Point3d = this._tileDrawArgs.location.multiplyXYZ(tileCenter.x, tileCenter.y, tileCenter.z + level.getTileGrid().size.z);\r\n const voxelSize: number = worldCenter2.distance(worldCenter) / 64;\r\n // get the world size of a screen pixel at the tile center\r\n const viewPt: Point3d = this._tileDrawArgs.worldToViewMap.transform0.multiplyPoint3dQuietNormalize(worldCenter);\r\n const viewPt2: Point3d = new Point3d(viewPt.x + 1.0, viewPt.y, viewPt.z);\r\n const pixelSizeAtCenter: number = this._tileDrawArgs.worldToViewMap.transform1.multiplyPoint3dQuietNormalize(viewPt).distance(this._tileDrawArgs.worldToViewMap.transform1.multiplyPoint3dQuietNormalize(viewPt2));\r\n // stop splitting if the voxel size of the children becomes too small to improve quality\r\n const split: boolean = (0.5 * voxelSize > 2.0 * pixelSizeAtCenter);\r\n return split;\r\n }\r\n}\r\n\r\nclass TileSortProjector implements OrbitGtIProjectToViewForSort {\r\n private _sortTransform: Transform;\r\n constructor(iModelTransform: Transform, viewingSpace: ViewingSpace, centerOffset: Vector3d) {\r\n const rotation = viewingSpace.rotation;\r\n let origin: Vector3d;\r\n if (undefined === viewingSpace.eyePoint) {\r\n origin = Vector3d.createFrom(viewingSpace.viewOrigin);\r\n const viewDelta = viewingSpace.viewDelta;\r\n const eyeDelta = Vector3d.createFrom({ x: viewDelta.x / 2, y: viewDelta.y / 2, z: viewDelta.z * 10 });\r\n rotation.multiplyVector(eyeDelta, eyeDelta);\r\n origin.addInPlace(eyeDelta);\r\n } else {\r\n origin = Vector3d.createFrom(viewingSpace.eyePoint);\r\n }\r\n\r\n rotation.multiplyVector(origin);\r\n origin.scaleInPlace(-1);\r\n const toViewTransform = Transform.createOriginAndMatrix(origin, rotation);\r\n const tileToIModelTransform = iModelTransform.multiplyTransformTransform(Transform.createTranslation(centerOffset));\r\n this._sortTransform = toViewTransform.multiplyTransformTransform(tileToIModelTransform);\r\n }\r\n public projectToViewForSort(coordinate: OrbitGtCoordinate) {\r\n const point = pointFromOrbitGt(coordinate);\r\n this._sortTransform.multiplyPoint3d(point, point);\r\n coordinate.x = point.x;\r\n coordinate.y = point.y;\r\n coordinate.z = point.z;\r\n }\r\n}\r\n\r\nclass OrbitGtTileGraphic extends TileUsageMarker {\r\n public readonly graphic: RenderGraphic;\r\n\r\n public constructor(graphic: RenderGraphic, viewport: Viewport, time: BeTimePoint) {\r\n super();\r\n this.graphic = graphic;\r\n this.mark(viewport, time);\r\n }\r\n\r\n public [Symbol.dispose](): void {\r\n this.graphic[Symbol.dispose]();\r\n }\r\n}\r\n\r\nexport class OrbitGtTileTree extends TileTree {\r\n private _tileParams: TileParams;\r\n public rootTile: OrbitGtRootTile;\r\n public viewFlagOverrides: ViewFlagOverrides = {};\r\n private _tileGraphics = new Map<string, OrbitGtTileGraphic>();\r\n\r\n public constructor(treeParams: TileTreeParams, private _dataManager: OrbitGtDataManager, cloudRange: Range3d, private _centerOffset: Vector3d, private _ecefTransform: Transform) {\r\n super(treeParams);\r\n\r\n this._tileParams = { contentId: \"0\", range: cloudRange, maximumSize: 256 };\r\n this.rootTile = new OrbitGtRootTile(this._tileParams, this);\r\n }\r\n\r\n public override async getEcefTransform(): Promise<Transform | undefined> {\r\n return this._ecefTransform;\r\n }\r\n\r\n public override[Symbol.dispose](): void {\r\n if (this.isDisposed)\r\n return;\r\n\r\n for (const graphic of this._tileGraphics.values())\r\n graphic[Symbol.dispose]();\r\n\r\n this._tileGraphics.clear();\r\n super[Symbol.dispose]();\r\n }\r\n\r\n protected _selectTiles(_args: TileDrawArgs): Tile[] { return []; }\r\n public get is3d(): boolean { return true; }\r\n public override get isContentUnbounded(): boolean { return false; }\r\n public get maxDepth(): number | undefined { return undefined; }\r\n\r\n private _doPrune(olderThan: BeTimePoint) {\r\n for (const [key, graphic] of this._tileGraphics)\r\n if (graphic.isExpired(olderThan)) {\r\n graphic[Symbol.dispose]();\r\n this._tileGraphics.delete(key);\r\n }\r\n }\r\n\r\n public prune() {\r\n const olderThan = BeTimePoint.now().minus(this.expirationTime);\r\n this._doPrune(olderThan);\r\n }\r\n\r\n public override collectStatistics(stats: RenderMemory.Statistics): void {\r\n for (const tileGraphic of this._tileGraphics)\r\n tileGraphic[1].graphic.collectStatistics(stats);\r\n }\r\n\r\n public draw(args: TileDrawArgs) {\r\n const debugControl = args.context.target.debugControl;\r\n const debugBuilder = (debugControl && debugControl.displayRealityTileRanges) ? args.context.createSceneGraphicBuilder() : undefined;\r\n const doLogging = (debugControl && debugControl.logRealityTiles);\r\n const viewRequest = new OrbitGtViewRequest(args, this._centerOffset);\r\n const levelsInView = new OrbitGtAList<OrbitGtLevel>();\r\n const blocksInView = new OrbitGtAList<OrbitGtBlockIndex>();\r\n const tilesInView = new OrbitGtAList<OrbitGtTileIndex>();\r\n const frameData = new OrbitGtFrameData();\r\n\r\n this._dataManager.getViewTree().renderView3D(viewRequest, levelsInView, blocksInView, tilesInView, frameData.tilesToRender);\r\n this._dataManager.filterLoadList(levelsInView, blocksInView, tilesInView, frameData.levelsToLoad, frameData.blocksToLoad, frameData.tilesToLoad);\r\n tilesInView.sort(new OrbitGtTileLoadSorter(this._dataManager.getViewTree(), new TileSortProjector(this.iModelTransform, args.context.viewingSpace, this._centerOffset)));\r\n\r\n let totalPointCount = 0;\r\n const tileCount = frameData.tilesToRender.size();\r\n\r\n // Inform TileAdmin about tiles we are handling ourselves...\r\n IModelApp.tileAdmin.addExternalTilesForUser(args.context.viewport, { requested: frameData.tilesToLoad.size() + (frameData.hasMissingData() ? 1 : 0), selected: tileCount, ready: tileCount });\r\n\r\n if (debugBuilder)\r\n debugBuilder.setSymbology(ColorDef.red, ColorDef.red, 1);\r\n\r\n let minLevel = 100, maxLevel = -100;\r\n for (let t: number = 0; t < tileCount; t++) {\r\n const tile: PointDataRaw = frameData.tilesToRender.get(t) as PointDataRaw;\r\n minLevel = Math.min(minLevel, tile.tileIndex.level);\r\n maxLevel = Math.max(maxLevel, tile.tileIndex.level);\r\n totalPointCount += tile.tileIndex.pointCount;\r\n const key = tile.tileIndex.key;\r\n const cachedGraphic = this._tileGraphics.get(key);\r\n if (undefined !== cachedGraphic) {\r\n cachedGraphic.mark(args.context.viewport, args.now);\r\n args.graphics.add(cachedGraphic.graphic);\r\n } else {\r\n const range = rangeFromOrbitGt(tile.bounds);\r\n range.low.addInPlace(this._centerOffset);\r\n range.high.addInPlace(this._centerOffset);\r\n const qParams = QParams3d.fromRange(range, undefined, (tile.points8 != null) ? Quantization.rangeScale8 : Quantization.rangeScale16);\r\n const featureTable = new FeatureTable(1, this.modelId, BatchType.Primary);\r\n const features = new Mesh.Features(featureTable);\r\n const system = IModelApp.renderSystem;\r\n const voxelSize = (range.high.x - range.low.x) / 64;\r\n\r\n features.add(new Feature(this.modelId), 1);\r\n const tilePoints = (tile.points8 != null) ? tile.points8.toNativeBuffer() : tile.points16.toNativeBuffer();\r\n let renderGraphic = system.createPointCloud({\r\n positions: tilePoints,\r\n qparams: qParams,\r\n colors: tile.colors.toNativeBuffer(),\r\n features: features.toFeatureIndex(),\r\n voxelSize,\r\n colorFormat: \"bgr\",\r\n }, this.iModel);\r\n\r\n renderGraphic = system.createBatch(renderGraphic!, PackedFeatureTable.pack(featureTable), range);\r\n args.graphics.add(renderGraphic);\r\n this._tileGraphics.set(key, new OrbitGtTileGraphic(renderGraphic, args.context.viewport, args.now));\r\n }\r\n\r\n if (debugBuilder)\r\n debugBuilder.addRangeBox(rangeFromOrbitGt(tile.bounds));\r\n }\r\n\r\n if (debugBuilder)\r\n args.graphics.add(debugBuilder.finish());\r\n\r\n if (doLogging) {\r\n // eslint-disable-next-line no-console\r\n console.log(`Total OrbitGtTiles: ${tileCount} MinLevel: ${minLevel} MaxLevel: ${maxLevel} Total Points: ${totalPointCount}`);\r\n }\r\n\r\n args.drawGraphics();\r\n if (frameData.hasMissingData()) {\r\n this._dataManager.loadData(frameData).then(() => IModelApp.tileAdmin.onTileLoad.raiseEvent(this.rootTile)).catch((_err: any) => undefined);\r\n }\r\n }\r\n}\r\n\r\nexport namespace OrbitGtTileTree {\r\n export interface ReferenceProps extends RealityModelTileTree.ReferenceBaseProps {\r\n orbitGtBlob?: OrbitGtBlobProps;\r\n modelId?: Id64String;\r\n }\r\n function isValidSASToken(downloadUrl: string): boolean {\r\n\r\n // Create fake URL for and parameter parsing and SAS token URI parsing\r\n if (!downloadUrl.startsWith(\"http\"))\r\n downloadUrl = `http://x.com/x?${downloadUrl}`;\r\n\r\n const sasUrl = new URL(downloadUrl);\r\n\r\n const se = sasUrl.searchParams.get(\"se\");\r\n if (se) {\r\n const expiryUTC = new Date(se);\r\n const now = new Date();\r\n const currentUTC = new Date(now?.toUTCString());\r\n\r\n return expiryUTC >= currentUTC;\r\n }\r\n\r\n return false;\r\n }\r\n function isValidOrbitGtBlobProps(props: OrbitGtBlobProps): boolean {\r\n\r\n // Check main OrbitGtBlobProps fields are defined\r\n if (!props.accountName || !props.containerName || !props.blobFileName || !props.sasToken)\r\n return false;\r\n\r\n // Check SAS token is valid\r\n return isValidSASToken(props.sasToken);\r\n }\r\n\r\n export async function createOrbitGtTileTree(rdSourceKey: RealityDataSourceKey, iModel: IModelConnection, modelId: Id64String): Promise<TileTree | undefined> {\r\n const rdSource = await RealityDataSource.fromKey(rdSourceKey, iModel.iTwinId);\r\n const isContextShare = rdSourceKey.provider === RealityDataProvider.ContextShare;\r\n const isTilestUrl = rdSourceKey.provider === RealityDataProvider.TilesetUrl;\r\n\r\n let blobStringUrl: string;\r\n if (isContextShare) {\r\n const realityData = rdSource ? rdSource.realityData : undefined;\r\n if (rdSource === undefined || realityData === undefined)\r\n return undefined;\r\n const docRootName = realityData.rootDocument;\r\n if (!docRootName)\r\n return undefined;\r\n const token = await IModelApp.getAccessToken();\r\n const blobUrl = await realityData.getBlobUrl(token, docRootName);\r\n blobStringUrl = blobUrl.toString();\r\n } else if (isTilestUrl) {\r\n blobStringUrl = rdSourceKey.id;\r\n } else {\r\n const orbitGtBlobProps = RealityDataSource.createOrbitGtBlobPropsFromKey(rdSourceKey);\r\n if (orbitGtBlobProps === undefined)\r\n return undefined;\r\n if (!isValidOrbitGtBlobProps(orbitGtBlobProps))\r\n return undefined;\r\n const { accountName, containerName, blobFileName, sasToken } = orbitGtBlobProps;\r\n blobStringUrl = blobFileName;\r\n if (accountName.length > 0)\r\n blobStringUrl = UrlFS.getAzureBlobSasUrl(accountName, containerName, blobFileName, sasToken);\r\n }\r\n\r\n if (Downloader.INSTANCE == null)\r\n Downloader.INSTANCE = new DownloaderXhr();\r\n\r\n if (CRSManager.ENGINE == null)\r\n CRSManager.ENGINE = await OnlineEngine.create();\r\n\r\n // wrap a caching layer (16 MB) around the blob file\r\n const urlFS: UrlFS = new UrlFS();\r\n const blobFileSize: ALong = await urlFS.getFileLength(blobStringUrl);\r\n const cacheKilobytes = 128;\r\n const cachedBlobFile = new PageCachedFile(urlFS, blobStringUrl, blobFileSize, cacheKilobytes * 1024 /* pageSize*/, 128/* maxPageCount*/);\r\n const pointCloudReader = await OPCReader.openFile(cachedBlobFile, blobStringUrl, true/* lazyLoading*/);\r\n let pointCloudCRS = pointCloudReader.getFileCRS();\r\n if (pointCloudCRS == null)\r\n pointCloudCRS = \"\";\r\n const dataManager = new OrbitGtDataManager(pointCloudReader, pointCloudCRS, PointDataRaw.TYPE);\r\n const pointCloudBounds = dataManager.getPointCloudBounds();\r\n const pointCloudRange = rangeFromOrbitGt(pointCloudBounds);\r\n const pointCloudCenter = pointCloudRange.localXYZToWorld(.5, .5, .5)!;\r\n const addCloudCenter = Transform.createTranslation(pointCloudCenter);\r\n const ecefTransform = Transform.createIdentity();\r\n let pointCloudCenterToDb = addCloudCenter;\r\n if (pointCloudCRS.length > 0) {\r\n await CRSManager.ENGINE.prepareForArea(pointCloudCRS, pointCloudBounds);\r\n const wgs84CRS = \"4978\";\r\n await CRSManager.ENGINE.prepareForArea(wgs84CRS, new OrbitGtBounds());\r\n const pointCloudToEcef = transformFromOrbitGt(CRSManager.createTransform(pointCloudCRS, new OrbitGtCoordinate(pointCloudCenter.x, pointCloudCenter.y, pointCloudCenter.z), wgs84CRS));\r\n const pointCloudCenterToEcef = pointCloudToEcef.multiplyTransformTransform(addCloudCenter);\r\n ecefTransform.setFrom(pointCloudCenterToEcef);\r\n\r\n let ecefToDb = iModel.getMapEcefToDb(0);\r\n // In initial publishing version the iModel ecef Transform was used to locate the reality model.\r\n // This would work well only for tilesets published from that iModel but for iModels the ecef transform is calculated\r\n // at the center of the project extents and the reality model location may differ greatly, and the curvature of the earth\r\n // could introduce significant errors.\r\n // The publishing was modified to calculate the ecef transform at the reality model range center and at the same time the \"iModelPublishVersion\"\r\n // member was added to the root object.\r\n const ecefOrigin = pointCloudCenterToEcef.getOrigin();\r\n const dbOrigin = ecefToDb.multiplyPoint3d(ecefOrigin);\r\n const realityOriginToProjectDistance = iModel.projectExtents.distanceToPoint(dbOrigin);\r\n const maxProjectDistance = 1E5; // Only use the project GCS projection if within 100KM of the project. Don't attempt to use GCS if global reality model or in another locale - Results will be unreliable.\r\n if (realityOriginToProjectDistance < maxProjectDistance) {\r\n const cartographicOrigin = Cartographic.fromEcef(ecefOrigin);\r\n const geoConverter = iModel.noGcsDefined ? undefined : iModel.geoServices.getConverter(\"WGS84\");\r\n if (cartographicOrigin !== undefined && geoConverter !== undefined) {\r\n const geoOrigin = Point3d.create(cartographicOrigin.longitudeDegrees, cartographicOrigin.latitudeDegrees, cartographicOrigin.height);\r\n const response = await geoConverter.getIModelCoordinatesFromGeoCoordinates([geoOrigin]);\r\n if (response.iModelCoords[0].s === GeoCoordStatus.Success) {\r\n const ecefToDbOrigin = await calculateEcefToDbTransformAtLocation(Point3d.fromJSON(response.iModelCoords[0].p), iModel);\r\n if (ecefToDbOrigin)\r\n ecefToDb = ecefToDbOrigin;\r\n }\r\n }\r\n }\r\n\r\n pointCloudCenterToDb = ecefToDb.multiplyTransformTransform(pointCloudCenterToEcef);\r\n }\r\n const params = new OrbitGtTileTreeParams(rdSourceKey, iModel, modelId, pointCloudCenterToDb);\r\n\r\n // We use a RTC transform to avoid jitter from large cloud coordinates.\r\n const centerOffset = Vector3d.create(-pointCloudCenter.x, -pointCloudCenter.y, -pointCloudCenter.z);\r\n pointCloudRange.low.addInPlace(centerOffset);\r\n pointCloudRange.high.addInPlace(centerOffset);\r\n return new OrbitGtTileTree(params, dataManager, pointCloudRange, centerOffset, ecefTransform);\r\n }\r\n}\r\n\r\n/** Supplies a reality data [[TileTree]] from a URL. May be associated with a persistent [[GeometricModelState]], or attached at run-time via a [[ContextOrbitGtState]].\r\n * Exported strictly for tests.\r\n */\r\nexport class OrbitGtTreeReference extends RealityModelTileTree.Reference {\r\n public readonly treeOwner: TileTreeOwner;\r\n protected _rdSourceKey: RealityDataSourceKey;\r\n private readonly _modelId: Id64String;\r\n\r\n public override get castsShadows() { return false; }\r\n public override get modelId() { return this._modelId; }\r\n\r\n public constructor(props: OrbitGtTileTree.ReferenceProps) {\r\n super(props);\r\n // Create rdSourceKey if not provided\r\n if (props.rdSourceKey) {\r\n this._rdSourceKey = props.rdSourceKey;\r\n } else if (props.orbitGtBlob) {\r\n this._rdSourceKey = RealityDataSource.createKeyFromOrbitGtBlobProps(props.orbitGtBlob);\r\n } else {\r\n // TODO: Maybe we should throw an exception\r\n this._rdSourceKey = RealityDataSource.createKeyFromBlobUrl(\"\", RealityDataProvider.OrbitGtBlob, RealityDataFormat.OPC);\r\n }\r\n\r\n // ###TODO find compatible model Id\r\n let modelId = props.modelId;\r\n if (undefined === modelId && this._source instanceof DisplayStyleState)\r\n modelId = orbitGtTreeSupplier.findCompatibleContextRealityModelId(this._rdSourceKey, this._source);\r\n\r\n this._modelId = modelId ?? props.iModel.transientIds.getNext();\r\n\r\n const ogtTreeId: OrbitGtTreeId = { rdSourceKey: this._rdSourceKey, modelId: this.modelId };\r\n this.treeOwner = orbitGtTreeSupplier.getOwner(ogtTreeId, props.iModel);\r\n }\r\n\r\n public override canSupplyToolTip(hit: HitDetail): boolean {\r\n const tree = this.treeOwner.tileTree;\r\n return undefined !== tree && hit.iModel === tree.iModel;\r\n }\r\n\r\n public override async getToolTip(hit: HitDetail): Promise<HTMLElement | string | undefined> {\r\n const tree = this.treeOwner.tileTree;\r\n if (undefined === tree || hit.iModel !== tree.iModel)\r\n return undefined;\r\n\r\n const strings = [];\r\n strings.push(IModelApp.localization.getLocalizedString(\"iModelJs:RealityModelTypes.OrbitGTPointCloud\"));\r\n\r\n if (this._name)\r\n strings.push(`${IModelApp.localization.getLocalizedString(\"iModelJs:TooltipInfo.Name\")} ${this._name}`);\r\n\r\n const div = document.createElement(\"div\");\r\n div.innerHTML = strings.join(\"<br>\");\r\n return div;\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"OrbitGtTileTree.js","sourceRoot":"","sources":["../../../../src/internal/tile/OrbitGtTileTree.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module TileTreeSupplier\r\n */\r\n\r\nimport { assert, BeTimePoint, compareStringsOrUndefined, Id64, Id64String } from \"@itwin/core-bentley\";\r\nimport {\r\n BatchType, Cartographic, ColorDef, Feature, FeatureTable, Frustum, FrustumPlanes, GeoCoordStatus, OrbitGtBlobProps, PackedFeatureTable, QParams3d,\r\n Quantization, RealityDataFormat, RealityDataProvider, RealityDataSourceKey, ViewFlagOverrides,\r\n} from \"@itwin/core-common\";\r\nimport { Point3d, Range3d, Transform, Vector3d } from \"@itwin/core-geometry\";\r\nimport {\r\n ALong, CRSManager, Downloader, DownloaderXhr, OnlineEngine, OPCReader, OrbitGtAList, OrbitGtBlockIndex, OrbitGtBounds, OrbitGtCoordinate,\r\n OrbitGtDataManager, OrbitGtFrameData, OrbitGtIProjectToViewForSort, OrbitGtIViewRequest, OrbitGtLevel, OrbitGtTileIndex, OrbitGtTileLoadSorter,\r\n OrbitGtTransform, PageCachedFile, PointDataRaw, UrlFS,\r\n} from \"@itwin/core-orbitgt\";\r\nimport { calculateEcefToDbTransformAtLocation } from \"../../BackgroundMapGeometry\";\r\nimport { DisplayStyleState } from \"../../DisplayStyleState\";\r\nimport { HitDetail } from \"../../HitDetail\";\r\nimport { IModelApp } from \"../../IModelApp\";\r\nimport { IModelConnection } from \"../../IModelConnection\";\r\nimport { RealityDataSource } from \"../../RealityDataSource\";\r\nimport { Mesh } from \"../../common/internal/render/MeshPrimitives\";\r\nimport { RenderGraphic } from \"../../render/RenderGraphic\";\r\nimport { RenderMemory } from \"../../render/RenderMemory\";\r\nimport { RenderSystem } from \"../../render/RenderSystem\";\r\nimport { ViewingSpace } from \"../../ViewingSpace\";\r\nimport { Viewport } from \"../../Viewport\";\r\nimport {\r\n LayerTileTreeHandler,\r\n MapLayerTreeSetting,\r\n RealityModelTileTree, Tile, TileContent, TileDrawArgs, TileLoadPriority, TileParams, TileRequest, TileTree, TileTreeOwner,\r\n TileTreeParams, TileTreeSupplier, TileUsageMarker,\r\n} from \"../../tile/internal\";\r\n\r\nconst scratchRange = Range3d.create();\r\nconst scratchWorldFrustum = new Frustum();\r\n\r\ninterface OrbitGtTreeId {\r\n rdSourceKey: RealityDataSourceKey;\r\n modelId: Id64String;\r\n}\r\n\r\nfunction compareSourceKeys(lhs: RealityDataSourceKey, rhs: RealityDataSourceKey): number {\r\n return compareStringsOrUndefined(lhs.id, rhs.id) || compareStringsOrUndefined(lhs.format, rhs.format) || compareStringsOrUndefined(lhs.iTwinId, rhs.iTwinId);\r\n}\r\n\r\nclass OrbitGtTreeSupplier implements TileTreeSupplier {\r\n public getOwner(treeId: OrbitGtTreeId, iModel: IModelConnection): TileTreeOwner {\r\n return iModel.tiles.getTileTreeOwner(treeId, this);\r\n }\r\n\r\n public async createTileTree(treeId: OrbitGtTreeId, iModel: IModelConnection): Promise<TileTree | undefined> {\r\n return OrbitGtTileTree.createOrbitGtTileTree(treeId.rdSourceKey, iModel, treeId.modelId);\r\n }\r\n\r\n public compareTileTreeIds(lhs: OrbitGtTreeId, rhs: OrbitGtTreeId): number {\r\n return compareStringsOrUndefined(lhs.modelId, rhs.modelId) || compareSourceKeys(lhs.rdSourceKey, rhs.rdSourceKey);\r\n }\r\n\r\n public findCompatibleContextRealityModelId(sourceKey: RealityDataSourceKey, style: DisplayStyleState): Id64String | undefined {\r\n const owners = style.iModel.tiles.getTreeOwnersForSupplier(this);\r\n for (const owner of owners) {\r\n // Find an existing tree with the same reality data source key.\r\n if (0 === compareSourceKeys(sourceKey, owner.id.rdSourceKey)) {\r\n const modelId = owner.id.modelId;\r\n assert(undefined !== modelId);\r\n\r\n // If the model Id is unused by any other context reality model in the view and does not identify a persistent reality model, use it.\r\n if (Id64.isTransientId64(modelId) && !style.contextRealityModelStates.some((model) => model.modelId === modelId))\r\n return modelId;\r\n }\r\n }\r\n\r\n return undefined;\r\n }\r\n}\r\n\r\nconst orbitGtTreeSupplier = new OrbitGtTreeSupplier();\r\n\r\nfunction transformFromOrbitGt(ogtTransform: OrbitGtTransform, result?: Transform): Transform {\r\n if (undefined === result)\r\n result = Transform.createIdentity();\r\n\r\n result.matrix.setRowValues(\r\n ogtTransform.getElement(0, 0), ogtTransform.getElement(0, 1), ogtTransform.getElement(0, 2),\r\n ogtTransform.getElement(1, 0), ogtTransform.getElement(1, 1), ogtTransform.getElement(1, 2),\r\n ogtTransform.getElement(2, 0), ogtTransform.getElement(2, 1), ogtTransform.getElement(2, 2));\r\n\r\n result.origin.x = ogtTransform.getElement(0, 3);\r\n result.origin.y = ogtTransform.getElement(1, 3);\r\n result.origin.z = ogtTransform.getElement(2, 3);\r\n return result;\r\n}\r\n\r\nfunction pointFromOrbitGt(ogtCoordinate: OrbitGtCoordinate, result?: Point3d): Point3d {\r\n if (undefined === result)\r\n result = Point3d.create();\r\n\r\n result.x = ogtCoordinate.x;\r\n result.y = ogtCoordinate.y;\r\n result.z = ogtCoordinate.z;\r\n\r\n return result;\r\n}\r\n\r\nfunction rangeFromOrbitGt(ogtBounds: OrbitGtBounds, result?: Range3d) {\r\n if (undefined === result)\r\n result = Range3d.create();\r\n\r\n pointFromOrbitGt(ogtBounds.min, result.low);\r\n pointFromOrbitGt(ogtBounds.max, result.high);\r\n return result;\r\n}\r\n\r\nexport function createOrbitGtTileTreeReference(props: OrbitGtTileTree.ReferenceProps): RealityModelTileTree.Reference {\r\n return new OrbitGtTreeReference(props);\r\n}\r\n\r\nclass OrbitGtTileTreeParams implements TileTreeParams {\r\n public id: string;\r\n public modelId: string;\r\n public iModel: IModelConnection;\r\n public get priority(): TileLoadPriority { return TileLoadPriority.Context; }\r\n\r\n public constructor(rdSourceKey: RealityDataSourceKey, iModel: IModelConnection, modelId: Id64String, public location: Transform) {\r\n const key = rdSourceKey;\r\n this.id = `${key.provider}:${key.format}:${key.id}:${key.iTwinId}`;\r\n this.modelId = modelId;\r\n this.iModel = iModel;\r\n }\r\n}\r\n\r\nclass OrbitGtRootTile extends Tile {\r\n protected _loadChildren(_resolve: (children: Tile[] | undefined) => void, _reject: (error: Error) => void): void { }\r\n public async requestContent(_isCanceled: () => boolean): Promise<TileRequest.Response> { return undefined; }\r\n public get channel() { return IModelApp.tileAdmin.channels.getForHttp(\"itwinjs-orbitgit\"); }\r\n public async readContent(_data: TileRequest.ResponseData, _system: RenderSystem, _isCanceled?: () => boolean): Promise<TileContent> { return {}; }\r\n public override freeMemory(): void { }\r\n\r\n constructor(params: TileParams, tree: TileTree) { super(params, tree); }\r\n}\r\n\r\nclass OrbitGtViewRequest extends OrbitGtIViewRequest {\r\n private _tileToIModelTransform: Transform;\r\n constructor(private _tileDrawArgs: TileDrawArgs, private _centerOffset: Vector3d) {\r\n super();\r\n this._tileToIModelTransform = _tileDrawArgs.location.multiplyTransformTransform(Transform.createTranslation(_centerOffset));\r\n }\r\n\r\n public isVisibleBox(bounds: OrbitGtBounds): boolean {\r\n const box = Frustum.fromRange(rangeFromOrbitGt(bounds, scratchRange));\r\n const worldBox = box.transformBy(this._tileToIModelTransform, scratchWorldFrustum);\r\n return FrustumPlanes.Containment.Outside !== this._tileDrawArgs.frustumPlanes.computeFrustumContainment(worldBox, undefined);\r\n }\r\n public getFrameTime(): number {\r\n return this._tileDrawArgs.now.milliseconds;\r\n }\r\n\r\n public shouldSplit(level: OrbitGtLevel, tile: OrbitGtTileIndex) {\r\n // get the world size of the tile voxels\r\n const tileCenter: OrbitGtCoordinate = level.getTileGrid().getCellCenter(tile.gridIndex);\r\n tileCenter.x += this._centerOffset.x;\r\n tileCenter.y += this._centerOffset.y;\r\n tileCenter.z += this._centerOffset.z;\r\n const worldCenter: Point3d = this._tileDrawArgs.location.multiplyXYZ(tileCenter.x, tileCenter.y, tileCenter.z);\r\n const worldCenter2: Point3d = this._tileDrawArgs.location.multiplyXYZ(tileCenter.x, tileCenter.y, tileCenter.z + level.getTileGrid().size.z);\r\n const voxelSize: number = worldCenter2.distance(worldCenter) / 64;\r\n // get the world size of a screen pixel at the tile center\r\n const viewPt: Point3d = this._tileDrawArgs.worldToViewMap.transform0.multiplyPoint3dQuietNormalize(worldCenter);\r\n const viewPt2: Point3d = new Point3d(viewPt.x + 1.0, viewPt.y, viewPt.z);\r\n const pixelSizeAtCenter: number = this._tileDrawArgs.worldToViewMap.transform1.multiplyPoint3dQuietNormalize(viewPt).distance(this._tileDrawArgs.worldToViewMap.transform1.multiplyPoint3dQuietNormalize(viewPt2));\r\n // stop splitting if the voxel size of the children becomes too small to improve quality\r\n const split: boolean = (0.5 * voxelSize > 2.0 * pixelSizeAtCenter);\r\n return split;\r\n }\r\n}\r\n\r\nclass TileSortProjector implements OrbitGtIProjectToViewForSort {\r\n private _sortTransform: Transform;\r\n constructor(iModelTransform: Transform, viewingSpace: ViewingSpace, centerOffset: Vector3d) {\r\n const rotation = viewingSpace.rotation;\r\n let origin: Vector3d;\r\n if (undefined === viewingSpace.eyePoint) {\r\n origin = Vector3d.createFrom(viewingSpace.viewOrigin);\r\n const viewDelta = viewingSpace.viewDelta;\r\n const eyeDelta = Vector3d.createFrom({ x: viewDelta.x / 2, y: viewDelta.y / 2, z: viewDelta.z * 10 });\r\n rotation.multiplyVector(eyeDelta, eyeDelta);\r\n origin.addInPlace(eyeDelta);\r\n } else {\r\n origin = Vector3d.createFrom(viewingSpace.eyePoint);\r\n }\r\n\r\n rotation.multiplyVector(origin);\r\n origin.scaleInPlace(-1);\r\n const toViewTransform = Transform.createOriginAndMatrix(origin, rotation);\r\n const tileToIModelTransform = iModelTransform.multiplyTransformTransform(Transform.createTranslation(centerOffset));\r\n this._sortTransform = toViewTransform.multiplyTransformTransform(tileToIModelTransform);\r\n }\r\n public projectToViewForSort(coordinate: OrbitGtCoordinate) {\r\n const point = pointFromOrbitGt(coordinate);\r\n this._sortTransform.multiplyPoint3d(point, point);\r\n coordinate.x = point.x;\r\n coordinate.y = point.y;\r\n coordinate.z = point.z;\r\n }\r\n}\r\n\r\nclass OrbitGtTileGraphic extends TileUsageMarker {\r\n public readonly graphic: RenderGraphic;\r\n\r\n public constructor(graphic: RenderGraphic, viewport: Viewport, time: BeTimePoint) {\r\n super();\r\n this.graphic = graphic;\r\n this.mark(viewport, time);\r\n }\r\n\r\n public [Symbol.dispose](): void {\r\n this.graphic[Symbol.dispose]();\r\n }\r\n}\r\n\r\nexport class OrbitGtTileTree extends TileTree {\r\n private _tileParams: TileParams;\r\n public rootTile: OrbitGtRootTile;\r\n public viewFlagOverrides: ViewFlagOverrides = {};\r\n private _tileGraphics = new Map<string, OrbitGtTileGraphic>();\r\n private readonly _layerHandler: LayerTileTreeHandler;\r\n public layerImageryTrees: MapLayerTreeSetting[] = [];\r\n\r\n public override get layerHandler() { return this._layerHandler; }\r\n\r\n public constructor(treeParams: TileTreeParams, private _dataManager: OrbitGtDataManager, cloudRange: Range3d, private _centerOffset: Vector3d, private _ecefTransform: Transform) {\r\n super(treeParams);\r\n\r\n this._layerHandler = new LayerTileTreeHandler(this);\r\n\r\n this._tileParams = { contentId: \"0\", range: cloudRange, maximumSize: 256 };\r\n this.rootTile = new OrbitGtRootTile(this._tileParams, this);\r\n }\r\n\r\n public override async getEcefTransform(): Promise<Transform | undefined> {\r\n return this._ecefTransform;\r\n }\r\n\r\n public override[Symbol.dispose](): void {\r\n if (this.isDisposed)\r\n return;\r\n\r\n for (const graphic of this._tileGraphics.values())\r\n graphic[Symbol.dispose]();\r\n\r\n this._tileGraphics.clear();\r\n super[Symbol.dispose]();\r\n }\r\n\r\n protected _selectTiles(_args: TileDrawArgs): Tile[] { return []; }\r\n public get is3d(): boolean { return true; }\r\n public override get isContentUnbounded(): boolean { return false; }\r\n public get maxDepth(): number | undefined { return undefined; }\r\n\r\n private _doPrune(olderThan: BeTimePoint) {\r\n for (const [key, graphic] of this._tileGraphics)\r\n if (graphic.isExpired(olderThan)) {\r\n graphic[Symbol.dispose]();\r\n this._tileGraphics.delete(key);\r\n }\r\n }\r\n\r\n public prune() {\r\n const olderThan = BeTimePoint.now().minus(this.expirationTime);\r\n this._doPrune(olderThan);\r\n }\r\n\r\n public override collectStatistics(stats: RenderMemory.Statistics): void {\r\n for (const tileGraphic of this._tileGraphics)\r\n tileGraphic[1].graphic.collectStatistics(stats);\r\n }\r\n\r\n public draw(args: TileDrawArgs) {\r\n const debugControl = args.context.target.debugControl;\r\n const debugBuilder = (debugControl && debugControl.displayRealityTileRanges) ? args.context.createSceneGraphicBuilder() : undefined;\r\n const doLogging = (debugControl && debugControl.logRealityTiles);\r\n const viewRequest = new OrbitGtViewRequest(args, this._centerOffset);\r\n const levelsInView = new OrbitGtAList<OrbitGtLevel>();\r\n const blocksInView = new OrbitGtAList<OrbitGtBlockIndex>();\r\n const tilesInView = new OrbitGtAList<OrbitGtTileIndex>();\r\n const frameData = new OrbitGtFrameData();\r\n\r\n this._dataManager.getViewTree().renderView3D(viewRequest, levelsInView, blocksInView, tilesInView, frameData.tilesToRender);\r\n this._dataManager.filterLoadList(levelsInView, blocksInView, tilesInView, frameData.levelsToLoad, frameData.blocksToLoad, frameData.tilesToLoad);\r\n tilesInView.sort(new OrbitGtTileLoadSorter(this._dataManager.getViewTree(), new TileSortProjector(this.iModelTransform, args.context.viewingSpace, this._centerOffset)));\r\n\r\n let totalPointCount = 0;\r\n const tileCount = frameData.tilesToRender.size();\r\n\r\n // Inform TileAdmin about tiles we are handling ourselves...\r\n IModelApp.tileAdmin.addExternalTilesForUser(args.context.viewport, { requested: frameData.tilesToLoad.size() + (frameData.hasMissingData() ? 1 : 0), selected: tileCount, ready: tileCount });\r\n\r\n if (debugBuilder)\r\n debugBuilder.setSymbology(ColorDef.red, ColorDef.red, 1);\r\n\r\n let minLevel = 100, maxLevel = -100;\r\n for (let t: number = 0; t < tileCount; t++) {\r\n const tile: PointDataRaw = frameData.tilesToRender.get(t) as PointDataRaw;\r\n minLevel = Math.min(minLevel, tile.tileIndex.level);\r\n maxLevel = Math.max(maxLevel, tile.tileIndex.level);\r\n totalPointCount += tile.tileIndex.pointCount;\r\n const key = tile.tileIndex.key;\r\n const cachedGraphic = this._tileGraphics.get(key);\r\n if (undefined !== cachedGraphic) {\r\n cachedGraphic.mark(args.context.viewport, args.now);\r\n args.graphics.add(cachedGraphic.graphic);\r\n } else {\r\n const range = rangeFromOrbitGt(tile.bounds);\r\n range.low.addInPlace(this._centerOffset);\r\n range.high.addInPlace(this._centerOffset);\r\n const qParams = QParams3d.fromRange(range, undefined, (tile.points8 != null) ? Quantization.rangeScale8 : Quantization.rangeScale16);\r\n const featureTable = new FeatureTable(1, this.modelId, BatchType.Primary);\r\n const features = new Mesh.Features(featureTable);\r\n const system = IModelApp.renderSystem;\r\n const voxelSize = (range.high.x - range.low.x) / 64;\r\n\r\n features.add(new Feature(this.modelId), 1);\r\n const tilePoints = (tile.points8 != null) ? tile.points8.toNativeBuffer() : tile.points16.toNativeBuffer();\r\n let renderGraphic = system.createPointCloud({\r\n positions: tilePoints,\r\n qparams: qParams,\r\n colors: tile.colors.toNativeBuffer(),\r\n features: features.toFeatureIndex(),\r\n voxelSize,\r\n colorFormat: \"bgr\",\r\n }, this.iModel);\r\n\r\n renderGraphic = system.createBatch(renderGraphic!, PackedFeatureTable.pack(featureTable), range);\r\n args.graphics.add(renderGraphic);\r\n this._tileGraphics.set(key, new OrbitGtTileGraphic(renderGraphic, args.context.viewport, args.now));\r\n }\r\n\r\n if (debugBuilder)\r\n debugBuilder.addRangeBox(rangeFromOrbitGt(tile.bounds));\r\n }\r\n\r\n if (debugBuilder)\r\n args.graphics.add(debugBuilder.finish());\r\n\r\n if (doLogging) {\r\n // eslint-disable-next-line no-console\r\n console.log(`Total OrbitGtTiles: ${tileCount} MinLevel: ${minLevel} MaxLevel: ${maxLevel} Total Points: ${totalPointCount}`);\r\n }\r\n\r\n args.drawGraphics();\r\n if (frameData.hasMissingData()) {\r\n this._dataManager.loadData(frameData).then(() => IModelApp.tileAdmin.onTileLoad.raiseEvent(this.rootTile)).catch((_err: any) => undefined);\r\n }\r\n }\r\n}\r\n\r\nexport namespace OrbitGtTileTree {\r\n export interface ReferenceProps extends RealityModelTileTree.ReferenceBaseProps {\r\n orbitGtBlob?: OrbitGtBlobProps;\r\n modelId?: Id64String;\r\n }\r\n function isValidSASToken(downloadUrl: string): boolean {\r\n\r\n // Create fake URL for and parameter parsing and SAS token URI parsing\r\n if (!downloadUrl.startsWith(\"http\"))\r\n downloadUrl = `http://x.com/x?${downloadUrl}`;\r\n\r\n const sasUrl = new URL(downloadUrl);\r\n\r\n const se = sasUrl.searchParams.get(\"se\");\r\n if (se) {\r\n const expiryUTC = new Date(se);\r\n const now = new Date();\r\n const currentUTC = new Date(now?.toUTCString());\r\n\r\n return expiryUTC >= currentUTC;\r\n }\r\n\r\n return false;\r\n }\r\n function isValidOrbitGtBlobProps(props: OrbitGtBlobProps): boolean {\r\n\r\n // Check main OrbitGtBlobProps fields are defined\r\n if (!props.accountName || !props.containerName || !props.blobFileName || !props.sasToken)\r\n return false;\r\n\r\n // Check SAS token is valid\r\n return isValidSASToken(props.sasToken);\r\n }\r\n\r\n export async function createOrbitGtTileTree(rdSourceKey: RealityDataSourceKey, iModel: IModelConnection, modelId: Id64String): Promise<TileTree | undefined> {\r\n const rdSource = await RealityDataSource.fromKey(rdSourceKey, iModel.iTwinId);\r\n const isContextShare = rdSourceKey.provider === RealityDataProvider.ContextShare;\r\n const isTilestUrl = rdSourceKey.provider === RealityDataProvider.TilesetUrl;\r\n\r\n let blobStringUrl: string;\r\n if (isContextShare) {\r\n const realityData = rdSource ? rdSource.realityData : undefined;\r\n if (rdSource === undefined || realityData === undefined)\r\n return undefined;\r\n const docRootName = realityData.rootDocument;\r\n if (!docRootName)\r\n return undefined;\r\n const token = await IModelApp.getAccessToken();\r\n const blobUrl = await realityData.getBlobUrl(token, docRootName);\r\n blobStringUrl = blobUrl.toString();\r\n } else if (isTilestUrl) {\r\n blobStringUrl = rdSourceKey.id;\r\n } else {\r\n const orbitGtBlobProps = RealityDataSource.createOrbitGtBlobPropsFromKey(rdSourceKey);\r\n if (orbitGtBlobProps === undefined)\r\n return undefined;\r\n if (!isValidOrbitGtBlobProps(orbitGtBlobProps))\r\n return undefined;\r\n const { accountName, containerName, blobFileName, sasToken } = orbitGtBlobProps;\r\n blobStringUrl = blobFileName;\r\n if (accountName.length > 0)\r\n blobStringUrl = UrlFS.getAzureBlobSasUrl(accountName, containerName, blobFileName, sasToken);\r\n }\r\n\r\n if (Downloader.INSTANCE == null)\r\n Downloader.INSTANCE = new DownloaderXhr();\r\n\r\n if (CRSManager.ENGINE == null)\r\n CRSManager.ENGINE = await OnlineEngine.create();\r\n\r\n // wrap a caching layer (16 MB) around the blob file\r\n const urlFS: UrlFS = new UrlFS();\r\n const blobFileSize: ALong = await urlFS.getFileLength(blobStringUrl);\r\n const cacheKilobytes = 128;\r\n const cachedBlobFile = new PageCachedFile(urlFS, blobStringUrl, blobFileSize, cacheKilobytes * 1024 /* pageSize*/, 128/* maxPageCount*/);\r\n const pointCloudReader = await OPCReader.openFile(cachedBlobFile, blobStringUrl, true/* lazyLoading*/);\r\n let pointCloudCRS = pointCloudReader.getFileCRS();\r\n if (pointCloudCRS == null)\r\n pointCloudCRS = \"\";\r\n const dataManager = new OrbitGtDataManager(pointCloudReader, pointCloudCRS, PointDataRaw.TYPE);\r\n const pointCloudBounds = dataManager.getPointCloudBounds();\r\n const pointCloudRange = rangeFromOrbitGt(pointCloudBounds);\r\n const pointCloudCenter = pointCloudRange.localXYZToWorld(.5, .5, .5)!;\r\n const addCloudCenter = Transform.createTranslation(pointCloudCenter);\r\n const ecefTransform = Transform.createIdentity();\r\n let pointCloudCenterToDb = addCloudCenter;\r\n if (pointCloudCRS.length > 0) {\r\n await CRSManager.ENGINE.prepareForArea(pointCloudCRS, pointCloudBounds);\r\n const wgs84CRS = \"4978\";\r\n await CRSManager.ENGINE.prepareForArea(wgs84CRS, new OrbitGtBounds());\r\n const pointCloudToEcef = transformFromOrbitGt(CRSManager.createTransform(pointCloudCRS, new OrbitGtCoordinate(pointCloudCenter.x, pointCloudCenter.y, pointCloudCenter.z), wgs84CRS));\r\n const pointCloudCenterToEcef = pointCloudToEcef.multiplyTransformTransform(addCloudCenter);\r\n ecefTransform.setFrom(pointCloudCenterToEcef);\r\n\r\n let ecefToDb = iModel.getMapEcefToDb(0);\r\n // In initial publishing version the iModel ecef Transform was used to locate the reality model.\r\n // This would work well only for tilesets published from that iModel but for iModels the ecef transform is calculated\r\n // at the center of the project extents and the reality model location may differ greatly, and the curvature of the earth\r\n // could introduce significant errors.\r\n // The publishing was modified to calculate the ecef transform at the reality model range center and at the same time the \"iModelPublishVersion\"\r\n // member was added to the root object.\r\n const ecefOrigin = pointCloudCenterToEcef.getOrigin();\r\n const dbOrigin = ecefToDb.multiplyPoint3d(ecefOrigin);\r\n const realityOriginToProjectDistance = iModel.projectExtents.distanceToPoint(dbOrigin);\r\n const maxProjectDistance = 1E5; // Only use the project GCS projection if within 100KM of the project. Don't attempt to use GCS if global reality model or in another locale - Results will be unreliable.\r\n if (realityOriginToProjectDistance < maxProjectDistance) {\r\n const cartographicOrigin = Cartographic.fromEcef(ecefOrigin);\r\n const geoConverter = iModel.noGcsDefined ? undefined : iModel.geoServices.getConverter(\"WGS84\");\r\n if (cartographicOrigin !== undefined && geoConverter !== undefined) {\r\n const geoOrigin = Point3d.create(cartographicOrigin.longitudeDegrees, cartographicOrigin.latitudeDegrees, cartographicOrigin.height);\r\n const response = await geoConverter.getIModelCoordinatesFromGeoCoordinates([geoOrigin]);\r\n if (response.iModelCoords[0].s === GeoCoordStatus.Success) {\r\n const ecefToDbOrigin = await calculateEcefToDbTransformAtLocation(Point3d.fromJSON(response.iModelCoords[0].p), iModel);\r\n if (ecefToDbOrigin)\r\n ecefToDb = ecefToDbOrigin;\r\n }\r\n }\r\n }\r\n\r\n pointCloudCenterToDb = ecefToDb.multiplyTransformTransform(pointCloudCenterToEcef);\r\n }\r\n const params = new OrbitGtTileTreeParams(rdSourceKey, iModel, modelId, pointCloudCenterToDb);\r\n\r\n // We use a RTC transform to avoid jitter from large cloud coordinates.\r\n const centerOffset = Vector3d.create(-pointCloudCenter.x, -pointCloudCenter.y, -pointCloudCenter.z);\r\n pointCloudRange.low.addInPlace(centerOffset);\r\n pointCloudRange.high.addInPlace(centerOffset);\r\n return new OrbitGtTileTree(params, dataManager, pointCloudRange, centerOffset, ecefTransform);\r\n }\r\n}\r\n\r\n/** Supplies a reality data [[TileTree]] from a URL. May be associated with a persistent [[GeometricModelState]], or attached at run-time via a [[ContextOrbitGtState]].\r\n * Exported strictly for tests.\r\n */\r\nexport class OrbitGtTreeReference extends RealityModelTileTree.Reference {\r\n public readonly treeOwner: TileTreeOwner;\r\n protected _rdSourceKey: RealityDataSourceKey;\r\n private readonly _modelId: Id64String;\r\n\r\n public override get castsShadows() { return false; }\r\n public override get modelId() { return this._modelId; }\r\n\r\n public constructor(props: OrbitGtTileTree.ReferenceProps) {\r\n super(props);\r\n // Create rdSourceKey if not provided\r\n if (props.rdSourceKey) {\r\n this._rdSourceKey = props.rdSourceKey;\r\n } else if (props.orbitGtBlob) {\r\n this._rdSourceKey = RealityDataSource.createKeyFromOrbitGtBlobProps(props.orbitGtBlob);\r\n } else {\r\n // TODO: Maybe we should throw an exception\r\n this._rdSourceKey = RealityDataSource.createKeyFromBlobUrl(\"\", RealityDataProvider.OrbitGtBlob, RealityDataFormat.OPC);\r\n }\r\n\r\n // ###TODO find compatible model Id\r\n let modelId = props.modelId;\r\n if (undefined === modelId && this._source instanceof DisplayStyleState)\r\n modelId = orbitGtTreeSupplier.findCompatibleContextRealityModelId(this._rdSourceKey, this._source);\r\n\r\n this._modelId = modelId ?? props.iModel.transientIds.getNext();\r\n\r\n const ogtTreeId: OrbitGtTreeId = { rdSourceKey: this._rdSourceKey, modelId: this.modelId };\r\n this.treeOwner = orbitGtTreeSupplier.getOwner(ogtTreeId, props.iModel);\r\n }\r\n\r\n public override canSupplyToolTip(hit: HitDetail): boolean {\r\n const tree = this.treeOwner.tileTree;\r\n return undefined !== tree && hit.iModel === tree.iModel;\r\n }\r\n\r\n public override async getToolTip(hit: HitDetail): Promise<HTMLElement | string | undefined> {\r\n const tree = this.treeOwner.tileTree;\r\n if (undefined === tree || hit.iModel !== tree.iModel)\r\n return undefined;\r\n\r\n const strings = [];\r\n strings.push(IModelApp.localization.getLocalizedString(\"iModelJs:RealityModelTypes.OrbitGTPointCloud\"));\r\n\r\n if (this._name)\r\n strings.push(`${IModelApp.localization.getLocalizedString(\"iModelJs:TooltipInfo.Name\")} ${this._name}`);\r\n\r\n const div = document.createElement(\"div\");\r\n div.innerHTML = strings.join(\"<br>\");\r\n return div;\r\n }\r\n}\r\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"PrimaryTileTree.d.ts","sourceRoot":"","sources":["../../../../src/internal/tile/PrimaryTileTree.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"PrimaryTileTree.d.ts","sourceRoot":"","sources":["../../../../src/internal/tile/PrimaryTileTree.ts"],"names":[],"mappings":"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"}
@@ -215,7 +215,8 @@ class PrimaryTreeReference extends internal_1.TileTreeReference {
215
215
  const edgesRequired = visibleEdges || core_common_1.RenderMode.SmoothShade !== renderMode || IModelApp_1.IModelApp.tileAdmin.alwaysRequestEdges;
216
216
  const edges = edgesRequired ? IModelApp_1.IModelApp.tileAdmin.edgeOptions : false;
217
217
  const sectionCut = this._sectionClip?.clipString;
218
- return { type: core_common_1.BatchType.Primary, edges, animationId, sectionCut };
218
+ const disablePolyfaceDecimation = IModelApp_1.IModelApp.tileAdmin.disablePolyfaceDecimation;
219
+ return { type: core_common_1.BatchType.Primary, edges, animationId, sectionCut, disablePolyfaceDecimation };
219
220
  }
220
221
  computeBaseTransform(tree) {
221
222
  return super.computeTransform(tree);
@@ -369,7 +370,7 @@ class MaskTreeReference extends internal_1.TileTreeReference {
369
370
  return this._owner;
370
371
  }
371
372
  createTreeId() {
372
- return { type: core_common_1.BatchType.Primary, edges: false };
373
+ return { type: core_common_1.BatchType.Primary, edges: false, disablePolyfaceDecimation: IModelApp_1.IModelApp.tileAdmin.disablePolyfaceDecimation };
373
374
  }
374
375
  }
375
376
  function createMaskTreeReference(view, model) {
@@ -395,7 +396,7 @@ class ModelMapLayerTileTreeReference extends internal_1.MapLayerTileTreeReferenc
395
396
  this._owner = primaryTreeSupplier.getOwner(this._id, this.iModel);
396
397
  }
397
398
  createTreeId() {
398
- return { type: core_common_1.BatchType.Primary, edges: false };
399
+ return { type: core_common_1.BatchType.Primary, edges: false, disablePolyfaceDecimation: IModelApp_1.IModelApp.tileAdmin.disablePolyfaceDecimation };
399
400
  }
400
401
  get treeOwner() {
401
402
  const newId = this.createTreeId();