@hztxi/cesium-engine 25.0.6 → 26.2.1

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 (484) hide show
  1. package/Build/Workers/chunk-2GJAWJJT.js +1344 -0
  2. package/Build/Workers/chunk-2J2VS5RI.js +288 -0
  3. package/Build/Workers/chunk-2NCNUVAT.js +56 -0
  4. package/Build/Workers/chunk-2ZYRUVVU.js +301 -0
  5. package/Build/Workers/chunk-36IU7N4V.js +1284 -0
  6. package/Build/Workers/chunk-375SHKGW.js +44 -0
  7. package/Build/Workers/chunk-3BDLET5S.js +198 -0
  8. package/Build/Workers/chunk-3PRHI4KX.js +241 -0
  9. package/Build/Workers/chunk-3R6E2SH4.js +672 -0
  10. package/Build/Workers/chunk-3ZKKXEXL.js +415 -0
  11. package/Build/Workers/chunk-47KVKPTO.js +415 -0
  12. package/Build/Workers/chunk-4N227IPR.js +973 -0
  13. package/Build/Workers/chunk-4P6OAPBM.js +97 -0
  14. package/Build/Workers/chunk-4ZOLEPZK.js +519 -0
  15. package/Build/Workers/chunk-5EF3WWQG.js +352 -0
  16. package/Build/Workers/chunk-5FYUSABU.js +945 -0
  17. package/Build/Workers/chunk-5I76476T.js +288 -0
  18. package/Build/Workers/chunk-5PBZKBAP.js +511 -0
  19. package/Build/Workers/chunk-5RVAAW26.js +82 -0
  20. package/Build/Workers/chunk-5VWK76PO.js +511 -0
  21. package/Build/Workers/chunk-5WU37CUJ.js +630 -0
  22. package/Build/Workers/chunk-6EBDN5WS.js +97 -0
  23. package/Build/Workers/chunk-75HIWCEV.js +301 -0
  24. package/Build/Workers/chunk-77DBX23X.js +455 -0
  25. package/Build/Workers/chunk-7AMVPXZY.js +1992 -0
  26. package/Build/Workers/chunk-7BMDD6SM.js +124 -0
  27. package/Build/Workers/chunk-7GQOWCSN.js +959 -0
  28. package/Build/Workers/chunk-7J2ONMKC.js +198 -0
  29. package/Build/Workers/chunk-7MHUHXZZ.js +219 -0
  30. package/Build/Workers/chunk-7MQPHOAS.js +455 -0
  31. package/Build/Workers/chunk-7NJ5O7TP.js +387 -0
  32. package/Build/Workers/chunk-7OME2OKM.js +171 -0
  33. package/Build/Workers/chunk-7Y642MCO.js +352 -0
  34. package/Build/Workers/chunk-7ZFKBLUE.js +1054 -0
  35. package/Build/Workers/chunk-A2BROW3D.js +352 -0
  36. package/Build/Workers/chunk-A7LGY5XS.js +140 -0
  37. package/Build/Workers/chunk-AN2NVYL6.js +1483 -0
  38. package/Build/Workers/chunk-B4XOVZGA.js +476 -0
  39. package/Build/Workers/chunk-B7PT2VL5.js +630 -0
  40. package/Build/Workers/chunk-C6XQGBPV.js +476 -0
  41. package/Build/Workers/chunk-CAEC5DA2.js +57 -0
  42. package/Build/Workers/chunk-CBCOHH5O.js +837 -0
  43. package/Build/Workers/chunk-CDLPLYLV.js +1287 -0
  44. package/Build/Workers/chunk-CEKCKPFN.js +368 -0
  45. package/Build/Workers/chunk-CEMXKBQO.js +1800 -0
  46. package/Build/Workers/chunk-CHMDKP5L.js +2342 -0
  47. package/Build/Workers/chunk-CKW3STKA.js +1067 -0
  48. package/Build/Workers/chunk-CV5RICKT.js +1992 -0
  49. package/Build/Workers/chunk-CWGB3D4Z.js +257 -0
  50. package/Build/Workers/chunk-DBWSISJT.js +56 -0
  51. package/Build/Workers/chunk-DQEUGBGA.js +2719 -0
  52. package/Build/Workers/chunk-DSBSPPPJ.js +1344 -0
  53. package/Build/Workers/chunk-DSGLDRTI.js +278 -0
  54. package/Build/Workers/chunk-DUBE5G2H.js +497 -0
  55. package/Build/Workers/chunk-DXD7OPSP.js +1992 -0
  56. package/Build/Workers/chunk-DXECZBSA.js +368 -0
  57. package/Build/Workers/chunk-DZIRO6ZK.js +682 -0
  58. package/Build/Workers/chunk-E4CRPGX5.js +140 -0
  59. package/Build/Workers/chunk-E4IVMEBH.js +52 -0
  60. package/Build/Workers/chunk-E4PBNWWK.js +58 -0
  61. package/Build/Workers/chunk-E5MWOMVC.js +57 -0
  62. package/Build/Workers/chunk-ECN3VUMA.js +73 -0
  63. package/Build/Workers/chunk-ECSKVHUB.js +476 -0
  64. package/Build/Workers/chunk-EE3XBOQI.js +1483 -0
  65. package/Build/Workers/chunk-EHA2ZDPZ.js +415 -0
  66. package/Build/Workers/chunk-EKEKPAJF.js +454 -0
  67. package/Build/Workers/chunk-EL4B5CSQ.js +162 -0
  68. package/Build/Workers/chunk-EOHKUXPX.js +198 -0
  69. package/Build/Workers/chunk-ERENMHG2.js +754 -0
  70. package/Build/Workers/chunk-ESQGFRLZ.js +163 -0
  71. package/Build/Workers/chunk-FAYBQGKO.js +219 -0
  72. package/Build/Workers/chunk-FGCXPEZM.js +3201 -0
  73. package/Build/Workers/chunk-FHCRXPA6.js +44 -0
  74. package/Build/Workers/chunk-FQ42MT7M.js +58 -0
  75. package/Build/Workers/chunk-FQDYQG4P.js +1284 -0
  76. package/Build/Workers/chunk-FTCBY5HH.js +138 -0
  77. package/Build/Workers/chunk-FV4OWDV4.js +9230 -0
  78. package/Build/Workers/chunk-FYRNNQSL.js +280 -0
  79. package/Build/Workers/chunk-GI5RWJAY.js +101 -0
  80. package/Build/Workers/chunk-GNLMSDRO.js +945 -0
  81. package/Build/Workers/chunk-GVUJ6O3R.js +73 -0
  82. package/Build/Workers/chunk-HCGU7OCG.js +97 -0
  83. package/Build/Workers/chunk-HRIPVWSC.js +58 -0
  84. package/Build/Workers/chunk-IC3BR6SC.js +102 -0
  85. package/Build/Workers/chunk-IU3YAYPT.js +1344 -0
  86. package/Build/Workers/chunk-J7MZR7B2.js +1483 -0
  87. package/Build/Workers/chunk-JMF4ATAS.js +3794 -0
  88. package/Build/Workers/chunk-KEJKMITY.js +82 -0
  89. package/Build/Workers/chunk-KSIEJYNL.js +3822 -0
  90. package/Build/Workers/chunk-KT3GG7AW.js +754 -0
  91. package/Build/Workers/chunk-KW2QZDUS.js +147 -0
  92. package/Build/Workers/chunk-KYCEM22I.js +1800 -0
  93. package/Build/Workers/chunk-L6B5XPBL.js +73 -0
  94. package/Build/Workers/chunk-LGJXN2VP.js +352 -0
  95. package/Build/Workers/chunk-LJTQW46H.js +57 -0
  96. package/Build/Workers/chunk-LMQGYJME.js +672 -0
  97. package/Build/Workers/chunk-LOBYJQA4.js +76 -0
  98. package/Build/Workers/chunk-LOF32O7F.js +163 -0
  99. package/Build/Workers/chunk-LOTIJA7D.js +124 -0
  100. package/Build/Workers/chunk-LY2UG3HV.js +38 -0
  101. package/Build/Workers/chunk-M7Z3MPAX.js +973 -0
  102. package/Build/Workers/chunk-MHNLTQHO.js +3201 -0
  103. package/Build/Workers/chunk-ML7OMD72.js +2342 -0
  104. package/Build/Workers/chunk-NBTGXEMT.js +945 -0
  105. package/Build/Workers/chunk-NCPJBP24.js +140 -0
  106. package/Build/Workers/chunk-NFY5V6MR.js +102 -0
  107. package/Build/Workers/chunk-NQZC37F7.js +38 -0
  108. package/Build/Workers/chunk-O3X3D2Z3.js +352 -0
  109. package/Build/Workers/chunk-OBUIHPKF.js +352 -0
  110. package/Build/Workers/chunk-OYPSUED3.js +1067 -0
  111. package/Build/Workers/chunk-PAEWNYIV.js +138 -0
  112. package/Build/Workers/chunk-PANJ7YH6.js +102 -0
  113. package/Build/Workers/chunk-PCL3Y7H5.js +82 -0
  114. package/Build/Workers/chunk-PIIUGRQD.js +387 -0
  115. package/Build/Workers/chunk-POKD22OT.js +2719 -0
  116. package/Build/Workers/chunk-PQMA7MFS.js +9237 -0
  117. package/Build/Workers/chunk-PURIPUSY.js +682 -0
  118. package/Build/Workers/chunk-QIOOTLWN.js +56 -0
  119. package/Build/Workers/chunk-QQZPPXY4.js +3822 -0
  120. package/Build/Workers/chunk-QUPRALOD.js +101 -0
  121. package/Build/Workers/chunk-QXLQLGL2.js +1067 -0
  122. package/Build/Workers/chunk-RBEVHHXK.js +3201 -0
  123. package/Build/Workers/chunk-RC4YC3VU.js +278 -0
  124. package/Build/Workers/chunk-RGNNWVR6.js +171 -0
  125. package/Build/Workers/chunk-RHO5HV52.js +305 -0
  126. package/Build/Workers/chunk-SBBIEHYT.js +44 -0
  127. package/Build/Workers/chunk-SVCZUP5R.js +837 -0
  128. package/Build/Workers/chunk-SWVZTU6X.js +305 -0
  129. package/Build/Workers/chunk-T3EUPM5A.js +454 -0
  130. package/Build/Workers/chunk-TA6IU2XL.js +171 -0
  131. package/Build/Workers/chunk-TBHW5UME.js +973 -0
  132. package/Build/Workers/chunk-TLSGD5TR.js +280 -0
  133. package/Build/Workers/chunk-TOXDLWKZ.js +368 -0
  134. package/Build/Workers/chunk-TPOX6IOR.js +1054 -0
  135. package/Build/Workers/chunk-TZBM6TAB.js +124 -0
  136. package/Build/Workers/chunk-U2OY6MX6.js +398 -0
  137. package/Build/Workers/chunk-UCY4B5EV.js +288 -0
  138. package/Build/Workers/chunk-ULNBTI6R.js +138 -0
  139. package/Build/Workers/chunk-UMUS2AQQ.js +398 -0
  140. package/Build/Workers/chunk-UZ7GTP2L.js +162 -0
  141. package/Build/Workers/chunk-V52FEPCV.js +754 -0
  142. package/Build/Workers/chunk-VBEXZBG5.js +147 -0
  143. package/Build/Workers/chunk-VC76B6GM.js +959 -0
  144. package/Build/Workers/chunk-VCUOYHWC.js +519 -0
  145. package/Build/Workers/chunk-VJIL5H6K.js +2719 -0
  146. package/Build/Workers/chunk-VMF7KOGY.js +162 -0
  147. package/Build/Workers/chunk-W3C7OHXF.js +387 -0
  148. package/Build/Workers/chunk-W5OCKMPJ.js +101 -0
  149. package/Build/Workers/chunk-WB5GWYDP.js +455 -0
  150. package/Build/Workers/chunk-WN6MAL25.js +682 -0
  151. package/Build/Workers/chunk-WTR7KMQA.js +693 -0
  152. package/Build/Workers/chunk-WTTFMU3P.js +241 -0
  153. package/Build/Workers/chunk-WULONJZC.js +1800 -0
  154. package/Build/Workers/chunk-WZPMAVTV.js +511 -0
  155. package/Build/Workers/chunk-XHT5SVP4.js +52 -0
  156. package/Build/Workers/chunk-XITBARMZ.js +2342 -0
  157. package/Build/Workers/chunk-XLQZNQ4Z.js +163 -0
  158. package/Build/Workers/chunk-XZ6HDXKM.js +76 -0
  159. package/Build/Workers/chunk-Y7KVUJEB.js +219 -0
  160. package/Build/Workers/chunk-Y7NDFEQ3.js +398 -0
  161. package/Build/Workers/chunk-YBBQDYX2.js +301 -0
  162. package/Build/Workers/chunk-YHPYPVAB.js +837 -0
  163. package/Build/Workers/chunk-YNKK6BXY.js +454 -0
  164. package/Build/Workers/chunk-YRAJ74HR.js +305 -0
  165. package/Build/Workers/chunk-YULTZK5O.js +147 -0
  166. package/Build/Workers/chunk-YUNQYP3Z.js +9237 -0
  167. package/Build/Workers/chunk-Z6JV4DZG.js +1046 -0
  168. package/Build/Workers/chunk-Z7BONRW2.js +241 -0
  169. package/Build/Workers/chunk-ZK2R3DEJ.js +1054 -0
  170. package/Build/Workers/chunk-ZTK5EBUI.js +76 -0
  171. package/Build/Workers/chunk-ZZPDORJK.js +56 -0
  172. package/Build/Workers/combineGeometry.js +24 -24
  173. package/Build/Workers/createBoxGeometry.js +18 -18
  174. package/Build/Workers/createBoxOutlineGeometry.js +18 -18
  175. package/Build/Workers/createCircleGeometry.js +26 -26
  176. package/Build/Workers/createCircleOutlineGeometry.js +19 -19
  177. package/Build/Workers/createCoplanarPolygonGeometry.js +39 -39
  178. package/Build/Workers/createCoplanarPolygonOutlineGeometry.js +33 -33
  179. package/Build/Workers/createCorridorGeometry.js +36 -37
  180. package/Build/Workers/createCorridorOutlineGeometry.js +34 -35
  181. package/Build/Workers/createCylinderGeometry.js +20 -20
  182. package/Build/Workers/createCylinderOutlineGeometry.js +20 -20
  183. package/Build/Workers/createEllipseGeometry.js +26 -26
  184. package/Build/Workers/createEllipseOutlineGeometry.js +19 -19
  185. package/Build/Workers/createEllipsoidGeometry.js +19 -19
  186. package/Build/Workers/createEllipsoidOutlineGeometry.js +18 -18
  187. package/Build/Workers/createFrustumGeometry.js +18 -18
  188. package/Build/Workers/createFrustumOutlineGeometry.js +20 -20
  189. package/Build/Workers/createGeometry.js +25 -24
  190. package/Build/Workers/createGroundPolylineGeometry.js +98 -34
  191. package/Build/Workers/createMvtTile.js +111 -19
  192. package/Build/Workers/createPlaneGeometry.js +18 -18
  193. package/Build/Workers/createPlaneOutlineGeometry.js +17 -17
  194. package/Build/Workers/createPolygonGeometry.js +36 -36
  195. package/Build/Workers/createPolygonOutlineGeometry.js +33 -33
  196. package/Build/Workers/createPolylineGeometry.js +28 -28
  197. package/Build/Workers/createPolylineVolumeGeometry.js +38 -36
  198. package/Build/Workers/createPolylineVolumeOutlineGeometry.js +32 -31
  199. package/Build/Workers/createRectangleGeometry.js +29 -29
  200. package/Build/Workers/createRectangleOutlineGeometry.js +23 -23
  201. package/Build/Workers/createSimplePolylineGeometry.js +26 -26
  202. package/Build/Workers/createSphereGeometry.js +19 -19
  203. package/Build/Workers/createSphereOutlineGeometry.js +18 -18
  204. package/Build/Workers/createTaskProcessorWorker.js +3 -3
  205. package/Build/Workers/createVectorTileClampedPolylines.js +14 -14
  206. package/Build/Workers/createVectorTileGeometries.js +24 -24
  207. package/Build/Workers/createVectorTilePoints.js +13 -13
  208. package/Build/Workers/createVectorTilePolygons.js +22 -22
  209. package/Build/Workers/createVectorTilePolylines.js +14 -14
  210. package/Build/Workers/createVerticesFromCesium3DTilesTerrain.js +26 -26
  211. package/Build/Workers/createVerticesFromGoogleEarthEnterpriseBuffer.js +23 -23
  212. package/Build/Workers/createVerticesFromHeightmap.js +23 -23
  213. package/Build/Workers/createVerticesFromQuantizedTerrainMesh.js +21 -21
  214. package/Build/Workers/createWallGeometry.js +26 -26
  215. package/Build/Workers/createWallOutlineGeometry.js +26 -26
  216. package/Build/Workers/decodeDraco.js +10 -10
  217. package/Build/Workers/decodeGoogleEarthEnterprisePacket.js +993 -2334
  218. package/Build/Workers/decodeI3S.js +10 -10
  219. package/Build/Workers/gaussianSplatSorter.js +4 -4
  220. package/Build/Workers/gaussianSplatTextureGenerator.js +4 -4
  221. package/Build/Workers/incrementallyBuildTerrainPicker.js +10 -10
  222. package/Build/Workers/transcodeKTX2.js +6 -6
  223. package/Build/Workers/transferTypedArrayTest.js +1 -1
  224. package/Build/Workers/upsampleQuantizedTerrainMesh.js +23 -23
  225. package/Build/Workers/upsampleVerticesFromCesium3DTilesTerrain.js +26 -26
  226. package/Source/Core/ArcGISTiledElevationTerrainProvider.js +1 -5
  227. package/Source/Core/BoundingRectangle.js +6 -8
  228. package/Source/Core/BoundingSphere.js +0 -3
  229. package/Source/Core/Cartesian2.js +1 -1
  230. package/Source/Core/Cartesian3.js +1 -1
  231. package/Source/Core/Cartesian4.js +1 -1
  232. package/Source/Core/Cesium3DTilesTerrainGeometryProcessor.js +3 -4
  233. package/Source/Core/Color.js +1 -0
  234. package/Source/Core/ComponentDatatype.js +35 -0
  235. package/Source/Core/CoplanarPolygonGeometry.js +2 -2
  236. package/Source/Core/CorridorGeometry.js +2 -4
  237. package/Source/Core/CorridorOutlineGeometry.js +1 -3
  238. package/Source/Core/EarthOrientationParameters.js +2 -2
  239. package/Source/Core/EllipseGeometryLibrary.js +2 -2
  240. package/Source/Core/EllipsoidGeodesic.js +3 -3
  241. package/Source/Core/EllipsoidRhumbLine.js +1 -1
  242. package/Source/Core/GroundPolylineGeometry.js +99 -4
  243. package/Source/Core/Heap.js +1 -1
  244. package/Source/Core/HermitePolynomialApproximation.js +215 -179
  245. package/Source/Core/InterpolationAlgorithm.js +58 -50
  246. package/Source/Core/Ion.js +1 -1
  247. package/Source/Core/JulianDate.js +1 -1
  248. package/Source/Core/LagrangePolynomialApproximation.js +55 -52
  249. package/Source/Core/LinearApproximation.js +69 -66
  250. package/Source/Core/MapProjection.js +1 -0
  251. package/Source/Core/Math.js +59 -0
  252. package/Source/Core/Matrix2.js +3 -3
  253. package/Source/Core/Matrix3.js +3 -3
  254. package/Source/Core/Matrix4.js +1 -1
  255. package/Source/Core/OrthographicFrustum.js +1 -1
  256. package/Source/Core/PerspectiveFrustum.js +1 -1
  257. package/Source/Core/PolygonGeometry.js +2 -2
  258. package/Source/Core/PolygonGeometryLibrary.js +1 -1
  259. package/Source/Core/PolygonOutlineGeometry.js +1 -1
  260. package/Source/Core/PolylineGeometry.js +1 -1
  261. package/Source/Core/PolylinePipeline.js +9 -2
  262. package/Source/Core/PolylineVolumeGeometryLibrary.js +1 -1
  263. package/Source/Core/Rectangle.js +7 -1
  264. package/Source/Core/RectangleOutlineGeometry.js +1 -1
  265. package/Source/Core/Resource.js +1 -1
  266. package/Source/Core/ScreenSpaceEventHandler.js +51 -41
  267. package/Source/Core/SimplePolylineGeometry.js +1 -1
  268. package/Source/Core/TerrainEncoding.js +2 -2
  269. package/Source/Core/TerrainMesh.js +3 -3
  270. package/Source/Core/TerrainPicker.js +180 -168
  271. package/Source/Core/TimeIntervalCollection.js +1 -3
  272. package/Source/Core/Tipsify.js +1 -1
  273. package/Source/Core/Transforms.js +5 -1
  274. package/Source/Core/VectorPipeline.js +1117 -0
  275. package/Source/Core/VectorProvider.js +429 -0
  276. package/Source/Core/WallOutlineGeometry.js +1 -1
  277. package/Source/Core/createColorRamp.js +37 -0
  278. package/Source/Core/getTimestamp.js +4 -2
  279. package/Source/Core/globalTypes.js +25 -0
  280. package/Source/Core/writeTextToCanvas.js +1 -0
  281. package/Source/DataSources/CompositeEntityCollection.js +0 -1
  282. package/Source/DataSources/CzmlDataSource.js +14 -0
  283. package/Source/DataSources/DataSourceDisplay.js +1 -1
  284. package/Source/DataSources/GeoJsonDataSource.js +0 -1
  285. package/Source/DataSources/GeometryVisualizer.js +1 -1
  286. package/Source/DataSources/KmlDataSource.js +529 -557
  287. package/Source/DataSources/PathGraphics.js +8 -1
  288. package/Source/DataSources/PathMode.js +27 -0
  289. package/Source/DataSources/PathVisualizer.js +298 -1
  290. package/Source/DataSources/PolylineGeometryUpdater.js +125 -7
  291. package/Source/DataSources/PolylineVisualizer.js +1 -1
  292. package/Source/DataSources/StaticOutlineGeometryBatch.js +1 -1
  293. package/Source/Renderer/AutomaticUniforms.js +23 -0
  294. package/Source/Renderer/Context.js +9 -3
  295. package/Source/Renderer/DrawCommand.js +22 -0
  296. package/Source/Renderer/Framebuffer.js +4 -0
  297. package/Source/Renderer/Pass.js +11 -9
  298. package/Source/Renderer/Texture.js +12 -1
  299. package/Source/Renderer/UniformState.js +7 -0
  300. package/Source/Renderer/VertexArray.js +1 -1
  301. package/Source/Renderer/createUniform.js +346 -239
  302. package/Source/Renderer/createUniformArray.js +494 -381
  303. package/Source/Scene/ArcGisMapServerImageryProvider.js +0 -5
  304. package/Source/Scene/ArcGisMapService.js +1 -1
  305. package/Source/Scene/Billboard.js +2 -1
  306. package/Source/Scene/BillboardCollection.js +15 -5
  307. package/Source/Scene/BillboardTexture.js +5 -3
  308. package/Source/Scene/BufferPointCollection.js +11 -1
  309. package/Source/Scene/BufferPolygonCollection.js +26 -0
  310. package/Source/Scene/BufferPolylineCollection.js +2 -0
  311. package/Source/Scene/BufferPrimitiveCollection.js +105 -32
  312. package/Source/Scene/Camera.js +137 -8
  313. package/Source/Scene/CameraEventAggregator.js +30 -18
  314. package/Source/Scene/CameraFlightPath.js +17 -0
  315. package/Source/Scene/Cesium3DTile.js +102 -4
  316. package/Source/Scene/Cesium3DTileContent.js +195 -254
  317. package/Source/Scene/Cesium3DTileContentFactory.js +10 -2
  318. package/Source/Scene/Cesium3DTileOptimizations.js +4 -6
  319. package/Source/Scene/Cesium3DTileStyle.js +40 -0
  320. package/Source/Scene/Cesium3DTileset.js +213 -8
  321. package/Source/Scene/Cesium3DTilesetTraversal.js +14 -0
  322. package/Source/Scene/ClippingPlaneCollection.js +4 -4
  323. package/Source/Scene/ClippingPolygon.js +2 -0
  324. package/Source/Scene/ClippingPolygonCollection.js +2 -2
  325. package/Source/Scene/ColumbusWorlds.js +190 -0
  326. package/Source/Scene/Composite3DTileContent.js +254 -292
  327. package/Source/Scene/Controllers/Controller.js +63 -0
  328. package/Source/Scene/Controllers/ControllerHost.js +78 -0
  329. package/Source/Scene/Controllers/HybridScreenSpacePanCameraController.js +106 -0
  330. package/Source/Scene/Controllers/MouseButton.js +32 -0
  331. package/Source/Scene/Controllers/ScreenSpaceElevatorCameraController.js +295 -0
  332. package/Source/Scene/Controllers/ScreenSpaceInputBindings.js +154 -0
  333. package/Source/Scene/Controllers/ScreenSpaceMapCameraController.js +310 -0
  334. package/Source/Scene/Controllers/ScreenSpaceTiltOrbitCameraController.js +642 -0
  335. package/Source/Scene/Controllers/ScreenSpaceZoomCameraController.js +431 -0
  336. package/Source/Scene/Controllers/defaultPickWorldPosition.js +84 -0
  337. package/Source/Scene/DerivedCommand.js +98 -0
  338. package/Source/Scene/EdgeDisplayMode.js +50 -0
  339. package/Source/Scene/EdgeFramebuffer.js +1 -5
  340. package/Source/Scene/Empty3DTileContent.js +100 -132
  341. package/Source/Scene/Expression.js +6 -8
  342. package/Source/Scene/FrameState.js +27 -0
  343. package/Source/Scene/GaussianSplat3DTileContent.js +436 -478
  344. package/Source/Scene/GeoJsonPrimitive.js +874 -0
  345. package/Source/Scene/Geometry3DTileContent.js +151 -185
  346. package/Source/Scene/Globe.js +110 -22
  347. package/Source/Scene/GlobeDepth.js +243 -6
  348. package/Source/Scene/GlobeSurfaceShaderSet.js +637 -540
  349. package/Source/Scene/GlobeSurfaceTile.js +575 -398
  350. package/Source/Scene/GlobeSurfaceTileProvider.js +2289 -1842
  351. package/Source/Scene/GltfBufferViewLoader.js +3 -3
  352. package/Source/Scene/GltfLoader.js +146 -3
  353. package/Source/Scene/GltfLoaderUtil.js +20 -4
  354. package/Source/Scene/GltfPipeline/forEachTextureInMaterial.js +10 -0
  355. package/Source/Scene/GltfPipeline/removeUnusedElements.js +21 -11
  356. package/Source/Scene/GltfSpzLoader.js +1 -1
  357. package/Source/Scene/GltfVertexBufferLoader.js +6 -3
  358. package/Source/Scene/GroundPolylinePrimitive.js +2 -1
  359. package/Source/Scene/I3SDataProvider.js +1 -1
  360. package/Source/Scene/I3SLayer.js +1 -1
  361. package/Source/Scene/I3SNode.js +2 -2
  362. package/Source/Scene/ImageryLayer.js +2 -2
  363. package/Source/Scene/ImageryLayerCollection.js +190 -6
  364. package/Source/Scene/Implicit3DTileContent.js +192 -216
  365. package/Source/Scene/ImplicitTileCoordinates.js +17 -0
  366. package/Source/Scene/IonImageryProvider.js +1 -5
  367. package/Source/Scene/Label.js +4 -4
  368. package/Source/Scene/LabelCollection.js +4 -1
  369. package/Source/Scene/MVTDataProvider.js +555 -0
  370. package/Source/Scene/Material.js +1 -0
  371. package/Source/Scene/Model/B3dmLoader.js +1 -2
  372. package/Source/Scene/Model/EdgeVisibilityPipelineStage.js +82 -312
  373. package/Source/Scene/Model/Extensions/Gpm/GltfGpmLoader.js +4 -0
  374. package/Source/Scene/Model/I3dmLoader.js +1 -1
  375. package/Source/Scene/Model/InstancingPipelineStage.js +4 -7
  376. package/Source/Scene/Model/MaterialPipelineStage.js +124 -1
  377. package/Source/Scene/Model/Model.js +45 -10
  378. package/Source/Scene/Model/Model3DTileContent.js +424 -458
  379. package/Source/Scene/Model/ModelClippingPlanesPipelineStage.js +28 -1
  380. package/Source/Scene/Model/ModelDrawCommand.js +180 -8
  381. package/Source/Scene/Model/ModelDrawCommands.js +4 -0
  382. package/Source/Scene/Model/ModelSceneGraph.js +21 -0
  383. package/Source/Scene/Model/ModelUtility.js +5 -0
  384. package/Source/Scene/Model/PickingPipelineStage.js +29 -0
  385. package/Source/Scene/Model/PrimitiveRenderResources.js +24 -0
  386. package/Source/Scene/Model/createVectorTileBuffersFromModelComponents.js +645 -153
  387. package/Source/Scene/ModelComponents.js +112 -0
  388. package/Source/Scene/Multiple3DTileContent.js +291 -334
  389. package/Source/Scene/MvtLabelCandidates.js +295 -0
  390. package/Source/Scene/MvtLabelManager.js +1069 -0
  391. package/Source/Scene/Picking.js +19 -3
  392. package/Source/Scene/PlanarFillIdFramebuffer.js +172 -0
  393. package/Source/Scene/PntsParser.js +1 -1
  394. package/Source/Scene/Polyline.js +32 -5
  395. package/Source/Scene/PolylineCollection.js +39 -0
  396. package/Source/Scene/PostProcessStage.js +4 -2
  397. package/Source/Scene/Primitive.js +12 -13
  398. package/Source/Scene/PrimitivePipeline.js +158 -28
  399. package/Source/Scene/QuadtreePrimitive.js +3 -2
  400. package/Source/Scene/ResourceCache.js +7 -4
  401. package/Source/Scene/ResourceCacheKey.js +21 -18
  402. package/Source/Scene/Scene.js +655 -6
  403. package/Source/Scene/SceneTransforms.js +18 -0
  404. package/Source/Scene/ScreenSpaceCameraController.js +12 -3
  405. package/Source/Scene/ShadowMap.js +9 -3
  406. package/Source/Scene/ShadowMapShader.js +50 -2
  407. package/Source/Scene/SnapFramebuffer.js +121 -0
  408. package/Source/Scene/Snapping.js +184 -0
  409. package/Source/Scene/TerrainFillMesh.js +3 -2
  410. package/Source/Scene/Tileset3DTileContent.js +113 -146
  411. package/Source/Scene/UrlTemplate3DTilesDataProvider.js +543 -0
  412. package/Source/Scene/Vector3DTileContent.js +207 -237
  413. package/Source/Scene/VectorGltf3DTileContent.js +185 -45
  414. package/Source/Scene/View.js +10 -8
  415. package/Source/Scene/VoxelPrimitive.js +159 -175
  416. package/Source/Scene/VoxelProvider.js +64 -91
  417. package/Source/Scene/VoxelTraversal.js +1 -1
  418. package/Source/Scene/buildVectorGltfFromMVT.js +1208 -0
  419. package/Source/Scene/buildVoxelCustomShader.js +199 -0
  420. package/Source/Scene/createElevationBandMaterial.js +1 -1
  421. package/Source/Scene/decodeMVT.js +877 -0
  422. package/Source/Scene/findMeshoptExtension.js +23 -0
  423. package/Source/Scene/renderBufferPointCollection.js +114 -64
  424. package/Source/Scene/renderBufferPolygonCollection.js +245 -53
  425. package/Source/Scene/renderBufferPolylineCollection.js +271 -145
  426. package/Source/Shaders/BillboardCollectionVS.glsl +23 -25
  427. package/Source/Shaders/BillboardCollectionVS.js +23 -25
  428. package/Source/Shaders/BufferPointMaterialFS.glsl +1 -0
  429. package/Source/Shaders/BufferPointMaterialFS.js +1 -0
  430. package/Source/Shaders/BufferPointMaterialVS.glsl +19 -9
  431. package/Source/Shaders/BufferPointMaterialVS.js +20 -10
  432. package/Source/Shaders/BufferPolygonMaterialFS.glsl +13 -0
  433. package/Source/Shaders/BufferPolygonMaterialFS.js +13 -0
  434. package/Source/Shaders/BufferPolygonMaterialVS.glsl +22 -4
  435. package/Source/Shaders/BufferPolygonMaterialVS.js +23 -5
  436. package/Source/Shaders/BufferPolylineMaterialVS.glsl +16 -2
  437. package/Source/Shaders/BufferPolylineMaterialVS.js +17 -3
  438. package/Source/Shaders/Builtin/Constants/passCesium3DTile.glsl +1 -1
  439. package/Source/Shaders/Builtin/Constants/passCesium3DTile.js +1 -1
  440. package/Source/Shaders/Builtin/Constants/passCesium3DTileClassification.glsl +1 -1
  441. package/Source/Shaders/Builtin/Constants/passCesium3DTileClassification.js +1 -1
  442. package/Source/Shaders/Builtin/Constants/passCesium3DTileClassificationIgnoreShow.glsl +1 -1
  443. package/Source/Shaders/Builtin/Constants/passCesium3DTileClassificationIgnoreShow.js +1 -1
  444. package/Source/Shaders/Builtin/Constants/passCesium3DTileEdgesDirect.glsl +9 -0
  445. package/Source/Shaders/Builtin/Constants/passCesium3DTileEdgesDirect.js +11 -0
  446. package/Source/Shaders/Builtin/Constants/passCesium3DTilePlanarFillId.glsl +9 -0
  447. package/Source/Shaders/Builtin/Constants/passCesium3DTilePlanarFillId.js +11 -0
  448. package/Source/Shaders/Builtin/Constants/passClassification.glsl +1 -1
  449. package/Source/Shaders/Builtin/Constants/passClassification.js +1 -1
  450. package/Source/Shaders/Builtin/Constants/passGaussianSplats.glsl +1 -1
  451. package/Source/Shaders/Builtin/Constants/passGaussianSplats.js +1 -1
  452. package/Source/Shaders/Builtin/Constants/passOpaque.glsl +1 -1
  453. package/Source/Shaders/Builtin/Constants/passOpaque.js +1 -1
  454. package/Source/Shaders/Builtin/Constants/passOverlay.glsl +1 -1
  455. package/Source/Shaders/Builtin/Constants/passOverlay.js +1 -1
  456. package/Source/Shaders/Builtin/Constants/passTranslucent.glsl +1 -1
  457. package/Source/Shaders/Builtin/Constants/passTranslucent.js +1 -1
  458. package/Source/Shaders/Builtin/Constants/passVoxels.glsl +1 -1
  459. package/Source/Shaders/Builtin/Constants/passVoxels.js +1 -1
  460. package/Source/Shaders/Builtin/CzmBuiltins.js +4 -0
  461. package/Source/Shaders/GlobeFS.glsl +10 -6
  462. package/Source/Shaders/GlobeFS.js +10 -6
  463. package/Source/Shaders/Materials/PolylineGlowMaterial.glsl +1 -1
  464. package/Source/Shaders/Materials/PolylineGlowMaterial.js +1 -1
  465. package/Source/Shaders/Model/EdgeVisibilityStageVS.glsl +0 -1
  466. package/Source/Shaders/Model/EdgeVisibilityStageVS.js +0 -1
  467. package/Source/Shaders/Model/MaterialStageFS.glsl +8 -2
  468. package/Source/Shaders/Model/MaterialStageFS.js +8 -2
  469. package/Source/Shaders/Model/ModelFS.glsl +105 -0
  470. package/Source/Shaders/Model/ModelFS.js +105 -0
  471. package/Source/Shaders/PolylineShadowVolumeFS.glsl +14 -0
  472. package/Source/Shaders/PolylineShadowVolumeFS.js +14 -0
  473. package/Source/Shaders/RestoreDepth.glsl +8 -0
  474. package/Source/Shaders/RestoreDepth.js +10 -0
  475. package/Source/Shaders/VectorCommon.glsl +178 -0
  476. package/Source/Shaders/VectorCommon.js +180 -0
  477. package/Source/ThirdParty/zip-module.wasm +0 -0
  478. package/Source/Widget/CesiumWidget.js +30 -0
  479. package/Source/Workers/createMvtTile.js +39 -0
  480. package/Source/Workers/decodeGoogleEarthEnterprisePacket.js +2 -2
  481. package/Source/Workers/incrementallyBuildTerrainPicker.js +2 -0
  482. package/index.d.ts +535 -1393
  483. package/index.js +125 -93
  484. package/package.json +13 -13
@@ -0,0 +1,543 @@
1
+ // @ts-check
2
+
3
+ import Cartographic from "../Core/Cartographic.js";
4
+ import Cesium3DTileset from "./Cesium3DTileset.js";
5
+ import DeveloperError from "../Core/DeveloperError.js";
6
+ import Ellipsoid from "../Core/Ellipsoid.js";
7
+ import Rectangle from "../Core/Rectangle.js";
8
+ import Resource from "../Core/Resource.js";
9
+ import getAbsoluteUri from "../Core/getAbsoluteUri.js";
10
+ import WebMercatorTilingScheme from "../Core/WebMercatorTilingScheme.js";
11
+ import defined from "../Core/defined.js";
12
+ import destroyObject from "../Core/destroyObject.js";
13
+ import CesiumMath from "../Core/Math.js";
14
+
15
+ /** @import FrameState from "./FrameState.js"; */
16
+ /** @import PassState from "../Renderer/PassState.js"; */
17
+ /** @import TilingScheme from "../Core/TilingScheme.js"; */
18
+
19
+ /**
20
+ * @typedef {object} TilesetJsonRoot
21
+ * @property {object} [boundingVolume]
22
+ * @property {number} [geometricError]
23
+ * @property {"REPLACE"|"ADD"} [refine]
24
+ * @property {unknown} [content]
25
+ * @property {unknown[]} [children]
26
+ * @ignore
27
+ */
28
+
29
+ const DEFAULT_MIN_ZOOM = 0;
30
+ const DEFAULT_MAX_ZOOM = 14;
31
+ const DEFAULT_REGION_MINIMUM_HEIGHT = -1000.0;
32
+ const DEFAULT_REGION_MAXIMUM_HEIGHT = 10000.0;
33
+ const EARTH_CIRCUMFERENCE_METERS =
34
+ 2.0 * Math.PI * Ellipsoid.WGS84.maximumRadius;
35
+ const WEB_MERCATOR_TILE_SIZE = 256.0;
36
+
37
+ const scratchTileRectangle = new Rectangle();
38
+ const scratchIntersectionRectangle = new Rectangle();
39
+
40
+ /**
41
+ * Base provider for URL-template vector sources that are rendered through a
42
+ * runtime-generated 3D Tiles tileset.
43
+ *
44
+ * @experimental This feature is not final and is subject to change without Cesium's standard deprecation policy.
45
+ */
46
+ class UrlTemplate3DTilesDataProvider {
47
+ /**
48
+ * @param {Resource|string} urlTemplate URL template containing {z}, {x}, and {y} placeholders.
49
+ * @param {object} [options] Provider options.
50
+ * @param {number} [options.minZoom=0] Minimum zoom level represented in the generated tileset.
51
+ * @param {number} [options.maxZoom=14] Maximum zoom level represented in the generated tileset.
52
+ * @param {Rectangle} [options.extent] Optional geographic extent in radians to constrain the generated tile tree.
53
+ * @param {string} [options.featureIdProperty] Feature property name to use as feature ID when supported by content decoding.
54
+ */
55
+ constructor(urlTemplate, options) {
56
+ options = options ?? {};
57
+ this._resource = Resource.createIfNeeded(urlTemplate);
58
+ // @ts-expect-error Missing types.
59
+ this._urlTemplate = this._resource.url;
60
+ this._extent = Rectangle.clone(options.extent);
61
+ this._minZoom = options.minZoom ?? DEFAULT_MIN_ZOOM;
62
+ this._maxZoom = options.maxZoom ?? DEFAULT_MAX_ZOOM;
63
+ this._featureIdProperty = options.featureIdProperty;
64
+ this._show = true;
65
+ this._tileset = undefined;
66
+ this._tilesetJsonUrl = undefined;
67
+ }
68
+
69
+ /**
70
+ * Creates a provider from a URL template.
71
+ *
72
+ * @param {Resource|string} url URL template containing {z}, {x}, and {y} placeholders.
73
+ * @param {object} [options] Provider options.
74
+ * @returns {Promise<UrlTemplate3DTilesDataProvider>}
75
+ */
76
+ static async fromUrl(url, options) {
77
+ const provider = new this(url, options);
78
+ await provider._initializeTileset();
79
+ return provider;
80
+ }
81
+
82
+ /**
83
+ * URL template containing {z}/{x}/{y}.
84
+ *
85
+ * @type {string}
86
+ * @readonly
87
+ */
88
+ get urlTemplate() {
89
+ return this._urlTemplate;
90
+ }
91
+
92
+ /**
93
+ * Resource derived from the URL template.
94
+ *
95
+ * @type {Resource}
96
+ * @readonly
97
+ */
98
+ get resource() {
99
+ return this._resource;
100
+ }
101
+
102
+ /**
103
+ * Optional geographic extent in radians used to generate tile headers.
104
+ *
105
+ * @type {Rectangle|undefined}
106
+ * @readonly
107
+ */
108
+ get extent() {
109
+ return this._extent;
110
+ }
111
+
112
+ /**
113
+ * Backing 3D Tileset.
114
+ *
115
+ * @type {Cesium3DTileset|undefined}
116
+ * @readonly
117
+ */
118
+ get tileset() {
119
+ return this._tileset;
120
+ }
121
+
122
+ /**
123
+ * Determines if the generated tileset is shown.
124
+ *
125
+ * @type {boolean}
126
+ */
127
+ get show() {
128
+ return this._show;
129
+ }
130
+
131
+ set show(value) {
132
+ this._show = value;
133
+ if (defined(this._tileset)) {
134
+ this._tileset.show = value;
135
+ }
136
+ }
137
+
138
+ /** @protected */
139
+ _createRuntimeTilesetOptions() {
140
+ return {
141
+ minZoom: this._minZoom,
142
+ maxZoom: this._maxZoom,
143
+ extent: this._extent,
144
+ };
145
+ }
146
+
147
+ /**
148
+ * @protected
149
+ * @returns {object}
150
+ */
151
+ _createTilesetLoadOptions() {
152
+ return {};
153
+ }
154
+
155
+ /**
156
+ * @protected
157
+ * @param {Cesium3DTileset} _tileset
158
+ */
159
+ _configureTileset(_tileset) {}
160
+
161
+ /**
162
+ * Subclasses must return a runtime content codec describing how to turn
163
+ * a downloaded tile payload into a {@link Cesium3DTileContent}. See
164
+ * {@link Cesium3DTileset#_runtimeContentCodec} for the expected shape.
165
+ *
166
+ * @protected
167
+ * @returns {object}
168
+ */
169
+ _createCodec() {
170
+ //>>includeStart('debug', pragmas.debug);
171
+ throw new DeveloperError(
172
+ "UrlTemplate3DTilesDataProvider subclasses must implement _createCodec().",
173
+ );
174
+ //>>includeEnd('debug');
175
+ }
176
+
177
+ /**
178
+ * @private
179
+ */
180
+ async _initializeTileset() {
181
+ const tilesetJson = buildRuntimeTilesetJson(
182
+ this._resource,
183
+ this._createRuntimeTilesetOptions(),
184
+ );
185
+ const tilesetBlob = new Blob([JSON.stringify(tilesetJson)], {
186
+ type: "application/json",
187
+ });
188
+ const tilesetUrl = URL.createObjectURL(tilesetBlob);
189
+ this._tilesetJsonUrl = tilesetUrl;
190
+
191
+ try {
192
+ this._tileset = await Cesium3DTileset.fromUrl(
193
+ tilesetUrl,
194
+ this._createTilesetLoadOptions(),
195
+ );
196
+ } catch (error) {
197
+ URL.revokeObjectURL(tilesetUrl);
198
+ this._tilesetJsonUrl = undefined;
199
+ throw error;
200
+ }
201
+ URL.revokeObjectURL(tilesetUrl);
202
+ this._tilesetJsonUrl = undefined;
203
+
204
+ this._configureTileset(this._tileset);
205
+ this._tileset._runtimeContentCodec = this._createCodec();
206
+ this._tileset.show = this._show;
207
+ }
208
+
209
+ /**
210
+ * @param {*} frameState
211
+ * @protected
212
+ */
213
+ update(frameState) {
214
+ if (defined(this._tileset)) {
215
+ this._tileset.update(frameState);
216
+ }
217
+ }
218
+
219
+ /**
220
+ * @private
221
+ * @param {FrameState} frameState
222
+ */
223
+ prePassesUpdate(frameState) {
224
+ if (defined(this._tileset)) {
225
+ this._tileset.prePassesUpdate(frameState);
226
+ }
227
+ }
228
+
229
+ /**
230
+ * @private
231
+ * @param {FrameState} frameState
232
+ */
233
+ postPassesUpdate(frameState) {
234
+ if (defined(this._tileset)) {
235
+ this._tileset.postPassesUpdate(frameState);
236
+ }
237
+ }
238
+
239
+ /**
240
+ * @private
241
+ * @param {FrameState} frameState
242
+ * @param {PassState} passState
243
+ */
244
+ updateForPass(frameState, passState) {
245
+ if (defined(this._tileset)) {
246
+ this._tileset.updateForPass(frameState, passState);
247
+ }
248
+ }
249
+
250
+ isDestroyed() {
251
+ return false;
252
+ }
253
+
254
+ destroy() {
255
+ if (defined(this._tileset)) {
256
+ this._tileset.destroy();
257
+ this._tileset = undefined;
258
+ }
259
+ if (defined(this._tilesetJsonUrl)) {
260
+ URL.revokeObjectURL(this._tilesetJsonUrl);
261
+ this._tilesetJsonUrl = undefined;
262
+ }
263
+ this._resource = undefined;
264
+ this._extent = undefined;
265
+ this._featureIdProperty = undefined;
266
+ return destroyObject(this);
267
+ }
268
+ }
269
+
270
+ /**
271
+ * @param {Resource} resource
272
+ * @param {object} options
273
+ * @param {number} options.minZoom
274
+ * @param {number} options.maxZoom
275
+ * @param {Rectangle} [options.extent]
276
+ * @returns {object}
277
+ * @ignore
278
+ */
279
+ function buildRuntimeTilesetJson(resource, options) {
280
+ if (!defined(options.extent) && options.minZoom === 0) {
281
+ return buildImplicitRuntimeTilesetJson(resource, options.maxZoom);
282
+ }
283
+ const tilingScheme = new WebMercatorTilingScheme();
284
+ const extent = defined(options.extent)
285
+ ? Rectangle.clone(options.extent)
286
+ : Rectangle.clone(tilingScheme.rectangle);
287
+ const minLevelRange = computeTileRangeForExtent(
288
+ tilingScheme,
289
+ extent,
290
+ options.minZoom,
291
+ );
292
+
293
+ /** @type {TilesetJsonRoot} */
294
+ const root = {
295
+ boundingVolume: {
296
+ region: rectangleToRegion(extent),
297
+ },
298
+ // Root has no renderable content, so keep a coarse error to ensure
299
+ // refinement reaches the first renderable zoom even when minZoom is high.
300
+ geometricError: computeGeometricError(0),
301
+ refine: "REPLACE",
302
+ children: [],
303
+ };
304
+ for (let y = minLevelRange.minY; y <= minLevelRange.maxY; y++) {
305
+ for (let x = minLevelRange.minX; x <= minLevelRange.maxX; x++) {
306
+ const child = buildTileNode(
307
+ tilingScheme,
308
+ resource,
309
+ extent,
310
+ options.minZoom,
311
+ options.maxZoom,
312
+ x,
313
+ y,
314
+ );
315
+ if (defined(child)) {
316
+ root.children.push(child);
317
+ }
318
+ }
319
+ }
320
+ if (root.children.length === 0) {
321
+ root.geometricError = 0.0;
322
+ }
323
+ return {
324
+ asset: {
325
+ version: "1.1",
326
+ },
327
+ geometricError: root.geometricError,
328
+ root: root,
329
+ };
330
+ }
331
+
332
+ /**
333
+ * A compact, always-available implicit quadtree. The previous explicit tree
334
+ * contained every global tile through maxZoom and became impractical at z14.
335
+ * @param {Resource} resource
336
+ * @param {number} maxZoom
337
+ * @returns {object}
338
+ * @ignore
339
+ */
340
+ function buildImplicitRuntimeTilesetJson(resource, maxZoom) {
341
+ const tilingScheme = new WebMercatorTilingScheme();
342
+ const subtree = encodeURIComponent(
343
+ JSON.stringify({
344
+ tileAvailability: { constant: 1 },
345
+ contentAvailability: { constant: 1 },
346
+ childSubtreeAvailability: { constant: 1 },
347
+ }),
348
+ );
349
+ // @ts-expect-error Missing types.
350
+ const contentUri = getAbsoluteUri(resource.url)
351
+ .replace(/\{z\}/gi, "{level}")
352
+ // Implicit regions subdivide latitude linearly, while web vector tiles
353
+ // subdivide Web Mercator. Use the source tile row for the implicit cell.
354
+ .replace(/\{y\}/gi, "{webMercatorY}");
355
+ return {
356
+ asset: { version: "1.1" },
357
+ geometricError: computeGeometricError(0),
358
+ root: {
359
+ boundingVolume: { region: rectangleToRegion(tilingScheme.rectangle) },
360
+ geometricError: computeGeometricError(0),
361
+ refine: "REPLACE",
362
+ content: { uri: contentUri },
363
+ implicitTiling: {
364
+ subdivisionScheme: "QUADTREE",
365
+ subtreeLevels: 5,
366
+ availableLevels: maxZoom + 1,
367
+ subtrees: { uri: `data:application/json,${subtree}` },
368
+ },
369
+ },
370
+ };
371
+ }
372
+
373
+ /**
374
+ * @param {TilingScheme} tilingScheme
375
+ * @param {Resource} resource
376
+ * @param {Rectangle} extent
377
+ * @param {number} level
378
+ * @param {number} maxZoom
379
+ * @param {number} x
380
+ * @param {number} y
381
+ * @ignore
382
+ */
383
+ function buildTileNode(tilingScheme, resource, extent, level, maxZoom, x, y) {
384
+ if (
385
+ !tileIntersectsExtent(
386
+ tilingScheme,
387
+ level,
388
+ x,
389
+ y,
390
+ extent,
391
+ scratchTileRectangle,
392
+ scratchIntersectionRectangle,
393
+ )
394
+ ) {
395
+ return undefined;
396
+ }
397
+ const tileRectangle = tilingScheme.tileXYToRectangle(
398
+ x,
399
+ y,
400
+ level,
401
+ new Rectangle(),
402
+ );
403
+
404
+ /** @type {TilesetJsonRoot} */
405
+ const node = {
406
+ boundingVolume: {
407
+ region: rectangleToRegion(tileRectangle),
408
+ },
409
+ geometricError: level < maxZoom ? computeGeometricError(level) : 0.0,
410
+ refine: "REPLACE",
411
+ content: {
412
+ uri: resolveTileUrl(resource, level, x, y),
413
+ },
414
+ };
415
+ if (level >= maxZoom) {
416
+ return node;
417
+ }
418
+ const childLevel = level + 1;
419
+ const children = [];
420
+ for (let childY = y * 2; childY <= y * 2 + 1; childY++) {
421
+ for (let childX = x * 2; childX <= x * 2 + 1; childX++) {
422
+ const child = buildTileNode(
423
+ tilingScheme,
424
+ resource,
425
+ extent,
426
+ childLevel,
427
+ maxZoom,
428
+ childX,
429
+ childY,
430
+ );
431
+ if (defined(child)) {
432
+ children.push(child);
433
+ }
434
+ }
435
+ }
436
+ if (children.length > 0) {
437
+ node.children = children;
438
+ } else {
439
+ node.geometricError = 0.0;
440
+ }
441
+ return node;
442
+ }
443
+
444
+ /**
445
+ * @param {Resource} resource
446
+ * @param {number} level
447
+ * @param {number} x
448
+ * @param {number} y
449
+ * @ignore
450
+ */
451
+ function resolveTileUrl(resource, level, x, y) {
452
+ // @ts-expect-error Missing types.
453
+ const template = resource.url;
454
+ const tileUrl = template
455
+ .replace(/\{z\}/gi, `${level}`)
456
+ .replace(/\{x\}/gi, `${x}`)
457
+ .replace(/\{y\}/gi, `${y}`);
458
+ return getAbsoluteUri(tileUrl);
459
+ }
460
+
461
+ /**
462
+ * @param {number} level
463
+ * @ignore
464
+ */
465
+ function computeGeometricError(level) {
466
+ return EARTH_CIRCUMFERENCE_METERS / ((1 << level) * WEB_MERCATOR_TILE_SIZE);
467
+ }
468
+
469
+ /**
470
+ * @param {Rectangle} rectangle
471
+ * @returns {number[]}
472
+ * @ignore
473
+ */
474
+ function rectangleToRegion(rectangle) {
475
+ return [
476
+ rectangle.west,
477
+ rectangle.south,
478
+ rectangle.east,
479
+ rectangle.north,
480
+ DEFAULT_REGION_MINIMUM_HEIGHT,
481
+ DEFAULT_REGION_MAXIMUM_HEIGHT,
482
+ ];
483
+ }
484
+
485
+ /**
486
+ * @param {TilingScheme} tilingScheme
487
+ * @param {Rectangle} extent
488
+ * @param {number} level
489
+ * @ignore
490
+ */
491
+ function computeTileRangeForExtent(tilingScheme, extent, level) {
492
+ const maxIndex = (1 << level) - 1;
493
+ const nw = Cartographic.fromRadians(extent.west, extent.north);
494
+ const se = Cartographic.fromRadians(extent.east, extent.south);
495
+ const nwTile = tilingScheme.positionToTileXY(nw, level);
496
+ const seTile = tilingScheme.positionToTileXY(se, level);
497
+ if (!defined(nwTile) || !defined(seTile) || extent.west > extent.east) {
498
+ return {
499
+ minX: 0,
500
+ maxX: maxIndex,
501
+ minY: 0,
502
+ maxY: maxIndex,
503
+ };
504
+ }
505
+ return {
506
+ minX: CesiumMath.clamp(Math.min(nwTile.x, seTile.x), 0, maxIndex),
507
+ maxX: CesiumMath.clamp(Math.max(nwTile.x, seTile.x), 0, maxIndex),
508
+ minY: CesiumMath.clamp(Math.min(nwTile.y, seTile.y), 0, maxIndex),
509
+ maxY: CesiumMath.clamp(Math.max(nwTile.y, seTile.y), 0, maxIndex),
510
+ };
511
+ }
512
+
513
+ /**
514
+ * @param {TilingScheme} tilingScheme
515
+ * @param {number} level
516
+ * @param {number} x
517
+ * @param {number} y
518
+ * @param {Rectangle} extent
519
+ * @param {Rectangle} tileRectangleScratch
520
+ * @param {Rectangle} intersectionScratch
521
+ * @ignore
522
+ */
523
+ function tileIntersectsExtent(
524
+ tilingScheme,
525
+ level,
526
+ x,
527
+ y,
528
+ extent,
529
+ tileRectangleScratch,
530
+ intersectionScratch,
531
+ ) {
532
+ const tileRectangle = tilingScheme.tileXYToRectangle(
533
+ x,
534
+ y,
535
+ level,
536
+ tileRectangleScratch,
537
+ );
538
+ return defined(
539
+ Rectangle.intersection(tileRectangle, extent, intersectionScratch),
540
+ );
541
+ }
542
+
543
+ export default UrlTemplate3DTilesDataProvider;