@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"}
@@ -8,11 +8,13 @@ exports.PlanarTextureProjection = void 0;
8
8
  /** @packageDocumentation
9
9
  * @module Rendering
10
10
  */
11
- const core_geometry_1 = require("@itwin/core-geometry");
12
11
  const core_common_1 = require("@itwin/core-common");
12
+ const core_geometry_1 = require("@itwin/core-geometry");
13
13
  const ApproximateTerrainHeights_1 = require("../../ApproximateTerrainHeights");
14
14
  const RenderState_1 = require("./RenderState");
15
15
  const scratchRange = core_geometry_1.Range3d.createNull();
16
+ const scratchMap4d = core_geometry_1.Map4d.createIdentity();
17
+ const scratchMatrix4d = core_geometry_1.Matrix4d.createIdentity();
16
18
  class PlanarTextureProjection {
17
19
  static computePlanarTextureProjection(texturePlane, sceneContext, target, drapeRefs, viewState, textureWidth, textureHeight, _heightRange) {
18
20
  const textureZ = texturePlane.getNormalRef();
@@ -133,8 +135,8 @@ class PlanarTextureProjection {
133
135
  return {};
134
136
  }
135
137
  const worldToNpc = PlanarTextureProjection._postProjectionMatrixNpc.multiplyMatrixMatrix(frustumMap.transform0);
136
- const npcToView = core_geometry_1.Map4d.createBoxMap(core_geometry_1.Point3d.create(0, 0, 0), core_geometry_1.Point3d.create(1, 1, 1), core_geometry_1.Point3d.create(0, 0, 0), core_geometry_1.Point3d.create(textureWidth, textureHeight, 1));
137
- const npcToWorld = worldToNpc.createInverse();
138
+ const npcToView = core_geometry_1.Map4d.createBoxMap(core_geometry_1.Point3d.create(0, 0, 0), core_geometry_1.Point3d.create(1, 1, 1), core_geometry_1.Point3d.create(0, 0, 0), core_geometry_1.Point3d.create(textureWidth, textureHeight, 1), scratchMap4d);
139
+ const npcToWorld = worldToNpc.createInverse(scratchMatrix4d);
138
140
  if (undefined === npcToWorld) {
139
141
  return {};
140
142
  }
@@ -1 +1 @@
1
- {"version":3,"file":"PlanarTextureProjection.js","sourceRoot":"","sources":["../../../../src/render/webgl/PlanarTextureProjection.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;;;AAE/F;;GAEG;AAEH,wDAG8B;AAC9B,oDAA6E;AAC7E,+EAA4E;AAI5E,+CAA4C;AAG5C,MAAM,YAAY,GAAG,uBAAO,CAAC,UAAU,EAAE,CAAC;AAC1C,MAAa,uBAAuB;IAG3B,MAAM,CAAC,8BAA8B,CAAC,YAA0C,EAAE,YAA0B,EAAE,MAA8C,EAAE,SAA8B,EAAE,SAAsB,EAAE,YAAoB,EAAE,aAAqB,EAAE,YAAsB;QAC9R,MAAM,QAAQ,GAAG,YAAY,CAAC,YAAY,EAAE,CAAC;QAC7C,MAAM,YAAY,GAAG,YAAY,CAAC,YAAY,CAAC;QAC/C,MAAM,KAAK,GAAG,YAAY,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;QAC3C,MAAM,KAAK,GAAG,YAAY,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;QAC3C,MAAM,iBAAiB,GAAG,MAAM,CAAC;QAEjC,IAAI,KAAK,KAAK,SAAS;YACrB,OAAO,EAAE,CAAC,CAAM,0BAA0B;QAE5C,IAAI,QAAQ,GAAG,KAAK,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;QAC5C,IAAI,QAAQ,CAAC;QACb,IAAI,QAAQ,CAAC,SAAS,EAAE,GAAG,iBAAiB,EAAE;YAC5C,QAAQ,GAAG,KAAK,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;YACxC,QAAQ,GAAG,QAAQ,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,SAAS,EAAG,CAAC;SACzD;aAAM;YACL,QAAQ,CAAC,gBAAgB,EAAE,CAAC;YAC5B,QAAQ,GAAG,QAAQ,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,SAAS,EAAG,CAAC;SACzD;QAED,MAAM,QAAQ,GAAG,QAAQ,EAAE,QAAQ,GAAG,QAAQ,EAAE,QAAQ,GAAG,QAAQ,CAAC;QACpE,MAAM,aAAa,GAAG,wBAAQ,CAAC,UAAU,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;QACxE,MAAM,gBAAgB,GAAG,yBAAS,CAAC,UAAU,CAAC,uBAAO,CAAC,UAAU,EAAE,EAAE,aAAa,CAAC,CAAC;QACnF,MAAM,WAAW,GAAG,YAAY,CAAC,UAAU,EAAE,CAAC,WAAW,CAAC,gBAAgB,CAAC,CAAC;QAC5E,MAAM,UAAU,GAAG,IAAI,2BAAa,CAAC,WAAW,CAAC,CAAC;QAClD,MAAM,cAAc,GAAG,kCAAkB,CAAC,YAAY,CAAC,UAAU,CAAC,MAAO,CAAC,CAAC;QAE3E,IAAI,YAAY,GAAG,uBAAO,CAAC,UAAU,EAAE,CAAC;QACxC,MAAM,aAAa,GAAG,gBAAgB,CAAC,0BAA0B,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QACnF,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,KAAK,EAAE;YAC/B,YAAY,CAAC,WAAW,CAAC,aAAa,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC,CAAC;SACjF;QAED,IAAI,YAAY,CAAC,MAAM;YACrB,OAAO,EAAE,CAAC;QAEZ,YAAY,GAAG,6BAAa,CAAC,mCAAmC,CAAC,cAAc,EAAE,YAAY,CAAC,CAAC;QAE/F,MAAM,UAAU,GAAG,uBAAO,CAAC,UAAU,EAAE,CAAC;QACxC,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE;YAChC,MAAM,SAAS,GAAG,QAAQ,CAAC,SAAS,CAAC,QAAQ,CAAC;YAE9C,IAAI,CAAC,SAAS;gBACZ,OAAO,EAAE,CAAC;YACZ,IAAI,SAAS,CAAC,kBAAkB,EAAE;gBAChC,IAAI,WAAW,GAAG,YAAY,CAAC,qBAAqB,EAAE,CAAC;gBACvD,IAAI,CAAC,WAAW;oBAAE,WAAW,GAAG,qDAAyB,CAAC,QAAQ,CAAC,iBAAiB,CAAC;gBAErF,YAAY,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC;gBACnE,YAAY,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,EAAE,WAAW,CAAC,IAAI,CAAC,CAAC;aACvE;iBAAM;gBACL,MAAM,YAAY,GAAG,gBAAgB,CAAC,aAAa,CAAC,QAAQ,CAAC,wBAAwB,EAAE,CAAC,CAAC;gBACzF,IAAI,CAAC,YAAY,CAAC,MAAM;oBACtB,UAAU,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;aACxC;SACF;QACD,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE;YACtB,kBAAkB;YAClB,YAAY,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YACpE,YAAY,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAEvE,mCAAmC;YACnC,YAAY,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YACpE,YAAY,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACvE,YAAY,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YACpE,YAAY,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;SACxE;QAED,MAAM,OAAO,GAAG,GAAG,CAAC;QACpB,YAAY,CAAC,GAAG,CAAC,CAAC,IAAI,OAAO,CAAC;QAC9B,YAAY,CAAC,IAAI,CAAC,CAAC,IAAI,OAAO,CAAC;QAE/B,MAAM,cAAc,GAAG,qBAAO,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;QACvD,MAAM,YAAY,GAAG,cAAc,CAAC,KAAK,EAAE,CAAC;QAC5C,gBAAgB,CAAC,2BAA2B,CAAC,YAAY,CAAC,MAAM,EAAE,YAAY,CAAC,MAAM,CAAC,CAAC;QAEvF,IAAI,SAAS,CAAC,UAAU,EAAE;YACxB,MAAM,SAAS,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;YACnE,MAAM,QAAQ,GAAG,4CAA4B,CAAC,MAAM,CAAC,uBAAO,CAAC,WAAW,CAAC,QAAQ,EAAE,SAAS,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAI,2CAA2C;YACxJ,MAAM,aAAa,GAAG,qBAAK,CAAC,MAAM,CAAC,SAAS,CAAC,WAAW,EAAE,EAAE,KAAK,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,SAAS,EAAG,CAAC,CAAC;YACvG,IAAI,kBAAkB,GAAG,aAAa,CAAC,qBAAqB,CAAC,QAAS,CAAC,CAAC;YACxE,MAAM,iBAAiB,GAAG,GAAG,CAAC,CAAE,8EAA8E;YAC9G,IAAI,SAAS,KAAK,kBAAkB,EAAE;gBACpC,kBAAkB,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,kBAAkB,CAAC,CAAC;gBACtD,MAAM,QAAQ,GAAG,gBAAgB,CAAC,eAAe,CAAC,aAAa,CAAC,eAAe,CAAC,kBAAkB,CAAC,CAAC,CAAC;gBACrG,IAAI,IAAI,GAAG,QAAQ,CAAC,CAAC,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC;gBAC5C,IAAI,GAAG,GAAG,QAAQ,CAAC,CAAC,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC;gBAE1C,IAAI,IAAI,GAAG,GAAG,GAAG,iBAAiB,EAAE;oBAClC,mEAAmE;oBACnE,GAAG,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,iBAAiB,CAAC,CAAC;oBAC7E,IAAI,GAAG,GAAG,GAAG,iBAAiB,CAAC;oBAC/B,QAAQ,CAAC,CAAC,GAAG,IAAI,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC;iBACzC;gBACD,MAAM,QAAQ,GAAG,uBAAO,CAAC,UAAU,EAAE,CAAC;gBACtC,MAAM,SAAS,GAAG,uBAAO,CAAC,UAAU,EAAE,CAAC;gBACvC,2EAA2E;gBAC3E,SAAS,CAAC,GAAG,CAAC,CAAC,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC;gBACrC,SAAS,CAAC,IAAI,CAAC,CAAC,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC;gBACvC,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,GAAG,GAAG,GAAG,IAAI,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;gBAC7E,QAAQ,CAAC,IAAI,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,GAAG,GAAG,GAAG,IAAI,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;gBAC/E,6BAAa,CAAC,+CAA+C,CAAC,cAAc,EAAE,YAAY,EAAE,CAAC,MAAwB,EAAE,EAAE;oBACvH,MAAM,CAAC,eAAe,EAAE,CAAC,OAAO,CAAC,CAAC,UAAU,EAAE,EAAE;wBAC9C,MAAM,QAAQ,GAAG,GAAG,GAAG,CAAC,QAAQ,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;wBACnD,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;wBACrD,MAAM,KAAK,GAAG,QAAQ,CAAC,CAAC,GAAG,SAAS,GAAG,CAAC,UAAU,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;wBACnE,MAAM,IAAI,GAAG,QAAQ,CAAC,CAAC,GAAG,QAAQ,GAAG,CAAC,UAAU,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;wBACjE,SAAS,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;wBACnD,SAAS,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;wBACrD,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;wBAChD,QAAQ,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;oBACpD,CAAC,CAAC,CAAC;gBACL,CAAC,CAAC,CAAC;gBACH,cAAc,CAAC,MAAM,CAAC,iBAAG,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC;gBACtF,cAAc,CAAC,MAAM,CAAC,iBAAG,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC;gBACvF,cAAc,CAAC,MAAM,CAAC,iBAAG,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC;gBACvF,cAAc,CAAC,MAAM,CAAC,iBAAG,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC;gBACxF,cAAc,CAAC,MAAM,CAAC,iBAAG,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;gBACzF,cAAc,CAAC,MAAM,CAAC,iBAAG,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;gBAC1F,cAAc,CAAC,MAAM,CAAC,iBAAG,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;gBAC1F,cAAc,CAAC,MAAM,CAAC,iBAAG,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;aAC5F;SACF;QACD,aAAa,CAAC,gBAAgB,EAAE,CAAC;QACjC,aAAa,CAAC,0BAA0B,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;QAChE,MAAM,UAAU,GAAG,cAAc,CAAC,OAAO,EAAE,CAAC;QAC5C,IAAI,SAAS,KAAK,UAAU,EAAE;YAC5B,OAAO,EAAE,CAAC;SACX;QACD,MAAM,UAAU,GAAG,uBAAuB,CAAC,wBAAwB,CAAC,oBAAoB,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;QAChH,MAAM,SAAS,GAAG,qBAAK,CAAC,YAAY,CAAC,uBAAO,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,uBAAO,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,uBAAO,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,uBAAO,CAAC,MAAM,CAAC,YAAY,EAAE,aAAa,EAAE,CAAC,CAAC,CAAE,CAAC;QACjK,MAAM,UAAU,GAAG,UAAU,CAAC,aAAa,EAAE,CAAC;QAC9C,IAAI,SAAS,KAAK,UAAU,EAAE;YAC5B,OAAO,EAAE,CAAC;SACX;QACD,MAAM,aAAa,GAAG,qBAAK,CAAC,UAAU,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;QAC/D,MAAM,cAAc,GAAG,SAAS,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC;QAE/D,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,UAAU,EAAE,cAAc,EAAE,YAAY,EAAE,CAAC;IACxF,CAAC;IAEM,MAAM,CAAC,uBAAuB,CAAC,MAAc;QAClD,MAAM,KAAK,GAAG,IAAI,yBAAW,EAAE,CAAC;QAChC,KAAK,CAAC,KAAK,CAAC,SAAS,GAAG,KAAK,CAAC;QAC9B,KAAK,CAAC,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC;QAC1B,KAAK,CAAC,KAAK,CAAC,SAAS,GAAG,KAAK,CAAC;QAE9B,MAAM,SAAS,GAAG,MAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC;YAC7C,UAAU,EAAE,wBAAU,CAAC,WAAW;YAClC,QAAQ,EAAE,KAAK;YACf,YAAY,EAAE,KAAK;YACnB,QAAQ,EAAE,KAAK;YACf,QAAQ,EAAE,KAAK;YACf,OAAO,EAAE,KAAK;YACd,UAAU,EAAE,KAAK;YACjB,SAAS,EAAE,KAAK;YAChB,gBAAgB,EAAE,KAAK;YACvB,YAAY,EAAE,KAAK;YACnB,WAAW,EAAE,KAAK;SACnB,CAAC,CAAC;QAEH,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;IAC9B,CAAC;;AArKH,0DAsKC;AArKgB,gDAAwB,GAAG,wBAAQ,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,WAAW,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,WAAW,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,WAAW,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC","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":"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"}
@@ -9,60 +9,147 @@ exports.RealityMeshGeometry = exports.RealityMeshGeometryParams = exports.Realit
9
9
  * @module WebGL
10
10
  */
11
11
  const core_bentley_1 = require("@itwin/core-bentley");
12
- const core_geometry_1 = require("@itwin/core-geometry");
13
12
  const core_common_1 = require("@itwin/core-common");
14
- const AttributeMap_1 = require("./AttributeMap");
15
- const AttributeBuffers_1 = require("./AttributeBuffers");
16
- const CachedGeometry_1 = require("./CachedGeometry");
17
- const Matrix_1 = require("./Matrix");
13
+ const core_geometry_1 = require("@itwin/core-geometry");
18
14
  const GraphicBranch_1 = require("../GraphicBranch");
19
15
  const RenderSystem_1 = require("../RenderSystem");
16
+ const AttributeBuffers_1 = require("./AttributeBuffers");
17
+ const AttributeMap_1 = require("./AttributeMap");
18
+ const CachedGeometry_1 = require("./CachedGeometry");
20
19
  const GL_1 = require("./GL");
20
+ const Matrix_1 = require("./Matrix");
21
21
  const Primitive_1 = require("./Primitive");
22
22
  const System_1 = require("./System");
23
23
  const scratchOverlapRange = core_geometry_1.Range2d.createNull();
24
+ const scratchBytes = new Uint8Array(4);
25
+ const scratchBatchBaseId = new Uint32Array(scratchBytes.buffer);
26
+ const scratchRange2d = core_geometry_1.Range2d.createNull();
27
+ class ProjectedTexture {
28
+ constructor(classifier, meshParams, targetRectangle) {
29
+ this.meshParams = meshParams;
30
+ this.targetRectangle = targetRectangle;
31
+ this.classifier = classifier;
32
+ }
33
+ clone(targetRectangle) {
34
+ return new ProjectedTexture(this.classifier, this.meshParams, targetRectangle.clone());
35
+ }
36
+ }
37
+ class RealityTextureParam {
38
+ constructor(texture, _projectedTextureOrMatrix) {
39
+ this.texture = texture;
40
+ this._projectedTextureOrMatrix = _projectedTextureOrMatrix;
41
+ }
42
+ get isProjected() { return this._projectedTextureOrMatrix instanceof ProjectedTexture; }
43
+ /* There are two methods of applying a texture to a reality mesh. the first member of "params" denotes which
44
+ method is to be used. A value of zero indicates a standard texture and one represents a classified texture.
45
+
46
+ A standard (nonprojected) texture is generated by multiplying v_textCoord by the scaling and translation packed into the first row
47
+ of "matrix". A clip rectangle is packed into second row of "matrix".
48
+
49
+ A "classified" reality mesh texture is used for map layers. It does not uses v_texCoord, the texture coordinates
50
+ are instead generated by a projection of the model position onto the X-Y plane. We only have eye position, not model position
51
+ so the matrix in this case is a real transform matrix that contains a mapping from eye to model position
52
+ followed by the model to texture projection.
53
+ */
54
+ getProjectionMatrix() {
55
+ return this._projectedTextureOrMatrix instanceof ProjectedTexture ? this._projectedTextureOrMatrix.classifier.projectionMatrix : undefined;
56
+ }
57
+ getTerrainMatrix() {
58
+ return this._projectedTextureOrMatrix instanceof Matrix_1.Matrix4 ? this._projectedTextureOrMatrix : undefined;
59
+ }
60
+ getParams(result) {
61
+ /** Entry 0 is 0 for */
62
+ if (this._projectedTextureOrMatrix instanceof ProjectedTexture) {
63
+ const projectedTexture = this._projectedTextureOrMatrix;
64
+ result.data[0] = 1;
65
+ result.data[1] = projectedTexture.classifier.textureImageCount;
66
+ result.data[2] = projectedTexture.classifier.sourceTransparency === undefined ? 1.0 : (1.0 - projectedTexture.classifier.sourceTransparency);
67
+ scratchBatchBaseId[0] = projectedTexture.classifier.baseBatchId;
68
+ result.data[4] = scratchBytes[0];
69
+ result.data[5] = scratchBytes[1];
70
+ result.data[6] = scratchBytes[2];
71
+ result.data[7] = scratchBytes[3];
72
+ const points = [];
73
+ const meshParams = projectedTexture.meshParams;
74
+ // Calculate range in the tiles local coordinates.
75
+ const low = meshParams.tileRectangle.worldToLocal(projectedTexture.targetRectangle.low, scratchRange2d.low);
76
+ const high = meshParams.tileRectangle.worldToLocal(projectedTexture.targetRectangle.high, scratchRange2d.high);
77
+ points.push(meshParams.projection.getGlobalPoint(low.x, low.y, 0));
78
+ points.push(meshParams.projection.getGlobalPoint(high.x, low.y, 0));
79
+ points.push(meshParams.projection.getGlobalPoint(high.x, high.y, 0));
80
+ points.push(meshParams.projection.getGlobalPoint(low.x, high.y, 0));
81
+ for (let i = 0, j = 8; i < 4; i++) {
82
+ const projectedPoint = projectedTexture.classifier.projectionMatrix.multiplyPoint3dQuietNormalize(points[i]);
83
+ result.data[j++] = projectedPoint.x;
84
+ result.data[j++] = projectedPoint.y;
85
+ }
86
+ const x0 = result.data[10] - result.data[8], y0 = result.data[11] - result.data[9];
87
+ const x1 = result.data[12] - result.data[8], y1 = result.data[13] - result.data[9];
88
+ if (x0 * y1 - x1 * y0 < 0) {
89
+ const swap = ((i, j) => {
90
+ const temp = result.data[i];
91
+ result.data[i] = result.data[j];
92
+ result.data[j] = temp;
93
+ });
94
+ for (let i = 8, j = 14; i <= 10; i += 2, j -= 2) {
95
+ swap(i, j);
96
+ swap(i + 1, j + 1);
97
+ }
98
+ }
99
+ }
100
+ else {
101
+ result.data[0] = 0;
102
+ }
103
+ return result;
104
+ }
105
+ }
24
106
  /** @internal */
25
107
  class RealityTextureParams {
26
- constructor(matrices, textures) {
27
- this.matrices = matrices;
28
- this.textures = textures;
108
+ constructor(params) {
109
+ this.params = params;
29
110
  }
30
- static create(terrainTextures) {
111
+ static create(textures) {
31
112
  const maxTexturesPerMesh = System_1.System.instance.maxRealityImageryLayers;
32
- (0, core_bentley_1.assert)(terrainTextures.length <= maxTexturesPerMesh);
33
- const renderTextures = [];
34
- const matrices = new Array();
35
- for (const terrainTexture of terrainTextures) {
36
- const matrix = new Matrix_1.Matrix4(); // Published as Mat4.
37
- renderTextures.push(terrainTexture.texture);
38
- (0, core_bentley_1.assert)(terrainTexture.texture !== undefined, "Texture not defined in TerrainTextureParams constructor");
39
- matrix.data[0] = terrainTexture.translate.x;
40
- matrix.data[1] = terrainTexture.translate.y;
41
- matrix.data[2] = terrainTexture.scale.x;
42
- matrix.data[3] = terrainTexture.scale.y;
43
- if (terrainTexture.clipRectangle) {
44
- matrix.data[4] = terrainTexture.clipRectangle.low.x;
45
- matrix.data[5] = terrainTexture.clipRectangle.low.y;
46
- matrix.data[6] = terrainTexture.clipRectangle.high.x;
47
- matrix.data[7] = terrainTexture.clipRectangle.high.y;
113
+ (0, core_bentley_1.assert)(textures.length <= maxTexturesPerMesh);
114
+ const textureParams = new Array();
115
+ for (const texture of textures) {
116
+ if (texture instanceof RenderSystem_1.TerrainTexture) {
117
+ const terrainTexture = texture;
118
+ const matrix = new Matrix_1.Matrix4(); // Published as Mat4.
119
+ (0, core_bentley_1.assert)(terrainTexture.texture !== undefined, "Texture not defined in TerrainTextureParams constructor");
120
+ matrix.data[0] = terrainTexture.translate.x;
121
+ matrix.data[1] = terrainTexture.translate.y;
122
+ matrix.data[2] = terrainTexture.scale.x;
123
+ matrix.data[3] = terrainTexture.scale.y;
124
+ if (terrainTexture.clipRectangle) {
125
+ matrix.data[4] = terrainTexture.clipRectangle.low.x;
126
+ matrix.data[5] = terrainTexture.clipRectangle.low.y;
127
+ matrix.data[6] = terrainTexture.clipRectangle.high.x;
128
+ matrix.data[7] = terrainTexture.clipRectangle.high.y;
129
+ }
130
+ else {
131
+ matrix.data[4] = matrix.data[5] = 0;
132
+ matrix.data[6] = matrix.data[7] = 1;
133
+ }
134
+ matrix.data[8] = (1.0 - terrainTexture.transparency);
135
+ matrix.data[9] = terrainTexture.featureId;
136
+ textureParams.push(new RealityTextureParam(terrainTexture.texture, matrix));
48
137
  }
49
138
  else {
50
- matrix.data[4] = matrix.data[5] = 0;
51
- matrix.data[6] = matrix.data[7] = 1;
139
+ const classifier = texture.classifier;
140
+ textureParams.push(new RealityTextureParam(classifier.getOrCreateClassifierTexture(), texture));
52
141
  }
53
- matrix.data[8] = (1.0 - terrainTexture.transparency);
54
- matrix.data[9] = terrainTexture.featureId;
55
- matrices.push(matrix);
56
142
  }
57
- for (let i = terrainTextures.length; i < maxTexturesPerMesh; i++) {
143
+ for (let i = textures.length; i < maxTexturesPerMesh; i++) {
58
144
  const matrix = new Matrix_1.Matrix4();
59
145
  matrix.data[0] = matrix.data[1] = 0.0;
60
146
  matrix.data[2] = matrix.data[3] = 1.0;
61
147
  matrix.data[4] = matrix.data[5] = 1;
62
148
  matrix.data[6] = matrix.data[7] = -1;
63
- matrices.push(matrix);
149
+ matrix.data[15] = 0; // Denotes a terrain texture.
150
+ textureParams.push(new RealityTextureParam(undefined, matrix));
64
151
  }
65
- return new RealityTextureParams(matrices, renderTextures);
152
+ return new RealityTextureParams(textureParams);
66
153
  }
67
154
  }
68
155
  exports.RealityTextureParams = RealityTextureParams;
@@ -122,6 +209,7 @@ class RealityMeshGeometry extends CachedGeometry_1.IndexedGeometry {
122
209
  get hasFeatures() { return this._realityMeshParams.featureID !== undefined; }
123
210
  get supportsThematicDisplay() { return true; }
124
211
  get overrideColorMix() { return .5; } // This could be a setting from either the mesh or the override if required.
212
+ get transform() { return this._transform; }
125
213
  dispose() {
126
214
  super.dispose();
127
215
  (0, core_bentley_1.dispose)(this._realityMeshParams);
@@ -140,51 +228,66 @@ class RealityMeshGeometry extends CachedGeometry_1.IndexedGeometry {
140
228
  getRange() {
141
229
  return core_geometry_1.Range3d.createXYZXYZ(this.qOrigin[0], this.qOrigin[1], this.qOrigin[2], this.qOrigin[0] + core_common_1.Quantization.rangeScale16 * this.qScale[0], this.qOrigin[1] + core_common_1.Quantization.rangeScale16 * this.qScale[1], this.qOrigin[2] + core_common_1.Quantization.rangeScale16 * this.qScale[2]);
142
230
  }
143
- static createGraphic(system, realityMesh, featureTable, tileId, baseColor, baseTransparent, textures) {
231
+ static createGraphic(system, params) {
232
+ var _a, _b;
144
233
  const meshes = [];
145
- if (textures === undefined)
146
- textures = [];
234
+ const textures = (_a = params.textures) !== null && _a !== void 0 ? _a : [];
235
+ const realityMesh = params.realityMesh;
236
+ const { baseColor, baseTransparent, featureTable, tileId, layerClassifiers } = params;
147
237
  const texturesPerMesh = System_1.System.instance.maxRealityImageryLayers;
148
238
  const layers = new Array();
149
- let layerCount = 0;
239
+ // Collate the textures and classifiers layers into a single array.
150
240
  for (const texture of textures) {
151
241
  const layer = layers[texture.layerIndex];
152
242
  if (layer) {
153
243
  layer.push(texture);
154
244
  }
155
245
  else {
156
- layerCount++;
157
246
  layers[texture.layerIndex] = [texture];
158
247
  }
159
248
  }
160
- if (layerCount < 2) {
249
+ (_b = params.layerClassifiers) === null || _b === void 0 ? void 0 : _b.forEach((layerClassifier, layerIndex) => layers[layerIndex] = [new ProjectedTexture(layerClassifier, params, params.tileRectangle)]);
250
+ if (layers.length < 2 && !(layerClassifiers === null || layerClassifiers === void 0 ? void 0 : layerClassifiers.size) && textures.length < texturesPerMesh) {
161
251
  // If only there is not more than one layer then we can group all of the textures into a single draw call.
162
252
  meshes.push(new RealityMeshGeometry(realityMesh._realityMeshParams, RealityTextureParams.create(textures), realityMesh._transform, baseColor, baseTransparent, realityMesh._isTerrain));
163
253
  }
164
254
  else {
165
- const primaryLayer = layers.shift();
255
+ let primaryLayer;
256
+ while (primaryLayer === undefined)
257
+ primaryLayer = layers.shift();
258
+ if (!primaryLayer)
259
+ return undefined;
166
260
  for (const primaryTexture of primaryLayer) {
167
261
  const targetRectangle = primaryTexture.targetRectangle;
168
262
  const overlapMinimum = 1.0E-5 * (targetRectangle.high.x - targetRectangle.low.x) * (targetRectangle.high.y - targetRectangle.low.y);
169
- const layerTextures = [primaryTexture];
263
+ let layerTextures = [primaryTexture];
170
264
  for (const secondaryLayer of layers) {
171
265
  if (!secondaryLayer)
172
266
  continue;
173
267
  for (const secondaryTexture of secondaryLayer) {
174
- const secondaryRectangle = secondaryTexture.targetRectangle;
175
- const overlap = targetRectangle.intersect(secondaryRectangle, scratchOverlapRange);
176
- if (!overlap.isNull && (overlap.high.x - overlap.low.x) * (overlap.high.y - overlap.low.y) > overlapMinimum) {
177
- const textureRange = core_geometry_1.Range2d.createXYXY(overlap.low.x, overlap.low.y, overlap.high.x, overlap.high.y);
178
- secondaryRectangle.worldToLocal(textureRange.low, textureRange.low);
179
- secondaryRectangle.worldToLocal(textureRange.high, textureRange.high);
180
- if (secondaryTexture.clipRectangle)
181
- textureRange.intersect(secondaryTexture.clipRectangle, textureRange);
182
- if (!textureRange.isNull)
183
- layerTextures.push(new RenderSystem_1.TerrainTexture(secondaryTexture.texture, secondaryTexture.featureId, secondaryTexture.scale, secondaryTexture.translate, secondaryTexture.targetRectangle, secondaryTexture.layerIndex, secondaryTexture.transparency, textureRange));
268
+ if (secondaryTexture instanceof ProjectedTexture) {
269
+ layerTextures.push(secondaryTexture.clone(targetRectangle));
270
+ }
271
+ else {
272
+ const secondaryRectangle = secondaryTexture.targetRectangle;
273
+ const overlap = targetRectangle.intersect(secondaryRectangle, scratchOverlapRange);
274
+ if (!overlap.isNull && (overlap.high.x - overlap.low.x) * (overlap.high.y - overlap.low.y) > overlapMinimum) {
275
+ const textureRange = core_geometry_1.Range2d.createXYXY(overlap.low.x, overlap.low.y, overlap.high.x, overlap.high.y);
276
+ secondaryRectangle.worldToLocal(textureRange.low, textureRange.low);
277
+ secondaryRectangle.worldToLocal(textureRange.high, textureRange.high);
278
+ if (secondaryTexture.clipRectangle)
279
+ textureRange.intersect(secondaryTexture.clipRectangle, textureRange);
280
+ if (!textureRange.isNull && textureRange) {
281
+ layerTextures.push(secondaryTexture.cloneWithClip(textureRange));
282
+ }
283
+ }
184
284
  }
185
285
  }
186
286
  }
187
- layerTextures.length = Math.min(layerTextures.length, texturesPerMesh);
287
+ while (layerTextures.length > texturesPerMesh) {
288
+ meshes.push(new RealityMeshGeometry(realityMesh._realityMeshParams, RealityTextureParams.create(layerTextures.slice(0, texturesPerMesh)), realityMesh._transform, baseColor, baseTransparent, realityMesh._isTerrain));
289
+ layerTextures = layerTextures.slice(texturesPerMesh);
290
+ }
188
291
  meshes.push(new RealityMeshGeometry(realityMesh._realityMeshParams, RealityTextureParams.create(layerTextures), realityMesh._transform, baseColor, baseTransparent, realityMesh._isTerrain));
189
292
  }
190
293
  }