@itwin/core-common 3.6.0-dev.14 → 3.6.0-dev.21

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 (948) hide show
  1. package/CHANGELOG.md +8 -1
  2. package/lib/cjs/AmbientOcclusion.d.ts +49 -49
  3. package/lib/cjs/AmbientOcclusion.js +55 -55
  4. package/lib/cjs/AmbientOcclusion.js.map +1 -1
  5. package/lib/cjs/AnalysisStyle.d.ts +134 -134
  6. package/lib/cjs/AnalysisStyle.js +165 -165
  7. package/lib/cjs/AnalysisStyle.js.map +1 -1
  8. package/lib/cjs/AuthorizationClient.d.ts +11 -11
  9. package/lib/cjs/AuthorizationClient.js +9 -9
  10. package/lib/cjs/AuthorizationClient.js.map +1 -1
  11. package/lib/cjs/BackendTypes.d.ts +12 -12
  12. package/lib/cjs/BackendTypes.js +9 -9
  13. package/lib/cjs/BackendTypes.js.map +1 -1
  14. package/lib/cjs/BackgroundMapProvider.d.ts +51 -51
  15. package/lib/cjs/BackgroundMapProvider.js +68 -68
  16. package/lib/cjs/BackgroundMapProvider.js.map +1 -1
  17. package/lib/cjs/BackgroundMapSettings.d.ts +136 -136
  18. package/lib/cjs/BackgroundMapSettings.js +156 -156
  19. package/lib/cjs/BackgroundMapSettings.js.map +1 -1
  20. package/lib/cjs/Base64EncodedString.d.ts +32 -32
  21. package/lib/cjs/Base64EncodedString.js +66 -66
  22. package/lib/cjs/Base64EncodedString.js.map +1 -1
  23. package/lib/cjs/BlobReader.d.ts +31 -31
  24. package/lib/cjs/BlobReader.js +84 -84
  25. package/lib/cjs/BlobReader.js.map +1 -1
  26. package/lib/cjs/BriefcaseTypes.d.ts +189 -189
  27. package/lib/cjs/BriefcaseTypes.js +95 -95
  28. package/lib/cjs/BriefcaseTypes.js.map +1 -1
  29. package/lib/cjs/Camera.d.ts +42 -42
  30. package/lib/cjs/Camera.js +62 -62
  31. package/lib/cjs/Camera.js.map +1 -1
  32. package/lib/cjs/ChangedElements.d.ts +85 -85
  33. package/lib/cjs/ChangedElements.js +23 -23
  34. package/lib/cjs/ChangedElements.js.map +1 -1
  35. package/lib/cjs/ChangedEntities.d.ts +45 -45
  36. package/lib/cjs/ChangedEntities.js +9 -9
  37. package/lib/cjs/ChangedEntities.js.map +1 -1
  38. package/lib/cjs/ChangesetProps.d.ts +98 -98
  39. package/lib/cjs/ChangesetProps.js +22 -22
  40. package/lib/cjs/ChangesetProps.js.map +1 -1
  41. package/lib/cjs/ClipStyle.d.ts +89 -89
  42. package/lib/cjs/ClipStyle.js +123 -123
  43. package/lib/cjs/ClipStyle.js.map +1 -1
  44. package/lib/cjs/CloudStorage.d.ts +62 -62
  45. package/lib/cjs/CloudStorage.js +113 -113
  46. package/lib/cjs/CloudStorage.js.map +1 -1
  47. package/lib/cjs/CloudStorageTileCache.d.ts +27 -27
  48. package/lib/cjs/CloudStorageTileCache.js +66 -66
  49. package/lib/cjs/CloudStorageTileCache.js.map +1 -1
  50. package/lib/cjs/Code.d.ts +256 -256
  51. package/lib/cjs/Code.js +281 -281
  52. package/lib/cjs/Code.js.map +1 -1
  53. package/lib/cjs/ColorByName.d.ts +161 -161
  54. package/lib/cjs/ColorByName.js +169 -169
  55. package/lib/cjs/ColorByName.js.map +1 -1
  56. package/lib/cjs/ColorDef.d.ts +208 -208
  57. package/lib/cjs/ColorDef.js +571 -571
  58. package/lib/cjs/ColorDef.js.map +1 -1
  59. package/lib/cjs/CommonLoggerCategory.d.ts +18 -18
  60. package/lib/cjs/CommonLoggerCategory.js +26 -26
  61. package/lib/cjs/CommonLoggerCategory.js.map +1 -1
  62. package/lib/cjs/ConcurrentQuery.d.ts +421 -421
  63. package/lib/cjs/ConcurrentQuery.js +552 -552
  64. package/lib/cjs/ConcurrentQuery.js.map +1 -1
  65. package/lib/cjs/ContextRealityModel.d.ts +276 -276
  66. package/lib/cjs/ContextRealityModel.js +358 -358
  67. package/lib/cjs/ContextRealityModel.js.map +1 -1
  68. package/lib/cjs/DisplayStyleSettings.d.ts +584 -584
  69. package/lib/cjs/DisplayStyleSettings.js +981 -981
  70. package/lib/cjs/DisplayStyleSettings.js.map +1 -1
  71. package/lib/cjs/ECSchemaProps.d.ts +39 -39
  72. package/lib/cjs/ECSchemaProps.js +9 -9
  73. package/lib/cjs/ECSchemaProps.js.map +1 -1
  74. package/lib/cjs/ECSqlReader.d.ts +70 -70
  75. package/lib/cjs/ECSqlReader.js +280 -280
  76. package/lib/cjs/ECSqlReader.js.map +1 -1
  77. package/lib/cjs/ECSqlTypes.d.ts +128 -128
  78. package/lib/cjs/ECSqlTypes.js +189 -189
  79. package/lib/cjs/ECSqlTypes.js.map +1 -1
  80. package/lib/cjs/ElementMesh.d.ts +39 -39
  81. package/lib/cjs/ElementMesh.js +56 -56
  82. package/lib/cjs/ElementMesh.js.map +1 -1
  83. package/lib/cjs/ElementProps.d.ts +479 -479
  84. package/lib/cjs/ElementProps.js +99 -99
  85. package/lib/cjs/ElementProps.js.map +1 -1
  86. package/lib/cjs/EmphasizeElementsProps.d.ts +55 -55
  87. package/lib/cjs/EmphasizeElementsProps.js +25 -25
  88. package/lib/cjs/EmphasizeElementsProps.js.map +1 -1
  89. package/lib/cjs/EntityProps.d.ts +176 -176
  90. package/lib/cjs/EntityProps.js +112 -112
  91. package/lib/cjs/EntityProps.js.map +1 -1
  92. package/lib/cjs/EntityReference.d.ts +51 -51
  93. package/lib/cjs/EntityReference.js +56 -56
  94. package/lib/cjs/EntityReference.js.map +1 -1
  95. package/lib/cjs/Environment.d.ts +61 -61
  96. package/lib/cjs/Environment.js +73 -73
  97. package/lib/cjs/Environment.js.map +1 -1
  98. package/lib/cjs/FeatureGates.d.ts +31 -31
  99. package/lib/cjs/FeatureGates.js +55 -55
  100. package/lib/cjs/FeatureGates.js.map +1 -1
  101. package/lib/cjs/FeatureIndex.d.ts +39 -39
  102. package/lib/cjs/FeatureIndex.js +63 -63
  103. package/lib/cjs/FeatureIndex.js.map +1 -1
  104. package/lib/cjs/FeatureSymbology.d.ts +444 -444
  105. package/lib/cjs/FeatureSymbology.js +614 -614
  106. package/lib/cjs/FeatureSymbology.js.map +1 -1
  107. package/lib/cjs/FeatureTable.d.ts +141 -141
  108. package/lib/cjs/FeatureTable.js +278 -278
  109. package/lib/cjs/FeatureTable.js.map +1 -1
  110. package/lib/cjs/Fonts.d.ts +51 -51
  111. package/lib/cjs/Fonts.js +53 -53
  112. package/lib/cjs/Fonts.js.map +1 -1
  113. package/lib/cjs/Frustum.d.ts +114 -114
  114. package/lib/cjs/Frustum.js +292 -292
  115. package/lib/cjs/Frustum.js.map +1 -1
  116. package/lib/cjs/GeoCoordinateServices.d.ts +119 -119
  117. package/lib/cjs/GeoCoordinateServices.js +80 -80
  118. package/lib/cjs/GeoCoordinateServices.js.map +1 -1
  119. package/lib/cjs/GeometryContainment.d.ts +28 -28
  120. package/lib/cjs/GeometryContainment.js +9 -9
  121. package/lib/cjs/GeometryContainment.js.map +1 -1
  122. package/lib/cjs/GeometryParams.d.ts +130 -130
  123. package/lib/cjs/GeometryParams.js +174 -174
  124. package/lib/cjs/GeometryParams.js.map +1 -1
  125. package/lib/cjs/GeometrySummary.d.ts +45 -45
  126. package/lib/cjs/GeometrySummary.js +23 -23
  127. package/lib/cjs/GeometrySummary.js.map +1 -1
  128. package/lib/cjs/Gradient.d.ts +139 -139
  129. package/lib/cjs/Gradient.js +455 -455
  130. package/lib/cjs/Gradient.js.map +1 -1
  131. package/lib/cjs/GraphicParams.d.ts +58 -58
  132. package/lib/cjs/GraphicParams.js +85 -85
  133. package/lib/cjs/GraphicParams.js.map +1 -1
  134. package/lib/cjs/GroundPlane.d.ts +52 -52
  135. package/lib/cjs/GroundPlane.js +64 -64
  136. package/lib/cjs/GroundPlane.js.map +1 -1
  137. package/lib/cjs/HSLColor.d.ts +20 -20
  138. package/lib/cjs/HSLColor.js +32 -32
  139. package/lib/cjs/HSLColor.js.map +1 -1
  140. package/lib/cjs/HSVColor.d.ts +30 -30
  141. package/lib/cjs/HSVColor.js +59 -59
  142. package/lib/cjs/HSVColor.js.map +1 -1
  143. package/lib/cjs/HiddenLine.d.ts +97 -97
  144. package/lib/cjs/HiddenLine.js +162 -162
  145. package/lib/cjs/HiddenLine.js.map +1 -1
  146. package/lib/cjs/Hilite.d.ts +50 -50
  147. package/lib/cjs/Hilite.js +64 -64
  148. package/lib/cjs/Hilite.js.map +1 -1
  149. package/lib/cjs/IModel.d.ts +359 -359
  150. package/lib/cjs/IModel.js +347 -347
  151. package/lib/cjs/IModel.js.map +1 -1
  152. package/lib/cjs/IModelError.d.ts +36 -36
  153. package/lib/cjs/IModelError.js +72 -72
  154. package/lib/cjs/IModelError.js.map +1 -1
  155. package/lib/cjs/IModelVersion.d.ts +68 -68
  156. package/lib/cjs/IModelVersion.js +79 -79
  157. package/lib/cjs/IModelVersion.js.map +1 -1
  158. package/lib/cjs/Image.d.ts +86 -86
  159. package/lib/cjs/Image.js +128 -128
  160. package/lib/cjs/Image.js.map +1 -1
  161. package/lib/cjs/IpcAppProps.d.ts +141 -141
  162. package/lib/cjs/IpcAppProps.js +23 -23
  163. package/lib/cjs/IpcAppProps.js.map +1 -1
  164. package/lib/cjs/LightSettings.d.ts +224 -224
  165. package/lib/cjs/LightSettings.js +309 -309
  166. package/lib/cjs/LightSettings.js.map +1 -1
  167. package/lib/cjs/LinePixels.d.ts +34 -34
  168. package/lib/cjs/LinePixels.js +42 -42
  169. package/lib/cjs/LinePixels.js.map +1 -1
  170. package/lib/cjs/Localization.d.ts +113 -113
  171. package/lib/cjs/Localization.js +26 -26
  172. package/lib/cjs/Localization.js.map +1 -1
  173. package/lib/cjs/MapImagerySettings.d.ts +62 -62
  174. package/lib/cjs/MapImagerySettings.js +80 -80
  175. package/lib/cjs/MapImagerySettings.js.map +1 -1
  176. package/lib/cjs/MapLayerSettings.d.ts +272 -272
  177. package/lib/cjs/MapLayerSettings.js +411 -411
  178. package/lib/cjs/MapLayerSettings.js.map +1 -1
  179. package/lib/cjs/MassProperties.d.ts +64 -64
  180. package/lib/cjs/MassProperties.js +23 -23
  181. package/lib/cjs/MassProperties.js.map +1 -1
  182. package/lib/cjs/MaterialProps.d.ts +118 -118
  183. package/lib/cjs/MaterialProps.js +23 -23
  184. package/lib/cjs/MaterialProps.js.map +1 -1
  185. package/lib/cjs/ModelClipGroup.d.ts +67 -67
  186. package/lib/cjs/ModelClipGroup.js +98 -98
  187. package/lib/cjs/ModelClipGroup.js.map +1 -1
  188. package/lib/cjs/ModelGeometryChanges.d.ts +107 -107
  189. package/lib/cjs/ModelGeometryChanges.js +83 -83
  190. package/lib/cjs/ModelGeometryChanges.js.map +1 -1
  191. package/lib/cjs/ModelProps.d.ts +67 -67
  192. package/lib/cjs/ModelProps.js +9 -9
  193. package/lib/cjs/ModelProps.js.map +1 -1
  194. package/lib/cjs/NativeAppProps.d.ts +122 -122
  195. package/lib/cjs/NativeAppProps.js +30 -30
  196. package/lib/cjs/NativeAppProps.js.map +1 -1
  197. package/lib/cjs/OctEncodedNormal.d.ts +33 -33
  198. package/lib/cjs/OctEncodedNormal.js +98 -98
  199. package/lib/cjs/OctEncodedNormal.js.map +1 -1
  200. package/lib/cjs/PlanProjectionSettings.d.ts +47 -47
  201. package/lib/cjs/PlanProjectionSettings.js +63 -63
  202. package/lib/cjs/PlanProjectionSettings.js.map +1 -1
  203. package/lib/cjs/PlanarClipMask.d.ts +177 -177
  204. package/lib/cjs/PlanarClipMask.js +136 -136
  205. package/lib/cjs/PlanarClipMask.js.map +1 -1
  206. package/lib/cjs/QPoint.d.ts +479 -479
  207. package/lib/cjs/QPoint.js +826 -826
  208. package/lib/cjs/QPoint.js.map +1 -1
  209. package/lib/cjs/RealityDataAccessProps.d.ts +41 -41
  210. package/lib/cjs/RealityDataAccessProps.js +19 -19
  211. package/lib/cjs/RealityDataAccessProps.js.map +1 -1
  212. package/lib/cjs/RealityModelDisplaySettings.d.ts +183 -183
  213. package/lib/cjs/RealityModelDisplaySettings.js +142 -142
  214. package/lib/cjs/RealityModelDisplaySettings.js.map +1 -1
  215. package/lib/cjs/Render.d.ts +89 -89
  216. package/lib/cjs/Render.js +177 -177
  217. package/lib/cjs/Render.js.map +1 -1
  218. package/lib/cjs/RenderMaterial.d.ts +58 -58
  219. package/lib/cjs/RenderMaterial.js +76 -76
  220. package/lib/cjs/RenderMaterial.js.map +1 -1
  221. package/lib/cjs/RenderSchedule.d.ts +543 -543
  222. package/lib/cjs/RenderSchedule.js +1002 -1002
  223. package/lib/cjs/RenderTexture.d.ts +70 -70
  224. package/lib/cjs/RenderTexture.js +59 -59
  225. package/lib/cjs/RenderTexture.js.map +1 -1
  226. package/lib/cjs/RgbColor.d.ts +47 -47
  227. package/lib/cjs/RgbColor.js +77 -77
  228. package/lib/cjs/RgbColor.js.map +1 -1
  229. package/lib/cjs/RpcInterface.d.ts +33 -33
  230. package/lib/cjs/RpcInterface.js +137 -137
  231. package/lib/cjs/RpcInterface.js.map +1 -1
  232. package/lib/cjs/RpcManager.d.ts +40 -40
  233. package/lib/cjs/RpcManager.js +55 -55
  234. package/lib/cjs/RpcManager.js.map +1 -1
  235. package/lib/cjs/SessionProps.d.ts +16 -16
  236. package/lib/cjs/SessionProps.js +9 -9
  237. package/lib/cjs/SessionProps.js.map +1 -1
  238. package/lib/cjs/SkyBox.d.ts +215 -215
  239. package/lib/cjs/SkyBox.js +210 -210
  240. package/lib/cjs/SkyBox.js.map +1 -1
  241. package/lib/cjs/Snapping.d.ts +49 -49
  242. package/lib/cjs/Snapping.js +9 -9
  243. package/lib/cjs/Snapping.js.map +1 -1
  244. package/lib/cjs/SolarCalculate.d.ts +27 -27
  245. package/lib/cjs/SolarCalculate.js +211 -211
  246. package/lib/cjs/SolarCalculate.js.map +1 -1
  247. package/lib/cjs/SolarShadows.d.ts +35 -35
  248. package/lib/cjs/SolarShadows.js +62 -62
  249. package/lib/cjs/SolarShadows.js.map +1 -1
  250. package/lib/cjs/SpatialClassification.d.ts +208 -208
  251. package/lib/cjs/SpatialClassification.js +340 -340
  252. package/lib/cjs/SpatialClassification.js.map +1 -1
  253. package/lib/cjs/SubCategoryAppearance.d.ts +91 -91
  254. package/lib/cjs/SubCategoryAppearance.js +96 -96
  255. package/lib/cjs/SubCategoryAppearance.js.map +1 -1
  256. package/lib/cjs/SubCategoryOverride.d.ts +46 -46
  257. package/lib/cjs/SubCategoryOverride.js +104 -104
  258. package/lib/cjs/SubCategoryOverride.js.map +1 -1
  259. package/lib/cjs/TerrainSettings.d.ts +82 -82
  260. package/lib/cjs/TerrainSettings.js +102 -102
  261. package/lib/cjs/TerrainSettings.js.map +1 -1
  262. package/lib/cjs/TextureMapping.d.ts +116 -116
  263. package/lib/cjs/TextureMapping.js +174 -174
  264. package/lib/cjs/TextureMapping.js.map +1 -1
  265. package/lib/cjs/TextureProps.d.ts +65 -65
  266. package/lib/cjs/TextureProps.js +28 -28
  267. package/lib/cjs/TextureProps.js.map +1 -1
  268. package/lib/cjs/ThematicDisplay.d.ts +230 -230
  269. package/lib/cjs/ThematicDisplay.js +344 -344
  270. package/lib/cjs/ThematicDisplay.js.map +1 -1
  271. package/lib/cjs/Thumbnail.d.ts +26 -26
  272. package/lib/cjs/Thumbnail.js +9 -9
  273. package/lib/cjs/Thumbnail.js.map +1 -1
  274. package/lib/cjs/TileProps.d.ts +82 -82
  275. package/lib/cjs/TileProps.js +29 -29
  276. package/lib/cjs/TileProps.js.map +1 -1
  277. package/lib/cjs/Tween.d.ts +191 -191
  278. package/lib/cjs/Tween.js +570 -570
  279. package/lib/cjs/Tween.js.map +1 -1
  280. package/lib/cjs/TxnAction.d.ts +21 -21
  281. package/lib/cjs/TxnAction.js +29 -29
  282. package/lib/cjs/TxnAction.js.map +1 -1
  283. package/lib/cjs/ViewDetails.d.ts +125 -125
  284. package/lib/cjs/ViewDetails.js +166 -166
  285. package/lib/cjs/ViewDetails.js.map +1 -1
  286. package/lib/cjs/ViewFlags.d.ts +291 -291
  287. package/lib/cjs/ViewFlags.js +368 -368
  288. package/lib/cjs/ViewFlags.js.map +1 -1
  289. package/lib/cjs/ViewProps.d.ts +205 -205
  290. package/lib/cjs/ViewProps.js +9 -9
  291. package/lib/cjs/ViewProps.js.map +1 -1
  292. package/lib/cjs/WhiteOnWhiteReversalSettings.d.ts +36 -36
  293. package/lib/cjs/WhiteOnWhiteReversalSettings.js +37 -37
  294. package/lib/cjs/WhiteOnWhiteReversalSettings.js.map +1 -1
  295. package/lib/cjs/core-common.d.ts +245 -245
  296. package/lib/cjs/core-common.js +261 -261
  297. package/lib/cjs/core-common.js.map +1 -1
  298. package/lib/cjs/domains/FunctionalElementProps.d.ts +11 -11
  299. package/lib/cjs/domains/FunctionalElementProps.js +9 -9
  300. package/lib/cjs/domains/FunctionalElementProps.js.map +1 -1
  301. package/lib/cjs/domains/GenericElementProps.d.ts +18 -18
  302. package/lib/cjs/domains/GenericElementProps.js +9 -9
  303. package/lib/cjs/domains/GenericElementProps.js.map +1 -1
  304. package/lib/cjs/geometry/AdditionalTransform.d.ts +84 -84
  305. package/lib/cjs/geometry/AdditionalTransform.js +85 -85
  306. package/lib/cjs/geometry/AdditionalTransform.js.map +1 -1
  307. package/lib/cjs/geometry/AreaPattern.d.ts +82 -82
  308. package/lib/cjs/geometry/AreaPattern.js +204 -204
  309. package/lib/cjs/geometry/AreaPattern.js.map +1 -1
  310. package/lib/cjs/geometry/BoundingSphere.d.ts +14 -14
  311. package/lib/cjs/geometry/BoundingSphere.js +30 -30
  312. package/lib/cjs/geometry/BoundingSphere.js.map +1 -1
  313. package/lib/cjs/geometry/Cartographic.d.ts +137 -137
  314. package/lib/cjs/geometry/Cartographic.js +345 -345
  315. package/lib/cjs/geometry/Cartographic.js.map +1 -1
  316. package/lib/cjs/geometry/CoordinateReferenceSystem.d.ts +269 -269
  317. package/lib/cjs/geometry/CoordinateReferenceSystem.js +261 -261
  318. package/lib/cjs/geometry/CoordinateReferenceSystem.js.map +1 -1
  319. package/lib/cjs/geometry/ElementGeometry.d.ts +402 -402
  320. package/lib/cjs/geometry/ElementGeometry.js +1719 -1719
  321. package/lib/cjs/geometry/ElementGeometry.js.map +1 -1
  322. package/lib/cjs/geometry/ElementGeometryFB.d.ts +2372 -2372
  323. package/lib/cjs/geometry/ElementGeometryFB.js +3814 -3814
  324. package/lib/cjs/geometry/ElementGeometryFB.js.map +1 -1
  325. package/lib/cjs/geometry/FrustumPlanes.d.ts +32 -32
  326. package/lib/cjs/geometry/FrustumPlanes.js +132 -132
  327. package/lib/cjs/geometry/FrustumPlanes.js.map +1 -1
  328. package/lib/cjs/geometry/GeodeticDatum.d.ts +409 -409
  329. package/lib/cjs/geometry/GeodeticDatum.js +401 -401
  330. package/lib/cjs/geometry/GeodeticDatum.js.map +1 -1
  331. package/lib/cjs/geometry/GeodeticEllipsoid.d.ts +72 -72
  332. package/lib/cjs/geometry/GeodeticEllipsoid.js +72 -72
  333. package/lib/cjs/geometry/GeodeticEllipsoid.js.map +1 -1
  334. package/lib/cjs/geometry/GeometryStream.d.ts +347 -347
  335. package/lib/cjs/geometry/GeometryStream.js +469 -469
  336. package/lib/cjs/geometry/GeometryStream.js.map +1 -1
  337. package/lib/cjs/geometry/ImageGraphic.d.ts +74 -74
  338. package/lib/cjs/geometry/ImageGraphic.js +98 -98
  339. package/lib/cjs/geometry/ImageGraphic.js.map +1 -1
  340. package/lib/cjs/geometry/LineStyle.d.ts +71 -71
  341. package/lib/cjs/geometry/LineStyle.js +129 -129
  342. package/lib/cjs/geometry/LineStyle.js.map +1 -1
  343. package/lib/cjs/geometry/Placement.d.ts +95 -95
  344. package/lib/cjs/geometry/Placement.js +131 -131
  345. package/lib/cjs/geometry/Placement.js.map +1 -1
  346. package/lib/cjs/geometry/Projection.d.ts +251 -251
  347. package/lib/cjs/geometry/Projection.js +198 -198
  348. package/lib/cjs/geometry/Projection.js.map +1 -1
  349. package/lib/cjs/geometry/TextString.d.ts +55 -55
  350. package/lib/cjs/geometry/TextString.js +65 -65
  351. package/lib/cjs/geometry/TextString.js.map +1 -1
  352. package/lib/cjs/ipc/IpcSession.d.ts +23 -23
  353. package/lib/cjs/ipc/IpcSession.js +27 -27
  354. package/lib/cjs/ipc/IpcSession.js.map +1 -1
  355. package/lib/cjs/ipc/IpcSocket.d.ts +96 -96
  356. package/lib/cjs/ipc/IpcSocket.js +16 -16
  357. package/lib/cjs/ipc/IpcSocket.js.map +1 -1
  358. package/lib/cjs/ipc/IpcWebSocket.d.ts +61 -61
  359. package/lib/cjs/ipc/IpcWebSocket.js +151 -151
  360. package/lib/cjs/ipc/IpcWebSocket.js.map +1 -1
  361. package/lib/cjs/ipc/IpcWebSocketTransport.d.ts +15 -15
  362. package/lib/cjs/ipc/IpcWebSocketTransport.js +160 -160
  363. package/lib/cjs/ipc/IpcWebSocketTransport.js.map +1 -1
  364. package/lib/cjs/rpc/DevToolsRpcInterface.d.ts +32 -32
  365. package/lib/cjs/rpc/DevToolsRpcInterface.js +48 -48
  366. package/lib/cjs/rpc/DevToolsRpcInterface.js.map +1 -1
  367. package/lib/cjs/rpc/IModelReadRpcInterface.d.ts +99 -99
  368. package/lib/cjs/rpc/IModelReadRpcInterface.js +122 -122
  369. package/lib/cjs/rpc/IModelReadRpcInterface.js.map +1 -1
  370. package/lib/cjs/rpc/IModelTileRpcInterface.d.ts +61 -61
  371. package/lib/cjs/rpc/IModelTileRpcInterface.js +96 -96
  372. package/lib/cjs/rpc/IModelTileRpcInterface.js.map +1 -1
  373. package/lib/cjs/rpc/SnapshotIModelRpcInterface.d.ts +23 -23
  374. package/lib/cjs/rpc/SnapshotIModelRpcInterface.js +48 -48
  375. package/lib/cjs/rpc/SnapshotIModelRpcInterface.js.map +1 -1
  376. package/lib/cjs/rpc/TestRpcManager.d.ts +20 -20
  377. package/lib/cjs/rpc/TestRpcManager.js +39 -39
  378. package/lib/cjs/rpc/TestRpcManager.js.map +1 -1
  379. package/lib/cjs/rpc/WipRpcInterface.d.ts +29 -29
  380. package/lib/cjs/rpc/WipRpcInterface.js +40 -40
  381. package/lib/cjs/rpc/WipRpcInterface.js.map +1 -1
  382. package/lib/cjs/rpc/core/RpcConfiguration.d.ts +111 -111
  383. package/lib/cjs/rpc/core/RpcConfiguration.js +191 -191
  384. package/lib/cjs/rpc/core/RpcConfiguration.js.map +1 -1
  385. package/lib/cjs/rpc/core/RpcConstants.d.ts +85 -85
  386. package/lib/cjs/rpc/core/RpcConstants.js +103 -103
  387. package/lib/cjs/rpc/core/RpcConstants.js.map +1 -1
  388. package/lib/cjs/rpc/core/RpcControl.d.ts +54 -54
  389. package/lib/cjs/rpc/core/RpcControl.js +144 -144
  390. package/lib/cjs/rpc/core/RpcControl.js.map +1 -1
  391. package/lib/cjs/rpc/core/RpcInvocation.d.ts +89 -89
  392. package/lib/cjs/rpc/core/RpcInvocation.js +258 -258
  393. package/lib/cjs/rpc/core/RpcInvocation.js.map +1 -1
  394. package/lib/cjs/rpc/core/RpcMarshaling.d.ts +35 -35
  395. package/lib/cjs/rpc/core/RpcMarshaling.js +156 -156
  396. package/lib/cjs/rpc/core/RpcMarshaling.js.map +1 -1
  397. package/lib/cjs/rpc/core/RpcOperation.d.ts +67 -67
  398. package/lib/cjs/rpc/core/RpcOperation.js +133 -133
  399. package/lib/cjs/rpc/core/RpcOperation.js.map +1 -1
  400. package/lib/cjs/rpc/core/RpcPendingQueue.d.ts +21 -21
  401. package/lib/cjs/rpc/core/RpcPendingQueue.js +94 -94
  402. package/lib/cjs/rpc/core/RpcPendingQueue.js.map +1 -1
  403. package/lib/cjs/rpc/core/RpcProtocol.d.ts +132 -132
  404. package/lib/cjs/rpc/core/RpcProtocol.js +127 -127
  405. package/lib/cjs/rpc/core/RpcProtocol.js.map +1 -1
  406. package/lib/cjs/rpc/core/RpcPush.d.ts +68 -68
  407. package/lib/cjs/rpc/core/RpcPush.js +127 -127
  408. package/lib/cjs/rpc/core/RpcPush.js.map +1 -1
  409. package/lib/cjs/rpc/core/RpcRegistry.d.ts +48 -48
  410. package/lib/cjs/rpc/core/RpcRegistry.js +198 -198
  411. package/lib/cjs/rpc/core/RpcRegistry.js.map +1 -1
  412. package/lib/cjs/rpc/core/RpcRequest.d.ts +186 -186
  413. package/lib/cjs/rpc/core/RpcRequest.js +477 -477
  414. package/lib/cjs/rpc/core/RpcRequest.js.map +1 -1
  415. package/lib/cjs/rpc/core/RpcRequestContext.d.ts +14 -14
  416. package/lib/cjs/rpc/core/RpcRequestContext.js +2 -2
  417. package/lib/cjs/rpc/core/RpcRequestContext.js.map +1 -1
  418. package/lib/cjs/rpc/core/RpcRoutingToken.d.ts +12 -12
  419. package/lib/cjs/rpc/core/RpcRoutingToken.js +23 -23
  420. package/lib/cjs/rpc/core/RpcRoutingToken.js.map +1 -1
  421. package/lib/cjs/rpc/core/RpcSessionInvocation.d.ts +10 -10
  422. package/lib/cjs/rpc/core/RpcSessionInvocation.js +59 -59
  423. package/lib/cjs/rpc/core/RpcSessionInvocation.js.map +1 -1
  424. package/lib/cjs/rpc/web/BentleyCloudRpcManager.d.ts +46 -46
  425. package/lib/cjs/rpc/web/BentleyCloudRpcManager.js +73 -73
  426. package/lib/cjs/rpc/web/BentleyCloudRpcManager.js.map +1 -1
  427. package/lib/cjs/rpc/web/BentleyCloudRpcProtocol.d.ts +33 -33
  428. package/lib/cjs/rpc/web/BentleyCloudRpcProtocol.js +142 -142
  429. package/lib/cjs/rpc/web/BentleyCloudRpcProtocol.js.map +1 -1
  430. package/lib/cjs/rpc/web/OpenAPI.d.ts +139 -139
  431. package/lib/cjs/rpc/web/OpenAPI.js +60 -60
  432. package/lib/cjs/rpc/web/OpenAPI.js.map +1 -1
  433. package/lib/cjs/rpc/web/RpcMultipart.d.ts +35 -35
  434. package/lib/cjs/rpc/web/RpcMultipart.js +50 -50
  435. package/lib/cjs/rpc/web/RpcMultipart.js.map +1 -1
  436. package/lib/cjs/rpc/web/WebAppRpcLogging.d.ts +28 -28
  437. package/lib/cjs/rpc/web/WebAppRpcLogging.js +139 -139
  438. package/lib/cjs/rpc/web/WebAppRpcLogging.js.map +1 -1
  439. package/lib/cjs/rpc/web/WebAppRpcProtocol.d.ts +87 -87
  440. package/lib/cjs/rpc/web/WebAppRpcProtocol.js +116 -116
  441. package/lib/cjs/rpc/web/WebAppRpcProtocol.js.map +1 -1
  442. package/lib/cjs/rpc/web/WebAppRpcRequest.d.ts +67 -67
  443. package/lib/cjs/rpc/web/WebAppRpcRequest.js +239 -239
  444. package/lib/cjs/rpc/web/WebAppRpcRequest.js.map +1 -1
  445. package/lib/cjs/rpc/web/multipart/RpcMultipartParser.d.ts +32 -32
  446. package/lib/cjs/rpc/web/multipart/RpcMultipartParser.js +372 -372
  447. package/lib/cjs/rpc/web/multipart/RpcMultipartParser.js.map +1 -1
  448. package/lib/cjs/tile/B3dmTileIO.d.ts +19 -19
  449. package/lib/cjs/tile/B3dmTileIO.js +66 -66
  450. package/lib/cjs/tile/B3dmTileIO.js.map +1 -1
  451. package/lib/cjs/tile/CompositeTileIO.d.ts +15 -15
  452. package/lib/cjs/tile/CompositeTileIO.js +26 -26
  453. package/lib/cjs/tile/CompositeTileIO.js.map +1 -1
  454. package/lib/cjs/tile/ElementGraphics.d.ts +145 -145
  455. package/lib/cjs/tile/ElementGraphics.js +9 -9
  456. package/lib/cjs/tile/ElementGraphics.js.map +1 -1
  457. package/lib/cjs/tile/GltfTileIO.d.ts +45 -45
  458. package/lib/cjs/tile/GltfTileIO.js +109 -109
  459. package/lib/cjs/tile/GltfTileIO.js.map +1 -1
  460. package/lib/cjs/tile/I3dmTileIO.d.ts +20 -20
  461. package/lib/cjs/tile/I3dmTileIO.js +40 -40
  462. package/lib/cjs/tile/I3dmTileIO.js.map +1 -1
  463. package/lib/cjs/tile/IModelTileIO.d.ts +75 -75
  464. package/lib/cjs/tile/IModelTileIO.js +95 -95
  465. package/lib/cjs/tile/IModelTileIO.js.map +1 -1
  466. package/lib/cjs/tile/PntsTileIO.d.ts +17 -17
  467. package/lib/cjs/tile/PntsTileIO.js +26 -26
  468. package/lib/cjs/tile/PntsTileIO.js.map +1 -1
  469. package/lib/cjs/tile/TileIO.d.ts +66 -66
  470. package/lib/cjs/tile/TileIO.js +118 -118
  471. package/lib/cjs/tile/TileIO.js.map +1 -1
  472. package/lib/cjs/tile/TileMetadata.d.ts +228 -228
  473. package/lib/cjs/tile/TileMetadata.js +676 -676
  474. package/lib/cjs/tile/TileMetadata.js.map +1 -1
  475. package/lib/esm/AmbientOcclusion.d.ts +49 -49
  476. package/lib/esm/AmbientOcclusion.js +52 -52
  477. package/lib/esm/AmbientOcclusion.js.map +1 -1
  478. package/lib/esm/AnalysisStyle.d.ts +134 -134
  479. package/lib/esm/AnalysisStyle.js +159 -159
  480. package/lib/esm/AnalysisStyle.js.map +1 -1
  481. package/lib/esm/AuthorizationClient.d.ts +11 -11
  482. package/lib/esm/AuthorizationClient.js +8 -8
  483. package/lib/esm/AuthorizationClient.js.map +1 -1
  484. package/lib/esm/BackendTypes.d.ts +12 -12
  485. package/lib/esm/BackendTypes.js +8 -8
  486. package/lib/esm/BackendTypes.js.map +1 -1
  487. package/lib/esm/BackgroundMapProvider.d.ts +51 -51
  488. package/lib/esm/BackgroundMapProvider.js +64 -64
  489. package/lib/esm/BackgroundMapProvider.js.map +1 -1
  490. package/lib/esm/BackgroundMapSettings.d.ts +136 -136
  491. package/lib/esm/BackgroundMapSettings.js +152 -152
  492. package/lib/esm/BackgroundMapSettings.js.map +1 -1
  493. package/lib/esm/Base64EncodedString.d.ts +32 -32
  494. package/lib/esm/Base64EncodedString.js +63 -63
  495. package/lib/esm/Base64EncodedString.js.map +1 -1
  496. package/lib/esm/BlobReader.d.ts +31 -31
  497. package/lib/esm/BlobReader.js +79 -79
  498. package/lib/esm/BlobReader.js.map +1 -1
  499. package/lib/esm/BriefcaseTypes.d.ts +189 -189
  500. package/lib/esm/BriefcaseTypes.js +92 -92
  501. package/lib/esm/BriefcaseTypes.js.map +1 -1
  502. package/lib/esm/Camera.d.ts +42 -42
  503. package/lib/esm/Camera.js +58 -58
  504. package/lib/esm/Camera.js.map +1 -1
  505. package/lib/esm/ChangedElements.d.ts +85 -85
  506. package/lib/esm/ChangedElements.js +20 -20
  507. package/lib/esm/ChangedElements.js.map +1 -1
  508. package/lib/esm/ChangedEntities.d.ts +45 -45
  509. package/lib/esm/ChangedEntities.js +8 -8
  510. package/lib/esm/ChangedEntities.js.map +1 -1
  511. package/lib/esm/ChangesetProps.d.ts +98 -98
  512. package/lib/esm/ChangesetProps.js +19 -19
  513. package/lib/esm/ChangesetProps.js.map +1 -1
  514. package/lib/esm/ClipStyle.d.ts +89 -89
  515. package/lib/esm/ClipStyle.js +118 -118
  516. package/lib/esm/ClipStyle.js.map +1 -1
  517. package/lib/esm/CloudStorage.d.ts +62 -62
  518. package/lib/esm/CloudStorage.js +109 -109
  519. package/lib/esm/CloudStorage.js.map +1 -1
  520. package/lib/esm/CloudStorageTileCache.d.ts +27 -27
  521. package/lib/esm/CloudStorageTileCache.js +62 -62
  522. package/lib/esm/CloudStorageTileCache.js.map +1 -1
  523. package/lib/esm/Code.d.ts +256 -256
  524. package/lib/esm/Code.js +276 -276
  525. package/lib/esm/Code.js.map +1 -1
  526. package/lib/esm/ColorByName.d.ts +161 -161
  527. package/lib/esm/ColorByName.js +166 -166
  528. package/lib/esm/ColorByName.js.map +1 -1
  529. package/lib/esm/ColorDef.d.ts +208 -208
  530. package/lib/esm/ColorDef.js +567 -567
  531. package/lib/esm/ColorDef.js.map +1 -1
  532. package/lib/esm/CommonLoggerCategory.d.ts +18 -18
  533. package/lib/esm/CommonLoggerCategory.js +23 -23
  534. package/lib/esm/CommonLoggerCategory.js.map +1 -1
  535. package/lib/esm/ConcurrentQuery.d.ts +421 -421
  536. package/lib/esm/ConcurrentQuery.js +545 -545
  537. package/lib/esm/ConcurrentQuery.js.map +1 -1
  538. package/lib/esm/ContextRealityModel.d.ts +276 -276
  539. package/lib/esm/ContextRealityModel.js +353 -353
  540. package/lib/esm/ContextRealityModel.js.map +1 -1
  541. package/lib/esm/DisplayStyleSettings.d.ts +584 -584
  542. package/lib/esm/DisplayStyleSettings.js +976 -976
  543. package/lib/esm/DisplayStyleSettings.js.map +1 -1
  544. package/lib/esm/ECSchemaProps.d.ts +39 -39
  545. package/lib/esm/ECSchemaProps.js +8 -8
  546. package/lib/esm/ECSchemaProps.js.map +1 -1
  547. package/lib/esm/ECSqlReader.d.ts +70 -70
  548. package/lib/esm/ECSqlReader.js +275 -275
  549. package/lib/esm/ECSqlReader.js.map +1 -1
  550. package/lib/esm/ECSqlTypes.d.ts +128 -128
  551. package/lib/esm/ECSqlTypes.js +185 -185
  552. package/lib/esm/ECSqlTypes.js.map +1 -1
  553. package/lib/esm/ElementMesh.d.ts +39 -39
  554. package/lib/esm/ElementMesh.js +52 -52
  555. package/lib/esm/ElementMesh.js.map +1 -1
  556. package/lib/esm/ElementProps.d.ts +479 -479
  557. package/lib/esm/ElementProps.js +92 -92
  558. package/lib/esm/ElementProps.js.map +1 -1
  559. package/lib/esm/EmphasizeElementsProps.d.ts +55 -55
  560. package/lib/esm/EmphasizeElementsProps.js +22 -22
  561. package/lib/esm/EmphasizeElementsProps.js.map +1 -1
  562. package/lib/esm/EntityProps.d.ts +176 -176
  563. package/lib/esm/EntityProps.js +107 -107
  564. package/lib/esm/EntityProps.js.map +1 -1
  565. package/lib/esm/EntityReference.d.ts +51 -51
  566. package/lib/esm/EntityReference.js +52 -52
  567. package/lib/esm/EntityReference.js.map +1 -1
  568. package/lib/esm/Environment.d.ts +61 -61
  569. package/lib/esm/Environment.js +69 -69
  570. package/lib/esm/Environment.js.map +1 -1
  571. package/lib/esm/FeatureGates.d.ts +31 -31
  572. package/lib/esm/FeatureGates.js +51 -51
  573. package/lib/esm/FeatureGates.js.map +1 -1
  574. package/lib/esm/FeatureIndex.d.ts +39 -39
  575. package/lib/esm/FeatureIndex.js +57 -57
  576. package/lib/esm/FeatureIndex.js.map +1 -1
  577. package/lib/esm/FeatureSymbology.d.ts +444 -444
  578. package/lib/esm/FeatureSymbology.js +609 -609
  579. package/lib/esm/FeatureSymbology.js.map +1 -1
  580. package/lib/esm/FeatureTable.d.ts +141 -141
  581. package/lib/esm/FeatureTable.js +272 -272
  582. package/lib/esm/FeatureTable.js.map +1 -1
  583. package/lib/esm/Fonts.d.ts +51 -51
  584. package/lib/esm/Fonts.js +49 -49
  585. package/lib/esm/Fonts.js.map +1 -1
  586. package/lib/esm/Frustum.d.ts +114 -114
  587. package/lib/esm/Frustum.js +288 -288
  588. package/lib/esm/Frustum.js.map +1 -1
  589. package/lib/esm/GeoCoordinateServices.d.ts +119 -119
  590. package/lib/esm/GeoCoordinateServices.js +76 -76
  591. package/lib/esm/GeoCoordinateServices.js.map +1 -1
  592. package/lib/esm/GeometryContainment.d.ts +28 -28
  593. package/lib/esm/GeometryContainment.js +8 -8
  594. package/lib/esm/GeometryContainment.js.map +1 -1
  595. package/lib/esm/GeometryParams.d.ts +130 -130
  596. package/lib/esm/GeometryParams.js +170 -170
  597. package/lib/esm/GeometryParams.js.map +1 -1
  598. package/lib/esm/GeometrySummary.d.ts +45 -45
  599. package/lib/esm/GeometrySummary.js +20 -20
  600. package/lib/esm/GeometrySummary.js.map +1 -1
  601. package/lib/esm/Gradient.d.ts +139 -139
  602. package/lib/esm/Gradient.js +452 -452
  603. package/lib/esm/Gradient.js.map +1 -1
  604. package/lib/esm/GraphicParams.d.ts +58 -58
  605. package/lib/esm/GraphicParams.js +81 -81
  606. package/lib/esm/GraphicParams.js.map +1 -1
  607. package/lib/esm/GroundPlane.d.ts +52 -52
  608. package/lib/esm/GroundPlane.js +60 -60
  609. package/lib/esm/GroundPlane.js.map +1 -1
  610. package/lib/esm/HSLColor.d.ts +20 -20
  611. package/lib/esm/HSLColor.js +28 -28
  612. package/lib/esm/HSLColor.js.map +1 -1
  613. package/lib/esm/HSVColor.d.ts +30 -30
  614. package/lib/esm/HSVColor.js +55 -55
  615. package/lib/esm/HSVColor.js.map +1 -1
  616. package/lib/esm/HiddenLine.d.ts +97 -97
  617. package/lib/esm/HiddenLine.js +159 -159
  618. package/lib/esm/HiddenLine.js.map +1 -1
  619. package/lib/esm/Hilite.d.ts +50 -50
  620. package/lib/esm/Hilite.js +61 -61
  621. package/lib/esm/Hilite.js.map +1 -1
  622. package/lib/esm/IModel.d.ts +359 -359
  623. package/lib/esm/IModel.js +342 -342
  624. package/lib/esm/IModel.js.map +1 -1
  625. package/lib/esm/IModelError.d.ts +36 -36
  626. package/lib/esm/IModelError.js +55 -55
  627. package/lib/esm/IModelError.js.map +1 -1
  628. package/lib/esm/IModelVersion.d.ts +68 -68
  629. package/lib/esm/IModelVersion.js +75 -75
  630. package/lib/esm/IModelVersion.js.map +1 -1
  631. package/lib/esm/Image.d.ts +86 -86
  632. package/lib/esm/Image.js +120 -120
  633. package/lib/esm/Image.js.map +1 -1
  634. package/lib/esm/IpcAppProps.d.ts +141 -141
  635. package/lib/esm/IpcAppProps.js +19 -19
  636. package/lib/esm/IpcAppProps.js.map +1 -1
  637. package/lib/esm/LightSettings.d.ts +224 -224
  638. package/lib/esm/LightSettings.js +301 -301
  639. package/lib/esm/LightSettings.js.map +1 -1
  640. package/lib/esm/LinePixels.d.ts +34 -34
  641. package/lib/esm/LinePixels.js +39 -39
  642. package/lib/esm/LinePixels.js.map +1 -1
  643. package/lib/esm/Localization.d.ts +113 -113
  644. package/lib/esm/Localization.js +22 -22
  645. package/lib/esm/Localization.js.map +1 -1
  646. package/lib/esm/MapImagerySettings.d.ts +62 -62
  647. package/lib/esm/MapImagerySettings.js +76 -76
  648. package/lib/esm/MapImagerySettings.js.map +1 -1
  649. package/lib/esm/MapLayerSettings.d.ts +272 -272
  650. package/lib/esm/MapLayerSettings.js +403 -403
  651. package/lib/esm/MapLayerSettings.js.map +1 -1
  652. package/lib/esm/MassProperties.d.ts +64 -64
  653. package/lib/esm/MassProperties.js +20 -20
  654. package/lib/esm/MassProperties.js.map +1 -1
  655. package/lib/esm/MaterialProps.d.ts +118 -118
  656. package/lib/esm/MaterialProps.js +20 -20
  657. package/lib/esm/MaterialProps.js.map +1 -1
  658. package/lib/esm/ModelClipGroup.d.ts +67 -67
  659. package/lib/esm/ModelClipGroup.js +93 -93
  660. package/lib/esm/ModelClipGroup.js.map +1 -1
  661. package/lib/esm/ModelGeometryChanges.d.ts +107 -107
  662. package/lib/esm/ModelGeometryChanges.js +80 -80
  663. package/lib/esm/ModelGeometryChanges.js.map +1 -1
  664. package/lib/esm/ModelProps.d.ts +67 -67
  665. package/lib/esm/ModelProps.js +8 -8
  666. package/lib/esm/ModelProps.js.map +1 -1
  667. package/lib/esm/NativeAppProps.d.ts +122 -122
  668. package/lib/esm/NativeAppProps.js +27 -27
  669. package/lib/esm/NativeAppProps.js.map +1 -1
  670. package/lib/esm/OctEncodedNormal.d.ts +33 -33
  671. package/lib/esm/OctEncodedNormal.js +93 -93
  672. package/lib/esm/OctEncodedNormal.js.map +1 -1
  673. package/lib/esm/PlanProjectionSettings.d.ts +47 -47
  674. package/lib/esm/PlanProjectionSettings.js +59 -59
  675. package/lib/esm/PlanProjectionSettings.js.map +1 -1
  676. package/lib/esm/PlanarClipMask.d.ts +177 -177
  677. package/lib/esm/PlanarClipMask.js +132 -132
  678. package/lib/esm/PlanarClipMask.js.map +1 -1
  679. package/lib/esm/QPoint.d.ts +479 -479
  680. package/lib/esm/QPoint.js +815 -815
  681. package/lib/esm/QPoint.js.map +1 -1
  682. package/lib/esm/RealityDataAccessProps.d.ts +41 -41
  683. package/lib/esm/RealityDataAccessProps.js +16 -16
  684. package/lib/esm/RealityDataAccessProps.js.map +1 -1
  685. package/lib/esm/RealityModelDisplaySettings.d.ts +183 -183
  686. package/lib/esm/RealityModelDisplaySettings.js +137 -137
  687. package/lib/esm/RealityModelDisplaySettings.js.map +1 -1
  688. package/lib/esm/Render.d.ts +89 -89
  689. package/lib/esm/Render.js +165 -165
  690. package/lib/esm/Render.js.map +1 -1
  691. package/lib/esm/RenderMaterial.d.ts +58 -58
  692. package/lib/esm/RenderMaterial.js +72 -72
  693. package/lib/esm/RenderMaterial.js.map +1 -1
  694. package/lib/esm/RenderSchedule.d.ts +543 -543
  695. package/lib/esm/RenderSchedule.js +999 -999
  696. package/lib/esm/RenderTexture.d.ts +70 -70
  697. package/lib/esm/RenderTexture.js +55 -55
  698. package/lib/esm/RenderTexture.js.map +1 -1
  699. package/lib/esm/RgbColor.d.ts +47 -47
  700. package/lib/esm/RgbColor.js +73 -73
  701. package/lib/esm/RgbColor.js.map +1 -1
  702. package/lib/esm/RpcInterface.d.ts +33 -33
  703. package/lib/esm/RpcInterface.js +133 -133
  704. package/lib/esm/RpcInterface.js.map +1 -1
  705. package/lib/esm/RpcManager.d.ts +40 -40
  706. package/lib/esm/RpcManager.js +51 -51
  707. package/lib/esm/RpcManager.js.map +1 -1
  708. package/lib/esm/SessionProps.d.ts +16 -16
  709. package/lib/esm/SessionProps.js +8 -8
  710. package/lib/esm/SessionProps.js.map +1 -1
  711. package/lib/esm/SkyBox.d.ts +215 -215
  712. package/lib/esm/SkyBox.js +203 -203
  713. package/lib/esm/SkyBox.js.map +1 -1
  714. package/lib/esm/Snapping.d.ts +49 -49
  715. package/lib/esm/Snapping.js +8 -8
  716. package/lib/esm/Snapping.js.map +1 -1
  717. package/lib/esm/SolarCalculate.d.ts +27 -27
  718. package/lib/esm/SolarCalculate.js +204 -204
  719. package/lib/esm/SolarCalculate.js.map +1 -1
  720. package/lib/esm/SolarShadows.d.ts +35 -35
  721. package/lib/esm/SolarShadows.js +58 -58
  722. package/lib/esm/SolarShadows.js.map +1 -1
  723. package/lib/esm/SpatialClassification.d.ts +208 -208
  724. package/lib/esm/SpatialClassification.js +334 -334
  725. package/lib/esm/SpatialClassification.js.map +1 -1
  726. package/lib/esm/SubCategoryAppearance.d.ts +91 -91
  727. package/lib/esm/SubCategoryAppearance.js +92 -92
  728. package/lib/esm/SubCategoryAppearance.js.map +1 -1
  729. package/lib/esm/SubCategoryOverride.d.ts +46 -46
  730. package/lib/esm/SubCategoryOverride.js +100 -100
  731. package/lib/esm/SubCategoryOverride.js.map +1 -1
  732. package/lib/esm/TerrainSettings.d.ts +82 -82
  733. package/lib/esm/TerrainSettings.js +98 -98
  734. package/lib/esm/TerrainSettings.js.map +1 -1
  735. package/lib/esm/TextureMapping.d.ts +116 -116
  736. package/lib/esm/TextureMapping.js +170 -170
  737. package/lib/esm/TextureMapping.js.map +1 -1
  738. package/lib/esm/TextureProps.d.ts +65 -65
  739. package/lib/esm/TextureProps.js +25 -25
  740. package/lib/esm/TextureProps.js.map +1 -1
  741. package/lib/esm/ThematicDisplay.d.ts +230 -230
  742. package/lib/esm/ThematicDisplay.js +337 -337
  743. package/lib/esm/ThematicDisplay.js.map +1 -1
  744. package/lib/esm/Thumbnail.d.ts +26 -26
  745. package/lib/esm/Thumbnail.js +8 -8
  746. package/lib/esm/Thumbnail.js.map +1 -1
  747. package/lib/esm/TileProps.d.ts +82 -82
  748. package/lib/esm/TileProps.js +25 -25
  749. package/lib/esm/TileProps.js.map +1 -1
  750. package/lib/esm/Tween.d.ts +191 -191
  751. package/lib/esm/Tween.js +565 -565
  752. package/lib/esm/Tween.js.map +1 -1
  753. package/lib/esm/TxnAction.d.ts +21 -21
  754. package/lib/esm/TxnAction.js +26 -26
  755. package/lib/esm/TxnAction.js.map +1 -1
  756. package/lib/esm/ViewDetails.d.ts +125 -125
  757. package/lib/esm/ViewDetails.js +161 -161
  758. package/lib/esm/ViewDetails.js.map +1 -1
  759. package/lib/esm/ViewFlags.d.ts +291 -291
  760. package/lib/esm/ViewFlags.js +364 -364
  761. package/lib/esm/ViewFlags.js.map +1 -1
  762. package/lib/esm/ViewProps.d.ts +205 -205
  763. package/lib/esm/ViewProps.js +8 -8
  764. package/lib/esm/ViewProps.js.map +1 -1
  765. package/lib/esm/WhiteOnWhiteReversalSettings.d.ts +36 -36
  766. package/lib/esm/WhiteOnWhiteReversalSettings.js +33 -33
  767. package/lib/esm/WhiteOnWhiteReversalSettings.js.map +1 -1
  768. package/lib/esm/core-common.d.ts +245 -245
  769. package/lib/esm/core-common.js +249 -249
  770. package/lib/esm/core-common.js.map +1 -1
  771. package/lib/esm/domains/FunctionalElementProps.d.ts +11 -11
  772. package/lib/esm/domains/FunctionalElementProps.js +8 -8
  773. package/lib/esm/domains/FunctionalElementProps.js.map +1 -1
  774. package/lib/esm/domains/GenericElementProps.d.ts +18 -18
  775. package/lib/esm/domains/GenericElementProps.js +8 -8
  776. package/lib/esm/domains/GenericElementProps.js.map +1 -1
  777. package/lib/esm/geometry/AdditionalTransform.d.ts +84 -84
  778. package/lib/esm/geometry/AdditionalTransform.js +80 -80
  779. package/lib/esm/geometry/AdditionalTransform.js.map +1 -1
  780. package/lib/esm/geometry/AreaPattern.d.ts +82 -82
  781. package/lib/esm/geometry/AreaPattern.js +201 -201
  782. package/lib/esm/geometry/AreaPattern.js.map +1 -1
  783. package/lib/esm/geometry/BoundingSphere.d.ts +14 -14
  784. package/lib/esm/geometry/BoundingSphere.js +26 -26
  785. package/lib/esm/geometry/BoundingSphere.js.map +1 -1
  786. package/lib/esm/geometry/Cartographic.d.ts +137 -137
  787. package/lib/esm/geometry/Cartographic.js +340 -340
  788. package/lib/esm/geometry/Cartographic.js.map +1 -1
  789. package/lib/esm/geometry/CoordinateReferenceSystem.d.ts +269 -269
  790. package/lib/esm/geometry/CoordinateReferenceSystem.js +254 -254
  791. package/lib/esm/geometry/CoordinateReferenceSystem.js.map +1 -1
  792. package/lib/esm/geometry/ElementGeometry.d.ts +402 -402
  793. package/lib/esm/geometry/ElementGeometry.js +1716 -1716
  794. package/lib/esm/geometry/ElementGeometry.js.map +1 -1
  795. package/lib/esm/geometry/ElementGeometryFB.d.ts +2372 -2372
  796. package/lib/esm/geometry/ElementGeometryFB.js +3811 -3811
  797. package/lib/esm/geometry/ElementGeometryFB.js.map +1 -1
  798. package/lib/esm/geometry/FrustumPlanes.d.ts +32 -32
  799. package/lib/esm/geometry/FrustumPlanes.js +128 -128
  800. package/lib/esm/geometry/FrustumPlanes.js.map +1 -1
  801. package/lib/esm/geometry/GeodeticDatum.d.ts +409 -409
  802. package/lib/esm/geometry/GeodeticDatum.js +390 -390
  803. package/lib/esm/geometry/GeodeticDatum.js.map +1 -1
  804. package/lib/esm/geometry/GeodeticEllipsoid.d.ts +72 -72
  805. package/lib/esm/geometry/GeodeticEllipsoid.js +68 -68
  806. package/lib/esm/geometry/GeodeticEllipsoid.js.map +1 -1
  807. package/lib/esm/geometry/GeometryStream.d.ts +347 -347
  808. package/lib/esm/geometry/GeometryStream.js +464 -464
  809. package/lib/esm/geometry/GeometryStream.js.map +1 -1
  810. package/lib/esm/geometry/ImageGraphic.d.ts +74 -74
  811. package/lib/esm/geometry/ImageGraphic.js +93 -93
  812. package/lib/esm/geometry/ImageGraphic.js.map +1 -1
  813. package/lib/esm/geometry/LineStyle.d.ts +71 -71
  814. package/lib/esm/geometry/LineStyle.js +126 -126
  815. package/lib/esm/geometry/LineStyle.js.map +1 -1
  816. package/lib/esm/geometry/Placement.d.ts +95 -95
  817. package/lib/esm/geometry/Placement.js +126 -126
  818. package/lib/esm/geometry/Placement.js.map +1 -1
  819. package/lib/esm/geometry/Projection.d.ts +251 -251
  820. package/lib/esm/geometry/Projection.js +192 -192
  821. package/lib/esm/geometry/Projection.js.map +1 -1
  822. package/lib/esm/geometry/TextString.d.ts +55 -55
  823. package/lib/esm/geometry/TextString.js +61 -61
  824. package/lib/esm/geometry/TextString.js.map +1 -1
  825. package/lib/esm/ipc/IpcSession.d.ts +23 -23
  826. package/lib/esm/ipc/IpcSession.js +23 -23
  827. package/lib/esm/ipc/IpcSession.js.map +1 -1
  828. package/lib/esm/ipc/IpcSocket.d.ts +96 -96
  829. package/lib/esm/ipc/IpcSocket.js +12 -12
  830. package/lib/esm/ipc/IpcSocket.js.map +1 -1
  831. package/lib/esm/ipc/IpcWebSocket.d.ts +61 -61
  832. package/lib/esm/ipc/IpcWebSocket.js +145 -145
  833. package/lib/esm/ipc/IpcWebSocket.js.map +1 -1
  834. package/lib/esm/ipc/IpcWebSocketTransport.d.ts +15 -15
  835. package/lib/esm/ipc/IpcWebSocketTransport.js +156 -156
  836. package/lib/esm/ipc/IpcWebSocketTransport.js.map +1 -1
  837. package/lib/esm/rpc/DevToolsRpcInterface.d.ts +32 -32
  838. package/lib/esm/rpc/DevToolsRpcInterface.js +44 -44
  839. package/lib/esm/rpc/DevToolsRpcInterface.js.map +1 -1
  840. package/lib/esm/rpc/IModelReadRpcInterface.d.ts +99 -99
  841. package/lib/esm/rpc/IModelReadRpcInterface.js +117 -117
  842. package/lib/esm/rpc/IModelReadRpcInterface.js.map +1 -1
  843. package/lib/esm/rpc/IModelTileRpcInterface.d.ts +61 -61
  844. package/lib/esm/rpc/IModelTileRpcInterface.js +92 -92
  845. package/lib/esm/rpc/IModelTileRpcInterface.js.map +1 -1
  846. package/lib/esm/rpc/SnapshotIModelRpcInterface.d.ts +23 -23
  847. package/lib/esm/rpc/SnapshotIModelRpcInterface.js +44 -44
  848. package/lib/esm/rpc/SnapshotIModelRpcInterface.js.map +1 -1
  849. package/lib/esm/rpc/TestRpcManager.d.ts +20 -20
  850. package/lib/esm/rpc/TestRpcManager.js +35 -35
  851. package/lib/esm/rpc/TestRpcManager.js.map +1 -1
  852. package/lib/esm/rpc/WipRpcInterface.d.ts +29 -29
  853. package/lib/esm/rpc/WipRpcInterface.js +36 -36
  854. package/lib/esm/rpc/WipRpcInterface.js.map +1 -1
  855. package/lib/esm/rpc/core/RpcConfiguration.d.ts +111 -111
  856. package/lib/esm/rpc/core/RpcConfiguration.js +184 -184
  857. package/lib/esm/rpc/core/RpcConfiguration.js.map +1 -1
  858. package/lib/esm/rpc/core/RpcConstants.d.ts +85 -85
  859. package/lib/esm/rpc/core/RpcConstants.js +100 -100
  860. package/lib/esm/rpc/core/RpcConstants.js.map +1 -1
  861. package/lib/esm/rpc/core/RpcControl.d.ts +54 -54
  862. package/lib/esm/rpc/core/RpcControl.js +137 -137
  863. package/lib/esm/rpc/core/RpcControl.js.map +1 -1
  864. package/lib/esm/rpc/core/RpcInvocation.d.ts +89 -89
  865. package/lib/esm/rpc/core/RpcInvocation.js +254 -254
  866. package/lib/esm/rpc/core/RpcInvocation.js.map +1 -1
  867. package/lib/esm/rpc/core/RpcMarshaling.d.ts +35 -35
  868. package/lib/esm/rpc/core/RpcMarshaling.js +152 -152
  869. package/lib/esm/rpc/core/RpcMarshaling.js.map +1 -1
  870. package/lib/esm/rpc/core/RpcOperation.d.ts +67 -67
  871. package/lib/esm/rpc/core/RpcOperation.js +128 -128
  872. package/lib/esm/rpc/core/RpcOperation.js.map +1 -1
  873. package/lib/esm/rpc/core/RpcPendingQueue.d.ts +21 -21
  874. package/lib/esm/rpc/core/RpcPendingQueue.js +90 -90
  875. package/lib/esm/rpc/core/RpcPendingQueue.js.map +1 -1
  876. package/lib/esm/rpc/core/RpcProtocol.d.ts +132 -132
  877. package/lib/esm/rpc/core/RpcProtocol.js +123 -123
  878. package/lib/esm/rpc/core/RpcProtocol.js.map +1 -1
  879. package/lib/esm/rpc/core/RpcPush.d.ts +68 -68
  880. package/lib/esm/rpc/core/RpcPush.js +119 -119
  881. package/lib/esm/rpc/core/RpcPush.js.map +1 -1
  882. package/lib/esm/rpc/core/RpcRegistry.d.ts +48 -48
  883. package/lib/esm/rpc/core/RpcRegistry.js +194 -194
  884. package/lib/esm/rpc/core/RpcRegistry.js.map +1 -1
  885. package/lib/esm/rpc/core/RpcRequest.d.ts +186 -186
  886. package/lib/esm/rpc/core/RpcRequest.js +472 -472
  887. package/lib/esm/rpc/core/RpcRequest.js.map +1 -1
  888. package/lib/esm/rpc/core/RpcRequestContext.d.ts +14 -14
  889. package/lib/esm/rpc/core/RpcRequestContext.js +1 -1
  890. package/lib/esm/rpc/core/RpcRequestContext.js.map +1 -1
  891. package/lib/esm/rpc/core/RpcRoutingToken.d.ts +12 -12
  892. package/lib/esm/rpc/core/RpcRoutingToken.js +19 -19
  893. package/lib/esm/rpc/core/RpcRoutingToken.js.map +1 -1
  894. package/lib/esm/rpc/core/RpcSessionInvocation.d.ts +10 -10
  895. package/lib/esm/rpc/core/RpcSessionInvocation.js +55 -55
  896. package/lib/esm/rpc/core/RpcSessionInvocation.js.map +1 -1
  897. package/lib/esm/rpc/web/BentleyCloudRpcManager.d.ts +46 -46
  898. package/lib/esm/rpc/web/BentleyCloudRpcManager.js +68 -68
  899. package/lib/esm/rpc/web/BentleyCloudRpcManager.js.map +1 -1
  900. package/lib/esm/rpc/web/BentleyCloudRpcProtocol.d.ts +33 -33
  901. package/lib/esm/rpc/web/BentleyCloudRpcProtocol.js +138 -138
  902. package/lib/esm/rpc/web/BentleyCloudRpcProtocol.js.map +1 -1
  903. package/lib/esm/rpc/web/OpenAPI.d.ts +139 -139
  904. package/lib/esm/rpc/web/OpenAPI.js +56 -56
  905. package/lib/esm/rpc/web/OpenAPI.js.map +1 -1
  906. package/lib/esm/rpc/web/RpcMultipart.d.ts +35 -35
  907. package/lib/esm/rpc/web/RpcMultipart.js +46 -46
  908. package/lib/esm/rpc/web/RpcMultipart.js.map +1 -1
  909. package/lib/esm/rpc/web/WebAppRpcLogging.d.ts +28 -28
  910. package/lib/esm/rpc/web/WebAppRpcLogging.js +135 -135
  911. package/lib/esm/rpc/web/WebAppRpcLogging.js.map +1 -1
  912. package/lib/esm/rpc/web/WebAppRpcProtocol.d.ts +87 -87
  913. package/lib/esm/rpc/web/WebAppRpcProtocol.js +112 -112
  914. package/lib/esm/rpc/web/WebAppRpcProtocol.js.map +1 -1
  915. package/lib/esm/rpc/web/WebAppRpcRequest.d.ts +67 -67
  916. package/lib/esm/rpc/web/WebAppRpcRequest.js +235 -235
  917. package/lib/esm/rpc/web/WebAppRpcRequest.js.map +1 -1
  918. package/lib/esm/rpc/web/multipart/RpcMultipartParser.d.ts +32 -32
  919. package/lib/esm/rpc/web/multipart/RpcMultipartParser.js +368 -368
  920. package/lib/esm/rpc/web/multipart/RpcMultipartParser.js.map +1 -1
  921. package/lib/esm/tile/B3dmTileIO.d.ts +19 -19
  922. package/lib/esm/tile/B3dmTileIO.js +62 -62
  923. package/lib/esm/tile/B3dmTileIO.js.map +1 -1
  924. package/lib/esm/tile/CompositeTileIO.d.ts +15 -15
  925. package/lib/esm/tile/CompositeTileIO.js +22 -22
  926. package/lib/esm/tile/CompositeTileIO.js.map +1 -1
  927. package/lib/esm/tile/ElementGraphics.d.ts +145 -145
  928. package/lib/esm/tile/ElementGraphics.js +8 -8
  929. package/lib/esm/tile/ElementGraphics.js.map +1 -1
  930. package/lib/esm/tile/GltfTileIO.d.ts +45 -45
  931. package/lib/esm/tile/GltfTileIO.js +105 -105
  932. package/lib/esm/tile/GltfTileIO.js.map +1 -1
  933. package/lib/esm/tile/I3dmTileIO.d.ts +20 -20
  934. package/lib/esm/tile/I3dmTileIO.js +36 -36
  935. package/lib/esm/tile/I3dmTileIO.js.map +1 -1
  936. package/lib/esm/tile/IModelTileIO.d.ts +75 -75
  937. package/lib/esm/tile/IModelTileIO.js +90 -90
  938. package/lib/esm/tile/IModelTileIO.js.map +1 -1
  939. package/lib/esm/tile/PntsTileIO.d.ts +17 -17
  940. package/lib/esm/tile/PntsTileIO.js +22 -22
  941. package/lib/esm/tile/PntsTileIO.js.map +1 -1
  942. package/lib/esm/tile/TileIO.d.ts +66 -66
  943. package/lib/esm/tile/TileIO.js +110 -110
  944. package/lib/esm/tile/TileIO.js.map +1 -1
  945. package/lib/esm/tile/TileMetadata.d.ts +228 -228
  946. package/lib/esm/tile/TileMetadata.js +661 -661
  947. package/lib/esm/tile/TileMetadata.js.map +1 -1
  948. package/package.json +7 -7
@@ -1,1000 +1,1000 @@
1
- /*---------------------------------------------------------------------------------------------
2
- * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
3
- * See LICENSE.md in the project root for license terms and full copyright notice.
4
- *--------------------------------------------------------------------------------------------*/
5
- /** @packageDocumentation
6
- * @module DisplayStyles
7
- */
8
- import { assert, compareBooleans, compareNumbers, comparePossiblyUndefined, compareStrings, compareStringsOrUndefined, CompressedId64Set, Id64, OrderedId64Iterable, } from "@itwin/core-bentley";
9
- import { ClipPlane, ClipPrimitive, ClipVector, ConvexClipPlaneSet, Matrix3d, Plane3dByOriginAndUnitNormal, Point3d, Point4d, Range1d, Transform, UnionOfConvexClipPlaneSets, Vector3d, } from "@itwin/core-geometry";
10
- import { RgbColor } from "./RgbColor";
11
- import { FeatureAppearance } from "./FeatureSymbology";
12
- function interpolate(start, end, fraction) {
13
- return start + fraction * (end - start);
14
- }
15
- function interpolateRgb(start, end, fraction) {
16
- return new RgbColor(interpolate(start.r, end.r, fraction), interpolate(start.g, end.g, fraction), interpolate(start.b, end.b, fraction));
17
- }
18
- function compareXYZ(lhs, rhs) {
19
- return compareNumbers(lhs.x, rhs.x) || compareNumbers(lhs.y, rhs.y) || compareNumbers(lhs.z, rhs.z);
20
- }
21
- function compare4d(lhs, rhs) {
22
- return compareNumbers(lhs.x, rhs.x) || compareNumbers(lhs.y, rhs.y) || compareNumbers(lhs.z, rhs.z) || compareNumbers(lhs.w, rhs.w);
23
- }
24
- const scratchVec3a = new Vector3d();
25
- const scratchVec3b = new Vector3d();
26
- function compareMatrices(lhs, rhs) {
27
- return compareXYZ(lhs.columnX(scratchVec3a), rhs.columnX(scratchVec3b))
28
- || compareXYZ(lhs.columnY(scratchVec3a), rhs.columnY(scratchVec3b))
29
- || compareXYZ(lhs.columnZ(scratchVec3a), rhs.columnZ(scratchVec3b));
30
- }
31
- function compareDurations(lhs, rhs) {
32
- return compareNumbers(lhs.low, rhs.low) || compareNumbers(lhs.high, rhs.high);
33
- }
34
- /** Namespace containing types that collectively define a script that animates the contents of a view by adjusting the visibility, position,
35
- * and/or symbology of groups of elements over time. A [[RenderSchedule.Script]] is hosted by a [RenderTimeline]($backend) element. The script
36
- * can be associated with a [DisplayStyleState]($frontend) by way of its [[DisplayStyleSettings.renderTimeline]] property.
37
- * @public
38
- */
39
- export var RenderSchedule;
40
- (function (RenderSchedule) {
41
- /** Defines how two interpolate between two entries in a [[RenderSchedule.Timeline]].
42
- * @note Currently only Linear and Step are supported. Any other value is treated as Step.
43
- * @see [[RenderSchedule.TimelineEntry]].
44
- */
45
- let Interpolation;
46
- (function (Interpolation) {
47
- /** Each timeline entry's value is discrete - the timeline jumps from one entry's value directly to another. */
48
- Interpolation[Interpolation["Step"] = 1] = "Step";
49
- /** Given two entries on the timeline and a timepoint in between them, linearly interpolate based on the timepoint's distance between the
50
- * two entries.
51
- */
52
- Interpolation[Interpolation["Linear"] = 2] = "Linear";
53
- })(Interpolation = RenderSchedule.Interpolation || (RenderSchedule.Interpolation = {}));
54
- /** Describes the value of some property at a specific point along a [[RenderSchedule.Timeline]].
55
- * @see [[RenderSchedule.VisibilityEntry]]
56
- * @see [[RenderSchedule.ColorEntry]]
57
- * @see [[RenderSchedule.TransformEntry]]
58
- * @see [[RenderSchedule.CuttingPlaneEntry]]
59
- */
60
- class TimelineEntry {
61
- constructor(props) {
62
- this.time = props.time;
63
- this.interpolation = props.interpolation === Interpolation.Linear ? props.interpolation : Interpolation.Step;
64
- }
65
- toJSON() {
66
- const props = {
67
- time: this.time,
68
- };
69
- if (this.interpolation === Interpolation.Linear)
70
- props.interpolation = this.interpolation;
71
- return props;
72
- }
73
- compareTo(other) {
74
- return compareNumbers(this.interpolation, other.interpolation) || compareNumbers(this.time, other.time);
75
- }
76
- equals(other) {
77
- return 0 === this.compareTo(other);
78
- }
79
- }
80
- RenderSchedule.TimelineEntry = TimelineEntry;
81
- /** A timeline entry that controls the visibility of the associated geometry. */
82
- class VisibilityEntry extends TimelineEntry {
83
- constructor(props) {
84
- super(props);
85
- if (typeof props.value !== "number")
86
- this.value = 100;
87
- else
88
- this.value = Math.max(0, Math.min(100, props.value));
89
- }
90
- toJSON() {
91
- const props = super.toJSON();
92
- if (100 !== this.value)
93
- props.value = this.value;
94
- return props;
95
- }
96
- compareTo(other) {
97
- assert(other instanceof VisibilityEntry);
98
- return super.compareTo(other) || compareNumbers(this.value, other.value);
99
- }
100
- }
101
- RenderSchedule.VisibilityEntry = VisibilityEntry;
102
- /** A timeline entry controlling the color of the affected geometry. */
103
- class ColorEntry extends TimelineEntry {
104
- constructor(props) {
105
- super(props);
106
- if (props.value)
107
- this.value = new RgbColor(props.value.red, props.value.green, props.value.blue);
108
- }
109
- toJSON() {
110
- const props = super.toJSON();
111
- if (this.value) {
112
- props.value = {
113
- red: this.value.r,
114
- green: this.value.g,
115
- blue: this.value.b,
116
- };
117
- }
118
- return props;
119
- }
120
- compareTo(other) {
121
- assert(other instanceof ColorEntry);
122
- return super.compareTo(other) || comparePossiblyUndefined((lhs, rhs) => lhs.compareTo(rhs), this.value, other.value);
123
- }
124
- }
125
- RenderSchedule.ColorEntry = ColorEntry;
126
- /** Describes the components of a [[RenderSchedule.TransformEntry]] as a rotation around a pivot point followed by a translation. */
127
- class TransformComponents {
128
- constructor(position, pivot, orientation) {
129
- this.position = position;
130
- this.pivot = pivot;
131
- this.orientation = orientation;
132
- }
133
- static fromJSON(props) {
134
- if (props.pivot && props.position && props.orientation)
135
- return new TransformComponents(Vector3d.fromJSON(props.position), Vector3d.fromJSON(props.pivot), Point4d.fromJSON(props.orientation));
136
- else
137
- return undefined;
138
- }
139
- toJSON() {
140
- return {
141
- position: [this.position.x, this.position.y, this.position.z],
142
- pivot: [this.pivot.x, this.pivot.y, this.pivot.z],
143
- orientation: [this.orientation.x, this.orientation.y, this.orientation.z, this.orientation.w],
144
- };
145
- }
146
- compareTo(other) {
147
- return compareXYZ(this.pivot, other.pivot) || compareXYZ(this.position, other.position) || compare4d(this.orientation, other.orientation);
148
- }
149
- equals(other) {
150
- return this.pivot.isAlmostEqual(other.pivot) && this.position.isAlmostEqual(other.position) && this.orientation.isAlmostEqual(other.orientation);
151
- }
152
- }
153
- RenderSchedule.TransformComponents = TransformComponents;
154
- /** A timeline entry that applies rotation, scaling, and/or translation to the affected geometry. */
155
- class TransformEntry extends TimelineEntry {
156
- constructor(props) {
157
- super(props);
158
- this.value = props.value ? Transform.fromJSON(props.value.transform) : Transform.identity;
159
- if (props.value)
160
- this.components = TransformComponents.fromJSON(props.value);
161
- }
162
- toJSON() {
163
- const props = super.toJSON();
164
- if (this.components) {
165
- props.value = this.components.toJSON();
166
- props.value.transform = this.value.toRows();
167
- }
168
- else {
169
- props.value = { transform: this.value.toRows() };
170
- }
171
- return props;
172
- }
173
- compareTo(other) {
174
- assert(other instanceof TransformEntry);
175
- const cmp = super.compareTo(other);
176
- if (0 !== cmp)
177
- return cmp;
178
- if (this.components || other.components) {
179
- if (!this.components || !other.components)
180
- return this.components ? 1 : -1;
181
- return this.components.compareTo(other.components);
182
- }
183
- return compareXYZ(this.value.origin, other.value.origin) || compareMatrices(this.value.matrix, other.value.matrix);
184
- }
185
- }
186
- RenderSchedule.TransformEntry = TransformEntry;
187
- /** Defines a [ClipPlane]($core-geometry) associated with a [[RenderSchedule.CuttingPlaneEntry]]. */
188
- class CuttingPlane {
189
- constructor(props) {
190
- this.position = Point3d.fromJSON(props.position);
191
- this.direction = Point3d.fromJSON(props.direction);
192
- this.hidden = true === props.hidden;
193
- this.visible = true === props.visible;
194
- }
195
- toJSON() {
196
- const props = {
197
- position: [this.position.x, this.position.y, this.position.z],
198
- direction: [this.direction.x, this.direction.y, this.direction.z],
199
- };
200
- if (this.visible)
201
- props.visible = true;
202
- if (this.hidden)
203
- props.hidden = true;
204
- return props;
205
- }
206
- compareTo(other) {
207
- return compareXYZ(this.position, other.position) || compareXYZ(this.direction, other.direction) || compareBooleans(this.visible, other.visible) || compareBooleans(this.hidden, other.hidden);
208
- }
209
- equals(other) {
210
- return 0 === this.compareTo(other);
211
- }
212
- }
213
- RenderSchedule.CuttingPlane = CuttingPlane;
214
- /** A timeline entry that applies a [ClipPlane]($core-geometry) to the affected geometry. */
215
- class CuttingPlaneEntry extends TimelineEntry {
216
- constructor(props) {
217
- super(props);
218
- if (props.value)
219
- this.value = new CuttingPlane(props.value);
220
- }
221
- toJSON() {
222
- const props = super.toJSON();
223
- if (this.value)
224
- props.value = this.value.toJSON();
225
- return props;
226
- }
227
- compareTo(other) {
228
- assert(other instanceof CuttingPlaneEntry);
229
- return super.compareTo(other) || comparePossiblyUndefined((x, y) => x.compareTo(y), this.value, other.value);
230
- }
231
- }
232
- RenderSchedule.CuttingPlaneEntry = CuttingPlaneEntry;
233
- /** Identifies a fractional position along a [[RenderSchedule.Timeline]] between any two [[RenderSchedule.TimelineEntry]]'s within a [[RenderSchedule.TimelineEntryList]].
234
- * @internal
235
- */
236
- class Interval {
237
- constructor(lower = 0, upper = 0, fraction = 0) {
238
- this.init(lower, upper, fraction);
239
- }
240
- init(lower = 0, upper = 0, fraction = 0) {
241
- this.lowerIndex = lower;
242
- this.upperIndex = upper;
243
- this.fraction = fraction;
244
- }
245
- }
246
- RenderSchedule.Interval = Interval;
247
- /** A list of the [[RenderSchedule.TimelineEntry]] objects within a [[RenderSchedule.Timeline]]. The type parameters are:
248
- * - T, a subclass of TimelineEntry with a `value` property specifying the value of the property controlled by the timeline at that entry's time point.
249
- * - P, the JSON representation from which T is to be constructed.
250
- * - V, the type of `T.value`.
251
- */
252
- class TimelineEntryList {
253
- constructor(props, ctor) {
254
- this.duration = Range1d.createNull();
255
- this._entries = props.map((x) => {
256
- const entry = new ctor(x);
257
- this.duration.extendX(entry.time);
258
- return entry;
259
- });
260
- }
261
- /** The number of entries in the list. */
262
- get length() {
263
- return this._entries.length;
264
- }
265
- /** An iterator over the entries in the list. */
266
- [Symbol.iterator]() {
267
- return this._entries[Symbol.iterator]();
268
- }
269
- /** Look up an entry by its position in the list. */
270
- getEntry(index) {
271
- return this._entries[index];
272
- }
273
- /** Look up the value of an entry by its position in the list. */
274
- getValue(index) {
275
- var _a;
276
- return (_a = this.getEntry(index)) === null || _a === void 0 ? void 0 : _a.value;
277
- }
278
- toJSON() {
279
- return this._entries.map((x) => x.toJSON());
280
- }
281
- compareTo(other) {
282
- let cmp = compareNumbers(this._entries.length, other._entries.length) || compareDurations(this.duration, other.duration);
283
- if (0 === cmp) {
284
- for (let i = 0; i < this.length; i++)
285
- if (0 !== (cmp = this._entries[i].compareTo(other._entries[i])))
286
- break;
287
- }
288
- return cmp;
289
- }
290
- equals(other) {
291
- return 0 === this.compareTo(other);
292
- }
293
- /** @internal */
294
- findInterval(time, interval) {
295
- if (this.length === 0)
296
- return undefined;
297
- interval = interval !== null && interval !== void 0 ? interval : new Interval();
298
- if (time < this._entries[0].time) {
299
- interval.init(0, 0, 0);
300
- return interval;
301
- }
302
- const last = this.length - 1;
303
- if (time >= this._entries[last].time) {
304
- interval.init(last, last, 0);
305
- return interval;
306
- }
307
- for (let i = 0; i < last; i++) {
308
- const time0 = this._entries[i].time;
309
- const time1 = this._entries[i + 1].time;
310
- if (time0 <= time && time1 >= time) {
311
- let fraction;
312
- if (Interpolation.Linear === this._entries[i].interpolation)
313
- fraction = (time - time0) / (time1 - time0);
314
- else
315
- fraction = 0;
316
- interval.init(i, i + 1, fraction);
317
- return interval;
318
- }
319
- }
320
- return undefined;
321
- }
322
- }
323
- RenderSchedule.TimelineEntryList = TimelineEntryList;
324
- const scratchInterval = new Interval();
325
- /** A list of [[RenderSchedule.VisibilityEntry]]s within a [[RenderSchedule.Timeline]]. */
326
- class VisibilityTimelineEntries extends TimelineEntryList {
327
- /** Returns the visibility value for the entry at the specified position in the list, or 100 (fully-visible) if no such entry exists. */
328
- getValue(index) {
329
- var _a;
330
- return (_a = super.getValue(index)) !== null && _a !== void 0 ? _a : 100;
331
- }
332
- }
333
- RenderSchedule.VisibilityTimelineEntries = VisibilityTimelineEntries;
334
- /** A list of [[RenderSchedule.TransformEntry]]s within a [[RenderSchedule.Timeline]]. */
335
- class TransformTimelineEntries extends TimelineEntryList {
336
- /** Returns the transform for the entry at the specified position in the list, or an identity transform if no such entry exists. */
337
- getValue(index) {
338
- var _a;
339
- return (_a = super.getValue(index)) !== null && _a !== void 0 ? _a : Transform.identity;
340
- }
341
- }
342
- RenderSchedule.TransformTimelineEntries = TransformTimelineEntries;
343
- /** Specifies how to animate a set of geometry over time within a [[RenderSchedule.Script]].
344
- * A [[RenderSchedule.Script]] can contain any number of [[RenderSchedule.Timeline]]s, each affecting different sets of geometry.
345
- * @see [[RenderSchedule.ElementTimeline]] and [[RenderSchedule.ModelTimeline]].
346
- */
347
- class Timeline {
348
- constructor(props) {
349
- this.duration = Range1d.createNull();
350
- if (props.visibilityTimeline) {
351
- this.visibility = new VisibilityTimelineEntries(props.visibilityTimeline, VisibilityEntry);
352
- this.duration.extendRange(this.visibility.duration);
353
- }
354
- if (props.colorTimeline) {
355
- this.color = new TimelineEntryList(props.colorTimeline, ColorEntry);
356
- this.duration.extendRange(this.color.duration);
357
- }
358
- if (props.transformTimeline) {
359
- this.transform = new TransformTimelineEntries(props.transformTimeline, TransformEntry);
360
- this.duration.extendRange(this.transform.duration);
361
- }
362
- if (props.cuttingPlaneTimeline) {
363
- this.cuttingPlane = new TimelineEntryList(props.cuttingPlaneTimeline, CuttingPlaneEntry);
364
- this.duration.extendRange(this.cuttingPlane.duration);
365
- }
366
- }
367
- toJSON() {
368
- var _a, _b, _c, _d;
369
- return {
370
- visibilityTimeline: (_a = this.visibility) === null || _a === void 0 ? void 0 : _a.toJSON(),
371
- colorTimeline: (_b = this.color) === null || _b === void 0 ? void 0 : _b.toJSON(),
372
- transformTimeline: (_c = this.transform) === null || _c === void 0 ? void 0 : _c.toJSON(),
373
- cuttingPlaneTimeline: (_d = this.cuttingPlane) === null || _d === void 0 ? void 0 : _d.toJSON(),
374
- };
375
- }
376
- compareTo(other) {
377
- const cmp = compareDurations(this.duration, other.duration);
378
- if (0 !== cmp)
379
- return cmp;
380
- // Do cheaper checks before iterating through timeline entries
381
- if (!!this.visibility !== !!other.visibility)
382
- return this.visibility ? 1 : -1;
383
- else if (!!this.color !== !!other.color)
384
- return this.color ? 1 : -1;
385
- else if (!!this.transform !== !!other.transform)
386
- return this.transform ? 1 : -1;
387
- else if (!!this.cuttingPlane !== !!other.cuttingPlane)
388
- return this.cuttingPlane ? 1 : -1;
389
- return comparePossiblyUndefined((x, y) => x.compareTo(y), this.visibility, other.visibility) || comparePossiblyUndefined((x, y) => x.compareTo(y), this.color, other.color)
390
- || comparePossiblyUndefined((x, y) => x.compareTo(y), this.transform, other.transform) || comparePossiblyUndefined((x, y) => x.compareTo(y), this.cuttingPlane, other.cuttingPlane);
391
- }
392
- equals(other) {
393
- return 0 === this.compareTo(other);
394
- }
395
- /** Get the visibility of the geometry at the specified time point. */
396
- getVisibility(time) {
397
- var _a, _b;
398
- let interval;
399
- if (!this.visibility || !(interval = this.visibility.findInterval(time, scratchInterval)))
400
- return 100;
401
- let visibility = (_a = this.visibility.getValue(interval.lowerIndex)) !== null && _a !== void 0 ? _a : 100;
402
- if (interval.fraction > 0)
403
- visibility = interpolate(visibility, (_b = this.visibility.getValue(interval.upperIndex)) !== null && _b !== void 0 ? _b : 100, interval.fraction);
404
- return visibility;
405
- }
406
- /** Get the color of the geometry at the specified time point, or undefined if the color is not overridden at that time point. */
407
- getColor(time) {
408
- let interval;
409
- if (!this.color || !(interval = this.color.findInterval(time, scratchInterval)))
410
- return undefined;
411
- const start = this.color.getValue(interval.lowerIndex);
412
- if (start && interval.fraction > 0) {
413
- const end = this.color.getValue(interval.upperIndex);
414
- if (end)
415
- return interpolateRgb(start, end, interval.fraction);
416
- }
417
- return start;
418
- }
419
- /** Get the transform applied to the geometry at the specified time point. */
420
- getAnimationTransform(time) {
421
- var _a, _b, _c, _d;
422
- let interval;
423
- if (!this.transform || !(interval = this.transform.findInterval(time, scratchInterval)))
424
- return Transform.identity;
425
- let transform = this.transform.getValue(interval.lowerIndex);
426
- if (interval.fraction > 0) {
427
- const comp0 = (_a = this.transform.getEntry(interval.lowerIndex)) === null || _a === void 0 ? void 0 : _a.components;
428
- const comp1 = (_b = this.transform.getEntry(interval.upperIndex)) === null || _b === void 0 ? void 0 : _b.components;
429
- if (comp0 && comp1) {
430
- const sum = Point4d.interpolateQuaternions(comp0.orientation, interval.fraction, comp1.orientation);
431
- const matrix = Matrix3d.createFromQuaternion(sum);
432
- const pre = Transform.createTranslation(comp0.pivot);
433
- const post = Transform.createTranslation(comp0.position.interpolate(interval.fraction, comp1.position));
434
- const product = post.multiplyTransformMatrix3d(matrix);
435
- product.multiplyTransformTransform(pre, product);
436
- transform = product;
437
- }
438
- else {
439
- const end = this.transform.getValue(interval.upperIndex);
440
- const q0 = (_c = transform.matrix.inverse()) === null || _c === void 0 ? void 0 : _c.toQuaternion();
441
- const q1 = (_d = end.matrix.inverse()) === null || _d === void 0 ? void 0 : _d.toQuaternion();
442
- if (q0 && q1) {
443
- const sum = Point4d.interpolateQuaternions(q0, interval.fraction, q1);
444
- const matrix = Matrix3d.createFromQuaternion(sum);
445
- const origin0 = Vector3d.createFrom(transform.origin);
446
- const origin1 = Vector3d.createFrom(end.origin);
447
- transform = Transform.createRefs(origin0.interpolate(interval.fraction, origin1), matrix);
448
- }
449
- }
450
- }
451
- return transform;
452
- }
453
- /** Get the clipping plane applied to the geometry at the specified time point, or undefined if the geometry is unclipped at that time point. */
454
- getCuttingPlane(time) {
455
- let interval;
456
- if (!this.cuttingPlane || !(interval = this.cuttingPlane.findInterval(time, scratchInterval)))
457
- return undefined;
458
- const start = this.cuttingPlane.getValue(interval.lowerIndex);
459
- if (!start)
460
- return undefined;
461
- const position = Point3d.createFrom(start.position);
462
- const direction = Vector3d.createFrom(start.direction);
463
- const end = interval.fraction > 0 ? this.cuttingPlane.getValue(interval.upperIndex) : undefined;
464
- if (end) {
465
- position.interpolate(interval.fraction, end.position, position);
466
- direction.interpolate(interval.fraction, end.direction, direction);
467
- }
468
- else {
469
- if (start.hidden || start.visible)
470
- return undefined;
471
- }
472
- direction.negate(direction);
473
- direction.normalizeInPlace();
474
- return Plane3dByOriginAndUnitNormal.create(position, direction);
475
- }
476
- /** Create a ClipVector from the [[RenderSchedule.CuttingPlane]] applied to the geometry at the specified time point, if any. */
477
- getClipVector(time) {
478
- const plane = this.getCuttingPlane(time);
479
- if (!plane)
480
- return undefined;
481
- const cp = ClipPlane.createPlane(plane);
482
- const cps = UnionOfConvexClipPlaneSets.createConvexSets([ConvexClipPlaneSet.createPlanes([cp])]);
483
- const prim = ClipPrimitive.createCapture(cps);
484
- return ClipVector.createCapture([prim]);
485
- }
486
- /** @internal */
487
- getFeatureAppearance(visibility, time) {
488
- const transparency = visibility < 100 ? (1 - visibility / 100) : undefined;
489
- const rgb = this.getColor(time);
490
- return undefined !== rgb || undefined !== transparency ? FeatureAppearance.fromJSON({ rgb, transparency }) : undefined;
491
- }
492
- }
493
- RenderSchedule.Timeline = Timeline;
494
- /** Specifies how to animate the geometry belonging to a set of [GeometricElement]($backend)s as part of a [[RenderSchedule.Script]]. */
495
- class ElementTimeline extends Timeline {
496
- constructor(props) {
497
- super(props);
498
- this.batchId = props.batchId;
499
- this._elementIds = props.elementIds;
500
- }
501
- static fromJSON(props) {
502
- return new ElementTimeline(props !== null && props !== void 0 ? props : { elementIds: [], batchId: 0 });
503
- }
504
- toJSON() {
505
- return {
506
- ...super.toJSON(),
507
- batchId: this.batchId,
508
- elementIds: this._elementIds,
509
- };
510
- }
511
- get containsElementIds() {
512
- return this._elementIds.length > 0;
513
- }
514
- compareElementIds(other) {
515
- if (typeof this._elementIds === typeof other._elementIds) {
516
- const cmp = compareNumbers(this._elementIds.length, other._elementIds.length);
517
- if (0 !== cmp)
518
- return cmp;
519
- if (typeof this._elementIds === "string") {
520
- assert(typeof other._elementIds === "string");
521
- return compareStrings(this._elementIds, other._elementIds);
522
- }
523
- }
524
- // One or both are stored as arrays, in which case they might contain the same Ids in different orders. We will consider them different in that case.
525
- const mine = this.elementIds[Symbol.iterator]();
526
- const theirs = other.elementIds[Symbol.iterator]();
527
- while (true) {
528
- const a = mine.next();
529
- const b = theirs.next();
530
- if (a.done !== b.done)
531
- return compareBooleans(!!a.done, !!b.done);
532
- else if (a.done)
533
- return 0;
534
- const cmp = compareStrings(a.value, b.value);
535
- if (0 !== cmp)
536
- return cmp;
537
- }
538
- }
539
- compareTo(other) {
540
- assert(other instanceof ElementTimeline);
541
- return compareNumbers(this.batchId, other.batchId) || this.compareElementIds(other) || super.compareTo(other);
542
- }
543
- /** @internal */
544
- static getElementIds(ids) {
545
- if (typeof ids === "string")
546
- return CompressedId64Set.iterable(ids);
547
- else if (Array.isArray(ids)) {
548
- return ids;
549
- }
550
- else {
551
- return [];
552
- }
553
- }
554
- /** The Ids of the elements controlled by this timeline. */
555
- get elementIds() {
556
- return ElementTimeline.getElementIds(this._elementIds);
557
- }
558
- /** True if this timeline affects the color or transparency of the elements. */
559
- get containsFeatureOverrides() {
560
- return undefined !== this.visibility || undefined !== this.color;
561
- }
562
- /** If true, applying this timeline requires special tiles to be generated in which groups of elements are batched into nodes.
563
- * @internal
564
- */
565
- get requiresBatching() {
566
- if (this.cuttingPlane)
567
- return true;
568
- return this.batchId !== 0 && (undefined !== this.color || undefined !== this.visibility);
569
- }
570
- /** True if this timeline affects the position, orientation, or scale of the elements. */
571
- get containsTransform() {
572
- return undefined !== this.transform;
573
- }
574
- /** @internal */
575
- addSymbologyOverrides(overrides, time) {
576
- assert(0 !== this.batchId);
577
- const vis = this.getVisibility(time);
578
- if (vis <= 0) {
579
- overrides.setAnimationNodeNeverDrawn(this.batchId);
580
- return;
581
- }
582
- const appearance = this.getFeatureAppearance(vis, time);
583
- if (appearance)
584
- overrides.overrideAnimationNode(this.batchId, appearance);
585
- }
586
- }
587
- RenderSchedule.ElementTimeline = ElementTimeline;
588
- /** Specifies how to animate the geometry within a [GeometricModel]($backend) as part of a [[RenderSchedule.Script]]. */
589
- class ModelTimeline extends Timeline {
590
- constructor(props) {
591
- super(props);
592
- /** Tile tree suppliers perform **very** frequent ordered comparisons of ModelTimelines. They need to be fast. */
593
- this._cachedComparisons = new WeakMap();
594
- this.modelId = props.modelId;
595
- this.realityModelUrl = props.realityModelUrl;
596
- this.containsModelClipping = undefined !== this.cuttingPlane;
597
- let containsFeatureOverrides = undefined !== this.visibility || undefined !== this.color;
598
- let requiresBatching = false;
599
- let containsTransform = false;
600
- const transformBatchIds = [];
601
- const elementTimelines = [];
602
- let containsElementIds = false;
603
- for (const elProps of props.elementTimelines) {
604
- const el = ElementTimeline.fromJSON(elProps);
605
- elementTimelines.push(el);
606
- this.duration.extendRange(el.duration);
607
- if (el.containsTransform) {
608
- containsTransform = true;
609
- if (el.batchId)
610
- transformBatchIds.push(el.batchId);
611
- }
612
- containsFeatureOverrides || (containsFeatureOverrides = el.containsFeatureOverrides);
613
- requiresBatching || (requiresBatching = el.requiresBatching);
614
- containsElementIds = containsElementIds || el.containsElementIds;
615
- }
616
- this.elementTimelines = elementTimelines;
617
- this.transformBatchIds = transformBatchIds;
618
- this.omitsElementIds = elementTimelines.length > 0 && !containsElementIds;
619
- this.containsFeatureOverrides = containsFeatureOverrides;
620
- this.requiresBatching = requiresBatching;
621
- this.containsTransform = containsTransform;
622
- }
623
- static fromJSON(props) {
624
- return new ModelTimeline(props !== null && props !== void 0 ? props : { elementTimelines: [], modelId: Id64.invalid });
625
- }
626
- toJSON() {
627
- return {
628
- ...super.toJSON(),
629
- modelId: this.modelId,
630
- realityModelUrl: this.realityModelUrl,
631
- elementTimelines: this.elementTimelines.map((x) => x.toJSON()),
632
- };
633
- }
634
- compareTo(other) {
635
- if (this === other)
636
- return 0;
637
- const cached = this._cachedComparisons.get(other);
638
- if (undefined !== cached)
639
- return cached;
640
- assert(other instanceof ModelTimeline);
641
- let cmp = compareStrings(this.modelId, other.modelId) || compareStringsOrUndefined(this.realityModelUrl, other.realityModelUrl)
642
- || compareNumbers(this.elementTimelines.length, other.elementTimelines.length) || compareBooleans(this.containsFeatureOverrides, other.containsFeatureOverrides)
643
- || compareBooleans(this.containsModelClipping, other.containsModelClipping) || compareBooleans(this.containsTransform, other.containsTransform)
644
- || super.compareTo(other);
645
- if (0 === cmp) {
646
- for (let i = 0; i < this.elementTimelines.length; i++)
647
- if (0 !== (cmp = this.elementTimelines[i].compareTo(other.elementTimelines[i])))
648
- break;
649
- }
650
- this._cachedComparisons.set(other, cmp);
651
- other._cachedComparisons.set(this, -cmp);
652
- return cmp;
653
- }
654
- /** Look up the element timeline with the specified batch Id. */
655
- findByBatchId(batchId) {
656
- return this.elementTimelines.find((x) => x.batchId === batchId);
657
- }
658
- /** @internal */
659
- addSymbologyOverrides(overrides, time) {
660
- const appearance = this.getFeatureAppearance(this.getVisibility(time), time);
661
- if (appearance)
662
- overrides.override({ modelId: this.modelId, appearance });
663
- for (const timeline of this.elementTimelines)
664
- timeline.addSymbologyOverrides(overrides, time);
665
- }
666
- /** Obtain the transform applied to the model at the specified time point, if any. */
667
- getTransform(batchId, time) {
668
- var _a;
669
- return (_a = this.findByBatchId(batchId)) === null || _a === void 0 ? void 0 : _a.getAnimationTransform(time);
670
- }
671
- /** Get the highest batchId of any ElementTimeline in this timeline. */
672
- get maxBatchId() {
673
- if (undefined === this._maxBatchId) {
674
- this._maxBatchId = 0;
675
- for (const elem of this.elementTimelines)
676
- this._maxBatchId = Math.max(this._maxBatchId, elem.batchId);
677
- }
678
- return this._maxBatchId;
679
- }
680
- /** Given the two halves of an [Id64]($bentley) return the [[ElementTimeline]] containing the corresponding element.
681
- * @note The first call to this method populates a mapping for fast lookup.
682
- * @alpha
683
- */
684
- getTimelineForElement(idLo, idHi) {
685
- if (!this._idPairToElementTimeline) {
686
- this._idPairToElementTimeline = new Id64.Uint32Map();
687
- for (const timeline of this.elementTimelines) {
688
- for (const elementId of timeline.elementIds) {
689
- // NB: a malformed script may place the same element Id into multiple timelines. We're not going to check for such data errors here.
690
- this._idPairToElementTimeline.setById(elementId, timeline);
691
- }
692
- }
693
- }
694
- return this._idPairToElementTimeline.get(idLo, idHi);
695
- }
696
- /** The batch Ids of the subset of [[elementTimelines]] that apply a transform and/or cutting plane.
697
- * @alpha
698
- */
699
- get discreteBatchIds() {
700
- if (!this._discreteBatchIds) {
701
- this._discreteBatchIds = new Set(this.transformBatchIds);
702
- for (const timeline of this.elementTimelines)
703
- if (!timeline.containsTransform && undefined !== timeline.cuttingPlane)
704
- this._discreteBatchIds.add(timeline.batchId);
705
- }
706
- return this._discreteBatchIds;
707
- }
708
- }
709
- RenderSchedule.ModelTimeline = ModelTimeline;
710
- /** Specifies how to animate the contents of a [ViewState]($frontend) over time. The script contains any number of [[RenderSchedule.ModelTimeline]]s, each describing how
711
- * to animate one of the models in the view.
712
- * @see [RenderTimeline]($backend) to create an [Element]($backend) to host a script.
713
- * @see [[DisplayStyleSettings.renderTimeline]] to associate a [RenderTimeline]($backend)'s script with a [DisplayStyle]($backend).
714
- * @see [DisplayStyleState.scheduleScript]($frontend) to obtain the script associated with a display style.
715
- * @see [[RenderSchedule.ScriptBuilder]] to define a new script.
716
- */
717
- class Script {
718
- constructor(props) {
719
- /** Tile tree references perform **very** frequent ordered comparisons of Scripts. They need to be fast. */
720
- this._cachedComparisons = new WeakMap();
721
- this.duration = Range1d.createNull();
722
- const transformBatchIds = new Set();
723
- const modelTimelines = [];
724
- let containsModelClipping = false;
725
- let requiresBatching = false;
726
- let containsTransform = false;
727
- let containsFeatureOverrides = false;
728
- for (const modelProps of props) {
729
- const model = ModelTimeline.fromJSON(modelProps);
730
- modelTimelines.push(model);
731
- this.duration.extendRange(model.duration);
732
- containsModelClipping || (containsModelClipping = model.containsModelClipping);
733
- requiresBatching || (requiresBatching = model.requiresBatching);
734
- containsTransform || (containsTransform = model.containsTransform);
735
- containsFeatureOverrides || (containsFeatureOverrides = model.containsFeatureOverrides);
736
- for (const batchId of model.transformBatchIds)
737
- transformBatchIds.add(batchId);
738
- }
739
- this.modelTimelines = modelTimelines;
740
- this.containsModelClipping = containsModelClipping;
741
- this.containsTransform = containsTransform;
742
- this.requiresBatching = requiresBatching || this.containsTransform;
743
- this.containsFeatureOverrides = containsFeatureOverrides;
744
- this.transformBatchIds = transformBatchIds;
745
- }
746
- compareTo(other) {
747
- if (this === other)
748
- return 0;
749
- const cached = this._cachedComparisons.get(other);
750
- if (undefined !== cached)
751
- return cached;
752
- let cmp = compareNumbers(this.modelTimelines.length, other.modelTimelines.length) || compareBooleans(this.containsModelClipping, other.containsModelClipping)
753
- || compareBooleans(this.requiresBatching, other.requiresBatching) || compareBooleans(this.containsTransform, other.containsTransform)
754
- || compareBooleans(this.containsFeatureOverrides, other.containsFeatureOverrides) || compareDurations(this.duration, other.duration);
755
- if (0 === cmp) {
756
- for (let i = 0; i < this.modelTimelines.length; i++)
757
- if (0 !== (cmp = this.modelTimelines[i].compareTo(other.modelTimelines[i])))
758
- break;
759
- }
760
- this._cachedComparisons.set(other, cmp);
761
- other._cachedComparisons.set(this, -cmp);
762
- return cmp;
763
- }
764
- equals(other) {
765
- return 0 === this.compareTo(other);
766
- }
767
- static fromJSON(props) {
768
- if (!Array.isArray(props) || props.length === 0)
769
- return undefined;
770
- return new Script(props);
771
- }
772
- toJSON() {
773
- return this.modelTimelines.map((x) => x.toJSON());
774
- }
775
- /** Look up the timeline that animates the specified model, if any. */
776
- find(modelId) {
777
- return this.modelTimelines.find((x) => x.modelId === modelId);
778
- }
779
- /** @internal */
780
- getTransformBatchIds(modelId) {
781
- var _a;
782
- return (_a = this.find(modelId)) === null || _a === void 0 ? void 0 : _a.transformBatchIds;
783
- }
784
- /** @internal */
785
- getTransform(modelId, batchId, time) {
786
- var _a;
787
- return (_a = this.find(modelId)) === null || _a === void 0 ? void 0 : _a.getTransform(batchId, time);
788
- }
789
- /** @internal */
790
- addSymbologyOverrides(overrides, time) {
791
- for (const timeline of this.modelTimelines)
792
- timeline.addSymbologyOverrides(overrides, time);
793
- }
794
- /** Used by the [Entity.collectReferenceIds]($backend) method overrides in RenderTimeline and DisplayStyle.
795
- * @internal
796
- */
797
- discloseIds(ids) {
798
- for (const model of this.modelTimelines) {
799
- ids.addModel(model.modelId);
800
- for (const element of model.elementTimelines)
801
- for (const id of element.elementIds)
802
- ids.addElement(id);
803
- }
804
- }
805
- /** @internal */
806
- modelRequiresBatching(modelId) {
807
- // Only if the script contains animation (cutting plane, transform or visibility by node ID) do we require separate tilesets for animations.
808
- return this.requiresBatching && this.modelTimelines.some((x) => x.modelId === modelId && x.requiresBatching);
809
- }
810
- }
811
- RenderSchedule.Script = Script;
812
- /** A reference to a [[RenderSchedule.Script]], optionally identifying the source of the script.
813
- * @see [DisplayStyle.loadScheduleScript]($backend) and [DisplayStyleState.scheduleScript]($frontend) to obtain the script reference for a display style on the frontend
814
- * and backend respectively.
815
- * @see [DisplayStyleState.scheduleScript]($frontend) or [DisplayStyleState.changeRenderTimeline]($frontend) to change a display style's script on the frontend.
816
- */
817
- class ScriptReference {
818
- /** @internal Use one of the public constructor overloads which forward to this one. */
819
- constructor(sourceIdOrScript, scriptIfSourceId) {
820
- if (typeof sourceIdOrScript === "string") {
821
- assert(scriptIfSourceId instanceof Script);
822
- this.sourceId = sourceIdOrScript;
823
- this.script = scriptIfSourceId;
824
- }
825
- else {
826
- assert(undefined === scriptIfSourceId);
827
- this.script = sourceIdOrScript;
828
- this.sourceId = Id64.invalid;
829
- }
830
- }
831
- }
832
- RenderSchedule.ScriptReference = ScriptReference;
833
- /** Used as part of a [[RenderSchedule.ScriptBuilder]] to define a [[RenderSchedule.Timeline]]. Functions that append
834
- * to the timeline expect entries to be appended in chronological order - i.e., you cannot append an entry that is earlier
835
- * than a previously appended entry.
836
- * @see [[RenderSchedule.ElementTimelineBuilder]] and [[RenderSchedule.ModelTimelineBuilder]].
837
- */
838
- class TimelineBuilder {
839
- /** Append a new [[RenderSchedule.VisibilityEntry]] to the timeline. `time` must be more recent than any previously-appended visibility entries. */
840
- addVisibility(time, visibility, interpolation = Interpolation.Linear) {
841
- if (!this.visibility)
842
- this.visibility = [];
843
- this.visibility.push({ time, value: visibility, interpolation });
844
- }
845
- /** Append a new [[RenderSchedule.ColorEntry]] to the timeline. `time` must be more recent than any previously-appended color entries. */
846
- addColor(time, color, interpolation = Interpolation.Linear) {
847
- if (!this.color)
848
- this.color = [];
849
- const value = color instanceof RgbColor ? { red: color.r, green: color.g, blue: color.b } : color;
850
- this.color.push({ time, value, interpolation });
851
- }
852
- /** Append a new [[RenderSchedule.CuttingPlaneEntry]] to the timeline. `time` must be more recent than any previously-appended cutting plane entries. */
853
- addCuttingPlane(time, plane, interpolation = Interpolation.Linear) {
854
- if (!this.cuttingPlane)
855
- this.cuttingPlane = [];
856
- let value;
857
- if (plane) {
858
- value = {
859
- position: [plane.position.x, plane.position.y, plane.position.z],
860
- direction: [plane.direction.x, plane.direction.y, plane.direction.z],
861
- };
862
- if (plane.visible)
863
- value.visible = true;
864
- if (plane.hidden)
865
- value.hidden = true;
866
- }
867
- this.cuttingPlane.push({ time, value, interpolation });
868
- }
869
- /** Append a new [[RenderSchedule.TransformEntry]] to the timeline. `time` must be more recent than any previously-appended transform entries. */
870
- addTransform(time, transform, components, interpolation = Interpolation.Linear) {
871
- if (!this.transform)
872
- this.transform = [];
873
- const value = { transform: transform === null || transform === void 0 ? void 0 : transform.toRows() };
874
- if (components) {
875
- value.pivot = [components.pivot.x, components.pivot.y, components.pivot.z];
876
- value.orientation = components.orientation.toJSON();
877
- value.position = [components.position.x, components.position.y, components.position.z];
878
- }
879
- this.transform.push({ time, value, interpolation });
880
- }
881
- /** Obtain the JSON representation of the [[RenderSchedule.Timeline]] produced by this builder.
882
- * @see [[RenderSchedule.ScriptBuilder.finish]] to obtain the JSON for the entire [[RenderSchedule.Script]].
883
- */
884
- finish() {
885
- var _a, _b, _c, _d;
886
- const props = {};
887
- if ((_a = this.visibility) === null || _a === void 0 ? void 0 : _a.length)
888
- props.visibilityTimeline = this.visibility;
889
- if ((_b = this.color) === null || _b === void 0 ? void 0 : _b.length)
890
- props.colorTimeline = this.color;
891
- if ((_c = this.transform) === null || _c === void 0 ? void 0 : _c.length)
892
- props.transformTimeline = this.transform;
893
- if ((_d = this.cuttingPlane) === null || _d === void 0 ? void 0 : _d.length)
894
- props.cuttingPlaneTimeline = this.cuttingPlane;
895
- return props;
896
- }
897
- }
898
- RenderSchedule.TimelineBuilder = TimelineBuilder;
899
- /** As part of a [[RenderSchedule.ScriptBuilder]], assembles a [[RenderSchedule.ElementTimeline]].
900
- * @see [[RenderSchedule.ModelTimelineBuilder.addElementTimeline]].
901
- */
902
- class ElementTimelineBuilder extends TimelineBuilder {
903
- /** Constructor - typically not used directly.
904
- * @see [[RenderSchedule.ModelTimelineBuilder.addElementTimeline]] to create an ElementTimelineBuilder.
905
- */
906
- constructor(batchId, elementIds) {
907
- super();
908
- this.batchId = batchId;
909
- this.elementIds = elementIds;
910
- }
911
- /** Obtain the JSON representation of the [[RenderSchedule.ElementTimeline]] produced by this builder.
912
- * @see [[RenderSchedule.ScriptBuilder.finish]] to obtain the JSON for the entire [[RenderSchedule.Script]].
913
- */
914
- finish() {
915
- const props = super.finish();
916
- props.batchId = this.batchId;
917
- props.elementIds = this.elementIds;
918
- return props;
919
- }
920
- }
921
- RenderSchedule.ElementTimelineBuilder = ElementTimelineBuilder;
922
- /** As part of a [[RenderSchedule.ScriptBuilder, assembles a [[RenderSchedule.ModelTimeline]].
923
- * @see [[RenderSchedule.ScriptBuilder.addModelTimeline]].
924
- */
925
- class ModelTimelineBuilder extends TimelineBuilder {
926
- /** Constructor - typically not used directly.
927
- * @see [[RenderSchedule.ScriptBuilder.addModelTimeline]] to create a ModelTimelineBuilder.
928
- */
929
- constructor(modelId, obtainNextBatchId) {
930
- super();
931
- this._elements = [];
932
- this.modelId = modelId;
933
- this._obtainNextBatchId = obtainNextBatchId;
934
- }
935
- /** Add a new [[RenderSchedule.ElementTimeline]] to be applied to the specified elements.
936
- * This function will sort and compress the Ids if they are not already compressed.
937
- *
938
- */
939
- addElementTimeline(elementIds) {
940
- const batchId = this._obtainNextBatchId();
941
- let ids;
942
- // It's far too easy to accidentally pass a single Id (compiler can't help).
943
- if (typeof elementIds === "string" && Id64.isValidId64(elementIds))
944
- elementIds = [elementIds];
945
- if (typeof elementIds === "string") {
946
- // Already compressed.
947
- ids = elementIds;
948
- }
949
- else {
950
- const sorted = Array.from(elementIds);
951
- OrderedId64Iterable.sortArray(sorted);
952
- ids = CompressedId64Set.compressIds(sorted);
953
- }
954
- const builder = new ElementTimelineBuilder(batchId, ids);
955
- this._elements.push(builder);
956
- return builder;
957
- }
958
- /** Obtain the JSON representation of the [[RenderSchedule.ModelTimeline]] produced by this builder.
959
- * @see [[RenderSchedule.ScriptBuilder.finish]] to obtain the JSON for the entire [[RenderSchedule.Script]].
960
- */
961
- finish() {
962
- const props = super.finish();
963
- props.modelId = this.modelId;
964
- if (undefined !== this.realityModelUrl)
965
- props.realityModelUrl = this.realityModelUrl;
966
- props.elementTimelines = this._elements.map((x) => x.finish());
967
- return props;
968
- }
969
- }
970
- RenderSchedule.ModelTimelineBuilder = ModelTimelineBuilder;
971
- /** Assembles the JSON representation for a new [[RenderSchedule.Script]]. Ensure that entries on any given element timeline are added chronologically. As an extremely simple example, the following code produces a script that changes the color of a single element:
972
- * ```ts
973
- * const script = new ScriptBuilder();
974
- * const model = script.addModelTimeline("0x123");
975
- * const element = model.addElementTimeline([ "0x456" ]);
976
- * element.addColor(Date.now(), new RgbColor(0xff, 0x7f, 0));
977
- * const scriptProps = script.finish();
978
- * ```
979
- */
980
- class ScriptBuilder {
981
- constructor() {
982
- this._nextBatchId = 1;
983
- this._models = [];
984
- }
985
- /** Add a new [[RenderSchedule.ModelTimeline]] to be applied to the specified model. */
986
- addModelTimeline(modelId) {
987
- const builder = new ModelTimelineBuilder(modelId, () => this._nextBatchId++);
988
- this._models.push(builder);
989
- return builder;
990
- }
991
- /** Obtain the JSON representation of the [[RenderSchedule.Script]] produced by this builder.
992
- * @see [RenderTimeline.scriptProps]($backend) to assign the new script to a RenderTimeline element.
993
- */
994
- finish() {
995
- return this._models.map((x) => x.finish());
996
- }
997
- }
998
- RenderSchedule.ScriptBuilder = ScriptBuilder;
999
- })(RenderSchedule || (RenderSchedule = {}));
1
+ /*---------------------------------------------------------------------------------------------
2
+ * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
3
+ * See LICENSE.md in the project root for license terms and full copyright notice.
4
+ *--------------------------------------------------------------------------------------------*/
5
+ /** @packageDocumentation
6
+ * @module DisplayStyles
7
+ */
8
+ import { assert, compareBooleans, compareNumbers, comparePossiblyUndefined, compareStrings, compareStringsOrUndefined, CompressedId64Set, Id64, OrderedId64Iterable, } from "@itwin/core-bentley";
9
+ import { ClipPlane, ClipPrimitive, ClipVector, ConvexClipPlaneSet, Matrix3d, Plane3dByOriginAndUnitNormal, Point3d, Point4d, Range1d, Transform, UnionOfConvexClipPlaneSets, Vector3d, } from "@itwin/core-geometry";
10
+ import { RgbColor } from "./RgbColor";
11
+ import { FeatureAppearance } from "./FeatureSymbology";
12
+ function interpolate(start, end, fraction) {
13
+ return start + fraction * (end - start);
14
+ }
15
+ function interpolateRgb(start, end, fraction) {
16
+ return new RgbColor(interpolate(start.r, end.r, fraction), interpolate(start.g, end.g, fraction), interpolate(start.b, end.b, fraction));
17
+ }
18
+ function compareXYZ(lhs, rhs) {
19
+ return compareNumbers(lhs.x, rhs.x) || compareNumbers(lhs.y, rhs.y) || compareNumbers(lhs.z, rhs.z);
20
+ }
21
+ function compare4d(lhs, rhs) {
22
+ return compareNumbers(lhs.x, rhs.x) || compareNumbers(lhs.y, rhs.y) || compareNumbers(lhs.z, rhs.z) || compareNumbers(lhs.w, rhs.w);
23
+ }
24
+ const scratchVec3a = new Vector3d();
25
+ const scratchVec3b = new Vector3d();
26
+ function compareMatrices(lhs, rhs) {
27
+ return compareXYZ(lhs.columnX(scratchVec3a), rhs.columnX(scratchVec3b))
28
+ || compareXYZ(lhs.columnY(scratchVec3a), rhs.columnY(scratchVec3b))
29
+ || compareXYZ(lhs.columnZ(scratchVec3a), rhs.columnZ(scratchVec3b));
30
+ }
31
+ function compareDurations(lhs, rhs) {
32
+ return compareNumbers(lhs.low, rhs.low) || compareNumbers(lhs.high, rhs.high);
33
+ }
34
+ /** Namespace containing types that collectively define a script that animates the contents of a view by adjusting the visibility, position,
35
+ * and/or symbology of groups of elements over time. A [[RenderSchedule.Script]] is hosted by a [RenderTimeline]($backend) element. The script
36
+ * can be associated with a [DisplayStyleState]($frontend) by way of its [[DisplayStyleSettings.renderTimeline]] property.
37
+ * @public
38
+ */
39
+ export var RenderSchedule;
40
+ (function (RenderSchedule) {
41
+ /** Defines how two interpolate between two entries in a [[RenderSchedule.Timeline]].
42
+ * @note Currently only Linear and Step are supported. Any other value is treated as Step.
43
+ * @see [[RenderSchedule.TimelineEntry]].
44
+ */
45
+ let Interpolation;
46
+ (function (Interpolation) {
47
+ /** Each timeline entry's value is discrete - the timeline jumps from one entry's value directly to another. */
48
+ Interpolation[Interpolation["Step"] = 1] = "Step";
49
+ /** Given two entries on the timeline and a timepoint in between them, linearly interpolate based on the timepoint's distance between the
50
+ * two entries.
51
+ */
52
+ Interpolation[Interpolation["Linear"] = 2] = "Linear";
53
+ })(Interpolation = RenderSchedule.Interpolation || (RenderSchedule.Interpolation = {}));
54
+ /** Describes the value of some property at a specific point along a [[RenderSchedule.Timeline]].
55
+ * @see [[RenderSchedule.VisibilityEntry]]
56
+ * @see [[RenderSchedule.ColorEntry]]
57
+ * @see [[RenderSchedule.TransformEntry]]
58
+ * @see [[RenderSchedule.CuttingPlaneEntry]]
59
+ */
60
+ class TimelineEntry {
61
+ constructor(props) {
62
+ this.time = props.time;
63
+ this.interpolation = props.interpolation === Interpolation.Linear ? props.interpolation : Interpolation.Step;
64
+ }
65
+ toJSON() {
66
+ const props = {
67
+ time: this.time,
68
+ };
69
+ if (this.interpolation === Interpolation.Linear)
70
+ props.interpolation = this.interpolation;
71
+ return props;
72
+ }
73
+ compareTo(other) {
74
+ return compareNumbers(this.interpolation, other.interpolation) || compareNumbers(this.time, other.time);
75
+ }
76
+ equals(other) {
77
+ return 0 === this.compareTo(other);
78
+ }
79
+ }
80
+ RenderSchedule.TimelineEntry = TimelineEntry;
81
+ /** A timeline entry that controls the visibility of the associated geometry. */
82
+ class VisibilityEntry extends TimelineEntry {
83
+ constructor(props) {
84
+ super(props);
85
+ if (typeof props.value !== "number")
86
+ this.value = 100;
87
+ else
88
+ this.value = Math.max(0, Math.min(100, props.value));
89
+ }
90
+ toJSON() {
91
+ const props = super.toJSON();
92
+ if (100 !== this.value)
93
+ props.value = this.value;
94
+ return props;
95
+ }
96
+ compareTo(other) {
97
+ assert(other instanceof VisibilityEntry);
98
+ return super.compareTo(other) || compareNumbers(this.value, other.value);
99
+ }
100
+ }
101
+ RenderSchedule.VisibilityEntry = VisibilityEntry;
102
+ /** A timeline entry controlling the color of the affected geometry. */
103
+ class ColorEntry extends TimelineEntry {
104
+ constructor(props) {
105
+ super(props);
106
+ if (props.value)
107
+ this.value = new RgbColor(props.value.red, props.value.green, props.value.blue);
108
+ }
109
+ toJSON() {
110
+ const props = super.toJSON();
111
+ if (this.value) {
112
+ props.value = {
113
+ red: this.value.r,
114
+ green: this.value.g,
115
+ blue: this.value.b,
116
+ };
117
+ }
118
+ return props;
119
+ }
120
+ compareTo(other) {
121
+ assert(other instanceof ColorEntry);
122
+ return super.compareTo(other) || comparePossiblyUndefined((lhs, rhs) => lhs.compareTo(rhs), this.value, other.value);
123
+ }
124
+ }
125
+ RenderSchedule.ColorEntry = ColorEntry;
126
+ /** Describes the components of a [[RenderSchedule.TransformEntry]] as a rotation around a pivot point followed by a translation. */
127
+ class TransformComponents {
128
+ constructor(position, pivot, orientation) {
129
+ this.position = position;
130
+ this.pivot = pivot;
131
+ this.orientation = orientation;
132
+ }
133
+ static fromJSON(props) {
134
+ if (props.pivot && props.position && props.orientation)
135
+ return new TransformComponents(Vector3d.fromJSON(props.position), Vector3d.fromJSON(props.pivot), Point4d.fromJSON(props.orientation));
136
+ else
137
+ return undefined;
138
+ }
139
+ toJSON() {
140
+ return {
141
+ position: [this.position.x, this.position.y, this.position.z],
142
+ pivot: [this.pivot.x, this.pivot.y, this.pivot.z],
143
+ orientation: [this.orientation.x, this.orientation.y, this.orientation.z, this.orientation.w],
144
+ };
145
+ }
146
+ compareTo(other) {
147
+ return compareXYZ(this.pivot, other.pivot) || compareXYZ(this.position, other.position) || compare4d(this.orientation, other.orientation);
148
+ }
149
+ equals(other) {
150
+ return this.pivot.isAlmostEqual(other.pivot) && this.position.isAlmostEqual(other.position) && this.orientation.isAlmostEqual(other.orientation);
151
+ }
152
+ }
153
+ RenderSchedule.TransformComponents = TransformComponents;
154
+ /** A timeline entry that applies rotation, scaling, and/or translation to the affected geometry. */
155
+ class TransformEntry extends TimelineEntry {
156
+ constructor(props) {
157
+ super(props);
158
+ this.value = props.value ? Transform.fromJSON(props.value.transform) : Transform.identity;
159
+ if (props.value)
160
+ this.components = TransformComponents.fromJSON(props.value);
161
+ }
162
+ toJSON() {
163
+ const props = super.toJSON();
164
+ if (this.components) {
165
+ props.value = this.components.toJSON();
166
+ props.value.transform = this.value.toRows();
167
+ }
168
+ else {
169
+ props.value = { transform: this.value.toRows() };
170
+ }
171
+ return props;
172
+ }
173
+ compareTo(other) {
174
+ assert(other instanceof TransformEntry);
175
+ const cmp = super.compareTo(other);
176
+ if (0 !== cmp)
177
+ return cmp;
178
+ if (this.components || other.components) {
179
+ if (!this.components || !other.components)
180
+ return this.components ? 1 : -1;
181
+ return this.components.compareTo(other.components);
182
+ }
183
+ return compareXYZ(this.value.origin, other.value.origin) || compareMatrices(this.value.matrix, other.value.matrix);
184
+ }
185
+ }
186
+ RenderSchedule.TransformEntry = TransformEntry;
187
+ /** Defines a [ClipPlane]($core-geometry) associated with a [[RenderSchedule.CuttingPlaneEntry]]. */
188
+ class CuttingPlane {
189
+ constructor(props) {
190
+ this.position = Point3d.fromJSON(props.position);
191
+ this.direction = Point3d.fromJSON(props.direction);
192
+ this.hidden = true === props.hidden;
193
+ this.visible = true === props.visible;
194
+ }
195
+ toJSON() {
196
+ const props = {
197
+ position: [this.position.x, this.position.y, this.position.z],
198
+ direction: [this.direction.x, this.direction.y, this.direction.z],
199
+ };
200
+ if (this.visible)
201
+ props.visible = true;
202
+ if (this.hidden)
203
+ props.hidden = true;
204
+ return props;
205
+ }
206
+ compareTo(other) {
207
+ return compareXYZ(this.position, other.position) || compareXYZ(this.direction, other.direction) || compareBooleans(this.visible, other.visible) || compareBooleans(this.hidden, other.hidden);
208
+ }
209
+ equals(other) {
210
+ return 0 === this.compareTo(other);
211
+ }
212
+ }
213
+ RenderSchedule.CuttingPlane = CuttingPlane;
214
+ /** A timeline entry that applies a [ClipPlane]($core-geometry) to the affected geometry. */
215
+ class CuttingPlaneEntry extends TimelineEntry {
216
+ constructor(props) {
217
+ super(props);
218
+ if (props.value)
219
+ this.value = new CuttingPlane(props.value);
220
+ }
221
+ toJSON() {
222
+ const props = super.toJSON();
223
+ if (this.value)
224
+ props.value = this.value.toJSON();
225
+ return props;
226
+ }
227
+ compareTo(other) {
228
+ assert(other instanceof CuttingPlaneEntry);
229
+ return super.compareTo(other) || comparePossiblyUndefined((x, y) => x.compareTo(y), this.value, other.value);
230
+ }
231
+ }
232
+ RenderSchedule.CuttingPlaneEntry = CuttingPlaneEntry;
233
+ /** Identifies a fractional position along a [[RenderSchedule.Timeline]] between any two [[RenderSchedule.TimelineEntry]]'s within a [[RenderSchedule.TimelineEntryList]].
234
+ * @internal
235
+ */
236
+ class Interval {
237
+ constructor(lower = 0, upper = 0, fraction = 0) {
238
+ this.init(lower, upper, fraction);
239
+ }
240
+ init(lower = 0, upper = 0, fraction = 0) {
241
+ this.lowerIndex = lower;
242
+ this.upperIndex = upper;
243
+ this.fraction = fraction;
244
+ }
245
+ }
246
+ RenderSchedule.Interval = Interval;
247
+ /** A list of the [[RenderSchedule.TimelineEntry]] objects within a [[RenderSchedule.Timeline]]. The type parameters are:
248
+ * - T, a subclass of TimelineEntry with a `value` property specifying the value of the property controlled by the timeline at that entry's time point.
249
+ * - P, the JSON representation from which T is to be constructed.
250
+ * - V, the type of `T.value`.
251
+ */
252
+ class TimelineEntryList {
253
+ constructor(props, ctor) {
254
+ this.duration = Range1d.createNull();
255
+ this._entries = props.map((x) => {
256
+ const entry = new ctor(x);
257
+ this.duration.extendX(entry.time);
258
+ return entry;
259
+ });
260
+ }
261
+ /** The number of entries in the list. */
262
+ get length() {
263
+ return this._entries.length;
264
+ }
265
+ /** An iterator over the entries in the list. */
266
+ [Symbol.iterator]() {
267
+ return this._entries[Symbol.iterator]();
268
+ }
269
+ /** Look up an entry by its position in the list. */
270
+ getEntry(index) {
271
+ return this._entries[index];
272
+ }
273
+ /** Look up the value of an entry by its position in the list. */
274
+ getValue(index) {
275
+ var _a;
276
+ return (_a = this.getEntry(index)) === null || _a === void 0 ? void 0 : _a.value;
277
+ }
278
+ toJSON() {
279
+ return this._entries.map((x) => x.toJSON());
280
+ }
281
+ compareTo(other) {
282
+ let cmp = compareNumbers(this._entries.length, other._entries.length) || compareDurations(this.duration, other.duration);
283
+ if (0 === cmp) {
284
+ for (let i = 0; i < this.length; i++)
285
+ if (0 !== (cmp = this._entries[i].compareTo(other._entries[i])))
286
+ break;
287
+ }
288
+ return cmp;
289
+ }
290
+ equals(other) {
291
+ return 0 === this.compareTo(other);
292
+ }
293
+ /** @internal */
294
+ findInterval(time, interval) {
295
+ if (this.length === 0)
296
+ return undefined;
297
+ interval = interval !== null && interval !== void 0 ? interval : new Interval();
298
+ if (time < this._entries[0].time) {
299
+ interval.init(0, 0, 0);
300
+ return interval;
301
+ }
302
+ const last = this.length - 1;
303
+ if (time >= this._entries[last].time) {
304
+ interval.init(last, last, 0);
305
+ return interval;
306
+ }
307
+ for (let i = 0; i < last; i++) {
308
+ const time0 = this._entries[i].time;
309
+ const time1 = this._entries[i + 1].time;
310
+ if (time0 <= time && time1 >= time) {
311
+ let fraction;
312
+ if (Interpolation.Linear === this._entries[i].interpolation)
313
+ fraction = (time - time0) / (time1 - time0);
314
+ else
315
+ fraction = 0;
316
+ interval.init(i, i + 1, fraction);
317
+ return interval;
318
+ }
319
+ }
320
+ return undefined;
321
+ }
322
+ }
323
+ RenderSchedule.TimelineEntryList = TimelineEntryList;
324
+ const scratchInterval = new Interval();
325
+ /** A list of [[RenderSchedule.VisibilityEntry]]s within a [[RenderSchedule.Timeline]]. */
326
+ class VisibilityTimelineEntries extends TimelineEntryList {
327
+ /** Returns the visibility value for the entry at the specified position in the list, or 100 (fully-visible) if no such entry exists. */
328
+ getValue(index) {
329
+ var _a;
330
+ return (_a = super.getValue(index)) !== null && _a !== void 0 ? _a : 100;
331
+ }
332
+ }
333
+ RenderSchedule.VisibilityTimelineEntries = VisibilityTimelineEntries;
334
+ /** A list of [[RenderSchedule.TransformEntry]]s within a [[RenderSchedule.Timeline]]. */
335
+ class TransformTimelineEntries extends TimelineEntryList {
336
+ /** Returns the transform for the entry at the specified position in the list, or an identity transform if no such entry exists. */
337
+ getValue(index) {
338
+ var _a;
339
+ return (_a = super.getValue(index)) !== null && _a !== void 0 ? _a : Transform.identity;
340
+ }
341
+ }
342
+ RenderSchedule.TransformTimelineEntries = TransformTimelineEntries;
343
+ /** Specifies how to animate a set of geometry over time within a [[RenderSchedule.Script]].
344
+ * A [[RenderSchedule.Script]] can contain any number of [[RenderSchedule.Timeline]]s, each affecting different sets of geometry.
345
+ * @see [[RenderSchedule.ElementTimeline]] and [[RenderSchedule.ModelTimeline]].
346
+ */
347
+ class Timeline {
348
+ constructor(props) {
349
+ this.duration = Range1d.createNull();
350
+ if (props.visibilityTimeline) {
351
+ this.visibility = new VisibilityTimelineEntries(props.visibilityTimeline, VisibilityEntry);
352
+ this.duration.extendRange(this.visibility.duration);
353
+ }
354
+ if (props.colorTimeline) {
355
+ this.color = new TimelineEntryList(props.colorTimeline, ColorEntry);
356
+ this.duration.extendRange(this.color.duration);
357
+ }
358
+ if (props.transformTimeline) {
359
+ this.transform = new TransformTimelineEntries(props.transformTimeline, TransformEntry);
360
+ this.duration.extendRange(this.transform.duration);
361
+ }
362
+ if (props.cuttingPlaneTimeline) {
363
+ this.cuttingPlane = new TimelineEntryList(props.cuttingPlaneTimeline, CuttingPlaneEntry);
364
+ this.duration.extendRange(this.cuttingPlane.duration);
365
+ }
366
+ }
367
+ toJSON() {
368
+ var _a, _b, _c, _d;
369
+ return {
370
+ visibilityTimeline: (_a = this.visibility) === null || _a === void 0 ? void 0 : _a.toJSON(),
371
+ colorTimeline: (_b = this.color) === null || _b === void 0 ? void 0 : _b.toJSON(),
372
+ transformTimeline: (_c = this.transform) === null || _c === void 0 ? void 0 : _c.toJSON(),
373
+ cuttingPlaneTimeline: (_d = this.cuttingPlane) === null || _d === void 0 ? void 0 : _d.toJSON(),
374
+ };
375
+ }
376
+ compareTo(other) {
377
+ const cmp = compareDurations(this.duration, other.duration);
378
+ if (0 !== cmp)
379
+ return cmp;
380
+ // Do cheaper checks before iterating through timeline entries
381
+ if (!!this.visibility !== !!other.visibility)
382
+ return this.visibility ? 1 : -1;
383
+ else if (!!this.color !== !!other.color)
384
+ return this.color ? 1 : -1;
385
+ else if (!!this.transform !== !!other.transform)
386
+ return this.transform ? 1 : -1;
387
+ else if (!!this.cuttingPlane !== !!other.cuttingPlane)
388
+ return this.cuttingPlane ? 1 : -1;
389
+ return comparePossiblyUndefined((x, y) => x.compareTo(y), this.visibility, other.visibility) || comparePossiblyUndefined((x, y) => x.compareTo(y), this.color, other.color)
390
+ || comparePossiblyUndefined((x, y) => x.compareTo(y), this.transform, other.transform) || comparePossiblyUndefined((x, y) => x.compareTo(y), this.cuttingPlane, other.cuttingPlane);
391
+ }
392
+ equals(other) {
393
+ return 0 === this.compareTo(other);
394
+ }
395
+ /** Get the visibility of the geometry at the specified time point. */
396
+ getVisibility(time) {
397
+ var _a, _b;
398
+ let interval;
399
+ if (!this.visibility || !(interval = this.visibility.findInterval(time, scratchInterval)))
400
+ return 100;
401
+ let visibility = (_a = this.visibility.getValue(interval.lowerIndex)) !== null && _a !== void 0 ? _a : 100;
402
+ if (interval.fraction > 0)
403
+ visibility = interpolate(visibility, (_b = this.visibility.getValue(interval.upperIndex)) !== null && _b !== void 0 ? _b : 100, interval.fraction);
404
+ return visibility;
405
+ }
406
+ /** Get the color of the geometry at the specified time point, or undefined if the color is not overridden at that time point. */
407
+ getColor(time) {
408
+ let interval;
409
+ if (!this.color || !(interval = this.color.findInterval(time, scratchInterval)))
410
+ return undefined;
411
+ const start = this.color.getValue(interval.lowerIndex);
412
+ if (start && interval.fraction > 0) {
413
+ const end = this.color.getValue(interval.upperIndex);
414
+ if (end)
415
+ return interpolateRgb(start, end, interval.fraction);
416
+ }
417
+ return start;
418
+ }
419
+ /** Get the transform applied to the geometry at the specified time point. */
420
+ getAnimationTransform(time) {
421
+ var _a, _b, _c, _d;
422
+ let interval;
423
+ if (!this.transform || !(interval = this.transform.findInterval(time, scratchInterval)))
424
+ return Transform.identity;
425
+ let transform = this.transform.getValue(interval.lowerIndex);
426
+ if (interval.fraction > 0) {
427
+ const comp0 = (_a = this.transform.getEntry(interval.lowerIndex)) === null || _a === void 0 ? void 0 : _a.components;
428
+ const comp1 = (_b = this.transform.getEntry(interval.upperIndex)) === null || _b === void 0 ? void 0 : _b.components;
429
+ if (comp0 && comp1) {
430
+ const sum = Point4d.interpolateQuaternions(comp0.orientation, interval.fraction, comp1.orientation);
431
+ const matrix = Matrix3d.createFromQuaternion(sum);
432
+ const pre = Transform.createTranslation(comp0.pivot);
433
+ const post = Transform.createTranslation(comp0.position.interpolate(interval.fraction, comp1.position));
434
+ const product = post.multiplyTransformMatrix3d(matrix);
435
+ product.multiplyTransformTransform(pre, product);
436
+ transform = product;
437
+ }
438
+ else {
439
+ const end = this.transform.getValue(interval.upperIndex);
440
+ const q0 = (_c = transform.matrix.inverse()) === null || _c === void 0 ? void 0 : _c.toQuaternion();
441
+ const q1 = (_d = end.matrix.inverse()) === null || _d === void 0 ? void 0 : _d.toQuaternion();
442
+ if (q0 && q1) {
443
+ const sum = Point4d.interpolateQuaternions(q0, interval.fraction, q1);
444
+ const matrix = Matrix3d.createFromQuaternion(sum);
445
+ const origin0 = Vector3d.createFrom(transform.origin);
446
+ const origin1 = Vector3d.createFrom(end.origin);
447
+ transform = Transform.createRefs(origin0.interpolate(interval.fraction, origin1), matrix);
448
+ }
449
+ }
450
+ }
451
+ return transform;
452
+ }
453
+ /** Get the clipping plane applied to the geometry at the specified time point, or undefined if the geometry is unclipped at that time point. */
454
+ getCuttingPlane(time) {
455
+ let interval;
456
+ if (!this.cuttingPlane || !(interval = this.cuttingPlane.findInterval(time, scratchInterval)))
457
+ return undefined;
458
+ const start = this.cuttingPlane.getValue(interval.lowerIndex);
459
+ if (!start)
460
+ return undefined;
461
+ const position = Point3d.createFrom(start.position);
462
+ const direction = Vector3d.createFrom(start.direction);
463
+ const end = interval.fraction > 0 ? this.cuttingPlane.getValue(interval.upperIndex) : undefined;
464
+ if (end) {
465
+ position.interpolate(interval.fraction, end.position, position);
466
+ direction.interpolate(interval.fraction, end.direction, direction);
467
+ }
468
+ else {
469
+ if (start.hidden || start.visible)
470
+ return undefined;
471
+ }
472
+ direction.negate(direction);
473
+ direction.normalizeInPlace();
474
+ return Plane3dByOriginAndUnitNormal.create(position, direction);
475
+ }
476
+ /** Create a ClipVector from the [[RenderSchedule.CuttingPlane]] applied to the geometry at the specified time point, if any. */
477
+ getClipVector(time) {
478
+ const plane = this.getCuttingPlane(time);
479
+ if (!plane)
480
+ return undefined;
481
+ const cp = ClipPlane.createPlane(plane);
482
+ const cps = UnionOfConvexClipPlaneSets.createConvexSets([ConvexClipPlaneSet.createPlanes([cp])]);
483
+ const prim = ClipPrimitive.createCapture(cps);
484
+ return ClipVector.createCapture([prim]);
485
+ }
486
+ /** @internal */
487
+ getFeatureAppearance(visibility, time) {
488
+ const transparency = visibility < 100 ? (1 - visibility / 100) : undefined;
489
+ const rgb = this.getColor(time);
490
+ return undefined !== rgb || undefined !== transparency ? FeatureAppearance.fromJSON({ rgb, transparency }) : undefined;
491
+ }
492
+ }
493
+ RenderSchedule.Timeline = Timeline;
494
+ /** Specifies how to animate the geometry belonging to a set of [GeometricElement]($backend)s as part of a [[RenderSchedule.Script]]. */
495
+ class ElementTimeline extends Timeline {
496
+ constructor(props) {
497
+ super(props);
498
+ this.batchId = props.batchId;
499
+ this._elementIds = props.elementIds;
500
+ }
501
+ static fromJSON(props) {
502
+ return new ElementTimeline(props !== null && props !== void 0 ? props : { elementIds: [], batchId: 0 });
503
+ }
504
+ toJSON() {
505
+ return {
506
+ ...super.toJSON(),
507
+ batchId: this.batchId,
508
+ elementIds: this._elementIds,
509
+ };
510
+ }
511
+ get containsElementIds() {
512
+ return this._elementIds.length > 0;
513
+ }
514
+ compareElementIds(other) {
515
+ if (typeof this._elementIds === typeof other._elementIds) {
516
+ const cmp = compareNumbers(this._elementIds.length, other._elementIds.length);
517
+ if (0 !== cmp)
518
+ return cmp;
519
+ if (typeof this._elementIds === "string") {
520
+ assert(typeof other._elementIds === "string");
521
+ return compareStrings(this._elementIds, other._elementIds);
522
+ }
523
+ }
524
+ // One or both are stored as arrays, in which case they might contain the same Ids in different orders. We will consider them different in that case.
525
+ const mine = this.elementIds[Symbol.iterator]();
526
+ const theirs = other.elementIds[Symbol.iterator]();
527
+ while (true) {
528
+ const a = mine.next();
529
+ const b = theirs.next();
530
+ if (a.done !== b.done)
531
+ return compareBooleans(!!a.done, !!b.done);
532
+ else if (a.done)
533
+ return 0;
534
+ const cmp = compareStrings(a.value, b.value);
535
+ if (0 !== cmp)
536
+ return cmp;
537
+ }
538
+ }
539
+ compareTo(other) {
540
+ assert(other instanceof ElementTimeline);
541
+ return compareNumbers(this.batchId, other.batchId) || this.compareElementIds(other) || super.compareTo(other);
542
+ }
543
+ /** @internal */
544
+ static getElementIds(ids) {
545
+ if (typeof ids === "string")
546
+ return CompressedId64Set.iterable(ids);
547
+ else if (Array.isArray(ids)) {
548
+ return ids;
549
+ }
550
+ else {
551
+ return [];
552
+ }
553
+ }
554
+ /** The Ids of the elements controlled by this timeline. */
555
+ get elementIds() {
556
+ return ElementTimeline.getElementIds(this._elementIds);
557
+ }
558
+ /** True if this timeline affects the color or transparency of the elements. */
559
+ get containsFeatureOverrides() {
560
+ return undefined !== this.visibility || undefined !== this.color;
561
+ }
562
+ /** If true, applying this timeline requires special tiles to be generated in which groups of elements are batched into nodes.
563
+ * @internal
564
+ */
565
+ get requiresBatching() {
566
+ if (this.cuttingPlane)
567
+ return true;
568
+ return this.batchId !== 0 && (undefined !== this.color || undefined !== this.visibility);
569
+ }
570
+ /** True if this timeline affects the position, orientation, or scale of the elements. */
571
+ get containsTransform() {
572
+ return undefined !== this.transform;
573
+ }
574
+ /** @internal */
575
+ addSymbologyOverrides(overrides, time) {
576
+ assert(0 !== this.batchId);
577
+ const vis = this.getVisibility(time);
578
+ if (vis <= 0) {
579
+ overrides.setAnimationNodeNeverDrawn(this.batchId);
580
+ return;
581
+ }
582
+ const appearance = this.getFeatureAppearance(vis, time);
583
+ if (appearance)
584
+ overrides.overrideAnimationNode(this.batchId, appearance);
585
+ }
586
+ }
587
+ RenderSchedule.ElementTimeline = ElementTimeline;
588
+ /** Specifies how to animate the geometry within a [GeometricModel]($backend) as part of a [[RenderSchedule.Script]]. */
589
+ class ModelTimeline extends Timeline {
590
+ constructor(props) {
591
+ super(props);
592
+ /** Tile tree suppliers perform **very** frequent ordered comparisons of ModelTimelines. They need to be fast. */
593
+ this._cachedComparisons = new WeakMap();
594
+ this.modelId = props.modelId;
595
+ this.realityModelUrl = props.realityModelUrl;
596
+ this.containsModelClipping = undefined !== this.cuttingPlane;
597
+ let containsFeatureOverrides = undefined !== this.visibility || undefined !== this.color;
598
+ let requiresBatching = false;
599
+ let containsTransform = false;
600
+ const transformBatchIds = [];
601
+ const elementTimelines = [];
602
+ let containsElementIds = false;
603
+ for (const elProps of props.elementTimelines) {
604
+ const el = ElementTimeline.fromJSON(elProps);
605
+ elementTimelines.push(el);
606
+ this.duration.extendRange(el.duration);
607
+ if (el.containsTransform) {
608
+ containsTransform = true;
609
+ if (el.batchId)
610
+ transformBatchIds.push(el.batchId);
611
+ }
612
+ containsFeatureOverrides || (containsFeatureOverrides = el.containsFeatureOverrides);
613
+ requiresBatching || (requiresBatching = el.requiresBatching);
614
+ containsElementIds = containsElementIds || el.containsElementIds;
615
+ }
616
+ this.elementTimelines = elementTimelines;
617
+ this.transformBatchIds = transformBatchIds;
618
+ this.omitsElementIds = elementTimelines.length > 0 && !containsElementIds;
619
+ this.containsFeatureOverrides = containsFeatureOverrides;
620
+ this.requiresBatching = requiresBatching;
621
+ this.containsTransform = containsTransform;
622
+ }
623
+ static fromJSON(props) {
624
+ return new ModelTimeline(props !== null && props !== void 0 ? props : { elementTimelines: [], modelId: Id64.invalid });
625
+ }
626
+ toJSON() {
627
+ return {
628
+ ...super.toJSON(),
629
+ modelId: this.modelId,
630
+ realityModelUrl: this.realityModelUrl,
631
+ elementTimelines: this.elementTimelines.map((x) => x.toJSON()),
632
+ };
633
+ }
634
+ compareTo(other) {
635
+ if (this === other)
636
+ return 0;
637
+ const cached = this._cachedComparisons.get(other);
638
+ if (undefined !== cached)
639
+ return cached;
640
+ assert(other instanceof ModelTimeline);
641
+ let cmp = compareStrings(this.modelId, other.modelId) || compareStringsOrUndefined(this.realityModelUrl, other.realityModelUrl)
642
+ || compareNumbers(this.elementTimelines.length, other.elementTimelines.length) || compareBooleans(this.containsFeatureOverrides, other.containsFeatureOverrides)
643
+ || compareBooleans(this.containsModelClipping, other.containsModelClipping) || compareBooleans(this.containsTransform, other.containsTransform)
644
+ || super.compareTo(other);
645
+ if (0 === cmp) {
646
+ for (let i = 0; i < this.elementTimelines.length; i++)
647
+ if (0 !== (cmp = this.elementTimelines[i].compareTo(other.elementTimelines[i])))
648
+ break;
649
+ }
650
+ this._cachedComparisons.set(other, cmp);
651
+ other._cachedComparisons.set(this, -cmp);
652
+ return cmp;
653
+ }
654
+ /** Look up the element timeline with the specified batch Id. */
655
+ findByBatchId(batchId) {
656
+ return this.elementTimelines.find((x) => x.batchId === batchId);
657
+ }
658
+ /** @internal */
659
+ addSymbologyOverrides(overrides, time) {
660
+ const appearance = this.getFeatureAppearance(this.getVisibility(time), time);
661
+ if (appearance)
662
+ overrides.override({ modelId: this.modelId, appearance });
663
+ for (const timeline of this.elementTimelines)
664
+ timeline.addSymbologyOverrides(overrides, time);
665
+ }
666
+ /** Obtain the transform applied to the model at the specified time point, if any. */
667
+ getTransform(batchId, time) {
668
+ var _a;
669
+ return (_a = this.findByBatchId(batchId)) === null || _a === void 0 ? void 0 : _a.getAnimationTransform(time);
670
+ }
671
+ /** Get the highest batchId of any ElementTimeline in this timeline. */
672
+ get maxBatchId() {
673
+ if (undefined === this._maxBatchId) {
674
+ this._maxBatchId = 0;
675
+ for (const elem of this.elementTimelines)
676
+ this._maxBatchId = Math.max(this._maxBatchId, elem.batchId);
677
+ }
678
+ return this._maxBatchId;
679
+ }
680
+ /** Given the two halves of an [Id64]($bentley) return the [[ElementTimeline]] containing the corresponding element.
681
+ * @note The first call to this method populates a mapping for fast lookup.
682
+ * @alpha
683
+ */
684
+ getTimelineForElement(idLo, idHi) {
685
+ if (!this._idPairToElementTimeline) {
686
+ this._idPairToElementTimeline = new Id64.Uint32Map();
687
+ for (const timeline of this.elementTimelines) {
688
+ for (const elementId of timeline.elementIds) {
689
+ // NB: a malformed script may place the same element Id into multiple timelines. We're not going to check for such data errors here.
690
+ this._idPairToElementTimeline.setById(elementId, timeline);
691
+ }
692
+ }
693
+ }
694
+ return this._idPairToElementTimeline.get(idLo, idHi);
695
+ }
696
+ /** The batch Ids of the subset of [[elementTimelines]] that apply a transform and/or cutting plane.
697
+ * @alpha
698
+ */
699
+ get discreteBatchIds() {
700
+ if (!this._discreteBatchIds) {
701
+ this._discreteBatchIds = new Set(this.transformBatchIds);
702
+ for (const timeline of this.elementTimelines)
703
+ if (!timeline.containsTransform && undefined !== timeline.cuttingPlane)
704
+ this._discreteBatchIds.add(timeline.batchId);
705
+ }
706
+ return this._discreteBatchIds;
707
+ }
708
+ }
709
+ RenderSchedule.ModelTimeline = ModelTimeline;
710
+ /** Specifies how to animate the contents of a [ViewState]($frontend) over time. The script contains any number of [[RenderSchedule.ModelTimeline]]s, each describing how
711
+ * to animate one of the models in the view.
712
+ * @see [RenderTimeline]($backend) to create an [Element]($backend) to host a script.
713
+ * @see [[DisplayStyleSettings.renderTimeline]] to associate a [RenderTimeline]($backend)'s script with a [DisplayStyle]($backend).
714
+ * @see [DisplayStyleState.scheduleScript]($frontend) to obtain the script associated with a display style.
715
+ * @see [[RenderSchedule.ScriptBuilder]] to define a new script.
716
+ */
717
+ class Script {
718
+ constructor(props) {
719
+ /** Tile tree references perform **very** frequent ordered comparisons of Scripts. They need to be fast. */
720
+ this._cachedComparisons = new WeakMap();
721
+ this.duration = Range1d.createNull();
722
+ const transformBatchIds = new Set();
723
+ const modelTimelines = [];
724
+ let containsModelClipping = false;
725
+ let requiresBatching = false;
726
+ let containsTransform = false;
727
+ let containsFeatureOverrides = false;
728
+ for (const modelProps of props) {
729
+ const model = ModelTimeline.fromJSON(modelProps);
730
+ modelTimelines.push(model);
731
+ this.duration.extendRange(model.duration);
732
+ containsModelClipping || (containsModelClipping = model.containsModelClipping);
733
+ requiresBatching || (requiresBatching = model.requiresBatching);
734
+ containsTransform || (containsTransform = model.containsTransform);
735
+ containsFeatureOverrides || (containsFeatureOverrides = model.containsFeatureOverrides);
736
+ for (const batchId of model.transformBatchIds)
737
+ transformBatchIds.add(batchId);
738
+ }
739
+ this.modelTimelines = modelTimelines;
740
+ this.containsModelClipping = containsModelClipping;
741
+ this.containsTransform = containsTransform;
742
+ this.requiresBatching = requiresBatching || this.containsTransform;
743
+ this.containsFeatureOverrides = containsFeatureOverrides;
744
+ this.transformBatchIds = transformBatchIds;
745
+ }
746
+ compareTo(other) {
747
+ if (this === other)
748
+ return 0;
749
+ const cached = this._cachedComparisons.get(other);
750
+ if (undefined !== cached)
751
+ return cached;
752
+ let cmp = compareNumbers(this.modelTimelines.length, other.modelTimelines.length) || compareBooleans(this.containsModelClipping, other.containsModelClipping)
753
+ || compareBooleans(this.requiresBatching, other.requiresBatching) || compareBooleans(this.containsTransform, other.containsTransform)
754
+ || compareBooleans(this.containsFeatureOverrides, other.containsFeatureOverrides) || compareDurations(this.duration, other.duration);
755
+ if (0 === cmp) {
756
+ for (let i = 0; i < this.modelTimelines.length; i++)
757
+ if (0 !== (cmp = this.modelTimelines[i].compareTo(other.modelTimelines[i])))
758
+ break;
759
+ }
760
+ this._cachedComparisons.set(other, cmp);
761
+ other._cachedComparisons.set(this, -cmp);
762
+ return cmp;
763
+ }
764
+ equals(other) {
765
+ return 0 === this.compareTo(other);
766
+ }
767
+ static fromJSON(props) {
768
+ if (!Array.isArray(props) || props.length === 0)
769
+ return undefined;
770
+ return new Script(props);
771
+ }
772
+ toJSON() {
773
+ return this.modelTimelines.map((x) => x.toJSON());
774
+ }
775
+ /** Look up the timeline that animates the specified model, if any. */
776
+ find(modelId) {
777
+ return this.modelTimelines.find((x) => x.modelId === modelId);
778
+ }
779
+ /** @internal */
780
+ getTransformBatchIds(modelId) {
781
+ var _a;
782
+ return (_a = this.find(modelId)) === null || _a === void 0 ? void 0 : _a.transformBatchIds;
783
+ }
784
+ /** @internal */
785
+ getTransform(modelId, batchId, time) {
786
+ var _a;
787
+ return (_a = this.find(modelId)) === null || _a === void 0 ? void 0 : _a.getTransform(batchId, time);
788
+ }
789
+ /** @internal */
790
+ addSymbologyOverrides(overrides, time) {
791
+ for (const timeline of this.modelTimelines)
792
+ timeline.addSymbologyOverrides(overrides, time);
793
+ }
794
+ /** Used by the [Entity.collectReferenceIds]($backend) method overrides in RenderTimeline and DisplayStyle.
795
+ * @internal
796
+ */
797
+ discloseIds(ids) {
798
+ for (const model of this.modelTimelines) {
799
+ ids.addModel(model.modelId);
800
+ for (const element of model.elementTimelines)
801
+ for (const id of element.elementIds)
802
+ ids.addElement(id);
803
+ }
804
+ }
805
+ /** @internal */
806
+ modelRequiresBatching(modelId) {
807
+ // Only if the script contains animation (cutting plane, transform or visibility by node ID) do we require separate tilesets for animations.
808
+ return this.requiresBatching && this.modelTimelines.some((x) => x.modelId === modelId && x.requiresBatching);
809
+ }
810
+ }
811
+ RenderSchedule.Script = Script;
812
+ /** A reference to a [[RenderSchedule.Script]], optionally identifying the source of the script.
813
+ * @see [DisplayStyle.loadScheduleScript]($backend) and [DisplayStyleState.scheduleScript]($frontend) to obtain the script reference for a display style on the frontend
814
+ * and backend respectively.
815
+ * @see [DisplayStyleState.scheduleScript]($frontend) or [DisplayStyleState.changeRenderTimeline]($frontend) to change a display style's script on the frontend.
816
+ */
817
+ class ScriptReference {
818
+ /** @internal Use one of the public constructor overloads which forward to this one. */
819
+ constructor(sourceIdOrScript, scriptIfSourceId) {
820
+ if (typeof sourceIdOrScript === "string") {
821
+ assert(scriptIfSourceId instanceof Script);
822
+ this.sourceId = sourceIdOrScript;
823
+ this.script = scriptIfSourceId;
824
+ }
825
+ else {
826
+ assert(undefined === scriptIfSourceId);
827
+ this.script = sourceIdOrScript;
828
+ this.sourceId = Id64.invalid;
829
+ }
830
+ }
831
+ }
832
+ RenderSchedule.ScriptReference = ScriptReference;
833
+ /** Used as part of a [[RenderSchedule.ScriptBuilder]] to define a [[RenderSchedule.Timeline]]. Functions that append
834
+ * to the timeline expect entries to be appended in chronological order - i.e., you cannot append an entry that is earlier
835
+ * than a previously appended entry.
836
+ * @see [[RenderSchedule.ElementTimelineBuilder]] and [[RenderSchedule.ModelTimelineBuilder]].
837
+ */
838
+ class TimelineBuilder {
839
+ /** Append a new [[RenderSchedule.VisibilityEntry]] to the timeline. `time` must be more recent than any previously-appended visibility entries. */
840
+ addVisibility(time, visibility, interpolation = Interpolation.Linear) {
841
+ if (!this.visibility)
842
+ this.visibility = [];
843
+ this.visibility.push({ time, value: visibility, interpolation });
844
+ }
845
+ /** Append a new [[RenderSchedule.ColorEntry]] to the timeline. `time` must be more recent than any previously-appended color entries. */
846
+ addColor(time, color, interpolation = Interpolation.Linear) {
847
+ if (!this.color)
848
+ this.color = [];
849
+ const value = color instanceof RgbColor ? { red: color.r, green: color.g, blue: color.b } : color;
850
+ this.color.push({ time, value, interpolation });
851
+ }
852
+ /** Append a new [[RenderSchedule.CuttingPlaneEntry]] to the timeline. `time` must be more recent than any previously-appended cutting plane entries. */
853
+ addCuttingPlane(time, plane, interpolation = Interpolation.Linear) {
854
+ if (!this.cuttingPlane)
855
+ this.cuttingPlane = [];
856
+ let value;
857
+ if (plane) {
858
+ value = {
859
+ position: [plane.position.x, plane.position.y, plane.position.z],
860
+ direction: [plane.direction.x, plane.direction.y, plane.direction.z],
861
+ };
862
+ if (plane.visible)
863
+ value.visible = true;
864
+ if (plane.hidden)
865
+ value.hidden = true;
866
+ }
867
+ this.cuttingPlane.push({ time, value, interpolation });
868
+ }
869
+ /** Append a new [[RenderSchedule.TransformEntry]] to the timeline. `time` must be more recent than any previously-appended transform entries. */
870
+ addTransform(time, transform, components, interpolation = Interpolation.Linear) {
871
+ if (!this.transform)
872
+ this.transform = [];
873
+ const value = { transform: transform === null || transform === void 0 ? void 0 : transform.toRows() };
874
+ if (components) {
875
+ value.pivot = [components.pivot.x, components.pivot.y, components.pivot.z];
876
+ value.orientation = components.orientation.toJSON();
877
+ value.position = [components.position.x, components.position.y, components.position.z];
878
+ }
879
+ this.transform.push({ time, value, interpolation });
880
+ }
881
+ /** Obtain the JSON representation of the [[RenderSchedule.Timeline]] produced by this builder.
882
+ * @see [[RenderSchedule.ScriptBuilder.finish]] to obtain the JSON for the entire [[RenderSchedule.Script]].
883
+ */
884
+ finish() {
885
+ var _a, _b, _c, _d;
886
+ const props = {};
887
+ if ((_a = this.visibility) === null || _a === void 0 ? void 0 : _a.length)
888
+ props.visibilityTimeline = this.visibility;
889
+ if ((_b = this.color) === null || _b === void 0 ? void 0 : _b.length)
890
+ props.colorTimeline = this.color;
891
+ if ((_c = this.transform) === null || _c === void 0 ? void 0 : _c.length)
892
+ props.transformTimeline = this.transform;
893
+ if ((_d = this.cuttingPlane) === null || _d === void 0 ? void 0 : _d.length)
894
+ props.cuttingPlaneTimeline = this.cuttingPlane;
895
+ return props;
896
+ }
897
+ }
898
+ RenderSchedule.TimelineBuilder = TimelineBuilder;
899
+ /** As part of a [[RenderSchedule.ScriptBuilder]], assembles a [[RenderSchedule.ElementTimeline]].
900
+ * @see [[RenderSchedule.ModelTimelineBuilder.addElementTimeline]].
901
+ */
902
+ class ElementTimelineBuilder extends TimelineBuilder {
903
+ /** Constructor - typically not used directly.
904
+ * @see [[RenderSchedule.ModelTimelineBuilder.addElementTimeline]] to create an ElementTimelineBuilder.
905
+ */
906
+ constructor(batchId, elementIds) {
907
+ super();
908
+ this.batchId = batchId;
909
+ this.elementIds = elementIds;
910
+ }
911
+ /** Obtain the JSON representation of the [[RenderSchedule.ElementTimeline]] produced by this builder.
912
+ * @see [[RenderSchedule.ScriptBuilder.finish]] to obtain the JSON for the entire [[RenderSchedule.Script]].
913
+ */
914
+ finish() {
915
+ const props = super.finish();
916
+ props.batchId = this.batchId;
917
+ props.elementIds = this.elementIds;
918
+ return props;
919
+ }
920
+ }
921
+ RenderSchedule.ElementTimelineBuilder = ElementTimelineBuilder;
922
+ /** As part of a [[RenderSchedule.ScriptBuilder, assembles a [[RenderSchedule.ModelTimeline]].
923
+ * @see [[RenderSchedule.ScriptBuilder.addModelTimeline]].
924
+ */
925
+ class ModelTimelineBuilder extends TimelineBuilder {
926
+ /** Constructor - typically not used directly.
927
+ * @see [[RenderSchedule.ScriptBuilder.addModelTimeline]] to create a ModelTimelineBuilder.
928
+ */
929
+ constructor(modelId, obtainNextBatchId) {
930
+ super();
931
+ this._elements = [];
932
+ this.modelId = modelId;
933
+ this._obtainNextBatchId = obtainNextBatchId;
934
+ }
935
+ /** Add a new [[RenderSchedule.ElementTimeline]] to be applied to the specified elements.
936
+ * This function will sort and compress the Ids if they are not already compressed.
937
+ *
938
+ */
939
+ addElementTimeline(elementIds) {
940
+ const batchId = this._obtainNextBatchId();
941
+ let ids;
942
+ // It's far too easy to accidentally pass a single Id (compiler can't help).
943
+ if (typeof elementIds === "string" && Id64.isValidId64(elementIds))
944
+ elementIds = [elementIds];
945
+ if (typeof elementIds === "string") {
946
+ // Already compressed.
947
+ ids = elementIds;
948
+ }
949
+ else {
950
+ const sorted = Array.from(elementIds);
951
+ OrderedId64Iterable.sortArray(sorted);
952
+ ids = CompressedId64Set.compressIds(sorted);
953
+ }
954
+ const builder = new ElementTimelineBuilder(batchId, ids);
955
+ this._elements.push(builder);
956
+ return builder;
957
+ }
958
+ /** Obtain the JSON representation of the [[RenderSchedule.ModelTimeline]] produced by this builder.
959
+ * @see [[RenderSchedule.ScriptBuilder.finish]] to obtain the JSON for the entire [[RenderSchedule.Script]].
960
+ */
961
+ finish() {
962
+ const props = super.finish();
963
+ props.modelId = this.modelId;
964
+ if (undefined !== this.realityModelUrl)
965
+ props.realityModelUrl = this.realityModelUrl;
966
+ props.elementTimelines = this._elements.map((x) => x.finish());
967
+ return props;
968
+ }
969
+ }
970
+ RenderSchedule.ModelTimelineBuilder = ModelTimelineBuilder;
971
+ /** Assembles the JSON representation for a new [[RenderSchedule.Script]]. Ensure that entries on any given element timeline are added chronologically. As an extremely simple example, the following code produces a script that changes the color of a single element:
972
+ * ```ts
973
+ * const script = new ScriptBuilder();
974
+ * const model = script.addModelTimeline("0x123");
975
+ * const element = model.addElementTimeline([ "0x456" ]);
976
+ * element.addColor(Date.now(), new RgbColor(0xff, 0x7f, 0));
977
+ * const scriptProps = script.finish();
978
+ * ```
979
+ */
980
+ class ScriptBuilder {
981
+ constructor() {
982
+ this._nextBatchId = 1;
983
+ this._models = [];
984
+ }
985
+ /** Add a new [[RenderSchedule.ModelTimeline]] to be applied to the specified model. */
986
+ addModelTimeline(modelId) {
987
+ const builder = new ModelTimelineBuilder(modelId, () => this._nextBatchId++);
988
+ this._models.push(builder);
989
+ return builder;
990
+ }
991
+ /** Obtain the JSON representation of the [[RenderSchedule.Script]] produced by this builder.
992
+ * @see [RenderTimeline.scriptProps]($backend) to assign the new script to a RenderTimeline element.
993
+ */
994
+ finish() {
995
+ return this._models.map((x) => x.finish());
996
+ }
997
+ }
998
+ RenderSchedule.ScriptBuilder = ScriptBuilder;
999
+ })(RenderSchedule || (RenderSchedule = {}));
1000
1000
  //# sourceMappingURL=RenderSchedule.js.map