@itwin/core-frontend 4.5.0-dev.8 → 4.5.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 (295) hide show
  1. package/CHANGELOG.md +111 -1
  2. package/LICENSE.md +1 -1
  3. package/lib/cjs/AccuDraw.d.ts +6 -0
  4. package/lib/cjs/AccuDraw.d.ts.map +1 -1
  5. package/lib/cjs/AccuDraw.js +11 -0
  6. package/lib/cjs/AccuDraw.js.map +1 -1
  7. package/lib/cjs/CheckpointConnection.d.ts +7 -7
  8. package/lib/cjs/CheckpointConnection.d.ts.map +1 -1
  9. package/lib/cjs/CheckpointConnection.js +31 -23
  10. package/lib/cjs/CheckpointConnection.js.map +1 -1
  11. package/lib/cjs/ContextRealityModelState.d.ts +3 -0
  12. package/lib/cjs/ContextRealityModelState.d.ts.map +1 -1
  13. package/lib/cjs/ContextRealityModelState.js +8 -1
  14. package/lib/cjs/ContextRealityModelState.js.map +1 -1
  15. package/lib/cjs/IModelApp.js +1 -1
  16. package/lib/cjs/IModelApp.js.map +1 -1
  17. package/lib/cjs/ModelState.d.ts +3 -2
  18. package/lib/cjs/ModelState.d.ts.map +1 -1
  19. package/lib/cjs/ModelState.js +2 -1
  20. package/lib/cjs/ModelState.js.map +1 -1
  21. package/lib/cjs/SpatialClassifiersState.d.ts +55 -0
  22. package/lib/cjs/SpatialClassifiersState.d.ts.map +1 -0
  23. package/lib/cjs/SpatialClassifiersState.js +47 -0
  24. package/lib/cjs/SpatialClassifiersState.js.map +1 -0
  25. package/lib/cjs/ViewContext.d.ts +3 -2
  26. package/lib/cjs/ViewContext.d.ts.map +1 -1
  27. package/lib/cjs/ViewContext.js.map +1 -1
  28. package/lib/cjs/ViewManager.d.ts.map +1 -1
  29. package/lib/cjs/ViewManager.js +4 -0
  30. package/lib/cjs/ViewManager.js.map +1 -1
  31. package/lib/cjs/Viewport.d.ts.map +1 -1
  32. package/lib/cjs/Viewport.js +16 -8
  33. package/lib/cjs/Viewport.js.map +1 -1
  34. package/lib/cjs/core-frontend.d.ts +2 -0
  35. package/lib/cjs/core-frontend.d.ts.map +1 -1
  36. package/lib/cjs/core-frontend.js +2 -0
  37. package/lib/cjs/core-frontend.js.map +1 -1
  38. package/lib/cjs/render/GraphicBuilder.d.ts +2 -0
  39. package/lib/cjs/render/GraphicBuilder.d.ts.map +1 -1
  40. package/lib/cjs/render/GraphicBuilder.js.map +1 -1
  41. package/lib/cjs/render/MockRender.d.ts +1 -0
  42. package/lib/cjs/render/MockRender.d.ts.map +1 -1
  43. package/lib/cjs/render/MockRender.js +1 -0
  44. package/lib/cjs/render/MockRender.js.map +1 -1
  45. package/lib/cjs/render/RenderGraphic.d.ts +7 -0
  46. package/lib/cjs/render/RenderGraphic.d.ts.map +1 -1
  47. package/lib/cjs/render/RenderGraphic.js +2 -0
  48. package/lib/cjs/render/RenderGraphic.js.map +1 -1
  49. package/lib/cjs/render/RenderTarget.d.ts +3 -2
  50. package/lib/cjs/render/RenderTarget.d.ts.map +1 -1
  51. package/lib/cjs/render/RenderTarget.js.map +1 -1
  52. package/lib/cjs/render/Scene.d.ts +2 -2
  53. package/lib/cjs/render/Scene.d.ts.map +1 -1
  54. package/lib/cjs/render/Scene.js.map +1 -1
  55. package/lib/cjs/render/primitives/geometry/GeometryAccumulator.d.ts +3 -0
  56. package/lib/cjs/render/primitives/geometry/GeometryAccumulator.d.ts.map +1 -1
  57. package/lib/cjs/render/primitives/geometry/GeometryAccumulator.js.map +1 -1
  58. package/lib/cjs/render/primitives/mesh/MeshBuilderMap.d.ts +3 -0
  59. package/lib/cjs/render/primitives/mesh/MeshBuilderMap.d.ts.map +1 -1
  60. package/lib/cjs/render/primitives/mesh/MeshBuilderMap.js +2 -0
  61. package/lib/cjs/render/primitives/mesh/MeshBuilderMap.js.map +1 -1
  62. package/lib/cjs/render/webgl/GLTimer.d.ts.map +1 -1
  63. package/lib/cjs/render/webgl/GLTimer.js +24 -4
  64. package/lib/cjs/render/webgl/GLTimer.js.map +1 -1
  65. package/lib/cjs/render/webgl/Graphic.d.ts +6 -1
  66. package/lib/cjs/render/webgl/Graphic.d.ts.map +1 -1
  67. package/lib/cjs/render/webgl/Graphic.js +20 -0
  68. package/lib/cjs/render/webgl/Graphic.js.map +1 -1
  69. package/lib/cjs/render/webgl/Layer.d.ts +2 -0
  70. package/lib/cjs/render/webgl/Layer.d.ts.map +1 -1
  71. package/lib/cjs/render/webgl/Layer.js +3 -0
  72. package/lib/cjs/render/webgl/Layer.js.map +1 -1
  73. package/lib/cjs/render/webgl/Mesh.d.ts +2 -0
  74. package/lib/cjs/render/webgl/Mesh.d.ts.map +1 -1
  75. package/lib/cjs/render/webgl/Mesh.js +7 -0
  76. package/lib/cjs/render/webgl/Mesh.js.map +1 -1
  77. package/lib/cjs/render/webgl/PlanarClassifier.d.ts +3 -2
  78. package/lib/cjs/render/webgl/PlanarClassifier.d.ts.map +1 -1
  79. package/lib/cjs/render/webgl/PlanarClassifier.js.map +1 -1
  80. package/lib/cjs/render/webgl/Primitive.d.ts +2 -0
  81. package/lib/cjs/render/webgl/Primitive.d.ts.map +1 -1
  82. package/lib/cjs/render/webgl/Primitive.js +3 -0
  83. package/lib/cjs/render/webgl/Primitive.js.map +1 -1
  84. package/lib/cjs/render/webgl/Target.d.ts +4 -3
  85. package/lib/cjs/render/webgl/Target.d.ts.map +1 -1
  86. package/lib/cjs/render/webgl/Target.js.map +1 -1
  87. package/lib/cjs/request/utils.d.ts +5 -0
  88. package/lib/cjs/request/utils.d.ts.map +1 -1
  89. package/lib/cjs/request/utils.js +11 -1
  90. package/lib/cjs/request/utils.js.map +1 -1
  91. package/lib/cjs/tile/BatchedTileIdMap.d.ts +6 -1
  92. package/lib/cjs/tile/BatchedTileIdMap.d.ts.map +1 -1
  93. package/lib/cjs/tile/BatchedTileIdMap.js +9 -0
  94. package/lib/cjs/tile/BatchedTileIdMap.js.map +1 -1
  95. package/lib/cjs/tile/ClassifierTileTree.d.ts +4 -4
  96. package/lib/cjs/tile/ClassifierTileTree.d.ts.map +1 -1
  97. package/lib/cjs/tile/ClassifierTileTree.js +11 -6
  98. package/lib/cjs/tile/ClassifierTileTree.js.map +1 -1
  99. package/lib/cjs/tile/GltfReader.js +1 -1
  100. package/lib/cjs/tile/GltfReader.js.map +1 -1
  101. package/lib/cjs/tile/OrbitGtTileTree.d.ts +1 -0
  102. package/lib/cjs/tile/OrbitGtTileTree.d.ts.map +1 -1
  103. package/lib/cjs/tile/OrbitGtTileTree.js +4 -0
  104. package/lib/cjs/tile/OrbitGtTileTree.js.map +1 -1
  105. package/lib/cjs/tile/PrimaryTileTree.d.ts +1 -0
  106. package/lib/cjs/tile/PrimaryTileTree.d.ts.map +1 -1
  107. package/lib/cjs/tile/PrimaryTileTree.js +34 -8
  108. package/lib/cjs/tile/PrimaryTileTree.js.map +1 -1
  109. package/lib/cjs/tile/RealityModelTileTree.d.ts +5 -2
  110. package/lib/cjs/tile/RealityModelTileTree.d.ts.map +1 -1
  111. package/lib/cjs/tile/RealityModelTileTree.js +19 -0
  112. package/lib/cjs/tile/RealityModelTileTree.js.map +1 -1
  113. package/lib/cjs/tile/RealityTileTree.d.ts +5 -0
  114. package/lib/cjs/tile/RealityTileTree.d.ts.map +1 -1
  115. package/lib/cjs/tile/RealityTileTree.js +1 -1
  116. package/lib/cjs/tile/RealityTileTree.js.map +1 -1
  117. package/lib/cjs/tile/RenderGraphicTileTree.d.ts +34 -0
  118. package/lib/cjs/tile/RenderGraphicTileTree.d.ts.map +1 -0
  119. package/lib/cjs/tile/RenderGraphicTileTree.js +100 -0
  120. package/lib/cjs/tile/RenderGraphicTileTree.js.map +1 -0
  121. package/lib/cjs/tile/TileAdmin.d.ts +24 -1
  122. package/lib/cjs/tile/TileAdmin.d.ts.map +1 -1
  123. package/lib/cjs/tile/TileAdmin.js +15 -4
  124. package/lib/cjs/tile/TileAdmin.js.map +1 -1
  125. package/lib/cjs/tile/TileTreeReference.d.ts +21 -2
  126. package/lib/cjs/tile/TileTreeReference.d.ts.map +1 -1
  127. package/lib/cjs/tile/TileTreeReference.js +26 -1
  128. package/lib/cjs/tile/TileTreeReference.js.map +1 -1
  129. package/lib/cjs/tile/internal.d.ts +1 -0
  130. package/lib/cjs/tile/internal.d.ts.map +1 -1
  131. package/lib/cjs/tile/internal.js +1 -0
  132. package/lib/cjs/tile/internal.js.map +1 -1
  133. package/lib/cjs/tile/map/MapLayerTileTreeReference.d.ts +1 -0
  134. package/lib/cjs/tile/map/MapLayerTileTreeReference.d.ts.map +1 -1
  135. package/lib/cjs/tile/map/MapLayerTileTreeReference.js +4 -0
  136. package/lib/cjs/tile/map/MapLayerTileTreeReference.js.map +1 -1
  137. package/lib/cjs/tile/map/MapTileTree.d.ts +1 -0
  138. package/lib/cjs/tile/map/MapTileTree.d.ts.map +1 -1
  139. package/lib/cjs/tile/map/MapTileTree.js +20 -7
  140. package/lib/cjs/tile/map/MapTileTree.js.map +1 -1
  141. package/lib/cjs/tile/map/MapTiledGraphicsProvider.d.ts.map +1 -1
  142. package/lib/cjs/tile/map/MapTiledGraphicsProvider.js +16 -0
  143. package/lib/cjs/tile/map/MapTiledGraphicsProvider.js.map +1 -1
  144. package/lib/cjs/tools/ToolAdmin.d.ts +2 -0
  145. package/lib/cjs/tools/ToolAdmin.d.ts.map +1 -1
  146. package/lib/cjs/tools/ToolAdmin.js +4 -0
  147. package/lib/cjs/tools/ToolAdmin.js.map +1 -1
  148. package/lib/esm/AccuDraw.d.ts +6 -0
  149. package/lib/esm/AccuDraw.d.ts.map +1 -1
  150. package/lib/esm/AccuDraw.js +11 -0
  151. package/lib/esm/AccuDraw.js.map +1 -1
  152. package/lib/esm/CheckpointConnection.d.ts +7 -7
  153. package/lib/esm/CheckpointConnection.d.ts.map +1 -1
  154. package/lib/esm/CheckpointConnection.js +31 -23
  155. package/lib/esm/CheckpointConnection.js.map +1 -1
  156. package/lib/esm/ContextRealityModelState.d.ts +3 -0
  157. package/lib/esm/ContextRealityModelState.d.ts.map +1 -1
  158. package/lib/esm/ContextRealityModelState.js +8 -1
  159. package/lib/esm/ContextRealityModelState.js.map +1 -1
  160. package/lib/esm/IModelApp.js +1 -1
  161. package/lib/esm/IModelApp.js.map +1 -1
  162. package/lib/esm/ModelState.d.ts +3 -2
  163. package/lib/esm/ModelState.d.ts.map +1 -1
  164. package/lib/esm/ModelState.js +3 -2
  165. package/lib/esm/ModelState.js.map +1 -1
  166. package/lib/esm/SpatialClassifiersState.d.ts +55 -0
  167. package/lib/esm/SpatialClassifiersState.d.ts.map +1 -0
  168. package/lib/esm/SpatialClassifiersState.js +43 -0
  169. package/lib/esm/SpatialClassifiersState.js.map +1 -0
  170. package/lib/esm/ViewContext.d.ts +3 -2
  171. package/lib/esm/ViewContext.d.ts.map +1 -1
  172. package/lib/esm/ViewContext.js.map +1 -1
  173. package/lib/esm/ViewManager.d.ts.map +1 -1
  174. package/lib/esm/ViewManager.js +4 -0
  175. package/lib/esm/ViewManager.js.map +1 -1
  176. package/lib/esm/Viewport.d.ts.map +1 -1
  177. package/lib/esm/Viewport.js +16 -8
  178. package/lib/esm/Viewport.js.map +1 -1
  179. package/lib/esm/core-frontend.d.ts +2 -0
  180. package/lib/esm/core-frontend.d.ts.map +1 -1
  181. package/lib/esm/core-frontend.js +2 -0
  182. package/lib/esm/core-frontend.js.map +1 -1
  183. package/lib/esm/render/GraphicBuilder.d.ts +2 -0
  184. package/lib/esm/render/GraphicBuilder.d.ts.map +1 -1
  185. package/lib/esm/render/GraphicBuilder.js.map +1 -1
  186. package/lib/esm/render/MockRender.d.ts +1 -0
  187. package/lib/esm/render/MockRender.d.ts.map +1 -1
  188. package/lib/esm/render/MockRender.js +1 -0
  189. package/lib/esm/render/MockRender.js.map +1 -1
  190. package/lib/esm/render/RenderGraphic.d.ts +7 -0
  191. package/lib/esm/render/RenderGraphic.d.ts.map +1 -1
  192. package/lib/esm/render/RenderGraphic.js +2 -0
  193. package/lib/esm/render/RenderGraphic.js.map +1 -1
  194. package/lib/esm/render/RenderTarget.d.ts +3 -2
  195. package/lib/esm/render/RenderTarget.d.ts.map +1 -1
  196. package/lib/esm/render/RenderTarget.js.map +1 -1
  197. package/lib/esm/render/Scene.d.ts +2 -2
  198. package/lib/esm/render/Scene.d.ts.map +1 -1
  199. package/lib/esm/render/Scene.js.map +1 -1
  200. package/lib/esm/render/primitives/geometry/GeometryAccumulator.d.ts +3 -0
  201. package/lib/esm/render/primitives/geometry/GeometryAccumulator.d.ts.map +1 -1
  202. package/lib/esm/render/primitives/geometry/GeometryAccumulator.js.map +1 -1
  203. package/lib/esm/render/primitives/mesh/MeshBuilderMap.d.ts +3 -0
  204. package/lib/esm/render/primitives/mesh/MeshBuilderMap.d.ts.map +1 -1
  205. package/lib/esm/render/primitives/mesh/MeshBuilderMap.js +2 -0
  206. package/lib/esm/render/primitives/mesh/MeshBuilderMap.js.map +1 -1
  207. package/lib/esm/render/webgl/GLTimer.d.ts.map +1 -1
  208. package/lib/esm/render/webgl/GLTimer.js +24 -4
  209. package/lib/esm/render/webgl/GLTimer.js.map +1 -1
  210. package/lib/esm/render/webgl/Graphic.d.ts +6 -1
  211. package/lib/esm/render/webgl/Graphic.d.ts.map +1 -1
  212. package/lib/esm/render/webgl/Graphic.js +21 -1
  213. package/lib/esm/render/webgl/Graphic.js.map +1 -1
  214. package/lib/esm/render/webgl/Layer.d.ts +2 -0
  215. package/lib/esm/render/webgl/Layer.d.ts.map +1 -1
  216. package/lib/esm/render/webgl/Layer.js +3 -0
  217. package/lib/esm/render/webgl/Layer.js.map +1 -1
  218. package/lib/esm/render/webgl/Mesh.d.ts +2 -0
  219. package/lib/esm/render/webgl/Mesh.d.ts.map +1 -1
  220. package/lib/esm/render/webgl/Mesh.js +7 -0
  221. package/lib/esm/render/webgl/Mesh.js.map +1 -1
  222. package/lib/esm/render/webgl/PlanarClassifier.d.ts +3 -2
  223. package/lib/esm/render/webgl/PlanarClassifier.d.ts.map +1 -1
  224. package/lib/esm/render/webgl/PlanarClassifier.js.map +1 -1
  225. package/lib/esm/render/webgl/Primitive.d.ts +2 -0
  226. package/lib/esm/render/webgl/Primitive.d.ts.map +1 -1
  227. package/lib/esm/render/webgl/Primitive.js +3 -0
  228. package/lib/esm/render/webgl/Primitive.js.map +1 -1
  229. package/lib/esm/render/webgl/Target.d.ts +4 -3
  230. package/lib/esm/render/webgl/Target.d.ts.map +1 -1
  231. package/lib/esm/render/webgl/Target.js.map +1 -1
  232. package/lib/esm/request/utils.d.ts +5 -0
  233. package/lib/esm/request/utils.d.ts.map +1 -1
  234. package/lib/esm/request/utils.js +9 -0
  235. package/lib/esm/request/utils.js.map +1 -1
  236. package/lib/esm/tile/BatchedTileIdMap.d.ts +6 -1
  237. package/lib/esm/tile/BatchedTileIdMap.d.ts.map +1 -1
  238. package/lib/esm/tile/BatchedTileIdMap.js +9 -0
  239. package/lib/esm/tile/BatchedTileIdMap.js.map +1 -1
  240. package/lib/esm/tile/ClassifierTileTree.d.ts +4 -4
  241. package/lib/esm/tile/ClassifierTileTree.d.ts.map +1 -1
  242. package/lib/esm/tile/ClassifierTileTree.js +12 -7
  243. package/lib/esm/tile/ClassifierTileTree.js.map +1 -1
  244. package/lib/esm/tile/GltfReader.js +1 -1
  245. package/lib/esm/tile/GltfReader.js.map +1 -1
  246. package/lib/esm/tile/OrbitGtTileTree.d.ts +1 -0
  247. package/lib/esm/tile/OrbitGtTileTree.d.ts.map +1 -1
  248. package/lib/esm/tile/OrbitGtTileTree.js +4 -0
  249. package/lib/esm/tile/OrbitGtTileTree.js.map +1 -1
  250. package/lib/esm/tile/PrimaryTileTree.d.ts +1 -0
  251. package/lib/esm/tile/PrimaryTileTree.d.ts.map +1 -1
  252. package/lib/esm/tile/PrimaryTileTree.js +34 -8
  253. package/lib/esm/tile/PrimaryTileTree.js.map +1 -1
  254. package/lib/esm/tile/RealityModelTileTree.d.ts +5 -2
  255. package/lib/esm/tile/RealityModelTileTree.d.ts.map +1 -1
  256. package/lib/esm/tile/RealityModelTileTree.js +19 -0
  257. package/lib/esm/tile/RealityModelTileTree.js.map +1 -1
  258. package/lib/esm/tile/RealityTileTree.d.ts +5 -0
  259. package/lib/esm/tile/RealityTileTree.d.ts.map +1 -1
  260. package/lib/esm/tile/RealityTileTree.js +1 -1
  261. package/lib/esm/tile/RealityTileTree.js.map +1 -1
  262. package/lib/esm/tile/RenderGraphicTileTree.d.ts +34 -0
  263. package/lib/esm/tile/RenderGraphicTileTree.d.ts.map +1 -0
  264. package/lib/esm/tile/RenderGraphicTileTree.js +96 -0
  265. package/lib/esm/tile/RenderGraphicTileTree.js.map +1 -0
  266. package/lib/esm/tile/TileAdmin.d.ts +24 -1
  267. package/lib/esm/tile/TileAdmin.d.ts.map +1 -1
  268. package/lib/esm/tile/TileAdmin.js +15 -4
  269. package/lib/esm/tile/TileAdmin.js.map +1 -1
  270. package/lib/esm/tile/TileTreeReference.d.ts +21 -2
  271. package/lib/esm/tile/TileTreeReference.d.ts.map +1 -1
  272. package/lib/esm/tile/TileTreeReference.js +27 -2
  273. package/lib/esm/tile/TileTreeReference.js.map +1 -1
  274. package/lib/esm/tile/internal.d.ts +1 -0
  275. package/lib/esm/tile/internal.d.ts.map +1 -1
  276. package/lib/esm/tile/internal.js +1 -0
  277. package/lib/esm/tile/internal.js.map +1 -1
  278. package/lib/esm/tile/map/MapLayerTileTreeReference.d.ts +1 -0
  279. package/lib/esm/tile/map/MapLayerTileTreeReference.d.ts.map +1 -1
  280. package/lib/esm/tile/map/MapLayerTileTreeReference.js +4 -0
  281. package/lib/esm/tile/map/MapLayerTileTreeReference.js.map +1 -1
  282. package/lib/esm/tile/map/MapTileTree.d.ts +1 -0
  283. package/lib/esm/tile/map/MapTileTree.d.ts.map +1 -1
  284. package/lib/esm/tile/map/MapTileTree.js +20 -7
  285. package/lib/esm/tile/map/MapTileTree.js.map +1 -1
  286. package/lib/esm/tile/map/MapTiledGraphicsProvider.d.ts.map +1 -1
  287. package/lib/esm/tile/map/MapTiledGraphicsProvider.js +17 -1
  288. package/lib/esm/tile/map/MapTiledGraphicsProvider.js.map +1 -1
  289. package/lib/esm/tools/ToolAdmin.d.ts +2 -0
  290. package/lib/esm/tools/ToolAdmin.d.ts.map +1 -1
  291. package/lib/esm/tools/ToolAdmin.js +4 -0
  292. package/lib/esm/tools/ToolAdmin.js.map +1 -1
  293. package/lib/public/scripts/parse-imdl-worker.js +1 -1
  294. package/lib/workers/webpack/parse-imdl-worker.js +1 -1
  295. package/package.json +18 -18
@@ -7,7 +7,7 @@
7
7
  */
8
8
  import { assert, dispose } from "@itwin/core-bentley";
9
9
  import { ThematicDisplayMode } from "@itwin/core-common";
10
- import { Transform } from "@itwin/core-geometry";
10
+ import { Range3d, Transform } from "@itwin/core-geometry";
11
11
  import { FeatureSymbology } from "../FeatureSymbology";
12
12
  import { GraphicBranch } from "../GraphicBranch";
13
13
  import { RenderGraphic } from "../RenderGraphic";
@@ -36,6 +36,9 @@ export class GraphicOwner extends Graphic {
36
36
  collectStatistics(stats) {
37
37
  this.graphic.collectStatistics(stats);
38
38
  }
39
+ unionRange(range) {
40
+ this.graphic.unionRange(range);
41
+ }
39
42
  addCommands(commands) {
40
43
  this._graphic.addCommands(commands);
41
44
  }
@@ -189,6 +192,9 @@ export class Batch extends Graphic {
189
192
  stats.addFeatureTable(this.featureTable.byteLength);
190
193
  this.perTargetData.collectStatistics(stats);
191
194
  }
195
+ unionRange(range) {
196
+ range.extendRange(this.range);
197
+ }
192
198
  addCommands(commands) {
193
199
  commands.addBatch(this);
194
200
  }
@@ -249,6 +255,13 @@ export class Branch extends Graphic {
249
255
  collectStatistics(stats) {
250
256
  this.branch.collectStatistics(stats);
251
257
  }
258
+ unionRange(range) {
259
+ const thisRange = new Range3d();
260
+ for (const graphic of this.branch.entries)
261
+ graphic.unionRange(thisRange);
262
+ this.localToWorldTransform.multiplyRange(thisRange, thisRange);
263
+ range.extendRange(thisRange);
264
+ }
252
265
  shouldAddCommands(commands) {
253
266
  const group = commands.target.currentBranch.groupNodeId;
254
267
  if (undefined !== group && undefined !== this.branch.groupNodeId && this.branch.groupNodeId !== group)
@@ -285,6 +298,9 @@ export class AnimationTransformBranch extends Graphic {
285
298
  collectStatistics(stats) {
286
299
  this.graphic.collectStatistics(stats);
287
300
  }
301
+ unionRange(range) {
302
+ this.graphic.unionRange(range);
303
+ }
288
304
  addCommands(commands) {
289
305
  commands.target.currentAnimationTransformNodeId = this.nodeId;
290
306
  this.graphic.addCommands(commands);
@@ -342,5 +358,9 @@ export class GraphicsArray extends Graphic {
342
358
  for (const graphic of this.graphics)
343
359
  graphic.collectStatistics(stats);
344
360
  }
361
+ unionRange(range) {
362
+ for (const graphic of this.graphics)
363
+ graphic.unionRange(range);
364
+ }
345
365
  }
346
366
  //# sourceMappingURL=Graphic.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Graphic.js","sourceRoot":"","sources":["../../../../src/render/webgl/Graphic.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module WebGL\r\n */\r\n\r\nimport { assert, dispose, Id64String } from \"@itwin/core-bentley\";\r\nimport { ElementAlignedBox3d, FeatureAppearanceProvider, RenderFeatureTable, ThematicDisplayMode, ViewFlags } from \"@itwin/core-common\";\r\nimport { Transform } from \"@itwin/core-geometry\";\r\nimport { IModelConnection } from \"../../IModelConnection\";\r\nimport { FeatureSymbology } from \"../FeatureSymbology\";\r\nimport { GraphicBranch, GraphicBranchFrustum, GraphicBranchOptions } from \"../GraphicBranch\";\r\nimport { BatchOptions } from \"../GraphicBuilder\";\r\nimport { GraphicList, RenderGraphic } from \"../RenderGraphic\";\r\nimport { RenderMemory } from \"../RenderMemory\";\r\nimport { ClipVolume } from \"./ClipVolume\";\r\nimport { WebGLDisposable } from \"./Disposable\";\r\nimport { EdgeSettings } from \"./EdgeSettings\";\r\nimport { FeatureOverrides } from \"./FeatureOverrides\";\r\nimport { PlanarClassifier } from \"./PlanarClassifier\";\r\nimport { Primitive } from \"./Primitive\";\r\nimport { RenderCommands } from \"./RenderCommands\";\r\nimport { RenderPass } from \"./RenderFlags\";\r\nimport { Target } from \"./Target\";\r\nimport { TextureDrape } from \"./TextureDrape\";\r\nimport { ThematicSensors } from \"./ThematicSensors\";\r\nimport { BranchState } from \"./BranchState\";\r\n\r\n/** @internal */\r\nexport abstract class Graphic extends RenderGraphic implements WebGLDisposable {\r\n public abstract addCommands(_commands: RenderCommands): void;\r\n public abstract get isDisposed(): boolean;\r\n public abstract get isPickable(): boolean;\r\n public addHiliteCommands(_commands: RenderCommands, _pass: RenderPass): void { assert(false); }\r\n public toPrimitive(): Primitive | undefined { return undefined; }\r\n}\r\n\r\nexport class GraphicOwner extends Graphic {\r\n private readonly _graphic: Graphic;\r\n\r\n public constructor(graphic: Graphic) {\r\n super();\r\n this._graphic = graphic;\r\n }\r\n\r\n public get graphic(): RenderGraphic { return this._graphic; }\r\n\r\n private _isDisposed = false;\r\n public get isDisposed(): boolean { return this._isDisposed; }\r\n public dispose(): void { this._isDisposed = true; }\r\n public disposeGraphic(): void {\r\n this.graphic.dispose();\r\n }\r\n public collectStatistics(stats: RenderMemory.Statistics): void {\r\n this.graphic.collectStatistics(stats);\r\n }\r\n\r\n public addCommands(commands: RenderCommands): void {\r\n this._graphic.addCommands(commands);\r\n }\r\n public override get isPickable(): boolean {\r\n return this._graphic.isPickable;\r\n }\r\n public override addHiliteCommands(commands: RenderCommands, pass: RenderPass): void {\r\n this._graphic.addHiliteCommands(commands, pass);\r\n }\r\n public override toPrimitive(): Primitive | undefined {\r\n return this._graphic.toPrimitive();\r\n }\r\n}\r\n\r\n/** Transiently assigned to a Batch while rendering a frame, reset afterward. Used to provide context for pick IDs.\r\n * @internal\r\n */\r\nexport interface BatchContext {\r\n batchId: number;\r\n iModel?: IModelConnection;\r\n viewAttachmentId?: Id64String;\r\n}\r\n\r\n/** @internal exported strictly for tests. */\r\nexport class PerTargetBatchData {\r\n public readonly target: Target;\r\n protected readonly _featureOverrides = new Map<FeatureSymbology.Source | undefined, FeatureOverrides>();\r\n protected _thematicSensors?: ThematicSensors;\r\n\r\n public constructor(target: Target) {\r\n this.target = target;\r\n }\r\n\r\n public dispose(): void {\r\n this._thematicSensors = dispose(this._thematicSensors);\r\n for (const value of this._featureOverrides.values())\r\n dispose(value);\r\n\r\n this._featureOverrides.clear();\r\n }\r\n\r\n public getThematicSensors(batch: Batch): ThematicSensors {\r\n if (this._thematicSensors && !this._thematicSensors.matchesTarget(this.target))\r\n this._thematicSensors = dispose(this._thematicSensors);\r\n\r\n if (!this._thematicSensors)\r\n this._thematicSensors = ThematicSensors.create(this.target, batch.range);\r\n\r\n this._thematicSensors.update(this.target.uniforms.frustum.viewMatrix);\r\n return this._thematicSensors;\r\n }\r\n\r\n public getFeatureOverrides(batch: Batch): FeatureOverrides {\r\n const source = this.target.currentFeatureSymbologyOverrides?.source;\r\n let ovrs = this._featureOverrides.get(source);\r\n if (!ovrs) {\r\n const cleanup = source ? source.onSourceDisposed.addOnce(() => this.onSourceDisposed(source)) : undefined;\r\n this._featureOverrides.set(source, ovrs = FeatureOverrides.createFromTarget(this.target, batch.options, cleanup));\r\n ovrs.initFromMap(batch.featureTable);\r\n }\r\n\r\n ovrs.update(batch.featureTable);\r\n return ovrs;\r\n }\r\n\r\n public collectStatistics(stats: RenderMemory.Statistics): void {\r\n if (this._thematicSensors)\r\n stats.addThematicTexture(this._thematicSensors.bytesUsed);\r\n\r\n for (const ovrs of this._featureOverrides.values())\r\n stats.addFeatureOverrides(ovrs.byteLength);\r\n }\r\n\r\n /** Exposed strictly for tests. */\r\n public get featureOverrides() { return this._featureOverrides; }\r\n\r\n private onSourceDisposed(source: FeatureSymbology.Source): void {\r\n const ovrs = this._featureOverrides.get(source);\r\n if (ovrs) {\r\n this._featureOverrides.delete(source);\r\n ovrs.dispose();\r\n }\r\n }\r\n}\r\n\r\n/** @internal exported strictly for tests. */\r\nexport class PerTargetData {\r\n private readonly _batch: Batch;\r\n private readonly _data: PerTargetBatchData[] = [];\r\n\r\n public constructor(batch: Batch) {\r\n this._batch = batch;\r\n }\r\n\r\n public dispose(): void {\r\n for (const data of this._data) {\r\n data.target.onBatchDisposed(this._batch);\r\n data.dispose();\r\n }\r\n\r\n this._data.length = 0;\r\n }\r\n\r\n public get isDisposed(): boolean {\r\n return this._data.length === 0;\r\n }\r\n\r\n /** Exposed strictly for tests. */\r\n public get data(): PerTargetBatchData[] { return this._data; }\r\n\r\n public onTargetDisposed(target: Target): void {\r\n const index = this._data.findIndex((x) => x.target === target);\r\n if (-1 === index)\r\n return;\r\n\r\n const data = this._data[index];\r\n data.dispose();\r\n this._data.splice(index, 1);\r\n }\r\n\r\n public collectStatistics(stats: RenderMemory.Statistics): void {\r\n for (const data of this._data)\r\n data.collectStatistics(stats);\r\n }\r\n\r\n public getThematicSensors(target: Target): ThematicSensors {\r\n return this.getBatchData(target).getThematicSensors(this._batch);\r\n }\r\n\r\n public getFeatureOverrides(target: Target): FeatureOverrides {\r\n return this.getBatchData(target).getFeatureOverrides(this._batch);\r\n }\r\n\r\n private getBatchData(target: Target): PerTargetBatchData {\r\n let data = this._data.find((x) => x.target === target);\r\n if (!data) {\r\n this._data.push(data = new PerTargetBatchData(target));\r\n target.addBatch(this._batch);\r\n }\r\n\r\n return data;\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport class Batch extends Graphic {\r\n public readonly graphic: RenderGraphic;\r\n public readonly featureTable: RenderFeatureTable;\r\n public readonly range: ElementAlignedBox3d;\r\n private readonly _context: BatchContext = { batchId: 0 };\r\n /** Public strictly for tests. */\r\n public readonly perTargetData = new PerTargetData(this);\r\n public readonly options: BatchOptions;\r\n\r\n // Chiefly for debugging.\r\n public get tileId(): string | undefined {\r\n return this.options.tileId;\r\n }\r\n\r\n public get locateOnly(): boolean {\r\n return true === this.options.locateOnly;\r\n }\r\n\r\n /** The following are valid only during a draw and reset afterward. */\r\n public get batchId() { return this._context.batchId; }\r\n public get batchIModel() { return this._context.iModel; }\r\n public get viewAttachmentId() { return this._context.viewAttachmentId; }\r\n\r\n public setContext(batchId: number, branch: BranchState) {\r\n this._context.batchId = batchId;\r\n this._context.iModel = branch.iModel;\r\n this._context.viewAttachmentId = branch.viewAttachmentId;\r\n }\r\n\r\n public resetContext() {\r\n this._context.batchId = 0;\r\n this._context.iModel = undefined;\r\n this._context.viewAttachmentId = undefined;\r\n }\r\n\r\n public constructor(graphic: RenderGraphic, features: RenderFeatureTable, range: ElementAlignedBox3d, options?: BatchOptions) {\r\n super();\r\n this.graphic = graphic;\r\n this.featureTable = features;\r\n this.range = range;\r\n this.options = options ?? {};\r\n }\r\n\r\n private _isDisposed = false;\r\n public get isDisposed(): boolean {\r\n return this._isDisposed && this.perTargetData.isDisposed;\r\n }\r\n\r\n // Note: This does not remove FeatureOverrides from the array, but rather disposes of the WebGL resources they contain\r\n public dispose() {\r\n dispose(this.graphic);\r\n\r\n this.perTargetData.dispose();\r\n this._isDisposed = true;\r\n }\r\n\r\n public collectStatistics(stats: RenderMemory.Statistics): void {\r\n this.graphic.collectStatistics(stats);\r\n stats.addFeatureTable(this.featureTable.byteLength);\r\n this.perTargetData.collectStatistics(stats);\r\n }\r\n\r\n public addCommands(commands: RenderCommands): void {\r\n commands.addBatch(this);\r\n }\r\n\r\n public override get isPickable(): boolean {\r\n return true;\r\n }\r\n\r\n public getThematicSensors(target: Target): ThematicSensors {\r\n assert(target.plan.thematic !== undefined, \"thematic display settings must exist\");\r\n assert(target.plan.thematic.displayMode === ThematicDisplayMode.InverseDistanceWeightedSensors, \"thematic display mode must be sensor-based\");\r\n assert(target.plan.thematic.sensorSettings.sensors.length > 0, \"must have at least one sensor to process\");\r\n\r\n return this.perTargetData.getThematicSensors(target);\r\n }\r\n\r\n public getOverrides(target: Target): FeatureOverrides {\r\n return this.perTargetData.getFeatureOverrides(target);\r\n }\r\n\r\n public onTargetDisposed(target: Target) {\r\n this.perTargetData.onTargetDisposed(target);\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport class Branch extends Graphic {\r\n public readonly branch: GraphicBranch;\r\n public localToWorldTransform: Transform;\r\n public readonly clips?: ClipVolume;\r\n public readonly planarClassifier?: PlanarClassifier;\r\n public readonly textureDrape?: TextureDrape;\r\n public readonly layerClassifiers?: Map<number, PlanarClassifier>;\r\n public readonly edgeSettings?: EdgeSettings;\r\n public readonly iModel?: IModelConnection; // used chiefly for readPixels to identify context of picked Ids.\r\n public readonly frustum?: GraphicBranchFrustum;\r\n public readonly appearanceProvider?: FeatureAppearanceProvider;\r\n public readonly secondaryClassifiers?: PlanarClassifier[];\r\n public readonly viewAttachmentId?: Id64String;\r\n\r\n public constructor(branch: GraphicBranch, localToWorld: Transform, viewFlags?: ViewFlags, opts?: GraphicBranchOptions) {\r\n super();\r\n this.branch = branch;\r\n this.localToWorldTransform = localToWorld;\r\n\r\n if (undefined !== viewFlags)\r\n branch.setViewFlags(viewFlags);\r\n\r\n if (!opts)\r\n return;\r\n\r\n this.appearanceProvider = opts.appearanceProvider;\r\n this.clips = opts.clipVolume as ClipVolume | undefined;\r\n this.iModel = opts.iModel;\r\n this.frustum = opts.frustum;\r\n this.viewAttachmentId = opts.viewAttachmentId;\r\n\r\n if (opts.hline)\r\n this.edgeSettings = EdgeSettings.create(opts.hline);\r\n\r\n if (opts.classifierOrDrape instanceof PlanarClassifier)\r\n this.planarClassifier = opts.classifierOrDrape;\r\n else if (opts.classifierOrDrape instanceof TextureDrape)\r\n this.textureDrape = opts.classifierOrDrape;\r\n\r\n if (opts.secondaryClassifiers) {\r\n this.secondaryClassifiers = new Array<PlanarClassifier>();\r\n opts.secondaryClassifiers.forEach((classifier) => {\r\n if (classifier instanceof PlanarClassifier)\r\n this.secondaryClassifiers?.push(classifier);\r\n });\r\n }\r\n }\r\n\r\n public get isDisposed(): boolean {\r\n return 0 === this.branch.entries.length;\r\n }\r\n\r\n public dispose() {\r\n this.branch.dispose();\r\n }\r\n\r\n public override get isPickable(): boolean {\r\n return this.branch.entries.some((gf) => (gf as Graphic).isPickable);\r\n }\r\n\r\n public collectStatistics(stats: RenderMemory.Statistics): void {\r\n this.branch.collectStatistics(stats);\r\n }\r\n\r\n private shouldAddCommands(commands: RenderCommands): boolean {\r\n const group = commands.target.currentBranch.groupNodeId;\r\n if (undefined !== group && undefined !== this.branch.groupNodeId && this.branch.groupNodeId !== group)\r\n return false;\r\n\r\n const nodeId = commands.target.getAnimationTransformNodeId(this.branch.animationNodeId);\r\n return undefined === nodeId || nodeId === commands.target.currentAnimationTransformNodeId;\r\n }\r\n\r\n public addCommands(commands: RenderCommands): void {\r\n if (this.shouldAddCommands(commands))\r\n commands.addBranch(this);\r\n }\r\n\r\n public override addHiliteCommands(commands: RenderCommands, pass: RenderPass): void {\r\n if (this.shouldAddCommands(commands))\r\n commands.addHiliteBranch(this, pass);\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport class AnimationTransformBranch extends Graphic {\r\n public readonly nodeId: number;\r\n public readonly graphic: Graphic;\r\n\r\n public constructor(graphic: RenderGraphic, nodeId: number) {\r\n super();\r\n assert(graphic instanceof Graphic);\r\n this.graphic = graphic;\r\n this.nodeId = nodeId;\r\n }\r\n\r\n public override dispose() {\r\n this.graphic.dispose();\r\n }\r\n\r\n public override get isDisposed() {\r\n return this.graphic.isDisposed;\r\n }\r\n\r\n public override get isPickable() {\r\n return this.graphic.isPickable;\r\n }\r\n\r\n public override collectStatistics(stats: RenderMemory.Statistics) {\r\n this.graphic.collectStatistics(stats);\r\n }\r\n\r\n public override addCommands(commands: RenderCommands) {\r\n commands.target.currentAnimationTransformNodeId = this.nodeId;\r\n this.graphic.addCommands(commands);\r\n commands.target.currentAnimationTransformNodeId = undefined;\r\n }\r\n\r\n public override addHiliteCommands(commands: RenderCommands, pass: RenderPass) {\r\n commands.target.currentAnimationTransformNodeId = this.nodeId;\r\n this.graphic.addHiliteCommands(commands, pass);\r\n commands.target.currentAnimationTransformNodeId = undefined;\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport class WorldDecorations extends Branch {\r\n public constructor(viewFlags: ViewFlags) {\r\n super(new GraphicBranch(), Transform.identity, viewFlags);\r\n\r\n // World decorations ignore all the symbology overrides for the \"scene\" geometry...\r\n this.branch.symbologyOverrides = new FeatureSymbology.Overrides();\r\n // Make all subcategories visible.\r\n this.branch.symbologyOverrides.ignoreSubCategory = true;\r\n }\r\n\r\n public init(decs: GraphicList): void {\r\n this.branch.clear();\r\n for (const dec of decs) {\r\n this.branch.add(dec);\r\n }\r\n }\r\n}\r\n/** @internal */\r\nexport class GraphicsArray extends Graphic {\r\n // Note: We assume the graphics array we get contains undisposed graphics to start\r\n constructor(public graphics: RenderGraphic[]) { super(); }\r\n\r\n public get isDisposed(): boolean { return 0 === this.graphics.length; }\r\n\r\n public override get isPickable(): boolean {\r\n return this.graphics.some((x) => (x as Graphic).isPickable);\r\n }\r\n\r\n public dispose() {\r\n for (const graphic of this.graphics)\r\n dispose(graphic);\r\n this.graphics.length = 0;\r\n }\r\n\r\n public addCommands(commands: RenderCommands): void {\r\n for (const graphic of this.graphics) {\r\n (graphic as Graphic).addCommands(commands);\r\n }\r\n }\r\n\r\n public override addHiliteCommands(commands: RenderCommands, pass: RenderPass): void {\r\n for (const graphic of this.graphics) {\r\n (graphic as Graphic).addHiliteCommands(commands, pass);\r\n }\r\n }\r\n\r\n public collectStatistics(stats: RenderMemory.Statistics): void {\r\n for (const graphic of this.graphics)\r\n graphic.collectStatistics(stats);\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"Graphic.js","sourceRoot":"","sources":["../../../../src/render/webgl/Graphic.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F;;GAEG;AAEH,OAAO,EAAE,MAAM,EAAE,OAAO,EAAc,MAAM,qBAAqB,CAAC;AAClE,OAAO,EAAsE,mBAAmB,EAAa,MAAM,oBAAoB,CAAC;AACxI,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAE1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,aAAa,EAA8C,MAAM,kBAAkB,CAAC;AAE7F,OAAO,EAAe,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAI9D,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAKtD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAGpD,gBAAgB;AAChB,MAAM,OAAgB,OAAQ,SAAQ,aAAa;IAI1C,iBAAiB,CAAC,SAAyB,EAAE,KAAiB,IAAU,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACxF,WAAW,KAA4B,OAAO,SAAS,CAAC,CAAC,CAAC;CAClE;AAED,MAAM,OAAO,YAAa,SAAQ,OAAO;IAGvC,YAAmB,OAAgB;QACjC,KAAK,EAAE,CAAC;QAMF,gBAAW,GAAG,KAAK,CAAC;QAL1B,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;IAC1B,CAAC;IAED,IAAW,OAAO,KAAoB,OAAO,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;IAG7D,IAAW,UAAU,KAAc,OAAO,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;IACtD,OAAO,KAAW,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,CAAC,CAAC;IAC5C,cAAc;QACnB,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;IACzB,CAAC;IACM,iBAAiB,CAAC,KAA8B;QACrD,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;IACxC,CAAC;IAEe,UAAU,CAAC,KAAc;QACvC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;IACjC,CAAC;IAEM,WAAW,CAAC,QAAwB;QACzC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;IACtC,CAAC;IACD,IAAoB,UAAU;QAC5B,OAAO,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC;IAClC,CAAC;IACe,iBAAiB,CAAC,QAAwB,EAAE,IAAgB;QAC1E,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;IAClD,CAAC;IACe,WAAW;QACzB,OAAO,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC;IACrC,CAAC;CACF;AAWD,6CAA6C;AAC7C,MAAM,OAAO,kBAAkB;IAK7B,YAAmB,MAAc;QAHd,sBAAiB,GAAG,IAAI,GAAG,EAAyD,CAAC;QAItG,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAEM,OAAO;QACZ,IAAI,CAAC,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QACvD,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE;YACjD,OAAO,CAAC,KAAK,CAAC,CAAC;QAEjB,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,CAAC;IACjC,CAAC;IAEM,kBAAkB,CAAC,KAAY;QACpC,IAAI,IAAI,CAAC,gBAAgB,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC;YAC5E,IAAI,CAAC,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAEzD,IAAI,CAAC,IAAI,CAAC,gBAAgB;YACxB,IAAI,CAAC,gBAAgB,GAAG,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;QAE3E,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QACtE,OAAO,IAAI,CAAC,gBAAgB,CAAC;IAC/B,CAAC;IAEM,mBAAmB,CAAC,KAAY;QACrC,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,gCAAgC,EAAE,MAAM,CAAC;QACpE,IAAI,IAAI,GAAG,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAC9C,IAAI,CAAC,IAAI,EAAE;YACT,MAAM,OAAO,GAAG,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,gBAAgB,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YAC1G,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,GAAG,gBAAgB,CAAC,gBAAgB,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;YAClH,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;SACtC;QAED,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;QAChC,OAAO,IAAI,CAAC;IACd,CAAC;IAEM,iBAAiB,CAAC,KAA8B;QACrD,IAAI,IAAI,CAAC,gBAAgB;YACvB,KAAK,CAAC,kBAAkB,CAAC,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;QAE5D,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE;YAChD,KAAK,CAAC,mBAAmB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAC/C,CAAC;IAED,kCAAkC;IAClC,IAAW,gBAAgB,KAAK,OAAO,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC;IAExD,gBAAgB,CAAC,MAA+B;QACtD,MAAM,IAAI,GAAG,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAChD,IAAI,IAAI,EAAE;YACR,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YACtC,IAAI,CAAC,OAAO,EAAE,CAAC;SAChB;IACH,CAAC;CACF;AAED,6CAA6C;AAC7C,MAAM,OAAO,aAAa;IAIxB,YAAmB,KAAY;QAFd,UAAK,GAAyB,EAAE,CAAC;QAGhD,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;IACtB,CAAC;IAEM,OAAO;QACZ,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE;YAC7B,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACzC,IAAI,CAAC,OAAO,EAAE,CAAC;SAChB;QAED,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;IACxB,CAAC;IAED,IAAW,UAAU;QACnB,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC;IACjC,CAAC;IAED,kCAAkC;IAClC,IAAW,IAAI,KAA2B,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IAEvD,gBAAgB,CAAC,MAAc;QACpC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC;QAC/D,IAAI,CAAC,CAAC,KAAK,KAAK;YACd,OAAO;QAET,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC/B,IAAI,CAAC,OAAO,EAAE,CAAC;QACf,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;IAC9B,CAAC;IAEM,iBAAiB,CAAC,KAA8B;QACrD,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK;YAC3B,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;IAClC,CAAC;IAEM,kBAAkB,CAAC,MAAc;QACtC,OAAO,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACnE,CAAC;IAEM,mBAAmB,CAAC,MAAc;QACvC,OAAO,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,mBAAmB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACpE,CAAC;IAEO,YAAY,CAAC,MAAc;QACjC,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC;QACvD,IAAI,CAAC,IAAI,EAAE;YACT,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,kBAAkB,CAAC,MAAM,CAAC,CAAC,CAAC;YACvD,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;SAC9B;QAED,OAAO,IAAI,CAAC;IACd,CAAC;CACF;AAED,gBAAgB;AAChB,MAAM,OAAO,KAAM,SAAQ,OAAO;IAShC,yBAAyB;IACzB,IAAW,MAAM;QACf,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;IAC7B,CAAC;IAED,IAAW,UAAU;QACnB,OAAO,IAAI,KAAK,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC;IAC1C,CAAC;IAED,sEAAsE;IACtE,IAAW,OAAO,KAAK,OAAO,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;IACtD,IAAW,WAAW,KAAK,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;IACzD,IAAW,gBAAgB,KAAK,OAAO,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC,CAAC;IAEjE,UAAU,CAAC,OAAe,EAAE,MAAmB;QACpD,IAAI,CAAC,QAAQ,CAAC,OAAO,GAAG,OAAO,CAAC;QAChC,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;QACrC,IAAI,CAAC,QAAQ,CAAC,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,CAAC;IAC3D,CAAC;IAEM,YAAY;QACjB,IAAI,CAAC,QAAQ,CAAC,OAAO,GAAG,CAAC,CAAC;QAC1B,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,SAAS,CAAC;QACjC,IAAI,CAAC,QAAQ,CAAC,gBAAgB,GAAG,SAAS,CAAC;IAC7C,CAAC;IAED,YAAmB,OAAsB,EAAE,QAA4B,EAAE,KAA0B,EAAE,OAAsB;QACzH,KAAK,EAAE,CAAC;QAhCO,aAAQ,GAAiB,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;QACzD,iCAAiC;QACjB,kBAAa,GAAG,IAAI,aAAa,CAAC,IAAI,CAAC,CAAC;QAqChD,gBAAW,GAAG,KAAK,CAAC;QAN1B,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,YAAY,GAAG,QAAQ,CAAC;QAC7B,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,OAAO,GAAG,OAAO,IAAI,EAAE,CAAC;IAC/B,CAAC;IAGD,IAAW,UAAU;QACnB,OAAO,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC;IAC3D,CAAC;IAED,sHAAsH;IAC/G,OAAO;QACZ,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAEtB,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC;QAC7B,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;IAC1B,CAAC;IAEM,iBAAiB,CAAC,KAA8B;QACrD,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;QACtC,KAAK,CAAC,eAAe,CAAC,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;QACpD,IAAI,CAAC,aAAa,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;IAC9C,CAAC;IAEe,UAAU,CAAC,KAAc;QACvC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAChC,CAAC;IAEM,WAAW,CAAC,QAAwB;QACzC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;IAED,IAAoB,UAAU;QAC5B,OAAO,IAAI,CAAC;IACd,CAAC;IAEM,kBAAkB,CAAC,MAAc;QACtC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,KAAK,SAAS,EAAE,sCAAsC,CAAC,CAAC;QACnF,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,KAAK,mBAAmB,CAAC,8BAA8B,EAAE,4CAA4C,CAAC,CAAC;QAC9I,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,0CAA0C,CAAC,CAAC;QAE3G,OAAO,IAAI,CAAC,aAAa,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC;IACvD,CAAC;IAEM,YAAY,CAAC,MAAc;QAChC,OAAO,IAAI,CAAC,aAAa,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC;IACxD,CAAC;IAEM,gBAAgB,CAAC,MAAc;QACpC,IAAI,CAAC,aAAa,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;IAC9C,CAAC;CACF;AAED,gBAAgB;AAChB,MAAM,OAAO,MAAO,SAAQ,OAAO;IAcjC,YAAmB,MAAqB,EAAE,YAAuB,EAAE,SAAqB,EAAE,IAA2B;QACnH,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,qBAAqB,GAAG,YAAY,CAAC;QAE1C,IAAI,SAAS,KAAK,SAAS;YACzB,MAAM,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;QAEjC,IAAI,CAAC,IAAI;YACP,OAAO;QAET,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,kBAAkB,CAAC;QAClD,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,UAAoC,CAAC;QACvD,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC1B,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;QAC5B,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,CAAC;QAE9C,IAAI,IAAI,CAAC,KAAK;YACZ,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAEtD,IAAI,IAAI,CAAC,iBAAiB,YAAY,gBAAgB;YACpD,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,iBAAiB,CAAC;aAC5C,IAAI,IAAI,CAAC,iBAAiB,YAAY,YAAY;YACrD,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,iBAAiB,CAAC;QAE7C,IAAI,IAAI,CAAC,oBAAoB,EAAE;YAC7B,IAAI,CAAC,oBAAoB,GAAG,IAAI,KAAK,EAAoB,CAAC;YAC1D,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC,UAAU,EAAE,EAAE;gBAC/C,IAAI,UAAU,YAAY,gBAAgB;oBACxC,IAAI,CAAC,oBAAoB,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;YAChD,CAAC,CAAC,CAAC;SACJ;IACH,CAAC;IAED,IAAW,UAAU;QACnB,OAAO,CAAC,KAAK,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC;IAC1C,CAAC;IAEM,OAAO;QACZ,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;IACxB,CAAC;IAED,IAAoB,UAAU;QAC5B,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAE,EAAc,CAAC,UAAU,CAAC,CAAC;IACtE,CAAC;IAEM,iBAAiB,CAAC,KAA8B;QACrD,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;IACvC,CAAC;IAEe,UAAU,CAAC,KAAc;QACvC,MAAM,SAAS,GAAG,IAAI,OAAO,EAAE,CAAC;QAChC,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO;YACvC,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;QAEhC,IAAI,CAAC,qBAAqB,CAAC,aAAa,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;QAC/D,KAAK,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;IAC/B,CAAC;IAEO,iBAAiB,CAAC,QAAwB;QAChD,MAAM,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,aAAa,CAAC,WAAW,CAAC;QACxD,IAAI,SAAS,KAAK,KAAK,IAAI,SAAS,KAAK,IAAI,CAAC,MAAM,CAAC,WAAW,IAAI,IAAI,CAAC,MAAM,CAAC,WAAW,KAAK,KAAK;YACnG,OAAO,KAAK,CAAC;QAEf,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,2BAA2B,CAAC,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;QACxF,OAAO,SAAS,KAAK,MAAM,IAAI,MAAM,KAAK,QAAQ,CAAC,MAAM,CAAC,+BAA+B,CAAC;IAC5F,CAAC;IAEM,WAAW,CAAC,QAAwB;QACzC,IAAI,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC;YAClC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC;IAEe,iBAAiB,CAAC,QAAwB,EAAE,IAAgB;QAC1E,IAAI,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC;YAClC,QAAQ,CAAC,eAAe,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IACzC,CAAC;CACF;AAED,gBAAgB;AAChB,MAAM,OAAO,wBAAyB,SAAQ,OAAO;IAInD,YAAmB,OAAsB,EAAE,MAAc;QACvD,KAAK,EAAE,CAAC;QACR,MAAM,CAAC,OAAO,YAAY,OAAO,CAAC,CAAC;QACnC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAEe,OAAO;QACrB,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;IACzB,CAAC;IAED,IAAoB,UAAU;QAC5B,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC;IACjC,CAAC;IAED,IAAoB,UAAU;QAC5B,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC;IACjC,CAAC;IAEe,iBAAiB,CAAC,KAA8B;QAC9D,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;IACxC,CAAC;IAEe,UAAU,CAAC,KAAc;QACvC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;IACjC,CAAC;IAEe,WAAW,CAAC,QAAwB;QAClD,QAAQ,CAAC,MAAM,CAAC,+BAA+B,GAAG,IAAI,CAAC,MAAM,CAAC;QAC9D,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;QACnC,QAAQ,CAAC,MAAM,CAAC,+BAA+B,GAAG,SAAS,CAAC;IAC9D,CAAC;IAEe,iBAAiB,CAAC,QAAwB,EAAE,IAAgB;QAC1E,QAAQ,CAAC,MAAM,CAAC,+BAA+B,GAAG,IAAI,CAAC,MAAM,CAAC;QAC9D,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QAC/C,QAAQ,CAAC,MAAM,CAAC,+BAA+B,GAAG,SAAS,CAAC;IAC9D,CAAC;CACF;AAED,gBAAgB;AAChB,MAAM,OAAO,gBAAiB,SAAQ,MAAM;IAC1C,YAAmB,SAAoB;QACrC,KAAK,CAAC,IAAI,aAAa,EAAE,EAAE,SAAS,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;QAE1D,mFAAmF;QACnF,IAAI,CAAC,MAAM,CAAC,kBAAkB,GAAG,IAAI,gBAAgB,CAAC,SAAS,EAAE,CAAC;QAClE,kCAAkC;QAClC,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAAC,iBAAiB,GAAG,IAAI,CAAC;IAC1D,CAAC;IAEM,IAAI,CAAC,IAAiB;QAC3B,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;QACpB,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE;YACtB,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;SACtB;IACH,CAAC;CACF;AACD,gBAAgB;AAChB,MAAM,OAAO,aAAc,SAAQ,OAAO;IACxC,kFAAkF;IAClF,YAAmB,QAAyB;QAAI,KAAK,EAAE,CAAC;QAArC,aAAQ,GAAR,QAAQ,CAAiB;IAAa,CAAC;IAE1D,IAAW,UAAU,KAAc,OAAO,CAAC,KAAK,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;IAEvE,IAAoB,UAAU;QAC5B,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAE,CAAa,CAAC,UAAU,CAAC,CAAC;IAC9D,CAAC;IAEM,OAAO;QACZ,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,QAAQ;YACjC,OAAO,CAAC,OAAO,CAAC,CAAC;QACnB,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;IAC3B,CAAC;IAEM,WAAW,CAAC,QAAwB;QACzC,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,QAAQ,EAAE;YAClC,OAAmB,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;SAC5C;IACH,CAAC;IAEe,iBAAiB,CAAC,QAAwB,EAAE,IAAgB;QAC1E,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,QAAQ,EAAE;YAClC,OAAmB,CAAC,iBAAiB,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;SACxD;IACH,CAAC;IAEM,iBAAiB,CAAC,KAA8B;QACrD,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,QAAQ;YACjC,OAAO,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;IACrC,CAAC;IAEe,UAAU,CAAC,KAAc;QACvC,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,QAAQ;YACjC,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;IAC9B,CAAC;CACF","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module WebGL\r\n */\r\n\r\nimport { assert, dispose, Id64String } from \"@itwin/core-bentley\";\r\nimport { ElementAlignedBox3d, FeatureAppearanceProvider, RenderFeatureTable, ThematicDisplayMode, ViewFlags } from \"@itwin/core-common\";\r\nimport { Range3d, Transform } from \"@itwin/core-geometry\";\r\nimport { IModelConnection } from \"../../IModelConnection\";\r\nimport { FeatureSymbology } from \"../FeatureSymbology\";\r\nimport { GraphicBranch, GraphicBranchFrustum, GraphicBranchOptions } from \"../GraphicBranch\";\r\nimport { BatchOptions } from \"../GraphicBuilder\";\r\nimport { GraphicList, RenderGraphic } from \"../RenderGraphic\";\r\nimport { RenderMemory } from \"../RenderMemory\";\r\nimport { ClipVolume } from \"./ClipVolume\";\r\nimport { WebGLDisposable } from \"./Disposable\";\r\nimport { EdgeSettings } from \"./EdgeSettings\";\r\nimport { FeatureOverrides } from \"./FeatureOverrides\";\r\nimport { PlanarClassifier } from \"./PlanarClassifier\";\r\nimport { Primitive } from \"./Primitive\";\r\nimport { RenderCommands } from \"./RenderCommands\";\r\nimport { RenderPass } from \"./RenderFlags\";\r\nimport { Target } from \"./Target\";\r\nimport { TextureDrape } from \"./TextureDrape\";\r\nimport { ThematicSensors } from \"./ThematicSensors\";\r\nimport { BranchState } from \"./BranchState\";\r\n\r\n/** @internal */\r\nexport abstract class Graphic extends RenderGraphic implements WebGLDisposable {\r\n public abstract addCommands(_commands: RenderCommands): void;\r\n public abstract get isDisposed(): boolean;\r\n public abstract get isPickable(): boolean;\r\n public addHiliteCommands(_commands: RenderCommands, _pass: RenderPass): void { assert(false); }\r\n public toPrimitive(): Primitive | undefined { return undefined; }\r\n}\r\n\r\nexport class GraphicOwner extends Graphic {\r\n private readonly _graphic: Graphic;\r\n\r\n public constructor(graphic: Graphic) {\r\n super();\r\n this._graphic = graphic;\r\n }\r\n\r\n public get graphic(): RenderGraphic { return this._graphic; }\r\n\r\n private _isDisposed = false;\r\n public get isDisposed(): boolean { return this._isDisposed; }\r\n public dispose(): void { this._isDisposed = true; }\r\n public disposeGraphic(): void {\r\n this.graphic.dispose();\r\n }\r\n public collectStatistics(stats: RenderMemory.Statistics): void {\r\n this.graphic.collectStatistics(stats);\r\n }\r\n\r\n public override unionRange(range: Range3d) {\r\n this.graphic.unionRange(range);\r\n }\r\n\r\n public addCommands(commands: RenderCommands): void {\r\n this._graphic.addCommands(commands);\r\n }\r\n public override get isPickable(): boolean {\r\n return this._graphic.isPickable;\r\n }\r\n public override addHiliteCommands(commands: RenderCommands, pass: RenderPass): void {\r\n this._graphic.addHiliteCommands(commands, pass);\r\n }\r\n public override toPrimitive(): Primitive | undefined {\r\n return this._graphic.toPrimitive();\r\n }\r\n}\r\n\r\n/** Transiently assigned to a Batch while rendering a frame, reset afterward. Used to provide context for pick IDs.\r\n * @internal\r\n */\r\nexport interface BatchContext {\r\n batchId: number;\r\n iModel?: IModelConnection;\r\n viewAttachmentId?: Id64String;\r\n}\r\n\r\n/** @internal exported strictly for tests. */\r\nexport class PerTargetBatchData {\r\n public readonly target: Target;\r\n protected readonly _featureOverrides = new Map<FeatureSymbology.Source | undefined, FeatureOverrides>();\r\n protected _thematicSensors?: ThematicSensors;\r\n\r\n public constructor(target: Target) {\r\n this.target = target;\r\n }\r\n\r\n public dispose(): void {\r\n this._thematicSensors = dispose(this._thematicSensors);\r\n for (const value of this._featureOverrides.values())\r\n dispose(value);\r\n\r\n this._featureOverrides.clear();\r\n }\r\n\r\n public getThematicSensors(batch: Batch): ThematicSensors {\r\n if (this._thematicSensors && !this._thematicSensors.matchesTarget(this.target))\r\n this._thematicSensors = dispose(this._thematicSensors);\r\n\r\n if (!this._thematicSensors)\r\n this._thematicSensors = ThematicSensors.create(this.target, batch.range);\r\n\r\n this._thematicSensors.update(this.target.uniforms.frustum.viewMatrix);\r\n return this._thematicSensors;\r\n }\r\n\r\n public getFeatureOverrides(batch: Batch): FeatureOverrides {\r\n const source = this.target.currentFeatureSymbologyOverrides?.source;\r\n let ovrs = this._featureOverrides.get(source);\r\n if (!ovrs) {\r\n const cleanup = source ? source.onSourceDisposed.addOnce(() => this.onSourceDisposed(source)) : undefined;\r\n this._featureOverrides.set(source, ovrs = FeatureOverrides.createFromTarget(this.target, batch.options, cleanup));\r\n ovrs.initFromMap(batch.featureTable);\r\n }\r\n\r\n ovrs.update(batch.featureTable);\r\n return ovrs;\r\n }\r\n\r\n public collectStatistics(stats: RenderMemory.Statistics): void {\r\n if (this._thematicSensors)\r\n stats.addThematicTexture(this._thematicSensors.bytesUsed);\r\n\r\n for (const ovrs of this._featureOverrides.values())\r\n stats.addFeatureOverrides(ovrs.byteLength);\r\n }\r\n\r\n /** Exposed strictly for tests. */\r\n public get featureOverrides() { return this._featureOverrides; }\r\n\r\n private onSourceDisposed(source: FeatureSymbology.Source): void {\r\n const ovrs = this._featureOverrides.get(source);\r\n if (ovrs) {\r\n this._featureOverrides.delete(source);\r\n ovrs.dispose();\r\n }\r\n }\r\n}\r\n\r\n/** @internal exported strictly for tests. */\r\nexport class PerTargetData {\r\n private readonly _batch: Batch;\r\n private readonly _data: PerTargetBatchData[] = [];\r\n\r\n public constructor(batch: Batch) {\r\n this._batch = batch;\r\n }\r\n\r\n public dispose(): void {\r\n for (const data of this._data) {\r\n data.target.onBatchDisposed(this._batch);\r\n data.dispose();\r\n }\r\n\r\n this._data.length = 0;\r\n }\r\n\r\n public get isDisposed(): boolean {\r\n return this._data.length === 0;\r\n }\r\n\r\n /** Exposed strictly for tests. */\r\n public get data(): PerTargetBatchData[] { return this._data; }\r\n\r\n public onTargetDisposed(target: Target): void {\r\n const index = this._data.findIndex((x) => x.target === target);\r\n if (-1 === index)\r\n return;\r\n\r\n const data = this._data[index];\r\n data.dispose();\r\n this._data.splice(index, 1);\r\n }\r\n\r\n public collectStatistics(stats: RenderMemory.Statistics): void {\r\n for (const data of this._data)\r\n data.collectStatistics(stats);\r\n }\r\n\r\n public getThematicSensors(target: Target): ThematicSensors {\r\n return this.getBatchData(target).getThematicSensors(this._batch);\r\n }\r\n\r\n public getFeatureOverrides(target: Target): FeatureOverrides {\r\n return this.getBatchData(target).getFeatureOverrides(this._batch);\r\n }\r\n\r\n private getBatchData(target: Target): PerTargetBatchData {\r\n let data = this._data.find((x) => x.target === target);\r\n if (!data) {\r\n this._data.push(data = new PerTargetBatchData(target));\r\n target.addBatch(this._batch);\r\n }\r\n\r\n return data;\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport class Batch extends Graphic {\r\n public readonly graphic: RenderGraphic;\r\n public readonly featureTable: RenderFeatureTable;\r\n public readonly range: ElementAlignedBox3d;\r\n private readonly _context: BatchContext = { batchId: 0 };\r\n /** Public strictly for tests. */\r\n public readonly perTargetData = new PerTargetData(this);\r\n public readonly options: BatchOptions;\r\n\r\n // Chiefly for debugging.\r\n public get tileId(): string | undefined {\r\n return this.options.tileId;\r\n }\r\n\r\n public get locateOnly(): boolean {\r\n return true === this.options.locateOnly;\r\n }\r\n\r\n /** The following are valid only during a draw and reset afterward. */\r\n public get batchId() { return this._context.batchId; }\r\n public get batchIModel() { return this._context.iModel; }\r\n public get viewAttachmentId() { return this._context.viewAttachmentId; }\r\n\r\n public setContext(batchId: number, branch: BranchState) {\r\n this._context.batchId = batchId;\r\n this._context.iModel = branch.iModel;\r\n this._context.viewAttachmentId = branch.viewAttachmentId;\r\n }\r\n\r\n public resetContext() {\r\n this._context.batchId = 0;\r\n this._context.iModel = undefined;\r\n this._context.viewAttachmentId = undefined;\r\n }\r\n\r\n public constructor(graphic: RenderGraphic, features: RenderFeatureTable, range: ElementAlignedBox3d, options?: BatchOptions) {\r\n super();\r\n this.graphic = graphic;\r\n this.featureTable = features;\r\n this.range = range;\r\n this.options = options ?? {};\r\n }\r\n\r\n private _isDisposed = false;\r\n public get isDisposed(): boolean {\r\n return this._isDisposed && this.perTargetData.isDisposed;\r\n }\r\n\r\n // Note: This does not remove FeatureOverrides from the array, but rather disposes of the WebGL resources they contain\r\n public dispose() {\r\n dispose(this.graphic);\r\n\r\n this.perTargetData.dispose();\r\n this._isDisposed = true;\r\n }\r\n\r\n public collectStatistics(stats: RenderMemory.Statistics): void {\r\n this.graphic.collectStatistics(stats);\r\n stats.addFeatureTable(this.featureTable.byteLength);\r\n this.perTargetData.collectStatistics(stats);\r\n }\r\n\r\n public override unionRange(range: Range3d) {\r\n range.extendRange(this.range);\r\n }\r\n\r\n public addCommands(commands: RenderCommands): void {\r\n commands.addBatch(this);\r\n }\r\n\r\n public override get isPickable(): boolean {\r\n return true;\r\n }\r\n\r\n public getThematicSensors(target: Target): ThematicSensors {\r\n assert(target.plan.thematic !== undefined, \"thematic display settings must exist\");\r\n assert(target.plan.thematic.displayMode === ThematicDisplayMode.InverseDistanceWeightedSensors, \"thematic display mode must be sensor-based\");\r\n assert(target.plan.thematic.sensorSettings.sensors.length > 0, \"must have at least one sensor to process\");\r\n\r\n return this.perTargetData.getThematicSensors(target);\r\n }\r\n\r\n public getOverrides(target: Target): FeatureOverrides {\r\n return this.perTargetData.getFeatureOverrides(target);\r\n }\r\n\r\n public onTargetDisposed(target: Target) {\r\n this.perTargetData.onTargetDisposed(target);\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport class Branch extends Graphic {\r\n public readonly branch: GraphicBranch;\r\n public localToWorldTransform: Transform;\r\n public readonly clips?: ClipVolume;\r\n public readonly planarClassifier?: PlanarClassifier;\r\n public readonly textureDrape?: TextureDrape;\r\n public readonly layerClassifiers?: Map<number, PlanarClassifier>;\r\n public readonly edgeSettings?: EdgeSettings;\r\n public readonly iModel?: IModelConnection; // used chiefly for readPixels to identify context of picked Ids.\r\n public readonly frustum?: GraphicBranchFrustum;\r\n public readonly appearanceProvider?: FeatureAppearanceProvider;\r\n public readonly secondaryClassifiers?: PlanarClassifier[];\r\n public readonly viewAttachmentId?: Id64String;\r\n\r\n public constructor(branch: GraphicBranch, localToWorld: Transform, viewFlags?: ViewFlags, opts?: GraphicBranchOptions) {\r\n super();\r\n this.branch = branch;\r\n this.localToWorldTransform = localToWorld;\r\n\r\n if (undefined !== viewFlags)\r\n branch.setViewFlags(viewFlags);\r\n\r\n if (!opts)\r\n return;\r\n\r\n this.appearanceProvider = opts.appearanceProvider;\r\n this.clips = opts.clipVolume as ClipVolume | undefined;\r\n this.iModel = opts.iModel;\r\n this.frustum = opts.frustum;\r\n this.viewAttachmentId = opts.viewAttachmentId;\r\n\r\n if (opts.hline)\r\n this.edgeSettings = EdgeSettings.create(opts.hline);\r\n\r\n if (opts.classifierOrDrape instanceof PlanarClassifier)\r\n this.planarClassifier = opts.classifierOrDrape;\r\n else if (opts.classifierOrDrape instanceof TextureDrape)\r\n this.textureDrape = opts.classifierOrDrape;\r\n\r\n if (opts.secondaryClassifiers) {\r\n this.secondaryClassifiers = new Array<PlanarClassifier>();\r\n opts.secondaryClassifiers.forEach((classifier) => {\r\n if (classifier instanceof PlanarClassifier)\r\n this.secondaryClassifiers?.push(classifier);\r\n });\r\n }\r\n }\r\n\r\n public get isDisposed(): boolean {\r\n return 0 === this.branch.entries.length;\r\n }\r\n\r\n public dispose() {\r\n this.branch.dispose();\r\n }\r\n\r\n public override get isPickable(): boolean {\r\n return this.branch.entries.some((gf) => (gf as Graphic).isPickable);\r\n }\r\n\r\n public collectStatistics(stats: RenderMemory.Statistics): void {\r\n this.branch.collectStatistics(stats);\r\n }\r\n\r\n public override unionRange(range: Range3d) {\r\n const thisRange = new Range3d();\r\n for (const graphic of this.branch.entries)\r\n graphic.unionRange(thisRange);\r\n\r\n this.localToWorldTransform.multiplyRange(thisRange, thisRange);\r\n range.extendRange(thisRange);\r\n }\r\n\r\n private shouldAddCommands(commands: RenderCommands): boolean {\r\n const group = commands.target.currentBranch.groupNodeId;\r\n if (undefined !== group && undefined !== this.branch.groupNodeId && this.branch.groupNodeId !== group)\r\n return false;\r\n\r\n const nodeId = commands.target.getAnimationTransformNodeId(this.branch.animationNodeId);\r\n return undefined === nodeId || nodeId === commands.target.currentAnimationTransformNodeId;\r\n }\r\n\r\n public addCommands(commands: RenderCommands): void {\r\n if (this.shouldAddCommands(commands))\r\n commands.addBranch(this);\r\n }\r\n\r\n public override addHiliteCommands(commands: RenderCommands, pass: RenderPass): void {\r\n if (this.shouldAddCommands(commands))\r\n commands.addHiliteBranch(this, pass);\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport class AnimationTransformBranch extends Graphic {\r\n public readonly nodeId: number;\r\n public readonly graphic: Graphic;\r\n\r\n public constructor(graphic: RenderGraphic, nodeId: number) {\r\n super();\r\n assert(graphic instanceof Graphic);\r\n this.graphic = graphic;\r\n this.nodeId = nodeId;\r\n }\r\n\r\n public override dispose() {\r\n this.graphic.dispose();\r\n }\r\n\r\n public override get isDisposed() {\r\n return this.graphic.isDisposed;\r\n }\r\n\r\n public override get isPickable() {\r\n return this.graphic.isPickable;\r\n }\r\n\r\n public override collectStatistics(stats: RenderMemory.Statistics) {\r\n this.graphic.collectStatistics(stats);\r\n }\r\n\r\n public override unionRange(range: Range3d) {\r\n this.graphic.unionRange(range);\r\n }\r\n\r\n public override addCommands(commands: RenderCommands) {\r\n commands.target.currentAnimationTransformNodeId = this.nodeId;\r\n this.graphic.addCommands(commands);\r\n commands.target.currentAnimationTransformNodeId = undefined;\r\n }\r\n\r\n public override addHiliteCommands(commands: RenderCommands, pass: RenderPass) {\r\n commands.target.currentAnimationTransformNodeId = this.nodeId;\r\n this.graphic.addHiliteCommands(commands, pass);\r\n commands.target.currentAnimationTransformNodeId = undefined;\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport class WorldDecorations extends Branch {\r\n public constructor(viewFlags: ViewFlags) {\r\n super(new GraphicBranch(), Transform.identity, viewFlags);\r\n\r\n // World decorations ignore all the symbology overrides for the \"scene\" geometry...\r\n this.branch.symbologyOverrides = new FeatureSymbology.Overrides();\r\n // Make all subcategories visible.\r\n this.branch.symbologyOverrides.ignoreSubCategory = true;\r\n }\r\n\r\n public init(decs: GraphicList): void {\r\n this.branch.clear();\r\n for (const dec of decs) {\r\n this.branch.add(dec);\r\n }\r\n }\r\n}\r\n/** @internal */\r\nexport class GraphicsArray extends Graphic {\r\n // Note: We assume the graphics array we get contains undisposed graphics to start\r\n constructor(public graphics: RenderGraphic[]) { super(); }\r\n\r\n public get isDisposed(): boolean { return 0 === this.graphics.length; }\r\n\r\n public override get isPickable(): boolean {\r\n return this.graphics.some((x) => (x as Graphic).isPickable);\r\n }\r\n\r\n public dispose() {\r\n for (const graphic of this.graphics)\r\n dispose(graphic);\r\n this.graphics.length = 0;\r\n }\r\n\r\n public addCommands(commands: RenderCommands): void {\r\n for (const graphic of this.graphics) {\r\n (graphic as Graphic).addCommands(commands);\r\n }\r\n }\r\n\r\n public override addHiliteCommands(commands: RenderCommands, pass: RenderPass): void {\r\n for (const graphic of this.graphics) {\r\n (graphic as Graphic).addHiliteCommands(commands, pass);\r\n }\r\n }\r\n\r\n public collectStatistics(stats: RenderMemory.Statistics): void {\r\n for (const graphic of this.graphics)\r\n graphic.collectStatistics(stats);\r\n }\r\n\r\n public override unionRange(range: Range3d) {\r\n for (const graphic of this.graphics)\r\n graphic.unionRange(range);\r\n }\r\n}\r\n"]}
@@ -6,6 +6,7 @@ import { Graphic } from "./Graphic";
6
6
  import { RenderCommands } from "./RenderCommands";
7
7
  import { RenderPass } from "./RenderFlags";
8
8
  import { Target } from "./Target";
9
+ import { Range3d } from "@itwin/core-geometry";
9
10
  declare abstract class GraphicWrapper extends Graphic {
10
11
  readonly graphic: Graphic;
11
12
  protected constructor(graphic: Graphic);
@@ -13,6 +14,7 @@ declare abstract class GraphicWrapper extends Graphic {
13
14
  get isDisposed(): boolean;
14
15
  get isPickable(): boolean;
15
16
  collectStatistics(stats: RenderMemory.Statistics): void;
17
+ unionRange(range: Range3d): void;
16
18
  }
17
19
  /** Within a single tile, contains graphics belonging to a single layer.
18
20
  * The same layer may appear in multiple tiles, both within the same tile tree and in other tile trees.
@@ -1 +1 @@
1
- {"version":3,"file":"Layer.d.ts","sourceRoot":"","sources":["../../../../src/render/webgl/Layer.ts"],"names":[],"mappings":"AAIA;;GAEG;AAGH,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAElC,uBAAe,cAAe,SAAQ,OAAO;IAC3C,SAAgB,OAAO,EAAE,OAAO,CAAC;IAEjC,SAAS,aAAa,OAAO,EAAE,OAAO;IAK/B,OAAO,IAAI,IAAI;IAItB,IAAW,UAAU,IAAI,OAAO,CAE/B;IAED,IAAoB,UAAU,IAAI,OAAO,CAExC;IAEM,iBAAiB,CAAC,KAAK,EAAE,YAAY,CAAC,UAAU,GAAG,IAAI;CAG/D;AAED;;;;GAIG;AACH,qBAAa,KAAM,SAAQ,cAAc;IACvC,SAAgB,OAAO,EAAE,MAAM,CAAC;IAChC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAS;IAC/B,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAS;gBAEZ,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM;IAS7C,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM;IAInC,WAAW,CAAC,QAAQ,EAAE,cAAc,GAAG,IAAI;IAIlC,iBAAiB,CAAC,QAAQ,EAAE,cAAc,EAAE,IAAI,EAAE,UAAU,GAAG,IAAI;CAGpF;AAED;;;GAGG;AACH,qBAAa,cAAe,SAAQ,cAAc;IAChD,SAAgB,UAAU,EAAE,UAAU,CAAC;IACvC,SAAgB,SAAS,EAAE,MAAM,CAAC;gBAEf,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM;IAY7F,WAAW,CAAC,QAAQ,EAAE,cAAc,GAAG,IAAI;IAIlC,iBAAiB,CAAC,QAAQ,EAAE,cAAc,EAAE,IAAI,EAAE,UAAU,GAAG,IAAI;CAGpF"}
1
+ {"version":3,"file":"Layer.d.ts","sourceRoot":"","sources":["../../../../src/render/webgl/Layer.ts"],"names":[],"mappings":"AAIA;;GAEG;AAGH,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAE/C,uBAAe,cAAe,SAAQ,OAAO;IAC3C,SAAgB,OAAO,EAAE,OAAO,CAAC;IAEjC,SAAS,aAAa,OAAO,EAAE,OAAO;IAK/B,OAAO,IAAI,IAAI;IAItB,IAAW,UAAU,IAAI,OAAO,CAE/B;IAED,IAAoB,UAAU,IAAI,OAAO,CAExC;IAEM,iBAAiB,CAAC,KAAK,EAAE,YAAY,CAAC,UAAU,GAAG,IAAI;IAI9C,UAAU,CAAC,KAAK,EAAE,OAAO;CAG1C;AAED;;;;GAIG;AACH,qBAAa,KAAM,SAAQ,cAAc;IACvC,SAAgB,OAAO,EAAE,MAAM,CAAC;IAChC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAS;IAC/B,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAS;gBAEZ,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM;IAS7C,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM;IAInC,WAAW,CAAC,QAAQ,EAAE,cAAc,GAAG,IAAI;IAIlC,iBAAiB,CAAC,QAAQ,EAAE,cAAc,EAAE,IAAI,EAAE,UAAU,GAAG,IAAI;CAGpF;AAED;;;GAGG;AACH,qBAAa,cAAe,SAAQ,cAAc;IAChD,SAAgB,UAAU,EAAE,UAAU,CAAC;IACvC,SAAgB,SAAS,EAAE,MAAM,CAAC;gBAEf,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM;IAY7F,WAAW,CAAC,QAAQ,EAAE,cAAc,GAAG,IAAI;IAIlC,iBAAiB,CAAC,QAAQ,EAAE,cAAc,EAAE,IAAI,EAAE,UAAU,GAAG,IAAI;CAGpF"}
@@ -24,6 +24,9 @@ class GraphicWrapper extends Graphic {
24
24
  collectStatistics(stats) {
25
25
  this.graphic.collectStatistics(stats);
26
26
  }
27
+ unionRange(range) {
28
+ this.graphic.unionRange(range);
29
+ }
27
30
  }
28
31
  /** Within a single tile, contains graphics belonging to a single layer.
29
32
  * The same layer may appear in multiple tiles, both within the same tile tree and in other tile trees.
@@ -1 +1 @@
1
- {"version":3,"file":"Layer.js","sourceRoot":"","sources":["../../../../src/render/webgl/Layer.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F;;GAEG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAC;AAE3C,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKpC,MAAe,cAAe,SAAQ,OAAO;IAG3C,YAAsB,OAAgB;QACpC,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;IAEM,OAAO;QACZ,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;IACzB,CAAC;IAED,IAAW,UAAU;QACnB,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC;IACjC,CAAC;IAED,IAAoB,UAAU;QAC5B,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC;IACjC,CAAC;IAEM,iBAAiB,CAAC,KAA8B;QACrD,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;IACxC,CAAC;CACF;AAED;;;;GAIG;AACH,MAAM,OAAO,KAAM,SAAQ,cAAc;IAKvC,YAAmB,OAAgB,EAAE,OAAe;QAClD,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QAEvB,MAAM,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;QACzC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QACxB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;IAC1B,CAAC;IAEM,WAAW,CAAC,MAAc;QAC/B,OAAO,MAAM,CAAC,gCAAgC,CAAC,sBAAsB,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IAChG,CAAC;IAEM,WAAW,CAAC,QAAwB;QACzC,QAAQ,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;IAClC,CAAC;IAEe,iBAAiB,CAAC,QAAwB,EAAE,IAAgB;QAC1E,QAAQ,CAAC,sBAAsB,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IACtD,CAAC;CACF;AAED;;;GAGG;AACH,MAAM,OAAO,cAAe,SAAQ,cAAc;IAIhD,YAAmB,OAAgB,EAAE,aAAsB,EAAE,YAAoB,EAAE,SAAiB;QAClG,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAE3B,IAAI,aAAa;YACf,IAAI,CAAC,UAAU,oCAA2B,CAAC;aACxC,IAAI,YAAY,GAAG,CAAC;YACvB,IAAI,CAAC,UAAU,uCAA+B,CAAC;;YAE/C,IAAI,CAAC,UAAU,kCAA0B,CAAC,CAAC,wEAAwE;IACvH,CAAC;IAEM,WAAW,CAAC,QAAwB;QACzC,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;IAC/B,CAAC;IAEe,iBAAiB,CAAC,QAAwB,EAAE,IAAgB;QAC1E,QAAQ,CAAC,sBAAsB,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IACtD,CAAC;CACF","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module WebGL\r\n */\r\n\r\nimport { Id64 } from \"@itwin/core-bentley\";\r\nimport { RenderMemory } from \"../RenderMemory\";\r\nimport { Graphic } from \"./Graphic\";\r\nimport { RenderCommands } from \"./RenderCommands\";\r\nimport { RenderPass } from \"./RenderFlags\";\r\nimport { Target } from \"./Target\";\r\n\r\nabstract class GraphicWrapper extends Graphic {\r\n public readonly graphic: Graphic;\r\n\r\n protected constructor(graphic: Graphic) {\r\n super();\r\n this.graphic = graphic;\r\n }\r\n\r\n public dispose(): void {\r\n this.graphic.dispose();\r\n }\r\n\r\n public get isDisposed(): boolean {\r\n return this.graphic.isDisposed;\r\n }\r\n\r\n public override get isPickable(): boolean {\r\n return this.graphic.isPickable;\r\n }\r\n\r\n public collectStatistics(stats: RenderMemory.Statistics): void {\r\n this.graphic.collectStatistics(stats);\r\n }\r\n}\r\n\r\n/** Within a single tile, contains graphics belonging to a single layer.\r\n * The same layer may appear in multiple tiles, both within the same tile tree and in other tile trees.\r\n * Within a single tile tree, all Layers are contained within the same LayerContainer.\r\n * @internal\r\n */\r\nexport class Layer extends GraphicWrapper {\r\n public readonly layerId: string;\r\n private readonly _idLo: number;\r\n private readonly _idHi: number;\r\n\r\n public constructor(graphic: Graphic, layerId: string) {\r\n super(graphic);\r\n this.layerId = layerId;\r\n\r\n const pair = Id64.getUint32Pair(layerId);\r\n this._idLo = pair.lower;\r\n this._idHi = pair.upper;\r\n }\r\n\r\n public getPriority(target: Target): number {\r\n return target.currentFeatureSymbologyOverrides.getSubCategoryPriority(this._idLo, this._idHi);\r\n }\r\n\r\n public addCommands(commands: RenderCommands): void {\r\n commands.addLayerCommands(this);\r\n }\r\n\r\n public override addHiliteCommands(commands: RenderCommands, pass: RenderPass): void {\r\n commands.addHiliteLayerCommands(this.graphic, pass);\r\n }\r\n}\r\n\r\n/** Contains a GraphicBranch that can contain Layers, for a single model / tile-tree.\r\n * All geometry within the container has the same Z.\r\n * @internal\r\n */\r\nexport class LayerContainer extends GraphicWrapper {\r\n public readonly renderPass: RenderPass;\r\n public readonly elevation: number;\r\n\r\n public constructor(graphic: Graphic, drawAsOverlay: boolean, transparency: number, elevation: number) {\r\n super(graphic);\r\n this.elevation = elevation;\r\n\r\n if (drawAsOverlay)\r\n this.renderPass = RenderPass.OverlayLayers;\r\n else if (transparency > 0)\r\n this.renderPass = RenderPass.TranslucentLayers;\r\n else\r\n this.renderPass = RenderPass.OpaqueLayers; // ###TODO: What about layers containing naturally-transparent geometry?\r\n }\r\n\r\n public addCommands(commands: RenderCommands): void {\r\n commands.processLayers(this);\r\n }\r\n\r\n public override addHiliteCommands(commands: RenderCommands, pass: RenderPass): void {\r\n commands.addHiliteLayerCommands(this.graphic, pass);\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"Layer.js","sourceRoot":"","sources":["../../../../src/render/webgl/Layer.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F;;GAEG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAC;AAE3C,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAMpC,MAAe,cAAe,SAAQ,OAAO;IAG3C,YAAsB,OAAgB;QACpC,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;IAEM,OAAO;QACZ,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;IACzB,CAAC;IAED,IAAW,UAAU;QACnB,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC;IACjC,CAAC;IAED,IAAoB,UAAU;QAC5B,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC;IACjC,CAAC;IAEM,iBAAiB,CAAC,KAA8B;QACrD,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;IACxC,CAAC;IAEe,UAAU,CAAC,KAAc;QACvC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;IACjC,CAAC;CACF;AAED;;;;GAIG;AACH,MAAM,OAAO,KAAM,SAAQ,cAAc;IAKvC,YAAmB,OAAgB,EAAE,OAAe;QAClD,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QAEvB,MAAM,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;QACzC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QACxB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;IAC1B,CAAC;IAEM,WAAW,CAAC,MAAc;QAC/B,OAAO,MAAM,CAAC,gCAAgC,CAAC,sBAAsB,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IAChG,CAAC;IAEM,WAAW,CAAC,QAAwB;QACzC,QAAQ,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;IAClC,CAAC;IAEe,iBAAiB,CAAC,QAAwB,EAAE,IAAgB;QAC1E,QAAQ,CAAC,sBAAsB,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IACtD,CAAC;CACF;AAED;;;GAGG;AACH,MAAM,OAAO,cAAe,SAAQ,cAAc;IAIhD,YAAmB,OAAgB,EAAE,aAAsB,EAAE,YAAoB,EAAE,SAAiB;QAClG,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAE3B,IAAI,aAAa;YACf,IAAI,CAAC,UAAU,oCAA2B,CAAC;aACxC,IAAI,YAAY,GAAG,CAAC;YACvB,IAAI,CAAC,UAAU,uCAA+B,CAAC;;YAE/C,IAAI,CAAC,UAAU,kCAA0B,CAAC,CAAC,wEAAwE;IACvH,CAAC;IAEM,WAAW,CAAC,QAAwB;QACzC,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;IAC/B,CAAC;IAEe,iBAAiB,CAAC,QAAwB,EAAE,IAAgB;QAC1E,QAAQ,CAAC,sBAAsB,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IACtD,CAAC;CACF","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module WebGL\r\n */\r\n\r\nimport { Id64 } from \"@itwin/core-bentley\";\r\nimport { RenderMemory } from \"../RenderMemory\";\r\nimport { Graphic } from \"./Graphic\";\r\nimport { RenderCommands } from \"./RenderCommands\";\r\nimport { RenderPass } from \"./RenderFlags\";\r\nimport { Target } from \"./Target\";\r\nimport { Range3d } from \"@itwin/core-geometry\";\r\n\r\nabstract class GraphicWrapper extends Graphic {\r\n public readonly graphic: Graphic;\r\n\r\n protected constructor(graphic: Graphic) {\r\n super();\r\n this.graphic = graphic;\r\n }\r\n\r\n public dispose(): void {\r\n this.graphic.dispose();\r\n }\r\n\r\n public get isDisposed(): boolean {\r\n return this.graphic.isDisposed;\r\n }\r\n\r\n public override get isPickable(): boolean {\r\n return this.graphic.isPickable;\r\n }\r\n\r\n public collectStatistics(stats: RenderMemory.Statistics): void {\r\n this.graphic.collectStatistics(stats);\r\n }\r\n\r\n public override unionRange(range: Range3d) {\r\n this.graphic.unionRange(range);\r\n }\r\n}\r\n\r\n/** Within a single tile, contains graphics belonging to a single layer.\r\n * The same layer may appear in multiple tiles, both within the same tile tree and in other tile trees.\r\n * Within a single tile tree, all Layers are contained within the same LayerContainer.\r\n * @internal\r\n */\r\nexport class Layer extends GraphicWrapper {\r\n public readonly layerId: string;\r\n private readonly _idLo: number;\r\n private readonly _idHi: number;\r\n\r\n public constructor(graphic: Graphic, layerId: string) {\r\n super(graphic);\r\n this.layerId = layerId;\r\n\r\n const pair = Id64.getUint32Pair(layerId);\r\n this._idLo = pair.lower;\r\n this._idHi = pair.upper;\r\n }\r\n\r\n public getPriority(target: Target): number {\r\n return target.currentFeatureSymbologyOverrides.getSubCategoryPriority(this._idLo, this._idHi);\r\n }\r\n\r\n public addCommands(commands: RenderCommands): void {\r\n commands.addLayerCommands(this);\r\n }\r\n\r\n public override addHiliteCommands(commands: RenderCommands, pass: RenderPass): void {\r\n commands.addHiliteLayerCommands(this.graphic, pass);\r\n }\r\n}\r\n\r\n/** Contains a GraphicBranch that can contain Layers, for a single model / tile-tree.\r\n * All geometry within the container has the same Z.\r\n * @internal\r\n */\r\nexport class LayerContainer extends GraphicWrapper {\r\n public readonly renderPass: RenderPass;\r\n public readonly elevation: number;\r\n\r\n public constructor(graphic: Graphic, drawAsOverlay: boolean, transparency: number, elevation: number) {\r\n super(graphic);\r\n this.elevation = elevation;\r\n\r\n if (drawAsOverlay)\r\n this.renderPass = RenderPass.OverlayLayers;\r\n else if (transparency > 0)\r\n this.renderPass = RenderPass.TranslucentLayers;\r\n else\r\n this.renderPass = RenderPass.OpaqueLayers; // ###TODO: What about layers containing naturally-transparent geometry?\r\n }\r\n\r\n public addCommands(commands: RenderCommands): void {\r\n commands.processLayers(this);\r\n }\r\n\r\n public override addHiliteCommands(commands: RenderCommands, pass: RenderPass): void {\r\n commands.addHiliteLayerCommands(this.graphic, pass);\r\n }\r\n}\r\n"]}
@@ -33,6 +33,7 @@ export declare class MeshGraphic extends Graphic {
33
33
  readonly meshData: MeshData;
34
34
  private readonly _primitives;
35
35
  private readonly _instances?;
36
+ private readonly _meshRange;
36
37
  static create(geometry: MeshRenderGeometry, instances?: InstancedGraphicParams | PatternBuffers): MeshGraphic | undefined;
37
38
  private addPrimitive;
38
39
  private constructor();
@@ -40,6 +41,7 @@ export declare class MeshGraphic extends Graphic {
40
41
  get isPickable(): boolean;
41
42
  dispose(): void;
42
43
  collectStatistics(stats: RenderMemory.Statistics): void;
44
+ unionRange(range: Range3d): void;
43
45
  addCommands(cmds: RenderCommands): void;
44
46
  addHiliteCommands(cmds: RenderCommands, pass: RenderPass): void;
45
47
  get surfaceType(): SurfaceType;
@@ -1 +1 @@
1
- {"version":3,"file":"Mesh.d.ts","sourceRoot":"","sources":["../../../../src/render/webgl/Mesh.ts"],"names":[],"mappings":"AAIA;;GAEG;AAGH,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AACnE,OAAO,EAAE,UAAU,EAAE,MAAM,2CAA2C,CAAC;AACvE,OAAO,EAAE,WAAW,EAAE,MAAM,8CAA8C,CAAC;AAC3E,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAG/C,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAmB,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAEtE,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,YAAY,EAAE,oBAAoB,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AAC5F,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEtC,gBAAgB;AAChB,qBAAa,kBAAkB;IAC7B,SAAgB,IAAI,EAAE,QAAQ,CAAC;IAC/B,SAAgB,OAAO,CAAC,EAAE,eAAe,CAAC;IAC1C,SAAgB,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5C,SAAgB,eAAe,CAAC,EAAE,sBAAsB,CAAC;IACzD,SAAgB,aAAa,CAAC,EAAE,oBAAoB,CAAC;IACrD,SAAgB,YAAY,CAAC,EAAE,mBAAmB,CAAC;IACnD,SAAgB,KAAK,EAAE,OAAO,CAAC;IAE/B,OAAO;WAqBO,MAAM,CAAC,MAAM,EAAE,UAAU,EAAE,qBAAqB,EAAE,OAAO,GAAG,SAAS,GAAG,kBAAkB,GAAG,SAAS;IAK7G,OAAO;IASP,iBAAiB,CAAC,KAAK,EAAE,YAAY,CAAC,UAAU;CAQxD;AAED,gBAAgB;AAChB,qBAAa,WAAY,SAAQ,OAAO;IACtC,SAAgB,QAAQ,EAAE,QAAQ,CAAC;IACnC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAmB;IAC/C,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAmC;WAEjD,MAAM,CAAC,QAAQ,EAAE,kBAAkB,EAAE,SAAS,CAAC,EAAE,sBAAsB,GAAG,cAAc,GAAG,WAAW,GAAG,SAAS;IAgBhI,OAAO,CAAC,YAAY;IAUpB,OAAO;IAYP,IAAW,UAAU,IAAI,OAAO,CAAsE;IACtG,IAAW,UAAU,YAAoB;IAElC,OAAO;IASP,iBAAiB,CAAC,KAAK,EAAE,YAAY,CAAC,UAAU,GAAG,IAAI;IAMvD,WAAW,CAAC,IAAI,EAAE,cAAc,GAAG,IAAI;IAC9B,iBAAiB,CAAC,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,UAAU,GAAG,IAAI;IAE/E,IAAW,WAAW,IAAI,WAAW,CAA+B;CACrE"}
1
+ {"version":3,"file":"Mesh.d.ts","sourceRoot":"","sources":["../../../../src/render/webgl/Mesh.ts"],"names":[],"mappings":"AAIA;;GAEG;AAGH,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AACnE,OAAO,EAAE,UAAU,EAAE,MAAM,2CAA2C,CAAC;AACvE,OAAO,EAAE,WAAW,EAAE,MAAM,8CAA8C,CAAC;AAC3E,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAG/C,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAmB,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAEtE,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,YAAY,EAAE,oBAAoB,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AAC5F,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEtC,gBAAgB;AAChB,qBAAa,kBAAkB;IAC7B,SAAgB,IAAI,EAAE,QAAQ,CAAC;IAC/B,SAAgB,OAAO,CAAC,EAAE,eAAe,CAAC;IAC1C,SAAgB,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5C,SAAgB,eAAe,CAAC,EAAE,sBAAsB,CAAC;IACzD,SAAgB,aAAa,CAAC,EAAE,oBAAoB,CAAC;IACrD,SAAgB,YAAY,CAAC,EAAE,mBAAmB,CAAC;IACnD,SAAgB,KAAK,EAAE,OAAO,CAAC;IAE/B,OAAO;WAqBO,MAAM,CAAC,MAAM,EAAE,UAAU,EAAE,qBAAqB,EAAE,OAAO,GAAG,SAAS,GAAG,kBAAkB,GAAG,SAAS;IAK7G,OAAO;IASP,iBAAiB,CAAC,KAAK,EAAE,YAAY,CAAC,UAAU;CAQxD;AAED,gBAAgB;AAChB,qBAAa,WAAY,SAAQ,OAAO;IACtC,SAAgB,QAAQ,EAAE,QAAQ,CAAC;IACnC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAmB;IAC/C,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAmC;IAC/D,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAU;WAEvB,MAAM,CAAC,QAAQ,EAAE,kBAAkB,EAAE,SAAS,CAAC,EAAE,sBAAsB,GAAG,cAAc,GAAG,WAAW,GAAG,SAAS;IAgBhI,OAAO,CAAC,YAAY;IAUpB,OAAO;IAaP,IAAW,UAAU,IAAI,OAAO,CAAsE;IACtG,IAAW,UAAU,YAAoB;IAElC,OAAO;IASP,iBAAiB,CAAC,KAAK,EAAE,YAAY,CAAC,UAAU,GAAG,IAAI;IAM9C,UAAU,CAAC,KAAK,EAAE,OAAO;IAOlC,WAAW,CAAC,IAAI,EAAE,cAAc,GAAG,IAAI;IAC9B,iBAAiB,CAAC,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,UAAU,GAAG,IAAI;IAE/E,IAAW,WAAW,IAAI,WAAW,CAA+B;CACrE"}
@@ -83,6 +83,7 @@ export class MeshGraphic extends Graphic {
83
83
  super();
84
84
  this._primitives = [];
85
85
  this.meshData = geometry.data;
86
+ this._meshRange = geometry.range;
86
87
  this._instances = instances;
87
88
  this.addPrimitive(geometry.surface);
88
89
  this.addPrimitive(geometry.segmentEdges);
@@ -104,6 +105,12 @@ export class MeshGraphic extends Graphic {
104
105
  this._primitives.forEach((prim) => prim.collectStatistics(stats));
105
106
  this._instances?.collectStatistics(stats);
106
107
  }
108
+ unionRange(range) {
109
+ if (this._instances)
110
+ range.extendRange(range);
111
+ else
112
+ range.extendRange(this._meshRange);
113
+ }
107
114
  addCommands(cmds) { this._primitives.forEach((prim) => prim.addCommands(cmds)); }
108
115
  addHiliteCommands(cmds, pass) { this._primitives.forEach((prim) => prim.addHiliteCommands(cmds, pass)); }
109
116
  get surfaceType() { return this.meshData.type; }
@@ -1 +1 @@
1
- {"version":3,"file":"Mesh.js","sourceRoot":"","sources":["../../../../src/render/webgl/Mesh.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module WebGL\r\n */\r\n\r\nimport { assert, dispose } from \"@itwin/core-bentley\";\r\nimport { Point3d, Range3d } from \"@itwin/core-geometry\";\r\nimport { InstancedGraphicParams } from \"../InstancedGraphicParams\";\r\nimport { MeshParams } from \"../../common/render/primitives/MeshParams\";\r\nimport { SurfaceType } from \"../../common/render/primitives/SurfaceParams\";\r\nimport { RenderMemory } from \"../RenderMemory\";\r\nimport { RenderGeometry } from \"../RenderSystem\";\r\nimport { CachedGeometry } from \"./CachedGeometry\";\r\nimport { Graphic } from \"./Graphic\";\r\nimport { InstanceBuffers, PatternBuffers } from \"./InstancedGeometry\";\r\nimport { Primitive } from \"./Primitive\";\r\nimport { RenderCommands } from \"./RenderCommands\";\r\nimport { RenderPass } from \"./RenderFlags\";\r\nimport { EdgeGeometry, PolylineEdgeGeometry, SilhouetteEdgeGeometry } from \"./EdgeGeometry\";\r\nimport { IndexedEdgeGeometry } from \"./IndexedEdgeGeometry\";\r\nimport { SurfaceGeometry } from \"./SurfaceGeometry\";\r\nimport { MeshData } from \"./MeshData\";\r\n\r\n/** @internal */\r\nexport class MeshRenderGeometry {\r\n public readonly data: MeshData;\r\n public readonly surface?: SurfaceGeometry;\r\n public readonly segmentEdges?: EdgeGeometry;\r\n public readonly silhouetteEdges?: SilhouetteEdgeGeometry;\r\n public readonly polylineEdges?: PolylineEdgeGeometry;\r\n public readonly indexedEdges?: IndexedEdgeGeometry;\r\n public readonly range: Range3d;\r\n\r\n private constructor(data: MeshData, params: MeshParams) {\r\n this.data = data;\r\n this.range = params.vertices.qparams.computeRange();\r\n this.surface = SurfaceGeometry.create(data, params.surface.indices);\r\n const edges = params.edges;\r\n if (!edges || data.type === SurfaceType.VolumeClassifier)\r\n return;\r\n\r\n if (edges.silhouettes)\r\n this.silhouetteEdges = SilhouetteEdgeGeometry.createSilhouettes(data, edges.silhouettes);\r\n\r\n if (edges.segments)\r\n this.segmentEdges = EdgeGeometry.create(data, edges.segments);\r\n\r\n if (edges.polylines)\r\n this.polylineEdges = PolylineEdgeGeometry.create(data, edges.polylines);\r\n\r\n if (edges.indexed)\r\n this.indexedEdges = IndexedEdgeGeometry.create(data, edges.indexed);\r\n }\r\n\r\n public static create(params: MeshParams, viewIndependentOrigin: Point3d | undefined): MeshRenderGeometry | undefined {\r\n const data = MeshData.create(params, viewIndependentOrigin);\r\n return data ? new this(data, params) : undefined;\r\n }\r\n\r\n public dispose() {\r\n dispose(this.data);\r\n dispose(this.surface);\r\n dispose(this.segmentEdges);\r\n dispose(this.silhouetteEdges);\r\n dispose(this.polylineEdges);\r\n dispose(this.indexedEdges);\r\n }\r\n\r\n public collectStatistics(stats: RenderMemory.Statistics) {\r\n this.data.collectStatistics(stats);\r\n this.surface?.collectStatistics(stats);\r\n this.segmentEdges?.collectStatistics(stats);\r\n this.silhouetteEdges?.collectStatistics(stats);\r\n this.polylineEdges?.collectStatistics(stats);\r\n this.indexedEdges?.collectStatistics(stats);\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport class MeshGraphic extends Graphic {\r\n public readonly meshData: MeshData;\r\n private readonly _primitives: Primitive[] = [];\r\n private readonly _instances?: InstanceBuffers | PatternBuffers;\r\n\r\n public static create(geometry: MeshRenderGeometry, instances?: InstancedGraphicParams | PatternBuffers): MeshGraphic | undefined {\r\n let buffers;\r\n if (instances) {\r\n if (instances instanceof PatternBuffers) {\r\n buffers = instances;\r\n } else {\r\n const instancesRange = instances.range ?? InstanceBuffers.computeRange(geometry.range, instances.transforms, instances.transformCenter);\r\n buffers = InstanceBuffers.create(instances, instancesRange);\r\n if (!buffers)\r\n return undefined;\r\n }\r\n }\r\n\r\n return new MeshGraphic(geometry, buffers);\r\n }\r\n\r\n private addPrimitive(geometry: RenderGeometry | undefined) {\r\n if (!geometry)\r\n return;\r\n\r\n assert(geometry instanceof CachedGeometry);\r\n const primitive = Primitive.createShared(geometry, this._instances);\r\n if (primitive)\r\n this._primitives.push(primitive);\r\n }\r\n\r\n private constructor(geometry: MeshRenderGeometry, instances?: InstanceBuffers | PatternBuffers) {\r\n super();\r\n this.meshData = geometry.data;\r\n this._instances = instances;\r\n\r\n this.addPrimitive(geometry.surface);\r\n this.addPrimitive(geometry.segmentEdges);\r\n this.addPrimitive(geometry.silhouetteEdges);\r\n this.addPrimitive(geometry.polylineEdges);\r\n this.addPrimitive(geometry.indexedEdges);\r\n }\r\n\r\n public get isDisposed(): boolean { return this.meshData.isDisposed && 0 === this._primitives.length; }\r\n public get isPickable() { return false; }\r\n\r\n public dispose() {\r\n for (const primitive of this._primitives)\r\n dispose(primitive);\r\n\r\n dispose(this.meshData);\r\n dispose(this._instances);\r\n this._primitives.length = 0;\r\n }\r\n\r\n public collectStatistics(stats: RenderMemory.Statistics): void {\r\n this.meshData.collectStatistics(stats);\r\n this._primitives.forEach((prim) => prim.collectStatistics(stats));\r\n this._instances?.collectStatistics(stats);\r\n }\r\n\r\n public addCommands(cmds: RenderCommands): void { this._primitives.forEach((prim) => prim.addCommands(cmds)); }\r\n public override addHiliteCommands(cmds: RenderCommands, pass: RenderPass): void { this._primitives.forEach((prim) => prim.addHiliteCommands(cmds, pass)); }\r\n\r\n public get surfaceType(): SurfaceType { return this.meshData.type; }\r\n}\r\n"]}
1
+ {"version":3,"file":"Mesh.js","sourceRoot":"","sources":["../../../../src/render/webgl/Mesh.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module WebGL\r\n */\r\n\r\nimport { assert, dispose } from \"@itwin/core-bentley\";\r\nimport { Point3d, Range3d } from \"@itwin/core-geometry\";\r\nimport { InstancedGraphicParams } from \"../InstancedGraphicParams\";\r\nimport { MeshParams } from \"../../common/render/primitives/MeshParams\";\r\nimport { SurfaceType } from \"../../common/render/primitives/SurfaceParams\";\r\nimport { RenderMemory } from \"../RenderMemory\";\r\nimport { RenderGeometry } from \"../RenderSystem\";\r\nimport { CachedGeometry } from \"./CachedGeometry\";\r\nimport { Graphic } from \"./Graphic\";\r\nimport { InstanceBuffers, PatternBuffers } from \"./InstancedGeometry\";\r\nimport { Primitive } from \"./Primitive\";\r\nimport { RenderCommands } from \"./RenderCommands\";\r\nimport { RenderPass } from \"./RenderFlags\";\r\nimport { EdgeGeometry, PolylineEdgeGeometry, SilhouetteEdgeGeometry } from \"./EdgeGeometry\";\r\nimport { IndexedEdgeGeometry } from \"./IndexedEdgeGeometry\";\r\nimport { SurfaceGeometry } from \"./SurfaceGeometry\";\r\nimport { MeshData } from \"./MeshData\";\r\n\r\n/** @internal */\r\nexport class MeshRenderGeometry {\r\n public readonly data: MeshData;\r\n public readonly surface?: SurfaceGeometry;\r\n public readonly segmentEdges?: EdgeGeometry;\r\n public readonly silhouetteEdges?: SilhouetteEdgeGeometry;\r\n public readonly polylineEdges?: PolylineEdgeGeometry;\r\n public readonly indexedEdges?: IndexedEdgeGeometry;\r\n public readonly range: Range3d;\r\n\r\n private constructor(data: MeshData, params: MeshParams) {\r\n this.data = data;\r\n this.range = params.vertices.qparams.computeRange();\r\n this.surface = SurfaceGeometry.create(data, params.surface.indices);\r\n const edges = params.edges;\r\n if (!edges || data.type === SurfaceType.VolumeClassifier)\r\n return;\r\n\r\n if (edges.silhouettes)\r\n this.silhouetteEdges = SilhouetteEdgeGeometry.createSilhouettes(data, edges.silhouettes);\r\n\r\n if (edges.segments)\r\n this.segmentEdges = EdgeGeometry.create(data, edges.segments);\r\n\r\n if (edges.polylines)\r\n this.polylineEdges = PolylineEdgeGeometry.create(data, edges.polylines);\r\n\r\n if (edges.indexed)\r\n this.indexedEdges = IndexedEdgeGeometry.create(data, edges.indexed);\r\n }\r\n\r\n public static create(params: MeshParams, viewIndependentOrigin: Point3d | undefined): MeshRenderGeometry | undefined {\r\n const data = MeshData.create(params, viewIndependentOrigin);\r\n return data ? new this(data, params) : undefined;\r\n }\r\n\r\n public dispose() {\r\n dispose(this.data);\r\n dispose(this.surface);\r\n dispose(this.segmentEdges);\r\n dispose(this.silhouetteEdges);\r\n dispose(this.polylineEdges);\r\n dispose(this.indexedEdges);\r\n }\r\n\r\n public collectStatistics(stats: RenderMemory.Statistics) {\r\n this.data.collectStatistics(stats);\r\n this.surface?.collectStatistics(stats);\r\n this.segmentEdges?.collectStatistics(stats);\r\n this.silhouetteEdges?.collectStatistics(stats);\r\n this.polylineEdges?.collectStatistics(stats);\r\n this.indexedEdges?.collectStatistics(stats);\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport class MeshGraphic extends Graphic {\r\n public readonly meshData: MeshData;\r\n private readonly _primitives: Primitive[] = [];\r\n private readonly _instances?: InstanceBuffers | PatternBuffers;\r\n private readonly _meshRange: Range3d;\r\n\r\n public static create(geometry: MeshRenderGeometry, instances?: InstancedGraphicParams | PatternBuffers): MeshGraphic | undefined {\r\n let buffers;\r\n if (instances) {\r\n if (instances instanceof PatternBuffers) {\r\n buffers = instances;\r\n } else {\r\n const instancesRange = instances.range ?? InstanceBuffers.computeRange(geometry.range, instances.transforms, instances.transformCenter);\r\n buffers = InstanceBuffers.create(instances, instancesRange);\r\n if (!buffers)\r\n return undefined;\r\n }\r\n }\r\n\r\n return new MeshGraphic(geometry, buffers);\r\n }\r\n\r\n private addPrimitive(geometry: RenderGeometry | undefined) {\r\n if (!geometry)\r\n return;\r\n\r\n assert(geometry instanceof CachedGeometry);\r\n const primitive = Primitive.createShared(geometry, this._instances);\r\n if (primitive)\r\n this._primitives.push(primitive);\r\n }\r\n\r\n private constructor(geometry: MeshRenderGeometry, instances?: InstanceBuffers | PatternBuffers) {\r\n super();\r\n this.meshData = geometry.data;\r\n this._meshRange = geometry.range;\r\n this._instances = instances;\r\n\r\n this.addPrimitive(geometry.surface);\r\n this.addPrimitive(geometry.segmentEdges);\r\n this.addPrimitive(geometry.silhouetteEdges);\r\n this.addPrimitive(geometry.polylineEdges);\r\n this.addPrimitive(geometry.indexedEdges);\r\n }\r\n\r\n public get isDisposed(): boolean { return this.meshData.isDisposed && 0 === this._primitives.length; }\r\n public get isPickable() { return false; }\r\n\r\n public dispose() {\r\n for (const primitive of this._primitives)\r\n dispose(primitive);\r\n\r\n dispose(this.meshData);\r\n dispose(this._instances);\r\n this._primitives.length = 0;\r\n }\r\n\r\n public collectStatistics(stats: RenderMemory.Statistics): void {\r\n this.meshData.collectStatistics(stats);\r\n this._primitives.forEach((prim) => prim.collectStatistics(stats));\r\n this._instances?.collectStatistics(stats);\r\n }\r\n\r\n public override unionRange(range: Range3d) {\r\n if (this._instances)\r\n range.extendRange(range);\r\n else\r\n range.extendRange(this._meshRange);\r\n }\r\n\r\n public addCommands(cmds: RenderCommands): void { this._primitives.forEach((prim) => prim.addCommands(cmds)); }\r\n public override addHiliteCommands(cmds: RenderCommands, pass: RenderPass): void { this._primitives.forEach((prim) => prim.addHiliteCommands(cmds, pass)); }\r\n\r\n public get surfaceType(): SurfaceType { return this.meshData.type; }\r\n}\r\n"]}
@@ -1,4 +1,4 @@
1
- import { SpatialClassifier, SpatialClassifierInsideDisplay, SpatialClassifierOutsideDisplay } from "@itwin/core-common";
1
+ import { SpatialClassifierInsideDisplay, SpatialClassifierOutsideDisplay } from "@itwin/core-common";
2
2
  import { Matrix4d } from "@itwin/core-geometry";
3
3
  import { PlanarClipMaskState } from "../../PlanarClipMaskState";
4
4
  import { SpatialClassifierTileTreeReference } from "../../tile/internal";
@@ -10,6 +10,7 @@ import { BatchState } from "./BatchState";
10
10
  import { WebGLDisposable } from "./Disposable";
11
11
  import { Target } from "./Target";
12
12
  import { Texture } from "./Texture";
13
+ import { ActiveSpatialClassifier } from "../../SpatialClassifiersState";
13
14
  export declare enum PlanarClassifierContent {
14
15
  None = 0,
15
16
  MaskOnly = 1,
@@ -62,7 +63,7 @@ export declare class PlanarClassifier extends RenderPlanarClassifier implements
62
63
  get outsideDisplay(): SpatialClassifierOutsideDisplay;
63
64
  get isClassifyingPointCloud(): boolean;
64
65
  addGraphic(graphic: RenderGraphic): void;
65
- static create(properties: SpatialClassifier | undefined, target: Target): PlanarClassifier;
66
+ static create(properties: ActiveSpatialClassifier | undefined, target: Target): PlanarClassifier;
66
67
  collectStatistics(stats: RenderMemory.Statistics): void;
67
68
  get isDisposed(): boolean;
68
69
  dispose(): void;
@@ -1 +1 @@
1
- {"version":3,"file":"PlanarClassifier.d.ts","sourceRoot":"","sources":["../../../../src/render/webgl/PlanarClassifier.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"PlanarClassifier.d.ts","sourceRoot":"","sources":["../../../../src/render/webgl/PlanarClassifier.ts"],"names":[],"mappings":"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"}