@itwin/core-frontend 3.1.0-dev.8 → 3.2.0-dev.3

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 (789) hide show
  1. package/CHANGELOG.md +163 -35
  2. package/lib/cjs/AccuSnap.js +2 -2
  3. package/lib/cjs/AccuSnap.js.map +1 -1
  4. package/lib/cjs/ApproximateTerrainHeights.d.ts +1 -1
  5. package/lib/cjs/ApproximateTerrainHeights.d.ts.map +1 -1
  6. package/lib/cjs/ApproximateTerrainHeights.js +21 -9
  7. package/lib/cjs/ApproximateTerrainHeights.js.map +1 -1
  8. package/lib/cjs/ApproximateTerrainHeightsProps.d.ts +12 -0
  9. package/lib/cjs/ApproximateTerrainHeightsProps.d.ts.map +1 -0
  10. package/lib/cjs/ApproximateTerrainHeightsProps.js +13 -0
  11. package/lib/cjs/ApproximateTerrainHeightsProps.js.map +1 -0
  12. package/lib/cjs/CategorySelectorState.js +1 -1
  13. package/lib/cjs/CategorySelectorState.js.map +1 -1
  14. package/lib/cjs/DisplayStyleState.d.ts +4 -3
  15. package/lib/cjs/DisplayStyleState.d.ts.map +1 -1
  16. package/lib/cjs/DisplayStyleState.js +32 -8
  17. package/lib/cjs/DisplayStyleState.js.map +1 -1
  18. package/lib/cjs/DrawingViewState.d.ts.map +1 -1
  19. package/lib/cjs/DrawingViewState.js +6 -5
  20. package/lib/cjs/DrawingViewState.js.map +1 -1
  21. package/lib/cjs/FrontendLoggerCategory.d.ts +3 -1
  22. package/lib/cjs/FrontendLoggerCategory.d.ts.map +1 -1
  23. package/lib/cjs/FrontendLoggerCategory.js +2 -0
  24. package/lib/cjs/FrontendLoggerCategory.js.map +1 -1
  25. package/lib/cjs/HitDetail.js.map +1 -1
  26. package/lib/cjs/IModelApp.d.ts +8 -4
  27. package/lib/cjs/IModelApp.d.ts.map +1 -1
  28. package/lib/cjs/IModelApp.js +20 -10
  29. package/lib/cjs/IModelApp.js.map +1 -1
  30. package/lib/cjs/IModelConnection.d.ts +3 -5
  31. package/lib/cjs/IModelConnection.d.ts.map +1 -1
  32. package/lib/cjs/IModelConnection.js +4 -10
  33. package/lib/cjs/IModelConnection.js.map +1 -1
  34. package/lib/cjs/ImageUtil.d.ts.map +1 -1
  35. package/lib/cjs/ImageUtil.js +8 -14
  36. package/lib/cjs/ImageUtil.js.map +1 -1
  37. package/lib/cjs/LocalhostIpcApp.d.ts +2 -0
  38. package/lib/cjs/LocalhostIpcApp.d.ts.map +1 -1
  39. package/lib/cjs/LocalhostIpcApp.js +10 -4
  40. package/lib/cjs/LocalhostIpcApp.js.map +1 -1
  41. package/lib/cjs/RealityDataSource.d.ts +60 -14
  42. package/lib/cjs/RealityDataSource.d.ts.map +1 -1
  43. package/lib/cjs/RealityDataSource.js +36 -235
  44. package/lib/cjs/RealityDataSource.js.map +1 -1
  45. package/lib/cjs/RealityDataSourceCesiumIonAssetImpl.d.ts +67 -0
  46. package/lib/cjs/RealityDataSourceCesiumIonAssetImpl.d.ts.map +1 -0
  47. package/lib/cjs/RealityDataSourceCesiumIonAssetImpl.js +166 -0
  48. package/lib/cjs/RealityDataSourceCesiumIonAssetImpl.js.map +1 -0
  49. package/lib/cjs/RealityDataSourceContextShareImpl.d.ts +83 -0
  50. package/lib/cjs/RealityDataSourceContextShareImpl.d.ts.map +1 -0
  51. package/lib/cjs/RealityDataSourceContextShareImpl.js +234 -0
  52. package/lib/cjs/RealityDataSourceContextShareImpl.js.map +1 -0
  53. package/lib/cjs/RealityDataSourceTilesetUrlImpl.d.ts +65 -0
  54. package/lib/cjs/RealityDataSourceTilesetUrlImpl.d.ts.map +1 -0
  55. package/lib/cjs/RealityDataSourceTilesetUrlImpl.js +135 -0
  56. package/lib/cjs/RealityDataSourceTilesetUrlImpl.js.map +1 -0
  57. package/lib/cjs/SheetViewState.js +4 -0
  58. package/lib/cjs/SheetViewState.js.map +1 -1
  59. package/lib/cjs/ViewState.d.ts +8 -0
  60. package/lib/cjs/ViewState.d.ts.map +1 -1
  61. package/lib/cjs/ViewState.js +1 -1
  62. package/lib/cjs/ViewState.js.map +1 -1
  63. package/lib/cjs/Viewport.d.ts +30 -12
  64. package/lib/cjs/Viewport.d.ts.map +1 -1
  65. package/lib/cjs/Viewport.js +43 -1
  66. package/lib/cjs/Viewport.js.map +1 -1
  67. package/lib/cjs/core-frontend.d.ts +6 -4
  68. package/lib/cjs/core-frontend.d.ts.map +1 -1
  69. package/lib/cjs/core-frontend.js +6 -4
  70. package/lib/cjs/core-frontend.js.map +1 -1
  71. package/lib/cjs/extension/Extension.d.ts +48 -0
  72. package/lib/cjs/extension/Extension.d.ts.map +1 -0
  73. package/lib/cjs/extension/Extension.js +18 -0
  74. package/lib/cjs/extension/Extension.js.map +1 -0
  75. package/lib/cjs/extension/ExtensionAdmin.d.ts +64 -0
  76. package/lib/cjs/extension/ExtensionAdmin.d.ts.map +1 -0
  77. package/lib/cjs/extension/ExtensionAdmin.js +106 -0
  78. package/lib/cjs/extension/ExtensionAdmin.js.map +1 -0
  79. package/lib/cjs/extension/ExtensionHost.d.ts +23 -0
  80. package/lib/cjs/extension/ExtensionHost.d.ts.map +1 -0
  81. package/lib/cjs/extension/ExtensionHost.js +26 -0
  82. package/lib/cjs/extension/ExtensionHost.js.map +1 -0
  83. package/lib/cjs/extension/ExtensionImpl.d.ts +21 -0
  84. package/lib/cjs/extension/ExtensionImpl.d.ts.map +1 -0
  85. package/lib/cjs/extension/ExtensionImpl.js +45 -0
  86. package/lib/cjs/extension/ExtensionImpl.js.map +1 -0
  87. package/lib/cjs/extension/ExtensionLoader.d.ts +26 -0
  88. package/lib/cjs/extension/ExtensionLoader.d.ts.map +1 -0
  89. package/lib/cjs/extension/ExtensionLoader.js +10 -0
  90. package/lib/cjs/extension/ExtensionLoader.js.map +1 -0
  91. package/lib/cjs/extension/ExtensionRuntime.d.ts +5 -0
  92. package/lib/cjs/extension/ExtensionRuntime.d.ts.map +1 -0
  93. package/lib/cjs/extension/ExtensionRuntime.js +86 -0
  94. package/lib/cjs/extension/ExtensionRuntime.js.map +1 -0
  95. package/lib/cjs/extension/extensions.d.ts +19 -0
  96. package/lib/cjs/extension/extensions.d.ts.map +1 -0
  97. package/lib/cjs/extension/extensions.js +36 -0
  98. package/lib/cjs/extension/extensions.js.map +1 -0
  99. package/lib/cjs/quantity-formatting/BasicUnitsProvider.d.ts +2 -2
  100. package/lib/cjs/quantity-formatting/BasicUnitsProvider.d.ts.map +1 -1
  101. package/lib/cjs/quantity-formatting/BasicUnitsProvider.js +48 -44
  102. package/lib/cjs/quantity-formatting/BasicUnitsProvider.js.map +1 -1
  103. package/lib/cjs/quantity-formatting/QuantityFormatter.d.ts +90 -80
  104. package/lib/cjs/quantity-formatting/QuantityFormatter.d.ts.map +1 -1
  105. package/lib/cjs/quantity-formatting/QuantityFormatter.js +85 -45
  106. package/lib/cjs/quantity-formatting/QuantityFormatter.js.map +1 -1
  107. package/lib/cjs/quantity-formatting/QuantityTypesEditorSpecs.d.ts +54 -0
  108. package/lib/cjs/quantity-formatting/QuantityTypesEditorSpecs.d.ts.map +1 -0
  109. package/lib/cjs/quantity-formatting/QuantityTypesEditorSpecs.js +32 -0
  110. package/lib/cjs/quantity-formatting/QuantityTypesEditorSpecs.js.map +1 -0
  111. package/lib/cjs/quantity-formatting/UnitsData.d.ts +11 -0
  112. package/lib/cjs/quantity-formatting/UnitsData.d.ts.map +1 -0
  113. package/lib/cjs/quantity-formatting/UnitsData.js +59 -0
  114. package/lib/cjs/quantity-formatting/UnitsData.js.map +1 -0
  115. package/lib/cjs/render/GraphicBranch.d.ts +2 -0
  116. package/lib/cjs/render/GraphicBranch.d.ts.map +1 -1
  117. package/lib/cjs/render/GraphicBranch.js.map +1 -1
  118. package/lib/cjs/render/ParticleCollectionBuilder.d.ts.map +1 -1
  119. package/lib/cjs/render/ParticleCollectionBuilder.js +16 -9
  120. package/lib/cjs/render/ParticleCollectionBuilder.js.map +1 -1
  121. package/lib/cjs/render/RenderPlanarClassifier.d.ts +1 -1
  122. package/lib/cjs/render/RenderPlanarClassifier.d.ts.map +1 -1
  123. package/lib/cjs/render/RenderPlanarClassifier.js.map +1 -1
  124. package/lib/cjs/render/RenderSystem.d.ts +12 -7
  125. package/lib/cjs/render/RenderSystem.d.ts.map +1 -1
  126. package/lib/cjs/render/RenderSystem.js +27 -22
  127. package/lib/cjs/render/RenderSystem.js.map +1 -1
  128. package/lib/cjs/render/RenderTarget.d.ts +4 -4
  129. package/lib/cjs/render/RenderTarget.d.ts.map +1 -1
  130. package/lib/cjs/render/RenderTarget.js.map +1 -1
  131. package/lib/cjs/render/Scene.d.ts.map +1 -1
  132. package/lib/cjs/render/Scene.js.map +1 -1
  133. package/lib/cjs/render/primitives/EdgeParams.d.ts.map +1 -1
  134. package/lib/cjs/render/primitives/EdgeParams.js +3 -1
  135. package/lib/cjs/render/primitives/EdgeParams.js.map +1 -1
  136. package/lib/cjs/render/primitives/PolylineParams.d.ts.map +1 -1
  137. package/lib/cjs/render/primitives/PolylineParams.js +10 -5
  138. package/lib/cjs/render/primitives/PolylineParams.js.map +1 -1
  139. package/lib/cjs/render/primitives/VertexKey.d.ts +11 -8
  140. package/lib/cjs/render/primitives/VertexKey.d.ts.map +1 -1
  141. package/lib/cjs/render/primitives/VertexKey.js +24 -6
  142. package/lib/cjs/render/primitives/VertexKey.js.map +1 -1
  143. package/lib/cjs/render/primitives/VertexTable.d.ts +15 -2
  144. package/lib/cjs/render/primitives/VertexTable.d.ts.map +1 -1
  145. package/lib/cjs/render/primitives/VertexTable.js +273 -108
  146. package/lib/cjs/render/primitives/VertexTable.js.map +1 -1
  147. package/lib/cjs/render/primitives/geometry/GeometryAccumulator.d.ts.map +1 -1
  148. package/lib/cjs/render/primitives/geometry/GeometryAccumulator.js +22 -10
  149. package/lib/cjs/render/primitives/geometry/GeometryAccumulator.js.map +1 -1
  150. package/lib/cjs/render/primitives/mesh/MeshBuilder.d.ts +4 -6
  151. package/lib/cjs/render/primitives/mesh/MeshBuilder.d.ts.map +1 -1
  152. package/lib/cjs/render/primitives/mesh/MeshBuilder.js +16 -13
  153. package/lib/cjs/render/primitives/mesh/MeshBuilder.js.map +1 -1
  154. package/lib/cjs/render/primitives/mesh/MeshBuilderMap.d.ts.map +1 -1
  155. package/lib/cjs/render/primitives/mesh/MeshBuilderMap.js +12 -1
  156. package/lib/cjs/render/primitives/mesh/MeshBuilderMap.js.map +1 -1
  157. package/lib/cjs/render/primitives/mesh/MeshPrimitives.d.ts +45 -28
  158. package/lib/cjs/render/primitives/mesh/MeshPrimitives.d.ts.map +1 -1
  159. package/lib/cjs/render/primitives/mesh/MeshPrimitives.js +107 -146
  160. package/lib/cjs/render/primitives/mesh/MeshPrimitives.js.map +1 -1
  161. package/lib/cjs/render/primitives/mesh/RealityMeshPrimitive.d.ts +17 -2
  162. package/lib/cjs/render/primitives/mesh/RealityMeshPrimitive.d.ts.map +1 -1
  163. package/lib/cjs/render/primitives/mesh/RealityMeshPrimitive.js +39 -2
  164. package/lib/cjs/render/primitives/mesh/RealityMeshPrimitive.js.map +1 -1
  165. package/lib/cjs/render/webgl/BackgroundMapDrape.js +1 -1
  166. package/lib/cjs/render/webgl/BackgroundMapDrape.js.map +1 -1
  167. package/lib/cjs/render/webgl/BranchState.d.ts +2 -0
  168. package/lib/cjs/render/webgl/BranchState.d.ts.map +1 -1
  169. package/lib/cjs/render/webgl/BranchState.js +5 -3
  170. package/lib/cjs/render/webgl/BranchState.js.map +1 -1
  171. package/lib/cjs/render/webgl/CachedGeometry.d.ts +6 -0
  172. package/lib/cjs/render/webgl/CachedGeometry.d.ts.map +1 -1
  173. package/lib/cjs/render/webgl/CachedGeometry.js +6 -0
  174. package/lib/cjs/render/webgl/CachedGeometry.js.map +1 -1
  175. package/lib/cjs/render/webgl/DrawCommand.js +1 -1
  176. package/lib/cjs/render/webgl/DrawCommand.js.map +1 -1
  177. package/lib/cjs/render/webgl/Graphic.d.ts +5 -3
  178. package/lib/cjs/render/webgl/Graphic.d.ts.map +1 -1
  179. package/lib/cjs/render/webgl/Graphic.js +7 -2
  180. package/lib/cjs/render/webgl/Graphic.js.map +1 -1
  181. package/lib/cjs/render/webgl/PlanarClassifier.d.ts +4 -1
  182. package/lib/cjs/render/webgl/PlanarClassifier.d.ts.map +1 -1
  183. package/lib/cjs/render/webgl/PlanarClassifier.js +22 -9
  184. package/lib/cjs/render/webgl/PlanarClassifier.js.map +1 -1
  185. package/lib/cjs/render/webgl/PlanarTextureProjection.d.ts +2 -2
  186. package/lib/cjs/render/webgl/PlanarTextureProjection.d.ts.map +1 -1
  187. package/lib/cjs/render/webgl/PlanarTextureProjection.js +5 -3
  188. package/lib/cjs/render/webgl/PlanarTextureProjection.js.map +1 -1
  189. package/lib/cjs/render/webgl/RealityMesh.d.ts +31 -11
  190. package/lib/cjs/render/webgl/RealityMesh.d.ts.map +1 -1
  191. package/lib/cjs/render/webgl/RealityMesh.js +155 -52
  192. package/lib/cjs/render/webgl/RealityMesh.js.map +1 -1
  193. package/lib/cjs/render/webgl/RenderCommands.d.ts.map +1 -1
  194. package/lib/cjs/render/webgl/RenderCommands.js +4 -0
  195. package/lib/cjs/render/webgl/RenderCommands.js.map +1 -1
  196. package/lib/cjs/render/webgl/SceneCompositor.d.ts +3 -0
  197. package/lib/cjs/render/webgl/SceneCompositor.d.ts.map +1 -1
  198. package/lib/cjs/render/webgl/SceneCompositor.js +45 -19
  199. package/lib/cjs/render/webgl/SceneCompositor.js.map +1 -1
  200. package/lib/cjs/render/webgl/ShaderBuilder.d.ts +8 -7
  201. package/lib/cjs/render/webgl/ShaderBuilder.d.ts.map +1 -1
  202. package/lib/cjs/render/webgl/ShaderBuilder.js +12 -5
  203. package/lib/cjs/render/webgl/ShaderBuilder.js.map +1 -1
  204. package/lib/cjs/render/webgl/ShaderProgram.d.ts +1 -0
  205. package/lib/cjs/render/webgl/ShaderProgram.d.ts.map +1 -1
  206. package/lib/cjs/render/webgl/ShaderProgram.js +1 -0
  207. package/lib/cjs/render/webgl/ShaderProgram.js.map +1 -1
  208. package/lib/cjs/render/webgl/System.d.ts +9 -9
  209. package/lib/cjs/render/webgl/System.d.ts.map +1 -1
  210. package/lib/cjs/render/webgl/System.js +5 -5
  211. package/lib/cjs/render/webgl/System.js.map +1 -1
  212. package/lib/cjs/render/webgl/Target.d.ts.map +1 -1
  213. package/lib/cjs/render/webgl/Target.js.map +1 -1
  214. package/lib/cjs/render/webgl/VertexLUT.d.ts +2 -1
  215. package/lib/cjs/render/webgl/VertexLUT.d.ts.map +1 -1
  216. package/lib/cjs/render/webgl/VertexLUT.js +4 -3
  217. package/lib/cjs/render/webgl/VertexLUT.js.map +1 -1
  218. package/lib/cjs/render/webgl/glsl/Color.js +1 -1
  219. package/lib/cjs/render/webgl/glsl/Color.js.map +1 -1
  220. package/lib/cjs/render/webgl/glsl/Decode.d.ts +6 -0
  221. package/lib/cjs/render/webgl/glsl/Decode.d.ts.map +1 -1
  222. package/lib/cjs/render/webgl/glsl/Decode.js +18 -1
  223. package/lib/cjs/render/webgl/glsl/Decode.js.map +1 -1
  224. package/lib/cjs/render/webgl/glsl/Edge.d.ts.map +1 -1
  225. package/lib/cjs/render/webgl/glsl/Edge.js +15 -6
  226. package/lib/cjs/render/webgl/glsl/Edge.js.map +1 -1
  227. package/lib/cjs/render/webgl/glsl/PlanarClassification.js +1 -1
  228. package/lib/cjs/render/webgl/glsl/PlanarClassification.js.map +1 -1
  229. package/lib/cjs/render/webgl/glsl/PointString.d.ts.map +1 -1
  230. package/lib/cjs/render/webgl/glsl/PointString.js +1 -1
  231. package/lib/cjs/render/webgl/glsl/PointString.js.map +1 -1
  232. package/lib/cjs/render/webgl/glsl/Polyline.d.ts +2 -2
  233. package/lib/cjs/render/webgl/glsl/Polyline.d.ts.map +1 -1
  234. package/lib/cjs/render/webgl/glsl/Polyline.js +24 -9
  235. package/lib/cjs/render/webgl/glsl/Polyline.js.map +1 -1
  236. package/lib/cjs/render/webgl/glsl/RealityMesh.d.ts.map +1 -1
  237. package/lib/cjs/render/webgl/glsl/RealityMesh.js +102 -27
  238. package/lib/cjs/render/webgl/glsl/RealityMesh.js.map +1 -1
  239. package/lib/cjs/render/webgl/glsl/Surface.d.ts.map +1 -1
  240. package/lib/cjs/render/webgl/glsl/Surface.js +18 -19
  241. package/lib/cjs/render/webgl/glsl/Surface.js.map +1 -1
  242. package/lib/cjs/render/webgl/glsl/Thematic.d.ts.map +1 -1
  243. package/lib/cjs/render/webgl/glsl/Thematic.js +1 -6
  244. package/lib/cjs/render/webgl/glsl/Thematic.js.map +1 -1
  245. package/lib/cjs/render/webgl/glsl/Vertex.d.ts.map +1 -1
  246. package/lib/cjs/render/webgl/glsl/Vertex.js +31 -14
  247. package/lib/cjs/render/webgl/glsl/Vertex.js.map +1 -1
  248. package/lib/cjs/tile/ClassifierTileTree.d.ts +4 -2
  249. package/lib/cjs/tile/ClassifierTileTree.d.ts.map +1 -1
  250. package/lib/cjs/tile/ClassifierTileTree.js +31 -16
  251. package/lib/cjs/tile/ClassifierTileTree.js.map +1 -1
  252. package/lib/cjs/tile/GltfReader.d.ts +22 -3
  253. package/lib/cjs/tile/GltfReader.d.ts.map +1 -1
  254. package/lib/cjs/tile/GltfReader.js +231 -45
  255. package/lib/cjs/tile/GltfReader.js.map +1 -1
  256. package/lib/cjs/tile/OPCFormatInterpreter.d.ts +22 -0
  257. package/lib/cjs/tile/OPCFormatInterpreter.d.ts.map +1 -0
  258. package/lib/cjs/tile/OPCFormatInterpreter.js +92 -0
  259. package/lib/cjs/tile/OPCFormatInterpreter.js.map +1 -0
  260. package/lib/cjs/tile/PntsReader.d.ts +1 -1
  261. package/lib/cjs/tile/PntsReader.d.ts.map +1 -1
  262. package/lib/cjs/tile/PntsReader.js +170 -36
  263. package/lib/cjs/tile/PntsReader.js.map +1 -1
  264. package/lib/cjs/tile/PrimaryTileTree.d.ts +18 -2
  265. package/lib/cjs/tile/PrimaryTileTree.d.ts.map +1 -1
  266. package/lib/cjs/tile/PrimaryTileTree.js +53 -2
  267. package/lib/cjs/tile/PrimaryTileTree.js.map +1 -1
  268. package/lib/cjs/tile/RealityModelTileTree.d.ts +24 -3
  269. package/lib/cjs/tile/RealityModelTileTree.d.ts.map +1 -1
  270. package/lib/cjs/tile/RealityModelTileTree.js +36 -11
  271. package/lib/cjs/tile/RealityModelTileTree.js.map +1 -1
  272. package/lib/cjs/tile/RealityTile.d.ts +16 -2
  273. package/lib/cjs/tile/RealityTile.d.ts.map +1 -1
  274. package/lib/cjs/tile/RealityTile.js +32 -0
  275. package/lib/cjs/tile/RealityTile.js.map +1 -1
  276. package/lib/cjs/tile/RealityTileDrawArgs.d.ts +4 -1
  277. package/lib/cjs/tile/RealityTileDrawArgs.d.ts.map +1 -1
  278. package/lib/cjs/tile/RealityTileDrawArgs.js +3 -1
  279. package/lib/cjs/tile/RealityTileDrawArgs.js.map +1 -1
  280. package/lib/cjs/tile/RealityTileLoader.d.ts +7 -4
  281. package/lib/cjs/tile/RealityTileLoader.d.ts.map +1 -1
  282. package/lib/cjs/tile/RealityTileLoader.js +19 -5
  283. package/lib/cjs/tile/RealityTileLoader.js.map +1 -1
  284. package/lib/cjs/tile/RealityTileTree.d.ts +4 -1
  285. package/lib/cjs/tile/RealityTileTree.d.ts.map +1 -1
  286. package/lib/cjs/tile/RealityTileTree.js +11 -3
  287. package/lib/cjs/tile/RealityTileTree.js.map +1 -1
  288. package/lib/cjs/tile/ThreeDTileFormatInterpreter.d.ts +52 -0
  289. package/lib/cjs/tile/ThreeDTileFormatInterpreter.d.ts.map +1 -0
  290. package/lib/cjs/tile/ThreeDTileFormatInterpreter.js +179 -0
  291. package/lib/cjs/tile/ThreeDTileFormatInterpreter.js.map +1 -0
  292. package/lib/cjs/tile/TileDrawArgs.d.ts +2 -0
  293. package/lib/cjs/tile/TileDrawArgs.d.ts.map +1 -1
  294. package/lib/cjs/tile/TileDrawArgs.js +5 -0
  295. package/lib/cjs/tile/TileDrawArgs.js.map +1 -1
  296. package/lib/cjs/tile/TileGeometryCollector.d.ts +80 -0
  297. package/lib/cjs/tile/TileGeometryCollector.d.ts.map +1 -0
  298. package/lib/cjs/tile/TileGeometryCollector.js +71 -0
  299. package/lib/cjs/tile/TileGeometryCollector.js.map +1 -0
  300. package/lib/cjs/tile/TileTree.d.ts +7 -1
  301. package/lib/cjs/tile/TileTree.d.ts.map +1 -1
  302. package/lib/cjs/tile/TileTree.js +7 -0
  303. package/lib/cjs/tile/TileTree.js.map +1 -1
  304. package/lib/cjs/tile/TileTreeReference.d.ts +26 -1
  305. package/lib/cjs/tile/TileTreeReference.d.ts.map +1 -1
  306. package/lib/cjs/tile/TileTreeReference.js +40 -0
  307. package/lib/cjs/tile/TileTreeReference.js.map +1 -1
  308. package/lib/cjs/tile/internal.d.ts +4 -0
  309. package/lib/cjs/tile/internal.d.ts.map +1 -1
  310. package/lib/cjs/tile/internal.js +4 -0
  311. package/lib/cjs/tile/internal.js.map +1 -1
  312. package/lib/cjs/tile/map/BingElevation.d.ts +2 -16
  313. package/lib/cjs/tile/map/BingElevation.d.ts.map +1 -1
  314. package/lib/cjs/tile/map/BingElevation.js +1 -63
  315. package/lib/cjs/tile/map/BingElevation.js.map +1 -1
  316. package/lib/cjs/tile/map/CesiumTerrainProvider.js +2 -2
  317. package/lib/cjs/tile/map/CesiumTerrainProvider.js.map +1 -1
  318. package/lib/cjs/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.d.ts +5 -3
  319. package/lib/cjs/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.d.ts.map +1 -1
  320. package/lib/cjs/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js +45 -12
  321. package/lib/cjs/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js.map +1 -1
  322. package/lib/cjs/tile/map/ImageryProviders/AzureMapsLayerImageryProvider.d.ts +2 -2
  323. package/lib/cjs/tile/map/ImageryProviders/AzureMapsLayerImageryProvider.d.ts.map +1 -1
  324. package/lib/cjs/tile/map/ImageryProviders/AzureMapsLayerImageryProvider.js.map +1 -1
  325. package/lib/cjs/tile/map/ImageryProviders/BingImageryProvider.d.ts +2 -2
  326. package/lib/cjs/tile/map/ImageryProviders/BingImageryProvider.d.ts.map +1 -1
  327. package/lib/cjs/tile/map/ImageryProviders/BingImageryProvider.js.map +1 -1
  328. package/lib/cjs/tile/map/ImageryProviders/MapBoxLayerImageryProvider.d.ts +2 -2
  329. package/lib/cjs/tile/map/ImageryProviders/MapBoxLayerImageryProvider.d.ts.map +1 -1
  330. package/lib/cjs/tile/map/ImageryProviders/MapBoxLayerImageryProvider.js +4 -3
  331. package/lib/cjs/tile/map/ImageryProviders/MapBoxLayerImageryProvider.js.map +1 -1
  332. package/lib/cjs/tile/map/ImageryProviders/TileUrlImageryProvider.d.ts +2 -2
  333. package/lib/cjs/tile/map/ImageryProviders/TileUrlImageryProvider.d.ts.map +1 -1
  334. package/lib/cjs/tile/map/ImageryProviders/TileUrlImageryProvider.js.map +1 -1
  335. package/lib/cjs/tile/map/ImageryProviders/WmsMapLayerImageryProvider.d.ts +2 -2
  336. package/lib/cjs/tile/map/ImageryProviders/WmsMapLayerImageryProvider.d.ts.map +1 -1
  337. package/lib/cjs/tile/map/ImageryProviders/WmsMapLayerImageryProvider.js +1 -1
  338. package/lib/cjs/tile/map/ImageryProviders/WmsMapLayerImageryProvider.js.map +1 -1
  339. package/lib/cjs/tile/map/ImageryProviders/WmtsMapLayerImageryProvider.d.ts +2 -2
  340. package/lib/cjs/tile/map/ImageryProviders/WmtsMapLayerImageryProvider.d.ts.map +1 -1
  341. package/lib/cjs/tile/map/ImageryProviders/WmtsMapLayerImageryProvider.js.map +1 -1
  342. package/lib/cjs/tile/map/ImageryTileTree.d.ts +2 -3
  343. package/lib/cjs/tile/map/ImageryTileTree.d.ts.map +1 -1
  344. package/lib/cjs/tile/map/ImageryTileTree.js +4 -3
  345. package/lib/cjs/tile/map/ImageryTileTree.js.map +1 -1
  346. package/lib/cjs/tile/map/MapFeatureInfo.d.ts +26 -0
  347. package/lib/cjs/tile/map/MapFeatureInfo.d.ts.map +1 -0
  348. package/lib/cjs/tile/map/MapFeatureInfo.js +19 -0
  349. package/lib/cjs/tile/map/MapFeatureInfo.js.map +1 -0
  350. package/lib/cjs/tile/map/MapLayerFormatRegistry.d.ts +4 -4
  351. package/lib/cjs/tile/map/MapLayerFormatRegistry.d.ts.map +1 -1
  352. package/lib/cjs/tile/map/MapLayerFormatRegistry.js.map +1 -1
  353. package/lib/cjs/tile/map/MapLayerImageryFormats.d.ts +3 -3
  354. package/lib/cjs/tile/map/MapLayerImageryFormats.d.ts.map +1 -1
  355. package/lib/cjs/tile/map/MapLayerImageryFormats.js.map +1 -1
  356. package/lib/cjs/tile/map/MapLayerImageryProvider.d.ts +5 -4
  357. package/lib/cjs/tile/map/MapLayerImageryProvider.d.ts.map +1 -1
  358. package/lib/cjs/tile/map/MapLayerImageryProvider.js +5 -1
  359. package/lib/cjs/tile/map/MapLayerImageryProvider.js.map +1 -1
  360. package/lib/cjs/tile/map/MapLayerSources.d.ts +2 -2
  361. package/lib/cjs/tile/map/MapLayerSources.d.ts.map +1 -1
  362. package/lib/cjs/tile/map/MapLayerSources.js +6 -4
  363. package/lib/cjs/tile/map/MapLayerSources.js.map +1 -1
  364. package/lib/cjs/tile/map/MapLayerTileTreeReference.d.ts +10 -2
  365. package/lib/cjs/tile/map/MapLayerTileTreeReference.d.ts.map +1 -1
  366. package/lib/cjs/tile/map/MapLayerTileTreeReference.js +26 -3
  367. package/lib/cjs/tile/map/MapLayerTileTreeReference.js.map +1 -1
  368. package/lib/cjs/tile/map/MapTile.d.ts +12 -10
  369. package/lib/cjs/tile/map/MapTile.d.ts.map +1 -1
  370. package/lib/cjs/tile/map/MapTile.js +60 -39
  371. package/lib/cjs/tile/map/MapTile.js.map +1 -1
  372. package/lib/cjs/tile/map/MapTileLoader.d.ts +2 -1
  373. package/lib/cjs/tile/map/MapTileLoader.d.ts.map +1 -1
  374. package/lib/cjs/tile/map/MapTileLoader.js +4 -1
  375. package/lib/cjs/tile/map/MapTileLoader.js.map +1 -1
  376. package/lib/cjs/tile/map/MapTileTree.d.ts +18 -8
  377. package/lib/cjs/tile/map/MapTileTree.d.ts.map +1 -1
  378. package/lib/cjs/tile/map/MapTileTree.js +148 -61
  379. package/lib/cjs/tile/map/MapTileTree.js.map +1 -1
  380. package/lib/cjs/tile/map/MapTiledGraphicsProvider.d.ts.map +1 -1
  381. package/lib/cjs/tile/map/MapTiledGraphicsProvider.js +1 -1
  382. package/lib/cjs/tile/map/MapTiledGraphicsProvider.js.map +1 -1
  383. package/lib/cjs/tools/ToolAdmin.d.ts +2 -3
  384. package/lib/cjs/tools/ToolAdmin.d.ts.map +1 -1
  385. package/lib/cjs/tools/ToolAdmin.js +7 -2
  386. package/lib/cjs/tools/ToolAdmin.js.map +1 -1
  387. package/lib/cjs/tools/ViewTool.d.ts +4 -4
  388. package/lib/cjs/tools/ViewTool.d.ts.map +1 -1
  389. package/lib/cjs/tools/ViewTool.js +1 -1
  390. package/lib/cjs/tools/ViewTool.js.map +1 -1
  391. package/lib/esm/AccuSnap.js +2 -2
  392. package/lib/esm/AccuSnap.js.map +1 -1
  393. package/lib/esm/ApproximateTerrainHeights.d.ts +1 -1
  394. package/lib/esm/ApproximateTerrainHeights.d.ts.map +1 -1
  395. package/lib/esm/ApproximateTerrainHeights.js +2 -9
  396. package/lib/esm/ApproximateTerrainHeights.js.map +1 -1
  397. package/lib/esm/ApproximateTerrainHeightsProps.d.ts +12 -0
  398. package/lib/esm/ApproximateTerrainHeightsProps.d.ts.map +1 -0
  399. package/lib/esm/ApproximateTerrainHeightsProps.js +10 -0
  400. package/lib/esm/ApproximateTerrainHeightsProps.js.map +1 -0
  401. package/lib/esm/CategorySelectorState.js +1 -1
  402. package/lib/esm/CategorySelectorState.js.map +1 -1
  403. package/lib/esm/DisplayStyleState.d.ts +4 -3
  404. package/lib/esm/DisplayStyleState.d.ts.map +1 -1
  405. package/lib/esm/DisplayStyleState.js +34 -10
  406. package/lib/esm/DisplayStyleState.js.map +1 -1
  407. package/lib/esm/DrawingViewState.d.ts.map +1 -1
  408. package/lib/esm/DrawingViewState.js +6 -5
  409. package/lib/esm/DrawingViewState.js.map +1 -1
  410. package/lib/esm/FrontendLoggerCategory.d.ts +3 -1
  411. package/lib/esm/FrontendLoggerCategory.d.ts.map +1 -1
  412. package/lib/esm/FrontendLoggerCategory.js +2 -0
  413. package/lib/esm/FrontendLoggerCategory.js.map +1 -1
  414. package/lib/esm/HitDetail.js.map +1 -1
  415. package/lib/esm/IModelApp.d.ts +8 -4
  416. package/lib/esm/IModelApp.d.ts.map +1 -1
  417. package/lib/esm/IModelApp.js +20 -10
  418. package/lib/esm/IModelApp.js.map +1 -1
  419. package/lib/esm/IModelConnection.d.ts +3 -5
  420. package/lib/esm/IModelConnection.d.ts.map +1 -1
  421. package/lib/esm/IModelConnection.js +5 -11
  422. package/lib/esm/IModelConnection.js.map +1 -1
  423. package/lib/esm/ImageUtil.d.ts.map +1 -1
  424. package/lib/esm/ImageUtil.js +8 -14
  425. package/lib/esm/ImageUtil.js.map +1 -1
  426. package/lib/esm/LocalhostIpcApp.d.ts +2 -0
  427. package/lib/esm/LocalhostIpcApp.d.ts.map +1 -1
  428. package/lib/esm/LocalhostIpcApp.js +10 -4
  429. package/lib/esm/LocalhostIpcApp.js.map +1 -1
  430. package/lib/esm/RealityDataSource.d.ts +60 -14
  431. package/lib/esm/RealityDataSource.d.ts.map +1 -1
  432. package/lib/esm/RealityDataSource.js +37 -237
  433. package/lib/esm/RealityDataSource.js.map +1 -1
  434. package/lib/esm/RealityDataSourceCesiumIonAssetImpl.d.ts +67 -0
  435. package/lib/esm/RealityDataSourceCesiumIonAssetImpl.d.ts.map +1 -0
  436. package/lib/esm/RealityDataSourceCesiumIonAssetImpl.js +162 -0
  437. package/lib/esm/RealityDataSourceCesiumIonAssetImpl.js.map +1 -0
  438. package/lib/esm/RealityDataSourceContextShareImpl.d.ts +83 -0
  439. package/lib/esm/RealityDataSourceContextShareImpl.d.ts.map +1 -0
  440. package/lib/esm/RealityDataSourceContextShareImpl.js +230 -0
  441. package/lib/esm/RealityDataSourceContextShareImpl.js.map +1 -0
  442. package/lib/esm/RealityDataSourceTilesetUrlImpl.d.ts +65 -0
  443. package/lib/esm/RealityDataSourceTilesetUrlImpl.d.ts.map +1 -0
  444. package/lib/esm/RealityDataSourceTilesetUrlImpl.js +131 -0
  445. package/lib/esm/RealityDataSourceTilesetUrlImpl.js.map +1 -0
  446. package/lib/esm/SheetViewState.js +4 -0
  447. package/lib/esm/SheetViewState.js.map +1 -1
  448. package/lib/esm/ViewState.d.ts +8 -0
  449. package/lib/esm/ViewState.d.ts.map +1 -1
  450. package/lib/esm/ViewState.js +1 -1
  451. package/lib/esm/ViewState.js.map +1 -1
  452. package/lib/esm/Viewport.d.ts +30 -12
  453. package/lib/esm/Viewport.d.ts.map +1 -1
  454. package/lib/esm/Viewport.js +43 -1
  455. package/lib/esm/Viewport.js.map +1 -1
  456. package/lib/esm/core-frontend.d.ts +6 -4
  457. package/lib/esm/core-frontend.d.ts.map +1 -1
  458. package/lib/esm/core-frontend.js +6 -4
  459. package/lib/esm/core-frontend.js.map +1 -1
  460. package/lib/esm/extension/Extension.d.ts +48 -0
  461. package/lib/esm/extension/Extension.d.ts.map +1 -0
  462. package/lib/esm/extension/Extension.js +15 -0
  463. package/lib/esm/extension/Extension.js.map +1 -0
  464. package/lib/esm/extension/ExtensionAdmin.d.ts +64 -0
  465. package/lib/esm/extension/ExtensionAdmin.d.ts.map +1 -0
  466. package/lib/esm/extension/ExtensionAdmin.js +102 -0
  467. package/lib/esm/extension/ExtensionAdmin.js.map +1 -0
  468. package/lib/esm/extension/ExtensionHost.d.ts +23 -0
  469. package/lib/esm/extension/ExtensionHost.d.ts.map +1 -0
  470. package/lib/esm/extension/ExtensionHost.js +22 -0
  471. package/lib/esm/extension/ExtensionHost.js.map +1 -0
  472. package/lib/esm/extension/ExtensionImpl.d.ts +21 -0
  473. package/lib/esm/extension/ExtensionImpl.d.ts.map +1 -0
  474. package/lib/esm/extension/ExtensionImpl.js +40 -0
  475. package/lib/esm/extension/ExtensionImpl.js.map +1 -0
  476. package/lib/esm/extension/ExtensionLoader.d.ts +26 -0
  477. package/lib/esm/extension/ExtensionLoader.d.ts.map +1 -0
  478. package/lib/esm/extension/ExtensionLoader.js +9 -0
  479. package/lib/esm/extension/ExtensionLoader.js.map +1 -0
  480. package/lib/esm/extension/ExtensionRuntime.d.ts +5 -0
  481. package/lib/esm/extension/ExtensionRuntime.d.ts.map +1 -0
  482. package/lib/esm/extension/ExtensionRuntime.js +84 -0
  483. package/lib/esm/extension/ExtensionRuntime.js.map +1 -0
  484. package/lib/esm/extension/extensions.d.ts +19 -0
  485. package/lib/esm/extension/extensions.d.ts.map +1 -0
  486. package/lib/esm/extension/extensions.js +24 -0
  487. package/lib/esm/extension/extensions.js.map +1 -0
  488. package/lib/esm/quantity-formatting/BasicUnitsProvider.d.ts +2 -2
  489. package/lib/esm/quantity-formatting/BasicUnitsProvider.d.ts.map +1 -1
  490. package/lib/esm/quantity-formatting/BasicUnitsProvider.js +48 -44
  491. package/lib/esm/quantity-formatting/BasicUnitsProvider.js.map +1 -1
  492. package/lib/esm/quantity-formatting/QuantityFormatter.d.ts +90 -80
  493. package/lib/esm/quantity-formatting/QuantityFormatter.d.ts.map +1 -1
  494. package/lib/esm/quantity-formatting/QuantityFormatter.js +85 -42
  495. package/lib/esm/quantity-formatting/QuantityFormatter.js.map +1 -1
  496. package/lib/esm/quantity-formatting/QuantityTypesEditorSpecs.d.ts +54 -0
  497. package/lib/esm/quantity-formatting/QuantityTypesEditorSpecs.d.ts.map +1 -0
  498. package/lib/esm/quantity-formatting/QuantityTypesEditorSpecs.js +26 -0
  499. package/lib/esm/quantity-formatting/QuantityTypesEditorSpecs.js.map +1 -0
  500. package/lib/esm/quantity-formatting/UnitsData.d.ts +11 -0
  501. package/lib/esm/quantity-formatting/UnitsData.d.ts.map +1 -0
  502. package/lib/esm/quantity-formatting/UnitsData.js +56 -0
  503. package/lib/esm/quantity-formatting/UnitsData.js.map +1 -0
  504. package/lib/esm/render/GraphicBranch.d.ts +2 -0
  505. package/lib/esm/render/GraphicBranch.d.ts.map +1 -1
  506. package/lib/esm/render/GraphicBranch.js.map +1 -1
  507. package/lib/esm/render/ParticleCollectionBuilder.d.ts.map +1 -1
  508. package/lib/esm/render/ParticleCollectionBuilder.js +17 -10
  509. package/lib/esm/render/ParticleCollectionBuilder.js.map +1 -1
  510. package/lib/esm/render/RenderPlanarClassifier.d.ts +1 -1
  511. package/lib/esm/render/RenderPlanarClassifier.d.ts.map +1 -1
  512. package/lib/esm/render/RenderPlanarClassifier.js.map +1 -1
  513. package/lib/esm/render/RenderSystem.d.ts +12 -7
  514. package/lib/esm/render/RenderSystem.d.ts.map +1 -1
  515. package/lib/esm/render/RenderSystem.js +25 -20
  516. package/lib/esm/render/RenderSystem.js.map +1 -1
  517. package/lib/esm/render/RenderTarget.d.ts +4 -4
  518. package/lib/esm/render/RenderTarget.d.ts.map +1 -1
  519. package/lib/esm/render/RenderTarget.js.map +1 -1
  520. package/lib/esm/render/Scene.d.ts.map +1 -1
  521. package/lib/esm/render/Scene.js.map +1 -1
  522. package/lib/esm/render/primitives/EdgeParams.d.ts.map +1 -1
  523. package/lib/esm/render/primitives/EdgeParams.js +3 -1
  524. package/lib/esm/render/primitives/EdgeParams.js.map +1 -1
  525. package/lib/esm/render/primitives/PolylineParams.d.ts.map +1 -1
  526. package/lib/esm/render/primitives/PolylineParams.js +11 -6
  527. package/lib/esm/render/primitives/PolylineParams.js.map +1 -1
  528. package/lib/esm/render/primitives/VertexKey.d.ts +11 -8
  529. package/lib/esm/render/primitives/VertexKey.d.ts.map +1 -1
  530. package/lib/esm/render/primitives/VertexKey.js +24 -6
  531. package/lib/esm/render/primitives/VertexKey.js.map +1 -1
  532. package/lib/esm/render/primitives/VertexTable.d.ts +15 -2
  533. package/lib/esm/render/primitives/VertexTable.d.ts.map +1 -1
  534. package/lib/esm/render/primitives/VertexTable.js +274 -109
  535. package/lib/esm/render/primitives/VertexTable.js.map +1 -1
  536. package/lib/esm/render/primitives/geometry/GeometryAccumulator.d.ts.map +1 -1
  537. package/lib/esm/render/primitives/geometry/GeometryAccumulator.js +23 -11
  538. package/lib/esm/render/primitives/geometry/GeometryAccumulator.js.map +1 -1
  539. package/lib/esm/render/primitives/mesh/MeshBuilder.d.ts +4 -6
  540. package/lib/esm/render/primitives/mesh/MeshBuilder.d.ts.map +1 -1
  541. package/lib/esm/render/primitives/mesh/MeshBuilder.js +17 -14
  542. package/lib/esm/render/primitives/mesh/MeshBuilder.js.map +1 -1
  543. package/lib/esm/render/primitives/mesh/MeshBuilderMap.d.ts.map +1 -1
  544. package/lib/esm/render/primitives/mesh/MeshBuilderMap.js +12 -1
  545. package/lib/esm/render/primitives/mesh/MeshBuilderMap.js.map +1 -1
  546. package/lib/esm/render/primitives/mesh/MeshPrimitives.d.ts +45 -28
  547. package/lib/esm/render/primitives/mesh/MeshPrimitives.d.ts.map +1 -1
  548. package/lib/esm/render/primitives/mesh/MeshPrimitives.js +108 -144
  549. package/lib/esm/render/primitives/mesh/MeshPrimitives.js.map +1 -1
  550. package/lib/esm/render/primitives/mesh/RealityMeshPrimitive.d.ts +17 -2
  551. package/lib/esm/render/primitives/mesh/RealityMeshPrimitive.d.ts.map +1 -1
  552. package/lib/esm/render/primitives/mesh/RealityMeshPrimitive.js +39 -2
  553. package/lib/esm/render/primitives/mesh/RealityMeshPrimitive.js.map +1 -1
  554. package/lib/esm/render/webgl/BackgroundMapDrape.js +1 -1
  555. package/lib/esm/render/webgl/BackgroundMapDrape.js.map +1 -1
  556. package/lib/esm/render/webgl/BranchState.d.ts +2 -0
  557. package/lib/esm/render/webgl/BranchState.d.ts.map +1 -1
  558. package/lib/esm/render/webgl/BranchState.js +5 -3
  559. package/lib/esm/render/webgl/BranchState.js.map +1 -1
  560. package/lib/esm/render/webgl/CachedGeometry.d.ts +6 -0
  561. package/lib/esm/render/webgl/CachedGeometry.d.ts.map +1 -1
  562. package/lib/esm/render/webgl/CachedGeometry.js +6 -0
  563. package/lib/esm/render/webgl/CachedGeometry.js.map +1 -1
  564. package/lib/esm/render/webgl/DrawCommand.js +1 -1
  565. package/lib/esm/render/webgl/DrawCommand.js.map +1 -1
  566. package/lib/esm/render/webgl/Graphic.d.ts +5 -3
  567. package/lib/esm/render/webgl/Graphic.d.ts.map +1 -1
  568. package/lib/esm/render/webgl/Graphic.js +7 -2
  569. package/lib/esm/render/webgl/Graphic.js.map +1 -1
  570. package/lib/esm/render/webgl/PlanarClassifier.d.ts +4 -1
  571. package/lib/esm/render/webgl/PlanarClassifier.d.ts.map +1 -1
  572. package/lib/esm/render/webgl/PlanarClassifier.js +22 -9
  573. package/lib/esm/render/webgl/PlanarClassifier.js.map +1 -1
  574. package/lib/esm/render/webgl/PlanarTextureProjection.d.ts +2 -2
  575. package/lib/esm/render/webgl/PlanarTextureProjection.d.ts.map +1 -1
  576. package/lib/esm/render/webgl/PlanarTextureProjection.js +5 -3
  577. package/lib/esm/render/webgl/PlanarTextureProjection.js.map +1 -1
  578. package/lib/esm/render/webgl/RealityMesh.d.ts +31 -11
  579. package/lib/esm/render/webgl/RealityMesh.d.ts.map +1 -1
  580. package/lib/esm/render/webgl/RealityMesh.js +155 -52
  581. package/lib/esm/render/webgl/RealityMesh.js.map +1 -1
  582. package/lib/esm/render/webgl/RenderCommands.d.ts.map +1 -1
  583. package/lib/esm/render/webgl/RenderCommands.js +4 -0
  584. package/lib/esm/render/webgl/RenderCommands.js.map +1 -1
  585. package/lib/esm/render/webgl/SceneCompositor.d.ts +3 -0
  586. package/lib/esm/render/webgl/SceneCompositor.d.ts.map +1 -1
  587. package/lib/esm/render/webgl/SceneCompositor.js +45 -19
  588. package/lib/esm/render/webgl/SceneCompositor.js.map +1 -1
  589. package/lib/esm/render/webgl/ShaderBuilder.d.ts +8 -7
  590. package/lib/esm/render/webgl/ShaderBuilder.d.ts.map +1 -1
  591. package/lib/esm/render/webgl/ShaderBuilder.js +12 -5
  592. package/lib/esm/render/webgl/ShaderBuilder.js.map +1 -1
  593. package/lib/esm/render/webgl/ShaderProgram.d.ts +1 -0
  594. package/lib/esm/render/webgl/ShaderProgram.d.ts.map +1 -1
  595. package/lib/esm/render/webgl/ShaderProgram.js +1 -0
  596. package/lib/esm/render/webgl/ShaderProgram.js.map +1 -1
  597. package/lib/esm/render/webgl/System.d.ts +9 -9
  598. package/lib/esm/render/webgl/System.d.ts.map +1 -1
  599. package/lib/esm/render/webgl/System.js +6 -6
  600. package/lib/esm/render/webgl/System.js.map +1 -1
  601. package/lib/esm/render/webgl/Target.d.ts.map +1 -1
  602. package/lib/esm/render/webgl/Target.js.map +1 -1
  603. package/lib/esm/render/webgl/VertexLUT.d.ts +2 -1
  604. package/lib/esm/render/webgl/VertexLUT.d.ts.map +1 -1
  605. package/lib/esm/render/webgl/VertexLUT.js +4 -3
  606. package/lib/esm/render/webgl/VertexLUT.js.map +1 -1
  607. package/lib/esm/render/webgl/glsl/Color.js +1 -1
  608. package/lib/esm/render/webgl/glsl/Color.js.map +1 -1
  609. package/lib/esm/render/webgl/glsl/Decode.d.ts +6 -0
  610. package/lib/esm/render/webgl/glsl/Decode.d.ts.map +1 -1
  611. package/lib/esm/render/webgl/glsl/Decode.js +17 -0
  612. package/lib/esm/render/webgl/glsl/Decode.js.map +1 -1
  613. package/lib/esm/render/webgl/glsl/Edge.d.ts.map +1 -1
  614. package/lib/esm/render/webgl/glsl/Edge.js +15 -6
  615. package/lib/esm/render/webgl/glsl/Edge.js.map +1 -1
  616. package/lib/esm/render/webgl/glsl/PlanarClassification.js +1 -1
  617. package/lib/esm/render/webgl/glsl/PlanarClassification.js.map +1 -1
  618. package/lib/esm/render/webgl/glsl/PointString.d.ts.map +1 -1
  619. package/lib/esm/render/webgl/glsl/PointString.js +1 -1
  620. package/lib/esm/render/webgl/glsl/PointString.js.map +1 -1
  621. package/lib/esm/render/webgl/glsl/Polyline.d.ts +2 -2
  622. package/lib/esm/render/webgl/glsl/Polyline.d.ts.map +1 -1
  623. package/lib/esm/render/webgl/glsl/Polyline.js +24 -9
  624. package/lib/esm/render/webgl/glsl/Polyline.js.map +1 -1
  625. package/lib/esm/render/webgl/glsl/RealityMesh.d.ts.map +1 -1
  626. package/lib/esm/render/webgl/glsl/RealityMesh.js +103 -28
  627. package/lib/esm/render/webgl/glsl/RealityMesh.js.map +1 -1
  628. package/lib/esm/render/webgl/glsl/Surface.d.ts.map +1 -1
  629. package/lib/esm/render/webgl/glsl/Surface.js +18 -19
  630. package/lib/esm/render/webgl/glsl/Surface.js.map +1 -1
  631. package/lib/esm/render/webgl/glsl/Thematic.d.ts.map +1 -1
  632. package/lib/esm/render/webgl/glsl/Thematic.js +1 -6
  633. package/lib/esm/render/webgl/glsl/Thematic.js.map +1 -1
  634. package/lib/esm/render/webgl/glsl/Vertex.d.ts.map +1 -1
  635. package/lib/esm/render/webgl/glsl/Vertex.js +32 -15
  636. package/lib/esm/render/webgl/glsl/Vertex.js.map +1 -1
  637. package/lib/esm/tile/ClassifierTileTree.d.ts +4 -2
  638. package/lib/esm/tile/ClassifierTileTree.d.ts.map +1 -1
  639. package/lib/esm/tile/ClassifierTileTree.js +32 -17
  640. package/lib/esm/tile/ClassifierTileTree.js.map +1 -1
  641. package/lib/esm/tile/GltfReader.d.ts +22 -3
  642. package/lib/esm/tile/GltfReader.d.ts.map +1 -1
  643. package/lib/esm/tile/GltfReader.js +215 -48
  644. package/lib/esm/tile/GltfReader.js.map +1 -1
  645. package/lib/esm/tile/OPCFormatInterpreter.d.ts +22 -0
  646. package/lib/esm/tile/OPCFormatInterpreter.d.ts.map +1 -0
  647. package/lib/esm/tile/OPCFormatInterpreter.js +88 -0
  648. package/lib/esm/tile/OPCFormatInterpreter.js.map +1 -0
  649. package/lib/esm/tile/PntsReader.d.ts +1 -1
  650. package/lib/esm/tile/PntsReader.d.ts.map +1 -1
  651. package/lib/esm/tile/PntsReader.js +154 -39
  652. package/lib/esm/tile/PntsReader.js.map +1 -1
  653. package/lib/esm/tile/PrimaryTileTree.d.ts +18 -2
  654. package/lib/esm/tile/PrimaryTileTree.d.ts.map +1 -1
  655. package/lib/esm/tile/PrimaryTileTree.js +51 -2
  656. package/lib/esm/tile/PrimaryTileTree.js.map +1 -1
  657. package/lib/esm/tile/RealityModelTileTree.d.ts +24 -3
  658. package/lib/esm/tile/RealityModelTileTree.d.ts.map +1 -1
  659. package/lib/esm/tile/RealityModelTileTree.js +36 -12
  660. package/lib/esm/tile/RealityModelTileTree.js.map +1 -1
  661. package/lib/esm/tile/RealityTile.d.ts +16 -2
  662. package/lib/esm/tile/RealityTile.d.ts.map +1 -1
  663. package/lib/esm/tile/RealityTile.js +32 -0
  664. package/lib/esm/tile/RealityTile.js.map +1 -1
  665. package/lib/esm/tile/RealityTileDrawArgs.d.ts +4 -1
  666. package/lib/esm/tile/RealityTileDrawArgs.d.ts.map +1 -1
  667. package/lib/esm/tile/RealityTileDrawArgs.js +3 -1
  668. package/lib/esm/tile/RealityTileDrawArgs.js.map +1 -1
  669. package/lib/esm/tile/RealityTileLoader.d.ts +7 -4
  670. package/lib/esm/tile/RealityTileLoader.d.ts.map +1 -1
  671. package/lib/esm/tile/RealityTileLoader.js +19 -5
  672. package/lib/esm/tile/RealityTileLoader.js.map +1 -1
  673. package/lib/esm/tile/RealityTileTree.d.ts +4 -1
  674. package/lib/esm/tile/RealityTileTree.d.ts.map +1 -1
  675. package/lib/esm/tile/RealityTileTree.js +13 -5
  676. package/lib/esm/tile/RealityTileTree.js.map +1 -1
  677. package/lib/esm/tile/ThreeDTileFormatInterpreter.d.ts +52 -0
  678. package/lib/esm/tile/ThreeDTileFormatInterpreter.d.ts.map +1 -0
  679. package/lib/esm/tile/ThreeDTileFormatInterpreter.js +175 -0
  680. package/lib/esm/tile/ThreeDTileFormatInterpreter.js.map +1 -0
  681. package/lib/esm/tile/TileDrawArgs.d.ts +2 -0
  682. package/lib/esm/tile/TileDrawArgs.d.ts.map +1 -1
  683. package/lib/esm/tile/TileDrawArgs.js +5 -0
  684. package/lib/esm/tile/TileDrawArgs.js.map +1 -1
  685. package/lib/esm/tile/TileGeometryCollector.d.ts +80 -0
  686. package/lib/esm/tile/TileGeometryCollector.d.ts.map +1 -0
  687. package/lib/esm/tile/TileGeometryCollector.js +67 -0
  688. package/lib/esm/tile/TileGeometryCollector.js.map +1 -0
  689. package/lib/esm/tile/TileTree.d.ts +7 -1
  690. package/lib/esm/tile/TileTree.d.ts.map +1 -1
  691. package/lib/esm/tile/TileTree.js +7 -0
  692. package/lib/esm/tile/TileTree.js.map +1 -1
  693. package/lib/esm/tile/TileTreeReference.d.ts +26 -1
  694. package/lib/esm/tile/TileTreeReference.d.ts.map +1 -1
  695. package/lib/esm/tile/TileTreeReference.js +42 -2
  696. package/lib/esm/tile/TileTreeReference.js.map +1 -1
  697. package/lib/esm/tile/internal.d.ts +4 -0
  698. package/lib/esm/tile/internal.d.ts.map +1 -1
  699. package/lib/esm/tile/internal.js +4 -0
  700. package/lib/esm/tile/internal.js.map +1 -1
  701. package/lib/esm/tile/map/BingElevation.d.ts +2 -16
  702. package/lib/esm/tile/map/BingElevation.d.ts.map +1 -1
  703. package/lib/esm/tile/map/BingElevation.js +1 -63
  704. package/lib/esm/tile/map/BingElevation.js.map +1 -1
  705. package/lib/esm/tile/map/CesiumTerrainProvider.js +2 -2
  706. package/lib/esm/tile/map/CesiumTerrainProvider.js.map +1 -1
  707. package/lib/esm/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.d.ts +5 -3
  708. package/lib/esm/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.d.ts.map +1 -1
  709. package/lib/esm/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js +46 -13
  710. package/lib/esm/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js.map +1 -1
  711. package/lib/esm/tile/map/ImageryProviders/AzureMapsLayerImageryProvider.d.ts +2 -2
  712. package/lib/esm/tile/map/ImageryProviders/AzureMapsLayerImageryProvider.d.ts.map +1 -1
  713. package/lib/esm/tile/map/ImageryProviders/AzureMapsLayerImageryProvider.js.map +1 -1
  714. package/lib/esm/tile/map/ImageryProviders/BingImageryProvider.d.ts +2 -2
  715. package/lib/esm/tile/map/ImageryProviders/BingImageryProvider.d.ts.map +1 -1
  716. package/lib/esm/tile/map/ImageryProviders/BingImageryProvider.js.map +1 -1
  717. package/lib/esm/tile/map/ImageryProviders/MapBoxLayerImageryProvider.d.ts +2 -2
  718. package/lib/esm/tile/map/ImageryProviders/MapBoxLayerImageryProvider.d.ts.map +1 -1
  719. package/lib/esm/tile/map/ImageryProviders/MapBoxLayerImageryProvider.js +4 -3
  720. package/lib/esm/tile/map/ImageryProviders/MapBoxLayerImageryProvider.js.map +1 -1
  721. package/lib/esm/tile/map/ImageryProviders/TileUrlImageryProvider.d.ts +2 -2
  722. package/lib/esm/tile/map/ImageryProviders/TileUrlImageryProvider.d.ts.map +1 -1
  723. package/lib/esm/tile/map/ImageryProviders/TileUrlImageryProvider.js.map +1 -1
  724. package/lib/esm/tile/map/ImageryProviders/WmsMapLayerImageryProvider.d.ts +2 -2
  725. package/lib/esm/tile/map/ImageryProviders/WmsMapLayerImageryProvider.d.ts.map +1 -1
  726. package/lib/esm/tile/map/ImageryProviders/WmsMapLayerImageryProvider.js +1 -1
  727. package/lib/esm/tile/map/ImageryProviders/WmsMapLayerImageryProvider.js.map +1 -1
  728. package/lib/esm/tile/map/ImageryProviders/WmtsMapLayerImageryProvider.d.ts +2 -2
  729. package/lib/esm/tile/map/ImageryProviders/WmtsMapLayerImageryProvider.d.ts.map +1 -1
  730. package/lib/esm/tile/map/ImageryProviders/WmtsMapLayerImageryProvider.js.map +1 -1
  731. package/lib/esm/tile/map/ImageryTileTree.d.ts +2 -3
  732. package/lib/esm/tile/map/ImageryTileTree.d.ts.map +1 -1
  733. package/lib/esm/tile/map/ImageryTileTree.js +4 -3
  734. package/lib/esm/tile/map/ImageryTileTree.js.map +1 -1
  735. package/lib/esm/tile/map/MapFeatureInfo.d.ts +26 -0
  736. package/lib/esm/tile/map/MapFeatureInfo.d.ts.map +1 -0
  737. package/lib/esm/tile/map/MapFeatureInfo.js +15 -0
  738. package/lib/esm/tile/map/MapFeatureInfo.js.map +1 -0
  739. package/lib/esm/tile/map/MapLayerFormatRegistry.d.ts +4 -4
  740. package/lib/esm/tile/map/MapLayerFormatRegistry.d.ts.map +1 -1
  741. package/lib/esm/tile/map/MapLayerFormatRegistry.js.map +1 -1
  742. package/lib/esm/tile/map/MapLayerImageryFormats.d.ts +3 -3
  743. package/lib/esm/tile/map/MapLayerImageryFormats.d.ts.map +1 -1
  744. package/lib/esm/tile/map/MapLayerImageryFormats.js.map +1 -1
  745. package/lib/esm/tile/map/MapLayerImageryProvider.d.ts +5 -4
  746. package/lib/esm/tile/map/MapLayerImageryProvider.d.ts.map +1 -1
  747. package/lib/esm/tile/map/MapLayerImageryProvider.js +5 -1
  748. package/lib/esm/tile/map/MapLayerImageryProvider.js.map +1 -1
  749. package/lib/esm/tile/map/MapLayerSources.d.ts +2 -2
  750. package/lib/esm/tile/map/MapLayerSources.d.ts.map +1 -1
  751. package/lib/esm/tile/map/MapLayerSources.js +6 -4
  752. package/lib/esm/tile/map/MapLayerSources.js.map +1 -1
  753. package/lib/esm/tile/map/MapLayerTileTreeReference.d.ts +10 -2
  754. package/lib/esm/tile/map/MapLayerTileTreeReference.d.ts.map +1 -1
  755. package/lib/esm/tile/map/MapLayerTileTreeReference.js +25 -3
  756. package/lib/esm/tile/map/MapLayerTileTreeReference.js.map +1 -1
  757. package/lib/esm/tile/map/MapTile.d.ts +12 -10
  758. package/lib/esm/tile/map/MapTile.d.ts.map +1 -1
  759. package/lib/esm/tile/map/MapTile.js +60 -39
  760. package/lib/esm/tile/map/MapTile.js.map +1 -1
  761. package/lib/esm/tile/map/MapTileLoader.d.ts +2 -1
  762. package/lib/esm/tile/map/MapTileLoader.d.ts.map +1 -1
  763. package/lib/esm/tile/map/MapTileLoader.js +4 -1
  764. package/lib/esm/tile/map/MapTileLoader.js.map +1 -1
  765. package/lib/esm/tile/map/MapTileTree.d.ts +18 -8
  766. package/lib/esm/tile/map/MapTileTree.d.ts.map +1 -1
  767. package/lib/esm/tile/map/MapTileTree.js +150 -63
  768. package/lib/esm/tile/map/MapTileTree.js.map +1 -1
  769. package/lib/esm/tile/map/MapTiledGraphicsProvider.d.ts.map +1 -1
  770. package/lib/esm/tile/map/MapTiledGraphicsProvider.js +2 -2
  771. package/lib/esm/tile/map/MapTiledGraphicsProvider.js.map +1 -1
  772. package/lib/esm/tools/ToolAdmin.d.ts +2 -3
  773. package/lib/esm/tools/ToolAdmin.d.ts.map +1 -1
  774. package/lib/esm/tools/ToolAdmin.js +8 -3
  775. package/lib/esm/tools/ToolAdmin.js.map +1 -1
  776. package/lib/esm/tools/ViewTool.d.ts +4 -4
  777. package/lib/esm/tools/ViewTool.d.ts.map +1 -1
  778. package/lib/esm/tools/ViewTool.js +1 -1
  779. package/lib/esm/tools/ViewTool.js.map +1 -1
  780. package/package.json +22 -20
  781. package/lib/cjs/tile/DracoDecoder.d.ts +0 -20
  782. package/lib/cjs/tile/DracoDecoder.d.ts.map +0 -1
  783. package/lib/cjs/tile/DracoDecoder.js +0 -169
  784. package/lib/cjs/tile/DracoDecoder.js.map +0 -1
  785. package/lib/esm/tile/DracoDecoder.d.ts +0 -20
  786. package/lib/esm/tile/DracoDecoder.d.ts.map +0 -1
  787. package/lib/esm/tile/DracoDecoder.js +0 -165
  788. package/lib/esm/tile/DracoDecoder.js.map +0 -1
  789. package/lib/public/assets/approximateTerrainHeights.json +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"RealityTile.js","sourceRoot":"","sources":["../../../src/tile/RealityTile.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module Tiles\r\n */\r\n\r\nimport { BeTimePoint, dispose } from \"@itwin/core-bentley\";\r\nimport { ClipMaskXYZRangePlanes, ClipShape, ClipVector, Point3d, Transform } from \"@itwin/core-geometry\";\r\nimport { ColorDef, Frustum } from \"@itwin/core-common\";\r\nimport { IModelApp } from \"../IModelApp\";\r\nimport { GraphicBranch, GraphicBranchOptions } from \"../render/GraphicBranch\";\r\nimport { GraphicBuilder } from \"../render/GraphicBuilder\";\r\nimport { RenderGraphic } from \"../render/RenderGraphic\";\r\nimport { RenderSystem } from \"../render/RenderSystem\";\r\nimport { ViewingSpace } from \"../ViewingSpace\";\r\nimport { Viewport } from \"../Viewport\";\r\nimport {\r\n RealityTileRegion, RealityTileTree, Tile, TileContent, TileDrawArgs, TileGraphicType, TileLoadStatus, TileParams, TileRequest, TileRequestChannel,\r\n TileTreeLoadStatus, TileUser, TraversalDetails, TraversalSelectionContext,\r\n} from \"./internal\";\r\n\r\n/** @internal */\r\nexport interface RealityTileParams extends TileParams {\r\n readonly transformToRoot?: Transform;\r\n readonly additiveRefinement?: boolean;\r\n readonly noContentButTerminateOnSelection?: boolean;\r\n readonly rangeCorners?: Point3d[];\r\n readonly region?: RealityTileRegion;\r\n}\r\n\r\nconst scratchLoadedChildren = new Array<RealityTile>();\r\nconst scratchCorners = [Point3d.createZero(), Point3d.createZero(), Point3d.createZero(), Point3d.createZero(), Point3d.createZero(), Point3d.createZero(), Point3d.createZero(), Point3d.createZero()];\r\nconst additiveRefinementThreshold = 10000; // Additive tiles (Cesium OSM tileset) are subdivided until their range diagonal falls below this threshold to ensure accurate reprojection.\r\nconst additiveRefinementDepthLimit = 20;\r\nconst scratchFrustum = new Frustum();\r\n\r\n/**\r\n * A specialization of tiles that represent reality tiles. 3D Tilesets and maps use this class and have their own optimized traversal and lifetime management.\r\n * @internal\r\n */\r\nexport class RealityTile extends Tile {\r\n public readonly transformToRoot?: Transform;\r\n public readonly additiveRefinement?: boolean;\r\n public readonly noContentButTerminateOnSelection?: boolean;\r\n public readonly rangeCorners?: Point3d[];\r\n public readonly region?: RealityTileRegion;\r\n private _everDisplayed = false;\r\n protected _reprojectionTransform?: Transform;\r\n private _reprojectedGraphic?: RenderGraphic;\r\n\r\n public constructor(props: RealityTileParams, tree: RealityTileTree) {\r\n super(props, tree);\r\n this.transformToRoot = props.transformToRoot;\r\n this.additiveRefinement = (undefined === props.additiveRefinement) ? this.realityParent?.additiveRefinement : props.additiveRefinement;\r\n this.noContentButTerminateOnSelection = props.noContentButTerminateOnSelection;\r\n this.rangeCorners = props.rangeCorners;\r\n this.region = props.region;\r\n\r\n if (undefined === this.transformToRoot)\r\n return;\r\n\r\n // Can transform be non-rigid?? -- if so would have to handle (readonly) radius.\r\n this.boundingSphere.transformBy(this.transformToRoot, this.boundingSphere);\r\n this.transformToRoot.multiplyRange(this.range, this.range);\r\n\r\n if (this.rangeCorners)\r\n this.transformToRoot.multiplyPoint3dArrayInPlace(this.rangeCorners);\r\n\r\n if (undefined !== this._contentRange)\r\n this.transformToRoot.multiplyRange(this._contentRange, this._contentRange);\r\n }\r\n\r\n public get realityChildren(): RealityTile[] | undefined { return this.children as RealityTile[] | undefined; }\r\n public get realityParent(): RealityTile { return this.parent as RealityTile; }\r\n public get realityRoot(): RealityTileTree { return this.tree as RealityTileTree; }\r\n public get graphicType(): TileGraphicType | undefined { return undefined; } // If undefined, use tree type.\r\n public get maxDepth(): number { return this.realityRoot.loader.maxDepth; }\r\n public get isPointCloud() { return this.realityRoot.loader.containsPointClouds; }\r\n public get isLoaded() { return this.loadStatus === TileLoadStatus.Ready; } // Reality tiles may depend on secondary tiles (maps) so can ge loaded but not ready.\r\n public override get isDisplayable(): boolean {\r\n if (this.noContentButTerminateOnSelection)\r\n return false;\r\n else\r\n return super.isDisplayable;\r\n }\r\n\r\n public markUsed(args: TileDrawArgs): void {\r\n args.markUsed(this);\r\n }\r\n\r\n public markDisplayed(): void {\r\n this._everDisplayed = true;\r\n }\r\n\r\n public isOccluded(_viewingSpace: ViewingSpace): boolean {\r\n return false;\r\n }\r\n\r\n public get channel(): TileRequestChannel {\r\n return this.realityRoot.loader.getRequestChannel(this);\r\n }\r\n\r\n public async requestContent(isCanceled: () => boolean): Promise<TileRequest.Response> {\r\n return this.realityRoot.loader.requestTileContent(this, isCanceled);\r\n }\r\n private useAdditiveRefinementStepchildren() {\r\n // Create additive stepchildren only if we are this tile is additive and we are repojecting and the radius exceeds the additiveRefinementThreshold.\r\n // This criteria is currently only met by the Cesium OSM tileset.\r\n const rangeDiagonal = this.rangeCorners ? this.rangeCorners[0].distance(this.rangeCorners[3]) : 0;\r\n return this.additiveRefinement && this.isDisplayable && rangeDiagonal > additiveRefinementThreshold && this.depth < additiveRefinementDepthLimit && this.realityRoot.doReprojectChildren(this);\r\n }\r\n\r\n protected _loadChildren(resolve: (children: Tile[] | undefined) => void, reject: (error: Error) => void): void {\r\n this.realityRoot.loader.loadChildren(this).then((children: Tile[] | undefined) => {\r\n\r\n /* If this is a large tile is to be included additively, but we are reprojecting (Cesium OSM) then we must add step-children to display the geometry as an overly large\r\n tile cannot be reprojected accurately. */\r\n if (this.useAdditiveRefinementStepchildren())\r\n this.loadAdditiveRefinementChildren((stepChildren: Tile[]) => { children = children ? children?.concat(stepChildren) : stepChildren; });\r\n\r\n if (children)\r\n this.realityRoot.reprojectAndResolveChildren(this, children, resolve); /* Potentially reprojecect and resolve these children */\r\n\r\n }).catch((err) => {\r\n reject(err);\r\n });\r\n }\r\n\r\n public async readContent(data: TileRequest.ResponseData, system: RenderSystem, isCanceled?: () => boolean): Promise<TileContent> {\r\n return this.realityRoot.loader.loadTileContent(this, data, system, isCanceled);\r\n }\r\n\r\n public override computeLoadPriority(viewports: Iterable<Viewport>, users: Iterable<TileUser>): number {\r\n return this.realityRoot.loader.computeTilePriority(this, viewports, users);\r\n }\r\n\r\n public getContentClip(): ClipVector | undefined {\r\n return ClipVector.createCapture([ClipShape.createBlock(this.contentRange, ClipMaskXYZRangePlanes.All)]);\r\n }\r\n\r\n // Allow tile to select additional tiles (Terrain Imagery...)\r\n public selectSecondaryTiles(_args: TileDrawArgs, _context: TraversalSelectionContext) { }\r\n\r\n // An upsampled tile is not loadable - will override to return loadable parent.\r\n public get loadableTile(): RealityTile { return this; }\r\n\r\n public preloadRealityTilesAtDepth(depth: number, context: TraversalSelectionContext, args: TileDrawArgs) {\r\n if (this.depth === depth) {\r\n context.preload(this, args);\r\n return;\r\n }\r\n\r\n this.loadChildren();\r\n\r\n if (undefined !== this.realityChildren) {\r\n for (const child of this.realityChildren)\r\n child.preloadRealityTilesAtDepth(depth, context, args);\r\n }\r\n }\r\n\r\n protected selectRealityChildren(context: TraversalSelectionContext, args: TileDrawArgs, traversalDetails: TraversalDetails) {\r\n const childrenLoadStatus = this.loadChildren(); // NB: asynchronous\r\n if (TileTreeLoadStatus.Loading === childrenLoadStatus) {\r\n args.markChildrenLoading();\r\n traversalDetails.childrenLoading = true;\r\n return;\r\n }\r\n\r\n if (undefined !== this.realityChildren) {\r\n const traversalChildren = this.realityRoot.getTraversalChildren(this.depth);\r\n traversalChildren.initialize();\r\n for (let i = 0; i < this.children!.length; i++)\r\n this.realityChildren[i].selectRealityTiles(context, args, traversalChildren.getChildDetail(i));\r\n\r\n traversalChildren.combine(traversalDetails);\r\n }\r\n }\r\n public addBoundingGraphic(builder: GraphicBuilder, color: ColorDef) {\r\n builder.setSymbology(color, color, 3);\r\n let corners = this.rangeCorners ? this.rangeCorners : this.range.corners();\r\n if (this._reprojectionTransform)\r\n corners = this._reprojectionTransform.multiplyPoint3dArray(corners);\r\n builder.addRangeBoxFromCorners(corners);\r\n }\r\n\r\n public reproject(rootReprojection: Transform) {\r\n this._reprojectionTransform = rootReprojection;\r\n rootReprojection.multiplyRange(this.range, this.range);\r\n this.boundingSphere.transformBy(rootReprojection, this.boundingSphere);\r\n if (this.contentRange)\r\n rootReprojection.multiplyRange(this.contentRange, this.contentRange);\r\n if (this.rangeCorners)\r\n rootReprojection.multiplyPoint3dArrayInPlace(this.rangeCorners);\r\n }\r\n\r\n public allChildrenIncluded(tiles: Tile[]) {\r\n if (this.children === undefined || tiles.length !== this.children.length)\r\n return false;\r\n for (const tile of tiles)\r\n if (tile.parent !== this)\r\n return false;\r\n return true;\r\n }\r\n\r\n protected getLoadedRealityChildren(args: TileDrawArgs): boolean {\r\n if (this._childrenLoadStatus !== TileTreeLoadStatus.Loaded || this.realityChildren === undefined)\r\n return false;\r\n\r\n for (const child of this.realityChildren) {\r\n if (child.isReady && child.computeVisibilityFactor(args) > 0) {\r\n scratchLoadedChildren.push(child);\r\n } else if (!child.getLoadedRealityChildren(args))\r\n return false;\r\n }\r\n return true;\r\n }\r\n public forceSelectRealityTile(): boolean { return false; }\r\n\r\n public selectRealityTiles(context: TraversalSelectionContext, args: TileDrawArgs, traversalDetails: TraversalDetails) {\r\n const visibility = this.computeVisibilityFactor(args);\r\n if (visibility < 0)\r\n return;\r\n\r\n if (this.realityRoot.loader.forceTileLoad(this) && !this.isReady) {\r\n context.selectOrQueue(this, args, traversalDetails); // Force loading if loader requires this tile. (cesium terrain visibility).\r\n return;\r\n }\r\n\r\n if (visibility >= 1 && this.noContentButTerminateOnSelection)\r\n return;\r\n\r\n if (this.isDisplayable && (visibility >= 1 || this._anyChildNotFound || this.forceSelectRealityTile() || context.selectionCountExceeded)) {\r\n if (!this.isOccluded(args.viewingSpace)) {\r\n context.selectOrQueue(this, args, traversalDetails);\r\n\r\n if (!this.isReady) { // This tile is visible but not loaded - Use higher resolution children if present\r\n if (this.getLoadedRealityChildren(args))\r\n context.select(scratchLoadedChildren, args);\r\n scratchLoadedChildren.length = 0;\r\n }\r\n }\r\n } else {\r\n if (this.additiveRefinement && this.isDisplayable && !this.useAdditiveRefinementStepchildren())\r\n context.selectOrQueue(this, args, traversalDetails); // With additive refinement it is necessary to display this tile along with any displayed children.\r\n\r\n this.selectRealityChildren(context, args, traversalDetails);\r\n if (this.isReady && (traversalDetails.childrenLoading || 0 !== traversalDetails.queuedChildren.length)) {\r\n const minimumVisibleFactor = .25; // If the tile has not yet been displayed in this viewport -- display only if it is within 25% of visible. Avoid overly tiles popping into view unexpectedly (terrain)\r\n\r\n if (visibility > minimumVisibleFactor || this._everDisplayed)\r\n context.selectOrQueue(this, args, traversalDetails);\r\n }\r\n }\r\n }\r\n\r\n public purgeContents(olderThan: BeTimePoint): void {\r\n // Discard contents of tiles that have not been \"used\" recently, where \"used\" may mean: selected/preloaded for display or content requested.\r\n // Note we do not discard the child Tile objects themselves.\r\n if (this.usageMarker.isExpired(olderThan))\r\n this.disposeContents();\r\n\r\n const children = this.realityChildren;\r\n if (children)\r\n for (const child of children)\r\n child.purgeContents(olderThan);\r\n }\r\n\r\n public computeVisibilityFactor(args: TileDrawArgs): number {\r\n if (this.isEmpty)\r\n return -1;\r\n\r\n if (this.rangeCorners)\r\n scratchFrustum.setFromCorners(this.rangeCorners);\r\n else\r\n Frustum.fromRange(this.range, scratchFrustum);\r\n\r\n if (this.isFrustumCulled(scratchFrustum, args, true, this.boundingSphere))\r\n return -1;\r\n\r\n // some nodes are merely for structure and don't have any geometry\r\n if (0 === this.maximumSize)\r\n return 0;\r\n\r\n if (this.isLeaf)\r\n return this.hasContentRange && this.isContentCulled(args) ? -1 : 1;\r\n\r\n return this.maximumSize / args.getPixelSize(this);\r\n }\r\n\r\n public preloadTilesInFrustum(args: TileDrawArgs, context: TraversalSelectionContext, preloadSizeModifier: number) {\r\n const visibility = this.computeVisibilityFactor(args);\r\n if (visibility < 0)\r\n return;\r\n\r\n if (visibility * preloadSizeModifier > 1) {\r\n if (this.isDisplayable)\r\n context.preload(this, args);\r\n } else {\r\n const childrenLoadStatus = this.loadChildren(); // NB: asynchronous\r\n if (TileTreeLoadStatus.Loading === childrenLoadStatus) {\r\n args.markChildrenLoading();\r\n } else if (undefined !== this.realityChildren) {\r\n for (const child of this.realityChildren)\r\n child.preloadTilesInFrustum(args, context, preloadSizeModifier);\r\n }\r\n }\r\n }\r\n\r\n protected get _anyChildNotFound(): boolean {\r\n if (undefined !== this.children)\r\n for (const child of this.children)\r\n if (child.isNotFound)\r\n return true;\r\n\r\n return this._childrenLoadStatus === TileTreeLoadStatus.NotFound;\r\n }\r\n public override getSizeProjectionCorners(): Point3d[] | undefined {\r\n if (!this.tree.isContentUnbounded)\r\n return undefined; // For a non-global tree use the standard size algorithm.\r\n\r\n // For global tiles (as in OSM buildings) return the range corners or X-Y corners only if bounded by region- this allows an algorithm that uses the area of the projected corners to attenuate horizon tiles.\r\n if (!this.rangeCorners)\r\n return this.range.corners(scratchCorners);\r\n\r\n return this.region ? this.rangeCorners.slice(4) : this.rangeCorners;\r\n }\r\n\r\n public get isStepChild() { return false; }\r\n\r\n protected loadAdditiveRefinementChildren(resolve: (children: Tile[]) => void): void {\r\n const region = this.region;\r\n const corners = this.rangeCorners;\r\n if (!region || !corners)\r\n return;\r\n\r\n const maximumSize = this.maximumSize;\r\n const rangeDiagonal = corners[0].distance(corners[3]);\r\n const isLeaf = rangeDiagonal < additiveRefinementThreshold || this.depth > additiveRefinementDepthLimit;\r\n\r\n const stepChildren = new Array<AdditiveRefinementStepChild>();\r\n const latitudeDelta = (region.maxLatitude - region.minLatitude) / 2;\r\n const longitudeDelta = (region.maxLongitude - region.minLongitude) / 2;\r\n const minHeight = region.minHeight;\r\n const maxHeight = region.maxHeight;\r\n\r\n for (let i = 0, minLongitude = region.minLongitude, step = 0; i < 2; i++, minLongitude += longitudeDelta, step++) {\r\n for (let j = 0, minLatitude = region.minLatitude; j < 2; j++, minLatitude += latitudeDelta) {\r\n const childRegion = new RealityTileRegion({ minLatitude, maxLatitude: minLatitude + latitudeDelta, minLongitude, maxLongitude: minLongitude + longitudeDelta, minHeight, maxHeight });\r\n const childRange = childRegion.getRange();\r\n\r\n const contentId = `${this.contentId}_S${step++}`;\r\n const childParams: RealityTileParams = { rangeCorners: childRange.corners, contentId, range: childRange.range, maximumSize, parent: this, additiveRefinement: false, isLeaf, region: childRegion };\r\n\r\n stepChildren.push(new AdditiveRefinementStepChild(childParams, this.realityRoot));\r\n }\r\n }\r\n resolve(stepChildren);\r\n }\r\n public override produceGraphics(): RenderGraphic | undefined {\r\n if (undefined === this._reprojectionTransform)\r\n return super.produceGraphics();\r\n\r\n if (undefined === this._reprojectedGraphic && undefined !== this._graphic) {\r\n const branch = new GraphicBranch(false);\r\n branch.add(this._graphic);\r\n this._reprojectedGraphic = IModelApp.renderSystem.createGraphicBranch(branch, this._reprojectionTransform);\r\n }\r\n return this._reprojectedGraphic;\r\n }\r\n\r\n public get unprojectedGraphic(): RenderGraphic | undefined {\r\n return this._graphic;\r\n }\r\n public override disposeContents(): void {\r\n super.disposeContents();\r\n this._reprojectedGraphic = dispose(this._reprojectedGraphic);\r\n }\r\n}\r\n\r\n/** When additive refinement is used (as in the Cesium OSM tileset) it is not possible to accurately reproject very large, low level tiles\r\n * In this case we create additional \"step\" children (grandchildren etc. ) that will clipped portions display the their ancestor's additive geometry.\r\n * These step children are subdivided until they are small enough to be accurately reprojected - this is controlled by the additiveRefinementThreshold (currently 2KM).\r\n * The stepchildren do not contain any tile graphics - they just create a branch with clipping and reprojection to display their additive refinement ancestor graphics.\r\n */\r\nclass AdditiveRefinementStepChild extends RealityTile {\r\n public override get isStepChild() { return true; }\r\n private _loadableTile: RealityTile;\r\n\r\n public constructor(props: RealityTileParams, tree: RealityTileTree) {\r\n super(props, tree);\r\n this._loadableTile = this.realityParent;\r\n for (; this._loadableTile && this._loadableTile.isStepChild; this._loadableTile = this._loadableTile.realityParent)\r\n ;\r\n }\r\n public override get loadableTile(): RealityTile {\r\n return this._loadableTile;\r\n }\r\n public override get isLoading(): boolean { return this._loadableTile.isLoading; }\r\n public override get isQueued(): boolean { return this._loadableTile.isQueued; }\r\n public override get isNotFound(): boolean { return this._loadableTile.isNotFound; }\r\n public override get isReady(): boolean { return this._loadableTile.isReady; }\r\n public override get isLoaded(): boolean { return this._loadableTile.isLoaded; }\r\n public override get isEmpty() { return false; }\r\n public override produceGraphics(): RenderGraphic | undefined {\r\n if (undefined === this._graphic) {\r\n const parentGraphics = this._loadableTile.unprojectedGraphic;\r\n\r\n if (!parentGraphics || !this._reprojectionTransform)\r\n return undefined;\r\n\r\n const branch = new GraphicBranch(false);\r\n branch.add(parentGraphics);\r\n const renderSystem = IModelApp.renderSystem;\r\n const branchOptions: GraphicBranchOptions = {};\r\n if (this.rangeCorners) {\r\n const clipPolygon = [this.rangeCorners[0], this.rangeCorners[1], this.rangeCorners[3], this.rangeCorners[2]];\r\n branchOptions.clipVolume = renderSystem.createClipVolume(ClipVector.create([ClipShape.createShape(clipPolygon, undefined, undefined, this.tree.iModelTransform)!]));\r\n }\r\n this._graphic = renderSystem.createGraphicBranch(branch, this._reprojectionTransform, branchOptions);\r\n }\r\n return this._graphic;\r\n }\r\n\r\n public override markUsed(args: TileDrawArgs): void {\r\n args.markUsed(this);\r\n args.markUsed(this._loadableTile);\r\n }\r\n protected override _loadChildren(resolve: (children: Tile[] | undefined) => void, _reject: (error: Error) => void): void {\r\n this.loadAdditiveRefinementChildren((stepChildren: Tile[]) => {\r\n if (stepChildren)\r\n this.realityRoot.reprojectAndResolveChildren(this, stepChildren, resolve);\r\n });\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"RealityTile.js","sourceRoot":"","sources":["../../../src/tile/RealityTile.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module Tiles\r\n */\r\n\r\nimport { BeTimePoint, dispose } from \"@itwin/core-bentley\";\r\nimport { ClipMaskXYZRangePlanes, ClipShape, ClipVector, Point3d, Polyface, Transform } from \"@itwin/core-geometry\";\r\nimport { ColorDef, Frustum } from \"@itwin/core-common\";\r\nimport { IModelApp } from \"../IModelApp\";\r\nimport { GraphicBranch, GraphicBranchOptions } from \"../render/GraphicBranch\";\r\nimport { GraphicBuilder } from \"../render/GraphicBuilder\";\r\nimport { RenderGraphic } from \"../render/RenderGraphic\";\r\nimport { RenderSystem } from \"../render/RenderSystem\";\r\nimport { ViewingSpace } from \"../ViewingSpace\";\r\nimport { Viewport } from \"../Viewport\";\r\nimport {\r\n RealityTileRegion, RealityTileTree, Tile, TileContent, TileDrawArgs, TileGeometryCollector, TileGraphicType, TileLoadStatus, TileParams, TileRequest, TileRequestChannel,\r\n TileTreeLoadStatus, TileUser, TraversalDetails, TraversalSelectionContext,\r\n} from \"./internal\";\r\n\r\n/** @internal */\r\nexport interface RealityTileParams extends TileParams {\r\n readonly transformToRoot?: Transform;\r\n readonly additiveRefinement?: boolean;\r\n readonly noContentButTerminateOnSelection?: boolean;\r\n readonly rangeCorners?: Point3d[];\r\n readonly region?: RealityTileRegion;\r\n}\r\n\r\n/** The geometry representing the contents of a reality tile. Currently only polyfaces are returned\r\n * @alpha\r\n */\r\nexport interface RealityTileGeometry {\r\n polyfaces?: Polyface[];\r\n}\r\n\r\n/** @internal */\r\nexport interface RealityTileContent extends TileContent {\r\n geometry?: RealityTileGeometry;\r\n}\r\n\r\nconst scratchLoadedChildren = new Array<RealityTile>();\r\nconst scratchCorners = [Point3d.createZero(), Point3d.createZero(), Point3d.createZero(), Point3d.createZero(), Point3d.createZero(), Point3d.createZero(), Point3d.createZero(), Point3d.createZero()];\r\nconst additiveRefinementThreshold = 10000; // Additive tiles (Cesium OSM tileset) are subdivided until their range diagonal falls below this threshold to ensure accurate reprojection.\r\nconst additiveRefinementDepthLimit = 20;\r\nconst scratchFrustum = new Frustum();\r\n\r\n/**\r\n * A specialization of tiles that represent reality tiles. 3D Tilesets and maps use this class and have their own optimized traversal and lifetime management.\r\n * @internal\r\n */\r\nexport class RealityTile extends Tile {\r\n public readonly transformToRoot?: Transform;\r\n public readonly additiveRefinement?: boolean;\r\n public readonly noContentButTerminateOnSelection?: boolean;\r\n public readonly rangeCorners?: Point3d[];\r\n public readonly region?: RealityTileRegion;\r\n protected _geometry?: RealityTileGeometry;\r\n private _everDisplayed = false;\r\n protected _reprojectionTransform?: Transform;\r\n private _reprojectedGraphic?: RenderGraphic;\r\n\r\n public constructor(props: RealityTileParams, tree: RealityTileTree) {\r\n super(props, tree);\r\n this.transformToRoot = props.transformToRoot;\r\n this.additiveRefinement = (undefined === props.additiveRefinement) ? this.realityParent?.additiveRefinement : props.additiveRefinement;\r\n this.noContentButTerminateOnSelection = props.noContentButTerminateOnSelection;\r\n this.rangeCorners = props.rangeCorners;\r\n this.region = props.region;\r\n\r\n if (undefined === this.transformToRoot)\r\n return;\r\n\r\n // Can transform be non-rigid?? -- if so would have to handle (readonly) radius.\r\n this.boundingSphere.transformBy(this.transformToRoot, this.boundingSphere);\r\n this.transformToRoot.multiplyRange(this.range, this.range);\r\n\r\n if (this.rangeCorners)\r\n this.transformToRoot.multiplyPoint3dArrayInPlace(this.rangeCorners);\r\n\r\n if (undefined !== this._contentRange)\r\n this.transformToRoot.multiplyRange(this._contentRange, this._contentRange);\r\n }\r\n\r\n public override setContent(content: RealityTileContent): void {\r\n super.setContent(content);\r\n this._geometry = content.geometry;\r\n }\r\n\r\n public get realityChildren(): RealityTile[] | undefined { return this.children as RealityTile[] | undefined; }\r\n public get realityParent(): RealityTile { return this.parent as RealityTile; }\r\n public get realityRoot(): RealityTileTree { return this.tree as RealityTileTree; }\r\n public get graphicType(): TileGraphicType | undefined { return undefined; } // If undefined, use tree type.\r\n public get maxDepth(): number { return this.realityRoot.loader.maxDepth; }\r\n public get isPointCloud() { return this.realityRoot.loader.containsPointClouds; }\r\n public get isLoaded() { return this.loadStatus === TileLoadStatus.Ready; } // Reality tiles may depend on secondary tiles (maps) so can ge loaded but not ready.\r\n public get geometry(): RealityTileGeometry | undefined { return this._geometry; }\r\n\r\n public override get isDisplayable(): boolean {\r\n if (this.noContentButTerminateOnSelection)\r\n return false;\r\n else\r\n return super.isDisplayable;\r\n }\r\n\r\n public markUsed(args: TileDrawArgs): void {\r\n args.markUsed(this);\r\n }\r\n\r\n public markDisplayed(): void {\r\n this._everDisplayed = true;\r\n }\r\n\r\n public isOccluded(_viewingSpace: ViewingSpace): boolean {\r\n return false;\r\n }\r\n\r\n public get channel(): TileRequestChannel {\r\n return this.realityRoot.loader.getRequestChannel(this);\r\n }\r\n\r\n public async requestContent(isCanceled: () => boolean): Promise<TileRequest.Response> {\r\n return this.realityRoot.loader.requestTileContent(this, isCanceled);\r\n }\r\n private useAdditiveRefinementStepchildren() {\r\n // Create additive stepchildren only if we are this tile is additive and we are repojecting and the radius exceeds the additiveRefinementThreshold.\r\n // This criteria is currently only met by the Cesium OSM tileset.\r\n const rangeDiagonal = this.rangeCorners ? this.rangeCorners[0].distance(this.rangeCorners[3]) : 0;\r\n return this.additiveRefinement && this.isDisplayable && rangeDiagonal > additiveRefinementThreshold && this.depth < additiveRefinementDepthLimit && this.realityRoot.doReprojectChildren(this);\r\n }\r\n\r\n protected _loadChildren(resolve: (children: Tile[] | undefined) => void, reject: (error: Error) => void): void {\r\n this.realityRoot.loader.loadChildren(this).then((children: Tile[] | undefined) => {\r\n\r\n /* If this is a large tile is to be included additively, but we are reprojecting (Cesium OSM) then we must add step-children to display the geometry as an overly large\r\n tile cannot be reprojected accurately. */\r\n if (this.useAdditiveRefinementStepchildren())\r\n this.loadAdditiveRefinementChildren((stepChildren: Tile[]) => { children = children ? children?.concat(stepChildren) : stepChildren; });\r\n\r\n if (children)\r\n this.realityRoot.reprojectAndResolveChildren(this, children, resolve); /* Potentially reprojecect and resolve these children */\r\n\r\n }).catch((err) => {\r\n reject(err);\r\n });\r\n }\r\n\r\n public async readContent(data: TileRequest.ResponseData, system: RenderSystem, isCanceled?: () => boolean): Promise<TileContent> {\r\n return this.realityRoot.loader.loadTileContent(this, data, system, isCanceled);\r\n }\r\n\r\n public override computeLoadPriority(viewports: Iterable<Viewport>, users: Iterable<TileUser>): number {\r\n return this.realityRoot.loader.computeTilePriority(this, viewports, users);\r\n }\r\n\r\n public getContentClip(): ClipVector | undefined {\r\n return ClipVector.createCapture([ClipShape.createBlock(this.contentRange, ClipMaskXYZRangePlanes.All)]);\r\n }\r\n\r\n // Allow tile to select additional tiles (Terrain Imagery...)\r\n public selectSecondaryTiles(_args: TileDrawArgs, _context: TraversalSelectionContext) { }\r\n\r\n // An upsampled tile is not loadable - will override to return loadable parent.\r\n public get loadableTile(): RealityTile { return this; }\r\n\r\n public preloadRealityTilesAtDepth(depth: number, context: TraversalSelectionContext, args: TileDrawArgs) {\r\n if (this.depth === depth) {\r\n context.preload(this, args);\r\n return;\r\n }\r\n\r\n this.loadChildren();\r\n\r\n if (undefined !== this.realityChildren) {\r\n for (const child of this.realityChildren)\r\n child.preloadRealityTilesAtDepth(depth, context, args);\r\n }\r\n }\r\n\r\n protected selectRealityChildren(context: TraversalSelectionContext, args: TileDrawArgs, traversalDetails: TraversalDetails) {\r\n const childrenLoadStatus = this.loadChildren(); // NB: asynchronous\r\n if (TileTreeLoadStatus.Loading === childrenLoadStatus) {\r\n args.markChildrenLoading();\r\n traversalDetails.childrenLoading = true;\r\n return;\r\n }\r\n\r\n if (undefined !== this.realityChildren) {\r\n const traversalChildren = this.realityRoot.getTraversalChildren(this.depth);\r\n traversalChildren.initialize();\r\n for (let i = 0; i < this.children!.length; i++)\r\n this.realityChildren[i].selectRealityTiles(context, args, traversalChildren.getChildDetail(i));\r\n\r\n traversalChildren.combine(traversalDetails);\r\n }\r\n }\r\n public addBoundingGraphic(builder: GraphicBuilder, color: ColorDef) {\r\n builder.setSymbology(color, color, 3);\r\n let corners = this.rangeCorners ? this.rangeCorners : this.range.corners();\r\n if (this._reprojectionTransform)\r\n corners = this._reprojectionTransform.multiplyPoint3dArray(corners);\r\n builder.addRangeBoxFromCorners(corners);\r\n }\r\n\r\n public reproject(rootReprojection: Transform) {\r\n this._reprojectionTransform = rootReprojection;\r\n rootReprojection.multiplyRange(this.range, this.range);\r\n this.boundingSphere.transformBy(rootReprojection, this.boundingSphere);\r\n if (this.contentRange)\r\n rootReprojection.multiplyRange(this.contentRange, this.contentRange);\r\n if (this.rangeCorners)\r\n rootReprojection.multiplyPoint3dArrayInPlace(this.rangeCorners);\r\n }\r\n\r\n public allChildrenIncluded(tiles: Tile[]) {\r\n if (this.children === undefined || tiles.length !== this.children.length)\r\n return false;\r\n for (const tile of tiles)\r\n if (tile.parent !== this)\r\n return false;\r\n return true;\r\n }\r\n\r\n protected getLoadedRealityChildren(args: TileDrawArgs): boolean {\r\n if (this._childrenLoadStatus !== TileTreeLoadStatus.Loaded || this.realityChildren === undefined)\r\n return false;\r\n\r\n for (const child of this.realityChildren) {\r\n if (child.isReady && child.computeVisibilityFactor(args) > 0) {\r\n scratchLoadedChildren.push(child);\r\n } else if (!child.getLoadedRealityChildren(args))\r\n return false;\r\n }\r\n return true;\r\n }\r\n public forceSelectRealityTile(): boolean { return false; }\r\n\r\n public selectRealityTiles(context: TraversalSelectionContext, args: TileDrawArgs, traversalDetails: TraversalDetails) {\r\n const visibility = this.computeVisibilityFactor(args);\r\n if (visibility < 0)\r\n return;\r\n\r\n if (this.realityRoot.loader.forceTileLoad(this) && !this.isReady) {\r\n context.selectOrQueue(this, args, traversalDetails); // Force loading if loader requires this tile. (cesium terrain visibility).\r\n return;\r\n }\r\n\r\n if (visibility >= 1 && this.noContentButTerminateOnSelection)\r\n return;\r\n\r\n if (this.isDisplayable && (visibility >= 1 || this._anyChildNotFound || this.forceSelectRealityTile() || context.selectionCountExceeded)) {\r\n if (!this.isOccluded(args.viewingSpace)) {\r\n context.selectOrQueue(this, args, traversalDetails);\r\n\r\n if (!this.isReady) { // This tile is visible but not loaded - Use higher resolution children if present\r\n if (this.getLoadedRealityChildren(args))\r\n context.select(scratchLoadedChildren, args);\r\n scratchLoadedChildren.length = 0;\r\n }\r\n }\r\n } else {\r\n if (this.additiveRefinement && this.isDisplayable && !this.useAdditiveRefinementStepchildren())\r\n context.selectOrQueue(this, args, traversalDetails); // With additive refinement it is necessary to display this tile along with any displayed children.\r\n\r\n this.selectRealityChildren(context, args, traversalDetails);\r\n if (this.isReady && (traversalDetails.childrenLoading || 0 !== traversalDetails.queuedChildren.length)) {\r\n const minimumVisibleFactor = .25; // If the tile has not yet been displayed in this viewport -- display only if it is within 25% of visible. Avoid overly tiles popping into view unexpectedly (terrain)\r\n\r\n if (visibility > minimumVisibleFactor || this._everDisplayed)\r\n context.selectOrQueue(this, args, traversalDetails);\r\n }\r\n }\r\n }\r\n\r\n public purgeContents(olderThan: BeTimePoint): void {\r\n // Discard contents of tiles that have not been \"used\" recently, where \"used\" may mean: selected/preloaded for display or content requested.\r\n // Note we do not discard the child Tile objects themselves.\r\n if (this.usageMarker.isExpired(olderThan))\r\n this.disposeContents();\r\n\r\n const children = this.realityChildren;\r\n if (children)\r\n for (const child of children)\r\n child.purgeContents(olderThan);\r\n }\r\n\r\n public computeVisibilityFactor(args: TileDrawArgs): number {\r\n if (this.isEmpty)\r\n return -1;\r\n\r\n if (this.rangeCorners)\r\n scratchFrustum.setFromCorners(this.rangeCorners);\r\n else\r\n Frustum.fromRange(this.range, scratchFrustum);\r\n\r\n if (this.isFrustumCulled(scratchFrustum, args, true, this.boundingSphere))\r\n return -1;\r\n\r\n // some nodes are merely for structure and don't have any geometry\r\n if (0 === this.maximumSize)\r\n return 0;\r\n\r\n if (this.isLeaf)\r\n return this.hasContentRange && this.isContentCulled(args) ? -1 : 1;\r\n\r\n return this.maximumSize / args.getPixelSize(this);\r\n }\r\n\r\n public preloadTilesInFrustum(args: TileDrawArgs, context: TraversalSelectionContext, preloadSizeModifier: number) {\r\n const visibility = this.computeVisibilityFactor(args);\r\n if (visibility < 0)\r\n return;\r\n\r\n if (visibility * preloadSizeModifier > 1) {\r\n if (this.isDisplayable)\r\n context.preload(this, args);\r\n } else {\r\n const childrenLoadStatus = this.loadChildren(); // NB: asynchronous\r\n if (TileTreeLoadStatus.Loading === childrenLoadStatus) {\r\n args.markChildrenLoading();\r\n } else if (undefined !== this.realityChildren) {\r\n for (const child of this.realityChildren)\r\n child.preloadTilesInFrustum(args, context, preloadSizeModifier);\r\n }\r\n }\r\n }\r\n\r\n protected get _anyChildNotFound(): boolean {\r\n if (undefined !== this.children)\r\n for (const child of this.children)\r\n if (child.isNotFound)\r\n return true;\r\n\r\n return this._childrenLoadStatus === TileTreeLoadStatus.NotFound;\r\n }\r\n public override getSizeProjectionCorners(): Point3d[] | undefined {\r\n if (!this.tree.isContentUnbounded)\r\n return undefined; // For a non-global tree use the standard size algorithm.\r\n\r\n // For global tiles (as in OSM buildings) return the range corners or X-Y corners only if bounded by region- this allows an algorithm that uses the area of the projected corners to attenuate horizon tiles.\r\n if (!this.rangeCorners)\r\n return this.range.corners(scratchCorners);\r\n\r\n return this.region ? this.rangeCorners.slice(4) : this.rangeCorners;\r\n }\r\n\r\n public get isStepChild() { return false; }\r\n\r\n protected loadAdditiveRefinementChildren(resolve: (children: Tile[]) => void): void {\r\n const region = this.region;\r\n const corners = this.rangeCorners;\r\n if (!region || !corners)\r\n return;\r\n\r\n const maximumSize = this.maximumSize;\r\n const rangeDiagonal = corners[0].distance(corners[3]);\r\n const isLeaf = rangeDiagonal < additiveRefinementThreshold || this.depth > additiveRefinementDepthLimit;\r\n\r\n const stepChildren = new Array<AdditiveRefinementStepChild>();\r\n const latitudeDelta = (region.maxLatitude - region.minLatitude) / 2;\r\n const longitudeDelta = (region.maxLongitude - region.minLongitude) / 2;\r\n const minHeight = region.minHeight;\r\n const maxHeight = region.maxHeight;\r\n\r\n for (let i = 0, minLongitude = region.minLongitude, step = 0; i < 2; i++, minLongitude += longitudeDelta, step++) {\r\n for (let j = 0, minLatitude = region.minLatitude; j < 2; j++, minLatitude += latitudeDelta) {\r\n const childRegion = new RealityTileRegion({ minLatitude, maxLatitude: minLatitude + latitudeDelta, minLongitude, maxLongitude: minLongitude + longitudeDelta, minHeight, maxHeight });\r\n const childRange = childRegion.getRange();\r\n\r\n const contentId = `${this.contentId}_S${step++}`;\r\n const childParams: RealityTileParams = { rangeCorners: childRange.corners, contentId, range: childRange.range, maximumSize, parent: this, additiveRefinement: false, isLeaf, region: childRegion };\r\n\r\n stepChildren.push(new AdditiveRefinementStepChild(childParams, this.realityRoot));\r\n }\r\n }\r\n resolve(stepChildren);\r\n }\r\n public override produceGraphics(): RenderGraphic | undefined {\r\n if (undefined === this._reprojectionTransform)\r\n return super.produceGraphics();\r\n\r\n if (undefined === this._reprojectedGraphic && undefined !== this._graphic) {\r\n const branch = new GraphicBranch(false);\r\n branch.add(this._graphic);\r\n this._reprojectedGraphic = IModelApp.renderSystem.createGraphicBranch(branch, this._reprojectionTransform);\r\n }\r\n return this._reprojectedGraphic;\r\n }\r\n\r\n public get unprojectedGraphic(): RenderGraphic | undefined {\r\n return this._graphic;\r\n }\r\n public override disposeContents(): void {\r\n super.disposeContents();\r\n this._reprojectedGraphic = dispose(this._reprojectedGraphic);\r\n }\r\n\r\n public collectTileGeometry(collector: TileGeometryCollector): void {\r\n const status = collector.collectTile(this);\r\n\r\n switch(status) {\r\n case \"reject\":\r\n return;\r\n\r\n case \"continue\":\r\n if (!this.isLeaf && !this._anyChildNotFound) {\r\n const childrenLoadStatus = this.loadChildren();\r\n if (TileTreeLoadStatus.Loading === childrenLoadStatus) {\r\n collector.markLoading();\r\n } else if (undefined !== this.realityChildren && !this._anyChildNotFound) {\r\n for (const child of this.realityChildren)\r\n child.collectTileGeometry(collector);\r\n }\r\n\r\n break;\r\n } // else fall through to \"accept\"\r\n // eslint-disable-next-line no-fallthrough\r\n case \"accept\":\r\n if (!this.isReady)\r\n collector.addMissingTile(this.loadableTile);\r\n else if (this.geometry?.polyfaces)\r\n collector.polyfaces.push(...this.geometry.polyfaces);\r\n\r\n break;\r\n }\r\n }\r\n}\r\n\r\n/** When additive refinement is used (as in the Cesium OSM tileset) it is not possible to accurately reproject very large, low level tiles\r\n * In this case we create additional \"step\" children (grandchildren etc. ) that will clipped portions display the their ancestor's additive geometry.\r\n * These step children are subdivided until they are small enough to be accurately reprojected - this is controlled by the additiveRefinementThreshold (currently 2KM).\r\n * The stepchildren do not contain any tile graphics - they just create a branch with clipping and reprojection to display their additive refinement ancestor graphics.\r\n */\r\nclass AdditiveRefinementStepChild extends RealityTile {\r\n public override get isStepChild() { return true; }\r\n private _loadableTile: RealityTile;\r\n\r\n public constructor(props: RealityTileParams, tree: RealityTileTree) {\r\n super(props, tree);\r\n this._loadableTile = this.realityParent;\r\n for (; this._loadableTile && this._loadableTile.isStepChild; this._loadableTile = this._loadableTile.realityParent)\r\n ;\r\n }\r\n public override get loadableTile(): RealityTile {\r\n return this._loadableTile;\r\n }\r\n public override get isLoading(): boolean { return this._loadableTile.isLoading; }\r\n public override get isQueued(): boolean { return this._loadableTile.isQueued; }\r\n public override get isNotFound(): boolean { return this._loadableTile.isNotFound; }\r\n public override get isReady(): boolean { return this._loadableTile.isReady; }\r\n public override get isLoaded(): boolean { return this._loadableTile.isLoaded; }\r\n public override get isEmpty() { return false; }\r\n public override produceGraphics(): RenderGraphic | undefined {\r\n if (undefined === this._graphic) {\r\n const parentGraphics = this._loadableTile.unprojectedGraphic;\r\n\r\n if (!parentGraphics || !this._reprojectionTransform)\r\n return undefined;\r\n\r\n const branch = new GraphicBranch(false);\r\n branch.add(parentGraphics);\r\n const renderSystem = IModelApp.renderSystem;\r\n const branchOptions: GraphicBranchOptions = {};\r\n if (this.rangeCorners) {\r\n const clipPolygon = [this.rangeCorners[0], this.rangeCorners[1], this.rangeCorners[3], this.rangeCorners[2]];\r\n branchOptions.clipVolume = renderSystem.createClipVolume(ClipVector.create([ClipShape.createShape(clipPolygon, undefined, undefined, this.tree.iModelTransform)!]));\r\n }\r\n this._graphic = renderSystem.createGraphicBranch(branch, this._reprojectionTransform, branchOptions);\r\n }\r\n return this._graphic;\r\n }\r\n\r\n public override markUsed(args: TileDrawArgs): void {\r\n args.markUsed(this);\r\n args.markUsed(this._loadableTile);\r\n }\r\n protected override _loadChildren(resolve: (children: Tile[] | undefined) => void, _reject: (error: Error) => void): void {\r\n this.loadAdditiveRefinementChildren((stepChildren: Tile[]) => {\r\n if (stepChildren)\r\n this.realityRoot.reprojectAndResolveChildren(this, stepChildren, resolve);\r\n });\r\n }\r\n}\r\n"]}
@@ -4,11 +4,14 @@
4
4
  import { Map4d } from "@itwin/core-geometry";
5
5
  import { FrustumPlanes } from "@itwin/core-common";
6
6
  import { TileDrawArgs } from "./internal";
7
+ import { RenderPlanarClassifier } from "../render/RenderPlanarClassifier";
7
8
  /** @internal */
8
9
  export declare class RealityTileDrawArgs extends TileDrawArgs {
9
10
  maxSelectionCount?: number | undefined;
11
+ private _secondaryClassifiers?;
10
12
  private readonly _worldToViewMap;
11
13
  get worldToViewMap(): Map4d;
12
- constructor(args: TileDrawArgs, worldToViewMap: Map4d, frustumPlanes: FrustumPlanes, maxSelectionCount?: number | undefined);
14
+ get secondaryClassifiers(): Map<number, RenderPlanarClassifier> | undefined;
15
+ constructor(args: TileDrawArgs, worldToViewMap: Map4d, frustumPlanes: FrustumPlanes, maxSelectionCount?: number | undefined, _secondaryClassifiers?: Map<number, RenderPlanarClassifier> | undefined);
13
16
  }
14
17
  //# sourceMappingURL=RealityTileDrawArgs.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"RealityTileDrawArgs.d.ts","sourceRoot":"","sources":["../../../src/tile/RealityTileDrawArgs.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE1C,gBAAgB;AAChB,qBAAa,mBAAoB,SAAQ,YAAY;IAIgD,iBAAiB,CAAC;IAHrH,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAQ;IACxC,IAAoB,cAAc,IAAI,KAAK,CAAiC;gBAEzD,IAAI,EAAE,YAAY,EAAE,cAAc,EAAE,KAAK,EAAE,aAAa,EAAE,aAAa,EAAS,iBAAiB,CAAC,oBAAQ;CAM9H"}
1
+ {"version":3,"file":"RealityTileDrawArgs.d.ts","sourceRoot":"","sources":["../../../src/tile/RealityTileDrawArgs.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAE,sBAAsB,EAAE,MAAM,kCAAkC,CAAC;AAE1E,gBAAgB;AAChB,qBAAa,mBAAoB,SAAQ,YAAY;IAKgD,iBAAiB,CAAC;IAAU,OAAO,CAAC,qBAAqB,CAAC;IAJ7J,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAQ;IACxC,IAAoB,cAAc,IAAI,KAAK,CAAiC;IAC5E,IAAoB,oBAAoB,oDAAwC;gBAE7D,IAAI,EAAE,YAAY,EAAE,cAAc,EAAE,KAAK,EAAE,aAAa,EAAE,aAAa,EAAS,iBAAiB,CAAC,oBAAQ,EAAU,qBAAqB,CAAC,iDAAqC;CAMnM"}
@@ -11,13 +11,15 @@ exports.RealityTileDrawArgs = void 0;
11
11
  const internal_1 = require("./internal");
12
12
  /** @internal */
13
13
  class RealityTileDrawArgs extends internal_1.TileDrawArgs {
14
- constructor(args, worldToViewMap, frustumPlanes, maxSelectionCount) {
14
+ constructor(args, worldToViewMap, frustumPlanes, maxSelectionCount, _secondaryClassifiers) {
15
15
  super({ ...args, viewFlagOverrides: args.viewFlagOverrides, symbologyOverrides: args.symbologyOverrides, parentsAndChildrenExclusive: false });
16
16
  this.maxSelectionCount = maxSelectionCount;
17
+ this._secondaryClassifiers = _secondaryClassifiers;
17
18
  this._worldToViewMap = worldToViewMap;
18
19
  this._frustumPlanes = frustumPlanes;
19
20
  }
20
21
  get worldToViewMap() { return this._worldToViewMap; }
22
+ get secondaryClassifiers() { return this._secondaryClassifiers; }
21
23
  }
22
24
  exports.RealityTileDrawArgs = RealityTileDrawArgs;
23
25
  //# sourceMappingURL=RealityTileDrawArgs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"RealityTileDrawArgs.js","sourceRoot":"","sources":["../../../src/tile/RealityTileDrawArgs.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;AAC/F;;GAEG;;;AAIH,yCAA0C;AAE1C,gBAAgB;AAChB,MAAa,mBAAoB,SAAQ,uBAAY;IAInD,YAAmB,IAAkB,EAAE,cAAqB,EAAE,aAA4B,EAAS,iBAA0B;QAC3H,KAAK,CAAC,EAAE,GAAG,IAAI,EAAE,iBAAiB,EAAE,IAAI,CAAC,iBAAiB,EAAE,kBAAkB,EAAE,IAAI,CAAC,kBAAkB,EAAE,2BAA2B,EAAE,KAAK,EAAE,CAAC,CAAC;QAD9C,sBAAiB,GAAjB,iBAAiB,CAAS;QAG3H,IAAI,CAAC,eAAe,GAAG,cAAc,CAAC;QACtC,IAAI,CAAC,cAAc,GAAG,aAAa,CAAC;IACtC,CAAC;IAPD,IAAoB,cAAc,KAAY,OAAO,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC;CAQ7E;AAVD,kDAUC","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module Tiles\r\n */\r\n\r\nimport { Map4d } from \"@itwin/core-geometry\";\r\nimport { FrustumPlanes } from \"@itwin/core-common\";\r\nimport { TileDrawArgs } from \"./internal\";\r\n\r\n/** @internal */\r\nexport class RealityTileDrawArgs extends TileDrawArgs {\r\n private readonly _worldToViewMap: Map4d;\r\n public override get worldToViewMap(): Map4d { return this._worldToViewMap; }\r\n\r\n public constructor(args: TileDrawArgs, worldToViewMap: Map4d, frustumPlanes: FrustumPlanes, public maxSelectionCount?: number) {\r\n super({ ...args, viewFlagOverrides: args.viewFlagOverrides, symbologyOverrides: args.symbologyOverrides, parentsAndChildrenExclusive: false });\r\n\r\n this._worldToViewMap = worldToViewMap;\r\n this._frustumPlanes = frustumPlanes;\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"RealityTileDrawArgs.js","sourceRoot":"","sources":["../../../src/tile/RealityTileDrawArgs.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;AAC/F;;GAEG;;;AAIH,yCAA0C;AAG1C,gBAAgB;AAChB,MAAa,mBAAoB,SAAQ,uBAAY;IAKnD,YAAmB,IAAkB,EAAE,cAAqB,EAAE,aAA4B,EAAS,iBAA0B,EAAU,qBAA2D;QAChM,KAAK,CAAC,EAAE,GAAG,IAAI,EAAE,iBAAiB,EAAE,IAAI,CAAC,iBAAiB,EAAE,kBAAkB,EAAE,IAAI,CAAC,kBAAkB,EAAE,2BAA2B,EAAE,KAAK,EAAE,CAAC,CAAC;QAD9C,sBAAiB,GAAjB,iBAAiB,CAAS;QAAU,0BAAqB,GAArB,qBAAqB,CAAsC;QAGhM,IAAI,CAAC,eAAe,GAAG,cAAc,CAAC;QACtC,IAAI,CAAC,cAAc,GAAG,aAAa,CAAC;IACtC,CAAC;IARD,IAAoB,cAAc,KAAY,OAAO,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC;IAC5E,IAAoB,oBAAoB,KAAK,OAAO,IAAI,CAAC,qBAAqB,CAAC,CAAA,CAAC;CAQjF;AAXD,kDAWC","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module Tiles\r\n */\r\n\r\nimport { Map4d } from \"@itwin/core-geometry\";\r\nimport { FrustumPlanes } from \"@itwin/core-common\";\r\nimport { TileDrawArgs } from \"./internal\";\r\nimport { RenderPlanarClassifier } from \"../render/RenderPlanarClassifier\";\r\n\r\n/** @internal */\r\nexport class RealityTileDrawArgs extends TileDrawArgs {\r\n private readonly _worldToViewMap: Map4d;\r\n public override get worldToViewMap(): Map4d { return this._worldToViewMap; }\r\n public override get secondaryClassifiers() { return this._secondaryClassifiers;}\r\n\r\n public constructor(args: TileDrawArgs, worldToViewMap: Map4d, frustumPlanes: FrustumPlanes, public maxSelectionCount?: number, private _secondaryClassifiers?: Map<number, RenderPlanarClassifier>) {\r\n super({ ...args, viewFlagOverrides: args.viewFlagOverrides, symbologyOverrides: args.symbologyOverrides, parentsAndChildrenExclusive: false });\r\n\r\n this._worldToViewMap = worldToViewMap;\r\n this._frustumPlanes = frustumPlanes;\r\n }\r\n}\r\n"]}
@@ -6,15 +6,16 @@ import { Transform } from "@itwin/core-geometry";
6
6
  import { BatchType, ViewFlagOverrides } from "@itwin/core-common";
7
7
  import { RenderSystem } from "../render/RenderSystem";
8
8
  import { Viewport } from "../Viewport";
9
- import { BatchedTileIdMap, RealityTile, Tile, TileContent, TileDrawArgs, TileLoadPriority, TileRequest, TileRequestChannel, TileUser } from "./internal";
9
+ import { BatchedTileIdMap, RealityTile, RealityTileContent, Tile, TileDrawArgs, TileLoadPriority, TileRequest, TileRequestChannel, TileUser } from "./internal";
10
10
  /** Serves as a "handler" for a specific type of [[TileTree]]. Its primary responsibilities involve loading tile content.
11
11
  * @internal
12
12
  */
13
13
  export declare abstract class RealityTileLoader {
14
+ private _produceGeometry?;
14
15
  private _containsPointClouds;
15
16
  readonly preloadRealityParentDepth: number;
16
17
  readonly preloadRealityParentSkip: number;
17
- constructor();
18
+ constructor(_produceGeometry?: boolean | undefined);
18
19
  computeTilePriority(tile: Tile, viewports: Iterable<Viewport>, _users: Iterable<TileUser>): number;
19
20
  abstract loadChildren(tile: RealityTile): Promise<Tile[] | undefined>;
20
21
  abstract getRequestChannel(tile: Tile): TileRequestChannel;
@@ -31,8 +32,10 @@ export declare abstract class RealityTileLoader {
31
32
  get parentsAndChildrenExclusive(): boolean;
32
33
  forceTileLoad(_tile: Tile): boolean;
33
34
  processSelectedTiles(selected: Tile[], _args: TileDrawArgs): Tile[];
34
- loadTileContent(tile: Tile, data: TileRequest.ResponseData, system: RenderSystem, isCanceled?: () => boolean): Promise<TileContent>;
35
- loadTileContentFromStream(tile: RealityTile, streamBuffer: ByteStream, system: RenderSystem, isCanceled?: () => boolean): Promise<TileContent>;
35
+ loadTileContent(tile: Tile, data: TileRequest.ResponseData, system: RenderSystem, isCanceled?: () => boolean): Promise<RealityTileContent>;
36
+ private _getFormat;
37
+ loadGeometryFromStream(tile: RealityTile, streamBuffer: ByteStream, system: RenderSystem): Promise<RealityTileContent>;
38
+ private loadGraphicsFromStream;
36
39
  get viewFlagOverrides(): ViewFlagOverrides;
37
40
  static computeTileClosestToEyePriority(tile: Tile, viewports: Iterable<Viewport>, location: Transform): number;
38
41
  }
@@ -1 +1 @@
1
- {"version":3,"file":"RealityTileLoader.d.ts","sourceRoot":"","sources":["../../../src/tile/RealityTileLoader.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,EAAU,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAW,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,SAAS,EAAmC,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAGnG,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EACO,gBAAgB,EAAqF,WAAW,EAAE,IAAI,EAAE,WAAW,EAC/I,YAAY,EAAE,gBAAgB,EAAE,WAAW,EAAE,kBAAkB,EAAE,QAAQ,EAC1E,MAAM,YAAY,CAAC;AAOpB;;GAEG;AACH,8BAAsB,iBAAiB;IACrC,OAAO,CAAC,oBAAoB,CAAS;IACrC,SAAgB,yBAAyB,EAAE,MAAM,CAAC;IAClD,SAAgB,wBAAwB,EAAE,MAAM,CAAC;;IAO1C,mBAAmB,CAAC,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,QAAQ,CAAC,GAAG,MAAM;aAKzF,YAAY,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,EAAE,GAAG,SAAS,CAAC;aAC5D,iBAAiB,CAAC,IAAI,EAAE,IAAI,GAAG,kBAAkB;aACjD,kBAAkB,CAAC,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,OAAO,GAAG,OAAO,CAAC,WAAW,CAAC,QAAQ,CAAC;IACxG,IAAW,wBAAwB,IAAI,OAAO,CAAkB;IAChE,aAAoB,QAAQ,IAAI,MAAM,CAAC;IACvC,aAAoB,QAAQ,IAAI,MAAM,CAAC;IACvC,aAAoB,QAAQ,IAAI,gBAAgB,CAAC;IACjD,SAAS,KAAK,UAAU,IAAI,SAAS,CAA8B;IACnE,SAAS,KAAK,UAAU,IAAI,OAAO,CAAiB;IAC7C,aAAa,IAAI,gBAAgB,GAAG,SAAS;IACpD,IAAW,kBAAkB,IAAI,OAAO,CAAkB;IAC1D,IAAW,mBAAmB,IAAI,OAAO,CAAsC;IAC/E,IAAW,2BAA2B,IAAI,OAAO,CAAiB;IAC3D,aAAa,CAAC,KAAK,EAAE,IAAI,GAAG,OAAO;IAEnC,oBAAoB,CAAC,QAAQ,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,YAAY,GAAG,IAAI,EAAE;IAG7D,eAAe,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,WAAW,CAAC,YAAY,EAAE,MAAM,EAAE,YAAY,EAAE,UAAU,CAAC,EAAE,MAAM,OAAO,GAAG,OAAO,CAAC,WAAW,CAAC;IAOnI,yBAAyB,CAAC,IAAI,EAAE,WAAW,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,EAAE,YAAY,EAAE,UAAU,CAAC,EAAE,MAAM,OAAO,GAAG,OAAO,CAAC,WAAW,CAAC;IA8D3J,IAAW,iBAAiB,IAAI,iBAAiB,CAAqC;WAExE,+BAA+B,CAAC,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,CAAC,QAAQ,CAAC,EAAE,QAAQ,EAAE,SAAS,GAAG,MAAM;CAatH"}
1
+ {"version":3,"file":"RealityTileLoader.d.ts","sourceRoot":"","sources":["../../../src/tile/RealityTileLoader.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,EAAU,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAW,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,SAAS,EAAmC,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAGnG,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EACO,gBAAgB,EAAqF,WAAW,EAAE,kBAAkB,EAAE,IAAI,EACtJ,YAAY,EAAE,gBAAgB,EAAE,WAAW,EAAE,kBAAkB,EAAE,QAAQ,EAC1E,MAAM,YAAY,CAAC;AAOpB;;GAEG;AACH,8BAAsB,iBAAiB;IAKlB,OAAO,CAAC,gBAAgB,CAAC;IAJ5C,OAAO,CAAC,oBAAoB,CAAS;IACrC,SAAgB,yBAAyB,EAAE,MAAM,CAAC;IAClD,SAAgB,wBAAwB,EAAE,MAAM,CAAC;gBAEtB,gBAAgB,CAAC,qBAAS;IAK9C,mBAAmB,CAAC,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,QAAQ,CAAC,GAAG,MAAM;aAKzF,YAAY,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,EAAE,GAAG,SAAS,CAAC;aAC5D,iBAAiB,CAAC,IAAI,EAAE,IAAI,GAAG,kBAAkB;aACjD,kBAAkB,CAAC,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,OAAO,GAAG,OAAO,CAAC,WAAW,CAAC,QAAQ,CAAC;IACxG,IAAW,wBAAwB,IAAI,OAAO,CAAkB;IAChE,aAAoB,QAAQ,IAAI,MAAM,CAAC;IACvC,aAAoB,QAAQ,IAAI,MAAM,CAAC;IACvC,aAAoB,QAAQ,IAAI,gBAAgB,CAAC;IACjD,SAAS,KAAK,UAAU,IAAI,SAAS,CAA8B;IACnE,SAAS,KAAK,UAAU,IAAI,OAAO,CAAiB;IAC7C,aAAa,IAAI,gBAAgB,GAAG,SAAS;IACpD,IAAW,kBAAkB,IAAI,OAAO,CAAkB;IAC1D,IAAW,mBAAmB,IAAI,OAAO,CAAsC;IAC/E,IAAW,2BAA2B,IAAI,OAAO,CAAiB;IAC3D,aAAa,CAAC,KAAK,EAAE,IAAI,GAAG,OAAO;IAEnC,oBAAoB,CAAC,QAAQ,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,YAAY,GAAG,IAAI,EAAE;IAG7D,eAAe,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,WAAW,CAAC,YAAY,EAAE,MAAM,EAAE,YAAY,EAAE,UAAU,CAAC,EAAE,MAAM,OAAO,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAQvJ,OAAO,CAAC,UAAU;IAQL,sBAAsB,CAAC,IAAI,EAAE,WAAW,EAAG,YAAY,EAAE,UAAU,EAAE,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,kBAAkB,CAAC;YAUtH,sBAAsB;IA2DpC,IAAW,iBAAiB,IAAI,iBAAiB,CAAqC;WAExE,+BAA+B,CAAC,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,CAAC,QAAQ,CAAC,EAAE,QAAQ,EAAE,SAAS,GAAG,MAAM;CAatH"}
@@ -21,7 +21,8 @@ const scratchTileCenterView = new core_geometry_1.Point3d();
21
21
  * @internal
22
22
  */
23
23
  class RealityTileLoader {
24
- constructor() {
24
+ constructor(_produceGeometry) {
25
+ this._produceGeometry = _produceGeometry;
25
26
  this._containsPointClouds = false;
26
27
  this.preloadRealityParentDepth = IModelApp_1.IModelApp.tileAdmin.contextPreloadParentDepth;
27
28
  this.preloadRealityParentSkip = IModelApp_1.IModelApp.tileAdmin.contextPreloadParentSkip;
@@ -44,12 +45,25 @@ class RealityTileLoader {
44
45
  (0, core_bentley_1.assert)(data instanceof Uint8Array);
45
46
  const blob = data;
46
47
  const streamBuffer = core_bentley_1.ByteStream.fromUint8Array(blob);
47
- return this.loadTileContentFromStream(tile, streamBuffer, system, isCanceled);
48
+ const realityTile = tile;
49
+ return this._produceGeometry ? this.loadGeometryFromStream(realityTile, streamBuffer, system) : this.loadGraphicsFromStream(realityTile, streamBuffer, system, isCanceled);
48
50
  }
49
- async loadTileContentFromStream(tile, streamBuffer, system, isCanceled) {
51
+ _getFormat(streamBuffer) {
50
52
  const position = streamBuffer.curPos;
51
53
  const format = streamBuffer.nextUint32;
52
54
  streamBuffer.curPos = position;
55
+ return format;
56
+ }
57
+ async loadGeometryFromStream(tile, streamBuffer, system) {
58
+ const format = this._getFormat(streamBuffer);
59
+ if (format !== core_common_1.TileFormat.B3dm)
60
+ return {};
61
+ const { is3d, yAxisUp, iModel, modelId } = tile.realityRoot;
62
+ const reader = internal_1.B3dmReader.create(streamBuffer, iModel, modelId, is3d, tile.contentRange, system, yAxisUp, tile.isLeaf, tile.center, tile.transformToRoot, undefined, this.getBatchIdMap());
63
+ return { geometry: reader === null || reader === void 0 ? void 0 : reader.readGltfAndCreateGeometry(tile.tree.iModelTransform) };
64
+ }
65
+ async loadGraphicsFromStream(tile, streamBuffer, system, isCanceled) {
66
+ const format = this._getFormat(streamBuffer);
53
67
  if (undefined === isCanceled)
54
68
  isCanceled = () => !tile.isLoading;
55
69
  const { is3d, yAxisUp, iModel, modelId } = tile.realityRoot;
@@ -57,7 +71,7 @@ class RealityTileLoader {
57
71
  switch (format) {
58
72
  case core_common_1.TileFormat.Pnts:
59
73
  this._containsPointClouds = true;
60
- let graphic = (0, internal_1.readPointCloudTileContent)(streamBuffer, iModel, modelId, is3d, tile.contentRange, system);
74
+ let graphic = await (0, internal_1.readPointCloudTileContent)(streamBuffer, iModel, modelId, is3d, tile.contentRange, system);
61
75
  if (graphic && tile.transformToRoot && !tile.transformToRoot.isIdentity) {
62
76
  const transformBranch = new GraphicBranch_1.GraphicBranch(true);
63
77
  transformBranch.add(graphic);
@@ -80,7 +94,7 @@ class RealityTileLoader {
80
94
  streamBuffer.advance(8); // Skip magic and version.
81
95
  const tileBytes = streamBuffer.nextUint32;
82
96
  streamBuffer.curPos = tilePosition;
83
- const result = await this.loadTileContentFromStream(tile, streamBuffer, system, isCanceled);
97
+ const result = await this.loadGraphicsFromStream(tile, streamBuffer, system, isCanceled);
84
98
  if (result.graphic)
85
99
  branch.add(result.graphic);
86
100
  streamBuffer.curPos = tilePosition + tileBytes;
@@ -1 +1 @@
1
- {"version":3,"file":"RealityTileLoader.js","sourceRoot":"","sources":["../../../src/tile/RealityTileLoader.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;AAC/F;;GAEG;;;AAEH,sDAAyD;AACzD,wDAA0D;AAC1D,oDAAmG;AACnG,4CAAyC;AACzC,2DAAwD;AAGxD,yCAGoB;AAEpB,MAAM,wBAAwB,GAAG,IAAA,yCAA8B,EAAC,EAAE,CAAC,CAAC;AAEpE,MAAM,sBAAsB,GAAG,IAAI,uBAAO,EAAE,CAAC;AAC7C,MAAM,qBAAqB,GAAG,IAAI,uBAAO,EAAE,CAAC;AAE5C;;GAEG;AACH,MAAsB,iBAAiB;IAKrC;QAJQ,yBAAoB,GAAG,KAAK,CAAC;QAKnC,IAAI,CAAC,yBAAyB,GAAG,qBAAS,CAAC,SAAS,CAAC,yBAAyB,CAAC;QAC/E,IAAI,CAAC,wBAAwB,GAAG,qBAAS,CAAC,SAAS,CAAC,wBAAwB,CAAC;IAC/E,CAAC;IAEM,mBAAmB,CAAC,IAAU,EAAE,SAA6B,EAAE,MAA0B;QAC9F,8HAA8H;QAC9H,OAAO,iBAAiB,CAAC,+BAA+B,CAAC,IAAI,EAAE,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;IACvG,CAAC;IAKD,IAAW,wBAAwB,KAAc,OAAO,KAAK,CAAC,CAAC,CAAC;IAIhE,IAAc,UAAU,KAAgB,OAAO,uBAAS,CAAC,OAAO,CAAC,CAAC,CAAC;IACnE,IAAc,UAAU,KAAc,OAAO,IAAI,CAAC,CAAC,CAAC;IAC7C,aAAa,KAAmC,OAAO,SAAS,CAAC,CAAC,CAAC;IAC1E,IAAW,kBAAkB,KAAc,OAAO,KAAK,CAAC,CAAC,CAAC;IAC1D,IAAW,mBAAmB,KAAc,OAAO,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC;IAC/E,IAAW,2BAA2B,KAAc,OAAO,IAAI,CAAC,CAAC,CAAC;IAC3D,aAAa,CAAC,KAAW,IAAa,OAAO,KAAK,CAAC,CAAC,CAAC;IAErD,oBAAoB,CAAC,QAAgB,EAAE,KAAmB,IAAY,OAAO,QAAQ,CAAC,CAAC,CAAC;IAE/F,iIAAiI;IAC1H,KAAK,CAAC,eAAe,CAAC,IAAU,EAAE,IAA8B,EAAE,MAAoB,EAAE,UAA0B;QACvH,IAAA,qBAAM,EAAC,IAAI,YAAY,UAAU,CAAC,CAAC;QACnC,MAAM,IAAI,GAAG,IAAI,CAAC;QAClB,MAAM,YAAY,GAAG,yBAAU,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;QACrD,OAAO,IAAI,CAAC,yBAAyB,CAAC,IAAmB,EAAE,YAAY,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC;IAC/F,CAAC;IAEM,KAAK,CAAC,yBAAyB,CAAC,IAAiB,EAAE,YAAwB,EAAE,MAAoB,EAAE,UAA0B;QAClI,MAAM,QAAQ,GAAG,YAAY,CAAC,MAAM,CAAC;QACrC,MAAM,MAAM,GAAG,YAAY,CAAC,UAAU,CAAC;QACvC,YAAY,CAAC,MAAM,GAAG,QAAQ,CAAC;QAE/B,IAAI,SAAS,KAAK,UAAU;YAC1B,UAAU,GAAG,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC;QAErC,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC;QAC5D,IAAI,MAA8B,CAAC;QACnC,QAAQ,MAAM,EAAE;YACd,KAAK,wBAAU,CAAC,IAAI;gBAClB,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC;gBACjC,IAAI,OAAO,GAAG,IAAA,oCAAyB,EAAC,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;gBACxG,IAAI,OAAO,IAAI,IAAI,CAAC,eAAe,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,UAAU,EAAE;oBACvE,MAAM,eAAe,GAAG,IAAI,6BAAa,CAAC,IAAI,CAAC,CAAC;oBAChD,eAAe,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;oBAC7B,OAAO,GAAG,MAAM,CAAC,YAAY,CAAC,eAAe,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;iBACtE;gBAED,OAAO,EAAE,OAAO,EAAE,CAAC;YAErB,KAAK,wBAAU,CAAC,IAAI;gBAClB,MAAM,GAAG,qBAAU,CAAC,MAAM,CAAC,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,eAAe,EAAE,UAAU,EAAE,IAAI,CAAC,aAAa,EAAE,EAAE,IAAI,CAAC,wBAAwB,CAAC,CAAC;gBACrN,MAAM;YACR,KAAK,wBAAU,CAAC,IAAI;gBAClB,MAAM,GAAG,qBAAU,CAAC,MAAM,CAAC,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,IAAI,CAAC,wBAAwB,CAAC,CAAC;gBACvK,MAAM;YACR,KAAK,wBAAU,CAAC,IAAI;gBAClB,MAAM,MAAM,GAAG,IAAI,iCAAmB,CAAC,YAAY,CAAC,CAAC;gBACrD,IAAI,CAAC,MAAM,CAAC,OAAO;oBAAE,OAAO,EAAE,CAAC;gBAC/B,MAAM,MAAM,GAAG,IAAI,6BAAa,CAAC,IAAI,CAAC,CAAC;gBACvC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,SAAS,EAAE,CAAC,EAAE,EAAE;oBACzC,MAAM,YAAY,GAAG,YAAY,CAAC,MAAM,CAAC;oBACzC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAI,0BAA0B;oBACtD,MAAM,SAAS,GAAG,YAAY,CAAC,UAAU,CAAC;oBAC1C,YAAY,CAAC,MAAM,GAAG,YAAY,CAAC;oBACnC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,yBAAyB,CAAC,IAAI,EAAE,YAAY,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC;oBAC5F,IAAI,MAAM,CAAC,OAAO;wBAChB,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;oBAC7B,YAAY,CAAC,MAAM,GAAG,YAAY,GAAG,SAAS,CAAC;iBAChD;gBACD,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,MAAM,EAAE,yBAAS,CAAC,cAAc,EAAE,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC;YAEhI;gBACE,IAAA,qBAAM,EAAC,KAAK,EAAE,uBAAuB,MAAM,EAAE,CAAC,CAAC;gBAC/C,MAAM;SACT;QAED,IAAI,OAAO,GAAgB,EAAE,CAAC;QAC9B,IAAI,SAAS,KAAK,MAAM,EAAE;YACxB,IAAI;gBACF,OAAO,GAAG,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;aAC/B;YAAC,OAAO,IAAI,EAAE;gBACb,iEAAiE;gBACjE,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;aACvB;SACF;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,IAAW,iBAAiB,KAAwB,OAAO,wBAAwB,CAAC,CAAC,CAAC;IAE/E,MAAM,CAAC,+BAA+B,CAAC,IAAU,EAAE,SAA6B,EAAE,QAAmB;QAC1G,kCAAkC;QAClC,oDAAoD;QACpD,MAAM,MAAM,GAAG,QAAQ,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,EAAE,sBAAsB,CAAC,CAAC;QAC7E,IAAI,WAAW,GAAG,GAAG,CAAC;QACtB,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE;YAChC,MAAM,GAAG,GAAG,QAAQ,CAAC,UAAU,CAAC,MAAM,EAAE,qBAAqB,CAAC,CAAC;YAC/D,MAAM,QAAQ,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC;YAC7B,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;SAC/C;QAED,OAAO,WAAW,CAAC;IACrB,CAAC;CACF;AArHD,8CAqHC","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module Tiles\r\n */\r\n\r\nimport { assert, ByteStream } from \"@itwin/core-bentley\";\r\nimport { Point3d, Transform } from \"@itwin/core-geometry\";\r\nimport { BatchType, CompositeTileHeader, TileFormat, ViewFlagOverrides } from \"@itwin/core-common\";\r\nimport { IModelApp } from \"../IModelApp\";\r\nimport { GraphicBranch } from \"../render/GraphicBranch\";\r\nimport { RenderSystem } from \"../render/RenderSystem\";\r\nimport { Viewport } from \"../Viewport\";\r\nimport {\r\n B3dmReader, BatchedTileIdMap, createDefaultViewFlagOverrides, GltfReader, I3dmReader, readPointCloudTileContent, RealityTile, Tile, TileContent,\r\n TileDrawArgs, TileLoadPriority, TileRequest, TileRequestChannel, TileUser,\r\n} from \"./internal\";\r\n\r\nconst defaultViewFlagOverrides = createDefaultViewFlagOverrides({});\r\n\r\nconst scratchTileCenterWorld = new Point3d();\r\nconst scratchTileCenterView = new Point3d();\r\n\r\n/** Serves as a \"handler\" for a specific type of [[TileTree]]. Its primary responsibilities involve loading tile content.\r\n * @internal\r\n */\r\nexport abstract class RealityTileLoader {\r\n private _containsPointClouds = false;\r\n public readonly preloadRealityParentDepth: number;\r\n public readonly preloadRealityParentSkip: number;\r\n\r\n public constructor() {\r\n this.preloadRealityParentDepth = IModelApp.tileAdmin.contextPreloadParentDepth;\r\n this.preloadRealityParentSkip = IModelApp.tileAdmin.contextPreloadParentSkip;\r\n }\r\n\r\n public computeTilePriority(tile: Tile, viewports: Iterable<Viewport>, _users: Iterable<TileUser>): number {\r\n // ###TODO: Handle case where tile tree reference(s) have a transform different from tree's (background map with ground bias).\r\n return RealityTileLoader.computeTileClosestToEyePriority(tile, viewports, tile.tree.iModelTransform);\r\n }\r\n\r\n public abstract loadChildren(tile: RealityTile): Promise<Tile[] | undefined>;\r\n public abstract getRequestChannel(tile: Tile): TileRequestChannel;\r\n public abstract requestTileContent(tile: Tile, isCanceled: () => boolean): Promise<TileRequest.Response>;\r\n public get wantDeduplicatedVertices(): boolean { return false; }\r\n public abstract get maxDepth(): number;\r\n public abstract get minDepth(): number;\r\n public abstract get priority(): TileLoadPriority;\r\n protected get _batchType(): BatchType { return BatchType.Primary; }\r\n protected get _loadEdges(): boolean { return true; }\r\n public getBatchIdMap(): BatchedTileIdMap | undefined { return undefined; }\r\n public get isContentUnbounded(): boolean { return false; }\r\n public get containsPointClouds(): boolean { return this._containsPointClouds; }\r\n public get parentsAndChildrenExclusive(): boolean { return true; }\r\n public forceTileLoad(_tile: Tile): boolean { return false; }\r\n\r\n public processSelectedTiles(selected: Tile[], _args: TileDrawArgs): Tile[] { return selected; }\r\n\r\n // NB: The isCanceled arg is chiefly for tests...in usual case it just returns false if the tile is no longer in 'loading' state.\r\n public async loadTileContent(tile: Tile, data: TileRequest.ResponseData, system: RenderSystem, isCanceled?: () => boolean): Promise<TileContent> {\r\n assert(data instanceof Uint8Array);\r\n const blob = data;\r\n const streamBuffer = ByteStream.fromUint8Array(blob);\r\n return this.loadTileContentFromStream(tile as RealityTile, streamBuffer, system, isCanceled);\r\n }\r\n\r\n public async loadTileContentFromStream(tile: RealityTile, streamBuffer: ByteStream, system: RenderSystem, isCanceled?: () => boolean): Promise<TileContent> {\r\n const position = streamBuffer.curPos;\r\n const format = streamBuffer.nextUint32;\r\n streamBuffer.curPos = position;\r\n\r\n if (undefined === isCanceled)\r\n isCanceled = () => !tile.isLoading;\r\n\r\n const { is3d, yAxisUp, iModel, modelId } = tile.realityRoot;\r\n let reader: GltfReader | undefined;\r\n switch (format) {\r\n case TileFormat.Pnts:\r\n this._containsPointClouds = true;\r\n let graphic = readPointCloudTileContent(streamBuffer, iModel, modelId, is3d, tile.contentRange, system);\r\n if (graphic && tile.transformToRoot && !tile.transformToRoot.isIdentity) {\r\n const transformBranch = new GraphicBranch(true);\r\n transformBranch.add(graphic);\r\n graphic = system.createBranch(transformBranch, tile.transformToRoot);\r\n }\r\n\r\n return { graphic };\r\n\r\n case TileFormat.B3dm:\r\n reader = B3dmReader.create(streamBuffer, iModel, modelId, is3d, tile.contentRange, system, yAxisUp, tile.isLeaf, tile.center, tile.transformToRoot, isCanceled, this.getBatchIdMap(), this.wantDeduplicatedVertices);\r\n break;\r\n case TileFormat.I3dm:\r\n reader = I3dmReader.create(streamBuffer, iModel, modelId, is3d, tile.contentRange, system, yAxisUp, tile.isLeaf, isCanceled, undefined, this.wantDeduplicatedVertices);\r\n break;\r\n case TileFormat.Cmpt:\r\n const header = new CompositeTileHeader(streamBuffer);\r\n if (!header.isValid) return {};\r\n const branch = new GraphicBranch(true);\r\n for (let i = 0; i < header.tileCount; i++) {\r\n const tilePosition = streamBuffer.curPos;\r\n streamBuffer.advance(8); // Skip magic and version.\r\n const tileBytes = streamBuffer.nextUint32;\r\n streamBuffer.curPos = tilePosition;\r\n const result = await this.loadTileContentFromStream(tile, streamBuffer, system, isCanceled);\r\n if (result.graphic)\r\n branch.add(result.graphic);\r\n streamBuffer.curPos = tilePosition + tileBytes;\r\n }\r\n return { graphic: branch.isEmpty ? undefined : system.createBranch(branch, Transform.createIdentity()), isLeaf: tile.isLeaf };\r\n\r\n default:\r\n assert(false, `unknown tile format ${format}`);\r\n break;\r\n }\r\n\r\n let content: TileContent = {};\r\n if (undefined !== reader) {\r\n try {\r\n content = await reader.read();\r\n } catch (_err) {\r\n // Failure to load should prevent us from trying to load children\r\n content.isLeaf = true;\r\n }\r\n }\r\n\r\n return content;\r\n }\r\n\r\n public get viewFlagOverrides(): ViewFlagOverrides { return defaultViewFlagOverrides; }\r\n\r\n public static computeTileClosestToEyePriority(tile: Tile, viewports: Iterable<Viewport>, location: Transform): number {\r\n // Prioritize tiles closer to eye.\r\n // NB: In NPC coords, 0 = far plane, 1 = near plane.\r\n const center = location.multiplyPoint3d(tile.center, scratchTileCenterWorld);\r\n let minDistance = 1.0;\r\n for (const viewport of viewports) {\r\n const npc = viewport.worldToNpc(center, scratchTileCenterView);\r\n const distance = 1.0 - npc.z;\r\n minDistance = Math.min(distance, minDistance);\r\n }\r\n\r\n return minDistance;\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"RealityTileLoader.js","sourceRoot":"","sources":["../../../src/tile/RealityTileLoader.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module Tiles\r\n */\r\n\r\nimport { assert, ByteStream } from \"@itwin/core-bentley\";\r\nimport { Point3d, Transform } from \"@itwin/core-geometry\";\r\nimport { BatchType, CompositeTileHeader, TileFormat, ViewFlagOverrides } from \"@itwin/core-common\";\r\nimport { IModelApp } from \"../IModelApp\";\r\nimport { GraphicBranch } from \"../render/GraphicBranch\";\r\nimport { RenderSystem } from \"../render/RenderSystem\";\r\nimport { Viewport } from \"../Viewport\";\r\nimport {\r\n B3dmReader, BatchedTileIdMap, createDefaultViewFlagOverrides, GltfReader, I3dmReader, readPointCloudTileContent, RealityTile, RealityTileContent, Tile, TileContent,\r\n TileDrawArgs, TileLoadPriority, TileRequest, TileRequestChannel, TileUser,\r\n} from \"./internal\";\r\n\r\nconst defaultViewFlagOverrides = createDefaultViewFlagOverrides({});\r\n\r\nconst scratchTileCenterWorld = new Point3d();\r\nconst scratchTileCenterView = new Point3d();\r\n\r\n/** Serves as a \"handler\" for a specific type of [[TileTree]]. Its primary responsibilities involve loading tile content.\r\n * @internal\r\n */\r\nexport abstract class RealityTileLoader {\r\n private _containsPointClouds = false;\r\n public readonly preloadRealityParentDepth: number;\r\n public readonly preloadRealityParentSkip: number;\r\n\r\n public constructor(private _produceGeometry?: boolean) {\r\n this.preloadRealityParentDepth = IModelApp.tileAdmin.contextPreloadParentDepth;\r\n this.preloadRealityParentSkip = IModelApp.tileAdmin.contextPreloadParentSkip;\r\n }\r\n\r\n public computeTilePriority(tile: Tile, viewports: Iterable<Viewport>, _users: Iterable<TileUser>): number {\r\n // ###TODO: Handle case where tile tree reference(s) have a transform different from tree's (background map with ground bias).\r\n return RealityTileLoader.computeTileClosestToEyePriority(tile, viewports, tile.tree.iModelTransform);\r\n }\r\n\r\n public abstract loadChildren(tile: RealityTile): Promise<Tile[] | undefined>;\r\n public abstract getRequestChannel(tile: Tile): TileRequestChannel;\r\n public abstract requestTileContent(tile: Tile, isCanceled: () => boolean): Promise<TileRequest.Response>;\r\n public get wantDeduplicatedVertices(): boolean { return false; }\r\n public abstract get maxDepth(): number;\r\n public abstract get minDepth(): number;\r\n public abstract get priority(): TileLoadPriority;\r\n protected get _batchType(): BatchType { return BatchType.Primary; }\r\n protected get _loadEdges(): boolean { return true; }\r\n public getBatchIdMap(): BatchedTileIdMap | undefined { return undefined; }\r\n public get isContentUnbounded(): boolean { return false; }\r\n public get containsPointClouds(): boolean { return this._containsPointClouds; }\r\n public get parentsAndChildrenExclusive(): boolean { return true; }\r\n public forceTileLoad(_tile: Tile): boolean { return false; }\r\n\r\n public processSelectedTiles(selected: Tile[], _args: TileDrawArgs): Tile[] { return selected; }\r\n\r\n // NB: The isCanceled arg is chiefly for tests...in usual case it just returns false if the tile is no longer in 'loading' state.\r\n public async loadTileContent(tile: Tile, data: TileRequest.ResponseData, system: RenderSystem, isCanceled?: () => boolean): Promise<RealityTileContent> {\r\n assert(data instanceof Uint8Array);\r\n const blob = data;\r\n const streamBuffer = ByteStream.fromUint8Array(blob);\r\n const realityTile = tile as RealityTile;\r\n return this._produceGeometry ? this.loadGeometryFromStream(realityTile, streamBuffer, system) : this.loadGraphicsFromStream(realityTile, streamBuffer, system, isCanceled);\r\n }\r\n\r\n private _getFormat(streamBuffer: ByteStream) {\r\n const position = streamBuffer.curPos;\r\n const format = streamBuffer.nextUint32;\r\n streamBuffer.curPos = position;\r\n return format;\r\n\r\n }\r\n\r\n public async loadGeometryFromStream(tile: RealityTile, streamBuffer: ByteStream, system: RenderSystem): Promise<RealityTileContent> {\r\n const format = this._getFormat(streamBuffer);\r\n if (format !== TileFormat.B3dm)\r\n return {};\r\n\r\n const { is3d, yAxisUp, iModel, modelId } = tile.realityRoot;\r\n const reader = B3dmReader.create(streamBuffer, iModel, modelId, is3d, tile.contentRange, system, yAxisUp, tile.isLeaf, tile.center, tile.transformToRoot, undefined, this.getBatchIdMap());\r\n return { geometry: reader?.readGltfAndCreateGeometry(tile.tree.iModelTransform) };\r\n }\r\n\r\n private async loadGraphicsFromStream(tile: RealityTile, streamBuffer: ByteStream, system: RenderSystem, isCanceled?: () => boolean): Promise<TileContent> {\r\n const format = this._getFormat(streamBuffer);\r\n if (undefined === isCanceled)\r\n isCanceled = () => !tile.isLoading;\r\n\r\n const { is3d, yAxisUp, iModel, modelId } = tile.realityRoot;\r\n let reader: GltfReader | undefined;\r\n switch (format) {\r\n case TileFormat.Pnts:\r\n this._containsPointClouds = true;\r\n let graphic = await readPointCloudTileContent(streamBuffer, iModel, modelId, is3d, tile.contentRange, system);\r\n if (graphic && tile.transformToRoot && !tile.transformToRoot.isIdentity) {\r\n const transformBranch = new GraphicBranch(true);\r\n transformBranch.add(graphic);\r\n graphic = system.createBranch(transformBranch, tile.transformToRoot);\r\n }\r\n\r\n return { graphic };\r\n\r\n case TileFormat.B3dm:\r\n reader = B3dmReader.create(streamBuffer, iModel, modelId, is3d, tile.contentRange, system, yAxisUp, tile.isLeaf, tile.center, tile.transformToRoot, isCanceled, this.getBatchIdMap(), this.wantDeduplicatedVertices);\r\n break;\r\n case TileFormat.I3dm:\r\n reader = I3dmReader.create(streamBuffer, iModel, modelId, is3d, tile.contentRange, system, yAxisUp, tile.isLeaf, isCanceled, undefined, this.wantDeduplicatedVertices);\r\n break;\r\n case TileFormat.Cmpt:\r\n const header = new CompositeTileHeader(streamBuffer);\r\n if (!header.isValid) return {};\r\n const branch = new GraphicBranch(true);\r\n for (let i = 0; i < header.tileCount; i++) {\r\n const tilePosition = streamBuffer.curPos;\r\n streamBuffer.advance(8); // Skip magic and version.\r\n const tileBytes = streamBuffer.nextUint32;\r\n streamBuffer.curPos = tilePosition;\r\n const result = await this.loadGraphicsFromStream(tile, streamBuffer, system, isCanceled);\r\n if (result.graphic)\r\n branch.add(result.graphic);\r\n streamBuffer.curPos = tilePosition + tileBytes;\r\n }\r\n return { graphic: branch.isEmpty ? undefined : system.createBranch(branch, Transform.createIdentity()), isLeaf: tile.isLeaf };\r\n\r\n default:\r\n assert(false, `unknown tile format ${format}`);\r\n break;\r\n }\r\n\r\n let content: TileContent = {};\r\n if (undefined !== reader) {\r\n try {\r\n content = await reader.read();\r\n } catch (_err) {\r\n // Failure to load should prevent us from trying to load children\r\n content.isLeaf = true;\r\n }\r\n }\r\n\r\n return content;\r\n }\r\n\r\n public get viewFlagOverrides(): ViewFlagOverrides { return defaultViewFlagOverrides; }\r\n\r\n public static computeTileClosestToEyePriority(tile: Tile, viewports: Iterable<Viewport>, location: Transform): number {\r\n // Prioritize tiles closer to eye.\r\n // NB: In NPC coords, 0 = far plane, 1 = near plane.\r\n const center = location.multiplyPoint3d(tile.center, scratchTileCenterWorld);\r\n let minDistance = 1.0;\r\n for (const viewport of viewports) {\r\n const npc = viewport.worldToNpc(center, scratchTileCenterView);\r\n const distance = 1.0 - npc.z;\r\n minDistance = Math.min(distance, minDistance);\r\n }\r\n\r\n return minDistance;\r\n }\r\n}\r\n"]}
@@ -6,7 +6,7 @@ import { ViewFlagOverrides } from "@itwin/core-common";
6
6
  import { GeoConverter } from "../GeoServices";
7
7
  import { GraphicBuilder } from "../render/GraphicBuilder";
8
8
  import { SceneContext } from "../ViewContext";
9
- import { RealityTile, RealityTileLoader, RealityTileParams, Tile, TileDrawArgs, TileParams, TileTree, TileTreeParams } from "./internal";
9
+ import { RealityTile, RealityTileLoader, RealityTileParams, Tile, TileDrawArgs, TileGeometryCollector, TileParams, TileTree, TileTreeParams } from "./internal";
10
10
  /** @internal */
11
11
  export declare class TraversalDetails {
12
12
  queuedChildren: Tile[];
@@ -65,8 +65,11 @@ export declare class RealityTileTree extends TileTree {
65
65
  get viewFlagOverrides(): ViewFlagOverrides;
66
66
  get parentsAndChildrenExclusive(): boolean;
67
67
  createTile(props: TileParams): RealityTile;
68
+ /** Collect tiles from this tile tree based on the criteria implemented by `collector`. */
69
+ collectTileGeometry(collector: TileGeometryCollector): void;
68
70
  prune(): void;
69
71
  draw(args: TileDrawArgs): void;
72
+ protected collectClassifierGraphics(args: TileDrawArgs, selectedTiles: RealityTile[]): void;
70
73
  getTraversalChildren(depth: number): TraversalChildrenDetails;
71
74
  doReprojectChildren(tile: Tile): boolean;
72
75
  reprojectAndResolveChildren(parent: Tile, children: Tile[], resolve: (children: Tile[] | undefined) => void): void;
@@ -1 +1 @@
1
- {"version":3,"file":"RealityTileTree.d.ts","sourceRoot":"","sources":["../../../src/tile/RealityTileTree.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"RealityTileTree.d.ts","sourceRoot":"","sources":["../../../src/tile/RealityTileTree.ts"],"names":[],"mappings":"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"}
@@ -142,6 +142,10 @@ class RealityTileTree extends internal_1.TileTree {
142
142
  get viewFlagOverrides() { return this.loader.viewFlagOverrides; }
143
143
  get parentsAndChildrenExclusive() { return this.loader.parentsAndChildrenExclusive; }
144
144
  createTile(props) { return new internal_1.RealityTile(props, this); }
145
+ /** Collect tiles from this tile tree based on the criteria implemented by `collector`. */
146
+ collectTileGeometry(collector) {
147
+ this.rootTile.collectTileGeometry(collector);
148
+ }
145
149
  prune() {
146
150
  const olderThan = core_bentley_1.BeTimePoint.now().minus(this.expirationTime);
147
151
  this.rootTile.purgeContents(olderThan);
@@ -158,9 +162,8 @@ class RealityTileTree extends internal_1.TileTree {
158
162
  sortIndices = selectedTiles.map((_x, i) => i);
159
163
  sortIndices.sort((a, b) => selectedTiles[a].depth - selectedTiles[b].depth);
160
164
  }
161
- const classifier = args.context.planarClassifiers.get(this.modelId);
162
- if (classifier && !(args instanceof internal_1.GraphicsCollectorDrawArgs))
163
- classifier.collectGraphics(args.context, { modelId: this.modelId, tiles: selectedTiles, location: args.location, isPointCloud: this.isPointCloud });
165
+ if (!(args instanceof internal_1.GraphicsCollectorDrawArgs))
166
+ this.collectClassifierGraphics(args, selectedTiles);
164
167
  (0, core_bentley_1.assert)(selectedTiles.length === displayedTileDescendants.length);
165
168
  for (let i = 0; i < selectedTiles.length; i++) {
166
169
  const index = sortIndices ? sortIndices[i] : i;
@@ -222,6 +225,11 @@ class RealityTileTree extends internal_1.TileTree {
222
225
  args.drawGraphicsWithType(graphicTypeBranch[0], graphicTypeBranch[1]);
223
226
  }
224
227
  }
228
+ collectClassifierGraphics(args, selectedTiles) {
229
+ const classifier = args.context.planarClassifiers.get(this.modelId);
230
+ if (classifier)
231
+ classifier.collectGraphics(args.context, { modelId: this.modelId, tiles: selectedTiles, location: args.location, isPointCloud: this.isPointCloud });
232
+ }
225
233
  getTraversalChildren(depth) {
226
234
  while (this.traversalChildrenByDepth.length <= depth)
227
235
  this.traversalChildrenByDepth.push(new TraversalChildrenDetails());