@hztxi/cesium-engine 25.0.7 → 26.2.2

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/Workers/chunk-2FNKHQL3.js +754 -0
  2. package/Build/Workers/chunk-2NCNUVAT.js +56 -0
  3. package/Build/Workers/chunk-2ZYRUVVU.js +301 -0
  4. package/Build/Workers/chunk-36IU7N4V.js +1284 -0
  5. package/Build/Workers/chunk-3BDLET5S.js +198 -0
  6. package/Build/Workers/chunk-3JZXI44G.js +3822 -0
  7. package/Build/Workers/chunk-3N2UNLWJ.js +101 -0
  8. package/Build/Workers/chunk-3NCG2YYR.js +58 -0
  9. package/Build/Workers/chunk-3PRHI4KX.js +241 -0
  10. package/Build/Workers/chunk-3R6E2SH4.js +672 -0
  11. package/Build/Workers/chunk-3ZKKXEXL.js +415 -0
  12. package/Build/Workers/chunk-47KVKPTO.js +415 -0
  13. package/Build/Workers/chunk-4FFIJ7ZV.js +56 -0
  14. package/Build/Workers/chunk-4N227IPR.js +973 -0
  15. package/Build/Workers/chunk-4P6OAPBM.js +97 -0
  16. package/Build/Workers/chunk-4XR3K4GD.js +280 -0
  17. package/Build/Workers/chunk-4Z2JINRS.js +519 -0
  18. package/Build/Workers/chunk-4ZOLEPZK.js +519 -0
  19. package/Build/Workers/chunk-5EF3WWQG.js +352 -0
  20. package/Build/Workers/chunk-5I76476T.js +288 -0
  21. package/Build/Workers/chunk-5PBZKBAP.js +511 -0
  22. package/Build/Workers/chunk-5RVAAW26.js +82 -0
  23. package/Build/Workers/chunk-5VWK76PO.js +511 -0
  24. package/Build/Workers/chunk-6SEICASZ.js +241 -0
  25. package/Build/Workers/chunk-77DBX23X.js +455 -0
  26. package/Build/Workers/chunk-7C2D3DTI.js +959 -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-7T4MW2W4.js +368 -0
  33. package/Build/Workers/chunk-7UXZUGUZ.js +82 -0
  34. package/Build/Workers/chunk-7Y642MCO.js +352 -0
  35. package/Build/Workers/chunk-7ZFKBLUE.js +1054 -0
  36. package/Build/Workers/chunk-A2UHPWPL.js +38 -0
  37. package/Build/Workers/chunk-A7LGY5XS.js +140 -0
  38. package/Build/Workers/chunk-AN2NVYL6.js +1483 -0
  39. package/Build/Workers/chunk-AS2QC7H2.js +219 -0
  40. package/Build/Workers/chunk-AVOLMIGJ.js +57 -0
  41. package/Build/Workers/chunk-B7PT2VL5.js +630 -0
  42. package/Build/Workers/chunk-BHRHMUDM.js +147 -0
  43. package/Build/Workers/chunk-BUWAHRK5.js +672 -0
  44. package/Build/Workers/chunk-C5ET5HON.js +198 -0
  45. package/Build/Workers/chunk-C6XQGBPV.js +476 -0
  46. package/Build/Workers/chunk-C7B672RR.js +73 -0
  47. package/Build/Workers/chunk-CAEC5DA2.js +57 -0
  48. package/Build/Workers/chunk-CBCOHH5O.js +837 -0
  49. package/Build/Workers/chunk-CEMXKBQO.js +1800 -0
  50. package/Build/Workers/chunk-CKW3STKA.js +1067 -0
  51. package/Build/Workers/chunk-CV5RICKT.js +1992 -0
  52. package/Build/Workers/chunk-DBWSISJT.js +56 -0
  53. package/Build/Workers/chunk-DCMOBPLG.js +352 -0
  54. package/Build/Workers/chunk-DSBSPPPJ.js +1344 -0
  55. package/Build/Workers/chunk-DSGLDRTI.js +278 -0
  56. package/Build/Workers/chunk-DXD7OPSP.js +1992 -0
  57. package/Build/Workers/chunk-DXECZBSA.js +368 -0
  58. package/Build/Workers/chunk-DZIRO6ZK.js +682 -0
  59. package/Build/Workers/chunk-E4CRPGX5.js +140 -0
  60. package/Build/Workers/chunk-E4IVMEBH.js +52 -0
  61. package/Build/Workers/chunk-E6IPM6HP.js +56 -0
  62. package/Build/Workers/chunk-EB2HAHRY.js +1054 -0
  63. package/Build/Workers/chunk-ECDCQXCO.js +1992 -0
  64. package/Build/Workers/chunk-ECN3VUMA.js +73 -0
  65. package/Build/Workers/chunk-ECSKVHUB.js +476 -0
  66. package/Build/Workers/chunk-EIENGLA5.js +278 -0
  67. package/Build/Workers/chunk-EK5CWDW2.js +476 -0
  68. package/Build/Workers/chunk-EL4B5CSQ.js +162 -0
  69. package/Build/Workers/chunk-EUCUBIEZ.js +97 -0
  70. package/Build/Workers/chunk-FAYBQGKO.js +219 -0
  71. package/Build/Workers/chunk-FGCXPEZM.js +3201 -0
  72. package/Build/Workers/chunk-FHCRXPA6.js +44 -0
  73. package/Build/Workers/chunk-FM6EQUFX.js +1800 -0
  74. package/Build/Workers/chunk-FPFGGQ4X.js +301 -0
  75. package/Build/Workers/chunk-FQ42MT7M.js +58 -0
  76. package/Build/Workers/chunk-FQDYQG4P.js +1284 -0
  77. package/Build/Workers/chunk-FQTV6W3I.js +973 -0
  78. package/Build/Workers/chunk-FTCBY5HH.js +138 -0
  79. package/Build/Workers/chunk-GI5RWJAY.js +101 -0
  80. package/Build/Workers/chunk-GNLMSDRO.js +945 -0
  81. package/Build/Workers/chunk-GTA727KQ.js +140 -0
  82. package/Build/Workers/chunk-GVUJ6O3R.js +73 -0
  83. package/Build/Workers/chunk-GXTM7AG3.js +1483 -0
  84. package/Build/Workers/chunk-HAXQB2FS.js +2719 -0
  85. package/Build/Workers/chunk-HCGU7OCG.js +97 -0
  86. package/Build/Workers/chunk-HRIPVWSC.js +58 -0
  87. package/Build/Workers/chunk-IC3BR6SC.js +102 -0
  88. package/Build/Workers/chunk-IEPPOHF3.js +44 -0
  89. package/Build/Workers/chunk-IU3YAYPT.js +1344 -0
  90. package/Build/Workers/chunk-J3AXZ4WC.js +124 -0
  91. package/Build/Workers/chunk-J7MZR7B2.js +1483 -0
  92. package/Build/Workers/chunk-KBNW776Q.js +305 -0
  93. package/Build/Workers/chunk-KBSWXVSY.js +837 -0
  94. package/Build/Workers/chunk-KEYTLNVK.js +1067 -0
  95. package/Build/Workers/chunk-KN3RQWUA.js +3201 -0
  96. package/Build/Workers/chunk-KSIEJYNL.js +3822 -0
  97. package/Build/Workers/chunk-KT3GG7AW.js +754 -0
  98. package/Build/Workers/chunk-KYCEM22I.js +1800 -0
  99. package/Build/Workers/chunk-L2TFZKN6.js +455 -0
  100. package/Build/Workers/chunk-LHKE2VUR.js +945 -0
  101. package/Build/Workers/chunk-LJTQW46H.js +57 -0
  102. package/Build/Workers/chunk-LMQGYJME.js +672 -0
  103. package/Build/Workers/chunk-LOBYJQA4.js +76 -0
  104. package/Build/Workers/chunk-LOF32O7F.js +163 -0
  105. package/Build/Workers/chunk-LOTIJA7D.js +124 -0
  106. package/Build/Workers/chunk-M7Z3MPAX.js +973 -0
  107. package/Build/Workers/chunk-MHNLTQHO.js +3201 -0
  108. package/Build/Workers/chunk-MICPAD7R.js +398 -0
  109. package/Build/Workers/chunk-ML7OMD72.js +2342 -0
  110. package/Build/Workers/chunk-MPJ73WMH.js +138 -0
  111. package/Build/Workers/chunk-MUTHG7T7.js +171 -0
  112. package/Build/Workers/chunk-NBTGXEMT.js +945 -0
  113. package/Build/Workers/chunk-NQZC37F7.js +38 -0
  114. package/Build/Workers/chunk-O3X3D2Z3.js +352 -0
  115. package/Build/Workers/chunk-OBUIHPKF.js +352 -0
  116. package/Build/Workers/chunk-PAEWNYIV.js +138 -0
  117. package/Build/Workers/chunk-PANJ7YH6.js +102 -0
  118. package/Build/Workers/chunk-PCL3Y7H5.js +82 -0
  119. package/Build/Workers/chunk-PHUELDXQ.js +76 -0
  120. package/Build/Workers/chunk-PIIUGRQD.js +387 -0
  121. package/Build/Workers/chunk-POKD22OT.js +2719 -0
  122. package/Build/Workers/chunk-PQMA7MFS.js +9237 -0
  123. package/Build/Workers/chunk-PQZW2QZG.js +163 -0
  124. package/Build/Workers/chunk-PURIPUSY.js +682 -0
  125. package/Build/Workers/chunk-QQZPPXY4.js +3822 -0
  126. package/Build/Workers/chunk-QXLQLGL2.js +1067 -0
  127. package/Build/Workers/chunk-R2JQAAU7.js +630 -0
  128. package/Build/Workers/chunk-RC4YC3VU.js +278 -0
  129. package/Build/Workers/chunk-RGNNWVR6.js +171 -0
  130. package/Build/Workers/chunk-RUOETBWP.js +288 -0
  131. package/Build/Workers/chunk-RV4EPLBO.js +2342 -0
  132. package/Build/Workers/chunk-SBBIEHYT.js +44 -0
  133. package/Build/Workers/chunk-SBEQLEO5.js +352 -0
  134. package/Build/Workers/chunk-SGC2GT3Y.js +1284 -0
  135. package/Build/Workers/chunk-SKLK4CBL.js +162 -0
  136. package/Build/Workers/chunk-SWVZTU6X.js +305 -0
  137. package/Build/Workers/chunk-T3EUPM5A.js +454 -0
  138. package/Build/Workers/chunk-TA6IU2XL.js +171 -0
  139. package/Build/Workers/chunk-TLSGD5TR.js +280 -0
  140. package/Build/Workers/chunk-TNDQT5AB.js +682 -0
  141. package/Build/Workers/chunk-TOXDLWKZ.js +368 -0
  142. package/Build/Workers/chunk-TZBM6TAB.js +124 -0
  143. package/Build/Workers/chunk-U2OY6MX6.js +398 -0
  144. package/Build/Workers/chunk-UCY4B5EV.js +288 -0
  145. package/Build/Workers/chunk-V52FEPCV.js +754 -0
  146. package/Build/Workers/chunk-VBEXZBG5.js +147 -0
  147. package/Build/Workers/chunk-VC76B6GM.js +959 -0
  148. package/Build/Workers/chunk-VCUOYHWC.js +519 -0
  149. package/Build/Workers/chunk-VDBQVKTF.js +387 -0
  150. package/Build/Workers/chunk-VJIL5H6K.js +2719 -0
  151. package/Build/Workers/chunk-VJLDRHKN.js +511 -0
  152. package/Build/Workers/chunk-VMF7KOGY.js +162 -0
  153. package/Build/Workers/chunk-W3X2ZAEJ.js +52 -0
  154. package/Build/Workers/chunk-W5OCKMPJ.js +101 -0
  155. package/Build/Workers/chunk-X4VZ33YL.js +454 -0
  156. package/Build/Workers/chunk-XDM5A6C4.js +102 -0
  157. package/Build/Workers/chunk-XHT5SVP4.js +52 -0
  158. package/Build/Workers/chunk-XITBARMZ.js +2342 -0
  159. package/Build/Workers/chunk-XLQZNQ4Z.js +163 -0
  160. package/Build/Workers/chunk-XZ6HDXKM.js +76 -0
  161. package/Build/Workers/chunk-Y6AQK4FY.js +1344 -0
  162. package/Build/Workers/chunk-Y7NDFEQ3.js +398 -0
  163. package/Build/Workers/chunk-YBBQDYX2.js +301 -0
  164. package/Build/Workers/chunk-YHPYPVAB.js +837 -0
  165. package/Build/Workers/chunk-YJBPRW4A.js +415 -0
  166. package/Build/Workers/chunk-YNKK6BXY.js +454 -0
  167. package/Build/Workers/chunk-YRAJ74HR.js +305 -0
  168. package/Build/Workers/chunk-YULTZK5O.js +147 -0
  169. package/Build/Workers/chunk-YUNQYP3Z.js +9237 -0
  170. package/Build/Workers/chunk-YX2FOQMF.js +9237 -0
  171. package/Build/Workers/chunk-Z7BONRW2.js +241 -0
  172. package/Build/Workers/chunk-ZK2R3DEJ.js +1054 -0
  173. package/Build/Workers/combineGeometry.js +24 -24
  174. package/Build/Workers/createBoxGeometry.js +18 -18
  175. package/Build/Workers/createBoxOutlineGeometry.js +18 -18
  176. package/Build/Workers/createCircleGeometry.js +26 -26
  177. package/Build/Workers/createCircleOutlineGeometry.js +19 -19
  178. package/Build/Workers/createCoplanarPolygonGeometry.js +39 -39
  179. package/Build/Workers/createCoplanarPolygonOutlineGeometry.js +33 -33
  180. package/Build/Workers/createCorridorGeometry.js +36 -37
  181. package/Build/Workers/createCorridorOutlineGeometry.js +34 -35
  182. package/Build/Workers/createCylinderGeometry.js +20 -20
  183. package/Build/Workers/createCylinderOutlineGeometry.js +20 -20
  184. package/Build/Workers/createEllipseGeometry.js +26 -26
  185. package/Build/Workers/createEllipseOutlineGeometry.js +19 -19
  186. package/Build/Workers/createEllipsoidGeometry.js +19 -19
  187. package/Build/Workers/createEllipsoidOutlineGeometry.js +18 -18
  188. package/Build/Workers/createFrustumGeometry.js +18 -18
  189. package/Build/Workers/createFrustumOutlineGeometry.js +20 -20
  190. package/Build/Workers/createGeometry.js +25 -24
  191. package/Build/Workers/createGroundPolylineGeometry.js +26 -26
  192. package/Build/Workers/createMvtTile.js +111 -19
  193. package/Build/Workers/createPlaneGeometry.js +18 -18
  194. package/Build/Workers/createPlaneOutlineGeometry.js +17 -17
  195. package/Build/Workers/createPolygonGeometry.js +36 -36
  196. package/Build/Workers/createPolygonOutlineGeometry.js +33 -33
  197. package/Build/Workers/createPolylineGeometry.js +28 -28
  198. package/Build/Workers/createPolylineVolumeGeometry.js +38 -36
  199. package/Build/Workers/createPolylineVolumeOutlineGeometry.js +32 -31
  200. package/Build/Workers/createRectangleGeometry.js +29 -29
  201. package/Build/Workers/createRectangleOutlineGeometry.js +23 -23
  202. package/Build/Workers/createSimplePolylineGeometry.js +26 -26
  203. package/Build/Workers/createSphereGeometry.js +19 -19
  204. package/Build/Workers/createSphereOutlineGeometry.js +18 -18
  205. package/Build/Workers/createTaskProcessorWorker.js +3 -3
  206. package/Build/Workers/createVectorTileClampedPolylines.js +14 -14
  207. package/Build/Workers/createVectorTileGeometries.js +24 -24
  208. package/Build/Workers/createVectorTilePoints.js +13 -13
  209. package/Build/Workers/createVectorTilePolygons.js +22 -22
  210. package/Build/Workers/createVectorTilePolylines.js +14 -14
  211. package/Build/Workers/createVerticesFromCesium3DTilesTerrain.js +26 -26
  212. package/Build/Workers/createVerticesFromGoogleEarthEnterpriseBuffer.js +23 -23
  213. package/Build/Workers/createVerticesFromHeightmap.js +23 -23
  214. package/Build/Workers/createVerticesFromQuantizedTerrainMesh.js +21 -21
  215. package/Build/Workers/createWallGeometry.js +26 -26
  216. package/Build/Workers/createWallOutlineGeometry.js +26 -26
  217. package/Build/Workers/decodeDraco.js +10 -10
  218. package/Build/Workers/decodeGoogleEarthEnterprisePacket.js +993 -2334
  219. package/Build/Workers/decodeI3S.js +10 -10
  220. package/Build/Workers/gaussianSplatSorter.js +4 -4
  221. package/Build/Workers/gaussianSplatTextureGenerator.js +4 -4
  222. package/Build/Workers/incrementallyBuildTerrainPicker.js +10 -10
  223. package/Build/Workers/transcodeKTX2.js +6 -6
  224. package/Build/Workers/transferTypedArrayTest.js +1 -1
  225. package/Build/Workers/upsampleQuantizedTerrainMesh.js +23 -23
  226. package/Build/Workers/upsampleVerticesFromCesium3DTilesTerrain.js +26 -26
  227. package/Source/Core/ArcGISTiledElevationTerrainProvider.js +1 -5
  228. package/Source/Core/BoundingRectangle.js +6 -8
  229. package/Source/Core/BoundingSphere.js +0 -3
  230. package/Source/Core/Cartesian2.js +1 -1
  231. package/Source/Core/Cartesian3.js +1 -1
  232. package/Source/Core/Cartesian4.js +1 -1
  233. package/Source/Core/Cesium3DTilesTerrainGeometryProcessor.js +3 -4
  234. package/Source/Core/Color.js +1 -0
  235. package/Source/Core/ComponentDatatype.js +35 -0
  236. package/Source/Core/CoplanarPolygonGeometry.js +2 -2
  237. package/Source/Core/CorridorGeometry.js +2 -4
  238. package/Source/Core/CorridorOutlineGeometry.js +1 -3
  239. package/Source/Core/EarthOrientationParameters.js +2 -2
  240. package/Source/Core/EllipseGeometryLibrary.js +2 -2
  241. package/Source/Core/EllipsoidGeodesic.js +3 -3
  242. package/Source/Core/EllipsoidRhumbLine.js +1 -1
  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/PolylineVolumeGeometryLibrary.js +1 -1
  262. package/Source/Core/Rectangle.js +7 -1
  263. package/Source/Core/RectangleOutlineGeometry.js +1 -1
  264. package/Source/Core/Resource.js +1 -1
  265. package/Source/Core/ScreenSpaceEventHandler.js +51 -41
  266. package/Source/Core/SimplePolylineGeometry.js +1 -1
  267. package/Source/Core/TerrainEncoding.js +2 -2
  268. package/Source/Core/TerrainMesh.js +3 -3
  269. package/Source/Core/TerrainPicker.js +180 -168
  270. package/Source/Core/TimeIntervalCollection.js +1 -3
  271. package/Source/Core/Tipsify.js +1 -1
  272. package/Source/Core/Transforms.js +5 -1
  273. package/Source/Core/VectorPipeline.js +1117 -0
  274. package/Source/Core/VectorProvider.js +429 -0
  275. package/Source/Core/WallOutlineGeometry.js +1 -1
  276. package/Source/Core/createColorRamp.js +37 -0
  277. package/Source/Core/getTimestamp.js +4 -2
  278. package/Source/Core/globalTypes.js +25 -0
  279. package/Source/Core/writeTextToCanvas.js +1 -0
  280. package/Source/DataSources/CompositeEntityCollection.js +0 -1
  281. package/Source/DataSources/CzmlDataSource.js +14 -0
  282. package/Source/DataSources/DataSourceDisplay.js +1 -1
  283. package/Source/DataSources/GeoJsonDataSource.js +0 -1
  284. package/Source/DataSources/GeometryVisualizer.js +1 -1
  285. package/Source/DataSources/KmlDataSource.js +529 -557
  286. package/Source/DataSources/PathGraphics.js +8 -1
  287. package/Source/DataSources/PathMode.js +27 -0
  288. package/Source/DataSources/PathVisualizer.js +298 -1
  289. package/Source/DataSources/PolylineVisualizer.js +1 -1
  290. package/Source/DataSources/StaticOutlineGeometryBatch.js +1 -1
  291. package/Source/Renderer/AutomaticUniforms.js +23 -0
  292. package/Source/Renderer/Context.js +9 -3
  293. package/Source/Renderer/DrawCommand.js +22 -0
  294. package/Source/Renderer/Framebuffer.js +4 -0
  295. package/Source/Renderer/Pass.js +11 -9
  296. package/Source/Renderer/Texture.js +12 -1
  297. package/Source/Renderer/UniformState.js +7 -0
  298. package/Source/Renderer/VertexArray.js +1 -1
  299. package/Source/Renderer/createUniform.js +346 -239
  300. package/Source/Renderer/createUniformArray.js +494 -381
  301. package/Source/Scene/ArcGisMapServerImageryProvider.js +0 -5
  302. package/Source/Scene/ArcGisMapService.js +1 -1
  303. package/Source/Scene/Billboard.js +2 -1
  304. package/Source/Scene/BillboardCollection.js +15 -5
  305. package/Source/Scene/BillboardTexture.js +5 -3
  306. package/Source/Scene/BufferPointCollection.js +11 -1
  307. package/Source/Scene/BufferPolygonCollection.js +26 -0
  308. package/Source/Scene/BufferPolylineCollection.js +2 -0
  309. package/Source/Scene/BufferPrimitiveCollection.js +105 -32
  310. package/Source/Scene/Camera.js +85 -9
  311. package/Source/Scene/CameraEventAggregator.js +30 -18
  312. package/Source/Scene/CameraFlightPath.js +7 -4
  313. package/Source/Scene/Cesium3DTile.js +102 -4
  314. package/Source/Scene/Cesium3DTileContent.js +195 -254
  315. package/Source/Scene/Cesium3DTileContentFactory.js +10 -2
  316. package/Source/Scene/Cesium3DTileOptimizations.js +4 -6
  317. package/Source/Scene/Cesium3DTileStyle.js +40 -0
  318. package/Source/Scene/Cesium3DTileset.js +213 -8
  319. package/Source/Scene/Cesium3DTilesetTraversal.js +14 -0
  320. package/Source/Scene/ClippingPlaneCollection.js +4 -4
  321. package/Source/Scene/ClippingPolygon.js +2 -0
  322. package/Source/Scene/ClippingPolygonCollection.js +2 -2
  323. package/Source/Scene/Composite3DTileContent.js +254 -292
  324. package/Source/Scene/Controllers/Controller.js +63 -0
  325. package/Source/Scene/Controllers/ControllerHost.js +78 -0
  326. package/Source/Scene/Controllers/HybridScreenSpacePanCameraController.js +106 -0
  327. package/Source/Scene/Controllers/MouseButton.js +32 -0
  328. package/Source/Scene/Controllers/ScreenSpaceElevatorCameraController.js +295 -0
  329. package/Source/Scene/Controllers/ScreenSpaceInputBindings.js +154 -0
  330. package/Source/Scene/Controllers/ScreenSpaceMapCameraController.js +310 -0
  331. package/Source/Scene/Controllers/ScreenSpaceTiltOrbitCameraController.js +642 -0
  332. package/Source/Scene/Controllers/ScreenSpaceZoomCameraController.js +431 -0
  333. package/Source/Scene/Controllers/defaultPickWorldPosition.js +84 -0
  334. package/Source/Scene/DerivedCommand.js +98 -0
  335. package/Source/Scene/EdgeDisplayMode.js +50 -0
  336. package/Source/Scene/EdgeFramebuffer.js +1 -5
  337. package/Source/Scene/Empty3DTileContent.js +100 -132
  338. package/Source/Scene/Expression.js +6 -8
  339. package/Source/Scene/FrameState.js +17 -0
  340. package/Source/Scene/GaussianSplat3DTileContent.js +436 -478
  341. package/Source/Scene/GeoJsonPrimitive.js +874 -0
  342. package/Source/Scene/Geometry3DTileContent.js +151 -185
  343. package/Source/Scene/Globe.js +22 -1
  344. package/Source/Scene/GlobeDepth.js +27 -1
  345. package/Source/Scene/GlobeSurfaceShaderSet.js +637 -540
  346. package/Source/Scene/GlobeSurfaceTile.js +575 -398
  347. package/Source/Scene/GlobeSurfaceTileProvider.js +1412 -1184
  348. package/Source/Scene/GltfBufferViewLoader.js +3 -3
  349. package/Source/Scene/GltfLoader.js +146 -3
  350. package/Source/Scene/GltfLoaderUtil.js +20 -4
  351. package/Source/Scene/GltfPipeline/forEachTextureInMaterial.js +10 -0
  352. package/Source/Scene/GltfPipeline/removeUnusedElements.js +21 -11
  353. package/Source/Scene/GltfSpzLoader.js +1 -1
  354. package/Source/Scene/GltfVertexBufferLoader.js +6 -3
  355. package/Source/Scene/I3SDataProvider.js +1 -1
  356. package/Source/Scene/I3SLayer.js +1 -1
  357. package/Source/Scene/I3SNode.js +2 -2
  358. package/Source/Scene/ImageryLayer.js +2 -2
  359. package/Source/Scene/ImageryLayerCollection.js +190 -6
  360. package/Source/Scene/Implicit3DTileContent.js +192 -216
  361. package/Source/Scene/ImplicitTileCoordinates.js +17 -0
  362. package/Source/Scene/IonImageryProvider.js +1 -5
  363. package/Source/Scene/Label.js +4 -4
  364. package/Source/Scene/LabelCollection.js +4 -1
  365. package/Source/Scene/MVTDataProvider.js +555 -0
  366. package/Source/Scene/Material.js +1 -0
  367. package/Source/Scene/Model/B3dmLoader.js +1 -2
  368. package/Source/Scene/Model/EdgeVisibilityPipelineStage.js +82 -312
  369. package/Source/Scene/Model/Extensions/Gpm/GltfGpmLoader.js +4 -0
  370. package/Source/Scene/Model/I3dmLoader.js +1 -1
  371. package/Source/Scene/Model/InstancingPipelineStage.js +4 -7
  372. package/Source/Scene/Model/MaterialPipelineStage.js +124 -1
  373. package/Source/Scene/Model/Model.js +45 -10
  374. package/Source/Scene/Model/Model3DTileContent.js +424 -458
  375. package/Source/Scene/Model/ModelClippingPlanesPipelineStage.js +28 -1
  376. package/Source/Scene/Model/ModelDrawCommand.js +180 -8
  377. package/Source/Scene/Model/ModelDrawCommands.js +4 -0
  378. package/Source/Scene/Model/ModelSceneGraph.js +21 -0
  379. package/Source/Scene/Model/ModelUtility.js +5 -0
  380. package/Source/Scene/Model/PickingPipelineStage.js +29 -0
  381. package/Source/Scene/Model/PrimitiveRenderResources.js +24 -0
  382. package/Source/Scene/Model/createVectorTileBuffersFromModelComponents.js +645 -153
  383. package/Source/Scene/ModelComponents.js +112 -0
  384. package/Source/Scene/Multiple3DTileContent.js +291 -334
  385. package/Source/Scene/MvtLabelCandidates.js +295 -0
  386. package/Source/Scene/MvtLabelManager.js +1069 -0
  387. package/Source/Scene/Picking.js +19 -3
  388. package/Source/Scene/PlanarFillIdFramebuffer.js +172 -0
  389. package/Source/Scene/PntsParser.js +1 -1
  390. package/Source/Scene/PolylineCollection.js +5 -3
  391. package/Source/Scene/PostProcessStage.js +4 -2
  392. package/Source/Scene/QuadtreePrimitive.js +3 -2
  393. package/Source/Scene/ResourceCache.js +7 -4
  394. package/Source/Scene/ResourceCacheKey.js +21 -18
  395. package/Source/Scene/Scene.js +237 -11
  396. package/Source/Scene/SceneTransforms.js +6 -5
  397. package/Source/Scene/ShadowMap.js +9 -3
  398. package/Source/Scene/ShadowMapShader.js +50 -2
  399. package/Source/Scene/SnapFramebuffer.js +121 -0
  400. package/Source/Scene/Snapping.js +184 -0
  401. package/Source/Scene/TerrainFillMesh.js +3 -2
  402. package/Source/Scene/Tileset3DTileContent.js +113 -146
  403. package/Source/Scene/UrlTemplate3DTilesDataProvider.js +543 -0
  404. package/Source/Scene/Vector3DTileContent.js +207 -237
  405. package/Source/Scene/VectorGltf3DTileContent.js +185 -45
  406. package/Source/Scene/View.js +10 -8
  407. package/Source/Scene/VoxelPrimitive.js +159 -175
  408. package/Source/Scene/VoxelProvider.js +64 -91
  409. package/Source/Scene/VoxelTraversal.js +1 -1
  410. package/Source/Scene/buildVectorGltfFromMVT.js +1208 -0
  411. package/Source/Scene/buildVoxelCustomShader.js +199 -0
  412. package/Source/Scene/createElevationBandMaterial.js +1 -1
  413. package/Source/Scene/decodeMVT.js +877 -0
  414. package/Source/Scene/findMeshoptExtension.js +23 -0
  415. package/Source/Scene/renderBufferPointCollection.js +114 -64
  416. package/Source/Scene/renderBufferPolygonCollection.js +245 -53
  417. package/Source/Scene/renderBufferPolylineCollection.js +271 -145
  418. package/Source/Shaders/BillboardCollectionVS.glsl +23 -25
  419. package/Source/Shaders/BillboardCollectionVS.js +23 -25
  420. package/Source/Shaders/BufferPointMaterialFS.glsl +1 -0
  421. package/Source/Shaders/BufferPointMaterialFS.js +1 -0
  422. package/Source/Shaders/BufferPointMaterialVS.glsl +19 -9
  423. package/Source/Shaders/BufferPointMaterialVS.js +20 -10
  424. package/Source/Shaders/BufferPolygonMaterialFS.glsl +13 -0
  425. package/Source/Shaders/BufferPolygonMaterialFS.js +13 -0
  426. package/Source/Shaders/BufferPolygonMaterialVS.glsl +22 -4
  427. package/Source/Shaders/BufferPolygonMaterialVS.js +23 -5
  428. package/Source/Shaders/BufferPolylineMaterialVS.glsl +16 -2
  429. package/Source/Shaders/BufferPolylineMaterialVS.js +17 -3
  430. package/Source/Shaders/Builtin/Constants/passCesium3DTile.glsl +1 -1
  431. package/Source/Shaders/Builtin/Constants/passCesium3DTile.js +1 -1
  432. package/Source/Shaders/Builtin/Constants/passCesium3DTileClassification.glsl +1 -1
  433. package/Source/Shaders/Builtin/Constants/passCesium3DTileClassification.js +1 -1
  434. package/Source/Shaders/Builtin/Constants/passCesium3DTileClassificationIgnoreShow.glsl +1 -1
  435. package/Source/Shaders/Builtin/Constants/passCesium3DTileClassificationIgnoreShow.js +1 -1
  436. package/Source/Shaders/Builtin/Constants/passCesium3DTileEdgesDirect.glsl +9 -0
  437. package/Source/Shaders/Builtin/Constants/passCesium3DTileEdgesDirect.js +11 -0
  438. package/Source/Shaders/Builtin/Constants/passCesium3DTilePlanarFillId.glsl +9 -0
  439. package/Source/Shaders/Builtin/Constants/passCesium3DTilePlanarFillId.js +11 -0
  440. package/Source/Shaders/Builtin/Constants/passClassification.glsl +1 -1
  441. package/Source/Shaders/Builtin/Constants/passClassification.js +1 -1
  442. package/Source/Shaders/Builtin/Constants/passGaussianSplats.glsl +1 -1
  443. package/Source/Shaders/Builtin/Constants/passGaussianSplats.js +1 -1
  444. package/Source/Shaders/Builtin/Constants/passOpaque.glsl +1 -1
  445. package/Source/Shaders/Builtin/Constants/passOpaque.js +1 -1
  446. package/Source/Shaders/Builtin/Constants/passOverlay.glsl +1 -1
  447. package/Source/Shaders/Builtin/Constants/passOverlay.js +1 -1
  448. package/Source/Shaders/Builtin/Constants/passTranslucent.glsl +1 -1
  449. package/Source/Shaders/Builtin/Constants/passTranslucent.js +1 -1
  450. package/Source/Shaders/Builtin/Constants/passVoxels.glsl +1 -1
  451. package/Source/Shaders/Builtin/Constants/passVoxels.js +1 -1
  452. package/Source/Shaders/Builtin/CzmBuiltins.js +4 -0
  453. package/Source/Shaders/GlobeFS.glsl +10 -6
  454. package/Source/Shaders/GlobeFS.js +10 -6
  455. package/Source/Shaders/Materials/PolylineGlowMaterial.glsl +1 -1
  456. package/Source/Shaders/Materials/PolylineGlowMaterial.js +1 -1
  457. package/Source/Shaders/Model/EdgeVisibilityStageVS.glsl +0 -1
  458. package/Source/Shaders/Model/EdgeVisibilityStageVS.js +0 -1
  459. package/Source/Shaders/Model/MaterialStageFS.glsl +8 -2
  460. package/Source/Shaders/Model/MaterialStageFS.js +8 -2
  461. package/Source/Shaders/Model/ModelFS.glsl +105 -0
  462. package/Source/Shaders/Model/ModelFS.js +105 -0
  463. package/Source/Shaders/VectorCommon.glsl +178 -0
  464. package/Source/Shaders/VectorCommon.js +180 -0
  465. package/Source/ThirdParty/zip-module.wasm +0 -0
  466. package/Source/Widget/CesiumWidget.js +30 -0
  467. package/Source/Workers/createMvtTile.js +39 -0
  468. package/Source/Workers/decodeGoogleEarthEnterprisePacket.js +2 -2
  469. package/Source/Workers/incrementallyBuildTerrainPicker.js +2 -0
  470. package/index.js +214 -184
  471. package/package.json +13 -13
@@ -0,0 +1,555 @@
1
+ // @ts-check
2
+
3
+ import Axis from "./Axis.js";
4
+ import Empty3DTileContent from "./Empty3DTileContent.js";
5
+ import RuntimeError from "../Core/RuntimeError.js";
6
+ import TaskProcessor from "../Core/TaskProcessor.js";
7
+ import destroyObject from "../Core/destroyObject.js";
8
+ import UrlTemplate3DTilesDataProvider from "./UrlTemplate3DTilesDataProvider.js";
9
+ import VectorGltf3DTileContent from "./VectorGltf3DTileContent.js";
10
+ import MvtLabelManager from "./MvtLabelManager.js";
11
+ import createMvtLabelCandidates, {
12
+ getMvtLabelCandidatesByteLength,
13
+ } from "./MvtLabelCandidates.js";
14
+ import HeightReference from "./HeightReference.js";
15
+ import oneTimeWarning from "../Core/oneTimeWarning.js";
16
+ import defined from "../Core/defined.js";
17
+
18
+ /** @import Cesium3DTile from "./Cesium3DTile.js"; */
19
+ /** @import Cesium3DTileset from "./Cesium3DTileset.js"; */
20
+ /** @import FrameState from "./FrameState.js"; */
21
+ /** @import Rectangle from "../Core/Rectangle.js"; */
22
+ /** @import Resource from "../Core/Resource.js"; */
23
+ /** @import Scene from "./Scene.js"; */
24
+
25
+ /**
26
+ * @typedef {object} MVTProviderOptions
27
+ * @property {number} [minZoom]
28
+ * @property {number} [maxZoom]
29
+ * @property {Rectangle} [extent]
30
+ * @property {string} [featureIdProperty]
31
+ * @property {Array<*>} [labelStyles]
32
+ * @property {HeightReference} [labelHeightReference]
33
+ * @property {number} [labelTransitionDuration]
34
+ * @property {number} [labelTransitionSteps]
35
+ * @property {number} [maximumRetiringLabels]
36
+ * @property {number} [maximumLabelsPerTile]
37
+ * @property {number} [maximumCachedGlyphs]
38
+ * @property {number} [minimumRebuildInterval]
39
+ * @property {number} [glyphReclaimMargin]
40
+ * @property {number} [maximumVisibleLabels]
41
+ * @property {boolean} [renderGeometry]
42
+ * @property {"mvt"|"geovis"} [format]
43
+ * @property {number} [maximumScreenSpaceError]
44
+ * @property {boolean} [adaptiveScreenSpaceError] Enables a camera-height-based
45
+ * screen-space-error schedule. The caller owns tile-service suitability.
46
+ * @property {object} [uniformLevelMode] Configuration forwarded to the backing
47
+ * Cesium3DTileset for uniform-level traversal.
48
+ * @property {boolean} [inheritGlobeUniformLevelMode=false] Keeps the tileset's
49
+ * uniform-level configuration synchronized with scene.globe.
50
+ * @property {number} [maximumConcurrentRequests]
51
+ * @property {number} [cacheBytes]
52
+ * @property {number} [maximumCacheOverflowBytes]
53
+ * @property {Scene} [scene]
54
+ */
55
+
56
+ /**
57
+ * @typedef {object} MVTWorkerResult
58
+ * @property {ArrayBuffer} [glb]
59
+ * @property {boolean} hasFeatures
60
+ * @property {object} [decodedTile]
61
+ */
62
+
63
+ const createMvtTileTaskProcessor = new TaskProcessor("createMvtTile", 4);
64
+ const labelOnlyCacheBytes = 64 * 1024 * 1024;
65
+ const labelOnlyMaximumCacheOverflowBytes = 16 * 1024 * 1024;
66
+
67
+ /**
68
+ * A Mapbox Vector Tiles (MVT) data provider. Loads .mvt or .pbf tiles, converting tiles
69
+ * dynamically (at runtime) into 3D Tiles.
70
+ *
71
+ * <div class="notice">
72
+ * This object is normally not instantiated directly, use {@link MVTDataProvider.fromUrl}.
73
+ * </div>
74
+ *
75
+ * @extends UrlTemplate3DTilesDataProvider
76
+ * @experimental This feature is not final and is subject to change without Cesium's standard deprecation policy.
77
+ */
78
+ class MVTDataProvider extends UrlTemplate3DTilesDataProvider {
79
+ /** @param {Resource|string} urlTemplate @param {MVTProviderOptions} [options] */
80
+ constructor(urlTemplate, options) {
81
+ options = options ?? {};
82
+ super(urlTemplate, options);
83
+ this._labelStyles = options.labelStyles ?? [];
84
+ this._labelsVisible = true;
85
+ this._labelHeightReference =
86
+ options.labelHeightReference ?? HeightReference.CLAMP_TO_GROUND;
87
+ this._labelTransitionDuration = options.labelTransitionDuration ?? 0.2;
88
+ this._labelTransitionSteps = options.labelTransitionSteps ?? 4;
89
+ this._maximumRetiringLabels = options.maximumRetiringLabels ?? 512;
90
+ this._renderGeometry = options.renderGeometry ?? true;
91
+ this._maximumLabelsPerTile = Math.max(
92
+ 0,
93
+ Math.floor(options.maximumLabelsPerTile ?? 4096),
94
+ );
95
+ this._maximumCachedGlyphs = Math.max(
96
+ 0,
97
+ Math.floor(options.maximumCachedGlyphs ?? 2048),
98
+ );
99
+ this._minimumRebuildInterval = options.minimumRebuildInterval;
100
+ this._glyphReclaimMargin = options.glyphReclaimMargin;
101
+ this._maximumVisibleLabels = options.maximumVisibleLabels;
102
+ this._cacheBytes =
103
+ options.cacheBytes ??
104
+ (this._renderGeometry ? undefined : labelOnlyCacheBytes);
105
+ this._maximumCacheOverflowBytes =
106
+ options.maximumCacheOverflowBytes ??
107
+ (this._renderGeometry ? undefined : labelOnlyMaximumCacheOverflowBytes);
108
+ this._format = options.format ?? "mvt";
109
+ this._maximumScreenSpaceError = options.maximumScreenSpaceError;
110
+ this._uniformLevelMode = options.uniformLevelMode;
111
+ this._inheritGlobeUniformLevelMode =
112
+ options.inheritGlobeUniformLevelMode === true;
113
+ this._usesAdaptiveScreenSpaceError =
114
+ options.adaptiveScreenSpaceError === true &&
115
+ !defined(this._maximumScreenSpaceError);
116
+ this._maximumConcurrentRequests = options.maximumConcurrentRequests ?? 12;
117
+ this._scene = options.scene;
118
+ this._labelManager = undefined;
119
+ }
120
+
121
+ /**
122
+ * Creates an MVTDataProvider from the specified URL template and options.
123
+ *
124
+ * @param {Resource|string} url URL template, containing {z}, {x}, and {y} placeholders.
125
+ * @param {object} [options] Provider options.
126
+ * @param {number} [options.minZoom=0] Minimum zoom level represented in the generated tileset.
127
+ * @param {number} [options.maxZoom] Maximum zoom level represented in the generated tileset.
128
+ * @param {Rectangle} [options.extent] Optional geographic extent in radians to constrain the generated tile tree.
129
+ * @param {string} [options.featureIdProperty] MVT property name to use as feature ID.
130
+ * @param {object[]} [options.labelStyles] Declarative MVT text-symbol rules.
131
+ * @param {HeightReference} [options.labelHeightReference=HeightReference.CLAMP_TO_GROUND] Height reference for MVT labels. Ground clamping keeps labels fixed to terrain and 3D Tiles while the camera moves.
132
+ * @param {number} [options.labelTransitionDuration=0.2] Seconds used to cross-fade labels when tile selection changes. Set to 0 to disable transitions.
133
+ * @param {number} [options.labelTransitionSteps=4] Opacity steps in each label transition. A small value keeps rapid zoom and pan updates bounded.
134
+ * @param {number} [options.maximumRetiringLabels=512] Maximum labels retained for fade-out after a tile switch. Excess labels are removed immediately to protect frame time during rapid navigation.
135
+ * @param {number} [options.maximumLabelsPerTile=4096] Maximum label candidates retained from one tile. Higher-priority styles are kept first.
136
+ * @param {number} [options.maximumCachedGlyphs=2048] Maximum distinct glyphs retained by the label atlas before it is rebuilt. Each glyph occupies roughly 68x68 atlas pixels, so 2048 glyphs need a 4096x4096 RGBA texture (about 67 MB). Set to 0 to disable atlas recycling.
137
+ * @param {number} [options.minimumRebuildInterval=10] Minimum seconds between label atlas rebuilds. Rebuilding re-rasterizes every visible glyph, so this bounds how often that cost can be paid.
138
+ * @param {number} [options.glyphReclaimMargin] Minimum number of unreferenced glyphs required before the atlas is rebuilt. Defaults to a quarter of `maximumCachedGlyphs`. A rebuild that would reclaim less than this is skipped, since it would discard and immediately re-rasterize the same glyphs.
139
+ * @param {number} [options.maximumVisibleLabels=1000] Maximum labels shown in one frame. Lower-priority labels are dropped, which keeps the set of live glyphs inside the atlas budget.
140
+ * @param {boolean} [options.renderGeometry=true] Render point, line, and polygon geometry in addition to labels.
141
+ * @param {"mvt"|"geovis"} [options.format="mvt"] PBF schema used by the tile service.
142
+ * @param {number} [options.maximumScreenSpaceError] Tile screen-space error.
143
+ * @param {boolean} [options.adaptiveScreenSpaceError=false] Adapt screen-space error from 16 at globe scale to 1 near street scale.
144
+ * @param {number} [options.maximumConcurrentRequests=12] Maximum pending MVT tile network requests. Limits the initial global-tile burst without requiring an extent.
145
+ * @param {number} [options.cacheBytes=67108864] Target tile cache size for labels-only providers. Geometry providers keep the Cesium3DTileset default unless configured.
146
+ * @param {number} [options.maximumCacheOverflowBytes=16777216] Additional cache headroom for labels-only providers. Geometry providers keep the Cesium3DTileset default unless configured.
147
+ * @param {Scene} [options.scene] Scene used for label decluttering and depth behavior.
148
+ * @returns {Promise<MVTDataProvider>}
149
+ */
150
+ static async fromUrl(url, options) {
151
+ return /** @type {Promise<MVTDataProvider>} */ (
152
+ /** @type {Promise<MVTDataProvider>} */ (
153
+ /** @type {unknown} */ (super.fromUrl(url, options))
154
+ )
155
+ );
156
+ }
157
+
158
+ /**
159
+ * @returns {object}
160
+ * @protected
161
+ * @ignore
162
+ */
163
+ _createTilesetLoadOptions() {
164
+ /** @type {*} */
165
+ const options = {
166
+ // Progressive traversal keeps an available lower-level label tile visible
167
+ // while a sharper child tile is loading. Immediate LOD skipping can select
168
+ // an empty child tile and leave the screen without text.
169
+ skipLevelOfDetail: false,
170
+ maximumSimultaneousTileRequests: this._maximumConcurrentRequests,
171
+ enablePick: true,
172
+ featureIdLabel: "featureId_0",
173
+ instanceFeatureIdLabel: "instanceFeatureId_0",
174
+ scene: this._scene,
175
+ uniformLevelMode: this._uniformLevelMode,
176
+ };
177
+ if (defined(this._cacheBytes)) {
178
+ options.cacheBytes = this._cacheBytes;
179
+ }
180
+ if (defined(this._maximumCacheOverflowBytes)) {
181
+ options.maximumCacheOverflowBytes = this._maximumCacheOverflowBytes;
182
+ }
183
+ return options;
184
+ }
185
+
186
+ /**
187
+ * @param {Cesium3DTileset} tileset
188
+ * @protected
189
+ * @ignore
190
+ */
191
+ _configureTileset(tileset) {
192
+ tileset._modelUpAxis = Axis.Z;
193
+ tileset._modelForwardAxis = Axis.X;
194
+ if (defined(this._maximumScreenSpaceError)) {
195
+ /** @type {*} */ (tileset).maximumScreenSpaceError =
196
+ this._maximumScreenSpaceError;
197
+ }
198
+ if (this._labelStyles.length > 0) {
199
+ this._labelManager = new MvtLabelManager({
200
+ scene: this._scene,
201
+ styles: this._labelStyles,
202
+ heightReference: this._labelHeightReference,
203
+ transitionDuration: this._labelTransitionDuration,
204
+ transitionSteps: this._labelTransitionSteps,
205
+ maximumRetiringLabels: this._maximumRetiringLabels,
206
+ maximumCachedGlyphs: this._maximumCachedGlyphs,
207
+ minimumRebuildInterval: this._minimumRebuildInterval,
208
+ glyphReclaimMargin: this._glyphReclaimMargin,
209
+ maximumVisibleLabels: this._maximumVisibleLabels,
210
+ });
211
+ this._labelManager.setVisible(this._labelsVisible);
212
+ }
213
+ }
214
+
215
+ /** @returns {boolean} */
216
+ get labelsVisible() {
217
+ return this._labelsVisible;
218
+ }
219
+
220
+ /** @param {boolean} value */
221
+ set labelsVisible(value) {
222
+ this.setLabelsVisible(value);
223
+ }
224
+
225
+ /**
226
+ * Shows or hides labels without discarding the geometry tiles or reloading
227
+ * the tile source. Re-enabling labels rebuilds the visible set from tiles
228
+ * that are already selected by the tileset.
229
+ * @param {boolean} visible
230
+ */
231
+ setLabelsVisible(visible) {
232
+ const nextValue = visible === true;
233
+ if (this._labelsVisible === nextValue) {
234
+ return;
235
+ }
236
+ this._labelsVisible = nextValue;
237
+ this._labelManager?.setVisible(nextValue);
238
+ this._scene?.requestRender?.();
239
+ }
240
+
241
+ /**
242
+ * @returns {object}
243
+ * @protected
244
+ * @ignore
245
+ */
246
+ _createCodec() {
247
+ const featureIdProperty = this._featureIdProperty;
248
+ const labelManager = this._labelManager;
249
+ const labelStyles = this._labelStyles;
250
+ return {
251
+ contentType: "mvt",
252
+ missingTilePolicy: { statusCodes: [404, 204] },
253
+
254
+ /**
255
+ * @param {Cesium3DTileset} tileset
256
+ * @param {Cesium3DTile} tile
257
+ * @param {Resource} resource
258
+ * @param {ArrayBuffer} arrayBuffer
259
+ * @ignore
260
+ */
261
+ createContent: async (tileset, tile, resource, arrayBuffer) => {
262
+ const tileCoordinates = parseTileCoordinates(
263
+ resource.getUrlComponent(true),
264
+ );
265
+ const result = await scheduleMvtTileTask({
266
+ arrayBuffer,
267
+ tileCoordinates,
268
+ featureIdProperty,
269
+ format: this._format,
270
+ includeDecodedTile: defined(labelManager),
271
+ buildGeometry: this._renderGeometry,
272
+ });
273
+ const labelCandidates = defined(result.decodedTile)
274
+ ? createMvtLabelCandidates(
275
+ /** @type {{layers: Array<*>}} */ (result.decodedTile),
276
+ tileCoordinates,
277
+ labelStyles,
278
+ this._maximumLabelsPerTile,
279
+ )
280
+ : undefined;
281
+ if (!this._renderGeometry) {
282
+ if (defined(labelManager) && defined(labelCandidates)) {
283
+ return new MvtLabel3DTileContent(
284
+ tileset,
285
+ tile,
286
+ resource,
287
+ labelManager,
288
+ labelCandidates,
289
+ tileCoordinates,
290
+ );
291
+ }
292
+ return new Empty3DTileContent(tileset, tile);
293
+ }
294
+ if (!defined(result.glb)) {
295
+ if (!result.hasFeatures) {
296
+ return new Empty3DTileContent(tileset, tile);
297
+ }
298
+ throw new RuntimeError(
299
+ "Decoded MVT tile did not produce vector glTF content.",
300
+ );
301
+ }
302
+ return VectorGltf3DTileContent.fromGltf(
303
+ tileset,
304
+ tile,
305
+ resource,
306
+ new Uint8Array(result.glb),
307
+ labelManager,
308
+ labelCandidates,
309
+ tileCoordinates,
310
+ this._renderGeometry,
311
+ );
312
+ },
313
+ };
314
+ }
315
+
316
+ /**
317
+ * @param {*} frameState
318
+ * @protected
319
+ */
320
+ update(frameState) {
321
+ const scene = /** @type {{ globe?: { uniformLevelMode?: object } }} */ (
322
+ this._scene
323
+ );
324
+ const tileset = /** @type {{ uniformLevelMode?: object }} */ (
325
+ this._tileset
326
+ );
327
+ if (
328
+ this._inheritGlobeUniformLevelMode &&
329
+ defined(tileset) &&
330
+ defined(scene?.globe)
331
+ ) {
332
+ tileset.uniformLevelMode = scene.globe.uniformLevelMode;
333
+ }
334
+ if (this._usesAdaptiveScreenSpaceError && defined(this._tileset)) {
335
+ /** @type {*} */ (this._tileset).maximumScreenSpaceError =
336
+ getAdaptiveScreenSpaceError(
337
+ frameState.camera.positionCartographic?.height,
338
+ );
339
+ }
340
+ this._labelManager?.beginFrame(frameState);
341
+ super.update(frameState);
342
+ this._labelManager?.submitSelectedTiles(frameState);
343
+ this._labelManager?.endFrame(frameState);
344
+ }
345
+
346
+ destroy() {
347
+ const labelManager = this._labelManager;
348
+ this._labelManager = undefined;
349
+ const result = super.destroy();
350
+ labelManager?.destroy();
351
+ return result;
352
+ }
353
+ }
354
+
355
+ /**
356
+ * Lightweight content ownership for labels-only tiles. It satisfies the 3D
357
+ * Tiles content contract without constructing a glTF model or being classified
358
+ * as empty content by traversal.
359
+ * @private
360
+ */
361
+ class MvtLabel3DTileContent {
362
+ /**
363
+ * @param {*} tileset
364
+ * @param {*} tile
365
+ * @param {*} resource
366
+ * @param {*} labelManager
367
+ * @param {Array<*>} labelCandidates
368
+ * @param {{tileX:number,tileY:number,tileZ:number}} tileCoordinates
369
+ */
370
+ constructor(
371
+ tileset,
372
+ tile,
373
+ resource,
374
+ labelManager,
375
+ labelCandidates,
376
+ tileCoordinates,
377
+ ) {
378
+ this._tileset = tileset;
379
+ this._tile = tile;
380
+ this._resource = resource;
381
+ this._labelManager = labelManager;
382
+ this._labelTile = labelManager.addTile(
383
+ tile,
384
+ tileCoordinates,
385
+ labelCandidates,
386
+ );
387
+ this._labelByteLength = getMvtLabelCandidatesByteLength(labelCandidates);
388
+ /** @type {*} */
389
+ this._metadata = undefined;
390
+ /** @type {*} */
391
+ this._group = undefined;
392
+ this.featurePropertiesDirty = false;
393
+ }
394
+
395
+ get featuresLength() {
396
+ return 0;
397
+ }
398
+
399
+ get pointsLength() {
400
+ return 0;
401
+ }
402
+
403
+ get trianglesLength() {
404
+ return 0;
405
+ }
406
+
407
+ get geometryByteLength() {
408
+ return 0;
409
+ }
410
+
411
+ get texturesByteLength() {
412
+ return 0;
413
+ }
414
+
415
+ get batchTableByteLength() {
416
+ return this._labelByteLength;
417
+ }
418
+
419
+ /** @returns {undefined} */
420
+ get innerContents() {
421
+ return undefined;
422
+ }
423
+
424
+ get ready() {
425
+ return true;
426
+ }
427
+
428
+ get tileset() {
429
+ return this._tileset;
430
+ }
431
+
432
+ get tile() {
433
+ return this._tile;
434
+ }
435
+
436
+ get url() {
437
+ return this._resource.getUrlComponent(true);
438
+ }
439
+
440
+ /** @returns {*} */
441
+ get metadata() {
442
+ return this._metadata;
443
+ }
444
+
445
+ set metadata(value) {
446
+ this._metadata = value;
447
+ }
448
+
449
+ /** @returns {undefined} */
450
+ get batchTable() {
451
+ return undefined;
452
+ }
453
+
454
+ /** @returns {*} */
455
+ get group() {
456
+ return this._group;
457
+ }
458
+
459
+ set group(value) {
460
+ this._group = value;
461
+ }
462
+
463
+ /** @param {*} batchId @param {string} name @returns {boolean} */
464
+ hasProperty(batchId, name) {
465
+ return false;
466
+ }
467
+
468
+ /** @param {*} batchId @returns {undefined} */
469
+ getFeature(batchId) {
470
+ return undefined;
471
+ }
472
+
473
+ /** @param {boolean} enabled @param {*} color */
474
+ applyDebugSettings(enabled, color) {}
475
+
476
+ /** @param {*} style */
477
+ applyStyle(style) {}
478
+
479
+ /** @param {*} tileset @param {*} frameState */
480
+ update(tileset, frameState) {}
481
+
482
+ /** @param {*} ray @param {*} frameState @param {*} result @returns {undefined} */
483
+ pick(ray, frameState, result) {
484
+ return undefined;
485
+ }
486
+
487
+ isDestroyed() {
488
+ return false;
489
+ }
490
+
491
+ destroy() {
492
+ this._labelManager?.removeTile(this._labelTile);
493
+ this._labelManager = undefined;
494
+ this._labelTile = undefined;
495
+ this._labelByteLength = 0;
496
+ return destroyObject(this);
497
+ }
498
+ }
499
+
500
+ /** @param {number|undefined} height */
501
+ function getAdaptiveScreenSpaceError(height) {
502
+ if (!Number.isFinite(height) || height > 3000000.0) {
503
+ return 16.0;
504
+ }
505
+ if (height > 1000000.0) {
506
+ return 12.0;
507
+ }
508
+ if (height > 200000.0) {
509
+ return 8.0;
510
+ }
511
+ if (height > 50000.0) {
512
+ return 4.0;
513
+ }
514
+ return 1.0;
515
+ }
516
+
517
+ /** @param {*} parameters @returns {Promise<MVTWorkerResult>} */
518
+ async function scheduleMvtTileTask(parameters) {
519
+ let promise;
520
+ while (!defined(promise)) {
521
+ promise = createMvtTileTaskProcessor.scheduleTask(parameters, [
522
+ parameters.arrayBuffer,
523
+ ]);
524
+ if (!defined(promise)) {
525
+ await new Promise((resolve) => setTimeout(resolve, 0));
526
+ }
527
+ }
528
+ return /** @type {Promise<MVTWorkerResult>} */ (promise);
529
+ }
530
+
531
+ /**
532
+ * @param {string} url
533
+ * @returns {{tileZ:number, tileX:number, tileY:number}}
534
+ * @ignore
535
+ */
536
+ function parseTileCoordinates(url) {
537
+ const match = url.match(/\/(\d+)\/(\d+)\/(\d+)(?:\.[^/?#]+)?(?:[?#]|$)/i);
538
+ if (!match) {
539
+ oneTimeWarning(
540
+ "MVTDataProvider.parseTileCoordinates",
541
+ `MVT tile URL did not match /{z}/{x}/{y} pattern. Falling back to z/x/y = 0/0/0. URL: ${url}`,
542
+ );
543
+ return { tileZ: 0, tileX: 0, tileY: 0 };
544
+ }
545
+ return {
546
+ tileZ: parseInt(match[1], 10),
547
+ tileX: parseInt(match[2], 10),
548
+ tileY: parseInt(match[3], 10),
549
+ };
550
+ }
551
+
552
+ MVTDataProvider._parseTileCoordinates = parseTileCoordinates;
553
+ MVTDataProvider._MvtLabel3DTileContent = MvtLabel3DTileContent;
554
+
555
+ export default MVTDataProvider;
@@ -1135,6 +1135,7 @@ function createCubeMapUpdateFunction(uniformId) {
1135
1135
  * @param {Material} material The material to load the cubemap images for.
1136
1136
  * @param {string} uniformId The ID of the uniform that corresponds to the cubemap images.
1137
1137
  * @returns A promise that resolves when the images are loaded, or a resolved promise if image loading is not necessary.
1138
+ * @ignore
1138
1139
  */
1139
1140
  function loadCubeMapImagesForUniform(material, uniformId) {
1140
1141
  const uniforms = material.uniforms;
@@ -163,7 +163,6 @@ class B3dmLoader extends ResourceLoader {
163
163
 
164
164
  const b3dm = B3dmParser.parse(this._arrayBuffer, this._byteOffset);
165
165
 
166
- let batchLength = b3dm.batchLength;
167
166
  const featureTableJson = b3dm.featureTableJson;
168
167
  const featureTableBinary = b3dm.featureTableBinary;
169
168
  const batchTableJson = b3dm.batchTableJson;
@@ -173,7 +172,7 @@ class B3dmLoader extends ResourceLoader {
173
172
  featureTableJson,
174
173
  featureTableBinary,
175
174
  );
176
- batchLength = featureTable.getGlobalProperty("BATCH_LENGTH");
175
+ const batchLength = featureTable.getGlobalProperty("BATCH_LENGTH");
177
176
  // Set batch length.
178
177
  this._batchLength = batchLength;
179
178
  // Set the RTC Center transform, if present.