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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (643) hide show
  1. package/CHANGELOG.md +163 -35
  2. package/lib/cjs/AccuSnap.js +2 -2
  3. package/lib/cjs/AccuSnap.js.map +1 -1
  4. package/lib/cjs/ApproximateTerrainHeights.d.ts +1 -1
  5. package/lib/cjs/ApproximateTerrainHeights.d.ts.map +1 -1
  6. package/lib/cjs/ApproximateTerrainHeights.js +21 -9
  7. package/lib/cjs/ApproximateTerrainHeights.js.map +1 -1
  8. package/lib/cjs/ApproximateTerrainHeightsProps.d.ts +12 -0
  9. package/lib/cjs/ApproximateTerrainHeightsProps.d.ts.map +1 -0
  10. package/lib/cjs/ApproximateTerrainHeightsProps.js +13 -0
  11. package/lib/cjs/ApproximateTerrainHeightsProps.js.map +1 -0
  12. package/lib/cjs/CategorySelectorState.js +1 -1
  13. package/lib/cjs/CategorySelectorState.js.map +1 -1
  14. package/lib/cjs/DisplayStyleState.d.ts +4 -3
  15. package/lib/cjs/DisplayStyleState.d.ts.map +1 -1
  16. package/lib/cjs/DisplayStyleState.js +32 -8
  17. package/lib/cjs/DisplayStyleState.js.map +1 -1
  18. package/lib/cjs/DrawingViewState.d.ts.map +1 -1
  19. package/lib/cjs/DrawingViewState.js +6 -5
  20. package/lib/cjs/DrawingViewState.js.map +1 -1
  21. package/lib/cjs/FrontendLoggerCategory.d.ts +3 -1
  22. package/lib/cjs/FrontendLoggerCategory.d.ts.map +1 -1
  23. package/lib/cjs/FrontendLoggerCategory.js +2 -0
  24. package/lib/cjs/FrontendLoggerCategory.js.map +1 -1
  25. package/lib/cjs/IModelApp.d.ts +8 -4
  26. package/lib/cjs/IModelApp.d.ts.map +1 -1
  27. package/lib/cjs/IModelApp.js +20 -10
  28. package/lib/cjs/IModelApp.js.map +1 -1
  29. package/lib/cjs/IModelConnection.d.ts +3 -5
  30. package/lib/cjs/IModelConnection.d.ts.map +1 -1
  31. package/lib/cjs/IModelConnection.js +4 -10
  32. package/lib/cjs/IModelConnection.js.map +1 -1
  33. package/lib/cjs/ImageUtil.d.ts.map +1 -1
  34. package/lib/cjs/ImageUtil.js +8 -14
  35. package/lib/cjs/ImageUtil.js.map +1 -1
  36. package/lib/cjs/LocalhostIpcApp.d.ts +2 -0
  37. package/lib/cjs/LocalhostIpcApp.d.ts.map +1 -1
  38. package/lib/cjs/LocalhostIpcApp.js +10 -4
  39. package/lib/cjs/LocalhostIpcApp.js.map +1 -1
  40. package/lib/cjs/RealityDataSource.d.ts +60 -14
  41. package/lib/cjs/RealityDataSource.d.ts.map +1 -1
  42. package/lib/cjs/RealityDataSource.js +36 -235
  43. package/lib/cjs/RealityDataSource.js.map +1 -1
  44. package/lib/cjs/RealityDataSourceCesiumIonAssetImpl.d.ts +67 -0
  45. package/lib/cjs/RealityDataSourceCesiumIonAssetImpl.d.ts.map +1 -0
  46. package/lib/cjs/RealityDataSourceCesiumIonAssetImpl.js +166 -0
  47. package/lib/cjs/RealityDataSourceCesiumIonAssetImpl.js.map +1 -0
  48. package/lib/cjs/RealityDataSourceContextShareImpl.d.ts +83 -0
  49. package/lib/cjs/RealityDataSourceContextShareImpl.d.ts.map +1 -0
  50. package/lib/cjs/RealityDataSourceContextShareImpl.js +234 -0
  51. package/lib/cjs/RealityDataSourceContextShareImpl.js.map +1 -0
  52. package/lib/cjs/RealityDataSourceTilesetUrlImpl.d.ts +65 -0
  53. package/lib/cjs/RealityDataSourceTilesetUrlImpl.d.ts.map +1 -0
  54. package/lib/cjs/RealityDataSourceTilesetUrlImpl.js +135 -0
  55. package/lib/cjs/RealityDataSourceTilesetUrlImpl.js.map +1 -0
  56. package/lib/cjs/SheetViewState.js +4 -0
  57. package/lib/cjs/SheetViewState.js.map +1 -1
  58. package/lib/cjs/ViewState.d.ts +8 -0
  59. package/lib/cjs/ViewState.d.ts.map +1 -1
  60. package/lib/cjs/ViewState.js +1 -1
  61. package/lib/cjs/ViewState.js.map +1 -1
  62. package/lib/cjs/Viewport.d.ts +30 -12
  63. package/lib/cjs/Viewport.d.ts.map +1 -1
  64. package/lib/cjs/Viewport.js +43 -1
  65. package/lib/cjs/Viewport.js.map +1 -1
  66. package/lib/cjs/core-frontend.d.ts +6 -4
  67. package/lib/cjs/core-frontend.d.ts.map +1 -1
  68. package/lib/cjs/core-frontend.js +6 -4
  69. package/lib/cjs/core-frontend.js.map +1 -1
  70. package/lib/cjs/extension/Extension.d.ts +48 -0
  71. package/lib/cjs/extension/Extension.d.ts.map +1 -0
  72. package/lib/cjs/extension/Extension.js +18 -0
  73. package/lib/cjs/extension/Extension.js.map +1 -0
  74. package/lib/cjs/extension/ExtensionAdmin.d.ts +64 -0
  75. package/lib/cjs/extension/ExtensionAdmin.d.ts.map +1 -0
  76. package/lib/cjs/extension/ExtensionAdmin.js +106 -0
  77. package/lib/cjs/extension/ExtensionAdmin.js.map +1 -0
  78. package/lib/cjs/extension/ExtensionHost.d.ts +23 -0
  79. package/lib/cjs/extension/ExtensionHost.d.ts.map +1 -0
  80. package/lib/cjs/extension/ExtensionHost.js +26 -0
  81. package/lib/cjs/extension/ExtensionHost.js.map +1 -0
  82. package/lib/cjs/extension/ExtensionImpl.d.ts +21 -0
  83. package/lib/cjs/extension/ExtensionImpl.d.ts.map +1 -0
  84. package/lib/cjs/extension/ExtensionImpl.js +45 -0
  85. package/lib/cjs/extension/ExtensionImpl.js.map +1 -0
  86. package/lib/cjs/extension/ExtensionLoader.d.ts +26 -0
  87. package/lib/cjs/extension/ExtensionLoader.d.ts.map +1 -0
  88. package/lib/cjs/extension/ExtensionLoader.js +10 -0
  89. package/lib/cjs/extension/ExtensionLoader.js.map +1 -0
  90. package/lib/cjs/extension/ExtensionRuntime.d.ts +5 -0
  91. package/lib/cjs/extension/ExtensionRuntime.d.ts.map +1 -0
  92. package/lib/cjs/extension/ExtensionRuntime.js +86 -0
  93. package/lib/cjs/extension/ExtensionRuntime.js.map +1 -0
  94. package/lib/cjs/extension/extensions.d.ts +19 -0
  95. package/lib/cjs/extension/extensions.d.ts.map +1 -0
  96. package/lib/cjs/extension/extensions.js +36 -0
  97. package/lib/cjs/extension/extensions.js.map +1 -0
  98. package/lib/cjs/quantity-formatting/BasicUnitsProvider.d.ts +2 -2
  99. package/lib/cjs/quantity-formatting/BasicUnitsProvider.d.ts.map +1 -1
  100. package/lib/cjs/quantity-formatting/BasicUnitsProvider.js +48 -44
  101. package/lib/cjs/quantity-formatting/BasicUnitsProvider.js.map +1 -1
  102. package/lib/cjs/quantity-formatting/QuantityFormatter.d.ts +90 -80
  103. package/lib/cjs/quantity-formatting/QuantityFormatter.d.ts.map +1 -1
  104. package/lib/cjs/quantity-formatting/QuantityFormatter.js +85 -45
  105. package/lib/cjs/quantity-formatting/QuantityFormatter.js.map +1 -1
  106. package/lib/cjs/quantity-formatting/QuantityTypesEditorSpecs.d.ts +54 -0
  107. package/lib/cjs/quantity-formatting/QuantityTypesEditorSpecs.d.ts.map +1 -0
  108. package/lib/cjs/quantity-formatting/QuantityTypesEditorSpecs.js +32 -0
  109. package/lib/cjs/quantity-formatting/QuantityTypesEditorSpecs.js.map +1 -0
  110. package/lib/cjs/quantity-formatting/UnitsData.d.ts +11 -0
  111. package/lib/cjs/quantity-formatting/UnitsData.d.ts.map +1 -0
  112. package/lib/cjs/quantity-formatting/UnitsData.js +59 -0
  113. package/lib/cjs/quantity-formatting/UnitsData.js.map +1 -0
  114. package/lib/cjs/render/GraphicBranch.d.ts +2 -0
  115. package/lib/cjs/render/GraphicBranch.d.ts.map +1 -1
  116. package/lib/cjs/render/GraphicBranch.js.map +1 -1
  117. package/lib/cjs/render/RenderPlanarClassifier.d.ts +1 -1
  118. package/lib/cjs/render/RenderPlanarClassifier.d.ts.map +1 -1
  119. package/lib/cjs/render/RenderPlanarClassifier.js.map +1 -1
  120. package/lib/cjs/render/RenderSystem.d.ts +12 -7
  121. package/lib/cjs/render/RenderSystem.d.ts.map +1 -1
  122. package/lib/cjs/render/RenderSystem.js +8 -5
  123. package/lib/cjs/render/RenderSystem.js.map +1 -1
  124. package/lib/cjs/render/RenderTarget.d.ts +4 -4
  125. package/lib/cjs/render/RenderTarget.d.ts.map +1 -1
  126. package/lib/cjs/render/RenderTarget.js.map +1 -1
  127. package/lib/cjs/render/Scene.d.ts.map +1 -1
  128. package/lib/cjs/render/Scene.js.map +1 -1
  129. package/lib/cjs/render/primitives/mesh/RealityMeshPrimitive.d.ts +17 -2
  130. package/lib/cjs/render/primitives/mesh/RealityMeshPrimitive.d.ts.map +1 -1
  131. package/lib/cjs/render/primitives/mesh/RealityMeshPrimitive.js +39 -2
  132. package/lib/cjs/render/primitives/mesh/RealityMeshPrimitive.js.map +1 -1
  133. package/lib/cjs/render/webgl/BackgroundMapDrape.js +1 -1
  134. package/lib/cjs/render/webgl/BackgroundMapDrape.js.map +1 -1
  135. package/lib/cjs/render/webgl/BranchState.d.ts +2 -0
  136. package/lib/cjs/render/webgl/BranchState.d.ts.map +1 -1
  137. package/lib/cjs/render/webgl/BranchState.js +5 -3
  138. package/lib/cjs/render/webgl/BranchState.js.map +1 -1
  139. package/lib/cjs/render/webgl/DrawCommand.js +1 -1
  140. package/lib/cjs/render/webgl/DrawCommand.js.map +1 -1
  141. package/lib/cjs/render/webgl/Graphic.d.ts +5 -3
  142. package/lib/cjs/render/webgl/Graphic.d.ts.map +1 -1
  143. package/lib/cjs/render/webgl/Graphic.js +7 -2
  144. package/lib/cjs/render/webgl/Graphic.js.map +1 -1
  145. package/lib/cjs/render/webgl/PlanarClassifier.d.ts +4 -1
  146. package/lib/cjs/render/webgl/PlanarClassifier.d.ts.map +1 -1
  147. package/lib/cjs/render/webgl/PlanarClassifier.js +22 -9
  148. package/lib/cjs/render/webgl/PlanarClassifier.js.map +1 -1
  149. package/lib/cjs/render/webgl/PlanarTextureProjection.d.ts +2 -2
  150. package/lib/cjs/render/webgl/PlanarTextureProjection.d.ts.map +1 -1
  151. package/lib/cjs/render/webgl/PlanarTextureProjection.js +5 -3
  152. package/lib/cjs/render/webgl/PlanarTextureProjection.js.map +1 -1
  153. package/lib/cjs/render/webgl/RealityMesh.d.ts +31 -11
  154. package/lib/cjs/render/webgl/RealityMesh.d.ts.map +1 -1
  155. package/lib/cjs/render/webgl/RealityMesh.js +155 -52
  156. package/lib/cjs/render/webgl/RealityMesh.js.map +1 -1
  157. package/lib/cjs/render/webgl/RenderCommands.d.ts.map +1 -1
  158. package/lib/cjs/render/webgl/RenderCommands.js +4 -0
  159. package/lib/cjs/render/webgl/RenderCommands.js.map +1 -1
  160. package/lib/cjs/render/webgl/SceneCompositor.d.ts +3 -0
  161. package/lib/cjs/render/webgl/SceneCompositor.d.ts.map +1 -1
  162. package/lib/cjs/render/webgl/SceneCompositor.js +45 -19
  163. package/lib/cjs/render/webgl/SceneCompositor.js.map +1 -1
  164. package/lib/cjs/render/webgl/ShaderProgram.d.ts +1 -0
  165. package/lib/cjs/render/webgl/ShaderProgram.d.ts.map +1 -1
  166. package/lib/cjs/render/webgl/ShaderProgram.js +1 -0
  167. package/lib/cjs/render/webgl/ShaderProgram.js.map +1 -1
  168. package/lib/cjs/render/webgl/System.d.ts +9 -9
  169. package/lib/cjs/render/webgl/System.d.ts.map +1 -1
  170. package/lib/cjs/render/webgl/System.js +5 -5
  171. package/lib/cjs/render/webgl/System.js.map +1 -1
  172. package/lib/cjs/render/webgl/Target.d.ts.map +1 -1
  173. package/lib/cjs/render/webgl/Target.js.map +1 -1
  174. package/lib/cjs/render/webgl/glsl/PlanarClassification.js +1 -1
  175. package/lib/cjs/render/webgl/glsl/PlanarClassification.js.map +1 -1
  176. package/lib/cjs/render/webgl/glsl/RealityMesh.d.ts.map +1 -1
  177. package/lib/cjs/render/webgl/glsl/RealityMesh.js +102 -27
  178. package/lib/cjs/render/webgl/glsl/RealityMesh.js.map +1 -1
  179. package/lib/cjs/tile/ClassifierTileTree.d.ts +4 -2
  180. package/lib/cjs/tile/ClassifierTileTree.d.ts.map +1 -1
  181. package/lib/cjs/tile/ClassifierTileTree.js +31 -16
  182. package/lib/cjs/tile/ClassifierTileTree.js.map +1 -1
  183. package/lib/cjs/tile/GltfReader.d.ts +22 -3
  184. package/lib/cjs/tile/GltfReader.d.ts.map +1 -1
  185. package/lib/cjs/tile/GltfReader.js +224 -40
  186. package/lib/cjs/tile/GltfReader.js.map +1 -1
  187. package/lib/cjs/tile/OPCFormatInterpreter.d.ts +22 -0
  188. package/lib/cjs/tile/OPCFormatInterpreter.d.ts.map +1 -0
  189. package/lib/cjs/tile/OPCFormatInterpreter.js +92 -0
  190. package/lib/cjs/tile/OPCFormatInterpreter.js.map +1 -0
  191. package/lib/cjs/tile/PntsReader.d.ts +1 -1
  192. package/lib/cjs/tile/PntsReader.d.ts.map +1 -1
  193. package/lib/cjs/tile/PntsReader.js +170 -36
  194. package/lib/cjs/tile/PntsReader.js.map +1 -1
  195. package/lib/cjs/tile/PrimaryTileTree.d.ts +18 -2
  196. package/lib/cjs/tile/PrimaryTileTree.d.ts.map +1 -1
  197. package/lib/cjs/tile/PrimaryTileTree.js +53 -2
  198. package/lib/cjs/tile/PrimaryTileTree.js.map +1 -1
  199. package/lib/cjs/tile/RealityModelTileTree.d.ts +24 -3
  200. package/lib/cjs/tile/RealityModelTileTree.d.ts.map +1 -1
  201. package/lib/cjs/tile/RealityModelTileTree.js +36 -11
  202. package/lib/cjs/tile/RealityModelTileTree.js.map +1 -1
  203. package/lib/cjs/tile/RealityTile.d.ts +16 -2
  204. package/lib/cjs/tile/RealityTile.d.ts.map +1 -1
  205. package/lib/cjs/tile/RealityTile.js +32 -0
  206. package/lib/cjs/tile/RealityTile.js.map +1 -1
  207. package/lib/cjs/tile/RealityTileDrawArgs.d.ts +4 -1
  208. package/lib/cjs/tile/RealityTileDrawArgs.d.ts.map +1 -1
  209. package/lib/cjs/tile/RealityTileDrawArgs.js +3 -1
  210. package/lib/cjs/tile/RealityTileDrawArgs.js.map +1 -1
  211. package/lib/cjs/tile/RealityTileLoader.d.ts +7 -4
  212. package/lib/cjs/tile/RealityTileLoader.d.ts.map +1 -1
  213. package/lib/cjs/tile/RealityTileLoader.js +19 -5
  214. package/lib/cjs/tile/RealityTileLoader.js.map +1 -1
  215. package/lib/cjs/tile/RealityTileTree.d.ts +4 -1
  216. package/lib/cjs/tile/RealityTileTree.d.ts.map +1 -1
  217. package/lib/cjs/tile/RealityTileTree.js +11 -3
  218. package/lib/cjs/tile/RealityTileTree.js.map +1 -1
  219. package/lib/cjs/tile/ThreeDTileFormatInterpreter.d.ts +52 -0
  220. package/lib/cjs/tile/ThreeDTileFormatInterpreter.d.ts.map +1 -0
  221. package/lib/cjs/tile/ThreeDTileFormatInterpreter.js +179 -0
  222. package/lib/cjs/tile/ThreeDTileFormatInterpreter.js.map +1 -0
  223. package/lib/cjs/tile/TileDrawArgs.d.ts +2 -0
  224. package/lib/cjs/tile/TileDrawArgs.d.ts.map +1 -1
  225. package/lib/cjs/tile/TileDrawArgs.js +5 -0
  226. package/lib/cjs/tile/TileDrawArgs.js.map +1 -1
  227. package/lib/cjs/tile/TileGeometryCollector.d.ts +80 -0
  228. package/lib/cjs/tile/TileGeometryCollector.d.ts.map +1 -0
  229. package/lib/cjs/tile/TileGeometryCollector.js +71 -0
  230. package/lib/cjs/tile/TileGeometryCollector.js.map +1 -0
  231. package/lib/cjs/tile/TileTree.d.ts +7 -1
  232. package/lib/cjs/tile/TileTree.d.ts.map +1 -1
  233. package/lib/cjs/tile/TileTree.js +7 -0
  234. package/lib/cjs/tile/TileTree.js.map +1 -1
  235. package/lib/cjs/tile/TileTreeReference.d.ts +26 -1
  236. package/lib/cjs/tile/TileTreeReference.d.ts.map +1 -1
  237. package/lib/cjs/tile/TileTreeReference.js +40 -0
  238. package/lib/cjs/tile/TileTreeReference.js.map +1 -1
  239. package/lib/cjs/tile/internal.d.ts +4 -0
  240. package/lib/cjs/tile/internal.d.ts.map +1 -1
  241. package/lib/cjs/tile/internal.js +4 -0
  242. package/lib/cjs/tile/internal.js.map +1 -1
  243. package/lib/cjs/tile/map/CesiumTerrainProvider.js +2 -2
  244. package/lib/cjs/tile/map/CesiumTerrainProvider.js.map +1 -1
  245. package/lib/cjs/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.d.ts +5 -3
  246. package/lib/cjs/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.d.ts.map +1 -1
  247. package/lib/cjs/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js +45 -12
  248. package/lib/cjs/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js.map +1 -1
  249. package/lib/cjs/tile/map/ImageryProviders/AzureMapsLayerImageryProvider.d.ts +2 -2
  250. package/lib/cjs/tile/map/ImageryProviders/AzureMapsLayerImageryProvider.d.ts.map +1 -1
  251. package/lib/cjs/tile/map/ImageryProviders/AzureMapsLayerImageryProvider.js.map +1 -1
  252. package/lib/cjs/tile/map/ImageryProviders/BingImageryProvider.d.ts +2 -2
  253. package/lib/cjs/tile/map/ImageryProviders/BingImageryProvider.d.ts.map +1 -1
  254. package/lib/cjs/tile/map/ImageryProviders/BingImageryProvider.js.map +1 -1
  255. package/lib/cjs/tile/map/ImageryProviders/MapBoxLayerImageryProvider.d.ts +2 -2
  256. package/lib/cjs/tile/map/ImageryProviders/MapBoxLayerImageryProvider.d.ts.map +1 -1
  257. package/lib/cjs/tile/map/ImageryProviders/MapBoxLayerImageryProvider.js +4 -3
  258. package/lib/cjs/tile/map/ImageryProviders/MapBoxLayerImageryProvider.js.map +1 -1
  259. package/lib/cjs/tile/map/ImageryProviders/TileUrlImageryProvider.d.ts +2 -2
  260. package/lib/cjs/tile/map/ImageryProviders/TileUrlImageryProvider.d.ts.map +1 -1
  261. package/lib/cjs/tile/map/ImageryProviders/TileUrlImageryProvider.js.map +1 -1
  262. package/lib/cjs/tile/map/ImageryProviders/WmsMapLayerImageryProvider.d.ts +2 -2
  263. package/lib/cjs/tile/map/ImageryProviders/WmsMapLayerImageryProvider.d.ts.map +1 -1
  264. package/lib/cjs/tile/map/ImageryProviders/WmsMapLayerImageryProvider.js +1 -1
  265. package/lib/cjs/tile/map/ImageryProviders/WmsMapLayerImageryProvider.js.map +1 -1
  266. package/lib/cjs/tile/map/ImageryProviders/WmtsMapLayerImageryProvider.d.ts +2 -2
  267. package/lib/cjs/tile/map/ImageryProviders/WmtsMapLayerImageryProvider.d.ts.map +1 -1
  268. package/lib/cjs/tile/map/ImageryProviders/WmtsMapLayerImageryProvider.js.map +1 -1
  269. package/lib/cjs/tile/map/ImageryTileTree.d.ts +2 -3
  270. package/lib/cjs/tile/map/ImageryTileTree.d.ts.map +1 -1
  271. package/lib/cjs/tile/map/ImageryTileTree.js +4 -3
  272. package/lib/cjs/tile/map/ImageryTileTree.js.map +1 -1
  273. package/lib/cjs/tile/map/MapFeatureInfo.d.ts +26 -0
  274. package/lib/cjs/tile/map/MapFeatureInfo.d.ts.map +1 -0
  275. package/lib/cjs/tile/map/MapFeatureInfo.js +19 -0
  276. package/lib/cjs/tile/map/MapFeatureInfo.js.map +1 -0
  277. package/lib/cjs/tile/map/MapLayerFormatRegistry.d.ts +4 -4
  278. package/lib/cjs/tile/map/MapLayerFormatRegistry.d.ts.map +1 -1
  279. package/lib/cjs/tile/map/MapLayerFormatRegistry.js.map +1 -1
  280. package/lib/cjs/tile/map/MapLayerImageryFormats.d.ts +3 -3
  281. package/lib/cjs/tile/map/MapLayerImageryFormats.d.ts.map +1 -1
  282. package/lib/cjs/tile/map/MapLayerImageryFormats.js.map +1 -1
  283. package/lib/cjs/tile/map/MapLayerImageryProvider.d.ts +5 -4
  284. package/lib/cjs/tile/map/MapLayerImageryProvider.d.ts.map +1 -1
  285. package/lib/cjs/tile/map/MapLayerImageryProvider.js +5 -1
  286. package/lib/cjs/tile/map/MapLayerImageryProvider.js.map +1 -1
  287. package/lib/cjs/tile/map/MapLayerSources.d.ts +2 -2
  288. package/lib/cjs/tile/map/MapLayerSources.d.ts.map +1 -1
  289. package/lib/cjs/tile/map/MapLayerSources.js +6 -4
  290. package/lib/cjs/tile/map/MapLayerSources.js.map +1 -1
  291. package/lib/cjs/tile/map/MapLayerTileTreeReference.d.ts +10 -2
  292. package/lib/cjs/tile/map/MapLayerTileTreeReference.d.ts.map +1 -1
  293. package/lib/cjs/tile/map/MapLayerTileTreeReference.js +26 -3
  294. package/lib/cjs/tile/map/MapLayerTileTreeReference.js.map +1 -1
  295. package/lib/cjs/tile/map/MapTile.d.ts +12 -10
  296. package/lib/cjs/tile/map/MapTile.d.ts.map +1 -1
  297. package/lib/cjs/tile/map/MapTile.js +60 -39
  298. package/lib/cjs/tile/map/MapTile.js.map +1 -1
  299. package/lib/cjs/tile/map/MapTileLoader.d.ts +2 -1
  300. package/lib/cjs/tile/map/MapTileLoader.d.ts.map +1 -1
  301. package/lib/cjs/tile/map/MapTileLoader.js +4 -1
  302. package/lib/cjs/tile/map/MapTileLoader.js.map +1 -1
  303. package/lib/cjs/tile/map/MapTileTree.d.ts +18 -8
  304. package/lib/cjs/tile/map/MapTileTree.d.ts.map +1 -1
  305. package/lib/cjs/tile/map/MapTileTree.js +148 -61
  306. package/lib/cjs/tile/map/MapTileTree.js.map +1 -1
  307. package/lib/cjs/tile/map/MapTiledGraphicsProvider.d.ts.map +1 -1
  308. package/lib/cjs/tile/map/MapTiledGraphicsProvider.js +1 -1
  309. package/lib/cjs/tile/map/MapTiledGraphicsProvider.js.map +1 -1
  310. package/lib/cjs/tools/ToolAdmin.d.ts +2 -3
  311. package/lib/cjs/tools/ToolAdmin.d.ts.map +1 -1
  312. package/lib/cjs/tools/ToolAdmin.js +7 -2
  313. package/lib/cjs/tools/ToolAdmin.js.map +1 -1
  314. package/lib/cjs/tools/ViewTool.d.ts +4 -4
  315. package/lib/cjs/tools/ViewTool.d.ts.map +1 -1
  316. package/lib/cjs/tools/ViewTool.js +1 -1
  317. package/lib/cjs/tools/ViewTool.js.map +1 -1
  318. package/lib/esm/AccuSnap.js +2 -2
  319. package/lib/esm/AccuSnap.js.map +1 -1
  320. package/lib/esm/ApproximateTerrainHeights.d.ts +1 -1
  321. package/lib/esm/ApproximateTerrainHeights.d.ts.map +1 -1
  322. package/lib/esm/ApproximateTerrainHeights.js +2 -9
  323. package/lib/esm/ApproximateTerrainHeights.js.map +1 -1
  324. package/lib/esm/ApproximateTerrainHeightsProps.d.ts +12 -0
  325. package/lib/esm/ApproximateTerrainHeightsProps.d.ts.map +1 -0
  326. package/lib/esm/ApproximateTerrainHeightsProps.js +10 -0
  327. package/lib/esm/ApproximateTerrainHeightsProps.js.map +1 -0
  328. package/lib/esm/CategorySelectorState.js +1 -1
  329. package/lib/esm/CategorySelectorState.js.map +1 -1
  330. package/lib/esm/DisplayStyleState.d.ts +4 -3
  331. package/lib/esm/DisplayStyleState.d.ts.map +1 -1
  332. package/lib/esm/DisplayStyleState.js +34 -10
  333. package/lib/esm/DisplayStyleState.js.map +1 -1
  334. package/lib/esm/DrawingViewState.d.ts.map +1 -1
  335. package/lib/esm/DrawingViewState.js +6 -5
  336. package/lib/esm/DrawingViewState.js.map +1 -1
  337. package/lib/esm/FrontendLoggerCategory.d.ts +3 -1
  338. package/lib/esm/FrontendLoggerCategory.d.ts.map +1 -1
  339. package/lib/esm/FrontendLoggerCategory.js +2 -0
  340. package/lib/esm/FrontendLoggerCategory.js.map +1 -1
  341. package/lib/esm/IModelApp.d.ts +8 -4
  342. package/lib/esm/IModelApp.d.ts.map +1 -1
  343. package/lib/esm/IModelApp.js +20 -10
  344. package/lib/esm/IModelApp.js.map +1 -1
  345. package/lib/esm/IModelConnection.d.ts +3 -5
  346. package/lib/esm/IModelConnection.d.ts.map +1 -1
  347. package/lib/esm/IModelConnection.js +5 -11
  348. package/lib/esm/IModelConnection.js.map +1 -1
  349. package/lib/esm/ImageUtil.d.ts.map +1 -1
  350. package/lib/esm/ImageUtil.js +8 -14
  351. package/lib/esm/ImageUtil.js.map +1 -1
  352. package/lib/esm/LocalhostIpcApp.d.ts +2 -0
  353. package/lib/esm/LocalhostIpcApp.d.ts.map +1 -1
  354. package/lib/esm/LocalhostIpcApp.js +10 -4
  355. package/lib/esm/LocalhostIpcApp.js.map +1 -1
  356. package/lib/esm/RealityDataSource.d.ts +60 -14
  357. package/lib/esm/RealityDataSource.d.ts.map +1 -1
  358. package/lib/esm/RealityDataSource.js +37 -237
  359. package/lib/esm/RealityDataSource.js.map +1 -1
  360. package/lib/esm/RealityDataSourceCesiumIonAssetImpl.d.ts +67 -0
  361. package/lib/esm/RealityDataSourceCesiumIonAssetImpl.d.ts.map +1 -0
  362. package/lib/esm/RealityDataSourceCesiumIonAssetImpl.js +162 -0
  363. package/lib/esm/RealityDataSourceCesiumIonAssetImpl.js.map +1 -0
  364. package/lib/esm/RealityDataSourceContextShareImpl.d.ts +83 -0
  365. package/lib/esm/RealityDataSourceContextShareImpl.d.ts.map +1 -0
  366. package/lib/esm/RealityDataSourceContextShareImpl.js +230 -0
  367. package/lib/esm/RealityDataSourceContextShareImpl.js.map +1 -0
  368. package/lib/esm/RealityDataSourceTilesetUrlImpl.d.ts +65 -0
  369. package/lib/esm/RealityDataSourceTilesetUrlImpl.d.ts.map +1 -0
  370. package/lib/esm/RealityDataSourceTilesetUrlImpl.js +131 -0
  371. package/lib/esm/RealityDataSourceTilesetUrlImpl.js.map +1 -0
  372. package/lib/esm/SheetViewState.js +4 -0
  373. package/lib/esm/SheetViewState.js.map +1 -1
  374. package/lib/esm/ViewState.d.ts +8 -0
  375. package/lib/esm/ViewState.d.ts.map +1 -1
  376. package/lib/esm/ViewState.js +1 -1
  377. package/lib/esm/ViewState.js.map +1 -1
  378. package/lib/esm/Viewport.d.ts +30 -12
  379. package/lib/esm/Viewport.d.ts.map +1 -1
  380. package/lib/esm/Viewport.js +43 -1
  381. package/lib/esm/Viewport.js.map +1 -1
  382. package/lib/esm/core-frontend.d.ts +6 -4
  383. package/lib/esm/core-frontend.d.ts.map +1 -1
  384. package/lib/esm/core-frontend.js +6 -4
  385. package/lib/esm/core-frontend.js.map +1 -1
  386. package/lib/esm/extension/Extension.d.ts +48 -0
  387. package/lib/esm/extension/Extension.d.ts.map +1 -0
  388. package/lib/esm/extension/Extension.js +15 -0
  389. package/lib/esm/extension/Extension.js.map +1 -0
  390. package/lib/esm/extension/ExtensionAdmin.d.ts +64 -0
  391. package/lib/esm/extension/ExtensionAdmin.d.ts.map +1 -0
  392. package/lib/esm/extension/ExtensionAdmin.js +102 -0
  393. package/lib/esm/extension/ExtensionAdmin.js.map +1 -0
  394. package/lib/esm/extension/ExtensionHost.d.ts +23 -0
  395. package/lib/esm/extension/ExtensionHost.d.ts.map +1 -0
  396. package/lib/esm/extension/ExtensionHost.js +22 -0
  397. package/lib/esm/extension/ExtensionHost.js.map +1 -0
  398. package/lib/esm/extension/ExtensionImpl.d.ts +21 -0
  399. package/lib/esm/extension/ExtensionImpl.d.ts.map +1 -0
  400. package/lib/esm/extension/ExtensionImpl.js +40 -0
  401. package/lib/esm/extension/ExtensionImpl.js.map +1 -0
  402. package/lib/esm/extension/ExtensionLoader.d.ts +26 -0
  403. package/lib/esm/extension/ExtensionLoader.d.ts.map +1 -0
  404. package/lib/esm/extension/ExtensionLoader.js +9 -0
  405. package/lib/esm/extension/ExtensionLoader.js.map +1 -0
  406. package/lib/esm/extension/ExtensionRuntime.d.ts +5 -0
  407. package/lib/esm/extension/ExtensionRuntime.d.ts.map +1 -0
  408. package/lib/esm/extension/ExtensionRuntime.js +84 -0
  409. package/lib/esm/extension/ExtensionRuntime.js.map +1 -0
  410. package/lib/esm/extension/extensions.d.ts +19 -0
  411. package/lib/esm/extension/extensions.d.ts.map +1 -0
  412. package/lib/esm/extension/extensions.js +24 -0
  413. package/lib/esm/extension/extensions.js.map +1 -0
  414. package/lib/esm/quantity-formatting/BasicUnitsProvider.d.ts +2 -2
  415. package/lib/esm/quantity-formatting/BasicUnitsProvider.d.ts.map +1 -1
  416. package/lib/esm/quantity-formatting/BasicUnitsProvider.js +48 -44
  417. package/lib/esm/quantity-formatting/BasicUnitsProvider.js.map +1 -1
  418. package/lib/esm/quantity-formatting/QuantityFormatter.d.ts +90 -80
  419. package/lib/esm/quantity-formatting/QuantityFormatter.d.ts.map +1 -1
  420. package/lib/esm/quantity-formatting/QuantityFormatter.js +85 -42
  421. package/lib/esm/quantity-formatting/QuantityFormatter.js.map +1 -1
  422. package/lib/esm/quantity-formatting/QuantityTypesEditorSpecs.d.ts +54 -0
  423. package/lib/esm/quantity-formatting/QuantityTypesEditorSpecs.d.ts.map +1 -0
  424. package/lib/esm/quantity-formatting/QuantityTypesEditorSpecs.js +26 -0
  425. package/lib/esm/quantity-formatting/QuantityTypesEditorSpecs.js.map +1 -0
  426. package/lib/esm/quantity-formatting/UnitsData.d.ts +11 -0
  427. package/lib/esm/quantity-formatting/UnitsData.d.ts.map +1 -0
  428. package/lib/esm/quantity-formatting/UnitsData.js +56 -0
  429. package/lib/esm/quantity-formatting/UnitsData.js.map +1 -0
  430. package/lib/esm/render/GraphicBranch.d.ts +2 -0
  431. package/lib/esm/render/GraphicBranch.d.ts.map +1 -1
  432. package/lib/esm/render/GraphicBranch.js.map +1 -1
  433. package/lib/esm/render/RenderPlanarClassifier.d.ts +1 -1
  434. package/lib/esm/render/RenderPlanarClassifier.d.ts.map +1 -1
  435. package/lib/esm/render/RenderPlanarClassifier.js.map +1 -1
  436. package/lib/esm/render/RenderSystem.d.ts +12 -7
  437. package/lib/esm/render/RenderSystem.d.ts.map +1 -1
  438. package/lib/esm/render/RenderSystem.js +6 -3
  439. package/lib/esm/render/RenderSystem.js.map +1 -1
  440. package/lib/esm/render/RenderTarget.d.ts +4 -4
  441. package/lib/esm/render/RenderTarget.d.ts.map +1 -1
  442. package/lib/esm/render/RenderTarget.js.map +1 -1
  443. package/lib/esm/render/Scene.d.ts.map +1 -1
  444. package/lib/esm/render/Scene.js.map +1 -1
  445. package/lib/esm/render/primitives/mesh/RealityMeshPrimitive.d.ts +17 -2
  446. package/lib/esm/render/primitives/mesh/RealityMeshPrimitive.d.ts.map +1 -1
  447. package/lib/esm/render/primitives/mesh/RealityMeshPrimitive.js +39 -2
  448. package/lib/esm/render/primitives/mesh/RealityMeshPrimitive.js.map +1 -1
  449. package/lib/esm/render/webgl/BackgroundMapDrape.js +1 -1
  450. package/lib/esm/render/webgl/BackgroundMapDrape.js.map +1 -1
  451. package/lib/esm/render/webgl/BranchState.d.ts +2 -0
  452. package/lib/esm/render/webgl/BranchState.d.ts.map +1 -1
  453. package/lib/esm/render/webgl/BranchState.js +5 -3
  454. package/lib/esm/render/webgl/BranchState.js.map +1 -1
  455. package/lib/esm/render/webgl/DrawCommand.js +1 -1
  456. package/lib/esm/render/webgl/DrawCommand.js.map +1 -1
  457. package/lib/esm/render/webgl/Graphic.d.ts +5 -3
  458. package/lib/esm/render/webgl/Graphic.d.ts.map +1 -1
  459. package/lib/esm/render/webgl/Graphic.js +7 -2
  460. package/lib/esm/render/webgl/Graphic.js.map +1 -1
  461. package/lib/esm/render/webgl/PlanarClassifier.d.ts +4 -1
  462. package/lib/esm/render/webgl/PlanarClassifier.d.ts.map +1 -1
  463. package/lib/esm/render/webgl/PlanarClassifier.js +22 -9
  464. package/lib/esm/render/webgl/PlanarClassifier.js.map +1 -1
  465. package/lib/esm/render/webgl/PlanarTextureProjection.d.ts +2 -2
  466. package/lib/esm/render/webgl/PlanarTextureProjection.d.ts.map +1 -1
  467. package/lib/esm/render/webgl/PlanarTextureProjection.js +5 -3
  468. package/lib/esm/render/webgl/PlanarTextureProjection.js.map +1 -1
  469. package/lib/esm/render/webgl/RealityMesh.d.ts +31 -11
  470. package/lib/esm/render/webgl/RealityMesh.d.ts.map +1 -1
  471. package/lib/esm/render/webgl/RealityMesh.js +155 -52
  472. package/lib/esm/render/webgl/RealityMesh.js.map +1 -1
  473. package/lib/esm/render/webgl/RenderCommands.d.ts.map +1 -1
  474. package/lib/esm/render/webgl/RenderCommands.js +4 -0
  475. package/lib/esm/render/webgl/RenderCommands.js.map +1 -1
  476. package/lib/esm/render/webgl/SceneCompositor.d.ts +3 -0
  477. package/lib/esm/render/webgl/SceneCompositor.d.ts.map +1 -1
  478. package/lib/esm/render/webgl/SceneCompositor.js +45 -19
  479. package/lib/esm/render/webgl/SceneCompositor.js.map +1 -1
  480. package/lib/esm/render/webgl/ShaderProgram.d.ts +1 -0
  481. package/lib/esm/render/webgl/ShaderProgram.d.ts.map +1 -1
  482. package/lib/esm/render/webgl/ShaderProgram.js +1 -0
  483. package/lib/esm/render/webgl/ShaderProgram.js.map +1 -1
  484. package/lib/esm/render/webgl/System.d.ts +9 -9
  485. package/lib/esm/render/webgl/System.d.ts.map +1 -1
  486. package/lib/esm/render/webgl/System.js +6 -6
  487. package/lib/esm/render/webgl/System.js.map +1 -1
  488. package/lib/esm/render/webgl/Target.d.ts.map +1 -1
  489. package/lib/esm/render/webgl/Target.js.map +1 -1
  490. package/lib/esm/render/webgl/glsl/PlanarClassification.js +1 -1
  491. package/lib/esm/render/webgl/glsl/PlanarClassification.js.map +1 -1
  492. package/lib/esm/render/webgl/glsl/RealityMesh.d.ts.map +1 -1
  493. package/lib/esm/render/webgl/glsl/RealityMesh.js +103 -28
  494. package/lib/esm/render/webgl/glsl/RealityMesh.js.map +1 -1
  495. package/lib/esm/tile/ClassifierTileTree.d.ts +4 -2
  496. package/lib/esm/tile/ClassifierTileTree.d.ts.map +1 -1
  497. package/lib/esm/tile/ClassifierTileTree.js +32 -17
  498. package/lib/esm/tile/ClassifierTileTree.js.map +1 -1
  499. package/lib/esm/tile/GltfReader.d.ts +22 -3
  500. package/lib/esm/tile/GltfReader.d.ts.map +1 -1
  501. package/lib/esm/tile/GltfReader.js +207 -42
  502. package/lib/esm/tile/GltfReader.js.map +1 -1
  503. package/lib/esm/tile/OPCFormatInterpreter.d.ts +22 -0
  504. package/lib/esm/tile/OPCFormatInterpreter.d.ts.map +1 -0
  505. package/lib/esm/tile/OPCFormatInterpreter.js +88 -0
  506. package/lib/esm/tile/OPCFormatInterpreter.js.map +1 -0
  507. package/lib/esm/tile/PntsReader.d.ts +1 -1
  508. package/lib/esm/tile/PntsReader.d.ts.map +1 -1
  509. package/lib/esm/tile/PntsReader.js +154 -39
  510. package/lib/esm/tile/PntsReader.js.map +1 -1
  511. package/lib/esm/tile/PrimaryTileTree.d.ts +18 -2
  512. package/lib/esm/tile/PrimaryTileTree.d.ts.map +1 -1
  513. package/lib/esm/tile/PrimaryTileTree.js +51 -2
  514. package/lib/esm/tile/PrimaryTileTree.js.map +1 -1
  515. package/lib/esm/tile/RealityModelTileTree.d.ts +24 -3
  516. package/lib/esm/tile/RealityModelTileTree.d.ts.map +1 -1
  517. package/lib/esm/tile/RealityModelTileTree.js +36 -12
  518. package/lib/esm/tile/RealityModelTileTree.js.map +1 -1
  519. package/lib/esm/tile/RealityTile.d.ts +16 -2
  520. package/lib/esm/tile/RealityTile.d.ts.map +1 -1
  521. package/lib/esm/tile/RealityTile.js +32 -0
  522. package/lib/esm/tile/RealityTile.js.map +1 -1
  523. package/lib/esm/tile/RealityTileDrawArgs.d.ts +4 -1
  524. package/lib/esm/tile/RealityTileDrawArgs.d.ts.map +1 -1
  525. package/lib/esm/tile/RealityTileDrawArgs.js +3 -1
  526. package/lib/esm/tile/RealityTileDrawArgs.js.map +1 -1
  527. package/lib/esm/tile/RealityTileLoader.d.ts +7 -4
  528. package/lib/esm/tile/RealityTileLoader.d.ts.map +1 -1
  529. package/lib/esm/tile/RealityTileLoader.js +19 -5
  530. package/lib/esm/tile/RealityTileLoader.js.map +1 -1
  531. package/lib/esm/tile/RealityTileTree.d.ts +4 -1
  532. package/lib/esm/tile/RealityTileTree.d.ts.map +1 -1
  533. package/lib/esm/tile/RealityTileTree.js +13 -5
  534. package/lib/esm/tile/RealityTileTree.js.map +1 -1
  535. package/lib/esm/tile/ThreeDTileFormatInterpreter.d.ts +52 -0
  536. package/lib/esm/tile/ThreeDTileFormatInterpreter.d.ts.map +1 -0
  537. package/lib/esm/tile/ThreeDTileFormatInterpreter.js +175 -0
  538. package/lib/esm/tile/ThreeDTileFormatInterpreter.js.map +1 -0
  539. package/lib/esm/tile/TileDrawArgs.d.ts +2 -0
  540. package/lib/esm/tile/TileDrawArgs.d.ts.map +1 -1
  541. package/lib/esm/tile/TileDrawArgs.js +5 -0
  542. package/lib/esm/tile/TileDrawArgs.js.map +1 -1
  543. package/lib/esm/tile/TileGeometryCollector.d.ts +80 -0
  544. package/lib/esm/tile/TileGeometryCollector.d.ts.map +1 -0
  545. package/lib/esm/tile/TileGeometryCollector.js +67 -0
  546. package/lib/esm/tile/TileGeometryCollector.js.map +1 -0
  547. package/lib/esm/tile/TileTree.d.ts +7 -1
  548. package/lib/esm/tile/TileTree.d.ts.map +1 -1
  549. package/lib/esm/tile/TileTree.js +7 -0
  550. package/lib/esm/tile/TileTree.js.map +1 -1
  551. package/lib/esm/tile/TileTreeReference.d.ts +26 -1
  552. package/lib/esm/tile/TileTreeReference.d.ts.map +1 -1
  553. package/lib/esm/tile/TileTreeReference.js +42 -2
  554. package/lib/esm/tile/TileTreeReference.js.map +1 -1
  555. package/lib/esm/tile/internal.d.ts +4 -0
  556. package/lib/esm/tile/internal.d.ts.map +1 -1
  557. package/lib/esm/tile/internal.js +4 -0
  558. package/lib/esm/tile/internal.js.map +1 -1
  559. package/lib/esm/tile/map/CesiumTerrainProvider.js +2 -2
  560. package/lib/esm/tile/map/CesiumTerrainProvider.js.map +1 -1
  561. package/lib/esm/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.d.ts +5 -3
  562. package/lib/esm/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.d.ts.map +1 -1
  563. package/lib/esm/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js +46 -13
  564. package/lib/esm/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js.map +1 -1
  565. package/lib/esm/tile/map/ImageryProviders/AzureMapsLayerImageryProvider.d.ts +2 -2
  566. package/lib/esm/tile/map/ImageryProviders/AzureMapsLayerImageryProvider.d.ts.map +1 -1
  567. package/lib/esm/tile/map/ImageryProviders/AzureMapsLayerImageryProvider.js.map +1 -1
  568. package/lib/esm/tile/map/ImageryProviders/BingImageryProvider.d.ts +2 -2
  569. package/lib/esm/tile/map/ImageryProviders/BingImageryProvider.d.ts.map +1 -1
  570. package/lib/esm/tile/map/ImageryProviders/BingImageryProvider.js.map +1 -1
  571. package/lib/esm/tile/map/ImageryProviders/MapBoxLayerImageryProvider.d.ts +2 -2
  572. package/lib/esm/tile/map/ImageryProviders/MapBoxLayerImageryProvider.d.ts.map +1 -1
  573. package/lib/esm/tile/map/ImageryProviders/MapBoxLayerImageryProvider.js +4 -3
  574. package/lib/esm/tile/map/ImageryProviders/MapBoxLayerImageryProvider.js.map +1 -1
  575. package/lib/esm/tile/map/ImageryProviders/TileUrlImageryProvider.d.ts +2 -2
  576. package/lib/esm/tile/map/ImageryProviders/TileUrlImageryProvider.d.ts.map +1 -1
  577. package/lib/esm/tile/map/ImageryProviders/TileUrlImageryProvider.js.map +1 -1
  578. package/lib/esm/tile/map/ImageryProviders/WmsMapLayerImageryProvider.d.ts +2 -2
  579. package/lib/esm/tile/map/ImageryProviders/WmsMapLayerImageryProvider.d.ts.map +1 -1
  580. package/lib/esm/tile/map/ImageryProviders/WmsMapLayerImageryProvider.js +1 -1
  581. package/lib/esm/tile/map/ImageryProviders/WmsMapLayerImageryProvider.js.map +1 -1
  582. package/lib/esm/tile/map/ImageryProviders/WmtsMapLayerImageryProvider.d.ts +2 -2
  583. package/lib/esm/tile/map/ImageryProviders/WmtsMapLayerImageryProvider.d.ts.map +1 -1
  584. package/lib/esm/tile/map/ImageryProviders/WmtsMapLayerImageryProvider.js.map +1 -1
  585. package/lib/esm/tile/map/ImageryTileTree.d.ts +2 -3
  586. package/lib/esm/tile/map/ImageryTileTree.d.ts.map +1 -1
  587. package/lib/esm/tile/map/ImageryTileTree.js +4 -3
  588. package/lib/esm/tile/map/ImageryTileTree.js.map +1 -1
  589. package/lib/esm/tile/map/MapFeatureInfo.d.ts +26 -0
  590. package/lib/esm/tile/map/MapFeatureInfo.d.ts.map +1 -0
  591. package/lib/esm/tile/map/MapFeatureInfo.js +15 -0
  592. package/lib/esm/tile/map/MapFeatureInfo.js.map +1 -0
  593. package/lib/esm/tile/map/MapLayerFormatRegistry.d.ts +4 -4
  594. package/lib/esm/tile/map/MapLayerFormatRegistry.d.ts.map +1 -1
  595. package/lib/esm/tile/map/MapLayerFormatRegistry.js.map +1 -1
  596. package/lib/esm/tile/map/MapLayerImageryFormats.d.ts +3 -3
  597. package/lib/esm/tile/map/MapLayerImageryFormats.d.ts.map +1 -1
  598. package/lib/esm/tile/map/MapLayerImageryFormats.js.map +1 -1
  599. package/lib/esm/tile/map/MapLayerImageryProvider.d.ts +5 -4
  600. package/lib/esm/tile/map/MapLayerImageryProvider.d.ts.map +1 -1
  601. package/lib/esm/tile/map/MapLayerImageryProvider.js +5 -1
  602. package/lib/esm/tile/map/MapLayerImageryProvider.js.map +1 -1
  603. package/lib/esm/tile/map/MapLayerSources.d.ts +2 -2
  604. package/lib/esm/tile/map/MapLayerSources.d.ts.map +1 -1
  605. package/lib/esm/tile/map/MapLayerSources.js +6 -4
  606. package/lib/esm/tile/map/MapLayerSources.js.map +1 -1
  607. package/lib/esm/tile/map/MapLayerTileTreeReference.d.ts +10 -2
  608. package/lib/esm/tile/map/MapLayerTileTreeReference.d.ts.map +1 -1
  609. package/lib/esm/tile/map/MapLayerTileTreeReference.js +25 -3
  610. package/lib/esm/tile/map/MapLayerTileTreeReference.js.map +1 -1
  611. package/lib/esm/tile/map/MapTile.d.ts +12 -10
  612. package/lib/esm/tile/map/MapTile.d.ts.map +1 -1
  613. package/lib/esm/tile/map/MapTile.js +60 -39
  614. package/lib/esm/tile/map/MapTile.js.map +1 -1
  615. package/lib/esm/tile/map/MapTileLoader.d.ts +2 -1
  616. package/lib/esm/tile/map/MapTileLoader.d.ts.map +1 -1
  617. package/lib/esm/tile/map/MapTileLoader.js +4 -1
  618. package/lib/esm/tile/map/MapTileLoader.js.map +1 -1
  619. package/lib/esm/tile/map/MapTileTree.d.ts +18 -8
  620. package/lib/esm/tile/map/MapTileTree.d.ts.map +1 -1
  621. package/lib/esm/tile/map/MapTileTree.js +150 -63
  622. package/lib/esm/tile/map/MapTileTree.js.map +1 -1
  623. package/lib/esm/tile/map/MapTiledGraphicsProvider.d.ts.map +1 -1
  624. package/lib/esm/tile/map/MapTiledGraphicsProvider.js +2 -2
  625. package/lib/esm/tile/map/MapTiledGraphicsProvider.js.map +1 -1
  626. package/lib/esm/tools/ToolAdmin.d.ts +2 -3
  627. package/lib/esm/tools/ToolAdmin.d.ts.map +1 -1
  628. package/lib/esm/tools/ToolAdmin.js +8 -3
  629. package/lib/esm/tools/ToolAdmin.js.map +1 -1
  630. package/lib/esm/tools/ViewTool.d.ts +4 -4
  631. package/lib/esm/tools/ViewTool.d.ts.map +1 -1
  632. package/lib/esm/tools/ViewTool.js +1 -1
  633. package/lib/esm/tools/ViewTool.js.map +1 -1
  634. package/package.json +22 -20
  635. package/lib/cjs/tile/DracoDecoder.d.ts +0 -20
  636. package/lib/cjs/tile/DracoDecoder.d.ts.map +0 -1
  637. package/lib/cjs/tile/DracoDecoder.js +0 -169
  638. package/lib/cjs/tile/DracoDecoder.js.map +0 -1
  639. package/lib/esm/tile/DracoDecoder.d.ts +0 -20
  640. package/lib/esm/tile/DracoDecoder.d.ts.map +0 -1
  641. package/lib/esm/tile/DracoDecoder.js +0 -165
  642. package/lib/esm/tile/DracoDecoder.js.map +0 -1
  643. package/lib/public/assets/approximateTerrainHeights.json +0 -1
@@ -1,10 +1,10 @@
1
1
  /** @packageDocumentation
2
2
  * @module Rendering
3
3
  */
4
- import { Map4d, Matrix4d, Plane3dByOriginAndUnitNormal, Range1d, Transform } from "@itwin/core-geometry";
5
4
  import { Frustum } from "@itwin/core-common";
6
- import { SceneContext } from "../../ViewContext";
5
+ import { Map4d, Matrix4d, Plane3dByOriginAndUnitNormal, Range1d, Transform } from "@itwin/core-geometry";
7
6
  import { Tile, TileTreeReference } from "../../tile/internal";
7
+ import { SceneContext } from "../../ViewContext";
8
8
  import { ViewState3d } from "../../ViewState";
9
9
  import { RenderState } from "./RenderState";
10
10
  import { Target } from "./Target";
@@ -1 +1 @@
1
- {"version":3,"file":"PlanarTextureProjection.d.ts","sourceRoot":"","sources":["../../../../src/render/webgl/PlanarTextureProjection.ts"],"names":[],"mappings":"AAKA;;GAEG;AAEH,OAAO,EACgD,KAAK,EAAY,QAAQ,EAAE,4BAA4B,EAAW,OAAO,EACvH,SAAS,EACjB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,OAAO,EAAkC,MAAM,oBAAoB,CAAC;AAE7E,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,IAAI,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAC9D,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAGlC,qBAAa,uBAAuB;IAClC,OAAO,CAAC,MAAM,CAAC,wBAAwB,CAA4H;WAErJ,8BAA8B,CAAC,YAAY,EAAE,4BAA4B,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,EAAE;QAAE,KAAK,EAAE,IAAI,EAAE,CAAC;QAAC,QAAQ,EAAE,SAAS,CAAA;KAAE,EAAE,SAAS,EAAE,iBAAiB,EAAE,EAAE,SAAS,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,OAAO,GAAG;QAAE,cAAc,CAAC,EAAE,OAAO,CAAC;QAAC,cAAc,CAAC,EAAE,KAAK,CAAC;QAAC,gBAAgB,CAAC,EAAE,QAAQ,CAAC;QAAC,YAAY,CAAC,EAAE,OAAO,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE;WA6I/Y,uBAAuB,CAAC,MAAM,EAAE,MAAM;;;;CAsBrD"}
1
+ {"version":3,"file":"PlanarTextureProjection.d.ts","sourceRoot":"","sources":["../../../../src/render/webgl/PlanarTextureProjection.ts"],"names":[],"mappings":"AAKA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAkC,MAAM,oBAAoB,CAAC;AAC7E,OAAO,EACgD,KAAK,EAAY,QAAQ,EAAE,4BAA4B,EAAW,OAAO,EACvH,SAAS,EACjB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAAE,IAAI,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAKlC,qBAAa,uBAAuB;IAClC,OAAO,CAAC,MAAM,CAAC,wBAAwB,CAA4H;WAErJ,8BAA8B,CAAC,YAAY,EAAE,4BAA4B,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,EAAE;QAAE,KAAK,EAAE,IAAI,EAAE,CAAC;QAAC,QAAQ,EAAE,SAAS,CAAA;KAAE,EAAE,SAAS,EAAE,iBAAiB,EAAE,EAAE,SAAS,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,OAAO,GAAG;QAAE,cAAc,CAAC,EAAE,OAAO,CAAC;QAAC,cAAc,CAAC,EAAE,KAAK,CAAC;QAAC,gBAAgB,CAAC,EAAE,QAAQ,CAAC;QAAC,YAAY,CAAC,EAAE,OAAO,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE;WA6I/Y,uBAAuB,CAAC,MAAM,EAAE,MAAM;;;;CAsBrD"}
@@ -5,11 +5,13 @@
5
5
  /** @packageDocumentation
6
6
  * @module Rendering
7
7
  */
8
- import { ClipUtilities, ConvexClipPlaneSet, Map4d, Matrix3d, Matrix4d, Plane3dByOriginAndUnitNormal, Point3d, Range2d, Range3d, Ray3d, Transform, } from "@itwin/core-geometry";
9
8
  import { Frustum, FrustumPlanes, Npc, RenderMode } from "@itwin/core-common";
9
+ import { ClipUtilities, ConvexClipPlaneSet, Map4d, Matrix3d, Matrix4d, Plane3dByOriginAndUnitNormal, Point3d, Range2d, Range3d, Ray3d, Transform, } from "@itwin/core-geometry";
10
10
  import { ApproximateTerrainHeights } from "../../ApproximateTerrainHeights";
11
11
  import { RenderState } from "./RenderState";
12
12
  const scratchRange = Range3d.createNull();
13
+ const scratchMap4d = Map4d.createIdentity();
14
+ const scratchMatrix4d = Matrix4d.createIdentity();
13
15
  export class PlanarTextureProjection {
14
16
  static computePlanarTextureProjection(texturePlane, sceneContext, target, drapeRefs, viewState, textureWidth, textureHeight, _heightRange) {
15
17
  const textureZ = texturePlane.getNormalRef();
@@ -130,8 +132,8 @@ export class PlanarTextureProjection {
130
132
  return {};
131
133
  }
132
134
  const worldToNpc = PlanarTextureProjection._postProjectionMatrixNpc.multiplyMatrixMatrix(frustumMap.transform0);
133
- const npcToView = Map4d.createBoxMap(Point3d.create(0, 0, 0), Point3d.create(1, 1, 1), Point3d.create(0, 0, 0), Point3d.create(textureWidth, textureHeight, 1));
134
- const npcToWorld = worldToNpc.createInverse();
135
+ const npcToView = Map4d.createBoxMap(Point3d.create(0, 0, 0), Point3d.create(1, 1, 1), Point3d.create(0, 0, 0), Point3d.create(textureWidth, textureHeight, 1), scratchMap4d);
136
+ const npcToWorld = worldToNpc.createInverse(scratchMatrix4d);
135
137
  if (undefined === npcToWorld) {
136
138
  return {};
137
139
  }
@@ -1 +1 @@
1
- {"version":3,"file":"PlanarTextureProjection.js","sourceRoot":"","sources":["../../../../src/render/webgl/PlanarTextureProjection.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n\r\n/** @packageDocumentation\r\n * @module Rendering\r\n */\r\n\r\nimport {\r\n ClipUtilities, ConvexClipPlaneSet, GrowableXYZArray, Map4d, Matrix3d, Matrix4d, Plane3dByOriginAndUnitNormal, Point3d, Range1d, Range2d, Range3d,\r\n Ray3d, Transform,\r\n} from \"@itwin/core-geometry\";\r\nimport { Frustum, FrustumPlanes, Npc, RenderMode } from \"@itwin/core-common\";\r\nimport { ApproximateTerrainHeights } from \"../../ApproximateTerrainHeights\";\r\nimport { SceneContext } from \"../../ViewContext\";\r\nimport { Tile, TileTreeReference } from \"../../tile/internal\";\r\nimport { ViewState3d } from \"../../ViewState\";\r\nimport { RenderState } from \"./RenderState\";\r\nimport { Target } from \"./Target\";\r\n\r\nconst scratchRange = Range3d.createNull();\r\nexport class PlanarTextureProjection {\r\n private static _postProjectionMatrixNpc = Matrix4d.createRowValues(/* Row 1 */ 0, 1, 0, 0, /* Row 1 */ 0, 0, 1, 0, /* Row 3 */ 1, 0, 0, 0, /* Row 4 */ 0, 0, 0, 1);\r\n\r\n public static computePlanarTextureProjection(texturePlane: Plane3dByOriginAndUnitNormal, sceneContext: SceneContext, target: { tiles: Tile[], location: Transform }, drapeRefs: TileTreeReference[], viewState: ViewState3d, textureWidth: number, textureHeight: number, _heightRange?: Range1d): { textureFrustum?: Frustum, worldToViewMap?: Map4d, projectionMatrix?: Matrix4d, debugFrustum?: Frustum, zValue?: number } {\r\n const textureZ = texturePlane.getNormalRef();\r\n const viewingSpace = sceneContext.viewingSpace;\r\n const viewX = viewingSpace.rotation.rowX();\r\n const viewZ = viewingSpace.rotation.rowZ();\r\n const minCrossMagnitude = 1.0E-4;\r\n\r\n if (viewZ === undefined)\r\n return {}; // View without depth?....\r\n\r\n let textureX = viewZ.crossProduct(textureZ);\r\n let textureY;\r\n if (textureX.magnitude() < minCrossMagnitude) {\r\n textureY = viewX.crossProduct(textureZ);\r\n textureX = textureY.crossProduct(textureZ).normalize()!;\r\n } else {\r\n textureX.normalizeInPlace();\r\n textureY = textureZ.crossProduct(textureX).normalize()!;\r\n }\r\n\r\n const frustumX = textureZ, frustumY = textureX, frustumZ = textureY;\r\n const textureMatrix = Matrix3d.createRows(frustumX, frustumY, frustumZ);\r\n const textureTransform = Transform.createRefs(Point3d.createZero(), textureMatrix);\r\n const viewFrustum = viewingSpace.getFrustum().transformBy(textureTransform);\r\n const viewPlanes = new FrustumPlanes(viewFrustum);\r\n const viewClipPlanes = ConvexClipPlaneSet.createPlanes(viewPlanes.planes!);\r\n\r\n let textureRange = Range3d.createNull();\r\n const tileToTexture = textureTransform.multiplyTransformTransform(target.location);\r\n for (const tile of target.tiles) {\r\n textureRange.extendRange(tileToTexture.multiplyRange(tile.range, scratchRange));\r\n }\r\n\r\n if (textureRange.isNull)\r\n return {};\r\n\r\n textureRange = ClipUtilities.rangeOfClipperIntersectionWithRange(viewClipPlanes, textureRange);\r\n\r\n const drapeRange = Range3d.createNull();\r\n for (const drapeRef of drapeRefs) {\r\n const drapeTree = drapeRef.treeOwner.tileTree;\r\n\r\n if (!drapeTree)\r\n return {};\r\n if (drapeTree.isContentUnbounded) {\r\n let heightRange = viewingSpace.getTerrainHeightRange();\r\n if (!heightRange) heightRange = ApproximateTerrainHeights.instance.globalHeightRange;\r\n\r\n textureRange.low.x = Math.min(textureRange.low.x, heightRange.low);\r\n textureRange.high.x = Math.max(textureRange.high.x, heightRange.high);\r\n } else {\r\n const contentRange = textureTransform.multiplyRange(drapeRef.computeWorldContentRange());\r\n if (!contentRange.isNull)\r\n drapeRange.extendRange(contentRange);\r\n }\r\n }\r\n if (!drapeRange.isNull) {\r\n // Union of height\r\n textureRange.low.x = Math.min(textureRange.low.x, drapeRange.low.x);\r\n textureRange.high.x = Math.max(textureRange.high.x, drapeRange.high.x);\r\n\r\n // Intersection of texture extents.\r\n textureRange.low.y = Math.max(textureRange.low.y, drapeRange.low.y);\r\n textureRange.high.y = Math.min(textureRange.high.y, drapeRange.high.y);\r\n textureRange.low.z = Math.max(textureRange.low.z, drapeRange.low.z);\r\n textureRange.high.z = Math.min(textureRange.high.z, drapeRange.high.z);\r\n }\r\n\r\n const epsilon = .01;\r\n textureRange.low.x -= epsilon;\r\n textureRange.high.x += epsilon;\r\n\r\n const textureFrustum = Frustum.fromRange(textureRange);\r\n const debugFrustum = textureFrustum.clone();\r\n textureTransform.multiplyInversePoint3dArray(debugFrustum.points, debugFrustum.points);\r\n\r\n if (viewState.isCameraOn) {\r\n const eyeHeight = (textureRange.low.x + textureRange.high.x) / 2.0;\r\n const eyePlane = Plane3dByOriginAndUnitNormal.create(Point3d.createScale(textureZ, eyeHeight), textureZ); // Centered in range - parallel to texture.\r\n const projectionRay = Ray3d.create(viewState.getEyePoint(), viewZ.crossProduct(textureX).normalize()!);\r\n let projectionDistance = projectionRay.intersectionWithPlane(eyePlane!);\r\n const minNearToFarRatio = .01; // Smaller value allows texture projection to conform tightly to view frustum.\r\n if (undefined !== projectionDistance) {\r\n projectionDistance = Math.max(.1, projectionDistance);\r\n const eyePoint = textureTransform.multiplyPoint3d(projectionRay.fractionToPoint(projectionDistance));\r\n let near = eyePoint.z - textureRange.high.z;\r\n let far = eyePoint.z - textureRange.low.z;\r\n\r\n if (near / far < minNearToFarRatio) {\r\n // If the near-far ratio is less than minimum move the camera back.\r\n far = (textureRange.high.z - textureRange.low.z) / (1.0 - minNearToFarRatio);\r\n near = far * minNearToFarRatio;\r\n eyePoint.z = near + textureRange.high.z;\r\n }\r\n const farRange = Range2d.createNull();\r\n const nearRange = Range2d.createNull();\r\n // Create a frustum that includes the entire view frustum and all Z values.\r\n nearRange.low.x = textureRange.low.x;\r\n nearRange.high.x = textureRange.high.x;\r\n farRange.low.x = eyePoint.x + far / near * (textureRange.low.x - eyePoint.x);\r\n farRange.high.x = eyePoint.x + far / near * (textureRange.high.x - eyePoint.x);\r\n ClipUtilities.announceLoopsOfConvexClipPlaneSetIntersectRange(viewClipPlanes, textureRange, (points: GrowableXYZArray) => {\r\n points.getPoint3dArray().forEach((rangePoint) => {\r\n const farScale = far / (eyePoint.z - rangePoint.z);\r\n const nearScale = near / (eyePoint.z - rangePoint.z);\r\n const nearY = eyePoint.y + nearScale * (rangePoint.y - eyePoint.y);\r\n const farY = eyePoint.y + farScale * (rangePoint.y - eyePoint.y);\r\n nearRange.low.y = Math.min(nearRange.low.y, nearY);\r\n nearRange.high.y = Math.max(nearRange.high.y, nearY);\r\n farRange.low.y = Math.min(farRange.low.y, farY);\r\n farRange.high.y = Math.max(farRange.high.y, farY);\r\n });\r\n });\r\n textureFrustum.points[Npc._000].set(farRange.low.x, farRange.low.y, eyePoint.z - far);\r\n textureFrustum.points[Npc._100].set(farRange.high.x, farRange.low.y, eyePoint.z - far);\r\n textureFrustum.points[Npc._010].set(farRange.low.x, farRange.high.y, eyePoint.z - far);\r\n textureFrustum.points[Npc._110].set(farRange.high.x, farRange.high.y, eyePoint.z - far);\r\n textureFrustum.points[Npc._001].set(nearRange.low.x, nearRange.low.y, eyePoint.z - near);\r\n textureFrustum.points[Npc._101].set(nearRange.high.x, nearRange.low.y, eyePoint.z - near);\r\n textureFrustum.points[Npc._011].set(nearRange.low.x, nearRange.high.y, eyePoint.z - near);\r\n textureFrustum.points[Npc._111].set(nearRange.high.x, nearRange.high.y, eyePoint.z - near);\r\n }\r\n }\r\n textureMatrix.transposeInPlace();\r\n textureMatrix.multiplyVectorArrayInPlace(textureFrustum.points);\r\n const frustumMap = textureFrustum.toMap4d();\r\n if (undefined === frustumMap) {\r\n return {};\r\n }\r\n const worldToNpc = PlanarTextureProjection._postProjectionMatrixNpc.multiplyMatrixMatrix(frustumMap.transform0);\r\n const npcToView = Map4d.createBoxMap(Point3d.create(0, 0, 0), Point3d.create(1, 1, 1), Point3d.create(0, 0, 0), Point3d.create(textureWidth, textureHeight, 1))!;\r\n const npcToWorld = worldToNpc.createInverse();\r\n if (undefined === npcToWorld) {\r\n return {};\r\n }\r\n const worldToNpcMap = Map4d.createRefs(worldToNpc, npcToWorld);\r\n const worldToViewMap = npcToView.multiplyMapMap(worldToNpcMap);\r\n\r\n return { textureFrustum, projectionMatrix: worldToNpc, worldToViewMap, debugFrustum };\r\n }\r\n\r\n public static getTextureDrawingParams(target: Target) {\r\n const state = new RenderState();\r\n state.flags.depthMask = false;\r\n state.flags.blend = false;\r\n state.flags.depthTest = false;\r\n\r\n const viewFlags = target.currentViewFlags.copy({\r\n renderMode: RenderMode.SmoothShade,\r\n wiremesh: false,\r\n transparency: false,\r\n textures: false,\r\n lighting: false,\r\n shadows: false,\r\n monochrome: false,\r\n materials: false,\r\n ambientOcclusion: false,\r\n visibleEdges: false,\r\n hiddenEdges: false,\r\n });\r\n\r\n return { state, viewFlags };\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"PlanarTextureProjection.js","sourceRoot":"","sources":["../../../../src/render/webgl/PlanarTextureProjection.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n\r\n/** @packageDocumentation\r\n * @module Rendering\r\n */\r\n\r\nimport { Frustum, FrustumPlanes, Npc, RenderMode } from \"@itwin/core-common\";\r\nimport {\r\n ClipUtilities, ConvexClipPlaneSet, GrowableXYZArray, Map4d, Matrix3d, Matrix4d, Plane3dByOriginAndUnitNormal, Point3d, Range1d, Range2d, Range3d,\r\n Ray3d, Transform,\r\n} from \"@itwin/core-geometry\";\r\nimport { ApproximateTerrainHeights } from \"../../ApproximateTerrainHeights\";\r\nimport { Tile, TileTreeReference } from \"../../tile/internal\";\r\nimport { SceneContext } from \"../../ViewContext\";\r\nimport { ViewState3d } from \"../../ViewState\";\r\nimport { RenderState } from \"./RenderState\";\r\nimport { Target } from \"./Target\";\r\n\r\nconst scratchRange = Range3d.createNull();\r\nconst scratchMap4d = Map4d.createIdentity();\r\nconst scratchMatrix4d = Matrix4d.createIdentity();\r\nexport class PlanarTextureProjection {\r\n private static _postProjectionMatrixNpc = Matrix4d.createRowValues(/* Row 1 */ 0, 1, 0, 0, /* Row 1 */ 0, 0, 1, 0, /* Row 3 */ 1, 0, 0, 0, /* Row 4 */ 0, 0, 0, 1);\r\n\r\n public static computePlanarTextureProjection(texturePlane: Plane3dByOriginAndUnitNormal, sceneContext: SceneContext, target: { tiles: Tile[], location: Transform }, drapeRefs: TileTreeReference[], viewState: ViewState3d, textureWidth: number, textureHeight: number, _heightRange?: Range1d): { textureFrustum?: Frustum, worldToViewMap?: Map4d, projectionMatrix?: Matrix4d, debugFrustum?: Frustum, zValue?: number } {\r\n const textureZ = texturePlane.getNormalRef();\r\n const viewingSpace = sceneContext.viewingSpace;\r\n const viewX = viewingSpace.rotation.rowX();\r\n const viewZ = viewingSpace.rotation.rowZ();\r\n const minCrossMagnitude = 1.0E-4;\r\n\r\n if (viewZ === undefined)\r\n return {}; // View without depth?....\r\n\r\n let textureX = viewZ.crossProduct(textureZ);\r\n let textureY;\r\n if (textureX.magnitude() < minCrossMagnitude) {\r\n textureY = viewX.crossProduct(textureZ);\r\n textureX = textureY.crossProduct(textureZ).normalize()!;\r\n } else {\r\n textureX.normalizeInPlace();\r\n textureY = textureZ.crossProduct(textureX).normalize()!;\r\n }\r\n\r\n const frustumX = textureZ, frustumY = textureX, frustumZ = textureY;\r\n const textureMatrix = Matrix3d.createRows(frustumX, frustumY, frustumZ);\r\n const textureTransform = Transform.createRefs(Point3d.createZero(), textureMatrix);\r\n const viewFrustum = viewingSpace.getFrustum().transformBy(textureTransform);\r\n const viewPlanes = new FrustumPlanes(viewFrustum);\r\n const viewClipPlanes = ConvexClipPlaneSet.createPlanes(viewPlanes.planes!);\r\n\r\n let textureRange = Range3d.createNull();\r\n const tileToTexture = textureTransform.multiplyTransformTransform(target.location);\r\n for (const tile of target.tiles) {\r\n textureRange.extendRange(tileToTexture.multiplyRange(tile.range, scratchRange));\r\n }\r\n\r\n if (textureRange.isNull)\r\n return {};\r\n\r\n textureRange = ClipUtilities.rangeOfClipperIntersectionWithRange(viewClipPlanes, textureRange);\r\n\r\n const drapeRange = Range3d.createNull();\r\n for (const drapeRef of drapeRefs) {\r\n const drapeTree = drapeRef.treeOwner.tileTree;\r\n\r\n if (!drapeTree)\r\n return {};\r\n if (drapeTree.isContentUnbounded) {\r\n let heightRange = viewingSpace.getTerrainHeightRange();\r\n if (!heightRange) heightRange = ApproximateTerrainHeights.instance.globalHeightRange;\r\n\r\n textureRange.low.x = Math.min(textureRange.low.x, heightRange.low);\r\n textureRange.high.x = Math.max(textureRange.high.x, heightRange.high);\r\n } else {\r\n const contentRange = textureTransform.multiplyRange(drapeRef.computeWorldContentRange());\r\n if (!contentRange.isNull)\r\n drapeRange.extendRange(contentRange);\r\n }\r\n }\r\n if (!drapeRange.isNull) {\r\n // Union of height\r\n textureRange.low.x = Math.min(textureRange.low.x, drapeRange.low.x);\r\n textureRange.high.x = Math.max(textureRange.high.x, drapeRange.high.x);\r\n\r\n // Intersection of texture extents.\r\n textureRange.low.y = Math.max(textureRange.low.y, drapeRange.low.y);\r\n textureRange.high.y = Math.min(textureRange.high.y, drapeRange.high.y);\r\n textureRange.low.z = Math.max(textureRange.low.z, drapeRange.low.z);\r\n textureRange.high.z = Math.min(textureRange.high.z, drapeRange.high.z);\r\n }\r\n\r\n const epsilon = .01;\r\n textureRange.low.x -= epsilon;\r\n textureRange.high.x += epsilon;\r\n\r\n const textureFrustum = Frustum.fromRange(textureRange);\r\n const debugFrustum = textureFrustum.clone();\r\n textureTransform.multiplyInversePoint3dArray(debugFrustum.points, debugFrustum.points);\r\n\r\n if (viewState.isCameraOn) {\r\n const eyeHeight = (textureRange.low.x + textureRange.high.x) / 2.0;\r\n const eyePlane = Plane3dByOriginAndUnitNormal.create(Point3d.createScale(textureZ, eyeHeight), textureZ); // Centered in range - parallel to texture.\r\n const projectionRay = Ray3d.create(viewState.getEyePoint(), viewZ.crossProduct(textureX).normalize()!);\r\n let projectionDistance = projectionRay.intersectionWithPlane(eyePlane!);\r\n const minNearToFarRatio = .01; // Smaller value allows texture projection to conform tightly to view frustum.\r\n if (undefined !== projectionDistance) {\r\n projectionDistance = Math.max(.1, projectionDistance);\r\n const eyePoint = textureTransform.multiplyPoint3d(projectionRay.fractionToPoint(projectionDistance));\r\n let near = eyePoint.z - textureRange.high.z;\r\n let far = eyePoint.z - textureRange.low.z;\r\n\r\n if (near / far < minNearToFarRatio) {\r\n // If the near-far ratio is less than minimum move the camera back.\r\n far = (textureRange.high.z - textureRange.low.z) / (1.0 - minNearToFarRatio);\r\n near = far * minNearToFarRatio;\r\n eyePoint.z = near + textureRange.high.z;\r\n }\r\n const farRange = Range2d.createNull();\r\n const nearRange = Range2d.createNull();\r\n // Create a frustum that includes the entire view frustum and all Z values.\r\n nearRange.low.x = textureRange.low.x;\r\n nearRange.high.x = textureRange.high.x;\r\n farRange.low.x = eyePoint.x + far / near * (textureRange.low.x - eyePoint.x);\r\n farRange.high.x = eyePoint.x + far / near * (textureRange.high.x - eyePoint.x);\r\n ClipUtilities.announceLoopsOfConvexClipPlaneSetIntersectRange(viewClipPlanes, textureRange, (points: GrowableXYZArray) => {\r\n points.getPoint3dArray().forEach((rangePoint) => {\r\n const farScale = far / (eyePoint.z - rangePoint.z);\r\n const nearScale = near / (eyePoint.z - rangePoint.z);\r\n const nearY = eyePoint.y + nearScale * (rangePoint.y - eyePoint.y);\r\n const farY = eyePoint.y + farScale * (rangePoint.y - eyePoint.y);\r\n nearRange.low.y = Math.min(nearRange.low.y, nearY);\r\n nearRange.high.y = Math.max(nearRange.high.y, nearY);\r\n farRange.low.y = Math.min(farRange.low.y, farY);\r\n farRange.high.y = Math.max(farRange.high.y, farY);\r\n });\r\n });\r\n textureFrustum.points[Npc._000].set(farRange.low.x, farRange.low.y, eyePoint.z - far);\r\n textureFrustum.points[Npc._100].set(farRange.high.x, farRange.low.y, eyePoint.z - far);\r\n textureFrustum.points[Npc._010].set(farRange.low.x, farRange.high.y, eyePoint.z - far);\r\n textureFrustum.points[Npc._110].set(farRange.high.x, farRange.high.y, eyePoint.z - far);\r\n textureFrustum.points[Npc._001].set(nearRange.low.x, nearRange.low.y, eyePoint.z - near);\r\n textureFrustum.points[Npc._101].set(nearRange.high.x, nearRange.low.y, eyePoint.z - near);\r\n textureFrustum.points[Npc._011].set(nearRange.low.x, nearRange.high.y, eyePoint.z - near);\r\n textureFrustum.points[Npc._111].set(nearRange.high.x, nearRange.high.y, eyePoint.z - near);\r\n }\r\n }\r\n textureMatrix.transposeInPlace();\r\n textureMatrix.multiplyVectorArrayInPlace(textureFrustum.points);\r\n const frustumMap = textureFrustum.toMap4d();\r\n if (undefined === frustumMap) {\r\n return {};\r\n }\r\n const worldToNpc = PlanarTextureProjection._postProjectionMatrixNpc.multiplyMatrixMatrix(frustumMap.transform0);\r\n const npcToView = Map4d.createBoxMap(Point3d.create(0, 0, 0), Point3d.create(1, 1, 1), Point3d.create(0, 0, 0), Point3d.create(textureWidth, textureHeight, 1), scratchMap4d)!;\r\n const npcToWorld = worldToNpc.createInverse(scratchMatrix4d);\r\n if (undefined === npcToWorld) {\r\n return {};\r\n }\r\n const worldToNpcMap = Map4d.createRefs(worldToNpc, npcToWorld);\r\n const worldToViewMap = npcToView.multiplyMapMap(worldToNpcMap);\r\n\r\n return { textureFrustum, projectionMatrix: worldToNpc, worldToViewMap, debugFrustum };\r\n }\r\n\r\n public static getTextureDrawingParams(target: Target) {\r\n const state = new RenderState();\r\n state.flags.depthMask = false;\r\n state.flags.blend = false;\r\n state.flags.depthTest = false;\r\n\r\n const viewFlags = target.currentViewFlags.copy({\r\n renderMode: RenderMode.SmoothShade,\r\n wiremesh: false,\r\n transparency: false,\r\n textures: false,\r\n lighting: false,\r\n shadows: false,\r\n monochrome: false,\r\n materials: false,\r\n ambientOcclusion: false,\r\n visibleEdges: false,\r\n hiddenEdges: false,\r\n });\r\n\r\n return { state, viewFlags };\r\n }\r\n}\r\n"]}
@@ -2,25 +2,43 @@
2
2
  * @module WebGL
3
3
  */
4
4
  import { IDisposable } from "@itwin/core-bentley";
5
- import { Range3d, Transform } from "@itwin/core-geometry";
6
- import { ColorDef, PackedFeatureTable, RenderTexture } from "@itwin/core-common";
7
- import { BufferHandle, QBufferHandle2d, QBufferHandle3d } from "./AttributeBuffers";
8
- import { IndexedGeometry, IndexedGeometryParams } from "./CachedGeometry";
9
- import { Matrix4 } from "./Matrix";
10
- import { RealityMeshPrimitive } from "../primitives/mesh/RealityMeshPrimitive";
5
+ import { ColorDef, RenderTexture } from "@itwin/core-common";
6
+ import { Matrix4d, Range2d, Range3d, Transform } from "@itwin/core-geometry";
7
+ import { RealityMeshGraphicParams, RealityMeshPrimitive } from "../primitives/mesh/RealityMeshPrimitive";
11
8
  import { TerrainMeshPrimitive } from "../primitives/mesh/TerrainMeshPrimitive";
12
9
  import { RenderGraphic } from "../RenderGraphic";
13
10
  import { RenderMemory } from "../RenderMemory";
11
+ import { RenderPlanarClassifier } from "../RenderPlanarClassifier";
14
12
  import { RenderSystem, TerrainTexture } from "../RenderSystem";
13
+ import { BufferHandle, QBufferHandle2d, QBufferHandle3d } from "./AttributeBuffers";
14
+ import { IndexedGeometry, IndexedGeometryParams } from "./CachedGeometry";
15
+ import { Matrix4 } from "./Matrix";
16
+ import { PlanarClassifier } from "./PlanarClassifier";
15
17
  import { RenderOrder } from "./RenderFlags";
16
18
  import { Target } from "./Target";
17
19
  import { TechniqueId } from "./TechniqueId";
20
+ declare class ProjectedTexture {
21
+ meshParams: RealityMeshGraphicParams;
22
+ targetRectangle: Range2d;
23
+ classifier: PlanarClassifier;
24
+ constructor(classifier: RenderPlanarClassifier, meshParams: RealityMeshGraphicParams, targetRectangle: Range2d);
25
+ clone(targetRectangle: Range2d): ProjectedTexture;
26
+ }
27
+ declare type TerrainOrProjectedTexture = TerrainTexture | ProjectedTexture;
28
+ declare class RealityTextureParam {
29
+ texture: RenderTexture | undefined;
30
+ private _projectedTextureOrMatrix;
31
+ constructor(texture: RenderTexture | undefined, _projectedTextureOrMatrix: ProjectedTexture | Matrix4);
32
+ get isProjected(): boolean;
33
+ getProjectionMatrix(): Matrix4d | undefined;
34
+ getTerrainMatrix(): Matrix4 | undefined;
35
+ getParams(result: Matrix4): Matrix4;
36
+ }
18
37
  /** @internal */
19
38
  export declare class RealityTextureParams {
20
- matrices: Matrix4[];
21
- textures: RenderTexture[];
22
- constructor(matrices: Matrix4[], textures: RenderTexture[]);
23
- static create(terrainTextures: TerrainTexture[]): RealityTextureParams;
39
+ params: RealityTextureParam[];
40
+ constructor(params: RealityTextureParam[]);
41
+ static create(textures: TerrainOrProjectedTexture[]): RealityTextureParams;
24
42
  }
25
43
  /** @internal */
26
44
  export declare class RealityMeshGeometryParams extends IndexedGeometryParams {
@@ -48,16 +66,18 @@ export declare class RealityMeshGeometry extends IndexedGeometry implements IDis
48
66
  get hasFeatures(): boolean;
49
67
  get supportsThematicDisplay(): boolean;
50
68
  get overrideColorMix(): number;
69
+ get transform(): Transform | undefined;
51
70
  private constructor();
52
71
  dispose(): void;
53
72
  static createFromTerrainMesh(terrainMesh: TerrainMeshPrimitive, transform: Transform | undefined): RealityMeshGeometry | undefined;
54
73
  static createFromRealityMesh(realityMesh: RealityMeshPrimitive): RealityMeshGeometry | undefined;
55
74
  getRange(): Range3d;
56
- static createGraphic(system: RenderSystem, realityMesh: RealityMeshGeometry, featureTable: PackedFeatureTable, tileId: string | undefined, baseColor: ColorDef | undefined, baseTransparent: boolean, textures?: TerrainTexture[]): RenderGraphic | undefined;
75
+ static createGraphic(system: RenderSystem, params: RealityMeshGraphicParams): RenderGraphic | undefined;
57
76
  collectStatistics(stats: RenderMemory.Statistics): void;
58
77
  get techniqueId(): TechniqueId;
59
78
  getPass(target: Target): "none" | "opaque" | "translucent";
60
79
  get renderOrder(): RenderOrder;
61
80
  draw(): void;
62
81
  }
82
+ export {};
63
83
  //# sourceMappingURL=RealityMesh.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"RealityMesh.d.ts","sourceRoot":"","sources":["../../../../src/render/webgl/RealityMesh.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"RealityMesh.d.ts","sourceRoot":"","sources":["../../../../src/render/webgl/RealityMesh.ts"],"names":[],"mappings":"AAKA;;GAEG;AAEH,OAAO,EAAmB,WAAW,EAAE,MAAM,qBAAqB,CAAC;AACnE,OAAO,EAAE,QAAQ,EAAgB,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAC3E,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAY,MAAM,sBAAsB,CAAC;AAEvF,OAAO,EAAE,wBAAwB,EAAE,oBAAoB,EAAE,MAAM,yCAAyC,CAAC;AACzG,OAAO,EAAE,oBAAoB,EAAE,MAAM,yCAAyC,CAAC;AAC/E,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AACnE,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAC/D,OAAO,EAAE,YAAY,EAAoB,eAAe,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAEtG,OAAO,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AAE1E,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AACnC,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAEtD,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAM5C,cAAM,gBAAgB;IAEmC,UAAU,EAAE,wBAAwB;IAAS,eAAe,EAAE,OAAO;IADrH,UAAU,EAAE,gBAAgB,CAAC;gBACxB,UAAU,EAAE,sBAAsB,EAAS,UAAU,EAAE,wBAAwB,EAAS,eAAe,EAAE,OAAO;IAGrH,KAAK,CAAC,eAAe,EAAE,OAAO;CAGtC;AACD,aAAK,yBAAyB,GAAG,cAAc,GAAG,gBAAgB,CAAC;AAEnE,cAAM,mBAAmB;IACJ,OAAO,EAAE,aAAa,GAAG,SAAS;IAAE,OAAO,CAAC,yBAAyB;gBAArE,OAAO,EAAE,aAAa,GAAG,SAAS,EAAU,yBAAyB,EAAE,gBAAgB,GAAG,OAAO;IACpH,IAAW,WAAW,YAAyE;IAaxF,mBAAmB,IAAI,QAAQ,GAAG,SAAS;IAG3C,gBAAgB,IAAI,OAAO,GAAG,SAAS;IAIvC,SAAS,CAAC,MAAM,EAAE,OAAO,GAAG,OAAO;CA8C3C;AAED,gBAAgB;AAChB,qBAAa,oBAAoB;IACZ,MAAM,EAAE,mBAAmB,EAAE;gBAA7B,MAAM,EAAE,mBAAmB,EAAE;WAClC,MAAM,CAAC,QAAQ,EAAE,yBAAyB,EAAE;CA6C3D;AAED,gBAAgB;AAEhB,qBAAa,yBAA0B,SAAQ,qBAAqB;IAClE,SAAgB,QAAQ,EAAE,eAAe,CAAC;IAC1C,SAAgB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnC,SAAgB,OAAO,CAAC,EAAE,YAAY,CAAC;IAEvC,SAAS,aAAa,SAAS,EAAE,eAAe,EAAE,OAAO,EAAE,YAAY,GAAG,SAAS,EAAE,QAAQ,EAAE,eAAe,EAAE,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM;IAiB7K,OAAO,CAAC,MAAM,CAAC,iBAAiB;WAUlB,qBAAqB,CAAC,IAAI,EAAE,oBAAoB;IAO9D,IAAoB,UAAU,IAAI,OAAO,CAExC;IACD,IAAW,SAAS,IAAI,MAAM,CAAoJ;IAElK,OAAO;CAIxB;AAED,gBAAgB;AAChB,qBAAa,mBAAoB,SAAQ,eAAgB,YAAW,WAAW,EAAE,YAAY,CAAC,QAAQ;IAShF,OAAO,CAAC,kBAAkB;IAAoC,aAAa,EAAE,oBAAoB,GAAG,SAAS;IAAE,OAAO,CAAC,QAAQ,CAAC,UAAU;aAAyC,SAAS,EAAE,QAAQ,GAAG,SAAS;IAAE,OAAO,CAAC,kBAAkB;IAAW,OAAO,CAAC,UAAU;IAR/R,IAAoB,aAAa,IAAI,mBAAmB,GAAG,SAAS,CAAiB;IACrF,IAAoB,UAAU,IAAI,OAAO,CAA+C;IACxF,IAAW,SAAS,iBAAsD;IAC1E,IAAoB,WAAW,IAAI,OAAO,CAA4D;IACtG,IAAoB,uBAAuB,YAAmB;IAC9D,IAAW,gBAAgB,WAAiB;IAC5C,IAAW,SAAS,IAAI,SAAS,GAAG,SAAS,CAA4B;IAEzE,OAAO;IAIS,OAAO;WAKT,qBAAqB,CAAC,WAAW,EAAE,oBAAoB,EAAE,SAAS,EAAE,SAAS,GAAG,SAAS;WAKzF,qBAAqB,CAAC,WAAW,EAAE,oBAAoB,GAAG,mBAAmB,GAAG,SAAS;IAShG,QAAQ,IAAI,OAAO;WAIZ,aAAa,CAAC,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,wBAAwB,GAAG,aAAa,GAAG,SAAS;IA4EvG,iBAAiB,CAAC,KAAK,EAAE,YAAY,CAAC,UAAU,GAAG,IAAI;IAI9D,IAAW,WAAW,IAAI,WAAW,CAAoC;IAEzD,OAAO,CAAC,MAAM,EAAE,MAAM;IAStC,IAAW,WAAW,IAAI,WAAW,CAAqC;IAE1D,IAAI,IAAI,IAAI;CAK7B"}
@@ -6,60 +6,147 @@
6
6
  * @module WebGL
7
7
  */
8
8
  import { assert, dispose } from "@itwin/core-bentley";
9
- import { Range2d, Range3d, Transform, Vector2d } from "@itwin/core-geometry";
10
9
  import { Quantization } from "@itwin/core-common";
11
- import { AttributeMap } from "./AttributeMap";
12
- import { BufferHandle, BufferParameters, QBufferHandle2d, QBufferHandle3d } from "./AttributeBuffers";
13
- import { IndexedGeometry, IndexedGeometryParams } from "./CachedGeometry";
14
- import { Matrix4 } from "./Matrix";
10
+ import { Range2d, Range3d, Transform, Vector2d } from "@itwin/core-geometry";
15
11
  import { GraphicBranch } from "../GraphicBranch";
16
12
  import { TerrainTexture } from "../RenderSystem";
13
+ import { BufferHandle, BufferParameters, QBufferHandle2d, QBufferHandle3d } from "./AttributeBuffers";
14
+ import { AttributeMap } from "./AttributeMap";
15
+ import { IndexedGeometry, IndexedGeometryParams } from "./CachedGeometry";
17
16
  import { GL } from "./GL";
17
+ import { Matrix4 } from "./Matrix";
18
18
  import { Primitive } from "./Primitive";
19
19
  import { System } from "./System";
20
20
  const scratchOverlapRange = Range2d.createNull();
21
+ const scratchBytes = new Uint8Array(4);
22
+ const scratchBatchBaseId = new Uint32Array(scratchBytes.buffer);
23
+ const scratchRange2d = Range2d.createNull();
24
+ class ProjectedTexture {
25
+ constructor(classifier, meshParams, targetRectangle) {
26
+ this.meshParams = meshParams;
27
+ this.targetRectangle = targetRectangle;
28
+ this.classifier = classifier;
29
+ }
30
+ clone(targetRectangle) {
31
+ return new ProjectedTexture(this.classifier, this.meshParams, targetRectangle.clone());
32
+ }
33
+ }
34
+ class RealityTextureParam {
35
+ constructor(texture, _projectedTextureOrMatrix) {
36
+ this.texture = texture;
37
+ this._projectedTextureOrMatrix = _projectedTextureOrMatrix;
38
+ }
39
+ get isProjected() { return this._projectedTextureOrMatrix instanceof ProjectedTexture; }
40
+ /* There are two methods of applying a texture to a reality mesh. the first member of "params" denotes which
41
+ method is to be used. A value of zero indicates a standard texture and one represents a classified texture.
42
+
43
+ A standard (nonprojected) texture is generated by multiplying v_textCoord by the scaling and translation packed into the first row
44
+ of "matrix". A clip rectangle is packed into second row of "matrix".
45
+
46
+ A "classified" reality mesh texture is used for map layers. It does not uses v_texCoord, the texture coordinates
47
+ are instead generated by a projection of the model position onto the X-Y plane. We only have eye position, not model position
48
+ so the matrix in this case is a real transform matrix that contains a mapping from eye to model position
49
+ followed by the model to texture projection.
50
+ */
51
+ getProjectionMatrix() {
52
+ return this._projectedTextureOrMatrix instanceof ProjectedTexture ? this._projectedTextureOrMatrix.classifier.projectionMatrix : undefined;
53
+ }
54
+ getTerrainMatrix() {
55
+ return this._projectedTextureOrMatrix instanceof Matrix4 ? this._projectedTextureOrMatrix : undefined;
56
+ }
57
+ getParams(result) {
58
+ /** Entry 0 is 0 for */
59
+ if (this._projectedTextureOrMatrix instanceof ProjectedTexture) {
60
+ const projectedTexture = this._projectedTextureOrMatrix;
61
+ result.data[0] = 1;
62
+ result.data[1] = projectedTexture.classifier.textureImageCount;
63
+ result.data[2] = projectedTexture.classifier.sourceTransparency === undefined ? 1.0 : (1.0 - projectedTexture.classifier.sourceTransparency);
64
+ scratchBatchBaseId[0] = projectedTexture.classifier.baseBatchId;
65
+ result.data[4] = scratchBytes[0];
66
+ result.data[5] = scratchBytes[1];
67
+ result.data[6] = scratchBytes[2];
68
+ result.data[7] = scratchBytes[3];
69
+ const points = [];
70
+ const meshParams = projectedTexture.meshParams;
71
+ // Calculate range in the tiles local coordinates.
72
+ const low = meshParams.tileRectangle.worldToLocal(projectedTexture.targetRectangle.low, scratchRange2d.low);
73
+ const high = meshParams.tileRectangle.worldToLocal(projectedTexture.targetRectangle.high, scratchRange2d.high);
74
+ points.push(meshParams.projection.getGlobalPoint(low.x, low.y, 0));
75
+ points.push(meshParams.projection.getGlobalPoint(high.x, low.y, 0));
76
+ points.push(meshParams.projection.getGlobalPoint(high.x, high.y, 0));
77
+ points.push(meshParams.projection.getGlobalPoint(low.x, high.y, 0));
78
+ for (let i = 0, j = 8; i < 4; i++) {
79
+ const projectedPoint = projectedTexture.classifier.projectionMatrix.multiplyPoint3dQuietNormalize(points[i]);
80
+ result.data[j++] = projectedPoint.x;
81
+ result.data[j++] = projectedPoint.y;
82
+ }
83
+ const x0 = result.data[10] - result.data[8], y0 = result.data[11] - result.data[9];
84
+ const x1 = result.data[12] - result.data[8], y1 = result.data[13] - result.data[9];
85
+ if (x0 * y1 - x1 * y0 < 0) {
86
+ const swap = ((i, j) => {
87
+ const temp = result.data[i];
88
+ result.data[i] = result.data[j];
89
+ result.data[j] = temp;
90
+ });
91
+ for (let i = 8, j = 14; i <= 10; i += 2, j -= 2) {
92
+ swap(i, j);
93
+ swap(i + 1, j + 1);
94
+ }
95
+ }
96
+ }
97
+ else {
98
+ result.data[0] = 0;
99
+ }
100
+ return result;
101
+ }
102
+ }
21
103
  /** @internal */
22
104
  export class RealityTextureParams {
23
- constructor(matrices, textures) {
24
- this.matrices = matrices;
25
- this.textures = textures;
105
+ constructor(params) {
106
+ this.params = params;
26
107
  }
27
- static create(terrainTextures) {
108
+ static create(textures) {
28
109
  const maxTexturesPerMesh = System.instance.maxRealityImageryLayers;
29
- assert(terrainTextures.length <= maxTexturesPerMesh);
30
- const renderTextures = [];
31
- const matrices = new Array();
32
- for (const terrainTexture of terrainTextures) {
33
- const matrix = new Matrix4(); // Published as Mat4.
34
- renderTextures.push(terrainTexture.texture);
35
- assert(terrainTexture.texture !== undefined, "Texture not defined in TerrainTextureParams constructor");
36
- matrix.data[0] = terrainTexture.translate.x;
37
- matrix.data[1] = terrainTexture.translate.y;
38
- matrix.data[2] = terrainTexture.scale.x;
39
- matrix.data[3] = terrainTexture.scale.y;
40
- if (terrainTexture.clipRectangle) {
41
- matrix.data[4] = terrainTexture.clipRectangle.low.x;
42
- matrix.data[5] = terrainTexture.clipRectangle.low.y;
43
- matrix.data[6] = terrainTexture.clipRectangle.high.x;
44
- matrix.data[7] = terrainTexture.clipRectangle.high.y;
110
+ assert(textures.length <= maxTexturesPerMesh);
111
+ const textureParams = new Array();
112
+ for (const texture of textures) {
113
+ if (texture instanceof TerrainTexture) {
114
+ const terrainTexture = texture;
115
+ const matrix = new Matrix4(); // Published as Mat4.
116
+ assert(terrainTexture.texture !== undefined, "Texture not defined in TerrainTextureParams constructor");
117
+ matrix.data[0] = terrainTexture.translate.x;
118
+ matrix.data[1] = terrainTexture.translate.y;
119
+ matrix.data[2] = terrainTexture.scale.x;
120
+ matrix.data[3] = terrainTexture.scale.y;
121
+ if (terrainTexture.clipRectangle) {
122
+ matrix.data[4] = terrainTexture.clipRectangle.low.x;
123
+ matrix.data[5] = terrainTexture.clipRectangle.low.y;
124
+ matrix.data[6] = terrainTexture.clipRectangle.high.x;
125
+ matrix.data[7] = terrainTexture.clipRectangle.high.y;
126
+ }
127
+ else {
128
+ matrix.data[4] = matrix.data[5] = 0;
129
+ matrix.data[6] = matrix.data[7] = 1;
130
+ }
131
+ matrix.data[8] = (1.0 - terrainTexture.transparency);
132
+ matrix.data[9] = terrainTexture.featureId;
133
+ textureParams.push(new RealityTextureParam(terrainTexture.texture, matrix));
45
134
  }
46
135
  else {
47
- matrix.data[4] = matrix.data[5] = 0;
48
- matrix.data[6] = matrix.data[7] = 1;
136
+ const classifier = texture.classifier;
137
+ textureParams.push(new RealityTextureParam(classifier.getOrCreateClassifierTexture(), texture));
49
138
  }
50
- matrix.data[8] = (1.0 - terrainTexture.transparency);
51
- matrix.data[9] = terrainTexture.featureId;
52
- matrices.push(matrix);
53
139
  }
54
- for (let i = terrainTextures.length; i < maxTexturesPerMesh; i++) {
140
+ for (let i = textures.length; i < maxTexturesPerMesh; i++) {
55
141
  const matrix = new Matrix4();
56
142
  matrix.data[0] = matrix.data[1] = 0.0;
57
143
  matrix.data[2] = matrix.data[3] = 1.0;
58
144
  matrix.data[4] = matrix.data[5] = 1;
59
145
  matrix.data[6] = matrix.data[7] = -1;
60
- matrices.push(matrix);
146
+ matrix.data[15] = 0; // Denotes a terrain texture.
147
+ textureParams.push(new RealityTextureParam(undefined, matrix));
61
148
  }
62
- return new RealityTextureParams(matrices, renderTextures);
149
+ return new RealityTextureParams(textureParams);
63
150
  }
64
151
  }
65
152
  /** @internal */
@@ -117,6 +204,7 @@ export class RealityMeshGeometry extends IndexedGeometry {
117
204
  get hasFeatures() { return this._realityMeshParams.featureID !== undefined; }
118
205
  get supportsThematicDisplay() { return true; }
119
206
  get overrideColorMix() { return .5; } // This could be a setting from either the mesh or the override if required.
207
+ get transform() { return this._transform; }
120
208
  dispose() {
121
209
  super.dispose();
122
210
  dispose(this._realityMeshParams);
@@ -135,51 +223,66 @@ export class RealityMeshGeometry extends IndexedGeometry {
135
223
  getRange() {
136
224
  return Range3d.createXYZXYZ(this.qOrigin[0], this.qOrigin[1], this.qOrigin[2], this.qOrigin[0] + Quantization.rangeScale16 * this.qScale[0], this.qOrigin[1] + Quantization.rangeScale16 * this.qScale[1], this.qOrigin[2] + Quantization.rangeScale16 * this.qScale[2]);
137
225
  }
138
- static createGraphic(system, realityMesh, featureTable, tileId, baseColor, baseTransparent, textures) {
226
+ static createGraphic(system, params) {
227
+ var _a, _b;
139
228
  const meshes = [];
140
- if (textures === undefined)
141
- textures = [];
229
+ const textures = (_a = params.textures) !== null && _a !== void 0 ? _a : [];
230
+ const realityMesh = params.realityMesh;
231
+ const { baseColor, baseTransparent, featureTable, tileId, layerClassifiers } = params;
142
232
  const texturesPerMesh = System.instance.maxRealityImageryLayers;
143
233
  const layers = new Array();
144
- let layerCount = 0;
234
+ // Collate the textures and classifiers layers into a single array.
145
235
  for (const texture of textures) {
146
236
  const layer = layers[texture.layerIndex];
147
237
  if (layer) {
148
238
  layer.push(texture);
149
239
  }
150
240
  else {
151
- layerCount++;
152
241
  layers[texture.layerIndex] = [texture];
153
242
  }
154
243
  }
155
- if (layerCount < 2) {
244
+ (_b = params.layerClassifiers) === null || _b === void 0 ? void 0 : _b.forEach((layerClassifier, layerIndex) => layers[layerIndex] = [new ProjectedTexture(layerClassifier, params, params.tileRectangle)]);
245
+ if (layers.length < 2 && !(layerClassifiers === null || layerClassifiers === void 0 ? void 0 : layerClassifiers.size) && textures.length < texturesPerMesh) {
156
246
  // If only there is not more than one layer then we can group all of the textures into a single draw call.
157
247
  meshes.push(new RealityMeshGeometry(realityMesh._realityMeshParams, RealityTextureParams.create(textures), realityMesh._transform, baseColor, baseTransparent, realityMesh._isTerrain));
158
248
  }
159
249
  else {
160
- const primaryLayer = layers.shift();
250
+ let primaryLayer;
251
+ while (primaryLayer === undefined)
252
+ primaryLayer = layers.shift();
253
+ if (!primaryLayer)
254
+ return undefined;
161
255
  for (const primaryTexture of primaryLayer) {
162
256
  const targetRectangle = primaryTexture.targetRectangle;
163
257
  const overlapMinimum = 1.0E-5 * (targetRectangle.high.x - targetRectangle.low.x) * (targetRectangle.high.y - targetRectangle.low.y);
164
- const layerTextures = [primaryTexture];
258
+ let layerTextures = [primaryTexture];
165
259
  for (const secondaryLayer of layers) {
166
260
  if (!secondaryLayer)
167
261
  continue;
168
262
  for (const secondaryTexture of secondaryLayer) {
169
- const secondaryRectangle = secondaryTexture.targetRectangle;
170
- const overlap = targetRectangle.intersect(secondaryRectangle, scratchOverlapRange);
171
- if (!overlap.isNull && (overlap.high.x - overlap.low.x) * (overlap.high.y - overlap.low.y) > overlapMinimum) {
172
- const textureRange = Range2d.createXYXY(overlap.low.x, overlap.low.y, overlap.high.x, overlap.high.y);
173
- secondaryRectangle.worldToLocal(textureRange.low, textureRange.low);
174
- secondaryRectangle.worldToLocal(textureRange.high, textureRange.high);
175
- if (secondaryTexture.clipRectangle)
176
- textureRange.intersect(secondaryTexture.clipRectangle, textureRange);
177
- if (!textureRange.isNull)
178
- layerTextures.push(new TerrainTexture(secondaryTexture.texture, secondaryTexture.featureId, secondaryTexture.scale, secondaryTexture.translate, secondaryTexture.targetRectangle, secondaryTexture.layerIndex, secondaryTexture.transparency, textureRange));
263
+ if (secondaryTexture instanceof ProjectedTexture) {
264
+ layerTextures.push(secondaryTexture.clone(targetRectangle));
265
+ }
266
+ else {
267
+ const secondaryRectangle = secondaryTexture.targetRectangle;
268
+ const overlap = targetRectangle.intersect(secondaryRectangle, scratchOverlapRange);
269
+ if (!overlap.isNull && (overlap.high.x - overlap.low.x) * (overlap.high.y - overlap.low.y) > overlapMinimum) {
270
+ const textureRange = Range2d.createXYXY(overlap.low.x, overlap.low.y, overlap.high.x, overlap.high.y);
271
+ secondaryRectangle.worldToLocal(textureRange.low, textureRange.low);
272
+ secondaryRectangle.worldToLocal(textureRange.high, textureRange.high);
273
+ if (secondaryTexture.clipRectangle)
274
+ textureRange.intersect(secondaryTexture.clipRectangle, textureRange);
275
+ if (!textureRange.isNull && textureRange) {
276
+ layerTextures.push(secondaryTexture.cloneWithClip(textureRange));
277
+ }
278
+ }
179
279
  }
180
280
  }
181
281
  }
182
- layerTextures.length = Math.min(layerTextures.length, texturesPerMesh);
282
+ while (layerTextures.length > texturesPerMesh) {
283
+ meshes.push(new RealityMeshGeometry(realityMesh._realityMeshParams, RealityTextureParams.create(layerTextures.slice(0, texturesPerMesh)), realityMesh._transform, baseColor, baseTransparent, realityMesh._isTerrain));
284
+ layerTextures = layerTextures.slice(texturesPerMesh);
285
+ }
183
286
  meshes.push(new RealityMeshGeometry(realityMesh._realityMeshParams, RealityTextureParams.create(layerTextures), realityMesh._transform, baseColor, baseTransparent, realityMesh._isTerrain));
184
287
  }
185
288
  }