@itwin/core-frontend 5.2.0-dev.5 → 5.2.0-dev.8

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 (610) hide show
  1. package/CHANGELOG.md +8 -1
  2. package/lib/cjs/BackgroundMapGeometry.js +13 -13
  3. package/lib/cjs/BackgroundMapGeometry.js.map +1 -1
  4. package/lib/cjs/BriefcaseConnection.d.ts.map +1 -1
  5. package/lib/cjs/BriefcaseConnection.js +2 -2
  6. package/lib/cjs/BriefcaseConnection.js.map +1 -1
  7. package/lib/cjs/CheckpointConnection.d.ts.map +1 -1
  8. package/lib/cjs/CheckpointConnection.js +3 -3
  9. package/lib/cjs/CheckpointConnection.js.map +1 -1
  10. package/lib/cjs/ContextRealityModelState.js.map +1 -1
  11. package/lib/cjs/ElementLocateManager.d.ts.map +1 -1
  12. package/lib/cjs/ElementLocateManager.js +7 -6
  13. package/lib/cjs/ElementLocateManager.js.map +1 -1
  14. package/lib/cjs/EmphasizeElements.d.ts.map +1 -1
  15. package/lib/cjs/EmphasizeElements.js +3 -1
  16. package/lib/cjs/EmphasizeElements.js.map +1 -1
  17. package/lib/cjs/EnvironmentDecorations.d.ts.map +1 -1
  18. package/lib/cjs/EnvironmentDecorations.js +4 -0
  19. package/lib/cjs/EnvironmentDecorations.js.map +1 -1
  20. package/lib/cjs/FrustumAnimator.d.ts.map +1 -1
  21. package/lib/cjs/FrustumAnimator.js +3 -2
  22. package/lib/cjs/FrustumAnimator.js.map +1 -1
  23. package/lib/cjs/GlobeAnimator.d.ts.map +1 -1
  24. package/lib/cjs/GlobeAnimator.js +7 -6
  25. package/lib/cjs/GlobeAnimator.js.map +1 -1
  26. package/lib/cjs/HitDetail.d.ts.map +1 -1
  27. package/lib/cjs/HitDetail.js +12 -7
  28. package/lib/cjs/HitDetail.js.map +1 -1
  29. package/lib/cjs/IModelApp.d.ts.map +1 -1
  30. package/lib/cjs/IModelApp.js +2 -1
  31. package/lib/cjs/IModelApp.js.map +1 -1
  32. package/lib/cjs/IModelConnection.d.ts.map +1 -1
  33. package/lib/cjs/IModelConnection.js +8 -9
  34. package/lib/cjs/IModelConnection.js.map +1 -1
  35. package/lib/cjs/IpcApp.d.ts.map +1 -1
  36. package/lib/cjs/IpcApp.js +1 -1
  37. package/lib/cjs/IpcApp.js.map +1 -1
  38. package/lib/cjs/LinePlaneIntersect.d.ts.map +1 -1
  39. package/lib/cjs/LinePlaneIntersect.js +2 -0
  40. package/lib/cjs/LinePlaneIntersect.js.map +1 -1
  41. package/lib/cjs/LocalhostIpcApp.d.ts.map +1 -1
  42. package/lib/cjs/LocalhostIpcApp.js +2 -1
  43. package/lib/cjs/LocalhostIpcApp.js.map +1 -1
  44. package/lib/cjs/Marker.d.ts.map +1 -1
  45. package/lib/cjs/Marker.js +4 -3
  46. package/lib/cjs/Marker.js.map +1 -1
  47. package/lib/cjs/ModelState.d.ts.map +1 -1
  48. package/lib/cjs/ModelState.js +2 -2
  49. package/lib/cjs/ModelState.js.map +1 -1
  50. package/lib/cjs/NativeApp.d.ts.map +1 -1
  51. package/lib/cjs/NativeApp.js +5 -4
  52. package/lib/cjs/NativeApp.js.map +1 -1
  53. package/lib/cjs/NativeAppLogger.d.ts.map +1 -1
  54. package/lib/cjs/NativeAppLogger.js +1 -0
  55. package/lib/cjs/NativeAppLogger.js.map +1 -1
  56. package/lib/cjs/PlanarClipMaskState.js +3 -3
  57. package/lib/cjs/PlanarClipMaskState.js.map +1 -1
  58. package/lib/cjs/SelectionSet.d.ts.map +1 -1
  59. package/lib/cjs/SelectionSet.js +1 -0
  60. package/lib/cjs/SelectionSet.js.map +1 -1
  61. package/lib/cjs/SheetViewState.d.ts.map +1 -1
  62. package/lib/cjs/SheetViewState.js +5 -5
  63. package/lib/cjs/SheetViewState.js.map +1 -1
  64. package/lib/cjs/SpatialViewState.d.ts.map +1 -1
  65. package/lib/cjs/SpatialViewState.js +1 -1
  66. package/lib/cjs/SpatialViewState.js.map +1 -1
  67. package/lib/cjs/Sprites.js +2 -2
  68. package/lib/cjs/Sprites.js.map +1 -1
  69. package/lib/cjs/TentativePoint.d.ts.map +1 -1
  70. package/lib/cjs/TentativePoint.js +10 -9
  71. package/lib/cjs/TentativePoint.js.map +1 -1
  72. package/lib/cjs/ViewCreator2d.js +1 -1
  73. package/lib/cjs/ViewCreator2d.js.map +1 -1
  74. package/lib/cjs/ViewCreator3d.js +1 -1
  75. package/lib/cjs/ViewCreator3d.js.map +1 -1
  76. package/lib/cjs/ViewPose.d.ts.map +1 -1
  77. package/lib/cjs/ViewPose.js +4 -1
  78. package/lib/cjs/ViewPose.js.map +1 -1
  79. package/lib/cjs/ViewState.d.ts.map +1 -1
  80. package/lib/cjs/ViewState.js +17 -12
  81. package/lib/cjs/ViewState.js.map +1 -1
  82. package/lib/cjs/ViewingSpace.d.ts.map +1 -1
  83. package/lib/cjs/ViewingSpace.js +2 -0
  84. package/lib/cjs/ViewingSpace.js.map +1 -1
  85. package/lib/cjs/Viewport.d.ts.map +1 -1
  86. package/lib/cjs/Viewport.js +17 -10
  87. package/lib/cjs/Viewport.js.map +1 -1
  88. package/lib/cjs/common/ImageUtil.d.ts.map +1 -1
  89. package/lib/cjs/common/ImageUtil.js +2 -1
  90. package/lib/cjs/common/ImageUtil.js.map +1 -1
  91. package/lib/cjs/common/internal/render/GeometryAccumulator.d.ts.map +1 -1
  92. package/lib/cjs/common/internal/render/GeometryAccumulator.js +4 -3
  93. package/lib/cjs/common/internal/render/GeometryAccumulator.js.map +1 -1
  94. package/lib/cjs/common/internal/render/InstancedGraphicPropsBuilder.d.ts.map +1 -1
  95. package/lib/cjs/common/internal/render/InstancedGraphicPropsBuilder.js +2 -0
  96. package/lib/cjs/common/internal/render/InstancedGraphicPropsBuilder.js.map +1 -1
  97. package/lib/cjs/common/internal/render/MeshBuilder.js +1 -1
  98. package/lib/cjs/common/internal/render/MeshBuilder.js.map +1 -1
  99. package/lib/cjs/common/internal/render/VertexTableBuilder.d.ts.map +1 -1
  100. package/lib/cjs/common/internal/render/VertexTableBuilder.js +16 -7
  101. package/lib/cjs/common/internal/render/VertexTableBuilder.js.map +1 -1
  102. package/lib/cjs/extension/ExtensionAdmin.js +2 -2
  103. package/lib/cjs/extension/ExtensionAdmin.js.map +1 -1
  104. package/lib/cjs/internal/GoogleMapsDecorator.js +1 -1
  105. package/lib/cjs/internal/GoogleMapsDecorator.js.map +1 -1
  106. package/lib/cjs/internal/ScriptUtils.js +1 -0
  107. package/lib/cjs/internal/ScriptUtils.js.map +1 -1
  108. package/lib/cjs/internal/render/UpsampleRealityMeshParams.d.ts.map +1 -1
  109. package/lib/cjs/internal/render/UpsampleRealityMeshParams.js +2 -1
  110. package/lib/cjs/internal/render/UpsampleRealityMeshParams.js.map +1 -1
  111. package/lib/cjs/internal/render/webgl/AtmosphereUniforms.d.ts.map +1 -1
  112. package/lib/cjs/internal/render/webgl/AtmosphereUniforms.js +7 -2
  113. package/lib/cjs/internal/render/webgl/AtmosphereUniforms.js.map +1 -1
  114. package/lib/cjs/internal/render/webgl/AttributeBuffers.d.ts.map +1 -1
  115. package/lib/cjs/internal/render/webgl/AttributeBuffers.js +5 -3
  116. package/lib/cjs/internal/render/webgl/AttributeBuffers.js.map +1 -1
  117. package/lib/cjs/internal/render/webgl/AttributeMap.d.ts.map +1 -1
  118. package/lib/cjs/internal/render/webgl/AttributeMap.js +2 -0
  119. package/lib/cjs/internal/render/webgl/AttributeMap.js.map +1 -1
  120. package/lib/cjs/internal/render/webgl/BackgroundMapDrape.d.ts.map +1 -1
  121. package/lib/cjs/internal/render/webgl/BackgroundMapDrape.js +2 -2
  122. package/lib/cjs/internal/render/webgl/BackgroundMapDrape.js.map +1 -1
  123. package/lib/cjs/internal/render/webgl/BatchUniforms.js +1 -1
  124. package/lib/cjs/internal/render/webgl/BatchUniforms.js.map +1 -1
  125. package/lib/cjs/internal/render/webgl/BranchState.d.ts.map +1 -1
  126. package/lib/cjs/internal/render/webgl/BranchState.js +2 -1
  127. package/lib/cjs/internal/render/webgl/BranchState.js.map +1 -1
  128. package/lib/cjs/internal/render/webgl/BranchUniforms.js +2 -2
  129. package/lib/cjs/internal/render/webgl/BranchUniforms.js.map +1 -1
  130. package/lib/cjs/internal/render/webgl/CachedGeometry.d.ts.map +1 -1
  131. package/lib/cjs/internal/render/webgl/CachedGeometry.js +2 -2
  132. package/lib/cjs/internal/render/webgl/CachedGeometry.js.map +1 -1
  133. package/lib/cjs/internal/render/webgl/ClipStack.js +1 -1
  134. package/lib/cjs/internal/render/webgl/ClipStack.js.map +1 -1
  135. package/lib/cjs/internal/render/webgl/ColorInfo.js +1 -1
  136. package/lib/cjs/internal/render/webgl/ColorInfo.js.map +1 -1
  137. package/lib/cjs/internal/render/webgl/Contours.js +3 -3
  138. package/lib/cjs/internal/render/webgl/Contours.js.map +1 -1
  139. package/lib/cjs/internal/render/webgl/EDL.js +18 -18
  140. package/lib/cjs/internal/render/webgl/EDL.js.map +1 -1
  141. package/lib/cjs/internal/render/webgl/FeatureOverrides.js +4 -4
  142. package/lib/cjs/internal/render/webgl/FeatureOverrides.js.map +1 -1
  143. package/lib/cjs/internal/render/webgl/FrameBuffer.js +3 -3
  144. package/lib/cjs/internal/render/webgl/FrameBuffer.js.map +1 -1
  145. package/lib/cjs/internal/render/webgl/FrustumUniforms.d.ts.map +1 -1
  146. package/lib/cjs/internal/render/webgl/FrustumUniforms.js +2 -1
  147. package/lib/cjs/internal/render/webgl/FrustumUniforms.js.map +1 -1
  148. package/lib/cjs/internal/render/webgl/GLTimer.d.ts.map +1 -1
  149. package/lib/cjs/internal/render/webgl/GLTimer.js +2 -0
  150. package/lib/cjs/internal/render/webgl/GLTimer.js.map +1 -1
  151. package/lib/cjs/internal/render/webgl/MapLayerParams.js +2 -2
  152. package/lib/cjs/internal/render/webgl/MapLayerParams.js.map +1 -1
  153. package/lib/cjs/internal/render/webgl/MeshData.js +2 -2
  154. package/lib/cjs/internal/render/webgl/MeshData.js.map +1 -1
  155. package/lib/cjs/internal/render/webgl/PerformanceMetrics.js +1 -1
  156. package/lib/cjs/internal/render/webgl/PerformanceMetrics.js.map +1 -1
  157. package/lib/cjs/internal/render/webgl/PlanarClassifier.d.ts.map +1 -1
  158. package/lib/cjs/internal/render/webgl/PlanarClassifier.js +7 -7
  159. package/lib/cjs/internal/render/webgl/PlanarClassifier.js.map +1 -1
  160. package/lib/cjs/internal/render/webgl/PlanarGrid.js +1 -1
  161. package/lib/cjs/internal/render/webgl/PlanarGrid.js.map +1 -1
  162. package/lib/cjs/internal/render/webgl/PlanarTextureProjection.d.ts +0 -3
  163. package/lib/cjs/internal/render/webgl/PlanarTextureProjection.d.ts.map +1 -1
  164. package/lib/cjs/internal/render/webgl/PlanarTextureProjection.js +6 -5
  165. package/lib/cjs/internal/render/webgl/PlanarTextureProjection.js.map +1 -1
  166. package/lib/cjs/internal/render/webgl/PointCloud.js +1 -1
  167. package/lib/cjs/internal/render/webgl/PointCloud.js.map +1 -1
  168. package/lib/cjs/internal/render/webgl/RealityMesh.js +1 -1
  169. package/lib/cjs/internal/render/webgl/RealityMesh.js.map +1 -1
  170. package/lib/cjs/internal/render/webgl/RenderBuffer.js +2 -2
  171. package/lib/cjs/internal/render/webgl/RenderBuffer.js.map +1 -1
  172. package/lib/cjs/internal/render/webgl/SceneCompositor.d.ts.map +1 -1
  173. package/lib/cjs/internal/render/webgl/SceneCompositor.js +115 -85
  174. package/lib/cjs/internal/render/webgl/SceneCompositor.js.map +1 -1
  175. package/lib/cjs/internal/render/webgl/ScratchDrawParams.d.ts.map +1 -1
  176. package/lib/cjs/internal/render/webgl/ScratchDrawParams.js +11 -10
  177. package/lib/cjs/internal/render/webgl/ScratchDrawParams.js.map +1 -1
  178. package/lib/cjs/internal/render/webgl/ScreenSpaceEffect.js +3 -3
  179. package/lib/cjs/internal/render/webgl/ScreenSpaceEffect.js.map +1 -1
  180. package/lib/cjs/internal/render/webgl/ShaderProgram.js +3 -3
  181. package/lib/cjs/internal/render/webgl/ShaderProgram.js.map +1 -1
  182. package/lib/cjs/internal/render/webgl/ShadowUniforms.d.ts.map +1 -1
  183. package/lib/cjs/internal/render/webgl/ShadowUniforms.js +2 -1
  184. package/lib/cjs/internal/render/webgl/ShadowUniforms.js.map +1 -1
  185. package/lib/cjs/internal/render/webgl/SolarShadowMap.d.ts.map +1 -1
  186. package/lib/cjs/internal/render/webgl/SolarShadowMap.js +6 -4
  187. package/lib/cjs/internal/render/webgl/SolarShadowMap.js.map +1 -1
  188. package/lib/cjs/internal/render/webgl/System.d.ts.map +1 -1
  189. package/lib/cjs/internal/render/webgl/System.js +1 -1
  190. package/lib/cjs/internal/render/webgl/System.js.map +1 -1
  191. package/lib/cjs/internal/render/webgl/Target.d.ts.map +1 -1
  192. package/lib/cjs/internal/render/webgl/Target.js +10 -7
  193. package/lib/cjs/internal/render/webgl/Target.js.map +1 -1
  194. package/lib/cjs/internal/render/webgl/Texture.d.ts.map +1 -1
  195. package/lib/cjs/internal/render/webgl/Texture.js +10 -8
  196. package/lib/cjs/internal/render/webgl/Texture.js.map +1 -1
  197. package/lib/cjs/internal/render/webgl/glsl/Animation.d.ts.map +1 -1
  198. package/lib/cjs/internal/render/webgl/glsl/Animation.js +4 -2
  199. package/lib/cjs/internal/render/webgl/glsl/Animation.js.map +1 -1
  200. package/lib/cjs/internal/render/webgl/glsl/Color.d.ts.map +1 -1
  201. package/lib/cjs/internal/render/webgl/glsl/Color.js +2 -1
  202. package/lib/cjs/internal/render/webgl/glsl/Color.js.map +1 -1
  203. package/lib/cjs/internal/render/webgl/glsl/Composite.js +1 -1
  204. package/lib/cjs/internal/render/webgl/glsl/Composite.js.map +1 -1
  205. package/lib/cjs/internal/render/webgl/glsl/CopyStencil.d.ts.map +1 -1
  206. package/lib/cjs/internal/render/webgl/glsl/CopyStencil.js +3 -2
  207. package/lib/cjs/internal/render/webgl/glsl/CopyStencil.js.map +1 -1
  208. package/lib/cjs/internal/render/webgl/glsl/PlanarClassification.js +3 -3
  209. package/lib/cjs/internal/render/webgl/glsl/PlanarClassification.js.map +1 -1
  210. package/lib/cjs/internal/render/webgl/glsl/PlanarGrid.d.ts.map +1 -1
  211. package/lib/cjs/internal/render/webgl/glsl/PlanarGrid.js +4 -3
  212. package/lib/cjs/internal/render/webgl/glsl/PlanarGrid.js.map +1 -1
  213. package/lib/cjs/internal/render/webgl/glsl/RealityMesh.js +8 -8
  214. package/lib/cjs/internal/render/webgl/glsl/RealityMesh.js.map +1 -1
  215. package/lib/cjs/internal/render/webgl/glsl/Surface.js +10 -10
  216. package/lib/cjs/internal/render/webgl/glsl/Surface.js.map +1 -1
  217. package/lib/cjs/internal/render/webgl/glsl/Vertex.js +2 -2
  218. package/lib/cjs/internal/render/webgl/glsl/Vertex.js.map +1 -1
  219. package/lib/cjs/internal/tile/B3dmReader.d.ts.map +1 -1
  220. package/lib/cjs/internal/tile/B3dmReader.js +1 -1
  221. package/lib/cjs/internal/tile/B3dmReader.js.map +1 -1
  222. package/lib/cjs/internal/tile/FetchCloudStorage.js +1 -1
  223. package/lib/cjs/internal/tile/FetchCloudStorage.js.map +1 -1
  224. package/lib/cjs/internal/tile/LRUTileList.d.ts.map +1 -1
  225. package/lib/cjs/internal/tile/LRUTileList.js +4 -0
  226. package/lib/cjs/internal/tile/LRUTileList.js.map +1 -1
  227. package/lib/cjs/internal/tile/LayerTileTreeReferenceHandler.d.ts.map +1 -1
  228. package/lib/cjs/internal/tile/LayerTileTreeReferenceHandler.js +2 -1
  229. package/lib/cjs/internal/tile/LayerTileTreeReferenceHandler.js.map +1 -1
  230. package/lib/cjs/internal/tile/OPCFormatInterpreter.js +4 -4
  231. package/lib/cjs/internal/tile/OPCFormatInterpreter.js.map +1 -1
  232. package/lib/cjs/internal/tile/OrbitGtTileTree.d.ts.map +1 -1
  233. package/lib/cjs/internal/tile/OrbitGtTileTree.js +2 -2
  234. package/lib/cjs/internal/tile/OrbitGtTileTree.js.map +1 -1
  235. package/lib/cjs/internal/tile/RealityModelTileTree.d.ts.map +1 -1
  236. package/lib/cjs/internal/tile/RealityModelTileTree.js +3 -3
  237. package/lib/cjs/internal/tile/RealityModelTileTree.js.map +1 -1
  238. package/lib/cjs/internal/tile/RealityTileLoader.d.ts.map +1 -1
  239. package/lib/cjs/internal/tile/RealityTileLoader.js +3 -0
  240. package/lib/cjs/internal/tile/RealityTileLoader.js.map +1 -1
  241. package/lib/cjs/internal/tile/ThreeDTileFormatInterpreter.js +3 -3
  242. package/lib/cjs/internal/tile/ThreeDTileFormatInterpreter.js.map +1 -1
  243. package/lib/cjs/internal/tile/TileUserSet.d.ts.map +1 -1
  244. package/lib/cjs/internal/tile/TileUserSet.js +4 -0
  245. package/lib/cjs/internal/tile/TileUserSet.js.map +1 -1
  246. package/lib/cjs/internal/tile/map/ArcGISTileMap.js +1 -1
  247. package/lib/cjs/internal/tile/map/ArcGISTileMap.js.map +1 -1
  248. package/lib/cjs/internal/tile/map/ArcGisUtilities.d.ts.map +1 -1
  249. package/lib/cjs/internal/tile/map/ArcGisUtilities.js +4 -0
  250. package/lib/cjs/internal/tile/map/ArcGisUtilities.js.map +1 -1
  251. package/lib/cjs/internal/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.d.ts.map +1 -1
  252. package/lib/cjs/internal/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js +3 -1
  253. package/lib/cjs/internal/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js.map +1 -1
  254. package/lib/cjs/internal/tile/map/ImageryProviders/BingImageryProvider.js +2 -2
  255. package/lib/cjs/internal/tile/map/ImageryProviders/BingImageryProvider.js.map +1 -1
  256. package/lib/cjs/internal/tile/map/ImageryProviders/WmsMapLayerImageryProvider.js +1 -1
  257. package/lib/cjs/internal/tile/map/ImageryProviders/WmsMapLayerImageryProvider.js.map +1 -1
  258. package/lib/cjs/internal/tile/map/MapTileAvailability.d.ts.map +1 -1
  259. package/lib/cjs/internal/tile/map/MapTileAvailability.js +5 -2
  260. package/lib/cjs/internal/tile/map/MapTileAvailability.js.map +1 -1
  261. package/lib/cjs/internal/tile/map/WmtsCapabilities.d.ts.map +1 -1
  262. package/lib/cjs/internal/tile/map/WmtsCapabilities.js +3 -2
  263. package/lib/cjs/internal/tile/map/WmtsCapabilities.js.map +1 -1
  264. package/lib/cjs/properties/FormattedQuantityDescription.d.ts.map +1 -1
  265. package/lib/cjs/properties/FormattedQuantityDescription.js +2 -0
  266. package/lib/cjs/properties/FormattedQuantityDescription.js.map +1 -1
  267. package/lib/cjs/quantity-formatting/BaseUnitFormattingSettingsProvider.d.ts.map +1 -1
  268. package/lib/cjs/quantity-formatting/BaseUnitFormattingSettingsProvider.js +2 -0
  269. package/lib/cjs/quantity-formatting/BaseUnitFormattingSettingsProvider.js.map +1 -1
  270. package/lib/cjs/quantity-formatting/QuantityFormatter.d.ts.map +1 -1
  271. package/lib/cjs/quantity-formatting/QuantityFormatter.js +5 -3
  272. package/lib/cjs/quantity-formatting/QuantityFormatter.js.map +1 -1
  273. package/lib/cjs/tile/GltfReader.d.ts +5 -2
  274. package/lib/cjs/tile/GltfReader.d.ts.map +1 -1
  275. package/lib/cjs/tile/GltfReader.js +54 -16
  276. package/lib/cjs/tile/GltfReader.js.map +1 -1
  277. package/lib/cjs/tile/RealityTile.d.ts.map +1 -1
  278. package/lib/cjs/tile/RealityTile.js +2 -2
  279. package/lib/cjs/tile/RealityTile.js.map +1 -1
  280. package/lib/cjs/tile/RealityTileTree.d.ts.map +1 -1
  281. package/lib/cjs/tile/RealityTileTree.js +5 -5
  282. package/lib/cjs/tile/RealityTileTree.js.map +1 -1
  283. package/lib/cjs/tile/TileAdmin.js.map +1 -1
  284. package/lib/cjs/tile/TileDrawArgs.d.ts.map +1 -1
  285. package/lib/cjs/tile/TileDrawArgs.js +2 -1
  286. package/lib/cjs/tile/TileDrawArgs.js.map +1 -1
  287. package/lib/cjs/tile/map/ImageryTileTree.js +1 -1
  288. package/lib/cjs/tile/map/ImageryTileTree.js.map +1 -1
  289. package/lib/cjs/tile/map/MapLayerFormatRegistry.js +1 -1
  290. package/lib/cjs/tile/map/MapLayerFormatRegistry.js.map +1 -1
  291. package/lib/cjs/tile/map/MapLayerSources.d.ts.map +1 -1
  292. package/lib/cjs/tile/map/MapLayerSources.js +9 -1
  293. package/lib/cjs/tile/map/MapLayerSources.js.map +1 -1
  294. package/lib/cjs/tile/map/MapTile.d.ts.map +1 -1
  295. package/lib/cjs/tile/map/MapTile.js +10 -8
  296. package/lib/cjs/tile/map/MapTile.js.map +1 -1
  297. package/lib/cjs/tile/map/MapTileTree.d.ts.map +1 -1
  298. package/lib/cjs/tile/map/MapTileTree.js +8 -7
  299. package/lib/cjs/tile/map/MapTileTree.js.map +1 -1
  300. package/lib/cjs/tile/map/MapTilingScheme.d.ts.map +1 -1
  301. package/lib/cjs/tile/map/MapTilingScheme.js +2 -1
  302. package/lib/cjs/tile/map/MapTilingScheme.js.map +1 -1
  303. package/lib/cjs/tools/Tool.js +1 -1
  304. package/lib/cjs/tools/Tool.js.map +1 -1
  305. package/lib/esm/BackgroundMapGeometry.js +14 -14
  306. package/lib/esm/BackgroundMapGeometry.js.map +1 -1
  307. package/lib/esm/BriefcaseConnection.d.ts.map +1 -1
  308. package/lib/esm/BriefcaseConnection.js +2 -2
  309. package/lib/esm/BriefcaseConnection.js.map +1 -1
  310. package/lib/esm/CheckpointConnection.d.ts.map +1 -1
  311. package/lib/esm/CheckpointConnection.js +4 -4
  312. package/lib/esm/CheckpointConnection.js.map +1 -1
  313. package/lib/esm/ContextRealityModelState.js.map +1 -1
  314. package/lib/esm/ElementLocateManager.d.ts.map +1 -1
  315. package/lib/esm/ElementLocateManager.js +8 -7
  316. package/lib/esm/ElementLocateManager.js.map +1 -1
  317. package/lib/esm/EmphasizeElements.d.ts.map +1 -1
  318. package/lib/esm/EmphasizeElements.js +3 -1
  319. package/lib/esm/EmphasizeElements.js.map +1 -1
  320. package/lib/esm/EnvironmentDecorations.d.ts.map +1 -1
  321. package/lib/esm/EnvironmentDecorations.js +4 -0
  322. package/lib/esm/EnvironmentDecorations.js.map +1 -1
  323. package/lib/esm/FrustumAnimator.d.ts.map +1 -1
  324. package/lib/esm/FrustumAnimator.js +3 -2
  325. package/lib/esm/FrustumAnimator.js.map +1 -1
  326. package/lib/esm/GlobeAnimator.d.ts.map +1 -1
  327. package/lib/esm/GlobeAnimator.js +7 -6
  328. package/lib/esm/GlobeAnimator.js.map +1 -1
  329. package/lib/esm/HitDetail.d.ts.map +1 -1
  330. package/lib/esm/HitDetail.js +12 -7
  331. package/lib/esm/HitDetail.js.map +1 -1
  332. package/lib/esm/IModelApp.d.ts.map +1 -1
  333. package/lib/esm/IModelApp.js +4 -3
  334. package/lib/esm/IModelApp.js.map +1 -1
  335. package/lib/esm/IModelConnection.d.ts.map +1 -1
  336. package/lib/esm/IModelConnection.js +9 -10
  337. package/lib/esm/IModelConnection.js.map +1 -1
  338. package/lib/esm/IpcApp.d.ts.map +1 -1
  339. package/lib/esm/IpcApp.js +2 -2
  340. package/lib/esm/IpcApp.js.map +1 -1
  341. package/lib/esm/LinePlaneIntersect.d.ts.map +1 -1
  342. package/lib/esm/LinePlaneIntersect.js +2 -0
  343. package/lib/esm/LinePlaneIntersect.js.map +1 -1
  344. package/lib/esm/LocalhostIpcApp.d.ts.map +1 -1
  345. package/lib/esm/LocalhostIpcApp.js +2 -1
  346. package/lib/esm/LocalhostIpcApp.js.map +1 -1
  347. package/lib/esm/Marker.d.ts.map +1 -1
  348. package/lib/esm/Marker.js +5 -4
  349. package/lib/esm/Marker.js.map +1 -1
  350. package/lib/esm/ModelState.d.ts.map +1 -1
  351. package/lib/esm/ModelState.js +3 -3
  352. package/lib/esm/ModelState.js.map +1 -1
  353. package/lib/esm/NativeApp.d.ts.map +1 -1
  354. package/lib/esm/NativeApp.js +5 -4
  355. package/lib/esm/NativeApp.js.map +1 -1
  356. package/lib/esm/NativeAppLogger.d.ts.map +1 -1
  357. package/lib/esm/NativeAppLogger.js +1 -0
  358. package/lib/esm/NativeAppLogger.js.map +1 -1
  359. package/lib/esm/PlanarClipMaskState.js +3 -3
  360. package/lib/esm/PlanarClipMaskState.js.map +1 -1
  361. package/lib/esm/SelectionSet.d.ts.map +1 -1
  362. package/lib/esm/SelectionSet.js +2 -1
  363. package/lib/esm/SelectionSet.js.map +1 -1
  364. package/lib/esm/SheetViewState.d.ts.map +1 -1
  365. package/lib/esm/SheetViewState.js +6 -6
  366. package/lib/esm/SheetViewState.js.map +1 -1
  367. package/lib/esm/SpatialViewState.d.ts.map +1 -1
  368. package/lib/esm/SpatialViewState.js +2 -2
  369. package/lib/esm/SpatialViewState.js.map +1 -1
  370. package/lib/esm/Sprites.js +2 -2
  371. package/lib/esm/Sprites.js.map +1 -1
  372. package/lib/esm/TentativePoint.d.ts.map +1 -1
  373. package/lib/esm/TentativePoint.js +10 -9
  374. package/lib/esm/TentativePoint.js.map +1 -1
  375. package/lib/esm/ViewCreator2d.js +1 -1
  376. package/lib/esm/ViewCreator2d.js.map +1 -1
  377. package/lib/esm/ViewCreator3d.js +1 -1
  378. package/lib/esm/ViewCreator3d.js.map +1 -1
  379. package/lib/esm/ViewPose.d.ts.map +1 -1
  380. package/lib/esm/ViewPose.js +4 -1
  381. package/lib/esm/ViewPose.js.map +1 -1
  382. package/lib/esm/ViewState.d.ts.map +1 -1
  383. package/lib/esm/ViewState.js +18 -13
  384. package/lib/esm/ViewState.js.map +1 -1
  385. package/lib/esm/ViewingSpace.d.ts.map +1 -1
  386. package/lib/esm/ViewingSpace.js +2 -0
  387. package/lib/esm/ViewingSpace.js.map +1 -1
  388. package/lib/esm/Viewport.d.ts.map +1 -1
  389. package/lib/esm/Viewport.js +18 -11
  390. package/lib/esm/Viewport.js.map +1 -1
  391. package/lib/esm/common/ImageUtil.d.ts.map +1 -1
  392. package/lib/esm/common/ImageUtil.js +2 -1
  393. package/lib/esm/common/ImageUtil.js.map +1 -1
  394. package/lib/esm/common/internal/render/GeometryAccumulator.d.ts.map +1 -1
  395. package/lib/esm/common/internal/render/GeometryAccumulator.js +4 -3
  396. package/lib/esm/common/internal/render/GeometryAccumulator.js.map +1 -1
  397. package/lib/esm/common/internal/render/InstancedGraphicPropsBuilder.d.ts.map +1 -1
  398. package/lib/esm/common/internal/render/InstancedGraphicPropsBuilder.js +2 -0
  399. package/lib/esm/common/internal/render/InstancedGraphicPropsBuilder.js.map +1 -1
  400. package/lib/esm/common/internal/render/MeshBuilder.js +2 -2
  401. package/lib/esm/common/internal/render/MeshBuilder.js.map +1 -1
  402. package/lib/esm/common/internal/render/VertexTableBuilder.d.ts.map +1 -1
  403. package/lib/esm/common/internal/render/VertexTableBuilder.js +17 -8
  404. package/lib/esm/common/internal/render/VertexTableBuilder.js.map +1 -1
  405. package/lib/esm/extension/ExtensionAdmin.js +2 -2
  406. package/lib/esm/extension/ExtensionAdmin.js.map +1 -1
  407. package/lib/esm/internal/GoogleMapsDecorator.js +1 -1
  408. package/lib/esm/internal/GoogleMapsDecorator.js.map +1 -1
  409. package/lib/esm/internal/ScriptUtils.js +1 -0
  410. package/lib/esm/internal/ScriptUtils.js.map +1 -1
  411. package/lib/esm/internal/render/UpsampleRealityMeshParams.d.ts.map +1 -1
  412. package/lib/esm/internal/render/UpsampleRealityMeshParams.js +2 -1
  413. package/lib/esm/internal/render/UpsampleRealityMeshParams.js.map +1 -1
  414. package/lib/esm/internal/render/webgl/AtmosphereUniforms.d.ts.map +1 -1
  415. package/lib/esm/internal/render/webgl/AtmosphereUniforms.js +7 -2
  416. package/lib/esm/internal/render/webgl/AtmosphereUniforms.js.map +1 -1
  417. package/lib/esm/internal/render/webgl/AttributeBuffers.d.ts.map +1 -1
  418. package/lib/esm/internal/render/webgl/AttributeBuffers.js +5 -3
  419. package/lib/esm/internal/render/webgl/AttributeBuffers.js.map +1 -1
  420. package/lib/esm/internal/render/webgl/AttributeMap.d.ts.map +1 -1
  421. package/lib/esm/internal/render/webgl/AttributeMap.js +2 -0
  422. package/lib/esm/internal/render/webgl/AttributeMap.js.map +1 -1
  423. package/lib/esm/internal/render/webgl/BackgroundMapDrape.d.ts.map +1 -1
  424. package/lib/esm/internal/render/webgl/BackgroundMapDrape.js +3 -3
  425. package/lib/esm/internal/render/webgl/BackgroundMapDrape.js.map +1 -1
  426. package/lib/esm/internal/render/webgl/BatchUniforms.js +1 -1
  427. package/lib/esm/internal/render/webgl/BatchUniforms.js.map +1 -1
  428. package/lib/esm/internal/render/webgl/BranchState.d.ts.map +1 -1
  429. package/lib/esm/internal/render/webgl/BranchState.js +2 -1
  430. package/lib/esm/internal/render/webgl/BranchState.js.map +1 -1
  431. package/lib/esm/internal/render/webgl/BranchUniforms.js +3 -3
  432. package/lib/esm/internal/render/webgl/BranchUniforms.js.map +1 -1
  433. package/lib/esm/internal/render/webgl/CachedGeometry.d.ts.map +1 -1
  434. package/lib/esm/internal/render/webgl/CachedGeometry.js +3 -3
  435. package/lib/esm/internal/render/webgl/CachedGeometry.js.map +1 -1
  436. package/lib/esm/internal/render/webgl/ClipStack.js +1 -1
  437. package/lib/esm/internal/render/webgl/ClipStack.js.map +1 -1
  438. package/lib/esm/internal/render/webgl/ColorInfo.js +2 -2
  439. package/lib/esm/internal/render/webgl/ColorInfo.js.map +1 -1
  440. package/lib/esm/internal/render/webgl/Contours.js +4 -4
  441. package/lib/esm/internal/render/webgl/Contours.js.map +1 -1
  442. package/lib/esm/internal/render/webgl/EDL.js +19 -19
  443. package/lib/esm/internal/render/webgl/EDL.js.map +1 -1
  444. package/lib/esm/internal/render/webgl/FeatureOverrides.js +5 -5
  445. package/lib/esm/internal/render/webgl/FeatureOverrides.js.map +1 -1
  446. package/lib/esm/internal/render/webgl/FrameBuffer.js +4 -4
  447. package/lib/esm/internal/render/webgl/FrameBuffer.js.map +1 -1
  448. package/lib/esm/internal/render/webgl/FrustumUniforms.d.ts.map +1 -1
  449. package/lib/esm/internal/render/webgl/FrustumUniforms.js +2 -1
  450. package/lib/esm/internal/render/webgl/FrustumUniforms.js.map +1 -1
  451. package/lib/esm/internal/render/webgl/GLTimer.d.ts.map +1 -1
  452. package/lib/esm/internal/render/webgl/GLTimer.js +2 -0
  453. package/lib/esm/internal/render/webgl/GLTimer.js.map +1 -1
  454. package/lib/esm/internal/render/webgl/MapLayerParams.js +3 -3
  455. package/lib/esm/internal/render/webgl/MapLayerParams.js.map +1 -1
  456. package/lib/esm/internal/render/webgl/MeshData.js +3 -3
  457. package/lib/esm/internal/render/webgl/MeshData.js.map +1 -1
  458. package/lib/esm/internal/render/webgl/PerformanceMetrics.js +1 -1
  459. package/lib/esm/internal/render/webgl/PerformanceMetrics.js.map +1 -1
  460. package/lib/esm/internal/render/webgl/PlanarClassifier.d.ts.map +1 -1
  461. package/lib/esm/internal/render/webgl/PlanarClassifier.js +8 -8
  462. package/lib/esm/internal/render/webgl/PlanarClassifier.js.map +1 -1
  463. package/lib/esm/internal/render/webgl/PlanarGrid.js +2 -2
  464. package/lib/esm/internal/render/webgl/PlanarGrid.js.map +1 -1
  465. package/lib/esm/internal/render/webgl/PlanarTextureProjection.d.ts +0 -3
  466. package/lib/esm/internal/render/webgl/PlanarTextureProjection.d.ts.map +1 -1
  467. package/lib/esm/internal/render/webgl/PlanarTextureProjection.js +6 -5
  468. package/lib/esm/internal/render/webgl/PlanarTextureProjection.js.map +1 -1
  469. package/lib/esm/internal/render/webgl/PointCloud.js +2 -2
  470. package/lib/esm/internal/render/webgl/PointCloud.js.map +1 -1
  471. package/lib/esm/internal/render/webgl/RealityMesh.js +2 -2
  472. package/lib/esm/internal/render/webgl/RealityMesh.js.map +1 -1
  473. package/lib/esm/internal/render/webgl/RenderBuffer.js +3 -3
  474. package/lib/esm/internal/render/webgl/RenderBuffer.js.map +1 -1
  475. package/lib/esm/internal/render/webgl/SceneCompositor.d.ts.map +1 -1
  476. package/lib/esm/internal/render/webgl/SceneCompositor.js +116 -86
  477. package/lib/esm/internal/render/webgl/SceneCompositor.js.map +1 -1
  478. package/lib/esm/internal/render/webgl/ScratchDrawParams.d.ts.map +1 -1
  479. package/lib/esm/internal/render/webgl/ScratchDrawParams.js +11 -10
  480. package/lib/esm/internal/render/webgl/ScratchDrawParams.js.map +1 -1
  481. package/lib/esm/internal/render/webgl/ScreenSpaceEffect.js +4 -4
  482. package/lib/esm/internal/render/webgl/ScreenSpaceEffect.js.map +1 -1
  483. package/lib/esm/internal/render/webgl/ShaderProgram.js +4 -4
  484. package/lib/esm/internal/render/webgl/ShaderProgram.js.map +1 -1
  485. package/lib/esm/internal/render/webgl/ShadowUniforms.d.ts.map +1 -1
  486. package/lib/esm/internal/render/webgl/ShadowUniforms.js +2 -1
  487. package/lib/esm/internal/render/webgl/ShadowUniforms.js.map +1 -1
  488. package/lib/esm/internal/render/webgl/SolarShadowMap.d.ts.map +1 -1
  489. package/lib/esm/internal/render/webgl/SolarShadowMap.js +7 -5
  490. package/lib/esm/internal/render/webgl/SolarShadowMap.js.map +1 -1
  491. package/lib/esm/internal/render/webgl/System.d.ts.map +1 -1
  492. package/lib/esm/internal/render/webgl/System.js +2 -2
  493. package/lib/esm/internal/render/webgl/System.js.map +1 -1
  494. package/lib/esm/internal/render/webgl/Target.d.ts.map +1 -1
  495. package/lib/esm/internal/render/webgl/Target.js +11 -8
  496. package/lib/esm/internal/render/webgl/Target.js.map +1 -1
  497. package/lib/esm/internal/render/webgl/Texture.d.ts.map +1 -1
  498. package/lib/esm/internal/render/webgl/Texture.js +11 -9
  499. package/lib/esm/internal/render/webgl/Texture.js.map +1 -1
  500. package/lib/esm/internal/render/webgl/glsl/Animation.d.ts.map +1 -1
  501. package/lib/esm/internal/render/webgl/glsl/Animation.js +5 -3
  502. package/lib/esm/internal/render/webgl/glsl/Animation.js.map +1 -1
  503. package/lib/esm/internal/render/webgl/glsl/Color.d.ts.map +1 -1
  504. package/lib/esm/internal/render/webgl/glsl/Color.js +2 -1
  505. package/lib/esm/internal/render/webgl/glsl/Color.js.map +1 -1
  506. package/lib/esm/internal/render/webgl/glsl/Composite.js +2 -2
  507. package/lib/esm/internal/render/webgl/glsl/Composite.js.map +1 -1
  508. package/lib/esm/internal/render/webgl/glsl/CopyStencil.d.ts.map +1 -1
  509. package/lib/esm/internal/render/webgl/glsl/CopyStencil.js +3 -2
  510. package/lib/esm/internal/render/webgl/glsl/CopyStencil.js.map +1 -1
  511. package/lib/esm/internal/render/webgl/glsl/PlanarClassification.js +4 -4
  512. package/lib/esm/internal/render/webgl/glsl/PlanarClassification.js.map +1 -1
  513. package/lib/esm/internal/render/webgl/glsl/PlanarGrid.d.ts.map +1 -1
  514. package/lib/esm/internal/render/webgl/glsl/PlanarGrid.js +4 -3
  515. package/lib/esm/internal/render/webgl/glsl/PlanarGrid.js.map +1 -1
  516. package/lib/esm/internal/render/webgl/glsl/RealityMesh.js +9 -9
  517. package/lib/esm/internal/render/webgl/glsl/RealityMesh.js.map +1 -1
  518. package/lib/esm/internal/render/webgl/glsl/Surface.js +11 -11
  519. package/lib/esm/internal/render/webgl/glsl/Surface.js.map +1 -1
  520. package/lib/esm/internal/render/webgl/glsl/Vertex.js +3 -3
  521. package/lib/esm/internal/render/webgl/glsl/Vertex.js.map +1 -1
  522. package/lib/esm/internal/tile/B3dmReader.d.ts.map +1 -1
  523. package/lib/esm/internal/tile/B3dmReader.js +2 -2
  524. package/lib/esm/internal/tile/B3dmReader.js.map +1 -1
  525. package/lib/esm/internal/tile/FetchCloudStorage.js +1 -1
  526. package/lib/esm/internal/tile/FetchCloudStorage.js.map +1 -1
  527. package/lib/esm/internal/tile/LRUTileList.d.ts.map +1 -1
  528. package/lib/esm/internal/tile/LRUTileList.js +4 -0
  529. package/lib/esm/internal/tile/LRUTileList.js.map +1 -1
  530. package/lib/esm/internal/tile/LayerTileTreeReferenceHandler.d.ts.map +1 -1
  531. package/lib/esm/internal/tile/LayerTileTreeReferenceHandler.js +2 -1
  532. package/lib/esm/internal/tile/LayerTileTreeReferenceHandler.js.map +1 -1
  533. package/lib/esm/internal/tile/OPCFormatInterpreter.js +5 -5
  534. package/lib/esm/internal/tile/OPCFormatInterpreter.js.map +1 -1
  535. package/lib/esm/internal/tile/OrbitGtTileTree.d.ts.map +1 -1
  536. package/lib/esm/internal/tile/OrbitGtTileTree.js +3 -3
  537. package/lib/esm/internal/tile/OrbitGtTileTree.js.map +1 -1
  538. package/lib/esm/internal/tile/RealityModelTileTree.d.ts.map +1 -1
  539. package/lib/esm/internal/tile/RealityModelTileTree.js +4 -4
  540. package/lib/esm/internal/tile/RealityModelTileTree.js.map +1 -1
  541. package/lib/esm/internal/tile/RealityTileLoader.d.ts.map +1 -1
  542. package/lib/esm/internal/tile/RealityTileLoader.js +3 -0
  543. package/lib/esm/internal/tile/RealityTileLoader.js.map +1 -1
  544. package/lib/esm/internal/tile/ThreeDTileFormatInterpreter.js +4 -4
  545. package/lib/esm/internal/tile/ThreeDTileFormatInterpreter.js.map +1 -1
  546. package/lib/esm/internal/tile/TileUserSet.d.ts.map +1 -1
  547. package/lib/esm/internal/tile/TileUserSet.js +4 -0
  548. package/lib/esm/internal/tile/TileUserSet.js.map +1 -1
  549. package/lib/esm/internal/tile/map/ArcGISTileMap.js +1 -1
  550. package/lib/esm/internal/tile/map/ArcGISTileMap.js.map +1 -1
  551. package/lib/esm/internal/tile/map/ArcGisUtilities.d.ts.map +1 -1
  552. package/lib/esm/internal/tile/map/ArcGisUtilities.js +4 -0
  553. package/lib/esm/internal/tile/map/ArcGisUtilities.js.map +1 -1
  554. package/lib/esm/internal/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.d.ts.map +1 -1
  555. package/lib/esm/internal/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js +3 -1
  556. package/lib/esm/internal/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js.map +1 -1
  557. package/lib/esm/internal/tile/map/ImageryProviders/BingImageryProvider.js +3 -3
  558. package/lib/esm/internal/tile/map/ImageryProviders/BingImageryProvider.js.map +1 -1
  559. package/lib/esm/internal/tile/map/ImageryProviders/WmsMapLayerImageryProvider.js +2 -2
  560. package/lib/esm/internal/tile/map/ImageryProviders/WmsMapLayerImageryProvider.js.map +1 -1
  561. package/lib/esm/internal/tile/map/MapTileAvailability.d.ts.map +1 -1
  562. package/lib/esm/internal/tile/map/MapTileAvailability.js +6 -3
  563. package/lib/esm/internal/tile/map/MapTileAvailability.js.map +1 -1
  564. package/lib/esm/internal/tile/map/WmtsCapabilities.d.ts.map +1 -1
  565. package/lib/esm/internal/tile/map/WmtsCapabilities.js +3 -2
  566. package/lib/esm/internal/tile/map/WmtsCapabilities.js.map +1 -1
  567. package/lib/esm/properties/FormattedQuantityDescription.d.ts.map +1 -1
  568. package/lib/esm/properties/FormattedQuantityDescription.js +2 -0
  569. package/lib/esm/properties/FormattedQuantityDescription.js.map +1 -1
  570. package/lib/esm/quantity-formatting/BaseUnitFormattingSettingsProvider.d.ts.map +1 -1
  571. package/lib/esm/quantity-formatting/BaseUnitFormattingSettingsProvider.js +2 -0
  572. package/lib/esm/quantity-formatting/BaseUnitFormattingSettingsProvider.js.map +1 -1
  573. package/lib/esm/quantity-formatting/QuantityFormatter.d.ts.map +1 -1
  574. package/lib/esm/quantity-formatting/QuantityFormatter.js +5 -3
  575. package/lib/esm/quantity-formatting/QuantityFormatter.js.map +1 -1
  576. package/lib/esm/tile/GltfReader.d.ts +5 -2
  577. package/lib/esm/tile/GltfReader.d.ts.map +1 -1
  578. package/lib/esm/tile/GltfReader.js +55 -17
  579. package/lib/esm/tile/GltfReader.js.map +1 -1
  580. package/lib/esm/tile/RealityTile.d.ts.map +1 -1
  581. package/lib/esm/tile/RealityTile.js +3 -3
  582. package/lib/esm/tile/RealityTile.js.map +1 -1
  583. package/lib/esm/tile/RealityTileTree.d.ts.map +1 -1
  584. package/lib/esm/tile/RealityTileTree.js +6 -6
  585. package/lib/esm/tile/RealityTileTree.js.map +1 -1
  586. package/lib/esm/tile/TileAdmin.js.map +1 -1
  587. package/lib/esm/tile/TileDrawArgs.d.ts.map +1 -1
  588. package/lib/esm/tile/TileDrawArgs.js +2 -1
  589. package/lib/esm/tile/TileDrawArgs.js.map +1 -1
  590. package/lib/esm/tile/map/ImageryTileTree.js +2 -2
  591. package/lib/esm/tile/map/ImageryTileTree.js.map +1 -1
  592. package/lib/esm/tile/map/MapLayerFormatRegistry.js +2 -2
  593. package/lib/esm/tile/map/MapLayerFormatRegistry.js.map +1 -1
  594. package/lib/esm/tile/map/MapLayerSources.d.ts.map +1 -1
  595. package/lib/esm/tile/map/MapLayerSources.js +10 -2
  596. package/lib/esm/tile/map/MapLayerSources.js.map +1 -1
  597. package/lib/esm/tile/map/MapTile.d.ts.map +1 -1
  598. package/lib/esm/tile/map/MapTile.js +11 -9
  599. package/lib/esm/tile/map/MapTile.js.map +1 -1
  600. package/lib/esm/tile/map/MapTileTree.d.ts.map +1 -1
  601. package/lib/esm/tile/map/MapTileTree.js +9 -8
  602. package/lib/esm/tile/map/MapTileTree.js.map +1 -1
  603. package/lib/esm/tile/map/MapTilingScheme.d.ts.map +1 -1
  604. package/lib/esm/tile/map/MapTilingScheme.js +2 -1
  605. package/lib/esm/tile/map/MapTilingScheme.js.map +1 -1
  606. package/lib/esm/tools/Tool.js +2 -2
  607. package/lib/esm/tools/Tool.js.map +1 -1
  608. package/lib/public/scripts/parse-imdl-worker.js +1 -1
  609. package/lib/workers/webpack/parse-imdl-worker.js +1 -1
  610. package/package.json +20 -20
@@ -1 +1 @@
1
- {"version":3,"file":"B3dmReader.js","sourceRoot":"","sources":["../../../../src/internal/tile/B3dmReader.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Tiles\n */\n\nimport { ByteStream, Id64String, JsonUtils } from \"@itwin/core-bentley\";\nimport { Point3d, Transform, Vector3d } from \"@itwin/core-geometry\";\nimport { B3dmHeader, ColorDef, ElementAlignedBox3d, Feature, FeatureTable, TileReadStatus } from \"@itwin/core-common\";\nimport { IModelConnection } from \"../../IModelConnection\";\nimport { Mesh } from \"../../common/internal/render/MeshPrimitives\";\nimport { RenderSystem } from \"../../render/RenderSystem\";\nimport { GltfDataType, GltfMeshPrimitive } from \"../../common/gltf/GltfSchema\";\nimport {\n BatchedTileIdMap, GltfBufferData, GltfReader, GltfReaderProps, GltfReaderResult, ShouldAbortReadGltf,\n} from \"../../tile/internal\";\nimport { LayerTileData } from \"../render/webgl/MapLayerParams\";\n\n\n/**\n * Deserializes a tile in [b3dm](https://github.com/AnalyticalGraphicsInc/3d-tiles/tree/master/specification/TileFormats/Batched3DModel) format.\n */\nexport class B3dmReader extends GltfReader {\n private _batchIdRemap = new Map<number, number>();\n private _colors?: Array<number>;\n private readonly _modelId: Id64String;\n\n public static create(stream: ByteStream, iModel: IModelConnection, modelId: Id64String, is3d: boolean, range: ElementAlignedBox3d,\n system: RenderSystem, yAxisUp: boolean, isLeaf: boolean, tileCenter: Point3d, transformToRoot?: Transform,\n isCanceled?: ShouldAbortReadGltf, idMap?: BatchedTileIdMap, deduplicateVertices=false, tileData?: LayerTileData): B3dmReader | undefined {\n const header = new B3dmHeader(stream);\n if (!header.isValid)\n return undefined;\n\n let returnToCenterTransform, pseudoRtcBias;\n if (header.featureTableJson && Array.isArray(header.featureTableJson.RTC_CENTER)) {\n returnToCenterTransform = Transform.createTranslationXYZ(header.featureTableJson.RTC_CENTER[0], header.featureTableJson.RTC_CENTER[1], header.featureTableJson.RTC_CENTER[2]);\n } else {\n /**\n * This is a workaround for tiles generated by\n * context capture which have a large offset from the tileset origin that exceeds the\n * capacity of 32 bit integers. It is essentially an ad hoc RTC applied at read time only if the tile is far from the\n * origin and there is no RTC supplied either with the B3DM of the GLTF.\n * as the vertices are supplied in a quantized format, applying the RTC bias to\n * quantization origin will make these tiles work correctly.\n */\n pseudoRtcBias = Vector3d.create(tileCenter.x, tileCenter.y, tileCenter.z);\n }\n\n if (undefined !== returnToCenterTransform)\n transformToRoot = transformToRoot ? transformToRoot.multiplyTransformTransform(returnToCenterTransform) : returnToCenterTransform;\n\n const props = GltfReaderProps.create(stream.nextBytes(header.length - stream.curPos), yAxisUp);\n const batchTableLength = header.featureTableJson ? JsonUtils.asInt(header.featureTableJson.BATCH_LENGTH, 0) : 0;\n\n return undefined !== props ? new B3dmReader(props, iModel, modelId, is3d, system, range, isLeaf, batchTableLength,\n transformToRoot, header.batchTableJson, isCanceled, idMap, pseudoRtcBias, deduplicateVertices, tileData) : undefined;\n }\n\n private constructor(props: GltfReaderProps, iModel: IModelConnection, modelId: Id64String, is3d: boolean, system: RenderSystem,\n private _range: ElementAlignedBox3d, private _isLeaf: boolean, private _batchTableLength: number, private _transformToRoot?: Transform, private _batchTableJson?: any\n , shouldAbort?: ShouldAbortReadGltf, _idMap?: BatchedTileIdMap, private _pseudoRtcBias?: Vector3d, deduplicateVertices=false, tileData?: LayerTileData) {\n super({\n props, iModel, system, shouldAbort, deduplicateVertices,\n is2d: !is3d, idMap: _idMap, tileData\n });\n this._modelId = modelId;\n }\n\n public async read(): Promise<GltfReaderResult> {\n // NB: For reality models with no batch table, we want the model ID in the feature table\n const featureTable: FeatureTable = new FeatureTable(this._batchTableLength ? this._batchTableLength : 1, this._modelId, this._type);\n if (this._batchTableLength > 0 && this._idMap !== undefined && this._batchTableJson !== undefined) {\n if (this._batchTableJson.extensions && this._batchTableJson.extensions[\"3DTILES_batch_table_hierarchy\"]) {\n const hierarchy = this._batchTableJson.extensions[\"3DTILES_batch_table_hierarchy\"];\n const { classIds, classes, parentIds, parentCounts, instancesLength } = hierarchy;\n if (classes !== undefined && classIds !== undefined && instancesLength !== 0) {\n const classCounts = new Array<number>(classes.length);\n classCounts.fill(0);\n const classIndexes = new Uint16Array(instancesLength);\n for (let i = 0; i < instancesLength; ++i) {\n const classId = classIds[i];\n classIndexes[i] = classCounts[classId]++;\n }\n\n let parentMap: [][] | undefined;\n if (parentIds) {\n parentMap = new Array<[]>();\n for (let i = 0, parentIndex = 0; i < instancesLength; i++) {\n const parentCount = parentCounts === undefined ? 1 : parentCounts[i];\n parentMap[i] = parentIds.slice(parentIndex, parentIndex += parentCount);\n }\n }\n\n const getProperties = (instance: any, instanceIndex: number) => {\n const classId = classIds[instanceIndex];\n const instanceClass = classes[classId];\n const instances = instanceClass.instances;\n const indexInClass = classIndexes[instanceIndex];\n for (const key in instances) { // eslint-disable-line guard-for-in\n const value = instances[key][indexInClass];\n if (value !== undefined && value !== null)\n instance[key] = value;\n }\n if (parentIds !== undefined) {\n const thisParents = parentMap![instanceIndex];\n for (const parentId of thisParents) {\n if (parentId !== instanceIndex)\n getProperties(instance, parentId);\n }\n }\n };\n for (let batchId = 0; batchId < instancesLength; batchId++) {\n const instance: any = {};\n getProperties(instance, batchId);\n this._batchIdRemap.set(batchId, featureTable.insert(new Feature(this._idMap.getBatchId(instance))));\n const cesiumColor = instance[\"cesium#color\"];\n if (undefined !== cesiumColor) {\n if (!this._colors) {\n this._colors = new Array<number>(instancesLength);\n this._colors.fill(ColorDef.white.tbgr);\n }\n this._colors[batchId] = ColorDef.create(cesiumColor).tbgr;\n }\n }\n }\n } else {\n for (let i = 0; i < this._batchTableLength; i++) {\n const feature: any = {};\n for (const key in this._batchTableJson) // eslint-disable-line guard-for-in\n feature[key] = this._batchTableJson[key][i];\n\n this._batchIdRemap.set(i, featureTable.insert(new Feature(this._idMap.getBatchId(feature))));\n }\n }\n }\n\n if (featureTable.isEmpty) {\n this._batchIdRemap.set(0, 0);\n const feature = new Feature(this._modelId);\n featureTable.insert(feature);\n }\n\n await this.resolveResources();\n if (this._isCanceled)\n return { readStatus: TileReadStatus.Canceled, isLeaf: this._isLeaf };\n\n return this.readGltfAndCreateGraphics(this._isLeaf, featureTable, this._range, this._transformToRoot, this._pseudoRtcBias, undefined);\n }\n\n protected override readBatchTable(mesh: Mesh, json: GltfMeshPrimitive) {\n if (mesh.features !== undefined) {\n if (this._batchTableLength > 0 && undefined !== this._batchTableJson && undefined !== json.attributes) {\n const view = this.getBufferView(json.attributes, \"_BATCHID\");\n let batchIds: undefined | GltfBufferData;\n if (undefined !== view && (undefined !== (batchIds = view.toBufferData(GltfDataType.UInt32)) || undefined !== (batchIds = view.toBufferData(GltfDataType.Float)))) {\n const indices = [];\n const { colors, colorMap } = mesh;\n let colorRemap: Uint32Array | undefined;\n if (this._colors && this._colors.length === this._batchTableLength) {\n colorRemap = new Uint32Array(this._batchTableLength);\n\n for (let i = 0; i < this._batchTableLength; i++)\n colorRemap[i] = colorMap.insert(this._colors[i]);\n }\n\n for (let i = 0; i < batchIds.count; i++) {\n const batchId = batchIds.buffer[i * view.stride];\n const remapId = this._batchIdRemap.get(batchId);\n indices.push(remapId === undefined ? 0 : remapId);\n if (colorRemap)\n colors.push(colorRemap[batchId]);\n }\n mesh.features.setIndices(indices);\n\n }\n } else {\n mesh.features.add(new Feature(this._modelId), 1);\n }\n }\n }\n}\n"]}
1
+ {"version":3,"file":"B3dmReader.js","sourceRoot":"","sources":["../../../../src/internal/tile/B3dmReader.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Tiles\n */\n\nimport { ByteStream, expectDefined, Id64String, JsonUtils } from \"@itwin/core-bentley\";\nimport { Point3d, Transform, Vector3d } from \"@itwin/core-geometry\";\nimport { B3dmHeader, ColorDef, ElementAlignedBox3d, Feature, FeatureTable, TileReadStatus } from \"@itwin/core-common\";\nimport { IModelConnection } from \"../../IModelConnection\";\nimport { Mesh } from \"../../common/internal/render/MeshPrimitives\";\nimport { RenderSystem } from \"../../render/RenderSystem\";\nimport { GltfDataType, GltfMeshPrimitive } from \"../../common/gltf/GltfSchema\";\nimport {\n BatchedTileIdMap, GltfBufferData, GltfReader, GltfReaderProps, GltfReaderResult, ShouldAbortReadGltf,\n} from \"../../tile/internal\";\nimport { LayerTileData } from \"../render/webgl/MapLayerParams\";\n\n\n/**\n * Deserializes a tile in [b3dm](https://github.com/AnalyticalGraphicsInc/3d-tiles/tree/master/specification/TileFormats/Batched3DModel) format.\n */\nexport class B3dmReader extends GltfReader {\n private _batchIdRemap = new Map<number, number>();\n private _colors?: Array<number>;\n private readonly _modelId: Id64String;\n\n public static create(stream: ByteStream, iModel: IModelConnection, modelId: Id64String, is3d: boolean, range: ElementAlignedBox3d,\n system: RenderSystem, yAxisUp: boolean, isLeaf: boolean, tileCenter: Point3d, transformToRoot?: Transform,\n isCanceled?: ShouldAbortReadGltf, idMap?: BatchedTileIdMap, deduplicateVertices=false, tileData?: LayerTileData): B3dmReader | undefined {\n const header = new B3dmHeader(stream);\n if (!header.isValid)\n return undefined;\n\n let returnToCenterTransform, pseudoRtcBias;\n if (header.featureTableJson && Array.isArray(header.featureTableJson.RTC_CENTER)) {\n returnToCenterTransform = Transform.createTranslationXYZ(header.featureTableJson.RTC_CENTER[0], header.featureTableJson.RTC_CENTER[1], header.featureTableJson.RTC_CENTER[2]);\n } else {\n /**\n * This is a workaround for tiles generated by\n * context capture which have a large offset from the tileset origin that exceeds the\n * capacity of 32 bit integers. It is essentially an ad hoc RTC applied at read time only if the tile is far from the\n * origin and there is no RTC supplied either with the B3DM of the GLTF.\n * as the vertices are supplied in a quantized format, applying the RTC bias to\n * quantization origin will make these tiles work correctly.\n */\n pseudoRtcBias = Vector3d.create(tileCenter.x, tileCenter.y, tileCenter.z);\n }\n\n if (undefined !== returnToCenterTransform)\n transformToRoot = transformToRoot ? transformToRoot.multiplyTransformTransform(returnToCenterTransform) : returnToCenterTransform;\n\n const props = GltfReaderProps.create(stream.nextBytes(header.length - stream.curPos), yAxisUp);\n const batchTableLength = header.featureTableJson ? JsonUtils.asInt(header.featureTableJson.BATCH_LENGTH, 0) : 0;\n\n return undefined !== props ? new B3dmReader(props, iModel, modelId, is3d, system, range, isLeaf, batchTableLength,\n transformToRoot, header.batchTableJson, isCanceled, idMap, pseudoRtcBias, deduplicateVertices, tileData) : undefined;\n }\n\n private constructor(props: GltfReaderProps, iModel: IModelConnection, modelId: Id64String, is3d: boolean, system: RenderSystem,\n private _range: ElementAlignedBox3d, private _isLeaf: boolean, private _batchTableLength: number, private _transformToRoot?: Transform, private _batchTableJson?: any\n , shouldAbort?: ShouldAbortReadGltf, _idMap?: BatchedTileIdMap, private _pseudoRtcBias?: Vector3d, deduplicateVertices=false, tileData?: LayerTileData) {\n super({\n props, iModel, system, shouldAbort, deduplicateVertices,\n is2d: !is3d, idMap: _idMap, tileData\n });\n this._modelId = modelId;\n }\n\n public async read(): Promise<GltfReaderResult> {\n // NB: For reality models with no batch table, we want the model ID in the feature table\n const featureTable: FeatureTable = new FeatureTable(this._batchTableLength ? this._batchTableLength : 1, this._modelId, this._type);\n if (this._batchTableLength > 0 && this._idMap !== undefined && this._batchTableJson !== undefined) {\n if (this._batchTableJson.extensions && this._batchTableJson.extensions[\"3DTILES_batch_table_hierarchy\"]) {\n const hierarchy = this._batchTableJson.extensions[\"3DTILES_batch_table_hierarchy\"];\n const { classIds, classes, parentIds, parentCounts, instancesLength } = hierarchy;\n if (classes !== undefined && classIds !== undefined && instancesLength !== 0) {\n const classCounts = new Array<number>(classes.length);\n classCounts.fill(0);\n const classIndexes = new Uint16Array(instancesLength);\n for (let i = 0; i < instancesLength; ++i) {\n const classId = classIds[i];\n classIndexes[i] = classCounts[classId]++;\n }\n\n let parentMap: [][] | undefined;\n if (parentIds) {\n parentMap = new Array<[]>();\n for (let i = 0, parentIndex = 0; i < instancesLength; i++) {\n const parentCount = parentCounts === undefined ? 1 : parentCounts[i];\n parentMap[i] = parentIds.slice(parentIndex, parentIndex += parentCount);\n }\n }\n\n const getProperties = (instance: any, instanceIndex: number) => {\n const classId = classIds[instanceIndex];\n const instanceClass = classes[classId];\n const instances = instanceClass.instances;\n const indexInClass = classIndexes[instanceIndex];\n for (const key in instances) { // eslint-disable-line guard-for-in\n const value = instances[key][indexInClass];\n if (value !== undefined && value !== null)\n instance[key] = value;\n }\n if (parentIds !== undefined) {\n const thisParents = expectDefined(parentMap)[instanceIndex];\n for (const parentId of thisParents) {\n if (parentId !== instanceIndex)\n getProperties(instance, parentId);\n }\n }\n };\n for (let batchId = 0; batchId < instancesLength; batchId++) {\n const instance: any = {};\n getProperties(instance, batchId);\n this._batchIdRemap.set(batchId, featureTable.insert(new Feature(this._idMap.getBatchId(instance))));\n const cesiumColor = instance[\"cesium#color\"];\n if (undefined !== cesiumColor) {\n if (!this._colors) {\n this._colors = new Array<number>(instancesLength);\n this._colors.fill(ColorDef.white.tbgr);\n }\n this._colors[batchId] = ColorDef.create(cesiumColor).tbgr;\n }\n }\n }\n } else {\n for (let i = 0; i < this._batchTableLength; i++) {\n const feature: any = {};\n for (const key in this._batchTableJson) // eslint-disable-line guard-for-in\n feature[key] = this._batchTableJson[key][i];\n\n this._batchIdRemap.set(i, featureTable.insert(new Feature(this._idMap.getBatchId(feature))));\n }\n }\n }\n\n if (featureTable.isEmpty) {\n this._batchIdRemap.set(0, 0);\n const feature = new Feature(this._modelId);\n featureTable.insert(feature);\n }\n\n await this.resolveResources();\n if (this._isCanceled)\n return { readStatus: TileReadStatus.Canceled, isLeaf: this._isLeaf };\n\n return this.readGltfAndCreateGraphics(this._isLeaf, featureTable, this._range, this._transformToRoot, this._pseudoRtcBias, undefined);\n }\n\n protected override readBatchTable(mesh: Mesh, json: GltfMeshPrimitive) {\n if (mesh.features !== undefined) {\n if (this._batchTableLength > 0 && undefined !== this._batchTableJson && undefined !== json.attributes) {\n const view = this.getBufferView(json.attributes, \"_BATCHID\");\n let batchIds: undefined | GltfBufferData;\n if (undefined !== view && (undefined !== (batchIds = view.toBufferData(GltfDataType.UInt32)) || undefined !== (batchIds = view.toBufferData(GltfDataType.Float)))) {\n const indices = [];\n const { colors, colorMap } = mesh;\n let colorRemap: Uint32Array | undefined;\n if (this._colors && this._colors.length === this._batchTableLength) {\n colorRemap = new Uint32Array(this._batchTableLength);\n\n for (let i = 0; i < this._batchTableLength; i++)\n colorRemap[i] = colorMap.insert(this._colors[i]);\n }\n\n for (let i = 0; i < batchIds.count; i++) {\n const batchId = batchIds.buffer[i * view.stride];\n const remapId = this._batchIdRemap.get(batchId);\n indices.push(remapId === undefined ? 0 : remapId);\n if (colorRemap)\n colors.push(colorRemap[batchId]);\n }\n mesh.features.setIndices(indices);\n\n }\n } else {\n mesh.features.add(new Feature(this._modelId), 1);\n }\n }\n }\n}\n"]}
@@ -10,7 +10,7 @@ class FetchCloudStorage {
10
10
  }
11
11
  if (!("authentication" in input.transferConfig))
12
12
  throw new Error("authentication missing in transferConfig");
13
- const url = `${input.transferConfig.baseUrl}/${this.buildObjectKey(input.reference)}?${input.transferConfig.authentication}`;
13
+ const url = `${input.transferConfig.baseUrl}/${this.buildObjectKey(input.reference)}?${String(input.transferConfig.authentication)}`;
14
14
  const resp = await fetch(url);
15
15
  if (!resp.ok)
16
16
  throw new Error(resp.statusText);
@@ -1 +1 @@
1
- {"version":3,"file":"FetchCloudStorage.js","sourceRoot":"","sources":["../../../../src/internal/tile/FetchCloudStorage.ts"],"names":[],"mappings":";;;AAMA,MAAa,iBAAiB;IAGrB,KAAK,CAAC,QAAQ,CAAC,KAA6D;QACjF,IAAI,KAAK,CAAC,YAAY,KAAK,QAAQ;YACjC,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;QAC7C,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;YAC3B,OAAO,CAAC,MAAM,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;QAChD,CAAC;QACD,IAAI,CAAC,CAAC,gBAAgB,IAAI,KAAK,CAAC,cAAc,CAAC;YAC7C,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;QAC9D,MAAM,GAAG,GAAG,GAAG,KAAK,CAAC,cAAc,CAAC,OAAO,IAAI,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,KAAK,CAAC,cAAc,CAAC,cAAc,EAAE,CAAC;QAC7H,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC;QAC9B,IAAI,CAAC,IAAI,CAAC,EAAE;YACV,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACnC,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC;IAC5B,CAAC;IACO,cAAc,CAAC,GAAoB;QACzC,MAAM,QAAQ,GAAG,GAAG,CAAC,iBAAiB,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC1E,OAAO,GAAG,GAAG,CAAC,aAAa,GAAG,QAAQ,IAAI,GAAG,CAAC,UAAU,EAAE,CAAC;IAC7D,CAAC;IACO,UAAU,CAAC,KAA6D;QAC9E,OAAO,KAAK,IAAK,KAAkC,CAAC;IACtD,CAAC;IACM,KAAK,CAAC,MAAM,CAAC,MAA0D;QAC5E,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAC7C,CAAC;IACM,KAAK,CAAC,qBAAqB,CAAC,MAA0C;QAC3E,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAC7C,CAAC;CACF;AA9BD,8CA8BC","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\nimport type { FrontendConfigDownloadInput, FrontendConfigUploadInput, FrontendStorage, FrontendUploadInMultiplePartsInput, FrontendUrlDownloadInput, FrontendUrlUploadInput, ObjectReference } from \"@itwin/object-storage-core/lib/frontend\";\n\nexport class FetchCloudStorage implements FrontendStorage {\n public download(input: (FrontendUrlDownloadInput | FrontendConfigDownloadInput) & { transferType: \"buffer\" }): Promise<ArrayBuffer>;\n public download(input: (FrontendUrlDownloadInput | FrontendConfigDownloadInput) & { transferType: \"stream\" }): Promise<ReadableStream<any>>;\n public async download(input: FrontendUrlDownloadInput | FrontendConfigDownloadInput): Promise<ArrayBuffer | ReadableStream<any>> {\n if (input.transferType === \"stream\")\n throw new Error(\"Method not implemented.\");\n if (this.isUrlInput(input)) {\n return (await fetch(input.url)).arrayBuffer();\n }\n if (!(\"authentication\" in input.transferConfig))\n throw new Error(\"authentication missing in transferConfig\");\n const url = `${input.transferConfig.baseUrl}/${this.buildObjectKey(input.reference)}?${input.transferConfig.authentication}`;\n const resp = await fetch(url);\n if (!resp.ok)\n throw new Error(resp.statusText);\n return resp.arrayBuffer();\n }\n private buildObjectKey(ref: ObjectReference): string {\n const relative = ref.relativeDirectory ? `/${ref.relativeDirectory}` : \"\";\n return `${ref.baseDirectory}${relative}/${ref.objectName}`;\n }\n private isUrlInput(input: FrontendUrlDownloadInput | FrontendConfigDownloadInput): input is FrontendUrlDownloadInput {\n return \"url\" in (input as FrontendUrlDownloadInput);\n }\n public async upload(_input: FrontendUrlUploadInput | FrontendConfigUploadInput): Promise<void> {\n throw new Error(\"Method not implemented.\");\n }\n public async uploadInMultipleParts(_input: FrontendUploadInMultiplePartsInput): Promise<void> {\n throw new Error(\"Method not implemented.\");\n }\n}\n"]}
1
+ {"version":3,"file":"FetchCloudStorage.js","sourceRoot":"","sources":["../../../../src/internal/tile/FetchCloudStorage.ts"],"names":[],"mappings":";;;AAMA,MAAa,iBAAiB;IAGrB,KAAK,CAAC,QAAQ,CAAC,KAA6D;QACjF,IAAI,KAAK,CAAC,YAAY,KAAK,QAAQ;YACjC,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;QAC7C,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;YAC3B,OAAO,CAAC,MAAM,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;QAChD,CAAC;QACD,IAAI,CAAC,CAAC,gBAAgB,IAAI,KAAK,CAAC,cAAc,CAAC;YAC7C,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;QAC9D,MAAM,GAAG,GAAG,GAAG,KAAK,CAAC,cAAc,CAAC,OAAO,IAAI,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC,EAAE,CAAC;QACrI,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC;QAC9B,IAAI,CAAC,IAAI,CAAC,EAAE;YACV,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACnC,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC;IAC5B,CAAC;IACO,cAAc,CAAC,GAAoB;QACzC,MAAM,QAAQ,GAAG,GAAG,CAAC,iBAAiB,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC1E,OAAO,GAAG,GAAG,CAAC,aAAa,GAAG,QAAQ,IAAI,GAAG,CAAC,UAAU,EAAE,CAAC;IAC7D,CAAC;IACO,UAAU,CAAC,KAA6D;QAC9E,OAAO,KAAK,IAAK,KAAkC,CAAC;IACtD,CAAC;IACM,KAAK,CAAC,MAAM,CAAC,MAA0D;QAC5E,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAC7C,CAAC;IACM,KAAK,CAAC,qBAAqB,CAAC,MAA0C;QAC3E,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAC7C,CAAC;CACF;AA9BD,8CA8BC","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\nimport type { FrontendConfigDownloadInput, FrontendConfigUploadInput, FrontendStorage, FrontendUploadInMultiplePartsInput, FrontendUrlDownloadInput, FrontendUrlUploadInput, ObjectReference } from \"@itwin/object-storage-core/lib/frontend\";\n\nexport class FetchCloudStorage implements FrontendStorage {\n public download(input: (FrontendUrlDownloadInput | FrontendConfigDownloadInput) & { transferType: \"buffer\" }): Promise<ArrayBuffer>;\n public download(input: (FrontendUrlDownloadInput | FrontendConfigDownloadInput) & { transferType: \"stream\" }): Promise<ReadableStream<any>>;\n public async download(input: FrontendUrlDownloadInput | FrontendConfigDownloadInput): Promise<ArrayBuffer | ReadableStream<any>> {\n if (input.transferType === \"stream\")\n throw new Error(\"Method not implemented.\");\n if (this.isUrlInput(input)) {\n return (await fetch(input.url)).arrayBuffer();\n }\n if (!(\"authentication\" in input.transferConfig))\n throw new Error(\"authentication missing in transferConfig\");\n const url = `${input.transferConfig.baseUrl}/${this.buildObjectKey(input.reference)}?${String(input.transferConfig.authentication)}`;\n const resp = await fetch(url);\n if (!resp.ok)\n throw new Error(resp.statusText);\n return resp.arrayBuffer();\n }\n private buildObjectKey(ref: ObjectReference): string {\n const relative = ref.relativeDirectory ? `/${ref.relativeDirectory}` : \"\";\n return `${ref.baseDirectory}${relative}/${ref.objectName}`;\n }\n private isUrlInput(input: FrontendUrlDownloadInput | FrontendConfigDownloadInput): input is FrontendUrlDownloadInput {\n return \"url\" in (input as FrontendUrlDownloadInput);\n }\n public async upload(_input: FrontendUrlUploadInput | FrontendConfigUploadInput): Promise<void> {\n throw new Error(\"Method not implemented.\");\n }\n public async uploadInMultipleParts(_input: FrontendUploadInMultiplePartsInput): Promise<void> {\n throw new Error(\"Method not implemented.\");\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"LRUTileList.d.ts","sourceRoot":"","sources":["../../../../src/internal/tile/LRUTileList.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"LRUTileList.d.ts","sourceRoot":"","sources":["../../../../src/internal/tile/LRUTileList.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,EAAU,mBAAmB,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAC/E,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAC;AAE3C;;;GAGG;AACH,qBAAa,aAAc,SAAQ,mBAAmB,CAAC,MAAM,CAAC;gBACzC,MAAM,CAAC,EAAE,MAAM;IAM3B,MAAM,CAAC,GAAG,EAAE,aAAa,GAAG,OAAO;IAWnC,GAAG,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAIzB,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAI1B,KAAK,IAAI,IAAI;IAIb,QAAQ,CAAC,GAAG,EAAE,aAAa,GAAG,IAAI;IAOlC,KAAK,IAAI,aAAa;CAK9B;AAED;;;GAGG;AACH,qBAAa,cAAe,SAAQ,WAAW,CAAC,aAAa,CAAC;IAC5D,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAuB;;IA2BhD,0FAA0F;IACnF,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAsBjC,gGAAgG;IACzF,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,aAAa,GAAG,aAAa;IAMnE,kKAAkK;IAC3J,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,aAAa,GAAG,aAAa,GAAG,SAAS;IAMhF,OAAO,CAAC,OAAO;IAUf,OAAO,CAAC,aAAa;CAWtB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,EAAE,eAAe,CAAC;IAC3B,IAAI,CAAC,EAAE,eAAe,CAAC;IACvB,+JAA+J;IAC/J,SAAS,EAAE,MAAM,CAAC;IAClB;;OAEG;IACH,WAAW,CAAC,EAAE,aAAa,GAAG,SAAS,CAAC;CACzC;AAeD;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,qBAAa,WAAW;IACtB,SAAS,CAAC,QAAQ,CAAC,SAAS,EAAE,eAAe,CAAC;IAC9C,SAAS,CAAC,QAAQ,CAAC,MAAM,0BAAiC;IAC1D,SAAS,CAAC,QAAQ,CAAC,WAAW,iBAAwB;IACtD,SAAS,CAAC,KAAK,EAAE,eAAe,CAAC;IACjC,SAAS,CAAC,KAAK,EAAE,eAAe,CAAC;IACjC,SAAS,CAAC,eAAe,SAAK;IAE9B,8EAA8E;IAC9E,IAAW,cAAc,IAAI,MAAM,CAElC;;IAMM,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,IAAI;IAgB/B;;OAEG;IACI,GAAG,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI;IAuB5B;;OAEG;IACI,IAAI,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI;IAgB7B,iHAAiH;IAC1G,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAC,GAAG,IAAI;IAc5D;;OAEG;IACI,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IActC;;OAEG;IACI,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAczC,iEAAiE;IACjE,IAAW,eAAe,IAAI,QAAQ,CAAC,IAAI,CAAC,CAK3C;IAED,+DAA+D;IAC/D,IAAW,aAAa,IAAI,QAAQ,CAAC,IAAI,CAAC,CAIzC;IAED,SAAS,CAAC,gBAAgB,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM;IAM9C,SAAS,CAAC,UAAU,IAAI,IAAI;IAK5B,SAAS,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI;IAUlC,SAAS,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI;IAiClC,SAAS,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI;IAKrC,SAAS,CAAC,kBAAkB,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI;IAY9C,SAAS,CAAC,iBAAiB,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI;CAW9C"}
@@ -64,7 +64,11 @@ class TileUserIdSets extends core_bentley_1.SortedArray {
64
64
  if (0 !== diff)
65
65
  return diff;
66
66
  for (let i = 0; i < lhs.length; i++) {
67
+ // Looping through i means lhs.get(i) will always be defined.
68
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
67
69
  const lhId = lhs.get(i);
70
+ // rhs.length is same as lhs.length, so rhs.get(i) will always be defined.
71
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
68
72
  const rhId = rhs.get(i);
69
73
  diff = lhId - rhId;
70
74
  if (0 !== diff)
@@ -1 +1 @@
1
- {"version":3,"file":"LRUTileList.js","sourceRoot":"","sources":["../../../../src/internal/tile/LRUTileList.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Tiles\n */\n\nimport { assert, ReadonlySortedArray, SortedArray } from \"@itwin/core-bentley\";\nimport { RenderMemory } from \"../../render/RenderMemory\";\nimport { Tile } from \"../../tile/internal\";\n\n/** Maintains in sorted order a set of [[TileUser]] Ids for which a given tile has been selected for display. The number of users in a set is expected to be very small - often only 1 for a typical application.\n * Strictly for use by LRUTileList.\n * @see TileUserIdSets.\n */\nexport class TileUserIdSet extends ReadonlySortedArray<number> {\n public constructor(userId?: number) {\n super((lhs, rhs) => lhs - rhs);\n if (undefined !== userId)\n this._array.push(userId);\n }\n\n public equals(set: TileUserIdSet): boolean {\n if (this.length !== set.length)\n return false;\n\n for (let i = 0; i < this.length; i++)\n if (this._array[i] !== set._array[i])\n return false;\n\n return true;\n }\n\n public add(userId: number): void {\n this._insert(userId);\n }\n\n public drop(userId: number): void {\n this._remove(userId);\n }\n\n public clear(): void {\n this._clear();\n }\n\n public copyFrom(src: TileUserIdSet): void {\n this._array.length = src.length;\n let i = 0;\n for (const userId of src)\n this._array[i++] = userId;\n }\n\n public clone(): TileUserIdSet {\n const clone = new TileUserIdSet();\n clone.copyFrom(this);\n return clone;\n }\n}\n\n/** Maintains a set of TileUserIdSets such that each set represents a unique combination of TileUser ids and each set contains at least one TileUser id.\n * Exported strictly for tests.\n * @see LRUTileList.\n */\nexport class TileUserIdSets extends SortedArray<TileUserIdSet> {\n private readonly _scratch = new TileUserIdSet();\n\n public constructor() {\n super((lhs, rhs) => {\n if (lhs === rhs)\n return 0;\n\n let diff = lhs.length - rhs.length;\n if (0 !== diff)\n return diff;\n\n for (let i = 0; i < lhs.length; i++) {\n const lhId = lhs.get(i)!;\n const rhId = rhs.get(i)!;\n diff = lhId - rhId;\n if (0 !== diff)\n return diff;\n }\n\n return 0;\n });\n }\n\n /** Remove the specified TileUser Id from all sets and remove empty and duplicate sets. */\n public drop(userId: number): void {\n // Remove from all sets, and delete empty sets.\n let i = 0;\n for (/* */; i < this._array.length; i++) {\n const set = this._array[i];\n set.drop(userId);\n if (set.length === 0)\n this._array.splice(i, 1);\n }\n\n // Collapse equivalent sets.\n i = 0;\n for (let j = 1; j < this._array.length; /* */) {\n if (this._array[i].equals(this._array[j])) {\n this._array.splice(i, 1);\n } else {\n i++;\n j++;\n }\n }\n }\n\n /** Obtain a TileUserIdSet owned by this object containing userId and (if specified) userIds. */\n public plus(userId: number, userIds?: TileUserIdSet): TileUserIdSet {\n const scratch = this.scratch(userIds);\n scratch.add(userId);\n return this.getEquivalent(scratch);\n }\n\n /** Obtain a TileUserIdSet owned by this object containing all of userIds (if specified) but not userId. Returns undefined if the resultant set would be empty. */\n public minus(userId: number, userIds?: TileUserIdSet): TileUserIdSet | undefined {\n const scratch = this.scratch(userIds);\n scratch.drop(userId);\n return scratch.length > 0 ? this.getEquivalent(scratch) : undefined;\n }\n\n private scratch(userIds?: TileUserIdSet): TileUserIdSet {\n const scratch = this._scratch;\n if (userIds)\n scratch.copyFrom(userIds);\n else\n scratch.clear();\n\n return scratch;\n }\n\n private getEquivalent(sought: TileUserIdSet): TileUserIdSet {\n assert(sought.length > 0);\n\n for (const set of this)\n if (set.equals(sought))\n return set;\n\n const newSet = sought.clone();\n this.insert(newSet);\n return newSet;\n }\n}\n\n/** A node in an LRUTileList. It is either a [[Tile]], or a sentinel node used to partition the list.\n * Strictly for use by LRUTileList.\n */\nexport interface LRUTileListNode {\n previous?: LRUTileListNode;\n next?: LRUTileListNode;\n /** The number of bytes of GPU memory allocated to the tile's content. The only node in a LRUTileListNode with `bytesUsed` less than 1 is the sentinel node. */\n bytesUsed: number;\n /** For a tile, the Ids of all of the TileUsers for which the tile is currently in use. The TileUserIdSet is owned by the LRUTileList's TileUserIdSets member.\n * Undefined if the tile is not in use by any TileUser.\n */\n tileUserIds?: TileUserIdSet | undefined;\n}\n\nfunction isLinked(node: LRUTileListNode): boolean {\n return undefined !== node.previous || undefined !== node.next;\n}\n\nfunction* lruListIterator(start: Tile | undefined, end: LRUTileListNode | undefined): Iterator<Tile> {\n let cur = start;\n while (cur && cur !== end) {\n const prev = cur;\n cur = cur.next as Tile | undefined;\n yield prev;\n }\n}\n\n/** An intrusive doubly-linked list of LRUTileListNodes, containing Tiles partitioned by a singleton sentinel node into two partitions and ordered from least-recently- to most-recently-used by any TileUser.\n * Used by TileAdmin to keep track of and impose limits upon the total amount of GPU memory allocated to tile content.\n *\n * Illustration of the structure of the list:\n *\n * ```\n * v------------- Not selected --------------v v----------------- Selected ------------------v\n * ______ ______ __________ ______ ______\n * | head |.next => | |.next => ... | sentinel |.next => ... | |.next => | tail |\n * | 12kb | | 8kb | | 0kb | | 19kb | | 23kb |\n * |______| <= previous.|______| ... <= previous.|__________| ... <= previous.|______| <= previous.|______|\n *\n * least-recently-selected --> --> --> --> --> --> --> --> --> --> --> --> --> --> --> --> --> --> --> most-recently-selected\n * ```\n *\n * The sentinel node is always present and floats freely as the contents of each partition change. Note that the `next` and `previous` pointers are stored directly on the tiles - no link nodes are allocated to hold the entries in the list. This of course means that a Tile can only ever belong to one LRUTileList - the one owned by the TileAdmin.\n *\n * The list contains only those tiles whose content has been loaded. Each node records the amount of GPU memory allocated for the tile's content. The list keeps track of the total amount of GPU memory allocated by all tiles. The list's contents are updated as follows:\n *\n * - When a tile's content is loaded, it is added to the end of the \"not selected\" partition. Its memory usage is computed and added to the list's total.\n * - When a tile's content is unloaded, it is removed from the list. Its memory usage is deducted from the list's totla.\n * - Just before a TileUser selects tiles for use (e.g., Viewport selects tiles for display), it is removed from each tile's set of viewports in which they are selected. If a tile's set of users becomes empty as a result, it is moved to the end of the \"not selected\" partition.\n * - When a tile becomes selected for use by a TileUser, the user is added to its user set and the tile is moved to the end of the \"selected\" partition.\n *\n * When the system determines that GPU memory should be freed up, it can simply pop nodes off the beginning of the \"not selected\" partition, freeing their content, until the target memory usage is reached or no more non-selected nodes exist.\n *\n * Strictly for use by [[TileAdmin]].\n */\nexport class LRUTileList {\n protected readonly _sentinel: LRUTileListNode;\n protected readonly _stats = new RenderMemory.Statistics();\n protected readonly _userIdSets = new TileUserIdSets();\n protected _head: LRUTileListNode;\n protected _tail: LRUTileListNode;\n protected _totalBytesUsed = 0;\n\n /** The amount of GPU memory, in bytes, allocated to all tiles in the list. */\n public get totalBytesUsed(): number {\n return this._totalBytesUsed;\n }\n\n public constructor() {\n this._head = this._tail = this._sentinel = { bytesUsed: 0 };\n }\n\n public [Symbol.dispose](): void {\n let node: LRUTileListNode | undefined = this._head;\n let next: LRUTileListNode | undefined;\n while (node) {\n next = node.next;\n node.previous = node.next = undefined;\n node.bytesUsed = 0;\n node.tileUserIds = undefined;\n node = next;\n }\n\n this._head = this._tail = this._sentinel;\n this._totalBytesUsed = 0;\n this._userIdSets.clear();\n }\n\n /** Compute the amount of GPU memory allocated to the tile's content and, if greater than zero, add the tile to the beginning of the \"selected\" partition.\n * Invoked by TileAdmin whenever a tile's content is set to a valid RenderGraphic.\n */\n public add(tile: Tile): void {\n assert(!isLinked(tile));\n if (isLinked(tile))\n return;\n\n assert(tile.bytesUsed === 0);\n assert(tile.tileUserIds === undefined);\n\n this._stats.clear();\n tile.collectStatistics(this._stats, false);\n tile.bytesUsed = this.computeBytesUsed(tile);\n assert(tile.bytesUsed >= 0);\n assert(tile.bytesUsed === Math.floor(tile.bytesUsed));\n\n if (tile.bytesUsed <= 0)\n return;\n\n // Insert just after the sentinel, indicating this is the least-recently-used selected tile.\n this._totalBytesUsed += tile.bytesUsed;\n this.append(tile);\n this.moveAfterSentinel(tile);\n }\n\n /** Remove the tile from the list and deduct its previously-used GPU memory from the list's running total.\n * Invoked by TileAdmin when a tile's content is unloaded, including when the list itself disposes of the content in its `freeMemory` method.\n */\n public drop(tile: Tile): void {\n assert(isLinked(tile) || tile.bytesUsed === 0);\n if (!isLinked(tile))\n return;\n\n assert(tile.bytesUsed > 0);\n this._totalBytesUsed -= tile.bytesUsed;\n assert(this._totalBytesUsed >= 0);\n\n this.unlink(tile);\n tile.tileUserIds = undefined;\n tile.bytesUsed = 0;\n\n this.assertList();\n }\n\n /** Mark the tiles as in use by the specified TileUser. They are moved to the end of the \"selected\" partition. */\n public markUsed(userId: number, tiles: Iterable<Tile>): void {\n for (const tile of tiles) {\n if (tile.bytesUsed <= 0)\n continue;\n\n assert(isLinked(tile));\n\n if (isLinked(tile)) {\n tile.tileUserIds = this._userIdSets.plus(userId, tile.tileUserIds);\n this.moveToEnd(tile);\n }\n }\n }\n\n /** Mark the tiles as no longer in user by the specified TileUser.\n * If this results in a tile being no longer selected for any user, it is moved to the end of the \"not selected\" partition.\n */\n public clearUsed(userId: number): void {\n this._userIdSets.drop(userId);\n let prev: LRUTileListNode | undefined = this._sentinel;\n while (prev && prev.next) {\n const tile = prev.next as Tile;\n assert(tile !== this._sentinel);\n tile.tileUserIds = this._userIdSets.minus(userId, tile.tileUserIds);\n if (undefined === tile.tileUserIds)\n this.moveBeforeSentinel(tile);\n else\n prev = tile;\n }\n }\n\n /** Dispose of the contents of tiles currently not selected for display until the total amount of memory consumed is no more than `maxBytes`\n * or until the contents of all un-selected tiles have been disposed.\n */\n public freeMemory(maxBytes: number): void {\n let prev: LRUTileListNode | undefined = this._head;\n while (prev && prev !== this._sentinel && this.totalBytesUsed > maxBytes) {\n const tile = prev as Tile;\n prev = tile.next;\n tile.freeMemory();\n\n // Some tiles (ImageryMapTile) use reference-counting, in which case freeMemory() may not actually free the contents.\n // If the contents *were* disposed, then `this.drop` will have been called, and `tile` is no longer in the list.\n // Otherwise, `tile` remains in the list. Either way, we proceed to the next entry in the list.\n assert((this.computeBytesUsed(tile) > 0) === isLinked(tile));\n }\n }\n\n /** Iterate over all of the tiles in the unselected partition. */\n public get unselectedTiles(): Iterable<Tile> {\n const start = this._head === this._sentinel ? undefined : this._head as Tile | undefined;\n return {\n [Symbol.iterator]: () => lruListIterator(start, this._sentinel),\n };\n }\n\n /** Iterate over all of the tiles in the selected partition. */\n public get selectedTiles(): Iterable<Tile> {\n return {\n [Symbol.iterator]: () => lruListIterator(this._sentinel.next as Tile | undefined, undefined),\n };\n }\n\n protected computeBytesUsed(tile: Tile): number {\n this._stats.clear();\n tile.collectStatistics(this._stats, false);\n return this._stats.totalBytes;\n }\n\n protected assertList(): void {\n assert(this._head !== undefined);\n assert(this._tail !== undefined);\n }\n\n protected append(tile: Tile): void {\n assert(!isLinked(tile));\n if (isLinked(tile))\n this.unlink(tile);\n\n this._tail.next = tile;\n tile.previous = this._tail;\n this._tail = tile;\n }\n\n protected unlink(tile: Tile): void {\n assert(isLinked(tile));\n if (!isLinked(tile))\n return;\n\n if (tile.next && tile.previous) {\n assert(tile !== this._head);\n assert(tile !== this._tail);\n assert(tile.previous.next === tile);\n assert(tile.next.previous === tile);\n\n tile.previous.next = tile.next;\n tile.next.previous = tile.previous;\n } else if (tile.previous) {\n assert(tile === this._tail);\n assert(undefined === tile.next);\n assert(tile.previous.next === tile);\n\n tile.previous.next = undefined;\n this._tail = tile.previous;\n } else {\n assert(tile === this._head);\n assert(undefined !== tile.next);\n assert(tile.next.previous === tile);\n\n tile.next.previous = undefined;\n this._head = tile.next;\n }\n\n tile.next = tile.previous = undefined;\n this.assertList();\n }\n\n protected moveToEnd(tile: Tile): void {\n this.unlink(tile);\n this.append(tile);\n }\n\n protected moveBeforeSentinel(tile: Tile): void {\n this.unlink(tile);\n tile.previous = this._sentinel.previous;\n this._sentinel.previous = tile;\n tile.next = this._sentinel;\n\n if (!tile.previous)\n this._head = tile;\n else\n tile.previous.next = tile;\n }\n\n protected moveAfterSentinel(tile: Tile): void {\n this.unlink(tile);\n tile.next = this._sentinel.next;\n this._sentinel.next = tile;\n tile.previous = this._sentinel;\n\n if (!tile.next)\n this._tail = tile;\n else\n tile.next.previous = tile;\n }\n}\n"]}
1
+ {"version":3,"file":"LRUTileList.js","sourceRoot":"","sources":["../../../../src/internal/tile/LRUTileList.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Tiles\n */\n\nimport { assert, ReadonlySortedArray, SortedArray } from \"@itwin/core-bentley\";\nimport { RenderMemory } from \"../../render/RenderMemory\";\nimport { Tile } from \"../../tile/internal\";\n\n/** Maintains in sorted order a set of [[TileUser]] Ids for which a given tile has been selected for display. The number of users in a set is expected to be very small - often only 1 for a typical application.\n * Strictly for use by LRUTileList.\n * @see TileUserIdSets.\n */\nexport class TileUserIdSet extends ReadonlySortedArray<number> {\n public constructor(userId?: number) {\n super((lhs, rhs) => lhs - rhs);\n if (undefined !== userId)\n this._array.push(userId);\n }\n\n public equals(set: TileUserIdSet): boolean {\n if (this.length !== set.length)\n return false;\n\n for (let i = 0; i < this.length; i++)\n if (this._array[i] !== set._array[i])\n return false;\n\n return true;\n }\n\n public add(userId: number): void {\n this._insert(userId);\n }\n\n public drop(userId: number): void {\n this._remove(userId);\n }\n\n public clear(): void {\n this._clear();\n }\n\n public copyFrom(src: TileUserIdSet): void {\n this._array.length = src.length;\n let i = 0;\n for (const userId of src)\n this._array[i++] = userId;\n }\n\n public clone(): TileUserIdSet {\n const clone = new TileUserIdSet();\n clone.copyFrom(this);\n return clone;\n }\n}\n\n/** Maintains a set of TileUserIdSets such that each set represents a unique combination of TileUser ids and each set contains at least one TileUser id.\n * Exported strictly for tests.\n * @see LRUTileList.\n */\nexport class TileUserIdSets extends SortedArray<TileUserIdSet> {\n private readonly _scratch = new TileUserIdSet();\n\n public constructor() {\n super((lhs, rhs) => {\n if (lhs === rhs)\n return 0;\n\n let diff = lhs.length - rhs.length;\n if (0 !== diff)\n return diff;\n\n for (let i = 0; i < lhs.length; i++) {\n // Looping through i means lhs.get(i) will always be defined.\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const lhId = lhs.get(i)!;\n // rhs.length is same as lhs.length, so rhs.get(i) will always be defined.\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const rhId = rhs.get(i)!;\n diff = lhId - rhId;\n if (0 !== diff)\n return diff;\n }\n\n return 0;\n });\n }\n\n /** Remove the specified TileUser Id from all sets and remove empty and duplicate sets. */\n public drop(userId: number): void {\n // Remove from all sets, and delete empty sets.\n let i = 0;\n for (/* */; i < this._array.length; i++) {\n const set = this._array[i];\n set.drop(userId);\n if (set.length === 0)\n this._array.splice(i, 1);\n }\n\n // Collapse equivalent sets.\n i = 0;\n for (let j = 1; j < this._array.length; /* */) {\n if (this._array[i].equals(this._array[j])) {\n this._array.splice(i, 1);\n } else {\n i++;\n j++;\n }\n }\n }\n\n /** Obtain a TileUserIdSet owned by this object containing userId and (if specified) userIds. */\n public plus(userId: number, userIds?: TileUserIdSet): TileUserIdSet {\n const scratch = this.scratch(userIds);\n scratch.add(userId);\n return this.getEquivalent(scratch);\n }\n\n /** Obtain a TileUserIdSet owned by this object containing all of userIds (if specified) but not userId. Returns undefined if the resultant set would be empty. */\n public minus(userId: number, userIds?: TileUserIdSet): TileUserIdSet | undefined {\n const scratch = this.scratch(userIds);\n scratch.drop(userId);\n return scratch.length > 0 ? this.getEquivalent(scratch) : undefined;\n }\n\n private scratch(userIds?: TileUserIdSet): TileUserIdSet {\n const scratch = this._scratch;\n if (userIds)\n scratch.copyFrom(userIds);\n else\n scratch.clear();\n\n return scratch;\n }\n\n private getEquivalent(sought: TileUserIdSet): TileUserIdSet {\n assert(sought.length > 0);\n\n for (const set of this)\n if (set.equals(sought))\n return set;\n\n const newSet = sought.clone();\n this.insert(newSet);\n return newSet;\n }\n}\n\n/** A node in an LRUTileList. It is either a [[Tile]], or a sentinel node used to partition the list.\n * Strictly for use by LRUTileList.\n */\nexport interface LRUTileListNode {\n previous?: LRUTileListNode;\n next?: LRUTileListNode;\n /** The number of bytes of GPU memory allocated to the tile's content. The only node in a LRUTileListNode with `bytesUsed` less than 1 is the sentinel node. */\n bytesUsed: number;\n /** For a tile, the Ids of all of the TileUsers for which the tile is currently in use. The TileUserIdSet is owned by the LRUTileList's TileUserIdSets member.\n * Undefined if the tile is not in use by any TileUser.\n */\n tileUserIds?: TileUserIdSet | undefined;\n}\n\nfunction isLinked(node: LRUTileListNode): boolean {\n return undefined !== node.previous || undefined !== node.next;\n}\n\nfunction* lruListIterator(start: Tile | undefined, end: LRUTileListNode | undefined): Iterator<Tile> {\n let cur = start;\n while (cur && cur !== end) {\n const prev = cur;\n cur = cur.next as Tile | undefined;\n yield prev;\n }\n}\n\n/** An intrusive doubly-linked list of LRUTileListNodes, containing Tiles partitioned by a singleton sentinel node into two partitions and ordered from least-recently- to most-recently-used by any TileUser.\n * Used by TileAdmin to keep track of and impose limits upon the total amount of GPU memory allocated to tile content.\n *\n * Illustration of the structure of the list:\n *\n * ```\n * v------------- Not selected --------------v v----------------- Selected ------------------v\n * ______ ______ __________ ______ ______\n * | head |.next => | |.next => ... | sentinel |.next => ... | |.next => | tail |\n * | 12kb | | 8kb | | 0kb | | 19kb | | 23kb |\n * |______| <= previous.|______| ... <= previous.|__________| ... <= previous.|______| <= previous.|______|\n *\n * least-recently-selected --> --> --> --> --> --> --> --> --> --> --> --> --> --> --> --> --> --> --> most-recently-selected\n * ```\n *\n * The sentinel node is always present and floats freely as the contents of each partition change. Note that the `next` and `previous` pointers are stored directly on the tiles - no link nodes are allocated to hold the entries in the list. This of course means that a Tile can only ever belong to one LRUTileList - the one owned by the TileAdmin.\n *\n * The list contains only those tiles whose content has been loaded. Each node records the amount of GPU memory allocated for the tile's content. The list keeps track of the total amount of GPU memory allocated by all tiles. The list's contents are updated as follows:\n *\n * - When a tile's content is loaded, it is added to the end of the \"not selected\" partition. Its memory usage is computed and added to the list's total.\n * - When a tile's content is unloaded, it is removed from the list. Its memory usage is deducted from the list's totla.\n * - Just before a TileUser selects tiles for use (e.g., Viewport selects tiles for display), it is removed from each tile's set of viewports in which they are selected. If a tile's set of users becomes empty as a result, it is moved to the end of the \"not selected\" partition.\n * - When a tile becomes selected for use by a TileUser, the user is added to its user set and the tile is moved to the end of the \"selected\" partition.\n *\n * When the system determines that GPU memory should be freed up, it can simply pop nodes off the beginning of the \"not selected\" partition, freeing their content, until the target memory usage is reached or no more non-selected nodes exist.\n *\n * Strictly for use by [[TileAdmin]].\n */\nexport class LRUTileList {\n protected readonly _sentinel: LRUTileListNode;\n protected readonly _stats = new RenderMemory.Statistics();\n protected readonly _userIdSets = new TileUserIdSets();\n protected _head: LRUTileListNode;\n protected _tail: LRUTileListNode;\n protected _totalBytesUsed = 0;\n\n /** The amount of GPU memory, in bytes, allocated to all tiles in the list. */\n public get totalBytesUsed(): number {\n return this._totalBytesUsed;\n }\n\n public constructor() {\n this._head = this._tail = this._sentinel = { bytesUsed: 0 };\n }\n\n public [Symbol.dispose](): void {\n let node: LRUTileListNode | undefined = this._head;\n let next: LRUTileListNode | undefined;\n while (node) {\n next = node.next;\n node.previous = node.next = undefined;\n node.bytesUsed = 0;\n node.tileUserIds = undefined;\n node = next;\n }\n\n this._head = this._tail = this._sentinel;\n this._totalBytesUsed = 0;\n this._userIdSets.clear();\n }\n\n /** Compute the amount of GPU memory allocated to the tile's content and, if greater than zero, add the tile to the beginning of the \"selected\" partition.\n * Invoked by TileAdmin whenever a tile's content is set to a valid RenderGraphic.\n */\n public add(tile: Tile): void {\n assert(!isLinked(tile));\n if (isLinked(tile))\n return;\n\n assert(tile.bytesUsed === 0);\n assert(tile.tileUserIds === undefined);\n\n this._stats.clear();\n tile.collectStatistics(this._stats, false);\n tile.bytesUsed = this.computeBytesUsed(tile);\n assert(tile.bytesUsed >= 0);\n assert(tile.bytesUsed === Math.floor(tile.bytesUsed));\n\n if (tile.bytesUsed <= 0)\n return;\n\n // Insert just after the sentinel, indicating this is the least-recently-used selected tile.\n this._totalBytesUsed += tile.bytesUsed;\n this.append(tile);\n this.moveAfterSentinel(tile);\n }\n\n /** Remove the tile from the list and deduct its previously-used GPU memory from the list's running total.\n * Invoked by TileAdmin when a tile's content is unloaded, including when the list itself disposes of the content in its `freeMemory` method.\n */\n public drop(tile: Tile): void {\n assert(isLinked(tile) || tile.bytesUsed === 0);\n if (!isLinked(tile))\n return;\n\n assert(tile.bytesUsed > 0);\n this._totalBytesUsed -= tile.bytesUsed;\n assert(this._totalBytesUsed >= 0);\n\n this.unlink(tile);\n tile.tileUserIds = undefined;\n tile.bytesUsed = 0;\n\n this.assertList();\n }\n\n /** Mark the tiles as in use by the specified TileUser. They are moved to the end of the \"selected\" partition. */\n public markUsed(userId: number, tiles: Iterable<Tile>): void {\n for (const tile of tiles) {\n if (tile.bytesUsed <= 0)\n continue;\n\n assert(isLinked(tile));\n\n if (isLinked(tile)) {\n tile.tileUserIds = this._userIdSets.plus(userId, tile.tileUserIds);\n this.moveToEnd(tile);\n }\n }\n }\n\n /** Mark the tiles as no longer in user by the specified TileUser.\n * If this results in a tile being no longer selected for any user, it is moved to the end of the \"not selected\" partition.\n */\n public clearUsed(userId: number): void {\n this._userIdSets.drop(userId);\n let prev: LRUTileListNode | undefined = this._sentinel;\n while (prev && prev.next) {\n const tile = prev.next as Tile;\n assert(tile !== this._sentinel);\n tile.tileUserIds = this._userIdSets.minus(userId, tile.tileUserIds);\n if (undefined === tile.tileUserIds)\n this.moveBeforeSentinel(tile);\n else\n prev = tile;\n }\n }\n\n /** Dispose of the contents of tiles currently not selected for display until the total amount of memory consumed is no more than `maxBytes`\n * or until the contents of all un-selected tiles have been disposed.\n */\n public freeMemory(maxBytes: number): void {\n let prev: LRUTileListNode | undefined = this._head;\n while (prev && prev !== this._sentinel && this.totalBytesUsed > maxBytes) {\n const tile = prev as Tile;\n prev = tile.next;\n tile.freeMemory();\n\n // Some tiles (ImageryMapTile) use reference-counting, in which case freeMemory() may not actually free the contents.\n // If the contents *were* disposed, then `this.drop` will have been called, and `tile` is no longer in the list.\n // Otherwise, `tile` remains in the list. Either way, we proceed to the next entry in the list.\n assert((this.computeBytesUsed(tile) > 0) === isLinked(tile));\n }\n }\n\n /** Iterate over all of the tiles in the unselected partition. */\n public get unselectedTiles(): Iterable<Tile> {\n const start = this._head === this._sentinel ? undefined : this._head as Tile | undefined;\n return {\n [Symbol.iterator]: () => lruListIterator(start, this._sentinel),\n };\n }\n\n /** Iterate over all of the tiles in the selected partition. */\n public get selectedTiles(): Iterable<Tile> {\n return {\n [Symbol.iterator]: () => lruListIterator(this._sentinel.next as Tile | undefined, undefined),\n };\n }\n\n protected computeBytesUsed(tile: Tile): number {\n this._stats.clear();\n tile.collectStatistics(this._stats, false);\n return this._stats.totalBytes;\n }\n\n protected assertList(): void {\n assert(this._head !== undefined);\n assert(this._tail !== undefined);\n }\n\n protected append(tile: Tile): void {\n assert(!isLinked(tile));\n if (isLinked(tile))\n this.unlink(tile);\n\n this._tail.next = tile;\n tile.previous = this._tail;\n this._tail = tile;\n }\n\n protected unlink(tile: Tile): void {\n assert(isLinked(tile));\n if (!isLinked(tile))\n return;\n\n if (tile.next && tile.previous) {\n assert(tile !== this._head);\n assert(tile !== this._tail);\n assert(tile.previous.next === tile);\n assert(tile.next.previous === tile);\n\n tile.previous.next = tile.next;\n tile.next.previous = tile.previous;\n } else if (tile.previous) {\n assert(tile === this._tail);\n assert(undefined === tile.next);\n assert(tile.previous.next === tile);\n\n tile.previous.next = undefined;\n this._tail = tile.previous;\n } else {\n assert(tile === this._head);\n assert(undefined !== tile.next);\n assert(tile.next.previous === tile);\n\n tile.next.previous = undefined;\n this._head = tile.next;\n }\n\n tile.next = tile.previous = undefined;\n this.assertList();\n }\n\n protected moveToEnd(tile: Tile): void {\n this.unlink(tile);\n this.append(tile);\n }\n\n protected moveBeforeSentinel(tile: Tile): void {\n this.unlink(tile);\n tile.previous = this._sentinel.previous;\n this._sentinel.previous = tile;\n tile.next = this._sentinel;\n\n if (!tile.previous)\n this._head = tile;\n else\n tile.previous.next = tile;\n }\n\n protected moveAfterSentinel(tile: Tile): void {\n this.unlink(tile);\n tile.next = this._sentinel.next;\n this._sentinel.next = tile;\n tile.previous = this._sentinel;\n\n if (!tile.next)\n this._tail = tile;\n else\n tile.next.previous = tile;\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"LayerTileTreeReferenceHandler.d.ts","sourceRoot":"","sources":["../../../../src/internal/tile/LayerTileTreeReferenceHandler.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,EAAE,iBAAiB,EAAE,QAAQ,EAAsB,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACvG,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAgD,oBAAoB,EAAoD,yBAAyB,EAAsD,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACzP,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAE1D,gBAAgB;AAChB,MAAM,WAAW,sBAAsB;IACrC,MAAM,EAAE,gBAAgB,CAAC;IACzB,SAAS,EAAE,aAAa,CAAC;IACzB,gBAAgB,EAAE,CAAC,YAAY,CAAC,EAAE,yBAAyB,KAAK,OAAO,CAAC;CACzE;AAED,gBAAgB;AAChB,qBAAa,6BAA6B;IACxC,SAAS,CAAC,QAAQ,CAAC,WAAW,4CAAsD;IAC7E,SAAS,EAAE,OAAO,CAAC;IAC1B,SAAS,CAAC,yBAAyB,UAAS;IAC5C,SAAS,CAAC,kBAAkB,CAAC,EAAE,iBAAiB,CAAC;IACjD,SAAS,CAAC,gBAAgB,UAAS;IACnC,SAAS,CAAC,UAAU,CAAC,EAAE,QAAQ,CAAC;IAChC,SAAS,CAAC,cAAc,EAAE,gBAAgB,EAAE,CAAC;IAC7C,OAAO,CAAC,IAAI,CAAyB;IACrC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAU;IACnC,OAAO,CAAC,QAAQ,CAAC,uBAAuB,CAAsB;IAE9D,IAAW,UAAU,8CAA+B;IACpD,IAAW,SAAS,yBAA8B;IAClD,IAAW,eAAe,YAAoC;IAC9D,IAAW,wBAAwB,YAA6C;IAChF,IAAW,aAAa,uBAAkC;IAEnD,iBAAiB,CAAC,KAAK,EAAE,oBAAoB,GAAG,IAAI;gBAMxC,GAAG,EAAE,sBAAsB,EAAE,UAAU,EAAE,OAAO,EAAE,iBAAiB,CAAC,EAAE,iBAAiB,EAAE,aAAa,CAAC,EAAE,gBAAgB,EAAE,EAAE,OAAO,GAAE,OAAe;IA4BjK,gBAAgB,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO;IAoFhD,oBAAoB,CAAC,iBAAiB,EAAE,iBAAiB;IA0BzD,WAAW;IAOX,gBAAgB,CAAC,aAAa,EAAE,gBAAgB,EAAE;CAY1D"}
1
+ {"version":3,"file":"LayerTileTreeReferenceHandler.d.ts","sourceRoot":"","sources":["../../../../src/internal/tile/LayerTileTreeReferenceHandler.ts"],"names":[],"mappings":"AAIA;;GAEG;AAGH,OAAO,EAAE,iBAAiB,EAAE,QAAQ,EAAsB,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACvG,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAgD,oBAAoB,EAAoD,yBAAyB,EAAsD,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACzP,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAE1D,gBAAgB;AAChB,MAAM,WAAW,sBAAsB;IACrC,MAAM,EAAE,gBAAgB,CAAC;IACzB,SAAS,EAAE,aAAa,CAAC;IACzB,gBAAgB,EAAE,CAAC,YAAY,CAAC,EAAE,yBAAyB,KAAK,OAAO,CAAC;CACzE;AAED,gBAAgB;AAChB,qBAAa,6BAA6B;IACxC,SAAS,CAAC,QAAQ,CAAC,WAAW,4CAAsD;IAC7E,SAAS,EAAE,OAAO,CAAC;IAC1B,SAAS,CAAC,yBAAyB,UAAS;IAC5C,SAAS,CAAC,kBAAkB,CAAC,EAAE,iBAAiB,CAAC;IACjD,SAAS,CAAC,gBAAgB,UAAS;IACnC,SAAS,CAAC,UAAU,CAAC,EAAE,QAAQ,CAAC;IAChC,SAAS,CAAC,cAAc,EAAE,gBAAgB,EAAE,CAAC;IAC7C,OAAO,CAAC,IAAI,CAAyB;IACrC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAU;IACnC,OAAO,CAAC,QAAQ,CAAC,uBAAuB,CAAsB;IAE9D,IAAW,UAAU,8CAA+B;IACpD,IAAW,SAAS,yBAA8B;IAClD,IAAW,eAAe,YAAoC;IAC9D,IAAW,wBAAwB,YAA6C;IAChF,IAAW,aAAa,uBAAkC;IAEnD,iBAAiB,CAAC,KAAK,EAAE,oBAAoB,GAAG,IAAI;gBAMxC,GAAG,EAAE,sBAAsB,EAAE,UAAU,EAAE,OAAO,EAAE,iBAAiB,CAAC,EAAE,iBAAiB,EAAE,aAAa,CAAC,EAAE,gBAAgB,EAAE,EAAE,OAAO,GAAE,OAAe;IA4BjK,gBAAgB,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO;IAoFhD,oBAAoB,CAAC,iBAAiB,EAAE,iBAAiB;IA0BzD,WAAW;IAOX,gBAAgB,CAAC,aAAa,EAAE,gBAAgB,EAAE;CAY1D"}
@@ -8,6 +8,7 @@
8
8
  */
9
9
  Object.defineProperty(exports, "__esModule", { value: true });
10
10
  exports.LayerTileTreeReferenceHandler = void 0;
11
+ const core_bentley_1 = require("@itwin/core-bentley");
11
12
  const core_common_1 = require("@itwin/core-common");
12
13
  const internal_1 = require("../../tile/internal");
13
14
  /** @internal */
@@ -172,7 +173,7 @@ class LayerTileTreeReferenceHandler {
172
173
  for (let i = 0; i < layerSettings.length; i++) {
173
174
  const treeIndex = i + baseLayerIndex;
174
175
  if (treeIndex >= this._layerTrees.length || !this._layerTrees[treeIndex]?.layerSettings.displayMatches(layerSettings[i]))
175
- this._layerTrees[treeIndex] = (0, internal_1.createMapLayerTreeReference)(layerSettings[i], treeIndex, this._ref.iModel);
176
+ this._layerTrees[treeIndex] = (0, core_bentley_1.expectDefined)((0, internal_1.createMapLayerTreeReference)(layerSettings[i], treeIndex, this._ref.iModel));
176
177
  }
177
178
  this.clearLayers();
178
179
  }
@@ -1 +1 @@
1
- {"version":3,"file":"LayerTileTreeReferenceHandler.js","sourceRoot":"","sources":["../../../../src/internal/tile/LayerTileTreeReferenceHandler.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Tiles\n */\n\nimport { BaseLayerSettings, ColorDef, MapImagerySettings, MapLayerSettings } from \"@itwin/core-common\";\nimport { SceneContext } from \"../../ViewContext\";\nimport { compareMapLayer, createMapLayerTreeReference, DisclosedTileTreeSet, ImageryMapLayerTreeReference, ImageryMapTileTree, MapLayerTileTreeReference, ModelMapLayerTileTreeReference, TileTreeLoadStatus, TileTreeOwner } from \"../../tile/internal\";\nimport { IModelConnection } from \"../../IModelConnection\";\n\n/** @internal */\nexport interface LayerTileTreeReference {\n iModel: IModelConnection;\n treeOwner: TileTreeOwner;\n shouldDrapeLayer: (layerTreeRef?: MapLayerTileTreeReference) => boolean;\n}\n\n/** @internal */\nexport class LayerTileTreeReferenceHandler {\n protected readonly _layerTrees = new Array<MapLayerTileTreeReference | undefined>();\n public isOverlay: boolean;\n protected _baseImageryLayerIncluded = false;\n protected _baseLayerSettings?: BaseLayerSettings;\n protected _baseTransparent = false;\n protected _baseColor?: ColorDef;\n protected _layerSettings: MapLayerSettings[];\n private _ref: LayerTileTreeReference;\n private readonly _mapTile: boolean;\n private readonly _detachFromDisplayStyle: VoidFunction[] = [];\n\n public get layerTrees() { return this._layerTrees; }\n public get baseColor() { return this._baseColor; }\n public get baseTransparent() { return this._baseTransparent; }\n public get baseImageryLayerIncluded() { return this._baseImageryLayerIncluded; }\n public get layerSettings() { return this._layerSettings; }\n\n public discloseTileTrees(trees: DisclosedTileTreeSet): void {\n for (const imageryTree of this.layerTrees)\n if (imageryTree)\n trees.disclose(imageryTree);\n }\n\n public constructor(ref: LayerTileTreeReference, pIsOverlay: boolean, baseLayerSettings?: BaseLayerSettings, layerSettings?: MapLayerSettings[], mapTile: boolean = false) {\n this._ref = ref;\n this._baseLayerSettings = baseLayerSettings;\n this._layerSettings = layerSettings ? layerSettings : [];\n this.isOverlay = pIsOverlay;\n this._mapTile = mapTile;\n\n let tree;\n if (!this.isOverlay && this._baseLayerSettings !== undefined) {\n if (this._baseLayerSettings instanceof MapLayerSettings) {\n tree = createMapLayerTreeReference(this._baseLayerSettings, 0, this._ref.iModel);\n this._baseTransparent = this._baseLayerSettings.transparency > 0;\n } else {\n this._baseColor = this._baseLayerSettings;\n this._baseTransparent = this._baseColor?.getTransparency() > 0;\n }\n }\n\n if (this._baseImageryLayerIncluded = (undefined !== tree))\n this._layerTrees.push(tree);\n\n if (undefined !== this._layerSettings) {\n for (let i = 0; i < this._layerSettings.length; i++)\n if (undefined !== (tree = createMapLayerTreeReference(this._layerSettings[i], i + 1, this._ref.iModel)))\n this._layerTrees.push(tree);\n }\n }\n\n public initializeLayers(context: SceneContext): boolean {\n // Map tiles handle refresh logic differently\n if(!this._mapTile){\n const removals = this._detachFromDisplayStyle;\n const mapImagery = context.viewport.displayStyle.settings.mapImagery;\n if (0 === removals.length) {\n removals.push(context.viewport.displayStyle.settings.onMapImageryChanged.addListener((imagery: Readonly<MapImagerySettings>) => {\n this.setBaseLayerSettings(imagery.backgroundBase);\n this.setLayerSettings(imagery.backgroundLayers);\n }));\n }\n removals.push(context.viewport.onChangeView.addListener((vp, previousViewState) => {\n if(compareMapLayer(previousViewState, vp.view)){\n this.setBaseLayerSettings(mapImagery.backgroundBase);\n this.setLayerSettings(mapImagery.backgroundLayers);\n }\n }));\n removals.push(context.viewport.onViewedModelsChanged.addListener((viewport) => {\n const layers = viewport.displayStyle.settings.mapImagery.backgroundLayers;\n if (layers.length > 0) {\n this.setBaseLayerSettings(mapImagery.backgroundBase);\n this.setLayerSettings(mapImagery.backgroundLayers);\n viewport.invalidateScene();\n }\n }));\n }\n\n let hasLoadedTileTree = false;\n const layerHandler = this._ref.treeOwner.load()?.layerHandler;\n if (undefined === layerHandler) {\n return hasLoadedTileTree; // Not loaded yet - or no layerHandler on tree.\n }\n\n layerHandler.layerImageryTrees.length = 0;\n if (0 === this._layerTrees.length) {\n return !this.isOverlay;\n }\n\n let treeIndex = this._layerTrees.length - 1;\n // Start displaying at the highest completely opaque layer...\n for (; treeIndex >= 1; treeIndex--) {\n const layerTreeRef = this._layerTrees[treeIndex];\n if (layerTreeRef?.isOpaque)\n break; // This layer is completely opaque and will obscure all others so ignore lower ones.\n }\n\n for (; treeIndex < this._layerTrees.length; treeIndex++) {\n const layerTreeRef = this._layerTrees[treeIndex];\n const hasValidTileTree = layerTreeRef && TileTreeLoadStatus.NotFound !== layerTreeRef.treeOwner.loadStatus;\n const isImageryMapLayer = layerTreeRef instanceof ImageryMapLayerTreeReference;\n const isLayerVisible = (isImageryMapLayer || (!isImageryMapLayer && layerTreeRef?.layerSettings.visible));\n\n if (!this._ref.shouldDrapeLayer(layerTreeRef)) {\n // If the layer is not to be displayed, then we should skip adding it to the tile tree.\n // The _shouldDrapeLayerFunc() function is sent in from MapTileTreeReference or RealityTileTree.\n hasLoadedTileTree = true; // ###TODO had to set this to true so addToScene actually works. alternative?\n continue;\n }\n\n // Load tile tree for each configured layer.\n // Note: Non-visible imagery layer are always added to allow proper tile tree scale range visibility reporting.\n if (hasValidTileTree\n && isLayerVisible\n && !layerTreeRef.layerSettings.allSubLayersInvisible) {\n const layerTree = layerTreeRef.treeOwner.load();\n if (layerTree !== undefined) {\n hasLoadedTileTree = true;\n } else {\n // Let's continue, there might be loaded tile tree in the list\n continue;\n }\n\n // Add loaded TileTree\n const baseImageryLayer = this._baseImageryLayerIncluded && (treeIndex === 0);\n if (layerTree instanceof ImageryMapTileTree) {\n layerHandler.addImageryLayer(layerTree, layerTreeRef.layerSettings, treeIndex, baseImageryLayer);\n } else if (layerTreeRef instanceof ModelMapLayerTileTreeReference)\n layerHandler.addModelLayer(layerTreeRef, context);\n }\n }\n\n return hasLoadedTileTree;\n }\n\n public setBaseLayerSettings(baseLayerSettings: BaseLayerSettings) {\n let tree;\n this._baseLayerSettings = baseLayerSettings;\n\n if (baseLayerSettings instanceof MapLayerSettings) {\n tree = createMapLayerTreeReference(baseLayerSettings, 0, this._ref.iModel);\n this._baseColor = undefined;\n this._baseTransparent = baseLayerSettings.transparency > 0;\n } else {\n this._baseColor = baseLayerSettings;\n this._baseTransparent = this._baseColor.getTransparency() > 0;\n }\n\n if (tree) {\n if (this._baseImageryLayerIncluded)\n this._layerTrees[0] = tree;\n else\n this._layerTrees.splice(0, 0, tree);\n } else {\n if (this._baseImageryLayerIncluded)\n this._layerTrees.shift();\n }\n this._baseImageryLayerIncluded = tree !== undefined;\n this.clearLayers();\n }\n\n public clearLayers() {\n const layerHandler = this._ref.treeOwner.tileTree?.layerHandler;\n if (undefined !== layerHandler) {\n layerHandler.clearLayers();\n }\n }\n\n public setLayerSettings(layerSettings: MapLayerSettings[]) {\n this._layerSettings = layerSettings;\n const baseLayerIndex = this._baseImageryLayerIncluded ? 1 : 0;\n\n this._layerTrees.length = Math.min(layerSettings.length + baseLayerIndex, this._layerTrees.length); // Truncate if number of layers reduced.\n for (let i = 0; i < layerSettings.length; i++) {\n const treeIndex = i + baseLayerIndex;\n if (treeIndex >= this._layerTrees.length || !this._layerTrees[treeIndex]?.layerSettings.displayMatches(layerSettings[i]))\n this._layerTrees[treeIndex] = createMapLayerTreeReference(layerSettings[i], treeIndex, this._ref.iModel)!;\n }\n this.clearLayers();\n }\n}\n"]}
1
+ {"version":3,"file":"LayerTileTreeReferenceHandler.js","sourceRoot":"","sources":["../../../../src/internal/tile/LayerTileTreeReferenceHandler.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Tiles\n */\n\nimport { expectDefined } from \"@itwin/core-bentley\";\nimport { BaseLayerSettings, ColorDef, MapImagerySettings, MapLayerSettings } from \"@itwin/core-common\";\nimport { SceneContext } from \"../../ViewContext\";\nimport { compareMapLayer, createMapLayerTreeReference, DisclosedTileTreeSet, ImageryMapLayerTreeReference, ImageryMapTileTree, MapLayerTileTreeReference, ModelMapLayerTileTreeReference, TileTreeLoadStatus, TileTreeOwner } from \"../../tile/internal\";\nimport { IModelConnection } from \"../../IModelConnection\";\n\n/** @internal */\nexport interface LayerTileTreeReference {\n iModel: IModelConnection;\n treeOwner: TileTreeOwner;\n shouldDrapeLayer: (layerTreeRef?: MapLayerTileTreeReference) => boolean;\n}\n\n/** @internal */\nexport class LayerTileTreeReferenceHandler {\n protected readonly _layerTrees = new Array<MapLayerTileTreeReference | undefined>();\n public isOverlay: boolean;\n protected _baseImageryLayerIncluded = false;\n protected _baseLayerSettings?: BaseLayerSettings;\n protected _baseTransparent = false;\n protected _baseColor?: ColorDef;\n protected _layerSettings: MapLayerSettings[];\n private _ref: LayerTileTreeReference;\n private readonly _mapTile: boolean;\n private readonly _detachFromDisplayStyle: VoidFunction[] = [];\n\n public get layerTrees() { return this._layerTrees; }\n public get baseColor() { return this._baseColor; }\n public get baseTransparent() { return this._baseTransparent; }\n public get baseImageryLayerIncluded() { return this._baseImageryLayerIncluded; }\n public get layerSettings() { return this._layerSettings; }\n\n public discloseTileTrees(trees: DisclosedTileTreeSet): void {\n for (const imageryTree of this.layerTrees)\n if (imageryTree)\n trees.disclose(imageryTree);\n }\n\n public constructor(ref: LayerTileTreeReference, pIsOverlay: boolean, baseLayerSettings?: BaseLayerSettings, layerSettings?: MapLayerSettings[], mapTile: boolean = false) {\n this._ref = ref;\n this._baseLayerSettings = baseLayerSettings;\n this._layerSettings = layerSettings ? layerSettings : [];\n this.isOverlay = pIsOverlay;\n this._mapTile = mapTile;\n\n let tree;\n if (!this.isOverlay && this._baseLayerSettings !== undefined) {\n if (this._baseLayerSettings instanceof MapLayerSettings) {\n tree = createMapLayerTreeReference(this._baseLayerSettings, 0, this._ref.iModel);\n this._baseTransparent = this._baseLayerSettings.transparency > 0;\n } else {\n this._baseColor = this._baseLayerSettings;\n this._baseTransparent = this._baseColor?.getTransparency() > 0;\n }\n }\n\n if (this._baseImageryLayerIncluded = (undefined !== tree))\n this._layerTrees.push(tree);\n\n if (undefined !== this._layerSettings) {\n for (let i = 0; i < this._layerSettings.length; i++)\n if (undefined !== (tree = createMapLayerTreeReference(this._layerSettings[i], i + 1, this._ref.iModel)))\n this._layerTrees.push(tree);\n }\n }\n\n public initializeLayers(context: SceneContext): boolean {\n // Map tiles handle refresh logic differently\n if(!this._mapTile){\n const removals = this._detachFromDisplayStyle;\n const mapImagery = context.viewport.displayStyle.settings.mapImagery;\n if (0 === removals.length) {\n removals.push(context.viewport.displayStyle.settings.onMapImageryChanged.addListener((imagery: Readonly<MapImagerySettings>) => {\n this.setBaseLayerSettings(imagery.backgroundBase);\n this.setLayerSettings(imagery.backgroundLayers);\n }));\n }\n removals.push(context.viewport.onChangeView.addListener((vp, previousViewState) => {\n if(compareMapLayer(previousViewState, vp.view)){\n this.setBaseLayerSettings(mapImagery.backgroundBase);\n this.setLayerSettings(mapImagery.backgroundLayers);\n }\n }));\n removals.push(context.viewport.onViewedModelsChanged.addListener((viewport) => {\n const layers = viewport.displayStyle.settings.mapImagery.backgroundLayers;\n if (layers.length > 0) {\n this.setBaseLayerSettings(mapImagery.backgroundBase);\n this.setLayerSettings(mapImagery.backgroundLayers);\n viewport.invalidateScene();\n }\n }));\n }\n\n let hasLoadedTileTree = false;\n const layerHandler = this._ref.treeOwner.load()?.layerHandler;\n if (undefined === layerHandler) {\n return hasLoadedTileTree; // Not loaded yet - or no layerHandler on tree.\n }\n\n layerHandler.layerImageryTrees.length = 0;\n if (0 === this._layerTrees.length) {\n return !this.isOverlay;\n }\n\n let treeIndex = this._layerTrees.length - 1;\n // Start displaying at the highest completely opaque layer...\n for (; treeIndex >= 1; treeIndex--) {\n const layerTreeRef = this._layerTrees[treeIndex];\n if (layerTreeRef?.isOpaque)\n break; // This layer is completely opaque and will obscure all others so ignore lower ones.\n }\n\n for (; treeIndex < this._layerTrees.length; treeIndex++) {\n const layerTreeRef = this._layerTrees[treeIndex];\n const hasValidTileTree = layerTreeRef && TileTreeLoadStatus.NotFound !== layerTreeRef.treeOwner.loadStatus;\n const isImageryMapLayer = layerTreeRef instanceof ImageryMapLayerTreeReference;\n const isLayerVisible = (isImageryMapLayer || (!isImageryMapLayer && layerTreeRef?.layerSettings.visible));\n\n if (!this._ref.shouldDrapeLayer(layerTreeRef)) {\n // If the layer is not to be displayed, then we should skip adding it to the tile tree.\n // The _shouldDrapeLayerFunc() function is sent in from MapTileTreeReference or RealityTileTree.\n hasLoadedTileTree = true; // ###TODO had to set this to true so addToScene actually works. alternative?\n continue;\n }\n\n // Load tile tree for each configured layer.\n // Note: Non-visible imagery layer are always added to allow proper tile tree scale range visibility reporting.\n if (hasValidTileTree\n && isLayerVisible\n && !layerTreeRef.layerSettings.allSubLayersInvisible) {\n const layerTree = layerTreeRef.treeOwner.load();\n if (layerTree !== undefined) {\n hasLoadedTileTree = true;\n } else {\n // Let's continue, there might be loaded tile tree in the list\n continue;\n }\n\n // Add loaded TileTree\n const baseImageryLayer = this._baseImageryLayerIncluded && (treeIndex === 0);\n if (layerTree instanceof ImageryMapTileTree) {\n layerHandler.addImageryLayer(layerTree, layerTreeRef.layerSettings, treeIndex, baseImageryLayer);\n } else if (layerTreeRef instanceof ModelMapLayerTileTreeReference)\n layerHandler.addModelLayer(layerTreeRef, context);\n }\n }\n\n return hasLoadedTileTree;\n }\n\n public setBaseLayerSettings(baseLayerSettings: BaseLayerSettings) {\n let tree;\n this._baseLayerSettings = baseLayerSettings;\n\n if (baseLayerSettings instanceof MapLayerSettings) {\n tree = createMapLayerTreeReference(baseLayerSettings, 0, this._ref.iModel);\n this._baseColor = undefined;\n this._baseTransparent = baseLayerSettings.transparency > 0;\n } else {\n this._baseColor = baseLayerSettings;\n this._baseTransparent = this._baseColor.getTransparency() > 0;\n }\n\n if (tree) {\n if (this._baseImageryLayerIncluded)\n this._layerTrees[0] = tree;\n else\n this._layerTrees.splice(0, 0, tree);\n } else {\n if (this._baseImageryLayerIncluded)\n this._layerTrees.shift();\n }\n this._baseImageryLayerIncluded = tree !== undefined;\n this.clearLayers();\n }\n\n public clearLayers() {\n const layerHandler = this._ref.treeOwner.tileTree?.layerHandler;\n if (undefined !== layerHandler) {\n layerHandler.clearLayers();\n }\n }\n\n public setLayerSettings(layerSettings: MapLayerSettings[]) {\n this._layerSettings = layerSettings;\n const baseLayerIndex = this._baseImageryLayerIncluded ? 1 : 0;\n\n this._layerTrees.length = Math.min(layerSettings.length + baseLayerIndex, this._layerTrees.length); // Truncate if number of layers reduced.\n for (let i = 0; i < layerSettings.length; i++) {\n const treeIndex = i + baseLayerIndex;\n if (treeIndex >= this._layerTrees.length || !this._layerTrees[treeIndex]?.layerSettings.displayMatches(layerSettings[i]))\n this._layerTrees[treeIndex] = expectDefined(createMapLayerTreeReference(layerSettings[i], treeIndex, this._ref.iModel));\n }\n this.clearLayers();\n }\n}\n"]}
@@ -30,7 +30,7 @@ class OPCFormatInterpreter {
30
30
  const urlFS = new core_orbitgt_1.UrlFS();
31
31
  // wrap a caching layer (16 MB) around the blob file
32
32
  const blobFileSize = await urlFS.getFileLength(blobFileURL);
33
- core_bentley_1.Logger.logTrace(loggerCategory, `OPC File Size is ${blobFileSize}`);
33
+ core_bentley_1.Logger.logTrace(loggerCategory, `OPC File Size is ${blobFileSize.toString()}`);
34
34
  const blobFile = new core_orbitgt_1.PageCachedFile(urlFS, blobFileURL, blobFileSize, 128 * 1024 /* pageSize */, 128 /* maxPageCount */);
35
35
  const fileReader = await core_orbitgt_1.OPCReader.openFile(blobFile, blobFileURL, true /* lazyLoading */);
36
36
  return fileReader;
@@ -60,13 +60,13 @@ class OPCFormatInterpreter {
60
60
  await core_orbitgt_1.CRSManager.ENGINE.prepareForArea(wgs84ECEFCrs, new core_orbitgt_1.OrbitGtBounds());
61
61
  const ecefBounds = core_orbitgt_1.CRSManager.transformBounds(bounds, fileCrs, wgs84ECEFCrs);
62
62
  const ecefRange = core_geometry_1.Range3d.createXYZXYZ(ecefBounds.getMinX(), ecefBounds.getMinY(), ecefBounds.getMinZ(), ecefBounds.getMaxX(), ecefBounds.getMaxY(), ecefBounds.getMaxZ());
63
- const ecefCenter = ecefRange.localXYZToWorld(.5, .5, .5);
64
- const cartoCenter = core_common_1.Cartographic.fromEcef(ecefCenter);
63
+ const ecefCenter = (0, core_bentley_1.expectDefined)(ecefRange.localXYZToWorld(.5, .5, .5));
64
+ const cartoCenter = (0, core_bentley_1.expectDefined)(core_common_1.Cartographic.fromEcef(ecefCenter));
65
65
  cartoCenter.height = 0;
66
66
  const ecefLocation = core_common_1.EcefLocation.createFromCartographicOrigin(cartoCenter);
67
67
  location = ecefLocation;
68
68
  // this.iModelDb.setEcefLocation(ecefLocation);
69
- const ecefToWorld = ecefLocation.getTransform().inverse();
69
+ const ecefToWorld = (0, core_bentley_1.expectDefined)(ecefLocation.getTransform().inverse());
70
70
  worldRange = ecefToWorld.multiplyRange(ecefRange);
71
71
  isGeolocated = true;
72
72
  }
@@ -1 +1 @@
1
- {"version":3,"file":"OPCFormatInterpreter.js","sourceRoot":"","sources":["../../../../src/internal/tile/OPCFormatInterpreter.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n\nimport { Cartographic, EcefLocation } from \"@itwin/core-common\";\nimport { Range3d } from \"@itwin/core-geometry\";\nimport { ALong, CRSManager, Downloader, DownloaderXhr, OnlineEngine, OPCReader, OrbitGtBounds, PageCachedFile, PointCloudReader, UrlFS } from \"@itwin/core-orbitgt\";\nimport { FrontendLoggerCategory } from \"../../common/FrontendLoggerCategory\";\nimport { BentleyError, Logger, LoggingMetaData, RealityDataStatus } from \"@itwin/core-bentley\";\nimport { RealityDataError, SpatialLocationAndExtents } from \"../../RealityDataSource\";\n\nconst loggerCategory: string = FrontendLoggerCategory.RealityData;\n\n/**\n * This class provide methods used to interpret Orbit Point Cloud (OPC) format\n */\nexport class OPCFormatInterpreter {\n /** Gets an OPC file reader from a blobFileUrl\n * @param blobFileURL the name of the file.\n * @returns return a file reader open to read provided blob file\n */\n public static async getFileReaderFromBlobFileURL(blobFileURL: string): Promise<PointCloudReader> {\n if (Downloader.INSTANCE == null)\n Downloader.INSTANCE = new DownloaderXhr();\n if (CRSManager.ENGINE == null)\n CRSManager.ENGINE = await OnlineEngine.create();\n\n // let blobFileURL: string = rdUrl;\n // if (accountName.length > 0) blobFileURL = UrlFS.getAzureBlobSasUrl(opcConfig.accountName, opcConfig.containerName, opcConfig.blobFileName, opcConfig.sasToken);\n const urlFS: UrlFS = new UrlFS();\n // wrap a caching layer (16 MB) around the blob file\n const blobFileSize: ALong = await urlFS.getFileLength(blobFileURL);\n Logger.logTrace(loggerCategory, `OPC File Size is ${blobFileSize}`);\n const blobFile: PageCachedFile = new PageCachedFile(urlFS, blobFileURL, blobFileSize, 128 * 1024 /* pageSize */, 128 /* maxPageCount */);\n const fileReader: PointCloudReader = await OPCReader.openFile(blobFile, blobFileURL, true/* lazyLoading */);\n return fileReader;\n }\n\n /** Gets reality data spatial location and extents\n * @param fileReader a file reader instance obtains from call to getFileReaderFromBlobFileURL\n * @returns spatial location and volume of interest, in meters, centered around `spatial location`\n * @throws [[RealityDataError]] if source is invalid or cannot be read\n */\n public static async getSpatialLocationAndExtents(fileReader: PointCloudReader): Promise<SpatialLocationAndExtents> {\n let worldRange = new Range3d();\n let location: Cartographic | EcefLocation;\n let isGeolocated = true;\n\n const bounds = fileReader.getFileBounds();\n worldRange = Range3d.createXYZXYZ(bounds.getMinX(), bounds.getMinY(), bounds.getMinZ(), bounds.getMaxX(), bounds.getMaxY(), bounds.getMaxZ());\n isGeolocated = false;\n const fileCrs = fileReader.getFileCRS();\n // the CRS 9300 is not defined in the CRS registry database, so we cannot use CRSManager\n // Check to isGeographicCRS and isProjectedCRS are both going to return false in that case and we will fallback to\n // use un-georeferenced code path.\n await CRSManager.ENGINE.prepareForArea(fileCrs, bounds);\n const isGeographicCRS = CRSManager.ENGINE.isGeographicCRS(fileCrs);\n const isProjectedCRS = CRSManager.ENGINE.isProjectedCRS(fileCrs);\n if (fileCrs && (isProjectedCRS || isGeographicCRS)) {\n try {\n const wgs84ECEFCrs = \"4978\";\n await CRSManager.ENGINE.prepareForArea(wgs84ECEFCrs, new OrbitGtBounds());\n\n const ecefBounds = CRSManager.transformBounds(bounds, fileCrs, wgs84ECEFCrs);\n const ecefRange = Range3d.createXYZXYZ(ecefBounds.getMinX(), ecefBounds.getMinY(), ecefBounds.getMinZ(), ecefBounds.getMaxX(), ecefBounds.getMaxY(), ecefBounds.getMaxZ());\n const ecefCenter = ecefRange.localXYZToWorld(.5, .5, .5)!;\n const cartoCenter = Cartographic.fromEcef(ecefCenter)!;\n cartoCenter.height = 0;\n const ecefLocation = EcefLocation.createFromCartographicOrigin(cartoCenter);\n location = ecefLocation;\n // this.iModelDb.setEcefLocation(ecefLocation);\n const ecefToWorld = ecefLocation.getTransform().inverse()!;\n worldRange = ecefToWorld.multiplyRange(ecefRange);\n isGeolocated = true;\n } catch (e) {\n Logger.logWarning(loggerCategory, `Error getSpatialLocationAndExtents - cannot interpret point cloud`);\n const errorProps = BentleyError.getErrorProps(e);\n const getMetaData: LoggingMetaData = () => {\n return { errorProps };\n };\n const error = new RealityDataError(RealityDataStatus.InvalidData, \"Invalid or unknown data\", getMetaData);\n throw error;\n }\n } else {\n // NoGCS case\n isGeolocated = false;\n const centerOfEarth = new EcefLocation({ origin: { x: 0.0, y: 0.0, z: 0.0 }, orientation: { yaw: 0.0, pitch: 0.0, roll: 0.0 } });\n location = centerOfEarth;\n Logger.logTrace(loggerCategory, \"OPC RealityData NOT Geolocated\", () => ({ ...location }));\n }\n const spatialLocation: SpatialLocationAndExtents = { location, worldRange, isGeolocated };\n return spatialLocation;\n }\n}\n\n"]}
1
+ {"version":3,"file":"OPCFormatInterpreter.js","sourceRoot":"","sources":["../../../../src/internal/tile/OPCFormatInterpreter.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n\nimport { Cartographic, EcefLocation } from \"@itwin/core-common\";\nimport { Range3d } from \"@itwin/core-geometry\";\nimport { ALong, CRSManager, Downloader, DownloaderXhr, OnlineEngine, OPCReader, OrbitGtBounds, PageCachedFile, PointCloudReader, UrlFS } from \"@itwin/core-orbitgt\";\nimport { FrontendLoggerCategory } from \"../../common/FrontendLoggerCategory\";\nimport { BentleyError, expectDefined, Logger, LoggingMetaData, RealityDataStatus } from \"@itwin/core-bentley\";\nimport { RealityDataError, SpatialLocationAndExtents } from \"../../RealityDataSource\";\n\nconst loggerCategory: string = FrontendLoggerCategory.RealityData;\n\n/**\n * This class provide methods used to interpret Orbit Point Cloud (OPC) format\n */\nexport class OPCFormatInterpreter {\n /** Gets an OPC file reader from a blobFileUrl\n * @param blobFileURL the name of the file.\n * @returns return a file reader open to read provided blob file\n */\n public static async getFileReaderFromBlobFileURL(blobFileURL: string): Promise<PointCloudReader> {\n if (Downloader.INSTANCE == null)\n Downloader.INSTANCE = new DownloaderXhr();\n if (CRSManager.ENGINE == null)\n CRSManager.ENGINE = await OnlineEngine.create();\n\n // let blobFileURL: string = rdUrl;\n // if (accountName.length > 0) blobFileURL = UrlFS.getAzureBlobSasUrl(opcConfig.accountName, opcConfig.containerName, opcConfig.blobFileName, opcConfig.sasToken);\n const urlFS: UrlFS = new UrlFS();\n // wrap a caching layer (16 MB) around the blob file\n const blobFileSize: ALong = await urlFS.getFileLength(blobFileURL);\n Logger.logTrace(loggerCategory, `OPC File Size is ${blobFileSize.toString()}`);\n const blobFile: PageCachedFile = new PageCachedFile(urlFS, blobFileURL, blobFileSize, 128 * 1024 /* pageSize */, 128 /* maxPageCount */);\n const fileReader: PointCloudReader = await OPCReader.openFile(blobFile, blobFileURL, true/* lazyLoading */);\n return fileReader;\n }\n\n /** Gets reality data spatial location and extents\n * @param fileReader a file reader instance obtains from call to getFileReaderFromBlobFileURL\n * @returns spatial location and volume of interest, in meters, centered around `spatial location`\n * @throws [[RealityDataError]] if source is invalid or cannot be read\n */\n public static async getSpatialLocationAndExtents(fileReader: PointCloudReader): Promise<SpatialLocationAndExtents> {\n let worldRange = new Range3d();\n let location: Cartographic | EcefLocation;\n let isGeolocated = true;\n\n const bounds = fileReader.getFileBounds();\n worldRange = Range3d.createXYZXYZ(bounds.getMinX(), bounds.getMinY(), bounds.getMinZ(), bounds.getMaxX(), bounds.getMaxY(), bounds.getMaxZ());\n isGeolocated = false;\n const fileCrs = fileReader.getFileCRS();\n // the CRS 9300 is not defined in the CRS registry database, so we cannot use CRSManager\n // Check to isGeographicCRS and isProjectedCRS are both going to return false in that case and we will fallback to\n // use un-georeferenced code path.\n await CRSManager.ENGINE.prepareForArea(fileCrs, bounds);\n const isGeographicCRS = CRSManager.ENGINE.isGeographicCRS(fileCrs);\n const isProjectedCRS = CRSManager.ENGINE.isProjectedCRS(fileCrs);\n if (fileCrs && (isProjectedCRS || isGeographicCRS)) {\n try {\n const wgs84ECEFCrs = \"4978\";\n await CRSManager.ENGINE.prepareForArea(wgs84ECEFCrs, new OrbitGtBounds());\n\n const ecefBounds = CRSManager.transformBounds(bounds, fileCrs, wgs84ECEFCrs);\n const ecefRange = Range3d.createXYZXYZ(ecefBounds.getMinX(), ecefBounds.getMinY(), ecefBounds.getMinZ(), ecefBounds.getMaxX(), ecefBounds.getMaxY(), ecefBounds.getMaxZ());\n const ecefCenter = expectDefined(ecefRange.localXYZToWorld(.5, .5, .5));\n const cartoCenter = expectDefined(Cartographic.fromEcef(ecefCenter));\n cartoCenter.height = 0;\n const ecefLocation = EcefLocation.createFromCartographicOrigin(cartoCenter);\n location = ecefLocation;\n // this.iModelDb.setEcefLocation(ecefLocation);\n const ecefToWorld = expectDefined(ecefLocation.getTransform().inverse());\n worldRange = ecefToWorld.multiplyRange(ecefRange);\n isGeolocated = true;\n } catch (e) {\n Logger.logWarning(loggerCategory, `Error getSpatialLocationAndExtents - cannot interpret point cloud`);\n const errorProps = BentleyError.getErrorProps(e);\n const getMetaData: LoggingMetaData = () => {\n return { errorProps };\n };\n const error = new RealityDataError(RealityDataStatus.InvalidData, \"Invalid or unknown data\", getMetaData);\n throw error;\n }\n } else {\n // NoGCS case\n isGeolocated = false;\n const centerOfEarth = new EcefLocation({ origin: { x: 0.0, y: 0.0, z: 0.0 }, orientation: { yaw: 0.0, pitch: 0.0, roll: 0.0 } });\n location = centerOfEarth;\n Logger.logTrace(loggerCategory, \"OPC RealityData NOT Geolocated\", () => ({ ...location }));\n }\n const spatialLocation: SpatialLocationAndExtents = { location, worldRange, isGeolocated };\n return spatialLocation;\n }\n}\n\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"OrbitGtTileTree.d.ts","sourceRoot":"","sources":["../../../../src/internal/tile/OrbitGtTileTree.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"OrbitGtTileTree.d.ts","sourceRoot":"","sources":["../../../../src/internal/tile/OrbitGtTileTree.ts"],"names":[],"mappings":"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"}
@@ -274,7 +274,7 @@ class OrbitGtTileTree extends internal_1.TileTree {
274
274
  voxelSize,
275
275
  colorFormat: "bgr",
276
276
  }, this.iModel);
277
- renderGraphic = system.createBatch(renderGraphic, core_common_1.PackedFeatureTable.pack(featureTable), range);
277
+ renderGraphic = system.createBatch((0, core_bentley_1.expectDefined)(renderGraphic), core_common_1.PackedFeatureTable.pack(featureTable), range);
278
278
  args.graphics.add(renderGraphic);
279
279
  this._tileGraphics.set(key, new OrbitGtTileGraphic(renderGraphic, args.context.viewport, args.now));
280
280
  }
@@ -362,7 +362,7 @@ exports.OrbitGtTileTree = OrbitGtTileTree;
362
362
  const dataManager = new core_orbitgt_1.OrbitGtDataManager(pointCloudReader, pointCloudCRS, core_orbitgt_1.PointDataRaw.TYPE);
363
363
  const pointCloudBounds = dataManager.getPointCloudBounds();
364
364
  const pointCloudRange = rangeFromOrbitGt(pointCloudBounds);
365
- const pointCloudCenter = pointCloudRange.localXYZToWorld(.5, .5, .5);
365
+ const pointCloudCenter = (0, core_bentley_1.expectDefined)(pointCloudRange.localXYZToWorld(.5, .5, .5));
366
366
  const addCloudCenter = core_geometry_1.Transform.createTranslation(pointCloudCenter);
367
367
  const ecefTransform = core_geometry_1.Transform.createIdentity();
368
368
  let pointCloudCenterToDb = addCloudCenter;