@cesium/engine 26.0.0 → 26.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (471) hide show
  1. package/Build/ThirdParty/Workers/zip-web-worker.js +586 -480
  2. package/Build/Workers/{chunk-7J2HKPRH.js → chunk-27FWRTJI.js} +9 -9
  3. package/Build/Workers/{chunk-EF2QYXGA.js → chunk-2EFYUSUY.js} +14 -14
  4. package/Build/Workers/chunk-2H5264K7.js +1284 -0
  5. package/Build/Workers/{chunk-DOBXCNC3.js → chunk-2H73KDBM.js} +13 -13
  6. package/Build/Workers/chunk-2RGJPWQX.js +1284 -0
  7. package/Build/Workers/chunk-2Z4ZLVOD.js +352 -0
  8. package/Build/Workers/{chunk-F6QDY6HU.js → chunk-2ZKH2QZB.js} +13 -13
  9. package/Build/Workers/chunk-36NI5E6W.js +3820 -0
  10. package/Build/Workers/{chunk-ZK3CF7ZD.js → chunk-37SW7SYS.js} +12 -12
  11. package/Build/Workers/chunk-3GHVJ3SO.js +455 -0
  12. package/Build/Workers/chunk-3LB4UVPU.js +387 -0
  13. package/Build/Workers/chunk-3PONLKEL.js +778 -0
  14. package/Build/Workers/{chunk-Y57HREW5.js → chunk-3PSS3T43.js} +4 -4
  15. package/Build/Workers/chunk-3QR662HH.js +3820 -0
  16. package/Build/Workers/{chunk-QN67VG36.js → chunk-3SX2WYSO.js} +6 -6
  17. package/Build/Workers/{chunk-G7PXZRVF.js → chunk-3UDN6LYX.js} +7 -7
  18. package/Build/Workers/chunk-47MCBSXI.js +9237 -0
  19. package/Build/Workers/{chunk-KKOSKAZB.js → chunk-4E626OCE.js} +17 -17
  20. package/Build/Workers/chunk-4NW2MJKH.js +455 -0
  21. package/Build/Workers/{chunk-DBOEKL43.js → chunk-52YK5BSN.js} +7 -7
  22. package/Build/Workers/{chunk-KFSTQKNM.js → chunk-5LSOO2KD.js} +7 -7
  23. package/Build/Workers/chunk-5RNAQZK6.js +9234 -0
  24. package/Build/Workers/chunk-5YPQBFRD.js +519 -0
  25. package/Build/Workers/{chunk-S4MCOY6I.js → chunk-6FHT43QR.js} +5 -5
  26. package/Build/Workers/chunk-6FZDPMTO.js +455 -0
  27. package/Build/Workers/{chunk-VQYETPWC.js → chunk-6HK6IXK2.js} +4 -4
  28. package/Build/Workers/chunk-6R5X2GUA.js +1284 -0
  29. package/Build/Workers/{chunk-AYKR4VBR.js → chunk-6YR6JBMY.js} +2 -2
  30. package/Build/Workers/chunk-76FDC45O.js +511 -0
  31. package/Build/Workers/chunk-7A2OGDHT.js +305 -0
  32. package/Build/Workers/chunk-7CGEQUM2.js +305 -0
  33. package/Build/Workers/{chunk-54I6Y66F.js → chunk-7D2HZKH7.js} +6 -6
  34. package/Build/Workers/{chunk-3VFEWOBI.js → chunk-7I325HV6.js} +7 -7
  35. package/Build/Workers/{chunk-4MGMYHOO.js → chunk-7KVKHY7O.js} +6 -6
  36. package/Build/Workers/chunk-7MM3N2VE.js +1067 -0
  37. package/Build/Workers/chunk-7TKLTCZW.js +219 -0
  38. package/Build/Workers/chunk-7UUKBDH6.js +1054 -0
  39. package/Build/Workers/chunk-7W6DUHAB.js +693 -0
  40. package/Build/Workers/{chunk-DDWSZVMY.js → chunk-7XM5JK5F.js} +5 -5
  41. package/Build/Workers/chunk-7YG3ND3P.js +454 -0
  42. package/Build/Workers/{chunk-IRBKFCEJ.js → chunk-A3O6EDBK.js} +2 -2
  43. package/Build/Workers/chunk-A62YI6S6.js +305 -0
  44. package/Build/Workers/{chunk-V7VQKN6N.js → chunk-A6X24AZI.js} +5 -5
  45. package/Build/Workers/chunk-A7TTWVTF.js +2719 -0
  46. package/Build/Workers/chunk-ACTVJHSP.js +519 -0
  47. package/Build/Workers/chunk-ADX3CBKD.js +9234 -0
  48. package/Build/Workers/{chunk-52JDLOEM.js → chunk-AF7DTMJ7.js} +14 -14
  49. package/Build/Workers/{chunk-ZP7JMQV4.js → chunk-AHWAZRBV.js} +6 -2
  50. package/Build/Workers/chunk-AJSFRY4U.js +1344 -0
  51. package/Build/Workers/{chunk-EBSIOBXY.js → chunk-ARZICEEP.js} +8 -8
  52. package/Build/Workers/chunk-B3QHNA4A.js +147 -0
  53. package/Build/Workers/{chunk-YLY7NKAB.js → chunk-B4CQSLZJ.js} +4 -4
  54. package/Build/Workers/chunk-BKPQFCXH.js +511 -0
  55. package/Build/Workers/{chunk-O3EA5HS7.js → chunk-BSPCI2LO.js} +10 -10
  56. package/Build/Workers/chunk-BUJWSX5S.js +301 -0
  57. package/Build/Workers/{chunk-J6BWOHUF.js → chunk-C7JQVRLM.js} +3 -3
  58. package/Build/Workers/chunk-C7QDUNI3.js +138 -0
  59. package/Build/Workers/{chunk-KSSWJIZW.js → chunk-CDJDJ5LK.js} +2 -2
  60. package/Build/Workers/chunk-CEEZE3YZ.js +476 -0
  61. package/Build/Workers/chunk-CIV5DJOQ.js +778 -0
  62. package/Build/Workers/{chunk-INUEEEQA.js → chunk-CLCTQVVL.js} +8 -8
  63. package/Build/Workers/{chunk-C6J67V5A.js → chunk-CQNFIAZU.js} +1 -1
  64. package/Build/Workers/chunk-CRCGE4J4.js +9237 -0
  65. package/Build/Workers/{chunk-SMQZZOW6.js → chunk-CUTRKXUQ.js} +10 -10
  66. package/Build/Workers/{chunk-Q3PY526V.js → chunk-D6AY775A.js} +6 -6
  67. package/Build/Workers/chunk-DBD5WWG2.js +959 -0
  68. package/Build/Workers/{chunk-E7VQ76KE.js → chunk-DIGUUD6G.js} +6 -6
  69. package/Build/Workers/{chunk-P3CK7MCY.js → chunk-DSGLDRTI.js} +4 -4
  70. package/Build/Workers/chunk-DZBQUULR.js +138 -0
  71. package/Build/Workers/chunk-DZUFEE4L.js +140 -0
  72. package/Build/Workers/chunk-E2NKV5YT.js +3820 -0
  73. package/Build/Workers/{chunk-424RNO3D.js → chunk-E7NZJOK7.js} +196 -22
  74. package/Build/Workers/{chunk-UOOIQ3KX.js → chunk-EB3Y5P3A.js} +12 -12
  75. package/Build/Workers/{chunk-ACXQXN46.js → chunk-EHTS2YPT.js} +16 -16
  76. package/Build/Workers/{chunk-EPYXRCDB.js → chunk-ELE6SC2C.js} +12 -12
  77. package/Build/Workers/{chunk-VWV2IJRB.js → chunk-ENNFMWDW.js} +11 -11
  78. package/Build/Workers/chunk-EOWDZN5S.js +288 -0
  79. package/Build/Workers/chunk-ERKUET22.js +3201 -0
  80. package/Build/Workers/chunk-EZGQPOIG.js +162 -0
  81. package/Build/Workers/chunk-F2IMBMZY.js +241 -0
  82. package/Build/Workers/chunk-F4CSNRZO.js +219 -0
  83. package/Build/Workers/chunk-FBP4DUQJ.js +693 -0
  84. package/Build/Workers/{chunk-FRQZECAO.js → chunk-FCP2QY4G.js} +5 -5
  85. package/Build/Workers/{chunk-ZZ46LWL6.js → chunk-FDK4K5IA.js} +1 -1
  86. package/Build/Workers/{chunk-C6KNZ7T4.js → chunk-FGQFQHN5.js} +17 -17
  87. package/Build/Workers/chunk-FJWZMGOQ.js +1992 -0
  88. package/Build/Workers/{chunk-Y5BF6AFU.js → chunk-FQ42MT7M.js} +2 -2
  89. package/Build/Workers/chunk-FU4BGABC.js +398 -0
  90. package/Build/Workers/chunk-FX3VEAIU.js +2719 -0
  91. package/Build/Workers/chunk-GGNWQWSB.js +301 -0
  92. package/Build/Workers/chunk-GHXVQVUM.js +1344 -0
  93. package/Build/Workers/{chunk-CZEYZU4N.js → chunk-GNKXEN4C.js} +10 -10
  94. package/Build/Workers/{chunk-MYP774IS.js → chunk-GSWMAFTE.js} +8 -8
  95. package/Build/Workers/chunk-GVA7XQI2.js +368 -0
  96. package/Build/Workers/chunk-GXDHRC4J.js +1344 -0
  97. package/Build/Workers/chunk-GXWQZBAI.js +58 -0
  98. package/Build/Workers/chunk-GYSYP6PC.js +1067 -0
  99. package/Build/Workers/chunk-H2WCFXLP.js +241 -0
  100. package/Build/Workers/chunk-HDL4HOXZ.js +778 -0
  101. package/Build/Workers/chunk-HHV3MCGV.js +162 -0
  102. package/Build/Workers/chunk-HLW2ZRVK.js +368 -0
  103. package/Build/Workers/chunk-HS6AD4P2.js +398 -0
  104. package/Build/Workers/chunk-HT6FASOT.js +973 -0
  105. package/Build/Workers/chunk-I74ZH5LK.js +959 -0
  106. package/Build/Workers/{chunk-7WM2PX4V.js → chunk-IDVHUDZT.js} +5 -5
  107. package/Build/Workers/chunk-IGAZBTFZ.js +3201 -0
  108. package/Build/Workers/chunk-IJZJMIUY.js +789 -0
  109. package/Build/Workers/chunk-ILME5BXA.js +301 -0
  110. package/Build/Workers/chunk-IMBVP57H.js +44 -0
  111. package/Build/Workers/chunk-IOO7Z2AV.js +57 -0
  112. package/Build/Workers/chunk-IUIFLOYO.js +44 -0
  113. package/Build/Workers/chunk-J73T2VOY.js +171 -0
  114. package/Build/Workers/chunk-JALGQYDY.js +288 -0
  115. package/Build/Workers/chunk-JKXV6PG5.js +56 -0
  116. package/Build/Workers/chunk-JW6OZT4R.js +288 -0
  117. package/Build/Workers/{chunk-CXOYE2WM.js → chunk-JXYLJCTC.js} +5 -5
  118. package/Build/Workers/{chunk-CFQP6LYM.js → chunk-K27QOAW6.js} +4 -4
  119. package/Build/Workers/chunk-KGXSYGBG.js +387 -0
  120. package/Build/Workers/chunk-KMV25A63.js +789 -0
  121. package/Build/Workers/chunk-KP5QD7WU.js +693 -0
  122. package/Build/Workers/chunk-KZWFWJML.js +2719 -0
  123. package/Build/Workers/chunk-LCXRRALY.js +387 -0
  124. package/Build/Workers/chunk-LD64RPYV.js +368 -0
  125. package/Build/Workers/{chunk-U3ZA64U7.js → chunk-LDRQSYBN.js} +2 -2
  126. package/Build/Workers/chunk-LGNDTZVX.js +97 -0
  127. package/Build/Workers/chunk-LNSQVXFH.js +1800 -0
  128. package/Build/Workers/chunk-M4JZ6TSZ.js +959 -0
  129. package/Build/Workers/chunk-M6QKXVAU.js +1054 -0
  130. package/Build/Workers/chunk-MAAHFYPC.js +198 -0
  131. package/Build/Workers/chunk-MCJDRDJQ.js +102 -0
  132. package/Build/Workers/chunk-MEENMEAH.js +198 -0
  133. package/Build/Workers/{chunk-TKKIREQ6.js → chunk-N7CCOFLX.js} +1 -1
  134. package/Build/Workers/chunk-NAWU5RF4.js +162 -0
  135. package/Build/Workers/{chunk-M3B5JKSM.js → chunk-NCL22ZUX.js} +1 -1
  136. package/Build/Workers/chunk-NEFDMMLY.js +241 -0
  137. package/Build/Workers/{chunk-UA25D5MX.js → chunk-NIWITKQK.js} +10 -10
  138. package/Build/Workers/chunk-NJVBJG63.js +124 -0
  139. package/Build/Workers/chunk-NLLCQBX3.js +73 -0
  140. package/Build/Workers/chunk-NSKZ6SBK.js +1483 -0
  141. package/Build/Workers/chunk-NXGQBQWE.js +837 -0
  142. package/Build/Workers/chunk-O3DKEX7Q.js +352 -0
  143. package/Build/Workers/chunk-O3XFXGPZ.js +476 -0
  144. package/Build/Workers/chunk-OA6MYL2C.js +837 -0
  145. package/Build/Workers/chunk-OBEU25PI.js +1067 -0
  146. package/Build/Workers/chunk-OHP4ELS7.js +198 -0
  147. package/Build/Workers/chunk-OZGPS7FB.js +138 -0
  148. package/Build/Workers/chunk-PCL3Y7H5.js +82 -0
  149. package/Build/Workers/chunk-PD4GK4EM.js +57 -0
  150. package/Build/Workers/chunk-PEDU33QG.js +2342 -0
  151. package/Build/Workers/chunk-PRWUMCXF.js +682 -0
  152. package/Build/Workers/chunk-PVTSNNVI.js +288 -0
  153. package/Build/Workers/chunk-QFSSCLLZ.js +973 -0
  154. package/Build/Workers/chunk-QHPZH22L.js +241 -0
  155. package/Build/Workers/chunk-QIZDWZK6.js +301 -0
  156. package/Build/Workers/chunk-QV6DG2YX.js +1483 -0
  157. package/Build/Workers/chunk-QVLAFFJY.js +56 -0
  158. package/Build/Workers/{chunk-6YEE6JDR.js → chunk-R4FPNAZ2.js} +6 -6
  159. package/Build/Workers/chunk-R4K7EHOU.js +171 -0
  160. package/Build/Workers/chunk-R7JGHDD6.js +789 -0
  161. package/Build/Workers/chunk-RASQEYD4.js +1483 -0
  162. package/Build/Workers/chunk-RG4F5R57.js +454 -0
  163. package/Build/Workers/chunk-RW6ITX7Q.js +3820 -0
  164. package/Build/Workers/chunk-RYSQVJR6.js +398 -0
  165. package/Build/Workers/chunk-S6RJU5NM.js +1054 -0
  166. package/Build/Workers/chunk-SA2A2AN5.js +2342 -0
  167. package/Build/Workers/chunk-SDFHDNS4.js +147 -0
  168. package/Build/Workers/chunk-SF6K72D7.js +124 -0
  169. package/Build/Workers/chunk-SGRGNDOD.js +682 -0
  170. package/Build/Workers/{chunk-QRWGUWI6.js → chunk-SJYSIOEM.js} +11 -11
  171. package/Build/Workers/chunk-SM2CDCYF.js +198 -0
  172. package/Build/Workers/chunk-SMTGMFBL.js +97 -0
  173. package/Build/Workers/chunk-SS5ABQGY.js +102 -0
  174. package/Build/Workers/{chunk-IYOUHCZB.js → chunk-SXSP3JHS.js} +1 -1
  175. package/Build/Workers/chunk-T5QBPLE3.js +414 -0
  176. package/Build/Workers/chunk-TN35HP5B.js +1067 -0
  177. package/Build/Workers/chunk-TNWKJNUZ.js +454 -0
  178. package/Build/Workers/chunk-TOAF47AQ.js +102 -0
  179. package/Build/Workers/chunk-TQ4QCOXT.js +2719 -0
  180. package/Build/Workers/chunk-TSDSILQB.js +124 -0
  181. package/Build/Workers/chunk-TVZD72WJ.js +778 -0
  182. package/Build/Workers/chunk-U5LV3F3Z.js +1054 -0
  183. package/Build/Workers/chunk-UAZUP4I5.js +1992 -0
  184. package/Build/Workers/chunk-UEY73NRN.js +38 -0
  185. package/Build/Workers/chunk-UF46SZEZ.js +789 -0
  186. package/Build/Workers/chunk-UNRTMCET.js +398 -0
  187. package/Build/Workers/chunk-UTB7U3O6.js +1992 -0
  188. package/Build/Workers/chunk-UVO6COT2.js +352 -0
  189. package/Build/Workers/chunk-V46YGZE6.js +352 -0
  190. package/Build/Workers/chunk-VAL7DYNR.js +278 -0
  191. package/Build/Workers/chunk-VDGOCROW.js +57 -0
  192. package/Build/Workers/chunk-VFWSSBPT.js +511 -0
  193. package/Build/Workers/chunk-VVYMXI3I.js +1284 -0
  194. package/Build/Workers/chunk-VXWHPYQM.js +837 -0
  195. package/Build/Workers/chunk-VXYUBRSB.js +219 -0
  196. package/Build/Workers/chunk-VZLDLEWI.js +387 -0
  197. package/Build/Workers/{chunk-4S7IE3LB.js → chunk-W5OCKMPJ.js} +2 -2
  198. package/Build/Workers/chunk-WBSY7HDY.js +837 -0
  199. package/Build/Workers/chunk-WN3F4CVG.js +3201 -0
  200. package/Build/Workers/chunk-WPRUWXGV.js +693 -0
  201. package/Build/Workers/chunk-WTO2ERBP.js +414 -0
  202. package/Build/Workers/chunk-WVHMDVG4.js +959 -0
  203. package/Build/Workers/chunk-XCBZVTIV.js +280 -0
  204. package/Build/Workers/chunk-XDWCTQCZ.js +101 -0
  205. package/Build/Workers/chunk-XGA23TAX.js +73 -0
  206. package/Build/Workers/chunk-XLQZNQ4Z.js +163 -0
  207. package/Build/Workers/chunk-XLXSDIP5.js +973 -0
  208. package/Build/Workers/chunk-XQ3SKCMM.js +140 -0
  209. package/Build/Workers/chunk-XQH66YJC.js +147 -0
  210. package/Build/Workers/chunk-XTA7BXJG.js +682 -0
  211. package/Build/Workers/chunk-XTIDAFRS.js +476 -0
  212. package/Build/Workers/chunk-XUEDWBUD.js +682 -0
  213. package/Build/Workers/chunk-XYFLRH3H.js +124 -0
  214. package/Build/Workers/chunk-Y7JRTRTO.js +305 -0
  215. package/Build/Workers/chunk-Y7QSMDCJ.js +352 -0
  216. package/Build/Workers/chunk-YCB5TYTR.js +1483 -0
  217. package/Build/Workers/chunk-YEYOSTJX.js +219 -0
  218. package/Build/Workers/chunk-YGFVAGYF.js +630 -0
  219. package/Build/Workers/chunk-YIIACKQO.js +368 -0
  220. package/Build/Workers/chunk-YJGSP6PE.js +511 -0
  221. package/Build/Workers/{chunk-XZMBNNDX.js → chunk-YKU2Q3A2.js} +9 -9
  222. package/Build/Workers/chunk-Z4LR5EHE.js +454 -0
  223. package/Build/Workers/chunk-Z66EVE2A.js +44 -0
  224. package/Build/Workers/chunk-ZHIHHHTB.js +414 -0
  225. package/Build/Workers/chunk-ZMBHFYOX.js +1344 -0
  226. package/Build/Workers/chunk-ZNWHFSLE.js +171 -0
  227. package/Build/Workers/chunk-ZQLZG4IN.js +2342 -0
  228. package/Build/Workers/chunk-ZRTSMUZ2.js +414 -0
  229. package/Build/Workers/{chunk-MPZHGZU6.js → chunk-ZSGUV73H.js} +4 -4
  230. package/Build/Workers/chunk-ZZUVT5BM.js +476 -0
  231. package/Build/Workers/combineGeometry.js +24 -24
  232. package/Build/Workers/createBoxGeometry.js +18 -18
  233. package/Build/Workers/createBoxOutlineGeometry.js +16 -16
  234. package/Build/Workers/createCircleGeometry.js +26 -26
  235. package/Build/Workers/createCircleOutlineGeometry.js +19 -19
  236. package/Build/Workers/createCoplanarPolygonGeometry.js +35 -35
  237. package/Build/Workers/createCoplanarPolygonOutlineGeometry.js +31 -31
  238. package/Build/Workers/createCorridorGeometry.js +31 -33
  239. package/Build/Workers/createCorridorOutlineGeometry.js +29 -31
  240. package/Build/Workers/createCylinderGeometry.js +20 -20
  241. package/Build/Workers/createCylinderOutlineGeometry.js +18 -18
  242. package/Build/Workers/createEllipseGeometry.js +26 -26
  243. package/Build/Workers/createEllipseOutlineGeometry.js +19 -19
  244. package/Build/Workers/createEllipsoidGeometry.js +19 -19
  245. package/Build/Workers/createEllipsoidOutlineGeometry.js +18 -18
  246. package/Build/Workers/createFrustumGeometry.js +18 -18
  247. package/Build/Workers/createFrustumOutlineGeometry.js +18 -18
  248. package/Build/Workers/createGeometry.js +24 -24
  249. package/Build/Workers/createGroundPolylineGeometry.js +24 -24
  250. package/Build/Workers/createPlaneGeometry.js +16 -16
  251. package/Build/Workers/createPlaneOutlineGeometry.js +15 -15
  252. package/Build/Workers/createPolygonGeometry.js +34 -34
  253. package/Build/Workers/createPolygonOutlineGeometry.js +31 -31
  254. package/Build/Workers/createPolylineGeometry.js +26 -26
  255. package/Build/Workers/createPolylineVolumeGeometry.js +31 -31
  256. package/Build/Workers/createPolylineVolumeOutlineGeometry.js +27 -27
  257. package/Build/Workers/createRectangleGeometry.js +27 -27
  258. package/Build/Workers/createRectangleOutlineGeometry.js +21 -21
  259. package/Build/Workers/createSimplePolylineGeometry.js +24 -24
  260. package/Build/Workers/createSphereGeometry.js +19 -19
  261. package/Build/Workers/createSphereOutlineGeometry.js +18 -18
  262. package/Build/Workers/createTaskProcessorWorker.js +3 -3
  263. package/Build/Workers/createVectorTileClampedPolylines.js +14 -14
  264. package/Build/Workers/createVectorTileGeometries.js +24 -24
  265. package/Build/Workers/createVectorTilePoints.js +13 -13
  266. package/Build/Workers/createVectorTilePolygons.js +22 -22
  267. package/Build/Workers/createVectorTilePolylines.js +14 -14
  268. package/Build/Workers/createVerticesFromCesium3DTilesTerrain.js +25 -25
  269. package/Build/Workers/createVerticesFromGoogleEarthEnterpriseBuffer.js +22 -22
  270. package/Build/Workers/createVerticesFromHeightmap.js +22 -22
  271. package/Build/Workers/createVerticesFromQuantizedTerrainMesh.js +20 -20
  272. package/Build/Workers/createWallGeometry.js +24 -24
  273. package/Build/Workers/createWallOutlineGeometry.js +24 -24
  274. package/Build/Workers/decodeDraco.js +10 -10
  275. package/Build/Workers/decodeGoogleEarthEnterprisePacket.js +987 -2320
  276. package/Build/Workers/decodeI3S.js +10 -10
  277. package/Build/Workers/gaussianSplatSorter.js +4 -4
  278. package/Build/Workers/gaussianSplatTextureGenerator.js +4 -4
  279. package/Build/Workers/incrementallyBuildTerrainPicker.js +10 -10
  280. package/Build/Workers/transcodeKTX2.js +6 -6
  281. package/Build/Workers/transferTypedArrayTest.js +1 -1
  282. package/Build/Workers/upsampleQuantizedTerrainMesh.js +22 -22
  283. package/Build/Workers/upsampleVerticesFromCesium3DTilesTerrain.js +25 -25
  284. package/Source/Core/ArcGISTiledElevationTerrainProvider.js +1 -5
  285. package/Source/Core/BoundingRectangle.js +6 -8
  286. package/Source/Core/BoundingSphere.js +0 -3
  287. package/Source/Core/Cesium3DTilesTerrainGeometryProcessor.js +3 -4
  288. package/Source/Core/Color.js +1 -0
  289. package/Source/Core/CoplanarPolygonGeometry.js +2 -2
  290. package/Source/Core/CorridorGeometry.js +2 -4
  291. package/Source/Core/CorridorOutlineGeometry.js +1 -3
  292. package/Source/Core/EarthOrientationParameters.js +2 -2
  293. package/Source/Core/EllipseGeometryLibrary.js +2 -2
  294. package/Source/Core/EllipsoidGeodesic.js +3 -3
  295. package/Source/Core/EllipsoidRhumbLine.js +1 -1
  296. package/Source/Core/GroundPolylineGeometry.js +2 -2
  297. package/Source/Core/Heap.js +1 -1
  298. package/Source/Core/HermitePolynomialApproximation.js +215 -179
  299. package/Source/Core/InterpolationAlgorithm.js +58 -50
  300. package/Source/Core/Ion.js +1 -1
  301. package/Source/Core/JulianDate.js +1 -1
  302. package/Source/Core/LagrangePolynomialApproximation.js +55 -52
  303. package/Source/Core/LinearApproximation.js +69 -66
  304. package/Source/Core/Math.js +59 -0
  305. package/Source/Core/Matrix2.js +2 -2
  306. package/Source/Core/Matrix3.js +2 -2
  307. package/Source/Core/OrthographicFrustum.js +1 -1
  308. package/Source/Core/PerspectiveFrustum.js +1 -1
  309. package/Source/Core/PolygonGeometry.js +2 -2
  310. package/Source/Core/PolygonGeometryLibrary.js +1 -1
  311. package/Source/Core/PolygonOutlineGeometry.js +1 -1
  312. package/Source/Core/PolylineGeometry.js +1 -1
  313. package/Source/Core/PolylineVolumeGeometryLibrary.js +1 -1
  314. package/Source/Core/Rectangle.js +7 -1
  315. package/Source/Core/RectangleOutlineGeometry.js +1 -1
  316. package/Source/Core/SimplePolylineGeometry.js +1 -1
  317. package/Source/Core/TerrainEncoding.js +2 -2
  318. package/Source/Core/TerrainMesh.js +3 -3
  319. package/Source/Core/TerrainPicker.js +180 -168
  320. package/Source/Core/TimeIntervalCollection.js +1 -3
  321. package/Source/Core/Tipsify.js +1 -1
  322. package/Source/Core/Transforms.js +5 -1
  323. package/Source/Core/VectorPipeline.js +1117 -0
  324. package/Source/Core/VectorProvider.js +429 -0
  325. package/Source/Core/WallOutlineGeometry.js +1 -1
  326. package/Source/Core/getTimestamp.js +4 -2
  327. package/Source/Core/writeTextToCanvas.js +1 -0
  328. package/Source/DataSources/CompositeEntityCollection.js +0 -1
  329. package/Source/DataSources/CzmlDataSource.js +14 -0
  330. package/Source/DataSources/DataSourceDisplay.js +1 -1
  331. package/Source/DataSources/GeoJsonDataSource.js +0 -1
  332. package/Source/DataSources/GeometryVisualizer.js +1 -1
  333. package/Source/DataSources/KmlDataSource.js +529 -557
  334. package/Source/DataSources/PathGraphics.js +8 -1
  335. package/Source/DataSources/PathMode.js +27 -0
  336. package/Source/DataSources/PathVisualizer.js +298 -1
  337. package/Source/DataSources/PolylineVisualizer.js +1 -1
  338. package/Source/DataSources/StaticOutlineGeometryBatch.js +1 -1
  339. package/Source/Renderer/AutomaticUniforms.js +23 -0
  340. package/Source/Renderer/Context.js +9 -3
  341. package/Source/Renderer/DrawCommand.js +22 -0
  342. package/Source/Renderer/Framebuffer.js +4 -0
  343. package/Source/Renderer/Pass.js +11 -10
  344. package/Source/Renderer/Texture.js +12 -1
  345. package/Source/Renderer/UniformState.js +7 -0
  346. package/Source/Renderer/VertexArray.js +1 -1
  347. package/Source/Scene/ArcGisMapServerImageryProvider.js +0 -5
  348. package/Source/Scene/ArcGisMapService.js +1 -1
  349. package/Source/Scene/Billboard.js +2 -1
  350. package/Source/Scene/BillboardCollection.js +7 -3
  351. package/Source/Scene/BillboardTexture.js +5 -3
  352. package/Source/Scene/BufferPrimitiveCollection.js +27 -5
  353. package/Source/Scene/Camera.js +71 -5
  354. package/Source/Scene/Cesium3DTileOptimizations.js +4 -6
  355. package/Source/Scene/Cesium3DTileset.js +1 -1
  356. package/Source/Scene/ClippingPlaneCollection.js +4 -4
  357. package/Source/Scene/ClippingPolygon.js +2 -0
  358. package/Source/Scene/ClippingPolygonCollection.js +2 -2
  359. package/Source/Scene/Controllers/Controller.js +63 -0
  360. package/Source/Scene/Controllers/ControllerHost.js +78 -0
  361. package/Source/Scene/Controllers/HybridScreenSpacePanCameraController.js +106 -0
  362. package/Source/Scene/Controllers/MouseButton.js +32 -0
  363. package/Source/Scene/Controllers/ScreenSpaceElevatorCameraController.js +295 -0
  364. package/Source/Scene/Controllers/ScreenSpaceInputBindings.js +154 -0
  365. package/Source/Scene/Controllers/ScreenSpaceMapCameraController.js +310 -0
  366. package/Source/Scene/Controllers/ScreenSpaceTiltOrbitCameraController.js +642 -0
  367. package/Source/Scene/Controllers/ScreenSpaceZoomCameraController.js +431 -0
  368. package/Source/Scene/Controllers/defaultPickWorldPosition.js +84 -0
  369. package/Source/Scene/DerivedCommand.js +98 -0
  370. package/Source/Scene/EdgeFramebuffer.js +1 -5
  371. package/Source/Scene/Expression.js +6 -8
  372. package/Source/Scene/FrameState.js +17 -0
  373. package/Source/Scene/Globe.js +20 -0
  374. package/Source/Scene/GlobeDepth.js +27 -1
  375. package/Source/Scene/GlobeSurfaceShaderSet.js +511 -409
  376. package/Source/Scene/GlobeSurfaceTile.js +575 -398
  377. package/Source/Scene/GlobeSurfaceTileProvider.js +1382 -1151
  378. package/Source/Scene/GltfBufferViewLoader.js +3 -3
  379. package/Source/Scene/GltfLoader.js +33 -3
  380. package/Source/Scene/GltfLoaderUtil.js +20 -4
  381. package/Source/Scene/GltfPipeline/forEachTextureInMaterial.js +10 -0
  382. package/Source/Scene/GltfPipeline/removeUnusedElements.js +21 -11
  383. package/Source/Scene/GltfSpzLoader.js +1 -1
  384. package/Source/Scene/GltfVertexBufferLoader.js +6 -3
  385. package/Source/Scene/I3SDataProvider.js +1 -1
  386. package/Source/Scene/I3SLayer.js +1 -1
  387. package/Source/Scene/I3SNode.js +2 -2
  388. package/Source/Scene/ImageryLayer.js +2 -2
  389. package/Source/Scene/ImageryLayerCollection.js +190 -6
  390. package/Source/Scene/IonImageryProvider.js +1 -5
  391. package/Source/Scene/Label.js +4 -4
  392. package/Source/Scene/LabelCollection.js +1 -1
  393. package/Source/Scene/MVTDataProvider.js +2 -0
  394. package/Source/Scene/Material.js +1 -0
  395. package/Source/Scene/Model/B3dmLoader.js +1 -2
  396. package/Source/Scene/Model/EdgeVisibilityPipelineStage.js +10 -8
  397. package/Source/Scene/Model/Extensions/Gpm/GltfGpmLoader.js +4 -0
  398. package/Source/Scene/Model/I3dmLoader.js +1 -1
  399. package/Source/Scene/Model/InstancingPipelineStage.js +4 -7
  400. package/Source/Scene/Model/MaterialPipelineStage.js +124 -1
  401. package/Source/Scene/Model/Model.js +11 -10
  402. package/Source/Scene/Model/ModelClippingPlanesPipelineStage.js +28 -1
  403. package/Source/Scene/Model/ModelDrawCommand.js +160 -16
  404. package/Source/Scene/Model/ModelDrawCommands.js +4 -0
  405. package/Source/Scene/Model/ModelSceneGraph.js +21 -0
  406. package/Source/Scene/Model/ModelUtility.js +1 -0
  407. package/Source/Scene/Model/PickingPipelineStage.js +29 -0
  408. package/Source/Scene/Model/PrimitiveRenderResources.js +24 -0
  409. package/Source/Scene/ModelComponents.js +71 -0
  410. package/Source/Scene/Picking.js +19 -3
  411. package/Source/Scene/PlanarFillIdFramebuffer.js +172 -0
  412. package/Source/Scene/PntsParser.js +1 -1
  413. package/Source/Scene/PolylineCollection.js +1 -1
  414. package/Source/Scene/PostProcessStage.js +4 -2
  415. package/Source/Scene/QuadtreePrimitive.js +3 -2
  416. package/Source/Scene/ResourceCache.js +7 -4
  417. package/Source/Scene/ResourceCacheKey.js +21 -18
  418. package/Source/Scene/Scene.js +203 -5
  419. package/Source/Scene/ScreenSpaceCameraController.js +1 -2
  420. package/Source/Scene/ShadowMap.js +9 -3
  421. package/Source/Scene/ShadowMapShader.js +50 -2
  422. package/Source/Scene/SnapFramebuffer.js +121 -0
  423. package/Source/Scene/Snapping.js +184 -0
  424. package/Source/Scene/TerrainFillMesh.js +3 -2
  425. package/Source/Scene/UrlTemplate3DTilesDataProvider.js +1 -1
  426. package/Source/Scene/Vector3DTileContent.js +2 -3
  427. package/Source/Scene/VectorGltf3DTileContent.js +23 -3
  428. package/Source/Scene/View.js +10 -8
  429. package/Source/Scene/VoxelTraversal.js +1 -1
  430. package/Source/Scene/createElevationBandMaterial.js +1 -1
  431. package/Source/Scene/findMeshoptExtension.js +23 -0
  432. package/Source/Scene/renderBufferPointCollection.js +14 -10
  433. package/Source/Scene/renderBufferPolygonCollection.js +10 -15
  434. package/Source/Scene/renderBufferPolylineCollection.js +121 -194
  435. package/Source/Shaders/Builtin/Constants/passCesium3DTile.glsl +1 -1
  436. package/Source/Shaders/Builtin/Constants/passCesium3DTile.js +1 -1
  437. package/Source/Shaders/Builtin/Constants/passCesium3DTileClassification.glsl +1 -1
  438. package/Source/Shaders/Builtin/Constants/passCesium3DTileClassification.js +1 -1
  439. package/Source/Shaders/Builtin/Constants/passCesium3DTileClassificationIgnoreShow.glsl +1 -1
  440. package/Source/Shaders/Builtin/Constants/passCesium3DTileClassificationIgnoreShow.js +1 -1
  441. package/Source/Shaders/Builtin/Constants/passCesium3DTilePlanarFillId.glsl +9 -0
  442. package/Source/Shaders/Builtin/Constants/passCesium3DTilePlanarFillId.js +11 -0
  443. package/Source/Shaders/Builtin/Constants/passClassification.glsl +1 -1
  444. package/Source/Shaders/Builtin/Constants/passClassification.js +1 -1
  445. package/Source/Shaders/Builtin/Constants/passGaussianSplats.glsl +1 -1
  446. package/Source/Shaders/Builtin/Constants/passGaussianSplats.js +1 -1
  447. package/Source/Shaders/Builtin/Constants/passOpaque.glsl +1 -1
  448. package/Source/Shaders/Builtin/Constants/passOpaque.js +1 -1
  449. package/Source/Shaders/Builtin/Constants/passTranslucent.glsl +1 -1
  450. package/Source/Shaders/Builtin/Constants/passTranslucent.js +1 -1
  451. package/Source/Shaders/Builtin/Constants/passVoxels.glsl +1 -1
  452. package/Source/Shaders/Builtin/Constants/passVoxels.js +1 -1
  453. package/Source/Shaders/Builtin/CzmBuiltins.js +2 -0
  454. package/Source/Shaders/GlobeFS.glsl +10 -5
  455. package/Source/Shaders/GlobeFS.js +9 -5
  456. package/Source/Shaders/Materials/PolylineGlowMaterial.glsl +1 -1
  457. package/Source/Shaders/Materials/PolylineGlowMaterial.js +1 -1
  458. package/Source/Shaders/Model/MaterialStageFS.glsl +8 -2
  459. package/Source/Shaders/Model/MaterialStageFS.js +8 -2
  460. package/Source/Shaders/Model/ModelFS.glsl +105 -0
  461. package/Source/Shaders/Model/ModelFS.js +105 -0
  462. package/Source/Shaders/VectorCommon.glsl +178 -0
  463. package/Source/Shaders/VectorCommon.js +75 -0
  464. package/Source/ThirdParty/Workers/zip-web-worker.js +1 -1
  465. package/Source/ThirdParty/zip-module.wasm +0 -0
  466. package/Source/Widget/CesiumWidget.js +30 -0
  467. package/Source/Workers/decodeGoogleEarthEnterprisePacket.js +2 -2
  468. package/Source/Workers/incrementallyBuildTerrainPicker.js +2 -0
  469. package/index.d.ts +825 -260
  470. package/index.js +29 -10
  471. package/package.json +4 -4
@@ -1,7 +1,7 @@
1
1
  import Check from "../Core/Check.js";
2
2
  import Frozen from "../Core/Frozen.js";
3
3
  import defined from "../Core/defined.js";
4
- import hasExtension from "./hasExtension.js";
4
+ import findMeshoptExtension from "./findMeshoptExtension.js";
5
5
  import { MeshoptDecoder } from "meshoptimizer";
6
6
  import ResourceLoader from "./ResourceLoader.js";
7
7
  import ResourceLoaderState from "./ResourceLoaderState.js";
@@ -54,8 +54,8 @@ class GltfBufferViewLoader extends ResourceLoader {
54
54
  let meshoptMode;
55
55
  let meshoptFilter;
56
56
 
57
- if (hasExtension(bufferView, "EXT_meshopt_compression")) {
58
- const meshopt = bufferView.extensions.EXT_meshopt_compression;
57
+ const meshopt = findMeshoptExtension(bufferView);
58
+ if (defined(meshopt)) {
59
59
  bufferId = meshopt.buffer;
60
60
  byteOffset = meshopt.byteOffset ?? 0;
61
61
  byteLength = meshopt.byteLength;
@@ -61,6 +61,7 @@ const {
61
61
  Specular,
62
62
  Anisotropy,
63
63
  Clearcoat,
64
+ PlanarFill,
64
65
  LineStyle,
65
66
  Material,
66
67
  Vector,
@@ -534,6 +535,7 @@ class GltfLoader extends ResourceLoader {
534
535
 
535
536
  /**
536
537
  * Loads the gltf object
538
+ * @ignore
537
539
  */
538
540
  async function loadGltfJson(loader) {
539
541
  loader._state = GltfLoaderState.LOADING;
@@ -1786,6 +1788,23 @@ function loadClearcoat(loader, clearcoatInfo, frameState) {
1786
1788
  return clearcoat;
1787
1789
  }
1788
1790
 
1791
+ /**
1792
+ * Load properties for the BENTLEY_materials_planar_fill extension.
1793
+ *
1794
+ * Note: The wireframeFill property is loaded but is currently a NO-OP in the
1795
+ * rendering pipeline. CesiumJS does not yet have a proper wireframe rendering
1796
+ * mode, so this value is stored for completeness but has no effect on rendering.
1797
+ * See https://github.com/CesiumGS/cesium/issues/13620 and
1798
+ * MaterialPipelineStage.js for more details.
1799
+ *
1800
+ * @param {object} planarFillInfo The contents of the BENTLEY_materials_planar_fill extension in the parsed glTF JSON
1801
+ * @returns {ModelComponents.PlanarFill}
1802
+ * @private
1803
+ */
1804
+ function loadPlanarFill(planarFillInfo) {
1805
+ return new PlanarFill(planarFillInfo);
1806
+ }
1807
+
1789
1808
  function loadLineStyle(lineStyleInfo) {
1790
1809
  if (!defined(lineStyleInfo)) {
1791
1810
  return undefined;
@@ -1832,6 +1851,7 @@ function loadMaterial(loader, gltfMaterial, frameState) {
1832
1851
  const pbrAnisotropy = extensions.KHR_materials_anisotropy;
1833
1852
  const pbrClearcoat = extensions.KHR_materials_clearcoat;
1834
1853
  const pbrMetallicRoughness = gltfMaterial.pbrMetallicRoughness;
1854
+ const planarFill = extensions.BENTLEY_materials_planar_fill;
1835
1855
 
1836
1856
  material.unlit = defined(extensions.KHR_materials_unlit);
1837
1857
 
@@ -1888,6 +1908,11 @@ function loadMaterial(loader, gltfMaterial, frameState) {
1888
1908
  material.alphaCutoff = gltfMaterial.alphaCutoff;
1889
1909
  material.doubleSided = gltfMaterial.doubleSided;
1890
1910
 
1911
+ // BENTLEY_materials_planar_fill extension
1912
+ if (defined(planarFill)) {
1913
+ material.planarFill = loadPlanarFill(planarFill);
1914
+ }
1915
+
1891
1916
  // BENTLEY_materials_point_style extension
1892
1917
  const pointStyleExtension = extensions.BENTLEY_materials_point_style;
1893
1918
  if (defined(pointStyleExtension) && defined(pointStyleExtension.diameter)) {
@@ -2155,7 +2180,7 @@ function loadEdgeVisibilityLineStrings(
2155
2180
  throw new RuntimeError("Edge visibility line string accessor not found!");
2156
2181
  }
2157
2182
 
2158
- const indices = loadAccessor(loader, accessor);
2183
+ const indices = loadAccessorTypedArray(loader, accessor);
2159
2184
  const restartIndex = getLineStringPrimitiveRestartValue(
2160
2185
  accessor.componentType,
2161
2186
  );
@@ -2187,7 +2212,10 @@ function loadEdgeVisibility(loader, edgeVisibilityExtension) {
2187
2212
  if (!defined(visibilityAccessor)) {
2188
2213
  throw new RuntimeError("Edge visibility accessor not found!");
2189
2214
  }
2190
- edgeVisibility.visibility = loadAccessor(loader, visibilityAccessor);
2215
+ edgeVisibility.visibility = loadAccessorTypedArray(
2216
+ loader,
2217
+ visibilityAccessor,
2218
+ );
2191
2219
  }
2192
2220
 
2193
2221
  edgeVisibility.materialColor = getEdgeVisibilityMaterialColor(
@@ -2199,7 +2227,9 @@ function loadEdgeVisibility(loader, edgeVisibilityExtension) {
2199
2227
  const silhouetteNormalsAccessor =
2200
2228
  loader.gltfJson.accessors[edgeVisibilityExtension.silhouetteNormals];
2201
2229
  if (defined(silhouetteNormalsAccessor)) {
2202
- edgeVisibility.silhouetteNormals = loadAccessor(
2230
+ // Packed typed array (x0,y0,z0, x1,y1,z1, ...), not an array of
2231
+ // Cartesian3s. Avoids a large JS heap cost for edge-heavy tiles.
2232
+ edgeVisibility.silhouetteNormals = loadAccessorTypedArray(
2203
2233
  loader,
2204
2234
  silhouetteNormalsAccessor,
2205
2235
  );
@@ -111,6 +111,22 @@ GltfLoaderUtil.createSampler = function (options) {
111
111
  }
112
112
  }
113
113
 
114
+ if (!TextureWrap.validate(wrapS)) {
115
+ wrapS = TextureWrap.REPEAT;
116
+ }
117
+
118
+ if (!TextureWrap.validate(wrapT)) {
119
+ wrapT = TextureWrap.REPEAT;
120
+ }
121
+
122
+ if (!TextureMinificationFilter.validate(minFilter)) {
123
+ minFilter = TextureMinificationFilter.LINEAR;
124
+ }
125
+
126
+ if (!TextureMagnificationFilter.validate(magFilter)) {
127
+ magFilter = TextureMagnificationFilter.LINEAR;
128
+ }
129
+
114
130
  return new Sampler({
115
131
  wrapS: wrapS,
116
132
  wrapT: wrapT,
@@ -164,10 +180,10 @@ GltfLoaderUtil.createModelTextureReader = function (options) {
164
180
 
165
181
  // prettier-ignore
166
182
  transform = new Matrix3(
167
- Math.cos(rotation) * scale.x, -Math.sin(rotation) * scale.y, offset.x,
168
- Math.sin(rotation) * scale.x, Math.cos(rotation) * scale.y, offset.y,
169
- 0.0, 0.0, 1.0
170
- );
183
+ Math.cos(rotation) * scale.x, -Math.sin(rotation) * scale.y, offset.x,
184
+ Math.sin(rotation) * scale.x, Math.cos(rotation) * scale.y, offset.y,
185
+ 0.0, 0.0, 1.0
186
+ );
171
187
  }
172
188
 
173
189
  const modelTextureReader = new ModelComponents.TextureReader();
@@ -73,6 +73,16 @@ function forEachTextureInMaterial(material, handler) {
73
73
  }
74
74
  }
75
75
 
76
+ // Transmission extension
77
+ const transmission = extensions.KHR_materials_transmission;
78
+ if (defined(transmission) && defined(transmission.transmissionTexture)) {
79
+ const textureInfo = transmission.transmissionTexture;
80
+ const value = handler(textureInfo.index, textureInfo);
81
+ if (defined(value)) {
82
+ return value;
83
+ }
84
+ }
85
+
76
86
  // Materials common extension (may be present in models converted from glTF 1.0)
77
87
  const materialsCommon = extensions.KHR_materials_common;
78
88
  if (defined(materialsCommon) && defined(materialsCommon.values)) {
@@ -148,11 +148,16 @@ Remove.buffer = function (gltf, bufferId) {
148
148
  bufferView.buffer--;
149
149
  }
150
150
 
151
- if (
152
- defined(bufferView.extensions) &&
153
- defined(bufferView.extensions.EXT_meshopt_compression)
154
- ) {
155
- bufferView.extensions.EXT_meshopt_compression.buffer--;
151
+ const extensions = bufferView.extensions;
152
+ if (defined(extensions)) {
153
+ const ext = extensions.EXT_meshopt_compression;
154
+ if (defined(ext) && ext.buffer > bufferId) {
155
+ ext.buffer--;
156
+ }
157
+ const khr = extensions.KHR_meshopt_compression;
158
+ if (defined(khr) && khr.buffer > bufferId) {
159
+ khr.buffer--;
160
+ }
156
161
  }
157
162
  });
158
163
  };
@@ -583,12 +588,17 @@ getListOfElementsIdsInUse.buffer = function (gltf) {
583
588
  if (defined(bufferView.buffer)) {
584
589
  usedBufferIds[bufferView.buffer] = true;
585
590
  }
586
- if (
587
- defined(bufferView.extensions) &&
588
- defined(bufferView.extensions.EXT_meshopt_compression)
589
- ) {
590
- usedBufferIds[bufferView.extensions.EXT_meshopt_compression.buffer] =
591
- true;
591
+
592
+ const extensions = bufferView.extensions;
593
+ if (defined(extensions)) {
594
+ const ext = extensions.EXT_meshopt_compression;
595
+ if (defined(ext)) {
596
+ usedBufferIds[ext.buffer] = true;
597
+ }
598
+ const khr = extensions.KHR_meshopt_compression;
599
+ if (defined(khr)) {
600
+ usedBufferIds[khr.buffer] = true;
601
+ }
592
602
  }
593
603
  });
594
604
 
@@ -267,7 +267,7 @@ async function loadResources(loader) {
267
267
  try {
268
268
  const bufferViewLoader = resourceCache.getBufferViewLoader({
269
269
  gltf: loader._gltf,
270
- bufferViewId: 0,
270
+ bufferViewId: loader._spz.bufferView,
271
271
  gltfResource: loader._gltfResource,
272
272
  baseResource: loader._baseResource,
273
273
  });
@@ -29,6 +29,7 @@ class GltfVertexBufferLoader extends ResourceLoader {
29
29
  * @param {number} [options.bufferViewId] The bufferView ID corresponding to the vertex buffer.
30
30
  * @param {object} [options.primitive] The primitive containing the Draco extension.
31
31
  * @param {object} [options.draco] The Draco extension object.
32
+ * @param {object} [options.spz] The SPZ extension object.
32
33
  * @param {string} [options.attributeSemantic] The attribute semantic, e.g. POSITION or NORMAL.
33
34
  * @param {number} [options.accessorId] The accessor id.
34
35
  * @param {string} [options.cacheKey] The cache key of the resource.
@@ -36,7 +37,7 @@ class GltfVertexBufferLoader extends ResourceLoader {
36
37
  * @param {boolean} [options.loadBuffer=false] Load vertex buffer as a GPU vertex buffer.
37
38
  * @param {boolean} [options.loadTypedArray=false] Load vertex buffer as a typed array.
38
39
  *
39
- * @exception {DeveloperError} One of options.bufferViewId and options.draco must be defined.
40
+ * @exception {DeveloperError} Exactly one vertex buffer source must be effective: options.bufferViewId, options.spz, or options.draco for options.attributeSemantic.
40
41
  * @exception {DeveloperError} When options.draco is defined options.attributeSemantic must also be defined.
41
42
  * @exception {DeveloperError} When options.draco is defined options.accessorId must also be defined.
42
43
  */
@@ -76,9 +77,11 @@ class GltfVertexBufferLoader extends ResourceLoader {
76
77
  const hasAttributeSemantic = defined(attributeSemantic);
77
78
  const hasAccessorId = defined(accessorId);
78
79
  const hasSpz = defined(spz);
79
- if (hasBufferViewId === (hasDraco !== hasSpz)) {
80
+ const sourceCount =
81
+ Number(hasBufferViewId) + Number(hasDraco) + Number(hasSpz);
82
+ if (sourceCount !== 1) {
80
83
  throw new DeveloperError(
81
- "One of options.bufferViewId, options.draco, or options.spz must be defined.",
84
+ "Exactly one vertex buffer source must be effective: options.bufferViewId, options.spz, or options.draco for options.attributeSemantic.",
82
85
  );
83
86
  }
84
87
 
@@ -408,7 +408,7 @@ I3SDataProvider.prototype.updateForPass = function (frameState, passState) {
408
408
  function buildLayerUrl(provider, layerId) {
409
409
  const dataProviderUrl = provider.resource.getUrlComponent();
410
410
 
411
- let layerUrl = "";
411
+ let layerUrl;
412
412
  if (dataProviderUrl.match(/layers\/\d/)) {
413
413
  layerUrl = `${dataProviderUrl}`.replace(/\/+$/, "");
414
414
  } else {
@@ -31,7 +31,7 @@ function I3SLayer(dataProvider, layerData, parent) {
31
31
 
32
32
  const parentUrl = this._parent.resource.getUrlComponent();
33
33
 
34
- let tilesetUrl = "";
34
+ let tilesetUrl;
35
35
  if (parentUrl.match(/layers\/\d/)) {
36
36
  tilesetUrl = `${parentUrl}`.replace(/\/+$/, "");
37
37
  } else {
@@ -474,9 +474,9 @@ I3SNode.prototype._create3DTileDefinition = function () {
474
474
  }
475
475
  }
476
476
 
477
- let boundingVolume = {};
477
+ let boundingVolume;
478
478
  let position;
479
- let span = 0;
479
+ let span;
480
480
  if (defined(obb)) {
481
481
  boundingVolume = {
482
482
  box: [
@@ -676,11 +676,11 @@ ImageryLayer.prototype.getImageryRectangle = function () {
676
676
  * Create skeletons for the imagery tiles that partially or completely overlap a given terrain
677
677
  * tile.
678
678
  *
679
- * @private
679
+ * @ignore
680
680
  *
681
681
  * @param {QuadtreeTile} tile The terrain tile.
682
682
  * @param {TerrainProvider|undefined} terrainProvider The terrain provider associated with the terrain tile.
683
- * @param {number} insertionPoint The position to insert new skeletons before in the tile's imagery list.
683
+ * @param {number} [insertionPoint] The position to insert new skeletons before in the tile's imagery list.
684
684
  * @returns {boolean} true if this layer overlaps any portion of the terrain tile; otherwise, false.
685
685
  */
686
686
  ImageryLayer.prototype._createTileImagerySkeletons = function (
@@ -1,10 +1,14 @@
1
1
  import defined from "../Core/defined.js";
2
+ import Cartesian2 from "../Core/Cartesian2.js";
3
+ import Cartographic from "../Core/Cartographic.js";
2
4
  import destroyObject from "../Core/destroyObject.js";
3
5
  import DeveloperError from "../Core/DeveloperError.js";
4
6
  import Event from "../Core/Event.js";
7
+ import GeographicProjection from "../Core/GeographicProjection.js";
5
8
  import CesiumMath from "../Core/Math.js";
6
9
  import Rectangle from "../Core/Rectangle.js";
7
10
  import ImageryLayer from "./ImageryLayer.js";
11
+ import ImageryState from "./ImageryState.js";
8
12
 
9
13
  /**
10
14
  * An ordered collection of imagery layers for rendering raster imagery on a {@link Globe} or {@link Cesium3DTileset}.
@@ -452,6 +456,152 @@ ImageryLayerCollection.prototype.pickImageryLayers = function (ray, scene) {
452
456
  return imageryLayers;
453
457
  };
454
458
 
459
+ const nativeBoundingRectangleScratch = new Rectangle();
460
+ const nativeApplicableRectangleScratch = new Rectangle();
461
+ const southwestNativeScratch = new Cartesian2();
462
+ const northeastNativeScratch = new Cartesian2();
463
+ const southwestCartographicScratch = new Cartographic();
464
+ const northeastCartographicScratch = new Cartographic();
465
+
466
+ /**
467
+ * Maps a texture coordinate rectangle (UV space on the primitive) back to a
468
+ * geographic rectangle, using the primitive cartographic bounds and the
469
+ * imagery tiling scheme's native coordinates.
470
+ *
471
+ * @private
472
+ */
473
+
474
+ function computeApplicableGeographicRectangle(
475
+ cartographicBoundingRectangle,
476
+ textureCoordinateRectangle,
477
+ imageryLayer,
478
+ result,
479
+ ) {
480
+ const tilingScheme = imageryLayer.imageryProvider.tilingScheme;
481
+ const nativeBoundingRectangle = tilingScheme.rectangleToNativeRectangle(
482
+ cartographicBoundingRectangle,
483
+ nativeBoundingRectangleScratch,
484
+ );
485
+
486
+ const epsilon = 1 / 1024; // 1/4 of a pixel in a typical 256x256 tile.
487
+ const applicableNative = nativeApplicableRectangleScratch;
488
+ applicableNative.west = CesiumMath.lerp(
489
+ nativeBoundingRectangle.west,
490
+ nativeBoundingRectangle.east,
491
+ textureCoordinateRectangle.minX - epsilon,
492
+ );
493
+ applicableNative.east = CesiumMath.lerp(
494
+ nativeBoundingRectangle.west,
495
+ nativeBoundingRectangle.east,
496
+ textureCoordinateRectangle.maxX + epsilon,
497
+ );
498
+ applicableNative.south = CesiumMath.lerp(
499
+ nativeBoundingRectangle.south,
500
+ nativeBoundingRectangle.north,
501
+ textureCoordinateRectangle.minY - epsilon,
502
+ );
503
+ applicableNative.north = CesiumMath.lerp(
504
+ nativeBoundingRectangle.south,
505
+ nativeBoundingRectangle.north,
506
+ textureCoordinateRectangle.maxY + epsilon,
507
+ );
508
+
509
+ if (!defined(result)) {
510
+ result = new Rectangle();
511
+ }
512
+
513
+ const projection = tilingScheme.projection;
514
+ if (projection instanceof GeographicProjection) {
515
+ result.west = CesiumMath.toRadians(applicableNative.west);
516
+ result.south = CesiumMath.toRadians(applicableNative.south);
517
+ result.east = CesiumMath.toRadians(applicableNative.east);
518
+ result.north = CesiumMath.toRadians(applicableNative.north);
519
+ return result;
520
+ }
521
+
522
+ southwestNativeScratch.x = applicableNative.west;
523
+ southwestNativeScratch.y = applicableNative.south;
524
+ northeastNativeScratch.x = applicableNative.east;
525
+ northeastNativeScratch.y = applicableNative.north;
526
+
527
+ const southwest = projection.unproject(
528
+ southwestNativeScratch,
529
+ southwestCartographicScratch,
530
+ );
531
+ const northeast = projection.unproject(
532
+ northeastNativeScratch,
533
+ northeastCartographicScratch,
534
+ );
535
+ result.west = southwest.longitude;
536
+ result.south = southwest.latitude;
537
+ result.east = northeast.longitude;
538
+ result.north = northeast.latitude;
539
+ return result;
540
+ }
541
+
542
+ function pickModelFeatures(model, pickedLocation, callback) {
543
+ const modelImagery = model._modelImagery;
544
+
545
+ if (!defined(modelImagery)) {
546
+ return;
547
+ }
548
+
549
+ const modelPrimitiveImageries = modelImagery._modelPrimitiveImageries;
550
+
551
+ if (!defined(modelPrimitiveImageries)) {
552
+ return;
553
+ }
554
+
555
+ for (let j = 0; j < modelPrimitiveImageries.length; j++) {
556
+ const modelPrimitiveImagery = modelPrimitiveImageries[j];
557
+ const coveragesPerLayer = modelPrimitiveImagery._coveragesPerLayer;
558
+ if (!defined(coveragesPerLayer)) {
559
+ continue;
560
+ }
561
+
562
+ for (let k = coveragesPerLayer.length - 1; k >= 0; --k) {
563
+ const coverages = coveragesPerLayer[k];
564
+
565
+ for (let l = 0; l < coverages.length; l++) {
566
+ const coverage = coverages[l];
567
+ const imagery = coverage.imagery;
568
+ const imageryLayer = imagery.imageryLayer;
569
+ const provider = imageryLayer.imageryProvider;
570
+
571
+ if (!defined(provider.pickFeatures)) {
572
+ continue;
573
+ }
574
+
575
+ if (!defined(imagery) || imagery.state !== ImageryState.READY) {
576
+ continue;
577
+ }
578
+
579
+ if (!Rectangle.contains(imagery.rectangle, pickedLocation)) {
580
+ continue;
581
+ }
582
+
583
+ const mappedPositions =
584
+ modelPrimitiveImagery.mappedPositionsForImageryLayer(imageryLayer);
585
+ const cartographicBoundingRectangle =
586
+ mappedPositions.cartographicBoundingRectangle;
587
+
588
+ const applicableRectangle = computeApplicableGeographicRectangle(
589
+ cartographicBoundingRectangle,
590
+ coverage.textureCoordinateRectangle,
591
+ imageryLayer,
592
+ applicableRectangleScratch,
593
+ );
594
+
595
+ if (!Rectangle.contains(applicableRectangle, pickedLocation)) {
596
+ continue;
597
+ }
598
+
599
+ callback(imagery);
600
+ }
601
+ }
602
+ }
603
+ }
604
+
455
605
  /**
456
606
  * Asynchronously determines the imagery layer features that are intersected by a pick ray. The intersected imagery
457
607
  * layer features are found by invoking {@link ImageryProvider#pickFeatures} for each imagery layer tile intersected
@@ -485,9 +635,30 @@ ImageryLayerCollection.prototype.pickImageryLayerFeatures = function (
485
635
  scene,
486
636
  ) {
487
637
  // Find the picked location on the globe.
488
- const pickedPosition = scene.globe.pick(ray, scene);
638
+ let pickedPosition;
639
+
640
+ if (defined(scene.globe)) {
641
+ pickedPosition = scene.globe.pick(ray, scene);
642
+ }
643
+
644
+ let pickedModel;
645
+
489
646
  if (!defined(pickedPosition)) {
490
- return;
647
+ const result = scene.pickFromRay(ray);
648
+
649
+ if (!defined(result)) {
650
+ return undefined;
651
+ }
652
+
653
+ pickedPosition = result.position;
654
+
655
+ if (!defined(pickedPosition)) {
656
+ return undefined;
657
+ }
658
+
659
+ if (defined(result.object) && defined(result.object.detail)) {
660
+ pickedModel = result.object.detail.model;
661
+ }
491
662
  }
492
663
 
493
664
  const pickedLocation =
@@ -496,7 +667,7 @@ ImageryLayerCollection.prototype.pickImageryLayerFeatures = function (
496
667
  const promises = [];
497
668
  const imageryLayers = [];
498
669
 
499
- pickImageryHelper(scene, pickedLocation, true, function (imagery) {
670
+ function queuePickFeatures(imagery) {
500
671
  if (!imagery.imageryLayer.ready) {
501
672
  return undefined;
502
673
  }
@@ -512,11 +683,24 @@ ImageryLayerCollection.prototype.pickImageryLayerFeatures = function (
512
683
  promises.push(promise);
513
684
  imageryLayers.push(imagery.imageryLayer);
514
685
  }
515
- });
686
+ }
687
+
688
+ if (defined(scene.globe)) {
689
+ pickImageryHelper(scene, pickedLocation, true, function (imagery) {
690
+ queuePickFeatures(imagery);
691
+ });
692
+ }
693
+
694
+ if (defined(pickedModel)) {
695
+ pickModelFeatures(pickedModel, pickedLocation, function (imagery) {
696
+ queuePickFeatures(imagery);
697
+ });
698
+ }
516
699
 
517
700
  if (promises.length === 0) {
518
701
  return undefined;
519
702
  }
703
+
520
704
  return Promise.all(promises).then(function (results) {
521
705
  const features = [];
522
706
  for (let resultIndex = 0; resultIndex < results.length; ++resultIndex) {
@@ -545,7 +729,7 @@ ImageryLayerCollection.prototype.pickImageryLayerFeatures = function (
545
729
  /**
546
730
  * Updates frame state to execute any queued texture re-projections.
547
731
  *
548
- * @private
732
+ * @ignore
549
733
  *
550
734
  * @param {FrameState} frameState The frameState.
551
735
  */
@@ -561,7 +745,7 @@ ImageryLayerCollection.prototype.queueReprojectionCommands = function (
561
745
  /**
562
746
  * Cancels re-projection commands queued for the next frame.
563
747
  *
564
- * @private
748
+ * @ignore
565
749
  */
566
750
  ImageryLayerCollection.prototype.cancelReprojections = function () {
567
751
  const layers = this._layers;
@@ -26,17 +26,13 @@ import IonImageryProviderFactory from "./IonImageryProviderFactory.js";
26
26
  * @alias IonImageryProvider
27
27
  * @constructor
28
28
  *
29
- * @param {IonImageryProvider.ConstructorOptions} [options] Object describing initialization options
30
- *
31
29
  * @example
32
30
  * const imageryLayer = Cesium.ImageryLayer.fromProviderAsync(Cesium.IonImageryProvider.fromAssetId(3812));
33
31
  * viewer.imageryLayers.add(imageryLayer);
34
32
  *
35
33
  * @see IonImageryProvider.fromAssetId
36
34
  */
37
- function IonImageryProvider(options) {
38
- options = options ?? Frozen.EMPTY_OBJECT;
39
-
35
+ function IonImageryProvider() {
40
36
  this._defaultAlpha = undefined;
41
37
  this._defaultNightAlpha = undefined;
42
38
  this._defaultDayAlpha = undefined;
@@ -1282,10 +1282,10 @@ Label.getScreenSpaceBoundingBox = function (
1282
1282
  screenSpacePosition,
1283
1283
  result,
1284
1284
  ) {
1285
- let x = 0;
1286
- let y = 0;
1287
- let width = 0;
1288
- let height = 0;
1285
+ let x;
1286
+ let y;
1287
+ let width;
1288
+ let height;
1289
1289
  const scale = label.totalScale;
1290
1290
 
1291
1291
  const backgroundBillboard = label._backgroundBillboard;
@@ -335,7 +335,7 @@ function updateBackgroundBillboard(
335
335
  // Label is shown and background is hidden - remove the background billboard
336
336
  if (label.show && !showBackground) {
337
337
  backgroundBillboardCollection.remove(backgroundBillboard);
338
- label._backgroundBillboard = backgroundBillboard = undefined;
338
+ label._backgroundBillboard = undefined;
339
339
  return;
340
340
  }
341
341
 
@@ -23,6 +23,7 @@ import defined from "../Core/defined.js";
23
23
  * This object is normally not instantiated directly, use {@link MVTDataProvider.fromUrl}.
24
24
  * </div>
25
25
  *
26
+ * @extends UrlTemplate3DTilesDataProvider
26
27
  * @experimental This feature is not final and is subject to change without Cesium's standard deprecation policy.
27
28
  */
28
29
  class MVTDataProvider extends UrlTemplate3DTilesDataProvider {
@@ -35,6 +36,7 @@ class MVTDataProvider extends UrlTemplate3DTilesDataProvider {
35
36
  * @param {number} [options.maxZoom=14] Maximum zoom level represented in the generated tileset.
36
37
  * @param {Rectangle} [options.extent] Optional geographic extent in radians to constrain the generated tile tree.
37
38
  * @param {string} [options.featureIdProperty] MVT property name to use as feature ID.
39
+ * @returns {Promise<MVTDataProvider>}
38
40
  */
39
41
  static async fromUrl(url, options) {
40
42
  return /** @type {Promise<MVTDataProvider>} */ (
@@ -1099,6 +1099,7 @@ function createCubeMapUpdateFunction(uniformId) {
1099
1099
  * @param {Material} material The material to load the cubemap images for.
1100
1100
  * @param {string} uniformId The ID of the uniform that corresponds to the cubemap images.
1101
1101
  * @returns A promise that resolves when the images are loaded, or a resolved promise if image loading is not necessary.
1102
+ * @ignore
1102
1103
  */
1103
1104
  function loadCubeMapImagesForUniform(material, uniformId) {
1104
1105
  const uniforms = material.uniforms;
@@ -163,7 +163,6 @@ class B3dmLoader extends ResourceLoader {
163
163
 
164
164
  const b3dm = B3dmParser.parse(this._arrayBuffer, this._byteOffset);
165
165
 
166
- let batchLength = b3dm.batchLength;
167
166
  const featureTableJson = b3dm.featureTableJson;
168
167
  const featureTableBinary = b3dm.featureTableBinary;
169
168
  const batchTableJson = b3dm.batchTableJson;
@@ -173,7 +172,7 @@ class B3dmLoader extends ResourceLoader {
173
172
  featureTableJson,
174
173
  featureTableBinary,
175
174
  );
176
- batchLength = featureTable.getGlobalProperty("BATCH_LENGTH");
175
+ const batchLength = featureTable.getGlobalProperty("BATCH_LENGTH");
177
176
  // Set batch length.
178
177
  this._batchLength = batchLength;
179
178
  // Set the RTC Center transform, if present.