@itwin/core-frontend 5.0.0-dev.4 → 5.0.0-dev.41

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 (373) hide show
  1. package/CHANGELOG.md +42 -1
  2. package/lib/cjs/AccuDraw.d.ts +63 -8
  3. package/lib/cjs/AccuDraw.d.ts.map +1 -1
  4. package/lib/cjs/AccuDraw.js +118 -16
  5. package/lib/cjs/AccuDraw.js.map +1 -1
  6. package/lib/cjs/ApproximateTerrainHeights.js +1 -1
  7. package/lib/cjs/ApproximateTerrainHeights.js.map +1 -1
  8. package/lib/cjs/BackgroundMapGeometry.js +5 -5
  9. package/lib/cjs/BackgroundMapGeometry.js.map +1 -1
  10. package/lib/cjs/BriefcaseTxns.d.ts +2 -2
  11. package/lib/cjs/BriefcaseTxns.d.ts.map +1 -1
  12. package/lib/cjs/BriefcaseTxns.js.map +1 -1
  13. package/lib/cjs/DrawingViewState.js +9 -9
  14. package/lib/cjs/DrawingViewState.js.map +1 -1
  15. package/lib/cjs/GraphicalEditingScope.js +5 -5
  16. package/lib/cjs/GraphicalEditingScope.js.map +1 -1
  17. package/lib/cjs/IModelApp.d.ts.map +1 -1
  18. package/lib/cjs/IModelApp.js +62 -64
  19. package/lib/cjs/IModelApp.js.map +1 -1
  20. package/lib/cjs/IModelConnection.d.ts +4 -1
  21. package/lib/cjs/IModelConnection.d.ts.map +1 -1
  22. package/lib/cjs/IModelConnection.js +24 -21
  23. package/lib/cjs/IModelConnection.js.map +1 -1
  24. package/lib/cjs/IModelRoutingContext.d.ts +0 -3
  25. package/lib/cjs/IModelRoutingContext.d.ts.map +1 -1
  26. package/lib/cjs/IModelRoutingContext.js +5 -4
  27. package/lib/cjs/IModelRoutingContext.js.map +1 -1
  28. package/lib/cjs/IpcApp.d.ts.map +1 -1
  29. package/lib/cjs/IpcApp.js +4 -3
  30. package/lib/cjs/IpcApp.js.map +1 -1
  31. package/lib/cjs/LocalhostIpcApp.js +1 -1
  32. package/lib/cjs/LocalhostIpcApp.js.map +1 -1
  33. package/lib/cjs/NativeApp.js +15 -17
  34. package/lib/cjs/NativeApp.js.map +1 -1
  35. package/lib/cjs/NativeAppLogger.js +1 -1
  36. package/lib/cjs/NativeAppLogger.js.map +1 -1
  37. package/lib/cjs/NoRenderApp.js +1 -1
  38. package/lib/cjs/NoRenderApp.js.map +1 -1
  39. package/lib/cjs/RealityDataSourceTilesetUrlImpl.d.ts +6 -1
  40. package/lib/cjs/RealityDataSourceTilesetUrlImpl.d.ts.map +1 -1
  41. package/lib/cjs/RealityDataSourceTilesetUrlImpl.js +14 -2
  42. package/lib/cjs/RealityDataSourceTilesetUrlImpl.js.map +1 -1
  43. package/lib/cjs/SelectionSet.d.ts +84 -35
  44. package/lib/cjs/SelectionSet.d.ts.map +1 -1
  45. package/lib/cjs/SelectionSet.js +419 -163
  46. package/lib/cjs/SelectionSet.js.map +1 -1
  47. package/lib/cjs/Sprites.js +1 -1
  48. package/lib/cjs/Sprites.js.map +1 -1
  49. package/lib/cjs/ViewCreator2d.js +3 -3
  50. package/lib/cjs/ViewCreator2d.js.map +1 -1
  51. package/lib/cjs/ViewGlobalLocation.js +5 -5
  52. package/lib/cjs/ViewGlobalLocation.js.map +1 -1
  53. package/lib/cjs/ViewState.js +2 -2
  54. package/lib/cjs/ViewState.js.map +1 -1
  55. package/lib/cjs/ViewingSpace.js +9 -9
  56. package/lib/cjs/ViewingSpace.js.map +1 -1
  57. package/lib/cjs/Viewport.js +41 -41
  58. package/lib/cjs/Viewport.js.map +1 -1
  59. package/lib/cjs/common/imdl/ImdlSchema.d.ts +4 -0
  60. package/lib/cjs/common/imdl/ImdlSchema.d.ts.map +1 -1
  61. package/lib/cjs/common/imdl/ImdlSchema.js.map +1 -1
  62. package/lib/cjs/common/imdl/ParseImdlDocument.d.ts +1 -1
  63. package/lib/cjs/common/imdl/ParseImdlDocument.d.ts.map +1 -1
  64. package/lib/cjs/common/imdl/ParseImdlDocument.js +80 -7
  65. package/lib/cjs/common/imdl/ParseImdlDocument.js.map +1 -1
  66. package/lib/cjs/common/internal/render/DisplayParams.js +1 -1
  67. package/lib/cjs/common/internal/render/DisplayParams.js.map +1 -1
  68. package/lib/cjs/common/internal/render/GraphicDescriptionBuilderImpl.js +1 -1
  69. package/lib/cjs/common/internal/render/GraphicDescriptionBuilderImpl.js.map +1 -1
  70. package/lib/cjs/common/internal/render/GraphicDescriptionContextImpl.js +1 -1
  71. package/lib/cjs/common/internal/render/GraphicDescriptionContextImpl.js.map +1 -1
  72. package/lib/cjs/common/internal/render/MeshPrimitives.js +1 -1
  73. package/lib/cjs/common/internal/render/MeshPrimitives.js.map +1 -1
  74. package/lib/cjs/internal/render/PrimitiveBuilder.js +1 -1
  75. package/lib/cjs/internal/render/PrimitiveBuilder.js.map +1 -1
  76. package/lib/cjs/internal/render/RenderInstancesParamsImpl.js +1 -1
  77. package/lib/cjs/internal/render/RenderInstancesParamsImpl.js.map +1 -1
  78. package/lib/cjs/render/MockRender.js +3 -3
  79. package/lib/cjs/render/MockRender.js.map +1 -1
  80. package/lib/cjs/render/webgl/BackgroundMapDrape.js +1 -1
  81. package/lib/cjs/render/webgl/BackgroundMapDrape.js.map +1 -1
  82. package/lib/cjs/render/webgl/BatchState.js +1 -1
  83. package/lib/cjs/render/webgl/BatchState.js.map +1 -1
  84. package/lib/cjs/render/webgl/ColorInfo.js +2 -2
  85. package/lib/cjs/render/webgl/ColorInfo.js.map +1 -1
  86. package/lib/cjs/render/webgl/Diagnostics.js +4 -4
  87. package/lib/cjs/render/webgl/Diagnostics.js.map +1 -1
  88. package/lib/cjs/render/webgl/DrawCommand.js +4 -4
  89. package/lib/cjs/render/webgl/DrawCommand.js.map +1 -1
  90. package/lib/cjs/render/webgl/IModelFrameLifecycle.js +4 -4
  91. package/lib/cjs/render/webgl/IModelFrameLifecycle.js.map +1 -1
  92. package/lib/cjs/render/webgl/InstancedGeometry.js +3 -3
  93. package/lib/cjs/render/webgl/InstancedGeometry.js.map +1 -1
  94. package/lib/cjs/render/webgl/Material.js +4 -4
  95. package/lib/cjs/render/webgl/Material.js.map +1 -1
  96. package/lib/cjs/render/webgl/PlanarClassifier.js +1 -1
  97. package/lib/cjs/render/webgl/PlanarClassifier.js.map +1 -1
  98. package/lib/cjs/render/webgl/PlanarTextureProjection.js +1 -1
  99. package/lib/cjs/render/webgl/PlanarTextureProjection.js.map +1 -1
  100. package/lib/cjs/render/webgl/RenderState.js +1 -1
  101. package/lib/cjs/render/webgl/RenderState.js.map +1 -1
  102. package/lib/cjs/render/webgl/Target.js +1 -1
  103. package/lib/cjs/render/webgl/Target.js.map +1 -1
  104. package/lib/cjs/render/webgl/Technique.js +39 -39
  105. package/lib/cjs/render/webgl/Technique.js.map +1 -1
  106. package/lib/cjs/render/webgl/TechniqueFlags.js +1 -1
  107. package/lib/cjs/render/webgl/TechniqueFlags.js.map +1 -1
  108. package/lib/cjs/render/webgl/Texture.js +3 -3
  109. package/lib/cjs/render/webgl/Texture.js.map +1 -1
  110. package/lib/cjs/tile/CesiumAssetProvider.js +1 -1
  111. package/lib/cjs/tile/CesiumAssetProvider.js.map +1 -1
  112. package/lib/cjs/tile/GltfReader.d.ts +6 -1
  113. package/lib/cjs/tile/GltfReader.d.ts.map +1 -1
  114. package/lib/cjs/tile/GltfReader.js +79 -2
  115. package/lib/cjs/tile/GltfReader.js.map +1 -1
  116. package/lib/cjs/tile/ImdlParser.js +2 -2
  117. package/lib/cjs/tile/ImdlParser.js.map +1 -1
  118. package/lib/cjs/tile/ImdlReader.js +1 -1
  119. package/lib/cjs/tile/ImdlReader.js.map +1 -1
  120. package/lib/cjs/tile/MeshoptCompression.d.ts +9 -0
  121. package/lib/cjs/tile/MeshoptCompression.d.ts.map +1 -1
  122. package/lib/cjs/tile/MeshoptCompression.js +98 -66
  123. package/lib/cjs/tile/MeshoptCompression.js.map +1 -1
  124. package/lib/cjs/tile/map/ArcGISTileMap.js +1 -1
  125. package/lib/cjs/tile/map/ArcGISTileMap.js.map +1 -1
  126. package/lib/cjs/tile/map/ArcGisUtilities.js +1 -1
  127. package/lib/cjs/tile/map/ArcGisUtilities.js.map +1 -1
  128. package/lib/cjs/tile/map/CesiumTerrainProvider.js +6 -6
  129. package/lib/cjs/tile/map/CesiumTerrainProvider.js.map +1 -1
  130. package/lib/cjs/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.d.ts.map +1 -1
  131. package/lib/cjs/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js +2 -2
  132. package/lib/cjs/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js.map +1 -1
  133. package/lib/cjs/tile/map/ImageryProviders/BingImageryProvider.d.ts.map +1 -1
  134. package/lib/cjs/tile/map/ImageryProviders/BingImageryProvider.js +5 -2
  135. package/lib/cjs/tile/map/ImageryProviders/BingImageryProvider.js.map +1 -1
  136. package/lib/cjs/tile/map/ImageryProviders/WmtsMapLayerImageryProvider.d.ts.map +1 -1
  137. package/lib/cjs/tile/map/ImageryProviders/WmtsMapLayerImageryProvider.js +2 -2
  138. package/lib/cjs/tile/map/ImageryProviders/WmtsMapLayerImageryProvider.js.map +1 -1
  139. package/lib/cjs/tile/map/ImageryTileTree.js +2 -2
  140. package/lib/cjs/tile/map/ImageryTileTree.js.map +1 -1
  141. package/lib/cjs/tile/map/MapLayerImageryFormats.js +7 -7
  142. package/lib/cjs/tile/map/MapLayerImageryFormats.js.map +1 -1
  143. package/lib/cjs/tile/map/MapTile.js +8 -8
  144. package/lib/cjs/tile/map/MapTile.js.map +1 -1
  145. package/lib/cjs/tile/map/MapTileAvailability.js +1 -1
  146. package/lib/cjs/tile/map/MapTileAvailability.js.map +1 -1
  147. package/lib/cjs/tile/map/MapTileTree.js +9 -9
  148. package/lib/cjs/tile/map/MapTileTree.js.map +1 -1
  149. package/lib/cjs/tile/map/MapTilingScheme.js +1 -1
  150. package/lib/cjs/tile/map/MapTilingScheme.js.map +1 -1
  151. package/lib/cjs/tile/map/WmsCapabilities.js +2 -2
  152. package/lib/cjs/tile/map/WmsCapabilities.js.map +1 -1
  153. package/lib/cjs/tile/map/WmtsCapabilities.js +1 -1
  154. package/lib/cjs/tile/map/WmtsCapabilities.js.map +1 -1
  155. package/lib/cjs/tools/AccuDrawTool.d.ts +1 -0
  156. package/lib/cjs/tools/AccuDrawTool.d.ts.map +1 -1
  157. package/lib/cjs/tools/AccuDrawTool.js +22 -21
  158. package/lib/cjs/tools/AccuDrawTool.js.map +1 -1
  159. package/lib/cjs/tools/ClipViewTool.js +40 -40
  160. package/lib/cjs/tools/ClipViewTool.js.map +1 -1
  161. package/lib/cjs/tools/EditManipulator.js +2 -2
  162. package/lib/cjs/tools/EditManipulator.js.map +1 -1
  163. package/lib/cjs/tools/ElementSetTool.d.ts.map +1 -1
  164. package/lib/cjs/tools/ElementSetTool.js +11 -4
  165. package/lib/cjs/tools/ElementSetTool.js.map +1 -1
  166. package/lib/cjs/tools/IdleTool.js +2 -2
  167. package/lib/cjs/tools/IdleTool.js.map +1 -1
  168. package/lib/cjs/tools/MeasureTool.d.ts.map +1 -1
  169. package/lib/cjs/tools/MeasureTool.js +39 -39
  170. package/lib/cjs/tools/MeasureTool.js.map +1 -1
  171. package/lib/cjs/tools/SelectTool.js +7 -7
  172. package/lib/cjs/tools/SelectTool.js.map +1 -1
  173. package/lib/cjs/tools/Tool.js +10 -10
  174. package/lib/cjs/tools/Tool.js.map +1 -1
  175. package/lib/cjs/tools/ToolAdmin.d.ts.map +1 -1
  176. package/lib/cjs/tools/ToolAdmin.js +36 -24
  177. package/lib/cjs/tools/ToolAdmin.js.map +1 -1
  178. package/lib/cjs/tools/ToolAssistance.js +19 -19
  179. package/lib/cjs/tools/ToolAssistance.js.map +1 -1
  180. package/lib/cjs/tools/ToolSettings.js +63 -63
  181. package/lib/cjs/tools/ToolSettings.js.map +1 -1
  182. package/lib/cjs/tools/ViewTool.js +37 -37
  183. package/lib/cjs/tools/ViewTool.js.map +1 -1
  184. package/lib/cjs/workers/ImdlParser/Worker.js +2 -2
  185. package/lib/cjs/workers/ImdlParser/Worker.js.map +1 -1
  186. package/lib/esm/AccuDraw.d.ts +63 -8
  187. package/lib/esm/AccuDraw.d.ts.map +1 -1
  188. package/lib/esm/AccuDraw.js +119 -17
  189. package/lib/esm/AccuDraw.js.map +1 -1
  190. package/lib/esm/ApproximateTerrainHeights.js +1 -1
  191. package/lib/esm/ApproximateTerrainHeights.js.map +1 -1
  192. package/lib/esm/BackgroundMapGeometry.js +5 -5
  193. package/lib/esm/BackgroundMapGeometry.js.map +1 -1
  194. package/lib/esm/BriefcaseTxns.d.ts +2 -2
  195. package/lib/esm/BriefcaseTxns.d.ts.map +1 -1
  196. package/lib/esm/BriefcaseTxns.js.map +1 -1
  197. package/lib/esm/DrawingViewState.js +9 -9
  198. package/lib/esm/DrawingViewState.js.map +1 -1
  199. package/lib/esm/GraphicalEditingScope.js +5 -5
  200. package/lib/esm/GraphicalEditingScope.js.map +1 -1
  201. package/lib/esm/IModelApp.d.ts.map +1 -1
  202. package/lib/esm/IModelApp.js +63 -65
  203. package/lib/esm/IModelApp.js.map +1 -1
  204. package/lib/esm/IModelConnection.d.ts +4 -1
  205. package/lib/esm/IModelConnection.d.ts.map +1 -1
  206. package/lib/esm/IModelConnection.js +20 -17
  207. package/lib/esm/IModelConnection.js.map +1 -1
  208. package/lib/esm/IModelRoutingContext.d.ts +0 -3
  209. package/lib/esm/IModelRoutingContext.d.ts.map +1 -1
  210. package/lib/esm/IModelRoutingContext.js +3 -2
  211. package/lib/esm/IModelRoutingContext.js.map +1 -1
  212. package/lib/esm/IpcApp.d.ts.map +1 -1
  213. package/lib/esm/IpcApp.js +4 -3
  214. package/lib/esm/IpcApp.js.map +1 -1
  215. package/lib/esm/LocalhostIpcApp.js +1 -1
  216. package/lib/esm/LocalhostIpcApp.js.map +1 -1
  217. package/lib/esm/NativeApp.js +15 -17
  218. package/lib/esm/NativeApp.js.map +1 -1
  219. package/lib/esm/NativeAppLogger.js +1 -1
  220. package/lib/esm/NativeAppLogger.js.map +1 -1
  221. package/lib/esm/NoRenderApp.js +1 -1
  222. package/lib/esm/NoRenderApp.js.map +1 -1
  223. package/lib/esm/RealityDataSourceTilesetUrlImpl.d.ts +6 -1
  224. package/lib/esm/RealityDataSourceTilesetUrlImpl.d.ts.map +1 -1
  225. package/lib/esm/RealityDataSourceTilesetUrlImpl.js +14 -2
  226. package/lib/esm/RealityDataSourceTilesetUrlImpl.js.map +1 -1
  227. package/lib/esm/SelectionSet.d.ts +84 -35
  228. package/lib/esm/SelectionSet.d.ts.map +1 -1
  229. package/lib/esm/SelectionSet.js +418 -162
  230. package/lib/esm/SelectionSet.js.map +1 -1
  231. package/lib/esm/Sprites.js +1 -1
  232. package/lib/esm/Sprites.js.map +1 -1
  233. package/lib/esm/ViewCreator2d.js +3 -3
  234. package/lib/esm/ViewCreator2d.js.map +1 -1
  235. package/lib/esm/ViewGlobalLocation.js +5 -5
  236. package/lib/esm/ViewGlobalLocation.js.map +1 -1
  237. package/lib/esm/ViewState.js +2 -2
  238. package/lib/esm/ViewState.js.map +1 -1
  239. package/lib/esm/ViewingSpace.js +9 -9
  240. package/lib/esm/ViewingSpace.js.map +1 -1
  241. package/lib/esm/Viewport.js +41 -41
  242. package/lib/esm/Viewport.js.map +1 -1
  243. package/lib/esm/common/imdl/ImdlSchema.d.ts +4 -0
  244. package/lib/esm/common/imdl/ImdlSchema.d.ts.map +1 -1
  245. package/lib/esm/common/imdl/ImdlSchema.js.map +1 -1
  246. package/lib/esm/common/imdl/ParseImdlDocument.d.ts +1 -1
  247. package/lib/esm/common/imdl/ParseImdlDocument.d.ts.map +1 -1
  248. package/lib/esm/common/imdl/ParseImdlDocument.js +80 -7
  249. package/lib/esm/common/imdl/ParseImdlDocument.js.map +1 -1
  250. package/lib/esm/common/internal/render/DisplayParams.js +1 -1
  251. package/lib/esm/common/internal/render/DisplayParams.js.map +1 -1
  252. package/lib/esm/common/internal/render/GraphicDescriptionBuilderImpl.js +1 -1
  253. package/lib/esm/common/internal/render/GraphicDescriptionBuilderImpl.js.map +1 -1
  254. package/lib/esm/common/internal/render/GraphicDescriptionContextImpl.js +1 -1
  255. package/lib/esm/common/internal/render/GraphicDescriptionContextImpl.js.map +1 -1
  256. package/lib/esm/common/internal/render/MeshPrimitives.js +2 -2
  257. package/lib/esm/common/internal/render/MeshPrimitives.js.map +1 -1
  258. package/lib/esm/internal/render/PrimitiveBuilder.js +1 -1
  259. package/lib/esm/internal/render/PrimitiveBuilder.js.map +1 -1
  260. package/lib/esm/internal/render/RenderInstancesParamsImpl.js +1 -1
  261. package/lib/esm/internal/render/RenderInstancesParamsImpl.js.map +1 -1
  262. package/lib/esm/render/MockRender.js +3 -3
  263. package/lib/esm/render/MockRender.js.map +1 -1
  264. package/lib/esm/render/webgl/BackgroundMapDrape.js +1 -1
  265. package/lib/esm/render/webgl/BackgroundMapDrape.js.map +1 -1
  266. package/lib/esm/render/webgl/BatchState.js +1 -1
  267. package/lib/esm/render/webgl/BatchState.js.map +1 -1
  268. package/lib/esm/render/webgl/ColorInfo.js +2 -2
  269. package/lib/esm/render/webgl/ColorInfo.js.map +1 -1
  270. package/lib/esm/render/webgl/Diagnostics.js +4 -4
  271. package/lib/esm/render/webgl/Diagnostics.js.map +1 -1
  272. package/lib/esm/render/webgl/DrawCommand.js +4 -4
  273. package/lib/esm/render/webgl/DrawCommand.js.map +1 -1
  274. package/lib/esm/render/webgl/IModelFrameLifecycle.js +4 -4
  275. package/lib/esm/render/webgl/IModelFrameLifecycle.js.map +1 -1
  276. package/lib/esm/render/webgl/InstancedGeometry.js +3 -3
  277. package/lib/esm/render/webgl/InstancedGeometry.js.map +1 -1
  278. package/lib/esm/render/webgl/Material.js +4 -4
  279. package/lib/esm/render/webgl/Material.js.map +1 -1
  280. package/lib/esm/render/webgl/PlanarClassifier.js +1 -1
  281. package/lib/esm/render/webgl/PlanarClassifier.js.map +1 -1
  282. package/lib/esm/render/webgl/PlanarTextureProjection.js +1 -1
  283. package/lib/esm/render/webgl/PlanarTextureProjection.js.map +1 -1
  284. package/lib/esm/render/webgl/RenderState.js +1 -1
  285. package/lib/esm/render/webgl/RenderState.js.map +1 -1
  286. package/lib/esm/render/webgl/Target.js +1 -1
  287. package/lib/esm/render/webgl/Target.js.map +1 -1
  288. package/lib/esm/render/webgl/Technique.js +39 -39
  289. package/lib/esm/render/webgl/Technique.js.map +1 -1
  290. package/lib/esm/render/webgl/TechniqueFlags.js +1 -1
  291. package/lib/esm/render/webgl/TechniqueFlags.js.map +1 -1
  292. package/lib/esm/render/webgl/Texture.js +3 -3
  293. package/lib/esm/render/webgl/Texture.js.map +1 -1
  294. package/lib/esm/tile/CesiumAssetProvider.js +1 -1
  295. package/lib/esm/tile/CesiumAssetProvider.js.map +1 -1
  296. package/lib/esm/tile/GltfReader.d.ts +6 -1
  297. package/lib/esm/tile/GltfReader.d.ts.map +1 -1
  298. package/lib/esm/tile/GltfReader.js +79 -2
  299. package/lib/esm/tile/GltfReader.js.map +1 -1
  300. package/lib/esm/tile/ImdlParser.js +2 -2
  301. package/lib/esm/tile/ImdlParser.js.map +1 -1
  302. package/lib/esm/tile/ImdlReader.js +1 -1
  303. package/lib/esm/tile/ImdlReader.js.map +1 -1
  304. package/lib/esm/tile/MeshoptCompression.d.ts +9 -0
  305. package/lib/esm/tile/MeshoptCompression.d.ts.map +1 -1
  306. package/lib/esm/tile/MeshoptCompression.js +98 -44
  307. package/lib/esm/tile/MeshoptCompression.js.map +1 -1
  308. package/lib/esm/tile/map/ArcGISTileMap.js +1 -1
  309. package/lib/esm/tile/map/ArcGISTileMap.js.map +1 -1
  310. package/lib/esm/tile/map/ArcGisUtilities.js +1 -1
  311. package/lib/esm/tile/map/ArcGisUtilities.js.map +1 -1
  312. package/lib/esm/tile/map/CesiumTerrainProvider.js +6 -6
  313. package/lib/esm/tile/map/CesiumTerrainProvider.js.map +1 -1
  314. package/lib/esm/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.d.ts.map +1 -1
  315. package/lib/esm/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js +2 -2
  316. package/lib/esm/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js.map +1 -1
  317. package/lib/esm/tile/map/ImageryProviders/BingImageryProvider.d.ts.map +1 -1
  318. package/lib/esm/tile/map/ImageryProviders/BingImageryProvider.js +5 -2
  319. package/lib/esm/tile/map/ImageryProviders/BingImageryProvider.js.map +1 -1
  320. package/lib/esm/tile/map/ImageryProviders/WmtsMapLayerImageryProvider.d.ts.map +1 -1
  321. package/lib/esm/tile/map/ImageryProviders/WmtsMapLayerImageryProvider.js +2 -2
  322. package/lib/esm/tile/map/ImageryProviders/WmtsMapLayerImageryProvider.js.map +1 -1
  323. package/lib/esm/tile/map/ImageryTileTree.js +2 -2
  324. package/lib/esm/tile/map/ImageryTileTree.js.map +1 -1
  325. package/lib/esm/tile/map/MapLayerImageryFormats.js +7 -7
  326. package/lib/esm/tile/map/MapLayerImageryFormats.js.map +1 -1
  327. package/lib/esm/tile/map/MapTile.js +8 -8
  328. package/lib/esm/tile/map/MapTile.js.map +1 -1
  329. package/lib/esm/tile/map/MapTileAvailability.js +1 -1
  330. package/lib/esm/tile/map/MapTileAvailability.js.map +1 -1
  331. package/lib/esm/tile/map/MapTileTree.js +9 -9
  332. package/lib/esm/tile/map/MapTileTree.js.map +1 -1
  333. package/lib/esm/tile/map/MapTilingScheme.js +1 -1
  334. package/lib/esm/tile/map/MapTilingScheme.js.map +1 -1
  335. package/lib/esm/tile/map/WmsCapabilities.js +2 -2
  336. package/lib/esm/tile/map/WmsCapabilities.js.map +1 -1
  337. package/lib/esm/tile/map/WmtsCapabilities.js +1 -1
  338. package/lib/esm/tile/map/WmtsCapabilities.js.map +1 -1
  339. package/lib/esm/tools/AccuDrawTool.d.ts +1 -0
  340. package/lib/esm/tools/AccuDrawTool.d.ts.map +1 -1
  341. package/lib/esm/tools/AccuDrawTool.js +22 -21
  342. package/lib/esm/tools/AccuDrawTool.js.map +1 -1
  343. package/lib/esm/tools/ClipViewTool.js +40 -40
  344. package/lib/esm/tools/ClipViewTool.js.map +1 -1
  345. package/lib/esm/tools/EditManipulator.js +2 -2
  346. package/lib/esm/tools/EditManipulator.js.map +1 -1
  347. package/lib/esm/tools/ElementSetTool.d.ts.map +1 -1
  348. package/lib/esm/tools/ElementSetTool.js +11 -4
  349. package/lib/esm/tools/ElementSetTool.js.map +1 -1
  350. package/lib/esm/tools/IdleTool.js +2 -2
  351. package/lib/esm/tools/IdleTool.js.map +1 -1
  352. package/lib/esm/tools/MeasureTool.d.ts.map +1 -1
  353. package/lib/esm/tools/MeasureTool.js +40 -40
  354. package/lib/esm/tools/MeasureTool.js.map +1 -1
  355. package/lib/esm/tools/SelectTool.js +7 -7
  356. package/lib/esm/tools/SelectTool.js.map +1 -1
  357. package/lib/esm/tools/Tool.js +10 -10
  358. package/lib/esm/tools/Tool.js.map +1 -1
  359. package/lib/esm/tools/ToolAdmin.d.ts.map +1 -1
  360. package/lib/esm/tools/ToolAdmin.js +36 -24
  361. package/lib/esm/tools/ToolAdmin.js.map +1 -1
  362. package/lib/esm/tools/ToolAssistance.js +19 -19
  363. package/lib/esm/tools/ToolAssistance.js.map +1 -1
  364. package/lib/esm/tools/ToolSettings.js +63 -63
  365. package/lib/esm/tools/ToolSettings.js.map +1 -1
  366. package/lib/esm/tools/ViewTool.js +37 -37
  367. package/lib/esm/tools/ViewTool.js.map +1 -1
  368. package/lib/esm/workers/ImdlParser/Worker.js +2 -2
  369. package/lib/esm/workers/ImdlParser/Worker.js.map +1 -1
  370. package/lib/public/locales/en/CoreTools.json +1 -0
  371. package/lib/public/scripts/parse-imdl-worker.js +1 -1
  372. package/lib/workers/webpack/parse-imdl-worker.js +1 -1
  373. package/package.json +20 -21
@@ -1 +1 @@
1
- {"version":3,"file":"GraphicDescriptionBuilderImpl.js","sourceRoot":"","sources":["../../../../../src/common/internal/render/GraphicDescriptionBuilderImpl.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 Rendering\r\n */\r\n\r\nimport { Point3d, Range3d, Range3dProps, Transform, XYAndZ } from \"@itwin/core-geometry\";\r\nimport { addPrimitiveTransferables, ImdlModel } from \"../../imdl/ImdlModel\";\r\nimport {\r\n ComputeGraphicDescriptionChordToleranceArgs, GraphicDescription, GraphicDescriptionBuilder, GraphicDescriptionBuilderOptions,\r\n} from \"../../render/GraphicDescriptionBuilder\";\r\nimport { GraphicType } from \"../../render/GraphicType\";\r\nimport { GraphicAssembler } from \"../../render/GraphicAssembler\";\r\nimport { Gradient, PackedFeatureTable, QPoint3dList } from \"@itwin/core-common\";\r\nimport { BatchOptions } from \"../../render/BatchOptions\";\r\nimport { assert, Id64String, TransientIdSequence } from \"@itwin/core-bentley\";\r\nimport { Mesh } from \"./MeshPrimitives\";\r\nimport { createPointStringParams } from \"./PointStringParams\";\r\nimport { VertexTable } from \"./VertexTable\";\r\nimport { createPolylineParams } from \"./PolylineParams\";\r\nimport { createMeshParams } from \"./VertexTableBuilder\";\r\nimport { edgeParamsToImdl } from \"../../imdl/ParseImdlDocument\";\r\nimport { _accumulator, _implementationProhibited } from \"../Symbols\";\r\nimport { WorkerGraphicDescriptionContextImpl, WorkerMaterial, WorkerTexture } from \"./GraphicDescriptionContextImpl\";\r\nimport { GraphicDescriptionContext } from \"../../render/GraphicDescriptionContext\";\r\nimport { MeshArgs } from \"../../../render/MeshArgs\";\r\nimport { PolylineArgs } from \"../../../render/PolylineArgs\";\r\n\r\nexport type BatchDescription = Omit<BatchOptions, \"tileId\"> & {\r\n featureTable: ImdlModel.FeatureTable;\r\n range: Range3dProps;\r\n isVolumeClassifier?: boolean;\r\n modelId: Id64String;\r\n};\r\n\r\nexport interface GraphicDescriptionImpl extends GraphicDescription {\r\n type: GraphicType;\r\n primitives: ImdlModel.Primitive[];\r\n translation?: XYAndZ;\r\n batch?: BatchDescription;\r\n /** Initialized the first time createGraphicFromDescription remaps the description in-place using a GraphicDescriptionContext.\r\n * Subsequently attempting to remap using same context should be a no-op.\r\n * Attempting to remap using a different context is an error.\r\n */\r\n remapContext?: GraphicDescriptionContext;\r\n}\r\n\r\nexport class GraphicDescriptionBuilderImpl extends GraphicAssembler implements GraphicDescriptionBuilder {\r\n public readonly [_implementationProhibited] = undefined;\r\n private readonly _computeChordTolerance: (args: ComputeGraphicDescriptionChordToleranceArgs) => number;\r\n private readonly _context: WorkerGraphicDescriptionContextImpl;\r\n private readonly _viewIndependentOrigin?: Point3d;\r\n\r\n public constructor(options: GraphicDescriptionBuilderOptions) {\r\n const type = options.type;\r\n const placement = options.placement ?? Transform.createIdentity();\r\n const wantEdges = options.generateEdges ?? type === GraphicType.Scene;\r\n const wantNormals = wantEdges || type === GraphicType.Scene;\r\n const preserveOrder = type === GraphicType.ViewOverlay || type === GraphicType.WorldOverlay || type === GraphicType.ViewBackground;\r\n\r\n super({\r\n ...options,\r\n [_implementationProhibited]: undefined,\r\n type,\r\n placement,\r\n wantEdges,\r\n wantNormals,\r\n preserveOrder,\r\n });\r\n\r\n this._computeChordTolerance = options.computeChordTolerance;\r\n this._viewIndependentOrigin = options.viewIndependentOrigin?.clone();\r\n\r\n this._context = options.context as WorkerGraphicDescriptionContextImpl;\r\n if (!(this._context.transientIds instanceof TransientIdSequence)) {\r\n throw new Error(\"Invalid WorkerGraphicDescriptionContext\");\r\n }\r\n }\r\n\r\n public finish(): GraphicDescriptionImpl {\r\n const description: GraphicDescriptionImpl = {\r\n [_implementationProhibited]: undefined,\r\n type: this.type,\r\n primitives: [],\r\n };\r\n\r\n if (this[_accumulator].isEmpty) {\r\n return description;\r\n }\r\n\r\n const tolerance = this._computeChordTolerance({ builder: this, computeRange: () => this[_accumulator].geometries.computeRange() });\r\n const meshes = this[_accumulator].toMeshes(this, tolerance, this.pickable);\r\n if (meshes.length === 0) {\r\n return description;\r\n }\r\n\r\n // If the meshes contain quantized positions, they are all quantized to the same range. If that range is small relative to the distance\r\n // from the origin, quantization errors can produce display artifacts. Remove the translation from the quantization parameters and apply\r\n // it in the transform instead.\r\n // If the positions are not quantized, they have already been transformed to be relative to the center of the meshes' range.\r\n // Apply the inverse translation to put them back into model space.\r\n let transformOrigin: Point3d | undefined;\r\n let meshesRangeOffset = false;\r\n\r\n for (const mesh of meshes) {\r\n const verts = mesh.points;\r\n if (!transformOrigin) {\r\n // This is the first mesh we've processed.\r\n if (verts instanceof QPoint3dList) {\r\n transformOrigin = verts.params.origin.clone();\r\n verts.params.origin.setZero();\r\n } else {\r\n // In this case we need to modify the qOrigin of the graphic that will get created later since we have translated the origin.\r\n // We can't modify it directly, but if we temporarily modify the range of the mesh used to create it the qOrigin will get created properly.\r\n // Range is shared (not cloned) by all meshes and the mesh list itself, so modifying the range of the meshlist will modify it for all meshes.\r\n // This will become the range in local coordinates of the batch, if we are creating a batch.\r\n transformOrigin = verts.range.center;\r\n if (!meshesRangeOffset) {\r\n meshes.range?.low.subtractInPlace(transformOrigin);\r\n meshes.range?.high.subtractInPlace(transformOrigin);\r\n meshesRangeOffset = true;\r\n }\r\n }\r\n } else {\r\n if (verts instanceof QPoint3dList) {\r\n assert(transformOrigin.isAlmostEqual(verts.params.origin));\r\n verts.params.origin.setZero();\r\n } else {\r\n assert(verts.range.center.isAlmostZero);\r\n }\r\n }\r\n\r\n const primitive = this.createPrimitive(mesh);\r\n if (primitive) {\r\n const origin = this._viewIndependentOrigin;\r\n if (origin) {\r\n primitive.modifier = {\r\n type: \"viewIndependentOrigin\",\r\n origin: { x: origin.x, y: origin.y, z: origin.z },\r\n };\r\n }\r\n\r\n description.primitives.push(primitive);\r\n }\r\n }\r\n\r\n this[_accumulator].clear();\r\n if (transformOrigin) {\r\n description.translation = { x: transformOrigin.x, y: transformOrigin.y, z: transformOrigin.z };\r\n }\r\n\r\n const featureTable = this.pickable && meshes.features?.anyDefined ? meshes.features : undefined;\r\n if (featureTable) {\r\n assert(undefined !== this.pickable);\r\n const features = PackedFeatureTable.pack(featureTable);\r\n const range = meshes.range ?? new Range3d();\r\n description.batch = {\r\n ...this.pickable,\r\n range: range.toJSON(),\r\n modelId: this.pickable.modelId ?? this.pickable.id,\r\n featureTable: {\r\n multiModel: false,\r\n data: features.data,\r\n numFeatures: features.numFeatures,\r\n animationNodeIds: features.animationNodeIds,\r\n },\r\n };\r\n }\r\n\r\n return description;\r\n }\r\n\r\n private createPrimitive(mesh: Mesh): ImdlModel.Primitive | undefined {\r\n const meshArgs = mesh.toMeshArgs();\r\n if (meshArgs) {\r\n return this.createMeshPrimitive(meshArgs);\r\n }\r\n\r\n const polylineArgs = mesh.toPolylineArgs();\r\n if (!polylineArgs) {\r\n return undefined;\r\n }\r\n\r\n return polylineArgs.flags.isDisjoint ? this.createPointStringPrimitive(polylineArgs) : this.createPolylinePrimitive(polylineArgs);\r\n }\r\n\r\n private createMeshPrimitive(args: MeshArgs): ImdlModel.Primitive | undefined {\r\n const params = createMeshParams(args, this._context.constraints.maxTextureSize, true);\r\n\r\n let material;\r\n const mat = params.surface.material;\r\n if (mat) {\r\n assert(mat.isAtlas === false && mat.material instanceof WorkerMaterial);\r\n material = mat.material.toImdl();\r\n }\r\n\r\n let textureMapping;\r\n const tex = params.surface.textureMapping;\r\n if (tex) {\r\n assert(tex.texture instanceof WorkerTexture);\r\n textureMapping = { alwaysDisplayed: false, texture: tex.texture.index.toString(10) };\r\n }\r\n\r\n return {\r\n type: \"mesh\",\r\n params: {\r\n ...params,\r\n vertices: convertVertexTable(params.vertices),\r\n auxChannels: params.auxChannels?.toJSON(),\r\n edges: params.edges ? edgeParamsToImdl(params.edges) : undefined,\r\n surface: {\r\n ...params.surface,\r\n indices: params.surface.indices.data,\r\n material,\r\n textureMapping,\r\n },\r\n },\r\n };\r\n }\r\n\r\n private createPolylinePrimitive(args: PolylineArgs): ImdlModel.Primitive | undefined {\r\n const params = createPolylineParams(args, this._context.constraints.maxTextureSize);\r\n if (!params) {\r\n return undefined;\r\n }\r\n\r\n return {\r\n type: \"polyline\",\r\n params: {\r\n ...params,\r\n vertices: convertVertexTable(params.vertices),\r\n polyline: {\r\n indices: params.polyline.indices.data,\r\n prevIndices: params.polyline.prevIndices.data,\r\n nextIndicesAndParams: params.polyline.nextIndicesAndParams,\r\n },\r\n },\r\n };\r\n }\r\n\r\n private createPointStringPrimitive(args: PolylineArgs): ImdlModel.Primitive | undefined {\r\n const params = createPointStringParams(args, this._context.constraints.maxTextureSize);\r\n if (!params) {\r\n return undefined;\r\n }\r\n\r\n return {\r\n type: \"point\",\r\n params: {\r\n indices: params.indices.data,\r\n vertices: convertVertexTable(params.vertices),\r\n weight: params.weight,\r\n },\r\n };\r\n }\r\n\r\n protected override resolveGradient(gradient: Gradient.Symb) {\r\n return this._context.createGradientTexture(gradient);\r\n }\r\n}\r\n\r\nfunction convertVertexTable(src: VertexTable): ImdlModel.VertexTable {\r\n return {\r\n ...src,\r\n qparams: src.qparams.toJSON(),\r\n uvParams: src.uvParams?.toJSON(),\r\n uniformColor: src.uniformColor?.toJSON(),\r\n };\r\n}\r\n\r\nexport function isGraphicDescription(description: GraphicDescription): description is GraphicDescriptionImpl {\r\n const descr = description as GraphicDescriptionImpl;\r\n return \"object\" === typeof descr && Array.isArray(descr.primitives) && \"number\" === typeof descr.type;\r\n}\r\n\r\nexport function collectGraphicDescriptionTransferables(xfers: Set<Transferable>, description: GraphicDescription): void {\r\n if (!isGraphicDescription(description)) {\r\n throw new Error(\"Invalid GraphicDescription\");\r\n }\r\n\r\n for (const primitive of description.primitives) {\r\n addPrimitiveTransferables(xfers, primitive);\r\n }\r\n}\r\n\r\n"]}
1
+ {"version":3,"file":"GraphicDescriptionBuilderImpl.js","sourceRoot":"","sources":["../../../../../src/common/internal/render/GraphicDescriptionBuilderImpl.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 Rendering\r\n */\r\n\r\nimport { Point3d, Range3d, Range3dProps, Transform, XYAndZ } from \"@itwin/core-geometry\";\r\nimport { addPrimitiveTransferables, ImdlModel } from \"../../imdl/ImdlModel\";\r\nimport {\r\n ComputeGraphicDescriptionChordToleranceArgs, GraphicDescription, GraphicDescriptionBuilder, GraphicDescriptionBuilderOptions,\r\n} from \"../../render/GraphicDescriptionBuilder\";\r\nimport { GraphicType } from \"../../render/GraphicType\";\r\nimport { GraphicAssembler } from \"../../render/GraphicAssembler\";\r\nimport { Gradient, PackedFeatureTable, QPoint3dList } from \"@itwin/core-common\";\r\nimport { BatchOptions } from \"../../render/BatchOptions\";\r\nimport { assert, Id64String, TransientIdSequence } from \"@itwin/core-bentley\";\r\nimport { Mesh } from \"./MeshPrimitives\";\r\nimport { createPointStringParams } from \"./PointStringParams\";\r\nimport { VertexTable } from \"./VertexTable\";\r\nimport { createPolylineParams } from \"./PolylineParams\";\r\nimport { createMeshParams } from \"./VertexTableBuilder\";\r\nimport { edgeParamsToImdl } from \"../../imdl/ParseImdlDocument\";\r\nimport { _accumulator, _implementationProhibited } from \"../Symbols\";\r\nimport { WorkerGraphicDescriptionContextImpl, WorkerMaterial, WorkerTexture } from \"./GraphicDescriptionContextImpl\";\r\nimport { GraphicDescriptionContext } from \"../../render/GraphicDescriptionContext\";\r\nimport { MeshArgs } from \"../../../render/MeshArgs\";\r\nimport { PolylineArgs } from \"../../../render/PolylineArgs\";\r\n\r\nexport type BatchDescription = Omit<BatchOptions, \"tileId\"> & {\r\n featureTable: ImdlModel.FeatureTable;\r\n range: Range3dProps;\r\n isVolumeClassifier?: boolean;\r\n modelId: Id64String;\r\n};\r\n\r\nexport interface GraphicDescriptionImpl extends GraphicDescription {\r\n type: GraphicType;\r\n primitives: ImdlModel.Primitive[];\r\n translation?: XYAndZ;\r\n batch?: BatchDescription;\r\n /** Initialized the first time createGraphicFromDescription remaps the description in-place using a GraphicDescriptionContext.\r\n * Subsequently attempting to remap using same context should be a no-op.\r\n * Attempting to remap using a different context is an error.\r\n */\r\n remapContext?: GraphicDescriptionContext;\r\n}\r\n\r\nexport class GraphicDescriptionBuilderImpl extends GraphicAssembler implements GraphicDescriptionBuilder {\r\n public readonly [_implementationProhibited] = undefined;\r\n private readonly _computeChordTolerance: (args: ComputeGraphicDescriptionChordToleranceArgs) => number;\r\n private readonly _context: WorkerGraphicDescriptionContextImpl;\r\n private readonly _viewIndependentOrigin?: Point3d;\r\n\r\n public constructor(options: GraphicDescriptionBuilderOptions) {\r\n const type = options.type;\r\n const placement = options.placement ?? Transform.createIdentity();\r\n const wantEdges = options.generateEdges ?? type === GraphicType.Scene;\r\n const wantNormals = wantEdges || type === GraphicType.Scene;\r\n const preserveOrder = type === GraphicType.ViewOverlay || type === GraphicType.WorldOverlay || type === GraphicType.ViewBackground;\r\n\r\n super({\r\n ...options,\r\n [_implementationProhibited]: undefined,\r\n type,\r\n placement,\r\n wantEdges,\r\n wantNormals,\r\n preserveOrder,\r\n });\r\n\r\n this._computeChordTolerance = options.computeChordTolerance;\r\n this._viewIndependentOrigin = options.viewIndependentOrigin?.clone();\r\n\r\n this._context = options.context as WorkerGraphicDescriptionContextImpl;\r\n if (!(this._context.transientIds instanceof TransientIdSequence)) {\r\n throw new Error(\"Invalid WorkerGraphicDescriptionContext\");\r\n }\r\n }\r\n\r\n public finish(): GraphicDescriptionImpl {\r\n const description: GraphicDescriptionImpl = {\r\n [_implementationProhibited]: undefined,\r\n type: this.type,\r\n primitives: [],\r\n };\r\n\r\n if (this[_accumulator].isEmpty) {\r\n return description;\r\n }\r\n\r\n const tolerance = this._computeChordTolerance({ builder: this, computeRange: () => this[_accumulator].geometries.computeRange() });\r\n const meshes = this[_accumulator].toMeshes(this, tolerance, this.pickable);\r\n if (meshes.length === 0) {\r\n return description;\r\n }\r\n\r\n // If the meshes contain quantized positions, they are all quantized to the same range. If that range is small relative to the distance\r\n // from the origin, quantization errors can produce display artifacts. Remove the translation from the quantization parameters and apply\r\n // it in the transform instead.\r\n // If the positions are not quantized, they have already been transformed to be relative to the center of the meshes' range.\r\n // Apply the inverse translation to put them back into model space.\r\n let transformOrigin: Point3d | undefined;\r\n let meshesRangeOffset = false;\r\n\r\n for (const mesh of meshes) {\r\n const verts = mesh.points;\r\n if (!transformOrigin) {\r\n // This is the first mesh we've processed.\r\n if (verts instanceof QPoint3dList) {\r\n transformOrigin = verts.params.origin.clone();\r\n verts.params.origin.setZero();\r\n } else {\r\n // In this case we need to modify the qOrigin of the graphic that will get created later since we have translated the origin.\r\n // We can't modify it directly, but if we temporarily modify the range of the mesh used to create it the qOrigin will get created properly.\r\n // Range is shared (not cloned) by all meshes and the mesh list itself, so modifying the range of the meshlist will modify it for all meshes.\r\n // This will become the range in local coordinates of the batch, if we are creating a batch.\r\n transformOrigin = verts.range.center;\r\n if (!meshesRangeOffset) {\r\n meshes.range?.low.subtractInPlace(transformOrigin);\r\n meshes.range?.high.subtractInPlace(transformOrigin);\r\n meshesRangeOffset = true;\r\n }\r\n }\r\n } else {\r\n if (verts instanceof QPoint3dList) {\r\n assert(transformOrigin.isAlmostEqual(verts.params.origin));\r\n verts.params.origin.setZero();\r\n } else {\r\n assert(verts.range.center.isAlmostZero);\r\n }\r\n }\r\n\r\n const primitive = this.createPrimitive(mesh);\r\n if (primitive) {\r\n const origin = this._viewIndependentOrigin;\r\n if (origin) {\r\n primitive.modifier = {\r\n type: \"viewIndependentOrigin\",\r\n origin: { x: origin.x, y: origin.y, z: origin.z },\r\n };\r\n }\r\n\r\n description.primitives.push(primitive);\r\n }\r\n }\r\n\r\n this[_accumulator].clear();\r\n if (transformOrigin) {\r\n description.translation = { x: transformOrigin.x, y: transformOrigin.y, z: transformOrigin.z };\r\n }\r\n\r\n const featureTable = this.pickable && meshes.features?.anyDefined ? meshes.features : undefined;\r\n if (featureTable) {\r\n assert(undefined !== this.pickable);\r\n const features = PackedFeatureTable.pack(featureTable);\r\n const range = meshes.range ?? new Range3d();\r\n description.batch = {\r\n ...this.pickable,\r\n range: range.toJSON(),\r\n modelId: this.pickable.modelId ?? this.pickable.id,\r\n featureTable: {\r\n multiModel: false,\r\n data: features.data,\r\n numFeatures: features.numFeatures,\r\n animationNodeIds: features.animationNodeIds,\r\n },\r\n };\r\n }\r\n\r\n return description;\r\n }\r\n\r\n private createPrimitive(mesh: Mesh): ImdlModel.Primitive | undefined {\r\n const meshArgs = mesh.toMeshArgs();\r\n if (meshArgs) {\r\n return this.createMeshPrimitive(meshArgs);\r\n }\r\n\r\n const polylineArgs = mesh.toPolylineArgs();\r\n if (!polylineArgs) {\r\n return undefined;\r\n }\r\n\r\n return polylineArgs.flags.isDisjoint ? this.createPointStringPrimitive(polylineArgs) : this.createPolylinePrimitive(polylineArgs);\r\n }\r\n\r\n private createMeshPrimitive(args: MeshArgs): ImdlModel.Primitive | undefined {\r\n const params = createMeshParams(args, this._context.constraints.maxTextureSize, true);\r\n\r\n let material;\r\n const mat = params.surface.material;\r\n if (mat) {\r\n assert(mat.isAtlas === false && mat.material instanceof WorkerMaterial);\r\n material = mat.material.toImdl();\r\n }\r\n\r\n let textureMapping;\r\n const tex = params.surface.textureMapping;\r\n if (tex) {\r\n assert(tex.texture instanceof WorkerTexture);\r\n textureMapping = { alwaysDisplayed: false, texture: tex.texture.index.toString(10) };\r\n }\r\n\r\n return {\r\n type: \"mesh\",\r\n params: {\r\n ...params,\r\n vertices: convertVertexTable(params.vertices),\r\n auxChannels: params.auxChannels?.toJSON(),\r\n edges: params.edges ? edgeParamsToImdl(params.edges) : undefined,\r\n surface: {\r\n ...params.surface,\r\n indices: params.surface.indices.data,\r\n material,\r\n textureMapping,\r\n },\r\n },\r\n };\r\n }\r\n\r\n private createPolylinePrimitive(args: PolylineArgs): ImdlModel.Primitive | undefined {\r\n const params = createPolylineParams(args, this._context.constraints.maxTextureSize);\r\n if (!params) {\r\n return undefined;\r\n }\r\n\r\n return {\r\n type: \"polyline\",\r\n params: {\r\n ...params,\r\n vertices: convertVertexTable(params.vertices),\r\n polyline: {\r\n indices: params.polyline.indices.data,\r\n prevIndices: params.polyline.prevIndices.data,\r\n nextIndicesAndParams: params.polyline.nextIndicesAndParams,\r\n },\r\n },\r\n };\r\n }\r\n\r\n private createPointStringPrimitive(args: PolylineArgs): ImdlModel.Primitive | undefined {\r\n const params = createPointStringParams(args, this._context.constraints.maxTextureSize);\r\n if (!params) {\r\n return undefined;\r\n }\r\n\r\n return {\r\n type: \"point\",\r\n params: {\r\n indices: params.indices.data,\r\n vertices: convertVertexTable(params.vertices),\r\n weight: params.weight,\r\n },\r\n };\r\n }\r\n\r\n protected override resolveGradient(gradient: Gradient.Symb) {\r\n return this._context.createGradientTexture(gradient);\r\n }\r\n}\r\n\r\nfunction convertVertexTable(src: VertexTable): ImdlModel.VertexTable {\r\n return {\r\n ...src,\r\n qparams: src.qparams.toJSON(),\r\n uvParams: src.uvParams?.toJSON(),\r\n uniformColor: src.uniformColor?.toJSON(),\r\n };\r\n}\r\n\r\nexport function isGraphicDescription(description: GraphicDescription): description is GraphicDescriptionImpl {\r\n const descr = description as GraphicDescriptionImpl;\r\n return \"object\" === typeof descr && Array.isArray(descr.primitives) && \"number\" === typeof descr.type;\r\n}\r\n\r\nexport function collectGraphicDescriptionTransferables(xfers: Set<Transferable>, description: GraphicDescription): void {\r\n if (!isGraphicDescription(description)) {\r\n throw new Error(\"Invalid GraphicDescription\");\r\n }\r\n\r\n for (const primitive of description.primitives) {\r\n addPrimitiveTransferables(xfers, primitive);\r\n }\r\n}\r\n\r\n"]}
@@ -97,6 +97,7 @@ export class WorkerMaterial extends RenderMaterial {
97
97
  }
98
98
  }
99
99
  export class WorkerGraphicDescriptionContextImpl {
100
+ static { _a = _implementationProhibited; }
100
101
  constructor(props) {
101
102
  this[_a] = undefined;
102
103
  this.textures = [];
@@ -136,5 +137,4 @@ export class WorkerGraphicDescriptionContextImpl {
136
137
  };
137
138
  }
138
139
  }
139
- _a = _implementationProhibited;
140
140
  //# sourceMappingURL=GraphicDescriptionContextImpl.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"GraphicDescriptionContextImpl.js","sourceRoot":"","sources":["../../../../../src/common/internal/render/GraphicDescriptionContextImpl.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 Rendering\r\n */\r\n\r\nimport { TransientIdSequence, TransientIdSequenceProps } from \"@itwin/core-bentley\";\r\nimport { _implementationProhibited } from \"../Symbols\";\r\nimport { GraphicDescriptionContextProps, WorkerGraphicDescriptionContext, WorkerGraphicDescriptionContextProps, WorkerTextureParams } from \"../../render/GraphicDescriptionContext\";\r\nimport { MaterialParams } from \"../../render/MaterialParams\";\r\nimport { ColorDef, ColorDefProps, Gradient, ImageBufferFormat, ImageSource, ImageSourceFormat, RenderMaterial, RenderTexture, RgbColor, RgbColorProps, TextureMapping, TextureTransparency } from \"@itwin/core-common\";\r\nimport { ImdlModel } from \"../../imdl/ImdlModel\";\r\n\r\n/** As part of a [[WorkerGraphicDescriptionContext]], describes constraints imposed by the [[RenderSystem]] that a [[GraphicDescriptionBuilder]] needs to know about\r\n * when creating a [[GraphicDescription]].\r\n */\r\nexport interface GraphicDescriptionConstraints {\r\n /** @internal */\r\n readonly [_implementationProhibited]: unknown;\r\n /** The maximum dimension (width or height) permitted for a single WebGL texture. */\r\n readonly maxTextureSize: number;\r\n}\r\n\r\nexport interface WorkerGraphicDescriptionContextPropsImpl extends WorkerGraphicDescriptionContextProps {\r\n readonly constraints: GraphicDescriptionConstraints;\r\n readonly transientIds: TransientIdSequenceProps;\r\n}\r\n\r\nexport interface GraphicDescriptionContextPropsImpl extends GraphicDescriptionContextProps {\r\n readonly transientIds: TransientIdSequenceProps;\r\n readonly textures: WorkerTextureProps[];\r\n /** This is set to true the first time we use RenderSystem.createGraphicDescriptionContext on it.\r\n * That prevents us from remapping transient Ids to different transient Ids, recreating duplicate textures+materials, etc if\r\n * somebody tries to resolve the same props more than once.\r\n * We will throw if somebody tries to re-resolve a GraphicDescriptionContextPropsImpl.\r\n */\r\n resolved?: boolean;\r\n}\r\n\r\nexport interface TextureUrlProps {\r\n url: string;\r\n transparency?: TextureTransparency;\r\n gradient?: never;\r\n imageBuffer?: never;\r\n imageSource?: never;\r\n width?: never;\r\n format?: never;\r\n}\r\n\r\nexport interface TextureImageBufferProps {\r\n imageBuffer: Uint8Array;\r\n format: ImageBufferFormat;\r\n transparency?: TextureTransparency;\r\n width: number;\r\n gradient?: never;\r\n imageSource?: never;\r\n url?: never;\r\n}\r\n\r\nexport interface TextureImageSourceProps {\r\n imageSource: Uint8Array | string;\r\n format: ImageSourceFormat;\r\n transparency?: TextureTransparency;\r\n width?: never;\r\n url?: never;\r\n imageBuffer?: never;\r\n gradient?: never;\r\n}\r\n\r\nexport interface TextureGradientSource {\r\n gradient: Gradient.Symb;\r\n transparency?: never;\r\n format?: never;\r\n imageBuffer?: never;\r\n imageSource?: never;\r\n url?: never;\r\n width?: never;\r\n}\r\n\r\nexport type TextureGradientSourceProps = Omit<TextureGradientSource, \"gradient\"> & { gradient: Gradient.SymbProps };\r\nexport type TextureSource = TextureUrlProps | TextureImageBufferProps | TextureImageSourceProps | TextureGradientSource;\r\nexport type TextureSourceProps = TextureUrlProps | TextureImageBufferProps | TextureImageSourceProps | TextureGradientSourceProps;\r\n\r\nexport interface WorkerTextureProps {\r\n type: RenderTexture.Type;\r\n transparency?: TextureTransparency;\r\n source: TextureSourceProps;\r\n}\r\n\r\nexport class WorkerTexture extends RenderTexture {\r\n public readonly index: number;\r\n public readonly source: TextureSource;\r\n\r\n public constructor(index: number, params: WorkerTextureParams | Gradient.Symb) {\r\n let type = RenderTexture.Type.Normal;\r\n if (!(params instanceof Gradient.Symb) && undefined !== params.type) {\r\n type = params.type;\r\n }\r\n\r\n super(type);\r\n\r\n this.index = index;\r\n if (params instanceof Gradient.Symb) {\r\n this.source = { gradient: params };\r\n } else {\r\n const transparency = params.transparency;\r\n if (params.source instanceof URL) {\r\n this.source = { transparency, url: params.source.toString() };\r\n } else if (params.source instanceof ImageSource) {\r\n this.source = { transparency, imageSource: params.source.data, format: params.source.format };\r\n } else {\r\n this.source = { transparency, imageBuffer: params.source.data, format: params.source.format, width: params.source.width };\r\n }\r\n }\r\n }\r\n\r\n public override dispose() { }\r\n public override get bytesUsed() { return 0; } // doesn't matter, nobody's calling this.\r\n\r\n public toProps(xfer: Set<Transferable>): WorkerTextureProps {\r\n const source = this.source.gradient ? { ...this.source, gradient: this.source.gradient.toJSON() } : this.source;\r\n const buffer = source.imageBuffer ?? source.imageSource;\r\n if (buffer instanceof Uint8Array) {\r\n xfer.add(buffer.buffer);\r\n }\r\n\r\n return {\r\n type: this.type,\r\n source,\r\n };\r\n }\r\n}\r\n\r\nfunction materialColorToImdl(color: ColorDef | RgbColorProps | undefined): ColorDefProps | undefined {\r\n if (!(color instanceof ColorDef)) {\r\n color = RgbColor.fromJSON(color).toColorDef();\r\n }\r\n\r\n return color?.toJSON();\r\n}\r\n\r\nexport class WorkerMaterial extends RenderMaterial {\r\n public readonly params: MaterialParams;\r\n\r\n public constructor(params: MaterialParams) {\r\n let textureMapping;\r\n if (params.textureMapping) {\r\n textureMapping = new TextureMapping(params.textureMapping.texture, new TextureMapping.Params({\r\n textureMat2x3: params.textureMapping.transform,\r\n mapMode: params.textureMapping.mode,\r\n textureWeight: params.textureMapping.weight,\r\n worldMapping: params.textureMapping.worldMapping,\r\n useConstantLod: params.textureMapping.useConstantLod,\r\n constantLodProps: params.textureMapping.constantLodProps,\r\n }));\r\n textureMapping.normalMapParams = params.textureMapping.normalMapParams;\r\n }\r\n\r\n super({ textureMapping });\r\n\r\n this.params = params;\r\n }\r\n\r\n public toImdl(): ImdlModel.SurfaceMaterial {\r\n let diffuse;\r\n if (this.params.diffuse) {\r\n diffuse = {\r\n weight: this.params.diffuse.weight,\r\n color: materialColorToImdl(this.params.diffuse.color),\r\n };\r\n }\r\n\r\n let specular;\r\n if (this.params.specular) {\r\n specular = {\r\n weight: this.params.specular.weight,\r\n exponent: this.params.specular.exponent,\r\n color: materialColorToImdl(this.params.specular.color),\r\n };\r\n }\r\n\r\n return {\r\n isAtlas: false,\r\n material: {\r\n alpha: this.params.alpha,\r\n diffuse,\r\n specular,\r\n },\r\n };\r\n }\r\n}\r\n\r\nexport class WorkerGraphicDescriptionContextImpl implements WorkerGraphicDescriptionContext {\r\n public readonly [_implementationProhibited] = undefined;\r\n public readonly constraints: GraphicDescriptionConstraints;\r\n public readonly transientIds: TransientIdSequence;\r\n public readonly textures: WorkerTexture[] = [];\r\n public readonly materials: WorkerMaterial[] = [];\r\n\r\n public constructor(props: WorkerGraphicDescriptionContextProps) {\r\n const propsImpl = props as WorkerGraphicDescriptionContextPropsImpl;\r\n if (typeof propsImpl.transientIds !== \"object\" || typeof propsImpl.constraints !== \"object\") {\r\n throw new Error(\"Invalid WorkerGraphicDescriptionContextProps\");\r\n }\r\n\r\n this.constraints = propsImpl.constraints;\r\n this.transientIds = TransientIdSequence.fromJSON(propsImpl.transientIds);\r\n }\r\n\r\n public createMaterial(params: MaterialParams): RenderMaterial {\r\n const material = new WorkerMaterial(params);\r\n this.materials.push(material);\r\n return material;\r\n }\r\n\r\n public createTexture(params: WorkerTextureParams): RenderTexture {\r\n const texture = new WorkerTexture(this.textures.length, params);\r\n this.textures.push(texture);\r\n return texture;\r\n }\r\n\r\n public createGradientTexture(gradient: Gradient.Symb): RenderTexture {\r\n const existing = this.textures.find((tx) => tx.source.gradient && tx.source.gradient.equals(gradient));\r\n if (existing) {\r\n return existing;\r\n }\r\n\r\n const texture = new WorkerTexture(this.textures.length, gradient);\r\n this.textures.push(texture);\r\n return texture;\r\n }\r\n\r\n public toProps(transferables: Set<Transferable>): GraphicDescriptionContextPropsImpl {\r\n // We don't yet have any transferable objects. In the future we expect to support transferring texture image data for textures created on the worker thread.\r\n return {\r\n [_implementationProhibited]: undefined,\r\n transientIds: this.transientIds.toJSON(),\r\n textures: this.textures.map((tx) => tx.toProps(transferables)),\r\n };\r\n }\r\n}\r\n\r\n"]}
1
+ {"version":3,"file":"GraphicDescriptionContextImpl.js","sourceRoot":"","sources":["../../../../../src/common/internal/render/GraphicDescriptionContextImpl.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 Rendering\r\n */\r\n\r\nimport { TransientIdSequence, TransientIdSequenceProps } from \"@itwin/core-bentley\";\r\nimport { _implementationProhibited } from \"../Symbols\";\r\nimport { GraphicDescriptionContextProps, WorkerGraphicDescriptionContext, WorkerGraphicDescriptionContextProps, WorkerTextureParams } from \"../../render/GraphicDescriptionContext\";\r\nimport { MaterialParams } from \"../../render/MaterialParams\";\r\nimport { ColorDef, ColorDefProps, Gradient, ImageBufferFormat, ImageSource, ImageSourceFormat, RenderMaterial, RenderTexture, RgbColor, RgbColorProps, TextureMapping, TextureTransparency } from \"@itwin/core-common\";\r\nimport { ImdlModel } from \"../../imdl/ImdlModel\";\r\n\r\n/** As part of a [[WorkerGraphicDescriptionContext]], describes constraints imposed by the [[RenderSystem]] that a [[GraphicDescriptionBuilder]] needs to know about\r\n * when creating a [[GraphicDescription]].\r\n */\r\nexport interface GraphicDescriptionConstraints {\r\n /** @internal */\r\n readonly [_implementationProhibited]: unknown;\r\n /** The maximum dimension (width or height) permitted for a single WebGL texture. */\r\n readonly maxTextureSize: number;\r\n}\r\n\r\nexport interface WorkerGraphicDescriptionContextPropsImpl extends WorkerGraphicDescriptionContextProps {\r\n readonly constraints: GraphicDescriptionConstraints;\r\n readonly transientIds: TransientIdSequenceProps;\r\n}\r\n\r\nexport interface GraphicDescriptionContextPropsImpl extends GraphicDescriptionContextProps {\r\n readonly transientIds: TransientIdSequenceProps;\r\n readonly textures: WorkerTextureProps[];\r\n /** This is set to true the first time we use RenderSystem.createGraphicDescriptionContext on it.\r\n * That prevents us from remapping transient Ids to different transient Ids, recreating duplicate textures+materials, etc if\r\n * somebody tries to resolve the same props more than once.\r\n * We will throw if somebody tries to re-resolve a GraphicDescriptionContextPropsImpl.\r\n */\r\n resolved?: boolean;\r\n}\r\n\r\nexport interface TextureUrlProps {\r\n url: string;\r\n transparency?: TextureTransparency;\r\n gradient?: never;\r\n imageBuffer?: never;\r\n imageSource?: never;\r\n width?: never;\r\n format?: never;\r\n}\r\n\r\nexport interface TextureImageBufferProps {\r\n imageBuffer: Uint8Array;\r\n format: ImageBufferFormat;\r\n transparency?: TextureTransparency;\r\n width: number;\r\n gradient?: never;\r\n imageSource?: never;\r\n url?: never;\r\n}\r\n\r\nexport interface TextureImageSourceProps {\r\n imageSource: Uint8Array | string;\r\n format: ImageSourceFormat;\r\n transparency?: TextureTransparency;\r\n width?: never;\r\n url?: never;\r\n imageBuffer?: never;\r\n gradient?: never;\r\n}\r\n\r\nexport interface TextureGradientSource {\r\n gradient: Gradient.Symb;\r\n transparency?: never;\r\n format?: never;\r\n imageBuffer?: never;\r\n imageSource?: never;\r\n url?: never;\r\n width?: never;\r\n}\r\n\r\nexport type TextureGradientSourceProps = Omit<TextureGradientSource, \"gradient\"> & { gradient: Gradient.SymbProps };\r\nexport type TextureSource = TextureUrlProps | TextureImageBufferProps | TextureImageSourceProps | TextureGradientSource;\r\nexport type TextureSourceProps = TextureUrlProps | TextureImageBufferProps | TextureImageSourceProps | TextureGradientSourceProps;\r\n\r\nexport interface WorkerTextureProps {\r\n type: RenderTexture.Type;\r\n transparency?: TextureTransparency;\r\n source: TextureSourceProps;\r\n}\r\n\r\nexport class WorkerTexture extends RenderTexture {\r\n public readonly index: number;\r\n public readonly source: TextureSource;\r\n\r\n public constructor(index: number, params: WorkerTextureParams | Gradient.Symb) {\r\n let type = RenderTexture.Type.Normal;\r\n if (!(params instanceof Gradient.Symb) && undefined !== params.type) {\r\n type = params.type;\r\n }\r\n\r\n super(type);\r\n\r\n this.index = index;\r\n if (params instanceof Gradient.Symb) {\r\n this.source = { gradient: params };\r\n } else {\r\n const transparency = params.transparency;\r\n if (params.source instanceof URL) {\r\n this.source = { transparency, url: params.source.toString() };\r\n } else if (params.source instanceof ImageSource) {\r\n this.source = { transparency, imageSource: params.source.data, format: params.source.format };\r\n } else {\r\n this.source = { transparency, imageBuffer: params.source.data, format: params.source.format, width: params.source.width };\r\n }\r\n }\r\n }\r\n\r\n public override dispose() { }\r\n public override get bytesUsed() { return 0; } // doesn't matter, nobody's calling this.\r\n\r\n public toProps(xfer: Set<Transferable>): WorkerTextureProps {\r\n const source = this.source.gradient ? { ...this.source, gradient: this.source.gradient.toJSON() } : this.source;\r\n const buffer = source.imageBuffer ?? source.imageSource;\r\n if (buffer instanceof Uint8Array) {\r\n xfer.add(buffer.buffer);\r\n }\r\n\r\n return {\r\n type: this.type,\r\n source,\r\n };\r\n }\r\n}\r\n\r\nfunction materialColorToImdl(color: ColorDef | RgbColorProps | undefined): ColorDefProps | undefined {\r\n if (!(color instanceof ColorDef)) {\r\n color = RgbColor.fromJSON(color).toColorDef();\r\n }\r\n\r\n return color?.toJSON();\r\n}\r\n\r\nexport class WorkerMaterial extends RenderMaterial {\r\n public readonly params: MaterialParams;\r\n\r\n public constructor(params: MaterialParams) {\r\n let textureMapping;\r\n if (params.textureMapping) {\r\n textureMapping = new TextureMapping(params.textureMapping.texture, new TextureMapping.Params({\r\n textureMat2x3: params.textureMapping.transform,\r\n mapMode: params.textureMapping.mode,\r\n textureWeight: params.textureMapping.weight,\r\n worldMapping: params.textureMapping.worldMapping,\r\n useConstantLod: params.textureMapping.useConstantLod,\r\n constantLodProps: params.textureMapping.constantLodProps,\r\n }));\r\n textureMapping.normalMapParams = params.textureMapping.normalMapParams;\r\n }\r\n\r\n super({ textureMapping });\r\n\r\n this.params = params;\r\n }\r\n\r\n public toImdl(): ImdlModel.SurfaceMaterial {\r\n let diffuse;\r\n if (this.params.diffuse) {\r\n diffuse = {\r\n weight: this.params.diffuse.weight,\r\n color: materialColorToImdl(this.params.diffuse.color),\r\n };\r\n }\r\n\r\n let specular;\r\n if (this.params.specular) {\r\n specular = {\r\n weight: this.params.specular.weight,\r\n exponent: this.params.specular.exponent,\r\n color: materialColorToImdl(this.params.specular.color),\r\n };\r\n }\r\n\r\n return {\r\n isAtlas: false,\r\n material: {\r\n alpha: this.params.alpha,\r\n diffuse,\r\n specular,\r\n },\r\n };\r\n }\r\n}\r\n\r\nexport class WorkerGraphicDescriptionContextImpl implements WorkerGraphicDescriptionContext {\r\n public readonly [_implementationProhibited] = undefined;\r\n public readonly constraints: GraphicDescriptionConstraints;\r\n public readonly transientIds: TransientIdSequence;\r\n public readonly textures: WorkerTexture[] = [];\r\n public readonly materials: WorkerMaterial[] = [];\r\n\r\n public constructor(props: WorkerGraphicDescriptionContextProps) {\r\n const propsImpl = props as WorkerGraphicDescriptionContextPropsImpl;\r\n if (typeof propsImpl.transientIds !== \"object\" || typeof propsImpl.constraints !== \"object\") {\r\n throw new Error(\"Invalid WorkerGraphicDescriptionContextProps\");\r\n }\r\n\r\n this.constraints = propsImpl.constraints;\r\n this.transientIds = TransientIdSequence.fromJSON(propsImpl.transientIds);\r\n }\r\n\r\n public createMaterial(params: MaterialParams): RenderMaterial {\r\n const material = new WorkerMaterial(params);\r\n this.materials.push(material);\r\n return material;\r\n }\r\n\r\n public createTexture(params: WorkerTextureParams): RenderTexture {\r\n const texture = new WorkerTexture(this.textures.length, params);\r\n this.textures.push(texture);\r\n return texture;\r\n }\r\n\r\n public createGradientTexture(gradient: Gradient.Symb): RenderTexture {\r\n const existing = this.textures.find((tx) => tx.source.gradient && tx.source.gradient.equals(gradient));\r\n if (existing) {\r\n return existing;\r\n }\r\n\r\n const texture = new WorkerTexture(this.textures.length, gradient);\r\n this.textures.push(texture);\r\n return texture;\r\n }\r\n\r\n public toProps(transferables: Set<Transferable>): GraphicDescriptionContextPropsImpl {\r\n // We don't yet have any transferable objects. In the future we expect to support transferring texture image data for textures created on the worker thread.\r\n return {\r\n [_implementationProhibited]: undefined,\r\n transientIds: this.transientIds.toJSON(),\r\n textures: this.textures.map((tx) => tx.toProps(transferables)),\r\n };\r\n }\r\n}\r\n\r\n"]}
@@ -7,7 +7,7 @@
7
7
  */
8
8
  import { assert } from "@itwin/core-bentley";
9
9
  import { AuxChannel, AuxChannelData } from "@itwin/core-geometry";
10
- import { ColorIndex, EdgeArgs, FeatureIndex, FeatureIndexType, LinePixels, MeshPolylineList, PolylineEdgeArgs, PolylineTypeFlags, QParams3d, QPoint3dList, SilhouetteEdgeArgs, } from "@itwin/core-common";
10
+ import { ColorIndex, EdgeArgs, FeatureIndex, FeatureIndexType, LinePixels, PolylineEdgeArgs, PolylineTypeFlags, QParams3d, QPoint3dList, SilhouetteEdgeArgs, } from "@itwin/core-common";
11
11
  import { ColorMap } from "./ColorMap";
12
12
  import { DisplayParams } from "./DisplayParams";
13
13
  import { MeshPrimitiveType } from "./MeshPrimitive";
@@ -111,7 +111,7 @@ export class Mesh {
111
111
  this.colorMap = new ColorMap(); // used to be called ColorTable
112
112
  this.colors = [];
113
113
  const { displayParams, features, type, range, is2d, isPlanar } = props;
114
- this._data = MeshPrimitiveType.Mesh === type ? new TriangleList() : new MeshPolylineList();
114
+ this._data = MeshPrimitiveType.Mesh === type ? new TriangleList() : [];
115
115
  this.displayParams = displayParams;
116
116
  this.features = features ? new Mesh.Features(features) : undefined;
117
117
  this.type = type;
@@ -1 +1 @@
1
- {"version":3,"file":"MeshPrimitives.js","sourceRoot":"","sources":["../../../../../src/common/internal/render/MeshPrimitives.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 Rendering\r\n */\r\n\r\nimport { assert } from \"@itwin/core-bentley\";\r\nimport { AuxChannel, AuxChannelData, Point2d, Point3d, Range3d } from \"@itwin/core-geometry\";\r\nimport {\r\n ColorIndex, EdgeArgs, Feature, FeatureIndex, FeatureIndexType, FeatureTable, LinePixels, MeshEdges, MeshPolyline, MeshPolylineList,\r\n OctEncodedNormal, PolylineEdgeArgs, PolylineFlags, PolylineTypeFlags, QParams3d, QPoint3dList,\r\n SilhouetteEdgeArgs,\r\n} from \"@itwin/core-common\";\r\nimport { ColorMap } from \"./ColorMap\";\r\nimport { DisplayParams } from \"./DisplayParams\";\r\nimport { MeshPointList, MeshPrimitiveType, Point3dList } from \"./MeshPrimitive\";\r\nimport { Triangle, TriangleList } from \"./Primitives\";\r\nimport { VertexKeyProps } from \"./VertexKey\";\r\nimport { MeshArgs } from \"../../../render/MeshArgs\";\r\nimport { PolylineArgs } from \"../../../render/PolylineArgs\";\r\n\r\nexport function createPolylineArgs(mesh: Mesh): PolylineArgs | undefined {\r\n if (!mesh.polylines || mesh.polylines.length === 0)\r\n return undefined;\r\n\r\n const polylines = [];\r\n for (const polyline of mesh.polylines)\r\n if (polyline.indices.length > 0)\r\n polylines.push(polyline.indices);\r\n\r\n if (polylines.length === 0)\r\n return undefined;\r\n\r\n const flags: PolylineFlags = {\r\n is2d: mesh.is2d,\r\n isPlanar: mesh.isPlanar,\r\n isDisjoint: mesh.type === MeshPrimitiveType.Point,\r\n };\r\n\r\n if (mesh.displayParams.regionEdgeType === DisplayParams.RegionEdgeType.Outline) {\r\n // This polyline is behaving as the edges of a region surface.\r\n if (!mesh.displayParams.gradient || mesh.displayParams.gradient.isOutlined)\r\n flags.type = PolylineTypeFlags.Edge;\r\n else\r\n flags.type = PolylineTypeFlags.Outline; // edges only displayed if fill undisplayed\r\n }\r\n\r\n const colors = new ColorIndex();\r\n mesh.colorMap.toColorIndex(colors, mesh.colors);\r\n\r\n const features = new FeatureIndex();\r\n mesh.toFeatureIndex(features);\r\n\r\n return {\r\n width: mesh.displayParams.width,\r\n linePixels: mesh.displayParams.linePixels,\r\n flags,\r\n polylines,\r\n points: mesh.points,\r\n colors,\r\n features,\r\n };\r\n}\r\n\r\n/** The vertices of the edges are shared with those of the surface. */\r\nexport class MeshArgsEdges {\r\n public edges = new EdgeArgs();\r\n public silhouettes = new SilhouetteEdgeArgs();\r\n public polylines = new PolylineEdgeArgs();\r\n public width = 0;\r\n public linePixels = LinePixels.Solid;\r\n\r\n public clear(): void {\r\n this.edges.clear();\r\n this.silhouettes.clear();\r\n this.polylines.clear();\r\n this.width = 0;\r\n this.linePixels = LinePixels.Solid;\r\n }\r\n public get isValid(): boolean { return this.edges.isValid || this.silhouettes.isValid || this.polylines.isValid; }\r\n}\r\n\r\nexport function createMeshArgs(mesh: Mesh): MeshArgs | undefined {\r\n if (!mesh.triangles || mesh.triangles.isEmpty || mesh.points.length === 0)\r\n return undefined;\r\n\r\n const texture = mesh.displayParams.textureMapping?.texture;\r\n const textureMapping = texture && mesh.uvParams.length > 0 ? { texture, uvParams: mesh.uvParams } : undefined;\r\n\r\n const colors = new ColorIndex();\r\n mesh.colorMap.toColorIndex(colors, mesh.colors);\r\n\r\n const features = new FeatureIndex();\r\n mesh.toFeatureIndex(features);\r\n\r\n let edges;\r\n if (mesh.edges) {\r\n edges = new MeshArgsEdges();\r\n edges.width = mesh.displayParams.width;\r\n edges.linePixels = mesh.displayParams.linePixels;\r\n edges.edges.init(mesh.edges);\r\n edges.silhouettes.init(mesh.edges);\r\n\r\n const polylines = [];\r\n for (const meshPolyline of mesh.edges.polylines)\r\n if (meshPolyline.indices.length > 0)\r\n polylines.push(meshPolyline.indices);\r\n\r\n edges.polylines.init(polylines);\r\n }\r\n\r\n return {\r\n vertIndices: mesh.triangles.indices,\r\n points: mesh.points,\r\n normals: !mesh.displayParams.ignoreLighting && mesh.normals.length > 0 ? mesh.normals : undefined,\r\n textureMapping,\r\n colors,\r\n features,\r\n material: mesh.displayParams.material,\r\n fillFlags: mesh.displayParams.fillFlags,\r\n isPlanar: mesh.isPlanar,\r\n is2d: mesh.is2d,\r\n hasBakedLighting: true === mesh.hasBakedLighting,\r\n isVolumeClassifier: true === mesh.isVolumeClassifier,\r\n edges,\r\n auxChannels: mesh.auxChannels,\r\n };\r\n}\r\n\r\nexport class Mesh {\r\n private readonly _data: TriangleList | MeshPolylineList;\r\n public readonly points: MeshPointList;\r\n public readonly normals: OctEncodedNormal[] = [];\r\n public readonly uvParams: Point2d[] = [];\r\n public readonly colorMap: ColorMap = new ColorMap(); // used to be called ColorTable\r\n public colors: number[] = [];\r\n public edges?: MeshEdges;\r\n public readonly features?: Mesh.Features;\r\n public readonly type: MeshPrimitiveType;\r\n public readonly is2d: boolean;\r\n public readonly isPlanar: boolean;\r\n public readonly hasBakedLighting: boolean;\r\n public readonly isVolumeClassifier: boolean;\r\n public displayParams: DisplayParams;\r\n private _auxChannels?: AuxChannel[];\r\n\r\n private constructor(props: Mesh.Props) {\r\n const { displayParams, features, type, range, is2d, isPlanar } = props;\r\n this._data = MeshPrimitiveType.Mesh === type ? new TriangleList() : new MeshPolylineList();\r\n this.displayParams = displayParams;\r\n this.features = features ? new Mesh.Features(features) : undefined;\r\n this.type = type;\r\n this.is2d = is2d;\r\n this.isPlanar = isPlanar;\r\n this.hasBakedLighting = (true === props.hasBakedLighting);\r\n this.isVolumeClassifier = (true === props.isVolumeClassifier);\r\n if (props.quantizePositions) {\r\n this.points = new QPoint3dList(QParams3d.fromRange(range));\r\n } else {\r\n const points = [] as unknown as Point3dList;\r\n points.range = range;\r\n const center = range.center;\r\n points.add = (pt: Point3d) => {\r\n // assert(range.containsPoint(pt)); rounding error triggers this sometimes...\r\n points.push(pt.minus(center));\r\n };\r\n this.points = points;\r\n }\r\n }\r\n\r\n public static create(props: Mesh.Props): Mesh { return new Mesh(props); }\r\n\r\n public get triangles(): TriangleList | undefined {\r\n return MeshPrimitiveType.Mesh === this.type ? this._data as TriangleList : undefined;\r\n }\r\n\r\n public get polylines(): MeshPolylineList | undefined {\r\n return MeshPrimitiveType.Mesh !== this.type ? this._data as MeshPolylineList : undefined;\r\n }\r\n\r\n public get auxChannels(): ReadonlyArray<AuxChannel> | undefined {\r\n return this._auxChannels;\r\n }\r\n\r\n public addAuxChannels(channels: ReadonlyArray<AuxChannel>, srcIndex: number): void {\r\n // The native version of this function appears to assume that all polyfaces added to the Mesh will have\r\n // the same number + type of aux channels.\r\n // ###TODO We should really produce a separate Mesh for each unique combination. For now just bail on mismatch.\r\n if (this._auxChannels) {\r\n if (this._auxChannels.length !== channels.length)\r\n return;\r\n\r\n for (let i = 0; i < channels.length; i++) {\r\n const src = channels[i];\r\n const dst = this._auxChannels[i];\r\n if (src.dataType !== dst.dataType || src.name !== dst.name || src.inputName !== dst.inputName)\r\n return;\r\n }\r\n }\r\n\r\n if (!this._auxChannels) {\r\n // Copy the channels, leaving each AuxData's values array empty.\r\n this._auxChannels = channels.map((x) => new AuxChannel(x.data.map((y) => new AuxChannelData(y.input, [])), x.dataType, x.name, x.inputName));\r\n }\r\n\r\n // Append the value at srcIndex from each source channel's data to our channels.\r\n for (let channelIndex = 0; channelIndex < channels.length; channelIndex++) {\r\n const srcChannel = channels[channelIndex];\r\n const dstChannel = this._auxChannels[channelIndex];\r\n const dstIndex = dstChannel.valueCount;\r\n for (let dataIndex = 0; dataIndex < srcChannel.data.length; dataIndex++) {\r\n const dstData = dstChannel.data[dataIndex];\r\n dstData.copyValues(srcChannel.data[dataIndex], dstIndex, srcIndex, dstChannel.entriesPerValue);\r\n }\r\n }\r\n }\r\n\r\n public toFeatureIndex(index: FeatureIndex): void {\r\n if (undefined !== this.features)\r\n this.features.toFeatureIndex(index);\r\n }\r\n\r\n public toMeshArgs(): MeshArgs | undefined {\r\n return createMeshArgs(this);\r\n }\r\n\r\n public toPolylineArgs(): PolylineArgs | undefined {\r\n return createPolylineArgs(this);\r\n }\r\n\r\n public addPolyline(poly: MeshPolyline): void {\r\n const { type, polylines } = this;\r\n\r\n assert(MeshPrimitiveType.Polyline === type || MeshPrimitiveType.Point === type);\r\n assert(undefined !== polylines);\r\n\r\n if (MeshPrimitiveType.Polyline === type && poly.indices.length < 2)\r\n return;\r\n\r\n if (undefined !== polylines)\r\n polylines.push(poly);\r\n }\r\n\r\n public addTriangle(triangle: Triangle): void {\r\n const { triangles, type } = this;\r\n\r\n assert(MeshPrimitiveType.Mesh === type);\r\n assert(undefined !== triangles);\r\n\r\n if (undefined !== triangles)\r\n triangles.addTriangle(triangle);\r\n }\r\n\r\n public addVertex(props: VertexKeyProps): number {\r\n const { feature, position, normal, uvParam, fillColor } = props;\r\n\r\n this.points.add(position);\r\n\r\n if (undefined !== normal)\r\n this.normals.push(normal);\r\n\r\n if (undefined !== uvParam)\r\n this.uvParams.push(uvParam);\r\n\r\n if (feature) {\r\n assert(undefined !== this.features);\r\n this.features.add(feature, this.points.length);\r\n }\r\n\r\n // Don't allocate color indices until we have non-uniform colors\r\n if (0 === this.colorMap.length) {\r\n this.colorMap.insert(fillColor);\r\n assert(this.colorMap.isUniform);\r\n assert(0 === this.colorMap.indexOf(fillColor));\r\n } else if (!this.colorMap.isUniform || !this.colorMap.hasColor(fillColor)) {\r\n // Back-fill uniform value (index=0) for existing vertices if previously uniform\r\n if (0 === this.colors.length)\r\n this.colors.length = this.points.length - 1;\r\n\r\n this.colors.push(this.colorMap.insert(fillColor));\r\n assert(!this.colorMap.isUniform);\r\n }\r\n\r\n return this.points.length - 1;\r\n }\r\n}\r\n\r\nexport namespace Mesh {\r\n export class Features {\r\n public readonly table: FeatureTable;\r\n public indices: number[] = [];\r\n public uniform = 0;\r\n public initialized = false;\r\n\r\n public constructor(table: FeatureTable) { this.table = table; }\r\n\r\n public add(feat: Feature, numVerts: number): void {\r\n const index = this.table.insert(feat);\r\n if (!this.initialized) {\r\n // First feature - uniform.\r\n this.uniform = index;\r\n this.initialized = true;\r\n } else if (0 < this.indices.length) {\r\n // Already non-uniform\r\n this.indices.push(index);\r\n } else {\r\n // Second feature - back-fill uniform for existing verts\r\n while (this.indices.length < numVerts - 1)\r\n this.indices.push(this.uniform);\r\n\r\n this.indices.push(index);\r\n }\r\n }\r\n\r\n public setIndices(indices: number[]) {\r\n this.indices.length = 0;\r\n this.uniform = 0;\r\n this.initialized = 0 < indices.length;\r\n\r\n assert(0 < indices.length);\r\n if (1 === indices.length)\r\n this.uniform = indices[0];\r\n else if (1 < indices.length)\r\n this.indices = indices;\r\n }\r\n\r\n public toFeatureIndex(output?: FeatureIndex): FeatureIndex {\r\n const index = output ?? new FeatureIndex();\r\n if (!this.initialized) {\r\n index.type = FeatureIndexType.Empty;\r\n } else if (this.indices.length === 0) {\r\n index.type = FeatureIndexType.Uniform;\r\n index.featureID = this.uniform;\r\n } else {\r\n index.type = FeatureIndexType.NonUniform;\r\n index.featureIDs = new Uint32Array(this.indices);\r\n }\r\n\r\n return index;\r\n }\r\n }\r\n\r\n export interface Props {\r\n displayParams: DisplayParams;\r\n features?: FeatureTable;\r\n type: MeshPrimitiveType;\r\n range: Range3d;\r\n quantizePositions: boolean;\r\n is2d: boolean;\r\n isPlanar: boolean;\r\n hasBakedLighting?: boolean;\r\n isVolumeClassifier?: boolean;\r\n }\r\n}\r\n\r\nexport class MeshList extends Array<Mesh> {\r\n public readonly features?: FeatureTable;\r\n public readonly range?: Range3d;\r\n constructor(features?: FeatureTable, range?: Range3d) {\r\n super();\r\n this.features = features;\r\n this.range = range;\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"MeshPrimitives.js","sourceRoot":"","sources":["../../../../../src/common/internal/render/MeshPrimitives.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 Rendering\r\n */\r\n\r\nimport { assert } from \"@itwin/core-bentley\";\r\nimport { AuxChannel, AuxChannelData, Point2d, Point3d, Range3d } from \"@itwin/core-geometry\";\r\nimport {\r\n ColorIndex, EdgeArgs, Feature, FeatureIndex, FeatureIndexType, FeatureTable, LinePixels, MeshEdges, MeshPolyline, MeshPolylineList,\r\n OctEncodedNormal, PolylineEdgeArgs, PolylineFlags, PolylineTypeFlags, QParams3d, QPoint3dList,\r\n SilhouetteEdgeArgs,\r\n} from \"@itwin/core-common\";\r\nimport { ColorMap } from \"./ColorMap\";\r\nimport { DisplayParams } from \"./DisplayParams\";\r\nimport { MeshPointList, MeshPrimitiveType, Point3dList } from \"./MeshPrimitive\";\r\nimport { Triangle, TriangleList } from \"./Primitives\";\r\nimport { VertexKeyProps } from \"./VertexKey\";\r\nimport { MeshArgs } from \"../../../render/MeshArgs\";\r\nimport { PolylineArgs } from \"../../../render/PolylineArgs\";\r\n\r\nexport function createPolylineArgs(mesh: Mesh): PolylineArgs | undefined {\r\n if (!mesh.polylines || mesh.polylines.length === 0)\r\n return undefined;\r\n\r\n const polylines = [];\r\n for (const polyline of mesh.polylines)\r\n if (polyline.indices.length > 0)\r\n polylines.push(polyline.indices);\r\n\r\n if (polylines.length === 0)\r\n return undefined;\r\n\r\n const flags: PolylineFlags = {\r\n is2d: mesh.is2d,\r\n isPlanar: mesh.isPlanar,\r\n isDisjoint: mesh.type === MeshPrimitiveType.Point,\r\n };\r\n\r\n if (mesh.displayParams.regionEdgeType === DisplayParams.RegionEdgeType.Outline) {\r\n // This polyline is behaving as the edges of a region surface.\r\n if (!mesh.displayParams.gradient || mesh.displayParams.gradient.isOutlined)\r\n flags.type = PolylineTypeFlags.Edge;\r\n else\r\n flags.type = PolylineTypeFlags.Outline; // edges only displayed if fill undisplayed\r\n }\r\n\r\n const colors = new ColorIndex();\r\n mesh.colorMap.toColorIndex(colors, mesh.colors);\r\n\r\n const features = new FeatureIndex();\r\n mesh.toFeatureIndex(features);\r\n\r\n return {\r\n width: mesh.displayParams.width,\r\n linePixels: mesh.displayParams.linePixels,\r\n flags,\r\n polylines,\r\n points: mesh.points,\r\n colors,\r\n features,\r\n };\r\n}\r\n\r\n/** The vertices of the edges are shared with those of the surface. */\r\nexport class MeshArgsEdges {\r\n public edges = new EdgeArgs();\r\n public silhouettes = new SilhouetteEdgeArgs();\r\n public polylines = new PolylineEdgeArgs();\r\n public width = 0;\r\n public linePixels = LinePixels.Solid;\r\n\r\n public clear(): void {\r\n this.edges.clear();\r\n this.silhouettes.clear();\r\n this.polylines.clear();\r\n this.width = 0;\r\n this.linePixels = LinePixels.Solid;\r\n }\r\n public get isValid(): boolean { return this.edges.isValid || this.silhouettes.isValid || this.polylines.isValid; }\r\n}\r\n\r\nexport function createMeshArgs(mesh: Mesh): MeshArgs | undefined {\r\n if (!mesh.triangles || mesh.triangles.isEmpty || mesh.points.length === 0)\r\n return undefined;\r\n\r\n const texture = mesh.displayParams.textureMapping?.texture;\r\n const textureMapping = texture && mesh.uvParams.length > 0 ? { texture, uvParams: mesh.uvParams } : undefined;\r\n\r\n const colors = new ColorIndex();\r\n mesh.colorMap.toColorIndex(colors, mesh.colors);\r\n\r\n const features = new FeatureIndex();\r\n mesh.toFeatureIndex(features);\r\n\r\n let edges;\r\n if (mesh.edges) {\r\n edges = new MeshArgsEdges();\r\n edges.width = mesh.displayParams.width;\r\n edges.linePixels = mesh.displayParams.linePixels;\r\n edges.edges.init(mesh.edges);\r\n edges.silhouettes.init(mesh.edges);\r\n\r\n const polylines = [];\r\n for (const meshPolyline of mesh.edges.polylines)\r\n if (meshPolyline.indices.length > 0)\r\n polylines.push(meshPolyline.indices);\r\n\r\n edges.polylines.init(polylines);\r\n }\r\n\r\n return {\r\n vertIndices: mesh.triangles.indices,\r\n points: mesh.points,\r\n normals: !mesh.displayParams.ignoreLighting && mesh.normals.length > 0 ? mesh.normals : undefined,\r\n textureMapping,\r\n colors,\r\n features,\r\n material: mesh.displayParams.material,\r\n fillFlags: mesh.displayParams.fillFlags,\r\n isPlanar: mesh.isPlanar,\r\n is2d: mesh.is2d,\r\n hasBakedLighting: true === mesh.hasBakedLighting,\r\n isVolumeClassifier: true === mesh.isVolumeClassifier,\r\n edges,\r\n auxChannels: mesh.auxChannels,\r\n };\r\n}\r\n\r\nexport class Mesh {\r\n private readonly _data: TriangleList | MeshPolylineList;\r\n public readonly points: MeshPointList;\r\n public readonly normals: OctEncodedNormal[] = [];\r\n public readonly uvParams: Point2d[] = [];\r\n public readonly colorMap: ColorMap = new ColorMap(); // used to be called ColorTable\r\n public colors: number[] = [];\r\n public edges?: MeshEdges;\r\n public readonly features?: Mesh.Features;\r\n public readonly type: MeshPrimitiveType;\r\n public readonly is2d: boolean;\r\n public readonly isPlanar: boolean;\r\n public readonly hasBakedLighting: boolean;\r\n public readonly isVolumeClassifier: boolean;\r\n public displayParams: DisplayParams;\r\n private _auxChannels?: AuxChannel[];\r\n\r\n private constructor(props: Mesh.Props) {\r\n const { displayParams, features, type, range, is2d, isPlanar } = props;\r\n this._data = MeshPrimitiveType.Mesh === type ? new TriangleList() : [];\r\n this.displayParams = displayParams;\r\n this.features = features ? new Mesh.Features(features) : undefined;\r\n this.type = type;\r\n this.is2d = is2d;\r\n this.isPlanar = isPlanar;\r\n this.hasBakedLighting = (true === props.hasBakedLighting);\r\n this.isVolumeClassifier = (true === props.isVolumeClassifier);\r\n if (props.quantizePositions) {\r\n this.points = new QPoint3dList(QParams3d.fromRange(range));\r\n } else {\r\n const points = [] as unknown as Point3dList;\r\n points.range = range;\r\n const center = range.center;\r\n points.add = (pt: Point3d) => {\r\n // assert(range.containsPoint(pt)); rounding error triggers this sometimes...\r\n points.push(pt.minus(center));\r\n };\r\n this.points = points;\r\n }\r\n }\r\n\r\n public static create(props: Mesh.Props): Mesh { return new Mesh(props); }\r\n\r\n public get triangles(): TriangleList | undefined {\r\n return MeshPrimitiveType.Mesh === this.type ? this._data as TriangleList : undefined;\r\n }\r\n\r\n public get polylines(): MeshPolylineList | undefined {\r\n return MeshPrimitiveType.Mesh !== this.type ? this._data as MeshPolylineList : undefined;\r\n }\r\n\r\n public get auxChannels(): ReadonlyArray<AuxChannel> | undefined {\r\n return this._auxChannels;\r\n }\r\n\r\n public addAuxChannels(channels: ReadonlyArray<AuxChannel>, srcIndex: number): void {\r\n // The native version of this function appears to assume that all polyfaces added to the Mesh will have\r\n // the same number + type of aux channels.\r\n // ###TODO We should really produce a separate Mesh for each unique combination. For now just bail on mismatch.\r\n if (this._auxChannels) {\r\n if (this._auxChannels.length !== channels.length)\r\n return;\r\n\r\n for (let i = 0; i < channels.length; i++) {\r\n const src = channels[i];\r\n const dst = this._auxChannels[i];\r\n if (src.dataType !== dst.dataType || src.name !== dst.name || src.inputName !== dst.inputName)\r\n return;\r\n }\r\n }\r\n\r\n if (!this._auxChannels) {\r\n // Copy the channels, leaving each AuxData's values array empty.\r\n this._auxChannels = channels.map((x) => new AuxChannel(x.data.map((y) => new AuxChannelData(y.input, [])), x.dataType, x.name, x.inputName));\r\n }\r\n\r\n // Append the value at srcIndex from each source channel's data to our channels.\r\n for (let channelIndex = 0; channelIndex < channels.length; channelIndex++) {\r\n const srcChannel = channels[channelIndex];\r\n const dstChannel = this._auxChannels[channelIndex];\r\n const dstIndex = dstChannel.valueCount;\r\n for (let dataIndex = 0; dataIndex < srcChannel.data.length; dataIndex++) {\r\n const dstData = dstChannel.data[dataIndex];\r\n dstData.copyValues(srcChannel.data[dataIndex], dstIndex, srcIndex, dstChannel.entriesPerValue);\r\n }\r\n }\r\n }\r\n\r\n public toFeatureIndex(index: FeatureIndex): void {\r\n if (undefined !== this.features)\r\n this.features.toFeatureIndex(index);\r\n }\r\n\r\n public toMeshArgs(): MeshArgs | undefined {\r\n return createMeshArgs(this);\r\n }\r\n\r\n public toPolylineArgs(): PolylineArgs | undefined {\r\n return createPolylineArgs(this);\r\n }\r\n\r\n public addPolyline(poly: MeshPolyline): void {\r\n const { type, polylines } = this;\r\n\r\n assert(MeshPrimitiveType.Polyline === type || MeshPrimitiveType.Point === type);\r\n assert(undefined !== polylines);\r\n\r\n if (MeshPrimitiveType.Polyline === type && poly.indices.length < 2)\r\n return;\r\n\r\n if (undefined !== polylines)\r\n polylines.push(poly);\r\n }\r\n\r\n public addTriangle(triangle: Triangle): void {\r\n const { triangles, type } = this;\r\n\r\n assert(MeshPrimitiveType.Mesh === type);\r\n assert(undefined !== triangles);\r\n\r\n if (undefined !== triangles)\r\n triangles.addTriangle(triangle);\r\n }\r\n\r\n public addVertex(props: VertexKeyProps): number {\r\n const { feature, position, normal, uvParam, fillColor } = props;\r\n\r\n this.points.add(position);\r\n\r\n if (undefined !== normal)\r\n this.normals.push(normal);\r\n\r\n if (undefined !== uvParam)\r\n this.uvParams.push(uvParam);\r\n\r\n if (feature) {\r\n assert(undefined !== this.features);\r\n this.features.add(feature, this.points.length);\r\n }\r\n\r\n // Don't allocate color indices until we have non-uniform colors\r\n if (0 === this.colorMap.length) {\r\n this.colorMap.insert(fillColor);\r\n assert(this.colorMap.isUniform);\r\n assert(0 === this.colorMap.indexOf(fillColor));\r\n } else if (!this.colorMap.isUniform || !this.colorMap.hasColor(fillColor)) {\r\n // Back-fill uniform value (index=0) for existing vertices if previously uniform\r\n if (0 === this.colors.length)\r\n this.colors.length = this.points.length - 1;\r\n\r\n this.colors.push(this.colorMap.insert(fillColor));\r\n assert(!this.colorMap.isUniform);\r\n }\r\n\r\n return this.points.length - 1;\r\n }\r\n}\r\n\r\nexport namespace Mesh {\r\n export class Features {\r\n public readonly table: FeatureTable;\r\n public indices: number[] = [];\r\n public uniform = 0;\r\n public initialized = false;\r\n\r\n public constructor(table: FeatureTable) { this.table = table; }\r\n\r\n public add(feat: Feature, numVerts: number): void {\r\n const index = this.table.insert(feat);\r\n if (!this.initialized) {\r\n // First feature - uniform.\r\n this.uniform = index;\r\n this.initialized = true;\r\n } else if (0 < this.indices.length) {\r\n // Already non-uniform\r\n this.indices.push(index);\r\n } else {\r\n // Second feature - back-fill uniform for existing verts\r\n while (this.indices.length < numVerts - 1)\r\n this.indices.push(this.uniform);\r\n\r\n this.indices.push(index);\r\n }\r\n }\r\n\r\n public setIndices(indices: number[]) {\r\n this.indices.length = 0;\r\n this.uniform = 0;\r\n this.initialized = 0 < indices.length;\r\n\r\n assert(0 < indices.length);\r\n if (1 === indices.length)\r\n this.uniform = indices[0];\r\n else if (1 < indices.length)\r\n this.indices = indices;\r\n }\r\n\r\n public toFeatureIndex(output?: FeatureIndex): FeatureIndex {\r\n const index = output ?? new FeatureIndex();\r\n if (!this.initialized) {\r\n index.type = FeatureIndexType.Empty;\r\n } else if (this.indices.length === 0) {\r\n index.type = FeatureIndexType.Uniform;\r\n index.featureID = this.uniform;\r\n } else {\r\n index.type = FeatureIndexType.NonUniform;\r\n index.featureIDs = new Uint32Array(this.indices);\r\n }\r\n\r\n return index;\r\n }\r\n }\r\n\r\n export interface Props {\r\n displayParams: DisplayParams;\r\n features?: FeatureTable;\r\n type: MeshPrimitiveType;\r\n range: Range3d;\r\n quantizePositions: boolean;\r\n is2d: boolean;\r\n isPlanar: boolean;\r\n hasBakedLighting?: boolean;\r\n isVolumeClassifier?: boolean;\r\n }\r\n}\r\n\r\nexport class MeshList extends Array<Mesh> {\r\n public readonly features?: FeatureTable;\r\n public readonly range?: Range3d;\r\n constructor(features?: FeatureTable, range?: Range3d) {\r\n super();\r\n this.features = features;\r\n this.range = range;\r\n }\r\n}\r\n"]}
@@ -15,6 +15,7 @@ import { _accumulator, _implementationProhibited } from "../../common/internal/S
15
15
  import { createGraphicTemplate } from "../../render/GraphicTemplate";
16
16
  /** @internal */
17
17
  export class PrimitiveBuilder extends GraphicBuilder {
18
+ static { _a = _implementationProhibited; }
18
19
  constructor(system, options) {
19
20
  super(options);
20
21
  this[_a] = undefined;
@@ -179,5 +180,4 @@ export class PrimitiveBuilder extends GraphicBuilder {
179
180
  });
180
181
  }
181
182
  }
182
- _a = _implementationProhibited;
183
183
  //# sourceMappingURL=PrimitiveBuilder.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"PrimitiveBuilder.js","sourceRoot":"","sources":["../../../../src/internal/render/PrimitiveBuilder.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 Rendering\r\n */\r\n\r\nimport { Point3d, Range3d, Transform } from \"@itwin/core-geometry\";\r\nimport { Gradient, PackedFeatureTable, QPoint3dList, RenderTexture } from \"@itwin/core-common\";\r\nimport { CustomGraphicBuilderOptions, GraphicBuilder, ViewportGraphicBuilderOptions } from \"../../render/GraphicBuilder\";\r\nimport { RenderGraphic } from \"../../render/RenderGraphic\";\r\nimport { RenderSystem } from \"../../render/RenderSystem\";\r\nimport { GeometryOptions } from \"../../common/internal/render/Primitives\";\r\nimport { GeometryAccumulator } from \"../../common/internal/render/GeometryAccumulator\";\r\nimport { MeshList } from \"../../common/internal/render/MeshPrimitives\";\r\nimport { GraphicBranch } from \"../../render/GraphicBranch\";\r\nimport { assert } from \"@itwin/core-bentley\";\r\nimport { _accumulator, _implementationProhibited } from \"../../common/internal/Symbols\";\r\nimport { createGraphicTemplate, GraphicTemplate, GraphicTemplateBatch } from \"../../render/GraphicTemplate\";\r\nimport { RenderGeometry } from \"./RenderGeometry\";\r\n\r\n/** @internal */\r\nexport class PrimitiveBuilder extends GraphicBuilder {\r\n public readonly [_implementationProhibited] = undefined;\r\n public readonly system: RenderSystem;\r\n public primitives: RenderGraphic[] = [];\r\n private readonly _options: CustomGraphicBuilderOptions | ViewportGraphicBuilderOptions;\r\n private readonly _viewIndependentOrigin?: Point3d;\r\n\r\n public constructor(system: RenderSystem, options: ViewportGraphicBuilderOptions | CustomGraphicBuilderOptions) {\r\n super(options);\r\n this.system = system;\r\n this._options = options;\r\n this._viewIndependentOrigin = options.viewIndependentOrigin?.clone();\r\n }\r\n\r\n public override finish(): RenderGraphic {\r\n const template = this.toTemplate(false);\r\n const graphic = this.system.createGraphicFromTemplate({ template });\r\n return graphic ?? this.system.createGraphicList([]);\r\n }\r\n\r\n public override finishTemplate(): GraphicTemplate {\r\n return this.toTemplate(true);\r\n }\r\n\r\n private toTemplate(noDispose: boolean): GraphicTemplate {\r\n const accum = this[_accumulator];\r\n const tolerance = this.computeTolerance(accum);\r\n const result = this.saveToTemplate(this, tolerance, this.pickable, noDispose);\r\n accum.clear();\r\n\r\n return result ?? createGraphicTemplate({ nodes: [], noDispose });\r\n }\r\n\r\n public computeTolerance(accum: GeometryAccumulator): number {\r\n return this._computeChordTolerance({\r\n graphic: this,\r\n computeRange: () => accum.geometries.computeRange(),\r\n });\r\n }\r\n\r\n protected override resolveGradient(gradient: Gradient.Symb): RenderTexture | undefined {\r\n return this.system.getGradientTexture(gradient, this.iModel);\r\n }\r\n\r\n /**\r\n * Populate a list of Graphic objects from the accumulated Geometry objects.\r\n * removed ViewContext\r\n */\r\n public saveToGraphicList(graphics: RenderGraphic[], options: GeometryOptions, tolerance: number, pickable: { isVolumeClassifier?: boolean, modelId?: string } | undefined): MeshList | undefined {\r\n const meshes = this[_accumulator].toMeshes(options, tolerance, pickable);\r\n if (0 === meshes.length)\r\n return undefined;\r\n\r\n // If the meshes contain quantized positions, they are all quantized to the same range. If that range is small relative to the distance\r\n // from the origin, quantization errors can produce display artifacts. Remove the translation from the quantization parameters and apply\r\n // it in the transform instead.\r\n //\r\n // If the positions are not quantized, they have already been transformed to be relative to the center of the meshes' range.\r\n // Apply the inverse translation to put them back into model space.\r\n const branch = new GraphicBranch(true);\r\n let transformOrigin: Point3d | undefined;\r\n let meshesRangeOffset = false;\r\n\r\n for (const mesh of meshes) {\r\n const verts = mesh.points;\r\n if (branch.isEmpty) {\r\n if (verts instanceof QPoint3dList) {\r\n transformOrigin = verts.params.origin.clone();\r\n verts.params.origin.setZero();\r\n } else {\r\n transformOrigin = verts.range.center;\r\n // In this case we need to modify the qOrigin of the graphic that will get created later since we have translated the origin.\r\n // We can't modify it directly, but if we temporarily modify the range of the mesh used to create it the qOrigin will get created properly.\r\n // Range is shared (not cloned) by all meshes and the mesh list itself, so modifying the range of the meshlist will modify it for all meshes.\r\n // We will then later add this offset back to the range once all of the graphics have been created because it is needed unmodified for locate.\r\n if (!meshesRangeOffset) {\r\n meshes.range?.low.subtractInPlace(transformOrigin);\r\n meshes.range?.high.subtractInPlace(transformOrigin);\r\n meshesRangeOffset = true;\r\n }\r\n }\r\n } else {\r\n assert(undefined !== transformOrigin);\r\n if (verts instanceof QPoint3dList) {\r\n assert(transformOrigin.isAlmostEqual(verts.params.origin));\r\n verts.params.origin.setZero();\r\n } else {\r\n assert(verts.range.center.isAlmostZero);\r\n }\r\n }\r\n\r\n const graphic = this.system.createMeshGraphics(mesh, this._viewIndependentOrigin);\r\n if (graphic)\r\n branch.add(graphic);\r\n }\r\n\r\n if (!branch.isEmpty) {\r\n assert(undefined !== transformOrigin);\r\n const transform = Transform.createTranslation(transformOrigin);\r\n graphics.push(this.system.createBranch(branch, transform));\r\n if (meshesRangeOffset) { // restore the meshes range that we modified earlier.\r\n meshes.range?.low.addInPlace(transformOrigin);\r\n meshes.range?.high.addInPlace(transformOrigin);\r\n }\r\n }\r\n\r\n return meshes;\r\n }\r\n\r\n private saveToTemplate(options: GeometryOptions, tolerance: number, pickable: { isVolumeClassifier?: boolean, modelId?: string } | undefined, noDispose: boolean): GraphicTemplate | undefined {\r\n const meshes = this[_accumulator].toMeshes(options, tolerance, pickable);\r\n if (0 === meshes.length)\r\n return undefined;\r\n\r\n // If the meshes contain quantized positions, they are all quantized to the same range. If that range is small relative to the distance\r\n // from the origin, quantization errors can produce display artifacts. Remove the translation from the quantization parameters and apply\r\n // it in the transform instead.\r\n //\r\n // If the positions are not quantized, they have already been transformed to be relative to the center of the meshes' range.\r\n // Apply the inverse translation to put them back into model space.\r\n let transformOrigin: Point3d | undefined;\r\n let meshesRangeOffset = false;\r\n const geometry: RenderGeometry[] = [];\r\n\r\n for (const mesh of meshes) {\r\n const verts = mesh.points;\r\n if (!transformOrigin){\r\n if (verts instanceof QPoint3dList) {\r\n transformOrigin = verts.params.origin.clone();\r\n verts.params.origin.setZero();\r\n } else {\r\n transformOrigin = verts.range.center;\r\n // In this case we need to modify the qOrigin of the graphic that will get created later since we have translated the origin.\r\n // We can't modify it directly, but if we temporarily modify the range of the mesh used to create it the qOrigin will get created properly.\r\n // Range is shared (not cloned) by all meshes and the mesh list itself, so modifying the range of the meshlist will modify it for all meshes.\r\n // We will then later add this offset back to the range once all of the graphics have been created because it is needed unmodified for locate.\r\n if (!meshesRangeOffset) {\r\n meshes.range?.low.subtractInPlace(transformOrigin);\r\n meshes.range?.high.subtractInPlace(transformOrigin);\r\n meshesRangeOffset = true;\r\n }\r\n }\r\n } else {\r\n if (verts instanceof QPoint3dList) {\r\n assert(transformOrigin.isAlmostEqual(verts.params.origin));\r\n verts.params.origin.setZero();\r\n } else {\r\n assert(verts.range.center.isAlmostZero);\r\n }\r\n }\r\n\r\n const geom = this.system.createGeometryFromMesh(mesh, this._viewIndependentOrigin);\r\n if (geom) {\r\n geometry.push(geom);\r\n }\r\n }\r\n\r\n let transform;\r\n if (transformOrigin) {\r\n transform = Transform.createTranslation(transformOrigin);\r\n if (meshesRangeOffset) { // restore the meshes range that we modified earlier.\r\n meshes.range?.low.addInPlace(transformOrigin);\r\n meshes.range?.high.addInPlace(transformOrigin);\r\n }\r\n }\r\n\r\n let batch: GraphicTemplateBatch | undefined;\r\n if (meshes.features?.anyDefined) {\r\n batch = {\r\n featureTable: PackedFeatureTable.pack(meshes.features),\r\n range: meshes.range ?? new Range3d(),\r\n options: this._options.pickable,\r\n };\r\n }\r\n\r\n return createGraphicTemplate({\r\n batch,\r\n nodes: [{ geometry, transform }],\r\n noDispose,\r\n });\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"PrimitiveBuilder.js","sourceRoot":"","sources":["../../../../src/internal/render/PrimitiveBuilder.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 Rendering\r\n */\r\n\r\nimport { Point3d, Range3d, Transform } from \"@itwin/core-geometry\";\r\nimport { Gradient, PackedFeatureTable, QPoint3dList, RenderTexture } from \"@itwin/core-common\";\r\nimport { CustomGraphicBuilderOptions, GraphicBuilder, ViewportGraphicBuilderOptions } from \"../../render/GraphicBuilder\";\r\nimport { RenderGraphic } from \"../../render/RenderGraphic\";\r\nimport { RenderSystem } from \"../../render/RenderSystem\";\r\nimport { GeometryOptions } from \"../../common/internal/render/Primitives\";\r\nimport { GeometryAccumulator } from \"../../common/internal/render/GeometryAccumulator\";\r\nimport { MeshList } from \"../../common/internal/render/MeshPrimitives\";\r\nimport { GraphicBranch } from \"../../render/GraphicBranch\";\r\nimport { assert } from \"@itwin/core-bentley\";\r\nimport { _accumulator, _implementationProhibited } from \"../../common/internal/Symbols\";\r\nimport { createGraphicTemplate, GraphicTemplate, GraphicTemplateBatch } from \"../../render/GraphicTemplate\";\r\nimport { RenderGeometry } from \"./RenderGeometry\";\r\n\r\n/** @internal */\r\nexport class PrimitiveBuilder extends GraphicBuilder {\r\n public readonly [_implementationProhibited] = undefined;\r\n public readonly system: RenderSystem;\r\n public primitives: RenderGraphic[] = [];\r\n private readonly _options: CustomGraphicBuilderOptions | ViewportGraphicBuilderOptions;\r\n private readonly _viewIndependentOrigin?: Point3d;\r\n\r\n public constructor(system: RenderSystem, options: ViewportGraphicBuilderOptions | CustomGraphicBuilderOptions) {\r\n super(options);\r\n this.system = system;\r\n this._options = options;\r\n this._viewIndependentOrigin = options.viewIndependentOrigin?.clone();\r\n }\r\n\r\n public override finish(): RenderGraphic {\r\n const template = this.toTemplate(false);\r\n const graphic = this.system.createGraphicFromTemplate({ template });\r\n return graphic ?? this.system.createGraphicList([]);\r\n }\r\n\r\n public override finishTemplate(): GraphicTemplate {\r\n return this.toTemplate(true);\r\n }\r\n\r\n private toTemplate(noDispose: boolean): GraphicTemplate {\r\n const accum = this[_accumulator];\r\n const tolerance = this.computeTolerance(accum);\r\n const result = this.saveToTemplate(this, tolerance, this.pickable, noDispose);\r\n accum.clear();\r\n\r\n return result ?? createGraphicTemplate({ nodes: [], noDispose });\r\n }\r\n\r\n public computeTolerance(accum: GeometryAccumulator): number {\r\n return this._computeChordTolerance({\r\n graphic: this,\r\n computeRange: () => accum.geometries.computeRange(),\r\n });\r\n }\r\n\r\n protected override resolveGradient(gradient: Gradient.Symb): RenderTexture | undefined {\r\n return this.system.getGradientTexture(gradient, this.iModel);\r\n }\r\n\r\n /**\r\n * Populate a list of Graphic objects from the accumulated Geometry objects.\r\n * removed ViewContext\r\n */\r\n public saveToGraphicList(graphics: RenderGraphic[], options: GeometryOptions, tolerance: number, pickable: { isVolumeClassifier?: boolean, modelId?: string } | undefined): MeshList | undefined {\r\n const meshes = this[_accumulator].toMeshes(options, tolerance, pickable);\r\n if (0 === meshes.length)\r\n return undefined;\r\n\r\n // If the meshes contain quantized positions, they are all quantized to the same range. If that range is small relative to the distance\r\n // from the origin, quantization errors can produce display artifacts. Remove the translation from the quantization parameters and apply\r\n // it in the transform instead.\r\n //\r\n // If the positions are not quantized, they have already been transformed to be relative to the center of the meshes' range.\r\n // Apply the inverse translation to put them back into model space.\r\n const branch = new GraphicBranch(true);\r\n let transformOrigin: Point3d | undefined;\r\n let meshesRangeOffset = false;\r\n\r\n for (const mesh of meshes) {\r\n const verts = mesh.points;\r\n if (branch.isEmpty) {\r\n if (verts instanceof QPoint3dList) {\r\n transformOrigin = verts.params.origin.clone();\r\n verts.params.origin.setZero();\r\n } else {\r\n transformOrigin = verts.range.center;\r\n // In this case we need to modify the qOrigin of the graphic that will get created later since we have translated the origin.\r\n // We can't modify it directly, but if we temporarily modify the range of the mesh used to create it the qOrigin will get created properly.\r\n // Range is shared (not cloned) by all meshes and the mesh list itself, so modifying the range of the meshlist will modify it for all meshes.\r\n // We will then later add this offset back to the range once all of the graphics have been created because it is needed unmodified for locate.\r\n if (!meshesRangeOffset) {\r\n meshes.range?.low.subtractInPlace(transformOrigin);\r\n meshes.range?.high.subtractInPlace(transformOrigin);\r\n meshesRangeOffset = true;\r\n }\r\n }\r\n } else {\r\n assert(undefined !== transformOrigin);\r\n if (verts instanceof QPoint3dList) {\r\n assert(transformOrigin.isAlmostEqual(verts.params.origin));\r\n verts.params.origin.setZero();\r\n } else {\r\n assert(verts.range.center.isAlmostZero);\r\n }\r\n }\r\n\r\n const graphic = this.system.createMeshGraphics(mesh, this._viewIndependentOrigin);\r\n if (graphic)\r\n branch.add(graphic);\r\n }\r\n\r\n if (!branch.isEmpty) {\r\n assert(undefined !== transformOrigin);\r\n const transform = Transform.createTranslation(transformOrigin);\r\n graphics.push(this.system.createBranch(branch, transform));\r\n if (meshesRangeOffset) { // restore the meshes range that we modified earlier.\r\n meshes.range?.low.addInPlace(transformOrigin);\r\n meshes.range?.high.addInPlace(transformOrigin);\r\n }\r\n }\r\n\r\n return meshes;\r\n }\r\n\r\n private saveToTemplate(options: GeometryOptions, tolerance: number, pickable: { isVolumeClassifier?: boolean, modelId?: string } | undefined, noDispose: boolean): GraphicTemplate | undefined {\r\n const meshes = this[_accumulator].toMeshes(options, tolerance, pickable);\r\n if (0 === meshes.length)\r\n return undefined;\r\n\r\n // If the meshes contain quantized positions, they are all quantized to the same range. If that range is small relative to the distance\r\n // from the origin, quantization errors can produce display artifacts. Remove the translation from the quantization parameters and apply\r\n // it in the transform instead.\r\n //\r\n // If the positions are not quantized, they have already been transformed to be relative to the center of the meshes' range.\r\n // Apply the inverse translation to put them back into model space.\r\n let transformOrigin: Point3d | undefined;\r\n let meshesRangeOffset = false;\r\n const geometry: RenderGeometry[] = [];\r\n\r\n for (const mesh of meshes) {\r\n const verts = mesh.points;\r\n if (!transformOrigin){\r\n if (verts instanceof QPoint3dList) {\r\n transformOrigin = verts.params.origin.clone();\r\n verts.params.origin.setZero();\r\n } else {\r\n transformOrigin = verts.range.center;\r\n // In this case we need to modify the qOrigin of the graphic that will get created later since we have translated the origin.\r\n // We can't modify it directly, but if we temporarily modify the range of the mesh used to create it the qOrigin will get created properly.\r\n // Range is shared (not cloned) by all meshes and the mesh list itself, so modifying the range of the meshlist will modify it for all meshes.\r\n // We will then later add this offset back to the range once all of the graphics have been created because it is needed unmodified for locate.\r\n if (!meshesRangeOffset) {\r\n meshes.range?.low.subtractInPlace(transformOrigin);\r\n meshes.range?.high.subtractInPlace(transformOrigin);\r\n meshesRangeOffset = true;\r\n }\r\n }\r\n } else {\r\n if (verts instanceof QPoint3dList) {\r\n assert(transformOrigin.isAlmostEqual(verts.params.origin));\r\n verts.params.origin.setZero();\r\n } else {\r\n assert(verts.range.center.isAlmostZero);\r\n }\r\n }\r\n\r\n const geom = this.system.createGeometryFromMesh(mesh, this._viewIndependentOrigin);\r\n if (geom) {\r\n geometry.push(geom);\r\n }\r\n }\r\n\r\n let transform;\r\n if (transformOrigin) {\r\n transform = Transform.createTranslation(transformOrigin);\r\n if (meshesRangeOffset) { // restore the meshes range that we modified earlier.\r\n meshes.range?.low.addInPlace(transformOrigin);\r\n meshes.range?.high.addInPlace(transformOrigin);\r\n }\r\n }\r\n\r\n let batch: GraphicTemplateBatch | undefined;\r\n if (meshes.features?.anyDefined) {\r\n batch = {\r\n featureTable: PackedFeatureTable.pack(meshes.features),\r\n range: meshes.range ?? new Range3d(),\r\n options: this._options.pickable,\r\n };\r\n }\r\n\r\n return createGraphicTemplate({\r\n batch,\r\n nodes: [{ geometry, transform }],\r\n noDispose,\r\n });\r\n }\r\n}\r\n"]}
@@ -11,6 +11,7 @@ import { InstancedGraphicProps } from "../../common/render/InstancedGraphicParam
11
11
  import { InstancedGraphicPropsBuilder } from "../../common/internal/render/InstancedGraphicPropsBuilder";
12
12
  import { FeatureTable, PackedFeatureTable } from "@itwin/core-common";
13
13
  class Builder {
14
+ static { _a = _implementationProhibited; }
14
15
  constructor(modelId) {
15
16
  this[_a] = undefined;
16
17
  this._instances = new InstancedGraphicPropsBuilder();
@@ -48,7 +49,6 @@ class Builder {
48
49
  return result;
49
50
  }
50
51
  }
51
- _a = _implementationProhibited;
52
52
  export function createRenderInstancesParamsBuilder(args) {
53
53
  return new Builder(args.modelId);
54
54
  }
@@ -1 +1 @@
1
- {"version":3,"file":"RenderInstancesParamsImpl.js","sourceRoot":"","sources":["../../../../src/internal/render/RenderInstancesParamsImpl.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F;;GAEG;;AAGH,OAAO,EAAE,yBAAyB,EAAE,MAAM,+BAA+B,CAAC;AAC1E,OAAO,EAAE,qBAAqB,EAAE,MAAM,4CAA4C,CAAC;AAEnF,OAAO,EAAE,4BAA4B,EAAE,MAAM,2DAA2D,CAAC;AACzG,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAkBtE,MAAM,OAAO;IAMX,YAAmB,OAAoB;QALvB,QAA2B,GAAG,SAAS,CAAC;QACvC,eAAU,GAAG,IAAI,4BAA4B,EAAE,CAAC;QAEzD,sBAAiB,GAAG,KAAK,CAAC;QAGhC,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;IAC1B,CAAC;IAEM,GAAG,CAAC,QAAkB;QAC3B,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAE9B,IAAI,SAAS,KAAK,QAAQ,CAAC,OAAO,EAAE,CAAC;YACnC,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;QAChC,CAAC;IACH,CAAC;IAEM,MAAM;QACX,MAAM,YAAY,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;QAC5C,IAAI,YAAY,KAAK,CAAC,EAAE,CAAC;YACvB,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;QAC1C,CAAC;QAED,IAAI,YAAY,CAAC;QACjB,IAAI,IAAI,CAAC,iBAAiB,EAAE,CAAC;YAC3B,YAAY,GAAG,IAAI,YAAY,CAAC,YAAY,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC/D,CAAC;QAED,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;QACvD,MAAM,MAAM,GAA8B;YACxC,CAAC,yBAAyB,CAAC,EAAE,uBAAuB;YACpD,SAAS;SACV,CAAC;QAEF,IAAI,YAAY,EAAE,CAAC;YACjB,MAAM,WAAW,GAAG,kBAAkB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YAC1D,MAAM,CAAC,QAAQ,GAAG;gBAChB,IAAI,EAAE,WAAW,CAAC,IAAI;gBACtB,OAAO,EAAE,WAAW,CAAC,YAAY;gBACjC,KAAK,EAAE,WAAW,CAAC,WAAW;aAC/B,CAAC;QACJ,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;CACF;KA7CkB,yBAAyB;AA+C5C,MAAM,UAAU,kCAAkC,CAAC,IAA4C;IAC7F,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACnC,CAAC;AAED,MAAM,UAAU,yCAAyC,CAAC,KAAwB,EAAE,QAA+B;IACjH,MAAM,MAAM,GAAG,QAAqC,CAAC;IACrD,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;QACrB,qBAAqB,CAAC,oBAAoB,CAAC,KAAK,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC;IACtE,CAAC;IAED,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;QACpB,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACzC,CAAC;AACH,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module Rendering\r\n */\r\n\r\nimport { Id64String } from \"@itwin/core-bentley\";\r\nimport { _implementationProhibited } from \"../../common/internal/Symbols\";\r\nimport { InstancedGraphicProps } from \"../../common/render/InstancedGraphicParams\";\r\nimport { CreateRenderInstancesParamsBuilderArgs, Instance, RenderInstancesParams, RenderInstancesParamsBuilder } from \"../../common/render/RenderInstancesParams\";\r\nimport { InstancedGraphicPropsBuilder } from \"../../common/internal/render/InstancedGraphicPropsBuilder\";\r\nimport { FeatureTable, PackedFeatureTable } from \"@itwin/core-common\";\r\n\r\n/** Intermediate representation of `RenderInstances[_batch]`. */\r\nexport interface InstancedFeaturesParams {\r\n modelId: Id64String;\r\n data: Uint32Array;\r\n count: number;\r\n}\r\n\r\n/** This exists so that [[RenderInstancesParams]] can be an opaque type that can be copied between Workers.\r\n * (`Symbol`s are dropped during structured cloning).\r\n */\r\nexport interface RenderInstancesParamsImpl extends RenderInstancesParams {\r\n [_implementationProhibited]: \"renderInstancesParams\";\r\n instances: InstancedGraphicProps;\r\n features?: InstancedFeaturesParams;\r\n}\r\n\r\nclass Builder implements RenderInstancesParamsBuilder {\r\n public readonly [_implementationProhibited] = undefined;\r\n private readonly _instances = new InstancedGraphicPropsBuilder();\r\n private readonly _modelId?: Id64String;\r\n private _containsFeatures = false;\r\n\r\n public constructor(modelId?: Id64String) {\r\n this._modelId = modelId;\r\n }\r\n\r\n public add(instance: Instance): void {\r\n this._instances.add(instance);\r\n\r\n if (undefined !== instance.feature) {\r\n this._containsFeatures = true;\r\n }\r\n }\r\n\r\n public finish(): RenderInstancesParams {\r\n const numInstances = this._instances.length;\r\n if (numInstances === 0) {\r\n throw new Error(\"No instances defined\");\r\n }\r\n\r\n let featureTable;\r\n if (this._containsFeatures) {\r\n featureTable = new FeatureTable(numInstances, this._modelId);\r\n }\r\n\r\n const instances = this._instances.finish(featureTable);\r\n const result: RenderInstancesParamsImpl = {\r\n [_implementationProhibited]: \"renderInstancesParams\",\r\n instances,\r\n };\r\n\r\n if (featureTable) {\r\n const packedTable = PackedFeatureTable.pack(featureTable);\r\n result.features = {\r\n data: packedTable.data,\r\n modelId: packedTable.batchModelId,\r\n count: packedTable.numFeatures,\r\n };\r\n }\r\n\r\n return result;\r\n }\r\n}\r\n\r\nexport function createRenderInstancesParamsBuilder(args: CreateRenderInstancesParamsBuilderArgs): RenderInstancesParamsBuilder {\r\n return new Builder(args.modelId);\r\n}\r\n\r\nexport function collectRenderInstancesParamsTransferables(xfers: Set<Transferable>, inParams: RenderInstancesParams): void {\r\n const params = inParams as RenderInstancesParamsImpl;\r\n if (params.instances) {\r\n InstancedGraphicProps.collectTransferables(xfers, params.instances);\r\n }\r\n\r\n if (params.features) {\r\n xfers.add(params.features.data.buffer);\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"RenderInstancesParamsImpl.js","sourceRoot":"","sources":["../../../../src/internal/render/RenderInstancesParamsImpl.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F;;GAEG;;AAGH,OAAO,EAAE,yBAAyB,EAAE,MAAM,+BAA+B,CAAC;AAC1E,OAAO,EAAE,qBAAqB,EAAE,MAAM,4CAA4C,CAAC;AAEnF,OAAO,EAAE,4BAA4B,EAAE,MAAM,2DAA2D,CAAC;AACzG,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAkBtE,MAAM,OAAO;kBACM,yBAAyB;IAK1C,YAAmB,OAAoB;QALvB,QAA2B,GAAG,SAAS,CAAC;QACvC,eAAU,GAAG,IAAI,4BAA4B,EAAE,CAAC;QAEzD,sBAAiB,GAAG,KAAK,CAAC;QAGhC,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;IAC1B,CAAC;IAEM,GAAG,CAAC,QAAkB;QAC3B,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAE9B,IAAI,SAAS,KAAK,QAAQ,CAAC,OAAO,EAAE,CAAC;YACnC,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;QAChC,CAAC;IACH,CAAC;IAEM,MAAM;QACX,MAAM,YAAY,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;QAC5C,IAAI,YAAY,KAAK,CAAC,EAAE,CAAC;YACvB,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;QAC1C,CAAC;QAED,IAAI,YAAY,CAAC;QACjB,IAAI,IAAI,CAAC,iBAAiB,EAAE,CAAC;YAC3B,YAAY,GAAG,IAAI,YAAY,CAAC,YAAY,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC/D,CAAC;QAED,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;QACvD,MAAM,MAAM,GAA8B;YACxC,CAAC,yBAAyB,CAAC,EAAE,uBAAuB;YACpD,SAAS;SACV,CAAC;QAEF,IAAI,YAAY,EAAE,CAAC;YACjB,MAAM,WAAW,GAAG,kBAAkB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YAC1D,MAAM,CAAC,QAAQ,GAAG;gBAChB,IAAI,EAAE,WAAW,CAAC,IAAI;gBACtB,OAAO,EAAE,WAAW,CAAC,YAAY;gBACjC,KAAK,EAAE,WAAW,CAAC,WAAW;aAC/B,CAAC;QACJ,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;CACF;AAED,MAAM,UAAU,kCAAkC,CAAC,IAA4C;IAC7F,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACnC,CAAC;AAED,MAAM,UAAU,yCAAyC,CAAC,KAAwB,EAAE,QAA+B;IACjH,MAAM,MAAM,GAAG,QAAqC,CAAC;IACrD,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;QACrB,qBAAqB,CAAC,oBAAoB,CAAC,KAAK,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC;IACtE,CAAC;IAED,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;QACpB,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACzC,CAAC;AACH,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module Rendering\r\n */\r\n\r\nimport { Id64String } from \"@itwin/core-bentley\";\r\nimport { _implementationProhibited } from \"../../common/internal/Symbols\";\r\nimport { InstancedGraphicProps } from \"../../common/render/InstancedGraphicParams\";\r\nimport { CreateRenderInstancesParamsBuilderArgs, Instance, RenderInstancesParams, RenderInstancesParamsBuilder } from \"../../common/render/RenderInstancesParams\";\r\nimport { InstancedGraphicPropsBuilder } from \"../../common/internal/render/InstancedGraphicPropsBuilder\";\r\nimport { FeatureTable, PackedFeatureTable } from \"@itwin/core-common\";\r\n\r\n/** Intermediate representation of `RenderInstances[_batch]`. */\r\nexport interface InstancedFeaturesParams {\r\n modelId: Id64String;\r\n data: Uint32Array;\r\n count: number;\r\n}\r\n\r\n/** This exists so that [[RenderInstancesParams]] can be an opaque type that can be copied between Workers.\r\n * (`Symbol`s are dropped during structured cloning).\r\n */\r\nexport interface RenderInstancesParamsImpl extends RenderInstancesParams {\r\n [_implementationProhibited]: \"renderInstancesParams\";\r\n instances: InstancedGraphicProps;\r\n features?: InstancedFeaturesParams;\r\n}\r\n\r\nclass Builder implements RenderInstancesParamsBuilder {\r\n public readonly [_implementationProhibited] = undefined;\r\n private readonly _instances = new InstancedGraphicPropsBuilder();\r\n private readonly _modelId?: Id64String;\r\n private _containsFeatures = false;\r\n\r\n public constructor(modelId?: Id64String) {\r\n this._modelId = modelId;\r\n }\r\n\r\n public add(instance: Instance): void {\r\n this._instances.add(instance);\r\n\r\n if (undefined !== instance.feature) {\r\n this._containsFeatures = true;\r\n }\r\n }\r\n\r\n public finish(): RenderInstancesParams {\r\n const numInstances = this._instances.length;\r\n if (numInstances === 0) {\r\n throw new Error(\"No instances defined\");\r\n }\r\n\r\n let featureTable;\r\n if (this._containsFeatures) {\r\n featureTable = new FeatureTable(numInstances, this._modelId);\r\n }\r\n\r\n const instances = this._instances.finish(featureTable);\r\n const result: RenderInstancesParamsImpl = {\r\n [_implementationProhibited]: \"renderInstancesParams\",\r\n instances,\r\n };\r\n\r\n if (featureTable) {\r\n const packedTable = PackedFeatureTable.pack(featureTable);\r\n result.features = {\r\n data: packedTable.data,\r\n modelId: packedTable.batchModelId,\r\n count: packedTable.numFeatures,\r\n };\r\n }\r\n\r\n return result;\r\n }\r\n}\r\n\r\nexport function createRenderInstancesParamsBuilder(args: CreateRenderInstancesParamsBuilderArgs): RenderInstancesParamsBuilder {\r\n return new Builder(args.modelId);\r\n}\r\n\r\nexport function collectRenderInstancesParamsTransferables(xfers: Set<Transferable>, inParams: RenderInstancesParams): void {\r\n const params = inParams as RenderInstancesParamsImpl;\r\n if (params.instances) {\r\n InstancedGraphicProps.collectTransferables(xfers, params.instances);\r\n }\r\n\r\n if (params.features) {\r\n xfers.add(params.features.data.buffer);\r\n }\r\n}\r\n"]}
@@ -32,6 +32,7 @@ export var MockRender;
32
32
  var _a, _b;
33
33
  /** @internal */
34
34
  class Target extends RenderTarget {
35
+ static { _a = _implementationProhibited; }
35
36
  constructor(_system) {
36
37
  super();
37
38
  this._system = _system;
@@ -51,7 +52,6 @@ export var MockRender;
51
52
  get screenSpaceEffects() { return []; }
52
53
  set screenSpaceEffects(_effects) { }
53
54
  }
54
- _a = _implementationProhibited;
55
55
  MockRender.Target = Target;
56
56
  /** @internal */
57
57
  class OnScreenTarget extends Target {
@@ -139,10 +139,10 @@ export var MockRender;
139
139
  constructor() {
140
140
  this[_b] = "renderAreaPattern";
141
141
  }
142
+ static { _b = _implementationProhibited; }
142
143
  dispose() { }
143
144
  collectStatistics() { }
144
145
  }
145
- _b = _implementationProhibited;
146
146
  MockRender.AreaPattern = AreaPattern;
147
147
  class System extends RenderSystem {
148
148
  get isValid() { return true; }
@@ -184,6 +184,7 @@ export var MockRender;
184
184
  MockRender.System = System;
185
185
  /** An implementation of IModelApp which uses a MockRender.System by default. */
186
186
  class App {
187
+ static { this.systemFactory = () => App.createDefaultRenderSystem(); }
187
188
  static async startup(opts) {
188
189
  opts = opts ? opts : {};
189
190
  opts.renderSys = this.systemFactory();
@@ -196,7 +197,6 @@ export var MockRender;
196
197
  }
197
198
  static createDefaultRenderSystem() { return new System(); }
198
199
  }
199
- App.systemFactory = () => App.createDefaultRenderSystem();
200
200
  MockRender.App = App;
201
201
  })(MockRender || (MockRender = {}));
202
202
  //# sourceMappingURL=MockRender.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"MockRender.js","sourceRoot":"","sources":["../../../src/render/MockRender.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAE/F;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAC9C,OAAO,EAAE,OAAO,EAAa,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAuB,iBAAiB,EAAsB,MAAM,oBAAoB,CAAC;AAChG,OAAO,EAAE,SAAS,EAAoB,MAAM,cAAc,CAAC;AAK3D,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAK9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,qCAAqC,CAAC;AAEvE,OAAO,EAAe,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAG7D,OAAO,EAAqB,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACjE,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE9C,OAAO,EAAE,yBAAyB,EAAE,MAAM,4BAA4B,CAAC;AAGvE;;;;;;;;;;;GAWG;AACH,MAAM,KAAW,UAAU,CAmK1B;AAnKD,WAAiB,UAAU;;IACzB,gBAAgB;IAChB,MAAsB,MAAO,SAAQ,YAAY;QAG/C,YAAuC,OAAqB;YAAI,KAAK,EAAE,CAAC;YAAjC,YAAO,GAAP,OAAO,CAAc;YAFhC,QAA2B,GAAG,SAAS,CAAC;QAEK,CAAC;QAE1E,IAAW,YAAY,KAAmB,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;QAChE,IAAW,yBAAyB,KAAK,OAAO,KAAK,CAAC,CAAC,CAAC;QACxD,IAAW,gBAAgB,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC;QAC3C,IAAW,gBAAgB,CAAC,SAAiB,IAAI,CAAC;QAC3C,WAAW,CAAC,MAAa,IAAI,CAAC;QAC9B,cAAc,CAAC,SAAuB,IAAI,CAAC;QAC3C,iBAAiB,CAAC,KAAkB,IAAI,CAAC;QACzC,gBAAgB,CAAC,KAAiB,IAAI,CAAC;QACvC,SAAS,CAAC,UAAmB,IAAI,CAAC;QAClC,cAAc,KAAK,OAAO,KAAK,CAAC,CAAC,CAAC;QAClC,UAAU,CAAC,KAAe,EAAE,SAAyB,EAAE,QAAwB,EAAE,oBAA6B,IAAI,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;QAC/I,IAAW,kBAAkB,KAAuB,OAAO,EAAE,CAAC,CAAC,CAAC;QAChE,IAAW,kBAAkB,CAAC,QAA0B,IAAI,CAAC;KAC9D;SAjB8B,yBAAyB;IADlC,iBAAM,SAkB3B,CAAA;IAED,gBAAgB;IAChB,MAAa,cAAe,SAAQ,MAAM;QACxC,YAAmB,MAAoB,EAAmB,OAA0B;YAAI,KAAK,CAAC,MAAM,CAAC,CAAC;YAA5C,YAAO,GAAP,OAAO,CAAmB;QAAmB,CAAC;QAExG,IAAW,QAAQ,KAAK,OAAO,IAAI,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QAClG,WAAW,CAAC,KAAe,EAAE,KAAc,IAAI,CAAC;KACxD;IALY,yBAAc,iBAK1B,CAAA;IAED,gBAAgB;IAChB,MAAa,eAAgB,SAAQ,MAAM;QACzC,YAAmB,MAAoB,EAAmB,SAAmB;YAAI,KAAK,CAAC,MAAM,CAAC,CAAC;YAArC,cAAS,GAAT,SAAS,CAAU;QAAmB,CAAC;QAEjG,IAAW,QAAQ,KAAK,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;QACzC,WAAW,CAAC,IAAc,EAAE,KAAc,IAAI,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;KACrF;IALY,0BAAe,kBAK3B,CAAA;IAED,gBAAgB;IAChB,MAAa,OAAQ,SAAQ,gBAAgB;QAC3C,YAAmB,MAAc,EAAE,OAAoE;YACrG,KAAK,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACzB,CAAC;KACF;IAJY,kBAAO,UAInB,CAAA;IAED,MAAa,OAAQ,SAAQ,aAAa;QACxC,gBAAuB,KAAK,EAAE,CAAC,CAAC,CAAC;QAE1B,OAAO,KAAK,CAAC;QACb,iBAAiB,CAAC,MAA+B,IAAU,CAAC;QAC5D,UAAU,KAAK,CAAC;KACxB;IANY,kBAAO,UAMnB,CAAA;IAED,MAAa,IAAK,SAAQ,OAAO;QAC/B,YAAmC,QAAyB;YAAI,KAAK,EAAE,CAAC;YAArC,aAAQ,GAAR,QAAQ,CAAiB;QAAa,CAAC;QAE1D,OAAO;YACrB,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,QAAQ;gBACjC,OAAO,CAAC,OAAO,CAAC,CAAC;YAEnB,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;QAC3B,CAAC;KACF;IATY,eAAI,OAShB,CAAA;IAED,MAAa,MAAO,SAAQ,OAAO;QACjC,YAAmC,MAAqB,EAAkB,SAAoB,EAAkB,OAA8B;YAAI,KAAK,EAAE,CAAC;YAAvH,WAAM,GAAN,MAAM,CAAe;YAAkB,cAAS,GAAT,SAAS,CAAW;YAAkB,YAAO,GAAP,OAAO,CAAuB;QAAa,CAAC;QAE5I,OAAO,KAAK,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;KACrD;IAJY,iBAAM,SAIlB,CAAA;IAED,MAAa,KAAM,SAAQ,OAAO;QAChC,YAAmC,OAAsB,EAAkB,YAAgC,EAAkB,KAA0B;YAAI,KAAK,EAAE,CAAC;YAAhI,YAAO,GAAP,OAAO,CAAe;YAAkB,iBAAY,GAAZ,YAAY,CAAoB;YAAkB,UAAK,GAAL,KAAK,CAAqB;QAAa,CAAC;QAErJ,OAAO;YACrB,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACxB,CAAC;KACF;IANY,gBAAK,QAMjB,CAAA;IAED,gBAAgB;IAChB,MAAa,QAAQ;QAInB,YAAmC,kBAAwD;YAAxD,uBAAkB,GAAlB,kBAAkB,CAAsC;YAHpF,cAAS,GAAG,KAAK,CAAC;YACT,mBAAc,GAAG,IAAI,CAAC;YAC/B,eAAU,GAAG,KAAK,CAAC;QAG1B,CAAC;QACM,OAAO,KAAW,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,CAAC,CAAC;QAC3C,iBAAiB,KAAW,CAAC;QAC7B,YAAY,KAAK,OAAO,IAAI,OAAO,EAAE,CAAC,CAAC,CAAC;KAChD;IAVY,mBAAQ,WAUpB,CAAA;IAED,gBAAgB;IAChB,MAAa,WAAW;QAAxB;YACkB,QAA2B,GAAG,mBAAmB,CAAC;QAGpE,CAAC;QAFQ,OAAO,KAAW,CAAC;QACnB,iBAAiB,KAAW,CAAC;KACrC;SAHkB,yBAAyB;IAD/B,sBAAW,cAIvB,CAAA;IAED,MAAa,MAAO,SAAQ,YAAY;QACtC,IAAW,OAAO,KAAK,OAAO,IAAI,CAAC,CAAC,CAAC;QAC9B,OAAO,KAAW,CAAC;QAC1B,IAAoB,cAAc,KAAK,OAAO,IAAI,CAAC,CAAC,CAAC;QAErD,gBAAuB,KAAK,EAAE,CAAC,CAAC,CAAC;QAEjC,gBAAgB;QACA,UAAU,KAAc,OAAO,KAAK,CAAC,CAAC,CAAC;QAEvD,gBAAgB;QACA,YAAY,CAAC,MAAyB,IAAoB,OAAO,IAAI,cAAc,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;QACpH,gBAAgB;QACA,qBAAqB,CAAC,IAAc,IAAkB,OAAO,IAAI,eAAe,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;QAE/F,aAAa,CAAC,OAAoE;YAChG,OAAO,IAAI,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QACpC,CAAC;QAEe,iBAAiB,CAAC,UAA2B,IAAI,OAAO,IAAI,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;QAC/E,mBAAmB,CAAC,MAAqB,EAAE,SAAoB,EAAE,OAA8B,IAAI,OAAO,IAAI,MAAM,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;QACnJ,WAAW,CAAC,OAAsB,EAAE,QAA4B,EAAE,KAA0B,IAAI,OAAO,IAAI,KAAK,CAAC,OAAO,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;QAE7J,gBAAgB;QACA,UAAU,CAAC,OAAmB,IAAI,OAAO,IAAI,OAAO,EAAE,CAAC,CAAC,CAAC;QACzE,gBAAgB;QACA,cAAc,CAAC,OAAuB,IAAI,OAAO,IAAI,OAAO,EAAE,CAAC,CAAC,CAAC;QACjF,gBAAgB;QACA,iBAAiB,CAAC,OAA0B,IAAI,OAAO,IAAI,OAAO,EAAE,CAAC,CAAC,CAAC;QACvF,gBAAgB;QACA,gBAAgB,CAAC,KAAqB,EAAE,OAAyB,IAAI,OAAO,IAAI,OAAO,EAAE,CAAC,CAAC,CAAC;QAC5F,mBAAmB,KAAK,OAAO,IAAI,OAAO,EAAE,CAAC,CAAC,CAAC;QAE/D,gBAAgB;QACA,kBAAkB,KAAK,OAAO,IAAI,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACrE,gBAAgB;QACA,sBAAsB,KAAK,OAAO,IAAI,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;QAC7E,gBAAgB;QACA,yBAAyB,KAAK,OAAO,IAAI,QAAQ,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;QACpF,gBAAgB;QACA,iBAAiB,KAAK,OAAO,IAAI,WAAW,EAAE,CAAC,CAAC,CAAC;QACjE,gBAAgB;QACA,yBAAyB,KAAK,OAAO,IAAI,OAAO,EAAE,CAAC,CAAC,CAAC;KACtE;IA3CY,iBAAM,SA2ClB,CAAA;IAID,gFAAgF;IAChF,MAAa,GAAG;QAGP,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,IAAuB;YACjD,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;YACxB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;YACtC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,IAAI,IAAI,iBAAiB,EAAE,CAAC;YACjE,MAAM,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAChC,CAAC;QAEM,MAAM,CAAC,KAAK,CAAC,QAAQ;YAC1B,IAAI,CAAC,aAAa,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC,yBAAyB,EAAE,CAAC;YAC3D,MAAM,SAAS,CAAC,QAAQ,EAAE,CAAC;QAC7B,CAAC;QAES,MAAM,CAAC,yBAAyB,KAAK,OAAO,IAAI,MAAM,EAAE,CAAC,CAAC,CAAC;;IAdvD,iBAAa,GAAkB,GAAG,EAAE,CAAC,GAAG,CAAC,yBAAyB,EAAE,CAAC;IADxE,cAAG,MAgBf,CAAA;AACH,CAAC,EAnKgB,UAAU,KAAV,UAAU,QAmK1B","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n\r\n/** @packageDocumentation\r\n * @module Utils\r\n */\r\n\r\nimport { dispose } from \"@itwin/core-bentley\";\r\nimport { Range3d, Transform } from \"@itwin/core-geometry\";\r\nimport { ElementAlignedBox3d, EmptyLocalization, RenderFeatureTable } from \"@itwin/core-common\";\r\nimport { IModelApp, IModelAppOptions } from \"../IModelApp\";\r\nimport { IModelConnection } from \"../IModelConnection\";\r\nimport { MeshParams } from \"../common/internal/render/MeshParams\";\r\nimport { PointStringParams } from \"../common/internal/render/PointStringParams\";\r\nimport { PolylineParams } from \"../common/internal/render/PolylineParams\";\r\nimport { ViewRect } from \"../common/ViewRect\";\r\nimport { Decorations } from \"./Decorations\";\r\nimport { GraphicBranch, GraphicBranchOptions } from \"./GraphicBranch\";\r\nimport { CustomGraphicBuilderOptions, GraphicBuilder, ViewportGraphicBuilderOptions } from \"./GraphicBuilder\";\r\nimport { Pixel } from \"./Pixel\";\r\nimport { PrimitiveBuilder } from \"../internal/render/PrimitiveBuilder\";\r\nimport { PointCloudArgs } from \"../common/internal/render/PointCloudPrimitive\";\r\nimport { GraphicList, RenderGraphic } from \"./RenderGraphic\";\r\nimport { RenderMemory } from \"./RenderMemory\";\r\nimport { RenderPlan } from \"./RenderPlan\";\r\nimport { RenderAreaPattern, RenderSystem } from \"./RenderSystem\";\r\nimport { RenderTarget } from \"./RenderTarget\";\r\nimport { Scene } from \"./Scene\";\r\nimport { _implementationProhibited } from \"../common/internal/Symbols\";\r\nimport { RenderGeometry } from \"../internal/render/RenderGeometry\";\r\n\r\n/** Contains extensible mock implementations of the various components of a RenderSystem, intended for use in tests.\r\n * Use these for tests instead of the default RenderSystem wherever possible because:\r\n * (1) Electron has a bug on Windows in which it fails to obtain a WebGLRenderingContext when running inside a VM (e.g., during CI job); and\r\n * (2) To decouple the logic which uses aspects of the RenderSystem from the full implementation.\r\n * Any and all of these types can be extended for the purposes of specific tests.\r\n * To use this:\r\n * (1) If overriding anything in the implementation supplied herein, pass a SystemFactory function to MockRender.App.systemFactory.\r\n * (2) Call MockRender.App.startup() instead of IModelApp.startup() before tests begin.\r\n * (3) Likewise call MockRender.App.shutdown() when finished. This resets the SystemFactory to its default.\r\n * @note The APIs within this namespace are intended *strictly* for use with unit tests.\r\n * @internal\r\n */\r\nexport namespace MockRender {\r\n /** @internal */\r\n export abstract class Target extends RenderTarget {\r\n protected override readonly [_implementationProhibited] = undefined;\r\n\r\n protected constructor(private readonly _system: RenderSystem) { super(); }\r\n\r\n public get renderSystem(): RenderSystem { return this._system; }\r\n public get wantInvertBlackBackground() { return false; }\r\n public get analysisFraction() { return 0; }\r\n public set analysisFraction(_fraction: number) { }\r\n public changeScene(_scene: Scene) { }\r\n public changeDynamics(_dynamics?: GraphicList) { }\r\n public changeDecorations(_decs: Decorations) { }\r\n public changeRenderPlan(_plan: RenderPlan) { }\r\n public drawFrame(_sceneTime?: number) { }\r\n public updateViewRect() { return false; }\r\n public readPixels(_rect: ViewRect, _selector: Pixel.Selector, receiver: Pixel.Receiver, _excludeNonLocatable: boolean) { receiver(undefined); }\r\n public get screenSpaceEffects(): Iterable<string> { return []; }\r\n public set screenSpaceEffects(_effects: Iterable<string>) { }\r\n }\r\n\r\n /** @internal */\r\n export class OnScreenTarget extends Target {\r\n public constructor(system: RenderSystem, private readonly _canvas: HTMLCanvasElement) { super(system); }\r\n\r\n public get viewRect() { return new ViewRect(0, 0, this._canvas.clientWidth, this._canvas.clientHeight); }\r\n public setViewRect(_rect: ViewRect, _temp: boolean) { }\r\n }\r\n\r\n /** @internal */\r\n export class OffScreenTarget extends Target {\r\n public constructor(system: RenderSystem, private readonly _viewRect: ViewRect) { super(system); }\r\n\r\n public get viewRect() { return this._viewRect; }\r\n public setViewRect(rect: ViewRect, _temp: boolean) { this._viewRect.setFrom(rect); }\r\n }\r\n\r\n /** @internal */\r\n export class Builder extends PrimitiveBuilder {\r\n public constructor(system: System, options: CustomGraphicBuilderOptions | ViewportGraphicBuilderOptions) {\r\n super(system, options);\r\n }\r\n }\r\n\r\n export class Graphic extends RenderGraphic {\r\n public constructor() { super(); }\r\n\r\n public dispose() { }\r\n public collectStatistics(_stats: RenderMemory.Statistics): void { }\r\n public unionRange() { }\r\n }\r\n\r\n export class List extends Graphic {\r\n public constructor(public readonly graphics: RenderGraphic[]) { super(); }\r\n\r\n public override dispose() {\r\n for (const graphic of this.graphics)\r\n dispose(graphic);\r\n\r\n this.graphics.length = 0;\r\n }\r\n }\r\n\r\n export class Branch extends Graphic {\r\n public constructor(public readonly branch: GraphicBranch, public readonly transform: Transform, public readonly options?: GraphicBranchOptions) { super(); }\r\n\r\n public override dispose() { this.branch.dispose(); }\r\n }\r\n\r\n export class Batch extends Graphic {\r\n public constructor(public readonly graphic: RenderGraphic, public readonly featureTable: RenderFeatureTable, public readonly range: ElementAlignedBox3d) { super(); }\r\n\r\n public override dispose() {\r\n dispose(this.graphic);\r\n }\r\n }\r\n\r\n /** @internal */\r\n export class Geometry implements RenderGeometry {\r\n public noDispose = false;\r\n public readonly isInstanceable = true;\r\n public isDisposed = false;\r\n public constructor(public readonly renderGeometryType: \"mesh\" | \"polyline\" | \"point-string\") {\r\n\r\n }\r\n public dispose(): void { this.isDisposed = true; }\r\n public collectStatistics(): void { }\r\n public computeRange() { return new Range3d(); }\r\n }\r\n\r\n /** @internal */\r\n export class AreaPattern implements RenderAreaPattern {\r\n public readonly [_implementationProhibited] = \"renderAreaPattern\";\r\n public dispose(): void { }\r\n public collectStatistics(): void { }\r\n }\r\n\r\n export class System extends RenderSystem {\r\n public get isValid() { return true; }\r\n public dispose(): void { }\r\n public override get maxTextureSize() { return 4096; }\r\n\r\n public constructor() { super(); }\r\n\r\n /** @internal */\r\n public override doIdleWork(): boolean { return false; }\r\n\r\n /** @internal */\r\n public override createTarget(canvas: HTMLCanvasElement): OnScreenTarget { return new OnScreenTarget(this, canvas); }\r\n /** @internal */\r\n public override createOffscreenTarget(rect: ViewRect): RenderTarget { return new OffScreenTarget(this, rect); }\r\n\r\n public override createGraphic(options: CustomGraphicBuilderOptions | ViewportGraphicBuilderOptions): GraphicBuilder {\r\n return new Builder(this, options);\r\n }\r\n\r\n public override createGraphicList(primitives: RenderGraphic[]) { return new List(primitives); }\r\n public override createGraphicBranch(branch: GraphicBranch, transform: Transform, options?: GraphicBranchOptions) { return new Branch(branch, transform, options); }\r\n public override createBatch(graphic: RenderGraphic, features: RenderFeatureTable, range: ElementAlignedBox3d) { return new Batch(graphic, features, range); }\r\n\r\n /** @internal */\r\n public override createMesh(_params: MeshParams) { return new Graphic(); }\r\n /** @internal */\r\n public override createPolyline(_params: PolylineParams) { return new Graphic(); }\r\n /** @internal */\r\n public override createPointString(_params: PointStringParams) { return new Graphic(); }\r\n /** @internal */\r\n public override createPointCloud(_args: PointCloudArgs, _imodel: IModelConnection) { return new Graphic(); }\r\n public override createRenderGraphic() { return new Graphic(); }\r\n\r\n /** @internal */\r\n public override createMeshGeometry() { return new Geometry(\"mesh\"); }\r\n /** @internal */\r\n public override createPolylineGeometry() { return new Geometry(\"polyline\"); }\r\n /** @internal */\r\n public override createPointStringGeometry() { return new Geometry(\"point-string\"); }\r\n /** @internal */\r\n public override createAreaPattern() { return new AreaPattern(); }\r\n /** @internal */\r\n public override createGraphicFromTemplate() { return new Graphic(); }\r\n }\r\n\r\n export type SystemFactory = () => RenderSystem;\r\n\r\n /** An implementation of IModelApp which uses a MockRender.System by default. */\r\n export class App {\r\n public static systemFactory: SystemFactory = () => App.createDefaultRenderSystem();\r\n\r\n public static async startup(opts?: IModelAppOptions): Promise<void> {\r\n opts = opts ? opts : {};\r\n opts.renderSys = this.systemFactory();\r\n opts.localization = opts.localization ?? new EmptyLocalization();\r\n await IModelApp.startup(opts);\r\n }\r\n\r\n public static async shutdown(): Promise<void> {\r\n this.systemFactory = () => App.createDefaultRenderSystem();\r\n await IModelApp.shutdown();\r\n }\r\n\r\n protected static createDefaultRenderSystem() { return new System(); }\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"MockRender.js","sourceRoot":"","sources":["../../../src/render/MockRender.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n\r\n/** @packageDocumentation\r\n * @module Utils\r\n */\r\n\r\nimport { dispose } from \"@itwin/core-bentley\";\r\nimport { Range3d, Transform } from \"@itwin/core-geometry\";\r\nimport { ElementAlignedBox3d, EmptyLocalization, RenderFeatureTable } from \"@itwin/core-common\";\r\nimport { IModelApp, IModelAppOptions } from \"../IModelApp\";\r\nimport { IModelConnection } from \"../IModelConnection\";\r\nimport { MeshParams } from \"../common/internal/render/MeshParams\";\r\nimport { PointStringParams } from \"../common/internal/render/PointStringParams\";\r\nimport { PolylineParams } from \"../common/internal/render/PolylineParams\";\r\nimport { ViewRect } from \"../common/ViewRect\";\r\nimport { Decorations } from \"./Decorations\";\r\nimport { GraphicBranch, GraphicBranchOptions } from \"./GraphicBranch\";\r\nimport { CustomGraphicBuilderOptions, GraphicBuilder, ViewportGraphicBuilderOptions } from \"./GraphicBuilder\";\r\nimport { Pixel } from \"./Pixel\";\r\nimport { PrimitiveBuilder } from \"../internal/render/PrimitiveBuilder\";\r\nimport { PointCloudArgs } from \"../common/internal/render/PointCloudPrimitive\";\r\nimport { GraphicList, RenderGraphic } from \"./RenderGraphic\";\r\nimport { RenderMemory } from \"./RenderMemory\";\r\nimport { RenderPlan } from \"./RenderPlan\";\r\nimport { RenderAreaPattern, RenderSystem } from \"./RenderSystem\";\r\nimport { RenderTarget } from \"./RenderTarget\";\r\nimport { Scene } from \"./Scene\";\r\nimport { _implementationProhibited } from \"../common/internal/Symbols\";\r\nimport { RenderGeometry } from \"../internal/render/RenderGeometry\";\r\n\r\n/** Contains extensible mock implementations of the various components of a RenderSystem, intended for use in tests.\r\n * Use these for tests instead of the default RenderSystem wherever possible because:\r\n * (1) Electron has a bug on Windows in which it fails to obtain a WebGLRenderingContext when running inside a VM (e.g., during CI job); and\r\n * (2) To decouple the logic which uses aspects of the RenderSystem from the full implementation.\r\n * Any and all of these types can be extended for the purposes of specific tests.\r\n * To use this:\r\n * (1) If overriding anything in the implementation supplied herein, pass a SystemFactory function to MockRender.App.systemFactory.\r\n * (2) Call MockRender.App.startup() instead of IModelApp.startup() before tests begin.\r\n * (3) Likewise call MockRender.App.shutdown() when finished. This resets the SystemFactory to its default.\r\n * @note The APIs within this namespace are intended *strictly* for use with unit tests.\r\n * @internal\r\n */\r\nexport namespace MockRender {\r\n /** @internal */\r\n export abstract class Target extends RenderTarget {\r\n protected override readonly [_implementationProhibited] = undefined;\r\n\r\n protected constructor(private readonly _system: RenderSystem) { super(); }\r\n\r\n public get renderSystem(): RenderSystem { return this._system; }\r\n public get wantInvertBlackBackground() { return false; }\r\n public get analysisFraction() { return 0; }\r\n public set analysisFraction(_fraction: number) { }\r\n public changeScene(_scene: Scene) { }\r\n public changeDynamics(_dynamics?: GraphicList) { }\r\n public changeDecorations(_decs: Decorations) { }\r\n public changeRenderPlan(_plan: RenderPlan) { }\r\n public drawFrame(_sceneTime?: number) { }\r\n public updateViewRect() { return false; }\r\n public readPixels(_rect: ViewRect, _selector: Pixel.Selector, receiver: Pixel.Receiver, _excludeNonLocatable: boolean) { receiver(undefined); }\r\n public get screenSpaceEffects(): Iterable<string> { return []; }\r\n public set screenSpaceEffects(_effects: Iterable<string>) { }\r\n }\r\n\r\n /** @internal */\r\n export class OnScreenTarget extends Target {\r\n public constructor(system: RenderSystem, private readonly _canvas: HTMLCanvasElement) { super(system); }\r\n\r\n public get viewRect() { return new ViewRect(0, 0, this._canvas.clientWidth, this._canvas.clientHeight); }\r\n public setViewRect(_rect: ViewRect, _temp: boolean) { }\r\n }\r\n\r\n /** @internal */\r\n export class OffScreenTarget extends Target {\r\n public constructor(system: RenderSystem, private readonly _viewRect: ViewRect) { super(system); }\r\n\r\n public get viewRect() { return this._viewRect; }\r\n public setViewRect(rect: ViewRect, _temp: boolean) { this._viewRect.setFrom(rect); }\r\n }\r\n\r\n /** @internal */\r\n export class Builder extends PrimitiveBuilder {\r\n public constructor(system: System, options: CustomGraphicBuilderOptions | ViewportGraphicBuilderOptions) {\r\n super(system, options);\r\n }\r\n }\r\n\r\n export class Graphic extends RenderGraphic {\r\n public constructor() { super(); }\r\n\r\n public dispose() { }\r\n public collectStatistics(_stats: RenderMemory.Statistics): void { }\r\n public unionRange() { }\r\n }\r\n\r\n export class List extends Graphic {\r\n public constructor(public readonly graphics: RenderGraphic[]) { super(); }\r\n\r\n public override dispose() {\r\n for (const graphic of this.graphics)\r\n dispose(graphic);\r\n\r\n this.graphics.length = 0;\r\n }\r\n }\r\n\r\n export class Branch extends Graphic {\r\n public constructor(public readonly branch: GraphicBranch, public readonly transform: Transform, public readonly options?: GraphicBranchOptions) { super(); }\r\n\r\n public override dispose() { this.branch.dispose(); }\r\n }\r\n\r\n export class Batch extends Graphic {\r\n public constructor(public readonly graphic: RenderGraphic, public readonly featureTable: RenderFeatureTable, public readonly range: ElementAlignedBox3d) { super(); }\r\n\r\n public override dispose() {\r\n dispose(this.graphic);\r\n }\r\n }\r\n\r\n /** @internal */\r\n export class Geometry implements RenderGeometry {\r\n public noDispose = false;\r\n public readonly isInstanceable = true;\r\n public isDisposed = false;\r\n public constructor(public readonly renderGeometryType: \"mesh\" | \"polyline\" | \"point-string\") {\r\n\r\n }\r\n public dispose(): void { this.isDisposed = true; }\r\n public collectStatistics(): void { }\r\n public computeRange() { return new Range3d(); }\r\n }\r\n\r\n /** @internal */\r\n export class AreaPattern implements RenderAreaPattern {\r\n public readonly [_implementationProhibited] = \"renderAreaPattern\";\r\n public dispose(): void { }\r\n public collectStatistics(): void { }\r\n }\r\n\r\n export class System extends RenderSystem {\r\n public get isValid() { return true; }\r\n public dispose(): void { }\r\n public override get maxTextureSize() { return 4096; }\r\n\r\n public constructor() { super(); }\r\n\r\n /** @internal */\r\n public override doIdleWork(): boolean { return false; }\r\n\r\n /** @internal */\r\n public override createTarget(canvas: HTMLCanvasElement): OnScreenTarget { return new OnScreenTarget(this, canvas); }\r\n /** @internal */\r\n public override createOffscreenTarget(rect: ViewRect): RenderTarget { return new OffScreenTarget(this, rect); }\r\n\r\n public override createGraphic(options: CustomGraphicBuilderOptions | ViewportGraphicBuilderOptions): GraphicBuilder {\r\n return new Builder(this, options);\r\n }\r\n\r\n public override createGraphicList(primitives: RenderGraphic[]) { return new List(primitives); }\r\n public override createGraphicBranch(branch: GraphicBranch, transform: Transform, options?: GraphicBranchOptions) { return new Branch(branch, transform, options); }\r\n public override createBatch(graphic: RenderGraphic, features: RenderFeatureTable, range: ElementAlignedBox3d) { return new Batch(graphic, features, range); }\r\n\r\n /** @internal */\r\n public override createMesh(_params: MeshParams) { return new Graphic(); }\r\n /** @internal */\r\n public override createPolyline(_params: PolylineParams) { return new Graphic(); }\r\n /** @internal */\r\n public override createPointString(_params: PointStringParams) { return new Graphic(); }\r\n /** @internal */\r\n public override createPointCloud(_args: PointCloudArgs, _imodel: IModelConnection) { return new Graphic(); }\r\n public override createRenderGraphic() { return new Graphic(); }\r\n\r\n /** @internal */\r\n public override createMeshGeometry() { return new Geometry(\"mesh\"); }\r\n /** @internal */\r\n public override createPolylineGeometry() { return new Geometry(\"polyline\"); }\r\n /** @internal */\r\n public override createPointStringGeometry() { return new Geometry(\"point-string\"); }\r\n /** @internal */\r\n public override createAreaPattern() { return new AreaPattern(); }\r\n /** @internal */\r\n public override createGraphicFromTemplate() { return new Graphic(); }\r\n }\r\n\r\n export type SystemFactory = () => RenderSystem;\r\n\r\n /** An implementation of IModelApp which uses a MockRender.System by default. */\r\n export class App {\r\n public static systemFactory: SystemFactory = () => App.createDefaultRenderSystem();\r\n\r\n public static async startup(opts?: IModelAppOptions): Promise<void> {\r\n opts = opts ? opts : {};\r\n opts.renderSys = this.systemFactory();\r\n opts.localization = opts.localization ?? new EmptyLocalization();\r\n await IModelApp.startup(opts);\r\n }\r\n\r\n public static async shutdown(): Promise<void> {\r\n this.systemFactory = () => App.createDefaultRenderSystem();\r\n await IModelApp.shutdown();\r\n }\r\n\r\n protected static createDefaultRenderSystem() { return new System(); }\r\n }\r\n}\r\n"]}
@@ -21,6 +21,7 @@ import { Texture, TextureHandle } from "./Texture";
21
21
  import { TextureDrape } from "./TextureDrape";
22
22
  /** @internal */
23
23
  export class BackgroundMapDrape extends TextureDrape {
24
+ static { this._postProjectionMatrix = Matrix4d.createRowValues(0, 1, 0, 0, 0, 0, -1, 0, 1, 0, 0, 0, 0, 0, 0, 1); }
24
25
  constructor(drapedTree, mapTree) {
25
26
  super();
26
27
  this._graphics = [];
@@ -136,5 +137,4 @@ export class BackgroundMapDrape extends TextureDrape {
136
137
  system.glTimer.endOperation();
137
138
  }
138
139
  }
139
- BackgroundMapDrape._postProjectionMatrix = Matrix4d.createRowValues(0, 1, 0, 0, 0, 0, -1, 0, 1, 0, 0, 0, 0, 0, 0, 1);
140
140
  //# sourceMappingURL=BackgroundMapDrape.js.map