@itwin/core-frontend 3.0.0-dev.99 → 3.1.0-dev.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1232) hide show
  1. package/CHANGELOG.md +89 -1
  2. package/LICENSE.md +1 -1
  3. package/lib/cjs/AccuSnap.js +3 -3
  4. package/lib/cjs/AccuSnap.js.map +1 -1
  5. package/lib/cjs/ApproximateTerrainHeights.d.ts.map +1 -1
  6. package/lib/cjs/ApproximateTerrainHeights.js +10 -5
  7. package/lib/cjs/ApproximateTerrainHeights.js.map +1 -1
  8. package/lib/cjs/BackgroundMapGeometry.d.ts +1 -1
  9. package/lib/cjs/BackgroundMapGeometry.d.ts.map +1 -1
  10. package/lib/cjs/BackgroundMapGeometry.js +2 -2
  11. package/lib/cjs/BackgroundMapGeometry.js.map +1 -1
  12. package/lib/cjs/BingLocation.js +2 -2
  13. package/lib/cjs/BingLocation.js.map +1 -1
  14. package/lib/cjs/CheckpointConnection.js +1 -1
  15. package/lib/cjs/CheckpointConnection.js.map +1 -1
  16. package/lib/cjs/ContextRealityModelState.js +1 -1
  17. package/lib/cjs/ContextRealityModelState.js.map +1 -1
  18. package/lib/cjs/DisplayStyleState.d.ts +10 -163
  19. package/lib/cjs/DisplayStyleState.d.ts.map +1 -1
  20. package/lib/cjs/DisplayStyleState.js +69 -350
  21. package/lib/cjs/DisplayStyleState.js.map +1 -1
  22. package/lib/cjs/DrawingViewState.d.ts +2 -2
  23. package/lib/cjs/DrawingViewState.d.ts.map +1 -1
  24. package/lib/cjs/DrawingViewState.js +3 -3
  25. package/lib/cjs/DrawingViewState.js.map +1 -1
  26. package/lib/cjs/ElementLocateManager.d.ts +5 -0
  27. package/lib/cjs/ElementLocateManager.d.ts.map +1 -1
  28. package/lib/cjs/ElementLocateManager.js +12 -2
  29. package/lib/cjs/ElementLocateManager.js.map +1 -1
  30. package/lib/cjs/EmphasizeElements.d.ts.map +1 -1
  31. package/lib/cjs/EmphasizeElements.js +14 -4
  32. package/lib/cjs/EmphasizeElements.js.map +1 -1
  33. package/lib/cjs/EnvironmentDecorations.d.ts +39 -0
  34. package/lib/cjs/EnvironmentDecorations.d.ts.map +1 -0
  35. package/lib/cjs/EnvironmentDecorations.js +200 -0
  36. package/lib/cjs/EnvironmentDecorations.js.map +1 -0
  37. package/lib/cjs/FrontendHubAccess.d.ts +11 -7
  38. package/lib/cjs/FrontendHubAccess.d.ts.map +1 -1
  39. package/lib/cjs/FrontendHubAccess.js.map +1 -1
  40. package/lib/cjs/FrontendLoggerCategory.d.ts +2 -8
  41. package/lib/cjs/FrontendLoggerCategory.d.ts.map +1 -1
  42. package/lib/cjs/FrontendLoggerCategory.js +2 -8
  43. package/lib/cjs/FrontendLoggerCategory.js.map +1 -1
  44. package/lib/cjs/HitDetail.js +7 -7
  45. package/lib/cjs/HitDetail.js.map +1 -1
  46. package/lib/cjs/IModelApp.d.ts +30 -17
  47. package/lib/cjs/IModelApp.d.ts.map +1 -1
  48. package/lib/cjs/IModelApp.js +33 -26
  49. package/lib/cjs/IModelApp.js.map +1 -1
  50. package/lib/cjs/IModelConnection.d.ts +4 -6
  51. package/lib/cjs/IModelConnection.d.ts.map +1 -1
  52. package/lib/cjs/IModelConnection.js +6 -11
  53. package/lib/cjs/IModelConnection.js.map +1 -1
  54. package/lib/cjs/IModeljs-css.d.ts.map +1 -1
  55. package/lib/cjs/IModeljs-css.js +8 -6
  56. package/lib/cjs/IModeljs-css.js.map +1 -1
  57. package/lib/cjs/ImageUtil.d.ts +3 -3
  58. package/lib/cjs/ImageUtil.d.ts.map +1 -1
  59. package/lib/cjs/ImageUtil.js +7 -4
  60. package/lib/cjs/ImageUtil.js.map +1 -1
  61. package/lib/cjs/LocalhostIpcApp.d.ts +2 -1
  62. package/lib/cjs/LocalhostIpcApp.d.ts.map +1 -1
  63. package/lib/cjs/LocalhostIpcApp.js +21 -7
  64. package/lib/cjs/LocalhostIpcApp.js.map +1 -1
  65. package/lib/cjs/Marker.d.ts +9 -2
  66. package/lib/cjs/Marker.d.ts.map +1 -1
  67. package/lib/cjs/Marker.js +33 -5
  68. package/lib/cjs/Marker.js.map +1 -1
  69. package/lib/cjs/ModelState.js +1 -1
  70. package/lib/cjs/ModelState.js.map +1 -1
  71. package/lib/cjs/NativeApp.d.ts +3 -38
  72. package/lib/cjs/NativeApp.d.ts.map +1 -1
  73. package/lib/cjs/NativeApp.js +4 -73
  74. package/lib/cjs/NativeApp.js.map +1 -1
  75. package/lib/cjs/NoRenderApp.d.ts +0 -1
  76. package/lib/cjs/NoRenderApp.d.ts.map +1 -1
  77. package/lib/cjs/NoRenderApp.js +0 -1
  78. package/lib/cjs/NoRenderApp.js.map +1 -1
  79. package/lib/cjs/NotificationManager.d.ts +3 -1
  80. package/lib/cjs/NotificationManager.d.ts.map +1 -1
  81. package/lib/cjs/NotificationManager.js +2 -0
  82. package/lib/cjs/NotificationManager.js.map +1 -1
  83. package/lib/cjs/RealityDataSource.d.ts +59 -29
  84. package/lib/cjs/RealityDataSource.d.ts.map +1 -1
  85. package/lib/cjs/RealityDataSource.js +247 -94
  86. package/lib/cjs/RealityDataSource.js.map +1 -1
  87. package/lib/cjs/RenderScheduleState.d.ts +2 -0
  88. package/lib/cjs/RenderScheduleState.d.ts.map +1 -1
  89. package/lib/cjs/RenderScheduleState.js +10 -5
  90. package/lib/cjs/RenderScheduleState.js.map +1 -1
  91. package/lib/cjs/SheetViewState.d.ts +2 -2
  92. package/lib/cjs/SheetViewState.d.ts.map +1 -1
  93. package/lib/cjs/SheetViewState.js +8 -9
  94. package/lib/cjs/SheetViewState.js.map +1 -1
  95. package/lib/cjs/SpatialViewState.d.ts +10 -2
  96. package/lib/cjs/SpatialViewState.d.ts.map +1 -1
  97. package/lib/cjs/SpatialViewState.js +12 -2
  98. package/lib/cjs/SpatialViewState.js.map +1 -1
  99. package/lib/cjs/SubCategoriesCache.js +1 -1
  100. package/lib/cjs/SubCategoriesCache.js.map +1 -1
  101. package/lib/cjs/Tiles.d.ts +11 -1
  102. package/lib/cjs/Tiles.d.ts.map +1 -1
  103. package/lib/cjs/Tiles.js +7 -0
  104. package/lib/cjs/Tiles.js.map +1 -1
  105. package/lib/cjs/TwoWayViewportSync.d.ts +35 -6
  106. package/lib/cjs/TwoWayViewportSync.d.ts.map +1 -1
  107. package/lib/cjs/TwoWayViewportSync.js +51 -11
  108. package/lib/cjs/TwoWayViewportSync.js.map +1 -1
  109. package/lib/cjs/UserPreferences.d.ts +72 -0
  110. package/lib/cjs/UserPreferences.d.ts.map +1 -0
  111. package/lib/cjs/UserPreferences.js +7 -0
  112. package/lib/cjs/UserPreferences.js.map +1 -0
  113. package/lib/cjs/ViewContext.d.ts +3 -1
  114. package/lib/cjs/ViewContext.d.ts.map +1 -1
  115. package/lib/cjs/ViewContext.js +4 -0
  116. package/lib/cjs/ViewContext.js.map +1 -1
  117. package/lib/cjs/ViewCreator2d.js +3 -3
  118. package/lib/cjs/ViewCreator2d.js.map +1 -1
  119. package/lib/cjs/ViewCreator3d.d.ts +1 -1
  120. package/lib/cjs/ViewCreator3d.d.ts.map +1 -1
  121. package/lib/cjs/ViewCreator3d.js +4 -5
  122. package/lib/cjs/ViewCreator3d.js.map +1 -1
  123. package/lib/cjs/ViewManager.d.ts +6 -6
  124. package/lib/cjs/ViewManager.d.ts.map +1 -1
  125. package/lib/cjs/ViewManager.js +13 -13
  126. package/lib/cjs/ViewManager.js.map +1 -1
  127. package/lib/cjs/ViewState.d.ts +11 -5
  128. package/lib/cjs/ViewState.d.ts.map +1 -1
  129. package/lib/cjs/ViewState.js +18 -63
  130. package/lib/cjs/ViewState.js.map +1 -1
  131. package/lib/cjs/ViewingSpace.js +1 -1
  132. package/lib/cjs/ViewingSpace.js.map +1 -1
  133. package/lib/cjs/Viewport.d.ts +57 -11
  134. package/lib/cjs/Viewport.d.ts.map +1 -1
  135. package/lib/cjs/Viewport.js +55 -31
  136. package/lib/cjs/Viewport.js.map +1 -1
  137. package/lib/cjs/core-frontend.d.ts +11 -24
  138. package/lib/cjs/core-frontend.d.ts.map +1 -1
  139. package/lib/cjs/core-frontend.js +11 -24
  140. package/lib/cjs/core-frontend.js.map +1 -1
  141. package/lib/cjs/quantity-formatting/BaseUnitFormattingSettingsProvider.d.ts +3 -2
  142. package/lib/cjs/quantity-formatting/BaseUnitFormattingSettingsProvider.d.ts.map +1 -1
  143. package/lib/cjs/quantity-formatting/BaseUnitFormattingSettingsProvider.js +3 -2
  144. package/lib/cjs/quantity-formatting/BaseUnitFormattingSettingsProvider.js.map +1 -1
  145. package/lib/cjs/quantity-formatting/BasicUnitsProvider.d.ts +5 -1
  146. package/lib/cjs/quantity-formatting/BasicUnitsProvider.d.ts.map +1 -1
  147. package/lib/cjs/quantity-formatting/BasicUnitsProvider.js +20 -5
  148. package/lib/cjs/quantity-formatting/BasicUnitsProvider.js.map +1 -1
  149. package/lib/cjs/quantity-formatting/QuantityFormatter.d.ts +26 -3
  150. package/lib/cjs/quantity-formatting/QuantityFormatter.d.ts.map +1 -1
  151. package/lib/cjs/quantity-formatting/QuantityFormatter.js +46 -7
  152. package/lib/cjs/quantity-formatting/QuantityFormatter.js.map +1 -1
  153. package/lib/cjs/render/FeatureSymbology.d.ts.map +1 -1
  154. package/lib/cjs/render/FeatureSymbology.js +3 -3
  155. package/lib/cjs/render/FeatureSymbology.js.map +1 -1
  156. package/lib/cjs/render/GraphicBranch.d.ts +18 -2
  157. package/lib/cjs/render/GraphicBranch.d.ts.map +1 -1
  158. package/lib/cjs/render/GraphicBranch.js +9 -1
  159. package/lib/cjs/render/GraphicBranch.js.map +1 -1
  160. package/lib/cjs/render/GraphicBuilder.d.ts +7 -1
  161. package/lib/cjs/render/GraphicBuilder.d.ts.map +1 -1
  162. package/lib/cjs/render/GraphicBuilder.js.map +1 -1
  163. package/lib/cjs/render/MockRender.d.ts +3 -1
  164. package/lib/cjs/render/MockRender.d.ts.map +1 -1
  165. package/lib/cjs/render/MockRender.js.map +1 -1
  166. package/lib/cjs/render/RenderMaterial.d.ts +61 -0
  167. package/lib/cjs/render/RenderMaterial.d.ts.map +1 -0
  168. package/lib/cjs/render/RenderMaterial.js +10 -0
  169. package/lib/cjs/render/RenderMaterial.js.map +1 -0
  170. package/lib/cjs/render/RenderMemory.d.ts +21 -15
  171. package/lib/cjs/render/RenderMemory.d.ts.map +1 -1
  172. package/lib/cjs/render/RenderMemory.js +21 -15
  173. package/lib/cjs/render/RenderMemory.js.map +1 -1
  174. package/lib/cjs/render/RenderSystem.d.ts +44 -7
  175. package/lib/cjs/render/RenderSystem.d.ts.map +1 -1
  176. package/lib/cjs/render/RenderSystem.js +32 -9
  177. package/lib/cjs/render/RenderSystem.js.map +1 -1
  178. package/lib/cjs/render/RenderTarget.d.ts +10 -2
  179. package/lib/cjs/render/RenderTarget.d.ts.map +1 -1
  180. package/lib/cjs/render/RenderTarget.js +2 -1
  181. package/lib/cjs/render/RenderTarget.js.map +1 -1
  182. package/lib/cjs/render/RenderTexture.d.ts +2 -17
  183. package/lib/cjs/render/RenderTexture.d.ts.map +1 -1
  184. package/lib/cjs/render/RenderTexture.js +0 -17
  185. package/lib/cjs/render/RenderTexture.js.map +1 -1
  186. package/lib/cjs/render/primitives/EdgeParams.d.ts +84 -0
  187. package/lib/cjs/render/primitives/EdgeParams.d.ts.map +1 -0
  188. package/lib/cjs/render/primitives/EdgeParams.js +220 -0
  189. package/lib/cjs/render/primitives/EdgeParams.js.map +1 -0
  190. package/lib/cjs/render/primitives/PointStringParams.d.ts +16 -0
  191. package/lib/cjs/render/primitives/PointStringParams.d.ts.map +1 -0
  192. package/lib/cjs/render/primitives/PointStringParams.js +43 -0
  193. package/lib/cjs/render/primitives/PointStringParams.js.map +1 -0
  194. package/lib/cjs/render/primitives/PolylineParams.d.ts +44 -0
  195. package/lib/cjs/render/primitives/PolylineParams.d.ts.map +1 -0
  196. package/lib/cjs/render/primitives/PolylineParams.js +205 -0
  197. package/lib/cjs/render/primitives/PolylineParams.js.map +1 -0
  198. package/lib/cjs/render/primitives/Primitives.d.ts +1 -1
  199. package/lib/cjs/render/primitives/Primitives.d.ts.map +1 -1
  200. package/lib/cjs/render/primitives/Primitives.js.map +1 -1
  201. package/lib/cjs/render/primitives/SurfaceParams.d.ts +46 -0
  202. package/lib/cjs/render/primitives/SurfaceParams.d.ts.map +1 -0
  203. package/lib/cjs/render/primitives/SurfaceParams.js +42 -0
  204. package/lib/cjs/render/primitives/SurfaceParams.js.map +1 -0
  205. package/lib/cjs/render/primitives/VertexTable.d.ts +4 -123
  206. package/lib/cjs/render/primitives/VertexTable.d.ts.map +1 -1
  207. package/lib/cjs/render/primitives/VertexTable.js +16 -352
  208. package/lib/cjs/render/primitives/VertexTable.js.map +1 -1
  209. package/lib/cjs/render/primitives/geometry/GeometryAccumulator.d.ts +2 -0
  210. package/lib/cjs/render/primitives/geometry/GeometryAccumulator.d.ts.map +1 -1
  211. package/lib/cjs/render/primitives/geometry/GeometryAccumulator.js +2 -1
  212. package/lib/cjs/render/primitives/geometry/GeometryAccumulator.js.map +1 -1
  213. package/lib/cjs/render/primitives/geometry/GeometryListBuilder.d.ts.map +1 -1
  214. package/lib/cjs/render/primitives/geometry/GeometryListBuilder.js +1 -0
  215. package/lib/cjs/render/primitives/geometry/GeometryListBuilder.js.map +1 -1
  216. package/lib/cjs/render/primitives/mesh/MeshPrimitives.d.ts +2 -2
  217. package/lib/cjs/render/primitives/mesh/MeshPrimitives.d.ts.map +1 -1
  218. package/lib/cjs/render/primitives/mesh/MeshPrimitives.js +3 -3
  219. package/lib/cjs/render/primitives/mesh/MeshPrimitives.js.map +1 -1
  220. package/lib/cjs/render/primitives/mesh/TerrainMeshPrimitive.d.ts +1 -1
  221. package/lib/cjs/render/primitives/mesh/TerrainMeshPrimitive.js +1 -1
  222. package/lib/cjs/render/primitives/mesh/TerrainMeshPrimitive.js.map +1 -1
  223. package/lib/cjs/render/webgl/AttributeMap.js +5 -5
  224. package/lib/cjs/render/webgl/BackgroundMapDrape.js +1 -1
  225. package/lib/cjs/render/webgl/BackgroundMapDrape.js.map +1 -1
  226. package/lib/cjs/render/webgl/BranchUniforms.d.ts.map +1 -1
  227. package/lib/cjs/render/webgl/BranchUniforms.js +8 -5
  228. package/lib/cjs/render/webgl/BranchUniforms.js.map +1 -1
  229. package/lib/cjs/render/webgl/CachedGeometry.d.ts +16 -11
  230. package/lib/cjs/render/webgl/CachedGeometry.d.ts.map +1 -1
  231. package/lib/cjs/render/webgl/CachedGeometry.js +26 -23
  232. package/lib/cjs/render/webgl/CachedGeometry.js.map +1 -1
  233. package/lib/cjs/render/webgl/DrawCommand.d.ts +2 -3
  234. package/lib/cjs/render/webgl/DrawCommand.d.ts.map +1 -1
  235. package/lib/cjs/render/webgl/DrawCommand.js +6 -4
  236. package/lib/cjs/render/webgl/DrawCommand.js.map +1 -1
  237. package/lib/cjs/render/webgl/EdgeGeometry.d.ts +73 -0
  238. package/lib/cjs/render/webgl/EdgeGeometry.d.ts.map +1 -0
  239. package/lib/cjs/render/webgl/EdgeGeometry.js +141 -0
  240. package/lib/cjs/render/webgl/EdgeGeometry.js.map +1 -0
  241. package/lib/cjs/render/webgl/FeatureOverrides.d.ts +2 -0
  242. package/lib/cjs/render/webgl/FeatureOverrides.d.ts.map +1 -1
  243. package/lib/cjs/render/webgl/FeatureOverrides.js +11 -3
  244. package/lib/cjs/render/webgl/FeatureOverrides.js.map +1 -1
  245. package/lib/cjs/render/webgl/FloatRGBA.d.ts.map +1 -1
  246. package/lib/cjs/render/webgl/FloatRGBA.js +13 -11
  247. package/lib/cjs/render/webgl/FloatRGBA.js.map +1 -1
  248. package/lib/cjs/render/webgl/Graphic.d.ts +13 -0
  249. package/lib/cjs/render/webgl/Graphic.d.ts.map +1 -1
  250. package/lib/cjs/render/webgl/Graphic.js +41 -3
  251. package/lib/cjs/render/webgl/Graphic.js.map +1 -1
  252. package/lib/cjs/render/webgl/IndexedEdgeGeometry.d.ts +51 -0
  253. package/lib/cjs/render/webgl/IndexedEdgeGeometry.d.ts.map +1 -0
  254. package/lib/cjs/render/webgl/IndexedEdgeGeometry.js +90 -0
  255. package/lib/cjs/render/webgl/IndexedEdgeGeometry.js.map +1 -0
  256. package/lib/cjs/render/webgl/InstancedGeometry.d.ts +6 -5
  257. package/lib/cjs/render/webgl/InstancedGeometry.d.ts.map +1 -1
  258. package/lib/cjs/render/webgl/InstancedGeometry.js +2 -1
  259. package/lib/cjs/render/webgl/InstancedGeometry.js.map +1 -1
  260. package/lib/cjs/render/webgl/Material.d.ts +1 -1
  261. package/lib/cjs/render/webgl/Material.d.ts.map +1 -1
  262. package/lib/cjs/render/webgl/Material.js +2 -0
  263. package/lib/cjs/render/webgl/Material.js.map +1 -1
  264. package/lib/cjs/render/webgl/Mesh.d.ts +8 -162
  265. package/lib/cjs/render/webgl/Mesh.d.ts.map +1 -1
  266. package/lib/cjs/render/webgl/Mesh.js +18 -458
  267. package/lib/cjs/render/webgl/Mesh.js.map +1 -1
  268. package/lib/cjs/render/webgl/MeshData.d.ts +38 -0
  269. package/lib/cjs/render/webgl/MeshData.d.ts.map +1 -0
  270. package/lib/cjs/render/webgl/MeshData.js +66 -0
  271. package/lib/cjs/render/webgl/MeshData.js.map +1 -0
  272. package/lib/cjs/render/webgl/MeshGeometry.d.ts +38 -0
  273. package/lib/cjs/render/webgl/MeshGeometry.d.ts.map +1 -0
  274. package/lib/cjs/render/webgl/MeshGeometry.js +59 -0
  275. package/lib/cjs/render/webgl/MeshGeometry.js.map +1 -0
  276. package/lib/cjs/render/webgl/PlanarClassifier.d.ts.map +1 -1
  277. package/lib/cjs/render/webgl/PlanarClassifier.js +8 -4
  278. package/lib/cjs/render/webgl/PlanarClassifier.js.map +1 -1
  279. package/lib/cjs/render/webgl/PlanarGrid.d.ts +2 -3
  280. package/lib/cjs/render/webgl/PlanarGrid.d.ts.map +1 -1
  281. package/lib/cjs/render/webgl/PlanarGrid.js +3 -3
  282. package/lib/cjs/render/webgl/PlanarGrid.js.map +1 -1
  283. package/lib/cjs/render/webgl/PlanarTextureProjection.d.ts.map +1 -1
  284. package/lib/cjs/render/webgl/PlanarTextureProjection.js +1 -0
  285. package/lib/cjs/render/webgl/PlanarTextureProjection.js.map +1 -1
  286. package/lib/cjs/render/webgl/PointCloud.d.ts +2 -2
  287. package/lib/cjs/render/webgl/PointCloud.d.ts.map +1 -1
  288. package/lib/cjs/render/webgl/PointCloud.js +2 -2
  289. package/lib/cjs/render/webgl/PointCloud.js.map +1 -1
  290. package/lib/cjs/render/webgl/PointString.d.ts +3 -3
  291. package/lib/cjs/render/webgl/PointString.d.ts.map +1 -1
  292. package/lib/cjs/render/webgl/PointString.js +1 -1
  293. package/lib/cjs/render/webgl/PointString.js.map +1 -1
  294. package/lib/cjs/render/webgl/Polyline.d.ts +3 -3
  295. package/lib/cjs/render/webgl/Polyline.d.ts.map +1 -1
  296. package/lib/cjs/render/webgl/Polyline.js +6 -6
  297. package/lib/cjs/render/webgl/Polyline.js.map +1 -1
  298. package/lib/cjs/render/webgl/Primitive.d.ts +2 -2
  299. package/lib/cjs/render/webgl/Primitive.d.ts.map +1 -1
  300. package/lib/cjs/render/webgl/Primitive.js +5 -5
  301. package/lib/cjs/render/webgl/Primitive.js.map +1 -1
  302. package/lib/cjs/render/webgl/RealityMesh.d.ts +2 -2
  303. package/lib/cjs/render/webgl/RealityMesh.d.ts.map +1 -1
  304. package/lib/cjs/render/webgl/RealityMesh.js +9 -9
  305. package/lib/cjs/render/webgl/RealityMesh.js.map +1 -1
  306. package/lib/cjs/render/webgl/RenderCommands.d.ts +6 -2
  307. package/lib/cjs/render/webgl/RenderCommands.d.ts.map +1 -1
  308. package/lib/cjs/render/webgl/RenderCommands.js +81 -48
  309. package/lib/cjs/render/webgl/RenderCommands.js.map +1 -1
  310. package/lib/cjs/render/webgl/RenderFlags.d.ts +48 -1
  311. package/lib/cjs/render/webgl/RenderFlags.d.ts.map +1 -1
  312. package/lib/cjs/render/webgl/RenderFlags.js +64 -2
  313. package/lib/cjs/render/webgl/RenderFlags.js.map +1 -1
  314. package/lib/cjs/render/webgl/SceneCompositor.js +10 -9
  315. package/lib/cjs/render/webgl/SceneCompositor.js.map +1 -1
  316. package/lib/cjs/render/webgl/ScreenSpaceEffect.js +1 -1
  317. package/lib/cjs/render/webgl/ShaderBuilder.d.ts +23 -20
  318. package/lib/cjs/render/webgl/ShaderBuilder.d.ts.map +1 -1
  319. package/lib/cjs/render/webgl/ShaderBuilder.js +38 -32
  320. package/lib/cjs/render/webgl/ShaderBuilder.js.map +1 -1
  321. package/lib/cjs/render/webgl/ShaderProgram.d.ts +1 -1
  322. package/lib/cjs/render/webgl/ShaderProgram.d.ts.map +1 -1
  323. package/lib/cjs/render/webgl/ShaderProgram.js +4 -4
  324. package/lib/cjs/render/webgl/ShaderProgram.js.map +1 -1
  325. package/lib/cjs/render/webgl/SolarShadowMap.d.ts.map +1 -1
  326. package/lib/cjs/render/webgl/SolarShadowMap.js +4 -3
  327. package/lib/cjs/render/webgl/SolarShadowMap.js.map +1 -1
  328. package/lib/cjs/render/webgl/SurfaceGeometry.d.ts +54 -0
  329. package/lib/cjs/render/webgl/SurfaceGeometry.d.ts.map +1 -0
  330. package/lib/cjs/render/webgl/SurfaceGeometry.js +248 -0
  331. package/lib/cjs/render/webgl/SurfaceGeometry.js.map +1 -0
  332. package/lib/cjs/render/webgl/System.d.ts +13 -10
  333. package/lib/cjs/render/webgl/System.d.ts.map +1 -1
  334. package/lib/cjs/render/webgl/System.js +75 -21
  335. package/lib/cjs/render/webgl/System.js.map +1 -1
  336. package/lib/cjs/render/webgl/Target.d.ts +13 -1
  337. package/lib/cjs/render/webgl/Target.d.ts.map +1 -1
  338. package/lib/cjs/render/webgl/Target.js +88 -2
  339. package/lib/cjs/render/webgl/Target.js.map +1 -1
  340. package/lib/cjs/render/webgl/Technique.d.ts.map +1 -1
  341. package/lib/cjs/render/webgl/Technique.js +112 -119
  342. package/lib/cjs/render/webgl/Technique.js.map +1 -1
  343. package/lib/cjs/render/webgl/TechniqueFlags.d.ts +7 -1
  344. package/lib/cjs/render/webgl/TechniqueFlags.d.ts.map +1 -1
  345. package/lib/cjs/render/webgl/TechniqueFlags.js +10 -1
  346. package/lib/cjs/render/webgl/TechniqueFlags.js.map +1 -1
  347. package/lib/cjs/render/webgl/TechniqueId.d.ts +29 -28
  348. package/lib/cjs/render/webgl/TechniqueId.d.ts.map +1 -1
  349. package/lib/cjs/render/webgl/TechniqueId.js +7 -7
  350. package/lib/cjs/render/webgl/TechniqueId.js.map +1 -1
  351. package/lib/cjs/render/webgl/Texture.d.ts +15 -12
  352. package/lib/cjs/render/webgl/Texture.d.ts.map +1 -1
  353. package/lib/cjs/render/webgl/Texture.js +26 -23
  354. package/lib/cjs/render/webgl/Texture.js.map +1 -1
  355. package/lib/cjs/render/webgl/glsl/AmbientOcclusion.d.ts.map +1 -1
  356. package/lib/cjs/render/webgl/glsl/AmbientOcclusion.js +83 -18
  357. package/lib/cjs/render/webgl/glsl/AmbientOcclusion.js.map +1 -1
  358. package/lib/cjs/render/webgl/glsl/Animation.js +1 -1
  359. package/lib/cjs/render/webgl/glsl/Blur.js +1 -1
  360. package/lib/cjs/render/webgl/glsl/ClearPickAndColor.js +2 -2
  361. package/lib/cjs/render/webgl/glsl/ClearTranslucent.js +2 -2
  362. package/lib/cjs/render/webgl/glsl/Color.js +1 -1
  363. package/lib/cjs/render/webgl/glsl/Combine3Textures.js +1 -1
  364. package/lib/cjs/render/webgl/glsl/CombineTextures.js +1 -1
  365. package/lib/cjs/render/webgl/glsl/Composite.js +1 -1
  366. package/lib/cjs/render/webgl/glsl/CopyColor.d.ts.map +1 -1
  367. package/lib/cjs/render/webgl/glsl/CopyColor.js +17 -2
  368. package/lib/cjs/render/webgl/glsl/CopyColor.js.map +1 -1
  369. package/lib/cjs/render/webgl/glsl/CopyPickBuffers.js +2 -2
  370. package/lib/cjs/render/webgl/glsl/CopyStencil.d.ts.map +1 -1
  371. package/lib/cjs/render/webgl/glsl/CopyStencil.js +10 -13
  372. package/lib/cjs/render/webgl/glsl/CopyStencil.js.map +1 -1
  373. package/lib/cjs/render/webgl/glsl/EVSMFromDepth.js +2 -2
  374. package/lib/cjs/render/webgl/glsl/EVSMFromDepth.js.map +1 -1
  375. package/lib/cjs/render/webgl/glsl/Edge.d.ts +2 -1
  376. package/lib/cjs/render/webgl/glsl/Edge.d.ts.map +1 -1
  377. package/lib/cjs/render/webgl/glsl/Edge.js +132 -14
  378. package/lib/cjs/render/webgl/glsl/Edge.js.map +1 -1
  379. package/lib/cjs/render/webgl/glsl/FeatureSymbology.d.ts.map +1 -1
  380. package/lib/cjs/render/webgl/glsl/FeatureSymbology.js +43 -21
  381. package/lib/cjs/render/webgl/glsl/FeatureSymbology.js.map +1 -1
  382. package/lib/cjs/render/webgl/glsl/Fragment.d.ts.map +1 -1
  383. package/lib/cjs/render/webgl/glsl/Fragment.js +19 -11
  384. package/lib/cjs/render/webgl/glsl/Fragment.js.map +1 -1
  385. package/lib/cjs/render/webgl/glsl/LogarithmicDepthBuffer.js +1 -1
  386. package/lib/cjs/render/webgl/glsl/LookupTable.d.ts +4 -2
  387. package/lib/cjs/render/webgl/glsl/LookupTable.d.ts.map +1 -1
  388. package/lib/cjs/render/webgl/glsl/LookupTable.js +7 -3
  389. package/lib/cjs/render/webgl/glsl/LookupTable.js.map +1 -1
  390. package/lib/cjs/render/webgl/glsl/PlanarClassification.d.ts.map +1 -1
  391. package/lib/cjs/render/webgl/glsl/PlanarClassification.js +13 -4
  392. package/lib/cjs/render/webgl/glsl/PlanarClassification.js.map +1 -1
  393. package/lib/cjs/render/webgl/glsl/PlanarGrid.js +2 -2
  394. package/lib/cjs/render/webgl/glsl/PlanarGrid.js.map +1 -1
  395. package/lib/cjs/render/webgl/glsl/PointCloud.js +2 -2
  396. package/lib/cjs/render/webgl/glsl/PointCloud.js.map +1 -1
  397. package/lib/cjs/render/webgl/glsl/PointString.js +1 -1
  398. package/lib/cjs/render/webgl/glsl/PointString.js.map +1 -1
  399. package/lib/cjs/render/webgl/glsl/Polyline.js +1 -1
  400. package/lib/cjs/render/webgl/glsl/Polyline.js.map +1 -1
  401. package/lib/cjs/render/webgl/glsl/RealityMesh.d.ts.map +1 -1
  402. package/lib/cjs/render/webgl/glsl/RealityMesh.js +9 -6
  403. package/lib/cjs/render/webgl/glsl/RealityMesh.js.map +1 -1
  404. package/lib/cjs/render/webgl/glsl/ScreenSpaceEffect.js +2 -2
  405. package/lib/cjs/render/webgl/glsl/ScreenSpaceEffect.js.map +1 -1
  406. package/lib/cjs/render/webgl/glsl/SkyBox.js +2 -2
  407. package/lib/cjs/render/webgl/glsl/SkyBox.js.map +1 -1
  408. package/lib/cjs/render/webgl/glsl/SkySphere.js +2 -2
  409. package/lib/cjs/render/webgl/glsl/Surface.d.ts.map +1 -1
  410. package/lib/cjs/render/webgl/glsl/Surface.js +41 -16
  411. package/lib/cjs/render/webgl/glsl/Surface.js.map +1 -1
  412. package/lib/cjs/render/webgl/glsl/Translucency.js +2 -2
  413. package/lib/cjs/render/webgl/glsl/Vertex.js +2 -2
  414. package/lib/cjs/render/webgl/glsl/Vertex.js.map +1 -1
  415. package/lib/cjs/render/webgl/glsl/ViewportQuad.js +1 -1
  416. package/lib/cjs/render/webgl/glsl/ViewportQuad.js.map +1 -1
  417. package/lib/cjs/render/webgl/glsl/Wiremesh.d.ts +9 -0
  418. package/lib/cjs/render/webgl/glsl/Wiremesh.d.ts.map +1 -0
  419. package/lib/cjs/render/webgl/glsl/Wiremesh.js +40 -0
  420. package/lib/cjs/render/webgl/glsl/Wiremesh.js.map +1 -0
  421. package/lib/cjs/render-primitives.d.ts +5 -1
  422. package/lib/cjs/render-primitives.d.ts.map +1 -1
  423. package/lib/cjs/render-primitives.js +5 -1
  424. package/lib/cjs/render-primitives.js.map +1 -1
  425. package/lib/cjs/request/Request.d.ts +167 -0
  426. package/lib/cjs/request/Request.d.ts.map +1 -0
  427. package/lib/cjs/request/Request.js +315 -0
  428. package/lib/cjs/request/Request.js.map +1 -0
  429. package/lib/cjs/tile/B3dmReader.d.ts +2 -1
  430. package/lib/cjs/tile/B3dmReader.d.ts.map +1 -1
  431. package/lib/cjs/tile/B3dmReader.js +11 -7
  432. package/lib/cjs/tile/B3dmReader.js.map +1 -1
  433. package/lib/cjs/tile/CesiumAssetProvider.d.ts +14 -0
  434. package/lib/cjs/tile/CesiumAssetProvider.d.ts.map +1 -0
  435. package/lib/cjs/tile/CesiumAssetProvider.js +35 -0
  436. package/lib/cjs/tile/CesiumAssetProvider.js.map +1 -0
  437. package/lib/cjs/tile/ContextShareProvider.d.ts +22 -0
  438. package/lib/cjs/tile/ContextShareProvider.d.ts.map +1 -0
  439. package/lib/cjs/tile/ContextShareProvider.js +129 -0
  440. package/lib/cjs/tile/ContextShareProvider.js.map +1 -0
  441. package/lib/cjs/tile/DynamicIModelTile.js +9 -3
  442. package/lib/cjs/tile/DynamicIModelTile.js.map +1 -1
  443. package/lib/cjs/tile/GltfReader.d.ts +594 -55
  444. package/lib/cjs/tile/GltfReader.d.ts.map +1 -1
  445. package/lib/cjs/tile/GltfReader.js +703 -264
  446. package/lib/cjs/tile/GltfReader.js.map +1 -1
  447. package/lib/cjs/tile/I3dmReader.d.ts +2 -1
  448. package/lib/cjs/tile/I3dmReader.d.ts.map +1 -1
  449. package/lib/cjs/tile/I3dmReader.js +10 -6
  450. package/lib/cjs/tile/I3dmReader.js.map +1 -1
  451. package/lib/cjs/tile/IModelTile.d.ts.map +1 -1
  452. package/lib/cjs/tile/IModelTile.js +14 -7
  453. package/lib/cjs/tile/IModelTile.js.map +1 -1
  454. package/lib/cjs/tile/IModelTileTree.d.ts +8 -0
  455. package/lib/cjs/tile/IModelTileTree.d.ts.map +1 -1
  456. package/lib/cjs/tile/IModelTileTree.js +36 -1
  457. package/lib/cjs/tile/IModelTileTree.js.map +1 -1
  458. package/lib/cjs/tile/ImdlReader.d.ts +365 -10
  459. package/lib/cjs/tile/ImdlReader.d.ts.map +1 -1
  460. package/lib/cjs/tile/ImdlReader.js +202 -68
  461. package/lib/cjs/tile/ImdlReader.js.map +1 -1
  462. package/lib/cjs/tile/OrbitGtTileTree.d.ts.map +1 -1
  463. package/lib/cjs/tile/OrbitGtTileTree.js +8 -5
  464. package/lib/cjs/tile/OrbitGtTileTree.js.map +1 -1
  465. package/lib/cjs/tile/PrimaryTileTree.d.ts +14 -5
  466. package/lib/cjs/tile/PrimaryTileTree.d.ts.map +1 -1
  467. package/lib/cjs/tile/PrimaryTileTree.js +69 -14
  468. package/lib/cjs/tile/PrimaryTileTree.js.map +1 -1
  469. package/lib/cjs/tile/RealityModelTileTree.d.ts +3 -55
  470. package/lib/cjs/tile/RealityModelTileTree.d.ts.map +1 -1
  471. package/lib/cjs/tile/RealityModelTileTree.js +57 -232
  472. package/lib/cjs/tile/RealityModelTileTree.js.map +1 -1
  473. package/lib/cjs/tile/RealityTileLoader.d.ts +1 -0
  474. package/lib/cjs/tile/RealityTileLoader.d.ts.map +1 -1
  475. package/lib/cjs/tile/RealityTileLoader.js +4 -3
  476. package/lib/cjs/tile/RealityTileLoader.js.map +1 -1
  477. package/lib/cjs/tile/Tile.d.ts.map +1 -1
  478. package/lib/cjs/tile/Tile.js +5 -1
  479. package/lib/cjs/tile/Tile.js.map +1 -1
  480. package/lib/cjs/tile/TileAdmin.d.ts +37 -4
  481. package/lib/cjs/tile/TileAdmin.d.ts.map +1 -1
  482. package/lib/cjs/tile/TileAdmin.js +18 -12
  483. package/lib/cjs/tile/TileAdmin.js.map +1 -1
  484. package/lib/cjs/tile/TileDrawArgs.d.ts +11 -0
  485. package/lib/cjs/tile/TileDrawArgs.d.ts.map +1 -1
  486. package/lib/cjs/tile/TileDrawArgs.js +6 -1
  487. package/lib/cjs/tile/TileDrawArgs.js.map +1 -1
  488. package/lib/cjs/tile/TileTreeReference.d.ts +2 -0
  489. package/lib/cjs/tile/TileTreeReference.d.ts.map +1 -1
  490. package/lib/cjs/tile/TileTreeReference.js +5 -0
  491. package/lib/cjs/tile/TileTreeReference.js.map +1 -1
  492. package/lib/cjs/tile/internal.d.ts +4 -1
  493. package/lib/cjs/tile/internal.d.ts.map +1 -1
  494. package/lib/cjs/tile/internal.js +4 -1
  495. package/lib/cjs/tile/internal.js.map +1 -1
  496. package/lib/cjs/tile/map/ArcGISTileMap.d.ts +22 -0
  497. package/lib/cjs/tile/map/ArcGISTileMap.d.ts.map +1 -0
  498. package/lib/cjs/tile/map/ArcGISTileMap.js +177 -0
  499. package/lib/cjs/tile/map/ArcGISTileMap.js.map +1 -0
  500. package/lib/cjs/tile/map/ArcGisTokenGenerator.js +3 -3
  501. package/lib/cjs/tile/map/ArcGisTokenGenerator.js.map +1 -1
  502. package/lib/cjs/tile/map/ArcGisUtilities.d.ts +1 -1
  503. package/lib/cjs/tile/map/ArcGisUtilities.d.ts.map +1 -1
  504. package/lib/cjs/tile/map/ArcGisUtilities.js +18 -10
  505. package/lib/cjs/tile/map/ArcGisUtilities.js.map +1 -1
  506. package/lib/cjs/tile/map/BingElevation.js +4 -4
  507. package/lib/cjs/tile/map/BingElevation.js.map +1 -1
  508. package/lib/cjs/tile/map/CesiumTerrainProvider.d.ts.map +1 -1
  509. package/lib/cjs/tile/map/CesiumTerrainProvider.js +27 -15
  510. package/lib/cjs/tile/map/CesiumTerrainProvider.js.map +1 -1
  511. package/lib/cjs/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.d.ts +2 -2
  512. package/lib/cjs/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.d.ts.map +1 -1
  513. package/lib/cjs/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js +23 -44
  514. package/lib/cjs/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js.map +1 -1
  515. package/lib/cjs/tile/map/ImageryProviders/BingImageryProvider.js +3 -3
  516. package/lib/cjs/tile/map/ImageryProviders/BingImageryProvider.js.map +1 -1
  517. package/lib/cjs/tile/map/ImageryProviders/WmsMapLayerImageryProvider.d.ts +8 -0
  518. package/lib/cjs/tile/map/ImageryProviders/WmsMapLayerImageryProvider.d.ts.map +1 -1
  519. package/lib/cjs/tile/map/ImageryProviders/WmsMapLayerImageryProvider.js +51 -10
  520. package/lib/cjs/tile/map/ImageryProviders/WmsMapLayerImageryProvider.js.map +1 -1
  521. package/lib/cjs/tile/map/ImageryProviders/WmtsMapLayerImageryProvider.d.ts +6 -1
  522. package/lib/cjs/tile/map/ImageryProviders/WmtsMapLayerImageryProvider.d.ts.map +1 -1
  523. package/lib/cjs/tile/map/ImageryProviders/WmtsMapLayerImageryProvider.js +63 -21
  524. package/lib/cjs/tile/map/ImageryProviders/WmtsMapLayerImageryProvider.js.map +1 -1
  525. package/lib/cjs/tile/map/ImageryTileTree.d.ts +4 -4
  526. package/lib/cjs/tile/map/ImageryTileTree.d.ts.map +1 -1
  527. package/lib/cjs/tile/map/ImageryTileTree.js +20 -24
  528. package/lib/cjs/tile/map/ImageryTileTree.js.map +1 -1
  529. package/lib/cjs/tile/map/MapCartoRectangle.js +1 -1
  530. package/lib/cjs/tile/map/MapCartoRectangle.js.map +1 -1
  531. package/lib/cjs/tile/map/MapLayerAuthentication.d.ts +20 -0
  532. package/lib/cjs/tile/map/MapLayerAuthentication.d.ts.map +1 -0
  533. package/lib/cjs/tile/map/MapLayerAuthentication.js +18 -0
  534. package/lib/cjs/tile/map/MapLayerAuthentication.js.map +1 -0
  535. package/lib/cjs/tile/map/MapLayerFormatRegistry.d.ts +6 -3
  536. package/lib/cjs/tile/map/MapLayerFormatRegistry.d.ts.map +1 -1
  537. package/lib/cjs/tile/map/MapLayerFormatRegistry.js +3 -1
  538. package/lib/cjs/tile/map/MapLayerFormatRegistry.js.map +1 -1
  539. package/lib/cjs/tile/map/MapLayerImageryFormats.d.ts +2 -2
  540. package/lib/cjs/tile/map/MapLayerImageryFormats.d.ts.map +1 -1
  541. package/lib/cjs/tile/map/MapLayerImageryFormats.js +21 -8
  542. package/lib/cjs/tile/map/MapLayerImageryFormats.js.map +1 -1
  543. package/lib/cjs/tile/map/MapLayerImageryProvider.d.ts +18 -6
  544. package/lib/cjs/tile/map/MapLayerImageryProvider.d.ts.map +1 -1
  545. package/lib/cjs/tile/map/MapLayerImageryProvider.js +47 -14
  546. package/lib/cjs/tile/map/MapLayerImageryProvider.js.map +1 -1
  547. package/lib/cjs/tile/map/MapLayerSources.d.ts +3 -11
  548. package/lib/cjs/tile/map/MapLayerSources.d.ts.map +1 -1
  549. package/lib/cjs/tile/map/MapLayerSources.js +5 -34
  550. package/lib/cjs/tile/map/MapLayerSources.js.map +1 -1
  551. package/lib/cjs/tile/map/MapTile.d.ts.map +1 -1
  552. package/lib/cjs/tile/map/MapTile.js +4 -3
  553. package/lib/cjs/tile/map/MapTile.js.map +1 -1
  554. package/lib/cjs/tile/map/MapTileLoader.js +2 -2
  555. package/lib/cjs/tile/map/MapTileLoader.js.map +1 -1
  556. package/lib/cjs/tile/map/MapTileTree.d.ts +1 -1
  557. package/lib/cjs/tile/map/MapTileTree.d.ts.map +1 -1
  558. package/lib/cjs/tile/map/MapTileTree.js +30 -21
  559. package/lib/cjs/tile/map/MapTileTree.js.map +1 -1
  560. package/lib/cjs/tile/map/MapTiledGraphicsProvider.d.ts +3 -3
  561. package/lib/cjs/tile/map/MapTiledGraphicsProvider.d.ts.map +1 -1
  562. package/lib/cjs/tile/map/MapTiledGraphicsProvider.js +4 -6
  563. package/lib/cjs/tile/map/MapTiledGraphicsProvider.js.map +1 -1
  564. package/lib/cjs/tile/map/MapTilingScheme.d.ts +7 -2
  565. package/lib/cjs/tile/map/MapTilingScheme.d.ts.map +1 -1
  566. package/lib/cjs/tile/map/MapTilingScheme.js +21 -8
  567. package/lib/cjs/tile/map/MapTilingScheme.js.map +1 -1
  568. package/lib/cjs/tile/map/QuadId.d.ts +1 -0
  569. package/lib/cjs/tile/map/QuadId.d.ts.map +1 -1
  570. package/lib/cjs/tile/map/QuadId.js +2 -1
  571. package/lib/cjs/tile/map/QuadId.js.map +1 -1
  572. package/lib/cjs/tile/map/TerrainMeshProvider.d.ts +1 -1
  573. package/lib/cjs/tile/map/TerrainMeshProvider.js.map +1 -1
  574. package/lib/cjs/tile/map/WmsCapabilities.d.ts +8 -1
  575. package/lib/cjs/tile/map/WmsCapabilities.d.ts.map +1 -1
  576. package/lib/cjs/tile/map/WmsCapabilities.js +39 -5
  577. package/lib/cjs/tile/map/WmsCapabilities.js.map +1 -1
  578. package/lib/cjs/tile/map/WmtsCapabilities.d.ts +11 -1
  579. package/lib/cjs/tile/map/WmtsCapabilities.d.ts.map +1 -1
  580. package/lib/cjs/tile/map/WmtsCapabilities.js +23 -9
  581. package/lib/cjs/tile/map/WmtsCapabilities.js.map +1 -1
  582. package/lib/cjs/tools/EditManipulator.d.ts.map +1 -1
  583. package/lib/cjs/tools/EditManipulator.js +1 -1
  584. package/lib/cjs/tools/EditManipulator.js.map +1 -1
  585. package/lib/cjs/tools/ElementSetTool.js +2 -2
  586. package/lib/cjs/tools/ElementSetTool.js.map +1 -1
  587. package/lib/cjs/tools/PrimitiveTool.d.ts +4 -4
  588. package/lib/cjs/tools/PrimitiveTool.d.ts.map +1 -1
  589. package/lib/cjs/tools/PrimitiveTool.js +2 -2
  590. package/lib/cjs/tools/PrimitiveTool.js.map +1 -1
  591. package/lib/cjs/tools/Tool.d.ts +29 -1
  592. package/lib/cjs/tools/Tool.d.ts.map +1 -1
  593. package/lib/cjs/tools/Tool.js +66 -0
  594. package/lib/cjs/tools/Tool.js.map +1 -1
  595. package/lib/cjs/tools/ToolAdmin.d.ts.map +1 -1
  596. package/lib/cjs/tools/ToolAdmin.js +20 -10
  597. package/lib/cjs/tools/ToolAdmin.js.map +1 -1
  598. package/lib/cjs/tools/ViewTool.d.ts.map +1 -1
  599. package/lib/cjs/tools/ViewTool.js +3 -11
  600. package/lib/cjs/tools/ViewTool.js.map +1 -1
  601. package/lib/cjs/webgl.d.ts +5 -0
  602. package/lib/cjs/webgl.d.ts.map +1 -1
  603. package/lib/cjs/webgl.js +5 -0
  604. package/lib/cjs/webgl.js.map +1 -1
  605. package/lib/esm/AccuSnap.js +3 -3
  606. package/lib/esm/AccuSnap.js.map +1 -1
  607. package/lib/esm/ApproximateTerrainHeights.d.ts.map +1 -1
  608. package/lib/esm/ApproximateTerrainHeights.js +10 -5
  609. package/lib/esm/ApproximateTerrainHeights.js.map +1 -1
  610. package/lib/esm/BackgroundMapGeometry.d.ts +1 -1
  611. package/lib/esm/BackgroundMapGeometry.d.ts.map +1 -1
  612. package/lib/esm/BackgroundMapGeometry.js +2 -2
  613. package/lib/esm/BackgroundMapGeometry.js.map +1 -1
  614. package/lib/esm/BingLocation.js +1 -1
  615. package/lib/esm/BingLocation.js.map +1 -1
  616. package/lib/esm/CheckpointConnection.js +1 -1
  617. package/lib/esm/CheckpointConnection.js.map +1 -1
  618. package/lib/esm/ContextRealityModelState.js +1 -1
  619. package/lib/esm/ContextRealityModelState.js.map +1 -1
  620. package/lib/esm/DisplayStyleState.d.ts +10 -163
  621. package/lib/esm/DisplayStyleState.d.ts.map +1 -1
  622. package/lib/esm/DisplayStyleState.js +70 -346
  623. package/lib/esm/DisplayStyleState.js.map +1 -1
  624. package/lib/esm/DrawingViewState.d.ts +2 -2
  625. package/lib/esm/DrawingViewState.d.ts.map +1 -1
  626. package/lib/esm/DrawingViewState.js +3 -3
  627. package/lib/esm/DrawingViewState.js.map +1 -1
  628. package/lib/esm/ElementLocateManager.d.ts +5 -0
  629. package/lib/esm/ElementLocateManager.d.ts.map +1 -1
  630. package/lib/esm/ElementLocateManager.js +12 -2
  631. package/lib/esm/ElementLocateManager.js.map +1 -1
  632. package/lib/esm/EmphasizeElements.d.ts.map +1 -1
  633. package/lib/esm/EmphasizeElements.js +14 -4
  634. package/lib/esm/EmphasizeElements.js.map +1 -1
  635. package/lib/esm/EnvironmentDecorations.d.ts +39 -0
  636. package/lib/esm/EnvironmentDecorations.d.ts.map +1 -0
  637. package/lib/esm/EnvironmentDecorations.js +196 -0
  638. package/lib/esm/EnvironmentDecorations.js.map +1 -0
  639. package/lib/esm/FrontendHubAccess.d.ts +11 -7
  640. package/lib/esm/FrontendHubAccess.d.ts.map +1 -1
  641. package/lib/esm/FrontendHubAccess.js.map +1 -1
  642. package/lib/esm/FrontendLoggerCategory.d.ts +2 -8
  643. package/lib/esm/FrontendLoggerCategory.d.ts.map +1 -1
  644. package/lib/esm/FrontendLoggerCategory.js +2 -8
  645. package/lib/esm/FrontendLoggerCategory.js.map +1 -1
  646. package/lib/esm/HitDetail.js +7 -7
  647. package/lib/esm/HitDetail.js.map +1 -1
  648. package/lib/esm/IModelApp.d.ts +30 -17
  649. package/lib/esm/IModelApp.d.ts.map +1 -1
  650. package/lib/esm/IModelApp.js +32 -25
  651. package/lib/esm/IModelApp.js.map +1 -1
  652. package/lib/esm/IModelConnection.d.ts +4 -6
  653. package/lib/esm/IModelConnection.d.ts.map +1 -1
  654. package/lib/esm/IModelConnection.js +6 -11
  655. package/lib/esm/IModelConnection.js.map +1 -1
  656. package/lib/esm/IModeljs-css.d.ts.map +1 -1
  657. package/lib/esm/IModeljs-css.js +8 -6
  658. package/lib/esm/IModeljs-css.js.map +1 -1
  659. package/lib/esm/ImageUtil.d.ts +3 -3
  660. package/lib/esm/ImageUtil.d.ts.map +1 -1
  661. package/lib/esm/ImageUtil.js +7 -4
  662. package/lib/esm/ImageUtil.js.map +1 -1
  663. package/lib/esm/LocalhostIpcApp.d.ts +2 -1
  664. package/lib/esm/LocalhostIpcApp.d.ts.map +1 -1
  665. package/lib/esm/LocalhostIpcApp.js +22 -8
  666. package/lib/esm/LocalhostIpcApp.js.map +1 -1
  667. package/lib/esm/Marker.d.ts +9 -2
  668. package/lib/esm/Marker.d.ts.map +1 -1
  669. package/lib/esm/Marker.js +34 -6
  670. package/lib/esm/Marker.js.map +1 -1
  671. package/lib/esm/ModelState.js +1 -1
  672. package/lib/esm/ModelState.js.map +1 -1
  673. package/lib/esm/NativeApp.d.ts +3 -38
  674. package/lib/esm/NativeApp.d.ts.map +1 -1
  675. package/lib/esm/NativeApp.js +1 -69
  676. package/lib/esm/NativeApp.js.map +1 -1
  677. package/lib/esm/NoRenderApp.d.ts +0 -1
  678. package/lib/esm/NoRenderApp.d.ts.map +1 -1
  679. package/lib/esm/NoRenderApp.js +0 -1
  680. package/lib/esm/NoRenderApp.js.map +1 -1
  681. package/lib/esm/NotificationManager.d.ts +3 -1
  682. package/lib/esm/NotificationManager.d.ts.map +1 -1
  683. package/lib/esm/NotificationManager.js +2 -0
  684. package/lib/esm/NotificationManager.js.map +1 -1
  685. package/lib/esm/RealityDataSource.d.ts +59 -29
  686. package/lib/esm/RealityDataSource.d.ts.map +1 -1
  687. package/lib/esm/RealityDataSource.js +247 -92
  688. package/lib/esm/RealityDataSource.js.map +1 -1
  689. package/lib/esm/RenderScheduleState.d.ts +2 -0
  690. package/lib/esm/RenderScheduleState.d.ts.map +1 -1
  691. package/lib/esm/RenderScheduleState.js +8 -4
  692. package/lib/esm/RenderScheduleState.js.map +1 -1
  693. package/lib/esm/SheetViewState.d.ts +2 -2
  694. package/lib/esm/SheetViewState.d.ts.map +1 -1
  695. package/lib/esm/SheetViewState.js +8 -9
  696. package/lib/esm/SheetViewState.js.map +1 -1
  697. package/lib/esm/SpatialViewState.d.ts +10 -2
  698. package/lib/esm/SpatialViewState.d.ts.map +1 -1
  699. package/lib/esm/SpatialViewState.js +12 -2
  700. package/lib/esm/SpatialViewState.js.map +1 -1
  701. package/lib/esm/SubCategoriesCache.js +1 -1
  702. package/lib/esm/SubCategoriesCache.js.map +1 -1
  703. package/lib/esm/Tiles.d.ts +11 -1
  704. package/lib/esm/Tiles.d.ts.map +1 -1
  705. package/lib/esm/Tiles.js +7 -0
  706. package/lib/esm/Tiles.js.map +1 -1
  707. package/lib/esm/TwoWayViewportSync.d.ts +35 -6
  708. package/lib/esm/TwoWayViewportSync.d.ts.map +1 -1
  709. package/lib/esm/TwoWayViewportSync.js +49 -10
  710. package/lib/esm/TwoWayViewportSync.js.map +1 -1
  711. package/lib/esm/UserPreferences.d.ts +72 -0
  712. package/lib/esm/UserPreferences.d.ts.map +1 -0
  713. package/lib/esm/UserPreferences.js +6 -0
  714. package/lib/esm/UserPreferences.js.map +1 -0
  715. package/lib/esm/ViewContext.d.ts +3 -1
  716. package/lib/esm/ViewContext.d.ts.map +1 -1
  717. package/lib/esm/ViewContext.js +4 -0
  718. package/lib/esm/ViewContext.js.map +1 -1
  719. package/lib/esm/ViewCreator2d.js +3 -3
  720. package/lib/esm/ViewCreator2d.js.map +1 -1
  721. package/lib/esm/ViewCreator3d.d.ts +1 -1
  722. package/lib/esm/ViewCreator3d.d.ts.map +1 -1
  723. package/lib/esm/ViewCreator3d.js +5 -6
  724. package/lib/esm/ViewCreator3d.js.map +1 -1
  725. package/lib/esm/ViewManager.d.ts +6 -6
  726. package/lib/esm/ViewManager.d.ts.map +1 -1
  727. package/lib/esm/ViewManager.js +13 -13
  728. package/lib/esm/ViewManager.js.map +1 -1
  729. package/lib/esm/ViewState.d.ts +11 -5
  730. package/lib/esm/ViewState.d.ts.map +1 -1
  731. package/lib/esm/ViewState.js +21 -66
  732. package/lib/esm/ViewState.js.map +1 -1
  733. package/lib/esm/ViewingSpace.js +1 -1
  734. package/lib/esm/ViewingSpace.js.map +1 -1
  735. package/lib/esm/Viewport.d.ts +57 -11
  736. package/lib/esm/Viewport.d.ts.map +1 -1
  737. package/lib/esm/Viewport.js +56 -32
  738. package/lib/esm/Viewport.js.map +1 -1
  739. package/lib/esm/core-frontend.d.ts +11 -24
  740. package/lib/esm/core-frontend.d.ts.map +1 -1
  741. package/lib/esm/core-frontend.js +11 -24
  742. package/lib/esm/core-frontend.js.map +1 -1
  743. package/lib/esm/quantity-formatting/BaseUnitFormattingSettingsProvider.d.ts +3 -2
  744. package/lib/esm/quantity-formatting/BaseUnitFormattingSettingsProvider.d.ts.map +1 -1
  745. package/lib/esm/quantity-formatting/BaseUnitFormattingSettingsProvider.js +3 -2
  746. package/lib/esm/quantity-formatting/BaseUnitFormattingSettingsProvider.js.map +1 -1
  747. package/lib/esm/quantity-formatting/BasicUnitsProvider.d.ts +5 -1
  748. package/lib/esm/quantity-formatting/BasicUnitsProvider.d.ts.map +1 -1
  749. package/lib/esm/quantity-formatting/BasicUnitsProvider.js +18 -4
  750. package/lib/esm/quantity-formatting/BasicUnitsProvider.js.map +1 -1
  751. package/lib/esm/quantity-formatting/QuantityFormatter.d.ts +26 -3
  752. package/lib/esm/quantity-formatting/QuantityFormatter.d.ts.map +1 -1
  753. package/lib/esm/quantity-formatting/QuantityFormatter.js +45 -7
  754. package/lib/esm/quantity-formatting/QuantityFormatter.js.map +1 -1
  755. package/lib/esm/render/FeatureSymbology.d.ts.map +1 -1
  756. package/lib/esm/render/FeatureSymbology.js +3 -3
  757. package/lib/esm/render/FeatureSymbology.js.map +1 -1
  758. package/lib/esm/render/GraphicBranch.d.ts +18 -2
  759. package/lib/esm/render/GraphicBranch.d.ts.map +1 -1
  760. package/lib/esm/render/GraphicBranch.js +8 -0
  761. package/lib/esm/render/GraphicBranch.js.map +1 -1
  762. package/lib/esm/render/GraphicBuilder.d.ts +7 -1
  763. package/lib/esm/render/GraphicBuilder.d.ts.map +1 -1
  764. package/lib/esm/render/GraphicBuilder.js.map +1 -1
  765. package/lib/esm/render/MockRender.d.ts +3 -1
  766. package/lib/esm/render/MockRender.d.ts.map +1 -1
  767. package/lib/esm/render/MockRender.js.map +1 -1
  768. package/lib/esm/render/RenderMaterial.d.ts +61 -0
  769. package/lib/esm/render/RenderMaterial.d.ts.map +1 -0
  770. package/lib/esm/render/RenderMaterial.js +9 -0
  771. package/lib/esm/render/RenderMaterial.js.map +1 -0
  772. package/lib/esm/render/RenderMemory.d.ts +21 -15
  773. package/lib/esm/render/RenderMemory.d.ts.map +1 -1
  774. package/lib/esm/render/RenderMemory.js +21 -15
  775. package/lib/esm/render/RenderMemory.js.map +1 -1
  776. package/lib/esm/render/RenderSystem.d.ts +44 -7
  777. package/lib/esm/render/RenderSystem.d.ts.map +1 -1
  778. package/lib/esm/render/RenderSystem.js +32 -9
  779. package/lib/esm/render/RenderSystem.js.map +1 -1
  780. package/lib/esm/render/RenderTarget.d.ts +10 -2
  781. package/lib/esm/render/RenderTarget.d.ts.map +1 -1
  782. package/lib/esm/render/RenderTarget.js +2 -1
  783. package/lib/esm/render/RenderTarget.js.map +1 -1
  784. package/lib/esm/render/RenderTexture.d.ts +2 -17
  785. package/lib/esm/render/RenderTexture.d.ts.map +1 -1
  786. package/lib/esm/render/RenderTexture.js +1 -16
  787. package/lib/esm/render/RenderTexture.js.map +1 -1
  788. package/lib/esm/render/primitives/EdgeParams.d.ts +84 -0
  789. package/lib/esm/render/primitives/EdgeParams.d.ts.map +1 -0
  790. package/lib/esm/render/primitives/EdgeParams.js +217 -0
  791. package/lib/esm/render/primitives/EdgeParams.js.map +1 -0
  792. package/lib/esm/render/primitives/PointStringParams.d.ts +16 -0
  793. package/lib/esm/render/primitives/PointStringParams.d.ts.map +1 -0
  794. package/lib/esm/render/primitives/PointStringParams.js +39 -0
  795. package/lib/esm/render/primitives/PointStringParams.js.map +1 -0
  796. package/lib/esm/render/primitives/PolylineParams.d.ts +44 -0
  797. package/lib/esm/render/primitives/PolylineParams.d.ts.map +1 -0
  798. package/lib/esm/render/primitives/PolylineParams.js +199 -0
  799. package/lib/esm/render/primitives/PolylineParams.js.map +1 -0
  800. package/lib/esm/render/primitives/Primitives.d.ts +1 -1
  801. package/lib/esm/render/primitives/Primitives.d.ts.map +1 -1
  802. package/lib/esm/render/primitives/Primitives.js.map +1 -1
  803. package/lib/esm/render/primitives/SurfaceParams.d.ts +46 -0
  804. package/lib/esm/render/primitives/SurfaceParams.d.ts.map +1 -0
  805. package/lib/esm/render/primitives/SurfaceParams.js +37 -0
  806. package/lib/esm/render/primitives/SurfaceParams.js.map +1 -0
  807. package/lib/esm/render/primitives/VertexTable.d.ts +4 -123
  808. package/lib/esm/render/primitives/VertexTable.d.ts.map +1 -1
  809. package/lib/esm/render/primitives/VertexTable.js +11 -342
  810. package/lib/esm/render/primitives/VertexTable.js.map +1 -1
  811. package/lib/esm/render/primitives/geometry/GeometryAccumulator.d.ts +2 -0
  812. package/lib/esm/render/primitives/geometry/GeometryAccumulator.d.ts.map +1 -1
  813. package/lib/esm/render/primitives/geometry/GeometryAccumulator.js +2 -1
  814. package/lib/esm/render/primitives/geometry/GeometryAccumulator.js.map +1 -1
  815. package/lib/esm/render/primitives/geometry/GeometryListBuilder.d.ts.map +1 -1
  816. package/lib/esm/render/primitives/geometry/GeometryListBuilder.js +1 -0
  817. package/lib/esm/render/primitives/geometry/GeometryListBuilder.js.map +1 -1
  818. package/lib/esm/render/primitives/mesh/MeshPrimitives.d.ts +2 -2
  819. package/lib/esm/render/primitives/mesh/MeshPrimitives.d.ts.map +1 -1
  820. package/lib/esm/render/primitives/mesh/MeshPrimitives.js +3 -3
  821. package/lib/esm/render/primitives/mesh/MeshPrimitives.js.map +1 -1
  822. package/lib/esm/render/primitives/mesh/TerrainMeshPrimitive.d.ts +1 -1
  823. package/lib/esm/render/primitives/mesh/TerrainMeshPrimitive.js +1 -1
  824. package/lib/esm/render/primitives/mesh/TerrainMeshPrimitive.js.map +1 -1
  825. package/lib/esm/render/webgl/AttributeMap.js +5 -5
  826. package/lib/esm/render/webgl/BackgroundMapDrape.js +2 -2
  827. package/lib/esm/render/webgl/BackgroundMapDrape.js.map +1 -1
  828. package/lib/esm/render/webgl/BranchUniforms.d.ts.map +1 -1
  829. package/lib/esm/render/webgl/BranchUniforms.js +8 -5
  830. package/lib/esm/render/webgl/BranchUniforms.js.map +1 -1
  831. package/lib/esm/render/webgl/CachedGeometry.d.ts +16 -11
  832. package/lib/esm/render/webgl/CachedGeometry.d.ts.map +1 -1
  833. package/lib/esm/render/webgl/CachedGeometry.js +26 -23
  834. package/lib/esm/render/webgl/CachedGeometry.js.map +1 -1
  835. package/lib/esm/render/webgl/DrawCommand.d.ts +2 -3
  836. package/lib/esm/render/webgl/DrawCommand.d.ts.map +1 -1
  837. package/lib/esm/render/webgl/DrawCommand.js +6 -4
  838. package/lib/esm/render/webgl/DrawCommand.js.map +1 -1
  839. package/lib/esm/render/webgl/EdgeGeometry.d.ts +73 -0
  840. package/lib/esm/render/webgl/EdgeGeometry.d.ts.map +1 -0
  841. package/lib/esm/render/webgl/EdgeGeometry.js +135 -0
  842. package/lib/esm/render/webgl/EdgeGeometry.js.map +1 -0
  843. package/lib/esm/render/webgl/FeatureOverrides.d.ts +2 -0
  844. package/lib/esm/render/webgl/FeatureOverrides.d.ts.map +1 -1
  845. package/lib/esm/render/webgl/FeatureOverrides.js +11 -3
  846. package/lib/esm/render/webgl/FeatureOverrides.js.map +1 -1
  847. package/lib/esm/render/webgl/FloatRGBA.d.ts.map +1 -1
  848. package/lib/esm/render/webgl/FloatRGBA.js +13 -11
  849. package/lib/esm/render/webgl/FloatRGBA.js.map +1 -1
  850. package/lib/esm/render/webgl/Graphic.d.ts +13 -0
  851. package/lib/esm/render/webgl/Graphic.d.ts.map +1 -1
  852. package/lib/esm/render/webgl/Graphic.js +39 -2
  853. package/lib/esm/render/webgl/Graphic.js.map +1 -1
  854. package/lib/esm/render/webgl/IndexedEdgeGeometry.d.ts +51 -0
  855. package/lib/esm/render/webgl/IndexedEdgeGeometry.d.ts.map +1 -0
  856. package/lib/esm/render/webgl/IndexedEdgeGeometry.js +85 -0
  857. package/lib/esm/render/webgl/IndexedEdgeGeometry.js.map +1 -0
  858. package/lib/esm/render/webgl/InstancedGeometry.d.ts +6 -5
  859. package/lib/esm/render/webgl/InstancedGeometry.d.ts.map +1 -1
  860. package/lib/esm/render/webgl/InstancedGeometry.js +2 -1
  861. package/lib/esm/render/webgl/InstancedGeometry.js.map +1 -1
  862. package/lib/esm/render/webgl/Material.d.ts +1 -1
  863. package/lib/esm/render/webgl/Material.d.ts.map +1 -1
  864. package/lib/esm/render/webgl/Material.js +2 -0
  865. package/lib/esm/render/webgl/Material.js.map +1 -1
  866. package/lib/esm/render/webgl/Mesh.d.ts +8 -162
  867. package/lib/esm/render/webgl/Mesh.d.ts.map +1 -1
  868. package/lib/esm/render/webgl/Mesh.js +12 -445
  869. package/lib/esm/render/webgl/Mesh.js.map +1 -1
  870. package/lib/esm/render/webgl/MeshData.d.ts +38 -0
  871. package/lib/esm/render/webgl/MeshData.d.ts.map +1 -0
  872. package/lib/esm/render/webgl/MeshData.js +62 -0
  873. package/lib/esm/render/webgl/MeshData.js.map +1 -0
  874. package/lib/esm/render/webgl/MeshGeometry.d.ts +38 -0
  875. package/lib/esm/render/webgl/MeshGeometry.d.ts.map +1 -0
  876. package/lib/esm/render/webgl/MeshGeometry.js +55 -0
  877. package/lib/esm/render/webgl/MeshGeometry.js.map +1 -0
  878. package/lib/esm/render/webgl/PlanarClassifier.d.ts.map +1 -1
  879. package/lib/esm/render/webgl/PlanarClassifier.js +9 -5
  880. package/lib/esm/render/webgl/PlanarClassifier.js.map +1 -1
  881. package/lib/esm/render/webgl/PlanarGrid.d.ts +2 -3
  882. package/lib/esm/render/webgl/PlanarGrid.d.ts.map +1 -1
  883. package/lib/esm/render/webgl/PlanarGrid.js +3 -3
  884. package/lib/esm/render/webgl/PlanarGrid.js.map +1 -1
  885. package/lib/esm/render/webgl/PlanarTextureProjection.d.ts.map +1 -1
  886. package/lib/esm/render/webgl/PlanarTextureProjection.js +1 -0
  887. package/lib/esm/render/webgl/PlanarTextureProjection.js.map +1 -1
  888. package/lib/esm/render/webgl/PointCloud.d.ts +2 -2
  889. package/lib/esm/render/webgl/PointCloud.d.ts.map +1 -1
  890. package/lib/esm/render/webgl/PointCloud.js +2 -2
  891. package/lib/esm/render/webgl/PointCloud.js.map +1 -1
  892. package/lib/esm/render/webgl/PointString.d.ts +3 -3
  893. package/lib/esm/render/webgl/PointString.d.ts.map +1 -1
  894. package/lib/esm/render/webgl/PointString.js +1 -1
  895. package/lib/esm/render/webgl/PointString.js.map +1 -1
  896. package/lib/esm/render/webgl/Polyline.d.ts +3 -3
  897. package/lib/esm/render/webgl/Polyline.d.ts.map +1 -1
  898. package/lib/esm/render/webgl/Polyline.js +6 -6
  899. package/lib/esm/render/webgl/Polyline.js.map +1 -1
  900. package/lib/esm/render/webgl/Primitive.d.ts +2 -2
  901. package/lib/esm/render/webgl/Primitive.d.ts.map +1 -1
  902. package/lib/esm/render/webgl/Primitive.js +5 -5
  903. package/lib/esm/render/webgl/Primitive.js.map +1 -1
  904. package/lib/esm/render/webgl/RealityMesh.d.ts +2 -2
  905. package/lib/esm/render/webgl/RealityMesh.d.ts.map +1 -1
  906. package/lib/esm/render/webgl/RealityMesh.js +9 -9
  907. package/lib/esm/render/webgl/RealityMesh.js.map +1 -1
  908. package/lib/esm/render/webgl/RenderCommands.d.ts +6 -2
  909. package/lib/esm/render/webgl/RenderCommands.d.ts.map +1 -1
  910. package/lib/esm/render/webgl/RenderCommands.js +78 -45
  911. package/lib/esm/render/webgl/RenderCommands.js.map +1 -1
  912. package/lib/esm/render/webgl/RenderFlags.d.ts +48 -1
  913. package/lib/esm/render/webgl/RenderFlags.d.ts.map +1 -1
  914. package/lib/esm/render/webgl/RenderFlags.js +63 -1
  915. package/lib/esm/render/webgl/RenderFlags.js.map +1 -1
  916. package/lib/esm/render/webgl/SceneCompositor.js +10 -9
  917. package/lib/esm/render/webgl/SceneCompositor.js.map +1 -1
  918. package/lib/esm/render/webgl/ScreenSpaceEffect.js +1 -1
  919. package/lib/esm/render/webgl/ShaderBuilder.d.ts +23 -20
  920. package/lib/esm/render/webgl/ShaderBuilder.d.ts.map +1 -1
  921. package/lib/esm/render/webgl/ShaderBuilder.js +38 -32
  922. package/lib/esm/render/webgl/ShaderBuilder.js.map +1 -1
  923. package/lib/esm/render/webgl/ShaderProgram.d.ts +1 -1
  924. package/lib/esm/render/webgl/ShaderProgram.d.ts.map +1 -1
  925. package/lib/esm/render/webgl/ShaderProgram.js +4 -4
  926. package/lib/esm/render/webgl/ShaderProgram.js.map +1 -1
  927. package/lib/esm/render/webgl/SolarShadowMap.d.ts.map +1 -1
  928. package/lib/esm/render/webgl/SolarShadowMap.js +5 -4
  929. package/lib/esm/render/webgl/SolarShadowMap.js.map +1 -1
  930. package/lib/esm/render/webgl/SurfaceGeometry.d.ts +54 -0
  931. package/lib/esm/render/webgl/SurfaceGeometry.d.ts.map +1 -0
  932. package/lib/esm/render/webgl/SurfaceGeometry.js +243 -0
  933. package/lib/esm/render/webgl/SurfaceGeometry.js.map +1 -0
  934. package/lib/esm/render/webgl/System.d.ts +13 -10
  935. package/lib/esm/render/webgl/System.d.ts.map +1 -1
  936. package/lib/esm/render/webgl/System.js +77 -23
  937. package/lib/esm/render/webgl/System.js.map +1 -1
  938. package/lib/esm/render/webgl/Target.d.ts +13 -1
  939. package/lib/esm/render/webgl/Target.d.ts.map +1 -1
  940. package/lib/esm/render/webgl/Target.js +88 -2
  941. package/lib/esm/render/webgl/Target.js.map +1 -1
  942. package/lib/esm/render/webgl/Technique.d.ts.map +1 -1
  943. package/lib/esm/render/webgl/Technique.js +112 -119
  944. package/lib/esm/render/webgl/Technique.js.map +1 -1
  945. package/lib/esm/render/webgl/TechniqueFlags.d.ts +7 -1
  946. package/lib/esm/render/webgl/TechniqueFlags.d.ts.map +1 -1
  947. package/lib/esm/render/webgl/TechniqueFlags.js +10 -1
  948. package/lib/esm/render/webgl/TechniqueFlags.js.map +1 -1
  949. package/lib/esm/render/webgl/TechniqueId.d.ts +29 -28
  950. package/lib/esm/render/webgl/TechniqueId.d.ts.map +1 -1
  951. package/lib/esm/render/webgl/TechniqueId.js +7 -7
  952. package/lib/esm/render/webgl/TechniqueId.js.map +1 -1
  953. package/lib/esm/render/webgl/Texture.d.ts +15 -12
  954. package/lib/esm/render/webgl/Texture.d.ts.map +1 -1
  955. package/lib/esm/render/webgl/Texture.js +27 -24
  956. package/lib/esm/render/webgl/Texture.js.map +1 -1
  957. package/lib/esm/render/webgl/glsl/AmbientOcclusion.d.ts.map +1 -1
  958. package/lib/esm/render/webgl/glsl/AmbientOcclusion.js +84 -19
  959. package/lib/esm/render/webgl/glsl/AmbientOcclusion.js.map +1 -1
  960. package/lib/esm/render/webgl/glsl/Animation.js +1 -1
  961. package/lib/esm/render/webgl/glsl/Blur.js +1 -1
  962. package/lib/esm/render/webgl/glsl/ClearPickAndColor.js +2 -2
  963. package/lib/esm/render/webgl/glsl/ClearTranslucent.js +2 -2
  964. package/lib/esm/render/webgl/glsl/Color.js +1 -1
  965. package/lib/esm/render/webgl/glsl/Combine3Textures.js +1 -1
  966. package/lib/esm/render/webgl/glsl/CombineTextures.js +1 -1
  967. package/lib/esm/render/webgl/glsl/Composite.js +1 -1
  968. package/lib/esm/render/webgl/glsl/CopyColor.d.ts.map +1 -1
  969. package/lib/esm/render/webgl/glsl/CopyColor.js +17 -2
  970. package/lib/esm/render/webgl/glsl/CopyColor.js.map +1 -1
  971. package/lib/esm/render/webgl/glsl/CopyPickBuffers.js +2 -2
  972. package/lib/esm/render/webgl/glsl/CopyStencil.d.ts.map +1 -1
  973. package/lib/esm/render/webgl/glsl/CopyStencil.js +10 -13
  974. package/lib/esm/render/webgl/glsl/CopyStencil.js.map +1 -1
  975. package/lib/esm/render/webgl/glsl/EVSMFromDepth.js +2 -2
  976. package/lib/esm/render/webgl/glsl/EVSMFromDepth.js.map +1 -1
  977. package/lib/esm/render/webgl/glsl/Edge.d.ts +2 -1
  978. package/lib/esm/render/webgl/glsl/Edge.d.ts.map +1 -1
  979. package/lib/esm/render/webgl/glsl/Edge.js +132 -14
  980. package/lib/esm/render/webgl/glsl/Edge.js.map +1 -1
  981. package/lib/esm/render/webgl/glsl/FeatureSymbology.d.ts.map +1 -1
  982. package/lib/esm/render/webgl/glsl/FeatureSymbology.js +44 -22
  983. package/lib/esm/render/webgl/glsl/FeatureSymbology.js.map +1 -1
  984. package/lib/esm/render/webgl/glsl/Fragment.d.ts.map +1 -1
  985. package/lib/esm/render/webgl/glsl/Fragment.js +19 -11
  986. package/lib/esm/render/webgl/glsl/Fragment.js.map +1 -1
  987. package/lib/esm/render/webgl/glsl/LogarithmicDepthBuffer.js +1 -1
  988. package/lib/esm/render/webgl/glsl/LookupTable.d.ts +4 -2
  989. package/lib/esm/render/webgl/glsl/LookupTable.d.ts.map +1 -1
  990. package/lib/esm/render/webgl/glsl/LookupTable.js +7 -3
  991. package/lib/esm/render/webgl/glsl/LookupTable.js.map +1 -1
  992. package/lib/esm/render/webgl/glsl/PlanarClassification.d.ts.map +1 -1
  993. package/lib/esm/render/webgl/glsl/PlanarClassification.js +13 -4
  994. package/lib/esm/render/webgl/glsl/PlanarClassification.js.map +1 -1
  995. package/lib/esm/render/webgl/glsl/PlanarGrid.js +2 -2
  996. package/lib/esm/render/webgl/glsl/PlanarGrid.js.map +1 -1
  997. package/lib/esm/render/webgl/glsl/PointCloud.js +2 -2
  998. package/lib/esm/render/webgl/glsl/PointCloud.js.map +1 -1
  999. package/lib/esm/render/webgl/glsl/PointString.js +1 -1
  1000. package/lib/esm/render/webgl/glsl/PointString.js.map +1 -1
  1001. package/lib/esm/render/webgl/glsl/Polyline.js +1 -1
  1002. package/lib/esm/render/webgl/glsl/Polyline.js.map +1 -1
  1003. package/lib/esm/render/webgl/glsl/RealityMesh.d.ts.map +1 -1
  1004. package/lib/esm/render/webgl/glsl/RealityMesh.js +9 -6
  1005. package/lib/esm/render/webgl/glsl/RealityMesh.js.map +1 -1
  1006. package/lib/esm/render/webgl/glsl/ScreenSpaceEffect.js +2 -2
  1007. package/lib/esm/render/webgl/glsl/ScreenSpaceEffect.js.map +1 -1
  1008. package/lib/esm/render/webgl/glsl/SkyBox.js +2 -2
  1009. package/lib/esm/render/webgl/glsl/SkyBox.js.map +1 -1
  1010. package/lib/esm/render/webgl/glsl/SkySphere.js +2 -2
  1011. package/lib/esm/render/webgl/glsl/Surface.d.ts.map +1 -1
  1012. package/lib/esm/render/webgl/glsl/Surface.js +41 -16
  1013. package/lib/esm/render/webgl/glsl/Surface.js.map +1 -1
  1014. package/lib/esm/render/webgl/glsl/Translucency.js +2 -2
  1015. package/lib/esm/render/webgl/glsl/Vertex.js +3 -3
  1016. package/lib/esm/render/webgl/glsl/Vertex.js.map +1 -1
  1017. package/lib/esm/render/webgl/glsl/ViewportQuad.js +1 -1
  1018. package/lib/esm/render/webgl/glsl/ViewportQuad.js.map +1 -1
  1019. package/lib/esm/render/webgl/glsl/Wiremesh.d.ts +9 -0
  1020. package/lib/esm/render/webgl/glsl/Wiremesh.d.ts.map +1 -0
  1021. package/lib/esm/render/webgl/glsl/Wiremesh.js +36 -0
  1022. package/lib/esm/render/webgl/glsl/Wiremesh.js.map +1 -0
  1023. package/lib/esm/render-primitives.d.ts +5 -1
  1024. package/lib/esm/render-primitives.d.ts.map +1 -1
  1025. package/lib/esm/render-primitives.js +5 -1
  1026. package/lib/esm/render-primitives.js.map +1 -1
  1027. package/lib/esm/request/Request.d.ts +167 -0
  1028. package/lib/esm/request/Request.d.ts.map +1 -0
  1029. package/lib/esm/request/Request.js +289 -0
  1030. package/lib/esm/request/Request.js.map +1 -0
  1031. package/lib/esm/tile/B3dmReader.d.ts +2 -1
  1032. package/lib/esm/tile/B3dmReader.d.ts.map +1 -1
  1033. package/lib/esm/tile/B3dmReader.js +12 -8
  1034. package/lib/esm/tile/B3dmReader.js.map +1 -1
  1035. package/lib/esm/tile/CesiumAssetProvider.d.ts +14 -0
  1036. package/lib/esm/tile/CesiumAssetProvider.d.ts.map +1 -0
  1037. package/lib/esm/tile/CesiumAssetProvider.js +31 -0
  1038. package/lib/esm/tile/CesiumAssetProvider.js.map +1 -0
  1039. package/lib/esm/tile/ContextShareProvider.d.ts +22 -0
  1040. package/lib/esm/tile/ContextShareProvider.d.ts.map +1 -0
  1041. package/lib/esm/tile/ContextShareProvider.js +125 -0
  1042. package/lib/esm/tile/ContextShareProvider.js.map +1 -0
  1043. package/lib/esm/tile/DynamicIModelTile.js +9 -3
  1044. package/lib/esm/tile/DynamicIModelTile.js.map +1 -1
  1045. package/lib/esm/tile/GltfReader.d.ts +594 -55
  1046. package/lib/esm/tile/GltfReader.d.ts.map +1 -1
  1047. package/lib/esm/tile/GltfReader.js +678 -242
  1048. package/lib/esm/tile/GltfReader.js.map +1 -1
  1049. package/lib/esm/tile/I3dmReader.d.ts +2 -1
  1050. package/lib/esm/tile/I3dmReader.d.ts.map +1 -1
  1051. package/lib/esm/tile/I3dmReader.js +11 -7
  1052. package/lib/esm/tile/I3dmReader.js.map +1 -1
  1053. package/lib/esm/tile/IModelTile.d.ts.map +1 -1
  1054. package/lib/esm/tile/IModelTile.js +14 -7
  1055. package/lib/esm/tile/IModelTile.js.map +1 -1
  1056. package/lib/esm/tile/IModelTileTree.d.ts +8 -0
  1057. package/lib/esm/tile/IModelTileTree.d.ts.map +1 -1
  1058. package/lib/esm/tile/IModelTileTree.js +36 -1
  1059. package/lib/esm/tile/IModelTileTree.js.map +1 -1
  1060. package/lib/esm/tile/ImdlReader.d.ts +365 -10
  1061. package/lib/esm/tile/ImdlReader.d.ts.map +1 -1
  1062. package/lib/esm/tile/ImdlReader.js +199 -66
  1063. package/lib/esm/tile/ImdlReader.js.map +1 -1
  1064. package/lib/esm/tile/OrbitGtTileTree.d.ts.map +1 -1
  1065. package/lib/esm/tile/OrbitGtTileTree.js +8 -5
  1066. package/lib/esm/tile/OrbitGtTileTree.js.map +1 -1
  1067. package/lib/esm/tile/PrimaryTileTree.d.ts +14 -5
  1068. package/lib/esm/tile/PrimaryTileTree.d.ts.map +1 -1
  1069. package/lib/esm/tile/PrimaryTileTree.js +70 -15
  1070. package/lib/esm/tile/PrimaryTileTree.js.map +1 -1
  1071. package/lib/esm/tile/RealityModelTileTree.d.ts +3 -55
  1072. package/lib/esm/tile/RealityModelTileTree.d.ts.map +1 -1
  1073. package/lib/esm/tile/RealityModelTileTree.js +56 -230
  1074. package/lib/esm/tile/RealityModelTileTree.js.map +1 -1
  1075. package/lib/esm/tile/RealityTileLoader.d.ts +1 -0
  1076. package/lib/esm/tile/RealityTileLoader.d.ts.map +1 -1
  1077. package/lib/esm/tile/RealityTileLoader.js +4 -3
  1078. package/lib/esm/tile/RealityTileLoader.js.map +1 -1
  1079. package/lib/esm/tile/Tile.d.ts.map +1 -1
  1080. package/lib/esm/tile/Tile.js +5 -1
  1081. package/lib/esm/tile/Tile.js.map +1 -1
  1082. package/lib/esm/tile/TileAdmin.d.ts +37 -4
  1083. package/lib/esm/tile/TileAdmin.d.ts.map +1 -1
  1084. package/lib/esm/tile/TileAdmin.js +19 -13
  1085. package/lib/esm/tile/TileAdmin.js.map +1 -1
  1086. package/lib/esm/tile/TileDrawArgs.d.ts +11 -0
  1087. package/lib/esm/tile/TileDrawArgs.d.ts.map +1 -1
  1088. package/lib/esm/tile/TileDrawArgs.js +6 -1
  1089. package/lib/esm/tile/TileDrawArgs.js.map +1 -1
  1090. package/lib/esm/tile/TileTreeReference.d.ts +2 -0
  1091. package/lib/esm/tile/TileTreeReference.d.ts.map +1 -1
  1092. package/lib/esm/tile/TileTreeReference.js +5 -0
  1093. package/lib/esm/tile/TileTreeReference.js.map +1 -1
  1094. package/lib/esm/tile/internal.d.ts +4 -1
  1095. package/lib/esm/tile/internal.d.ts.map +1 -1
  1096. package/lib/esm/tile/internal.js +4 -1
  1097. package/lib/esm/tile/internal.js.map +1 -1
  1098. package/lib/esm/tile/map/ArcGISTileMap.d.ts +22 -0
  1099. package/lib/esm/tile/map/ArcGISTileMap.d.ts.map +1 -0
  1100. package/lib/esm/tile/map/ArcGISTileMap.js +173 -0
  1101. package/lib/esm/tile/map/ArcGISTileMap.js.map +1 -0
  1102. package/lib/esm/tile/map/ArcGisTokenGenerator.js +1 -1
  1103. package/lib/esm/tile/map/ArcGisTokenGenerator.js.map +1 -1
  1104. package/lib/esm/tile/map/ArcGisUtilities.d.ts +1 -1
  1105. package/lib/esm/tile/map/ArcGisUtilities.d.ts.map +1 -1
  1106. package/lib/esm/tile/map/ArcGisUtilities.js +14 -6
  1107. package/lib/esm/tile/map/ArcGisUtilities.js.map +1 -1
  1108. package/lib/esm/tile/map/BingElevation.js +1 -1
  1109. package/lib/esm/tile/map/BingElevation.js.map +1 -1
  1110. package/lib/esm/tile/map/CesiumTerrainProvider.d.ts.map +1 -1
  1111. package/lib/esm/tile/map/CesiumTerrainProvider.js +25 -13
  1112. package/lib/esm/tile/map/CesiumTerrainProvider.js.map +1 -1
  1113. package/lib/esm/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.d.ts +2 -2
  1114. package/lib/esm/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.d.ts.map +1 -1
  1115. package/lib/esm/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js +21 -42
  1116. package/lib/esm/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js.map +1 -1
  1117. package/lib/esm/tile/map/ImageryProviders/BingImageryProvider.js +2 -2
  1118. package/lib/esm/tile/map/ImageryProviders/BingImageryProvider.js.map +1 -1
  1119. package/lib/esm/tile/map/ImageryProviders/WmsMapLayerImageryProvider.d.ts +8 -0
  1120. package/lib/esm/tile/map/ImageryProviders/WmsMapLayerImageryProvider.d.ts.map +1 -1
  1121. package/lib/esm/tile/map/ImageryProviders/WmsMapLayerImageryProvider.js +51 -10
  1122. package/lib/esm/tile/map/ImageryProviders/WmsMapLayerImageryProvider.js.map +1 -1
  1123. package/lib/esm/tile/map/ImageryProviders/WmtsMapLayerImageryProvider.d.ts +6 -1
  1124. package/lib/esm/tile/map/ImageryProviders/WmtsMapLayerImageryProvider.d.ts.map +1 -1
  1125. package/lib/esm/tile/map/ImageryProviders/WmtsMapLayerImageryProvider.js +63 -21
  1126. package/lib/esm/tile/map/ImageryProviders/WmtsMapLayerImageryProvider.js.map +1 -1
  1127. package/lib/esm/tile/map/ImageryTileTree.d.ts +4 -4
  1128. package/lib/esm/tile/map/ImageryTileTree.d.ts.map +1 -1
  1129. package/lib/esm/tile/map/ImageryTileTree.js +21 -25
  1130. package/lib/esm/tile/map/ImageryTileTree.js.map +1 -1
  1131. package/lib/esm/tile/map/MapCartoRectangle.js +1 -1
  1132. package/lib/esm/tile/map/MapCartoRectangle.js.map +1 -1
  1133. package/lib/esm/tile/map/MapLayerAuthentication.d.ts +20 -0
  1134. package/lib/esm/tile/map/MapLayerAuthentication.d.ts.map +1 -0
  1135. package/lib/esm/tile/map/MapLayerAuthentication.js +15 -0
  1136. package/lib/esm/tile/map/MapLayerAuthentication.js.map +1 -0
  1137. package/lib/esm/tile/map/MapLayerFormatRegistry.d.ts +6 -3
  1138. package/lib/esm/tile/map/MapLayerFormatRegistry.d.ts.map +1 -1
  1139. package/lib/esm/tile/map/MapLayerFormatRegistry.js +3 -1
  1140. package/lib/esm/tile/map/MapLayerFormatRegistry.js.map +1 -1
  1141. package/lib/esm/tile/map/MapLayerImageryFormats.d.ts +2 -2
  1142. package/lib/esm/tile/map/MapLayerImageryFormats.d.ts.map +1 -1
  1143. package/lib/esm/tile/map/MapLayerImageryFormats.js +22 -9
  1144. package/lib/esm/tile/map/MapLayerImageryFormats.js.map +1 -1
  1145. package/lib/esm/tile/map/MapLayerImageryProvider.d.ts +18 -6
  1146. package/lib/esm/tile/map/MapLayerImageryProvider.d.ts.map +1 -1
  1147. package/lib/esm/tile/map/MapLayerImageryProvider.js +44 -11
  1148. package/lib/esm/tile/map/MapLayerImageryProvider.js.map +1 -1
  1149. package/lib/esm/tile/map/MapLayerSources.d.ts +3 -11
  1150. package/lib/esm/tile/map/MapLayerSources.d.ts.map +1 -1
  1151. package/lib/esm/tile/map/MapLayerSources.js +7 -36
  1152. package/lib/esm/tile/map/MapLayerSources.js.map +1 -1
  1153. package/lib/esm/tile/map/MapTile.d.ts.map +1 -1
  1154. package/lib/esm/tile/map/MapTile.js +4 -3
  1155. package/lib/esm/tile/map/MapTile.js.map +1 -1
  1156. package/lib/esm/tile/map/MapTileLoader.js +1 -1
  1157. package/lib/esm/tile/map/MapTileLoader.js.map +1 -1
  1158. package/lib/esm/tile/map/MapTileTree.d.ts +1 -1
  1159. package/lib/esm/tile/map/MapTileTree.d.ts.map +1 -1
  1160. package/lib/esm/tile/map/MapTileTree.js +30 -21
  1161. package/lib/esm/tile/map/MapTileTree.js.map +1 -1
  1162. package/lib/esm/tile/map/MapTiledGraphicsProvider.d.ts +3 -3
  1163. package/lib/esm/tile/map/MapTiledGraphicsProvider.d.ts.map +1 -1
  1164. package/lib/esm/tile/map/MapTiledGraphicsProvider.js +4 -6
  1165. package/lib/esm/tile/map/MapTiledGraphicsProvider.js.map +1 -1
  1166. package/lib/esm/tile/map/MapTilingScheme.d.ts +7 -2
  1167. package/lib/esm/tile/map/MapTilingScheme.d.ts.map +1 -1
  1168. package/lib/esm/tile/map/MapTilingScheme.js +22 -9
  1169. package/lib/esm/tile/map/MapTilingScheme.js.map +1 -1
  1170. package/lib/esm/tile/map/QuadId.d.ts +1 -0
  1171. package/lib/esm/tile/map/QuadId.d.ts.map +1 -1
  1172. package/lib/esm/tile/map/QuadId.js +2 -1
  1173. package/lib/esm/tile/map/QuadId.js.map +1 -1
  1174. package/lib/esm/tile/map/TerrainMeshProvider.d.ts +1 -1
  1175. package/lib/esm/tile/map/TerrainMeshProvider.js.map +1 -1
  1176. package/lib/esm/tile/map/WmsCapabilities.d.ts +8 -1
  1177. package/lib/esm/tile/map/WmsCapabilities.d.ts.map +1 -1
  1178. package/lib/esm/tile/map/WmsCapabilities.js +37 -3
  1179. package/lib/esm/tile/map/WmsCapabilities.js.map +1 -1
  1180. package/lib/esm/tile/map/WmtsCapabilities.d.ts +11 -1
  1181. package/lib/esm/tile/map/WmtsCapabilities.d.ts.map +1 -1
  1182. package/lib/esm/tile/map/WmtsCapabilities.js +20 -6
  1183. package/lib/esm/tile/map/WmtsCapabilities.js.map +1 -1
  1184. package/lib/esm/tools/EditManipulator.d.ts.map +1 -1
  1185. package/lib/esm/tools/EditManipulator.js +1 -1
  1186. package/lib/esm/tools/EditManipulator.js.map +1 -1
  1187. package/lib/esm/tools/ElementSetTool.js +2 -2
  1188. package/lib/esm/tools/ElementSetTool.js.map +1 -1
  1189. package/lib/esm/tools/PrimitiveTool.d.ts +4 -4
  1190. package/lib/esm/tools/PrimitiveTool.d.ts.map +1 -1
  1191. package/lib/esm/tools/PrimitiveTool.js +2 -2
  1192. package/lib/esm/tools/PrimitiveTool.js.map +1 -1
  1193. package/lib/esm/tools/Tool.d.ts +29 -1
  1194. package/lib/esm/tools/Tool.d.ts.map +1 -1
  1195. package/lib/esm/tools/Tool.js +66 -0
  1196. package/lib/esm/tools/Tool.js.map +1 -1
  1197. package/lib/esm/tools/ToolAdmin.d.ts.map +1 -1
  1198. package/lib/esm/tools/ToolAdmin.js +20 -10
  1199. package/lib/esm/tools/ToolAdmin.js.map +1 -1
  1200. package/lib/esm/tools/ViewTool.d.ts.map +1 -1
  1201. package/lib/esm/tools/ViewTool.js +3 -11
  1202. package/lib/esm/tools/ViewTool.js.map +1 -1
  1203. package/lib/esm/webgl.d.ts +5 -0
  1204. package/lib/esm/webgl.d.ts.map +1 -1
  1205. package/lib/esm/webgl.js +5 -0
  1206. package/lib/esm/webgl.js.map +1 -1
  1207. package/lib/public/locales/en/iModelJs.json +3 -1
  1208. package/package.json +33 -28
  1209. package/lib/cjs/RealityDataAccessProps.d.ts +0 -42
  1210. package/lib/cjs/RealityDataAccessProps.d.ts.map +0 -1
  1211. package/lib/cjs/RealityDataAccessProps.js +0 -23
  1212. package/lib/cjs/RealityDataAccessProps.js.map +0 -1
  1213. package/lib/cjs/RealityDataConnection.d.ts +0 -31
  1214. package/lib/cjs/RealityDataConnection.d.ts.map +0 -1
  1215. package/lib/cjs/RealityDataConnection.js +0 -101
  1216. package/lib/cjs/RealityDataConnection.js.map +0 -1
  1217. package/lib/cjs/tile/map/MapLayerSettingsService.d.ts +0 -39
  1218. package/lib/cjs/tile/map/MapLayerSettingsService.d.ts.map +0 -1
  1219. package/lib/cjs/tile/map/MapLayerSettingsService.js +0 -190
  1220. package/lib/cjs/tile/map/MapLayerSettingsService.js.map +0 -1
  1221. package/lib/esm/RealityDataAccessProps.d.ts +0 -42
  1222. package/lib/esm/RealityDataAccessProps.d.ts.map +0 -1
  1223. package/lib/esm/RealityDataAccessProps.js +0 -20
  1224. package/lib/esm/RealityDataAccessProps.js.map +0 -1
  1225. package/lib/esm/RealityDataConnection.d.ts +0 -31
  1226. package/lib/esm/RealityDataConnection.d.ts.map +0 -1
  1227. package/lib/esm/RealityDataConnection.js +0 -98
  1228. package/lib/esm/RealityDataConnection.js.map +0 -1
  1229. package/lib/esm/tile/map/MapLayerSettingsService.d.ts +0 -39
  1230. package/lib/esm/tile/map/MapLayerSettingsService.d.ts.map +0 -1
  1231. package/lib/esm/tile/map/MapLayerSettingsService.js +0 -186
  1232. package/lib/esm/tile/map/MapLayerSettingsService.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"I3dmReader.js","sourceRoot":"","sources":["../../../src/tile/I3dmReader.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\nimport { ByteStream, Id64String, JsonUtils, utf8ToString } from \"@itwin/core-bentley\";\r\nimport { AxisOrder, Matrix3d, Point3d, Vector3d } from \"@itwin/core-geometry\";\r\nimport { BatchType, ElementAlignedBox3d, Feature, FeatureTable, I3dmHeader, TileReadStatus } from \"@itwin/core-common\";\r\nimport { IModelConnection } from \"../IModelConnection\";\r\nimport { InstancedGraphicParams } from \"../render/InstancedGraphicParams\";\r\nimport { Mesh } from \"../render/primitives/mesh/MeshPrimitives\";\r\nimport { RenderSystem } from \"../render/RenderSystem\";\r\nimport { BatchedTileIdMap, GltfReader, GltfReaderProps, GltfReaderResult, ShouldAbortReadGltf } from \"./internal\";\r\n\r\nfunction setTransform(transforms: Float32Array, index: number, rotation: Matrix3d, origin: Point3d): void {\r\n const i = index * 12;\r\n let rot = rotation.coffs;\r\n\r\n const ignoreRotation = false;\r\n if (ignoreRotation)\r\n rot = new Float64Array([1, 0, 0, 0, 1, 0, 0, 0, 1]);\r\n\r\n const ignoreOrigin = false;\r\n if (ignoreOrigin)\r\n origin.x = origin.y = origin.z = 0;\r\n\r\n transforms[i + 0] = rot[0];\r\n transforms[i + 1] = rot[1];\r\n transforms[i + 2] = rot[2];\r\n transforms[i + 3] = origin.x;\r\n\r\n transforms[i + 4] = rot[3];\r\n transforms[i + 5] = rot[4];\r\n transforms[i + 6] = rot[5];\r\n transforms[i + 7] = origin.y;\r\n\r\n transforms[i + 8] = rot[6];\r\n transforms[i + 9] = rot[7];\r\n transforms[i + 10] = rot[8];\r\n transforms[i + 11] = origin.z;\r\n}\r\n\r\n/**\r\n * Deserializes a tile in [i3dm](https://github.com/AnalyticalGraphicsInc/3d-tiles/tree/master/specification/TileFormats/Instanced3DModel) format.\r\n * @internal\r\n */\r\nexport class I3dmReader extends GltfReader {\r\n private _instanceCount = 0;\r\n private _featureTable?: FeatureTable;\r\n\r\n public static create(stream: ByteStream, iModel: IModelConnection, modelId: Id64String, is3d: boolean, range: ElementAlignedBox3d,\r\n system: RenderSystem, yAxisUp: boolean, isLeaf: boolean, isCanceled?: ShouldAbortReadGltf, idMap?: BatchedTileIdMap): I3dmReader | undefined {\r\n const header = new I3dmHeader(stream);\r\n if (!header.isValid)\r\n return undefined;\r\n\r\n const props = GltfReaderProps.create(stream, yAxisUp);\r\n if (undefined === props)\r\n return undefined;\r\n\r\n stream.curPos = header.featureTableJsonPosition;\r\n const featureStr = utf8ToString(stream.nextBytes(header.featureTableJsonLength));\r\n if (undefined === featureStr)\r\n return undefined;\r\n\r\n const featureBinary = new Uint8Array(stream.arrayBuffer, header.featureTableJsonPosition + header.featureTableJsonLength, header.featureTableBinaryLength);\r\n return new I3dmReader(featureBinary, JSON.parse(featureStr), header.batchTableJson, props, iModel, modelId, is3d, system,\r\n range, isLeaf, isCanceled, idMap);\r\n }\r\n\r\n private constructor(private _featureBinary: Uint8Array, private _featureJson: any, private _batchTableJson: any, props: GltfReaderProps,\r\n iModel: IModelConnection, modelId: Id64String, is3d: boolean, system: RenderSystem, private _range: ElementAlignedBox3d,\r\n private _isLeaf: boolean, isCanceled?: ShouldAbortReadGltf, private _idMap?: BatchedTileIdMap) {\r\n super(props, iModel, modelId, is3d, system, BatchType.Primary, isCanceled);\r\n }\r\n\r\n public async read(): Promise<GltfReaderResult> {\r\n this._instanceCount = JsonUtils.asInt(this._featureJson.INSTANCES_LENGTH, 0);\r\n\r\n // NB: For reality models with no batch table, we want the model ID in the feature table\r\n this._featureTable = new FeatureTable(undefined === this._batchTableJson ? this._instanceCount : 1, this._modelId, this._type);\r\n if (this._idMap !== undefined && this._batchTableJson !== undefined) {\r\n for (let i = 0; i < this._instanceCount; i++) {\r\n const feature: any = {};\r\n for (const key in this._batchTableJson) // eslint-disable-line guard-for-in\r\n feature[key] = this._batchTableJson[key][i];\r\n\r\n this._featureTable.insert(new Feature(this._idMap.getBatchId(feature)));\r\n }\r\n } else {\r\n // NB: For reality models with no batch table, we want the model ID in the feature table\r\n const feature = new Feature(this._modelId);\r\n this._featureTable.insert(feature);\r\n }\r\n\r\n await this.loadTextures();\r\n if (this._isCanceled)\r\n return { readStatus: TileReadStatus.Canceled, isLeaf: this._isLeaf };\r\n\r\n const instances = this.readInstances();\r\n if (undefined === instances)\r\n return { readStatus: TileReadStatus.InvalidTileData, isLeaf: this._isLeaf };\r\n\r\n return this.readGltfAndCreateGraphics(this._isLeaf, this._featureTable, this._range, undefined, undefined, instances);\r\n }\r\n\r\n protected readFeatures(_features: Mesh.Features, _json: any): boolean {\r\n return false;\r\n }\r\n\r\n private readInstances(): InstancedGraphicParams | undefined {\r\n const count = JsonUtils.asInt(this._featureJson.INSTANCES_LENGTH, 0);\r\n if (count <= 0)\r\n return undefined;\r\n\r\n const json = this._featureJson;\r\n const binary = this._featureBinary;\r\n\r\n const batchIds = json.BATCH_ID ? new Int32Array(binary.buffer, binary.byteOffset + json.BATCH_ID.byteOffset, count) : undefined;\r\n const positions = json.POSITION ? new Float32Array(binary.buffer, binary.byteOffset + json.POSITION.byteOffset, count * 3) : undefined;\r\n const upNormals = json.NORMAL_UP ? new Float32Array(binary.buffer, binary.byteOffset + json.NORMAL_UP.byteOffset, count * 3) : undefined;\r\n const rightNormals = json.NORMAL_RIGHT ? new Float32Array(binary.buffer, binary.byteOffset + json.NORMAL_RIGHT.byteOffset, count * 3) : undefined;\r\n const scales = json.SCALE ? new Float32Array(binary.buffer, binary.byteOffset + json.SCALE.byteOffset, count) : undefined;\r\n const nonUniformScales = json.SCALE_NON_UNIFORM ? new Float32Array(binary.buffer, binary.byteOffset + json.SCALE_NON_UNIFORM.byteOffset, count * 3) : undefined;\r\n\r\n const matrix = Matrix3d.createIdentity();\r\n const position = Point3d.createZero();\r\n const upNormal = Vector3d.create(0, 0, 1);\r\n const rightNormal = Vector3d.create(1, 0, 0);\r\n const scale = Vector3d.create(1, 1, 1);\r\n\r\n const transformCenter = this._range.center;\r\n const transforms = new Float32Array(12 * count);\r\n for (let i = 0; i < count; i++) {\r\n const index = i * 3;\r\n if (positions)\r\n position.set(positions[index] - transformCenter.x, positions[index + 1] - transformCenter.y, positions[index + 2] - transformCenter.z);\r\n\r\n if (upNormals || rightNormals) {\r\n if (upNormals)\r\n upNormal.set(upNormals[index], upNormals[index + 1], upNormals[index + 2]);\r\n\r\n if (rightNormals)\r\n rightNormal.set(rightNormals[index], rightNormals[index + 1], rightNormals[index + 2]);\r\n\r\n if (scales)\r\n scale.x = scale.y = scale.z = scales[i];\r\n\r\n if (nonUniformScales) {\r\n scale.x *= nonUniformScales[index + 0];\r\n scale.y *= nonUniformScales[index + 1];\r\n scale.z *= nonUniformScales[index + 2];\r\n }\r\n\r\n Matrix3d.createRigidFromColumns(rightNormal, upNormal, AxisOrder.XYZ, matrix);\r\n if (scales || nonUniformScales)\r\n matrix.scaleColumnsInPlace(scale.x, scale.y, scale.z);\r\n\r\n setTransform(transforms, i, matrix, position);\r\n }\r\n }\r\n\r\n let featureIds;\r\n if (undefined !== batchIds) {\r\n featureIds = new Uint8Array(3 * batchIds.length);\r\n for (let i = 0, j = 0; i < batchIds.length; i++) {\r\n const batchId = batchIds[i];\r\n featureIds[j++] = batchId & 0x000000ff;\r\n featureIds[j++] = (batchId & 0x0000ff00) >> 8;\r\n featureIds[j++] = (batchId & 0x00ff0000) >> 16;\r\n }\r\n }\r\n const symbologyOverrides = undefined;\r\n\r\n return { count, transforms, symbologyOverrides, featureIds, transformCenter };\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"I3dmReader.js","sourceRoot":"","sources":["../../../src/tile/I3dmReader.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\nimport { ByteStream, Id64String, JsonUtils, utf8ToString } from \"@itwin/core-bentley\";\r\nimport { AxisOrder, Matrix3d, Point3d, Vector3d } from \"@itwin/core-geometry\";\r\nimport { ElementAlignedBox3d, Feature, FeatureTable, I3dmHeader, TileReadStatus } from \"@itwin/core-common\";\r\nimport { IModelConnection } from \"../IModelConnection\";\r\nimport { InstancedGraphicParams } from \"../render/InstancedGraphicParams\";\r\nimport { Mesh } from \"../render/primitives/mesh/MeshPrimitives\";\r\nimport { RenderSystem } from \"../render/RenderSystem\";\r\nimport { BatchedTileIdMap, GltfReader, GltfReaderProps, GltfReaderResult, ShouldAbortReadGltf } from \"./internal\";\r\n\r\nfunction setTransform(transforms: Float32Array, index: number, rotation: Matrix3d, origin: Point3d): void {\r\n const i = index * 12;\r\n let rot = rotation.coffs;\r\n\r\n const ignoreRotation = false;\r\n if (ignoreRotation)\r\n rot = new Float64Array([1, 0, 0, 0, 1, 0, 0, 0, 1]);\r\n\r\n const ignoreOrigin = false;\r\n if (ignoreOrigin)\r\n origin.x = origin.y = origin.z = 0;\r\n\r\n transforms[i + 0] = rot[0];\r\n transforms[i + 1] = rot[1];\r\n transforms[i + 2] = rot[2];\r\n transforms[i + 3] = origin.x;\r\n\r\n transforms[i + 4] = rot[3];\r\n transforms[i + 5] = rot[4];\r\n transforms[i + 6] = rot[5];\r\n transforms[i + 7] = origin.y;\r\n\r\n transforms[i + 8] = rot[6];\r\n transforms[i + 9] = rot[7];\r\n transforms[i + 10] = rot[8];\r\n transforms[i + 11] = origin.z;\r\n}\r\n\r\n/**\r\n * Deserializes a tile in [i3dm](https://github.com/AnalyticalGraphicsInc/3d-tiles/tree/master/specification/TileFormats/Instanced3DModel) format.\r\n * @internal\r\n */\r\nexport class I3dmReader extends GltfReader {\r\n private _instanceCount = 0;\r\n private _featureTable?: FeatureTable;\r\n private readonly _modelId: Id64String;\r\n\r\n public static create(stream: ByteStream, iModel: IModelConnection, modelId: Id64String, is3d: boolean, range: ElementAlignedBox3d,\r\n system: RenderSystem, yAxisUp: boolean, isLeaf: boolean, isCanceled?: ShouldAbortReadGltf, idMap?: BatchedTileIdMap, deduplicateVertices=false): I3dmReader | undefined {\r\n const header = new I3dmHeader(stream);\r\n if (!header.isValid)\r\n return undefined;\r\n\r\n const props = GltfReaderProps.create(stream.nextBytes(header.length - stream.curPos), yAxisUp);\r\n if (undefined === props)\r\n return undefined;\r\n\r\n stream.curPos = header.featureTableJsonPosition;\r\n const featureStr = utf8ToString(stream.nextBytes(header.featureTableJsonLength));\r\n if (undefined === featureStr)\r\n return undefined;\r\n\r\n const featureBinary = new Uint8Array(stream.arrayBuffer, header.featureTableJsonPosition + header.featureTableJsonLength, header.featureTableBinaryLength);\r\n return new I3dmReader(featureBinary, JSON.parse(featureStr), header.batchTableJson, props, iModel, modelId, is3d, system,\r\n range, isLeaf, isCanceled, idMap, deduplicateVertices);\r\n }\r\n\r\n private constructor(private _featureBinary: Uint8Array, private _featureJson: any, private _batchTableJson: any, props: GltfReaderProps,\r\n iModel: IModelConnection, modelId: Id64String, is3d: boolean, system: RenderSystem, private _range: ElementAlignedBox3d,\r\n private _isLeaf: boolean, shouldAbort?: ShouldAbortReadGltf, private _idMap?: BatchedTileIdMap, deduplicateVertices=false) {\r\n super({\r\n props, iModel, system, shouldAbort, deduplicateVertices,\r\n is2d: !is3d,\r\n });\r\n this._modelId = modelId;\r\n }\r\n\r\n public async read(): Promise<GltfReaderResult> {\r\n this._instanceCount = JsonUtils.asInt(this._featureJson.INSTANCES_LENGTH, 0);\r\n\r\n // NB: For reality models with no batch table, we want the model ID in the feature table\r\n this._featureTable = new FeatureTable(undefined === this._batchTableJson ? this._instanceCount : 1, this._modelId, this._type);\r\n if (this._idMap !== undefined && this._batchTableJson !== undefined) {\r\n for (let i = 0; i < this._instanceCount; i++) {\r\n const feature: any = {};\r\n for (const key in this._batchTableJson) // eslint-disable-line guard-for-in\r\n feature[key] = this._batchTableJson[key][i];\r\n\r\n this._featureTable.insert(new Feature(this._idMap.getBatchId(feature)));\r\n }\r\n } else {\r\n // NB: For reality models with no batch table, we want the model ID in the feature table\r\n const feature = new Feature(this._modelId);\r\n this._featureTable.insert(feature);\r\n }\r\n\r\n await this.resolveResources();\r\n if (this._isCanceled)\r\n return { readStatus: TileReadStatus.Canceled, isLeaf: this._isLeaf };\r\n\r\n const instances = this.readInstances();\r\n if (undefined === instances)\r\n return { readStatus: TileReadStatus.InvalidTileData, isLeaf: this._isLeaf };\r\n\r\n return this.readGltfAndCreateGraphics(this._isLeaf, this._featureTable, this._range, undefined, undefined, instances);\r\n }\r\n\r\n protected readFeatures(_features: Mesh.Features, _json: any): boolean {\r\n return false;\r\n }\r\n\r\n private readInstances(): InstancedGraphicParams | undefined {\r\n const count = JsonUtils.asInt(this._featureJson.INSTANCES_LENGTH, 0);\r\n if (count <= 0)\r\n return undefined;\r\n\r\n const json = this._featureJson;\r\n const binary = this._featureBinary;\r\n\r\n const batchIds = json.BATCH_ID ? new Int32Array(binary.buffer, binary.byteOffset + json.BATCH_ID.byteOffset, count) : undefined;\r\n const positions = json.POSITION ? new Float32Array(binary.buffer, binary.byteOffset + json.POSITION.byteOffset, count * 3) : undefined;\r\n const upNormals = json.NORMAL_UP ? new Float32Array(binary.buffer, binary.byteOffset + json.NORMAL_UP.byteOffset, count * 3) : undefined;\r\n const rightNormals = json.NORMAL_RIGHT ? new Float32Array(binary.buffer, binary.byteOffset + json.NORMAL_RIGHT.byteOffset, count * 3) : undefined;\r\n const scales = json.SCALE ? new Float32Array(binary.buffer, binary.byteOffset + json.SCALE.byteOffset, count) : undefined;\r\n const nonUniformScales = json.SCALE_NON_UNIFORM ? new Float32Array(binary.buffer, binary.byteOffset + json.SCALE_NON_UNIFORM.byteOffset, count * 3) : undefined;\r\n\r\n const matrix = Matrix3d.createIdentity();\r\n const position = Point3d.createZero();\r\n const upNormal = Vector3d.create(0, 0, 1);\r\n const rightNormal = Vector3d.create(1, 0, 0);\r\n const scale = Vector3d.create(1, 1, 1);\r\n\r\n const transformCenter = this._range.center;\r\n const transforms = new Float32Array(12 * count);\r\n for (let i = 0; i < count; i++) {\r\n const index = i * 3;\r\n if (positions)\r\n position.set(positions[index] - transformCenter.x, positions[index + 1] - transformCenter.y, positions[index + 2] - transformCenter.z);\r\n\r\n if (upNormals || rightNormals) {\r\n if (upNormals)\r\n upNormal.set(upNormals[index], upNormals[index + 1], upNormals[index + 2]);\r\n\r\n if (rightNormals)\r\n rightNormal.set(rightNormals[index], rightNormals[index + 1], rightNormals[index + 2]);\r\n\r\n if (scales)\r\n scale.x = scale.y = scale.z = scales[i];\r\n\r\n if (nonUniformScales) {\r\n scale.x *= nonUniformScales[index + 0];\r\n scale.y *= nonUniformScales[index + 1];\r\n scale.z *= nonUniformScales[index + 2];\r\n }\r\n\r\n Matrix3d.createRigidFromColumns(rightNormal, upNormal, AxisOrder.XYZ, matrix);\r\n if (scales || nonUniformScales)\r\n matrix.scaleColumnsInPlace(scale.x, scale.y, scale.z);\r\n\r\n setTransform(transforms, i, matrix, position);\r\n }\r\n }\r\n\r\n let featureIds;\r\n if (undefined !== batchIds) {\r\n featureIds = new Uint8Array(3 * batchIds.length);\r\n for (let i = 0, j = 0; i < batchIds.length; i++) {\r\n const batchId = batchIds[i];\r\n featureIds[j++] = batchId & 0x000000ff;\r\n featureIds[j++] = (batchId & 0x0000ff00) >> 8;\r\n featureIds[j++] = (batchId & 0x00ff0000) >> 16;\r\n }\r\n }\r\n const symbologyOverrides = undefined;\r\n\r\n return { count, transforms, symbologyOverrides, featureIds, transformCenter };\r\n }\r\n}\r\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"IModelTile.d.ts","sourceRoot":"","sources":["../../../src/tile/IModelTile.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,EAAwB,WAAW,EAAc,MAAM,qBAAqB,CAAC;AAEpF,OAAO,EACL,QAAQ,EAAyH,SAAS,EAC3I,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,EACwB,cAAc,EAAE,IAAI,EAAE,iBAAiB,EAAE,WAAW,EAAE,YAAY,EAAkB,UAAU,EAAE,WAAW,EACxI,kBAAkB,EACnB,MAAM,YAAY,CAAC;AAEpB;;GAEG;AACH,MAAM,WAAW,gBAAiB,SAAQ,UAAU;IAClD,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,gBAAgB;AAChB,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,GAAG,SAAS,GAAG,gBAAgB,CAS3G;AAED;;;GAGG;AACH,oBAAY,YAAY;IACtB,EAAE,IAAA;IACF,GAAG,IAAA;CACJ;AAED,gBAAgB;AAChB,MAAM,WAAW,iBAAkB,SAAQ,WAAW;IACpD,0FAA0F;IAC1F,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,qEAAqE;IACrE,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED;;GAEG;AACH,qBAAa,UAAW,SAAQ,IAAI;IAClC,OAAO,CAAC,eAAe,CAAC,CAAS;IACjC,OAAO,CAAC,kBAAkB,CAAC,CAAS;IACpC;;OAEG;IACI,cAAc,CAAC,EAAE,kBAAkB,CAAC;gBAExB,MAAM,EAAE,gBAAgB,EAAE,IAAI,EAAE,cAAc;IAYjE,IAAW,UAAU,IAAI,cAAc,CAAwC;IAC/E,IAAW,cAAc,IAAI,UAAU,EAAE,GAAG,SAAS,CAAsD;IAC3G,IAAW,iBAAiB,IAAI,MAAM,CAAyC;IAE/E,IAAW,cAAc,IAAI,MAAM,GAAG,SAAS,CAAiC;IAChF,IAAW,iBAAiB,YAAgD;IAC5E,IAAoB,WAAW,IAAI,MAAM,CAExC;IAED,IAAW,OAAO,IAAI,kBAAkB,CAEvC;IAEY,cAAc,IAAI,OAAO,CAAC,WAAW,CAAC,QAAQ,CAAC;IAI/C,WAAW,CAAC,IAAI,EAAE,WAAW,CAAC,YAAY,EAAE,MAAM,EAAE,YAAY,EAAE,UAAU,CAAC,EAAE,MAAM,OAAO,GAAG,OAAO,CAAC,iBAAiB,CAAC;IA8BtH,UAAU,CAAC,OAAO,EAAE,iBAAiB,GAAG,IAAI;IAoB5D,SAAS,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,IAAI,EAAE,KAAK,IAAI,EAAE,MAAM,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,GAAG,IAAI;IAkBlG,cAAuB,iBAAiB,IAAI,QAAQ,CAEnD;cAEkB,eAAe,CAAC,OAAO,EAAE,cAAc,EAAE,IAAI,EAAE,iBAAiB,GAAG,IAAI;IAgBnF,aAAa,CAAC,SAAS,EAAE,WAAW,GAAG,IAAI;IAc3C,WAAW,CAAC,QAAQ,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,GAAG,YAAY;CAkI3F"}
1
+ {"version":3,"file":"IModelTile.d.ts","sourceRoot":"","sources":["../../../src/tile/IModelTile.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,EAAwB,WAAW,EAAc,MAAM,qBAAqB,CAAC;AAEpF,OAAO,EACL,QAAQ,EAAyH,SAAS,EAC3I,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,EACwB,cAAc,EAAE,IAAI,EAAE,iBAAiB,EAAE,WAAW,EAAE,YAAY,EAAkB,UAAU,EAAE,WAAW,EACxI,kBAAkB,EACnB,MAAM,YAAY,CAAC;AAEpB;;GAEG;AACH,MAAM,WAAW,gBAAiB,SAAQ,UAAU;IAClD,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,gBAAgB;AAChB,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,GAAG,SAAS,GAAG,gBAAgB,CAS3G;AAED;;;GAGG;AACH,oBAAY,YAAY;IACtB,EAAE,IAAA;IACF,GAAG,IAAA;CACJ;AAED,gBAAgB;AAChB,MAAM,WAAW,iBAAkB,SAAQ,WAAW;IACpD,0FAA0F;IAC1F,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,qEAAqE;IACrE,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED;;GAEG;AACH,qBAAa,UAAW,SAAQ,IAAI;IAClC,OAAO,CAAC,eAAe,CAAC,CAAS;IACjC,OAAO,CAAC,kBAAkB,CAAC,CAAS;IACpC;;OAEG;IACI,cAAc,CAAC,EAAE,kBAAkB,CAAC;gBAExB,MAAM,EAAE,gBAAgB,EAAE,IAAI,EAAE,cAAc;IAYjE,IAAW,UAAU,IAAI,cAAc,CAAwC;IAC/E,IAAW,cAAc,IAAI,UAAU,EAAE,GAAG,SAAS,CAAsD;IAC3G,IAAW,iBAAiB,IAAI,MAAM,CAAyC;IAE/E,IAAW,cAAc,IAAI,MAAM,GAAG,SAAS,CAAiC;IAChF,IAAW,iBAAiB,YAAgD;IAC5E,IAAoB,WAAW,IAAI,MAAM,CAExC;IAED,IAAW,OAAO,IAAI,kBAAkB,CAEvC;IAEY,cAAc,IAAI,OAAO,CAAC,WAAW,CAAC,QAAQ,CAAC;IAI/C,WAAW,CAAC,IAAI,EAAE,WAAW,CAAC,YAAY,EAAE,MAAM,EAAE,YAAY,EAAE,UAAU,CAAC,EAAE,MAAM,OAAO,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAsCtH,UAAU,CAAC,OAAO,EAAE,iBAAiB,GAAG,IAAI;IAoB5D,SAAS,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,IAAI,EAAE,KAAK,IAAI,EAAE,MAAM,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,GAAG,IAAI;IAkBlG,cAAuB,iBAAiB,IAAI,QAAQ,CAEnD;cAEkB,eAAe,CAAC,OAAO,EAAE,cAAc,EAAE,IAAI,EAAE,iBAAiB,GAAG,IAAI;IAgBnF,aAAa,CAAC,SAAS,EAAE,WAAW,GAAG,IAAI;IAc3C,WAAW,CAAC,QAAQ,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,GAAG,YAAY;CAkI3F"}
@@ -35,10 +35,10 @@ export class IModelTile extends Tile {
35
35
  constructor(params, tree) {
36
36
  super(params, tree);
37
37
  this._sizeMultiplier = params.sizeMultiplier;
38
- if (!this.isLeaf && this.tree.is3d) { // ###TODO: Want to know specifically if tree is *spatial*.
38
+ if (!this.isLeaf && this.tree.is3d && !this.isReady) { // ###TODO: Want to know specifically if tree is *spatial*.
39
39
  // Do not sub-divide such that chord tolerance would be below specified minimum, if minimum defined.
40
40
  const minTolerance = IModelApp.tileAdmin.minimumSpatialTolerance;
41
- if (minTolerance > 0 && computeTileChordTolerance(this, this.tree.is3d) <= minTolerance)
41
+ if (minTolerance > 0 && computeTileChordTolerance(this, this.tree.is3d, this.iModelTree.tileScreenSize) <= minTolerance)
42
42
  this.setLeaf();
43
43
  }
44
44
  }
@@ -61,7 +61,7 @@ export class IModelTile extends Tile {
61
61
  if (undefined === isCanceled)
62
62
  isCanceled = () => !this.isLoading;
63
63
  assert(data instanceof Uint8Array);
64
- const streamBuffer = new ByteStream(data.buffer);
64
+ const streamBuffer = ByteStream.fromUint8Array(data);
65
65
  const position = streamBuffer.curPos;
66
66
  const format = streamBuffer.nextUint32;
67
67
  streamBuffer.curPos = position;
@@ -70,8 +70,15 @@ export class IModelTile extends Tile {
70
70
  if (format !== TileFormat.IModel)
71
71
  return content;
72
72
  const tree = this.iModelTree;
73
- const mult = this.hasSizeMultiplier ? this.sizeMultiplier : undefined;
74
- const reader = ImdlReader.create(streamBuffer, tree.iModel, tree.modelId, tree.is3d, system, tree.batchType, tree.hasEdges, isCanceled, mult, { tileId: this.contentId });
73
+ const sizeMultiplier = this.hasSizeMultiplier ? this.sizeMultiplier : undefined;
74
+ const { iModel, modelId, is3d, containsTransformNodes } = tree;
75
+ const reader = ImdlReader.create({
76
+ stream: streamBuffer,
77
+ type: tree.batchType,
78
+ loadEdges: tree.hasEdges,
79
+ options: { tileId: this.contentId },
80
+ iModel, modelId, is3d, system, isCanceled, sizeMultiplier, containsTransformNodes,
81
+ });
75
82
  if (undefined !== reader) {
76
83
  try {
77
84
  content = await reader.read();
@@ -89,7 +96,7 @@ export class IModelTile extends Tile {
89
96
  // this tile is too coarse for view based on its size in pixels.
90
97
  // That is different than an "undisplayable" tile (maximumSize=0) whose children should be loaded immediately.
91
98
  if (undefined !== content.graphic && 0 === this.maximumSize)
92
- this._maximumSize = 512;
99
+ this._maximumSize = this.iModelTree.tileScreenSize;
93
100
  const sizeMult = content.sizeMultiplier;
94
101
  if (undefined !== sizeMult && (undefined === this._sizeMultiplier || sizeMult > this._sizeMultiplier)) {
95
102
  this._sizeMultiplier = sizeMult;
@@ -122,7 +129,7 @@ export class IModelTile extends Tile {
122
129
  super.addRangeGraphic(builder, type);
123
130
  return;
124
131
  }
125
- const ranges = computeChildTileRanges(this, this.tree);
132
+ const ranges = computeChildTileRanges(this, this.iModelTree);
126
133
  for (const range of ranges) {
127
134
  const color = range.isEmpty ? ColorDef.blue : ColorDef.green;
128
135
  const pixels = !range.isEmpty ? LinePixels.HiddenLine : LinePixels.Solid;
@@ -1 +1 @@
1
- {"version":3,"file":"IModelTile.js","sourceRoot":"","sources":["../../../src/tile/IModelTile.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, BentleyError, BeTimePoint, ByteStream } from \"@itwin/core-bentley\";\r\nimport { Range3d } from \"@itwin/core-geometry\";\r\nimport {\r\n ColorDef, computeChildTileProps, computeChildTileRanges, computeTileChordTolerance, ElementAlignedBox3d, LinePixels, TileFormat, TileProps,\r\n} from \"@itwin/core-common\";\r\nimport { IModelApp } from \"../IModelApp\";\r\nimport { GraphicBuilder } from \"../render/GraphicBuilder\";\r\nimport { RenderSystem } from \"../render/RenderSystem\";\r\nimport {\r\n addRangeGraphic, ImdlReader, IModelTileTree, Tile, TileBoundingBoxes, TileContent, TileDrawArgs, TileLoadStatus, TileParams, TileRequest,\r\n TileRequestChannel, TileTreeLoadStatus, TileVisibility,\r\n} from \"./internal\";\r\n\r\n/** Parameters used to construct an [[IModelTile]].\r\n * @internal\r\n */\r\nexport interface IModelTileParams extends TileParams {\r\n sizeMultiplier?: number;\r\n}\r\n\r\n/** @internal */\r\nexport function iModelTileParamsFromJSON(props: TileProps, parent: IModelTile | undefined): IModelTileParams {\r\n const { contentId, maximumSize, isLeaf, sizeMultiplier } = props;\r\n const range = Range3d.fromJSON(props.range);\r\n\r\n let contentRange;\r\n if (undefined !== props.contentRange)\r\n contentRange = Range3d.fromJSON<ElementAlignedBox3d>(props.contentRange);\r\n\r\n return { contentId, range, maximumSize, isLeaf, parent, contentRange, sizeMultiplier };\r\n}\r\n\r\n/**\r\n * Indicates whether a parent tile should be drawn in place of a child tile.\r\n * @internal\r\n */\r\nexport enum SelectParent {\r\n No,\r\n Yes,\r\n}\r\n\r\n/** @internal */\r\nexport interface IModelTileContent extends TileContent {\r\n /** If this tile was produced by refinement, the multiplier applied to its screen size. */\r\n sizeMultiplier?: number;\r\n /** A bitfield describing empty sub-volumes of this tile's volume. */\r\n emptySubRangeMask?: number;\r\n}\r\n\r\n/** A tile belonging to an [[IModelTileTree].\r\n * @internal\r\n */\r\nexport class IModelTile extends Tile {\r\n private _sizeMultiplier?: number;\r\n private _emptySubRangeMask?: number;\r\n /** If an initial attempt to obtain this tile's content (e.g., from cloud storage cache) failed,\r\n * the next channel to try.\r\n */\r\n public requestChannel?: TileRequestChannel;\r\n\r\n public constructor(params: IModelTileParams, tree: IModelTileTree) {\r\n super(params, tree);\r\n this._sizeMultiplier = params.sizeMultiplier;\r\n\r\n if (!this.isLeaf && this.tree.is3d) { // ###TODO: Want to know specifically if tree is *spatial*.\r\n // Do not sub-divide such that chord tolerance would be below specified minimum, if minimum defined.\r\n const minTolerance = IModelApp.tileAdmin.minimumSpatialTolerance;\r\n if (minTolerance > 0 && computeTileChordTolerance(this, this.tree.is3d) <= minTolerance)\r\n this.setLeaf();\r\n }\r\n }\r\n\r\n public get iModelTree(): IModelTileTree { return this.tree as IModelTileTree; }\r\n public get iModelChildren(): IModelTile[] | undefined { return this.children as IModelTile[] | undefined; }\r\n public get emptySubRangeMask(): number { return this._emptySubRangeMask ?? 0; }\r\n\r\n public get sizeMultiplier(): number | undefined { return this._sizeMultiplier; }\r\n public get hasSizeMultiplier() { return undefined !== this.sizeMultiplier; }\r\n public override get maximumSize(): number {\r\n return super.maximumSize * (this.sizeMultiplier ?? 1.0);\r\n }\r\n\r\n public get channel(): TileRequestChannel {\r\n return IModelApp.tileAdmin.channels.getIModelTileChannel(this);\r\n }\r\n\r\n public async requestContent(): Promise<TileRequest.Response> {\r\n return IModelApp.tileAdmin.generateTileContent(this);\r\n }\r\n\r\n public async readContent(data: TileRequest.ResponseData, system: RenderSystem, isCanceled?: () => boolean): Promise<IModelTileContent> {\r\n if (undefined === isCanceled)\r\n isCanceled = () => !this.isLoading;\r\n\r\n assert(data instanceof Uint8Array);\r\n const streamBuffer = new ByteStream(data.buffer);\r\n\r\n const position = streamBuffer.curPos;\r\n const format = streamBuffer.nextUint32;\r\n streamBuffer.curPos = position;\r\n\r\n let content: IModelTileContent = { isLeaf: true };\r\n assert(TileFormat.IModel === format);\r\n if (format !== TileFormat.IModel)\r\n return content;\r\n\r\n const tree = this.iModelTree;\r\n const mult = this.hasSizeMultiplier ? this.sizeMultiplier : undefined;\r\n const reader = ImdlReader.create(streamBuffer, tree.iModel, tree.modelId, tree.is3d, system, tree.batchType, tree.hasEdges, isCanceled, mult, { tileId: this.contentId });\r\n if (undefined !== reader) {\r\n try {\r\n content = await reader.read();\r\n } catch {\r\n //\r\n }\r\n }\r\n\r\n return content;\r\n }\r\n\r\n public override setContent(content: IModelTileContent): void {\r\n super.setContent(content);\r\n\r\n this._emptySubRangeMask = content.emptySubRangeMask;\r\n\r\n // NB: If this tile has no graphics, it may or may not have children - but we don't want to load the children until\r\n // this tile is too coarse for view based on its size in pixels.\r\n // That is different than an \"undisplayable\" tile (maximumSize=0) whose children should be loaded immediately.\r\n if (undefined !== content.graphic && 0 === this.maximumSize)\r\n this._maximumSize = 512;\r\n\r\n const sizeMult = content.sizeMultiplier;\r\n if (undefined !== sizeMult && (undefined === this._sizeMultiplier || sizeMult > this._sizeMultiplier)) {\r\n this._sizeMultiplier = sizeMult;\r\n this._contentId = this.iModelTree.contentIdProvider.idFromParentAndMultiplier(this.contentId, sizeMult);\r\n if (undefined !== this.children && this.children.length > 1)\r\n this.disposeChildren();\r\n }\r\n }\r\n\r\n protected _loadChildren(resolve: (children: Tile[]) => void, reject: (error: Error) => void): void {\r\n try {\r\n const tree = this.iModelTree;\r\n const kids = computeChildTileProps(this, tree.contentIdProvider, tree);\r\n IModelApp.tileAdmin.onTilesElided(kids.numEmpty);\r\n\r\n const children: IModelTile[] = [];\r\n for (const props of kids.children) {\r\n const child = new IModelTile(iModelTileParamsFromJSON(props, this), tree);\r\n children.push(child);\r\n }\r\n\r\n resolve(children);\r\n } catch (err) {\r\n reject(err instanceof Error ? err : new Error(BentleyError.getErrorMessage(err)));\r\n }\r\n }\r\n\r\n protected override get rangeGraphicColor(): ColorDef {\r\n return this.hasSizeMultiplier ? ColorDef.red : super.rangeGraphicColor;\r\n }\r\n\r\n protected override addRangeGraphic(builder: GraphicBuilder, type: TileBoundingBoxes): void {\r\n if (TileBoundingBoxes.ChildVolumes !== type) {\r\n super.addRangeGraphic(builder, type);\r\n return;\r\n }\r\n\r\n const ranges = computeChildTileRanges(this, this.tree);\r\n for (const range of ranges) {\r\n const color = range.isEmpty ? ColorDef.blue : ColorDef.green;\r\n const pixels = !range.isEmpty ? LinePixels.HiddenLine : LinePixels.Solid;\r\n const width = !range.isEmpty ? 2 : 1;\r\n builder.setSymbology(color, color, width, pixels);\r\n addRangeGraphic(builder, range.range, this.tree.is2d);\r\n }\r\n }\r\n\r\n public pruneChildren(olderThan: BeTimePoint): void {\r\n // A tile's usage marker indicates its the most recent time its *children* were used.\r\n if (this.usageMarker.isExpired(olderThan)) {\r\n this.disposeChildren();\r\n return;\r\n }\r\n\r\n // this node has been used recently. Keep it, but potentially unload its grandchildren.\r\n const children = this.iModelChildren;\r\n if (undefined !== children)\r\n for (const child of children)\r\n child.pruneChildren(olderThan);\r\n }\r\n\r\n public selectTiles(selected: Tile[], args: TileDrawArgs, numSkipped: number): SelectParent {\r\n let vis = this.computeVisibility(args);\r\n if (TileVisibility.OutsideFrustum === vis)\r\n return SelectParent.No;\r\n\r\n const maxDepth = this.iModelTree.debugMaxDepth;\r\n if (undefined !== maxDepth && this.depth >= maxDepth)\r\n vis = TileVisibility.Visible;\r\n\r\n if (TileVisibility.Visible === vis) {\r\n // This tile is of appropriate resolution to draw. If need loading or refinement, enqueue.\r\n if (!this.isReady)\r\n args.insertMissing(this);\r\n\r\n if (this.hasGraphics) {\r\n // It can be drawn - select it\r\n args.markReady(this);\r\n selected.push(this);\r\n } else if (!this.isReady) {\r\n // It can't be drawn. Try to draw children in its place; otherwise draw the parent.\r\n // Do not load/request the children for this purpose.\r\n const initialSize = selected.length;\r\n const kids = this.iModelChildren;\r\n if (undefined === kids)\r\n return SelectParent.Yes;\r\n\r\n // Find any descendant to draw, until we exceed max initial tiles to skip.\r\n if (this.depth < this.iModelTree.maxInitialTilesToSkip) {\r\n for (const kid of kids) {\r\n if (SelectParent.Yes === kid.selectTiles(selected, args, numSkipped)) {\r\n selected.length = initialSize;\r\n return SelectParent.Yes;\r\n }\r\n\r\n return SelectParent.No;\r\n }\r\n }\r\n\r\n // If all visible direct children can be drawn, draw them.\r\n for (const kid of kids) {\r\n if (TileVisibility.OutsideFrustum !== kid.computeVisibility(args)) {\r\n if (!kid.hasGraphics) {\r\n selected.length = initialSize;\r\n return SelectParent.Yes;\r\n } else {\r\n selected.push(kid);\r\n }\r\n }\r\n }\r\n\r\n args.markUsed(this);\r\n }\r\n\r\n // We're drawing either this tile, or its direct children.\r\n return SelectParent.No;\r\n }\r\n\r\n // This tile is too coarse to draw. Try to draw something more appropriate.\r\n // If it is not ready to draw, we may want to skip loading in favor of loading its descendants.\r\n // If we previously loaded and later unloaded content for this tile to free memory, don't force it to reload its content - proceed to children.\r\n let canSkipThisTile = (this._hadGraphics && !this.hasGraphics) || this.depth < this.iModelTree.maxInitialTilesToSkip;\r\n if (canSkipThisTile) {\r\n numSkipped = 1;\r\n } else {\r\n canSkipThisTile = this.isReady || this.isParentDisplayable || this.depth < this.iModelTree.maxInitialTilesToSkip;\r\n if (canSkipThisTile && this.isDisplayable) { // skipping an undisplayable tile doesn't count toward the maximum\r\n // Some tiles do not sub-divide - they only facet the same geometry to a higher resolution. We can skip directly to the correct resolution.\r\n const isNotReady = !this.isReady && !this.hasGraphics && !this.hasSizeMultiplier;\r\n if (isNotReady) {\r\n if (numSkipped >= this.iModelTree.maxTilesToSkip)\r\n canSkipThisTile = false;\r\n else\r\n numSkipped += 1;\r\n }\r\n }\r\n }\r\n\r\n const childrenLoadStatus = this.loadChildren(); // NB: asynchronous\r\n const children = canSkipThisTile ? this.iModelChildren : undefined;\r\n if (canSkipThisTile && TileTreeLoadStatus.Loading === childrenLoadStatus) {\r\n args.markChildrenLoading();\r\n args.markUsed(this);\r\n }\r\n\r\n if (undefined !== children) {\r\n // If we are the root tile and we are not displayable, then we want to draw *any* currently available children in our place, or else we would draw nothing.\r\n // Otherwise, if we want to draw children in our place, we should wait for *all* of them to load, or else we would show missing chunks where not-yet-loaded children belong.\r\n const isUndisplayableRootTile = this.isUndisplayableRootTile;\r\n args.markUsed(this);\r\n let drawChildren = true;\r\n const initialSize = selected.length;\r\n for (const child of children) {\r\n // NB: We must continue iterating children so that they can be requested if missing.\r\n if (SelectParent.Yes === child.selectTiles(selected, args, numSkipped)) {\r\n if (child.loadStatus === TileLoadStatus.NotFound) {\r\n // At least one child we want to draw failed to load. e.g., we reached max depth of map tile tree. Draw parent instead.\r\n drawChildren = canSkipThisTile = false;\r\n } else {\r\n // At least one child we want to draw is not yet loaded. Wait for it to load before drawing it and its siblings, unless we have nothing to draw in their place.\r\n drawChildren = isUndisplayableRootTile;\r\n }\r\n }\r\n }\r\n\r\n if (drawChildren)\r\n return SelectParent.No;\r\n\r\n // Some types of tiles (like maps) allow the ready children to be drawn on top of the parent while other children are not yet loaded.\r\n if (args.parentsAndChildrenExclusive)\r\n selected.length = initialSize;\r\n }\r\n\r\n if (this.isReady) {\r\n if (this.hasGraphics) {\r\n selected.push(this);\r\n if (!canSkipThisTile) {\r\n // This tile is too coarse, but we require loading it before we can start loading higher-res children.\r\n args.markReady(this);\r\n }\r\n }\r\n\r\n return SelectParent.No;\r\n }\r\n\r\n // This tile is not ready to be drawn. Request it *only* if we cannot skip it.\r\n if (!canSkipThisTile)\r\n args.insertMissing(this);\r\n\r\n return this.isParentDisplayable ? SelectParent.Yes : SelectParent.No;\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"IModelTile.js","sourceRoot":"","sources":["../../../src/tile/IModelTile.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, BentleyError, BeTimePoint, ByteStream } from \"@itwin/core-bentley\";\r\nimport { Range3d } from \"@itwin/core-geometry\";\r\nimport {\r\n ColorDef, computeChildTileProps, computeChildTileRanges, computeTileChordTolerance, ElementAlignedBox3d, LinePixels, TileFormat, TileProps,\r\n} from \"@itwin/core-common\";\r\nimport { IModelApp } from \"../IModelApp\";\r\nimport { GraphicBuilder } from \"../render/GraphicBuilder\";\r\nimport { RenderSystem } from \"../render/RenderSystem\";\r\nimport {\r\n addRangeGraphic, ImdlReader, IModelTileTree, Tile, TileBoundingBoxes, TileContent, TileDrawArgs, TileLoadStatus, TileParams, TileRequest,\r\n TileRequestChannel, TileTreeLoadStatus, TileVisibility,\r\n} from \"./internal\";\r\n\r\n/** Parameters used to construct an [[IModelTile]].\r\n * @internal\r\n */\r\nexport interface IModelTileParams extends TileParams {\r\n sizeMultiplier?: number;\r\n}\r\n\r\n/** @internal */\r\nexport function iModelTileParamsFromJSON(props: TileProps, parent: IModelTile | undefined): IModelTileParams {\r\n const { contentId, maximumSize, isLeaf, sizeMultiplier } = props;\r\n const range = Range3d.fromJSON(props.range);\r\n\r\n let contentRange;\r\n if (undefined !== props.contentRange)\r\n contentRange = Range3d.fromJSON<ElementAlignedBox3d>(props.contentRange);\r\n\r\n return { contentId, range, maximumSize, isLeaf, parent, contentRange, sizeMultiplier };\r\n}\r\n\r\n/**\r\n * Indicates whether a parent tile should be drawn in place of a child tile.\r\n * @internal\r\n */\r\nexport enum SelectParent {\r\n No,\r\n Yes,\r\n}\r\n\r\n/** @internal */\r\nexport interface IModelTileContent extends TileContent {\r\n /** If this tile was produced by refinement, the multiplier applied to its screen size. */\r\n sizeMultiplier?: number;\r\n /** A bitfield describing empty sub-volumes of this tile's volume. */\r\n emptySubRangeMask?: number;\r\n}\r\n\r\n/** A tile belonging to an [[IModelTileTree].\r\n * @internal\r\n */\r\nexport class IModelTile extends Tile {\r\n private _sizeMultiplier?: number;\r\n private _emptySubRangeMask?: number;\r\n /** If an initial attempt to obtain this tile's content (e.g., from cloud storage cache) failed,\r\n * the next channel to try.\r\n */\r\n public requestChannel?: TileRequestChannel;\r\n\r\n public constructor(params: IModelTileParams, tree: IModelTileTree) {\r\n super(params, tree);\r\n this._sizeMultiplier = params.sizeMultiplier;\r\n\r\n if (!this.isLeaf && this.tree.is3d && !this.isReady) { // ###TODO: Want to know specifically if tree is *spatial*.\r\n // Do not sub-divide such that chord tolerance would be below specified minimum, if minimum defined.\r\n const minTolerance = IModelApp.tileAdmin.minimumSpatialTolerance;\r\n if (minTolerance > 0 && computeTileChordTolerance(this, this.tree.is3d, this.iModelTree.tileScreenSize) <= minTolerance)\r\n this.setLeaf();\r\n }\r\n }\r\n\r\n public get iModelTree(): IModelTileTree { return this.tree as IModelTileTree; }\r\n public get iModelChildren(): IModelTile[] | undefined { return this.children as IModelTile[] | undefined; }\r\n public get emptySubRangeMask(): number { return this._emptySubRangeMask ?? 0; }\r\n\r\n public get sizeMultiplier(): number | undefined { return this._sizeMultiplier; }\r\n public get hasSizeMultiplier() { return undefined !== this.sizeMultiplier; }\r\n public override get maximumSize(): number {\r\n return super.maximumSize * (this.sizeMultiplier ?? 1.0);\r\n }\r\n\r\n public get channel(): TileRequestChannel {\r\n return IModelApp.tileAdmin.channels.getIModelTileChannel(this);\r\n }\r\n\r\n public async requestContent(): Promise<TileRequest.Response> {\r\n return IModelApp.tileAdmin.generateTileContent(this);\r\n }\r\n\r\n public async readContent(data: TileRequest.ResponseData, system: RenderSystem, isCanceled?: () => boolean): Promise<IModelTileContent> {\r\n if (undefined === isCanceled)\r\n isCanceled = () => !this.isLoading;\r\n\r\n assert(data instanceof Uint8Array);\r\n const streamBuffer = ByteStream.fromUint8Array(data);\r\n\r\n const position = streamBuffer.curPos;\r\n const format = streamBuffer.nextUint32;\r\n streamBuffer.curPos = position;\r\n\r\n let content: IModelTileContent = { isLeaf: true };\r\n assert(TileFormat.IModel === format);\r\n if (format !== TileFormat.IModel)\r\n return content;\r\n\r\n const tree = this.iModelTree;\r\n const sizeMultiplier = this.hasSizeMultiplier ? this.sizeMultiplier : undefined;\r\n const { iModel, modelId, is3d, containsTransformNodes } = tree;\r\n const reader = ImdlReader.create({\r\n stream: streamBuffer,\r\n type: tree.batchType,\r\n loadEdges: tree.hasEdges,\r\n options: { tileId: this.contentId },\r\n iModel, modelId, is3d, system, isCanceled, sizeMultiplier, containsTransformNodes,\r\n });\r\n\r\n if (undefined !== reader) {\r\n try {\r\n content = await reader.read();\r\n } catch {\r\n //\r\n }\r\n }\r\n\r\n return content;\r\n }\r\n\r\n public override setContent(content: IModelTileContent): void {\r\n super.setContent(content);\r\n\r\n this._emptySubRangeMask = content.emptySubRangeMask;\r\n\r\n // NB: If this tile has no graphics, it may or may not have children - but we don't want to load the children until\r\n // this tile is too coarse for view based on its size in pixels.\r\n // That is different than an \"undisplayable\" tile (maximumSize=0) whose children should be loaded immediately.\r\n if (undefined !== content.graphic && 0 === this.maximumSize)\r\n this._maximumSize = this.iModelTree.tileScreenSize;\r\n\r\n const sizeMult = content.sizeMultiplier;\r\n if (undefined !== sizeMult && (undefined === this._sizeMultiplier || sizeMult > this._sizeMultiplier)) {\r\n this._sizeMultiplier = sizeMult;\r\n this._contentId = this.iModelTree.contentIdProvider.idFromParentAndMultiplier(this.contentId, sizeMult);\r\n if (undefined !== this.children && this.children.length > 1)\r\n this.disposeChildren();\r\n }\r\n }\r\n\r\n protected _loadChildren(resolve: (children: Tile[]) => void, reject: (error: Error) => void): void {\r\n try {\r\n const tree = this.iModelTree;\r\n const kids = computeChildTileProps(this, tree.contentIdProvider, tree);\r\n IModelApp.tileAdmin.onTilesElided(kids.numEmpty);\r\n\r\n const children: IModelTile[] = [];\r\n for (const props of kids.children) {\r\n const child = new IModelTile(iModelTileParamsFromJSON(props, this), tree);\r\n children.push(child);\r\n }\r\n\r\n resolve(children);\r\n } catch (err) {\r\n reject(err instanceof Error ? err : new Error(BentleyError.getErrorMessage(err)));\r\n }\r\n }\r\n\r\n protected override get rangeGraphicColor(): ColorDef {\r\n return this.hasSizeMultiplier ? ColorDef.red : super.rangeGraphicColor;\r\n }\r\n\r\n protected override addRangeGraphic(builder: GraphicBuilder, type: TileBoundingBoxes): void {\r\n if (TileBoundingBoxes.ChildVolumes !== type) {\r\n super.addRangeGraphic(builder, type);\r\n return;\r\n }\r\n\r\n const ranges = computeChildTileRanges(this, this.iModelTree);\r\n for (const range of ranges) {\r\n const color = range.isEmpty ? ColorDef.blue : ColorDef.green;\r\n const pixels = !range.isEmpty ? LinePixels.HiddenLine : LinePixels.Solid;\r\n const width = !range.isEmpty ? 2 : 1;\r\n builder.setSymbology(color, color, width, pixels);\r\n addRangeGraphic(builder, range.range, this.tree.is2d);\r\n }\r\n }\r\n\r\n public pruneChildren(olderThan: BeTimePoint): void {\r\n // A tile's usage marker indicates its the most recent time its *children* were used.\r\n if (this.usageMarker.isExpired(olderThan)) {\r\n this.disposeChildren();\r\n return;\r\n }\r\n\r\n // this node has been used recently. Keep it, but potentially unload its grandchildren.\r\n const children = this.iModelChildren;\r\n if (undefined !== children)\r\n for (const child of children)\r\n child.pruneChildren(olderThan);\r\n }\r\n\r\n public selectTiles(selected: Tile[], args: TileDrawArgs, numSkipped: number): SelectParent {\r\n let vis = this.computeVisibility(args);\r\n if (TileVisibility.OutsideFrustum === vis)\r\n return SelectParent.No;\r\n\r\n const maxDepth = this.iModelTree.debugMaxDepth;\r\n if (undefined !== maxDepth && this.depth >= maxDepth)\r\n vis = TileVisibility.Visible;\r\n\r\n if (TileVisibility.Visible === vis) {\r\n // This tile is of appropriate resolution to draw. If need loading or refinement, enqueue.\r\n if (!this.isReady)\r\n args.insertMissing(this);\r\n\r\n if (this.hasGraphics) {\r\n // It can be drawn - select it\r\n args.markReady(this);\r\n selected.push(this);\r\n } else if (!this.isReady) {\r\n // It can't be drawn. Try to draw children in its place; otherwise draw the parent.\r\n // Do not load/request the children for this purpose.\r\n const initialSize = selected.length;\r\n const kids = this.iModelChildren;\r\n if (undefined === kids)\r\n return SelectParent.Yes;\r\n\r\n // Find any descendant to draw, until we exceed max initial tiles to skip.\r\n if (this.depth < this.iModelTree.maxInitialTilesToSkip) {\r\n for (const kid of kids) {\r\n if (SelectParent.Yes === kid.selectTiles(selected, args, numSkipped)) {\r\n selected.length = initialSize;\r\n return SelectParent.Yes;\r\n }\r\n\r\n return SelectParent.No;\r\n }\r\n }\r\n\r\n // If all visible direct children can be drawn, draw them.\r\n for (const kid of kids) {\r\n if (TileVisibility.OutsideFrustum !== kid.computeVisibility(args)) {\r\n if (!kid.hasGraphics) {\r\n selected.length = initialSize;\r\n return SelectParent.Yes;\r\n } else {\r\n selected.push(kid);\r\n }\r\n }\r\n }\r\n\r\n args.markUsed(this);\r\n }\r\n\r\n // We're drawing either this tile, or its direct children.\r\n return SelectParent.No;\r\n }\r\n\r\n // This tile is too coarse to draw. Try to draw something more appropriate.\r\n // If it is not ready to draw, we may want to skip loading in favor of loading its descendants.\r\n // If we previously loaded and later unloaded content for this tile to free memory, don't force it to reload its content - proceed to children.\r\n let canSkipThisTile = (this._hadGraphics && !this.hasGraphics) || this.depth < this.iModelTree.maxInitialTilesToSkip;\r\n if (canSkipThisTile) {\r\n numSkipped = 1;\r\n } else {\r\n canSkipThisTile = this.isReady || this.isParentDisplayable || this.depth < this.iModelTree.maxInitialTilesToSkip;\r\n if (canSkipThisTile && this.isDisplayable) { // skipping an undisplayable tile doesn't count toward the maximum\r\n // Some tiles do not sub-divide - they only facet the same geometry to a higher resolution. We can skip directly to the correct resolution.\r\n const isNotReady = !this.isReady && !this.hasGraphics && !this.hasSizeMultiplier;\r\n if (isNotReady) {\r\n if (numSkipped >= this.iModelTree.maxTilesToSkip)\r\n canSkipThisTile = false;\r\n else\r\n numSkipped += 1;\r\n }\r\n }\r\n }\r\n\r\n const childrenLoadStatus = this.loadChildren(); // NB: asynchronous\r\n const children = canSkipThisTile ? this.iModelChildren : undefined;\r\n if (canSkipThisTile && TileTreeLoadStatus.Loading === childrenLoadStatus) {\r\n args.markChildrenLoading();\r\n args.markUsed(this);\r\n }\r\n\r\n if (undefined !== children) {\r\n // If we are the root tile and we are not displayable, then we want to draw *any* currently available children in our place, or else we would draw nothing.\r\n // Otherwise, if we want to draw children in our place, we should wait for *all* of them to load, or else we would show missing chunks where not-yet-loaded children belong.\r\n const isUndisplayableRootTile = this.isUndisplayableRootTile;\r\n args.markUsed(this);\r\n let drawChildren = true;\r\n const initialSize = selected.length;\r\n for (const child of children) {\r\n // NB: We must continue iterating children so that they can be requested if missing.\r\n if (SelectParent.Yes === child.selectTiles(selected, args, numSkipped)) {\r\n if (child.loadStatus === TileLoadStatus.NotFound) {\r\n // At least one child we want to draw failed to load. e.g., we reached max depth of map tile tree. Draw parent instead.\r\n drawChildren = canSkipThisTile = false;\r\n } else {\r\n // At least one child we want to draw is not yet loaded. Wait for it to load before drawing it and its siblings, unless we have nothing to draw in their place.\r\n drawChildren = isUndisplayableRootTile;\r\n }\r\n }\r\n }\r\n\r\n if (drawChildren)\r\n return SelectParent.No;\r\n\r\n // Some types of tiles (like maps) allow the ready children to be drawn on top of the parent while other children are not yet loaded.\r\n if (args.parentsAndChildrenExclusive)\r\n selected.length = initialSize;\r\n }\r\n\r\n if (this.isReady) {\r\n if (this.hasGraphics) {\r\n selected.push(this);\r\n if (!canSkipThisTile) {\r\n // This tile is too coarse, but we require loading it before we can start loading higher-res children.\r\n args.markReady(this);\r\n }\r\n }\r\n\r\n return SelectParent.No;\r\n }\r\n\r\n // This tile is not ready to be drawn. Request it *only* if we cannot skip it.\r\n if (!canSkipThisTile)\r\n args.insertMissing(this);\r\n\r\n return this.isParentDisplayable ? SelectParent.Yes : SelectParent.No;\r\n }\r\n}\r\n"]}
@@ -2,6 +2,7 @@
2
2
  * @module Tiles
3
3
  */
4
4
  import { GuidString, Id64Array, Id64String } from "@itwin/core-bentley";
5
+ import { Range3d } from "@itwin/core-geometry";
5
6
  import { BatchType, ContentIdProvider, IModelTileTreeId, IModelTileTreeProps, TileProps } from "@itwin/core-common";
6
7
  import { IModelConnection } from "../IModelConnection";
7
8
  import { IModelTile, Tile, TileDrawArgs, TileLoadPriority, TileTree, TileTreeParams } from "./internal";
@@ -21,7 +22,9 @@ export interface IModelTileTreeParams extends TileTreeParams {
21
22
  geometryGuid?: GuidString;
22
23
  maxInitialTilesToSkip?: number;
23
24
  formatVersion?: number;
25
+ tileScreenSize: number;
24
26
  options: IModelTileTreeOptions;
27
+ transformNodeRanges?: Map<number, Range3d>;
25
28
  }
26
29
  /** @internal */
27
30
  export declare function iModelTileTreeParamsFromJSON(props: IModelTileTreeProps, iModel: IModelConnection, modelId: Id64String, options: IModelTileTreeOptions): IModelTileTreeParams;
@@ -29,6 +32,7 @@ export declare function iModelTileTreeParamsFromJSON(props: IModelTileTreeProps,
29
32
  * @internal
30
33
  */
31
34
  export declare type RootIModelTile = Tile & {
35
+ tileScreenSize: number;
32
36
  updateDynamicRange: (childTile: Tile) => void;
33
37
  };
34
38
  /** A TileTree whose contents are derived from geometry stored in a Model in an IModelDb.
@@ -37,12 +41,14 @@ export declare type RootIModelTile = Tile & {
37
41
  export declare class IModelTileTree extends TileTree {
38
42
  private readonly _rootTile;
39
43
  private readonly _options;
44
+ private readonly _transformNodeRanges?;
40
45
  readonly contentIdQualifier?: string;
41
46
  readonly geometryGuid?: string;
42
47
  readonly maxTilesToSkip: number;
43
48
  readonly maxInitialTilesToSkip: number;
44
49
  readonly contentIdProvider: ContentIdProvider;
45
50
  readonly stringifiedSectionClip?: string;
51
+ readonly tileScreenSize: number;
46
52
  /** Strictly for debugging/testing - forces tile selection to halt at the specified depth. */
47
53
  debugMaxDepth?: number;
48
54
  /** A little hacky...we must not override selectTiles(), but draw() needs to distinguish between static and dynamic tiles.
@@ -68,5 +74,7 @@ export declare class IModelTileTree extends TileTree {
68
74
  get tileState(): "static" | "dynamic" | "interactive" | "disposed";
69
75
  /** Exposed strictly for tests. */
70
76
  get hiddenElements(): Id64Array;
77
+ getTransformNodeRange(nodeId: number): Range3d | undefined;
78
+ get containsTransformNodes(): boolean;
71
79
  }
72
80
  //# sourceMappingURL=IModelTileTree.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"IModelTileTree.d.ts","sourceRoot":"","sources":["../../../src/tile/IModelTileTree.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,EAAuB,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAE7F,OAAO,EACL,SAAS,EAAE,iBAAiB,EAC5B,gBAAgB,EAAE,mBAAmB,EAAwB,SAAS,EACvE,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAIvD,OAAO,EACc,UAAU,EAA8C,IAAI,EAAe,YAAY,EAAE,gBAAgB,EACxG,QAAQ,EAAE,cAAc,EAC7C,MAAM,YAAY,CAAC;AAEpB,gBAAgB;AAChB,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,eAAe,EAAE,OAAO,CAAC;IAClC,QAAQ,CAAC,aAAa,EAAE,OAAO,CAAC;IAChC,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC;IAC9B,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;CACxB;AAKD;;GAEG;AACH,MAAM,WAAW,oBAAqB,SAAQ,cAAc;IAC1D,QAAQ,EAAE,SAAS,CAAC;IACpB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,YAAY,CAAC,EAAE,UAAU,CAAC;IAC1B,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,OAAO,EAAE,qBAAqB,CAAC;CAChC;AAED,gBAAgB;AAChB,wBAAgB,4BAA4B,CAAC,KAAK,EAAE,mBAAmB,EAAE,MAAM,EAAE,gBAAgB,EAAE,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,qBAAqB,GAAG,oBAAoB,CAU5K;AAyFD;;GAEG;AACH,oBAAY,cAAc,GAAG,IAAI,GAAG;IAAE,kBAAkB,EAAE,CAAC,SAAS,EAAE,IAAI,KAAK,IAAI,CAAA;CAAE,CAAC;AA6JtF;;GAEG;AACH,qBAAa,cAAe,SAAQ,QAAQ;IAC1C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAW;IACrC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAwB;IACjD,SAAgB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5C,SAAgB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtC,SAAgB,cAAc,EAAE,MAAM,CAAC;IACvC,SAAgB,qBAAqB,EAAE,MAAM,CAAC;IAC9C,SAAgB,iBAAiB,EAAE,iBAAiB,CAAC;IACrD,SAAgB,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChD,6FAA6F;IACtF,aAAa,CAAC,EAAE,MAAM,CAAC;IAC9B;;;OAGG;IACH,OAAO,CAAC,uBAAuB,CAAK;gBAEjB,MAAM,EAAE,oBAAoB,EAAE,MAAM,EAAE,gBAAgB;IAmBzE,IAAW,QAAQ,WAAiB;IACpC,IAAW,QAAQ,IAAI,IAAI,CAA2B;IACtD,iCAAiC;IACjC,IAAW,YAAY,IAAI,UAAU,CAAwC;IAC7E,IAAW,IAAI,YAAiC;IAChD,IAAoB,kBAAkB,YAAoB;IAC1D,IAAW,iBAAiB,OAAgC;IAE5D,IAAW,SAAS,IAAI,SAAS,CAAoC;IACrE,IAAW,QAAQ,IAAI,OAAO,CAAwC;IAEtE,IAAoB,YAAY,IAAI,gBAAgB,CAGnD;IAED,SAAS,CAAC,YAAY,CAAC,IAAI,EAAE,YAAY,GAAG,IAAI,EAAE;IAY3C,IAAI,CAAC,IAAI,EAAE,YAAY,GAAG,IAAI;IAK9B,KAAK,IAAI,IAAI;IAKpB,kCAAkC;IAClC,IAAW,SAAS,IAAI,QAAQ,GAAG,SAAS,GAAG,aAAa,GAAG,UAAU,CAExE;IAED,kCAAkC;IAClC,IAAW,cAAc,IAAI,SAAS,CAGrC;CACF"}
1
+ {"version":3,"file":"IModelTileTree.d.ts","sourceRoot":"","sources":["../../../src/tile/IModelTileTree.ts"],"names":[],"mappings":"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"}
@@ -16,13 +16,36 @@ import { DynamicIModelTile, IModelTile, iModelTileParamsFromJSON, Tile, TileLoad
16
16
  const viewFlagOverrides = {};
17
17
  /** @internal */
18
18
  export function iModelTileTreeParamsFromJSON(props, iModel, modelId, options) {
19
+ var _a;
19
20
  const location = Transform.fromJSON(props.location);
20
21
  const { formatVersion, id, rootTile, contentIdQualifier, maxInitialTilesToSkip, geometryGuid } = props;
22
+ const tileScreenSize = (_a = props.tileScreenSize) !== null && _a !== void 0 ? _a : 512;
21
23
  let contentRange;
22
24
  if (undefined !== props.contentRange)
23
25
  contentRange = Range3d.fromJSON(props.contentRange);
26
+ let transformNodeRanges;
27
+ if (props.transformNodeRanges) {
28
+ transformNodeRanges = new Map();
29
+ for (const entry of props.transformNodeRanges)
30
+ transformNodeRanges.set(entry.id, Range3d.fromJSON(entry));
31
+ }
24
32
  const priority = BatchType.Primary === options.batchType ? TileLoadPriority.Primary : TileLoadPriority.Classifier;
25
- return { formatVersion, id, rootTile, iModel, location, modelId, contentRange, geometryGuid, contentIdQualifier, maxInitialTilesToSkip, priority, options };
33
+ return {
34
+ formatVersion,
35
+ id,
36
+ rootTile,
37
+ iModel,
38
+ location,
39
+ modelId,
40
+ contentRange,
41
+ geometryGuid,
42
+ contentIdQualifier,
43
+ maxInitialTilesToSkip,
44
+ priority,
45
+ options,
46
+ tileScreenSize,
47
+ transformNodeRanges,
48
+ };
26
49
  }
27
50
  function findElementChangesForModel(changes, modelId) {
28
51
  for (const change of changes)
@@ -201,6 +224,9 @@ class RootTile extends Tile {
201
224
  if (this._staticTreeContentRange && this.tree.contentRange)
202
225
  this._staticTreeContentRange.clone(this.tree.contentRange);
203
226
  }
227
+ get tileScreenSize() {
228
+ return this.staticBranch.iModelTree.tileScreenSize;
229
+ }
204
230
  updateDynamicRange(tile) {
205
231
  this.resetRange();
206
232
  if (this._staticTreeContentRange && this.tree.contentRange && !tile.contentRange.isNull)
@@ -226,11 +252,13 @@ export class IModelTileTree extends TileTree {
226
252
  this._numStaticTilesSelected = 0;
227
253
  this.contentIdQualifier = params.contentIdQualifier;
228
254
  this.geometryGuid = params.geometryGuid;
255
+ this.tileScreenSize = params.tileScreenSize;
229
256
  if (BatchType.Primary === treeId.type)
230
257
  this.stringifiedSectionClip = treeId.sectionCut;
231
258
  this.maxInitialTilesToSkip = (_a = params.maxInitialTilesToSkip) !== null && _a !== void 0 ? _a : 0;
232
259
  this.maxTilesToSkip = IModelApp.tileAdmin.maximumLevelsToSkip;
233
260
  this._options = params.options;
261
+ this._transformNodeRanges = params.transformNodeRanges;
234
262
  this.contentIdProvider = ContentIdProvider.create(params.options.allowInstancing, IModelApp.tileAdmin, params.formatVersion);
235
263
  params.rootTile.contentId = this.contentIdProvider.rootContentId;
236
264
  this._rootTile = new RootTile(iModelTileParamsFromJSON(params.rootTile, undefined), this);
@@ -274,5 +302,12 @@ export class IModelTileTree extends TileTree {
274
302
  const state = this._rootTile.tileState;
275
303
  return "dynamic" === state.type ? state.rootTile.hiddenElements : [];
276
304
  }
305
+ getTransformNodeRange(nodeId) {
306
+ var _a;
307
+ return (_a = this._transformNodeRanges) === null || _a === void 0 ? void 0 : _a.get(nodeId);
308
+ }
309
+ get containsTransformNodes() {
310
+ return undefined !== this._transformNodeRanges;
311
+ }
277
312
  }
278
313
  //# sourceMappingURL=IModelTileTree.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"IModelTileTree.js","sourceRoot":"","sources":["../../../src/tile/IModelTileTree.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, BeTimePoint, GuidString, Id64Array, Id64String } from \"@itwin/core-bentley\";\r\nimport { Range3d, Transform } from \"@itwin/core-geometry\";\r\nimport {\r\n BatchType, ContentIdProvider, ElementAlignedBox3d, ElementGeometryChange, FeatureAppearanceProvider,\r\n IModelTileTreeId, IModelTileTreeProps, ModelGeometryChanges, TileProps,\r\n} from \"@itwin/core-common\";\r\nimport { IModelApp } from \"../IModelApp\";\r\nimport { IModelConnection } from \"../IModelConnection\";\r\nimport { GraphicalEditingScope } from \"../GraphicalEditingScope\";\r\nimport { RenderSystem } from \"../render/RenderSystem\";\r\nimport { GraphicBranch } from \"../render/GraphicBranch\";\r\nimport {\r\n DynamicIModelTile, IModelTile, IModelTileParams, iModelTileParamsFromJSON, Tile, TileContent, TileDrawArgs, TileLoadPriority, TileParams, TileRequest,\r\n TileRequestChannel, TileTree, TileTreeParams,\r\n} from \"./internal\";\r\n\r\n/** @internal */\r\nexport interface IModelTileTreeOptions {\r\n readonly allowInstancing: boolean;\r\n readonly edgesRequired: boolean;\r\n readonly batchType: BatchType;\r\n readonly is3d: boolean;\r\n}\r\n\r\n// Overrides nothing.\r\nconst viewFlagOverrides = {};\r\n\r\n/** Parameters used to construct an [[IModelTileTree]]\r\n * @internal\r\n */\r\nexport interface IModelTileTreeParams extends TileTreeParams {\r\n rootTile: TileProps;\r\n contentIdQualifier?: string;\r\n geometryGuid?: GuidString;\r\n maxInitialTilesToSkip?: number;\r\n formatVersion?: number;\r\n options: IModelTileTreeOptions;\r\n}\r\n\r\n/** @internal */\r\nexport function iModelTileTreeParamsFromJSON(props: IModelTileTreeProps, iModel: IModelConnection, modelId: Id64String, options: IModelTileTreeOptions): IModelTileTreeParams {\r\n const location = Transform.fromJSON(props.location);\r\n const { formatVersion, id, rootTile, contentIdQualifier, maxInitialTilesToSkip, geometryGuid } = props;\r\n\r\n let contentRange;\r\n if (undefined !== props.contentRange)\r\n contentRange = Range3d.fromJSON<ElementAlignedBox3d>(props.contentRange);\r\n\r\n const priority = BatchType.Primary === options.batchType ? TileLoadPriority.Primary : TileLoadPriority.Classifier;\r\n return { formatVersion, id, rootTile, iModel, location, modelId, contentRange, geometryGuid, contentIdQualifier, maxInitialTilesToSkip, priority, options };\r\n}\r\n\r\nfunction findElementChangesForModel(changes: Iterable<ModelGeometryChanges>, modelId: Id64String): Iterable<ElementGeometryChange> | undefined {\r\n for (const change of changes)\r\n if (change.id === modelId)\r\n return change.elements;\r\n\r\n return undefined;\r\n}\r\n\r\n/** No graphical editing scope is currently active. */\r\nclass StaticState {\r\n public readonly type = \"static\";\r\n public readonly dispose: () => void;\r\n\r\n public constructor(root: RootTile) {\r\n this.dispose = GraphicalEditingScope.onEnter.addOnce((scope: GraphicalEditingScope) => {\r\n root.transition(new InteractiveState(scope, root));\r\n });\r\n }\r\n}\r\n\r\n/** A graphical editing scope is currently active, but no elements in the tile tree's model have been modified. */\r\nclass InteractiveState {\r\n public readonly type = \"interactive\";\r\n public readonly dispose: () => void;\r\n\r\n public constructor(scope: GraphicalEditingScope, root: RootTile) {\r\n const removeEndingListener = scope.onExiting.addOnce((_) => {\r\n root.transition(new StaticState(root));\r\n });\r\n\r\n const removeGeomListener = scope.onGeometryChanges.addListener((changes: Iterable<ModelGeometryChanges>, _scope: GraphicalEditingScope) => {\r\n assert(scope === _scope);\r\n const elemChanges = findElementChangesForModel(changes, root.tree.modelId);\r\n if (elemChanges)\r\n root.transition(new DynamicState(root, elemChanges, scope));\r\n });\r\n\r\n this.dispose = () => {\r\n removeEndingListener();\r\n removeGeomListener();\r\n };\r\n }\r\n}\r\n\r\n/** Elements in the tile tree's model have been modified during the current editing scope. */\r\nclass DynamicState {\r\n public readonly type = \"dynamic\";\r\n public readonly rootTile: DynamicIModelTile;\r\n private readonly _dispose: () => void;\r\n\r\n public dispose(): void {\r\n this._dispose();\r\n this.rootTile.dispose();\r\n }\r\n\r\n public constructor(root: RootTile, elemChanges: Iterable<ElementGeometryChange>, scope: GraphicalEditingScope) {\r\n this.rootTile = DynamicIModelTile.create(root, elemChanges);\r\n\r\n const removeEndingListener = scope.onExiting.addOnce((_) => {\r\n root.transition(new StaticState(root));\r\n });\r\n\r\n const removeGeomListener = scope.onGeometryChanges.addListener((changes: Iterable<ModelGeometryChanges>, _scope: GraphicalEditingScope) => {\r\n assert(scope === _scope);\r\n const elems = findElementChangesForModel(changes, root.tree.modelId);\r\n if (elems)\r\n this.rootTile.handleGeometryChanges(elems);\r\n });\r\n\r\n this._dispose = () => {\r\n removeEndingListener();\r\n removeGeomListener();\r\n };\r\n }\r\n}\r\n\r\n/** The tile tree has been disposed. */\r\nclass DisposedState {\r\n public readonly type = \"disposed\";\r\n public dispose(): void { }\r\n}\r\n\r\nconst disposedState = new DisposedState();\r\n\r\n/** The current state of an [[IModelTileTree]]'s [[RootTile]]. The tile transitions between these states primarily in response to GraphicalEditingScope events. */\r\ntype RootTileState = StaticState | InteractiveState | DynamicState | DisposedState;\r\n\r\n/** The root tile for an [[IModelTileTree]].\r\n * @internal\r\n */\r\nexport type RootIModelTile = Tile & { updateDynamicRange: (childTile: Tile) => void };\r\n\r\n/** Represents the root [[Tile]] of an [[IModelTileTree]]. The root tile has one or two direct child tiles which represent different branches of the tree:\r\n * - The static branch, containing tiles that represent the state of the model's geometry as of the beginning of the current [[GraphicalEditingScope]].\r\n * - The dynamic branch, containing tiles representing the geometry of elements that have been modified during the current [[GraphicalEditingScope]].\r\n * If no editing scope is currently active, the dynamic branch does not exist, and the static branch represents the current state of all elements in the model.\r\n */\r\nclass RootTile extends Tile {\r\n public readonly staticBranch: IModelTile;\r\n private _tileState: RootTileState;\r\n private readonly _staticTreeContentRange?: Range3d;\r\n\r\n public get tileState(): RootTileState {\r\n return this._tileState;\r\n }\r\n\r\n public constructor(params: IModelTileParams, tree: IModelTileTree) {\r\n const rootParams: TileParams = {\r\n ...params,\r\n range: params.range.clone(),\r\n contentRange: params.contentRange?.clone(),\r\n isLeaf: false,\r\n contentId: \"\",\r\n };\r\n\r\n super(rootParams, tree);\r\n this.staticBranch = new IModelTile(params, tree);\r\n this._staticTreeContentRange = tree.contentRange?.clone();\r\n\r\n if (!this._contentRange)\r\n this._contentRange = this.staticBranch.contentRange.clone();\r\n\r\n // Determine initial state.\r\n const scope = tree.iModel.isBriefcaseConnection() ? tree.iModel.editingScope : undefined;\r\n if (undefined === scope) {\r\n this._tileState = new StaticState(this);\r\n } else {\r\n const changes = scope.getGeometryChangesForModel(tree.modelId);\r\n this._tileState = changes ? new DynamicState(this, changes, scope) : new InteractiveState(scope, this);\r\n }\r\n\r\n // Load the children immediately.\r\n this.setIsReady();\r\n this.loadChildren();\r\n }\r\n\r\n public override dispose(): void {\r\n this.transition(disposedState);\r\n super.dispose();\r\n }\r\n\r\n protected _loadChildren(resolve: (children: Tile[] | undefined) => void, _reject: (error: Error) => void): void {\r\n const children: Tile[] = [this.staticBranch];\r\n if (this._tileState.type === \"dynamic\")\r\n children.push(this._tileState.rootTile);\r\n\r\n resolve(children);\r\n }\r\n\r\n public get channel(): TileRequestChannel {\r\n throw new Error(\"Root iModel tile has no content\");\r\n }\r\n\r\n public async requestContent(_isCanceled: () => boolean): Promise<TileRequest.Response> {\r\n assert(false, \"Root iModel tile has no content\");\r\n return undefined;\r\n }\r\n\r\n public async readContent(_data: TileRequest.ResponseData, _system: RenderSystem, _isCanceled: () => boolean): Promise<TileContent> {\r\n throw new Error(\"Root iModel tile has no content\");\r\n }\r\n\r\n public draw(args: TileDrawArgs, tiles: Tile[], numStaticTiles: number): void {\r\n assert(numStaticTiles >= 0 && numStaticTiles <= tiles.length);\r\n\r\n // Draw the static tiles.\r\n for (let i = 0; i < numStaticTiles; i++)\r\n tiles[i].drawGraphics(args);\r\n\r\n if (\"dynamic\" !== this._tileState.type || numStaticTiles === tiles.length) {\r\n if (\"dynamic\" === this._tileState.type)\r\n args.addAppearanceProvider(this._tileState.rootTile.appearanceProvider);\r\n\r\n args.drawGraphics();\r\n return;\r\n }\r\n\r\n // We need to hide any modified elements in the static tiles. Pull their graphics into a separate branch.\r\n if (!args.graphics.isEmpty) {\r\n const staticBranch = new GraphicBranch();\r\n for (const staticGraphic of args.graphics.entries)\r\n staticBranch.add(staticGraphic);\r\n\r\n let appearanceProvider = this._tileState.rootTile.appearanceProvider;\r\n if (args.appearanceProvider)\r\n appearanceProvider = FeatureAppearanceProvider.chain(args.appearanceProvider, appearanceProvider);\r\n\r\n args.graphics.clear();\r\n args.graphics.add(args.context.createGraphicBranch(staticBranch, Transform.createIdentity(), { appearanceProvider }));\r\n }\r\n\r\n // Draw the dynamic tiles.\r\n for (let i = numStaticTiles; i < tiles.length; i++)\r\n tiles[i].drawGraphics(args);\r\n\r\n args.drawGraphics();\r\n }\r\n\r\n public prune(olderThan: BeTimePoint): void {\r\n this.staticBranch.pruneChildren(olderThan);\r\n if (\"dynamic\" === this._tileState.type)\r\n this._tileState.rootTile.pruneChildren(olderThan);\r\n }\r\n\r\n public transition(newState: RootTileState): void {\r\n assert(newState.type !== this._tileState.type);\r\n const resetRange = \"dynamic\" === this._tileState.type;\r\n\r\n assert(undefined !== this.children);\r\n if (\"dynamic\" === this._tileState.type) {\r\n assert(2 === this.children.length);\r\n this.children.pop();\r\n } else if (\"dynamic\" === newState.type) {\r\n assert(1 === this.children.length);\r\n this.children.push(newState.rootTile);\r\n }\r\n\r\n this._tileState.dispose();\r\n this._tileState = newState;\r\n\r\n if (resetRange)\r\n this.resetRange();\r\n }\r\n\r\n private resetRange(): void {\r\n this.staticBranch.range.clone(this.range);\r\n this.staticBranch.contentRange.clone(this._contentRange);\r\n\r\n if (this._staticTreeContentRange && this.tree.contentRange)\r\n this._staticTreeContentRange.clone(this.tree.contentRange);\r\n\r\n }\r\n\r\n public updateDynamicRange(tile: Tile): void {\r\n this.resetRange();\r\n if (this._staticTreeContentRange && this.tree.contentRange && !tile.contentRange.isNull)\r\n this.tree.contentRange.extendRange(tile.contentRange);\r\n\r\n if (!tile.range.isNull)\r\n this.range.extendRange(tile.range);\r\n\r\n assert(undefined !== this._contentRange);\r\n if (!tile.contentRange.isNull)\r\n this._contentRange.extendRange(tile.contentRange);\r\n }\r\n}\r\n\r\n/** A TileTree whose contents are derived from geometry stored in a Model in an IModelDb.\r\n * @internal\r\n */\r\nexport class IModelTileTree extends TileTree {\r\n private readonly _rootTile: RootTile;\r\n private readonly _options: IModelTileTreeOptions;\r\n public readonly contentIdQualifier?: string;\r\n public readonly geometryGuid?: string;\r\n public readonly maxTilesToSkip: number;\r\n public readonly maxInitialTilesToSkip: number;\r\n public readonly contentIdProvider: ContentIdProvider;\r\n public readonly stringifiedSectionClip?: string;\r\n /** Strictly for debugging/testing - forces tile selection to halt at the specified depth. */\r\n public debugMaxDepth?: number;\r\n /** A little hacky...we must not override selectTiles(), but draw() needs to distinguish between static and dynamic tiles.\r\n * So _selectTiles() puts the static tiles first in the Tile[] array, and records the number of static tiles selected, to be\r\n * used by draw().\r\n */\r\n private _numStaticTilesSelected = 0;\r\n\r\n public constructor(params: IModelTileTreeParams, treeId: IModelTileTreeId) {\r\n super(params);\r\n this.contentIdQualifier = params.contentIdQualifier;\r\n this.geometryGuid = params.geometryGuid;\r\n\r\n if (BatchType.Primary === treeId.type)\r\n this.stringifiedSectionClip = treeId.sectionCut;\r\n\r\n this.maxInitialTilesToSkip = params.maxInitialTilesToSkip ?? 0;\r\n this.maxTilesToSkip = IModelApp.tileAdmin.maximumLevelsToSkip;\r\n\r\n this._options = params.options;\r\n\r\n this.contentIdProvider = ContentIdProvider.create(params.options.allowInstancing, IModelApp.tileAdmin, params.formatVersion);\r\n\r\n params.rootTile.contentId = this.contentIdProvider.rootContentId;\r\n this._rootTile = new RootTile(iModelTileParamsFromJSON(params.rootTile, undefined), this);\r\n }\r\n\r\n public get maxDepth() { return 32; }\r\n public get rootTile(): Tile { return this._rootTile; }\r\n /** Exposed chiefly for tests. */\r\n public get staticBranch(): IModelTile { return this._rootTile.staticBranch; }\r\n public get is3d() { return this._options.is3d; }\r\n public override get isContentUnbounded() { return false; }\r\n public get viewFlagOverrides() { return viewFlagOverrides; }\r\n\r\n public get batchType(): BatchType { return this._options.batchType; }\r\n public get hasEdges(): boolean { return this._options.edgesRequired; }\r\n\r\n public override get loadPriority(): TileLoadPriority {\r\n // If the model has been modified, we want to prioritize keeping its graphics up to date.\r\n return this.tileState === \"dynamic\" ? TileLoadPriority.Dynamic : super.loadPriority;\r\n }\r\n\r\n protected _selectTiles(args: TileDrawArgs): Tile[] {\r\n args.markUsed(this._rootTile);\r\n const tiles: Tile[] = [];\r\n this._rootTile.staticBranch.selectTiles(tiles, args, 0);\r\n this._numStaticTilesSelected = tiles.length;\r\n\r\n if (this._rootTile.tileState.type === \"dynamic\")\r\n this._rootTile.tileState.rootTile.selectTiles(tiles, args);\r\n\r\n return tiles;\r\n }\r\n\r\n public draw(args: TileDrawArgs): void {\r\n const tiles = this.selectTiles(args);\r\n this._rootTile.draw(args, tiles, this._numStaticTilesSelected);\r\n }\r\n\r\n public prune(): void {\r\n const olderThan = BeTimePoint.now().minus(this.expirationTime);\r\n this._rootTile.prune(olderThan);\r\n }\r\n\r\n /** Exposed strictly for tests. */\r\n public get tileState(): \"static\" | \"dynamic\" | \"interactive\" | \"disposed\" {\r\n return this._rootTile.tileState.type;\r\n }\r\n\r\n /** Exposed strictly for tests. */\r\n public get hiddenElements(): Id64Array {\r\n const state = this._rootTile.tileState;\r\n return \"dynamic\" === state.type ? state.rootTile.hiddenElements : [];\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"IModelTileTree.js","sourceRoot":"","sources":["../../../src/tile/IModelTileTree.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, BeTimePoint, GuidString, Id64Array, Id64String } from \"@itwin/core-bentley\";\r\nimport { Range3d, Transform } from \"@itwin/core-geometry\";\r\nimport {\r\n BatchType, ContentIdProvider, ElementAlignedBox3d, ElementGeometryChange, FeatureAppearanceProvider,\r\n IModelTileTreeId, IModelTileTreeProps, ModelGeometryChanges, TileProps,\r\n} from \"@itwin/core-common\";\r\nimport { IModelApp } from \"../IModelApp\";\r\nimport { IModelConnection } from \"../IModelConnection\";\r\nimport { GraphicalEditingScope } from \"../GraphicalEditingScope\";\r\nimport { RenderSystem } from \"../render/RenderSystem\";\r\nimport { GraphicBranch } from \"../render/GraphicBranch\";\r\nimport {\r\n DynamicIModelTile, IModelTile, IModelTileParams, iModelTileParamsFromJSON, Tile, TileContent, TileDrawArgs, TileLoadPriority, TileParams, TileRequest,\r\n TileRequestChannel, TileTree, TileTreeParams,\r\n} from \"./internal\";\r\n\r\n/** @internal */\r\nexport interface IModelTileTreeOptions {\r\n readonly allowInstancing: boolean;\r\n readonly edgesRequired: boolean;\r\n readonly batchType: BatchType;\r\n readonly is3d: boolean;\r\n}\r\n\r\n// Overrides nothing.\r\nconst viewFlagOverrides = {};\r\n\r\n/** Parameters used to construct an [[IModelTileTree]]\r\n * @internal\r\n */\r\nexport interface IModelTileTreeParams extends TileTreeParams {\r\n rootTile: TileProps;\r\n contentIdQualifier?: string;\r\n geometryGuid?: GuidString;\r\n maxInitialTilesToSkip?: number;\r\n formatVersion?: number;\r\n tileScreenSize: number;\r\n options: IModelTileTreeOptions;\r\n transformNodeRanges?: Map<number, Range3d>;\r\n}\r\n\r\n/** @internal */\r\nexport function iModelTileTreeParamsFromJSON(props: IModelTileTreeProps, iModel: IModelConnection, modelId: Id64String, options: IModelTileTreeOptions): IModelTileTreeParams {\r\n const location = Transform.fromJSON(props.location);\r\n const { formatVersion, id, rootTile, contentIdQualifier, maxInitialTilesToSkip, geometryGuid } = props;\r\n const tileScreenSize = props.tileScreenSize ?? 512;\r\n\r\n let contentRange;\r\n if (undefined !== props.contentRange)\r\n contentRange = Range3d.fromJSON<ElementAlignedBox3d>(props.contentRange);\r\n\r\n let transformNodeRanges;\r\n if (props.transformNodeRanges) {\r\n transformNodeRanges = new Map<number, Range3d>();\r\n for (const entry of props.transformNodeRanges)\r\n transformNodeRanges.set(entry.id, Range3d.fromJSON(entry));\r\n }\r\n\r\n const priority = BatchType.Primary === options.batchType ? TileLoadPriority.Primary : TileLoadPriority.Classifier;\r\n return {\r\n formatVersion,\r\n id,\r\n rootTile,\r\n iModel,\r\n location,\r\n modelId,\r\n contentRange,\r\n geometryGuid,\r\n contentIdQualifier,\r\n maxInitialTilesToSkip,\r\n priority,\r\n options,\r\n tileScreenSize,\r\n transformNodeRanges,\r\n };\r\n}\r\n\r\nfunction findElementChangesForModel(changes: Iterable<ModelGeometryChanges>, modelId: Id64String): Iterable<ElementGeometryChange> | undefined {\r\n for (const change of changes)\r\n if (change.id === modelId)\r\n return change.elements;\r\n\r\n return undefined;\r\n}\r\n\r\n/** No graphical editing scope is currently active. */\r\nclass StaticState {\r\n public readonly type = \"static\";\r\n public readonly dispose: () => void;\r\n\r\n public constructor(root: RootTile) {\r\n this.dispose = GraphicalEditingScope.onEnter.addOnce((scope: GraphicalEditingScope) => {\r\n root.transition(new InteractiveState(scope, root));\r\n });\r\n }\r\n}\r\n\r\n/** A graphical editing scope is currently active, but no elements in the tile tree's model have been modified. */\r\nclass InteractiveState {\r\n public readonly type = \"interactive\";\r\n public readonly dispose: () => void;\r\n\r\n public constructor(scope: GraphicalEditingScope, root: RootTile) {\r\n const removeEndingListener = scope.onExiting.addOnce((_) => {\r\n root.transition(new StaticState(root));\r\n });\r\n\r\n const removeGeomListener = scope.onGeometryChanges.addListener((changes: Iterable<ModelGeometryChanges>, _scope: GraphicalEditingScope) => {\r\n assert(scope === _scope);\r\n const elemChanges = findElementChangesForModel(changes, root.tree.modelId);\r\n if (elemChanges)\r\n root.transition(new DynamicState(root, elemChanges, scope));\r\n });\r\n\r\n this.dispose = () => {\r\n removeEndingListener();\r\n removeGeomListener();\r\n };\r\n }\r\n}\r\n\r\n/** Elements in the tile tree's model have been modified during the current editing scope. */\r\nclass DynamicState {\r\n public readonly type = \"dynamic\";\r\n public readonly rootTile: DynamicIModelTile;\r\n private readonly _dispose: () => void;\r\n\r\n public dispose(): void {\r\n this._dispose();\r\n this.rootTile.dispose();\r\n }\r\n\r\n public constructor(root: RootTile, elemChanges: Iterable<ElementGeometryChange>, scope: GraphicalEditingScope) {\r\n this.rootTile = DynamicIModelTile.create(root, elemChanges);\r\n\r\n const removeEndingListener = scope.onExiting.addOnce((_) => {\r\n root.transition(new StaticState(root));\r\n });\r\n\r\n const removeGeomListener = scope.onGeometryChanges.addListener((changes: Iterable<ModelGeometryChanges>, _scope: GraphicalEditingScope) => {\r\n assert(scope === _scope);\r\n const elems = findElementChangesForModel(changes, root.tree.modelId);\r\n if (elems)\r\n this.rootTile.handleGeometryChanges(elems);\r\n });\r\n\r\n this._dispose = () => {\r\n removeEndingListener();\r\n removeGeomListener();\r\n };\r\n }\r\n}\r\n\r\n/** The tile tree has been disposed. */\r\nclass DisposedState {\r\n public readonly type = \"disposed\";\r\n public dispose(): void { }\r\n}\r\n\r\nconst disposedState = new DisposedState();\r\n\r\n/** The current state of an [[IModelTileTree]]'s [[RootTile]]. The tile transitions between these states primarily in response to GraphicalEditingScope events. */\r\ntype RootTileState = StaticState | InteractiveState | DynamicState | DisposedState;\r\n\r\n/** The root tile for an [[IModelTileTree]].\r\n * @internal\r\n */\r\nexport type RootIModelTile = Tile & { tileScreenSize: number, updateDynamicRange: (childTile: Tile) => void };\r\n\r\n/** Represents the root [[Tile]] of an [[IModelTileTree]]. The root tile has one or two direct child tiles which represent different branches of the tree:\r\n * - The static branch, containing tiles that represent the state of the model's geometry as of the beginning of the current [[GraphicalEditingScope]].\r\n * - The dynamic branch, containing tiles representing the geometry of elements that have been modified during the current [[GraphicalEditingScope]].\r\n * If no editing scope is currently active, the dynamic branch does not exist, and the static branch represents the current state of all elements in the model.\r\n */\r\nclass RootTile extends Tile {\r\n public readonly staticBranch: IModelTile;\r\n private _tileState: RootTileState;\r\n private readonly _staticTreeContentRange?: Range3d;\r\n\r\n public get tileState(): RootTileState {\r\n return this._tileState;\r\n }\r\n\r\n public constructor(params: IModelTileParams, tree: IModelTileTree) {\r\n const rootParams: TileParams = {\r\n ...params,\r\n range: params.range.clone(),\r\n contentRange: params.contentRange?.clone(),\r\n isLeaf: false,\r\n contentId: \"\",\r\n };\r\n\r\n super(rootParams, tree);\r\n this.staticBranch = new IModelTile(params, tree);\r\n this._staticTreeContentRange = tree.contentRange?.clone();\r\n\r\n if (!this._contentRange)\r\n this._contentRange = this.staticBranch.contentRange.clone();\r\n\r\n // Determine initial state.\r\n const scope = tree.iModel.isBriefcaseConnection() ? tree.iModel.editingScope : undefined;\r\n if (undefined === scope) {\r\n this._tileState = new StaticState(this);\r\n } else {\r\n const changes = scope.getGeometryChangesForModel(tree.modelId);\r\n this._tileState = changes ? new DynamicState(this, changes, scope) : new InteractiveState(scope, this);\r\n }\r\n\r\n // Load the children immediately.\r\n this.setIsReady();\r\n this.loadChildren();\r\n }\r\n\r\n public override dispose(): void {\r\n this.transition(disposedState);\r\n super.dispose();\r\n }\r\n\r\n protected _loadChildren(resolve: (children: Tile[] | undefined) => void, _reject: (error: Error) => void): void {\r\n const children: Tile[] = [this.staticBranch];\r\n if (this._tileState.type === \"dynamic\")\r\n children.push(this._tileState.rootTile);\r\n\r\n resolve(children);\r\n }\r\n\r\n public get channel(): TileRequestChannel {\r\n throw new Error(\"Root iModel tile has no content\");\r\n }\r\n\r\n public async requestContent(_isCanceled: () => boolean): Promise<TileRequest.Response> {\r\n assert(false, \"Root iModel tile has no content\");\r\n return undefined;\r\n }\r\n\r\n public async readContent(_data: TileRequest.ResponseData, _system: RenderSystem, _isCanceled: () => boolean): Promise<TileContent> {\r\n throw new Error(\"Root iModel tile has no content\");\r\n }\r\n\r\n public draw(args: TileDrawArgs, tiles: Tile[], numStaticTiles: number): void {\r\n assert(numStaticTiles >= 0 && numStaticTiles <= tiles.length);\r\n\r\n // Draw the static tiles.\r\n for (let i = 0; i < numStaticTiles; i++)\r\n tiles[i].drawGraphics(args);\r\n\r\n if (\"dynamic\" !== this._tileState.type || numStaticTiles === tiles.length) {\r\n if (\"dynamic\" === this._tileState.type)\r\n args.addAppearanceProvider(this._tileState.rootTile.appearanceProvider);\r\n\r\n args.drawGraphics();\r\n return;\r\n }\r\n\r\n // We need to hide any modified elements in the static tiles. Pull their graphics into a separate branch.\r\n if (!args.graphics.isEmpty) {\r\n const staticBranch = new GraphicBranch();\r\n for (const staticGraphic of args.graphics.entries)\r\n staticBranch.add(staticGraphic);\r\n\r\n let appearanceProvider = this._tileState.rootTile.appearanceProvider;\r\n if (args.appearanceProvider)\r\n appearanceProvider = FeatureAppearanceProvider.chain(args.appearanceProvider, appearanceProvider);\r\n\r\n args.graphics.clear();\r\n args.graphics.add(args.context.createGraphicBranch(staticBranch, Transform.createIdentity(), { appearanceProvider }));\r\n }\r\n\r\n // Draw the dynamic tiles.\r\n for (let i = numStaticTiles; i < tiles.length; i++)\r\n tiles[i].drawGraphics(args);\r\n\r\n args.drawGraphics();\r\n }\r\n\r\n public prune(olderThan: BeTimePoint): void {\r\n this.staticBranch.pruneChildren(olderThan);\r\n if (\"dynamic\" === this._tileState.type)\r\n this._tileState.rootTile.pruneChildren(olderThan);\r\n }\r\n\r\n public transition(newState: RootTileState): void {\r\n assert(newState.type !== this._tileState.type);\r\n const resetRange = \"dynamic\" === this._tileState.type;\r\n\r\n assert(undefined !== this.children);\r\n if (\"dynamic\" === this._tileState.type) {\r\n assert(2 === this.children.length);\r\n this.children.pop();\r\n } else if (\"dynamic\" === newState.type) {\r\n assert(1 === this.children.length);\r\n this.children.push(newState.rootTile);\r\n }\r\n\r\n this._tileState.dispose();\r\n this._tileState = newState;\r\n\r\n if (resetRange)\r\n this.resetRange();\r\n }\r\n\r\n private resetRange(): void {\r\n this.staticBranch.range.clone(this.range);\r\n this.staticBranch.contentRange.clone(this._contentRange);\r\n\r\n if (this._staticTreeContentRange && this.tree.contentRange)\r\n this._staticTreeContentRange.clone(this.tree.contentRange);\r\n\r\n }\r\n\r\n public get tileScreenSize(): number {\r\n return this.staticBranch.iModelTree.tileScreenSize;\r\n }\r\n\r\n public updateDynamicRange(tile: Tile): void {\r\n this.resetRange();\r\n if (this._staticTreeContentRange && this.tree.contentRange && !tile.contentRange.isNull)\r\n this.tree.contentRange.extendRange(tile.contentRange);\r\n\r\n if (!tile.range.isNull)\r\n this.range.extendRange(tile.range);\r\n\r\n assert(undefined !== this._contentRange);\r\n if (!tile.contentRange.isNull)\r\n this._contentRange.extendRange(tile.contentRange);\r\n }\r\n}\r\n\r\n/** A TileTree whose contents are derived from geometry stored in a Model in an IModelDb.\r\n * @internal\r\n */\r\nexport class IModelTileTree extends TileTree {\r\n private readonly _rootTile: RootTile;\r\n private readonly _options: IModelTileTreeOptions;\r\n private readonly _transformNodeRanges?: Map<number, Range3d>;\r\n public readonly contentIdQualifier?: string;\r\n public readonly geometryGuid?: string;\r\n public readonly maxTilesToSkip: number;\r\n public readonly maxInitialTilesToSkip: number;\r\n public readonly contentIdProvider: ContentIdProvider;\r\n public readonly stringifiedSectionClip?: string;\r\n public readonly tileScreenSize: number;\r\n /** Strictly for debugging/testing - forces tile selection to halt at the specified depth. */\r\n public debugMaxDepth?: number;\r\n /** A little hacky...we must not override selectTiles(), but draw() needs to distinguish between static and dynamic tiles.\r\n * So _selectTiles() puts the static tiles first in the Tile[] array, and records the number of static tiles selected, to be\r\n * used by draw().\r\n */\r\n private _numStaticTilesSelected = 0;\r\n\r\n public constructor(params: IModelTileTreeParams, treeId: IModelTileTreeId) {\r\n super(params);\r\n this.contentIdQualifier = params.contentIdQualifier;\r\n this.geometryGuid = params.geometryGuid;\r\n this.tileScreenSize = params.tileScreenSize;\r\n\r\n if (BatchType.Primary === treeId.type)\r\n this.stringifiedSectionClip = treeId.sectionCut;\r\n\r\n this.maxInitialTilesToSkip = params.maxInitialTilesToSkip ?? 0;\r\n this.maxTilesToSkip = IModelApp.tileAdmin.maximumLevelsToSkip;\r\n\r\n this._options = params.options;\r\n this._transformNodeRanges = params.transformNodeRanges;\r\n\r\n this.contentIdProvider = ContentIdProvider.create(params.options.allowInstancing, IModelApp.tileAdmin, params.formatVersion);\r\n\r\n params.rootTile.contentId = this.contentIdProvider.rootContentId;\r\n this._rootTile = new RootTile(iModelTileParamsFromJSON(params.rootTile, undefined), this);\r\n }\r\n\r\n public get maxDepth() { return 32; }\r\n public get rootTile(): Tile { return this._rootTile; }\r\n /** Exposed chiefly for tests. */\r\n public get staticBranch(): IModelTile { return this._rootTile.staticBranch; }\r\n public get is3d() { return this._options.is3d; }\r\n public override get isContentUnbounded() { return false; }\r\n public get viewFlagOverrides() { return viewFlagOverrides; }\r\n\r\n public get batchType(): BatchType { return this._options.batchType; }\r\n public get hasEdges(): boolean { return this._options.edgesRequired; }\r\n\r\n public override get loadPriority(): TileLoadPriority {\r\n // If the model has been modified, we want to prioritize keeping its graphics up to date.\r\n return this.tileState === \"dynamic\" ? TileLoadPriority.Dynamic : super.loadPriority;\r\n }\r\n\r\n protected _selectTiles(args: TileDrawArgs): Tile[] {\r\n args.markUsed(this._rootTile);\r\n const tiles: Tile[] = [];\r\n this._rootTile.staticBranch.selectTiles(tiles, args, 0);\r\n this._numStaticTilesSelected = tiles.length;\r\n\r\n if (this._rootTile.tileState.type === \"dynamic\")\r\n this._rootTile.tileState.rootTile.selectTiles(tiles, args);\r\n\r\n return tiles;\r\n }\r\n\r\n public draw(args: TileDrawArgs): void {\r\n const tiles = this.selectTiles(args);\r\n this._rootTile.draw(args, tiles, this._numStaticTilesSelected);\r\n }\r\n\r\n public prune(): void {\r\n const olderThan = BeTimePoint.now().minus(this.expirationTime);\r\n this._rootTile.prune(olderThan);\r\n }\r\n\r\n /** Exposed strictly for tests. */\r\n public get tileState(): \"static\" | \"dynamic\" | \"interactive\" | \"disposed\" {\r\n return this._rootTile.tileState.type;\r\n }\r\n\r\n /** Exposed strictly for tests. */\r\n public get hiddenElements(): Id64Array {\r\n const state = this._rootTile.tileState;\r\n return \"dynamic\" === state.type ? state.rootTile.hiddenElements : [];\r\n }\r\n\r\n public getTransformNodeRange(nodeId: number): Range3d | undefined {\r\n return this._transformNodeRanges?.get(nodeId);\r\n }\r\n\r\n public get containsTransformNodes(): boolean {\r\n return undefined !== this._transformNodeRanges;\r\n }\r\n}\r\n"]}