@itwin/core-frontend 3.3.0-dev.9 → 3.4.0-dev.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (344) hide show
  1. package/CHANGELOG.md +37 -1
  2. package/lib/cjs/DisplayStyleState.d.ts +80 -31
  3. package/lib/cjs/DisplayStyleState.d.ts.map +1 -1
  4. package/lib/cjs/DisplayStyleState.js +150 -89
  5. package/lib/cjs/DisplayStyleState.js.map +1 -1
  6. package/lib/cjs/DrawingViewState.js +1 -1
  7. package/lib/cjs/DrawingViewState.js.map +1 -1
  8. package/lib/cjs/EmphasizeElements.d.ts.map +1 -1
  9. package/lib/cjs/EmphasizeElements.js +5 -0
  10. package/lib/cjs/EmphasizeElements.js.map +1 -1
  11. package/lib/cjs/EntityState.d.ts +5 -5
  12. package/lib/cjs/EntityState.d.ts.map +1 -1
  13. package/lib/cjs/EntityState.js.map +1 -1
  14. package/lib/cjs/IModelApp.d.ts +5 -0
  15. package/lib/cjs/IModelApp.d.ts.map +1 -1
  16. package/lib/cjs/IModelApp.js +16 -12
  17. package/lib/cjs/IModelApp.js.map +1 -1
  18. package/lib/cjs/IModelConnection.d.ts +43 -3
  19. package/lib/cjs/IModelConnection.d.ts.map +1 -1
  20. package/lib/cjs/IModelConnection.js +29 -3
  21. package/lib/cjs/IModelConnection.js.map +1 -1
  22. package/lib/cjs/LocalhostIpcApp.d.ts.map +1 -1
  23. package/lib/cjs/LocalhostIpcApp.js +10 -0
  24. package/lib/cjs/LocalhostIpcApp.js.map +1 -1
  25. package/lib/cjs/NoRenderApp.d.ts.map +1 -1
  26. package/lib/cjs/NoRenderApp.js +1 -0
  27. package/lib/cjs/NoRenderApp.js.map +1 -1
  28. package/lib/cjs/RealityDataSource.d.ts.map +1 -1
  29. package/lib/cjs/RealityDataSource.js +6 -2
  30. package/lib/cjs/RealityDataSource.js.map +1 -1
  31. package/lib/cjs/SelectionSet.d.ts +30 -4
  32. package/lib/cjs/SelectionSet.d.ts.map +1 -1
  33. package/lib/cjs/SelectionSet.js +26 -2
  34. package/lib/cjs/SelectionSet.js.map +1 -1
  35. package/lib/cjs/SheetViewState.js +1 -1
  36. package/lib/cjs/SheetViewState.js.map +1 -1
  37. package/lib/cjs/SubCategoriesCache.d.ts +3 -0
  38. package/lib/cjs/SubCategoriesCache.d.ts.map +1 -1
  39. package/lib/cjs/SubCategoriesCache.js +34 -0
  40. package/lib/cjs/SubCategoriesCache.js.map +1 -1
  41. package/lib/cjs/TentativePoint.js +1 -1
  42. package/lib/cjs/TentativePoint.js.map +1 -1
  43. package/lib/cjs/ViewState.d.ts +2 -3
  44. package/lib/cjs/ViewState.d.ts.map +1 -1
  45. package/lib/cjs/ViewState.js +7 -3
  46. package/lib/cjs/ViewState.js.map +1 -1
  47. package/lib/cjs/Viewport.d.ts +10 -10
  48. package/lib/cjs/Viewport.d.ts.map +1 -1
  49. package/lib/cjs/Viewport.js +19 -14
  50. package/lib/cjs/Viewport.js.map +1 -1
  51. package/lib/cjs/core-frontend.d.ts +0 -2
  52. package/lib/cjs/core-frontend.d.ts.map +1 -1
  53. package/lib/cjs/core-frontend.js +0 -2
  54. package/lib/cjs/core-frontend.js.map +1 -1
  55. package/lib/cjs/extension/ExtensionAdmin.d.ts +5 -2
  56. package/lib/cjs/extension/ExtensionAdmin.d.ts.map +1 -1
  57. package/lib/cjs/extension/ExtensionAdmin.js +24 -6
  58. package/lib/cjs/extension/ExtensionAdmin.js.map +1 -1
  59. package/lib/cjs/extension/providers/RemoteExtensionProvider.d.ts +0 -2
  60. package/lib/cjs/extension/providers/RemoteExtensionProvider.d.ts.map +1 -1
  61. package/lib/cjs/extension/providers/RemoteExtensionProvider.js +9 -22
  62. package/lib/cjs/extension/providers/RemoteExtensionProvider.js.map +1 -1
  63. package/lib/cjs/render/FeatureSymbology.js +2 -2
  64. package/lib/cjs/render/FeatureSymbology.js.map +1 -1
  65. package/lib/cjs/render/GraphicBranch.d.ts +15 -9
  66. package/lib/cjs/render/GraphicBranch.d.ts.map +1 -1
  67. package/lib/cjs/render/GraphicBranch.js +38 -1
  68. package/lib/cjs/render/GraphicBranch.js.map +1 -1
  69. package/lib/cjs/render/RenderSystem.d.ts +5 -0
  70. package/lib/cjs/render/RenderSystem.d.ts.map +1 -1
  71. package/lib/cjs/render/RenderSystem.js.map +1 -1
  72. package/lib/cjs/render/primitives/EdgeParams.d.ts +11 -0
  73. package/lib/cjs/render/primitives/EdgeParams.d.ts.map +1 -1
  74. package/lib/cjs/render/primitives/EdgeParams.js +36 -29
  75. package/lib/cjs/render/primitives/EdgeParams.js.map +1 -1
  76. package/lib/cjs/render/primitives/VertexTable.d.ts +11 -4
  77. package/lib/cjs/render/primitives/VertexTable.d.ts.map +1 -1
  78. package/lib/cjs/render/primitives/VertexTable.js +13 -6
  79. package/lib/cjs/render/primitives/VertexTable.js.map +1 -1
  80. package/lib/cjs/render/primitives/VertexTableSplitter.d.ts +41 -0
  81. package/lib/cjs/render/primitives/VertexTableSplitter.d.ts.map +1 -0
  82. package/lib/cjs/render/primitives/VertexTableSplitter.js +662 -0
  83. package/lib/cjs/render/primitives/VertexTableSplitter.js.map +1 -0
  84. package/lib/cjs/render/primitives/geometry/GeometryListBuilder.d.ts.map +1 -1
  85. package/lib/cjs/render/primitives/geometry/GeometryListBuilder.js +3 -1
  86. package/lib/cjs/render/primitives/geometry/GeometryListBuilder.js.map +1 -1
  87. package/lib/cjs/render/webgl/DrawCommand.js +1 -1
  88. package/lib/cjs/render/webgl/DrawCommand.js.map +1 -1
  89. package/lib/cjs/render/webgl/FeatureOverrides.d.ts +4 -1
  90. package/lib/cjs/render/webgl/FeatureOverrides.d.ts.map +1 -1
  91. package/lib/cjs/render/webgl/FeatureOverrides.js +56 -26
  92. package/lib/cjs/render/webgl/FeatureOverrides.js.map +1 -1
  93. package/lib/cjs/render/webgl/ShaderProgram.js +1 -1
  94. package/lib/cjs/render/webgl/ShaderProgram.js.map +1 -1
  95. package/lib/cjs/render/webgl/Target.d.ts +2 -1
  96. package/lib/cjs/render/webgl/Target.d.ts.map +1 -1
  97. package/lib/cjs/render/webgl/Target.js +1 -0
  98. package/lib/cjs/render/webgl/Target.js.map +1 -1
  99. package/lib/cjs/render/webgl/UniformHandle.d.ts +2 -1
  100. package/lib/cjs/render/webgl/UniformHandle.d.ts.map +1 -1
  101. package/lib/cjs/render/webgl/UniformHandle.js +15 -3
  102. package/lib/cjs/render/webgl/UniformHandle.js.map +1 -1
  103. package/lib/cjs/render/webgl/glsl/RealityMesh.d.ts.map +1 -1
  104. package/lib/cjs/render/webgl/glsl/RealityMesh.js +5 -2
  105. package/lib/cjs/render/webgl/glsl/RealityMesh.js.map +1 -1
  106. package/lib/cjs/render-primitives.d.ts +1 -0
  107. package/lib/cjs/render-primitives.d.ts.map +1 -1
  108. package/lib/cjs/render-primitives.js +1 -0
  109. package/lib/cjs/render-primitives.js.map +1 -1
  110. package/lib/cjs/tile/ClassifierTileTree.d.ts.map +1 -1
  111. package/lib/cjs/tile/ClassifierTileTree.js +8 -8
  112. package/lib/cjs/tile/ClassifierTileTree.js.map +1 -1
  113. package/lib/cjs/tile/IModelTile.d.ts.map +1 -1
  114. package/lib/cjs/tile/IModelTile.js +1 -0
  115. package/lib/cjs/tile/IModelTile.js.map +1 -1
  116. package/lib/cjs/tile/IModelTileTree.d.ts +3 -1
  117. package/lib/cjs/tile/IModelTileTree.d.ts.map +1 -1
  118. package/lib/cjs/tile/IModelTileTree.js +1 -0
  119. package/lib/cjs/tile/IModelTileTree.js.map +1 -1
  120. package/lib/cjs/tile/ImdlReader.d.ts +9 -4
  121. package/lib/cjs/tile/ImdlReader.d.ts.map +1 -1
  122. package/lib/cjs/tile/ImdlReader.js +174 -60
  123. package/lib/cjs/tile/ImdlReader.js.map +1 -1
  124. package/lib/cjs/tile/PrimaryTileTree.d.ts +8 -7
  125. package/lib/cjs/tile/PrimaryTileTree.d.ts.map +1 -1
  126. package/lib/cjs/tile/PrimaryTileTree.js +30 -25
  127. package/lib/cjs/tile/PrimaryTileTree.js.map +1 -1
  128. package/lib/cjs/tile/TileAdmin.d.ts +21 -2
  129. package/lib/cjs/tile/TileAdmin.d.ts.map +1 -1
  130. package/lib/cjs/tile/TileAdmin.js +32 -12
  131. package/lib/cjs/tile/TileAdmin.js.map +1 -1
  132. package/lib/cjs/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.d.ts.map +1 -1
  133. package/lib/cjs/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js +46 -2
  134. package/lib/cjs/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js.map +1 -1
  135. package/lib/cjs/tile/map/MapCartoRectangle.d.ts +1 -0
  136. package/lib/cjs/tile/map/MapCartoRectangle.d.ts.map +1 -1
  137. package/lib/cjs/tile/map/MapCartoRectangle.js +1 -0
  138. package/lib/cjs/tile/map/MapCartoRectangle.js.map +1 -1
  139. package/lib/cjs/tile/map/MapLayerFormatRegistry.d.ts +2 -1
  140. package/lib/cjs/tile/map/MapLayerFormatRegistry.d.ts.map +1 -1
  141. package/lib/cjs/tile/map/MapLayerFormatRegistry.js.map +1 -1
  142. package/lib/cjs/tile/map/MapLayerImageryProvider.d.ts +2 -0
  143. package/lib/cjs/tile/map/MapLayerImageryProvider.d.ts.map +1 -1
  144. package/lib/cjs/tile/map/MapLayerImageryProvider.js +23 -9
  145. package/lib/cjs/tile/map/MapLayerImageryProvider.js.map +1 -1
  146. package/lib/cjs/tile/map/MapLayerSources.d.ts +14 -9
  147. package/lib/cjs/tile/map/MapLayerSources.d.ts.map +1 -1
  148. package/lib/cjs/tile/map/MapLayerSources.js +14 -6
  149. package/lib/cjs/tile/map/MapLayerSources.js.map +1 -1
  150. package/lib/cjs/tools/ClipViewTool.d.ts.map +1 -1
  151. package/lib/cjs/tools/ClipViewTool.js +25 -2
  152. package/lib/cjs/tools/ClipViewTool.js.map +1 -1
  153. package/lib/cjs/tools/PrimitiveTool.js +4 -4
  154. package/lib/cjs/tools/PrimitiveTool.js.map +1 -1
  155. package/lib/cjs/tools/Tool.d.ts +7 -7
  156. package/lib/cjs/tools/Tool.js +7 -7
  157. package/lib/cjs/tools/Tool.js.map +1 -1
  158. package/lib/cjs/tools/ToolAdmin.d.ts.map +1 -1
  159. package/lib/cjs/tools/ToolAdmin.js +25 -10
  160. package/lib/cjs/tools/ToolAdmin.js.map +1 -1
  161. package/lib/esm/DisplayStyleState.d.ts +80 -31
  162. package/lib/esm/DisplayStyleState.d.ts.map +1 -1
  163. package/lib/esm/DisplayStyleState.js +150 -89
  164. package/lib/esm/DisplayStyleState.js.map +1 -1
  165. package/lib/esm/DrawingViewState.js +1 -1
  166. package/lib/esm/DrawingViewState.js.map +1 -1
  167. package/lib/esm/EmphasizeElements.d.ts.map +1 -1
  168. package/lib/esm/EmphasizeElements.js +5 -0
  169. package/lib/esm/EmphasizeElements.js.map +1 -1
  170. package/lib/esm/EntityState.d.ts +5 -5
  171. package/lib/esm/EntityState.d.ts.map +1 -1
  172. package/lib/esm/EntityState.js.map +1 -1
  173. package/lib/esm/IModelApp.d.ts +5 -0
  174. package/lib/esm/IModelApp.d.ts.map +1 -1
  175. package/lib/esm/IModelApp.js +16 -12
  176. package/lib/esm/IModelApp.js.map +1 -1
  177. package/lib/esm/IModelConnection.d.ts +43 -3
  178. package/lib/esm/IModelConnection.d.ts.map +1 -1
  179. package/lib/esm/IModelConnection.js +29 -3
  180. package/lib/esm/IModelConnection.js.map +1 -1
  181. package/lib/esm/LocalhostIpcApp.d.ts.map +1 -1
  182. package/lib/esm/LocalhostIpcApp.js +11 -1
  183. package/lib/esm/LocalhostIpcApp.js.map +1 -1
  184. package/lib/esm/NoRenderApp.d.ts.map +1 -1
  185. package/lib/esm/NoRenderApp.js +1 -0
  186. package/lib/esm/NoRenderApp.js.map +1 -1
  187. package/lib/esm/RealityDataSource.d.ts.map +1 -1
  188. package/lib/esm/RealityDataSource.js +6 -2
  189. package/lib/esm/RealityDataSource.js.map +1 -1
  190. package/lib/esm/SelectionSet.d.ts +30 -4
  191. package/lib/esm/SelectionSet.d.ts.map +1 -1
  192. package/lib/esm/SelectionSet.js +26 -2
  193. package/lib/esm/SelectionSet.js.map +1 -1
  194. package/lib/esm/SheetViewState.js +1 -1
  195. package/lib/esm/SheetViewState.js.map +1 -1
  196. package/lib/esm/SubCategoriesCache.d.ts +3 -0
  197. package/lib/esm/SubCategoriesCache.d.ts.map +1 -1
  198. package/lib/esm/SubCategoriesCache.js +34 -0
  199. package/lib/esm/SubCategoriesCache.js.map +1 -1
  200. package/lib/esm/TentativePoint.js +1 -1
  201. package/lib/esm/TentativePoint.js.map +1 -1
  202. package/lib/esm/ViewState.d.ts +2 -3
  203. package/lib/esm/ViewState.d.ts.map +1 -1
  204. package/lib/esm/ViewState.js +7 -3
  205. package/lib/esm/ViewState.js.map +1 -1
  206. package/lib/esm/Viewport.d.ts +10 -10
  207. package/lib/esm/Viewport.d.ts.map +1 -1
  208. package/lib/esm/Viewport.js +19 -14
  209. package/lib/esm/Viewport.js.map +1 -1
  210. package/lib/esm/core-frontend.d.ts +0 -2
  211. package/lib/esm/core-frontend.d.ts.map +1 -1
  212. package/lib/esm/core-frontend.js +0 -2
  213. package/lib/esm/core-frontend.js.map +1 -1
  214. package/lib/esm/extension/ExtensionAdmin.d.ts +5 -2
  215. package/lib/esm/extension/ExtensionAdmin.d.ts.map +1 -1
  216. package/lib/esm/extension/ExtensionAdmin.js +24 -6
  217. package/lib/esm/extension/ExtensionAdmin.js.map +1 -1
  218. package/lib/esm/extension/providers/RemoteExtensionProvider.d.ts +0 -2
  219. package/lib/esm/extension/providers/RemoteExtensionProvider.d.ts.map +1 -1
  220. package/lib/esm/extension/providers/RemoteExtensionProvider.js +9 -22
  221. package/lib/esm/extension/providers/RemoteExtensionProvider.js.map +1 -1
  222. package/lib/esm/render/FeatureSymbology.js +2 -2
  223. package/lib/esm/render/FeatureSymbology.js.map +1 -1
  224. package/lib/esm/render/GraphicBranch.d.ts +15 -9
  225. package/lib/esm/render/GraphicBranch.d.ts.map +1 -1
  226. package/lib/esm/render/GraphicBranch.js +36 -0
  227. package/lib/esm/render/GraphicBranch.js.map +1 -1
  228. package/lib/esm/render/RenderSystem.d.ts +5 -0
  229. package/lib/esm/render/RenderSystem.d.ts.map +1 -1
  230. package/lib/esm/render/RenderSystem.js.map +1 -1
  231. package/lib/esm/render/primitives/EdgeParams.d.ts +11 -0
  232. package/lib/esm/render/primitives/EdgeParams.d.ts.map +1 -1
  233. package/lib/esm/render/primitives/EdgeParams.js +34 -28
  234. package/lib/esm/render/primitives/EdgeParams.js.map +1 -1
  235. package/lib/esm/render/primitives/VertexTable.d.ts +11 -4
  236. package/lib/esm/render/primitives/VertexTable.d.ts.map +1 -1
  237. package/lib/esm/render/primitives/VertexTable.js +14 -7
  238. package/lib/esm/render/primitives/VertexTable.js.map +1 -1
  239. package/lib/esm/render/primitives/VertexTableSplitter.d.ts +41 -0
  240. package/lib/esm/render/primitives/VertexTableSplitter.d.ts.map +1 -0
  241. package/lib/esm/render/primitives/VertexTableSplitter.js +655 -0
  242. package/lib/esm/render/primitives/VertexTableSplitter.js.map +1 -0
  243. package/lib/esm/render/primitives/geometry/GeometryListBuilder.d.ts.map +1 -1
  244. package/lib/esm/render/primitives/geometry/GeometryListBuilder.js +3 -1
  245. package/lib/esm/render/primitives/geometry/GeometryListBuilder.js.map +1 -1
  246. package/lib/esm/render/webgl/DrawCommand.js +1 -1
  247. package/lib/esm/render/webgl/DrawCommand.js.map +1 -1
  248. package/lib/esm/render/webgl/FeatureOverrides.d.ts +4 -1
  249. package/lib/esm/render/webgl/FeatureOverrides.d.ts.map +1 -1
  250. package/lib/esm/render/webgl/FeatureOverrides.js +56 -26
  251. package/lib/esm/render/webgl/FeatureOverrides.js.map +1 -1
  252. package/lib/esm/render/webgl/ShaderProgram.js +1 -1
  253. package/lib/esm/render/webgl/ShaderProgram.js.map +1 -1
  254. package/lib/esm/render/webgl/Target.d.ts +2 -1
  255. package/lib/esm/render/webgl/Target.d.ts.map +1 -1
  256. package/lib/esm/render/webgl/Target.js +1 -0
  257. package/lib/esm/render/webgl/Target.js.map +1 -1
  258. package/lib/esm/render/webgl/UniformHandle.d.ts +2 -1
  259. package/lib/esm/render/webgl/UniformHandle.d.ts.map +1 -1
  260. package/lib/esm/render/webgl/UniformHandle.js +15 -3
  261. package/lib/esm/render/webgl/UniformHandle.js.map +1 -1
  262. package/lib/esm/render/webgl/glsl/RealityMesh.d.ts.map +1 -1
  263. package/lib/esm/render/webgl/glsl/RealityMesh.js +5 -2
  264. package/lib/esm/render/webgl/glsl/RealityMesh.js.map +1 -1
  265. package/lib/esm/render-primitives.d.ts +1 -0
  266. package/lib/esm/render-primitives.d.ts.map +1 -1
  267. package/lib/esm/render-primitives.js +1 -0
  268. package/lib/esm/render-primitives.js.map +1 -1
  269. package/lib/esm/tile/ClassifierTileTree.d.ts.map +1 -1
  270. package/lib/esm/tile/ClassifierTileTree.js +10 -10
  271. package/lib/esm/tile/ClassifierTileTree.js.map +1 -1
  272. package/lib/esm/tile/IModelTile.d.ts.map +1 -1
  273. package/lib/esm/tile/IModelTile.js +1 -0
  274. package/lib/esm/tile/IModelTile.js.map +1 -1
  275. package/lib/esm/tile/IModelTileTree.d.ts +3 -1
  276. package/lib/esm/tile/IModelTileTree.d.ts.map +1 -1
  277. package/lib/esm/tile/IModelTileTree.js +1 -0
  278. package/lib/esm/tile/IModelTileTree.js.map +1 -1
  279. package/lib/esm/tile/ImdlReader.d.ts +9 -4
  280. package/lib/esm/tile/ImdlReader.d.ts.map +1 -1
  281. package/lib/esm/tile/ImdlReader.js +174 -60
  282. package/lib/esm/tile/ImdlReader.js.map +1 -1
  283. package/lib/esm/tile/PrimaryTileTree.d.ts +8 -7
  284. package/lib/esm/tile/PrimaryTileTree.d.ts.map +1 -1
  285. package/lib/esm/tile/PrimaryTileTree.js +31 -26
  286. package/lib/esm/tile/PrimaryTileTree.js.map +1 -1
  287. package/lib/esm/tile/TileAdmin.d.ts +21 -2
  288. package/lib/esm/tile/TileAdmin.d.ts.map +1 -1
  289. package/lib/esm/tile/TileAdmin.js +33 -13
  290. package/lib/esm/tile/TileAdmin.js.map +1 -1
  291. package/lib/esm/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.d.ts.map +1 -1
  292. package/lib/esm/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js +46 -2
  293. package/lib/esm/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js.map +1 -1
  294. package/lib/esm/tile/map/MapCartoRectangle.d.ts +1 -0
  295. package/lib/esm/tile/map/MapCartoRectangle.d.ts.map +1 -1
  296. package/lib/esm/tile/map/MapCartoRectangle.js +1 -0
  297. package/lib/esm/tile/map/MapCartoRectangle.js.map +1 -1
  298. package/lib/esm/tile/map/MapLayerFormatRegistry.d.ts +2 -1
  299. package/lib/esm/tile/map/MapLayerFormatRegistry.d.ts.map +1 -1
  300. package/lib/esm/tile/map/MapLayerFormatRegistry.js.map +1 -1
  301. package/lib/esm/tile/map/MapLayerImageryProvider.d.ts +2 -0
  302. package/lib/esm/tile/map/MapLayerImageryProvider.d.ts.map +1 -1
  303. package/lib/esm/tile/map/MapLayerImageryProvider.js +24 -10
  304. package/lib/esm/tile/map/MapLayerImageryProvider.js.map +1 -1
  305. package/lib/esm/tile/map/MapLayerSources.d.ts +14 -9
  306. package/lib/esm/tile/map/MapLayerSources.d.ts.map +1 -1
  307. package/lib/esm/tile/map/MapLayerSources.js +14 -6
  308. package/lib/esm/tile/map/MapLayerSources.js.map +1 -1
  309. package/lib/esm/tools/ClipViewTool.d.ts.map +1 -1
  310. package/lib/esm/tools/ClipViewTool.js +25 -2
  311. package/lib/esm/tools/ClipViewTool.js.map +1 -1
  312. package/lib/esm/tools/PrimitiveTool.js +4 -4
  313. package/lib/esm/tools/PrimitiveTool.js.map +1 -1
  314. package/lib/esm/tools/Tool.d.ts +7 -7
  315. package/lib/esm/tools/Tool.js +7 -7
  316. package/lib/esm/tools/Tool.js.map +1 -1
  317. package/lib/esm/tools/ToolAdmin.d.ts.map +1 -1
  318. package/lib/esm/tools/ToolAdmin.js +25 -10
  319. package/lib/esm/tools/ToolAdmin.js.map +1 -1
  320. package/package.json +27 -27
  321. package/lib/cjs/RenderScheduleState.d.ts +0 -24
  322. package/lib/cjs/RenderScheduleState.d.ts.map +0 -1
  323. package/lib/cjs/RenderScheduleState.js +0 -76
  324. package/lib/cjs/RenderScheduleState.js.map +0 -1
  325. package/lib/cjs/extension/providers/ExtensionServiceClient.d.ts +0 -52
  326. package/lib/cjs/extension/providers/ExtensionServiceClient.d.ts.map +0 -1
  327. package/lib/cjs/extension/providers/ExtensionServiceClient.js +0 -131
  328. package/lib/cjs/extension/providers/ExtensionServiceClient.js.map +0 -1
  329. package/lib/cjs/extension/providers/ServiceExtensionProvider.d.ts +0 -37
  330. package/lib/cjs/extension/providers/ServiceExtensionProvider.d.ts.map +0 -1
  331. package/lib/cjs/extension/providers/ServiceExtensionProvider.js +0 -84
  332. package/lib/cjs/extension/providers/ServiceExtensionProvider.js.map +0 -1
  333. package/lib/esm/RenderScheduleState.d.ts +0 -24
  334. package/lib/esm/RenderScheduleState.d.ts.map +0 -1
  335. package/lib/esm/RenderScheduleState.js +0 -71
  336. package/lib/esm/RenderScheduleState.js.map +0 -1
  337. package/lib/esm/extension/providers/ExtensionServiceClient.d.ts +0 -52
  338. package/lib/esm/extension/providers/ExtensionServiceClient.d.ts.map +0 -1
  339. package/lib/esm/extension/providers/ExtensionServiceClient.js +0 -127
  340. package/lib/esm/extension/providers/ExtensionServiceClient.js.map +0 -1
  341. package/lib/esm/extension/providers/ServiceExtensionProvider.d.ts +0 -37
  342. package/lib/esm/extension/providers/ServiceExtensionProvider.d.ts.map +0 -1
  343. package/lib/esm/extension/providers/ServiceExtensionProvider.js +0 -80
  344. package/lib/esm/extension/providers/ServiceExtensionProvider.js.map +0 -1
@@ -13,7 +13,6 @@ const core_common_1 = require("@itwin/core-common");
13
13
  const core_geometry_1 = require("@itwin/core-geometry");
14
14
  const IModelApp_1 = require("../IModelApp");
15
15
  const GraphicBranch_1 = require("../render/GraphicBranch");
16
- const RenderScheduleState_1 = require("../RenderScheduleState");
17
16
  const internal_1 = require("./internal");
18
17
  class PlanProjectionTileTree extends internal_1.IModelTileTree {
19
18
  constructor(params, treeId, baseElevation) {
@@ -26,23 +25,22 @@ class PrimaryTreeSupplier {
26
25
  }
27
26
  compareTileTreeIds(lhs, rhs) {
28
27
  // NB: we don't compare isPlanProjection or is3d - they should always have the same value for a given modelId.
29
- let cmp = (0, core_bentley_1.compareStrings)(lhs.modelId, rhs.modelId);
30
- if (0 === cmp) {
31
- cmp = (0, core_common_1.compareIModelTileTreeIds)(lhs.treeId, rhs.treeId);
32
- if (0 === cmp)
33
- cmp = (0, core_bentley_1.compareBooleans)(lhs.forceNoInstancing, rhs.forceNoInstancing);
34
- }
35
- return cmp;
28
+ return (0, core_bentley_1.compareStrings)(lhs.modelId, rhs.modelId) || (0, core_common_1.compareIModelTileTreeIds)(lhs.treeId, rhs.treeId)
29
+ || (0, core_bentley_1.compareBooleans)(lhs.forceNoInstancing, rhs.forceNoInstancing) || (0, core_bentley_1.comparePossiblyUndefined)((x, y) => x.compareTo(y), lhs.timeline, rhs.timeline);
36
30
  }
37
31
  async createTileTree(id, iModel) {
38
32
  const treeId = id.treeId;
39
33
  const idStr = (0, core_common_1.iModelTileTreeIdToString)(id.modelId, treeId, IModelApp_1.IModelApp.tileAdmin);
40
34
  const props = await IModelApp_1.IModelApp.tileAdmin.requestTileTreeProps(iModel, idStr);
35
+ // ###TODO remove restriction that animated tile trees can't contained instanced geometry.
36
+ const isAnimated = undefined !== treeId.animationId || undefined !== id.timeline;
37
+ const allowInstancing = !isAnimated && !treeId.enforceDisplayPriority && !treeId.sectionCut && !id.forceNoInstancing;
41
38
  const options = {
42
39
  edges: treeId.edges,
43
- allowInstancing: undefined === treeId.animationId && !treeId.enforceDisplayPriority && !treeId.sectionCut && !id.forceNoInstancing,
40
+ allowInstancing,
44
41
  is3d: id.is3d,
45
42
  batchType: core_common_1.BatchType.Primary,
43
+ timeline: id.timeline,
46
44
  };
47
45
  const params = (0, internal_1.iModelTileTreeParamsFromJSON)(props, iModel, id.modelId, options);
48
46
  if (!id.isPlanProjection)
@@ -67,8 +65,9 @@ class PrimaryTreeSupplier {
67
65
  return iModel.tiles.getTileTreeOwner(id, this);
68
66
  }
69
67
  addModelsAnimatedByScript(modelIds, scriptSourceId, trees) {
68
+ // Note: This is invoked when an element hosting a schedule script is updated - it doesn't care about frontend schedule scripts.
70
69
  for (const tree of trees)
71
- if (tree.id.treeId.animationId === scriptSourceId)
70
+ if (scriptSourceId === tree.id.treeId.animationId)
72
71
  modelIds.add(tree.id.modelId);
73
72
  }
74
73
  addSpatialModels(modelIds, trees) {
@@ -116,12 +115,14 @@ class PrimaryTreeReference extends internal_1.TileTreeReference {
116
115
  this.checkForceNoInstancing(view.modelDisplayTransformProvider);
117
116
  view.onModelDisplayTransformProviderChanged.addListener((provider) => this.checkForceNoInstancing(provider));
118
117
  }
118
+ const scriptInfo = IModelApp_1.IModelApp.tileAdmin.getScriptInfoForTreeId(model.id, view.displayStyle.scheduleScriptReference); // eslint-disable-line deprecation/deprecation
119
119
  this._id = {
120
120
  modelId: model.id,
121
121
  is3d: model.is3d,
122
122
  treeId: this.createTreeId(view, model.id),
123
123
  isPlanProjection: planProjection,
124
124
  forceNoInstancing: this._forceNoInstancing,
125
+ timeline: scriptInfo === null || scriptInfo === void 0 ? void 0 : scriptInfo.timeline,
125
126
  };
126
127
  this._owner = primaryTreeSupplier.getOwner(this._id, model.iModel);
127
128
  }
@@ -169,21 +170,24 @@ class PrimaryTreeReference extends internal_1.TileTreeReference {
169
170
  return args;
170
171
  }
171
172
  get treeOwner() {
173
+ var _a;
172
174
  const newId = this.createTreeId(this.view, this._id.modelId);
173
- if (0 !== (0, core_common_1.compareIModelTileTreeIds)(newId, this._id.treeId) || this._forceNoInstancing !== this._id.forceNoInstancing) {
175
+ const timeline = (_a = IModelApp_1.IModelApp.tileAdmin.getScriptInfoForTreeId(this._id.modelId, this.view.displayStyle.scheduleScriptReference)) === null || _a === void 0 ? void 0 : _a.timeline; // eslint-disable-line deprecation/deprecation
176
+ if (0 !== (0, core_common_1.compareIModelTileTreeIds)(newId, this._id.treeId) || this._forceNoInstancing !== this._id.forceNoInstancing || timeline !== this._id.timeline) {
174
177
  this._id = {
175
178
  modelId: this._id.modelId,
176
179
  is3d: this._id.is3d,
177
180
  treeId: newId,
178
181
  isPlanProjection: this._id.isPlanProjection,
179
182
  forceNoInstancing: this._forceNoInstancing,
183
+ timeline,
180
184
  };
181
185
  this._owner = primaryTreeSupplier.getOwner(this._id, this.model.iModel);
182
186
  }
183
187
  return this._owner;
184
188
  }
185
189
  createTreeId(view, modelId) {
186
- var _a, _b, _c;
190
+ var _a, _b, _c, _d;
187
191
  if (this._sectionClip) {
188
192
  // We do this each time in case the ClipStyle's overrides are modified.
189
193
  // ###TODO: can we avoid that? Event listeners maybe?
@@ -196,13 +200,12 @@ class PrimaryTreeReference extends internal_1.TileTreeReference {
196
200
  forceSurfaceDiscard: true,
197
201
  };
198
202
  }
199
- const script = view.displayStyle.scheduleState;
200
- const animationId = undefined !== script ? script.getModelAnimationId(modelId) : undefined;
201
- const renderMode = (_a = this._viewFlagOverrides.renderMode) !== null && _a !== void 0 ? _a : view.viewFlags.renderMode;
202
- const visibleEdges = (_b = this._viewFlagOverrides.visibleEdges) !== null && _b !== void 0 ? _b : view.viewFlags.visibleEdges;
203
+ const animationId = (_a = IModelApp_1.IModelApp.tileAdmin.getScriptInfoForTreeId(modelId, view.displayStyle.scheduleScriptReference)) === null || _a === void 0 ? void 0 : _a.animationId; // eslint-disable-line deprecation/deprecation
204
+ const renderMode = (_b = this._viewFlagOverrides.renderMode) !== null && _b !== void 0 ? _b : view.viewFlags.renderMode;
205
+ const visibleEdges = (_c = this._viewFlagOverrides.visibleEdges) !== null && _c !== void 0 ? _c : view.viewFlags.visibleEdges;
203
206
  const edgesRequired = visibleEdges || core_common_1.RenderMode.SmoothShade !== renderMode || IModelApp_1.IModelApp.tileAdmin.alwaysRequestEdges;
204
207
  const edges = edgesRequired ? IModelApp_1.IModelApp.tileAdmin.edgeOptions : false;
205
- const sectionCut = (_c = this._sectionClip) === null || _c === void 0 ? void 0 : _c.clipString;
208
+ const sectionCut = (_d = this._sectionClip) === null || _d === void 0 ? void 0 : _d.clipString;
206
209
  return { type: core_common_1.BatchType.Primary, edges, animationId, sectionCut };
207
210
  }
208
211
  computeBaseTransform(tree) {
@@ -217,7 +220,7 @@ class PrimaryTreeReference extends internal_1.TileTreeReference {
217
220
  class AnimatedTreeReference extends PrimaryTreeReference {
218
221
  constructor(view, model, transformNodeId) {
219
222
  super(view, model, false, transformNodeId);
220
- this._branchId = (0, RenderScheduleState_1.formatAnimationBranchId)(model.id, transformNodeId);
223
+ this._branchId = (0, GraphicBranch_1.formatAnimationBranchId)(model.id, transformNodeId);
221
224
  }
222
225
  computeBaseTransform(tree) {
223
226
  var _a;
@@ -441,7 +444,7 @@ class SpatialModelRefs {
441
444
  if (!ref)
442
445
  return;
443
446
  this._animatedRefs.length = 0;
444
- const nodeIds = script === null || script === void 0 ? void 0 : script.getTransformNodeIds(ref.model.id);
447
+ const nodeIds = script === null || script === void 0 ? void 0 : script.script.getTransformBatchIds(ref.model.id);
445
448
  if (nodeIds)
446
449
  for (const nodeId of nodeIds)
447
450
  this._animatedRefs.push(new AnimatedTreeReference(ref.view, ref.model, nodeId));
@@ -488,7 +491,7 @@ class SpatialRefs {
488
491
  this._refs = new Map();
489
492
  this._swapRefs = new Map();
490
493
  this._view = view;
491
- this._scheduleScript = view.displayStyle.scheduleState;
494
+ this._scheduleScript = view.displayStyle.scheduleScriptReference; // eslint-disable-line deprecation/deprecation
492
495
  this._sectionCut = this.getSectionCutFromView();
493
496
  }
494
497
  update() {
@@ -518,11 +521,13 @@ class SpatialRefs {
518
521
  this._allLoaded = true;
519
522
  this.updateModels();
520
523
  }
521
- const script = this._view.displayStyle.scheduleState;
522
- if (script !== this._scheduleScript) {
523
- this._scheduleScript = script;
524
- for (const ref of this._refs.values())
525
- ref.updateAnimated(script);
524
+ const curScript = this._view.displayStyle.scheduleScriptReference; // eslint-disable-line deprecation/deprecation
525
+ const prevScript = this._scheduleScript;
526
+ if (curScript !== prevScript) {
527
+ this._scheduleScript = curScript;
528
+ if (!curScript || !prevScript || !curScript.script.equals(prevScript.script))
529
+ for (const ref of this._refs.values())
530
+ ref.updateAnimated(curScript);
526
531
  }
527
532
  const sectionCut = this.getSectionCutFromView();
528
533
  if ((sectionCut === null || sectionCut === void 0 ? void 0 : sectionCut.clipString) !== ((_a = this._sectionCut) === null || _a === void 0 ? void 0 : _a.clipString)) {
@@ -1 +1 @@
1
- {"version":3,"file":"PrimaryTileTree.js","sourceRoot":"","sources":["../../../src/tile/PrimaryTileTree.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 Tiles\r\n */\r\n\r\nimport { assert, compareBooleans, compareStrings, Id64String } from \"@itwin/core-bentley\";\r\nimport {\r\n BatchType, compareIModelTileTreeIds, FeatureAppearance, FeatureAppearanceProvider, HiddenLine, iModelTileTreeIdToString, MapLayerSettings, ModelMapLayerSettings, PrimaryTileTreeId, RenderMode, SpatialClassifier, ViewFlagOverrides, ViewFlagsProperties,\r\n} from \"@itwin/core-common\";\r\nimport { Geometry, Range3d, StringifiedClipVector, Transform } from \"@itwin/core-geometry\";\r\nimport { DisplayStyleState } from \"../DisplayStyleState\";\r\nimport { IModelApp } from \"../IModelApp\";\r\nimport { IModelConnection } from \"../IModelConnection\";\r\nimport { GeometricModel3dState, GeometricModelState } from \"../ModelState\";\r\nimport { AnimationNodeId } from \"../render/GraphicBranch\";\r\nimport { RenderClipVolume } from \"../render/RenderClipVolume\";\r\nimport { formatAnimationBranchId, RenderScheduleState } from \"../RenderScheduleState\";\r\nimport { SpatialViewState } from \"../SpatialViewState\";\r\nimport { SceneContext } from \"../ViewContext\";\r\nimport { ModelDisplayTransformProvider, ViewState, ViewState3d } from \"../ViewState\";\r\nimport {\r\n IModelTileTree, IModelTileTreeParams, iModelTileTreeParamsFromJSON, MapLayerTileTreeReference, TileDrawArgs, TileGraphicType, TileTree, TileTreeOwner, TileTreeReference,\r\n TileTreeSupplier,\r\n} from \"./internal\";\r\n\r\ninterface PrimaryTreeId {\r\n readonly treeId: PrimaryTileTreeId;\r\n readonly modelId: Id64String;\r\n readonly is3d: boolean;\r\n readonly isPlanProjection: boolean;\r\n readonly forceNoInstancing: boolean;\r\n}\r\n\r\nclass PlanProjectionTileTree extends IModelTileTree {\r\n public readonly baseElevation: number;\r\n\r\n public constructor(params: IModelTileTreeParams, treeId: PrimaryTileTreeId, baseElevation: number) {\r\n super(params, treeId);\r\n this.baseElevation = baseElevation;\r\n }\r\n}\r\n\r\nclass PrimaryTreeSupplier implements TileTreeSupplier {\r\n public constructor() {\r\n }\r\n\r\n public compareTileTreeIds(lhs: PrimaryTreeId, rhs: PrimaryTreeId): number {\r\n // NB: we don't compare isPlanProjection or is3d - they should always have the same value for a given modelId.\r\n let cmp = compareStrings(lhs.modelId, rhs.modelId);\r\n if (0 === cmp) {\r\n cmp = compareIModelTileTreeIds(lhs.treeId, rhs.treeId);\r\n if (0 === cmp)\r\n cmp = compareBooleans(lhs.forceNoInstancing, rhs.forceNoInstancing);\r\n }\r\n\r\n return cmp;\r\n }\r\n\r\n public async createTileTree(id: PrimaryTreeId, iModel: IModelConnection): Promise<TileTree | undefined> {\r\n const treeId = id.treeId;\r\n const idStr = iModelTileTreeIdToString(id.modelId, treeId, IModelApp.tileAdmin);\r\n const props = await IModelApp.tileAdmin.requestTileTreeProps(iModel, idStr);\r\n\r\n const options = {\r\n edges: treeId.edges,\r\n allowInstancing: undefined === treeId.animationId && !treeId.enforceDisplayPriority && !treeId.sectionCut && !id.forceNoInstancing,\r\n is3d: id.is3d,\r\n batchType: BatchType.Primary,\r\n };\r\n\r\n const params = iModelTileTreeParamsFromJSON(props, iModel, id.modelId, options);\r\n if (!id.isPlanProjection)\r\n return new IModelTileTree(params, id.treeId);\r\n\r\n let elevation = 0;\r\n try {\r\n const ranges = await iModel.models.queryModelRanges(id.modelId);\r\n if (1 === ranges.length) {\r\n const range = Range3d.fromJSON(ranges[0]);\r\n const lo = range.low.z;\r\n const hi = range.high.z;\r\n if (lo <= hi)\r\n elevation = (lo + hi) / 2;\r\n }\r\n } catch (_err) {\r\n //\r\n }\r\n\r\n return new PlanProjectionTileTree(params, id.treeId, elevation);\r\n }\r\n\r\n public getOwner(id: PrimaryTreeId, iModel: IModelConnection): TileTreeOwner {\r\n return iModel.tiles.getTileTreeOwner(id, this);\r\n }\r\n\r\n public addModelsAnimatedByScript(modelIds: Set<Id64String>, scriptSourceId: Id64String, trees: Iterable<{ id: PrimaryTreeId, owner: TileTreeOwner }>): void {\r\n for (const tree of trees)\r\n if (tree.id.treeId.animationId === scriptSourceId)\r\n modelIds.add(tree.id.modelId);\r\n }\r\n\r\n public addSpatialModels(modelIds: Set<Id64String>, trees: Iterable<{ id: PrimaryTreeId, owner: TileTreeOwner }>): void {\r\n for (const tree of trees)\r\n if (tree.id.is3d)\r\n modelIds.add(tree.id.modelId);\r\n }\r\n}\r\n\r\nconst primaryTreeSupplier = new PrimaryTreeSupplier();\r\n\r\n/** Find all extant tile trees associated with the specified model Ids and dispose of them.\r\n * This is used by BriefcaseConnection when a GraphicalEditingScope is exited or after a change to the models' geometry guids\r\n * is committed, undone, redone, or merged.\r\n * @internal\r\n */\r\nexport function disposeTileTreesForGeometricModels(modelIds: Set<Id64String>, iModel: IModelConnection): void {\r\n const trees = iModel.tiles.getTreeOwnersForSupplier(primaryTreeSupplier);\r\n for (const kvp of trees) {\r\n const id = kvp.id as PrimaryTreeId;\r\n assert(undefined !== id.modelId);\r\n if (modelIds.has(id.modelId))\r\n kvp.owner.dispose();\r\n }\r\n}\r\n\r\nclass PrimaryTreeReference extends TileTreeReference {\r\n public readonly view: ViewState;\r\n public readonly model: GeometricModelState;\r\n /** Chiefly for debugging - disables iteration of this reference in SpatialModelRefs to e.g. omit the reference from the scene. */\r\n public deactivated = false;\r\n protected _viewFlagOverrides: ViewFlagOverrides;\r\n protected _id: PrimaryTreeId;\r\n private _owner: TileTreeOwner;\r\n private readonly _sectionClip?: StringifiedClipVector;\r\n private readonly _sectionCutAppearanceProvider?: FeatureAppearanceProvider;\r\n private _forceNoInstancing: boolean;\r\n protected readonly _animationTransformNodeId?: number;\r\n\r\n public constructor(view: ViewState, model: GeometricModelState, planProjection: boolean, transformNodeId: number | undefined, sectionClip?: StringifiedClipVector) {\r\n super();\r\n this.view = view;\r\n this.model = model;\r\n this._animationTransformNodeId = transformNodeId;\r\n\r\n this._sectionClip = sectionClip;\r\n this._viewFlagOverrides = { ...model.jsonProperties.viewFlagOverrides };\r\n if (sectionClip) {\r\n // Clipping will be applied on backend; don't clip out cut geometry.\r\n this._viewFlagOverrides.clipVolume = false;\r\n this._sectionCutAppearanceProvider = FeatureAppearanceProvider.supplement((app: FeatureAppearance) => {\r\n const cutApp = this.view.displayStyle.settings.clipStyle.cutStyle.appearance;\r\n return cutApp ? app.extendAppearance(cutApp) : app;\r\n });\r\n }\r\n\r\n this._forceNoInstancing = false;\r\n if (!IModelApp.renderSystem.supportsNonuniformScaledInstancing) {\r\n this.checkForceNoInstancing(view.modelDisplayTransformProvider);\r\n view.onModelDisplayTransformProviderChanged.addListener((provider: ModelDisplayTransformProvider | undefined) => this.checkForceNoInstancing(provider));\r\n }\r\n\r\n this._id = {\r\n modelId: model.id,\r\n is3d: model.is3d,\r\n treeId: this.createTreeId(view, model.id),\r\n isPlanProjection: planProjection,\r\n forceNoInstancing: this._forceNoInstancing,\r\n };\r\n\r\n this._owner = primaryTreeSupplier.getOwner(this._id, model.iModel);\r\n }\r\n\r\n private checkForceNoInstancing(provider: ModelDisplayTransformProvider | undefined) {\r\n this._forceNoInstancing = false;\r\n // If this model has a display transform with a non-uniform scale then instancing needs to be forced off when using WebGL1.\r\n if (undefined !== provider) {\r\n const tf = provider.getModelDisplayTransform(this.model.id, Transform.createIdentity());\r\n const sx = tf.matrix.getColumn(0).magnitudeSquared();\r\n const sy = tf.matrix.getColumn(1).magnitudeSquared();\r\n const sz = tf.matrix.getColumn(2).magnitudeSquared();\r\n if (Math.abs(sx - sy) > Geometry.smallMetricDistance || Math.abs(sx - sz) > Geometry.smallMetricDistance)\r\n this._forceNoInstancing = true;\r\n }\r\n }\r\n\r\n protected override getAnimationTransformNodeId() {\r\n return this._animationTransformNodeId ?? AnimationNodeId.Untransformed;\r\n }\r\n\r\n protected override getViewFlagOverrides(_tree: TileTree) {\r\n return this._viewFlagOverrides;\r\n }\r\n\r\n protected override getAppearanceProvider(_tree: TileTree): FeatureAppearanceProvider | undefined {\r\n if (this._sectionCutAppearanceProvider && this.view.displayStyle.settings.clipStyle.cutStyle.appearance)\r\n return this._sectionCutAppearanceProvider;\r\n\r\n return undefined;\r\n }\r\n\r\n protected override getHiddenLineSettings(_tree: TileTree): HiddenLine.Settings | undefined {\r\n return this._sectionClip ? this.view.displayStyle.settings.clipStyle.cutStyle.hiddenLine : undefined;\r\n }\r\n\r\n public override get castsShadows() {\r\n return true;\r\n }\r\n\r\n protected get isPlanProjection(): boolean {\r\n return false;\r\n }\r\n\r\n protected override getClipVolume(_tree: TileTree): RenderClipVolume | undefined {\r\n // ###TODO: reduce frequency with which getModelClip() is called\r\n return this.view.is3d() && !this._sectionClip ? this.view.getModelClip(this.model.id) : undefined;\r\n }\r\n\r\n public override createDrawArgs(context: SceneContext): TileDrawArgs | undefined {\r\n const args = super.createDrawArgs(context);\r\n if (args)\r\n args.intersectionClip = this._sectionClip;\r\n\r\n return args;\r\n }\r\n\r\n public get treeOwner(): TileTreeOwner {\r\n const newId = this.createTreeId(this.view, this._id.modelId);\r\n if (0 !== compareIModelTileTreeIds(newId, this._id.treeId) || this._forceNoInstancing !== this._id.forceNoInstancing) {\r\n this._id = {\r\n modelId: this._id.modelId,\r\n is3d: this._id.is3d,\r\n treeId: newId,\r\n isPlanProjection: this._id.isPlanProjection,\r\n forceNoInstancing: this._forceNoInstancing,\r\n };\r\n\r\n this._owner = primaryTreeSupplier.getOwner(this._id, this.model.iModel);\r\n }\r\n\r\n return this._owner;\r\n }\r\n\r\n protected createTreeId(view: ViewState, modelId: Id64String): PrimaryTileTreeId {\r\n if (this._sectionClip) {\r\n // We do this each time in case the ClipStyle's overrides are modified.\r\n // ###TODO: can we avoid that? Event listeners maybe?\r\n this._viewFlagOverrides = {\r\n ...this.view.displayStyle.settings.clipStyle.cutStyle.viewflags,\r\n // Do not clip out the cut geometry intersecting the clip planes.\r\n clipVolume: false,\r\n // The cut geometry is planar - it should win a z-fight.\r\n // Also we need to preserve this flag if this is a plan projection tile tree reference.\r\n forceSurfaceDiscard: true,\r\n };\r\n }\r\n\r\n const script = view.displayStyle.scheduleState;\r\n const animationId = undefined !== script ? script.getModelAnimationId(modelId) : undefined;\r\n\r\n const renderMode = this._viewFlagOverrides.renderMode ?? view.viewFlags.renderMode;\r\n const visibleEdges = this._viewFlagOverrides.visibleEdges ?? view.viewFlags.visibleEdges;\r\n const edgesRequired = visibleEdges || RenderMode.SmoothShade !== renderMode || IModelApp.tileAdmin.alwaysRequestEdges;\r\n const edges = edgesRequired ? IModelApp.tileAdmin.edgeOptions : false;\r\n const sectionCut = this._sectionClip?.clipString;\r\n return { type: BatchType.Primary, edges, animationId, sectionCut };\r\n }\r\n\r\n protected computeBaseTransform(tree: TileTree): Transform {\r\n return super.computeTransform(tree);\r\n }\r\n\r\n protected override computeTransform(tree: TileTree): Transform {\r\n const tf = this.computeBaseTransform(tree);\r\n return this.view.getModelDisplayTransform(this.model.id, tf);\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport class AnimatedTreeReference extends PrimaryTreeReference {\r\n private readonly _branchId: string;\r\n\r\n public constructor(view: ViewState, model: GeometricModelState, transformNodeId: number) {\r\n super(view, model, false, transformNodeId);\r\n this._branchId = formatAnimationBranchId(model.id, transformNodeId);\r\n }\r\n\r\n protected override computeBaseTransform(tree: TileTree): Transform {\r\n const tf = super.computeBaseTransform(tree);\r\n const style = this.view.displayStyle;\r\n const script = style.scheduleScript;\r\n if (undefined === script || undefined === this._animationTransformNodeId)\r\n return tf;\r\n\r\n const timePoint = style.settings.timePoint ?? script.duration.low;\r\n const animTf = script.getTransform(this._id.modelId, this._animationTransformNodeId, timePoint);\r\n if (animTf)\r\n animTf.multiplyTransformTransform(tf, tf);\r\n\r\n return tf;\r\n }\r\n\r\n public override createDrawArgs(context: SceneContext): TileDrawArgs | undefined {\r\n const animBranch = context.viewport.target.animationBranches?.branchStates.get(this._branchId);\r\n if (animBranch && animBranch.omit)\r\n return undefined;\r\n\r\n const args = super.createDrawArgs(context);\r\n if (args?.tree && undefined !== this._animationTransformNodeId) {\r\n assert(args.tree instanceof IModelTileTree);\r\n args.boundingRange = args.tree.getTransformNodeRange(this._animationTransformNodeId);\r\n }\r\n\r\n return args;\r\n }\r\n}\r\n\r\nclass PlanProjectionTreeReference extends PrimaryTreeReference {\r\n private get _view3d() { return this.view as ViewState3d; }\r\n private readonly _baseTransform = Transform.createIdentity();\r\n\r\n public constructor(view: ViewState3d, model: GeometricModelState, sectionCut?: StringifiedClipVector) {\r\n super(view, model, true, undefined, sectionCut);\r\n this._viewFlagOverrides.forceSurfaceDiscard = true;\r\n }\r\n\r\n public override get castsShadows() {\r\n return false;\r\n }\r\n\r\n protected override get isPlanProjection(): boolean {\r\n return true;\r\n }\r\n\r\n public override createDrawArgs(context: SceneContext): TileDrawArgs | undefined {\r\n const args = super.createDrawArgs(context);\r\n if (undefined !== args && this._id.treeId.enforceDisplayPriority) {\r\n args.drawGraphics = () => { // eslint-disable-line @typescript-eslint/unbound-method\r\n const graphics = args.produceGraphics();\r\n if (undefined !== graphics) {\r\n const settings = this.getSettings();\r\n const asOverlay = undefined !== settings && settings.overlay;\r\n const transparency = settings?.transparency || 0;\r\n\r\n let elevation = settings?.elevation;\r\n if (undefined === elevation) {\r\n const tree = this.treeOwner.tileTree;\r\n if (tree) {\r\n assert(tree instanceof PlanProjectionTileTree);\r\n elevation = tree.baseElevation;\r\n } else {\r\n elevation = 0;\r\n }\r\n }\r\n\r\n context.outputGraphic(context.target.renderSystem.createGraphicLayerContainer(graphics, asOverlay, transparency, elevation));\r\n }\r\n };\r\n }\r\n\r\n return args;\r\n }\r\n\r\n protected override computeBaseTransform(tree: TileTree): Transform {\r\n assert(tree instanceof PlanProjectionTileTree);\r\n const transform = tree.iModelTransform.clone(this._baseTransform);\r\n\r\n const elevation = this.getSettings()?.elevation;\r\n if (undefined !== elevation)\r\n transform.origin.z = elevation;\r\n\r\n return transform;\r\n }\r\n\r\n public override draw(args: TileDrawArgs): void {\r\n const settings = this.getSettings();\r\n if (undefined === settings || settings.enforceDisplayPriority || !settings.overlay)\r\n super.draw(args);\r\n else\r\n args.context.withGraphicType(TileGraphicType.Overlay, () => args.tree.draw(args));\r\n }\r\n\r\n private getSettings() {\r\n return this._view3d.getDisplayStyle3d().settings.getPlanProjectionSettings(this.model.id);\r\n }\r\n\r\n protected override createTreeId(view: ViewState, modelId: Id64String): PrimaryTileTreeId {\r\n const id = super.createTreeId(view, modelId);\r\n const settings = this.getSettings();\r\n if (undefined !== settings && settings.enforceDisplayPriority)\r\n id.enforceDisplayPriority = true;\r\n\r\n return id;\r\n }\r\n}\r\n\r\nfunction isPlanProjection(view: ViewState, model: GeometricModelState): boolean {\r\n const model3d = view.is3d() ? model.asGeometricModel3d : undefined;\r\n return undefined !== model3d && model3d.isPlanProjection;\r\n}\r\n\r\nfunction createTreeRef(view: ViewState, model: GeometricModelState, sectionCut: StringifiedClipVector | undefined): PrimaryTreeReference {\r\n if (false !== IModelApp.renderSystem.options.planProjections && isPlanProjection(view, model))\r\n return new PlanProjectionTreeReference(view as ViewState3d, model, sectionCut);\r\n\r\n return new PrimaryTreeReference(view, model, false, undefined, sectionCut);\r\n}\r\n\r\n/** @internal */\r\nexport function createPrimaryTileTreeReference(view: ViewState, model: GeometricModelState): PrimaryTreeReference {\r\n return createTreeRef(view, model, undefined);\r\n}\r\n\r\nclass MaskTreeReference extends TileTreeReference {\r\n protected _id: PrimaryTreeId;\r\n private _owner: TileTreeOwner;\r\n public readonly model: GeometricModelState;\r\n public override get castsShadows() { return false; }\r\n public constructor(view: ViewState, model: GeometricModelState) {\r\n super();\r\n this.model = model;\r\n this._id = {\r\n modelId: model.id,\r\n is3d: model.is3d,\r\n treeId: this.createTreeId(),\r\n isPlanProjection: isPlanProjection(view, model),\r\n forceNoInstancing: false,\r\n };\r\n\r\n this._owner = primaryTreeSupplier.getOwner(this._id, model.iModel);\r\n }\r\n\r\n public get treeOwner(): TileTreeOwner {\r\n const newId = this.createTreeId();\r\n if (0 !== compareIModelTileTreeIds(newId, this._id.treeId)) {\r\n this._id = { modelId: this._id.modelId, is3d: this._id.is3d, treeId: newId, isPlanProjection: false, forceNoInstancing: false };\r\n this._owner = primaryTreeSupplier.getOwner(this._id, this.model.iModel);\r\n }\r\n\r\n return this._owner;\r\n }\r\n protected createTreeId(): PrimaryTileTreeId {\r\n return { type: BatchType.Primary, edges: false };\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport function createMaskTreeReference(view: ViewState, model: GeometricModelState): TileTreeReference {\r\n return new MaskTreeReference(view, model);\r\n}\r\n\r\n/** @internal */\r\nexport class ModelMapLayerTileTreeReference extends MapLayerTileTreeReference {\r\n private _id: PrimaryTreeId;\r\n private _owner: TileTreeOwner;\r\n public get isPlanar() { return true; }\r\n public get activeClassifier() { return this._classifier; }\r\n public constructor(layerSettings: MapLayerSettings, private _classifier: SpatialClassifier, layerIndex: number, iModel: IModelConnection, private _source?: DisplayStyleState) {\r\n super(layerSettings, layerIndex, iModel);\r\n this._id = {\r\n modelId: _classifier.modelId,\r\n is3d: true, // model.is3d,\r\n treeId: this.createTreeId(),\r\n isPlanProjection: false, // isPlanProjection(view, model),\r\n forceNoInstancing: false,\r\n };\r\n\r\n this._owner = primaryTreeSupplier.getOwner(this._id, this.iModel);\r\n }\r\n\r\n protected createTreeId(): PrimaryTileTreeId {\r\n return { type: BatchType.Primary, edges: false };\r\n }\r\n\r\n public get treeOwner(): TileTreeOwner {\r\n const newId = this.createTreeId();\r\n if (0 !== compareIModelTileTreeIds(newId, this._id.treeId)) {\r\n this._id = { modelId: this._id.modelId, is3d: this._id.is3d, treeId: newId, isPlanProjection: false, forceNoInstancing: false };\r\n this._owner = primaryTreeSupplier.getOwner(this._id, this.iModel);\r\n }\r\n\r\n return this._owner;\r\n }\r\n public get viewFlags(): Partial<ViewFlagsProperties> {\r\n return {\r\n renderMode: RenderMode.SmoothShade,\r\n transparency: true, // Igored for point clouds as they don't support transparency.\r\n textures: true,\r\n lighting: false,\r\n shadows: false,\r\n monochrome: false,\r\n materials: false,\r\n ambientOcclusion: false,\r\n visibleEdges: true,\r\n hiddenEdges: false,\r\n fill: true,\r\n };\r\n }\r\n}\r\n/** @internal */\r\nexport function createModelMapLayerTileTreeReference(layerSettings: ModelMapLayerSettings, layerIndex: number, iModel: IModelConnection): ModelMapLayerTileTreeReference | undefined {\r\n const classifier = SpatialClassifier.fromModelMapLayer(layerSettings);\r\n return classifier ? new ModelMapLayerTileTreeReference(layerSettings, classifier, layerIndex, iModel) : undefined;\r\n}\r\n\r\n/** Provides [[TileTreeReference]]s for the loaded models present in a [[SpatialViewState]]'s [[ModelSelectorState]].\r\n * @internal\r\n */\r\nexport interface SpatialTileTreeReferences extends Iterable<TileTreeReference> {\r\n /** Supplies an iterator over all of the [[TileTreeReference]]s. */\r\n [Symbol.iterator](): Iterator<TileTreeReference>;\r\n /** Requests that the set of [[TileTreeReference]]s be updated to match the current state of the view, e.g., after the model selector's contents have changed. */\r\n update(): void;\r\n /** @see SpatialViewState.setTileTreeReferencesDeactivated. */\r\n setDeactivated(modelIds: Id64String | Id64String[] | undefined, deactivated: boolean | undefined, refs: \"all\" | \"animated\" | \"primary\" | \"section\" | number[]): void;\r\n}\r\n\r\n/** Provides [[TileTreeReference]]s for the loaded models present in a [[SpatialViewState]]'s [[ModelSelectorState]].\r\n * @internal\r\n */\r\nexport namespace SpatialTileTreeReferences {\r\n /** Create a SpatialTileTreeReferences object reflecting the contents of the specified view. */\r\n export function create(view: SpatialViewState): SpatialTileTreeReferences {\r\n return new SpatialRefs(view);\r\n }\r\n}\r\n\r\n/** Represents the [[TileTreeReference]]s associated with one model in a [[SpatialTileTreeReferences]]. */\r\nclass SpatialModelRefs implements Iterable<TileTreeReference> {\r\n /** The TileTreeReference representing the model's primary content. */\r\n private readonly _modelRef: TileTreeReference;\r\n /** TileTreeReferences representing nodes transformed by the view's schedule script. */\r\n private readonly _animatedRefs: PrimaryTreeReference[] = [];\r\n /** TileTreeReference providing cut geometry intersecting the view's clip volume. */\r\n private _sectionCutRef?: PrimaryTreeReference;\r\n /** Whether `this._modelRef` is a [[PrimaryTreeReference]] (as opposed to, e.g., a reality model tree reference). */\r\n private readonly _isPrimaryRef: boolean;\r\n\r\n public constructor(model: GeometricModel3dState, view: SpatialViewState) {\r\n this._modelRef = model.createTileTreeReference(view);\r\n this._isPrimaryRef = this._modelRef instanceof PrimaryTreeReference;\r\n }\r\n\r\n public *[Symbol.iterator](): Iterator<TileTreeReference> {\r\n if (!this._primaryRef || !this._primaryRef.deactivated)\r\n yield this._modelRef;\r\n\r\n for (const animated of this._animatedRefs)\r\n if (!animated.deactivated)\r\n yield animated;\r\n\r\n if (this._sectionCutRef && !this._sectionCutRef.deactivated)\r\n yield this._sectionCutRef;\r\n }\r\n\r\n public updateAnimated(script: RenderScheduleState | undefined): void {\r\n const ref = this._primaryRef;\r\n if (!ref)\r\n return;\r\n\r\n this._animatedRefs.length = 0;\r\n const nodeIds = script?.getTransformNodeIds(ref.model.id);\r\n if (nodeIds)\r\n for (const nodeId of nodeIds)\r\n this._animatedRefs.push(new AnimatedTreeReference(ref.view, ref.model, nodeId));\r\n }\r\n\r\n public updateSectionCut(clip: StringifiedClipVector | undefined): void {\r\n const ref = this._primaryRef;\r\n if (!ref) {\r\n assert(undefined === this._sectionCutRef);\r\n return;\r\n }\r\n\r\n // If the clip isn't supposed to apply to this model, don't produce cut geometry.\r\n const vfJson = clip ? ref.model.jsonProperties.viewFlagOverrides : undefined;\r\n const vfOvrs = vfJson ? { ...vfJson } : undefined;\r\n if (vfOvrs && !vfOvrs.clipVolume)\r\n clip = undefined;\r\n\r\n this._sectionCutRef = clip ? createTreeRef(ref.view, ref.model, clip) : undefined;\r\n }\r\n\r\n public setDeactivated(deactivated: boolean | undefined, which: \"all\" | \"animated\" | \"primary\" | \"section\" | number[]): void {\r\n if (typeof which !== \"string\") {\r\n for (const index of which)\r\n if (this._animatedRefs[index])\r\n this._animatedRefs[index].deactivated = deactivated ?? !this._animatedRefs[index].deactivated;\r\n\r\n return;\r\n }\r\n\r\n if ((\"all\" === which || \"primary\" === which) && this._primaryRef)\r\n this._primaryRef.deactivated = deactivated ?? !this._primaryRef.deactivated;\r\n\r\n if ((\"all\" === which || \"section\" === which) && this._sectionCutRef)\r\n this._sectionCutRef.deactivated = deactivated ?? !this._sectionCutRef.deactivated;\r\n\r\n if ((\"all\" === which || \"animated\" === which))\r\n for (const ref of this._animatedRefs)\r\n ref.deactivated = deactivated ?? !ref.deactivated;\r\n }\r\n\r\n private get _primaryRef(): PrimaryTreeReference | undefined {\r\n if (!this._isPrimaryRef)\r\n return undefined;\r\n\r\n assert(this._modelRef instanceof PrimaryTreeReference);\r\n return this._modelRef;\r\n }\r\n}\r\n\r\n/** Provides [[TileTreeReference]]s for the loaded models present in a [[SpatialViewState]]'s [[ModelSelectorState]]. */\r\nclass SpatialRefs implements SpatialTileTreeReferences {\r\n private _allLoaded = false;\r\n private readonly _view: SpatialViewState;\r\n private _refs = new Map<Id64String, SpatialModelRefs>();\r\n private _swapRefs = new Map<Id64String, SpatialModelRefs>();\r\n private _scheduleScript?: RenderScheduleState;\r\n private _sectionCut?: StringifiedClipVector;\r\n\r\n public constructor(view: SpatialViewState) {\r\n this._view = view;\r\n this._scheduleScript = view.displayStyle.scheduleState;\r\n this._sectionCut = this.getSectionCutFromView();\r\n }\r\n\r\n public update(): void {\r\n this._allLoaded = false;\r\n }\r\n\r\n public *[Symbol.iterator](): Iterator<TileTreeReference> {\r\n this.load();\r\n for (const modelRef of this._refs.values())\r\n for (const ref of modelRef)\r\n yield ref;\r\n }\r\n\r\n public setDeactivated(modelIds: Id64String | Id64String[] | undefined, deactivated: boolean, refs: \"all\" | \"animated\" | \"primary\" | \"section\" | number[]): void {\r\n if (undefined === modelIds) {\r\n for (const model of this._refs.values())\r\n model.setDeactivated(deactivated, refs);\r\n\r\n return;\r\n }\r\n\r\n if (typeof modelIds === \"string\")\r\n modelIds = [modelIds];\r\n\r\n for (const modelId of modelIds)\r\n this._refs.get(modelId)?.setDeactivated(deactivated, refs);\r\n }\r\n\r\n private load(): void {\r\n if (!this._allLoaded) {\r\n this._allLoaded = true;\r\n this.updateModels();\r\n }\r\n\r\n const script = this._view.displayStyle.scheduleState;\r\n if (script !== this._scheduleScript) {\r\n this._scheduleScript = script;\r\n for (const ref of this._refs.values())\r\n ref.updateAnimated(script);\r\n }\r\n\r\n const sectionCut = this.getSectionCutFromView();\r\n if (sectionCut?.clipString !== this._sectionCut?.clipString) {\r\n this._sectionCut = sectionCut;\r\n for (const ref of this._refs.values())\r\n ref.updateSectionCut(sectionCut);\r\n }\r\n }\r\n\r\n private getSectionCutFromView(): StringifiedClipVector | undefined {\r\n const wantCut = this._view.viewFlags.clipVolume && this._view.displayStyle.settings.clipStyle.produceCutGeometry;\r\n const clip = wantCut ? this._view.getViewClip() : undefined;\r\n return StringifiedClipVector.fromClipVector(clip);\r\n }\r\n\r\n /** Ensure this._refs contains a SpatialModelRefs for all loaded models in the model selector. */\r\n private updateModels(): void {\r\n const prev = this._refs;\r\n const cur = this._swapRefs;\r\n this._refs = cur;\r\n this._swapRefs = prev;\r\n cur.clear();\r\n\r\n for (const modelId of this._view.modelSelector.models) {\r\n let modelRefs = prev.get(modelId);\r\n if (!modelRefs) {\r\n const model = this._view.iModel.models.getLoaded(modelId)?.asGeometricModel3d;\r\n if (model) {\r\n modelRefs = new SpatialModelRefs(model, this._view);\r\n modelRefs.updateAnimated(this._scheduleScript);\r\n modelRefs.updateSectionCut(this._sectionCut);\r\n }\r\n }\r\n\r\n if (modelRefs)\r\n cur.set(modelId, modelRefs);\r\n }\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"PrimaryTileTree.js","sourceRoot":"","sources":["../../../src/tile/PrimaryTileTree.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 Tiles\r\n */\r\n\r\nimport {\r\n assert, compareBooleans, comparePossiblyUndefined, compareStrings, Id64String,\r\n} from \"@itwin/core-bentley\";\r\nimport {\r\n BatchType, compareIModelTileTreeIds, FeatureAppearance, FeatureAppearanceProvider, HiddenLine, iModelTileTreeIdToString, MapLayerSettings, ModelMapLayerSettings,\r\n PrimaryTileTreeId, RenderMode, RenderSchedule, SpatialClassifier, ViewFlagOverrides, ViewFlagsProperties,\r\n} from \"@itwin/core-common\";\r\nimport { Geometry, Range3d, StringifiedClipVector, Transform } from \"@itwin/core-geometry\";\r\nimport { DisplayStyleState } from \"../DisplayStyleState\";\r\nimport { IModelApp } from \"../IModelApp\";\r\nimport { IModelConnection } from \"../IModelConnection\";\r\nimport { GeometricModel3dState, GeometricModelState } from \"../ModelState\";\r\nimport { AnimationNodeId, formatAnimationBranchId } from \"../render/GraphicBranch\";\r\nimport { RenderClipVolume } from \"../render/RenderClipVolume\";\r\nimport { SpatialViewState } from \"../SpatialViewState\";\r\nimport { SceneContext } from \"../ViewContext\";\r\nimport { ModelDisplayTransformProvider, ViewState, ViewState3d } from \"../ViewState\";\r\nimport {\r\n IModelTileTree, IModelTileTreeParams, iModelTileTreeParamsFromJSON, MapLayerTileTreeReference, TileDrawArgs, TileGraphicType, TileTree, TileTreeOwner, TileTreeReference,\r\n TileTreeSupplier,\r\n} from \"./internal\";\r\n\r\ninterface PrimaryTreeId {\r\n treeId: PrimaryTileTreeId;\r\n modelId: Id64String;\r\n is3d: boolean;\r\n isPlanProjection: boolean;\r\n forceNoInstancing: boolean;\r\n timeline?: RenderSchedule.ModelTimeline;\r\n}\r\n\r\nclass PlanProjectionTileTree extends IModelTileTree {\r\n public readonly baseElevation: number;\r\n\r\n public constructor(params: IModelTileTreeParams, treeId: PrimaryTileTreeId, baseElevation: number) {\r\n super(params, treeId);\r\n this.baseElevation = baseElevation;\r\n }\r\n}\r\n\r\nclass PrimaryTreeSupplier implements TileTreeSupplier {\r\n public constructor() {\r\n }\r\n\r\n public compareTileTreeIds(lhs: PrimaryTreeId, rhs: PrimaryTreeId): number {\r\n // NB: we don't compare isPlanProjection or is3d - they should always have the same value for a given modelId.\r\n return compareStrings(lhs.modelId, rhs.modelId) || compareIModelTileTreeIds(lhs.treeId, rhs.treeId)\r\n || compareBooleans(lhs.forceNoInstancing, rhs.forceNoInstancing) || comparePossiblyUndefined((x, y) => x.compareTo(y), lhs.timeline, rhs.timeline);\r\n }\r\n\r\n public async createTileTree(id: PrimaryTreeId, iModel: IModelConnection): Promise<TileTree | undefined> {\r\n const treeId = id.treeId;\r\n const idStr = iModelTileTreeIdToString(id.modelId, treeId, IModelApp.tileAdmin);\r\n const props = await IModelApp.tileAdmin.requestTileTreeProps(iModel, idStr);\r\n\r\n // ###TODO remove restriction that animated tile trees can't contained instanced geometry.\r\n const isAnimated = undefined !== treeId.animationId || undefined !== id.timeline;\r\n const allowInstancing = !isAnimated && !treeId.enforceDisplayPriority && !treeId.sectionCut && !id.forceNoInstancing;\r\n const options = {\r\n edges: treeId.edges,\r\n allowInstancing,\r\n is3d: id.is3d,\r\n batchType: BatchType.Primary,\r\n timeline: id.timeline,\r\n };\r\n\r\n const params = iModelTileTreeParamsFromJSON(props, iModel, id.modelId, options);\r\n if (!id.isPlanProjection)\r\n return new IModelTileTree(params, id.treeId);\r\n\r\n let elevation = 0;\r\n try {\r\n const ranges = await iModel.models.queryModelRanges(id.modelId);\r\n if (1 === ranges.length) {\r\n const range = Range3d.fromJSON(ranges[0]);\r\n const lo = range.low.z;\r\n const hi = range.high.z;\r\n if (lo <= hi)\r\n elevation = (lo + hi) / 2;\r\n }\r\n } catch (_err) {\r\n //\r\n }\r\n\r\n return new PlanProjectionTileTree(params, id.treeId, elevation);\r\n }\r\n\r\n public getOwner(id: PrimaryTreeId, iModel: IModelConnection): TileTreeOwner {\r\n return iModel.tiles.getTileTreeOwner(id, this);\r\n }\r\n\r\n public addModelsAnimatedByScript(modelIds: Set<Id64String>, scriptSourceId: Id64String, trees: Iterable<{ id: PrimaryTreeId, owner: TileTreeOwner }>): void {\r\n // Note: This is invoked when an element hosting a schedule script is updated - it doesn't care about frontend schedule scripts.\r\n for (const tree of trees)\r\n if (scriptSourceId === tree.id.treeId.animationId)\r\n modelIds.add(tree.id.modelId);\r\n }\r\n\r\n public addSpatialModels(modelIds: Set<Id64String>, trees: Iterable<{ id: PrimaryTreeId, owner: TileTreeOwner }>): void {\r\n for (const tree of trees)\r\n if (tree.id.is3d)\r\n modelIds.add(tree.id.modelId);\r\n }\r\n}\r\n\r\nconst primaryTreeSupplier = new PrimaryTreeSupplier();\r\n\r\n/** Find all extant tile trees associated with the specified model Ids and dispose of them.\r\n * This is used by BriefcaseConnection when a GraphicalEditingScope is exited or after a change to the models' geometry guids\r\n * is committed, undone, redone, or merged.\r\n * @internal\r\n */\r\nexport function disposeTileTreesForGeometricModels(modelIds: Set<Id64String>, iModel: IModelConnection): void {\r\n const trees = iModel.tiles.getTreeOwnersForSupplier(primaryTreeSupplier);\r\n for (const kvp of trees) {\r\n const id = kvp.id as PrimaryTreeId;\r\n assert(undefined !== id.modelId);\r\n if (modelIds.has(id.modelId))\r\n kvp.owner.dispose();\r\n }\r\n}\r\n\r\nclass PrimaryTreeReference extends TileTreeReference {\r\n public readonly view: ViewState;\r\n public readonly model: GeometricModelState;\r\n /** Chiefly for debugging - disables iteration of this reference in SpatialModelRefs to e.g. omit the reference from the scene. */\r\n public deactivated = false;\r\n protected _viewFlagOverrides: ViewFlagOverrides;\r\n protected _id: PrimaryTreeId;\r\n private _owner: TileTreeOwner;\r\n private readonly _sectionClip?: StringifiedClipVector;\r\n private readonly _sectionCutAppearanceProvider?: FeatureAppearanceProvider;\r\n private _forceNoInstancing: boolean;\r\n protected readonly _animationTransformNodeId?: number;\r\n\r\n public constructor(view: ViewState, model: GeometricModelState, planProjection: boolean, transformNodeId: number | undefined, sectionClip?: StringifiedClipVector) {\r\n super();\r\n this.view = view;\r\n this.model = model;\r\n this._animationTransformNodeId = transformNodeId;\r\n\r\n this._sectionClip = sectionClip;\r\n this._viewFlagOverrides = { ...model.jsonProperties.viewFlagOverrides };\r\n if (sectionClip) {\r\n // Clipping will be applied on backend; don't clip out cut geometry.\r\n this._viewFlagOverrides.clipVolume = false;\r\n this._sectionCutAppearanceProvider = FeatureAppearanceProvider.supplement((app: FeatureAppearance) => {\r\n const cutApp = this.view.displayStyle.settings.clipStyle.cutStyle.appearance;\r\n return cutApp ? app.extendAppearance(cutApp) : app;\r\n });\r\n }\r\n\r\n this._forceNoInstancing = false;\r\n if (!IModelApp.renderSystem.supportsNonuniformScaledInstancing) {\r\n this.checkForceNoInstancing(view.modelDisplayTransformProvider);\r\n view.onModelDisplayTransformProviderChanged.addListener((provider: ModelDisplayTransformProvider | undefined) => this.checkForceNoInstancing(provider));\r\n }\r\n\r\n const scriptInfo = IModelApp.tileAdmin.getScriptInfoForTreeId(model.id, view.displayStyle.scheduleScriptReference); // eslint-disable-line deprecation/deprecation\r\n this._id = {\r\n modelId: model.id,\r\n is3d: model.is3d,\r\n treeId: this.createTreeId(view, model.id),\r\n isPlanProjection: planProjection,\r\n forceNoInstancing: this._forceNoInstancing,\r\n timeline: scriptInfo?.timeline,\r\n };\r\n\r\n this._owner = primaryTreeSupplier.getOwner(this._id, model.iModel);\r\n }\r\n\r\n private checkForceNoInstancing(provider: ModelDisplayTransformProvider | undefined) {\r\n this._forceNoInstancing = false;\r\n // If this model has a display transform with a non-uniform scale then instancing needs to be forced off when using WebGL1.\r\n if (undefined !== provider) {\r\n const tf = provider.getModelDisplayTransform(this.model.id, Transform.createIdentity());\r\n const sx = tf.matrix.getColumn(0).magnitudeSquared();\r\n const sy = tf.matrix.getColumn(1).magnitudeSquared();\r\n const sz = tf.matrix.getColumn(2).magnitudeSquared();\r\n if (Math.abs(sx - sy) > Geometry.smallMetricDistance || Math.abs(sx - sz) > Geometry.smallMetricDistance)\r\n this._forceNoInstancing = true;\r\n }\r\n }\r\n\r\n protected override getAnimationTransformNodeId() {\r\n return this._animationTransformNodeId ?? AnimationNodeId.Untransformed;\r\n }\r\n\r\n protected override getViewFlagOverrides(_tree: TileTree) {\r\n return this._viewFlagOverrides;\r\n }\r\n\r\n protected override getAppearanceProvider(_tree: TileTree): FeatureAppearanceProvider | undefined {\r\n if (this._sectionCutAppearanceProvider && this.view.displayStyle.settings.clipStyle.cutStyle.appearance)\r\n return this._sectionCutAppearanceProvider;\r\n\r\n return undefined;\r\n }\r\n\r\n protected override getHiddenLineSettings(_tree: TileTree): HiddenLine.Settings | undefined {\r\n return this._sectionClip ? this.view.displayStyle.settings.clipStyle.cutStyle.hiddenLine : undefined;\r\n }\r\n\r\n public override get castsShadows() {\r\n return true;\r\n }\r\n\r\n protected get isPlanProjection(): boolean {\r\n return false;\r\n }\r\n\r\n protected override getClipVolume(_tree: TileTree): RenderClipVolume | undefined {\r\n // ###TODO: reduce frequency with which getModelClip() is called\r\n return this.view.is3d() && !this._sectionClip ? this.view.getModelClip(this.model.id) : undefined;\r\n }\r\n\r\n public override createDrawArgs(context: SceneContext): TileDrawArgs | undefined {\r\n const args = super.createDrawArgs(context);\r\n if (args)\r\n args.intersectionClip = this._sectionClip;\r\n\r\n return args;\r\n }\r\n\r\n public get treeOwner(): TileTreeOwner {\r\n const newId = this.createTreeId(this.view, this._id.modelId);\r\n const timeline = IModelApp.tileAdmin.getScriptInfoForTreeId(this._id.modelId, this.view.displayStyle.scheduleScriptReference)?.timeline; // eslint-disable-line deprecation/deprecation\r\n if (0 !== compareIModelTileTreeIds(newId, this._id.treeId) || this._forceNoInstancing !== this._id.forceNoInstancing || timeline !== this._id.timeline) {\r\n this._id = {\r\n modelId: this._id.modelId,\r\n is3d: this._id.is3d,\r\n treeId: newId,\r\n isPlanProjection: this._id.isPlanProjection,\r\n forceNoInstancing: this._forceNoInstancing,\r\n timeline,\r\n };\r\n\r\n this._owner = primaryTreeSupplier.getOwner(this._id, this.model.iModel);\r\n }\r\n\r\n return this._owner;\r\n }\r\n\r\n protected createTreeId(view: ViewState, modelId: Id64String): PrimaryTileTreeId {\r\n if (this._sectionClip) {\r\n // We do this each time in case the ClipStyle's overrides are modified.\r\n // ###TODO: can we avoid that? Event listeners maybe?\r\n this._viewFlagOverrides = {\r\n ...this.view.displayStyle.settings.clipStyle.cutStyle.viewflags,\r\n // Do not clip out the cut geometry intersecting the clip planes.\r\n clipVolume: false,\r\n // The cut geometry is planar - it should win a z-fight.\r\n // Also we need to preserve this flag if this is a plan projection tile tree reference.\r\n forceSurfaceDiscard: true,\r\n };\r\n }\r\n\r\n const animationId = IModelApp.tileAdmin.getScriptInfoForTreeId(modelId, view.displayStyle.scheduleScriptReference)?.animationId; // eslint-disable-line deprecation/deprecation\r\n const renderMode = this._viewFlagOverrides.renderMode ?? view.viewFlags.renderMode;\r\n const visibleEdges = this._viewFlagOverrides.visibleEdges ?? view.viewFlags.visibleEdges;\r\n const edgesRequired = visibleEdges || RenderMode.SmoothShade !== renderMode || IModelApp.tileAdmin.alwaysRequestEdges;\r\n const edges = edgesRequired ? IModelApp.tileAdmin.edgeOptions : false;\r\n const sectionCut = this._sectionClip?.clipString;\r\n return { type: BatchType.Primary, edges, animationId, sectionCut };\r\n }\r\n\r\n protected computeBaseTransform(tree: TileTree): Transform {\r\n return super.computeTransform(tree);\r\n }\r\n\r\n protected override computeTransform(tree: TileTree): Transform {\r\n const tf = this.computeBaseTransform(tree);\r\n return this.view.getModelDisplayTransform(this.model.id, tf);\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport class AnimatedTreeReference extends PrimaryTreeReference {\r\n private readonly _branchId: string;\r\n\r\n public constructor(view: ViewState, model: GeometricModelState, transformNodeId: number) {\r\n super(view, model, false, transformNodeId);\r\n this._branchId = formatAnimationBranchId(model.id, transformNodeId);\r\n }\r\n\r\n protected override computeBaseTransform(tree: TileTree): Transform {\r\n const tf = super.computeBaseTransform(tree);\r\n const style = this.view.displayStyle;\r\n const script = style.scheduleScript;\r\n if (undefined === script || undefined === this._animationTransformNodeId)\r\n return tf;\r\n\r\n const timePoint = style.settings.timePoint ?? script.duration.low;\r\n const animTf = script.getTransform(this._id.modelId, this._animationTransformNodeId, timePoint);\r\n if (animTf)\r\n animTf.multiplyTransformTransform(tf, tf);\r\n\r\n return tf;\r\n }\r\n\r\n public override createDrawArgs(context: SceneContext): TileDrawArgs | undefined {\r\n const animBranch = context.viewport.target.animationBranches?.branchStates.get(this._branchId);\r\n if (animBranch && animBranch.omit)\r\n return undefined;\r\n\r\n const args = super.createDrawArgs(context);\r\n if (args?.tree && undefined !== this._animationTransformNodeId) {\r\n assert(args.tree instanceof IModelTileTree);\r\n args.boundingRange = args.tree.getTransformNodeRange(this._animationTransformNodeId);\r\n }\r\n\r\n return args;\r\n }\r\n}\r\n\r\nclass PlanProjectionTreeReference extends PrimaryTreeReference {\r\n private get _view3d() { return this.view as ViewState3d; }\r\n private readonly _baseTransform = Transform.createIdentity();\r\n\r\n public constructor(view: ViewState3d, model: GeometricModelState, sectionCut?: StringifiedClipVector) {\r\n super(view, model, true, undefined, sectionCut);\r\n this._viewFlagOverrides.forceSurfaceDiscard = true;\r\n }\r\n\r\n public override get castsShadows() {\r\n return false;\r\n }\r\n\r\n protected override get isPlanProjection(): boolean {\r\n return true;\r\n }\r\n\r\n public override createDrawArgs(context: SceneContext): TileDrawArgs | undefined {\r\n const args = super.createDrawArgs(context);\r\n if (undefined !== args && this._id.treeId.enforceDisplayPriority) {\r\n args.drawGraphics = () => { // eslint-disable-line @typescript-eslint/unbound-method\r\n const graphics = args.produceGraphics();\r\n if (undefined !== graphics) {\r\n const settings = this.getSettings();\r\n const asOverlay = undefined !== settings && settings.overlay;\r\n const transparency = settings?.transparency || 0;\r\n\r\n let elevation = settings?.elevation;\r\n if (undefined === elevation) {\r\n const tree = this.treeOwner.tileTree;\r\n if (tree) {\r\n assert(tree instanceof PlanProjectionTileTree);\r\n elevation = tree.baseElevation;\r\n } else {\r\n elevation = 0;\r\n }\r\n }\r\n\r\n context.outputGraphic(context.target.renderSystem.createGraphicLayerContainer(graphics, asOverlay, transparency, elevation));\r\n }\r\n };\r\n }\r\n\r\n return args;\r\n }\r\n\r\n protected override computeBaseTransform(tree: TileTree): Transform {\r\n assert(tree instanceof PlanProjectionTileTree);\r\n const transform = tree.iModelTransform.clone(this._baseTransform);\r\n\r\n const elevation = this.getSettings()?.elevation;\r\n if (undefined !== elevation)\r\n transform.origin.z = elevation;\r\n\r\n return transform;\r\n }\r\n\r\n public override draw(args: TileDrawArgs): void {\r\n const settings = this.getSettings();\r\n if (undefined === settings || settings.enforceDisplayPriority || !settings.overlay)\r\n super.draw(args);\r\n else\r\n args.context.withGraphicType(TileGraphicType.Overlay, () => args.tree.draw(args));\r\n }\r\n\r\n private getSettings() {\r\n return this._view3d.getDisplayStyle3d().settings.getPlanProjectionSettings(this.model.id);\r\n }\r\n\r\n protected override createTreeId(view: ViewState, modelId: Id64String): PrimaryTileTreeId {\r\n const id = super.createTreeId(view, modelId);\r\n const settings = this.getSettings();\r\n if (undefined !== settings && settings.enforceDisplayPriority)\r\n id.enforceDisplayPriority = true;\r\n\r\n return id;\r\n }\r\n}\r\n\r\nfunction isPlanProjection(view: ViewState, model: GeometricModelState): boolean {\r\n const model3d = view.is3d() ? model.asGeometricModel3d : undefined;\r\n return undefined !== model3d && model3d.isPlanProjection;\r\n}\r\n\r\nfunction createTreeRef(view: ViewState, model: GeometricModelState, sectionCut: StringifiedClipVector | undefined): PrimaryTreeReference {\r\n if (false !== IModelApp.renderSystem.options.planProjections && isPlanProjection(view, model))\r\n return new PlanProjectionTreeReference(view as ViewState3d, model, sectionCut);\r\n\r\n return new PrimaryTreeReference(view, model, false, undefined, sectionCut);\r\n}\r\n\r\n/** @internal */\r\nexport function createPrimaryTileTreeReference(view: ViewState, model: GeometricModelState): PrimaryTreeReference {\r\n return createTreeRef(view, model, undefined);\r\n}\r\n\r\nclass MaskTreeReference extends TileTreeReference {\r\n protected _id: PrimaryTreeId;\r\n private _owner: TileTreeOwner;\r\n public readonly model: GeometricModelState;\r\n public override get castsShadows() { return false; }\r\n public constructor(view: ViewState, model: GeometricModelState) {\r\n super();\r\n this.model = model;\r\n this._id = {\r\n modelId: model.id,\r\n is3d: model.is3d,\r\n treeId: this.createTreeId(),\r\n isPlanProjection: isPlanProjection(view, model),\r\n forceNoInstancing: false,\r\n };\r\n\r\n this._owner = primaryTreeSupplier.getOwner(this._id, model.iModel);\r\n }\r\n\r\n public get treeOwner(): TileTreeOwner {\r\n const newId = this.createTreeId();\r\n if (0 !== compareIModelTileTreeIds(newId, this._id.treeId)) {\r\n this._id = { modelId: this._id.modelId, is3d: this._id.is3d, treeId: newId, isPlanProjection: false, forceNoInstancing: false };\r\n this._owner = primaryTreeSupplier.getOwner(this._id, this.model.iModel);\r\n }\r\n\r\n return this._owner;\r\n }\r\n protected createTreeId(): PrimaryTileTreeId {\r\n return { type: BatchType.Primary, edges: false };\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport function createMaskTreeReference(view: ViewState, model: GeometricModelState): TileTreeReference {\r\n return new MaskTreeReference(view, model);\r\n}\r\n\r\n/** @internal */\r\nexport class ModelMapLayerTileTreeReference extends MapLayerTileTreeReference {\r\n private _id: PrimaryTreeId;\r\n private _owner: TileTreeOwner;\r\n public get isPlanar() { return true; }\r\n public get activeClassifier() { return this._classifier; }\r\n public constructor(layerSettings: MapLayerSettings, private _classifier: SpatialClassifier, layerIndex: number, iModel: IModelConnection, private _source?: DisplayStyleState) {\r\n super(layerSettings, layerIndex, iModel);\r\n this._id = {\r\n modelId: _classifier.modelId,\r\n is3d: true, // model.is3d,\r\n treeId: this.createTreeId(),\r\n isPlanProjection: false, // isPlanProjection(view, model),\r\n forceNoInstancing: false,\r\n };\r\n\r\n this._owner = primaryTreeSupplier.getOwner(this._id, this.iModel);\r\n }\r\n\r\n protected createTreeId(): PrimaryTileTreeId {\r\n return { type: BatchType.Primary, edges: false };\r\n }\r\n\r\n public get treeOwner(): TileTreeOwner {\r\n const newId = this.createTreeId();\r\n if (0 !== compareIModelTileTreeIds(newId, this._id.treeId)) {\r\n this._id = { modelId: this._id.modelId, is3d: this._id.is3d, treeId: newId, isPlanProjection: false, forceNoInstancing: false };\r\n this._owner = primaryTreeSupplier.getOwner(this._id, this.iModel);\r\n }\r\n\r\n return this._owner;\r\n }\r\n public get viewFlags(): Partial<ViewFlagsProperties> {\r\n return {\r\n renderMode: RenderMode.SmoothShade,\r\n transparency: true, // Igored for point clouds as they don't support transparency.\r\n textures: true,\r\n lighting: false,\r\n shadows: false,\r\n monochrome: false,\r\n materials: false,\r\n ambientOcclusion: false,\r\n visibleEdges: true,\r\n hiddenEdges: false,\r\n fill: true,\r\n };\r\n }\r\n}\r\n/** @internal */\r\nexport function createModelMapLayerTileTreeReference(layerSettings: ModelMapLayerSettings, layerIndex: number, iModel: IModelConnection): ModelMapLayerTileTreeReference | undefined {\r\n const classifier = SpatialClassifier.fromModelMapLayer(layerSettings);\r\n return classifier ? new ModelMapLayerTileTreeReference(layerSettings, classifier, layerIndex, iModel) : undefined;\r\n}\r\n\r\n/** Provides [[TileTreeReference]]s for the loaded models present in a [[SpatialViewState]]'s [[ModelSelectorState]].\r\n * @internal\r\n */\r\nexport interface SpatialTileTreeReferences extends Iterable<TileTreeReference> {\r\n /** Supplies an iterator over all of the [[TileTreeReference]]s. */\r\n [Symbol.iterator](): Iterator<TileTreeReference>;\r\n /** Requests that the set of [[TileTreeReference]]s be updated to match the current state of the view, e.g., after the model selector's contents have changed. */\r\n update(): void;\r\n /** See SpatialViewState.setTileTreeReferencesDeactivated. */\r\n setDeactivated(modelIds: Id64String | Id64String[] | undefined, deactivated: boolean | undefined, refs: \"all\" | \"animated\" | \"primary\" | \"section\" | number[]): void;\r\n}\r\n\r\n/** Provides [[TileTreeReference]]s for the loaded models present in a [[SpatialViewState]]'s [[ModelSelectorState]].\r\n * @internal\r\n */\r\nexport namespace SpatialTileTreeReferences {\r\n /** Create a SpatialTileTreeReferences object reflecting the contents of the specified view. */\r\n export function create(view: SpatialViewState): SpatialTileTreeReferences {\r\n return new SpatialRefs(view);\r\n }\r\n}\r\n\r\n/** Represents the [[TileTreeReference]]s associated with one model in a [[SpatialTileTreeReferences]]. */\r\nclass SpatialModelRefs implements Iterable<TileTreeReference> {\r\n /** The TileTreeReference representing the model's primary content. */\r\n private readonly _modelRef: TileTreeReference;\r\n /** TileTreeReferences representing nodes transformed by the view's schedule script. */\r\n private readonly _animatedRefs: PrimaryTreeReference[] = [];\r\n /** TileTreeReference providing cut geometry intersecting the view's clip volume. */\r\n private _sectionCutRef?: PrimaryTreeReference;\r\n /** Whether `this._modelRef` is a [[PrimaryTreeReference]] (as opposed to, e.g., a reality model tree reference). */\r\n private readonly _isPrimaryRef: boolean;\r\n\r\n public constructor(model: GeometricModel3dState, view: SpatialViewState) {\r\n this._modelRef = model.createTileTreeReference(view);\r\n this._isPrimaryRef = this._modelRef instanceof PrimaryTreeReference;\r\n }\r\n\r\n public *[Symbol.iterator](): Iterator<TileTreeReference> {\r\n if (!this._primaryRef || !this._primaryRef.deactivated)\r\n yield this._modelRef;\r\n\r\n for (const animated of this._animatedRefs)\r\n if (!animated.deactivated)\r\n yield animated;\r\n\r\n if (this._sectionCutRef && !this._sectionCutRef.deactivated)\r\n yield this._sectionCutRef;\r\n }\r\n\r\n public updateAnimated(script: RenderSchedule.ScriptReference | undefined): void {\r\n const ref = this._primaryRef;\r\n if (!ref)\r\n return;\r\n\r\n this._animatedRefs.length = 0;\r\n const nodeIds = script?.script.getTransformBatchIds(ref.model.id);\r\n if (nodeIds)\r\n for (const nodeId of nodeIds)\r\n this._animatedRefs.push(new AnimatedTreeReference(ref.view, ref.model, nodeId));\r\n }\r\n\r\n public updateSectionCut(clip: StringifiedClipVector | undefined): void {\r\n const ref = this._primaryRef;\r\n if (!ref) {\r\n assert(undefined === this._sectionCutRef);\r\n return;\r\n }\r\n\r\n // If the clip isn't supposed to apply to this model, don't produce cut geometry.\r\n const vfJson = clip ? ref.model.jsonProperties.viewFlagOverrides : undefined;\r\n const vfOvrs = vfJson ? { ...vfJson } : undefined;\r\n if (vfOvrs && !vfOvrs.clipVolume)\r\n clip = undefined;\r\n\r\n this._sectionCutRef = clip ? createTreeRef(ref.view, ref.model, clip) : undefined;\r\n }\r\n\r\n public setDeactivated(deactivated: boolean | undefined, which: \"all\" | \"animated\" | \"primary\" | \"section\" | number[]): void {\r\n if (typeof which !== \"string\") {\r\n for (const index of which)\r\n if (this._animatedRefs[index])\r\n this._animatedRefs[index].deactivated = deactivated ?? !this._animatedRefs[index].deactivated;\r\n\r\n return;\r\n }\r\n\r\n if ((\"all\" === which || \"primary\" === which) && this._primaryRef)\r\n this._primaryRef.deactivated = deactivated ?? !this._primaryRef.deactivated;\r\n\r\n if ((\"all\" === which || \"section\" === which) && this._sectionCutRef)\r\n this._sectionCutRef.deactivated = deactivated ?? !this._sectionCutRef.deactivated;\r\n\r\n if ((\"all\" === which || \"animated\" === which))\r\n for (const ref of this._animatedRefs)\r\n ref.deactivated = deactivated ?? !ref.deactivated;\r\n }\r\n\r\n private get _primaryRef(): PrimaryTreeReference | undefined {\r\n if (!this._isPrimaryRef)\r\n return undefined;\r\n\r\n assert(this._modelRef instanceof PrimaryTreeReference);\r\n return this._modelRef;\r\n }\r\n}\r\n\r\n/** Provides [[TileTreeReference]]s for the loaded models present in a [[SpatialViewState]]'s [[ModelSelectorState]]. */\r\nclass SpatialRefs implements SpatialTileTreeReferences {\r\n private _allLoaded = false;\r\n private readonly _view: SpatialViewState;\r\n private _refs = new Map<Id64String, SpatialModelRefs>();\r\n private _swapRefs = new Map<Id64String, SpatialModelRefs>();\r\n private _scheduleScript?: RenderSchedule.ScriptReference;\r\n private _sectionCut?: StringifiedClipVector;\r\n\r\n public constructor(view: SpatialViewState) {\r\n this._view = view;\r\n this._scheduleScript = view.displayStyle.scheduleScriptReference; // eslint-disable-line deprecation/deprecation\r\n this._sectionCut = this.getSectionCutFromView();\r\n }\r\n\r\n public update(): void {\r\n this._allLoaded = false;\r\n }\r\n\r\n public *[Symbol.iterator](): Iterator<TileTreeReference> {\r\n this.load();\r\n for (const modelRef of this._refs.values())\r\n for (const ref of modelRef)\r\n yield ref;\r\n }\r\n\r\n public setDeactivated(modelIds: Id64String | Id64String[] | undefined, deactivated: boolean, refs: \"all\" | \"animated\" | \"primary\" | \"section\" | number[]): void {\r\n if (undefined === modelIds) {\r\n for (const model of this._refs.values())\r\n model.setDeactivated(deactivated, refs);\r\n\r\n return;\r\n }\r\n\r\n if (typeof modelIds === \"string\")\r\n modelIds = [modelIds];\r\n\r\n for (const modelId of modelIds)\r\n this._refs.get(modelId)?.setDeactivated(deactivated, refs);\r\n }\r\n\r\n private load(): void {\r\n if (!this._allLoaded) {\r\n this._allLoaded = true;\r\n this.updateModels();\r\n }\r\n\r\n const curScript = this._view.displayStyle.scheduleScriptReference; // eslint-disable-line deprecation/deprecation\r\n const prevScript = this._scheduleScript;\r\n if (curScript !== prevScript) {\r\n this._scheduleScript = curScript;\r\n if (!curScript || !prevScript || !curScript.script.equals(prevScript.script))\r\n for (const ref of this._refs.values())\r\n ref.updateAnimated(curScript);\r\n }\r\n\r\n const sectionCut = this.getSectionCutFromView();\r\n if (sectionCut?.clipString !== this._sectionCut?.clipString) {\r\n this._sectionCut = sectionCut;\r\n for (const ref of this._refs.values())\r\n ref.updateSectionCut(sectionCut);\r\n }\r\n }\r\n\r\n private getSectionCutFromView(): StringifiedClipVector | undefined {\r\n const wantCut = this._view.viewFlags.clipVolume && this._view.displayStyle.settings.clipStyle.produceCutGeometry;\r\n const clip = wantCut ? this._view.getViewClip() : undefined;\r\n return StringifiedClipVector.fromClipVector(clip);\r\n }\r\n\r\n /** Ensure this._refs contains a SpatialModelRefs for all loaded models in the model selector. */\r\n private updateModels(): void {\r\n const prev = this._refs;\r\n const cur = this._swapRefs;\r\n this._refs = cur;\r\n this._swapRefs = prev;\r\n cur.clear();\r\n\r\n for (const modelId of this._view.modelSelector.models) {\r\n let modelRefs = prev.get(modelId);\r\n if (!modelRefs) {\r\n const model = this._view.iModel.models.getLoaded(modelId)?.asGeometricModel3d;\r\n if (model) {\r\n modelRefs = new SpatialModelRefs(model, this._view);\r\n modelRefs.updateAnimated(this._scheduleScript);\r\n modelRefs.updateSectionCut(this._sectionCut);\r\n }\r\n }\r\n\r\n if (modelRefs)\r\n cur.set(modelId, modelRefs);\r\n }\r\n }\r\n}\r\n"]}
@@ -1,8 +1,8 @@
1
1
  /** @packageDocumentation
2
2
  * @module Tiles
3
3
  */
4
- import { BeDuration, BeEvent, Id64Array } from "@itwin/core-bentley";
5
- import { EdgeOptions, ElementGraphicsRequestProps, IModelTileTreeProps, TileVersionInfo } from "@itwin/core-common";
4
+ import { BeDuration, BeEvent, Id64Array, Id64String } from "@itwin/core-bentley";
5
+ import { EdgeOptions, ElementGraphicsRequestProps, IModelTileTreeProps, RenderSchedule, TileVersionInfo } from "@itwin/core-common";
6
6
  import { IModelConnection } from "../IModelConnection";
7
7
  import { Viewport } from "../Viewport";
8
8
  import { IModelTileTree, ReadonlyTileUserSet, Tile, TileRequestChannels, TileTreeOwner, TileUsageMarker, TileUser } from "./internal";
@@ -100,6 +100,8 @@ export declare class TileAdmin {
100
100
  /** @internal */
101
101
  readonly enableImprovedElision: boolean;
102
102
  /** @internal */
103
+ readonly enableFrontendScheduleScripts: boolean;
104
+ /** @internal */
103
105
  readonly ignoreAreaPatterns: boolean;
104
106
  /** @internal */
105
107
  readonly enableExternalTextures: boolean;
@@ -346,6 +348,16 @@ export declare class TileAdmin {
346
348
  readonly onTileChildrenLoad: BeEvent<(parentTile: Tile) => void>;
347
349
  /** Subscribe to [[onTileLoad]], [[onTileTreeLoad]], and [[onTileChildrenLoad]]. */
348
350
  addLoadListener(callback: (imodel: IModelConnection) => void): () => void;
351
+ /** Determine what information about the schedule script is needed to produce tiles.
352
+ * If no script, or the script doesn't require batching, then no information is needed - normal tiles can be used.
353
+ * If possible and enabled, normal tiles can be requested and then processed on the frontend based on the ModelTimeline.
354
+ * Otherwise, special tiles must be requested based on the script's sourceId (RenderTimeline or DisplayStyle element).
355
+ * @internal
356
+ */
357
+ getScriptInfoForTreeId(modelId: Id64String, script: RenderSchedule.ScriptReference | undefined): {
358
+ timeline?: RenderSchedule.ModelTimeline;
359
+ animationId?: Id64String;
360
+ } | undefined;
349
361
  private dispatchTileTreePropsRequests;
350
362
  private processQueue;
351
363
  /** Exported strictly for tests. @internal */
@@ -602,6 +614,13 @@ export declare namespace TileAdmin {
602
614
  * @public
603
615
  */
604
616
  cesiumIonKey?: string;
617
+ /** If true, when applying a schedule script to a view, ordinary tiles will be requested and then reprocessed on the frontend to align with the script's
618
+ * animation nodes. This permits the use of schedule scripts not stored in the iModel and improves utilization of the tile cache for animated views.
619
+ * If false, the schedule script must be stored in the iModel and special tiles must be requested from the backend to align with the script's animation nodes.
620
+ * Default value: false.
621
+ * @public
622
+ */
623
+ enableFrontendScheduleScripts?: boolean;
605
624
  }
606
625
  /** The number of bytes of GPU memory associated with the various [[GpuMemoryLimit]]s for non-mobile devices.
607
626
  * @see [[TileAdmin.Props.gpuMemoryLimits]] to specify the limit at startup.
@@ -1 +1 @@
1
- {"version":3,"file":"TileAdmin.d.ts","sourceRoot":"","sources":["../../../src/tile/TileAdmin.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"TileAdmin.d.ts","sourceRoot":"","sources":["../../../src/tile/TileAdmin.ts"],"names":[],"mappings":"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"}
@@ -27,7 +27,7 @@ class TileAdmin {
27
27
  * @internal
28
28
  */
29
29
  constructor(isMobile, rpcConcurrency, options) {
30
- var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r;
30
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s;
31
31
  this._users = new Set();
32
32
  this._requestsPerUser = new Map();
33
33
  this._tileUsagePerUser = new Map();
@@ -55,16 +55,17 @@ class TileAdmin {
55
55
  this._enableIndexedEdges = (_c = options.enableIndexedEdges) !== null && _c !== void 0 ? _c : core_common_1.defaultTileOptions.enableIndexedEdges;
56
56
  this._generateAllPolyfaceEdges = (_d = options.generateAllPolyfaceEdges) !== null && _d !== void 0 ? _d : core_common_1.defaultTileOptions.generateAllPolyfaceEdges;
57
57
  this.enableImprovedElision = (_e = options.enableImprovedElision) !== null && _e !== void 0 ? _e : core_common_1.defaultTileOptions.enableImprovedElision;
58
- this.ignoreAreaPatterns = (_f = options.ignoreAreaPatterns) !== null && _f !== void 0 ? _f : core_common_1.defaultTileOptions.ignoreAreaPatterns;
59
- this.enableExternalTextures = (_g = options.enableExternalTextures) !== null && _g !== void 0 ? _g : core_common_1.defaultTileOptions.enableExternalTextures;
60
- this.disableMagnification = (_h = options.disableMagnification) !== null && _h !== void 0 ? _h : core_common_1.defaultTileOptions.disableMagnification;
58
+ this.enableFrontendScheduleScripts = (_f = options.enableFrontendScheduleScripts) !== null && _f !== void 0 ? _f : false;
59
+ this.ignoreAreaPatterns = (_g = options.ignoreAreaPatterns) !== null && _g !== void 0 ? _g : core_common_1.defaultTileOptions.ignoreAreaPatterns;
60
+ this.enableExternalTextures = (_h = options.enableExternalTextures) !== null && _h !== void 0 ? _h : core_common_1.defaultTileOptions.enableExternalTextures;
61
+ this.disableMagnification = (_j = options.disableMagnification) !== null && _j !== void 0 ? _j : core_common_1.defaultTileOptions.disableMagnification;
61
62
  this.alwaysRequestEdges = true === options.alwaysRequestEdges;
62
- this.alwaysSubdivideIncompleteTiles = (_j = options.alwaysSubdivideIncompleteTiles) !== null && _j !== void 0 ? _j : core_common_1.defaultTileOptions.alwaysSubdivideIncompleteTiles;
63
- this.maximumMajorTileFormatVersion = (_k = options.maximumMajorTileFormatVersion) !== null && _k !== void 0 ? _k : core_common_1.defaultTileOptions.maximumMajorTileFormatVersion;
64
- this.useProjectExtents = (_l = options.useProjectExtents) !== null && _l !== void 0 ? _l : core_common_1.defaultTileOptions.useProjectExtents;
65
- this.optimizeBRepProcessing = (_m = options.optimizeBRepProcessing) !== null && _m !== void 0 ? _m : core_common_1.defaultTileOptions.optimizeBRepProcessing;
66
- this.useLargerTiles = (_o = options.useLargerTiles) !== null && _o !== void 0 ? _o : core_common_1.defaultTileOptions.useLargerTiles;
67
- this.mobileRealityTileMinToleranceRatio = Math.max((_p = options.mobileRealityTileMinToleranceRatio) !== null && _p !== void 0 ? _p : 3.0, 1.0);
63
+ this.alwaysSubdivideIncompleteTiles = (_k = options.alwaysSubdivideIncompleteTiles) !== null && _k !== void 0 ? _k : core_common_1.defaultTileOptions.alwaysSubdivideIncompleteTiles;
64
+ this.maximumMajorTileFormatVersion = (_l = options.maximumMajorTileFormatVersion) !== null && _l !== void 0 ? _l : core_common_1.defaultTileOptions.maximumMajorTileFormatVersion;
65
+ this.useProjectExtents = (_m = options.useProjectExtents) !== null && _m !== void 0 ? _m : core_common_1.defaultTileOptions.useProjectExtents;
66
+ this.optimizeBRepProcessing = (_o = options.optimizeBRepProcessing) !== null && _o !== void 0 ? _o : core_common_1.defaultTileOptions.optimizeBRepProcessing;
67
+ this.useLargerTiles = (_p = options.useLargerTiles) !== null && _p !== void 0 ? _p : core_common_1.defaultTileOptions.useLargerTiles;
68
+ this.mobileRealityTileMinToleranceRatio = Math.max((_q = options.mobileRealityTileMinToleranceRatio) !== null && _q !== void 0 ? _q : 3.0, 1.0);
68
69
  this.cesiumIonKey = options.cesiumIonKey;
69
70
  const gpuMemoryLimits = options.gpuMemoryLimits;
70
71
  let gpuMemoryLimit;
@@ -91,9 +92,9 @@ class TileAdmin {
91
92
  const minTileTime = ignoreMinimums ? 0.1 : 5;
92
93
  const minTreeTime = ignoreMinimums ? 0.1 : 10;
93
94
  // If unspecified, tile expiration time defaults to 20 seconds.
94
- this.tileExpirationTime = clamp(((_q = options.tileExpirationTime) !== null && _q !== void 0 ? _q : 20), minTileTime, 60);
95
+ this.tileExpirationTime = clamp(((_r = options.tileExpirationTime) !== null && _r !== void 0 ? _r : 20), minTileTime, 60);
95
96
  // If unspecified, trees never expire (will change this to use a default later).
96
- this.tileTreeExpirationTime = clamp((_r = options.tileTreeExpirationTime) !== null && _r !== void 0 ? _r : 300, minTreeTime, 3600);
97
+ this.tileTreeExpirationTime = clamp((_s = options.tileTreeExpirationTime) !== null && _s !== void 0 ? _s : 300, minTreeTime, 3600);
97
98
  const now = core_bentley_1.BeTimePoint.now();
98
99
  this._nextPruneTime = now.plus(this.tileExpirationTime);
99
100
  this._nextPurgeTime = now.plus(this.tileTreeExpirationTime);
@@ -467,6 +468,8 @@ class TileAdmin {
467
468
  async requestElementGraphics(iModel, requestProps) {
468
469
  if (true !== requestProps.omitEdges && undefined === requestProps.edgeType)
469
470
  requestProps = { ...requestProps, edgeType: this.enableIndexedEdges ? 2 : 1 };
471
+ if (undefined === requestProps.quantizePositions)
472
+ requestProps = { ...requestProps, quantizePositions: false };
470
473
  this.initializeRpc();
471
474
  const intfc = core_common_1.IModelTileRpcInterface.getClient();
472
475
  return intfc.requestElementGraphics(iModel.getRpcProps(), requestProps);
@@ -515,6 +518,23 @@ class TileAdmin {
515
518
  const childLoad = this.onTileChildrenLoad.addListener((tile) => callback(tile.tree.iModel));
516
519
  return () => { tileLoad(); treeLoad(); childLoad(); };
517
520
  }
521
+ /** Determine what information about the schedule script is needed to produce tiles.
522
+ * If no script, or the script doesn't require batching, then no information is needed - normal tiles can be used.
523
+ * If possible and enabled, normal tiles can be requested and then processed on the frontend based on the ModelTimeline.
524
+ * Otherwise, special tiles must be requested based on the script's sourceId (RenderTimeline or DisplayStyle element).
525
+ * @internal
526
+ */
527
+ getScriptInfoForTreeId(modelId, script) {
528
+ if (!script || !script.script.requiresBatching)
529
+ return undefined;
530
+ const timeline = script.script.modelTimelines.find((x) => x.modelId === modelId);
531
+ if (!timeline || (!timeline.requiresBatching && !timeline.containsTransform))
532
+ return undefined;
533
+ // Frontend schedule scripts require the element Ids to be included in the script - previously saved views may have omitted them.
534
+ if (!core_bentley_1.Id64.isValidId64(script.sourceId) || (this.enableFrontendScheduleScripts && !timeline.omitsElementIds))
535
+ return { timeline };
536
+ return { animationId: script.sourceId };
537
+ }
518
538
  dispatchTileTreePropsRequests() {
519
539
  for (let i = 0; i < this._maxActiveTileTreePropsRequests && i < this._tileTreePropsRequests.length; i++)
520
540
  this._tileTreePropsRequests[i].dispatch();