@itwin/core-frontend 4.0.0-dev.23 → 4.0.0-dev.28

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 (470) hide show
  1. package/CHANGELOG.md +43 -36
  2. package/lib/cjs/AccuDraw.js +1 -1
  3. package/lib/cjs/AccuDraw.js.map +1 -1
  4. package/lib/cjs/AccuSnap.js +3 -3
  5. package/lib/cjs/AccuSnap.js.map +1 -1
  6. package/lib/cjs/BriefcaseConnection.js +9 -11
  7. package/lib/cjs/BriefcaseConnection.js.map +1 -1
  8. package/lib/cjs/DisplayStyleState.js +8 -12
  9. package/lib/cjs/DisplayStyleState.js.map +1 -1
  10. package/lib/cjs/DrawingViewState.js +4 -6
  11. package/lib/cjs/DrawingViewState.js.map +1 -1
  12. package/lib/cjs/EnvironmentDecorations.js +2 -3
  13. package/lib/cjs/EnvironmentDecorations.js.map +1 -1
  14. package/lib/cjs/FlashSettings.js +3 -4
  15. package/lib/cjs/FlashSettings.js.map +1 -1
  16. package/lib/cjs/GeoServices.js +7 -9
  17. package/lib/cjs/GeoServices.js.map +1 -1
  18. package/lib/cjs/IModelApp.js +19 -21
  19. package/lib/cjs/IModelApp.js.map +1 -1
  20. package/lib/cjs/IModelConnection.js +1 -1
  21. package/lib/cjs/IModelConnection.js.map +1 -1
  22. package/lib/cjs/IpcApp.js +1 -1
  23. package/lib/cjs/IpcApp.js.map +1 -1
  24. package/lib/cjs/LocalhostIpcApp.js +3 -4
  25. package/lib/cjs/LocalhostIpcApp.js.map +1 -1
  26. package/lib/cjs/ModelState.js +2 -3
  27. package/lib/cjs/ModelState.js.map +1 -1
  28. package/lib/cjs/NativeApp.js +4 -7
  29. package/lib/cjs/NativeApp.js.map +1 -1
  30. package/lib/cjs/NoRenderApp.js +1 -2
  31. package/lib/cjs/NoRenderApp.js.map +1 -1
  32. package/lib/cjs/PlanarClipMaskState.js +1 -1
  33. package/lib/cjs/PlanarClipMaskState.js.map +1 -1
  34. package/lib/cjs/RealityDataSourceContextShareImpl.js +2 -4
  35. package/lib/cjs/RealityDataSourceContextShareImpl.js.map +1 -1
  36. package/lib/cjs/SheetViewState.js +15 -23
  37. package/lib/cjs/SheetViewState.js.map +1 -1
  38. package/lib/cjs/Tiles.js +2 -2
  39. package/lib/cjs/Tiles.js.map +1 -1
  40. package/lib/cjs/ViewContext.js +1 -1
  41. package/lib/cjs/ViewContext.js.map +1 -1
  42. package/lib/cjs/ViewCreator2d.js +4 -5
  43. package/lib/cjs/ViewCreator2d.js.map +1 -1
  44. package/lib/cjs/ViewCreator3d.js +5 -5
  45. package/lib/cjs/ViewCreator3d.js.map +1 -1
  46. package/lib/cjs/ViewState.js +17 -24
  47. package/lib/cjs/ViewState.js.map +1 -1
  48. package/lib/cjs/Viewport.js +22 -32
  49. package/lib/cjs/Viewport.js.map +1 -1
  50. package/lib/cjs/extension/ExtensionImpl.js +1 -1
  51. package/lib/cjs/extension/ExtensionImpl.js.map +1 -1
  52. package/lib/cjs/quantity-formatting/BaseUnitFormattingSettingsProvider.js +2 -3
  53. package/lib/cjs/quantity-formatting/BaseUnitFormattingSettingsProvider.js.map +1 -1
  54. package/lib/cjs/quantity-formatting/QuantityFormatter.js +7 -9
  55. package/lib/cjs/quantity-formatting/QuantityFormatter.js.map +1 -1
  56. package/lib/cjs/render/FeatureSymbology.js +1 -2
  57. package/lib/cjs/render/FeatureSymbology.js.map +1 -1
  58. package/lib/cjs/render/GraphicBuilder.js +7 -9
  59. package/lib/cjs/render/GraphicBuilder.js.map +1 -1
  60. package/lib/cjs/render/MockRender.js +1 -2
  61. package/lib/cjs/render/MockRender.js.map +1 -1
  62. package/lib/cjs/render/ParticleCollectionBuilder.js +2 -3
  63. package/lib/cjs/render/ParticleCollectionBuilder.js.map +1 -1
  64. package/lib/cjs/render/RealityMeshParams.js +7 -10
  65. package/lib/cjs/render/RealityMeshParams.js.map +1 -1
  66. package/lib/cjs/render/RenderPlan.js +1 -1
  67. package/lib/cjs/render/RenderPlan.js.map +1 -1
  68. package/lib/cjs/render/RenderSystem.js +1 -2
  69. package/lib/cjs/render/RenderSystem.js.map +1 -1
  70. package/lib/cjs/render/VisibleFeature.js +2 -4
  71. package/lib/cjs/render/VisibleFeature.js.map +1 -1
  72. package/lib/cjs/render/primitives/AuxChannelTable.js +6 -9
  73. package/lib/cjs/render/primitives/AuxChannelTable.js.map +1 -1
  74. package/lib/cjs/render/primitives/EdgeParams.js +6 -7
  75. package/lib/cjs/render/primitives/EdgeParams.js.map +1 -1
  76. package/lib/cjs/render/primitives/PolylineParams.js +2 -3
  77. package/lib/cjs/render/primitives/PolylineParams.js.map +1 -1
  78. package/lib/cjs/render/primitives/VertexKey.js +1 -1
  79. package/lib/cjs/render/primitives/VertexKey.js.map +1 -1
  80. package/lib/cjs/render/primitives/VertexTable.js +1 -1
  81. package/lib/cjs/render/primitives/VertexTable.js.map +1 -1
  82. package/lib/cjs/render/primitives/VertexTableSplitter.js +6 -8
  83. package/lib/cjs/render/primitives/VertexTableSplitter.js.map +1 -1
  84. package/lib/cjs/render/primitives/geometry/GeometryAccumulator.js +9 -11
  85. package/lib/cjs/render/primitives/geometry/GeometryAccumulator.js.map +1 -1
  86. package/lib/cjs/render/primitives/geometry/GeometryListBuilder.js +3 -5
  87. package/lib/cjs/render/primitives/geometry/GeometryListBuilder.js.map +1 -1
  88. package/lib/cjs/render/primitives/mesh/MeshBuilder.js +1 -1
  89. package/lib/cjs/render/primitives/mesh/MeshBuilder.js.map +1 -1
  90. package/lib/cjs/render/primitives/mesh/MeshPrimitives.js +2 -3
  91. package/lib/cjs/render/primitives/mesh/MeshPrimitives.js.map +1 -1
  92. package/lib/cjs/render/webgl/BranchState.js +9 -10
  93. package/lib/cjs/render/webgl/BranchState.js.map +1 -1
  94. package/lib/cjs/render/webgl/EDL.js +17 -21
  95. package/lib/cjs/render/webgl/EDL.js.map +1 -1
  96. package/lib/cjs/render/webgl/FeatureOverrides.js +2 -2
  97. package/lib/cjs/render/webgl/FeatureOverrides.js.map +1 -1
  98. package/lib/cjs/render/webgl/Graphic.js +3 -5
  99. package/lib/cjs/render/webgl/Graphic.js.map +1 -1
  100. package/lib/cjs/render/webgl/IndexedEdgeGeometry.js +1 -1
  101. package/lib/cjs/render/webgl/IndexedEdgeGeometry.js.map +1 -1
  102. package/lib/cjs/render/webgl/InstancedGeometry.js +2 -3
  103. package/lib/cjs/render/webgl/InstancedGeometry.js.map +1 -1
  104. package/lib/cjs/render/webgl/Mesh.js +7 -10
  105. package/lib/cjs/render/webgl/Mesh.js.map +1 -1
  106. package/lib/cjs/render/webgl/MeshData.js +1 -2
  107. package/lib/cjs/render/webgl/MeshData.js.map +1 -1
  108. package/lib/cjs/render/webgl/PlanarClassifier.js +10 -15
  109. package/lib/cjs/render/webgl/PlanarClassifier.js.map +1 -1
  110. package/lib/cjs/render/webgl/RealityMesh.js +5 -8
  111. package/lib/cjs/render/webgl/RealityMesh.js.map +1 -1
  112. package/lib/cjs/render/webgl/RealityModelUniforms.js +3 -4
  113. package/lib/cjs/render/webgl/RealityModelUniforms.js.map +1 -1
  114. package/lib/cjs/render/webgl/RenderCommands.js +7 -8
  115. package/lib/cjs/render/webgl/RenderCommands.js.map +1 -1
  116. package/lib/cjs/render/webgl/SceneCompositor.js +7 -9
  117. package/lib/cjs/render/webgl/SceneCompositor.js.map +1 -1
  118. package/lib/cjs/render/webgl/ShaderBuilder.js +1 -2
  119. package/lib/cjs/render/webgl/ShaderBuilder.js.map +1 -1
  120. package/lib/cjs/render/webgl/SolarShadowMap.js +1 -2
  121. package/lib/cjs/render/webgl/SolarShadowMap.js.map +1 -1
  122. package/lib/cjs/render/webgl/SurfaceGeometry.js +1 -1
  123. package/lib/cjs/render/webgl/SurfaceGeometry.js.map +1 -1
  124. package/lib/cjs/render/webgl/System.js +12 -16
  125. package/lib/cjs/render/webgl/System.js.map +1 -1
  126. package/lib/cjs/render/webgl/Target.js +9 -14
  127. package/lib/cjs/render/webgl/Target.js.map +1 -1
  128. package/lib/cjs/render/webgl/TargetGraphics.js +1 -2
  129. package/lib/cjs/render/webgl/TargetGraphics.js.map +1 -1
  130. package/lib/cjs/render/webgl/Texture.js +1 -2
  131. package/lib/cjs/render/webgl/Texture.js.map +1 -1
  132. package/lib/cjs/render/webgl/ThematicSensors.js +2 -4
  133. package/lib/cjs/render/webgl/ThematicSensors.js.map +1 -1
  134. package/lib/cjs/render/webgl/VisibleTileFeatures.js +1 -2
  135. package/lib/cjs/render/webgl/VisibleTileFeatures.js.map +1 -1
  136. package/lib/cjs/render/webgl/glsl/Animation.js +6 -9
  137. package/lib/cjs/render/webgl/glsl/Animation.js.map +1 -1
  138. package/lib/cjs/render/webgl/glsl/FeatureSymbology.js +1 -2
  139. package/lib/cjs/render/webgl/glsl/FeatureSymbology.js.map +1 -1
  140. package/lib/cjs/render/webgl/glsl/Instancing.js +4 -5
  141. package/lib/cjs/render/webgl/glsl/Instancing.js.map +1 -1
  142. package/lib/cjs/render/webgl/glsl/RealityMesh.js +2 -4
  143. package/lib/cjs/render/webgl/glsl/RealityMesh.js.map +1 -1
  144. package/lib/cjs/render/webgl/glsl/Surface.js +1 -2
  145. package/lib/cjs/render/webgl/glsl/Surface.js.map +1 -1
  146. package/lib/cjs/render/webgl/glsl/Thematic.js +1 -2
  147. package/lib/cjs/render/webgl/glsl/Thematic.js.map +1 -1
  148. package/lib/cjs/tile/ClassifierTileTree.js +3 -3
  149. package/lib/cjs/tile/ClassifierTileTree.js.map +1 -1
  150. package/lib/cjs/tile/GltfReader.js +61 -75
  151. package/lib/cjs/tile/GltfReader.js.map +1 -1
  152. package/lib/cjs/tile/IModelTile.js +2 -3
  153. package/lib/cjs/tile/IModelTile.js.map +1 -1
  154. package/lib/cjs/tile/IModelTileRequestChannels.js +6 -11
  155. package/lib/cjs/tile/IModelTileRequestChannels.js.map +1 -1
  156. package/lib/cjs/tile/IModelTileTree.js +5 -9
  157. package/lib/cjs/tile/IModelTileTree.js.map +1 -1
  158. package/lib/cjs/tile/ImdlReader.js +13 -17
  159. package/lib/cjs/tile/ImdlReader.js.map +1 -1
  160. package/lib/cjs/tile/OrbitGtTileTree.js +2 -2
  161. package/lib/cjs/tile/OrbitGtTileTree.js.map +1 -1
  162. package/lib/cjs/tile/PntsReader.js +4 -5
  163. package/lib/cjs/tile/PntsReader.js.map +1 -1
  164. package/lib/cjs/tile/PrimaryTileTree.js +22 -32
  165. package/lib/cjs/tile/PrimaryTileTree.js.map +1 -1
  166. package/lib/cjs/tile/RealityModelTileTree.js +12 -19
  167. package/lib/cjs/tile/RealityModelTileTree.js.map +1 -1
  168. package/lib/cjs/tile/RealityTile.js +3 -5
  169. package/lib/cjs/tile/RealityTile.js.map +1 -1
  170. package/lib/cjs/tile/RealityTileLoader.js +2 -2
  171. package/lib/cjs/tile/RealityTileLoader.js.map +1 -1
  172. package/lib/cjs/tile/ThreeDTileFormatInterpreter.js +3 -5
  173. package/lib/cjs/tile/ThreeDTileFormatInterpreter.js.map +1 -1
  174. package/lib/cjs/tile/Tile.js +1 -1
  175. package/lib/cjs/tile/Tile.js.map +1 -1
  176. package/lib/cjs/tile/TileAdmin.js +22 -27
  177. package/lib/cjs/tile/TileAdmin.js.map +1 -1
  178. package/lib/cjs/tile/TileDrawArgs.js +3 -6
  179. package/lib/cjs/tile/TileDrawArgs.js.map +1 -1
  180. package/lib/cjs/tile/TileRequestChannels.js +1 -1
  181. package/lib/cjs/tile/TileRequestChannels.js.map +1 -1
  182. package/lib/cjs/tile/TileTree.js +2 -3
  183. package/lib/cjs/tile/TileTree.js.map +1 -1
  184. package/lib/cjs/tile/TiledGraphicsProvider.js +1 -1
  185. package/lib/cjs/tile/TiledGraphicsProvider.js.map +1 -1
  186. package/lib/cjs/tile/map/ArcGISTileMap.js +5 -6
  187. package/lib/cjs/tile/map/ArcGISTileMap.js.map +1 -1
  188. package/lib/cjs/tile/map/ArcGisUtilities.js +6 -8
  189. package/lib/cjs/tile/map/ArcGisUtilities.js.map +1 -1
  190. package/lib/cjs/tile/map/ImageryProviders/ArcGISImageryProvider.js +4 -7
  191. package/lib/cjs/tile/map/ImageryProviders/ArcGISImageryProvider.js.map +1 -1
  192. package/lib/cjs/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js +6 -8
  193. package/lib/cjs/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js.map +1 -1
  194. package/lib/cjs/tile/map/ImageryProviders/BingImageryProvider.js +1 -2
  195. package/lib/cjs/tile/map/ImageryProviders/BingImageryProvider.js.map +1 -1
  196. package/lib/cjs/tile/map/ImageryProviders/WmsMapLayerImageryProvider.js +14 -19
  197. package/lib/cjs/tile/map/ImageryProviders/WmsMapLayerImageryProvider.js.map +1 -1
  198. package/lib/cjs/tile/map/ImageryProviders/WmtsMapLayerImageryProvider.js +14 -20
  199. package/lib/cjs/tile/map/ImageryProviders/WmtsMapLayerImageryProvider.js.map +1 -1
  200. package/lib/cjs/tile/map/MapCartoRectangle.js +1 -1
  201. package/lib/cjs/tile/map/MapCartoRectangle.js.map +1 -1
  202. package/lib/cjs/tile/map/MapLayerFormatRegistry.js +5 -6
  203. package/lib/cjs/tile/map/MapLayerFormatRegistry.js.map +1 -1
  204. package/lib/cjs/tile/map/MapLayerImageryFormats.js +11 -14
  205. package/lib/cjs/tile/map/MapLayerImageryFormats.js.map +1 -1
  206. package/lib/cjs/tile/map/MapLayerImageryProvider.js +2 -3
  207. package/lib/cjs/tile/map/MapLayerImageryProvider.js.map +1 -1
  208. package/lib/cjs/tile/map/MapLayerSources.js +1 -1
  209. package/lib/cjs/tile/map/MapLayerSources.js.map +1 -1
  210. package/lib/cjs/tile/map/MapTile.js +6 -8
  211. package/lib/cjs/tile/map/MapTile.js.map +1 -1
  212. package/lib/cjs/tile/map/MapTileLoader.js +1 -1
  213. package/lib/cjs/tile/map/MapTileLoader.js.map +1 -1
  214. package/lib/cjs/tile/map/MapTileTree.js +13 -18
  215. package/lib/cjs/tile/map/MapTileTree.js.map +1 -1
  216. package/lib/cjs/tile/map/MapTiledGraphicsProvider.js +6 -7
  217. package/lib/cjs/tile/map/MapTiledGraphicsProvider.js.map +1 -1
  218. package/lib/cjs/tile/map/WmsCapabilities.js +4 -5
  219. package/lib/cjs/tile/map/WmsCapabilities.js.map +1 -1
  220. package/lib/cjs/tile/map/WmtsCapabilities.js +17 -25
  221. package/lib/cjs/tile/map/WmtsCapabilities.js.map +1 -1
  222. package/lib/cjs/tools/ClipViewTool.js +1 -1
  223. package/lib/cjs/tools/ClipViewTool.js.map +1 -1
  224. package/lib/cjs/tools/MeasureTool.js +2 -4
  225. package/lib/cjs/tools/MeasureTool.js.map +1 -1
  226. package/lib/cjs/tools/PrimitiveTool.js +2 -3
  227. package/lib/cjs/tools/PrimitiveTool.js.map +1 -1
  228. package/lib/cjs/tools/SelectTool.js +1 -2
  229. package/lib/cjs/tools/SelectTool.js.map +1 -1
  230. package/lib/cjs/tools/Tool.js +2 -3
  231. package/lib/cjs/tools/Tool.js.map +1 -1
  232. package/lib/cjs/tools/ToolAdmin.js +2 -4
  233. package/lib/cjs/tools/ToolAdmin.js.map +1 -1
  234. package/lib/cjs/tools/ViewTool.js +3 -3
  235. package/lib/cjs/tools/ViewTool.js.map +1 -1
  236. package/lib/esm/AccuDraw.js +1 -1
  237. package/lib/esm/AccuDraw.js.map +1 -1
  238. package/lib/esm/AccuSnap.js +3 -3
  239. package/lib/esm/AccuSnap.js.map +1 -1
  240. package/lib/esm/BriefcaseConnection.js +9 -11
  241. package/lib/esm/BriefcaseConnection.js.map +1 -1
  242. package/lib/esm/DisplayStyleState.js +8 -12
  243. package/lib/esm/DisplayStyleState.js.map +1 -1
  244. package/lib/esm/DrawingViewState.js +4 -6
  245. package/lib/esm/DrawingViewState.js.map +1 -1
  246. package/lib/esm/EnvironmentDecorations.js +2 -3
  247. package/lib/esm/EnvironmentDecorations.js.map +1 -1
  248. package/lib/esm/FlashSettings.js +3 -4
  249. package/lib/esm/FlashSettings.js.map +1 -1
  250. package/lib/esm/GeoServices.js +7 -9
  251. package/lib/esm/GeoServices.js.map +1 -1
  252. package/lib/esm/IModelApp.js +19 -21
  253. package/lib/esm/IModelApp.js.map +1 -1
  254. package/lib/esm/IModelConnection.js +1 -1
  255. package/lib/esm/IModelConnection.js.map +1 -1
  256. package/lib/esm/IpcApp.js +1 -1
  257. package/lib/esm/IpcApp.js.map +1 -1
  258. package/lib/esm/LocalhostIpcApp.js +3 -4
  259. package/lib/esm/LocalhostIpcApp.js.map +1 -1
  260. package/lib/esm/ModelState.js +2 -3
  261. package/lib/esm/ModelState.js.map +1 -1
  262. package/lib/esm/NativeApp.js +4 -7
  263. package/lib/esm/NativeApp.js.map +1 -1
  264. package/lib/esm/NoRenderApp.js +1 -2
  265. package/lib/esm/NoRenderApp.js.map +1 -1
  266. package/lib/esm/PlanarClipMaskState.js +1 -1
  267. package/lib/esm/PlanarClipMaskState.js.map +1 -1
  268. package/lib/esm/RealityDataSourceContextShareImpl.js +2 -4
  269. package/lib/esm/RealityDataSourceContextShareImpl.js.map +1 -1
  270. package/lib/esm/SheetViewState.js +15 -23
  271. package/lib/esm/SheetViewState.js.map +1 -1
  272. package/lib/esm/Tiles.js +2 -2
  273. package/lib/esm/Tiles.js.map +1 -1
  274. package/lib/esm/ViewContext.js +1 -1
  275. package/lib/esm/ViewContext.js.map +1 -1
  276. package/lib/esm/ViewCreator2d.js +4 -5
  277. package/lib/esm/ViewCreator2d.js.map +1 -1
  278. package/lib/esm/ViewCreator3d.js +5 -5
  279. package/lib/esm/ViewCreator3d.js.map +1 -1
  280. package/lib/esm/ViewState.js +17 -24
  281. package/lib/esm/ViewState.js.map +1 -1
  282. package/lib/esm/Viewport.js +22 -32
  283. package/lib/esm/Viewport.js.map +1 -1
  284. package/lib/esm/extension/ExtensionImpl.js +1 -1
  285. package/lib/esm/extension/ExtensionImpl.js.map +1 -1
  286. package/lib/esm/quantity-formatting/BaseUnitFormattingSettingsProvider.js +2 -3
  287. package/lib/esm/quantity-formatting/BaseUnitFormattingSettingsProvider.js.map +1 -1
  288. package/lib/esm/quantity-formatting/QuantityFormatter.js +7 -9
  289. package/lib/esm/quantity-formatting/QuantityFormatter.js.map +1 -1
  290. package/lib/esm/render/FeatureSymbology.js +1 -2
  291. package/lib/esm/render/FeatureSymbology.js.map +1 -1
  292. package/lib/esm/render/GraphicBuilder.js +7 -9
  293. package/lib/esm/render/GraphicBuilder.js.map +1 -1
  294. package/lib/esm/render/MockRender.js +1 -2
  295. package/lib/esm/render/MockRender.js.map +1 -1
  296. package/lib/esm/render/ParticleCollectionBuilder.js +2 -3
  297. package/lib/esm/render/ParticleCollectionBuilder.js.map +1 -1
  298. package/lib/esm/render/RealityMeshParams.js +7 -10
  299. package/lib/esm/render/RealityMeshParams.js.map +1 -1
  300. package/lib/esm/render/RenderPlan.js +1 -1
  301. package/lib/esm/render/RenderPlan.js.map +1 -1
  302. package/lib/esm/render/RenderSystem.js +1 -2
  303. package/lib/esm/render/RenderSystem.js.map +1 -1
  304. package/lib/esm/render/VisibleFeature.js +2 -4
  305. package/lib/esm/render/VisibleFeature.js.map +1 -1
  306. package/lib/esm/render/primitives/AuxChannelTable.js +6 -9
  307. package/lib/esm/render/primitives/AuxChannelTable.js.map +1 -1
  308. package/lib/esm/render/primitives/EdgeParams.js +6 -7
  309. package/lib/esm/render/primitives/EdgeParams.js.map +1 -1
  310. package/lib/esm/render/primitives/PolylineParams.js +2 -3
  311. package/lib/esm/render/primitives/PolylineParams.js.map +1 -1
  312. package/lib/esm/render/primitives/VertexKey.js +1 -1
  313. package/lib/esm/render/primitives/VertexKey.js.map +1 -1
  314. package/lib/esm/render/primitives/VertexTable.js +1 -1
  315. package/lib/esm/render/primitives/VertexTable.js.map +1 -1
  316. package/lib/esm/render/primitives/VertexTableSplitter.js +6 -8
  317. package/lib/esm/render/primitives/VertexTableSplitter.js.map +1 -1
  318. package/lib/esm/render/primitives/geometry/GeometryAccumulator.js +9 -11
  319. package/lib/esm/render/primitives/geometry/GeometryAccumulator.js.map +1 -1
  320. package/lib/esm/render/primitives/geometry/GeometryListBuilder.js +3 -5
  321. package/lib/esm/render/primitives/geometry/GeometryListBuilder.js.map +1 -1
  322. package/lib/esm/render/primitives/mesh/MeshBuilder.js +1 -1
  323. package/lib/esm/render/primitives/mesh/MeshBuilder.js.map +1 -1
  324. package/lib/esm/render/primitives/mesh/MeshPrimitives.js +2 -3
  325. package/lib/esm/render/primitives/mesh/MeshPrimitives.js.map +1 -1
  326. package/lib/esm/render/webgl/BranchState.js +9 -10
  327. package/lib/esm/render/webgl/BranchState.js.map +1 -1
  328. package/lib/esm/render/webgl/EDL.js +17 -21
  329. package/lib/esm/render/webgl/EDL.js.map +1 -1
  330. package/lib/esm/render/webgl/FeatureOverrides.js +2 -2
  331. package/lib/esm/render/webgl/FeatureOverrides.js.map +1 -1
  332. package/lib/esm/render/webgl/Graphic.js +3 -5
  333. package/lib/esm/render/webgl/Graphic.js.map +1 -1
  334. package/lib/esm/render/webgl/IndexedEdgeGeometry.js +1 -1
  335. package/lib/esm/render/webgl/IndexedEdgeGeometry.js.map +1 -1
  336. package/lib/esm/render/webgl/InstancedGeometry.js +2 -3
  337. package/lib/esm/render/webgl/InstancedGeometry.js.map +1 -1
  338. package/lib/esm/render/webgl/Mesh.js +7 -10
  339. package/lib/esm/render/webgl/Mesh.js.map +1 -1
  340. package/lib/esm/render/webgl/MeshData.js +1 -2
  341. package/lib/esm/render/webgl/MeshData.js.map +1 -1
  342. package/lib/esm/render/webgl/PlanarClassifier.js +10 -15
  343. package/lib/esm/render/webgl/PlanarClassifier.js.map +1 -1
  344. package/lib/esm/render/webgl/RealityMesh.js +5 -8
  345. package/lib/esm/render/webgl/RealityMesh.js.map +1 -1
  346. package/lib/esm/render/webgl/RealityModelUniforms.js +3 -4
  347. package/lib/esm/render/webgl/RealityModelUniforms.js.map +1 -1
  348. package/lib/esm/render/webgl/RenderCommands.js +7 -8
  349. package/lib/esm/render/webgl/RenderCommands.js.map +1 -1
  350. package/lib/esm/render/webgl/SceneCompositor.js +7 -9
  351. package/lib/esm/render/webgl/SceneCompositor.js.map +1 -1
  352. package/lib/esm/render/webgl/ShaderBuilder.js +1 -2
  353. package/lib/esm/render/webgl/ShaderBuilder.js.map +1 -1
  354. package/lib/esm/render/webgl/SolarShadowMap.js +1 -2
  355. package/lib/esm/render/webgl/SolarShadowMap.js.map +1 -1
  356. package/lib/esm/render/webgl/SurfaceGeometry.js +1 -1
  357. package/lib/esm/render/webgl/SurfaceGeometry.js.map +1 -1
  358. package/lib/esm/render/webgl/System.js +12 -16
  359. package/lib/esm/render/webgl/System.js.map +1 -1
  360. package/lib/esm/render/webgl/Target.js +9 -14
  361. package/lib/esm/render/webgl/Target.js.map +1 -1
  362. package/lib/esm/render/webgl/TargetGraphics.js +1 -2
  363. package/lib/esm/render/webgl/TargetGraphics.js.map +1 -1
  364. package/lib/esm/render/webgl/Texture.js +1 -2
  365. package/lib/esm/render/webgl/Texture.js.map +1 -1
  366. package/lib/esm/render/webgl/ThematicSensors.js +2 -4
  367. package/lib/esm/render/webgl/ThematicSensors.js.map +1 -1
  368. package/lib/esm/render/webgl/VisibleTileFeatures.js +1 -2
  369. package/lib/esm/render/webgl/VisibleTileFeatures.js.map +1 -1
  370. package/lib/esm/render/webgl/glsl/Animation.js +6 -9
  371. package/lib/esm/render/webgl/glsl/Animation.js.map +1 -1
  372. package/lib/esm/render/webgl/glsl/FeatureSymbology.js +1 -2
  373. package/lib/esm/render/webgl/glsl/FeatureSymbology.js.map +1 -1
  374. package/lib/esm/render/webgl/glsl/Instancing.js +4 -5
  375. package/lib/esm/render/webgl/glsl/Instancing.js.map +1 -1
  376. package/lib/esm/render/webgl/glsl/RealityMesh.js +2 -4
  377. package/lib/esm/render/webgl/glsl/RealityMesh.js.map +1 -1
  378. package/lib/esm/render/webgl/glsl/Surface.js +1 -2
  379. package/lib/esm/render/webgl/glsl/Surface.js.map +1 -1
  380. package/lib/esm/render/webgl/glsl/Thematic.js +1 -2
  381. package/lib/esm/render/webgl/glsl/Thematic.js.map +1 -1
  382. package/lib/esm/tile/ClassifierTileTree.js +3 -3
  383. package/lib/esm/tile/ClassifierTileTree.js.map +1 -1
  384. package/lib/esm/tile/GltfReader.js +61 -75
  385. package/lib/esm/tile/GltfReader.js.map +1 -1
  386. package/lib/esm/tile/IModelTile.js +2 -3
  387. package/lib/esm/tile/IModelTile.js.map +1 -1
  388. package/lib/esm/tile/IModelTileRequestChannels.js +6 -11
  389. package/lib/esm/tile/IModelTileRequestChannels.js.map +1 -1
  390. package/lib/esm/tile/IModelTileTree.js +5 -9
  391. package/lib/esm/tile/IModelTileTree.js.map +1 -1
  392. package/lib/esm/tile/ImdlReader.js +13 -17
  393. package/lib/esm/tile/ImdlReader.js.map +1 -1
  394. package/lib/esm/tile/OrbitGtTileTree.js +2 -2
  395. package/lib/esm/tile/OrbitGtTileTree.js.map +1 -1
  396. package/lib/esm/tile/PntsReader.js +4 -5
  397. package/lib/esm/tile/PntsReader.js.map +1 -1
  398. package/lib/esm/tile/PrimaryTileTree.js +22 -32
  399. package/lib/esm/tile/PrimaryTileTree.js.map +1 -1
  400. package/lib/esm/tile/RealityModelTileTree.js +12 -19
  401. package/lib/esm/tile/RealityModelTileTree.js.map +1 -1
  402. package/lib/esm/tile/RealityTile.js +3 -5
  403. package/lib/esm/tile/RealityTile.js.map +1 -1
  404. package/lib/esm/tile/RealityTileLoader.js +2 -2
  405. package/lib/esm/tile/RealityTileLoader.js.map +1 -1
  406. package/lib/esm/tile/ThreeDTileFormatInterpreter.js +3 -5
  407. package/lib/esm/tile/ThreeDTileFormatInterpreter.js.map +1 -1
  408. package/lib/esm/tile/Tile.js +1 -1
  409. package/lib/esm/tile/Tile.js.map +1 -1
  410. package/lib/esm/tile/TileAdmin.js +22 -27
  411. package/lib/esm/tile/TileAdmin.js.map +1 -1
  412. package/lib/esm/tile/TileDrawArgs.js +3 -6
  413. package/lib/esm/tile/TileDrawArgs.js.map +1 -1
  414. package/lib/esm/tile/TileRequestChannels.js +1 -1
  415. package/lib/esm/tile/TileRequestChannels.js.map +1 -1
  416. package/lib/esm/tile/TileTree.js +2 -3
  417. package/lib/esm/tile/TileTree.js.map +1 -1
  418. package/lib/esm/tile/TiledGraphicsProvider.js +1 -1
  419. package/lib/esm/tile/TiledGraphicsProvider.js.map +1 -1
  420. package/lib/esm/tile/map/ArcGISTileMap.js +5 -6
  421. package/lib/esm/tile/map/ArcGISTileMap.js.map +1 -1
  422. package/lib/esm/tile/map/ArcGisUtilities.js +6 -8
  423. package/lib/esm/tile/map/ArcGisUtilities.js.map +1 -1
  424. package/lib/esm/tile/map/ImageryProviders/ArcGISImageryProvider.js +4 -7
  425. package/lib/esm/tile/map/ImageryProviders/ArcGISImageryProvider.js.map +1 -1
  426. package/lib/esm/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js +6 -8
  427. package/lib/esm/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js.map +1 -1
  428. package/lib/esm/tile/map/ImageryProviders/BingImageryProvider.js +1 -2
  429. package/lib/esm/tile/map/ImageryProviders/BingImageryProvider.js.map +1 -1
  430. package/lib/esm/tile/map/ImageryProviders/WmsMapLayerImageryProvider.js +14 -19
  431. package/lib/esm/tile/map/ImageryProviders/WmsMapLayerImageryProvider.js.map +1 -1
  432. package/lib/esm/tile/map/ImageryProviders/WmtsMapLayerImageryProvider.js +14 -20
  433. package/lib/esm/tile/map/ImageryProviders/WmtsMapLayerImageryProvider.js.map +1 -1
  434. package/lib/esm/tile/map/MapCartoRectangle.js +1 -1
  435. package/lib/esm/tile/map/MapCartoRectangle.js.map +1 -1
  436. package/lib/esm/tile/map/MapLayerFormatRegistry.js +5 -6
  437. package/lib/esm/tile/map/MapLayerFormatRegistry.js.map +1 -1
  438. package/lib/esm/tile/map/MapLayerImageryFormats.js +11 -14
  439. package/lib/esm/tile/map/MapLayerImageryFormats.js.map +1 -1
  440. package/lib/esm/tile/map/MapLayerImageryProvider.js +2 -3
  441. package/lib/esm/tile/map/MapLayerImageryProvider.js.map +1 -1
  442. package/lib/esm/tile/map/MapLayerSources.js +1 -1
  443. package/lib/esm/tile/map/MapLayerSources.js.map +1 -1
  444. package/lib/esm/tile/map/MapTile.js +6 -8
  445. package/lib/esm/tile/map/MapTile.js.map +1 -1
  446. package/lib/esm/tile/map/MapTileLoader.js +1 -1
  447. package/lib/esm/tile/map/MapTileLoader.js.map +1 -1
  448. package/lib/esm/tile/map/MapTileTree.js +13 -18
  449. package/lib/esm/tile/map/MapTileTree.js.map +1 -1
  450. package/lib/esm/tile/map/MapTiledGraphicsProvider.js +6 -7
  451. package/lib/esm/tile/map/MapTiledGraphicsProvider.js.map +1 -1
  452. package/lib/esm/tile/map/WmsCapabilities.js +4 -5
  453. package/lib/esm/tile/map/WmsCapabilities.js.map +1 -1
  454. package/lib/esm/tile/map/WmtsCapabilities.js +17 -25
  455. package/lib/esm/tile/map/WmtsCapabilities.js.map +1 -1
  456. package/lib/esm/tools/ClipViewTool.js +1 -1
  457. package/lib/esm/tools/ClipViewTool.js.map +1 -1
  458. package/lib/esm/tools/MeasureTool.js +2 -4
  459. package/lib/esm/tools/MeasureTool.js.map +1 -1
  460. package/lib/esm/tools/PrimitiveTool.js +2 -3
  461. package/lib/esm/tools/PrimitiveTool.js.map +1 -1
  462. package/lib/esm/tools/SelectTool.js +1 -2
  463. package/lib/esm/tools/SelectTool.js.map +1 -1
  464. package/lib/esm/tools/Tool.js +2 -3
  465. package/lib/esm/tools/Tool.js.map +1 -1
  466. package/lib/esm/tools/ToolAdmin.js +2 -4
  467. package/lib/esm/tools/ToolAdmin.js.map +1 -1
  468. package/lib/esm/tools/ViewTool.js +3 -3
  469. package/lib/esm/tools/ViewTool.js.map +1 -1
  470. package/package.json +18 -18
@@ -114,7 +114,7 @@ export class InstanceBuffers extends InstanceData {
114
114
  range.extendXYZ(tfs[i + 3] + tfs[i + 0] * x + tfs[i + 1] * y + tfs[i + 2] * z, tfs[i + 7] + tfs[i + 4] * x + tfs[i + 5] * y + tfs[i + 6] * z, tfs[i + 11] + tfs[i + 8] * x + tfs[i + 9] * y + tfs[i + 10] * z);
115
115
  }
116
116
  static computeRange(reprRange, tfs, rtcCenter, out) {
117
- const range = out !== null && out !== void 0 ? out : new Range3d();
117
+ const range = out ?? new Range3d();
118
118
  const numFloatsPerTransform = 3 * 4;
119
119
  assert(0 === tfs.length % (3 * 4));
120
120
  for (let i = 0; i < tfs.length; i += numFloatsPerTransform) {
@@ -167,8 +167,7 @@ export class PatternBuffers extends InstanceData {
167
167
  return undefined !== this._featureId;
168
168
  }
169
169
  get patternFeatureId() {
170
- var _a;
171
- return (_a = this._featureId) !== null && _a !== void 0 ? _a : super.patternFeatureId;
170
+ return this._featureId ?? super.patternFeatureId;
172
171
  }
173
172
  get isDisposed() {
174
173
  return this.offsets.isDisposed;
@@ -1 +1 @@
1
- {"version":3,"file":"InstancedGeometry.js","sourceRoot":"","sources":["../../../../src/render/webgl/InstancedGeometry.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module WebGL\n */\n\nimport { assert, dispose } from \"@itwin/core-bentley\";\nimport { Point3d, Range3d, Transform } from \"@itwin/core-geometry\";\nimport { InstancedGraphicParams, PatternGraphicParams } from \"../InstancedGraphicParams\";\nimport { RenderMemory } from \"../RenderMemory\";\nimport { AttributeMap } from \"./AttributeMap\";\nimport { CachedGeometry, LUTGeometry } from \"./CachedGeometry\";\nimport { ShaderProgramParams } from \"./DrawCommand\";\nimport { GL } from \"./GL\";\nimport { BufferHandle, BufferParameters, BuffersContainer } from \"./AttributeBuffers\";\nimport { Target } from \"./Target\";\nimport { TechniqueId } from \"./TechniqueId\";\nimport { Matrix4 } from \"./Matrix\";\n\n/** @internal */\nexport function isInstancedGraphicParams(params: any): params is InstancedGraphicParams {\n return typeof params === \"object\" && typeof params.count === \"number\" && params.transforms instanceof Float32Array && params.transformCenter instanceof Point3d;\n}\n\nclass InstanceData {\n public readonly numInstances: number;\n public readonly range: Range3d;\n // A transform including only rtcCenter.\n private readonly _rtcOnlyTransform: Transform;\n // A transform from _rtcCenter including model matrix\n private readonly _rtcModelTransform: Transform;\n // The model matrix from which _rtcModelTransform was previously computed. If it changes, _rtcModelTransform must be recomputed.\n private readonly _modelMatrix = Transform.createIdentity();\n\n protected constructor(numInstances: number, rtcCenter: Point3d, range: Range3d) {\n this.numInstances = numInstances;\n this.range = range;\n this._rtcOnlyTransform = Transform.createTranslation(rtcCenter);\n this._rtcModelTransform = this._rtcOnlyTransform.clone();\n }\n\n public getRtcModelTransform(modelMatrix: Transform): Transform {\n if (!this._modelMatrix.isAlmostEqual(modelMatrix)) {\n modelMatrix.clone(this._modelMatrix);\n modelMatrix.multiplyTransformTransform(this._rtcOnlyTransform, this._rtcModelTransform);\n }\n\n return this._rtcModelTransform;\n }\n\n public getRtcOnlyTransform(): Transform {\n return this._rtcOnlyTransform;\n }\n\n private static readonly _noFeatureId = new Float32Array([0, 0, 0]);\n public get patternFeatureId(): Float32Array {\n return InstanceData._noFeatureId;\n }\n}\n\n/** @internal */\nexport interface PatternTransforms {\n readonly orgTransform: Matrix4;\n readonly localToModel: Matrix4;\n readonly symbolToLocal: Matrix4;\n readonly origin: Float32Array;\n}\n\n/** @internal */\nexport class InstanceBuffers extends InstanceData {\n private static readonly _patternParams = new Float32Array([0, 0, 0, 0]);\n\n public readonly transforms: BufferHandle;\n public readonly featureIds?: BufferHandle;\n public readonly hasFeatures: boolean;\n public readonly symbology?: BufferHandle;\n public readonly patternParams = InstanceBuffers._patternParams;\n public readonly patternTransforms = undefined;\n public readonly viewIndependentOrigin = undefined;\n\n private constructor(count: number, transforms: BufferHandle, rtcCenter: Point3d, range: Range3d, symbology?: BufferHandle, featureIds?: BufferHandle) {\n super(count, rtcCenter, range);\n this.transforms = transforms;\n this.featureIds = featureIds;\n this.hasFeatures = undefined !== featureIds;\n this.symbology = symbology;\n }\n\n public static createTransformBufferParameters(techniqueId: TechniqueId): BufferParameters[] {\n const params: BufferParameters[] = [];\n const numRows = 3;\n let row = 0;\n while (row < numRows) {\n // 3 rows per instance; 4 floats per row; 4 bytes per float.\n const floatsPerRow = 4;\n const bytesPerVertex = floatsPerRow * 4;\n const offset = row * bytesPerVertex;\n const stride = 3 * bytesPerVertex;\n const name = `a_instanceMatrixRow${row}`;\n const details = AttributeMap.findAttribute(name, techniqueId, true);\n assert(details !== undefined);\n const bParams: BufferParameters = {\n glAttribLoc: details.location,\n glSize: floatsPerRow,\n glType: GL.DataType.Float,\n glNormalized: false,\n glStride: stride,\n glOffset: offset,\n glInstanced: true,\n };\n params.push(bParams);\n row++;\n }\n return params;\n }\n\n public static create(params: InstancedGraphicParams, range: Range3d): InstanceBuffers | undefined {\n const { count, featureIds, symbologyOverrides, transforms } = params;\n\n assert(count > 0 && Math.floor(count) === count);\n assert(count === transforms.length / 12);\n assert(undefined === featureIds || count === featureIds.length / 3);\n assert(undefined === symbologyOverrides || count * 8 === symbologyOverrides.length);\n\n let idBuf: BufferHandle | undefined;\n if (undefined !== featureIds && undefined === (idBuf = BufferHandle.createArrayBuffer(featureIds)))\n return undefined;\n\n let symBuf: BufferHandle | undefined;\n if (undefined !== symbologyOverrides && undefined === (symBuf = BufferHandle.createArrayBuffer(symbologyOverrides)))\n return undefined;\n\n const tfBuf = BufferHandle.createArrayBuffer(transforms);\n return undefined !== tfBuf ? new InstanceBuffers(count, tfBuf, params.transformCenter, range, symBuf, idBuf) : undefined;\n }\n\n public get isDisposed(): boolean {\n return this.transforms.isDisposed\n && (undefined === this.featureIds || this.featureIds.isDisposed)\n && (undefined === this.symbology || this.symbology.isDisposed);\n }\n\n public dispose() {\n dispose(this.transforms);\n dispose(this.featureIds);\n dispose(this.symbology);\n }\n\n public collectStatistics(stats: RenderMemory.Statistics): void {\n const featureBytes = undefined !== this.featureIds ? this.featureIds.bytesUsed : 0;\n const symBytes = undefined !== this.symbology ? this.symbology.bytesUsed : 0;\n\n const bytesUsed = this.transforms.bytesUsed + symBytes + featureBytes;\n stats.addInstances(bytesUsed);\n }\n\n private static extendTransformedRange(tfs: Float32Array, i: number, range: Range3d, x: number, y: number, z: number) {\n range.extendXYZ(tfs[i + 3] + tfs[i + 0] * x + tfs[i + 1] * y + tfs[i + 2] * z,\n tfs[i + 7] + tfs[i + 4] * x + tfs[i + 5] * y + tfs[i + 6] * z,\n tfs[i + 11] + tfs[i + 8] * x + tfs[i + 9] * y + tfs[i + 10] * z);\n }\n\n public static computeRange(reprRange: Range3d, tfs: Float32Array, rtcCenter: Point3d, out?: Range3d): Range3d {\n const range = out ?? new Range3d();\n\n const numFloatsPerTransform = 3 * 4;\n assert(0 === tfs.length % (3 * 4));\n\n for (let i = 0; i < tfs.length; i += numFloatsPerTransform) {\n this.extendTransformedRange(tfs, i, range, reprRange.low.x, reprRange.low.y, reprRange.low.z);\n this.extendTransformedRange(tfs, i, range, reprRange.low.x, reprRange.low.y, reprRange.high.z);\n this.extendTransformedRange(tfs, i, range, reprRange.low.x, reprRange.high.y, reprRange.low.z);\n this.extendTransformedRange(tfs, i, range, reprRange.low.x, reprRange.high.y, reprRange.high.z);\n this.extendTransformedRange(tfs, i, range, reprRange.high.x, reprRange.low.y, reprRange.low.z);\n this.extendTransformedRange(tfs, i, range, reprRange.high.x, reprRange.low.y, reprRange.high.z);\n this.extendTransformedRange(tfs, i, range, reprRange.high.x, reprRange.high.y, reprRange.low.z);\n this.extendTransformedRange(tfs, i, range, reprRange.high.x, reprRange.high.y, reprRange.high.z);\n }\n\n range.low.addInPlace(rtcCenter);\n range.high.addInPlace(rtcCenter);\n\n return range.clone(out);\n }\n}\n\n/** @internal */\nexport class PatternBuffers extends InstanceData {\n private readonly _featureId?: Float32Array;\n\n private constructor(\n count: number,\n rtcCenter: Point3d,\n range: Range3d,\n public readonly patternParams: Float32Array, // [ isAreaPattern, spacingX, spacingY, scale ]\n public readonly origin: Float32Array, // [ x, y ]\n public readonly orgTransform: Matrix4,\n public readonly localToModel: Matrix4,\n public readonly symbolToLocal: Matrix4,\n public readonly offsets: BufferHandle,\n featureId: number | undefined,\n public readonly viewIndependentOrigin: Point3d | undefined\n ) {\n super(count, rtcCenter, range);\n this.patternTransforms = this;\n if (undefined !== featureId) {\n this._featureId = new Float32Array([\n (featureId & 0x0000ff) >>> 0,\n (featureId & 0x00ff00) >>> 8,\n (featureId & 0xff0000) >>> 16,\n ]);\n }\n }\n\n public static create(params: PatternGraphicParams): PatternBuffers | undefined {\n const count = params.xyOffsets.byteLength / 2;\n assert(Math.floor(count) === count);\n\n const offsets = BufferHandle.createArrayBuffer(params.xyOffsets);\n if (!offsets)\n return undefined;\n\n return new PatternBuffers(\n count,\n new Point3d(),\n params.range,\n new Float32Array([1, params.spacing.x, params.spacing.y, params.scale]),\n new Float32Array([params.origin.x, params.origin.y]),\n Matrix4.fromTransform(params.orgTransform),\n Matrix4.fromTransform(params.patternToModel),\n Matrix4.fromTransform(Transform.createTranslation(params.symbolTranslation)),\n offsets,\n params.featureId,\n params.viewIndependentOrigin,\n );\n }\n\n public readonly patternTransforms: PatternTransforms;\n\n public get hasFeatures(): boolean {\n return undefined !== this._featureId;\n }\n\n public override get patternFeatureId(): Float32Array {\n return this._featureId ?? super.patternFeatureId;\n }\n\n public get isDisposed(): boolean {\n return this.offsets.isDisposed;\n }\n\n public dispose(): void {\n dispose(this.offsets);\n }\n\n public collectStatistics(stats: RenderMemory.Statistics): void {\n stats.addInstances(this.offsets.bytesUsed);\n }\n}\n\n/** @internal */\nexport class InstancedGeometry extends CachedGeometry {\n private readonly _buffersContainer: BuffersContainer;\n private readonly _buffers: InstanceBuffers | PatternBuffers;\n private readonly _repr: LUTGeometry;\n private readonly _ownsBuffers: boolean;\n\n public getRtcModelTransform(modelMatrix: Transform) { return this._buffers.getRtcModelTransform(modelMatrix); }\n public getRtcOnlyTransform() { return this._buffers.getRtcOnlyTransform(); }\n\n public override get viewIndependentOrigin(): Point3d | undefined { return this._buffers.viewIndependentOrigin; }\n\n public override get asInstanced() { return this; }\n public override get asLUT() { return this._repr.asLUT; }\n public override get asMesh() { return this._repr.asMesh; }\n public override get asSurface() { return this._repr.asSurface; }\n public override get asEdge() { return this._repr.asEdge; }\n public override get asSilhouette() { return this._repr.asSilhouette; }\n public override get asIndexedEdge() { return this._repr.asIndexedEdge; }\n\n public get renderOrder() { return this._repr.renderOrder; }\n public override get isLitSurface() { return this._repr.isLitSurface; }\n public override get hasBakedLighting() { return this._repr.hasBakedLighting; }\n public override get hasAnimation() { return this._repr.hasAnimation; }\n public get qOrigin() { return this._repr.qOrigin; }\n public get qScale() { return this._repr.qScale; }\n public override get materialInfo() { return this._repr.materialInfo; }\n public override get polylineBuffers() { return this._repr.polylineBuffers; }\n public override get isEdge() { return this._repr.isEdge; }\n public override get hasFeatures() { return this._buffers.hasFeatures; }\n public get techniqueId(): TechniqueId { return this._repr.techniqueId; }\n public override get supportsThematicDisplay() { return this._repr.supportsThematicDisplay; }\n\n public override getPass(target: Target) { return this._repr.getPass(target); }\n public override wantWoWReversal(params: ShaderProgramParams) { return this._repr.wantWoWReversal(params); }\n public override getLineCode(params: ShaderProgramParams) { return this._repr.getLineCode(params); }\n public override getLineWeight(params: ShaderProgramParams) { return this._repr.getLineWeight(params); }\n public override wantMonochrome(target: Target) { return this._repr.wantMonochrome(target); }\n public override wantMixMonochromeColor(target: Target): boolean { return this._repr.wantMixMonochromeColor(target); }\n\n public static create(repr: LUTGeometry, ownsBuffers: boolean, buffers: InstanceBuffers): InstancedGeometry {\n const techId = repr.techniqueId;\n const container = BuffersContainer.create();\n container.appendLinkages(repr.lutBuffers.linkages);\n\n container.addBuffer(buffers.transforms, InstanceBuffers.createTransformBufferParameters(repr.techniqueId));\n\n if (buffers.symbology) {\n const attrInstanceOverrides = AttributeMap.findAttribute(\"a_instanceOverrides\", techId, true);\n const attrInstanceRgba = AttributeMap.findAttribute(\"a_instanceRgba\", techId, true);\n assert(attrInstanceOverrides !== undefined);\n assert(attrInstanceRgba !== undefined);\n container.addBuffer(buffers.symbology, [\n BufferParameters.create(attrInstanceOverrides.location, 4, GL.DataType.UnsignedByte, false, 8, 0, true),\n BufferParameters.create(attrInstanceRgba.location, 4, GL.DataType.UnsignedByte, false, 8, 4, true),\n ]);\n }\n if (buffers.featureIds) {\n const attrFeatureId = AttributeMap.findAttribute(\"a_featureId\", techId, true);\n assert(attrFeatureId !== undefined);\n container.addBuffer(buffers.featureIds, [BufferParameters.create(attrFeatureId.location, 3, GL.DataType.UnsignedByte, false, 0, 0, true)]);\n }\n\n return new this(repr, ownsBuffers, buffers, container);\n }\n\n public static createPattern(repr: LUTGeometry, ownsBuffers: boolean, buffers: PatternBuffers): InstancedGeometry {\n const techId = repr.techniqueId;\n const container = BuffersContainer.create();\n container.appendLinkages(repr.lutBuffers.linkages);\n\n const attrX = AttributeMap.findAttribute(\"a_patternX\", techId, true);\n const attrY = AttributeMap.findAttribute(\"a_patternY\", techId, true);\n assert(undefined !== attrX && undefined !== attrY);\n container.addBuffer(buffers.offsets, [\n BufferParameters.create(attrX.location, 1, GL.DataType.Float, false, 8, 0, true),\n BufferParameters.create(attrY.location, 1, GL.DataType.Float, false, 8, 4, true),\n ]);\n\n return new this(repr, ownsBuffers, buffers, container);\n }\n\n private constructor(repr: LUTGeometry, ownsBuffers: boolean, buffers: InstanceBuffers | PatternBuffers, container: BuffersContainer) {\n super();\n this._repr = repr;\n this._ownsBuffers = ownsBuffers;\n this._buffers = buffers;\n this._buffersContainer = container;\n }\n\n public get isDisposed(): boolean {\n if (!this._repr.isDisposed)\n return false;\n\n return !this._ownsBuffers || this._buffers.isDisposed;\n }\n\n public dispose() {\n this._repr.dispose();\n if (this._ownsBuffers)\n dispose(this._buffers);\n }\n\n protected _wantWoWReversal(_target: Target) {\n assert(false, \"Should never be called\");\n return false;\n }\n\n public draw() {\n this._repr.drawInstanced(this._buffers.numInstances, this._buffersContainer);\n }\n\n public override computeRange(output?: Range3d): Range3d {\n return this._buffers.range.clone(output);\n }\n\n public collectStatistics(stats: RenderMemory.Statistics) {\n this._repr.collectStatistics(stats);\n if (this._ownsBuffers)\n this._buffers.collectStatistics(stats);\n }\n\n public get patternParams(): Float32Array { return this._buffers.patternParams; }\n public get patternTransforms(): PatternTransforms | undefined { return this._buffers.patternTransforms; }\n public get patternFeatureId(): Float32Array { return this._buffers.patternFeatureId; }\n}\n"]}
1
+ {"version":3,"file":"InstancedGeometry.js","sourceRoot":"","sources":["../../../../src/render/webgl/InstancedGeometry.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module WebGL\n */\n\nimport { assert, dispose } from \"@itwin/core-bentley\";\nimport { Point3d, Range3d, Transform } from \"@itwin/core-geometry\";\nimport { InstancedGraphicParams, PatternGraphicParams } from \"../InstancedGraphicParams\";\nimport { RenderMemory } from \"../RenderMemory\";\nimport { AttributeMap } from \"./AttributeMap\";\nimport { CachedGeometry, LUTGeometry } from \"./CachedGeometry\";\nimport { ShaderProgramParams } from \"./DrawCommand\";\nimport { GL } from \"./GL\";\nimport { BufferHandle, BufferParameters, BuffersContainer } from \"./AttributeBuffers\";\nimport { Target } from \"./Target\";\nimport { TechniqueId } from \"./TechniqueId\";\nimport { Matrix4 } from \"./Matrix\";\n\n/** @internal */\nexport function isInstancedGraphicParams(params: any): params is InstancedGraphicParams {\n return typeof params === \"object\" && typeof params.count === \"number\" && params.transforms instanceof Float32Array && params.transformCenter instanceof Point3d;\n}\n\nclass InstanceData {\n public readonly numInstances: number;\n public readonly range: Range3d;\n // A transform including only rtcCenter.\n private readonly _rtcOnlyTransform: Transform;\n // A transform from _rtcCenter including model matrix\n private readonly _rtcModelTransform: Transform;\n // The model matrix from which _rtcModelTransform was previously computed. If it changes, _rtcModelTransform must be recomputed.\n private readonly _modelMatrix = Transform.createIdentity();\n\n protected constructor(numInstances: number, rtcCenter: Point3d, range: Range3d) {\n this.numInstances = numInstances;\n this.range = range;\n this._rtcOnlyTransform = Transform.createTranslation(rtcCenter);\n this._rtcModelTransform = this._rtcOnlyTransform.clone();\n }\n\n public getRtcModelTransform(modelMatrix: Transform): Transform {\n if (!this._modelMatrix.isAlmostEqual(modelMatrix)) {\n modelMatrix.clone(this._modelMatrix);\n modelMatrix.multiplyTransformTransform(this._rtcOnlyTransform, this._rtcModelTransform);\n }\n\n return this._rtcModelTransform;\n }\n\n public getRtcOnlyTransform(): Transform {\n return this._rtcOnlyTransform;\n }\n\n private static readonly _noFeatureId = new Float32Array([0, 0, 0]);\n public get patternFeatureId(): Float32Array {\n return InstanceData._noFeatureId;\n }\n}\n\n/** @internal */\nexport interface PatternTransforms {\n readonly orgTransform: Matrix4;\n readonly localToModel: Matrix4;\n readonly symbolToLocal: Matrix4;\n readonly origin: Float32Array;\n}\n\n/** @internal */\nexport class InstanceBuffers extends InstanceData {\n private static readonly _patternParams = new Float32Array([0, 0, 0, 0]);\n\n public readonly transforms: BufferHandle;\n public readonly featureIds?: BufferHandle;\n public readonly hasFeatures: boolean;\n public readonly symbology?: BufferHandle;\n public readonly patternParams = InstanceBuffers._patternParams;\n public readonly patternTransforms = undefined;\n public readonly viewIndependentOrigin = undefined;\n\n private constructor(count: number, transforms: BufferHandle, rtcCenter: Point3d, range: Range3d, symbology?: BufferHandle, featureIds?: BufferHandle) {\n super(count, rtcCenter, range);\n this.transforms = transforms;\n this.featureIds = featureIds;\n this.hasFeatures = undefined !== featureIds;\n this.symbology = symbology;\n }\n\n public static createTransformBufferParameters(techniqueId: TechniqueId): BufferParameters[] {\n const params: BufferParameters[] = [];\n const numRows = 3;\n let row = 0;\n while (row < numRows) {\n // 3 rows per instance; 4 floats per row; 4 bytes per float.\n const floatsPerRow = 4;\n const bytesPerVertex = floatsPerRow * 4;\n const offset = row * bytesPerVertex;\n const stride = 3 * bytesPerVertex;\n const name = `a_instanceMatrixRow${row}`;\n const details = AttributeMap.findAttribute(name, techniqueId, true);\n assert(details !== undefined);\n const bParams: BufferParameters = {\n glAttribLoc: details.location,\n glSize: floatsPerRow,\n glType: GL.DataType.Float,\n glNormalized: false,\n glStride: stride,\n glOffset: offset,\n glInstanced: true,\n };\n params.push(bParams);\n row++;\n }\n return params;\n }\n\n public static create(params: InstancedGraphicParams, range: Range3d): InstanceBuffers | undefined {\n const { count, featureIds, symbologyOverrides, transforms } = params;\n\n assert(count > 0 && Math.floor(count) === count);\n assert(count === transforms.length / 12);\n assert(undefined === featureIds || count === featureIds.length / 3);\n assert(undefined === symbologyOverrides || count * 8 === symbologyOverrides.length);\n\n let idBuf: BufferHandle | undefined;\n if (undefined !== featureIds && undefined === (idBuf = BufferHandle.createArrayBuffer(featureIds)))\n return undefined;\n\n let symBuf: BufferHandle | undefined;\n if (undefined !== symbologyOverrides && undefined === (symBuf = BufferHandle.createArrayBuffer(symbologyOverrides)))\n return undefined;\n\n const tfBuf = BufferHandle.createArrayBuffer(transforms);\n return undefined !== tfBuf ? new InstanceBuffers(count, tfBuf, params.transformCenter, range, symBuf, idBuf) : undefined;\n }\n\n public get isDisposed(): boolean {\n return this.transforms.isDisposed\n && (undefined === this.featureIds || this.featureIds.isDisposed)\n && (undefined === this.symbology || this.symbology.isDisposed);\n }\n\n public dispose() {\n dispose(this.transforms);\n dispose(this.featureIds);\n dispose(this.symbology);\n }\n\n public collectStatistics(stats: RenderMemory.Statistics): void {\n const featureBytes = undefined !== this.featureIds ? this.featureIds.bytesUsed : 0;\n const symBytes = undefined !== this.symbology ? this.symbology.bytesUsed : 0;\n\n const bytesUsed = this.transforms.bytesUsed + symBytes + featureBytes;\n stats.addInstances(bytesUsed);\n }\n\n private static extendTransformedRange(tfs: Float32Array, i: number, range: Range3d, x: number, y: number, z: number) {\n range.extendXYZ(tfs[i + 3] + tfs[i + 0] * x + tfs[i + 1] * y + tfs[i + 2] * z,\n tfs[i + 7] + tfs[i + 4] * x + tfs[i + 5] * y + tfs[i + 6] * z,\n tfs[i + 11] + tfs[i + 8] * x + tfs[i + 9] * y + tfs[i + 10] * z);\n }\n\n public static computeRange(reprRange: Range3d, tfs: Float32Array, rtcCenter: Point3d, out?: Range3d): Range3d {\n const range = out ?? new Range3d();\n\n const numFloatsPerTransform = 3 * 4;\n assert(0 === tfs.length % (3 * 4));\n\n for (let i = 0; i < tfs.length; i += numFloatsPerTransform) {\n this.extendTransformedRange(tfs, i, range, reprRange.low.x, reprRange.low.y, reprRange.low.z);\n this.extendTransformedRange(tfs, i, range, reprRange.low.x, reprRange.low.y, reprRange.high.z);\n this.extendTransformedRange(tfs, i, range, reprRange.low.x, reprRange.high.y, reprRange.low.z);\n this.extendTransformedRange(tfs, i, range, reprRange.low.x, reprRange.high.y, reprRange.high.z);\n this.extendTransformedRange(tfs, i, range, reprRange.high.x, reprRange.low.y, reprRange.low.z);\n this.extendTransformedRange(tfs, i, range, reprRange.high.x, reprRange.low.y, reprRange.high.z);\n this.extendTransformedRange(tfs, i, range, reprRange.high.x, reprRange.high.y, reprRange.low.z);\n this.extendTransformedRange(tfs, i, range, reprRange.high.x, reprRange.high.y, reprRange.high.z);\n }\n\n range.low.addInPlace(rtcCenter);\n range.high.addInPlace(rtcCenter);\n\n return range.clone(out);\n }\n}\n\n/** @internal */\nexport class PatternBuffers extends InstanceData {\n private readonly _featureId?: Float32Array;\n\n private constructor(\n count: number,\n rtcCenter: Point3d,\n range: Range3d,\n public readonly patternParams: Float32Array, // [ isAreaPattern, spacingX, spacingY, scale ]\n public readonly origin: Float32Array, // [ x, y ]\n public readonly orgTransform: Matrix4,\n public readonly localToModel: Matrix4,\n public readonly symbolToLocal: Matrix4,\n public readonly offsets: BufferHandle,\n featureId: number | undefined,\n public readonly viewIndependentOrigin: Point3d | undefined\n ) {\n super(count, rtcCenter, range);\n this.patternTransforms = this;\n if (undefined !== featureId) {\n this._featureId = new Float32Array([\n (featureId & 0x0000ff) >>> 0,\n (featureId & 0x00ff00) >>> 8,\n (featureId & 0xff0000) >>> 16,\n ]);\n }\n }\n\n public static create(params: PatternGraphicParams): PatternBuffers | undefined {\n const count = params.xyOffsets.byteLength / 2;\n assert(Math.floor(count) === count);\n\n const offsets = BufferHandle.createArrayBuffer(params.xyOffsets);\n if (!offsets)\n return undefined;\n\n return new PatternBuffers(\n count,\n new Point3d(),\n params.range,\n new Float32Array([1, params.spacing.x, params.spacing.y, params.scale]),\n new Float32Array([params.origin.x, params.origin.y]),\n Matrix4.fromTransform(params.orgTransform),\n Matrix4.fromTransform(params.patternToModel),\n Matrix4.fromTransform(Transform.createTranslation(params.symbolTranslation)),\n offsets,\n params.featureId,\n params.viewIndependentOrigin,\n );\n }\n\n public readonly patternTransforms: PatternTransforms;\n\n public get hasFeatures(): boolean {\n return undefined !== this._featureId;\n }\n\n public override get patternFeatureId(): Float32Array {\n return this._featureId ?? super.patternFeatureId;\n }\n\n public get isDisposed(): boolean {\n return this.offsets.isDisposed;\n }\n\n public dispose(): void {\n dispose(this.offsets);\n }\n\n public collectStatistics(stats: RenderMemory.Statistics): void {\n stats.addInstances(this.offsets.bytesUsed);\n }\n}\n\n/** @internal */\nexport class InstancedGeometry extends CachedGeometry {\n private readonly _buffersContainer: BuffersContainer;\n private readonly _buffers: InstanceBuffers | PatternBuffers;\n private readonly _repr: LUTGeometry;\n private readonly _ownsBuffers: boolean;\n\n public getRtcModelTransform(modelMatrix: Transform) { return this._buffers.getRtcModelTransform(modelMatrix); }\n public getRtcOnlyTransform() { return this._buffers.getRtcOnlyTransform(); }\n\n public override get viewIndependentOrigin(): Point3d | undefined { return this._buffers.viewIndependentOrigin; }\n\n public override get asInstanced() { return this; }\n public override get asLUT() { return this._repr.asLUT; }\n public override get asMesh() { return this._repr.asMesh; }\n public override get asSurface() { return this._repr.asSurface; }\n public override get asEdge() { return this._repr.asEdge; }\n public override get asSilhouette() { return this._repr.asSilhouette; }\n public override get asIndexedEdge() { return this._repr.asIndexedEdge; }\n\n public get renderOrder() { return this._repr.renderOrder; }\n public override get isLitSurface() { return this._repr.isLitSurface; }\n public override get hasBakedLighting() { return this._repr.hasBakedLighting; }\n public override get hasAnimation() { return this._repr.hasAnimation; }\n public get qOrigin() { return this._repr.qOrigin; }\n public get qScale() { return this._repr.qScale; }\n public override get materialInfo() { return this._repr.materialInfo; }\n public override get polylineBuffers() { return this._repr.polylineBuffers; }\n public override get isEdge() { return this._repr.isEdge; }\n public override get hasFeatures() { return this._buffers.hasFeatures; }\n public get techniqueId(): TechniqueId { return this._repr.techniqueId; }\n public override get supportsThematicDisplay() { return this._repr.supportsThematicDisplay; }\n\n public override getPass(target: Target) { return this._repr.getPass(target); }\n public override wantWoWReversal(params: ShaderProgramParams) { return this._repr.wantWoWReversal(params); }\n public override getLineCode(params: ShaderProgramParams) { return this._repr.getLineCode(params); }\n public override getLineWeight(params: ShaderProgramParams) { return this._repr.getLineWeight(params); }\n public override wantMonochrome(target: Target) { return this._repr.wantMonochrome(target); }\n public override wantMixMonochromeColor(target: Target): boolean { return this._repr.wantMixMonochromeColor(target); }\n\n public static create(repr: LUTGeometry, ownsBuffers: boolean, buffers: InstanceBuffers): InstancedGeometry {\n const techId = repr.techniqueId;\n const container = BuffersContainer.create();\n container.appendLinkages(repr.lutBuffers.linkages);\n\n container.addBuffer(buffers.transforms, InstanceBuffers.createTransformBufferParameters(repr.techniqueId));\n\n if (buffers.symbology) {\n const attrInstanceOverrides = AttributeMap.findAttribute(\"a_instanceOverrides\", techId, true);\n const attrInstanceRgba = AttributeMap.findAttribute(\"a_instanceRgba\", techId, true);\n assert(attrInstanceOverrides !== undefined);\n assert(attrInstanceRgba !== undefined);\n container.addBuffer(buffers.symbology, [\n BufferParameters.create(attrInstanceOverrides.location, 4, GL.DataType.UnsignedByte, false, 8, 0, true),\n BufferParameters.create(attrInstanceRgba.location, 4, GL.DataType.UnsignedByte, false, 8, 4, true),\n ]);\n }\n if (buffers.featureIds) {\n const attrFeatureId = AttributeMap.findAttribute(\"a_featureId\", techId, true);\n assert(attrFeatureId !== undefined);\n container.addBuffer(buffers.featureIds, [BufferParameters.create(attrFeatureId.location, 3, GL.DataType.UnsignedByte, false, 0, 0, true)]);\n }\n\n return new this(repr, ownsBuffers, buffers, container);\n }\n\n public static createPattern(repr: LUTGeometry, ownsBuffers: boolean, buffers: PatternBuffers): InstancedGeometry {\n const techId = repr.techniqueId;\n const container = BuffersContainer.create();\n container.appendLinkages(repr.lutBuffers.linkages);\n\n const attrX = AttributeMap.findAttribute(\"a_patternX\", techId, true);\n const attrY = AttributeMap.findAttribute(\"a_patternY\", techId, true);\n assert(undefined !== attrX && undefined !== attrY);\n container.addBuffer(buffers.offsets, [\n BufferParameters.create(attrX.location, 1, GL.DataType.Float, false, 8, 0, true),\n BufferParameters.create(attrY.location, 1, GL.DataType.Float, false, 8, 4, true),\n ]);\n\n return new this(repr, ownsBuffers, buffers, container);\n }\n\n private constructor(repr: LUTGeometry, ownsBuffers: boolean, buffers: InstanceBuffers | PatternBuffers, container: BuffersContainer) {\n super();\n this._repr = repr;\n this._ownsBuffers = ownsBuffers;\n this._buffers = buffers;\n this._buffersContainer = container;\n }\n\n public get isDisposed(): boolean {\n if (!this._repr.isDisposed)\n return false;\n\n return !this._ownsBuffers || this._buffers.isDisposed;\n }\n\n public dispose() {\n this._repr.dispose();\n if (this._ownsBuffers)\n dispose(this._buffers);\n }\n\n protected _wantWoWReversal(_target: Target) {\n assert(false, \"Should never be called\");\n return false;\n }\n\n public draw() {\n this._repr.drawInstanced(this._buffers.numInstances, this._buffersContainer);\n }\n\n public override computeRange(output?: Range3d): Range3d {\n return this._buffers.range.clone(output);\n }\n\n public collectStatistics(stats: RenderMemory.Statistics) {\n this._repr.collectStatistics(stats);\n if (this._ownsBuffers)\n this._buffers.collectStatistics(stats);\n }\n\n public get patternParams(): Float32Array { return this._buffers.patternParams; }\n public get patternTransforms(): PatternTransforms | undefined { return this._buffers.patternTransforms; }\n public get patternFeatureId(): Float32Array { return this._buffers.patternFeatureId; }\n}\n"]}
@@ -46,13 +46,12 @@ export class MeshRenderGeometry {
46
46
  dispose(this.indexedEdges);
47
47
  }
48
48
  collectStatistics(stats) {
49
- var _a, _b, _c, _d, _e;
50
49
  this.data.collectStatistics(stats);
51
- (_a = this.surface) === null || _a === void 0 ? void 0 : _a.collectStatistics(stats);
52
- (_b = this.segmentEdges) === null || _b === void 0 ? void 0 : _b.collectStatistics(stats);
53
- (_c = this.silhouetteEdges) === null || _c === void 0 ? void 0 : _c.collectStatistics(stats);
54
- (_d = this.polylineEdges) === null || _d === void 0 ? void 0 : _d.collectStatistics(stats);
55
- (_e = this.indexedEdges) === null || _e === void 0 ? void 0 : _e.collectStatistics(stats);
50
+ this.surface?.collectStatistics(stats);
51
+ this.segmentEdges?.collectStatistics(stats);
52
+ this.silhouetteEdges?.collectStatistics(stats);
53
+ this.polylineEdges?.collectStatistics(stats);
54
+ this.indexedEdges?.collectStatistics(stats);
56
55
  }
57
56
  }
58
57
  /** @internal */
@@ -69,14 +68,13 @@ export class MeshGraphic extends Graphic {
69
68
  this.addPrimitive(geometry.indexedEdges);
70
69
  }
71
70
  static create(geometry, instances) {
72
- var _a;
73
71
  let buffers;
74
72
  if (instances) {
75
73
  if (instances instanceof PatternBuffers) {
76
74
  buffers = instances;
77
75
  }
78
76
  else {
79
- const instancesRange = (_a = instances.range) !== null && _a !== void 0 ? _a : InstanceBuffers.computeRange(geometry.range, instances.transforms, instances.transformCenter);
77
+ const instancesRange = instances.range ?? InstanceBuffers.computeRange(geometry.range, instances.transforms, instances.transformCenter);
80
78
  buffers = InstanceBuffers.create(instances, instancesRange);
81
79
  if (!buffers)
82
80
  return undefined;
@@ -102,10 +100,9 @@ export class MeshGraphic extends Graphic {
102
100
  this._primitives.length = 0;
103
101
  }
104
102
  collectStatistics(stats) {
105
- var _a;
106
103
  this.meshData.collectStatistics(stats);
107
104
  this._primitives.forEach((prim) => prim.collectStatistics(stats));
108
- (_a = this._instances) === null || _a === void 0 ? void 0 : _a.collectStatistics(stats);
105
+ this._instances?.collectStatistics(stats);
109
106
  }
110
107
  addCommands(cmds) { this._primitives.forEach((prim) => prim.addCommands(cmds)); }
111
108
  addHiliteCommands(cmds, pass) { this._primitives.forEach((prim) => prim.addHiliteCommands(cmds, pass)); }
@@ -1 +1 @@
1
- {"version":3,"file":"Mesh.js","sourceRoot":"","sources":["../../../../src/render/webgl/Mesh.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module WebGL\n */\n\nimport { assert, dispose } from \"@itwin/core-bentley\";\nimport { Point3d, Range3d } from \"@itwin/core-geometry\";\nimport { InstancedGraphicParams } from \"../InstancedGraphicParams\";\nimport { MeshParams } from \"../primitives/VertexTable\";\nimport { SurfaceType } from \"../primitives/SurfaceParams\";\nimport { RenderMemory } from \"../RenderMemory\";\nimport { RenderGeometry } from \"../RenderSystem\";\nimport { CachedGeometry } from \"./CachedGeometry\";\nimport { Graphic } from \"./Graphic\";\nimport { InstanceBuffers, PatternBuffers } from \"./InstancedGeometry\";\nimport { Primitive } from \"./Primitive\";\nimport { RenderCommands } from \"./RenderCommands\";\nimport { RenderPass } from \"./RenderFlags\";\nimport { EdgeGeometry, PolylineEdgeGeometry, SilhouetteEdgeGeometry } from \"./EdgeGeometry\";\nimport { IndexedEdgeGeometry } from \"./IndexedEdgeGeometry\";\nimport { SurfaceGeometry } from \"./SurfaceGeometry\";\nimport { MeshData } from \"./MeshData\";\n\n/** @internal */\nexport class MeshRenderGeometry {\n public readonly data: MeshData;\n public readonly surface?: SurfaceGeometry;\n public readonly segmentEdges?: EdgeGeometry;\n public readonly silhouetteEdges?: SilhouetteEdgeGeometry;\n public readonly polylineEdges?: PolylineEdgeGeometry;\n public readonly indexedEdges?: IndexedEdgeGeometry;\n public readonly range: Range3d;\n\n private constructor(data: MeshData, params: MeshParams) {\n this.data = data;\n this.range = params.vertices.qparams.computeRange();\n this.surface = SurfaceGeometry.create(data, params.surface.indices);\n const edges = params.edges;\n if (!edges || data.type === SurfaceType.VolumeClassifier)\n return;\n\n if (edges.silhouettes)\n this.silhouetteEdges = SilhouetteEdgeGeometry.createSilhouettes(data, edges.silhouettes);\n\n if (edges.segments)\n this.segmentEdges = EdgeGeometry.create(data, edges.segments);\n\n if (edges.polylines)\n this.polylineEdges = PolylineEdgeGeometry.create(data, edges.polylines);\n\n if (edges.indexed)\n this.indexedEdges = IndexedEdgeGeometry.create(data, edges.indexed);\n }\n\n public static create(params: MeshParams, viewIndependentOrigin: Point3d | undefined): MeshRenderGeometry | undefined {\n const data = MeshData.create(params, viewIndependentOrigin);\n return data ? new this(data, params) : undefined;\n }\n\n public dispose() {\n dispose(this.data);\n dispose(this.surface);\n dispose(this.segmentEdges);\n dispose(this.silhouetteEdges);\n dispose(this.polylineEdges);\n dispose(this.indexedEdges);\n }\n\n public collectStatistics(stats: RenderMemory.Statistics) {\n this.data.collectStatistics(stats);\n this.surface?.collectStatistics(stats);\n this.segmentEdges?.collectStatistics(stats);\n this.silhouetteEdges?.collectStatistics(stats);\n this.polylineEdges?.collectStatistics(stats);\n this.indexedEdges?.collectStatistics(stats);\n }\n}\n\n/** @internal */\nexport class MeshGraphic extends Graphic {\n public readonly meshData: MeshData;\n private readonly _primitives: Primitive[] = [];\n private readonly _instances?: InstanceBuffers | PatternBuffers;\n\n public static create(geometry: MeshRenderGeometry, instances?: InstancedGraphicParams | PatternBuffers): MeshGraphic | undefined {\n let buffers;\n if (instances) {\n if (instances instanceof PatternBuffers) {\n buffers = instances;\n } else {\n const instancesRange = instances.range ?? InstanceBuffers.computeRange(geometry.range, instances.transforms, instances.transformCenter);\n buffers = InstanceBuffers.create(instances, instancesRange);\n if (!buffers)\n return undefined;\n }\n }\n\n return new MeshGraphic(geometry, buffers);\n }\n\n private addPrimitive(geometry: RenderGeometry | undefined) {\n if (!geometry)\n return;\n\n assert(geometry instanceof CachedGeometry);\n const primitive = Primitive.createShared(geometry, this._instances);\n if (primitive)\n this._primitives.push(primitive);\n }\n\n private constructor(geometry: MeshRenderGeometry, instances?: InstanceBuffers | PatternBuffers) {\n super();\n this.meshData = geometry.data;\n this._instances = instances;\n\n this.addPrimitive(geometry.surface);\n this.addPrimitive(geometry.segmentEdges);\n this.addPrimitive(geometry.silhouetteEdges);\n this.addPrimitive(geometry.polylineEdges);\n this.addPrimitive(geometry.indexedEdges);\n }\n\n public get isDisposed(): boolean { return this.meshData.isDisposed && 0 === this._primitives.length; }\n public get isPickable() { return false; }\n\n public dispose() {\n for (const primitive of this._primitives)\n dispose(primitive);\n\n dispose(this.meshData);\n dispose(this._instances);\n this._primitives.length = 0;\n }\n\n public collectStatistics(stats: RenderMemory.Statistics): void {\n this.meshData.collectStatistics(stats);\n this._primitives.forEach((prim) => prim.collectStatistics(stats));\n this._instances?.collectStatistics(stats);\n }\n\n public addCommands(cmds: RenderCommands): void { this._primitives.forEach((prim) => prim.addCommands(cmds)); }\n public override addHiliteCommands(cmds: RenderCommands, pass: RenderPass): void { this._primitives.forEach((prim) => prim.addHiliteCommands(cmds, pass)); }\n\n public get surfaceType(): SurfaceType { return this.meshData.type; }\n}\n"]}
1
+ {"version":3,"file":"Mesh.js","sourceRoot":"","sources":["../../../../src/render/webgl/Mesh.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module WebGL\n */\n\nimport { assert, dispose } from \"@itwin/core-bentley\";\nimport { Point3d, Range3d } from \"@itwin/core-geometry\";\nimport { InstancedGraphicParams } from \"../InstancedGraphicParams\";\nimport { MeshParams } from \"../primitives/VertexTable\";\nimport { SurfaceType } from \"../primitives/SurfaceParams\";\nimport { RenderMemory } from \"../RenderMemory\";\nimport { RenderGeometry } from \"../RenderSystem\";\nimport { CachedGeometry } from \"./CachedGeometry\";\nimport { Graphic } from \"./Graphic\";\nimport { InstanceBuffers, PatternBuffers } from \"./InstancedGeometry\";\nimport { Primitive } from \"./Primitive\";\nimport { RenderCommands } from \"./RenderCommands\";\nimport { RenderPass } from \"./RenderFlags\";\nimport { EdgeGeometry, PolylineEdgeGeometry, SilhouetteEdgeGeometry } from \"./EdgeGeometry\";\nimport { IndexedEdgeGeometry } from \"./IndexedEdgeGeometry\";\nimport { SurfaceGeometry } from \"./SurfaceGeometry\";\nimport { MeshData } from \"./MeshData\";\n\n/** @internal */\nexport class MeshRenderGeometry {\n public readonly data: MeshData;\n public readonly surface?: SurfaceGeometry;\n public readonly segmentEdges?: EdgeGeometry;\n public readonly silhouetteEdges?: SilhouetteEdgeGeometry;\n public readonly polylineEdges?: PolylineEdgeGeometry;\n public readonly indexedEdges?: IndexedEdgeGeometry;\n public readonly range: Range3d;\n\n private constructor(data: MeshData, params: MeshParams) {\n this.data = data;\n this.range = params.vertices.qparams.computeRange();\n this.surface = SurfaceGeometry.create(data, params.surface.indices);\n const edges = params.edges;\n if (!edges || data.type === SurfaceType.VolumeClassifier)\n return;\n\n if (edges.silhouettes)\n this.silhouetteEdges = SilhouetteEdgeGeometry.createSilhouettes(data, edges.silhouettes);\n\n if (edges.segments)\n this.segmentEdges = EdgeGeometry.create(data, edges.segments);\n\n if (edges.polylines)\n this.polylineEdges = PolylineEdgeGeometry.create(data, edges.polylines);\n\n if (edges.indexed)\n this.indexedEdges = IndexedEdgeGeometry.create(data, edges.indexed);\n }\n\n public static create(params: MeshParams, viewIndependentOrigin: Point3d | undefined): MeshRenderGeometry | undefined {\n const data = MeshData.create(params, viewIndependentOrigin);\n return data ? new this(data, params) : undefined;\n }\n\n public dispose() {\n dispose(this.data);\n dispose(this.surface);\n dispose(this.segmentEdges);\n dispose(this.silhouetteEdges);\n dispose(this.polylineEdges);\n dispose(this.indexedEdges);\n }\n\n public collectStatistics(stats: RenderMemory.Statistics) {\n this.data.collectStatistics(stats);\n this.surface?.collectStatistics(stats);\n this.segmentEdges?.collectStatistics(stats);\n this.silhouetteEdges?.collectStatistics(stats);\n this.polylineEdges?.collectStatistics(stats);\n this.indexedEdges?.collectStatistics(stats);\n }\n}\n\n/** @internal */\nexport class MeshGraphic extends Graphic {\n public readonly meshData: MeshData;\n private readonly _primitives: Primitive[] = [];\n private readonly _instances?: InstanceBuffers | PatternBuffers;\n\n public static create(geometry: MeshRenderGeometry, instances?: InstancedGraphicParams | PatternBuffers): MeshGraphic | undefined {\n let buffers;\n if (instances) {\n if (instances instanceof PatternBuffers) {\n buffers = instances;\n } else {\n const instancesRange = instances.range ?? InstanceBuffers.computeRange(geometry.range, instances.transforms, instances.transformCenter);\n buffers = InstanceBuffers.create(instances, instancesRange);\n if (!buffers)\n return undefined;\n }\n }\n\n return new MeshGraphic(geometry, buffers);\n }\n\n private addPrimitive(geometry: RenderGeometry | undefined) {\n if (!geometry)\n return;\n\n assert(geometry instanceof CachedGeometry);\n const primitive = Primitive.createShared(geometry, this._instances);\n if (primitive)\n this._primitives.push(primitive);\n }\n\n private constructor(geometry: MeshRenderGeometry, instances?: InstanceBuffers | PatternBuffers) {\n super();\n this.meshData = geometry.data;\n this._instances = instances;\n\n this.addPrimitive(geometry.surface);\n this.addPrimitive(geometry.segmentEdges);\n this.addPrimitive(geometry.silhouetteEdges);\n this.addPrimitive(geometry.polylineEdges);\n this.addPrimitive(geometry.indexedEdges);\n }\n\n public get isDisposed(): boolean { return this.meshData.isDisposed && 0 === this._primitives.length; }\n public get isPickable() { return false; }\n\n public dispose() {\n for (const primitive of this._primitives)\n dispose(primitive);\n\n dispose(this.meshData);\n dispose(this._instances);\n this._primitives.length = 0;\n }\n\n public collectStatistics(stats: RenderMemory.Statistics): void {\n this.meshData.collectStatistics(stats);\n this._primitives.forEach((prim) => prim.collectStatistics(stats));\n this._instances?.collectStatistics(stats);\n }\n\n public addCommands(cmds: RenderCommands): void { this._primitives.forEach((prim) => prim.addCommands(cmds)); }\n public override addHiliteCommands(cmds: RenderCommands, pass: RenderPass): void { this._primitives.forEach((prim) => prim.addHiliteCommands(cmds, pass)); }\n\n public get surfaceType(): SurfaceType { return this.meshData.type; }\n}\n"]}
@@ -62,8 +62,7 @@ export class MeshData {
62
62
  get isTextureAlwaysDisplayed() { return this.isGlyph || this._textureAlwaysDisplayed; }
63
63
  // Returns true if no one else owns this texture. Implies that the texture should be disposed when this object is disposed, and the texture's memory should be tracked as belonging to this object.
64
64
  get _ownsTexture() {
65
- var _a;
66
- return undefined !== this.texture && !((_a = this.texture) === null || _a === void 0 ? void 0 : _a.hasOwner);
65
+ return undefined !== this.texture && !this.texture?.hasOwner;
67
66
  }
68
67
  collectStatistics(stats) {
69
68
  stats.addVertexTable(this.lut.bytesUsed);
@@ -1 +1 @@
1
- {"version":3,"file":"MeshData.js","sourceRoot":"","sources":["../../../../src/render/webgl/MeshData.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module WebGL\n */\n\nimport { dispose } from \"@itwin/core-bentley\";\nimport { Point3d } from \"@itwin/core-geometry\";\nimport { FeatureIndexType, FillFlags, LinePixels } from \"@itwin/core-common\";\nimport { MeshParams } from \"../primitives/VertexTable\";\nimport { SurfaceType } from \"../primitives/SurfaceParams\";\nimport { RenderMemory } from \"../RenderMemory\";\nimport { WebGLDisposable } from \"./Disposable\";\nimport { LineCode } from \"./LineCode\";\nimport { createMaterialInfo, MaterialInfo } from \"./Material\";\nimport { Texture } from \"./Texture\";\nimport { VertexLUT } from \"./VertexLUT\";\n\n/** @internal */\nexport class MeshData implements WebGLDisposable {\n public readonly edgeWidth: number;\n public readonly hasFeatures: boolean;\n public readonly uniformFeatureId?: number; // Used strictly by BatchPrimitiveCommand.computeIsFlashed for flashing volume classification primitives.\n public readonly texture?: Texture;\n public readonly normalMap?: Texture;\n public readonly materialInfo?: MaterialInfo;\n public readonly type: SurfaceType;\n public readonly fillFlags: FillFlags;\n public readonly edgeLineCode: number; // Must call LineCode.valueFromLinePixels(val: LinePixels) and set the output to edgeLineCode\n public readonly isPlanar: boolean;\n public readonly hasBakedLighting: boolean;\n public readonly lut: VertexLUT;\n public readonly viewIndependentOrigin?: Point3d;\n private readonly _textureAlwaysDisplayed: boolean;\n\n private constructor(lut: VertexLUT, params: MeshParams, viOrigin: Point3d | undefined) {\n this.lut = lut;\n this.viewIndependentOrigin = viOrigin;\n\n this.hasFeatures = FeatureIndexType.Empty !== params.vertices.featureIndexType;\n if (FeatureIndexType.Uniform === params.vertices.featureIndexType)\n this.uniformFeatureId = params.vertices.uniformFeatureID;\n\n if (undefined !== params.surface.textureMapping) {\n this.texture = params.surface.textureMapping.texture as Texture;\n this._textureAlwaysDisplayed = params.surface.textureMapping.alwaysDisplayed;\n if (undefined !== params.surface.material && !params.surface.material.isAtlas) {\n const matTM = params.surface.material.material.textureMapping;\n if (undefined !== matTM && undefined !== matTM.normalMapParams) {\n if (undefined !== matTM.normalMapParams.normalMap) {\n this.normalMap = matTM.normalMapParams.normalMap as Texture;\n } else {\n // If there are normal map params but the normal map is not present, use the texture as a normal map instead of a pattern map.\n this.normalMap = this.texture;\n this.texture = undefined;\n }\n }\n }\n } else {\n this.texture = undefined;\n this._textureAlwaysDisplayed = false;\n }\n\n this.materialInfo = createMaterialInfo(params.surface.material);\n\n this.type = params.surface.type;\n this.fillFlags = params.surface.fillFlags;\n this.isPlanar = params.isPlanar;\n this.hasBakedLighting = params.surface.hasBakedLighting;\n const edges = params.edges;\n this.edgeWidth = undefined !== edges ? edges.weight : 1;\n this.edgeLineCode = LineCode.valueFromLinePixels(undefined !== edges ? edges.linePixels : LinePixels.Solid);\n }\n\n public static create(params: MeshParams, viOrigin: Point3d | undefined): MeshData | undefined {\n const lut = VertexLUT.createFromVertexTable(params.vertices, params.auxChannels);\n return undefined !== lut ? new MeshData(lut, params, viOrigin) : undefined;\n }\n\n public get isDisposed(): boolean { return undefined === this.texture && this.lut.isDisposed; }\n\n public dispose() {\n dispose(this.lut);\n if (this._ownsTexture)\n this.texture!.dispose();\n }\n\n public get isGlyph() { return undefined !== this.texture && this.texture.isGlyph; }\n public get isTextureAlwaysDisplayed() { return this.isGlyph || this._textureAlwaysDisplayed; }\n\n // Returns true if no one else owns this texture. Implies that the texture should be disposed when this object is disposed, and the texture's memory should be tracked as belonging to this object.\n private get _ownsTexture(): boolean {\n return undefined !== this.texture && !this.texture?.hasOwner;\n }\n\n public collectStatistics(stats: RenderMemory.Statistics): void {\n stats.addVertexTable(this.lut.bytesUsed);\n if (this._ownsTexture)\n stats.addTexture(this.texture!.bytesUsed);\n }\n}\n"]}
1
+ {"version":3,"file":"MeshData.js","sourceRoot":"","sources":["../../../../src/render/webgl/MeshData.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module WebGL\n */\n\nimport { dispose } from \"@itwin/core-bentley\";\nimport { Point3d } from \"@itwin/core-geometry\";\nimport { FeatureIndexType, FillFlags, LinePixels } from \"@itwin/core-common\";\nimport { MeshParams } from \"../primitives/VertexTable\";\nimport { SurfaceType } from \"../primitives/SurfaceParams\";\nimport { RenderMemory } from \"../RenderMemory\";\nimport { WebGLDisposable } from \"./Disposable\";\nimport { LineCode } from \"./LineCode\";\nimport { createMaterialInfo, MaterialInfo } from \"./Material\";\nimport { Texture } from \"./Texture\";\nimport { VertexLUT } from \"./VertexLUT\";\n\n/** @internal */\nexport class MeshData implements WebGLDisposable {\n public readonly edgeWidth: number;\n public readonly hasFeatures: boolean;\n public readonly uniformFeatureId?: number; // Used strictly by BatchPrimitiveCommand.computeIsFlashed for flashing volume classification primitives.\n public readonly texture?: Texture;\n public readonly normalMap?: Texture;\n public readonly materialInfo?: MaterialInfo;\n public readonly type: SurfaceType;\n public readonly fillFlags: FillFlags;\n public readonly edgeLineCode: number; // Must call LineCode.valueFromLinePixels(val: LinePixels) and set the output to edgeLineCode\n public readonly isPlanar: boolean;\n public readonly hasBakedLighting: boolean;\n public readonly lut: VertexLUT;\n public readonly viewIndependentOrigin?: Point3d;\n private readonly _textureAlwaysDisplayed: boolean;\n\n private constructor(lut: VertexLUT, params: MeshParams, viOrigin: Point3d | undefined) {\n this.lut = lut;\n this.viewIndependentOrigin = viOrigin;\n\n this.hasFeatures = FeatureIndexType.Empty !== params.vertices.featureIndexType;\n if (FeatureIndexType.Uniform === params.vertices.featureIndexType)\n this.uniformFeatureId = params.vertices.uniformFeatureID;\n\n if (undefined !== params.surface.textureMapping) {\n this.texture = params.surface.textureMapping.texture as Texture;\n this._textureAlwaysDisplayed = params.surface.textureMapping.alwaysDisplayed;\n if (undefined !== params.surface.material && !params.surface.material.isAtlas) {\n const matTM = params.surface.material.material.textureMapping;\n if (undefined !== matTM && undefined !== matTM.normalMapParams) {\n if (undefined !== matTM.normalMapParams.normalMap) {\n this.normalMap = matTM.normalMapParams.normalMap as Texture;\n } else {\n // If there are normal map params but the normal map is not present, use the texture as a normal map instead of a pattern map.\n this.normalMap = this.texture;\n this.texture = undefined;\n }\n }\n }\n } else {\n this.texture = undefined;\n this._textureAlwaysDisplayed = false;\n }\n\n this.materialInfo = createMaterialInfo(params.surface.material);\n\n this.type = params.surface.type;\n this.fillFlags = params.surface.fillFlags;\n this.isPlanar = params.isPlanar;\n this.hasBakedLighting = params.surface.hasBakedLighting;\n const edges = params.edges;\n this.edgeWidth = undefined !== edges ? edges.weight : 1;\n this.edgeLineCode = LineCode.valueFromLinePixels(undefined !== edges ? edges.linePixels : LinePixels.Solid);\n }\n\n public static create(params: MeshParams, viOrigin: Point3d | undefined): MeshData | undefined {\n const lut = VertexLUT.createFromVertexTable(params.vertices, params.auxChannels);\n return undefined !== lut ? new MeshData(lut, params, viOrigin) : undefined;\n }\n\n public get isDisposed(): boolean { return undefined === this.texture && this.lut.isDisposed; }\n\n public dispose() {\n dispose(this.lut);\n if (this._ownsTexture)\n this.texture!.dispose();\n }\n\n public get isGlyph() { return undefined !== this.texture && this.texture.isGlyph; }\n public get isTextureAlwaysDisplayed() { return this.isGlyph || this._textureAlwaysDisplayed; }\n\n // Returns true if no one else owns this texture. Implies that the texture should be disposed when this object is disposed, and the texture's memory should be tracked as belonging to this object.\n private get _ownsTexture(): boolean {\n return undefined !== this.texture && !this.texture?.hasOwner;\n }\n\n public collectStatistics(stats: RenderMemory.Statistics): void {\n stats.addVertexTable(this.lut.bytesUsed);\n if (this._ownsTexture)\n stats.addTexture(this.texture!.bytesUsed);\n }\n}\n"]}
@@ -225,13 +225,12 @@ export class PlanarClassifier extends RenderPlanarClassifier {
225
225
  }
226
226
  get textureImageCount() { return this._contentMode; }
227
227
  getParams(params) {
228
- var _a, _b;
229
228
  params[0] = this.insideDisplay;
230
229
  params[1] = this.outsideDisplay;
231
230
  params[2] = this._contentMode;
232
- if ((_a = this._planarClipMask) === null || _a === void 0 ? void 0 : _a.settings.invert) // If the mask sense is inverted, negate the contentMode to indicate this to the shader.
231
+ if (this._planarClipMask?.settings.invert) // If the mask sense is inverted, negate the contentMode to indicate this to the shader.
233
232
  params[2] = -params[2];
234
- params[3] = (((_b = this._planarClipMask) === null || _b === void 0 ? void 0 : _b.settings.transparency) === undefined) ? -1 : this._planarClipMask.settings.transparency;
233
+ params[3] = (this._planarClipMask?.settings.transparency === undefined) ? -1 : this._planarClipMask.settings.transparency;
235
234
  }
236
235
  get hiliteTexture() { return undefined !== this._classifierBuffers ? this._classifierBuffers.textures.hilite : undefined; }
237
236
  get projectionMatrix() { return this._projectionMatrix; }
@@ -267,25 +266,23 @@ export class PlanarClassifier extends RenderPlanarClassifier {
267
266
  this._classifierAndMaskCombinedBuffer = dispose(this._classifierAndMaskCombinedBuffer);
268
267
  }
269
268
  get texture() {
270
- var _a, _b, _c;
271
269
  switch (this._contentMode) {
272
270
  case PlanarClassifierContent.None:
273
271
  return undefined;
274
272
  case PlanarClassifierContent.ClassifierOnly:
275
- return (_a = this._classifierCombinedBuffer) === null || _a === void 0 ? void 0 : _a.texture;
273
+ return this._classifierCombinedBuffer?.texture;
276
274
  case PlanarClassifierContent.MaskOnly:
277
- return (_b = this._maskBuffer) === null || _b === void 0 ? void 0 : _b.texture;
275
+ return this._maskBuffer?.texture;
278
276
  case PlanarClassifierContent.ClassifierAndMask:
279
- return (_c = this._classifierAndMaskCombinedBuffer) === null || _c === void 0 ? void 0 : _c.texture;
277
+ return this._classifierAndMaskCombinedBuffer?.texture;
280
278
  }
281
279
  }
282
280
  getOrCreateClassifierTexture() {
283
- var _a;
284
281
  if (undefined === this._classifierBuffers)
285
282
  this._classifierBuffers = ClassifierFrameBuffers.create(this._width, this._height);
286
283
  if (undefined !== this._classifierBuffers && undefined === this._classifierCombinedBuffer)
287
284
  this._classifierCombinedBuffer = ClassifierCombinationBuffer.create(this._width, this._height, this._classifierBuffers.textures.color, this._classifierBuffers.textures.feature);
288
- return (_a = this._classifierCombinedBuffer) === null || _a === void 0 ? void 0 : _a.texture;
285
+ return this._classifierCombinedBuffer?.texture;
289
286
  }
290
287
  pushBatches(batchState, graphics) {
291
288
  graphics.forEach((graphic) => {
@@ -299,8 +296,7 @@ export class PlanarClassifier extends RenderPlanarClassifier {
299
296
  });
300
297
  }
301
298
  get sourceTransparency() {
302
- var _a;
303
- return (_a = this._classifierTreeRef) === null || _a === void 0 ? void 0 : _a.transparency;
299
+ return this._classifierTreeRef?.transparency;
304
300
  }
305
301
  pushBatchState(batchState) {
306
302
  this._baseBatchId = batchState.nextBatchId - 1;
@@ -309,11 +305,10 @@ export class PlanarClassifier extends RenderPlanarClassifier {
309
305
  }
310
306
  setSource(classifierTreeRef, planarClipMask) {
311
307
  this._classifierTreeRef = classifierTreeRef;
312
- this._classifier = classifierTreeRef === null || classifierTreeRef === void 0 ? void 0 : classifierTreeRef.activeClassifier;
308
+ this._classifier = classifierTreeRef?.activeClassifier;
313
309
  this._planarClipMask = planarClipMask;
314
310
  }
315
311
  collectGraphics(context, target) {
316
- var _a, _b;
317
312
  this._classifierGraphics.length = this._maskGraphics.length = 0;
318
313
  if (undefined === context.viewingSpace)
319
314
  return;
@@ -326,7 +321,7 @@ export class PlanarClassifier extends RenderPlanarClassifier {
326
321
  this.dispose();
327
322
  this._width = requiredWidth;
328
323
  this._height = requiredHeight;
329
- const maskTrees = (_a = this._planarClipMask) === null || _a === void 0 ? void 0 : _a.getTileTrees(viewState, target.modelId);
324
+ const maskTrees = this._planarClipMask?.getTileTrees(viewState, target.modelId);
330
325
  if (!maskTrees && !this._classifierTreeRef)
331
326
  return;
332
327
  const allTrees = maskTrees ? maskTrees.slice() : new Array();
@@ -338,7 +333,7 @@ export class PlanarClassifier extends RenderPlanarClassifier {
338
333
  this._projectionMatrix = projection.projectionMatrix;
339
334
  this._frustum = projection.textureFrustum;
340
335
  this._debugFrustum = projection.debugFrustum;
341
- this._planarClipMaskOverrides = (_b = this._planarClipMask) === null || _b === void 0 ? void 0 : _b.getPlanarClipMaskSymbologyOverrides();
336
+ this._planarClipMaskOverrides = this._planarClipMask?.getPlanarClipMaskSymbologyOverrides();
342
337
  const drawTree = (treeRef, graphics) => {
343
338
  this._graphics = graphics;
344
339
  const frustumPlanes = this._frustum ? FrustumPlanes.fromFrustum(this._frustum) : FrustumPlanes.createEmpty();