@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
@@ -9,6 +9,7 @@ import RequestState from "../Core/RequestState.js";
9
9
  import RequestType from "../Core/RequestType.js";
10
10
  import TerrainEncoding from "../Core/TerrainEncoding.js";
11
11
  import TileProviderError from "../Core/TileProviderError.js";
12
+ import VectorPipeline from "../Core/VectorPipeline.js";
12
13
  import Buffer from "../Renderer/Buffer.js";
13
14
  import BufferUsage from "../Renderer/BufferUsage.js";
14
15
  import PixelDatatype from "../Renderer/PixelDatatype.js";
@@ -22,83 +23,104 @@ import ImageryState from "./ImageryState.js";
22
23
  import QuadtreeTileLoadState from "./QuadtreeTileLoadState.js";
23
24
  import TerrainState from "./TerrainState.js";
24
25
 
26
+ /** @import Context from "../Renderer/Context.js"; */
27
+ /** @import Ellipsoid from "../Core/Ellipsoid.js"; */
28
+ /** @import FrameState from "./FrameState.js"; */
29
+ /** @import HeightmapTerrainData from "../Core/HeightmapTerrainData.js"; */
30
+ /** @import ImageryLayerCollection from "./ImageryLayerCollection.js"; */
31
+ /** @import MapProjection from "../Core/MapProjection.js"; */
32
+ /** @import QuadtreePrimitive from "./QuadtreePrimitive.js"; */
33
+ /** @import QuadtreeTile from "./QuadtreeTile.js"; */
34
+ /** @import Ray from "../Core/Ray.js"; */
35
+ /** @import SceneMode from "./SceneMode.js"; */
36
+ /** @import TerrainMesh from "../Core/TerrainMesh.js"; */
37
+ /** @import TerrainProvider from "../Core/TerrainProvider.js"; */
38
+ /** @import TileBoundingRegion from "./TileBoundingRegion.js"; */
39
+ /** @import TileImagery from "./TileImagery.js"; */
40
+ /** @import VectorProvider, { VectorTileData } from "../Core/VectorProvider.js"; */
41
+
25
42
  /**
26
43
  * Contains additional information about a {@link QuadtreeTile} of the globe's surface, and
27
44
  * encapsulates state transition logic for loading tiles.
28
45
  *
29
- * @constructor
30
- * @alias GlobeSurfaceTile
31
46
  * @private
32
47
  */
33
- function GlobeSurfaceTile() {
34
- /**
35
- * The {@link TileImagery} attached to this tile.
36
- * @type {TileImagery[]}
37
- * @default []
38
- */
39
- this.imagery = [];
48
+ class GlobeSurfaceTile {
49
+ /** @type {Request} */
50
+ request;
51
+
52
+ constructor() {
53
+ /**
54
+ * The {@link TileImagery} attached to this tile.
55
+ * @type {TileImagery[]}
56
+ * @default []
57
+ */
58
+ this.imagery = [];
59
+
60
+ /** @type {Texture} */
61
+ this.waterMaskTexture = undefined;
62
+ this.waterMaskTranslationAndScale = new Cartesian4(0.0, 0.0, 1.0, 1.0);
40
63
 
41
- this.waterMaskTexture = undefined;
42
- this.waterMaskTranslationAndScale = new Cartesian4(0.0, 0.0, 1.0, 1.0);
64
+ /** @type {HeightmapTerrainData} */
65
+ this.terrainData = undefined;
43
66
 
44
- this.terrainData = undefined;
45
- this.vertexArray = undefined;
67
+ /** @type {VectorTileData} */
68
+ this.vectorData = undefined;
46
69
 
47
- /**
48
- * A bounding region used to estimate distance to the tile. The horizontal bounds are always tight-fitting,
49
- * but the `minimumHeight` and `maximumHeight` properties may be derived from the min/max of an ancestor tile
50
- * and be quite loose-fitting and thus very poor for estimating distance.
51
- * @type {TileBoundingRegion}
52
- */
53
- this.tileBoundingRegion = undefined;
54
- this.occludeePointInScaledSpace = new Cartesian3();
55
- this.boundingVolumeSourceTile = undefined;
56
- this.boundingVolumeIsFromMesh = false;
70
+ /** @type {VertexArray} */
71
+ this.vertexArray = undefined;
57
72
 
58
- this.terrainState = TerrainState.UNLOADED;
59
- this.mesh = undefined;
60
- this.fill = undefined;
73
+ /**
74
+ * A bounding region used to estimate distance to the tile. The horizontal bounds are always tight-fitting,
75
+ * but the `minimumHeight` and `maximumHeight` properties may be derived from the min/max of an ancestor tile
76
+ * and be quite loose-fitting and thus very poor for estimating distance.
77
+ * @type {TileBoundingRegion}
78
+ */
79
+ this.tileBoundingRegion = undefined;
80
+ this.occludeePointInScaledSpace = new Cartesian3();
81
+ this.boundingVolumeSourceTile = undefined;
82
+ this.boundingVolumeIsFromMesh = false;
61
83
 
62
- this.pickBoundingSphere = new BoundingSphere();
84
+ this.terrainState = TerrainState.UNLOADED;
85
+ this.mesh = undefined;
86
+ this.fill = undefined;
63
87
 
64
- this.surfaceShader = undefined;
65
- this.isClipped = true;
88
+ this.pickBoundingSphere = new BoundingSphere();
66
89
 
67
- this.clippedByBoundaries = false;
68
- }
90
+ this.surfaceShader = undefined;
91
+ this.isClipped = true;
92
+
93
+ this.clippedByBoundaries = false;
94
+ }
69
95
 
70
- Object.defineProperties(GlobeSurfaceTile.prototype, {
71
96
  /**
72
97
  * Gets a value indicating whether or not this tile is eligible to be unloaded.
73
98
  * Typically, a tile is ineligible to be unloaded while an asynchronous operation,
74
99
  * such as a request for data, is in progress on it. A tile will never be
75
100
  * unloaded while it is needed for rendering, regardless of the value of this
76
101
  * property.
77
- * @memberof GlobeSurfaceTile.prototype
78
102
  * @type {boolean}
79
103
  */
80
- eligibleForUnloading: {
81
- get: function () {
82
- // Do not remove tiles that are transitioning or that have
83
- // imagery that is transitioning.
84
- const terrainState = this.terrainState;
85
- const loadingIsTransitioning =
86
- terrainState === TerrainState.RECEIVING ||
87
- terrainState === TerrainState.TRANSFORMING;
88
-
89
- let shouldRemoveTile = !loadingIsTransitioning;
90
-
91
- const imagery = this.imagery;
92
- for (let i = 0, len = imagery.length; shouldRemoveTile && i < len; ++i) {
93
- const tileImagery = imagery[i];
94
- shouldRemoveTile =
95
- !defined(tileImagery.loadingImagery) ||
96
- tileImagery.loadingImagery.state !== ImageryState.TRANSITIONING;
97
- }
104
+ get eligibleForUnloading() {
105
+ // Do not remove tiles that are transitioning or that have
106
+ // imagery that is transitioning.
107
+ const terrainState = this.terrainState;
108
+ const loadingIsTransitioning =
109
+ terrainState === TerrainState.RECEIVING ||
110
+ terrainState === TerrainState.TRANSFORMING;
111
+
112
+ let shouldRemoveTile = !loadingIsTransitioning;
113
+
114
+ const imagery = this.imagery;
115
+ for (let i = 0, len = imagery.length; shouldRemoveTile && i < len; ++i) {
116
+ const tileImagery = imagery[i];
117
+ shouldRemoveTile =
118
+ !defined(tileImagery.loadingImagery) ||
119
+ tileImagery.loadingImagery.state !== ImageryState.TRANSITIONING;
120
+ }
98
121
 
99
- return shouldRemoveTile;
100
- },
101
- },
122
+ return shouldRemoveTile;
123
+ }
102
124
 
103
125
  /**
104
126
  * Gets the {@link TerrainMesh} that is used for rendering this tile, if any.
@@ -107,224 +129,455 @@ Object.defineProperties(GlobeSurfaceTile.prototype, {
107
129
  * {@link TerrainFillMesh#mesh} property of the {@link GlobeSurfaceTile#fill}.
108
130
  * If there is no fill, it returns undefined.
109
131
  *
110
- * @memberof GlobeSurfaceTile.prototype
111
132
  * @type {TerrainMesh}
112
133
  */
113
- renderedMesh: {
114
- get: function () {
115
- if (defined(this.vertexArray)) {
116
- return this.mesh;
117
- } else if (defined(this.fill)) {
118
- return this.fill.mesh;
119
- }
120
- return undefined;
121
- },
122
- },
123
- });
124
-
125
- GlobeSurfaceTile.prototype.pick = function (
126
- ray,
127
- mode,
128
- projection,
129
- cullBackFaces,
130
- result,
131
- ) {
132
- if (!defined(this.renderedMesh)) {
134
+ get renderedMesh() {
135
+ if (defined(this.vertexArray)) {
136
+ return this.mesh;
137
+ } else if (defined(this.fill)) {
138
+ return this.fill.mesh;
139
+ }
133
140
  return undefined;
134
141
  }
135
- const value = this.renderedMesh.pick(ray, cullBackFaces, mode, projection);
136
- return Cartesian3.clone(value, result);
137
- };
138
142
 
139
- GlobeSurfaceTile.prototype.freeResources = function () {
140
- if (defined(this.waterMaskTexture)) {
141
- --this.waterMaskTexture.referenceCount;
142
- if (this.waterMaskTexture.referenceCount === 0) {
143
- this.waterMaskTexture.destroy();
143
+ /**
144
+ * @param {Ray} ray
145
+ * @param {SceneMode} mode
146
+ * @param {MapProjection} projection
147
+ * @param {boolean} cullBackFaces
148
+ * @param {Cartesian3} result
149
+ */
150
+ pick(ray, mode, projection, cullBackFaces, result) {
151
+ if (!defined(this.renderedMesh)) {
152
+ return undefined;
144
153
  }
145
- this.waterMaskTexture = undefined;
154
+ const value = this.renderedMesh.pick(ray, cullBackFaces, mode, projection);
155
+ return Cartesian3.clone(value, result);
146
156
  }
147
157
 
148
- this.terrainData = undefined;
158
+ freeResources() {
159
+ if (defined(this.waterMaskTexture)) {
160
+ --this.waterMaskTexture.referenceCount;
161
+ if (this.waterMaskTexture.referenceCount === 0) {
162
+ this.waterMaskTexture.destroy();
163
+ }
164
+ this.waterMaskTexture = undefined;
165
+ }
149
166
 
150
- this.terrainState = TerrainState.UNLOADED;
151
- this.mesh = undefined;
152
- this.fill = this.fill && this.fill.destroy();
167
+ if (defined(this.vectorData)) {
168
+ VectorPipeline.freeResources(this.vectorData);
169
+ this.vectorData = undefined;
170
+ }
153
171
 
154
- const imageryList = this.imagery;
155
- for (let i = 0, len = imageryList.length; i < len; ++i) {
156
- imageryList[i].freeResources();
157
- }
158
- this.imagery.length = 0;
172
+ this.terrainData = undefined;
159
173
 
160
- this.freeVertexArray();
161
- };
174
+ this.terrainState = TerrainState.UNLOADED;
175
+ this.mesh = undefined;
176
+ this.fill = this.fill && this.fill.destroy();
162
177
 
163
- GlobeSurfaceTile.prototype.freeVertexArray = function () {
164
- GlobeSurfaceTile._freeVertexArray(this.vertexArray);
165
- this.vertexArray = undefined;
166
- GlobeSurfaceTile._freeVertexArray(this.wireframeVertexArray);
167
- this.wireframeVertexArray = undefined;
168
- };
178
+ const imageryList = this.imagery;
179
+ for (let i = 0, len = imageryList.length; i < len; ++i) {
180
+ imageryList[i].freeResources();
181
+ }
182
+ this.imagery.length = 0;
169
183
 
170
- GlobeSurfaceTile.initialize = function (
171
- tile,
172
- terrainProvider,
173
- imageryLayerCollection,
174
- ) {
175
- let surfaceTile = tile.data;
176
- if (!defined(surfaceTile)) {
177
- surfaceTile = tile.data = new GlobeSurfaceTile();
184
+ this.freeVertexArray();
178
185
  }
179
186
 
180
- if (tile.state === QuadtreeTileLoadState.START) {
181
- prepareNewTile(tile, terrainProvider, imageryLayerCollection);
182
- tile.state = QuadtreeTileLoadState.LOADING;
187
+ freeVertexArray() {
188
+ GlobeSurfaceTile._freeVertexArray(this.vertexArray);
189
+ this.vertexArray = undefined;
190
+ GlobeSurfaceTile._freeVertexArray(this.wireframeVertexArray);
191
+ this.wireframeVertexArray = undefined;
183
192
  }
184
- };
185
193
 
186
- GlobeSurfaceTile.processStateMachine = function (
187
- tile,
188
- frameState,
189
- terrainProvider,
190
- imageryLayerCollection,
191
- quadtree,
192
- vertexArraysToDestroy,
193
- terrainOnly,
194
- ) {
195
- GlobeSurfaceTile.initialize(tile, terrainProvider, imageryLayerCollection);
194
+ /**
195
+ * @param {QuadtreeTile} tile
196
+ * @param {TerrainProvider} terrainProvider
197
+ * @param {VectorProvider} vectorProvider
198
+ * @param {ImageryLayerCollection} imageryLayerCollection
199
+ */
200
+ static initialize(
201
+ tile,
202
+ terrainProvider,
203
+ vectorProvider,
204
+ imageryLayerCollection,
205
+ ) {
206
+ if (!defined(tile.data)) {
207
+ tile.data = new GlobeSurfaceTile();
208
+ }
196
209
 
197
- const surfaceTile = tile.data;
210
+ if (tile.state === QuadtreeTileLoadState.START) {
211
+ prepareNewTile(
212
+ tile,
213
+ terrainProvider,
214
+ vectorProvider,
215
+ imageryLayerCollection,
216
+ );
217
+ tile.state = QuadtreeTileLoadState.LOADING;
218
+ }
219
+ }
198
220
 
199
- if (tile.state === QuadtreeTileLoadState.LOADING) {
200
- processTerrainStateMachine(
221
+ /**
222
+ * @param {QuadtreeTile} tile
223
+ * @param {FrameState} frameState
224
+ * @param {TerrainProvider} terrainProvider
225
+ * @param {VectorProvider} vectorProvider
226
+ * @param {ImageryLayerCollection} imageryLayerCollection
227
+ * @param {QuadtreePrimitive} quadtree
228
+ * @param {*} vertexArraysToDestroy
229
+ * @param {*} terrainOnly
230
+ */
231
+ static processStateMachine(
232
+ tile,
233
+ frameState,
234
+ terrainProvider,
235
+ vectorProvider,
236
+ imageryLayerCollection,
237
+ quadtree,
238
+ vertexArraysToDestroy,
239
+ terrainOnly,
240
+ ) {
241
+ GlobeSurfaceTile.initialize(
201
242
  tile,
202
- frameState,
203
243
  terrainProvider,
244
+ vectorProvider,
204
245
  imageryLayerCollection,
205
- quadtree,
206
- vertexArraysToDestroy,
207
246
  );
208
- }
209
247
 
210
- // From here down we're loading imagery, not terrain. We don't want to load imagery until
211
- // we're certain that the terrain tiles are actually visible, though. We'll load terrainOnly
212
- // in these scenarios:
213
- // * our bounding volume isn't accurate so we're not certain this tile is really visible (see GlobeSurfaceTileProvider#loadTile).
214
- // * we want to upsample from this tile but don't plan to render it (see processTerrainStateMachine).
215
- if (terrainOnly) {
216
- return;
217
- }
248
+ const surfaceTile = tile.data;
218
249
 
219
- const wasAlreadyRenderable = tile.renderable;
250
+ if (tile.state === QuadtreeTileLoadState.LOADING) {
251
+ processTerrainStateMachine(
252
+ tile,
253
+ frameState,
254
+ terrainProvider,
255
+ vectorProvider,
256
+ imageryLayerCollection,
257
+ quadtree,
258
+ vertexArraysToDestroy,
259
+ );
260
+ }
220
261
 
221
- // The terrain is renderable as soon as we have a valid vertex array.
222
- tile.renderable = defined(surfaceTile.vertexArray);
262
+ // From here down we're loading imagery, not terrain. We don't want to load imagery until
263
+ // we're certain that the terrain tiles are actually visible, though. We'll load terrainOnly
264
+ // in these scenarios:
265
+ // * our bounding volume isn't accurate so we're not certain this tile is really visible (see GlobeSurfaceTileProvider#loadTile).
266
+ // * we want to upsample from this tile but don't plan to render it (see processTerrainStateMachine).
267
+ if (terrainOnly) {
268
+ return;
269
+ }
223
270
 
224
- // But it's not done loading until it's in the READY state.
225
- const isTerrainDoneLoading = surfaceTile.terrainState === TerrainState.READY;
271
+ const wasAlreadyRenderable = tile.renderable;
226
272
 
227
- // If this tile's terrain and imagery are just upsampled from its parent, mark the tile as
228
- // upsampled only. We won't refine a tile if its four children are upsampled only.
229
- tile.upsampledFromParent =
230
- defined(surfaceTile.terrainData) &&
231
- surfaceTile.terrainData.wasCreatedByUpsampling();
273
+ // The terrain is renderable as soon as we have a valid vertex array.
274
+ tile.renderable = defined(surfaceTile.vertexArray);
232
275
 
233
- const isImageryDoneLoading = surfaceTile.processImagery(
234
- tile,
235
- terrainProvider,
236
- frameState,
237
- );
276
+ // But it's not done loading until it's in the READY state.
277
+ const isTerrainDoneLoading =
278
+ surfaceTile.terrainState === TerrainState.READY;
279
+
280
+ // If this tile's terrain and imagery are just upsampled from its parent, mark the tile as
281
+ // upsampled only. We won't refine a tile if its four children are upsampled only.
282
+ tile.upsampledFromParent =
283
+ defined(surfaceTile.terrainData) &&
284
+ surfaceTile.terrainData.wasCreatedByUpsampling();
285
+
286
+ const isImageryDoneLoading = surfaceTile.processImagery(
287
+ tile,
288
+ terrainProvider,
289
+ frameState,
290
+ );
291
+
292
+ if (isTerrainDoneLoading && isImageryDoneLoading) {
293
+ const callbacks = tile._loadedCallbacks;
294
+ const newCallbacks = {};
295
+ for (const layerId in callbacks) {
296
+ if (callbacks.hasOwnProperty(layerId)) {
297
+ if (!callbacks[layerId](tile)) {
298
+ newCallbacks[layerId] = callbacks[layerId];
299
+ }
300
+ }
301
+ }
302
+ tile._loadedCallbacks = newCallbacks;
303
+
304
+ tile.state = QuadtreeTileLoadState.DONE;
305
+ }
306
+
307
+ // Once a tile is renderable, it stays renderable, because doing otherwise would
308
+ // cause detail (or maybe even the entire globe) to vanish when adding a new
309
+ // imagery layer. `GlobeSurfaceTileProvider._onLayerAdded` sets renderable to
310
+ // false for all affected tiles that are not currently being rendered.
311
+ if (wasAlreadyRenderable) {
312
+ tile.renderable = true;
313
+ }
314
+ }
315
+
316
+ /**
317
+ * @param {QuadtreeTile} tile
318
+ * @param {TerrainProvider} terrainProvider
319
+ * @param {FrameState} frameState
320
+ * @param {boolean} skipLoading
321
+ */
322
+ processImagery(tile, terrainProvider, frameState, skipLoading) {
323
+ const surfaceTile = /** @type {GlobeSurfaceTile} */ (tile.data);
324
+ let isUpsampledOnly = tile.upsampledFromParent;
325
+ let isAnyTileLoaded = false;
326
+ let isDoneLoading = true;
327
+
328
+ // Transition imagery states
329
+ const tileImageryCollection = surfaceTile.imagery;
330
+ let i, len;
331
+ for (i = 0, len = tileImageryCollection.length; i < len; ++i) {
332
+ const tileImagery = tileImageryCollection[i];
333
+ if (!defined(tileImagery.loadingImagery)) {
334
+ isUpsampledOnly = false;
335
+ continue;
336
+ }
238
337
 
239
- if (isTerrainDoneLoading && isImageryDoneLoading) {
240
- const callbacks = tile._loadedCallbacks;
241
- const newCallbacks = {};
242
- for (const layerId in callbacks) {
243
- if (callbacks.hasOwnProperty(layerId)) {
244
- if (!callbacks[layerId](tile)) {
245
- newCallbacks[layerId] = callbacks[layerId];
338
+ if (tileImagery.loadingImagery.state === ImageryState.PLACEHOLDER) {
339
+ const imageryLayer = tileImagery.loadingImagery.imageryLayer;
340
+ if (imageryLayer.ready) {
341
+ // Remove the placeholder and add the actual skeletons (if any)
342
+ // at the same position. Then continue the loop at the same index.
343
+ tileImagery.freeResources();
344
+ tileImageryCollection.splice(i, 1);
345
+ imageryLayer._createTileImagerySkeletons(tile, terrainProvider, i);
346
+ --i;
347
+ len = tileImageryCollection.length;
348
+ continue;
349
+ } else {
350
+ isUpsampledOnly = false;
246
351
  }
247
352
  }
353
+
354
+ const thisTileDoneLoading = tileImagery.processStateMachine(
355
+ tile,
356
+ frameState,
357
+ skipLoading,
358
+ );
359
+ isDoneLoading = isDoneLoading && thisTileDoneLoading;
360
+
361
+ // The imagery is renderable as soon as we have any renderable imagery for this region.
362
+ isAnyTileLoaded =
363
+ isAnyTileLoaded ||
364
+ thisTileDoneLoading ||
365
+ defined(tileImagery.readyImagery);
366
+
367
+ isUpsampledOnly =
368
+ isUpsampledOnly &&
369
+ defined(tileImagery.loadingImagery) &&
370
+ (tileImagery.loadingImagery.state === ImageryState.FAILED ||
371
+ tileImagery.loadingImagery.state === ImageryState.INVALID);
248
372
  }
249
- tile._loadedCallbacks = newCallbacks;
250
373
 
251
- tile.state = QuadtreeTileLoadState.DONE;
374
+ tile.upsampledFromParent = isUpsampledOnly;
375
+
376
+ // Allow rendering if any available layers are loaded
377
+ tile.renderable = tile.renderable && (isAnyTileLoaded || isDoneLoading);
378
+
379
+ return isDoneLoading;
252
380
  }
253
381
 
254
- // Once a tile is renderable, it stays renderable, because doing otherwise would
255
- // cause detail (or maybe even the entire globe) to vanish when adding a new
256
- // imagery layer. `GlobeSurfaceTileProvider._onLayerAdded` sets renderable to
257
- // false for all affected tiles that are not currently being rendered.
258
- if (wasAlreadyRenderable) {
259
- tile.renderable = true;
382
+ /**
383
+ * @param {Ellipsoid} ellipsoid
384
+ * @param {FrameState} frameState
385
+ */
386
+ addGeodeticSurfaceNormals(ellipsoid, frameState) {
387
+ toggleGeodeticSurfaceNormals(this, true, ellipsoid, frameState);
260
388
  }
261
- };
262
389
 
263
- GlobeSurfaceTile.prototype.processImagery = function (
264
- tile,
265
- terrainProvider,
266
- frameState,
267
- skipLoading,
268
- ) {
269
- const surfaceTile = tile.data;
270
- let isUpsampledOnly = tile.upsampledFromParent;
271
- let isAnyTileLoaded = false;
272
- let isDoneLoading = true;
273
-
274
- // Transition imagery states
275
- const tileImageryCollection = surfaceTile.imagery;
276
- let i, len;
277
- for (i = 0, len = tileImageryCollection.length; i < len; ++i) {
278
- const tileImagery = tileImageryCollection[i];
279
- if (!defined(tileImagery.loadingImagery)) {
280
- isUpsampledOnly = false;
281
- continue;
390
+ /**
391
+ * @param {FrameState} frameState
392
+ */
393
+ removeGeodeticSurfaceNormals(frameState) {
394
+ toggleGeodeticSurfaceNormals(this, false, undefined, frameState);
395
+ }
396
+
397
+ /**
398
+ * @param {QuadtreeTile} tile
399
+ * @param {FrameState} frameState
400
+ * @param {QuadtreePrimitive} quadtree
401
+ */
402
+ updateExaggeration(tile, frameState, quadtree) {
403
+ const surfaceTile = this;
404
+ const mesh = surfaceTile.renderedMesh;
405
+ if (mesh === undefined) {
406
+ return;
282
407
  }
283
408
 
284
- if (tileImagery.loadingImagery.state === ImageryState.PLACEHOLDER) {
285
- const imageryLayer = tileImagery.loadingImagery.imageryLayer;
286
- if (imageryLayer.ready) {
287
- // Remove the placeholder and add the actual skeletons (if any)
288
- // at the same position. Then continue the loop at the same index.
289
- tileImagery.freeResources();
290
- tileImageryCollection.splice(i, 1);
291
- imageryLayer._createTileImagerySkeletons(tile, terrainProvider, i);
292
- --i;
293
- len = tileImageryCollection.length;
294
- continue;
295
- } else {
296
- isUpsampledOnly = false;
409
+ // Check the tile's terrain encoding to see if it has been exaggerated yet
410
+ const exaggeration = frameState.verticalExaggeration;
411
+ const exaggerationRelativeHeight =
412
+ frameState.verticalExaggerationRelativeHeight;
413
+ const hasExaggerationScale = exaggeration !== 1.0;
414
+
415
+ const encoding = mesh.encoding;
416
+ const encodingExaggerationScaleChanged =
417
+ encoding.exaggeration !== exaggeration;
418
+ const encodingRelativeHeightChanged =
419
+ encoding.exaggerationRelativeHeight !== exaggerationRelativeHeight;
420
+ const exaggerationChanged =
421
+ encodingExaggerationScaleChanged || encodingRelativeHeightChanged;
422
+
423
+ if (exaggerationChanged) {
424
+ // Turning exaggeration scale on/off requires adding or removing geodetic surface normals
425
+ // Relative height only translates, so it has no effect on normals
426
+ if (encodingExaggerationScaleChanged) {
427
+ if (hasExaggerationScale && !encoding.hasGeodeticSurfaceNormals) {
428
+ const ellipsoid = tile.tilingScheme.ellipsoid;
429
+ surfaceTile.addGeodeticSurfaceNormals(ellipsoid, frameState);
430
+ } else if (
431
+ !hasExaggerationScale &&
432
+ encoding.hasGeodeticSurfaceNormals
433
+ ) {
434
+ surfaceTile.removeGeodeticSurfaceNormals(frameState);
435
+ }
436
+ }
437
+
438
+ encoding.exaggeration = exaggeration;
439
+ encoding.exaggerationRelativeHeight = exaggerationRelativeHeight;
440
+
441
+ // Notify the quadtree that this tile's height has changed
442
+ if (quadtree !== undefined) {
443
+ quadtree._tileToUpdateHeights.push(tile);
444
+ const customData = tile.customData;
445
+ for (const data of customData) {
446
+ // Restart the level so that a height update is triggered
447
+ data.level = -1;
448
+ }
297
449
  }
450
+
451
+ mesh.updateExaggeration(exaggeration, exaggerationRelativeHeight);
298
452
  }
453
+ }
299
454
 
300
- const thisTileDoneLoading = tileImagery.processStateMachine(
301
- tile,
302
- frameState,
303
- skipLoading,
304
- );
305
- isDoneLoading = isDoneLoading && thisTileDoneLoading;
455
+ /**
456
+ * @param {SceneMode} mode
457
+ */
458
+ updateSceneMode(mode) {
459
+ const surfaceTile = this;
460
+ const mesh = surfaceTile.renderedMesh;
461
+ if (mesh === undefined) {
462
+ return;
463
+ }
464
+
465
+ mesh.updateSceneMode(mode);
466
+ }
306
467
 
307
- // The imagery is renderable as soon as we have any renderable imagery for this region.
308
- isAnyTileLoaded =
309
- isAnyTileLoaded ||
310
- thisTileDoneLoading ||
311
- defined(tileImagery.readyImagery);
468
+ /**
469
+ * @param {Context} context
470
+ * @param {TerrainMesh} mesh
471
+ */
472
+ static _createVertexArrayForMesh(context, mesh) {
473
+ const typedArray = mesh.vertices;
474
+ const buffer = Buffer.createVertexBuffer({
475
+ context: context,
476
+ typedArray: typedArray,
477
+ usage: BufferUsage.STATIC_DRAW,
478
+ });
479
+ const attributes = mesh.encoding.getAttributes(buffer);
480
+
481
+ const indexBuffers = mesh.indices.indexBuffers || {};
482
+ let indexBuffer = indexBuffers[context.id];
483
+ if (!defined(indexBuffer) || indexBuffer.isDestroyed()) {
484
+ const indices = mesh.indices;
485
+ indexBuffer = Buffer.createIndexBuffer({
486
+ context: context,
487
+ typedArray: indices,
488
+ usage: BufferUsage.STATIC_DRAW,
489
+ // @ts-expect-error https://github.com/CesiumGS/cesium/issues/13420
490
+ indexDatatype: IndexDatatype.fromSizeInBytes(indices.BYTES_PER_ELEMENT),
491
+ });
492
+ indexBuffer.vertexArrayDestroyable = false;
493
+ indexBuffer.referenceCount = 1;
494
+ indexBuffers[context.id] = indexBuffer;
495
+ mesh.indices.indexBuffers = indexBuffers;
496
+ } else {
497
+ ++indexBuffer.referenceCount;
498
+ }
312
499
 
313
- isUpsampledOnly =
314
- isUpsampledOnly &&
315
- defined(tileImagery.loadingImagery) &&
316
- (tileImagery.loadingImagery.state === ImageryState.FAILED ||
317
- tileImagery.loadingImagery.state === ImageryState.INVALID);
500
+ return new VertexArray({
501
+ context: context,
502
+ attributes: attributes,
503
+ indexBuffer: indexBuffer,
504
+ });
318
505
  }
319
506
 
320
- tile.upsampledFromParent = isUpsampledOnly;
507
+ /**
508
+ * @param {VertexArray} vertexArray
509
+ */
510
+ static _freeVertexArray(vertexArray) {
511
+ if (defined(vertexArray)) {
512
+ // @ts-expect-error Missing types.
513
+ const indexBuffer = vertexArray.indexBuffer;
321
514
 
322
- // Allow rendering if any available layers are loaded
323
- tile.renderable = tile.renderable && (isAnyTileLoaded || isDoneLoading);
515
+ if (!vertexArray.isDestroyed()) {
516
+ vertexArray.destroy();
517
+ }
324
518
 
325
- return isDoneLoading;
326
- };
519
+ if (
520
+ defined(indexBuffer) &&
521
+ !indexBuffer.isDestroyed() &&
522
+ defined(indexBuffer.referenceCount)
523
+ ) {
524
+ --indexBuffer.referenceCount;
525
+ if (indexBuffer.referenceCount === 0) {
526
+ indexBuffer.destroy();
527
+ }
528
+ }
529
+ }
530
+ }
531
+
532
+ /**
533
+ * @param {QuadtreeTile} tile
534
+ */
535
+ _findAncestorTileWithTerrainData(tile) {
536
+ let sourceTile = tile.parent;
537
+
538
+ while (
539
+ defined(sourceTile) &&
540
+ (!defined(sourceTile.data) ||
541
+ !defined(sourceTile.data.terrainData) ||
542
+ sourceTile.data.terrainData.wasCreatedByUpsampling())
543
+ ) {
544
+ sourceTile = sourceTile.parent;
545
+ }
546
+
547
+ return sourceTile;
548
+ }
327
549
 
550
+ /**
551
+ * @param {QuadtreeTile} tile
552
+ * @param {QuadtreeTile} sourceTile
553
+ * @param {Cartesian4} result
554
+ */
555
+ _computeWaterMaskTranslationAndScale(tile, sourceTile, result) {
556
+ const sourceTileRectangle = sourceTile.rectangle;
557
+ const tileRectangle = tile.rectangle;
558
+ const tileWidth = tileRectangle.width;
559
+ const tileHeight = tileRectangle.height;
560
+
561
+ const scaleX = tileWidth / sourceTileRectangle.width;
562
+ const scaleY = tileHeight / sourceTileRectangle.height;
563
+ result.x =
564
+ (scaleX * (tileRectangle.west - sourceTileRectangle.west)) / tileWidth;
565
+ result.y =
566
+ (scaleY * (tileRectangle.south - sourceTileRectangle.south)) / tileHeight;
567
+ result.z = scaleX;
568
+ result.w = scaleY;
569
+
570
+ return result;
571
+ }
572
+ }
573
+
574
+ /**
575
+ * @param {GlobeSurfaceTile} surfaceTile
576
+ * @param {boolean} enabled
577
+ * @param {Ellipsoid} ellipsoid
578
+ * @param {FrameState} frameState
579
+ * @ignore
580
+ */
328
581
  function toggleGeodeticSurfaceNormals(
329
582
  surfaceTile,
330
583
  enabled,
@@ -376,85 +629,22 @@ function toggleGeodeticSurfaceNormals(
376
629
  surfaceTile.wireframeVertexArray = undefined;
377
630
  }
378
631
 
379
- GlobeSurfaceTile.prototype.addGeodeticSurfaceNormals = function (
380
- ellipsoid,
381
- frameState,
382
- ) {
383
- toggleGeodeticSurfaceNormals(this, true, ellipsoid, frameState);
384
- };
385
-
386
- GlobeSurfaceTile.prototype.removeGeodeticSurfaceNormals = function (
387
- frameState,
388
- ) {
389
- toggleGeodeticSurfaceNormals(this, false, undefined, frameState);
390
- };
391
-
392
- GlobeSurfaceTile.prototype.updateExaggeration = function (
632
+ /**
633
+ * @param {QuadtreeTile} tile
634
+ * @param {TerrainProvider} terrainProvider
635
+ * @param {VectorProvider} vectorProvider
636
+ * @param {ImageryLayerCollection} imageryLayerCollection
637
+ * @ignore
638
+ */
639
+ function prepareNewTile(
393
640
  tile,
394
- frameState,
395
- quadtree,
641
+ terrainProvider,
642
+ vectorProvider,
643
+ imageryLayerCollection,
396
644
  ) {
397
- const surfaceTile = this;
398
- const mesh = surfaceTile.renderedMesh;
399
- if (mesh === undefined) {
400
- return;
401
- }
402
-
403
- // Check the tile's terrain encoding to see if it has been exaggerated yet
404
- const exaggeration = frameState.verticalExaggeration;
405
- const exaggerationRelativeHeight =
406
- frameState.verticalExaggerationRelativeHeight;
407
- const hasExaggerationScale = exaggeration !== 1.0;
408
-
409
- const encoding = mesh.encoding;
410
- const encodingExaggerationScaleChanged =
411
- encoding.exaggeration !== exaggeration;
412
- const encodingRelativeHeightChanged =
413
- encoding.exaggerationRelativeHeight !== exaggerationRelativeHeight;
414
- const exaggerationChanged =
415
- encodingExaggerationScaleChanged || encodingRelativeHeightChanged;
416
-
417
- if (exaggerationChanged) {
418
- // Turning exaggeration scale on/off requires adding or removing geodetic surface normals
419
- // Relative height only translates, so it has no effect on normals
420
- if (encodingExaggerationScaleChanged) {
421
- if (hasExaggerationScale && !encoding.hasGeodeticSurfaceNormals) {
422
- const ellipsoid = tile.tilingScheme.ellipsoid;
423
- surfaceTile.addGeodeticSurfaceNormals(ellipsoid, frameState);
424
- } else if (!hasExaggerationScale && encoding.hasGeodeticSurfaceNormals) {
425
- surfaceTile.removeGeodeticSurfaceNormals(frameState);
426
- }
427
- }
428
-
429
- encoding.exaggeration = exaggeration;
430
- encoding.exaggerationRelativeHeight = exaggerationRelativeHeight;
431
-
432
- // Notify the quadtree that this tile's height has changed
433
- if (quadtree !== undefined) {
434
- quadtree._tileToUpdateHeights.push(tile);
435
- const customData = tile.customData;
436
- for (const data of customData) {
437
- // Restart the level so that a height update is triggered
438
- data.level = -1;
439
- }
440
- }
441
-
442
- mesh.updateExaggeration(exaggeration, exaggerationRelativeHeight);
443
- }
444
- };
445
-
446
- GlobeSurfaceTile.prototype.updateSceneMode = function (mode) {
447
- const surfaceTile = this;
448
- const mesh = surfaceTile.renderedMesh;
449
- if (mesh === undefined) {
450
- return;
451
- }
452
-
453
- mesh.updateSceneMode(mode);
454
- };
455
-
456
- function prepareNewTile(tile, terrainProvider, imageryLayerCollection) {
645
+ /** @type {boolean} */
457
646
  let available = terrainProvider.getTileDataAvailable(
647
+ // @ts-expect-error Missing types.
458
648
  tile.x,
459
649
  tile.y,
460
650
  tile.level,
@@ -463,7 +653,7 @@ function prepareNewTile(tile, terrainProvider, imageryLayerCollection) {
463
653
  if (!defined(available) && defined(tile.parent)) {
464
654
  // Provider doesn't know if this tile is available. Does the parent tile know?
465
655
  const parent = tile.parent;
466
- const parentSurfaceTile = parent.data;
656
+ const parentSurfaceTile = /** @type {GlobeSurfaceTile} */ (parent.data);
467
657
  if (defined(parentSurfaceTile) && defined(parentSurfaceTile.terrainData)) {
468
658
  available = parentSurfaceTile.terrainData.isChildAvailable(
469
659
  parent.x,
@@ -474,12 +664,15 @@ function prepareNewTile(tile, terrainProvider, imageryLayerCollection) {
474
664
  }
475
665
  }
476
666
 
667
+ const surfaceTile = /** @type {GlobeSurfaceTile} */ (tile.data);
668
+
477
669
  if (available === false) {
478
670
  // This tile is not available, so mark it failed so we start upsampling right away.
479
- tile.data.terrainState = TerrainState.FAILED;
671
+ surfaceTile.terrainState = TerrainState.FAILED;
480
672
  }
481
673
 
482
674
  // Map imagery tiles to this terrain tile
675
+ // @ts-expect-error Missing types.
483
676
  for (let i = 0, len = imageryLayerCollection.length; i < len; ++i) {
484
677
  const layer = imageryLayerCollection.get(i);
485
678
  if (layer.show) {
@@ -488,15 +681,26 @@ function prepareNewTile(tile, terrainProvider, imageryLayerCollection) {
488
681
  }
489
682
  }
490
683
 
684
+ /**
685
+ * @param {QuadtreeTile} tile
686
+ * @param {FrameState} frameState
687
+ * @param {TerrainProvider} terrainProvider
688
+ * @param {VectorProvider} vectorProvider
689
+ * @param {ImageryLayerCollection} imageryLayerCollection
690
+ * @param {QuadtreePrimitive} quadtree
691
+ * @param {*} vertexArraysToDestroy
692
+ * @ignore
693
+ */
491
694
  function processTerrainStateMachine(
492
695
  tile,
493
696
  frameState,
494
697
  terrainProvider,
698
+ vectorProvider,
495
699
  imageryLayerCollection,
496
700
  quadtree,
497
701
  vertexArraysToDestroy,
498
702
  ) {
499
- const surfaceTile = tile.data;
703
+ const surfaceTile = /** @type {GlobeSurfaceTile} */ (tile.data);
500
704
 
501
705
  // If this tile is FAILED, we'll need to upsample from the parent. If the parent isn't
502
706
  // ready for that, let's push it along.
@@ -505,15 +709,19 @@ function processTerrainStateMachine(
505
709
  surfaceTile.terrainState === TerrainState.FAILED &&
506
710
  parent !== undefined
507
711
  ) {
712
+ const parentSurfaceTile = /** @type {GlobeSurfaceTile|undefined} */ (
713
+ parent.data
714
+ );
508
715
  const parentReady =
509
- parent.data !== undefined &&
510
- parent.data.terrainData !== undefined &&
511
- parent.data.terrainData.canUpsample !== false;
716
+ parentSurfaceTile !== undefined &&
717
+ parentSurfaceTile.terrainData !== undefined &&
718
+ parentSurfaceTile.terrainData.canUpsample !== false;
512
719
  if (!parentReady) {
513
720
  GlobeSurfaceTile.processStateMachine(
514
721
  parent,
515
722
  frameState,
516
723
  terrainProvider,
724
+ vectorProvider,
517
725
  imageryLayerCollection,
518
726
  quadtree,
519
727
  vertexArraysToDestroy,
@@ -573,6 +781,7 @@ function processTerrainStateMachine(
573
781
  if (
574
782
  surfaceTile.terrainState >= TerrainState.RECEIVED &&
575
783
  surfaceTile.waterMaskTexture === undefined &&
784
+ // @ts-expect-error Missing types.
576
785
  terrainProvider.hasWaterMask
577
786
  ) {
578
787
  const terrainData = surfaceTile.terrainData;
@@ -580,8 +789,11 @@ function processTerrainStateMachine(
580
789
  createWaterMaskTextureIfNeeded(frameState.context, surfaceTile);
581
790
  } else {
582
791
  const sourceTile = surfaceTile._findAncestorTileWithTerrainData(tile);
583
- if (defined(sourceTile) && defined(sourceTile.data.waterMaskTexture)) {
584
- surfaceTile.waterMaskTexture = sourceTile.data.waterMaskTexture;
792
+ const sourceSurfaceTile = /** @type {GlobeSurfaceTile|undefined} */ (
793
+ sourceTile?.data
794
+ );
795
+ if (defined(sourceTile) && defined(sourceSurfaceTile.waterMaskTexture)) {
796
+ surfaceTile.waterMaskTexture = sourceSurfaceTile.waterMaskTexture;
585
797
  ++surfaceTile.waterMaskTexture.referenceCount;
586
798
  surfaceTile._computeWaterMaskTranslationAndScale(
587
799
  tile,
@@ -593,6 +805,16 @@ function processTerrainStateMachine(
593
805
  }
594
806
  }
595
807
 
808
+ /**
809
+ * @param {GlobeSurfaceTile} surfaceTile
810
+ * @param {QuadtreeTile} tile
811
+ * @param {FrameState} frameState
812
+ * @param {TerrainProvider} terrainProvider
813
+ * @param {number} x
814
+ * @param {number} y
815
+ * @param {number} level
816
+ * @ignore
817
+ */
596
818
  function upsample(surfaceTile, tile, frameState, terrainProvider, x, y, level) {
597
819
  const parent = tile.parent;
598
820
  if (!parent) {
@@ -601,7 +823,8 @@ function upsample(surfaceTile, tile, frameState, terrainProvider, x, y, level) {
601
823
  return;
602
824
  }
603
825
 
604
- const sourceData = parent.data.terrainData;
826
+ const parentSurfaceTile = /** @type {GlobeSurfaceTile} */ (parent.data);
827
+ const sourceData = parentSurfaceTile.terrainData;
605
828
  const sourceX = parent.x;
606
829
  const sourceY = parent.y;
607
830
  const sourceLevel = parent.level;
@@ -612,6 +835,7 @@ function upsample(surfaceTile, tile, frameState, terrainProvider, x, y, level) {
612
835
  }
613
836
 
614
837
  const terrainDataPromise = sourceData.upsample(
838
+ // @ts-expect-error Missing types.
615
839
  terrainProvider.tilingScheme,
616
840
  sourceX,
617
841
  sourceY,
@@ -642,7 +866,16 @@ function upsample(surfaceTile, tile, frameState, terrainProvider, x, y, level) {
642
866
  });
643
867
  }
644
868
 
869
+ /**
870
+ * @param {GlobeSurfaceTile} surfaceTile
871
+ * @param {TerrainProvider} terrainProvider
872
+ * @param {number} x
873
+ * @param {number} y
874
+ * @param {number} level
875
+ * @ignore
876
+ */
645
877
  function requestTileGeometry(surfaceTile, terrainProvider, x, y, level) {
878
+ /** @param {HeightmapTerrainData} terrainData */
646
879
  function success(terrainData) {
647
880
  if (!defined(terrainData)) {
648
881
  // Throttled due to low priority - try again later.
@@ -656,6 +889,7 @@ function requestTileGeometry(surfaceTile, terrainProvider, x, y, level) {
656
889
  surfaceTile.request = undefined;
657
890
  }
658
891
 
892
+ /** @param {Error} error */
659
893
  function failure(error) {
660
894
  if (surfaceTile.request.state === RequestState.CANCELLED) {
661
895
  // Cancelled due to low priority - try again later.
@@ -671,15 +905,19 @@ function requestTileGeometry(surfaceTile, terrainProvider, x, y, level) {
671
905
  surfaceTile.request = undefined;
672
906
 
673
907
  const message = `Failed to obtain terrain tile X: ${x} Y: ${y} Level: ${level}. Error message: "${error}"`;
908
+ // @ts-expect-error Missing types.
674
909
  terrainProvider._requestError = TileProviderError.reportError(
910
+ // @ts-expect-error Missing types.
675
911
  terrainProvider._requestError,
676
912
  terrainProvider,
913
+ // @ts-expect-error Missing types.
677
914
  terrainProvider.errorEvent,
678
915
  message,
679
916
  x,
680
917
  y,
681
918
  level,
682
919
  );
920
+ // @ts-expect-error Missing types.
683
921
  if (terrainProvider._requestError.retry) {
684
922
  doRequest();
685
923
  }
@@ -695,6 +933,7 @@ function requestTileGeometry(surfaceTile, terrainProvider, x, y, level) {
695
933
  surfaceTile.request = request;
696
934
 
697
935
  const requestPromise = terrainProvider.requestTileGeometry(
936
+ // @ts-expect-error Missing types.
698
937
  x,
699
938
  y,
700
939
  level,
@@ -732,7 +971,17 @@ const scratchCreateMeshOptions = {
732
971
  throttle: true,
733
972
  };
734
973
 
974
+ /**
975
+ * @param {GlobeSurfaceTile} surfaceTile
976
+ * @param {FrameState} frameState
977
+ * @param {TerrainProvider} terrainProvider
978
+ * @param {number} x
979
+ * @param {number} y
980
+ * @param {number} level
981
+ * @ignore
982
+ */
735
983
  function transform(surfaceTile, frameState, terrainProvider, x, y, level) {
984
+ // @ts-expect-error Missing types.
736
985
  const tilingScheme = terrainProvider.tilingScheme;
737
986
 
738
987
  const createMeshOptions = scratchCreateMeshOptions;
@@ -765,61 +1014,16 @@ function transform(surfaceTile, frameState, terrainProvider, x, y, level) {
765
1014
  });
766
1015
  }
767
1016
 
768
- GlobeSurfaceTile._createVertexArrayForMesh = function (context, mesh) {
769
- const typedArray = mesh.vertices;
770
- const buffer = Buffer.createVertexBuffer({
771
- context: context,
772
- typedArray: typedArray,
773
- usage: BufferUsage.STATIC_DRAW,
774
- });
775
- const attributes = mesh.encoding.getAttributes(buffer);
776
-
777
- const indexBuffers = mesh.indices.indexBuffers || {};
778
- let indexBuffer = indexBuffers[context.id];
779
- if (!defined(indexBuffer) || indexBuffer.isDestroyed()) {
780
- const indices = mesh.indices;
781
- indexBuffer = Buffer.createIndexBuffer({
782
- context: context,
783
- typedArray: indices,
784
- usage: BufferUsage.STATIC_DRAW,
785
- indexDatatype: IndexDatatype.fromSizeInBytes(indices.BYTES_PER_ELEMENT),
786
- });
787
- indexBuffer.vertexArrayDestroyable = false;
788
- indexBuffer.referenceCount = 1;
789
- indexBuffers[context.id] = indexBuffer;
790
- mesh.indices.indexBuffers = indexBuffers;
791
- } else {
792
- ++indexBuffer.referenceCount;
793
- }
794
-
795
- return new VertexArray({
796
- context: context,
797
- attributes: attributes,
798
- indexBuffer: indexBuffer,
799
- });
800
- };
801
-
802
- GlobeSurfaceTile._freeVertexArray = function (vertexArray) {
803
- if (defined(vertexArray)) {
804
- const indexBuffer = vertexArray.indexBuffer;
805
-
806
- if (!vertexArray.isDestroyed()) {
807
- vertexArray.destroy();
808
- }
809
-
810
- if (
811
- defined(indexBuffer) &&
812
- !indexBuffer.isDestroyed() &&
813
- defined(indexBuffer.referenceCount)
814
- ) {
815
- --indexBuffer.referenceCount;
816
- if (indexBuffer.referenceCount === 0) {
817
- indexBuffer.destroy();
818
- }
819
- }
820
- }
821
- };
822
-
1017
+ /**
1018
+ * @param {GlobeSurfaceTile} surfaceTile
1019
+ * @param {Context} context
1020
+ * @param {TerrainProvider} terrainProvider
1021
+ * @param {number} x
1022
+ * @param {number} y
1023
+ * @param {number} level
1024
+ * @param {*} vertexArraysToDestroy
1025
+ * @ignore
1026
+ */
823
1027
  function createResources(
824
1028
  surfaceTile,
825
1029
  context,
@@ -838,6 +1042,10 @@ function createResources(
838
1042
  surfaceTile.fill && surfaceTile.fill.destroy(vertexArraysToDestroy);
839
1043
  }
840
1044
 
1045
+ /**
1046
+ * @param {Context} context
1047
+ * @ignore
1048
+ */
841
1049
  function getContextWaterMaskData(context) {
842
1050
  let data = context.cache.tile_waterMaskData;
843
1051
 
@@ -875,6 +1083,11 @@ function getContextWaterMaskData(context) {
875
1083
  return data;
876
1084
  }
877
1085
 
1086
+ /**
1087
+ * @param {Context} context
1088
+ * @param {GlobeSurfaceTile} surfaceTile
1089
+ * @ignore
1090
+ */
878
1091
  function createWaterMaskTextureIfNeeded(context, surfaceTile) {
879
1092
  const waterMask = surfaceTile.terrainData.waterMask;
880
1093
  const waterMaskData = getContextWaterMaskData(context);
@@ -928,40 +1141,4 @@ function createWaterMaskTextureIfNeeded(context, surfaceTile) {
928
1141
  );
929
1142
  }
930
1143
 
931
- GlobeSurfaceTile.prototype._findAncestorTileWithTerrainData = function (tile) {
932
- let sourceTile = tile.parent;
933
-
934
- while (
935
- defined(sourceTile) &&
936
- (!defined(sourceTile.data) ||
937
- !defined(sourceTile.data.terrainData) ||
938
- sourceTile.data.terrainData.wasCreatedByUpsampling())
939
- ) {
940
- sourceTile = sourceTile.parent;
941
- }
942
-
943
- return sourceTile;
944
- };
945
-
946
- GlobeSurfaceTile.prototype._computeWaterMaskTranslationAndScale = function (
947
- tile,
948
- sourceTile,
949
- result,
950
- ) {
951
- const sourceTileRectangle = sourceTile.rectangle;
952
- const tileRectangle = tile.rectangle;
953
- const tileWidth = tileRectangle.width;
954
- const tileHeight = tileRectangle.height;
955
-
956
- const scaleX = tileWidth / sourceTileRectangle.width;
957
- const scaleY = tileHeight / sourceTileRectangle.height;
958
- result.x =
959
- (scaleX * (tileRectangle.west - sourceTileRectangle.west)) / tileWidth;
960
- result.y =
961
- (scaleY * (tileRectangle.south - sourceTileRectangle.south)) / tileHeight;
962
- result.z = scaleX;
963
- result.w = scaleY;
964
-
965
- return result;
966
- };
967
1144
  export default GlobeSurfaceTile;