@itwin/core-frontend 3.0.0-dev.98 → 3.0.0

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 (1224) hide show
  1. package/CHANGELOG.md +244 -35
  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 +203 -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 +7 -6
  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 +10 -24
  138. package/lib/cjs/core-frontend.d.ts.map +1 -1
  139. package/lib/cjs/core-frontend.js +10 -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/RenderMemory.d.ts +21 -15
  167. package/lib/cjs/render/RenderMemory.d.ts.map +1 -1
  168. package/lib/cjs/render/RenderMemory.js +21 -15
  169. package/lib/cjs/render/RenderMemory.js.map +1 -1
  170. package/lib/cjs/render/RenderSystem.d.ts +38 -7
  171. package/lib/cjs/render/RenderSystem.d.ts.map +1 -1
  172. package/lib/cjs/render/RenderSystem.js +24 -9
  173. package/lib/cjs/render/RenderSystem.js.map +1 -1
  174. package/lib/cjs/render/RenderTarget.d.ts +10 -2
  175. package/lib/cjs/render/RenderTarget.d.ts.map +1 -1
  176. package/lib/cjs/render/RenderTarget.js +2 -1
  177. package/lib/cjs/render/RenderTarget.js.map +1 -1
  178. package/lib/cjs/render/RenderTexture.d.ts +2 -17
  179. package/lib/cjs/render/RenderTexture.d.ts.map +1 -1
  180. package/lib/cjs/render/RenderTexture.js +0 -17
  181. package/lib/cjs/render/RenderTexture.js.map +1 -1
  182. package/lib/cjs/render/primitives/EdgeParams.d.ts +84 -0
  183. package/lib/cjs/render/primitives/EdgeParams.d.ts.map +1 -0
  184. package/lib/cjs/render/primitives/EdgeParams.js +220 -0
  185. package/lib/cjs/render/primitives/EdgeParams.js.map +1 -0
  186. package/lib/cjs/render/primitives/PointStringParams.d.ts +16 -0
  187. package/lib/cjs/render/primitives/PointStringParams.d.ts.map +1 -0
  188. package/lib/cjs/render/primitives/PointStringParams.js +43 -0
  189. package/lib/cjs/render/primitives/PointStringParams.js.map +1 -0
  190. package/lib/cjs/render/primitives/PolylineParams.d.ts +44 -0
  191. package/lib/cjs/render/primitives/PolylineParams.d.ts.map +1 -0
  192. package/lib/cjs/render/primitives/PolylineParams.js +205 -0
  193. package/lib/cjs/render/primitives/PolylineParams.js.map +1 -0
  194. package/lib/cjs/render/primitives/Primitives.d.ts +1 -1
  195. package/lib/cjs/render/primitives/Primitives.d.ts.map +1 -1
  196. package/lib/cjs/render/primitives/Primitives.js.map +1 -1
  197. package/lib/cjs/render/primitives/SurfaceParams.d.ts +46 -0
  198. package/lib/cjs/render/primitives/SurfaceParams.d.ts.map +1 -0
  199. package/lib/cjs/render/primitives/SurfaceParams.js +42 -0
  200. package/lib/cjs/render/primitives/SurfaceParams.js.map +1 -0
  201. package/lib/cjs/render/primitives/VertexTable.d.ts +4 -123
  202. package/lib/cjs/render/primitives/VertexTable.d.ts.map +1 -1
  203. package/lib/cjs/render/primitives/VertexTable.js +16 -352
  204. package/lib/cjs/render/primitives/VertexTable.js.map +1 -1
  205. package/lib/cjs/render/primitives/geometry/GeometryAccumulator.d.ts +2 -0
  206. package/lib/cjs/render/primitives/geometry/GeometryAccumulator.d.ts.map +1 -1
  207. package/lib/cjs/render/primitives/geometry/GeometryAccumulator.js +2 -1
  208. package/lib/cjs/render/primitives/geometry/GeometryAccumulator.js.map +1 -1
  209. package/lib/cjs/render/primitives/geometry/GeometryListBuilder.d.ts.map +1 -1
  210. package/lib/cjs/render/primitives/geometry/GeometryListBuilder.js +1 -0
  211. package/lib/cjs/render/primitives/geometry/GeometryListBuilder.js.map +1 -1
  212. package/lib/cjs/render/primitives/mesh/MeshPrimitives.d.ts +2 -2
  213. package/lib/cjs/render/primitives/mesh/MeshPrimitives.d.ts.map +1 -1
  214. package/lib/cjs/render/primitives/mesh/MeshPrimitives.js +3 -3
  215. package/lib/cjs/render/primitives/mesh/MeshPrimitives.js.map +1 -1
  216. package/lib/cjs/render/primitives/mesh/TerrainMeshPrimitive.d.ts +1 -1
  217. package/lib/cjs/render/primitives/mesh/TerrainMeshPrimitive.js +1 -1
  218. package/lib/cjs/render/primitives/mesh/TerrainMeshPrimitive.js.map +1 -1
  219. package/lib/cjs/render/webgl/AttributeMap.js +5 -5
  220. package/lib/cjs/render/webgl/BackgroundMapDrape.js +1 -1
  221. package/lib/cjs/render/webgl/BackgroundMapDrape.js.map +1 -1
  222. package/lib/cjs/render/webgl/BranchUniforms.d.ts.map +1 -1
  223. package/lib/cjs/render/webgl/BranchUniforms.js +8 -5
  224. package/lib/cjs/render/webgl/BranchUniforms.js.map +1 -1
  225. package/lib/cjs/render/webgl/CachedGeometry.d.ts +16 -11
  226. package/lib/cjs/render/webgl/CachedGeometry.d.ts.map +1 -1
  227. package/lib/cjs/render/webgl/CachedGeometry.js +26 -23
  228. package/lib/cjs/render/webgl/CachedGeometry.js.map +1 -1
  229. package/lib/cjs/render/webgl/DrawCommand.d.ts +2 -3
  230. package/lib/cjs/render/webgl/DrawCommand.d.ts.map +1 -1
  231. package/lib/cjs/render/webgl/DrawCommand.js +6 -4
  232. package/lib/cjs/render/webgl/DrawCommand.js.map +1 -1
  233. package/lib/cjs/render/webgl/EdgeGeometry.d.ts +73 -0
  234. package/lib/cjs/render/webgl/EdgeGeometry.d.ts.map +1 -0
  235. package/lib/cjs/render/webgl/EdgeGeometry.js +141 -0
  236. package/lib/cjs/render/webgl/EdgeGeometry.js.map +1 -0
  237. package/lib/cjs/render/webgl/FeatureOverrides.d.ts +2 -0
  238. package/lib/cjs/render/webgl/FeatureOverrides.d.ts.map +1 -1
  239. package/lib/cjs/render/webgl/FeatureOverrides.js +11 -3
  240. package/lib/cjs/render/webgl/FeatureOverrides.js.map +1 -1
  241. package/lib/cjs/render/webgl/FloatRGBA.d.ts.map +1 -1
  242. package/lib/cjs/render/webgl/FloatRGBA.js +13 -11
  243. package/lib/cjs/render/webgl/FloatRGBA.js.map +1 -1
  244. package/lib/cjs/render/webgl/Graphic.d.ts +13 -0
  245. package/lib/cjs/render/webgl/Graphic.d.ts.map +1 -1
  246. package/lib/cjs/render/webgl/Graphic.js +41 -3
  247. package/lib/cjs/render/webgl/Graphic.js.map +1 -1
  248. package/lib/cjs/render/webgl/IndexedEdgeGeometry.d.ts +51 -0
  249. package/lib/cjs/render/webgl/IndexedEdgeGeometry.d.ts.map +1 -0
  250. package/lib/cjs/render/webgl/IndexedEdgeGeometry.js +90 -0
  251. package/lib/cjs/render/webgl/IndexedEdgeGeometry.js.map +1 -0
  252. package/lib/cjs/render/webgl/InstancedGeometry.d.ts +6 -5
  253. package/lib/cjs/render/webgl/InstancedGeometry.d.ts.map +1 -1
  254. package/lib/cjs/render/webgl/InstancedGeometry.js +2 -1
  255. package/lib/cjs/render/webgl/InstancedGeometry.js.map +1 -1
  256. package/lib/cjs/render/webgl/Material.d.ts +1 -1
  257. package/lib/cjs/render/webgl/Material.d.ts.map +1 -1
  258. package/lib/cjs/render/webgl/Material.js.map +1 -1
  259. package/lib/cjs/render/webgl/Mesh.d.ts +8 -162
  260. package/lib/cjs/render/webgl/Mesh.d.ts.map +1 -1
  261. package/lib/cjs/render/webgl/Mesh.js +18 -458
  262. package/lib/cjs/render/webgl/Mesh.js.map +1 -1
  263. package/lib/cjs/render/webgl/MeshData.d.ts +38 -0
  264. package/lib/cjs/render/webgl/MeshData.d.ts.map +1 -0
  265. package/lib/cjs/render/webgl/MeshData.js +66 -0
  266. package/lib/cjs/render/webgl/MeshData.js.map +1 -0
  267. package/lib/cjs/render/webgl/MeshGeometry.d.ts +38 -0
  268. package/lib/cjs/render/webgl/MeshGeometry.d.ts.map +1 -0
  269. package/lib/cjs/render/webgl/MeshGeometry.js +59 -0
  270. package/lib/cjs/render/webgl/MeshGeometry.js.map +1 -0
  271. package/lib/cjs/render/webgl/PlanarClassifier.d.ts.map +1 -1
  272. package/lib/cjs/render/webgl/PlanarClassifier.js +8 -4
  273. package/lib/cjs/render/webgl/PlanarClassifier.js.map +1 -1
  274. package/lib/cjs/render/webgl/PlanarGrid.d.ts +2 -3
  275. package/lib/cjs/render/webgl/PlanarGrid.d.ts.map +1 -1
  276. package/lib/cjs/render/webgl/PlanarGrid.js +3 -3
  277. package/lib/cjs/render/webgl/PlanarGrid.js.map +1 -1
  278. package/lib/cjs/render/webgl/PlanarTextureProjection.d.ts.map +1 -1
  279. package/lib/cjs/render/webgl/PlanarTextureProjection.js +1 -0
  280. package/lib/cjs/render/webgl/PlanarTextureProjection.js.map +1 -1
  281. package/lib/cjs/render/webgl/PointCloud.d.ts +2 -2
  282. package/lib/cjs/render/webgl/PointCloud.d.ts.map +1 -1
  283. package/lib/cjs/render/webgl/PointCloud.js +2 -2
  284. package/lib/cjs/render/webgl/PointCloud.js.map +1 -1
  285. package/lib/cjs/render/webgl/PointString.d.ts +3 -3
  286. package/lib/cjs/render/webgl/PointString.d.ts.map +1 -1
  287. package/lib/cjs/render/webgl/PointString.js +1 -1
  288. package/lib/cjs/render/webgl/PointString.js.map +1 -1
  289. package/lib/cjs/render/webgl/Polyline.d.ts +3 -3
  290. package/lib/cjs/render/webgl/Polyline.d.ts.map +1 -1
  291. package/lib/cjs/render/webgl/Polyline.js +6 -6
  292. package/lib/cjs/render/webgl/Polyline.js.map +1 -1
  293. package/lib/cjs/render/webgl/Primitive.d.ts +2 -2
  294. package/lib/cjs/render/webgl/Primitive.d.ts.map +1 -1
  295. package/lib/cjs/render/webgl/Primitive.js +5 -5
  296. package/lib/cjs/render/webgl/Primitive.js.map +1 -1
  297. package/lib/cjs/render/webgl/RealityMesh.d.ts +2 -2
  298. package/lib/cjs/render/webgl/RealityMesh.d.ts.map +1 -1
  299. package/lib/cjs/render/webgl/RealityMesh.js +9 -9
  300. package/lib/cjs/render/webgl/RealityMesh.js.map +1 -1
  301. package/lib/cjs/render/webgl/RenderCommands.d.ts +6 -2
  302. package/lib/cjs/render/webgl/RenderCommands.d.ts.map +1 -1
  303. package/lib/cjs/render/webgl/RenderCommands.js +81 -48
  304. package/lib/cjs/render/webgl/RenderCommands.js.map +1 -1
  305. package/lib/cjs/render/webgl/RenderFlags.d.ts +48 -1
  306. package/lib/cjs/render/webgl/RenderFlags.d.ts.map +1 -1
  307. package/lib/cjs/render/webgl/RenderFlags.js +64 -2
  308. package/lib/cjs/render/webgl/RenderFlags.js.map +1 -1
  309. package/lib/cjs/render/webgl/SceneCompositor.js +10 -9
  310. package/lib/cjs/render/webgl/SceneCompositor.js.map +1 -1
  311. package/lib/cjs/render/webgl/ScreenSpaceEffect.js +1 -1
  312. package/lib/cjs/render/webgl/ShaderBuilder.d.ts +23 -20
  313. package/lib/cjs/render/webgl/ShaderBuilder.d.ts.map +1 -1
  314. package/lib/cjs/render/webgl/ShaderBuilder.js +38 -32
  315. package/lib/cjs/render/webgl/ShaderBuilder.js.map +1 -1
  316. package/lib/cjs/render/webgl/ShaderProgram.d.ts +1 -1
  317. package/lib/cjs/render/webgl/ShaderProgram.d.ts.map +1 -1
  318. package/lib/cjs/render/webgl/ShaderProgram.js +4 -4
  319. package/lib/cjs/render/webgl/ShaderProgram.js.map +1 -1
  320. package/lib/cjs/render/webgl/SolarShadowMap.d.ts.map +1 -1
  321. package/lib/cjs/render/webgl/SolarShadowMap.js +4 -3
  322. package/lib/cjs/render/webgl/SolarShadowMap.js.map +1 -1
  323. package/lib/cjs/render/webgl/SurfaceGeometry.d.ts +54 -0
  324. package/lib/cjs/render/webgl/SurfaceGeometry.d.ts.map +1 -0
  325. package/lib/cjs/render/webgl/SurfaceGeometry.js +248 -0
  326. package/lib/cjs/render/webgl/SurfaceGeometry.js.map +1 -0
  327. package/lib/cjs/render/webgl/System.d.ts +11 -10
  328. package/lib/cjs/render/webgl/System.d.ts.map +1 -1
  329. package/lib/cjs/render/webgl/System.js +32 -21
  330. package/lib/cjs/render/webgl/System.js.map +1 -1
  331. package/lib/cjs/render/webgl/Target.d.ts +13 -1
  332. package/lib/cjs/render/webgl/Target.d.ts.map +1 -1
  333. package/lib/cjs/render/webgl/Target.js +88 -2
  334. package/lib/cjs/render/webgl/Target.js.map +1 -1
  335. package/lib/cjs/render/webgl/Technique.d.ts.map +1 -1
  336. package/lib/cjs/render/webgl/Technique.js +112 -119
  337. package/lib/cjs/render/webgl/Technique.js.map +1 -1
  338. package/lib/cjs/render/webgl/TechniqueFlags.d.ts +7 -1
  339. package/lib/cjs/render/webgl/TechniqueFlags.d.ts.map +1 -1
  340. package/lib/cjs/render/webgl/TechniqueFlags.js +10 -1
  341. package/lib/cjs/render/webgl/TechniqueFlags.js.map +1 -1
  342. package/lib/cjs/render/webgl/TechniqueId.d.ts +29 -28
  343. package/lib/cjs/render/webgl/TechniqueId.d.ts.map +1 -1
  344. package/lib/cjs/render/webgl/TechniqueId.js +7 -7
  345. package/lib/cjs/render/webgl/TechniqueId.js.map +1 -1
  346. package/lib/cjs/render/webgl/Texture.d.ts +15 -12
  347. package/lib/cjs/render/webgl/Texture.d.ts.map +1 -1
  348. package/lib/cjs/render/webgl/Texture.js +26 -23
  349. package/lib/cjs/render/webgl/Texture.js.map +1 -1
  350. package/lib/cjs/render/webgl/glsl/AmbientOcclusion.d.ts.map +1 -1
  351. package/lib/cjs/render/webgl/glsl/AmbientOcclusion.js +83 -18
  352. package/lib/cjs/render/webgl/glsl/AmbientOcclusion.js.map +1 -1
  353. package/lib/cjs/render/webgl/glsl/Animation.js +1 -1
  354. package/lib/cjs/render/webgl/glsl/Blur.js +1 -1
  355. package/lib/cjs/render/webgl/glsl/ClearPickAndColor.js +2 -2
  356. package/lib/cjs/render/webgl/glsl/ClearTranslucent.js +2 -2
  357. package/lib/cjs/render/webgl/glsl/Color.js +1 -1
  358. package/lib/cjs/render/webgl/glsl/Combine3Textures.js +1 -1
  359. package/lib/cjs/render/webgl/glsl/CombineTextures.js +1 -1
  360. package/lib/cjs/render/webgl/glsl/Composite.js +1 -1
  361. package/lib/cjs/render/webgl/glsl/CopyColor.d.ts.map +1 -1
  362. package/lib/cjs/render/webgl/glsl/CopyColor.js +17 -2
  363. package/lib/cjs/render/webgl/glsl/CopyColor.js.map +1 -1
  364. package/lib/cjs/render/webgl/glsl/CopyPickBuffers.js +2 -2
  365. package/lib/cjs/render/webgl/glsl/CopyStencil.d.ts.map +1 -1
  366. package/lib/cjs/render/webgl/glsl/CopyStencil.js +10 -13
  367. package/lib/cjs/render/webgl/glsl/CopyStencil.js.map +1 -1
  368. package/lib/cjs/render/webgl/glsl/EVSMFromDepth.js +2 -2
  369. package/lib/cjs/render/webgl/glsl/EVSMFromDepth.js.map +1 -1
  370. package/lib/cjs/render/webgl/glsl/Edge.d.ts +2 -1
  371. package/lib/cjs/render/webgl/glsl/Edge.d.ts.map +1 -1
  372. package/lib/cjs/render/webgl/glsl/Edge.js +132 -14
  373. package/lib/cjs/render/webgl/glsl/Edge.js.map +1 -1
  374. package/lib/cjs/render/webgl/glsl/FeatureSymbology.d.ts.map +1 -1
  375. package/lib/cjs/render/webgl/glsl/FeatureSymbology.js +43 -21
  376. package/lib/cjs/render/webgl/glsl/FeatureSymbology.js.map +1 -1
  377. package/lib/cjs/render/webgl/glsl/Fragment.d.ts.map +1 -1
  378. package/lib/cjs/render/webgl/glsl/Fragment.js +19 -11
  379. package/lib/cjs/render/webgl/glsl/Fragment.js.map +1 -1
  380. package/lib/cjs/render/webgl/glsl/LogarithmicDepthBuffer.js +1 -1
  381. package/lib/cjs/render/webgl/glsl/LookupTable.d.ts +4 -2
  382. package/lib/cjs/render/webgl/glsl/LookupTable.d.ts.map +1 -1
  383. package/lib/cjs/render/webgl/glsl/LookupTable.js +7 -3
  384. package/lib/cjs/render/webgl/glsl/LookupTable.js.map +1 -1
  385. package/lib/cjs/render/webgl/glsl/PlanarClassification.d.ts.map +1 -1
  386. package/lib/cjs/render/webgl/glsl/PlanarClassification.js +13 -4
  387. package/lib/cjs/render/webgl/glsl/PlanarClassification.js.map +1 -1
  388. package/lib/cjs/render/webgl/glsl/PlanarGrid.js +2 -2
  389. package/lib/cjs/render/webgl/glsl/PlanarGrid.js.map +1 -1
  390. package/lib/cjs/render/webgl/glsl/PointCloud.js +2 -2
  391. package/lib/cjs/render/webgl/glsl/PointCloud.js.map +1 -1
  392. package/lib/cjs/render/webgl/glsl/PointString.js +1 -1
  393. package/lib/cjs/render/webgl/glsl/PointString.js.map +1 -1
  394. package/lib/cjs/render/webgl/glsl/Polyline.js +1 -1
  395. package/lib/cjs/render/webgl/glsl/Polyline.js.map +1 -1
  396. package/lib/cjs/render/webgl/glsl/RealityMesh.d.ts.map +1 -1
  397. package/lib/cjs/render/webgl/glsl/RealityMesh.js +9 -6
  398. package/lib/cjs/render/webgl/glsl/RealityMesh.js.map +1 -1
  399. package/lib/cjs/render/webgl/glsl/ScreenSpaceEffect.js +2 -2
  400. package/lib/cjs/render/webgl/glsl/ScreenSpaceEffect.js.map +1 -1
  401. package/lib/cjs/render/webgl/glsl/SkyBox.js +2 -2
  402. package/lib/cjs/render/webgl/glsl/SkyBox.js.map +1 -1
  403. package/lib/cjs/render/webgl/glsl/SkySphere.js +2 -2
  404. package/lib/cjs/render/webgl/glsl/Surface.d.ts.map +1 -1
  405. package/lib/cjs/render/webgl/glsl/Surface.js +41 -16
  406. package/lib/cjs/render/webgl/glsl/Surface.js.map +1 -1
  407. package/lib/cjs/render/webgl/glsl/Translucency.js +2 -2
  408. package/lib/cjs/render/webgl/glsl/Vertex.js +2 -2
  409. package/lib/cjs/render/webgl/glsl/Vertex.js.map +1 -1
  410. package/lib/cjs/render/webgl/glsl/ViewportQuad.js +1 -1
  411. package/lib/cjs/render/webgl/glsl/ViewportQuad.js.map +1 -1
  412. package/lib/cjs/render/webgl/glsl/Wiremesh.d.ts +9 -0
  413. package/lib/cjs/render/webgl/glsl/Wiremesh.d.ts.map +1 -0
  414. package/lib/cjs/render/webgl/glsl/Wiremesh.js +40 -0
  415. package/lib/cjs/render/webgl/glsl/Wiremesh.js.map +1 -0
  416. package/lib/cjs/render-primitives.d.ts +5 -1
  417. package/lib/cjs/render-primitives.d.ts.map +1 -1
  418. package/lib/cjs/render-primitives.js +5 -1
  419. package/lib/cjs/render-primitives.js.map +1 -1
  420. package/lib/cjs/request/Request.d.ts +167 -0
  421. package/lib/cjs/request/Request.d.ts.map +1 -0
  422. package/lib/cjs/request/Request.js +315 -0
  423. package/lib/cjs/request/Request.js.map +1 -0
  424. package/lib/cjs/tile/B3dmReader.d.ts +2 -1
  425. package/lib/cjs/tile/B3dmReader.d.ts.map +1 -1
  426. package/lib/cjs/tile/B3dmReader.js +11 -7
  427. package/lib/cjs/tile/B3dmReader.js.map +1 -1
  428. package/lib/cjs/tile/CesiumAssetProvider.d.ts +14 -0
  429. package/lib/cjs/tile/CesiumAssetProvider.d.ts.map +1 -0
  430. package/lib/cjs/tile/CesiumAssetProvider.js +35 -0
  431. package/lib/cjs/tile/CesiumAssetProvider.js.map +1 -0
  432. package/lib/cjs/tile/ContextShareProvider.d.ts +22 -0
  433. package/lib/cjs/tile/ContextShareProvider.d.ts.map +1 -0
  434. package/lib/cjs/tile/ContextShareProvider.js +129 -0
  435. package/lib/cjs/tile/ContextShareProvider.js.map +1 -0
  436. package/lib/cjs/tile/DynamicIModelTile.js +9 -3
  437. package/lib/cjs/tile/DynamicIModelTile.js.map +1 -1
  438. package/lib/cjs/tile/GltfReader.d.ts +594 -55
  439. package/lib/cjs/tile/GltfReader.d.ts.map +1 -1
  440. package/lib/cjs/tile/GltfReader.js +703 -264
  441. package/lib/cjs/tile/GltfReader.js.map +1 -1
  442. package/lib/cjs/tile/I3dmReader.d.ts +2 -1
  443. package/lib/cjs/tile/I3dmReader.d.ts.map +1 -1
  444. package/lib/cjs/tile/I3dmReader.js +10 -6
  445. package/lib/cjs/tile/I3dmReader.js.map +1 -1
  446. package/lib/cjs/tile/IModelTile.d.ts.map +1 -1
  447. package/lib/cjs/tile/IModelTile.js +14 -7
  448. package/lib/cjs/tile/IModelTile.js.map +1 -1
  449. package/lib/cjs/tile/IModelTileTree.d.ts +8 -0
  450. package/lib/cjs/tile/IModelTileTree.d.ts.map +1 -1
  451. package/lib/cjs/tile/IModelTileTree.js +36 -1
  452. package/lib/cjs/tile/IModelTileTree.js.map +1 -1
  453. package/lib/cjs/tile/ImdlReader.d.ts +365 -10
  454. package/lib/cjs/tile/ImdlReader.d.ts.map +1 -1
  455. package/lib/cjs/tile/ImdlReader.js +201 -69
  456. package/lib/cjs/tile/ImdlReader.js.map +1 -1
  457. package/lib/cjs/tile/OrbitGtTileTree.d.ts +0 -9
  458. package/lib/cjs/tile/OrbitGtTileTree.d.ts.map +1 -1
  459. package/lib/cjs/tile/OrbitGtTileTree.js +10 -20
  460. package/lib/cjs/tile/OrbitGtTileTree.js.map +1 -1
  461. package/lib/cjs/tile/PrimaryTileTree.d.ts +14 -5
  462. package/lib/cjs/tile/PrimaryTileTree.d.ts.map +1 -1
  463. package/lib/cjs/tile/PrimaryTileTree.js +69 -14
  464. package/lib/cjs/tile/PrimaryTileTree.js.map +1 -1
  465. package/lib/cjs/tile/RealityModelTileTree.d.ts +2 -41
  466. package/lib/cjs/tile/RealityModelTileTree.d.ts.map +1 -1
  467. package/lib/cjs/tile/RealityModelTileTree.js +57 -217
  468. package/lib/cjs/tile/RealityModelTileTree.js.map +1 -1
  469. package/lib/cjs/tile/RealityTileLoader.d.ts +1 -0
  470. package/lib/cjs/tile/RealityTileLoader.d.ts.map +1 -1
  471. package/lib/cjs/tile/RealityTileLoader.js +4 -3
  472. package/lib/cjs/tile/RealityTileLoader.js.map +1 -1
  473. package/lib/cjs/tile/Tile.d.ts.map +1 -1
  474. package/lib/cjs/tile/Tile.js +5 -1
  475. package/lib/cjs/tile/Tile.js.map +1 -1
  476. package/lib/cjs/tile/TileAdmin.d.ts +37 -4
  477. package/lib/cjs/tile/TileAdmin.d.ts.map +1 -1
  478. package/lib/cjs/tile/TileAdmin.js +18 -12
  479. package/lib/cjs/tile/TileAdmin.js.map +1 -1
  480. package/lib/cjs/tile/TileDrawArgs.d.ts +11 -0
  481. package/lib/cjs/tile/TileDrawArgs.d.ts.map +1 -1
  482. package/lib/cjs/tile/TileDrawArgs.js +6 -1
  483. package/lib/cjs/tile/TileDrawArgs.js.map +1 -1
  484. package/lib/cjs/tile/TileTreeReference.d.ts +2 -0
  485. package/lib/cjs/tile/TileTreeReference.d.ts.map +1 -1
  486. package/lib/cjs/tile/TileTreeReference.js +5 -0
  487. package/lib/cjs/tile/TileTreeReference.js.map +1 -1
  488. package/lib/cjs/tile/internal.d.ts +4 -1
  489. package/lib/cjs/tile/internal.d.ts.map +1 -1
  490. package/lib/cjs/tile/internal.js +4 -1
  491. package/lib/cjs/tile/internal.js.map +1 -1
  492. package/lib/cjs/tile/map/ArcGISTileMap.d.ts +22 -0
  493. package/lib/cjs/tile/map/ArcGISTileMap.d.ts.map +1 -0
  494. package/lib/cjs/tile/map/ArcGISTileMap.js +177 -0
  495. package/lib/cjs/tile/map/ArcGISTileMap.js.map +1 -0
  496. package/lib/cjs/tile/map/ArcGisTokenGenerator.js +3 -3
  497. package/lib/cjs/tile/map/ArcGisTokenGenerator.js.map +1 -1
  498. package/lib/cjs/tile/map/ArcGisUtilities.d.ts +1 -1
  499. package/lib/cjs/tile/map/ArcGisUtilities.d.ts.map +1 -1
  500. package/lib/cjs/tile/map/ArcGisUtilities.js +18 -10
  501. package/lib/cjs/tile/map/ArcGisUtilities.js.map +1 -1
  502. package/lib/cjs/tile/map/BingElevation.js +4 -4
  503. package/lib/cjs/tile/map/BingElevation.js.map +1 -1
  504. package/lib/cjs/tile/map/CesiumTerrainProvider.d.ts.map +1 -1
  505. package/lib/cjs/tile/map/CesiumTerrainProvider.js +27 -15
  506. package/lib/cjs/tile/map/CesiumTerrainProvider.js.map +1 -1
  507. package/lib/cjs/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.d.ts +2 -2
  508. package/lib/cjs/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.d.ts.map +1 -1
  509. package/lib/cjs/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js +23 -44
  510. package/lib/cjs/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js.map +1 -1
  511. package/lib/cjs/tile/map/ImageryProviders/BingImageryProvider.js +3 -3
  512. package/lib/cjs/tile/map/ImageryProviders/BingImageryProvider.js.map +1 -1
  513. package/lib/cjs/tile/map/ImageryProviders/WmsMapLayerImageryProvider.d.ts +8 -0
  514. package/lib/cjs/tile/map/ImageryProviders/WmsMapLayerImageryProvider.d.ts.map +1 -1
  515. package/lib/cjs/tile/map/ImageryProviders/WmsMapLayerImageryProvider.js +51 -10
  516. package/lib/cjs/tile/map/ImageryProviders/WmsMapLayerImageryProvider.js.map +1 -1
  517. package/lib/cjs/tile/map/ImageryProviders/WmtsMapLayerImageryProvider.d.ts +6 -1
  518. package/lib/cjs/tile/map/ImageryProviders/WmtsMapLayerImageryProvider.d.ts.map +1 -1
  519. package/lib/cjs/tile/map/ImageryProviders/WmtsMapLayerImageryProvider.js +63 -21
  520. package/lib/cjs/tile/map/ImageryProviders/WmtsMapLayerImageryProvider.js.map +1 -1
  521. package/lib/cjs/tile/map/ImageryTileTree.d.ts +4 -4
  522. package/lib/cjs/tile/map/ImageryTileTree.d.ts.map +1 -1
  523. package/lib/cjs/tile/map/ImageryTileTree.js +20 -24
  524. package/lib/cjs/tile/map/ImageryTileTree.js.map +1 -1
  525. package/lib/cjs/tile/map/MapCartoRectangle.js +1 -1
  526. package/lib/cjs/tile/map/MapCartoRectangle.js.map +1 -1
  527. package/lib/cjs/tile/map/MapLayerAuthentication.d.ts +20 -0
  528. package/lib/cjs/tile/map/MapLayerAuthentication.d.ts.map +1 -0
  529. package/lib/cjs/tile/map/MapLayerAuthentication.js +18 -0
  530. package/lib/cjs/tile/map/MapLayerAuthentication.js.map +1 -0
  531. package/lib/cjs/tile/map/MapLayerFormatRegistry.d.ts +6 -3
  532. package/lib/cjs/tile/map/MapLayerFormatRegistry.d.ts.map +1 -1
  533. package/lib/cjs/tile/map/MapLayerFormatRegistry.js +3 -1
  534. package/lib/cjs/tile/map/MapLayerFormatRegistry.js.map +1 -1
  535. package/lib/cjs/tile/map/MapLayerImageryFormats.d.ts +2 -2
  536. package/lib/cjs/tile/map/MapLayerImageryFormats.d.ts.map +1 -1
  537. package/lib/cjs/tile/map/MapLayerImageryFormats.js +21 -8
  538. package/lib/cjs/tile/map/MapLayerImageryFormats.js.map +1 -1
  539. package/lib/cjs/tile/map/MapLayerImageryProvider.d.ts +18 -6
  540. package/lib/cjs/tile/map/MapLayerImageryProvider.d.ts.map +1 -1
  541. package/lib/cjs/tile/map/MapLayerImageryProvider.js +47 -14
  542. package/lib/cjs/tile/map/MapLayerImageryProvider.js.map +1 -1
  543. package/lib/cjs/tile/map/MapLayerSources.d.ts +3 -11
  544. package/lib/cjs/tile/map/MapLayerSources.d.ts.map +1 -1
  545. package/lib/cjs/tile/map/MapLayerSources.js +5 -34
  546. package/lib/cjs/tile/map/MapLayerSources.js.map +1 -1
  547. package/lib/cjs/tile/map/MapTile.d.ts.map +1 -1
  548. package/lib/cjs/tile/map/MapTile.js +4 -3
  549. package/lib/cjs/tile/map/MapTile.js.map +1 -1
  550. package/lib/cjs/tile/map/MapTileLoader.js +2 -2
  551. package/lib/cjs/tile/map/MapTileLoader.js.map +1 -1
  552. package/lib/cjs/tile/map/MapTileTree.d.ts +1 -1
  553. package/lib/cjs/tile/map/MapTileTree.d.ts.map +1 -1
  554. package/lib/cjs/tile/map/MapTileTree.js +30 -21
  555. package/lib/cjs/tile/map/MapTileTree.js.map +1 -1
  556. package/lib/cjs/tile/map/MapTiledGraphicsProvider.d.ts +3 -3
  557. package/lib/cjs/tile/map/MapTiledGraphicsProvider.d.ts.map +1 -1
  558. package/lib/cjs/tile/map/MapTiledGraphicsProvider.js +4 -6
  559. package/lib/cjs/tile/map/MapTiledGraphicsProvider.js.map +1 -1
  560. package/lib/cjs/tile/map/MapTilingScheme.d.ts +7 -2
  561. package/lib/cjs/tile/map/MapTilingScheme.d.ts.map +1 -1
  562. package/lib/cjs/tile/map/MapTilingScheme.js +21 -8
  563. package/lib/cjs/tile/map/MapTilingScheme.js.map +1 -1
  564. package/lib/cjs/tile/map/QuadId.d.ts +1 -0
  565. package/lib/cjs/tile/map/QuadId.d.ts.map +1 -1
  566. package/lib/cjs/tile/map/QuadId.js +2 -1
  567. package/lib/cjs/tile/map/QuadId.js.map +1 -1
  568. package/lib/cjs/tile/map/TerrainMeshProvider.d.ts +1 -1
  569. package/lib/cjs/tile/map/TerrainMeshProvider.js.map +1 -1
  570. package/lib/cjs/tile/map/WmsCapabilities.d.ts +8 -1
  571. package/lib/cjs/tile/map/WmsCapabilities.d.ts.map +1 -1
  572. package/lib/cjs/tile/map/WmsCapabilities.js +39 -5
  573. package/lib/cjs/tile/map/WmsCapabilities.js.map +1 -1
  574. package/lib/cjs/tile/map/WmtsCapabilities.d.ts +11 -1
  575. package/lib/cjs/tile/map/WmtsCapabilities.d.ts.map +1 -1
  576. package/lib/cjs/tile/map/WmtsCapabilities.js +23 -9
  577. package/lib/cjs/tile/map/WmtsCapabilities.js.map +1 -1
  578. package/lib/cjs/tools/EditManipulator.d.ts.map +1 -1
  579. package/lib/cjs/tools/EditManipulator.js +1 -1
  580. package/lib/cjs/tools/EditManipulator.js.map +1 -1
  581. package/lib/cjs/tools/ElementSetTool.js +2 -2
  582. package/lib/cjs/tools/ElementSetTool.js.map +1 -1
  583. package/lib/cjs/tools/PrimitiveTool.d.ts +4 -4
  584. package/lib/cjs/tools/PrimitiveTool.d.ts.map +1 -1
  585. package/lib/cjs/tools/PrimitiveTool.js +2 -2
  586. package/lib/cjs/tools/PrimitiveTool.js.map +1 -1
  587. package/lib/cjs/tools/Tool.d.ts +29 -1
  588. package/lib/cjs/tools/Tool.d.ts.map +1 -1
  589. package/lib/cjs/tools/Tool.js +66 -0
  590. package/lib/cjs/tools/Tool.js.map +1 -1
  591. package/lib/cjs/tools/ToolAdmin.d.ts.map +1 -1
  592. package/lib/cjs/tools/ToolAdmin.js +20 -10
  593. package/lib/cjs/tools/ToolAdmin.js.map +1 -1
  594. package/lib/cjs/tools/ViewTool.d.ts.map +1 -1
  595. package/lib/cjs/tools/ViewTool.js +3 -11
  596. package/lib/cjs/tools/ViewTool.js.map +1 -1
  597. package/lib/cjs/webgl.d.ts +5 -0
  598. package/lib/cjs/webgl.d.ts.map +1 -1
  599. package/lib/cjs/webgl.js +5 -0
  600. package/lib/cjs/webgl.js.map +1 -1
  601. package/lib/esm/AccuSnap.js +3 -3
  602. package/lib/esm/AccuSnap.js.map +1 -1
  603. package/lib/esm/ApproximateTerrainHeights.d.ts.map +1 -1
  604. package/lib/esm/ApproximateTerrainHeights.js +10 -5
  605. package/lib/esm/ApproximateTerrainHeights.js.map +1 -1
  606. package/lib/esm/BackgroundMapGeometry.d.ts +1 -1
  607. package/lib/esm/BackgroundMapGeometry.d.ts.map +1 -1
  608. package/lib/esm/BackgroundMapGeometry.js +2 -2
  609. package/lib/esm/BackgroundMapGeometry.js.map +1 -1
  610. package/lib/esm/BingLocation.js +1 -1
  611. package/lib/esm/BingLocation.js.map +1 -1
  612. package/lib/esm/CheckpointConnection.js +1 -1
  613. package/lib/esm/CheckpointConnection.js.map +1 -1
  614. package/lib/esm/ContextRealityModelState.js +1 -1
  615. package/lib/esm/ContextRealityModelState.js.map +1 -1
  616. package/lib/esm/DisplayStyleState.d.ts +10 -163
  617. package/lib/esm/DisplayStyleState.d.ts.map +1 -1
  618. package/lib/esm/DisplayStyleState.js +70 -346
  619. package/lib/esm/DisplayStyleState.js.map +1 -1
  620. package/lib/esm/DrawingViewState.d.ts +2 -2
  621. package/lib/esm/DrawingViewState.d.ts.map +1 -1
  622. package/lib/esm/DrawingViewState.js +3 -3
  623. package/lib/esm/DrawingViewState.js.map +1 -1
  624. package/lib/esm/ElementLocateManager.d.ts +5 -0
  625. package/lib/esm/ElementLocateManager.d.ts.map +1 -1
  626. package/lib/esm/ElementLocateManager.js +12 -2
  627. package/lib/esm/ElementLocateManager.js.map +1 -1
  628. package/lib/esm/EmphasizeElements.d.ts.map +1 -1
  629. package/lib/esm/EmphasizeElements.js +14 -4
  630. package/lib/esm/EmphasizeElements.js.map +1 -1
  631. package/lib/esm/EnvironmentDecorations.d.ts +39 -0
  632. package/lib/esm/EnvironmentDecorations.d.ts.map +1 -0
  633. package/lib/esm/EnvironmentDecorations.js +199 -0
  634. package/lib/esm/EnvironmentDecorations.js.map +1 -0
  635. package/lib/esm/FrontendHubAccess.d.ts +11 -7
  636. package/lib/esm/FrontendHubAccess.d.ts.map +1 -1
  637. package/lib/esm/FrontendHubAccess.js.map +1 -1
  638. package/lib/esm/FrontendLoggerCategory.d.ts +2 -8
  639. package/lib/esm/FrontendLoggerCategory.d.ts.map +1 -1
  640. package/lib/esm/FrontendLoggerCategory.js +2 -8
  641. package/lib/esm/FrontendLoggerCategory.js.map +1 -1
  642. package/lib/esm/HitDetail.js +7 -7
  643. package/lib/esm/HitDetail.js.map +1 -1
  644. package/lib/esm/IModelApp.d.ts +30 -17
  645. package/lib/esm/IModelApp.d.ts.map +1 -1
  646. package/lib/esm/IModelApp.js +32 -25
  647. package/lib/esm/IModelApp.js.map +1 -1
  648. package/lib/esm/IModelConnection.d.ts +4 -6
  649. package/lib/esm/IModelConnection.d.ts.map +1 -1
  650. package/lib/esm/IModelConnection.js +6 -11
  651. package/lib/esm/IModelConnection.js.map +1 -1
  652. package/lib/esm/IModeljs-css.d.ts.map +1 -1
  653. package/lib/esm/IModeljs-css.js +8 -6
  654. package/lib/esm/IModeljs-css.js.map +1 -1
  655. package/lib/esm/ImageUtil.d.ts +3 -3
  656. package/lib/esm/ImageUtil.d.ts.map +1 -1
  657. package/lib/esm/ImageUtil.js +7 -4
  658. package/lib/esm/ImageUtil.js.map +1 -1
  659. package/lib/esm/LocalhostIpcApp.d.ts +2 -1
  660. package/lib/esm/LocalhostIpcApp.d.ts.map +1 -1
  661. package/lib/esm/LocalhostIpcApp.js +22 -8
  662. package/lib/esm/LocalhostIpcApp.js.map +1 -1
  663. package/lib/esm/Marker.d.ts +9 -2
  664. package/lib/esm/Marker.d.ts.map +1 -1
  665. package/lib/esm/Marker.js +34 -6
  666. package/lib/esm/Marker.js.map +1 -1
  667. package/lib/esm/ModelState.js +1 -1
  668. package/lib/esm/ModelState.js.map +1 -1
  669. package/lib/esm/NativeApp.d.ts +3 -38
  670. package/lib/esm/NativeApp.d.ts.map +1 -1
  671. package/lib/esm/NativeApp.js +1 -69
  672. package/lib/esm/NativeApp.js.map +1 -1
  673. package/lib/esm/NoRenderApp.d.ts +0 -1
  674. package/lib/esm/NoRenderApp.d.ts.map +1 -1
  675. package/lib/esm/NoRenderApp.js +0 -1
  676. package/lib/esm/NoRenderApp.js.map +1 -1
  677. package/lib/esm/NotificationManager.d.ts +3 -1
  678. package/lib/esm/NotificationManager.d.ts.map +1 -1
  679. package/lib/esm/NotificationManager.js +2 -0
  680. package/lib/esm/NotificationManager.js.map +1 -1
  681. package/lib/esm/RealityDataSource.d.ts +59 -29
  682. package/lib/esm/RealityDataSource.d.ts.map +1 -1
  683. package/lib/esm/RealityDataSource.js +247 -92
  684. package/lib/esm/RealityDataSource.js.map +1 -1
  685. package/lib/esm/RenderScheduleState.d.ts +2 -0
  686. package/lib/esm/RenderScheduleState.d.ts.map +1 -1
  687. package/lib/esm/RenderScheduleState.js +8 -4
  688. package/lib/esm/RenderScheduleState.js.map +1 -1
  689. package/lib/esm/SheetViewState.d.ts +2 -2
  690. package/lib/esm/SheetViewState.d.ts.map +1 -1
  691. package/lib/esm/SheetViewState.js +7 -6
  692. package/lib/esm/SheetViewState.js.map +1 -1
  693. package/lib/esm/SpatialViewState.d.ts +10 -2
  694. package/lib/esm/SpatialViewState.d.ts.map +1 -1
  695. package/lib/esm/SpatialViewState.js +12 -2
  696. package/lib/esm/SpatialViewState.js.map +1 -1
  697. package/lib/esm/SubCategoriesCache.js +1 -1
  698. package/lib/esm/SubCategoriesCache.js.map +1 -1
  699. package/lib/esm/Tiles.d.ts +11 -1
  700. package/lib/esm/Tiles.d.ts.map +1 -1
  701. package/lib/esm/Tiles.js +7 -0
  702. package/lib/esm/Tiles.js.map +1 -1
  703. package/lib/esm/TwoWayViewportSync.d.ts +35 -6
  704. package/lib/esm/TwoWayViewportSync.d.ts.map +1 -1
  705. package/lib/esm/TwoWayViewportSync.js +49 -10
  706. package/lib/esm/TwoWayViewportSync.js.map +1 -1
  707. package/lib/esm/UserPreferences.d.ts +72 -0
  708. package/lib/esm/UserPreferences.d.ts.map +1 -0
  709. package/lib/esm/UserPreferences.js +6 -0
  710. package/lib/esm/UserPreferences.js.map +1 -0
  711. package/lib/esm/ViewContext.d.ts +3 -1
  712. package/lib/esm/ViewContext.d.ts.map +1 -1
  713. package/lib/esm/ViewContext.js +4 -0
  714. package/lib/esm/ViewContext.js.map +1 -1
  715. package/lib/esm/ViewCreator2d.js +3 -3
  716. package/lib/esm/ViewCreator2d.js.map +1 -1
  717. package/lib/esm/ViewCreator3d.d.ts +1 -1
  718. package/lib/esm/ViewCreator3d.d.ts.map +1 -1
  719. package/lib/esm/ViewCreator3d.js +5 -6
  720. package/lib/esm/ViewCreator3d.js.map +1 -1
  721. package/lib/esm/ViewManager.d.ts +6 -6
  722. package/lib/esm/ViewManager.d.ts.map +1 -1
  723. package/lib/esm/ViewManager.js +13 -13
  724. package/lib/esm/ViewManager.js.map +1 -1
  725. package/lib/esm/ViewState.d.ts +11 -5
  726. package/lib/esm/ViewState.d.ts.map +1 -1
  727. package/lib/esm/ViewState.js +21 -66
  728. package/lib/esm/ViewState.js.map +1 -1
  729. package/lib/esm/ViewingSpace.js +1 -1
  730. package/lib/esm/ViewingSpace.js.map +1 -1
  731. package/lib/esm/Viewport.d.ts +57 -11
  732. package/lib/esm/Viewport.d.ts.map +1 -1
  733. package/lib/esm/Viewport.js +56 -32
  734. package/lib/esm/Viewport.js.map +1 -1
  735. package/lib/esm/core-frontend.d.ts +10 -24
  736. package/lib/esm/core-frontend.d.ts.map +1 -1
  737. package/lib/esm/core-frontend.js +10 -24
  738. package/lib/esm/core-frontend.js.map +1 -1
  739. package/lib/esm/quantity-formatting/BaseUnitFormattingSettingsProvider.d.ts +3 -2
  740. package/lib/esm/quantity-formatting/BaseUnitFormattingSettingsProvider.d.ts.map +1 -1
  741. package/lib/esm/quantity-formatting/BaseUnitFormattingSettingsProvider.js +3 -2
  742. package/lib/esm/quantity-formatting/BaseUnitFormattingSettingsProvider.js.map +1 -1
  743. package/lib/esm/quantity-formatting/BasicUnitsProvider.d.ts +5 -1
  744. package/lib/esm/quantity-formatting/BasicUnitsProvider.d.ts.map +1 -1
  745. package/lib/esm/quantity-formatting/BasicUnitsProvider.js +18 -4
  746. package/lib/esm/quantity-formatting/BasicUnitsProvider.js.map +1 -1
  747. package/lib/esm/quantity-formatting/QuantityFormatter.d.ts +26 -3
  748. package/lib/esm/quantity-formatting/QuantityFormatter.d.ts.map +1 -1
  749. package/lib/esm/quantity-formatting/QuantityFormatter.js +45 -7
  750. package/lib/esm/quantity-formatting/QuantityFormatter.js.map +1 -1
  751. package/lib/esm/render/FeatureSymbology.d.ts.map +1 -1
  752. package/lib/esm/render/FeatureSymbology.js +3 -3
  753. package/lib/esm/render/FeatureSymbology.js.map +1 -1
  754. package/lib/esm/render/GraphicBranch.d.ts +18 -2
  755. package/lib/esm/render/GraphicBranch.d.ts.map +1 -1
  756. package/lib/esm/render/GraphicBranch.js +8 -0
  757. package/lib/esm/render/GraphicBranch.js.map +1 -1
  758. package/lib/esm/render/GraphicBuilder.d.ts +7 -1
  759. package/lib/esm/render/GraphicBuilder.d.ts.map +1 -1
  760. package/lib/esm/render/GraphicBuilder.js.map +1 -1
  761. package/lib/esm/render/MockRender.d.ts +3 -1
  762. package/lib/esm/render/MockRender.d.ts.map +1 -1
  763. package/lib/esm/render/MockRender.js.map +1 -1
  764. package/lib/esm/render/RenderMemory.d.ts +21 -15
  765. package/lib/esm/render/RenderMemory.d.ts.map +1 -1
  766. package/lib/esm/render/RenderMemory.js +21 -15
  767. package/lib/esm/render/RenderMemory.js.map +1 -1
  768. package/lib/esm/render/RenderSystem.d.ts +38 -7
  769. package/lib/esm/render/RenderSystem.d.ts.map +1 -1
  770. package/lib/esm/render/RenderSystem.js +24 -9
  771. package/lib/esm/render/RenderSystem.js.map +1 -1
  772. package/lib/esm/render/RenderTarget.d.ts +10 -2
  773. package/lib/esm/render/RenderTarget.d.ts.map +1 -1
  774. package/lib/esm/render/RenderTarget.js +2 -1
  775. package/lib/esm/render/RenderTarget.js.map +1 -1
  776. package/lib/esm/render/RenderTexture.d.ts +2 -17
  777. package/lib/esm/render/RenderTexture.d.ts.map +1 -1
  778. package/lib/esm/render/RenderTexture.js +1 -16
  779. package/lib/esm/render/RenderTexture.js.map +1 -1
  780. package/lib/esm/render/primitives/EdgeParams.d.ts +84 -0
  781. package/lib/esm/render/primitives/EdgeParams.d.ts.map +1 -0
  782. package/lib/esm/render/primitives/EdgeParams.js +217 -0
  783. package/lib/esm/render/primitives/EdgeParams.js.map +1 -0
  784. package/lib/esm/render/primitives/PointStringParams.d.ts +16 -0
  785. package/lib/esm/render/primitives/PointStringParams.d.ts.map +1 -0
  786. package/lib/esm/render/primitives/PointStringParams.js +39 -0
  787. package/lib/esm/render/primitives/PointStringParams.js.map +1 -0
  788. package/lib/esm/render/primitives/PolylineParams.d.ts +44 -0
  789. package/lib/esm/render/primitives/PolylineParams.d.ts.map +1 -0
  790. package/lib/esm/render/primitives/PolylineParams.js +199 -0
  791. package/lib/esm/render/primitives/PolylineParams.js.map +1 -0
  792. package/lib/esm/render/primitives/Primitives.d.ts +1 -1
  793. package/lib/esm/render/primitives/Primitives.d.ts.map +1 -1
  794. package/lib/esm/render/primitives/Primitives.js.map +1 -1
  795. package/lib/esm/render/primitives/SurfaceParams.d.ts +46 -0
  796. package/lib/esm/render/primitives/SurfaceParams.d.ts.map +1 -0
  797. package/lib/esm/render/primitives/SurfaceParams.js +37 -0
  798. package/lib/esm/render/primitives/SurfaceParams.js.map +1 -0
  799. package/lib/esm/render/primitives/VertexTable.d.ts +4 -123
  800. package/lib/esm/render/primitives/VertexTable.d.ts.map +1 -1
  801. package/lib/esm/render/primitives/VertexTable.js +11 -342
  802. package/lib/esm/render/primitives/VertexTable.js.map +1 -1
  803. package/lib/esm/render/primitives/geometry/GeometryAccumulator.d.ts +2 -0
  804. package/lib/esm/render/primitives/geometry/GeometryAccumulator.d.ts.map +1 -1
  805. package/lib/esm/render/primitives/geometry/GeometryAccumulator.js +2 -1
  806. package/lib/esm/render/primitives/geometry/GeometryAccumulator.js.map +1 -1
  807. package/lib/esm/render/primitives/geometry/GeometryListBuilder.d.ts.map +1 -1
  808. package/lib/esm/render/primitives/geometry/GeometryListBuilder.js +1 -0
  809. package/lib/esm/render/primitives/geometry/GeometryListBuilder.js.map +1 -1
  810. package/lib/esm/render/primitives/mesh/MeshPrimitives.d.ts +2 -2
  811. package/lib/esm/render/primitives/mesh/MeshPrimitives.d.ts.map +1 -1
  812. package/lib/esm/render/primitives/mesh/MeshPrimitives.js +3 -3
  813. package/lib/esm/render/primitives/mesh/MeshPrimitives.js.map +1 -1
  814. package/lib/esm/render/primitives/mesh/TerrainMeshPrimitive.d.ts +1 -1
  815. package/lib/esm/render/primitives/mesh/TerrainMeshPrimitive.js +1 -1
  816. package/lib/esm/render/primitives/mesh/TerrainMeshPrimitive.js.map +1 -1
  817. package/lib/esm/render/webgl/AttributeMap.js +5 -5
  818. package/lib/esm/render/webgl/BackgroundMapDrape.js +2 -2
  819. package/lib/esm/render/webgl/BackgroundMapDrape.js.map +1 -1
  820. package/lib/esm/render/webgl/BranchUniforms.d.ts.map +1 -1
  821. package/lib/esm/render/webgl/BranchUniforms.js +8 -5
  822. package/lib/esm/render/webgl/BranchUniforms.js.map +1 -1
  823. package/lib/esm/render/webgl/CachedGeometry.d.ts +16 -11
  824. package/lib/esm/render/webgl/CachedGeometry.d.ts.map +1 -1
  825. package/lib/esm/render/webgl/CachedGeometry.js +26 -23
  826. package/lib/esm/render/webgl/CachedGeometry.js.map +1 -1
  827. package/lib/esm/render/webgl/DrawCommand.d.ts +2 -3
  828. package/lib/esm/render/webgl/DrawCommand.d.ts.map +1 -1
  829. package/lib/esm/render/webgl/DrawCommand.js +6 -4
  830. package/lib/esm/render/webgl/DrawCommand.js.map +1 -1
  831. package/lib/esm/render/webgl/EdgeGeometry.d.ts +73 -0
  832. package/lib/esm/render/webgl/EdgeGeometry.d.ts.map +1 -0
  833. package/lib/esm/render/webgl/EdgeGeometry.js +135 -0
  834. package/lib/esm/render/webgl/EdgeGeometry.js.map +1 -0
  835. package/lib/esm/render/webgl/FeatureOverrides.d.ts +2 -0
  836. package/lib/esm/render/webgl/FeatureOverrides.d.ts.map +1 -1
  837. package/lib/esm/render/webgl/FeatureOverrides.js +11 -3
  838. package/lib/esm/render/webgl/FeatureOverrides.js.map +1 -1
  839. package/lib/esm/render/webgl/FloatRGBA.d.ts.map +1 -1
  840. package/lib/esm/render/webgl/FloatRGBA.js +13 -11
  841. package/lib/esm/render/webgl/FloatRGBA.js.map +1 -1
  842. package/lib/esm/render/webgl/Graphic.d.ts +13 -0
  843. package/lib/esm/render/webgl/Graphic.d.ts.map +1 -1
  844. package/lib/esm/render/webgl/Graphic.js +39 -2
  845. package/lib/esm/render/webgl/Graphic.js.map +1 -1
  846. package/lib/esm/render/webgl/IndexedEdgeGeometry.d.ts +51 -0
  847. package/lib/esm/render/webgl/IndexedEdgeGeometry.d.ts.map +1 -0
  848. package/lib/esm/render/webgl/IndexedEdgeGeometry.js +85 -0
  849. package/lib/esm/render/webgl/IndexedEdgeGeometry.js.map +1 -0
  850. package/lib/esm/render/webgl/InstancedGeometry.d.ts +6 -5
  851. package/lib/esm/render/webgl/InstancedGeometry.d.ts.map +1 -1
  852. package/lib/esm/render/webgl/InstancedGeometry.js +2 -1
  853. package/lib/esm/render/webgl/InstancedGeometry.js.map +1 -1
  854. package/lib/esm/render/webgl/Material.d.ts +1 -1
  855. package/lib/esm/render/webgl/Material.d.ts.map +1 -1
  856. package/lib/esm/render/webgl/Material.js.map +1 -1
  857. package/lib/esm/render/webgl/Mesh.d.ts +8 -162
  858. package/lib/esm/render/webgl/Mesh.d.ts.map +1 -1
  859. package/lib/esm/render/webgl/Mesh.js +12 -445
  860. package/lib/esm/render/webgl/Mesh.js.map +1 -1
  861. package/lib/esm/render/webgl/MeshData.d.ts +38 -0
  862. package/lib/esm/render/webgl/MeshData.d.ts.map +1 -0
  863. package/lib/esm/render/webgl/MeshData.js +62 -0
  864. package/lib/esm/render/webgl/MeshData.js.map +1 -0
  865. package/lib/esm/render/webgl/MeshGeometry.d.ts +38 -0
  866. package/lib/esm/render/webgl/MeshGeometry.d.ts.map +1 -0
  867. package/lib/esm/render/webgl/MeshGeometry.js +55 -0
  868. package/lib/esm/render/webgl/MeshGeometry.js.map +1 -0
  869. package/lib/esm/render/webgl/PlanarClassifier.d.ts.map +1 -1
  870. package/lib/esm/render/webgl/PlanarClassifier.js +9 -5
  871. package/lib/esm/render/webgl/PlanarClassifier.js.map +1 -1
  872. package/lib/esm/render/webgl/PlanarGrid.d.ts +2 -3
  873. package/lib/esm/render/webgl/PlanarGrid.d.ts.map +1 -1
  874. package/lib/esm/render/webgl/PlanarGrid.js +3 -3
  875. package/lib/esm/render/webgl/PlanarGrid.js.map +1 -1
  876. package/lib/esm/render/webgl/PlanarTextureProjection.d.ts.map +1 -1
  877. package/lib/esm/render/webgl/PlanarTextureProjection.js +1 -0
  878. package/lib/esm/render/webgl/PlanarTextureProjection.js.map +1 -1
  879. package/lib/esm/render/webgl/PointCloud.d.ts +2 -2
  880. package/lib/esm/render/webgl/PointCloud.d.ts.map +1 -1
  881. package/lib/esm/render/webgl/PointCloud.js +2 -2
  882. package/lib/esm/render/webgl/PointCloud.js.map +1 -1
  883. package/lib/esm/render/webgl/PointString.d.ts +3 -3
  884. package/lib/esm/render/webgl/PointString.d.ts.map +1 -1
  885. package/lib/esm/render/webgl/PointString.js +1 -1
  886. package/lib/esm/render/webgl/PointString.js.map +1 -1
  887. package/lib/esm/render/webgl/Polyline.d.ts +3 -3
  888. package/lib/esm/render/webgl/Polyline.d.ts.map +1 -1
  889. package/lib/esm/render/webgl/Polyline.js +6 -6
  890. package/lib/esm/render/webgl/Polyline.js.map +1 -1
  891. package/lib/esm/render/webgl/Primitive.d.ts +2 -2
  892. package/lib/esm/render/webgl/Primitive.d.ts.map +1 -1
  893. package/lib/esm/render/webgl/Primitive.js +5 -5
  894. package/lib/esm/render/webgl/Primitive.js.map +1 -1
  895. package/lib/esm/render/webgl/RealityMesh.d.ts +2 -2
  896. package/lib/esm/render/webgl/RealityMesh.d.ts.map +1 -1
  897. package/lib/esm/render/webgl/RealityMesh.js +9 -9
  898. package/lib/esm/render/webgl/RealityMesh.js.map +1 -1
  899. package/lib/esm/render/webgl/RenderCommands.d.ts +6 -2
  900. package/lib/esm/render/webgl/RenderCommands.d.ts.map +1 -1
  901. package/lib/esm/render/webgl/RenderCommands.js +78 -45
  902. package/lib/esm/render/webgl/RenderCommands.js.map +1 -1
  903. package/lib/esm/render/webgl/RenderFlags.d.ts +48 -1
  904. package/lib/esm/render/webgl/RenderFlags.d.ts.map +1 -1
  905. package/lib/esm/render/webgl/RenderFlags.js +63 -1
  906. package/lib/esm/render/webgl/RenderFlags.js.map +1 -1
  907. package/lib/esm/render/webgl/SceneCompositor.js +10 -9
  908. package/lib/esm/render/webgl/SceneCompositor.js.map +1 -1
  909. package/lib/esm/render/webgl/ScreenSpaceEffect.js +1 -1
  910. package/lib/esm/render/webgl/ShaderBuilder.d.ts +23 -20
  911. package/lib/esm/render/webgl/ShaderBuilder.d.ts.map +1 -1
  912. package/lib/esm/render/webgl/ShaderBuilder.js +38 -32
  913. package/lib/esm/render/webgl/ShaderBuilder.js.map +1 -1
  914. package/lib/esm/render/webgl/ShaderProgram.d.ts +1 -1
  915. package/lib/esm/render/webgl/ShaderProgram.d.ts.map +1 -1
  916. package/lib/esm/render/webgl/ShaderProgram.js +4 -4
  917. package/lib/esm/render/webgl/ShaderProgram.js.map +1 -1
  918. package/lib/esm/render/webgl/SolarShadowMap.d.ts.map +1 -1
  919. package/lib/esm/render/webgl/SolarShadowMap.js +5 -4
  920. package/lib/esm/render/webgl/SolarShadowMap.js.map +1 -1
  921. package/lib/esm/render/webgl/SurfaceGeometry.d.ts +54 -0
  922. package/lib/esm/render/webgl/SurfaceGeometry.d.ts.map +1 -0
  923. package/lib/esm/render/webgl/SurfaceGeometry.js +243 -0
  924. package/lib/esm/render/webgl/SurfaceGeometry.js.map +1 -0
  925. package/lib/esm/render/webgl/System.d.ts +11 -10
  926. package/lib/esm/render/webgl/System.d.ts.map +1 -1
  927. package/lib/esm/render/webgl/System.js +34 -23
  928. package/lib/esm/render/webgl/System.js.map +1 -1
  929. package/lib/esm/render/webgl/Target.d.ts +13 -1
  930. package/lib/esm/render/webgl/Target.d.ts.map +1 -1
  931. package/lib/esm/render/webgl/Target.js +88 -2
  932. package/lib/esm/render/webgl/Target.js.map +1 -1
  933. package/lib/esm/render/webgl/Technique.d.ts.map +1 -1
  934. package/lib/esm/render/webgl/Technique.js +112 -119
  935. package/lib/esm/render/webgl/Technique.js.map +1 -1
  936. package/lib/esm/render/webgl/TechniqueFlags.d.ts +7 -1
  937. package/lib/esm/render/webgl/TechniqueFlags.d.ts.map +1 -1
  938. package/lib/esm/render/webgl/TechniqueFlags.js +10 -1
  939. package/lib/esm/render/webgl/TechniqueFlags.js.map +1 -1
  940. package/lib/esm/render/webgl/TechniqueId.d.ts +29 -28
  941. package/lib/esm/render/webgl/TechniqueId.d.ts.map +1 -1
  942. package/lib/esm/render/webgl/TechniqueId.js +7 -7
  943. package/lib/esm/render/webgl/TechniqueId.js.map +1 -1
  944. package/lib/esm/render/webgl/Texture.d.ts +15 -12
  945. package/lib/esm/render/webgl/Texture.d.ts.map +1 -1
  946. package/lib/esm/render/webgl/Texture.js +27 -24
  947. package/lib/esm/render/webgl/Texture.js.map +1 -1
  948. package/lib/esm/render/webgl/glsl/AmbientOcclusion.d.ts.map +1 -1
  949. package/lib/esm/render/webgl/glsl/AmbientOcclusion.js +84 -19
  950. package/lib/esm/render/webgl/glsl/AmbientOcclusion.js.map +1 -1
  951. package/lib/esm/render/webgl/glsl/Animation.js +1 -1
  952. package/lib/esm/render/webgl/glsl/Blur.js +1 -1
  953. package/lib/esm/render/webgl/glsl/ClearPickAndColor.js +2 -2
  954. package/lib/esm/render/webgl/glsl/ClearTranslucent.js +2 -2
  955. package/lib/esm/render/webgl/glsl/Color.js +1 -1
  956. package/lib/esm/render/webgl/glsl/Combine3Textures.js +1 -1
  957. package/lib/esm/render/webgl/glsl/CombineTextures.js +1 -1
  958. package/lib/esm/render/webgl/glsl/Composite.js +1 -1
  959. package/lib/esm/render/webgl/glsl/CopyColor.d.ts.map +1 -1
  960. package/lib/esm/render/webgl/glsl/CopyColor.js +17 -2
  961. package/lib/esm/render/webgl/glsl/CopyColor.js.map +1 -1
  962. package/lib/esm/render/webgl/glsl/CopyPickBuffers.js +2 -2
  963. package/lib/esm/render/webgl/glsl/CopyStencil.d.ts.map +1 -1
  964. package/lib/esm/render/webgl/glsl/CopyStencil.js +10 -13
  965. package/lib/esm/render/webgl/glsl/CopyStencil.js.map +1 -1
  966. package/lib/esm/render/webgl/glsl/EVSMFromDepth.js +2 -2
  967. package/lib/esm/render/webgl/glsl/EVSMFromDepth.js.map +1 -1
  968. package/lib/esm/render/webgl/glsl/Edge.d.ts +2 -1
  969. package/lib/esm/render/webgl/glsl/Edge.d.ts.map +1 -1
  970. package/lib/esm/render/webgl/glsl/Edge.js +132 -14
  971. package/lib/esm/render/webgl/glsl/Edge.js.map +1 -1
  972. package/lib/esm/render/webgl/glsl/FeatureSymbology.d.ts.map +1 -1
  973. package/lib/esm/render/webgl/glsl/FeatureSymbology.js +44 -22
  974. package/lib/esm/render/webgl/glsl/FeatureSymbology.js.map +1 -1
  975. package/lib/esm/render/webgl/glsl/Fragment.d.ts.map +1 -1
  976. package/lib/esm/render/webgl/glsl/Fragment.js +19 -11
  977. package/lib/esm/render/webgl/glsl/Fragment.js.map +1 -1
  978. package/lib/esm/render/webgl/glsl/LogarithmicDepthBuffer.js +1 -1
  979. package/lib/esm/render/webgl/glsl/LookupTable.d.ts +4 -2
  980. package/lib/esm/render/webgl/glsl/LookupTable.d.ts.map +1 -1
  981. package/lib/esm/render/webgl/glsl/LookupTable.js +7 -3
  982. package/lib/esm/render/webgl/glsl/LookupTable.js.map +1 -1
  983. package/lib/esm/render/webgl/glsl/PlanarClassification.d.ts.map +1 -1
  984. package/lib/esm/render/webgl/glsl/PlanarClassification.js +13 -4
  985. package/lib/esm/render/webgl/glsl/PlanarClassification.js.map +1 -1
  986. package/lib/esm/render/webgl/glsl/PlanarGrid.js +2 -2
  987. package/lib/esm/render/webgl/glsl/PlanarGrid.js.map +1 -1
  988. package/lib/esm/render/webgl/glsl/PointCloud.js +2 -2
  989. package/lib/esm/render/webgl/glsl/PointCloud.js.map +1 -1
  990. package/lib/esm/render/webgl/glsl/PointString.js +1 -1
  991. package/lib/esm/render/webgl/glsl/PointString.js.map +1 -1
  992. package/lib/esm/render/webgl/glsl/Polyline.js +1 -1
  993. package/lib/esm/render/webgl/glsl/Polyline.js.map +1 -1
  994. package/lib/esm/render/webgl/glsl/RealityMesh.d.ts.map +1 -1
  995. package/lib/esm/render/webgl/glsl/RealityMesh.js +9 -6
  996. package/lib/esm/render/webgl/glsl/RealityMesh.js.map +1 -1
  997. package/lib/esm/render/webgl/glsl/ScreenSpaceEffect.js +2 -2
  998. package/lib/esm/render/webgl/glsl/ScreenSpaceEffect.js.map +1 -1
  999. package/lib/esm/render/webgl/glsl/SkyBox.js +2 -2
  1000. package/lib/esm/render/webgl/glsl/SkyBox.js.map +1 -1
  1001. package/lib/esm/render/webgl/glsl/SkySphere.js +2 -2
  1002. package/lib/esm/render/webgl/glsl/Surface.d.ts.map +1 -1
  1003. package/lib/esm/render/webgl/glsl/Surface.js +41 -16
  1004. package/lib/esm/render/webgl/glsl/Surface.js.map +1 -1
  1005. package/lib/esm/render/webgl/glsl/Translucency.js +2 -2
  1006. package/lib/esm/render/webgl/glsl/Vertex.js +3 -3
  1007. package/lib/esm/render/webgl/glsl/Vertex.js.map +1 -1
  1008. package/lib/esm/render/webgl/glsl/ViewportQuad.js +1 -1
  1009. package/lib/esm/render/webgl/glsl/ViewportQuad.js.map +1 -1
  1010. package/lib/esm/render/webgl/glsl/Wiremesh.d.ts +9 -0
  1011. package/lib/esm/render/webgl/glsl/Wiremesh.d.ts.map +1 -0
  1012. package/lib/esm/render/webgl/glsl/Wiremesh.js +36 -0
  1013. package/lib/esm/render/webgl/glsl/Wiremesh.js.map +1 -0
  1014. package/lib/esm/render-primitives.d.ts +5 -1
  1015. package/lib/esm/render-primitives.d.ts.map +1 -1
  1016. package/lib/esm/render-primitives.js +5 -1
  1017. package/lib/esm/render-primitives.js.map +1 -1
  1018. package/lib/esm/request/Request.d.ts +167 -0
  1019. package/lib/esm/request/Request.d.ts.map +1 -0
  1020. package/lib/esm/request/Request.js +289 -0
  1021. package/lib/esm/request/Request.js.map +1 -0
  1022. package/lib/esm/tile/B3dmReader.d.ts +2 -1
  1023. package/lib/esm/tile/B3dmReader.d.ts.map +1 -1
  1024. package/lib/esm/tile/B3dmReader.js +12 -8
  1025. package/lib/esm/tile/B3dmReader.js.map +1 -1
  1026. package/lib/esm/tile/CesiumAssetProvider.d.ts +14 -0
  1027. package/lib/esm/tile/CesiumAssetProvider.d.ts.map +1 -0
  1028. package/lib/esm/tile/CesiumAssetProvider.js +31 -0
  1029. package/lib/esm/tile/CesiumAssetProvider.js.map +1 -0
  1030. package/lib/esm/tile/ContextShareProvider.d.ts +22 -0
  1031. package/lib/esm/tile/ContextShareProvider.d.ts.map +1 -0
  1032. package/lib/esm/tile/ContextShareProvider.js +125 -0
  1033. package/lib/esm/tile/ContextShareProvider.js.map +1 -0
  1034. package/lib/esm/tile/DynamicIModelTile.js +9 -3
  1035. package/lib/esm/tile/DynamicIModelTile.js.map +1 -1
  1036. package/lib/esm/tile/GltfReader.d.ts +594 -55
  1037. package/lib/esm/tile/GltfReader.d.ts.map +1 -1
  1038. package/lib/esm/tile/GltfReader.js +678 -242
  1039. package/lib/esm/tile/GltfReader.js.map +1 -1
  1040. package/lib/esm/tile/I3dmReader.d.ts +2 -1
  1041. package/lib/esm/tile/I3dmReader.d.ts.map +1 -1
  1042. package/lib/esm/tile/I3dmReader.js +11 -7
  1043. package/lib/esm/tile/I3dmReader.js.map +1 -1
  1044. package/lib/esm/tile/IModelTile.d.ts.map +1 -1
  1045. package/lib/esm/tile/IModelTile.js +14 -7
  1046. package/lib/esm/tile/IModelTile.js.map +1 -1
  1047. package/lib/esm/tile/IModelTileTree.d.ts +8 -0
  1048. package/lib/esm/tile/IModelTileTree.d.ts.map +1 -1
  1049. package/lib/esm/tile/IModelTileTree.js +36 -1
  1050. package/lib/esm/tile/IModelTileTree.js.map +1 -1
  1051. package/lib/esm/tile/ImdlReader.d.ts +365 -10
  1052. package/lib/esm/tile/ImdlReader.d.ts.map +1 -1
  1053. package/lib/esm/tile/ImdlReader.js +198 -67
  1054. package/lib/esm/tile/ImdlReader.js.map +1 -1
  1055. package/lib/esm/tile/OrbitGtTileTree.d.ts +0 -9
  1056. package/lib/esm/tile/OrbitGtTileTree.d.ts.map +1 -1
  1057. package/lib/esm/tile/OrbitGtTileTree.js +10 -20
  1058. package/lib/esm/tile/OrbitGtTileTree.js.map +1 -1
  1059. package/lib/esm/tile/PrimaryTileTree.d.ts +14 -5
  1060. package/lib/esm/tile/PrimaryTileTree.d.ts.map +1 -1
  1061. package/lib/esm/tile/PrimaryTileTree.js +70 -15
  1062. package/lib/esm/tile/PrimaryTileTree.js.map +1 -1
  1063. package/lib/esm/tile/RealityModelTileTree.d.ts +2 -41
  1064. package/lib/esm/tile/RealityModelTileTree.d.ts.map +1 -1
  1065. package/lib/esm/tile/RealityModelTileTree.js +56 -215
  1066. package/lib/esm/tile/RealityModelTileTree.js.map +1 -1
  1067. package/lib/esm/tile/RealityTileLoader.d.ts +1 -0
  1068. package/lib/esm/tile/RealityTileLoader.d.ts.map +1 -1
  1069. package/lib/esm/tile/RealityTileLoader.js +4 -3
  1070. package/lib/esm/tile/RealityTileLoader.js.map +1 -1
  1071. package/lib/esm/tile/Tile.d.ts.map +1 -1
  1072. package/lib/esm/tile/Tile.js +5 -1
  1073. package/lib/esm/tile/Tile.js.map +1 -1
  1074. package/lib/esm/tile/TileAdmin.d.ts +37 -4
  1075. package/lib/esm/tile/TileAdmin.d.ts.map +1 -1
  1076. package/lib/esm/tile/TileAdmin.js +19 -13
  1077. package/lib/esm/tile/TileAdmin.js.map +1 -1
  1078. package/lib/esm/tile/TileDrawArgs.d.ts +11 -0
  1079. package/lib/esm/tile/TileDrawArgs.d.ts.map +1 -1
  1080. package/lib/esm/tile/TileDrawArgs.js +6 -1
  1081. package/lib/esm/tile/TileDrawArgs.js.map +1 -1
  1082. package/lib/esm/tile/TileTreeReference.d.ts +2 -0
  1083. package/lib/esm/tile/TileTreeReference.d.ts.map +1 -1
  1084. package/lib/esm/tile/TileTreeReference.js +5 -0
  1085. package/lib/esm/tile/TileTreeReference.js.map +1 -1
  1086. package/lib/esm/tile/internal.d.ts +4 -1
  1087. package/lib/esm/tile/internal.d.ts.map +1 -1
  1088. package/lib/esm/tile/internal.js +4 -1
  1089. package/lib/esm/tile/internal.js.map +1 -1
  1090. package/lib/esm/tile/map/ArcGISTileMap.d.ts +22 -0
  1091. package/lib/esm/tile/map/ArcGISTileMap.d.ts.map +1 -0
  1092. package/lib/esm/tile/map/ArcGISTileMap.js +173 -0
  1093. package/lib/esm/tile/map/ArcGISTileMap.js.map +1 -0
  1094. package/lib/esm/tile/map/ArcGisTokenGenerator.js +1 -1
  1095. package/lib/esm/tile/map/ArcGisTokenGenerator.js.map +1 -1
  1096. package/lib/esm/tile/map/ArcGisUtilities.d.ts +1 -1
  1097. package/lib/esm/tile/map/ArcGisUtilities.d.ts.map +1 -1
  1098. package/lib/esm/tile/map/ArcGisUtilities.js +14 -6
  1099. package/lib/esm/tile/map/ArcGisUtilities.js.map +1 -1
  1100. package/lib/esm/tile/map/BingElevation.js +1 -1
  1101. package/lib/esm/tile/map/BingElevation.js.map +1 -1
  1102. package/lib/esm/tile/map/CesiumTerrainProvider.d.ts.map +1 -1
  1103. package/lib/esm/tile/map/CesiumTerrainProvider.js +25 -13
  1104. package/lib/esm/tile/map/CesiumTerrainProvider.js.map +1 -1
  1105. package/lib/esm/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.d.ts +2 -2
  1106. package/lib/esm/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.d.ts.map +1 -1
  1107. package/lib/esm/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js +21 -42
  1108. package/lib/esm/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js.map +1 -1
  1109. package/lib/esm/tile/map/ImageryProviders/BingImageryProvider.js +2 -2
  1110. package/lib/esm/tile/map/ImageryProviders/BingImageryProvider.js.map +1 -1
  1111. package/lib/esm/tile/map/ImageryProviders/WmsMapLayerImageryProvider.d.ts +8 -0
  1112. package/lib/esm/tile/map/ImageryProviders/WmsMapLayerImageryProvider.d.ts.map +1 -1
  1113. package/lib/esm/tile/map/ImageryProviders/WmsMapLayerImageryProvider.js +51 -10
  1114. package/lib/esm/tile/map/ImageryProviders/WmsMapLayerImageryProvider.js.map +1 -1
  1115. package/lib/esm/tile/map/ImageryProviders/WmtsMapLayerImageryProvider.d.ts +6 -1
  1116. package/lib/esm/tile/map/ImageryProviders/WmtsMapLayerImageryProvider.d.ts.map +1 -1
  1117. package/lib/esm/tile/map/ImageryProviders/WmtsMapLayerImageryProvider.js +63 -21
  1118. package/lib/esm/tile/map/ImageryProviders/WmtsMapLayerImageryProvider.js.map +1 -1
  1119. package/lib/esm/tile/map/ImageryTileTree.d.ts +4 -4
  1120. package/lib/esm/tile/map/ImageryTileTree.d.ts.map +1 -1
  1121. package/lib/esm/tile/map/ImageryTileTree.js +21 -25
  1122. package/lib/esm/tile/map/ImageryTileTree.js.map +1 -1
  1123. package/lib/esm/tile/map/MapCartoRectangle.js +1 -1
  1124. package/lib/esm/tile/map/MapCartoRectangle.js.map +1 -1
  1125. package/lib/esm/tile/map/MapLayerAuthentication.d.ts +20 -0
  1126. package/lib/esm/tile/map/MapLayerAuthentication.d.ts.map +1 -0
  1127. package/lib/esm/tile/map/MapLayerAuthentication.js +15 -0
  1128. package/lib/esm/tile/map/MapLayerAuthentication.js.map +1 -0
  1129. package/lib/esm/tile/map/MapLayerFormatRegistry.d.ts +6 -3
  1130. package/lib/esm/tile/map/MapLayerFormatRegistry.d.ts.map +1 -1
  1131. package/lib/esm/tile/map/MapLayerFormatRegistry.js +3 -1
  1132. package/lib/esm/tile/map/MapLayerFormatRegistry.js.map +1 -1
  1133. package/lib/esm/tile/map/MapLayerImageryFormats.d.ts +2 -2
  1134. package/lib/esm/tile/map/MapLayerImageryFormats.d.ts.map +1 -1
  1135. package/lib/esm/tile/map/MapLayerImageryFormats.js +22 -9
  1136. package/lib/esm/tile/map/MapLayerImageryFormats.js.map +1 -1
  1137. package/lib/esm/tile/map/MapLayerImageryProvider.d.ts +18 -6
  1138. package/lib/esm/tile/map/MapLayerImageryProvider.d.ts.map +1 -1
  1139. package/lib/esm/tile/map/MapLayerImageryProvider.js +44 -11
  1140. package/lib/esm/tile/map/MapLayerImageryProvider.js.map +1 -1
  1141. package/lib/esm/tile/map/MapLayerSources.d.ts +3 -11
  1142. package/lib/esm/tile/map/MapLayerSources.d.ts.map +1 -1
  1143. package/lib/esm/tile/map/MapLayerSources.js +7 -36
  1144. package/lib/esm/tile/map/MapLayerSources.js.map +1 -1
  1145. package/lib/esm/tile/map/MapTile.d.ts.map +1 -1
  1146. package/lib/esm/tile/map/MapTile.js +4 -3
  1147. package/lib/esm/tile/map/MapTile.js.map +1 -1
  1148. package/lib/esm/tile/map/MapTileLoader.js +1 -1
  1149. package/lib/esm/tile/map/MapTileLoader.js.map +1 -1
  1150. package/lib/esm/tile/map/MapTileTree.d.ts +1 -1
  1151. package/lib/esm/tile/map/MapTileTree.d.ts.map +1 -1
  1152. package/lib/esm/tile/map/MapTileTree.js +30 -21
  1153. package/lib/esm/tile/map/MapTileTree.js.map +1 -1
  1154. package/lib/esm/tile/map/MapTiledGraphicsProvider.d.ts +3 -3
  1155. package/lib/esm/tile/map/MapTiledGraphicsProvider.d.ts.map +1 -1
  1156. package/lib/esm/tile/map/MapTiledGraphicsProvider.js +4 -6
  1157. package/lib/esm/tile/map/MapTiledGraphicsProvider.js.map +1 -1
  1158. package/lib/esm/tile/map/MapTilingScheme.d.ts +7 -2
  1159. package/lib/esm/tile/map/MapTilingScheme.d.ts.map +1 -1
  1160. package/lib/esm/tile/map/MapTilingScheme.js +22 -9
  1161. package/lib/esm/tile/map/MapTilingScheme.js.map +1 -1
  1162. package/lib/esm/tile/map/QuadId.d.ts +1 -0
  1163. package/lib/esm/tile/map/QuadId.d.ts.map +1 -1
  1164. package/lib/esm/tile/map/QuadId.js +2 -1
  1165. package/lib/esm/tile/map/QuadId.js.map +1 -1
  1166. package/lib/esm/tile/map/TerrainMeshProvider.d.ts +1 -1
  1167. package/lib/esm/tile/map/TerrainMeshProvider.js.map +1 -1
  1168. package/lib/esm/tile/map/WmsCapabilities.d.ts +8 -1
  1169. package/lib/esm/tile/map/WmsCapabilities.d.ts.map +1 -1
  1170. package/lib/esm/tile/map/WmsCapabilities.js +37 -3
  1171. package/lib/esm/tile/map/WmsCapabilities.js.map +1 -1
  1172. package/lib/esm/tile/map/WmtsCapabilities.d.ts +11 -1
  1173. package/lib/esm/tile/map/WmtsCapabilities.d.ts.map +1 -1
  1174. package/lib/esm/tile/map/WmtsCapabilities.js +20 -6
  1175. package/lib/esm/tile/map/WmtsCapabilities.js.map +1 -1
  1176. package/lib/esm/tools/EditManipulator.d.ts.map +1 -1
  1177. package/lib/esm/tools/EditManipulator.js +1 -1
  1178. package/lib/esm/tools/EditManipulator.js.map +1 -1
  1179. package/lib/esm/tools/ElementSetTool.js +2 -2
  1180. package/lib/esm/tools/ElementSetTool.js.map +1 -1
  1181. package/lib/esm/tools/PrimitiveTool.d.ts +4 -4
  1182. package/lib/esm/tools/PrimitiveTool.d.ts.map +1 -1
  1183. package/lib/esm/tools/PrimitiveTool.js +2 -2
  1184. package/lib/esm/tools/PrimitiveTool.js.map +1 -1
  1185. package/lib/esm/tools/Tool.d.ts +29 -1
  1186. package/lib/esm/tools/Tool.d.ts.map +1 -1
  1187. package/lib/esm/tools/Tool.js +66 -0
  1188. package/lib/esm/tools/Tool.js.map +1 -1
  1189. package/lib/esm/tools/ToolAdmin.d.ts.map +1 -1
  1190. package/lib/esm/tools/ToolAdmin.js +20 -10
  1191. package/lib/esm/tools/ToolAdmin.js.map +1 -1
  1192. package/lib/esm/tools/ViewTool.d.ts.map +1 -1
  1193. package/lib/esm/tools/ViewTool.js +3 -11
  1194. package/lib/esm/tools/ViewTool.js.map +1 -1
  1195. package/lib/esm/webgl.d.ts +5 -0
  1196. package/lib/esm/webgl.d.ts.map +1 -1
  1197. package/lib/esm/webgl.js +5 -0
  1198. package/lib/esm/webgl.js.map +1 -1
  1199. package/lib/public/locales/en/iModelJs.json +3 -1
  1200. package/package.json +33 -28
  1201. package/lib/cjs/RealityDataAccessProps.d.ts +0 -44
  1202. package/lib/cjs/RealityDataAccessProps.d.ts.map +0 -1
  1203. package/lib/cjs/RealityDataAccessProps.js +0 -23
  1204. package/lib/cjs/RealityDataAccessProps.js.map +0 -1
  1205. package/lib/cjs/RealityDataConnection.d.ts +0 -31
  1206. package/lib/cjs/RealityDataConnection.d.ts.map +0 -1
  1207. package/lib/cjs/RealityDataConnection.js +0 -101
  1208. package/lib/cjs/RealityDataConnection.js.map +0 -1
  1209. package/lib/cjs/tile/map/MapLayerSettingsService.d.ts +0 -39
  1210. package/lib/cjs/tile/map/MapLayerSettingsService.d.ts.map +0 -1
  1211. package/lib/cjs/tile/map/MapLayerSettingsService.js +0 -190
  1212. package/lib/cjs/tile/map/MapLayerSettingsService.js.map +0 -1
  1213. package/lib/esm/RealityDataAccessProps.d.ts +0 -44
  1214. package/lib/esm/RealityDataAccessProps.d.ts.map +0 -1
  1215. package/lib/esm/RealityDataAccessProps.js +0 -20
  1216. package/lib/esm/RealityDataAccessProps.js.map +0 -1
  1217. package/lib/esm/RealityDataConnection.d.ts +0 -31
  1218. package/lib/esm/RealityDataConnection.d.ts.map +0 -1
  1219. package/lib/esm/RealityDataConnection.js +0 -98
  1220. package/lib/esm/RealityDataConnection.js.map +0 -1
  1221. package/lib/esm/tile/map/MapLayerSettingsService.d.ts +0 -39
  1222. package/lib/esm/tile/map/MapLayerSettingsService.d.ts.map +0 -1
  1223. package/lib/esm/tile/map/MapLayerSettingsService.js +0 -186
  1224. package/lib/esm/tile/map/MapLayerSettingsService.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"RealityModelTileTree.js","sourceRoot":"","sources":["../../../src/tile/RealityModelTileTree.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;AAC/F;;GAEG;;;AAEH,wDAAgE;AAChE,sDAE6B;AAC7B,oDAK4B;AAC5B,wDAA+I;AAC/I,oEAAgF;AAGhF,4CAAyC;AAEzC,gEAA6D;AAC7D,sEAA+E;AAC/E,oEAAiE;AACjE,4DAAyD;AAKzD,yCAIoB;AAEpB,SAAS,MAAM,CAAC,OAAY;IAC1B,OAAO,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AACzE,CAAC;AAUD,SAAS,cAAc,CAAC,GAAQ,EAAE,GAAQ;IACxC,IAAI,GAAG,GAAG,IAAA,6BAAc,EAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;IACvC,IAAI,CAAC,KAAK,GAAG,EAAE;QACb,GAAG,GAAG,IAAA,6BAAc,EAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;QACnC,IAAI,CAAC,KAAK,GAAG;YACX,GAAG,GAAG,IAAA,6BAAc,EAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;KACtC;IAED,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,eAAe,CAAC,GAAa,EAAE,GAAa;IACnD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;QAC1B,MAAM,GAAG,GAAG,IAAA,6BAAc,EAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QACvD,IAAI,CAAC,KAAK,GAAG;YACX,OAAO,GAAG,CAAC;KACd;IAED,OAAO,CAAC,CAAC;AACX,CAAC;AAED,SAAS,iBAAiB,CAAC,GAAe,EAAE,GAAe;IACzD,IAAI,SAAS,KAAK,GAAG;QACnB,OAAO,SAAS,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;SAE/B,IAAI,SAAS,KAAK,GAAG;QACxB,OAAO,CAAC,CAAC;IAEX,MAAM,GAAG,GAAG,cAAc,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACnD,OAAO,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,eAAe,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;AACnE,CAAC;AAED,MAAM,mBAAmB;IAAzB;QACkB,oBAAe,GAAG,IAAI,CAAC;IAmCzC,CAAC;IAjCQ,QAAQ,CAAC,MAAqB,EAAE,MAAwB;QAC7D,OAAO,MAAM,CAAC,KAAK,CAAC,gBAAgB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IACrD,CAAC;IAEM,KAAK,CAAC,cAAc,CAAC,MAAqB,EAAE,MAAwB;QACzE,IAAI,MAAM,CAAC,YAAY;YACrB,MAAM,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,gCAAiB,CAAC,aAAa,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC;QAEjF,OAAO,oBAAoB,CAAC,0BAA0B,CAAC,MAAM,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC;IACvH,CAAC;IAEM,kBAAkB,CAAC,GAAkB,EAAE,GAAkB;QAC9D,IAAI,GAAG,GAAG,IAAA,wCAAyB,EAAC,GAAG,CAAC,WAAW,CAAC,EAAE,EAAE,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;QAC5E,IAAI,CAAC,KAAK,GAAG;YACX,GAAG,GAAG,IAAA,wCAAyB,EAAC,GAAG,CAAC,WAAW,CAAC,MAAM,EAAE,GAAG,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QAClF,IAAI,CAAC,KAAK,GAAG;YACX,GAAG,GAAG,IAAA,wCAAyB,EAAC,GAAG,CAAC,WAAW,CAAC,OAAO,EAAE,GAAG,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QACpF,IAAI,CAAC,KAAK,GAAG;YACX,GAAG,GAAG,IAAA,wCAAyB,EAAC,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;QAE5D,IAAI,CAAC,KAAK,GAAG;YACX,OAAO,GAAG,CAAC;QAEb,GAAG,GAAG,IAAA,wCAAyB,EAAC,GAAG,CAAC,YAAY,EAAE,GAAG,CAAC,YAAY,CAAC,CAAC;QACpE,IAAI,CAAC,KAAK,GAAG;YACX,OAAO,GAAG,CAAC;QAEb,GAAG,GAAG,iBAAiB,CAAC,GAAG,CAAC,SAAS,EAAE,GAAG,CAAC,SAAS,CAAC,CAAC;QACtD,IAAI,CAAC,KAAK,GAAG;YACX,OAAO,GAAG,CAAC;QAEb,OAAO,iBAAiB,CAAC,GAAG,CAAC,eAAe,EAAE,GAAG,CAAC,eAAe,CAAC,CAAC;IACrE,CAAC;CACF;AAED,MAAM,mBAAmB,GAAG,IAAI,mBAAmB,EAAE,CAAC;AAEtD,gBAAgB;AAChB,SAAgB,8BAA8B,CAAC,KAA0C;IACvF,OAAO,IAAI,oBAAoB,CAAC,KAAK,CAAC,CAAC;AACzC,CAAC;AAFD,wEAEC;AAED,MAAM,SAAS,GAAG,uBAAO,CAAC,UAAU,EAAE,CAAC;AACvC,MAAM,cAAc,GAAG,yBAAS,CAAC,uBAAuB,CAAC,SAAS,EAAE,SAAS,EAAE,wBAAQ,CAAC,gBAAgB,CAAC,OAAO,EAAE,wBAAQ,CAAC,gBAAgB,CAAC,OAAO,EAAE,wBAAQ,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;AACtL,MAAM,UAAU,GAAG,qBAAK,CAAC,WAAW,EAAE,CAAC;AAEvC,gBAAgB;AAChB,MAAa,iBAAiB;IAC5B,YAAY,MAAsI;QAChJ,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,YAAY,CAAC;QACxC,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;QACtC,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;QAClC,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,YAAY,CAAC;QACxC,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;QACtC,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;IACpC,CAAC;IAQM,MAAM,CAAC,MAAM,CAAC,MAAgB;QACnC,MAAM,SAAS,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;QAC5B,MAAM,SAAS,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;QAC5B,MAAM,YAAY,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;QAC/B,MAAM,YAAY,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;QAC/B,MAAM,WAAW,GAAG,0BAAY,CAAC,sCAAsC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QACnF,MAAM,WAAW,GAAG,0BAAY,CAAC,sCAAsC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QACnF,OAAO,IAAI,iBAAiB,CAAC,EAAE,YAAY,EAAE,WAAW,EAAE,SAAS,EAAE,YAAY,EAAE,WAAW,EAAE,SAAS,EAAE,CAAC,CAAC;IAC/G,CAAC;IAEM,MAAM,CAAC,QAAQ,CAAC,cAAmB;QACxC,OAAO,KAAK,CAAC,OAAO,CAAC,cAAc,aAAd,cAAc,uBAAd,cAAc,CAAE,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,qBAAK,CAAC,SAAS,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,qBAAK,CAAC,cAAc,CAAC;IAC1M,CAAC;IACM,QAAQ;QACb,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;QAC1H,IAAI,OAAO,CAAC;QACZ,IAAI,KAAc,CAAC;QACnB,IAAI,QAAQ,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,EAAE;YAC1B,OAAO,GAAG,IAAI,KAAK,CAAU,CAAC,CAAC,CAAC;YAChC,MAAM,cAAc,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,GAAG,wBAAQ,CAAC,gBAAgB,CAAC,KAAK,CAAC;YACtF,MAAM,kBAAkB,GAAG,CAAC,CAAC,IAAY,EAAE,GAAW,EAAE,KAAa,EAAE,EAAE;gBACvE,MAAM,GAAG,GAAG,cAAc,CAAC,sBAAsB,CAAC,IAAI,EAAE,GAAG,EAAE,UAAU,CAAE,CAAC;gBAC1E,OAAO,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,eAAe,CAAC,IAAI,CAAC,SAAS,GAAG,cAAc,CAAC,CAAC;gBACtE,OAAO,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,eAAe,CAAC,IAAI,CAAC,SAAS,GAAG,cAAc,CAAC,CAAC;YAC5E,CAAC,CAAC,CAAC;YACH,kBAAkB,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;YAC3D,kBAAkB,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;YAC3D,kBAAkB,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;YAC3D,kBAAkB,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;YAC3D,KAAK,GAAG,uBAAO,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;SACtC;aAAM;YACL,MAAM,KAAK,GAAG,wBAAQ,CAAC,gBAAgB,CAAC,OAAO,GAAG,IAAI,CAAC,SAAS,EAAE,KAAK,GAAG,wBAAQ,CAAC,gBAAgB,CAAC,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC;YAC7H,MAAM,YAAY,GAAG,yBAAS,CAAC,uBAAuB,CAAC,SAAS,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,wBAAQ,CAAC,gBAAgB,CAAC,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC;YAC7I,MAAM,YAAY,GAAG,yBAAS,CAAC,uBAAuB,CAAC,SAAS,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,wBAAQ,CAAC,gBAAgB,CAAC,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC;YAC7I,KAAK,GAAG,YAAY,CAAC,yBAAyB,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;YACzH,KAAK,CAAC,WAAW,CAAC,YAAY,CAAC,yBAAyB,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;SACrI;QACD,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;IAC5B,CAAC;CACF;AAvDD,8CAuDC;AAED,gBAAgB;AAChB,MAAa,qBAAqB;IACzB,MAAM,CAAC,uBAAuB,CAAC,cAAmB;QACvD,IAAI,SAAS,KAAK,cAAc;YAC9B,OAAO,SAAS,CAAC;QAEnB,IAAI,OAA8B,CAAC;QACnC,IAAI,KAA0B,CAAC;QAC/B,IAAI,SAAS,KAAK,cAAc,CAAC,GAAG,EAAE;YACpC,MAAM,GAAG,GAAa,cAAc,CAAC,GAAG,CAAC;YACzC,MAAM,MAAM,GAAG,uBAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YACtD,MAAM,EAAE,GAAG,wBAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YACnD,MAAM,EAAE,GAAG,wBAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YACnD,MAAM,EAAE,GAAG,wBAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;YACrD,OAAO,GAAG,IAAI,KAAK,EAAW,CAAC;YAC/B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;gBAC1B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;oBAC1B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;wBAC1B,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;qBACpG;iBACF;aACF;YACD,KAAK,GAAG,uBAAO,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;SACtC;aAAM,IAAI,KAAK,CAAC,OAAO,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE;YAC/C,MAAM,MAAM,GAAa,cAAc,CAAC,MAAM,CAAC;YAC/C,MAAM,MAAM,GAAG,uBAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;YAC/D,MAAM,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;YACzB,KAAK,GAAG,uBAAO,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,GAAG,MAAM,EAAE,MAAM,CAAC,CAAC,GAAG,MAAM,EAAE,MAAM,CAAC,CAAC,GAAG,MAAM,EAAE,MAAM,CAAC,CAAC,GAAG,MAAM,EAAE,MAAM,CAAC,CAAC,GAAG,MAAM,EAAE,MAAM,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC;SAChJ;aAAM,IAAI,KAAK,CAAC,OAAO,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE;YAC/C,MAAM,MAAM,GAAG,iBAAiB,CAAC,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;YAC/D,MAAM,WAAW,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC;YACtC,OAAO,EAAE,KAAK,EAAE,WAAW,CAAC,KAAK,EAAE,OAAO,EAAE,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC;SAC3E;QACD,OAAO,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;IAEhD,CAAC;IACM,MAAM,CAAC,iCAAiC,CAAC,KAAc,EAAE,cAAsB;QACpF,MAAM,iBAAiB,GAAG,IAAI,KAAK,qBAAS,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,qBAAS,CAAC,SAAS,CAAC,kCAAkC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAG,gJAAgJ;QAErR,2IAA2I;QAC3I,0DAA0D;QAE1D,OAAO,iBAAiB,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC,SAAS,EAAE,GAAG,cAAc,CAAC;IAC3E,CAAC;IACM,MAAM,CAAC,iBAAiB,CAAC,MAA4B;QAC1D,OAAO,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,yBAAS,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,yBAAS,CAAC,qBAAqB,CAAC,uBAAO,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC,EAAE,wBAAQ,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IACjR,CAAC;CACF;AA9CD,sDA8CC;AAED,gBAAgB;AAChB,IAAK,aAIJ;AAJD,WAAK,aAAa;IAChB,iDAAQ,CAAA;IACR,yDAAY,CAAA;IACZ,2DAAa,CAAA;AACf,CAAC,EAJI,aAAa,KAAb,aAAa,QAIjB;AAED,gBAAgB;AAChB,MAAM,yBAAyB;IAQ7B,YAAY,IAAS,EAAE,IAAS,EAAE,MAA8B,EAAE,oBAA+B,EAAkB,aAAyB;QAAzB,kBAAa,GAAb,aAAa,CAAY;QALrI,yBAAoB,GAAY,KAAK,CAAC;QAEtC,YAAO,GAAG,KAAK,CAAC;QAIrB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QACxB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,QAAQ,GAAG,oBAAoB,CAAC;QACrC,IAAI,CAAC,oBAAoB,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,cAAc,IAAI,aAAa,CAAC,SAAS,KAAK,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;QACvI,IAAI,IAAI,CAAC,KAAK,CAAC,UAAU,KAAK,SAAS,IAAI,IAAI,CAAC,KAAK,CAAC,UAAU,KAAK,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,UAAU,KAAK,GAAG;YACvG,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;IACxB,CAAC;CACF;AAED,MAAM,0BAA0B;IAY9B,YAAmB,GAAW,EAAE,MAAwB,EAAE,OAAmB,EAAE,MAA8B,EAAkB,qBAA8B,EAAkB,UAAiC;QAAjF,0BAAqB,GAArB,qBAAqB,CAAS;QAAkB,eAAU,GAAV,UAAU,CAAuB;QARzM,SAAI,GAAG,IAAI,CAAC;QASjB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,EAAE,GAAG,GAAG,CAAC;QACd,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,QAAQ,GAAG,IAAI,qBAAqB,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,SAAS,EAAE,EAAE,EAAE,SAAS,EAAE,SAAS,KAAK,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,KAAK,KAAK,CAAC,CAAC;IACpM,CAAC;IAVD,IAAW,QAAQ,KAAK,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC3D,IAAW,OAAO,KAAK,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;IACzD,IAAW,QAAQ,KAAK,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;CASvD;AAED,gBAAgB;AAChB,MAAM,qBAAqB;IAazB,YAAY,IAAS,EAAE,MAA+B,EAAE,MAAc,EAAE,eAA2B,EAAE,kBAA4B;;QAC/H,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC;QACxB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,MAAM,cAAc,GAAG,qBAAqB,CAAC,uBAAuB,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAC1F,IAAI,cAAc,EAAE;YAClB,IAAI,CAAC,KAAK,GAAG,cAAc,CAAC,KAAK,CAAC;YAClC,IAAI,CAAC,YAAY,GAAG,cAAc,CAAC,OAAO,CAAC;YAC3C,IAAI,CAAC,MAAM,GAAG,cAAc,aAAd,cAAc,uBAAd,cAAc,CAAE,MAAM,CAAC;SACtC;aAAM;YACL,IAAI,CAAC,KAAK,GAAG,uBAAO,CAAC,UAAU,EAAE,CAAC;YAClC,IAAA,qBAAM,EAAC,KAAK,EAAE,gBAAgB,CAAC,CAAC;SACjC;QACD,IAAI,CAAC,MAAM,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;QAC1E,IAAI,CAAC,eAAe,GAAG,eAAe,CAAC;QACvC,IAAI,CAAC,kBAAkB,GAAG,kBAAkB,CAAC;QAC7C,MAAM,WAAW,GAAG,SAAS,KAAK,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACvD,IAAI,WAAW;YACb,IAAI,CAAC,YAAY,GAAG,MAAA,qBAAqB,CAAC,uBAAuB,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,0CAAE,KAAK,CAAC;aACnG;YACH,2HAA2H;YAC3H,yHAAyH;YACzH,IAAI,IAAI,CAAC,kBAAkB,KAAI,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,kBAAkB,CAAA;gBACvD,IAAI,CAAC,gCAAgC,GAAG,IAAI,CAAC;SAChD;QAED,IAAI,CAAC,WAAW,GAAG,CAAC,IAAI,CAAC,gCAAgC,IAAI,WAAW,CAAC,CAAC,CAAC,CAAC,qBAAqB,CAAC,iCAAiC,CAAC,uBAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7L,CAAC;CACF;AAED,gBAAgB;AAChB,MAAM,eAAe;IACnB,YAAmB,EAAU,EAAS,IAAS,EAAS,eAA2B;QAAhE,OAAE,GAAF,EAAE,CAAQ;QAAS,SAAI,GAAJ,IAAI,CAAK;QAAS,oBAAe,GAAf,eAAe,CAAY;IAAI,CAAC;CACzF;AAED,gBAAgB;AAChB,SAAS,WAAW,CAAC,MAAc,EAAE,GAAW;IAE9C,IAAI,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE;QACxB,GAAG,GAAG,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;KACxB;SAAM;QACL,MAAM,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACtC,WAAW,CAAC,GAAG,EAAE,CAAC;QAClB,OAAO,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE;YAC5B,WAAW,CAAC,GAAG,EAAE,CAAC;YAClB,GAAG,GAAG,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;SACxB;QACD,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACrB,MAAM,GAAG,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;KAChC;IACD,OAAO,MAAM,GAAG,GAAG,CAAC;AACtB,CAAC;AAED,gBAAgB;AAChB,SAAS,YAAY,CAAC,OAAY,EAAE,MAAc;IAChD,IAAI,SAAS,KAAK,OAAO;QACvB,OAAO;IAET,IAAI,SAAS,KAAK,OAAO,CAAC,OAAO,EAAE;QACjC,IAAI,SAAS,KAAK,OAAO,CAAC,OAAO,CAAC,GAAG;YACnC,OAAO,CAAC,OAAO,CAAC,GAAG,GAAG,WAAW,CAAC,MAAM,EAAE,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;aAC5D,IAAI,SAAS,KAAK,OAAO,CAAC,OAAO,CAAC,GAAG;YACxC,OAAO,CAAC,OAAO,CAAC,GAAG,GAAG,WAAW,CAAC,MAAM,EAAE,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;KAClE;IAED,IAAI,SAAS,KAAK,OAAO,CAAC,QAAQ;QAChC,KAAK,MAAM,KAAK,IAAI,OAAO,CAAC,QAAQ;YAClC,YAAY,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;AAClC,CAAC;AAED,gBAAgB;AAChB,KAAK,UAAU,aAAa,CAAC,IAAS,EAAE,MAA8B;IACpE,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACtC,IAAI,SAAS,KAAK,QAAQ,IAAI,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,EAAK,mCAAmC;QAC/F,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;QACnD,MAAM,WAAW,GAAG,QAAQ,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QAC9C,IAAI,WAAW,GAAG,CAAC;YACjB,YAAY,CAAC,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,SAAS,CAAC,CAAC,EAAE,WAAW,GAAG,CAAC,CAAC,CAAC,CAAC;QAErE,OAAO,OAAO,CAAC,IAAI,CAAC;KACrB;SAAM;QACL,OAAO,IAAI,CAAC;KACb;AACH,CAAC;AAED,gBAAgB;AAChB,MAAM,sBAAuB,SAAQ,4BAAiB;IAKpD,YAAmB,IAA+B,EAAE,YAA+B;QACjF,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,aAAa,GAAG,YAAY,CAAC;QAClC,IAAI,UAAU,CAAC;QACf,IAAI,iBAAiB,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC;YAC7D,UAAU,GAAG,KAAK,CAAC;QACrB,IAAI,CAAC,kBAAkB,GAAG,IAAA,yCAA8B,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC;QAEzF,qFAAqF;QACrF,IAAI,CAAC,kBAAkB,CAAC,YAAY,GAAG,SAAS,CAAC;QACjD,IAAI,CAAC,kBAAkB,CAAC,WAAW,GAAG,SAAS,CAAC;IAClD,CAAC;IAED,IAAW,oBAAoB,KAAc,OAAO,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC;IAErF,IAAW,QAAQ,KAAa,OAAO,EAAE,CAAC,CAAC,CAAC,CAAE,wDAAwD;IACtG,IAAW,QAAQ,KAAa,OAAO,CAAC,CAAC,CAAC,CAAC;IAC3C,IAAW,QAAQ,KAAuB,OAAO,2BAAgB,CAAC,OAAO,CAAC,CAAC,CAAC;IAC5D,aAAa,KAAmC,OAAO,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC;IAC5F,IAAW,sBAAsB,KAAc,OAAO,IAAI,CAAC,CAAC,CAAC;IAC7D,IAAoB,iBAAiB,KAAwB,OAAO,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC;IAEvF,KAAK,CAAC,YAAY,CAAC,IAAiB;QACzC,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;QAChD,IAAI,SAAS,KAAK,KAAK;YACrB,OAAO,SAAS,CAAC;QAEnB,MAAM,QAAQ,GAAG,EAAE,CAAC;QACpB,KAAK,MAAM,IAAI,IAAI,KAAK;YACtB,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;QAEnD,OAAO,QAAQ,CAAC;IAClB,CAAC;IAEM,KAAK,CAAC,gBAAgB,CAAC,MAAmB;QAC/C,MAAM,KAAK,GAA4B,EAAE,CAAC;QAC1C,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC;QAChC,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;QACjD,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,MAAM,EAAE,EAAE,EAAE,SAAS,CAAC,CAAC;QAC3F,IAAI,SAAS,KAAK,UAAU,IAAI,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE;YACvE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBACxD,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,CAAC;gBAC3B,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,OAAO,EAAE,EAAE,EAAE,SAAS,CAAC,CAAC;gBAC5F,IAAI,SAAS,KAAK,UAAU;oBAC1B,KAAK,CAAC,IAAI,CAAC,IAAI,qBAAqB,CAAC,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,EAAE,UAAU,CAAC,eAAe,EAAE,UAAU,CAAC,IAAI,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,KAAK,KAAK,CAAC,CAAC,CAAC;aAClM;SACF;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAEM,iBAAiB,CAAC,KAAW;QAClC,0DAA0D;QAC1D,OAAO,qBAAS,CAAC,SAAS,CAAC,QAAQ,CAAC,UAAU,CAAC,uBAAuB,CAAC,CAAC;IAC1E,CAAC;IAEM,KAAK,CAAC,kBAAkB,CAAC,IAAU,EAAE,UAAyB;QACnE,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;QACxF,IAAI,SAAS,KAAK,UAAU,IAAI,SAAS,KAAK,UAAU,CAAC,IAAI,CAAC,OAAO,IAAI,UAAU,EAAE;YACnF,OAAO,SAAS,CAAC;QAEnB,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;IAC1E,CAAC;IAEO,KAAK,CAAC,cAAc,CAAC,WAAgB,EAAE,EAAU,EAAE,QAAgB,EAAE,eAA2B;QACtG,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC;YACjB,OAAO,IAAI,eAAe,CAAC,EAAE,EAAE,WAAW,EAAE,eAAe,CAAC,CAAC,CAAI,QAAQ;QAE3E,MAAM,cAAc,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACvC,MAAM,OAAO,GAAG,CAAC,cAAc,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,EAAE,cAAc,CAAC,CAAC;QAC5E,MAAM,UAAU,GAAG,QAAQ,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;QAEzC,IAAI,KAAK,CAAC,UAAU,CAAC,IAAI,WAAW,KAAK,SAAS,IAAI,WAAW,CAAC,QAAQ,KAAK,SAAS,IAAI,UAAU,IAAI,WAAW,CAAC,QAAQ,CAAC,MAAM,EAAE;YACrI,IAAA,qBAAM,EAAC,KAAK,EAAE,gCAAgC,CAAC,CAAC;YAChD,OAAO,SAAS,CAAC;SAClB;QAED,MAAM,UAAU,GAAG,WAAW,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;QACpD,MAAM,YAAY,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,QAAQ,IAAI,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;QAC5E,IAAI,UAAU,CAAC,SAAS,EAAE;YACxB,MAAM,aAAa,GAAG,qBAAqB,CAAC,iBAAiB,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;YACpF,eAAe,GAAG,eAAe,CAAC,CAAC,CAAC,eAAe,CAAC,0BAA0B,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC;SAC/G;QAED,IAAI,cAAc,IAAI,CAAC,EAAE;YACvB,OAAO,IAAI,CAAC,cAAc,CAAC,UAAU,EAAE,EAAE,CAAC,SAAS,CAAC,cAAc,GAAG,CAAC,CAAC,EAAE,YAAY,EAAE,eAAe,CAAC,CAAC;SACzG;QAED,WAAW,CAAC,QAAQ,CAAC,UAAU,CAAC,GAAG,MAAM,aAAa,CAAC,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAErF,OAAO,IAAI,eAAe,CAAC,YAAY,EAAE,WAAW,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,eAAe,CAAC,CAAC;IAC9F,CAAC;CACF;AAKD,gBAAgB;AAChB,MAAa,oBAAqB,SAAQ,0BAAe;IAEvD,YAAmB,MAA6B;QAC9C,KAAK,CAAC,MAAM,CAAC,CAAC;QAEd,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC,SAAS,EAAE,GAAG,CAAC,GAAG,wBAAQ,CAAC,gBAAgB,CAAC,OAAO,CAAC;QACrH,IAAI,CAAC,IAAI,CAAC,kBAAkB,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,MAAM,EAAE;YAClE,MAAM,iBAAiB,GAAG,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;YACzF,IAAI,CAAC,MAAM,CAAC,sBAAsB,CAAC,iBAAiB,CAAC,CAAC;SACvD;IACH,CAAC;IACD,IAAoB,kBAAkB,KAAK,OAAO,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC;CAC9E;AAZD,oDAYC;AAED,gBAAgB;AAChB,wCAAwC;AACxC,WAAiB,oBAAoB;IAkBnC,MAAsB,SAAU,SAAQ,4BAAiB;QAyBvD,YAAmB,KAA8C;YAC/D,KAAK,EAAE,CAAC;YACR,IAAI,CAAC,KAAK,GAAG,SAAS,KAAK,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;YACxD,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC;YAC/E,IAAI,SAAS,CAAC;YACd,IAAI,SAAS,KAAK,KAAK,CAAC,oBAAoB,EAAE;gBAC5C,MAAM,EAAE,GAAG,yBAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC;gBAC1D,IAAI,CAAC,EAAE,CAAC,UAAU;oBAChB,SAAS,GAAG,EAAE,CAAC;gBAEjB,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;aAC7B;YAED,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC;YAC5B,IAAI,KAAK,CAAC,cAAc;gBACtB,IAAI,CAAC,eAAe,GAAG,yCAAmB,CAAC,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;YAE1E,IAAI,SAAS,KAAK,KAAK,CAAC,WAAW;gBACjC,IAAI,CAAC,WAAW,GAAG,IAAA,4CAAiC,EAAC,KAAK,CAAC,WAAW,EAAE,IAAI,EAAE,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;QAC9G,CAAC;QAlCD,IAAW,OAAO,KAAK,OAAO,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;QAC9C,IAAW,WAAW,KAAqC,OAAO,SAAS,KAAK,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;QAC9I,IAAW,cAAc,KAAsC,OAAO,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC;QAC7F,IAAW,cAAc,CAAC,cAA+C,IAAI,IAAI,CAAC,eAAe,GAAG,cAAc,CAAC,CAAC,CAAC;QACrH,IAAW,sBAAsB;;YAC/B,IAAI,CAAA,MAAA,IAAI,CAAC,eAAe,0CAAE,QAAQ,CAAC,QAAQ,MAAK,SAAS;gBACvD,OAAO,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,QAAQ,CAAC;YAEhD,OAAO,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,oCAAsB,CAAC,kBAAkB,CAAC,CAAC,CAAC,oCAAsB,CAAC,YAAY,CAAC;QACzG,CAAC;QAED,IAAc,YAAY;;YACxB,OAAO,MAAA,IAAI,CAAC,eAAe,0CAAE,QAAQ,CAAC,kBAAkB,CAAC;QAC3D,CAAC;QAuBD,IAAW,uBAAuB,KAAK,OAAO,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,WAAW,CAAC,gBAAgB,IAAI,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;QAElJ,aAAa,CAAC,KAAc;YAC1C,MAAM,YAAY,GAAG,IAAI,CAAC,wBAAwB,EAAE,CAAC;YACrD,IAAI,CAAC,YAAY,CAAC,MAAM,IAAI,YAAY,CAAC,QAAQ,EAAE,CAAC,SAAS,EAAE,GAAG,wBAAQ,CAAC,gBAAgB,CAAC,OAAO;gBACjG,KAAK,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;QACpC,CAAC;QACD,IAAoB,QAAQ;YAC1B,IAAI,SAAS,KAAK,IAAI,CAAC,SAAS,EAAE;gBAChC,MAAM,KAAK,GAAG,IAAI,CAAC,wBAAwB,EAAE,CAAC;gBAC9C,IAAI,CAAC,KAAK,CAAC,MAAM;oBACf,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC,SAAS,EAAE,GAAG,CAAC,GAAG,wBAAQ,CAAC,gBAAgB,CAAC,OAAO,CAAC;aACzF;YACD,OAAO,IAAI,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC;QAC/D,CAAC;QAEe,UAAU,CAAC,OAAqB;YAC9C,uFAAuF;YACvF,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,WAAW,CAAC,gBAAgB;gBACvD,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;YAEvC,IAAI,CAAC,gCAAgC,CAAC,OAAO,CAAC,CAAC;YAC/C,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QAC5B,CAAC;QACS,gCAAgC,CAAC,OAAqB;;YAC9D,kGAAkG;YAClG,MAAM,cAAc,GAAG,IAAI,CAAC,uBAAuB,CAAC;YACpD,MAAM,cAAc,GAAG,MAAA,IAAI,CAAC,eAAe,mCAAI,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,sBAAsB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAClH,IAAI,CAAC,cAAc,IAAI,CAAC,cAAc;gBACpC,OAAO;YAET,IAAI,cAAc,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,IAAI,EAAE;gBACpD,OAAO;YAET,OAAO,CAAC,mBAAmB,CAAC,IAAI,CAAC,OAAO,EAAE,cAAc,EAAE,cAAc,CAAC,CAAC;QAC5E,CAAC;QAEe,iBAAiB,CAAC,KAA2B;YAC3D,KAAK,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;YAE/B,IAAI,SAAS,KAAK,IAAI,CAAC,WAAW;gBAChC,IAAI,CAAC,WAAW,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;YAE5C,IAAI,SAAS,KAAK,IAAI,CAAC,aAAa;gBAClC,IAAI,CAAC,aAAa,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;YAE9C,IAAI,SAAS,KAAK,IAAI,CAAC,eAAe;gBACpC,IAAI,CAAC,eAAe,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;QAClD,CAAC;QACe,iBAAiB,CAAC,KAA8B;YAC9D,KAAK,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;YAE/B,MAAM,IAAI,GAAG,SAAS,KAAK,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC;YAC9F,IAAI,SAAS,KAAK,IAAI;gBACpB,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;QAClC,CAAC;KACF;IAtGqB,8BAAS,YAsG9B,CAAA;IAEM,KAAK,UAAU,0BAA0B,CAAC,WAAiC,EAAE,MAAwB,EAAE,OAAmB,EAAE,WAAkC;QACnK,MAAM,YAAY,GAAG,MAAM,6CAAqB,CAAC,aAAa,CAAC,WAAW,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;QAC5F,yEAAyE;QACzE,IAAI,YAAY,EAAE;YAChB,MAAM,GAAG,GAAG,MAAM,YAAY,CAAC,aAAa,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YAC7D,IAAI,GAAG,KAAK,SAAS;gBACnB,OAAO,SAAS,CAAC;YACnB,MAAM,KAAK,GAAG,MAAM,gBAAgB,CAAC,YAAY,EAAE,WAAW,EAAE,MAAM,CAAC,CAAC;YACxE,MAAM,MAAM,GAAG,IAAI,sBAAsB,CAAC,KAAK,EAAE,IAAI,2BAAgB,CAAC,MAAM,CAAC,CAAC,CAAC;YAC/E,MAAM,qBAAqB,GAAG,MAAM,IAAA,mCAAwB,EAAC,MAAM,CAAC,CAAC;YACrE,MAAM,MAAM,GAAG,IAAI,0BAA0B,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,qBAAqB,EAAE,KAAK,CAAC,aAAa,CAAC,CAAC;YACxH,OAAO,IAAI,oBAAoB,CAAC,MAAM,CAAC,CAAC;SACzC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAdqB,+CAA0B,6BAc/C,CAAA;IAED,KAAK,UAAU,gBAAgB,CAAC,YAAmC,EAAE,eAAoB,EAAE,MAAwB;;QACjH,MAAM,GAAG,GAAG,MAAM,YAAY,CAAC,aAAa,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAC7D,IAAI,CAAC,GAAG;YACN,MAAM,IAAI,yBAAW,CAAC,4BAAa,CAAC,KAAK,EAAE,6BAA6B,CAAC,CAAC;QAC5E,MAAM,UAAU,GAAG,IAAI,sBAAsB,CAAC,YAAY,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;QAC5E,MAAM,IAAI,GAAG,MAAM,UAAU,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC;QACnD,IAAI,aAAa,GAAG,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,yBAAS,CAAC,cAAc,EAAE,CAAC;QAChG,MAAM,YAAY,GAAG,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;QAChG,IAAI,YAAY,KAAK,SAAS,EAAE;YAC9B,IAAI,gBAAgB,GAAG,qBAAqB,CAAC,uBAAuB,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAE,CAAC,KAAK,CAAC;YACtG,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;gBACvB,MAAM,aAAa,GAAG,qBAAqB,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;gBACnF,gBAAgB,GAAG,aAAa,CAAC,aAAa,CAAC,gBAAgB,CAAC,CAAC;aAClE;YAED,IAAI,MAAM,CAAC,YAAY,EAAE;gBACvB,gGAAgG;gBAChG,qHAAqH;gBACrH,yHAAyH;gBACzH,sCAAsC;gBACtC,gJAAgJ;gBAChJ,2HAA2H;gBAC3H,oFAAoF;gBACpF,MAAM,UAAU,GAAG,gBAAgB,CAAC,eAAe,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAE,CAAC;gBACjE,MAAM,QAAQ,GAAG,aAAa,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC;gBAC3D,MAAM,8BAA8B,GAAG,MAAM,CAAC,cAAc,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;gBACvF,MAAM,kBAAkB,GAAG,GAAG,CAAC,CAAK,4KAA4K;gBAChN,IAAI,8BAA8B,GAAG,kBAAkB,IAAI,CAAA,MAAA,IAAI,CAAC,KAAK,0CAAE,OAAO,MAAK,KAAK,IAAI,SAAS,MAAK,MAAA,IAAI,CAAC,IAAI,0CAAE,oBAAoB,CAAA,EAAE;oBACzI,MAAM,kBAAkB,GAAG,0BAAY,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;oBAE7D,IAAI,kBAAkB,KAAK,SAAS,EAAE;wBACpC,MAAM,SAAS,GAAG,uBAAO,CAAC,MAAM,CAAC,kBAAkB,CAAC,gBAAgB,EAAE,kBAAkB,CAAC,eAAe,EAAE,kBAAkB,CAAC,MAAM,CAAC,CAAC;wBACrI,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,sCAAsC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;wBACxF,IAAI,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,4BAAc,CAAC,OAAO,EAAE;4BACzD,MAAM,QAAQ,GAAG,MAAM,IAAA,4DAAoC,EAAC,uBAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;4BAClH,IAAI,QAAQ;gCACV,aAAa,GAAG,QAAQ,CAAC;yBAC5B;qBACF;iBACF;aACF;SACF;QACD,IAAI,aAAa,GAAG,yBAAS,CAAC,cAAc,EAAE,CAAC;QAE/C,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;YACvB,aAAa,GAAG,qBAAqB,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAC7E,aAAa,GAAG,aAAa,CAAC,0BAA0B,CAAC,aAAa,CAAC,CAAC;SACzE;QAED,IAAI,SAAS,KAAK,eAAe;YAC/B,aAAa,GAAG,yBAAS,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC,0BAA0B,CAAC,aAAa,CAAC,CAAC;QAEhG,MAAM,IAAI,GAAG,MAAM,aAAa,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;QACxD,OAAO,IAAI,yBAAyB,CAAC,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,aAAa,EAAE,aAAa,CAAC,CAAC;IAC7F,CAAC;AACH,CAAC,EAjMgB,oBAAoB,GAApB,4BAAoB,KAApB,4BAAoB,QAiMpC;AAED;;GAEG;AACH,MAAM,oBAAqB,SAAQ,oBAAoB,CAAC,SAAS;IAG/D,YAAmB,KAA0C;QAC3D,KAAK,CAAC,KAAK,CAAC,CAAC;QAEb,6EAA6E;QAC7E,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,qCAAiB,CAAC,iCAAiC,CAAC,KAAK,CAAC,GAAG,EAAE,iCAAmB,CAAC,YAAY,CAAC,CAAC,CAAC;YACxK,qCAAiB,CAAC,iCAAiC,CAAC,EAAE,EAAE,iCAAmB,CAAC,YAAY,CAAC,CAAC;IAC9F,CAAC;IACD,IAAW,SAAS;QAClB,MAAM,MAAM,GAAkB,EAAE,WAAW,EAAE,IAAI,CAAC,YAAY,EAAE,SAAS,EAAE,IAAI,CAAC,UAAU,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,YAAY,EAAE,IAAI,CAAC,YAAY,EAAE,CAAC;QACrJ,OAAO,mBAAmB,CAAC,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IAC5D,CAAC;IAED,IAAoB,YAAY;QAC9B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAuB,kBAAkB;QACvC,OAAO,CAAC,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,aAAa,CAAC,iBAAiB,CAAC;IACrE,CAAC;IAEe,cAAc,CAAC,OAAqB;QAClD,yIAAyI;QACzI,+HAA+H;QAC/H,YAAY;QACZ,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;QACnC,IAAI,SAAS,KAAK,IAAI;YACpB,OAAO,SAAS,CAAC;QAEnB,MAAM,QAAQ,GAAG,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;QAC/C,IAAI,QAAQ,KAAK,SAAS,IAAI,IAAI,CAAC,OAAO,CAAC,YAAY,IAAI,IAAI,CAAC,kBAAkB,EAAE;YAClF,MAAM,aAAa,GAAG,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,0BAA0B,CAAC;YAEpF,IAAI,SAAS,KAAK,aAAa;gBAC7B,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,aAAa,CAAC;SAC/C;QAED,OAAO,QAAQ,CAAC;IAClB,CAAC;IAEe,UAAU,CAAC,OAAqB;QAC9C,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,QAA2B,CAAC;QACxD,IAAI,SAAS,KAAK,IAAI,IAAI,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,YAAY,IAAK,IAAI,CAAC,MAAiC,CAAC,oBAAoB,EAAE;YAC9H,yFAAyF;YACzF,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAC;YACzD,OAAO,CAAC,wBAAwB,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;SACnD;QAED,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;IAC5B,CAAC;IAEe,KAAK,CAAC,UAAU,CAAC,GAAc;QAC7C,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC;QACrC,IAAI,SAAS,KAAK,IAAI,IAAI,GAAG,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM;YAClD,OAAO,SAAS,CAAC;QAEnB,MAAM,GAAG,GAAI,IAAwB,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC;QAC7D,MAAM,KAAK,GAAG,SAAS,KAAK,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,kBAAkB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QACnF,IAAI,SAAS,KAAK,KAAK,IAAI,IAAI,CAAC,OAAO,KAAK,GAAG,CAAC,QAAQ;YACtD,OAAO,SAAS,CAAC;QAEnB,MAAM,OAAO,GAAG,EAAE,CAAC;QAEnB,MAAM,MAAM,GAAI,IAA6B,CAAC,MAAM,CAAC;QACrD,MAAM,IAAI,GAAG,MAAO,MAAiC,CAAC,IAAI,CAAC,MAAM,CAAC,kBAAkB,EAAE,CAAC;QAEvF,qCAAqC;QACrC,IAAI,IAAI,KAAK,SAAS,EAAE;YACtB,mBAAmB;YACnB,QAAQ,IAAI,CAAC,WAAW,EAAE,EAAE;gBAC1B,KAAK,8CAAqB,CAAC,kBAAkB,CAAC,WAAW,EAAE;oBACzD,OAAO,CAAC,IAAI,CAAC,qBAAS,CAAC,YAAY,CAAC,kBAAkB,CAAC,+CAA+C,CAAC,CAAC,CAAC;oBACzG,MAAM;gBACR,KAAK,8CAAqB,CAAC,cAAc,CAAC,WAAW,EAAE;oBACrD,OAAO,CAAC,IAAI,CAAC,qBAAS,CAAC,YAAY,CAAC,kBAAkB,CAAC,2CAA2C,CAAC,CAAC,CAAC;oBACrG,MAAM;gBACR,KAAK,8CAAqB,CAAC,aAAa,CAAC,WAAW,EAAE;oBACpD,OAAO,CAAC,IAAI,CAAC,qBAAS,CAAC,YAAY,CAAC,kBAAkB,CAAC,0CAA0C,CAAC,CAAC,CAAC;oBACpG,MAAM;aACT;SACF;QAED,IAAI,IAAI,CAAC,KAAK,EAAE;YACd,OAAO,CAAC,IAAI,CAAC,GAAG,qBAAS,CAAC,YAAY,CAAC,kBAAkB,CAAC,2BAA2B,CAAC,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;SACzG;aAAM;YACL,MAAM,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,QAAQ,KAAK,iCAAmB,CAAC,cAAc,CAAC,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YACzI,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,iBAAiB,WAAW,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;SACtF;QAED,IAAI,KAAK,KAAK,SAAS;YACrB,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;gBAClC,IAAI,CAAC,CAAC,KAAK,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,EAAM,wBAAwB;oBACvD,OAAO,CAAC,IAAI,CAAC,GAAG,GAAG,KAAK,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAE5C,MAAM,GAAG,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAC1C,GAAG,CAAC,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACrC,OAAO,GAAG,CAAC;IACb,CAAC;IAEe,YAAY,CAAC,KAAuB,EAAE,GAAmB;QACvE,IAAI,IAAI,CAAC,YAAY,CAAC,EAAE,KAAK,IAAA,mCAAwB,GAAE,EAAE;YACvD,KAAK,CAAC,WAAW,CAAC,qBAAS,CAAC,YAAY,CAAC,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,EAAE,+EAA+E,qBAAS,CAAC,YAAY,CAAC,kBAAkB,CAAC,kDAAkD,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;SACjQ;IACH,CAAC;CACF;AAOD,gFAAgF;AAChF,SAAS,cAAc,CAAC,GAAW;IACjC,MAAM,YAAY,GAAG,kBAAkB,CAAC;IACxC,MAAM,WAAW,GAAG,GAAG,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;IAC9C,IAAI,WAAW,GAAG,CAAC;QACjB,OAAO,SAAS,CAAC;IACnB,MAAM,eAAe,GAAG,GAAG,CAAC,KAAK,CAAC,WAAW,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC;IACrE,MAAM,WAAW,GAAG,eAAe,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC/C,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC;QAC1B,OAAO,SAAS,CAAC;IAEnB,MAAM,EAAE,GAAG,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IACxC,IAAI,EAAE,KAAK,SAAS;QAClB,OAAO,SAAS,CAAC;IAEnB,OAAO,EAAE,EAAE,EAAE,GAAG,EAAE,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC;AACrC,CAAC;AACD;;;;;;;GAOG;AACH,MAAa,sBAAsB;IAMjC,8FAA8F;IAC9F,4KAA4K;IAC5K,YAAY,YAAmC,EAAE,OAAgB;QALzD,aAAQ,GAAW,EAAE,CAAC,CAAa,mIAAmI;QAM5K,IAAI,CAAC,aAAa,GAAG,YAAY,CAAC;QAClC,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC;QAC3C,IAAI,QAAQ,CAAC,cAAc;YACzB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,2BAA2B,CAAC,QAAQ,CAAC,CAAC,CAAC,4FAA4F;QAC1J,IAAI,OAAO,IAAI,IAAI,CAAC,QAAQ;YAC1B,IAAI,CAAC,QAAQ,CAAC,OAAO,GAAG,OAAO,CAAC;IACpC,CAAC;IAEO,wBAAwB;;QAE9B,IAAI,SAAS,KAAK,IAAI,CAAC,QAAQ,EAAE;YAC/B,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;gBACtB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC;gBACnD,IAAI,CAAC,IAAI,CAAC,YAAY;oBACpB,MAAM,IAAI,yBAAW,CAAC,4BAAa,CAAC,KAAK,EAAE,6BAA6B,CAAC,CAAC;gBAE5E,0EAA0E;gBAC1E,MAAM,YAAY,GAAW,MAAA,IAAI,CAAC,YAAY,CAAC,YAAY,mCAAI,EAAE,CAAC;gBAClE,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;aAC/B;SACF;IACH,CAAC;IAED,oFAAoF;IACpF,sIAAsI;IACtI,+FAA+F;IAC/F,yHAAyH;IACjH,2BAA2B,CAAC,QAA2B,EAAE,cAAuB;QACtF,+IAA+I;QAC/I,MAAM,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC;QACvC,MAAM,cAAc,GAAG,QAAQ,CAAC,OAAO,CAAC;QACxC,IAAI,KAAiC,CAAC;QACtC,IAAI,SAAS,KAAK,OAAO,EAAE;YACzB,MAAM,OAAO,GAAG,cAAc,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,QAAQ,CAAC;YAE7F,KAAK,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;SAC9B;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,oEAAoE;IACpE,sHAAsH;IACtH,qDAAqD;IACrD,oFAAoF;IACpF,kFAAkF;IAC1E,UAAU,CAAC,GAAW;QAC5B,MAAM,QAAQ,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAChC,QAAQ,CAAC,GAAG,EAAE,CAAC;QACf,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;YACvB,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;;YAEnB,IAAI,CAAC,QAAQ,GAAG,GAAG,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;IAC7C,CAAC;IAEO,KAAK,CAAC,UAAU,CAAC,GAAW,EAAE,YAAoB;;QACxD,IAAI,OAAO,GAAmB;YAC5B,MAAM,EAAE,KAAK;YACb,YAAY;SACb,CAAC;QAEF,MAAM,SAAS,GAAG,MAAA,IAAI,CAAC,qBAAqB,mCAAI,CAAC,MAAM,qBAAS,CAAC,cAAc,EAAE,CAAC,CAAC;QACnF,IAAI,SAAS,EAAE;YACb,OAAO,GAAG;gBACR,GAAG,OAAO;gBACV,OAAO,EAAE;oBACP,aAAa,EAAE,SAAS;iBACzB;aACF,CAAC;SACH;QAED,MAAM,IAAI,GAAG,MAAM,IAAA,sBAAO,EAAC,GAAG,EAAE,OAAO,CAAC,CAAC;QACzC,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;IAED,oCAAoC;IAC7B,KAAK,CAAC,iBAAiB;QAC5B,MAAM,KAAK,GAAG,MAAM,qBAAS,CAAC,cAAc,EAAE,CAAC;QAC/C,IAAI,IAAI,CAAC,QAAQ,IAAI,KAAK,EAAE;YAC1B,IAAI,CAAC,wBAAwB,EAAE,CAAC;YAChC,OAAO,IAAI,CAAC,YAAa,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;SAC7C;QAED,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,4HAA4H;IAC5H,8IAA8I;IAC9I,oCAAoC;IAC7B,KAAK,CAAC,eAAe,CAAC,GAAW;QACtC,MAAM,KAAK,GAAG,MAAM,qBAAS,CAAC,cAAc,EAAE,CAAC;QAC/C,IAAI,IAAI,CAAC,QAAQ,IAAI,KAAK,EAAE;YAC1B,IAAI,CAAC,wBAAwB,EAAE,CAAC,CAAC,0EAA0E;YAC3G,MAAM,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC;YAEtC,IAAI,CAAC,WAAW;gBACd,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;YAE9C,IAAI,CAAC,WAAW,CAAC,YAAY;gBAC3B,MAAM,IAAI,KAAK,CAAC,+CAA+C,WAAW,CAAC,EAAE,EAAE,CAAC,CAAC;YAEnF,OAAO,WAAW,CAAC,WAAW,CAAC,KAAK,EAAE,WAAW,CAAC,YAAY,CAAC,CAAC;SACjE;QAED,+EAA+E;QAC/E,MAAM,WAAW,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC;QACxC,IAAI,WAAW,EAAE;YACf,MAAM,WAAW,GAAG,MAAM,IAAA,6CAAkC,EAAC,WAAW,CAAC,EAAE,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC;YAC9F,IAAI,WAAW,CAAC,GAAG,IAAI,WAAW,CAAC,KAAK,EAAE;gBACxC,GAAG,GAAG,WAAW,CAAC,GAAG,CAAC;gBACtB,IAAI,CAAC,qBAAqB,GAAG,UAAU,WAAW,CAAC,KAAK,EAAE,CAAC;aAC5D;SACF;QAED,+EAA+E;QAC/E,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;QACrB,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IACtC,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,cAAc,CAAC,GAAW;QACrC,IAAA,qBAAM,EAAC,GAAG,KAAK,SAAS,CAAC,CAAC;QAC1B,MAAM,KAAK,GAAG,MAAM,qBAAS,CAAC,cAAc,EAAE,CAAC;QAC/C,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,KAAK,SAAS,IAAI,KAAK,KAAK,SAAS,CAAC;QAClE,IAAI,MAAM,EAAE;YACV,IAAI,CAAC,wBAAwB,EAAE,CAAC,CAAC,0EAA0E;SAC5G;QAED,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC;QACpC,IAAI,MAAM;YACR,OAAO,IAAI,CAAC,YAAa,CAAC,cAAc,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QAE3D,OAAO,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;IACjD,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,WAAW,CAAC,GAAW;QAClC,IAAA,qBAAM,EAAC,GAAG,KAAK,SAAS,CAAC,CAAC;QAC1B,MAAM,KAAK,GAAG,MAAM,qBAAS,CAAC,cAAc,EAAE,CAAC;QAE/C,IAAI,IAAI,CAAC,QAAQ,IAAI,KAAK,EAAE;YAC1B,IAAI,CAAC,wBAAwB,EAAE,CAAC,CAAC,0EAA0E;SAC5G;QAED,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC;QAEpC,IAAI,SAAS,KAAK,IAAI,CAAC,QAAQ,IAAI,SAAS,KAAK,KAAK;YACpD,OAAO,IAAI,CAAC,YAAa,CAAC,WAAW,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QAExD,OAAO,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IAC1C,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,kBAAkB;QAC7B,MAAM,KAAK,GAAG,MAAM,qBAAS,CAAC,cAAc,EAAE,CAAC;QAC/C,IAAI,IAAI,CAAC,QAAQ,IAAI,KAAK,EAAE;YAE1B,IAAI,CAAC,wBAAwB,EAAE,CAAC,CAAC,wCAAwC;YACzE,OAAO,IAAI,CAAC,YAAa,CAAC,IAAI,CAAC;SAChC;QAED,4EAA4E;QAC5E,OAAO,SAAS,CAAC;IACnB,CAAC;CACF;AAlLD,wDAkLC","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 Utils\r\n */\r\n\r\nimport { request, RequestOptions } from \"@bentley/itwin-client\";\r\nimport {\r\n assert, BentleyStatus, compareNumbers, compareStringsOrUndefined, CompressedId64Set, Id64String,\r\n} from \"@itwin/core-bentley\";\r\nimport {\r\n Cartographic, GeoCoordStatus, IModelError, PlanarClipMaskPriority, PlanarClipMaskSettings,\r\n RealityDataProvider,\r\n RealityDataSourceKey,\r\n SpatialClassifiers, ViewFlagOverrides,\r\n} from \"@itwin/core-common\";\r\nimport { Angle, Constant, Ellipsoid, Matrix3d, Point3d, Range3d, Ray3d, Transform, TransformProps, Vector3d, XYZ } from \"@itwin/core-geometry\";\r\nimport { calculateEcefToDbTransformAtLocation } from \"../BackgroundMapGeometry\";\r\nimport { DisplayStyleState } from \"../DisplayStyleState\";\r\nimport { HitDetail } from \"../HitDetail\";\r\nimport { IModelApp } from \"../IModelApp\";\r\nimport { IModelConnection } from \"../IModelConnection\";\r\nimport { PlanarClipMaskState } from \"../PlanarClipMaskState\";\r\nimport { DefaultSupportedTypes, RealityData } from \"../RealityDataAccessProps\";\r\nimport { RealityDataConnection } from \"../RealityDataConnection\";\r\nimport { RealityDataSource } from \"../RealityDataSource\";\r\nimport { RenderMemory } from \"../render/RenderMemory\";\r\nimport { SceneContext } from \"../ViewContext\";\r\nimport { ScreenViewport } from \"../Viewport\";\r\nimport { ViewState } from \"../ViewState\";\r\nimport {\r\n BatchedTileIdMap, createClassifierTileTreeReference, createDefaultViewFlagOverrides, DisclosedTileTreeSet, getCesiumAccessTokenAndEndpointUrl, getCesiumOSMBuildingsUrl, getGcsConverterAvailable, RealityTile, RealityTileLoader, RealityTileParams,\r\n RealityTileTree, RealityTileTreeParams, SpatialClassifierTileTreeReference, Tile, TileDrawArgs, TileLoadPriority, TileRequest, TileTree,\r\n TileTreeOwner, TileTreeReference, TileTreeSupplier,\r\n} from \"./internal\";\r\n\r\nfunction getUrl(content: any) {\r\n return content ? (content.url ? content.url : content.uri) : undefined;\r\n}\r\n\r\ninterface RealityTreeId {\r\n rdSourceKey: RealityDataSourceKey;\r\n transform?: Transform;\r\n modelId: Id64String;\r\n maskModelIds?: string;\r\n toEcefTransform?: Transform;\r\n}\r\n\r\nfunction compareOrigins(lhs: XYZ, rhs: XYZ): number {\r\n let cmp = compareNumbers(lhs.x, rhs.x);\r\n if (0 === cmp) {\r\n cmp = compareNumbers(lhs.y, rhs.y);\r\n if (0 === cmp)\r\n cmp = compareNumbers(lhs.z, rhs.z);\r\n }\r\n\r\n return cmp;\r\n}\r\n\r\nfunction compareMatrices(lhs: Matrix3d, rhs: Matrix3d): number {\r\n for (let i = 0; i < 9; i++) {\r\n const cmp = compareNumbers(lhs.coffs[i], rhs.coffs[i]);\r\n if (0 !== cmp)\r\n return cmp;\r\n }\r\n\r\n return 0;\r\n}\r\n\r\nfunction compareTransforms(lhs?: Transform, rhs?: Transform) {\r\n if (undefined === lhs)\r\n return undefined !== rhs ? -1 : 0;\r\n\r\n else if (undefined === rhs)\r\n return 1;\r\n\r\n const cmp = compareOrigins(lhs.origin, rhs.origin);\r\n return 0 !== cmp ? cmp : compareMatrices(lhs.matrix, rhs.matrix);\r\n}\r\n\r\nclass RealityTreeSupplier implements TileTreeSupplier {\r\n public readonly isEcefDependent = true;\r\n\r\n public getOwner(treeId: RealityTreeId, iModel: IModelConnection): TileTreeOwner {\r\n return iModel.tiles.getTileTreeOwner(treeId, this);\r\n }\r\n\r\n public async createTileTree(treeId: RealityTreeId, iModel: IModelConnection): Promise<TileTree | undefined> {\r\n if (treeId.maskModelIds)\r\n await iModel.models.load(CompressedId64Set.decompressSet(treeId.maskModelIds));\r\n\r\n return RealityModelTileTree.createRealityModelTileTree(treeId.rdSourceKey, iModel, treeId.modelId, treeId.transform);\r\n }\r\n\r\n public compareTileTreeIds(lhs: RealityTreeId, rhs: RealityTreeId): number {\r\n let cmp = compareStringsOrUndefined(lhs.rdSourceKey.id, rhs.rdSourceKey.id);\r\n if (0 === cmp)\r\n cmp = compareStringsOrUndefined(lhs.rdSourceKey.format, rhs.rdSourceKey.format);\r\n if (0 === cmp)\r\n cmp = compareStringsOrUndefined(lhs.rdSourceKey.iTwinId, rhs.rdSourceKey.iTwinId);\r\n if (0 === cmp)\r\n cmp = compareStringsOrUndefined(lhs.modelId, rhs.modelId);\r\n\r\n if (0 !== cmp)\r\n return cmp;\r\n\r\n cmp = compareStringsOrUndefined(lhs.maskModelIds, rhs.maskModelIds);\r\n if (0 !== cmp)\r\n return cmp;\r\n\r\n cmp = compareTransforms(lhs.transform, rhs.transform);\r\n if (0 !== cmp)\r\n return cmp;\r\n\r\n return compareTransforms(lhs.toEcefTransform, rhs.toEcefTransform);\r\n }\r\n}\r\n\r\nconst realityTreeSupplier = new RealityTreeSupplier();\r\n\r\n/** @internal */\r\nexport function createRealityTileTreeReference(props: RealityModelTileTree.ReferenceProps): RealityModelTileTree.Reference {\r\n return new RealityTreeReference(props);\r\n}\r\n\r\nconst zeroPoint = Point3d.createZero();\r\nconst earthEllipsoid = Ellipsoid.createCenterMatrixRadii(zeroPoint, undefined, Constant.earthRadiusWGS84.equator, Constant.earthRadiusWGS84.equator, Constant.earthRadiusWGS84.polar);\r\nconst scratchRay = Ray3d.createXAxis();\r\n\r\n/** @internal */\r\nexport class RealityTileRegion {\r\n constructor(values: { minLongitude: number, minLatitude: number, minHeight: number, maxLongitude: number, maxLatitude: number, maxHeight: number }) {\r\n this.minLongitude = values.minLongitude;\r\n this.minLatitude = values.minLatitude;\r\n this.minHeight = values.minHeight;\r\n this.maxLongitude = values.maxLongitude;\r\n this.maxLatitude = values.maxLatitude;\r\n this.maxHeight = values.maxHeight;\r\n }\r\n public minLongitude: number;\r\n public minLatitude: number;\r\n public minHeight: number;\r\n public maxLongitude: number;\r\n public maxLatitude: number;\r\n public maxHeight: number;\r\n\r\n public static create(region: number[]): RealityTileRegion {\r\n const minHeight = region[4];\r\n const maxHeight = region[5];\r\n const minLongitude = region[0];\r\n const maxLongitude = region[2];\r\n const minLatitude = Cartographic.parametricLatitudeFromGeodeticLatitude(region[1]);\r\n const maxLatitude = Cartographic.parametricLatitudeFromGeodeticLatitude(region[3]);\r\n return new RealityTileRegion({ minLongitude, minLatitude, minHeight, maxLongitude, maxLatitude, maxHeight });\r\n }\r\n\r\n public static isGlobal(boundingVolume: any) {\r\n return Array.isArray(boundingVolume?.region) && (boundingVolume.region[2] - boundingVolume.region[0]) > Angle.piRadians && (boundingVolume.region[3] - boundingVolume.region[1]) > Angle.piOver2Radians;\r\n }\r\n public getRange(): { range: Range3d, corners?: Point3d[] } {\r\n const maxAngle = Math.max(Math.abs(this.maxLatitude - this.minLatitude), Math.abs(this.maxLongitude - this.minLongitude));\r\n let corners;\r\n let range: Range3d;\r\n if (maxAngle < Math.PI / 8) {\r\n corners = new Array<Point3d>(8);\r\n const chordTolerance = (1 - Math.cos(maxAngle / 2)) * Constant.earthRadiusWGS84.polar;\r\n const addEllipsoidCorner = ((long: number, lat: number, index: number) => {\r\n const ray = earthEllipsoid.radiansToUnitNormalRay(long, lat, scratchRay)!;\r\n corners[index] = ray.fractionToPoint(this.minHeight - chordTolerance);\r\n corners[index + 4] = ray.fractionToPoint(this.maxHeight + chordTolerance);\r\n });\r\n addEllipsoidCorner(this.minLongitude, this.minLatitude, 0);\r\n addEllipsoidCorner(this.minLongitude, this.maxLatitude, 1);\r\n addEllipsoidCorner(this.maxLongitude, this.minLatitude, 2);\r\n addEllipsoidCorner(this.maxLongitude, this.maxLatitude, 3);\r\n range = Range3d.createArray(corners);\r\n } else {\r\n const minEq = Constant.earthRadiusWGS84.equator + this.minHeight, maxEq = Constant.earthRadiusWGS84.equator + this.maxHeight;\r\n const minEllipsoid = Ellipsoid.createCenterMatrixRadii(zeroPoint, undefined, minEq, minEq, Constant.earthRadiusWGS84.polar + this.minHeight);\r\n const maxEllipsoid = Ellipsoid.createCenterMatrixRadii(zeroPoint, undefined, maxEq, maxEq, Constant.earthRadiusWGS84.polar + this.maxHeight);\r\n range = minEllipsoid.patchRangeStartEndRadians(this.minLongitude, this.maxLongitude, this.minLatitude, this.maxLatitude);\r\n range.extendRange(maxEllipsoid.patchRangeStartEndRadians(this.minLongitude, this.maxLongitude, this.minLatitude, this.maxLatitude));\r\n }\r\n return { range, corners };\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport class RealityModelTileUtils {\r\n public static rangeFromBoundingVolume(boundingVolume: any): { range: Range3d, corners?: Point3d[], region?: RealityTileRegion } | undefined {\r\n if (undefined === boundingVolume)\r\n return undefined;\r\n\r\n let corners: Point3d[] | undefined;\r\n let range: Range3d | undefined;\r\n if (undefined !== boundingVolume.box) {\r\n const box: number[] = boundingVolume.box;\r\n const center = Point3d.create(box[0], box[1], box[2]);\r\n const ux = Vector3d.create(box[3], box[4], box[5]);\r\n const uy = Vector3d.create(box[6], box[7], box[8]);\r\n const uz = Vector3d.create(box[9], box[10], box[11]);\r\n corners = new Array<Point3d>();\r\n for (let j = 0; j < 2; j++) {\r\n for (let k = 0; k < 2; k++) {\r\n for (let l = 0; l < 2; l++) {\r\n corners.push(center.plus3Scaled(ux, (j ? -1.0 : 1.0), uy, (k ? -1.0 : 1.0), uz, (l ? -1.0 : 1.0)));\r\n }\r\n }\r\n }\r\n range = Range3d.createArray(corners);\r\n } else if (Array.isArray(boundingVolume.sphere)) {\r\n const sphere: number[] = boundingVolume.sphere;\r\n const center = Point3d.create(sphere[0], sphere[1], sphere[2]);\r\n const radius = sphere[3];\r\n range = Range3d.createXYZXYZ(center.x - radius, center.y - radius, center.z - radius, center.x + radius, center.y + radius, center.z + radius);\r\n } else if (Array.isArray(boundingVolume.region)) {\r\n const region = RealityTileRegion.create(boundingVolume.region);\r\n const regionRange = region.getRange();\r\n return { range: regionRange.range, corners: regionRange.corners, region };\r\n }\r\n return range ? { range, corners } : undefined;\r\n\r\n }\r\n public static maximumSizeFromGeometricTolerance(range: Range3d, geometricError: number): number {\r\n const minToleranceRatio = true === IModelApp.renderSystem.isMobile ? IModelApp.tileAdmin.mobileRealityTileMinToleranceRatio : 1.0; // Nominally the error on screen size of a tile. Increasing generally increases performance (fewer draw calls) at expense of higher load times.\r\n\r\n // NB: We increase the above minToleranceRatio on mobile devices in order to help avoid pruning too often based on the memory threshold for\r\n // pruning currently used by reality tile trees on mobile.\r\n\r\n return minToleranceRatio * range.diagonal().magnitude() / geometricError;\r\n }\r\n public static transformFromJson(jTrans: number[] | undefined): Transform {\r\n return (jTrans === undefined) ? Transform.createIdentity() : Transform.createOriginAndMatrix(Point3d.create(jTrans[12], jTrans[13], jTrans[14]), Matrix3d.createRowValues(jTrans[0], jTrans[4], jTrans[8], jTrans[1], jTrans[5], jTrans[9], jTrans[2], jTrans[6], jTrans[10]));\r\n }\r\n}\r\n\r\n/** @internal */\r\nenum SMTextureType {\r\n None = 0, // no textures\r\n Embedded = 1, // textures are available and stored in the nodes\r\n Streaming = 2, // textures need to be downloaded, Bing Maps, etc…\r\n}\r\n\r\n/** @internal */\r\nclass RealityModelTileTreeProps {\r\n public location: Transform;\r\n public tilesetJson: any;\r\n public doDrapeBackgroundMap: boolean = false;\r\n public client: RealityModelTileClient;\r\n public yAxisUp = false;\r\n public root: any;\r\n\r\n constructor(json: any, root: any, client: RealityModelTileClient, tilesetToDbTransform: Transform, public readonly tilesetToEcef?: Transform) {\r\n this.tilesetJson = root;\r\n this.client = client;\r\n this.location = tilesetToDbTransform;\r\n this.doDrapeBackgroundMap = (json.root && json.root.SMMasterHeader && SMTextureType.Streaming === json.root.SMMasterHeader.IsTextured);\r\n if (json.asset.gltfUpAxis === undefined || json.asset.gltfUpAxis === \"y\" || json.asset.gltfUpAxis === \"Y\")\r\n this.yAxisUp = true;\r\n }\r\n}\r\n\r\nclass RealityModelTileTreeParams implements RealityTileTreeParams {\r\n public id: string;\r\n public modelId: string;\r\n public iModel: IModelConnection;\r\n public is3d = true;\r\n public loader: RealityModelTileLoader;\r\n public rootTile: RealityTileParams;\r\n\r\n public get location() { return this.loader.tree.location; }\r\n public get yAxisUp() { return this.loader.tree.yAxisUp; }\r\n public get priority() { return this.loader.priority; }\r\n\r\n public constructor(url: string, iModel: IModelConnection, modelId: Id64String, loader: RealityModelTileLoader, public readonly gcsConverterAvailable: boolean, public readonly rootToEcef: Transform | undefined) {\r\n this.loader = loader;\r\n this.id = url;\r\n this.modelId = modelId;\r\n this.iModel = iModel;\r\n this.rootTile = new RealityModelTileProps(loader.tree.tilesetJson, undefined, \"\", undefined, undefined === loader.tree.tilesetJson.refine ? undefined : loader.tree.tilesetJson.refine === \"ADD\");\r\n }\r\n}\r\n\r\n/** @internal */\r\nclass RealityModelTileProps implements RealityTileParams {\r\n public readonly contentId: string;\r\n public readonly range: Range3d;\r\n public readonly contentRange?: Range3d;\r\n public readonly maximumSize: number;\r\n public readonly isLeaf: boolean;\r\n public readonly transformToRoot?: Transform;\r\n public readonly additiveRefinement?: boolean;\r\n public readonly parent?: RealityTile;\r\n public readonly noContentButTerminateOnSelection?: boolean;\r\n public readonly rangeCorners?: Point3d[];\r\n public readonly region?: RealityTileRegion;\r\n\r\n constructor(json: any, parent: RealityTile | undefined, thisId: string, transformToRoot?: Transform, additiveRefinement?: boolean) {\r\n this.contentId = thisId;\r\n this.parent = parent;\r\n const boundingVolume = RealityModelTileUtils.rangeFromBoundingVolume(json.boundingVolume);\r\n if (boundingVolume) {\r\n this.range = boundingVolume.range;\r\n this.rangeCorners = boundingVolume.corners;\r\n this.region = boundingVolume?.region;\r\n } else {\r\n this.range = Range3d.createNull();\r\n assert(false, \"Unbounded tile\");\r\n }\r\n this.isLeaf = !Array.isArray(json.children) || 0 === json.children.length;\r\n this.transformToRoot = transformToRoot;\r\n this.additiveRefinement = additiveRefinement;\r\n const hasContents = undefined !== getUrl(json.content);\r\n if (hasContents)\r\n this.contentRange = RealityModelTileUtils.rangeFromBoundingVolume(json.content.boundingVolume)?.range;\r\n else {\r\n // A node without content should probably be selectable even if not additive refinement - But restrict it to that case here\r\n // to avoid potential problems with existing reality models, but still avoid overselection in the OSM world building set.\r\n if (this.additiveRefinement || parent?.additiveRefinement)\r\n this.noContentButTerminateOnSelection = true;\r\n }\r\n\r\n this.maximumSize = (this.noContentButTerminateOnSelection || hasContents) ? RealityModelTileUtils.maximumSizeFromGeometricTolerance(Range3d.fromJSON(this.range), json.geometricError) : 0;\r\n }\r\n}\r\n\r\n/** @internal */\r\nclass FindChildResult {\r\n constructor(public id: string, public json: any, public transformToRoot?: Transform) { }\r\n}\r\n\r\n/** @internal */\r\nfunction assembleUrl(prefix: string, url: string): string {\r\n\r\n if (url.startsWith(\"./\")) {\r\n url = url.substring(2);\r\n } else {\r\n const prefixParts = prefix.split(\"/\");\r\n prefixParts.pop();\r\n while (url.startsWith(\"../\")) {\r\n prefixParts.pop();\r\n url = url.substring(3);\r\n }\r\n prefixParts.push(\"\");\r\n prefix = prefixParts.join(\"/\");\r\n }\r\n return prefix + url;\r\n}\r\n\r\n/** @internal */\r\nfunction addUrlPrefix(subTree: any, prefix: string) {\r\n if (undefined === subTree)\r\n return;\r\n\r\n if (undefined !== subTree.content) {\r\n if (undefined !== subTree.content.url)\r\n subTree.content.url = assembleUrl(prefix, subTree.content.url);\r\n else if (undefined !== subTree.content.uri)\r\n subTree.content.uri = assembleUrl(prefix, subTree.content.uri);\r\n }\r\n\r\n if (undefined !== subTree.children)\r\n for (const child of subTree.children)\r\n addUrlPrefix(child, prefix);\r\n}\r\n\r\n/** @internal */\r\nasync function expandSubTree(root: any, client: RealityModelTileClient): Promise<any> {\r\n const childUrl = getUrl(root.content);\r\n if (undefined !== childUrl && childUrl.endsWith(\"json\")) { // A child may contain a subTree...\r\n const subTree = await client.getTileJson(childUrl);\r\n const prefixIndex = childUrl.lastIndexOf(\"/\");\r\n if (prefixIndex > 0)\r\n addUrlPrefix(subTree.root, childUrl.substring(0, prefixIndex + 1));\r\n\r\n return subTree.root;\r\n } else {\r\n return root;\r\n }\r\n}\r\n\r\n/** @internal */\r\nclass RealityModelTileLoader extends RealityTileLoader {\r\n public readonly tree: RealityModelTileTreeProps;\r\n private readonly _batchedIdMap?: BatchedTileIdMap;\r\n private _viewFlagOverrides: ViewFlagOverrides;\r\n\r\n public constructor(tree: RealityModelTileTreeProps, batchedIdMap?: BatchedTileIdMap) {\r\n super();\r\n this.tree = tree;\r\n this._batchedIdMap = batchedIdMap;\r\n let clipVolume;\r\n if (RealityTileRegion.isGlobal(tree.tilesetJson.boundingVolume))\r\n clipVolume = false;\r\n this._viewFlagOverrides = createDefaultViewFlagOverrides({ lighting: true, clipVolume });\r\n\r\n // Display edges if they are present (Cesium outline extension) and enabled for view.\r\n this._viewFlagOverrides.visibleEdges = undefined;\r\n this._viewFlagOverrides.hiddenEdges = undefined;\r\n }\r\n\r\n public get doDrapeBackgroundMap(): boolean { return this.tree.doDrapeBackgroundMap; }\r\n\r\n public get maxDepth(): number { return 32; } // Can be removed when element tile selector is working.\r\n public get minDepth(): number { return 0; }\r\n public get priority(): TileLoadPriority { return TileLoadPriority.Context; }\r\n public override getBatchIdMap(): BatchedTileIdMap | undefined { return this._batchedIdMap; }\r\n public get clipLowResolutionTiles(): boolean { return true; }\r\n public override get viewFlagOverrides(): ViewFlagOverrides { return this._viewFlagOverrides; }\r\n\r\n public async loadChildren(tile: RealityTile): Promise<Tile[] | undefined> {\r\n const props = await this.getChildrenProps(tile);\r\n if (undefined === props)\r\n return undefined;\r\n\r\n const children = [];\r\n for (const prop of props)\r\n children.push(tile.realityRoot.createTile(prop));\r\n\r\n return children;\r\n }\r\n\r\n public async getChildrenProps(parent: RealityTile): Promise<RealityTileParams[]> {\r\n const props: RealityModelTileProps[] = [];\r\n const thisId = parent.contentId;\r\n const prefix = thisId.length ? `${thisId}_` : \"\";\r\n const findResult = await this.findTileInJson(this.tree.tilesetJson, thisId, \"\", undefined);\r\n if (undefined !== findResult && Array.isArray(findResult.json.children)) {\r\n for (let i = 0; i < findResult.json.children.length; i++) {\r\n const childId = prefix + i;\r\n const foundChild = await this.findTileInJson(this.tree.tilesetJson, childId, \"\", undefined);\r\n if (undefined !== foundChild)\r\n props.push(new RealityModelTileProps(foundChild.json, parent, foundChild.id, foundChild.transformToRoot, foundChild.json.refine === undefined ? undefined : foundChild.json.refine === \"ADD\"));\r\n }\r\n }\r\n return props;\r\n }\r\n\r\n public getRequestChannel(_tile: Tile) {\r\n // ###TODO: May want to extract the hostname from the URL.\r\n return IModelApp.tileAdmin.channels.getForHttp(\"itwinjs-reality-model\");\r\n }\r\n\r\n public async requestTileContent(tile: Tile, isCanceled: () => boolean): Promise<TileRequest.Response> {\r\n const foundChild = await this.findTileInJson(this.tree.tilesetJson, tile.contentId, \"\");\r\n if (undefined === foundChild || undefined === foundChild.json.content || isCanceled())\r\n return undefined;\r\n\r\n return this.tree.client.getTileContent(getUrl(foundChild.json.content));\r\n }\r\n\r\n private async findTileInJson(tilesetJson: any, id: string, parentId: string, transformToRoot?: Transform): Promise<FindChildResult | undefined> {\r\n if (id.length === 0)\r\n return new FindChildResult(id, tilesetJson, transformToRoot); // Root.\r\n\r\n const separatorIndex = id.indexOf(\"_\");\r\n const childId = (separatorIndex < 0) ? id : id.substring(0, separatorIndex);\r\n const childIndex = parseInt(childId, 10);\r\n\r\n if (isNaN(childIndex) || tilesetJson === undefined || tilesetJson.children === undefined || childIndex >= tilesetJson.children.length) {\r\n assert(false, \"scalable mesh child not found.\");\r\n return undefined;\r\n }\r\n\r\n const foundChild = tilesetJson.children[childIndex];\r\n const thisParentId = parentId.length ? (`${parentId}_${childId}`) : childId;\r\n if (foundChild.transform) {\r\n const thisTransform = RealityModelTileUtils.transformFromJson(foundChild.transform);\r\n transformToRoot = transformToRoot ? transformToRoot.multiplyTransformTransform(thisTransform) : thisTransform;\r\n }\r\n\r\n if (separatorIndex >= 0) {\r\n return this.findTileInJson(foundChild, id.substring(separatorIndex + 1), thisParentId, transformToRoot);\r\n }\r\n\r\n tilesetJson.children[childIndex] = await expandSubTree(foundChild, this.tree.client);\r\n\r\n return new FindChildResult(thisParentId, tilesetJson.children[childIndex], transformToRoot);\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport type RealityModelSource = ViewState | DisplayStyleState;\r\n\r\n/** @internal */\r\nexport class RealityModelTileTree extends RealityTileTree {\r\n private readonly _isContentUnbounded: boolean;\r\n public constructor(params: RealityTileTreeParams) {\r\n super(params);\r\n\r\n this._isContentUnbounded = this.rootTile.contentRange.diagonal().magnitude() > 2 * Constant.earthRadiusWGS84.equator;\r\n if (!this.isContentUnbounded && !this.rootTile.contentRange.isNull) {\r\n const worldContentRange = this.iModelTransform.multiplyRange(this.rootTile.contentRange);\r\n this.iModel.expandDisplayedExtents(worldContentRange);\r\n }\r\n }\r\n public override get isContentUnbounded() { return this._isContentUnbounded; }\r\n}\r\n\r\n/** @internal */\r\n// eslint-disable-next-line no-redeclare\r\nexport namespace RealityModelTileTree {\r\n\r\n export interface ReferenceBaseProps {\r\n iModel: IModelConnection;\r\n source: RealityModelSource;\r\n rdSourceKey: RealityDataSourceKey;\r\n modelId?: Id64String;\r\n tilesetToDbTransform?: TransformProps;\r\n tilesetToEcefTransform?: TransformProps;\r\n name?: string;\r\n classifiers?: SpatialClassifiers;\r\n planarClipMask?: PlanarClipMaskSettings;\r\n }\r\n export interface ReferenceProps extends ReferenceBaseProps {\r\n url?: string;\r\n requestAuthorization?: string;\r\n }\r\n\r\n export abstract class Reference extends TileTreeReference {\r\n protected readonly _name: string;\r\n\r\n protected _transform?: Transform;\r\n protected _iModel: IModelConnection;\r\n private _modelId: Id64String;\r\n private _isGlobal?: boolean;\r\n protected _planarClipMask?: PlanarClipMaskState;\r\n protected _classifier?: SpatialClassifierTileTreeReference;\r\n protected _mapDrapeTree?: TileTreeReference;\r\n public get modelId() { return this._modelId; }\r\n public get classifiers(): SpatialClassifiers | undefined { return undefined !== this._classifier ? this._classifier.classifiers : undefined; }\r\n public get planarClipMask(): PlanarClipMaskState | undefined { return this._planarClipMask; }\r\n public set planarClipMask(planarClipMask: PlanarClipMaskState | undefined) { this._planarClipMask = planarClipMask; }\r\n public get planarClipMaskPriority(): number {\r\n if (this._planarClipMask?.settings.priority !== undefined)\r\n return this._planarClipMask.settings.priority;\r\n\r\n return this.isGlobal ? PlanarClipMaskPriority.GlobalRealityModel : PlanarClipMaskPriority.RealityModel;\r\n }\r\n\r\n protected get maskModelIds(): string | undefined {\r\n return this._planarClipMask?.settings.compressedModelIds;\r\n }\r\n\r\n public constructor(props: RealityModelTileTree.ReferenceBaseProps) {\r\n super();\r\n this._name = undefined !== props.name ? props.name : \"\";\r\n this._modelId = props.modelId ? props.modelId : props.iModel.transientIds.next;\r\n let transform;\r\n if (undefined !== props.tilesetToDbTransform) {\r\n const tf = Transform.fromJSON(props.tilesetToDbTransform);\r\n if (!tf.isIdentity)\r\n transform = tf;\r\n\r\n this._transform = transform;\r\n }\r\n\r\n this._iModel = props.iModel;\r\n if (props.planarClipMask)\r\n this._planarClipMask = PlanarClipMaskState.create(props.planarClipMask);\r\n\r\n if (undefined !== props.classifiers)\r\n this._classifier = createClassifierTileTreeReference(props.classifiers, this, props.iModel, props.source);\r\n }\r\n\r\n public get planarClassifierTreeRef() { return this._classifier && this._classifier.activeClassifier && this._classifier.isPlanar ? this._classifier : undefined; }\r\n\r\n public override unionFitRange(union: Range3d): void {\r\n const contentRange = this.computeWorldContentRange();\r\n if (!contentRange.isNull && contentRange.diagonal().magnitude() < Constant.earthRadiusWGS84.equator)\r\n union.extendRange(contentRange);\r\n }\r\n public override get isGlobal() {\r\n if (undefined === this._isGlobal) {\r\n const range = this.computeWorldContentRange();\r\n if (!range.isNull)\r\n this._isGlobal = range.diagonal().magnitude() > 2 * Constant.earthRadiusWGS84.equator;\r\n }\r\n return this._isGlobal === undefined ? false : this._isGlobal;\r\n }\r\n\r\n public override addToScene(context: SceneContext): void {\r\n // NB: The classifier must be added first, so we can find it when adding our own tiles.\r\n if (this._classifier && this._classifier.activeClassifier)\r\n this._classifier.addToScene(context);\r\n\r\n this.addPlanarClassifierOrMaskToScene(context);\r\n super.addToScene(context);\r\n }\r\n protected addPlanarClassifierOrMaskToScene(context: SceneContext) {\r\n // A planarClassifier is required if there is a classification tree OR planar masking is required.\r\n const classifierTree = this.planarClassifierTreeRef;\r\n const planarClipMask = this._planarClipMask ?? context.viewport.displayStyle.getPlanarClipMaskState(this.modelId);\r\n if (!classifierTree && !planarClipMask)\r\n return;\r\n\r\n if (classifierTree && !classifierTree.treeOwner.load())\r\n return;\r\n\r\n context.addPlanarClassifier(this.modelId, classifierTree, planarClipMask);\r\n }\r\n\r\n public override discloseTileTrees(trees: DisclosedTileTreeSet): void {\r\n super.discloseTileTrees(trees);\r\n\r\n if (undefined !== this._classifier)\r\n this._classifier.discloseTileTrees(trees);\r\n\r\n if (undefined !== this._mapDrapeTree)\r\n this._mapDrapeTree.discloseTileTrees(trees);\r\n\r\n if (undefined !== this._planarClipMask)\r\n this._planarClipMask.discloseTileTrees(trees);\r\n }\r\n public override collectStatistics(stats: RenderMemory.Statistics): void {\r\n super.collectStatistics(stats);\r\n\r\n const tree = undefined !== this._classifier ? this._classifier.treeOwner.tileTree : undefined;\r\n if (undefined !== tree)\r\n tree.collectStatistics(stats);\r\n }\r\n }\r\n\r\n export async function createRealityModelTileTree(rdSourceKey: RealityDataSourceKey, iModel: IModelConnection, modelId: Id64String, tilesetToDb: Transform | undefined): Promise<TileTree | undefined> {\r\n const rdConnection = await RealityDataConnection.fromSourceKey(rdSourceKey, iModel.iTwinId);\r\n // If we can get a valid connection from sourceKey, returns the tile tree\r\n if (rdConnection) {\r\n const url = await rdConnection.getServiceUrl(iModel.iTwinId);\r\n if (url === undefined)\r\n return undefined;\r\n const props = await getTileTreeProps(rdConnection, tilesetToDb, iModel);\r\n const loader = new RealityModelTileLoader(props, new BatchedTileIdMap(iModel));\r\n const gcsConverterAvailable = await getGcsConverterAvailable(iModel);\r\n const params = new RealityModelTileTreeParams(url, iModel, modelId, loader, gcsConverterAvailable, props.tilesetToEcef);\r\n return new RealityModelTileTree(params);\r\n }\r\n return undefined;\r\n }\r\n\r\n async function getTileTreeProps(rdConnection: RealityDataConnection, tilesetToDbJson: any, iModel: IModelConnection): Promise<RealityModelTileTreeProps> {\r\n const url = await rdConnection.getServiceUrl(iModel.iTwinId);\r\n if (!url)\r\n throw new IModelError(BentleyStatus.ERROR, \"Unable to read reality data\");\r\n const tileClient = new RealityModelTileClient(rdConnection, iModel.iTwinId);\r\n const json = await tileClient.getRootDocument(url);\r\n let rootTransform = iModel.ecefLocation ? iModel.getMapEcefToDb(0) : Transform.createIdentity();\r\n const geoConverter = iModel.noGcsDefined ? undefined : iModel.geoServices.getConverter(\"WGS84\");\r\n if (geoConverter !== undefined) {\r\n let realityTileRange = RealityModelTileUtils.rangeFromBoundingVolume(json.root.boundingVolume)!.range;\r\n if (json.root.transform) {\r\n const realityToEcef = RealityModelTileUtils.transformFromJson(json.root.transform);\r\n realityTileRange = realityToEcef.multiplyRange(realityTileRange);\r\n }\r\n\r\n if (iModel.ecefLocation) {\r\n // In initial publishing version the iModel ecef Transform was used to locate the reality model.\r\n // This would work well only for tilesets published from that iModel but for iModels the ecef transform is calculated\r\n // at the center of the project extents and the reality model location may differ greatly, and the curvature of the earth\r\n // could introduce significant errors.\r\n // The publishing was modified to calculate the ecef transform at the reality model range center and at the same time the \"iModelPublishVersion\"\r\n // member was added to the root object. In order to continue to locate reality models published from older versions at the\r\n // project extents center we look for Tileset version 0.0 and no root.iModelVersion.\r\n const ecefOrigin = realityTileRange.localXYZToWorld(.5, .5, .5)!;\r\n const dbOrigin = rootTransform.multiplyPoint3d(ecefOrigin);\r\n const realityOriginToProjectDistance = iModel.projectExtents.distanceToPoint(dbOrigin);\r\n const maxProjectDistance = 1E5; // Only use the project GCS projection if within 100KM of the project. Don't attempt to use GCS if global reality model or in another locale - Results will be unreliable.\r\n if (realityOriginToProjectDistance < maxProjectDistance && json.asset?.version !== \"0.0\" || undefined !== json.root?.iModelPublishVersion) {\r\n const cartographicOrigin = Cartographic.fromEcef(ecefOrigin);\r\n\r\n if (cartographicOrigin !== undefined) {\r\n const geoOrigin = Point3d.create(cartographicOrigin.longitudeDegrees, cartographicOrigin.latitudeDegrees, cartographicOrigin.height);\r\n const response = await geoConverter.getIModelCoordinatesFromGeoCoordinates([geoOrigin]);\r\n if (response.iModelCoords[0].s === GeoCoordStatus.Success) {\r\n const ecefToDb = await calculateEcefToDbTransformAtLocation(Point3d.fromJSON(response.iModelCoords[0].p), iModel);\r\n if (ecefToDb)\r\n rootTransform = ecefToDb;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n let tilesetToEcef = Transform.createIdentity();\r\n\r\n if (json.root.transform) {\r\n tilesetToEcef = RealityModelTileUtils.transformFromJson(json.root.transform);\r\n rootTransform = rootTransform.multiplyTransformTransform(tilesetToEcef);\r\n }\r\n\r\n if (undefined !== tilesetToDbJson)\r\n rootTransform = Transform.fromJSON(tilesetToDbJson).multiplyTransformTransform(rootTransform);\r\n\r\n const root = await expandSubTree(json.root, tileClient);\r\n return new RealityModelTileTreeProps(json, root, tileClient, rootTransform, tilesetToEcef);\r\n }\r\n}\r\n\r\n/** Supplies a reality data [[TileTree]] from a URL. May be associated with a persistent [[GeometricModelState]], or attached at run-time via a [[ContextRealityModelState]].\r\n * @internal\r\n */\r\nclass RealityTreeReference extends RealityModelTileTree.Reference {\r\n protected _rdSourceKey: RealityDataSourceKey;\r\n\r\n public constructor(props: RealityModelTileTree.ReferenceProps) {\r\n super(props);\r\n\r\n // Maybe we should throw if both props.rdSourceKey && props.url are undefined\r\n this._rdSourceKey = props.rdSourceKey ? props.rdSourceKey : props.url ? RealityDataSource.createRealityDataSourceKeyFromUrl(props.url, RealityDataProvider.ContextShare) :\r\n RealityDataSource.createRealityDataSourceKeyFromUrl(\"\", RealityDataProvider.ContextShare);\r\n }\r\n public get treeOwner(): TileTreeOwner {\r\n const treeId: RealityTreeId = { rdSourceKey: this._rdSourceKey, transform: this._transform, modelId: this.modelId, maskModelIds: this.maskModelIds };\r\n return realityTreeSupplier.getOwner(treeId, this._iModel);\r\n }\r\n\r\n public override get castsShadows() {\r\n return true;\r\n }\r\n\r\n protected override get _isLoadingComplete(): boolean {\r\n return !this._mapDrapeTree || this._mapDrapeTree.isLoadingComplete;\r\n }\r\n\r\n public override createDrawArgs(context: SceneContext): TileDrawArgs | undefined {\r\n // For global reality models (OSM Building layer only) - offset the reality model by the BIM elevation bias. This would not be necessary\r\n // if iModels had their elevation set correctly but unfortunately many GCS erroneously report Sea (Geoid) elevation rather than\r\n // Geodetic.\r\n const tree = this.treeOwner.load();\r\n if (undefined === tree)\r\n return undefined;\r\n\r\n const drawArgs = super.createDrawArgs(context);\r\n if (drawArgs !== undefined && this._iModel.isGeoLocated && tree.isContentUnbounded) {\r\n const elevationBias = context.viewport.view.displayStyle.backgroundMapElevationBias;\r\n\r\n if (undefined !== elevationBias)\r\n drawArgs.location.origin.z -= elevationBias;\r\n }\r\n\r\n return drawArgs;\r\n }\r\n\r\n public override addToScene(context: SceneContext): void {\r\n const tree = this.treeOwner.tileTree as RealityTileTree;\r\n if (undefined !== tree && context.viewport.iModel.isGeoLocated && (tree.loader as RealityModelTileLoader).doDrapeBackgroundMap) {\r\n // NB: We save this off strictly so that discloseTileTrees() can find it...better option?\r\n this._mapDrapeTree = context.viewport.backgroundDrapeMap;\r\n context.addBackgroundDrapedModel(this, undefined);\r\n }\r\n\r\n super.addToScene(context);\r\n }\r\n\r\n public override async getToolTip(hit: HitDetail): Promise<HTMLElement | string | undefined> {\r\n const tree = this.treeOwner.tileTree;\r\n if (undefined === tree || hit.iModel !== tree.iModel)\r\n return undefined;\r\n\r\n const map = (tree as RealityTileTree).loader.getBatchIdMap();\r\n const batch = undefined !== map ? map.getBatchProperties(hit.sourceId) : undefined;\r\n if (undefined === batch && tree.modelId !== hit.sourceId)\r\n return undefined;\r\n\r\n const strings = [];\r\n\r\n const loader = (tree as RealityModelTileTree).loader;\r\n const type = await (loader as RealityModelTileLoader).tree.client.getRealityDataType();\r\n\r\n // If a type is specified, display it\r\n if (type !== undefined) {\r\n // Case insensitive\r\n switch (type.toUpperCase()) {\r\n case DefaultSupportedTypes.RealityMesh3dTiles.toUpperCase():\r\n strings.push(IModelApp.localization.getLocalizedString(\"iModelJs:RealityModelTypes.RealityMesh3DTiles\"));\r\n break;\r\n case DefaultSupportedTypes.Terrain3dTiles.toUpperCase():\r\n strings.push(IModelApp.localization.getLocalizedString(\"iModelJs:RealityModelTypes.Terrain3DTiles\"));\r\n break;\r\n case DefaultSupportedTypes.Cesium3dTiles.toUpperCase():\r\n strings.push(IModelApp.localization.getLocalizedString(\"iModelJs:RealityModelTypes.Cesium3DTiles\"));\r\n break;\r\n }\r\n }\r\n\r\n if (this._name) {\r\n strings.push(`${IModelApp.localization.getLocalizedString(\"iModelJs:TooltipInfo.Name\")} ${this._name}`);\r\n } else {\r\n const cesiumAsset = this._rdSourceKey.provider === RealityDataProvider.CesiumIonAsset ? parseCesiumUrl(this._rdSourceKey.id) : undefined;\r\n strings.push(cesiumAsset ? `Cesium Asset: ${cesiumAsset.id}` : this._rdSourceKey.id);\r\n }\r\n\r\n if (batch !== undefined)\r\n for (const key of Object.keys(batch))\r\n if (-1 === key.indexOf(\"#\")) // Avoid internal cesium\r\n strings.push(`${key}: ${batch[key]}`);\r\n\r\n const div = document.createElement(\"div\");\r\n div.innerHTML = strings.join(\"<br>\");\r\n return div;\r\n }\r\n\r\n public override addLogoCards(cards: HTMLTableElement, _vp: ScreenViewport): void {\r\n if (this._rdSourceKey.id === getCesiumOSMBuildingsUrl()) {\r\n cards.appendChild(IModelApp.makeLogoCard({ heading: \"OpenStreetMap\", notice: `&copy;<a href=\\\"https://www.openstreetmap.org/copyright\\\">OpenStreetMap</a> ${IModelApp.localization.getLocalizedString(\"iModelJs:BackgroundMap:OpenStreetMapContributors\")}` }));\r\n }\r\n }\r\n}\r\n\r\ninterface RDSClientProps {\r\n iTwinId: string;\r\n tilesId: string;\r\n}\r\n\r\n// TBD - Allow an object to override the URL and provide its own authentication.\r\nfunction parseCesiumUrl(url: string): { id: number, key: string } | undefined {\r\n const cesiumSuffix = \"$CesiumIonAsset=\";\r\n const cesiumIndex = url.indexOf(cesiumSuffix);\r\n if (cesiumIndex < 0)\r\n return undefined;\r\n const cesiumIonString = url.slice(cesiumIndex + cesiumSuffix.length);\r\n const cesiumParts = cesiumIonString.split(\":\");\r\n if (cesiumParts.length !== 2)\r\n return undefined;\r\n\r\n const id = parseInt(cesiumParts[0], 10);\r\n if (id === undefined)\r\n return undefined;\r\n\r\n return { id, key: cesiumParts[1] };\r\n}\r\n/**\r\n * ###TODO temporarily here for testing, needs to be moved to the clients repo\r\n * @internal\r\n * This class encapsulates access to a reality data wether it be from local access, http or RDS\r\n * The url provided at the creation is parsed to determine if this is a RDS (ProjectWise Context Share) reference.\r\n * If not then it is considered local (ex: C:\\temp\\TileRoot.json) or plain http access (http://someserver.com/data/TileRoot.json)\r\n * There is a one to one relationship between a reality data and the instances of present class.\r\n */\r\nexport class RealityModelTileClient {\r\n public readonly rdsProps?: RDSClientProps; // For reality data stored on PW Context Share only. If undefined then Reality Data is not on Context Share.\r\n private _realityData?: RealityData; // For reality data stored on PW Context Share only.\r\n private _baseUrl: string = \"\"; // For use by all Reality Data. For RD stored on PW Context Share, represents the portion from the root of the Azure Blob Container\r\n private _requestAuthorization?: string; // Request authorization for non PW ContextShare requests.\r\n private _rdConnection: RealityDataConnection;\r\n // ###TODO we should be able to pass the iTwinId / tileId directly, instead of parsing the url\r\n // But if the present can also be used by non PW Context Share stored data then the url is required and token is not. Possibly two classes inheriting from common interface.\r\n constructor(rdConnection: RealityDataConnection, iTwinId?: string) {\r\n this._rdConnection = rdConnection;\r\n const rdSource = this._rdConnection.source;\r\n if (rdSource.isContextShare)\r\n this.rdsProps = this.getRDSClientPropsFromSource(rdSource); // Note that returned is undefined if url does not refer to a PW Context Share reality data.\r\n if (iTwinId && this.rdsProps)\r\n this.rdsProps.iTwinId = iTwinId;\r\n }\r\n\r\n private initializeRDSRealityData(): void {\r\n\r\n if (undefined !== this.rdsProps) {\r\n if (!this._realityData) {\r\n this._realityData = this._rdConnection.realityData;\r\n if (!this._realityData)\r\n throw new IModelError(BentleyStatus.ERROR, \"Unable to read reality data\");\r\n\r\n // A reality data that has not root document set should not be considered.\r\n const rootDocument: string = this._realityData.rootDocument ?? \"\";\r\n this.setBaseUrl(rootDocument);\r\n }\r\n }\r\n }\r\n\r\n // ###TODO temporary means of extracting the tileId and projectId from the given url\r\n // This is the method that determines if the url refers to Reality Data stored on PW Context Share. If not then undefined is returned.\r\n // ###TODO This method should be replaced by realityDataServiceClient.getRealityDataIdFromUrl()\r\n // We obtain the projectId from URL but it should be used normally. The iModel context should be used everywhere: verify!\r\n private getRDSClientPropsFromSource(rdSource: RealityDataSource, iTwinIdFromApp?: string): RDSClientProps | undefined {\r\n // We have URLs with incorrect slashes that must be supported. The ~2F are WSG encoded slashes and may prevent parsing out the reality data id.\r\n const tilesId = rdSource.realityDataId;\r\n const iTwinIdFromSrc = rdSource.iTwinId;\r\n let props: RDSClientProps | undefined;\r\n if (undefined !== tilesId) {\r\n const iTwinId = iTwinIdFromSrc ? iTwinIdFromSrc : iTwinIdFromApp ? iTwinIdFromApp : \"server\";\r\n\r\n props = { iTwinId, tilesId };\r\n }\r\n return props;\r\n }\r\n\r\n // This is to set the root url from the provided root document path.\r\n // If the root document is stored on PW Context Share then the root document property of the Reality Data is provided,\r\n // otherwise the full path to root document is given.\r\n // The base URL contains the base URL from which tile relative path are constructed.\r\n // The tile's path root will need to be reinserted for child tiles to return a 200\r\n private setBaseUrl(url: string): void {\r\n const urlParts = url.split(\"/\");\r\n urlParts.pop();\r\n if (urlParts.length === 0)\r\n this._baseUrl = \"\";\r\n else\r\n this._baseUrl = `${urlParts.join(\"/\")}/`;\r\n }\r\n\r\n private async _doRequest(url: string, responseType: string): Promise<any> {\r\n let options: RequestOptions = {\r\n method: \"GET\",\r\n responseType,\r\n };\r\n\r\n const authToken = this._requestAuthorization ?? (await IModelApp.getAccessToken());\r\n if (authToken) {\r\n options = {\r\n ...options,\r\n headers: {\r\n authorization: authToken,\r\n },\r\n };\r\n }\r\n\r\n const data = await request(url, options);\r\n return data.body;\r\n }\r\n\r\n // Get blob URL information from RDS\r\n public async getBlobAccessData(): Promise<URL | undefined> {\r\n const token = await IModelApp.getAccessToken();\r\n if (this.rdsProps && token) {\r\n this.initializeRDSRealityData();\r\n return this._realityData!.getBlobUrl(token);\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n // ### TODO. Technically the url should not be required. If the reality data encapsulated is stored on PW Context Share then\r\n // the relative path to root document is extracted from the reality data. Otherwise the full url to root document should have been provided at\r\n // the construction of the instance.\r\n public async getRootDocument(url: string): Promise<any> {\r\n const token = await IModelApp.getAccessToken();\r\n if (this.rdsProps && token) {\r\n this.initializeRDSRealityData(); // Only needed for PW Context Share data ... return immediately otherwise.\r\n const realityData = this._realityData;\r\n\r\n if (!realityData)\r\n throw new Error(`Reality Data not defined`);\r\n\r\n if (!realityData.rootDocument)\r\n throw new Error(`Root document not defined for reality data: ${realityData.id}`);\r\n\r\n return realityData.getTileJson(token, realityData.rootDocument);\r\n }\r\n\r\n // The following is only if the reality data is not stored on PW Context Share.\r\n const cesiumAsset = parseCesiumUrl(url);\r\n if (cesiumAsset) {\r\n const tokenAndUrl = await getCesiumAccessTokenAndEndpointUrl(cesiumAsset.id, cesiumAsset.key);\r\n if (tokenAndUrl.url && tokenAndUrl.token) {\r\n url = tokenAndUrl.url;\r\n this._requestAuthorization = `Bearer ${tokenAndUrl.token}`;\r\n }\r\n }\r\n\r\n // The following is only if the reality data is not stored on PW Context Share.\r\n this.setBaseUrl(url);\r\n return this._doRequest(url, \"json\");\r\n }\r\n\r\n /**\r\n * Returns the tile content. The path to the tile is relative to the base url of present reality data whatever the type.\r\n */\r\n public async getTileContent(url: string): Promise<any> {\r\n assert(url !== undefined);\r\n const token = await IModelApp.getAccessToken();\r\n const useRds = this.rdsProps !== undefined && token !== undefined;\r\n if (useRds) {\r\n this.initializeRDSRealityData(); // Only needed for PW Context Share data ... return immediately otherwise.\r\n }\r\n\r\n const tileUrl = this._baseUrl + url;\r\n if (useRds)\r\n return this._realityData!.getTileContent(token, tileUrl);\r\n\r\n return this._doRequest(tileUrl, \"arraybuffer\");\r\n }\r\n\r\n /**\r\n * Returns the tile content in json format. The path to the tile is relative to the base url of present reality data whatever the type.\r\n */\r\n public async getTileJson(url: string): Promise<any> {\r\n assert(url !== undefined);\r\n const token = await IModelApp.getAccessToken();\r\n\r\n if (this.rdsProps && token) {\r\n this.initializeRDSRealityData(); // Only needed for PW Context Share data ... return immediately otherwise.\r\n }\r\n\r\n const tileUrl = this._baseUrl + url;\r\n\r\n if (undefined !== this.rdsProps && undefined !== token)\r\n return this._realityData!.getTileJson(token, tileUrl);\r\n\r\n return this._doRequest(tileUrl, \"json\");\r\n }\r\n\r\n /**\r\n * Returns Reality Data type if available\r\n */\r\n public async getRealityDataType(): Promise<string | undefined> {\r\n const token = await IModelApp.getAccessToken();\r\n if (this.rdsProps && token) {\r\n\r\n this.initializeRDSRealityData(); // Only needed for PW Context Share data\r\n return this._realityData!.type;\r\n }\r\n\r\n // The reality data type is not available if not stored on PW Context Share.\r\n return undefined;\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"RealityModelTileTree.js","sourceRoot":"","sources":["../../../src/tile/RealityModelTileTree.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 Utils\r\n */\r\n\r\nimport {\r\n assert, compareBooleans, compareNumbers, compareStringsOrUndefined, CompressedId64Set, Id64String,\r\n} from \"@itwin/core-bentley\";\r\nimport {\r\n Cartographic, DefaultSupportedTypes, GeoCoordStatus, PlanarClipMaskPriority, PlanarClipMaskSettings,\r\n RealityDataProvider,\r\n RealityDataSourceKey,\r\n SpatialClassifiers, ViewFlagOverrides,\r\n} from \"@itwin/core-common\";\r\nimport { Angle, Constant, Ellipsoid, Matrix3d, Point3d, Range3d, Ray3d, Transform, TransformProps, Vector3d, XYZ } from \"@itwin/core-geometry\";\r\nimport { calculateEcefToDbTransformAtLocation } from \"../BackgroundMapGeometry\";\r\nimport { DisplayStyleState } from \"../DisplayStyleState\";\r\nimport { HitDetail } from \"../HitDetail\";\r\nimport { IModelApp } from \"../IModelApp\";\r\nimport { IModelConnection } from \"../IModelConnection\";\r\nimport { PlanarClipMaskState } from \"../PlanarClipMaskState\";\r\nimport { RealityDataSource } from \"../RealityDataSource\";\r\nimport { RenderMemory } from \"../render/RenderMemory\";\r\nimport { SceneContext } from \"../ViewContext\";\r\nimport { ScreenViewport } from \"../Viewport\";\r\nimport { ViewState } from \"../ViewState\";\r\nimport {\r\n BatchedTileIdMap, CesiumIonAssetProvider, createClassifierTileTreeReference, createDefaultViewFlagOverrides, DisclosedTileTreeSet, getGcsConverterAvailable, RealityTile, RealityTileLoader, RealityTileParams,\r\n RealityTileTree, RealityTileTreeParams, SpatialClassifierTileTreeReference, Tile, TileDrawArgs, TileLoadPriority, TileRequest, TileTree,\r\n TileTreeOwner, TileTreeReference, TileTreeSupplier,\r\n} from \"./internal\";\r\n\r\nfunction getUrl(content: any) {\r\n return content ? (content.url ? content.url : content.uri) : undefined;\r\n}\r\n\r\ninterface RealityTreeId {\r\n rdSourceKey: RealityDataSourceKey;\r\n transform?: Transform;\r\n modelId: Id64String;\r\n maskModelIds?: string;\r\n deduplicateVertices: boolean;\r\n toEcefTransform?: Transform;\r\n}\r\n\r\nfunction compareOrigins(lhs: XYZ, rhs: XYZ): number {\r\n let cmp = compareNumbers(lhs.x, rhs.x);\r\n if (0 === cmp) {\r\n cmp = compareNumbers(lhs.y, rhs.y);\r\n if (0 === cmp)\r\n cmp = compareNumbers(lhs.z, rhs.z);\r\n }\r\n\r\n return cmp;\r\n}\r\n\r\nfunction compareMatrices(lhs: Matrix3d, rhs: Matrix3d): number {\r\n for (let i = 0; i < 9; i++) {\r\n const cmp = compareNumbers(lhs.coffs[i], rhs.coffs[i]);\r\n if (0 !== cmp)\r\n return cmp;\r\n }\r\n\r\n return 0;\r\n}\r\n\r\nfunction compareTransforms(lhs?: Transform, rhs?: Transform) {\r\n if (undefined === lhs)\r\n return undefined !== rhs ? -1 : 0;\r\n\r\n else if (undefined === rhs)\r\n return 1;\r\n\r\n const cmp = compareOrigins(lhs.origin, rhs.origin);\r\n return 0 !== cmp ? cmp : compareMatrices(lhs.matrix, rhs.matrix);\r\n}\r\n\r\nclass RealityTreeSupplier implements TileTreeSupplier {\r\n public readonly isEcefDependent = true;\r\n\r\n public getOwner(treeId: RealityTreeId, iModel: IModelConnection): TileTreeOwner {\r\n return iModel.tiles.getTileTreeOwner(treeId, this);\r\n }\r\n\r\n public async createTileTree(treeId: RealityTreeId, iModel: IModelConnection): Promise<TileTree | undefined> {\r\n if (treeId.maskModelIds)\r\n await iModel.models.load(CompressedId64Set.decompressSet(treeId.maskModelIds));\r\n\r\n return RealityModelTileTree.createRealityModelTileTree(treeId.rdSourceKey, iModel, treeId.modelId, treeId.transform, treeId.deduplicateVertices);\r\n }\r\n\r\n public compareTileTreeIds(lhs: RealityTreeId, rhs: RealityTreeId): number {\r\n let cmp = compareStringsOrUndefined(lhs.rdSourceKey.id, rhs.rdSourceKey.id);\r\n if (0 === cmp) {\r\n cmp = compareStringsOrUndefined(lhs.rdSourceKey.format, rhs.rdSourceKey.format);\r\n if (0 === cmp) {\r\n cmp = compareStringsOrUndefined(lhs.rdSourceKey.iTwinId, rhs.rdSourceKey.iTwinId);\r\n if (0 === cmp) {\r\n cmp = compareStringsOrUndefined(lhs.modelId, rhs.modelId);\r\n if (0 === cmp)\r\n cmp = compareBooleans(lhs.deduplicateVertices, rhs.deduplicateVertices);\r\n }\r\n }\r\n }\r\n\r\n if (0 !== cmp)\r\n return cmp;\r\n\r\n cmp = compareStringsOrUndefined(lhs.maskModelIds, rhs.maskModelIds);\r\n if (0 !== cmp)\r\n return cmp;\r\n\r\n cmp = compareTransforms(lhs.transform, rhs.transform);\r\n if (0 !== cmp)\r\n return cmp;\r\n\r\n return compareTransforms(lhs.toEcefTransform, rhs.toEcefTransform);\r\n }\r\n}\r\n\r\nconst realityTreeSupplier = new RealityTreeSupplier();\r\n\r\n/** @internal */\r\nexport function createRealityTileTreeReference(props: RealityModelTileTree.ReferenceProps): RealityModelTileTree.Reference {\r\n return new RealityTreeReference(props);\r\n}\r\n\r\nconst zeroPoint = Point3d.createZero();\r\nconst earthEllipsoid = Ellipsoid.createCenterMatrixRadii(zeroPoint, undefined, Constant.earthRadiusWGS84.equator, Constant.earthRadiusWGS84.equator, Constant.earthRadiusWGS84.polar);\r\nconst scratchRay = Ray3d.createXAxis();\r\n\r\n/** @internal */\r\nexport class RealityTileRegion {\r\n constructor(values: { minLongitude: number, minLatitude: number, minHeight: number, maxLongitude: number, maxLatitude: number, maxHeight: number }) {\r\n this.minLongitude = values.minLongitude;\r\n this.minLatitude = values.minLatitude;\r\n this.minHeight = values.minHeight;\r\n this.maxLongitude = values.maxLongitude;\r\n this.maxLatitude = values.maxLatitude;\r\n this.maxHeight = values.maxHeight;\r\n }\r\n public minLongitude: number;\r\n public minLatitude: number;\r\n public minHeight: number;\r\n public maxLongitude: number;\r\n public maxLatitude: number;\r\n public maxHeight: number;\r\n\r\n public static create(region: number[]): RealityTileRegion {\r\n const minHeight = region[4];\r\n const maxHeight = region[5];\r\n const minLongitude = region[0];\r\n const maxLongitude = region[2];\r\n const minLatitude = Cartographic.parametricLatitudeFromGeodeticLatitude(region[1]);\r\n const maxLatitude = Cartographic.parametricLatitudeFromGeodeticLatitude(region[3]);\r\n return new RealityTileRegion({ minLongitude, minLatitude, minHeight, maxLongitude, maxLatitude, maxHeight });\r\n }\r\n\r\n public static isGlobal(boundingVolume: any) {\r\n return Array.isArray(boundingVolume?.region) && (boundingVolume.region[2] - boundingVolume.region[0]) > Angle.piRadians && (boundingVolume.region[3] - boundingVolume.region[1]) > Angle.piOver2Radians;\r\n }\r\n public getRange(): { range: Range3d, corners?: Point3d[] } {\r\n const maxAngle = Math.max(Math.abs(this.maxLatitude - this.minLatitude), Math.abs(this.maxLongitude - this.minLongitude));\r\n let corners;\r\n let range: Range3d;\r\n if (maxAngle < Math.PI / 8) {\r\n corners = new Array<Point3d>(8);\r\n const chordTolerance = (1 - Math.cos(maxAngle / 2)) * Constant.earthRadiusWGS84.polar;\r\n const addEllipsoidCorner = ((long: number, lat: number, index: number) => {\r\n const ray = earthEllipsoid.radiansToUnitNormalRay(long, lat, scratchRay)!;\r\n corners[index] = ray.fractionToPoint(this.minHeight - chordTolerance);\r\n corners[index + 4] = ray.fractionToPoint(this.maxHeight + chordTolerance);\r\n });\r\n addEllipsoidCorner(this.minLongitude, this.minLatitude, 0);\r\n addEllipsoidCorner(this.minLongitude, this.maxLatitude, 1);\r\n addEllipsoidCorner(this.maxLongitude, this.minLatitude, 2);\r\n addEllipsoidCorner(this.maxLongitude, this.maxLatitude, 3);\r\n range = Range3d.createArray(corners);\r\n } else {\r\n const minEq = Constant.earthRadiusWGS84.equator + this.minHeight, maxEq = Constant.earthRadiusWGS84.equator + this.maxHeight;\r\n const minEllipsoid = Ellipsoid.createCenterMatrixRadii(zeroPoint, undefined, minEq, minEq, Constant.earthRadiusWGS84.polar + this.minHeight);\r\n const maxEllipsoid = Ellipsoid.createCenterMatrixRadii(zeroPoint, undefined, maxEq, maxEq, Constant.earthRadiusWGS84.polar + this.maxHeight);\r\n range = minEllipsoid.patchRangeStartEndRadians(this.minLongitude, this.maxLongitude, this.minLatitude, this.maxLatitude);\r\n range.extendRange(maxEllipsoid.patchRangeStartEndRadians(this.minLongitude, this.maxLongitude, this.minLatitude, this.maxLatitude));\r\n }\r\n return { range, corners };\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport class RealityModelTileUtils {\r\n public static rangeFromBoundingVolume(boundingVolume: any): { range: Range3d, corners?: Point3d[], region?: RealityTileRegion } | undefined {\r\n if (undefined === boundingVolume)\r\n return undefined;\r\n\r\n let corners: Point3d[] | undefined;\r\n let range: Range3d | undefined;\r\n if (undefined !== boundingVolume.box) {\r\n const box: number[] = boundingVolume.box;\r\n const center = Point3d.create(box[0], box[1], box[2]);\r\n const ux = Vector3d.create(box[3], box[4], box[5]);\r\n const uy = Vector3d.create(box[6], box[7], box[8]);\r\n const uz = Vector3d.create(box[9], box[10], box[11]);\r\n corners = new Array<Point3d>();\r\n for (let j = 0; j < 2; j++) {\r\n for (let k = 0; k < 2; k++) {\r\n for (let l = 0; l < 2; l++) {\r\n corners.push(center.plus3Scaled(ux, (j ? -1.0 : 1.0), uy, (k ? -1.0 : 1.0), uz, (l ? -1.0 : 1.0)));\r\n }\r\n }\r\n }\r\n range = Range3d.createArray(corners);\r\n } else if (Array.isArray(boundingVolume.sphere)) {\r\n const sphere: number[] = boundingVolume.sphere;\r\n const center = Point3d.create(sphere[0], sphere[1], sphere[2]);\r\n const radius = sphere[3];\r\n range = Range3d.createXYZXYZ(center.x - radius, center.y - radius, center.z - radius, center.x + radius, center.y + radius, center.z + radius);\r\n } else if (Array.isArray(boundingVolume.region)) {\r\n const region = RealityTileRegion.create(boundingVolume.region);\r\n const regionRange = region.getRange();\r\n return { range: regionRange.range, corners: regionRange.corners, region };\r\n }\r\n return range ? { range, corners } : undefined;\r\n\r\n }\r\n public static maximumSizeFromGeometricTolerance(range: Range3d, geometricError: number): number {\r\n const minToleranceRatio = true === IModelApp.renderSystem.isMobile ? IModelApp.tileAdmin.mobileRealityTileMinToleranceRatio : 1.0; // Nominally the error on screen size of a tile. Increasing generally increases performance (fewer draw calls) at expense of higher load times.\r\n\r\n // NB: We increase the above minToleranceRatio on mobile devices in order to help avoid pruning too often based on the memory threshold for\r\n // pruning currently used by reality tile trees on mobile.\r\n\r\n return minToleranceRatio * range.diagonal().magnitude() / geometricError;\r\n }\r\n public static transformFromJson(jTrans: number[] | undefined): Transform {\r\n return (jTrans === undefined) ? Transform.createIdentity() : Transform.createOriginAndMatrix(Point3d.create(jTrans[12], jTrans[13], jTrans[14]), Matrix3d.createRowValues(jTrans[0], jTrans[4], jTrans[8], jTrans[1], jTrans[5], jTrans[9], jTrans[2], jTrans[6], jTrans[10]));\r\n }\r\n}\r\n\r\n/** @internal */\r\nenum SMTextureType {\r\n None = 0, // no textures\r\n Embedded = 1, // textures are available and stored in the nodes\r\n Streaming = 2, // textures need to be downloaded, Bing Maps, etc…\r\n}\r\n\r\n/** @internal */\r\nclass RealityModelTileTreeProps {\r\n public location: Transform;\r\n public tilesetJson: any;\r\n public doDrapeBackgroundMap: boolean = false;\r\n public rdSource: RealityDataSource;\r\n public yAxisUp = false;\r\n public root: any;\r\n\r\n constructor(json: any, root: any, rdSource: RealityDataSource, tilesetToDbTransform: Transform, public readonly tilesetToEcef?: Transform) {\r\n this.tilesetJson = root;\r\n this.rdSource = rdSource;\r\n this.location = tilesetToDbTransform;\r\n this.doDrapeBackgroundMap = (json.root && json.root.SMMasterHeader && SMTextureType.Streaming === json.root.SMMasterHeader.IsTextured);\r\n if (json.asset.gltfUpAxis === undefined || json.asset.gltfUpAxis === \"y\" || json.asset.gltfUpAxis === \"Y\")\r\n this.yAxisUp = true;\r\n }\r\n}\r\n\r\nclass RealityModelTileTreeParams implements RealityTileTreeParams {\r\n public id: string;\r\n public modelId: string;\r\n public iModel: IModelConnection;\r\n public is3d = true;\r\n public loader: RealityModelTileLoader;\r\n public rootTile: RealityTileParams;\r\n\r\n public get location() { return this.loader.tree.location; }\r\n public get yAxisUp() { return this.loader.tree.yAxisUp; }\r\n public get priority() { return this.loader.priority; }\r\n\r\n public constructor(tileTreeId: string, iModel: IModelConnection, modelId: Id64String, loader: RealityModelTileLoader, public readonly gcsConverterAvailable: boolean, public readonly rootToEcef: Transform | undefined) {\r\n this.loader = loader;\r\n this.id = tileTreeId;\r\n this.modelId = modelId;\r\n this.iModel = iModel;\r\n this.rootTile = new RealityModelTileProps(loader.tree.tilesetJson, undefined, \"\", undefined, undefined === loader.tree.tilesetJson.refine ? undefined : loader.tree.tilesetJson.refine === \"ADD\");\r\n }\r\n}\r\n\r\n/** @internal */\r\nclass RealityModelTileProps implements RealityTileParams {\r\n public readonly contentId: string;\r\n public readonly range: Range3d;\r\n public readonly contentRange?: Range3d;\r\n public readonly maximumSize: number;\r\n public readonly isLeaf: boolean;\r\n public readonly transformToRoot?: Transform;\r\n public readonly additiveRefinement?: boolean;\r\n public readonly parent?: RealityTile;\r\n public readonly noContentButTerminateOnSelection?: boolean;\r\n public readonly rangeCorners?: Point3d[];\r\n public readonly region?: RealityTileRegion;\r\n\r\n constructor(json: any, parent: RealityTile | undefined, thisId: string, transformToRoot?: Transform, additiveRefinement?: boolean) {\r\n this.contentId = thisId;\r\n this.parent = parent;\r\n const boundingVolume = RealityModelTileUtils.rangeFromBoundingVolume(json.boundingVolume);\r\n if (boundingVolume) {\r\n this.range = boundingVolume.range;\r\n this.rangeCorners = boundingVolume.corners;\r\n this.region = boundingVolume?.region;\r\n } else {\r\n this.range = Range3d.createNull();\r\n assert(false, \"Unbounded tile\");\r\n }\r\n this.isLeaf = !Array.isArray(json.children) || 0 === json.children.length;\r\n this.transformToRoot = transformToRoot;\r\n this.additiveRefinement = additiveRefinement;\r\n const hasContents = undefined !== getUrl(json.content);\r\n if (hasContents)\r\n this.contentRange = RealityModelTileUtils.rangeFromBoundingVolume(json.content.boundingVolume)?.range;\r\n else {\r\n // A node without content should probably be selectable even if not additive refinement - But restrict it to that case here\r\n // to avoid potential problems with existing reality models, but still avoid overselection in the OSM world building set.\r\n if (this.additiveRefinement || parent?.additiveRefinement)\r\n this.noContentButTerminateOnSelection = true;\r\n }\r\n\r\n this.maximumSize = (this.noContentButTerminateOnSelection || hasContents) ? RealityModelTileUtils.maximumSizeFromGeometricTolerance(Range3d.fromJSON(this.range), json.geometricError) : 0;\r\n }\r\n}\r\n\r\n/** @internal */\r\nclass FindChildResult {\r\n constructor(public id: string, public json: any, public transformToRoot?: Transform) { }\r\n}\r\n\r\n/** @internal */\r\nfunction assembleUrl(prefix: string, url: string): string {\r\n\r\n if (url.startsWith(\"./\")) {\r\n url = url.substring(2);\r\n } else {\r\n const prefixParts = prefix.split(\"/\");\r\n prefixParts.pop();\r\n while (url.startsWith(\"../\")) {\r\n prefixParts.pop();\r\n url = url.substring(3);\r\n }\r\n prefixParts.push(\"\");\r\n prefix = prefixParts.join(\"/\");\r\n }\r\n return prefix + url;\r\n}\r\n\r\n/** @internal */\r\nfunction addUrlPrefix(subTree: any, prefix: string) {\r\n if (undefined === subTree)\r\n return;\r\n\r\n if (undefined !== subTree.content) {\r\n if (undefined !== subTree.content.url)\r\n subTree.content.url = assembleUrl(prefix, subTree.content.url);\r\n else if (undefined !== subTree.content.uri)\r\n subTree.content.uri = assembleUrl(prefix, subTree.content.uri);\r\n }\r\n\r\n if (undefined !== subTree.children)\r\n for (const child of subTree.children)\r\n addUrlPrefix(child, prefix);\r\n}\r\n\r\n/** @internal */\r\nasync function expandSubTree(root: any, rdsource: RealityDataSource): Promise<any> {\r\n const childUrl = getUrl(root.content);\r\n if (undefined !== childUrl && childUrl.endsWith(\"json\")) { // A child may contain a subTree...\r\n const subTree = await rdsource.getTileJson(childUrl);\r\n const prefixIndex = childUrl.lastIndexOf(\"/\");\r\n if (prefixIndex > 0)\r\n addUrlPrefix(subTree.root, childUrl.substring(0, prefixIndex + 1));\r\n\r\n return subTree.root;\r\n } else {\r\n return root;\r\n }\r\n}\r\n\r\n/** @internal */\r\nclass RealityModelTileLoader extends RealityTileLoader {\r\n public readonly tree: RealityModelTileTreeProps;\r\n private readonly _batchedIdMap?: BatchedTileIdMap;\r\n private _viewFlagOverrides: ViewFlagOverrides;\r\n private readonly _deduplicateVertices: boolean;\r\n\r\n public constructor(tree: RealityModelTileTreeProps, batchedIdMap?: BatchedTileIdMap, deduplicateVertices=false) {\r\n super();\r\n this.tree = tree;\r\n this._batchedIdMap = batchedIdMap;\r\n this._deduplicateVertices = deduplicateVertices;\r\n\r\n let clipVolume;\r\n if (RealityTileRegion.isGlobal(tree.tilesetJson.boundingVolume))\r\n clipVolume = false;\r\n this._viewFlagOverrides = createDefaultViewFlagOverrides({ lighting: true, clipVolume });\r\n\r\n // Display edges if they are present (Cesium outline extension) and enabled for view.\r\n this._viewFlagOverrides.visibleEdges = undefined;\r\n this._viewFlagOverrides.hiddenEdges = undefined;\r\n\r\n // Allow wiremesh display.\r\n this._viewFlagOverrides.wiremesh = undefined;\r\n }\r\n\r\n public get doDrapeBackgroundMap(): boolean { return this.tree.doDrapeBackgroundMap; }\r\n public override get wantDeduplicatedVertices() { return this._deduplicateVertices; }\r\n\r\n public get maxDepth(): number { return 32; } // Can be removed when element tile selector is working.\r\n public get minDepth(): number { return 0; }\r\n public get priority(): TileLoadPriority { return TileLoadPriority.Context; }\r\n public override getBatchIdMap(): BatchedTileIdMap | undefined { return this._batchedIdMap; }\r\n public get clipLowResolutionTiles(): boolean { return true; }\r\n public override get viewFlagOverrides(): ViewFlagOverrides { return this._viewFlagOverrides; }\r\n\r\n public async loadChildren(tile: RealityTile): Promise<Tile[] | undefined> {\r\n const props = await this.getChildrenProps(tile);\r\n if (undefined === props)\r\n return undefined;\r\n\r\n const children = [];\r\n for (const prop of props)\r\n children.push(tile.realityRoot.createTile(prop));\r\n\r\n return children;\r\n }\r\n\r\n public async getChildrenProps(parent: RealityTile): Promise<RealityTileParams[]> {\r\n const props: RealityModelTileProps[] = [];\r\n const thisId = parent.contentId;\r\n const prefix = thisId.length ? `${thisId}_` : \"\";\r\n const findResult = await this.findTileInJson(this.tree.tilesetJson, thisId, \"\", undefined);\r\n if (undefined !== findResult && Array.isArray(findResult.json.children)) {\r\n for (let i = 0; i < findResult.json.children.length; i++) {\r\n const childId = prefix + i;\r\n const foundChild = await this.findTileInJson(this.tree.tilesetJson, childId, \"\", undefined);\r\n if (undefined !== foundChild)\r\n props.push(new RealityModelTileProps(foundChild.json, parent, foundChild.id, foundChild.transformToRoot, foundChild.json.refine === undefined ? undefined : foundChild.json.refine === \"ADD\"));\r\n }\r\n }\r\n return props;\r\n }\r\n\r\n public getRequestChannel(_tile: Tile) {\r\n // ###TODO: May want to extract the hostname from the URL.\r\n return IModelApp.tileAdmin.channels.getForHttp(\"itwinjs-reality-model\");\r\n }\r\n\r\n public async requestTileContent(tile: Tile, isCanceled: () => boolean): Promise<TileRequest.Response> {\r\n const foundChild = await this.findTileInJson(this.tree.tilesetJson, tile.contentId, \"\");\r\n if (undefined === foundChild || undefined === foundChild.json.content || isCanceled())\r\n return undefined;\r\n\r\n return this.tree.rdSource.getTileContent(getUrl(foundChild.json.content));\r\n }\r\n\r\n private async findTileInJson(tilesetJson: any, id: string, parentId: string, transformToRoot?: Transform): Promise<FindChildResult | undefined> {\r\n if (id.length === 0)\r\n return new FindChildResult(id, tilesetJson, transformToRoot); // Root.\r\n\r\n const separatorIndex = id.indexOf(\"_\");\r\n const childId = (separatorIndex < 0) ? id : id.substring(0, separatorIndex);\r\n const childIndex = parseInt(childId, 10);\r\n\r\n if (isNaN(childIndex) || tilesetJson === undefined || tilesetJson.children === undefined || childIndex >= tilesetJson.children.length) {\r\n assert(false, \"scalable mesh child not found.\");\r\n return undefined;\r\n }\r\n\r\n const foundChild = tilesetJson.children[childIndex];\r\n const thisParentId = parentId.length ? (`${parentId}_${childId}`) : childId;\r\n if (foundChild.transform) {\r\n const thisTransform = RealityModelTileUtils.transformFromJson(foundChild.transform);\r\n transformToRoot = transformToRoot ? transformToRoot.multiplyTransformTransform(thisTransform) : thisTransform;\r\n }\r\n\r\n if (separatorIndex >= 0) {\r\n return this.findTileInJson(foundChild, id.substring(separatorIndex + 1), thisParentId, transformToRoot);\r\n }\r\n\r\n tilesetJson.children[childIndex] = await expandSubTree(foundChild, this.tree.rdSource);\r\n\r\n return new FindChildResult(thisParentId, tilesetJson.children[childIndex], transformToRoot);\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport type RealityModelSource = ViewState | DisplayStyleState;\r\n\r\n/** @internal */\r\nexport class RealityModelTileTree extends RealityTileTree {\r\n private readonly _isContentUnbounded: boolean;\r\n public constructor(params: RealityTileTreeParams) {\r\n super(params);\r\n\r\n this._isContentUnbounded = this.rootTile.contentRange.diagonal().magnitude() > 2 * Constant.earthRadiusWGS84.equator;\r\n if (!this.isContentUnbounded && !this.rootTile.contentRange.isNull) {\r\n const worldContentRange = this.iModelTransform.multiplyRange(this.rootTile.contentRange);\r\n this.iModel.expandDisplayedExtents(worldContentRange);\r\n }\r\n }\r\n public override get isContentUnbounded() { return this._isContentUnbounded; }\r\n}\r\n\r\n/** @internal */\r\n// eslint-disable-next-line no-redeclare\r\nexport namespace RealityModelTileTree {\r\n\r\n export interface ReferenceBaseProps {\r\n iModel: IModelConnection;\r\n source: RealityModelSource;\r\n rdSourceKey: RealityDataSourceKey;\r\n modelId?: Id64String;\r\n tilesetToDbTransform?: TransformProps;\r\n tilesetToEcefTransform?: TransformProps;\r\n name?: string;\r\n classifiers?: SpatialClassifiers;\r\n planarClipMask?: PlanarClipMaskSettings;\r\n }\r\n export interface ReferenceProps extends ReferenceBaseProps {\r\n url?: string;\r\n requestAuthorization?: string;\r\n }\r\n\r\n export abstract class Reference extends TileTreeReference {\r\n protected readonly _name: string;\r\n\r\n protected _transform?: Transform;\r\n protected _iModel: IModelConnection;\r\n private _modelId: Id64String;\r\n private _isGlobal?: boolean;\r\n protected readonly _source: RealityModelSource;\r\n protected _planarClipMask?: PlanarClipMaskState;\r\n protected _classifier?: SpatialClassifierTileTreeReference;\r\n protected _mapDrapeTree?: TileTreeReference;\r\n public get modelId() { return this._modelId; }\r\n public get classifiers(): SpatialClassifiers | undefined { return undefined !== this._classifier ? this._classifier.classifiers : undefined; }\r\n public get planarClipMask(): PlanarClipMaskState | undefined { return this._planarClipMask; }\r\n public set planarClipMask(planarClipMask: PlanarClipMaskState | undefined) { this._planarClipMask = planarClipMask; }\r\n public get planarClipMaskPriority(): number {\r\n if (this._planarClipMask?.settings.priority !== undefined)\r\n return this._planarClipMask.settings.priority;\r\n\r\n return this.isGlobal ? PlanarClipMaskPriority.GlobalRealityModel : PlanarClipMaskPriority.RealityModel;\r\n }\r\n\r\n protected get maskModelIds(): string | undefined {\r\n return this._planarClipMask?.settings.compressedModelIds;\r\n }\r\n\r\n public constructor(props: RealityModelTileTree.ReferenceBaseProps) {\r\n super();\r\n this._name = undefined !== props.name ? props.name : \"\";\r\n this._modelId = props.modelId ? props.modelId : props.iModel.transientIds.next;\r\n this._source = props.source;\r\n let transform;\r\n if (undefined !== props.tilesetToDbTransform) {\r\n const tf = Transform.fromJSON(props.tilesetToDbTransform);\r\n if (!tf.isIdentity)\r\n transform = tf;\r\n\r\n this._transform = transform;\r\n }\r\n\r\n this._iModel = props.iModel;\r\n if (props.planarClipMask)\r\n this._planarClipMask = PlanarClipMaskState.create(props.planarClipMask);\r\n\r\n if (undefined !== props.classifiers)\r\n this._classifier = createClassifierTileTreeReference(props.classifiers, this, props.iModel, props.source);\r\n }\r\n\r\n public get planarClassifierTreeRef() { return this._classifier && this._classifier.activeClassifier && this._classifier.isPlanar ? this._classifier : undefined; }\r\n\r\n public override unionFitRange(union: Range3d): void {\r\n const contentRange = this.computeWorldContentRange();\r\n if (!contentRange.isNull && contentRange.diagonal().magnitude() < Constant.earthRadiusWGS84.equator)\r\n union.extendRange(contentRange);\r\n }\r\n public override get isGlobal() {\r\n if (undefined === this._isGlobal) {\r\n const range = this.computeWorldContentRange();\r\n if (!range.isNull)\r\n this._isGlobal = range.diagonal().magnitude() > 2 * Constant.earthRadiusWGS84.equator;\r\n }\r\n return this._isGlobal === undefined ? false : this._isGlobal;\r\n }\r\n\r\n public override addToScene(context: SceneContext): void {\r\n // NB: The classifier must be added first, so we can find it when adding our own tiles.\r\n if (this._classifier && this._classifier.activeClassifier)\r\n this._classifier.addToScene(context);\r\n\r\n this.addPlanarClassifierOrMaskToScene(context);\r\n super.addToScene(context);\r\n }\r\n protected addPlanarClassifierOrMaskToScene(context: SceneContext) {\r\n // A planarClassifier is required if there is a classification tree OR planar masking is required.\r\n const classifierTree = this.planarClassifierTreeRef;\r\n const planarClipMask = this._planarClipMask ?? context.viewport.displayStyle.getPlanarClipMaskState(this.modelId);\r\n if (!classifierTree && !planarClipMask)\r\n return;\r\n\r\n if (classifierTree && !classifierTree.treeOwner.load())\r\n return;\r\n\r\n context.addPlanarClassifier(this.modelId, classifierTree, planarClipMask);\r\n }\r\n\r\n public override discloseTileTrees(trees: DisclosedTileTreeSet): void {\r\n super.discloseTileTrees(trees);\r\n\r\n if (undefined !== this._classifier)\r\n this._classifier.discloseTileTrees(trees);\r\n\r\n if (undefined !== this._mapDrapeTree)\r\n this._mapDrapeTree.discloseTileTrees(trees);\r\n\r\n if (undefined !== this._planarClipMask)\r\n this._planarClipMask.discloseTileTrees(trees);\r\n }\r\n public override collectStatistics(stats: RenderMemory.Statistics): void {\r\n super.collectStatistics(stats);\r\n\r\n const tree = undefined !== this._classifier ? this._classifier.treeOwner.tileTree : undefined;\r\n if (undefined !== tree)\r\n tree.collectStatistics(stats);\r\n }\r\n }\r\n\r\n export async function createRealityModelTileTree(rdSourceKey: RealityDataSourceKey, iModel: IModelConnection, modelId: Id64String, tilesetToDb: Transform | undefined, deduplicateVertices: boolean): Promise<TileTree | undefined> {\r\n const rdSource = await RealityDataSource.fromKey(rdSourceKey, iModel.iTwinId);\r\n // If we can get a valid connection from sourceKey, returns the tile tree\r\n if (rdSource) {\r\n // Serialize the reality data source key into a string to uniquely identify this tile tree\r\n const tileTreeId = rdSource.key.toString();\r\n if (tileTreeId === undefined)\r\n return undefined;\r\n const props = await getTileTreeProps(rdSource, tilesetToDb, iModel);\r\n const loader = new RealityModelTileLoader(props, new BatchedTileIdMap(iModel), deduplicateVertices);\r\n const gcsConverterAvailable = await getGcsConverterAvailable(iModel);\r\n const params = new RealityModelTileTreeParams(tileTreeId, iModel, modelId, loader, gcsConverterAvailable, props.tilesetToEcef);\r\n return new RealityModelTileTree(params);\r\n }\r\n return undefined;\r\n }\r\n\r\n async function getTileTreeProps(rdSource: RealityDataSource, tilesetToDbJson: any, iModel: IModelConnection): Promise<RealityModelTileTreeProps> {\r\n const json = await rdSource.getRootDocument(iModel.iTwinId);\r\n let rootTransform = iModel.ecefLocation ? iModel.getMapEcefToDb(0) : Transform.createIdentity();\r\n const geoConverter = iModel.noGcsDefined ? undefined : iModel.geoServices.getConverter(\"WGS84\");\r\n if (geoConverter !== undefined) {\r\n let realityTileRange = RealityModelTileUtils.rangeFromBoundingVolume(json.root.boundingVolume)!.range;\r\n if (json.root.transform) {\r\n const realityToEcef = RealityModelTileUtils.transformFromJson(json.root.transform);\r\n realityTileRange = realityToEcef.multiplyRange(realityTileRange);\r\n }\r\n\r\n if (iModel.ecefLocation) {\r\n // In initial publishing version the iModel ecef Transform was used to locate the reality model.\r\n // This would work well only for tilesets published from that iModel but for iModels the ecef transform is calculated\r\n // at the center of the project extents and the reality model location may differ greatly, and the curvature of the earth\r\n // could introduce significant errors.\r\n // The publishing was modified to calculate the ecef transform at the reality model range center and at the same time the \"iModelPublishVersion\"\r\n // member was added to the root object. In order to continue to locate reality models published from older versions at the\r\n // project extents center we look for Tileset version 0.0 and no root.iModelVersion.\r\n const ecefOrigin = realityTileRange.localXYZToWorld(.5, .5, .5)!;\r\n const dbOrigin = rootTransform.multiplyPoint3d(ecefOrigin);\r\n const realityOriginToProjectDistance = iModel.projectExtents.distanceToPoint(dbOrigin);\r\n const maxProjectDistance = 1E5; // Only use the project GCS projection if within 100KM of the project. Don't attempt to use GCS if global reality model or in another locale - Results will be unreliable.\r\n if (realityOriginToProjectDistance < maxProjectDistance && json.asset?.version !== \"0.0\" || undefined !== json.root?.iModelPublishVersion) {\r\n const cartographicOrigin = Cartographic.fromEcef(ecefOrigin);\r\n\r\n if (cartographicOrigin !== undefined) {\r\n const geoOrigin = Point3d.create(cartographicOrigin.longitudeDegrees, cartographicOrigin.latitudeDegrees, cartographicOrigin.height);\r\n const response = await geoConverter.getIModelCoordinatesFromGeoCoordinates([geoOrigin]);\r\n if (response.iModelCoords[0].s === GeoCoordStatus.Success) {\r\n const ecefToDb = await calculateEcefToDbTransformAtLocation(Point3d.fromJSON(response.iModelCoords[0].p), iModel);\r\n if (ecefToDb)\r\n rootTransform = ecefToDb;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n let tilesetToEcef = Transform.createIdentity();\r\n\r\n if (json.root.transform) {\r\n tilesetToEcef = RealityModelTileUtils.transformFromJson(json.root.transform);\r\n rootTransform = rootTransform.multiplyTransformTransform(tilesetToEcef);\r\n }\r\n\r\n if (undefined !== tilesetToDbJson)\r\n rootTransform = Transform.fromJSON(tilesetToDbJson).multiplyTransformTransform(rootTransform);\r\n\r\n const root = await expandSubTree(json.root, rdSource);\r\n return new RealityModelTileTreeProps(json, root, rdSource, rootTransform, tilesetToEcef);\r\n }\r\n}\r\n\r\n/** Supplies a reality data [[TileTree]] from a URL. May be associated with a persistent [[GeometricModelState]], or attached at run-time via a [[ContextRealityModelState]].\r\n * @internal\r\n */\r\nclass RealityTreeReference extends RealityModelTileTree.Reference {\r\n protected _rdSourceKey: RealityDataSourceKey;\r\n\r\n public constructor(props: RealityModelTileTree.ReferenceProps) {\r\n super(props);\r\n\r\n // Maybe we should throw if both props.rdSourceKey && props.url are undefined\r\n this._rdSourceKey = props.rdSourceKey ? props.rdSourceKey : props.url ? RealityDataSource.createKeyFromUrl(props.url, RealityDataProvider.ContextShare) :\r\n RealityDataSource.createKeyFromUrl(\"\", RealityDataProvider.ContextShare);\r\n }\r\n public get treeOwner(): TileTreeOwner {\r\n const treeId: RealityTreeId = {\r\n rdSourceKey: this._rdSourceKey,\r\n transform: this._transform,\r\n modelId: this.modelId,\r\n maskModelIds: this.maskModelIds,\r\n deduplicateVertices: this._wantWiremesh,\r\n };\r\n\r\n return realityTreeSupplier.getOwner(treeId, this._iModel);\r\n }\r\n\r\n private get _wantWiremesh(): boolean {\r\n return this._source.viewFlags.wiremesh;\r\n }\r\n\r\n public override get castsShadows() {\r\n return true;\r\n }\r\n\r\n protected override get _isLoadingComplete(): boolean {\r\n return !this._mapDrapeTree || this._mapDrapeTree.isLoadingComplete;\r\n }\r\n\r\n public override createDrawArgs(context: SceneContext): TileDrawArgs | undefined {\r\n // For global reality models (OSM Building layer only) - offset the reality model by the BIM elevation bias. This would not be necessary\r\n // if iModels had their elevation set correctly but unfortunately many GCS erroneously report Sea (Geoid) elevation rather than\r\n // Geodetic.\r\n const tree = this.treeOwner.load();\r\n if (undefined === tree)\r\n return undefined;\r\n\r\n const drawArgs = super.createDrawArgs(context);\r\n if (drawArgs !== undefined && this._iModel.isGeoLocated && tree.isContentUnbounded) {\r\n const elevationBias = context.viewport.view.displayStyle.backgroundMapElevationBias;\r\n\r\n if (undefined !== elevationBias)\r\n drawArgs.location.origin.z -= elevationBias;\r\n }\r\n\r\n return drawArgs;\r\n }\r\n\r\n public override addToScene(context: SceneContext): void {\r\n const tree = this.treeOwner.tileTree as RealityTileTree;\r\n if (undefined !== tree && context.viewport.iModel.isGeoLocated && (tree.loader as RealityModelTileLoader).doDrapeBackgroundMap) {\r\n // NB: We save this off strictly so that discloseTileTrees() can find it...better option?\r\n this._mapDrapeTree = context.viewport.backgroundDrapeMap;\r\n context.addBackgroundDrapedModel(this, undefined);\r\n }\r\n\r\n super.addToScene(context);\r\n }\r\n\r\n public override async getToolTip(hit: HitDetail): Promise<HTMLElement | string | undefined> {\r\n const tree = this.treeOwner.tileTree;\r\n if (undefined === tree || hit.iModel !== tree.iModel)\r\n return undefined;\r\n\r\n const map = (tree as RealityTileTree).loader.getBatchIdMap();\r\n const batch = undefined !== map ? map.getBatchProperties(hit.sourceId) : undefined;\r\n if (undefined === batch && tree.modelId !== hit.sourceId)\r\n return undefined;\r\n\r\n const strings = [];\r\n\r\n const loader = (tree as RealityModelTileTree).loader;\r\n const type = (loader as RealityModelTileLoader).tree.rdSource.realityDataType;\r\n\r\n // If a type is specified, display it\r\n if (type !== undefined) {\r\n // Case insensitive\r\n switch (type.toUpperCase()) {\r\n case DefaultSupportedTypes.RealityMesh3dTiles.toUpperCase():\r\n strings.push(IModelApp.localization.getLocalizedString(\"iModelJs:RealityModelTypes.RealityMesh3DTiles\"));\r\n break;\r\n case DefaultSupportedTypes.Terrain3dTiles.toUpperCase():\r\n strings.push(IModelApp.localization.getLocalizedString(\"iModelJs:RealityModelTypes.Terrain3DTiles\"));\r\n break;\r\n case DefaultSupportedTypes.Cesium3dTiles.toUpperCase():\r\n strings.push(IModelApp.localization.getLocalizedString(\"iModelJs:RealityModelTypes.Cesium3DTiles\"));\r\n break;\r\n }\r\n }\r\n\r\n if (this._name) {\r\n strings.push(`${IModelApp.localization.getLocalizedString(\"iModelJs:TooltipInfo.Name\")} ${this._name}`);\r\n } else {\r\n const cesiumAsset = this._rdSourceKey.provider === RealityDataProvider.CesiumIonAsset ? CesiumIonAssetProvider.parseCesiumUrl(this._rdSourceKey.id) : undefined;\r\n strings.push(cesiumAsset ? `Cesium Asset: ${cesiumAsset.id}` : this._rdSourceKey.id);\r\n }\r\n\r\n if (batch !== undefined)\r\n for (const key of Object.keys(batch))\r\n if (-1 === key.indexOf(\"#\")) // Avoid internal cesium\r\n strings.push(`${key}: ${batch[key]}`);\r\n\r\n const div = document.createElement(\"div\");\r\n div.innerHTML = strings.join(\"<br>\");\r\n return div;\r\n }\r\n\r\n public override addLogoCards(cards: HTMLTableElement, _vp: ScreenViewport): void {\r\n if (this._rdSourceKey.provider === RealityDataProvider.CesiumIonAsset) {\r\n cards.appendChild(IModelApp.makeLogoCard({ heading: \"OpenStreetMap\", notice: `&copy;<a href=\\\"https://www.openstreetmap.org/copyright\\\">OpenStreetMap</a> ${IModelApp.localization.getLocalizedString(\"iModelJs:BackgroundMap:OpenStreetMapContributors\")}` }));\r\n }\r\n }\r\n}\r\n\r\n"]}
@@ -19,6 +19,7 @@ export declare abstract class RealityTileLoader {
19
19
  abstract loadChildren(tile: RealityTile): Promise<Tile[] | undefined>;
20
20
  abstract getRequestChannel(tile: Tile): TileRequestChannel;
21
21
  abstract requestTileContent(tile: Tile, isCanceled: () => boolean): Promise<TileRequest.Response>;
22
+ get wantDeduplicatedVertices(): boolean;
22
23
  abstract get maxDepth(): number;
23
24
  abstract get minDepth(): number;
24
25
  abstract get priority(): TileLoadPriority;
@@ -1 +1 @@
1
- {"version":3,"file":"RealityTileLoader.d.ts","sourceRoot":"","sources":["../../../src/tile/RealityTileLoader.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,EAAU,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAW,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,SAAS,EAAmC,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAGnG,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EACO,gBAAgB,EAAqF,WAAW,EAAE,IAAI,EAAE,WAAW,EAC/I,YAAY,EAAE,gBAAgB,EAAE,WAAW,EAAE,kBAAkB,EAChE,MAAM,YAAY,CAAC;AAOpB;;GAEG;AACH,8BAAsB,iBAAiB;IACrC,OAAO,CAAC,oBAAoB,CAAS;IACrC,SAAgB,yBAAyB,EAAE,MAAM,CAAC;IAClD,SAAgB,wBAAwB,EAAE,MAAM,CAAC;;IAO1C,mBAAmB,CAAC,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,CAAC,QAAQ,CAAC,GAAG,MAAM;aAK7D,YAAY,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,EAAE,GAAG,SAAS,CAAC;aAC5D,iBAAiB,CAAC,IAAI,EAAE,IAAI,GAAG,kBAAkB;aACjD,kBAAkB,CAAC,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,OAAO,GAAG,OAAO,CAAC,WAAW,CAAC,QAAQ,CAAC;IACxG,aAAoB,QAAQ,IAAI,MAAM,CAAC;IACvC,aAAoB,QAAQ,IAAI,MAAM,CAAC;IACvC,aAAoB,QAAQ,IAAI,gBAAgB,CAAC;IACjD,SAAS,KAAK,UAAU,IAAI,SAAS,CAA8B;IACnE,SAAS,KAAK,UAAU,IAAI,OAAO,CAAiB;IAC7C,aAAa,IAAI,gBAAgB,GAAG,SAAS;IACpD,IAAW,kBAAkB,IAAI,OAAO,CAAkB;IAC1D,IAAW,mBAAmB,IAAI,OAAO,CAAsC;IAC/E,IAAW,2BAA2B,IAAI,OAAO,CAAiB;IAC3D,aAAa,CAAC,KAAK,EAAE,IAAI,GAAG,OAAO;IAEnC,oBAAoB,CAAC,QAAQ,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,YAAY,GAAG,IAAI,EAAE;IAG7D,eAAe,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,WAAW,CAAC,YAAY,EAAE,MAAM,EAAE,YAAY,EAAE,UAAU,CAAC,EAAE,MAAM,OAAO,GAAG,OAAO,CAAC,WAAW,CAAC;IAOnI,yBAAyB,CAAC,IAAI,EAAE,WAAW,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,EAAE,YAAY,EAAE,UAAU,CAAC,EAAE,MAAM,OAAO,GAAG,OAAO,CAAC,WAAW,CAAC;IA8D3J,IAAW,iBAAiB,IAAI,iBAAiB,CAAqC;WAExE,+BAA+B,CAAC,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,CAAC,QAAQ,CAAC,EAAE,QAAQ,EAAE,SAAS,GAAG,MAAM;CAatH"}
1
+ {"version":3,"file":"RealityTileLoader.d.ts","sourceRoot":"","sources":["../../../src/tile/RealityTileLoader.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,EAAU,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAW,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,SAAS,EAAmC,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAGnG,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EACO,gBAAgB,EAAqF,WAAW,EAAE,IAAI,EAAE,WAAW,EAC/I,YAAY,EAAE,gBAAgB,EAAE,WAAW,EAAE,kBAAkB,EAChE,MAAM,YAAY,CAAC;AAOpB;;GAEG;AACH,8BAAsB,iBAAiB;IACrC,OAAO,CAAC,oBAAoB,CAAS;IACrC,SAAgB,yBAAyB,EAAE,MAAM,CAAC;IAClD,SAAgB,wBAAwB,EAAE,MAAM,CAAC;;IAO1C,mBAAmB,CAAC,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,CAAC,QAAQ,CAAC,GAAG,MAAM;aAK7D,YAAY,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,EAAE,GAAG,SAAS,CAAC;aAC5D,iBAAiB,CAAC,IAAI,EAAE,IAAI,GAAG,kBAAkB;aACjD,kBAAkB,CAAC,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,OAAO,GAAG,OAAO,CAAC,WAAW,CAAC,QAAQ,CAAC;IACxG,IAAW,wBAAwB,IAAI,OAAO,CAAkB;IAChE,aAAoB,QAAQ,IAAI,MAAM,CAAC;IACvC,aAAoB,QAAQ,IAAI,MAAM,CAAC;IACvC,aAAoB,QAAQ,IAAI,gBAAgB,CAAC;IACjD,SAAS,KAAK,UAAU,IAAI,SAAS,CAA8B;IACnE,SAAS,KAAK,UAAU,IAAI,OAAO,CAAiB;IAC7C,aAAa,IAAI,gBAAgB,GAAG,SAAS;IACpD,IAAW,kBAAkB,IAAI,OAAO,CAAkB;IAC1D,IAAW,mBAAmB,IAAI,OAAO,CAAsC;IAC/E,IAAW,2BAA2B,IAAI,OAAO,CAAiB;IAC3D,aAAa,CAAC,KAAK,EAAE,IAAI,GAAG,OAAO;IAEnC,oBAAoB,CAAC,QAAQ,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,YAAY,GAAG,IAAI,EAAE;IAG7D,eAAe,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,WAAW,CAAC,YAAY,EAAE,MAAM,EAAE,YAAY,EAAE,UAAU,CAAC,EAAE,MAAM,OAAO,GAAG,OAAO,CAAC,WAAW,CAAC;IAOnI,yBAAyB,CAAC,IAAI,EAAE,WAAW,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,EAAE,YAAY,EAAE,UAAU,CAAC,EAAE,MAAM,OAAO,GAAG,OAAO,CAAC,WAAW,CAAC;IA8D3J,IAAW,iBAAiB,IAAI,iBAAiB,CAAqC;WAExE,+BAA+B,CAAC,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,CAAC,QAAQ,CAAC,EAAE,QAAQ,EAAE,SAAS,GAAG,MAAM;CAatH"}
@@ -30,6 +30,7 @@ class RealityTileLoader {
30
30
  // ###TODO: Handle case where tile tree reference(s) have a transform different from tree's (background map with ground bias).
31
31
  return RealityTileLoader.computeTileClosestToEyePriority(tile, viewports, tile.tree.iModelTransform);
32
32
  }
33
+ get wantDeduplicatedVertices() { return false; }
33
34
  get _batchType() { return core_common_1.BatchType.Primary; }
34
35
  get _loadEdges() { return true; }
35
36
  getBatchIdMap() { return undefined; }
@@ -42,7 +43,7 @@ class RealityTileLoader {
42
43
  async loadTileContent(tile, data, system, isCanceled) {
43
44
  (0, core_bentley_1.assert)(data instanceof Uint8Array);
44
45
  const blob = data;
45
- const streamBuffer = new core_bentley_1.ByteStream(blob.buffer);
46
+ const streamBuffer = core_bentley_1.ByteStream.fromUint8Array(blob);
46
47
  return this.loadTileContentFromStream(tile, streamBuffer, system, isCanceled);
47
48
  }
48
49
  async loadTileContentFromStream(tile, streamBuffer, system, isCanceled) {
@@ -64,10 +65,10 @@ class RealityTileLoader {
64
65
  }
65
66
  return { graphic };
66
67
  case core_common_1.TileFormat.B3dm:
67
- reader = internal_1.B3dmReader.create(streamBuffer, iModel, modelId, is3d, tile.contentRange, system, yAxisUp, tile.isLeaf, tile.center, tile.transformToRoot, isCanceled, this.getBatchIdMap());
68
+ reader = internal_1.B3dmReader.create(streamBuffer, iModel, modelId, is3d, tile.contentRange, system, yAxisUp, tile.isLeaf, tile.center, tile.transformToRoot, isCanceled, this.getBatchIdMap(), this.wantDeduplicatedVertices);
68
69
  break;
69
70
  case core_common_1.TileFormat.I3dm:
70
- reader = internal_1.I3dmReader.create(streamBuffer, iModel, modelId, is3d, tile.contentRange, system, yAxisUp, tile.isLeaf, isCanceled);
71
+ reader = internal_1.I3dmReader.create(streamBuffer, iModel, modelId, is3d, tile.contentRange, system, yAxisUp, tile.isLeaf, isCanceled, undefined, this.wantDeduplicatedVertices);
71
72
  break;
72
73
  case core_common_1.TileFormat.Cmpt:
73
74
  const header = new core_common_1.CompositeTileHeader(streamBuffer);
@@ -1 +1 @@
1
- {"version":3,"file":"RealityTileLoader.js","sourceRoot":"","sources":["../../../src/tile/RealityTileLoader.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module Tiles\r\n */\r\n\r\nimport { assert, ByteStream } from \"@itwin/core-bentley\";\r\nimport { Point3d, Transform } from \"@itwin/core-geometry\";\r\nimport { BatchType, CompositeTileHeader, TileFormat, ViewFlagOverrides } from \"@itwin/core-common\";\r\nimport { IModelApp } from \"../IModelApp\";\r\nimport { GraphicBranch } from \"../render/GraphicBranch\";\r\nimport { RenderSystem } from \"../render/RenderSystem\";\r\nimport { Viewport } from \"../Viewport\";\r\nimport {\r\n B3dmReader, BatchedTileIdMap, createDefaultViewFlagOverrides, GltfReader, I3dmReader, readPointCloudTileContent, RealityTile, Tile, TileContent,\r\n TileDrawArgs, TileLoadPriority, TileRequest, TileRequestChannel,\r\n} from \"./internal\";\r\n\r\nconst defaultViewFlagOverrides = createDefaultViewFlagOverrides({});\r\n\r\nconst scratchTileCenterWorld = new Point3d();\r\nconst scratchTileCenterView = new Point3d();\r\n\r\n/** Serves as a \"handler\" for a specific type of [[TileTree]]. Its primary responsibilities involve loading tile content.\r\n * @internal\r\n */\r\nexport abstract class RealityTileLoader {\r\n private _containsPointClouds = false;\r\n public readonly preloadRealityParentDepth: number;\r\n public readonly preloadRealityParentSkip: number;\r\n\r\n public constructor() {\r\n this.preloadRealityParentDepth = IModelApp.tileAdmin.contextPreloadParentDepth;\r\n this.preloadRealityParentSkip = IModelApp.tileAdmin.contextPreloadParentSkip;\r\n }\r\n\r\n public computeTilePriority(tile: Tile, viewports: Iterable<Viewport>): number {\r\n // ###TODO: Handle case where tile tree reference(s) have a transform different from tree's (background map with ground bias).\r\n return RealityTileLoader.computeTileClosestToEyePriority(tile, viewports, tile.tree.iModelTransform);\r\n }\r\n\r\n public abstract loadChildren(tile: RealityTile): Promise<Tile[] | undefined>;\r\n public abstract getRequestChannel(tile: Tile): TileRequestChannel;\r\n public abstract requestTileContent(tile: Tile, isCanceled: () => boolean): Promise<TileRequest.Response>;\r\n public abstract get maxDepth(): number;\r\n public abstract get minDepth(): number;\r\n public abstract get priority(): TileLoadPriority;\r\n protected get _batchType(): BatchType { return BatchType.Primary; }\r\n protected get _loadEdges(): boolean { return true; }\r\n public getBatchIdMap(): BatchedTileIdMap | undefined { return undefined; }\r\n public get isContentUnbounded(): boolean { return false; }\r\n public get containsPointClouds(): boolean { return this._containsPointClouds; }\r\n public get parentsAndChildrenExclusive(): boolean { return true; }\r\n public forceTileLoad(_tile: Tile): boolean { return false; }\r\n\r\n public processSelectedTiles(selected: Tile[], _args: TileDrawArgs): Tile[] { return selected; }\r\n\r\n // NB: The isCanceled arg is chiefly for tests...in usual case it just returns false if the tile is no longer in 'loading' state.\r\n public async loadTileContent(tile: Tile, data: TileRequest.ResponseData, system: RenderSystem, isCanceled?: () => boolean): Promise<TileContent> {\r\n assert(data instanceof Uint8Array);\r\n const blob = data;\r\n const streamBuffer = new ByteStream(blob.buffer);\r\n return this.loadTileContentFromStream(tile as RealityTile, streamBuffer, system, isCanceled);\r\n }\r\n\r\n public async loadTileContentFromStream(tile: RealityTile, streamBuffer: ByteStream, system: RenderSystem, isCanceled?: () => boolean): Promise<TileContent> {\r\n const position = streamBuffer.curPos;\r\n const format = streamBuffer.nextUint32;\r\n streamBuffer.curPos = position;\r\n\r\n if (undefined === isCanceled)\r\n isCanceled = () => !tile.isLoading;\r\n\r\n const { is3d, yAxisUp, iModel, modelId } = tile.realityRoot;\r\n let reader: GltfReader | undefined;\r\n switch (format) {\r\n case TileFormat.Pnts:\r\n this._containsPointClouds = true;\r\n let graphic = readPointCloudTileContent(streamBuffer, iModel, modelId, is3d, tile.contentRange, system);\r\n if (graphic && tile.transformToRoot && !tile.transformToRoot.isIdentity) {\r\n const transformBranch = new GraphicBranch(true);\r\n transformBranch.add(graphic);\r\n graphic = system.createBranch(transformBranch, tile.transformToRoot);\r\n }\r\n\r\n return { graphic };\r\n\r\n case TileFormat.B3dm:\r\n reader = B3dmReader.create(streamBuffer, iModel, modelId, is3d, tile.contentRange, system, yAxisUp, tile.isLeaf, tile.center, tile.transformToRoot, isCanceled, this.getBatchIdMap());\r\n break;\r\n case TileFormat.I3dm:\r\n reader = I3dmReader.create(streamBuffer, iModel, modelId, is3d, tile.contentRange, system, yAxisUp, tile.isLeaf, isCanceled);\r\n break;\r\n case TileFormat.Cmpt:\r\n const header = new CompositeTileHeader(streamBuffer);\r\n if (!header.isValid) return {};\r\n const branch = new GraphicBranch(true);\r\n for (let i = 0; i < header.tileCount; i++) {\r\n const tilePosition = streamBuffer.curPos;\r\n streamBuffer.advance(8); // Skip magic and version.\r\n const tileBytes = streamBuffer.nextUint32;\r\n streamBuffer.curPos = tilePosition;\r\n const result = await this.loadTileContentFromStream(tile, streamBuffer, system, isCanceled);\r\n if (result.graphic)\r\n branch.add(result.graphic);\r\n streamBuffer.curPos = tilePosition + tileBytes;\r\n }\r\n return { graphic: branch.isEmpty ? undefined : system.createBranch(branch, Transform.createIdentity()), isLeaf: tile.isLeaf };\r\n\r\n default:\r\n assert(false, `unknown tile format ${format}`);\r\n break;\r\n }\r\n\r\n let content: TileContent = {};\r\n if (undefined !== reader) {\r\n try {\r\n content = await reader.read();\r\n } catch (_err) {\r\n // Failure to load should prevent us from trying to load children\r\n content.isLeaf = true;\r\n }\r\n }\r\n\r\n return content;\r\n }\r\n\r\n public get viewFlagOverrides(): ViewFlagOverrides { return defaultViewFlagOverrides; }\r\n\r\n public static computeTileClosestToEyePriority(tile: Tile, viewports: Iterable<Viewport>, location: Transform): number {\r\n // Prioritize tiles closer to eye.\r\n // NB: In NPC coords, 0 = far plane, 1 = near plane.\r\n const center = location.multiplyPoint3d(tile.center, scratchTileCenterWorld);\r\n let minDistance = 1.0;\r\n for (const viewport of viewports) {\r\n const npc = viewport.worldToNpc(center, scratchTileCenterView);\r\n const distance = 1.0 - npc.z;\r\n minDistance = Math.min(distance, minDistance);\r\n }\r\n\r\n return minDistance;\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"RealityTileLoader.js","sourceRoot":"","sources":["../../../src/tile/RealityTileLoader.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module Tiles\r\n */\r\n\r\nimport { assert, ByteStream } from \"@itwin/core-bentley\";\r\nimport { Point3d, Transform } from \"@itwin/core-geometry\";\r\nimport { BatchType, CompositeTileHeader, TileFormat, ViewFlagOverrides } from \"@itwin/core-common\";\r\nimport { IModelApp } from \"../IModelApp\";\r\nimport { GraphicBranch } from \"../render/GraphicBranch\";\r\nimport { RenderSystem } from \"../render/RenderSystem\";\r\nimport { Viewport } from \"../Viewport\";\r\nimport {\r\n B3dmReader, BatchedTileIdMap, createDefaultViewFlagOverrides, GltfReader, I3dmReader, readPointCloudTileContent, RealityTile, Tile, TileContent,\r\n TileDrawArgs, TileLoadPriority, TileRequest, TileRequestChannel,\r\n} from \"./internal\";\r\n\r\nconst defaultViewFlagOverrides = createDefaultViewFlagOverrides({});\r\n\r\nconst scratchTileCenterWorld = new Point3d();\r\nconst scratchTileCenterView = new Point3d();\r\n\r\n/** Serves as a \"handler\" for a specific type of [[TileTree]]. Its primary responsibilities involve loading tile content.\r\n * @internal\r\n */\r\nexport abstract class RealityTileLoader {\r\n private _containsPointClouds = false;\r\n public readonly preloadRealityParentDepth: number;\r\n public readonly preloadRealityParentSkip: number;\r\n\r\n public constructor() {\r\n this.preloadRealityParentDepth = IModelApp.tileAdmin.contextPreloadParentDepth;\r\n this.preloadRealityParentSkip = IModelApp.tileAdmin.contextPreloadParentSkip;\r\n }\r\n\r\n public computeTilePriority(tile: Tile, viewports: Iterable<Viewport>): number {\r\n // ###TODO: Handle case where tile tree reference(s) have a transform different from tree's (background map with ground bias).\r\n return RealityTileLoader.computeTileClosestToEyePriority(tile, viewports, tile.tree.iModelTransform);\r\n }\r\n\r\n public abstract loadChildren(tile: RealityTile): Promise<Tile[] | undefined>;\r\n public abstract getRequestChannel(tile: Tile): TileRequestChannel;\r\n public abstract requestTileContent(tile: Tile, isCanceled: () => boolean): Promise<TileRequest.Response>;\r\n public get wantDeduplicatedVertices(): boolean { return false; }\r\n public abstract get maxDepth(): number;\r\n public abstract get minDepth(): number;\r\n public abstract get priority(): TileLoadPriority;\r\n protected get _batchType(): BatchType { return BatchType.Primary; }\r\n protected get _loadEdges(): boolean { return true; }\r\n public getBatchIdMap(): BatchedTileIdMap | undefined { return undefined; }\r\n public get isContentUnbounded(): boolean { return false; }\r\n public get containsPointClouds(): boolean { return this._containsPointClouds; }\r\n public get parentsAndChildrenExclusive(): boolean { return true; }\r\n public forceTileLoad(_tile: Tile): boolean { return false; }\r\n\r\n public processSelectedTiles(selected: Tile[], _args: TileDrawArgs): Tile[] { return selected; }\r\n\r\n // NB: The isCanceled arg is chiefly for tests...in usual case it just returns false if the tile is no longer in 'loading' state.\r\n public async loadTileContent(tile: Tile, data: TileRequest.ResponseData, system: RenderSystem, isCanceled?: () => boolean): Promise<TileContent> {\r\n assert(data instanceof Uint8Array);\r\n const blob = data;\r\n const streamBuffer = ByteStream.fromUint8Array(blob);\r\n return this.loadTileContentFromStream(tile as RealityTile, streamBuffer, system, isCanceled);\r\n }\r\n\r\n public async loadTileContentFromStream(tile: RealityTile, streamBuffer: ByteStream, system: RenderSystem, isCanceled?: () => boolean): Promise<TileContent> {\r\n const position = streamBuffer.curPos;\r\n const format = streamBuffer.nextUint32;\r\n streamBuffer.curPos = position;\r\n\r\n if (undefined === isCanceled)\r\n isCanceled = () => !tile.isLoading;\r\n\r\n const { is3d, yAxisUp, iModel, modelId } = tile.realityRoot;\r\n let reader: GltfReader | undefined;\r\n switch (format) {\r\n case TileFormat.Pnts:\r\n this._containsPointClouds = true;\r\n let graphic = readPointCloudTileContent(streamBuffer, iModel, modelId, is3d, tile.contentRange, system);\r\n if (graphic && tile.transformToRoot && !tile.transformToRoot.isIdentity) {\r\n const transformBranch = new GraphicBranch(true);\r\n transformBranch.add(graphic);\r\n graphic = system.createBranch(transformBranch, tile.transformToRoot);\r\n }\r\n\r\n return { graphic };\r\n\r\n case TileFormat.B3dm:\r\n reader = B3dmReader.create(streamBuffer, iModel, modelId, is3d, tile.contentRange, system, yAxisUp, tile.isLeaf, tile.center, tile.transformToRoot, isCanceled, this.getBatchIdMap(), this.wantDeduplicatedVertices);\r\n break;\r\n case TileFormat.I3dm:\r\n reader = I3dmReader.create(streamBuffer, iModel, modelId, is3d, tile.contentRange, system, yAxisUp, tile.isLeaf, isCanceled, undefined, this.wantDeduplicatedVertices);\r\n break;\r\n case TileFormat.Cmpt:\r\n const header = new CompositeTileHeader(streamBuffer);\r\n if (!header.isValid) return {};\r\n const branch = new GraphicBranch(true);\r\n for (let i = 0; i < header.tileCount; i++) {\r\n const tilePosition = streamBuffer.curPos;\r\n streamBuffer.advance(8); // Skip magic and version.\r\n const tileBytes = streamBuffer.nextUint32;\r\n streamBuffer.curPos = tilePosition;\r\n const result = await this.loadTileContentFromStream(tile, streamBuffer, system, isCanceled);\r\n if (result.graphic)\r\n branch.add(result.graphic);\r\n streamBuffer.curPos = tilePosition + tileBytes;\r\n }\r\n return { graphic: branch.isEmpty ? undefined : system.createBranch(branch, Transform.createIdentity()), isLeaf: tile.isLeaf };\r\n\r\n default:\r\n assert(false, `unknown tile format ${format}`);\r\n break;\r\n }\r\n\r\n let content: TileContent = {};\r\n if (undefined !== reader) {\r\n try {\r\n content = await reader.read();\r\n } catch (_err) {\r\n // Failure to load should prevent us from trying to load children\r\n content.isLeaf = true;\r\n }\r\n }\r\n\r\n return content;\r\n }\r\n\r\n public get viewFlagOverrides(): ViewFlagOverrides { return defaultViewFlagOverrides; }\r\n\r\n public static computeTileClosestToEyePriority(tile: Tile, viewports: Iterable<Viewport>, location: Transform): number {\r\n // Prioritize tiles closer to eye.\r\n // NB: In NPC coords, 0 = far plane, 1 = near plane.\r\n const center = location.multiplyPoint3d(tile.center, scratchTileCenterWorld);\r\n let minDistance = 1.0;\r\n for (const viewport of viewports) {\r\n const npc = viewport.worldToNpc(center, scratchTileCenterView);\r\n const distance = 1.0 - npc.z;\r\n minDistance = Math.min(distance, minDistance);\r\n }\r\n\r\n return minDistance;\r\n }\r\n}\r\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"Tile.d.ts","sourceRoot":"","sources":["../../../src/tile/Tile.ts"],"names":[],"mappings":"AAIA;;GAEG;AAGH,OAAO,EAA+B,QAAQ,EAAW,OAAO,EAAW,OAAO,EAAE,SAAS,EAAY,MAAM,sBAAsB,CAAC;AACtI,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,mBAAmB,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAE3G,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EACL,eAAe,EAAE,WAAW,EAAE,YAAY,EAAE,UAAU,EAAE,WAAW,EAAE,kBAAkB,EAAE,QAAQ,EAAE,kBAAkB,EAAE,eAAe,EAAE,aAAa,EACtJ,MAAM,YAAY,CAAC;AAMpB,gBAAgB;AAChB,wBAAgB,eAAe,CAAC,OAAO,EAAE,cAAc,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,GAAG,IAAI,CAa5F;AAQD;;;;;;;;;;;GAWG;AACH,8BAAsB,IAAI;IACxB,OAAO,CAAC,MAAM,CAAiC;IAC/C,OAAO,CAAC,SAAS,CAAqB;IACtC,OAAO,CAAC,aAAa,CAAC,CAAgB;IACtC,OAAO,CAAC,iBAAiB,CAA6C;IACtE,sCAAsC;IACtC,SAAS,CAAC,QAAQ,CAAC,EAAE,aAAa,CAAC;IACnC,gIAAgI;IAChI,SAAS,CAAC,YAAY,UAAS;IAC/B,0EAA0E;IAC1E,SAAS,CAAC,UAAU,EAAE,MAAM,CAAC;IAC7B,uHAAuH;IACvH,SAAS,CAAC,mBAAmB,EAAE,kBAAkB,CAAC;IAClD,gBAAgB;IAChB,SAAS,CAAC,QAAQ,CAAC,EAAE,WAAW,CAAC;IACjC,gBAAgB;IAChB,SAAS,CAAC,OAAO,EAAE,OAAO,CAAC;IAC3B;;OAEG;IACH,SAAS,CAAC,aAAa,CAAC,EAAE,mBAAmB,CAAC;IAC9C,wKAAwK;IACxK,SAAS,CAAC,YAAY,EAAE,MAAM,CAAC;IAC/B,mDAAmD;IACnD,SAAgB,IAAI,EAAE,QAAQ,CAAC;IAC/B,sHAAsH;IACtH,SAAgB,KAAK,EAAE,mBAAmB,CAAC;IAC3C,mFAAmF;IACnF,SAAgB,MAAM,EAAE,IAAI,GAAG,SAAS,CAAC;IACzC,yFAAyF;IACzF,SAAgB,KAAK,EAAE,MAAM,CAAC;IAC9B,yCAAyC;IACzC,SAAgB,cAAc,EAAE,cAAc,CAAC;IAC/C,qDAAqD;IACrD,IAAW,MAAM,IAAI,OAAO,CAAuC;IACnE,uFAAuF;IACvF,IAAW,MAAM,IAAI,MAAM,CAAuC;IAClE,6GAA6G;IAC7G,SAAgB,WAAW,kBAAyB;IAEpD,oDAAoD;IAC7C,QAAQ,CAAC,EAAE,eAAe,CAAC;IAClC,oDAAoD;IAC7C,IAAI,CAAC,EAAE,eAAe,CAAC;IAC9B,oDAAoD;IAC7C,SAAS,SAAK;IACrB,oDAAoD;IAC7C,WAAW,CAAC,EAAE,aAAa,CAAC;IAEnC,2GAA2G;IAC3G,SAAS,CAAC,QAAQ,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,IAAI,EAAE,GAAG,SAAS,KAAK,IAAI,EAAE,MAAM,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,GAAG,IAAI;IAEvH;;;;;OAKG;IACH,aAAoB,OAAO,IAAI,kBAAkB,CAAC;IAElD,uFAAuF;aACvE,cAAc,CAAC,UAAU,EAAE,MAAM,OAAO,GAAG,OAAO,CAAC,WAAW,CAAC,QAAQ,CAAC;IAExF,6GAA6G;aAC7F,WAAW,CAAC,IAAI,EAAE,WAAW,CAAC,YAAY,EAAE,MAAM,EAAE,YAAY,EAAE,UAAU,CAAC,EAAE,MAAM,OAAO,GAAG,OAAO,CAAC,WAAW,CAAC;IAEnI,kBAAkB;IAClB,SAAS,aAAa,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ;IAoBxD;;;;OAIG;IACI,UAAU,IAAI,IAAI;IAIzB,8CAA8C;IACvC,eAAe,IAAI,IAAI;IAQ9B,yHAAyH;IAClH,OAAO,IAAI,IAAI;IAMtB;;OAEG;IACH,IAAW,QAAQ,IAAI,IAAI,EAAE,GAAG,SAAS,CAA2B;IACpE,2DAA2D;IAC3D,IAAW,MAAM,IAAI,gBAAgB,CAA6B;IAClE,+CAA+C;IAC/C,IAAW,SAAS,IAAI,MAAM,CAA4B;IAE1D,6DAA6D;IAC7D,IAAW,SAAS,IAAI,OAAO,CAAuD;IACtF,mEAAmE;IACnE,IAAW,QAAQ,IAAI,OAAO,CAAsD;IACpF,6DAA6D;IAC7D,IAAW,UAAU,IAAI,OAAO,CAAwD;IACxF,4EAA4E;IAC5E,IAAW,OAAO,IAAI,OAAO,CAAqD;IAElF,cAAc;IACP,WAAW,IAAI,IAAI;IAI1B,cAAc;IACP,UAAU,IAAI,IAAI;IAQzB,cAAc;IACP,OAAO,IAAI,IAAI;IAOtB,4CAA4C;IAC5C,IAAW,MAAM,IAAI,OAAO,CAAyB;IACrD,gBAAgB;IAChB,IAAW,OAAO,IAAI,OAAO,CAA6D;IAC1F,gBAAgB;IAChB,IAAW,aAAa,IAAI,OAAO,CAAiC;IACpE,wKAAwK;IACxK,IAAW,WAAW,IAAI,MAAM,CAA8B;IAC9D,gBAAgB;IAChB,IAAW,mBAAmB,IAAI,OAAO,CAAmE;IAC5G,gBAAgB;IAChB,IAAW,uBAAuB,IAAI,OAAO,CAA6D;IAE1G,gBAAgB;IAChB,IAAW,OAAO,IAAI,WAAW,GAAG,SAAS,CAA0B;IACvE,IAAW,OAAO,CAAC,OAAO,EAAE,WAAW,GAAG,SAAS,EAGlD;IAED;;;;OAIG;IACI,mBAAmB,CAAC,UAAU,EAAE,QAAQ,CAAC,QAAQ,CAAC,GAAG,MAAM;IAIlE,oDAAoD;IACpD,IAAW,WAAW,IAAI,OAAO,CAAwC;IACzE,8EAA8E;IAC9E,IAAW,eAAe,IAAI,OAAO,CAA6C;IAClF,0IAA0I;IAC1I,IAAW,YAAY,IAAI,mBAAmB,CAO7C;IAED,gIAAgI;IAChI,IAAW,UAAU,IAAI,cAAc,CAwBtC;IAED,iDAAiD;IAC1C,eAAe,IAAI,aAAa,GAAG,SAAS;IAInD,SAAS,CAAC,UAAU,CAAC,OAAO,EAAE,aAAa,GAAG,SAAS,GAAG,IAAI;IAM9D,+DAA+D;IACxD,UAAU,CAAC,OAAO,EAAE,WAAW,GAAG,IAAI;IAiB7C;;OAEG;IACH,SAAS,CAAC,kBAAkB,CAAC,MAAM,EAAE,YAAY,CAAC,UAAU,GAAG,IAAI;IAEnE;;;OAGG;IACI,iBAAiB,CAAC,KAAK,EAAE,YAAY,CAAC,UAAU,EAAE,eAAe,UAAO,GAAG,IAAI;IActF;;;OAGG;IACH,SAAS,CAAC,YAAY,IAAI,kBAAkB;IAwB5C,wEAAwE;IACxE,SAAS,CAAC,eAAe,IAAI,IAAI;IAYjC,gHAAgH;IAChH,SAAS,CAAC,cAAc,CAAC,IAAI,EAAE,YAAY,GAAG,OAAO;IAIrD,wHAAwH;IACxH,SAAS,CAAC,eAAe,CAAC,IAAI,EAAE,YAAY,GAAG,OAAO;IAItD,OAAO,CAAC,QAAQ;IAKhB,SAAS,CAAC,eAAe,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,oBAAoB,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,cAAc;IAuBlH,6EAA6E;IACtE,iBAAiB,CAAC,IAAI,EAAE,YAAY,GAAG,cAAc;IAuB5D,gBAAgB;IACT,qBAAqB,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,aAAa,EAAE,SAAS,EAAE,aAAa,CAAC,EAAE,aAAa,GAAG,IAAI;IAuB7H,wGAAwG;IACjG,gBAAgB,IAAI,MAAM;IAYjC,mCAAmC;IAC5B,YAAY,CAAC,IAAI,EAAE,YAAY,GAAG,IAAI;IAW7C,gBAAgB;IAChB,SAAS,KAAK,iBAAiB,IAAI,QAAQ,CAE1C;IAED,gBAAgB;IACT,eAAe,CAAC,OAAO,EAAE,YAAY,GAAG,aAAa,GAAG,SAAS;IAgBxE,gBAAgB;IAChB,SAAS,CAAC,eAAe,CAAC,OAAO,EAAE,cAAc,EAAE,IAAI,EAAE,iBAAiB,GAAG,IAAI;IA2BjF;;OAEG;IACI,wBAAwB,IAAI,OAAO,EAAE,GAAG,SAAS;CACzD;AAED;;;GAGG;AACH,oBAAY,cAAc;IACxB,8HAA8H;IAC9H,SAAS,IAAI;IACb,4FAA4F;IAC5F,MAAM,IAAI;IACV,4GAA4G;IAC5G,OAAO,IAAI;IACX,gFAAgF;IAChF,KAAK,IAAI;IACT,oDAAoD;IACpD,QAAQ,IAAI;IACZ,kCAAkC;IAClC,SAAS,IAAI;CACd;AAED;;;GAGG;AACH,oBAAY,cAAc;IACxB,2DAA2D;IAC3D,cAAc,IAAA;IACd,+EAA+E;IAC/E,SAAS,IAAA;IACT,iFAAiF;IACjF,OAAO,IAAA;CACR;AAED;;;;GAIG;AACH,oBAAY,gBAAgB;IAC1B,wEAAwE;IACxE,OAAO,IAAI;IACX,4BAA4B;IAC5B,GAAG,KAAK;IACR,wEAAwE;IACxE,OAAO,KAAK;IACZ,oEAAoE;IACpE,OAAO,KAAK;IACZ,iCAAiC;IACjC,OAAO,KAAK;IACZ,wFAAwF;IACxF,UAAU,KAAK;CAChB;AAED;;;;;;;;;GASG;AACH,oBAAY,iBAAiB;IAC3B,gCAAgC;IAChC,IAAI,IAAI;IACR,yDAAyD;IACzD,MAAM,IAAA;IACN,6IAA6I;IAC7I,OAAO,IAAA;IACP,6CAA6C;IAC7C,IAAI,IAAA;IACJ,kFAAkF;IAClF,YAAY,IAAA;IACZ,+BAA+B;IAC/B,MAAM,IAAA;CACP"}
1
+ {"version":3,"file":"Tile.d.ts","sourceRoot":"","sources":["../../../src/tile/Tile.ts"],"names":[],"mappings":"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"}
@@ -301,9 +301,13 @@ class Tile {
301
301
  }
302
302
  /** Determine the visibility of this tile according to the specified args. */
303
303
  computeVisibility(args) {
304
+ if (this.isEmpty)
305
+ return TileVisibility.OutsideFrustum;
306
+ if (args.boundingRange && !args.boundingRange.intersectsRange(this.range))
307
+ return TileVisibility.OutsideFrustum;
304
308
  // NB: We test for region culling before isDisplayable - otherwise we will never unload children of undisplayed tiles when
305
309
  // they are outside frustum
306
- if (this.isEmpty || this.isRegionCulled(args))
310
+ if (this.isRegionCulled(args))
307
311
  return TileVisibility.OutsideFrustum;
308
312
  // some nodes are merely for structure and don't have any geometry
309
313
  if (!this.isDisplayable)