@cesium/engine 26.1.0 → 26.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (325) hide show
  1. package/Build/ThirdParty/Workers/zip-web-worker.js +764 -520
  2. package/Build/Workers/{chunk-HS6AD4P2.js → chunk-2DKJSPYF.js} +14 -14
  3. package/Build/Workers/{chunk-QVLAFFJY.js → chunk-2PWVICP6.js} +1 -1
  4. package/Build/Workers/{chunk-ILME5BXA.js → chunk-2YY724ZX.js} +8 -8
  5. package/Build/Workers/{chunk-ENNFMWDW.js → chunk-4DMAXPKB.js} +12 -12
  6. package/Build/Workers/{chunk-CDJDJ5LK.js → chunk-4LRFYRBX.js} +2 -2
  7. package/Build/Workers/{chunk-76FDC45O.js → chunk-5JCZHJUU.js} +13 -13
  8. package/Build/Workers/{chunk-5LSOO2KD.js → chunk-5KG7KDDW.js} +7 -7
  9. package/Build/Workers/{chunk-A6X24AZI.js → chunk-6BSNYZZG.js} +5 -5
  10. package/Build/Workers/{chunk-IGAZBTFZ.js → chunk-6R6SGKYN.js} +6 -6
  11. package/Build/Workers/{chunk-SS5ABQGY.js → chunk-6V2KDEHL.js} +4 -4
  12. package/Build/Workers/{chunk-ZMBHFYOX.js → chunk-75BC2IHI.js} +7 -7
  13. package/Build/Workers/{chunk-LGNDTZVX.js → chunk-7SESBH2I.js} +4 -4
  14. package/Build/Workers/{chunk-CLCTQVVL.js → chunk-7WXBTNRV.js} +8 -8
  15. package/Build/Workers/{chunk-WBSY7HDY.js → chunk-A7SMPV6B.js} +12 -12
  16. package/Build/Workers/{chunk-CEEZE3YZ.js → chunk-ATSXKJ3L.js} +7 -7
  17. package/Build/Workers/{chunk-AHWAZRBV.js → chunk-B4AVL7VI.js} +1 -1
  18. package/Build/Workers/{chunk-6HK6IXK2.js → chunk-B7Q2WF6Q.js} +4 -4
  19. package/Build/Workers/{chunk-YKU2Q3A2.js → chunk-BNDSDQ7D.js} +9 -12
  20. package/Build/Workers/{chunk-R4FPNAZ2.js → chunk-CKK6CUXK.js} +9 -9
  21. package/Build/Workers/{chunk-FCP2QY4G.js → chunk-COKOYTRS.js} +5 -5
  22. package/Build/Workers/{chunk-7D2HZKH7.js → chunk-CQ4TZXAT.js} +7 -7
  23. package/Build/Workers/{chunk-TVZD72WJ.js → chunk-DKSANM4A.js} +12 -12
  24. package/Build/Workers/{chunk-FDK4K5IA.js → chunk-DZK34ZVD.js} +1 -1
  25. package/Build/Workers/{chunk-N7CCOFLX.js → chunk-E7G32DWL.js} +1 -1
  26. package/Build/Workers/{chunk-XDWCTQCZ.js → chunk-EDETO6NY.js} +2 -2
  27. package/Build/Workers/{chunk-2EFYUSUY.js → chunk-F34TJJLA.js} +16 -16
  28. package/Build/Workers/{chunk-GXWQZBAI.js → chunk-GLHDTTTO.js} +2 -2
  29. package/Build/Workers/{chunk-T5QBPLE3.js → chunk-GS7RY2DH.js} +11 -11
  30. package/Build/Workers/{chunk-C7JQVRLM.js → chunk-HDD3RFLT.js} +25 -3
  31. package/Build/Workers/{chunk-E7NZJOK7.js → chunk-HDPNFEPP.js} +121 -93
  32. package/Build/Workers/{chunk-VAL7DYNR.js → chunk-JBJ6BRIM.js} +4 -4
  33. package/Build/Workers/{chunk-XQ3SKCMM.js → chunk-JKTWW7IO.js} +5 -5
  34. package/Build/Workers/{chunk-UVO6COT2.js → chunk-JL4NWWQY.js} +5 -5
  35. package/Build/Workers/{chunk-DBD5WWG2.js → chunk-JMUUAW4X.js} +10 -10
  36. package/Build/Workers/{chunk-UEY73NRN.js → chunk-KBGAHN5R.js} +1 -1
  37. package/Build/Workers/{chunk-LD64RPYV.js → chunk-KEWK6VZL.js} +12 -12
  38. package/Build/Workers/{chunk-JW6OZT4R.js → chunk-L73K5UPP.js} +10 -10
  39. package/Build/Workers/{chunk-DIGUUD6G.js → chunk-LL2SGJYH.js} +6 -6
  40. package/Build/Workers/{chunk-XLXSDIP5.js → chunk-LYJUL4XQ.js} +6 -6
  41. package/Build/Workers/{chunk-SM2CDCYF.js → chunk-M6W46OAP.js} +7 -7
  42. package/Build/Workers/{chunk-EHTS2YPT.js → chunk-MDDKCLMF.js} +17 -17
  43. package/Build/Workers/{chunk-FGQFQHN5.js → chunk-MUW4DJV7.js} +18 -18
  44. package/Build/Workers/{chunk-HHV3MCGV.js → chunk-N5YK44FS.js} +5 -5
  45. package/Build/Workers/{chunk-RG4F5R57.js → chunk-NZQUP52G.js} +9 -9
  46. package/Build/Workers/{chunk-B4CQSLZJ.js → chunk-PKZA44LH.js} +6 -6
  47. package/Build/Workers/{chunk-OBEU25PI.js → chunk-Q2JS5LCB.js} +17 -17
  48. package/Build/Workers/{chunk-KGXSYGBG.js → chunk-QTAEVUED.js} +13 -13
  49. package/Build/Workers/{chunk-NIWITKQK.js → chunk-SEJIXZZ4.js} +11 -11
  50. package/Build/Workers/{chunk-SGRGNDOD.js → chunk-SL2HCFYW.js} +10 -10
  51. package/Build/Workers/{chunk-SF6K72D7.js → chunk-SLHK3KAR.js} +5 -5
  52. package/Build/Workers/{chunk-JKXV6PG5.js → chunk-UZY5XRL2.js} +1 -1
  53. package/Build/Workers/{chunk-LNSQVXFH.js → chunk-VRECSMG3.js} +2 -2
  54. package/Build/Workers/{chunk-A3O6EDBK.js → chunk-X27HKF5E.js} +2 -2
  55. package/Build/Workers/{chunk-7KVKHY7O.js → chunk-XBY3354M.js} +6 -6
  56. package/Build/Workers/{chunk-GSWMAFTE.js → chunk-XRZCS3HE.js} +23 -16
  57. package/Build/Workers/{chunk-6YR6JBMY.js → chunk-XSIUYAT6.js} +2 -2
  58. package/Build/Workers/{chunk-ZSGUV73H.js → chunk-Z2DW5NM2.js} +6 -6
  59. package/Build/Workers/combineGeometry.js +24 -24
  60. package/Build/Workers/createBoxGeometry.js +18 -18
  61. package/Build/Workers/createBoxOutlineGeometry.js +16 -16
  62. package/Build/Workers/createCircleGeometry.js +26 -26
  63. package/Build/Workers/createCircleOutlineGeometry.js +19 -19
  64. package/Build/Workers/createCoplanarPolygonGeometry.js +35 -35
  65. package/Build/Workers/createCoplanarPolygonOutlineGeometry.js +31 -31
  66. package/Build/Workers/createCorridorGeometry.js +31 -33
  67. package/Build/Workers/createCorridorOutlineGeometry.js +29 -31
  68. package/Build/Workers/createCylinderGeometry.js +20 -20
  69. package/Build/Workers/createCylinderOutlineGeometry.js +18 -18
  70. package/Build/Workers/createEllipseGeometry.js +26 -26
  71. package/Build/Workers/createEllipseOutlineGeometry.js +19 -19
  72. package/Build/Workers/createEllipsoidGeometry.js +19 -19
  73. package/Build/Workers/createEllipsoidOutlineGeometry.js +18 -18
  74. package/Build/Workers/createFrustumGeometry.js +18 -18
  75. package/Build/Workers/createFrustumOutlineGeometry.js +18 -18
  76. package/Build/Workers/createGeometry.js +24 -24
  77. package/Build/Workers/createGroundPolylineGeometry.js +24 -24
  78. package/Build/Workers/createPlaneGeometry.js +16 -16
  79. package/Build/Workers/createPlaneOutlineGeometry.js +15 -15
  80. package/Build/Workers/createPolygonGeometry.js +34 -34
  81. package/Build/Workers/createPolygonOutlineGeometry.js +31 -31
  82. package/Build/Workers/createPolylineGeometry.js +26 -26
  83. package/Build/Workers/createPolylineVolumeGeometry.js +31 -31
  84. package/Build/Workers/createPolylineVolumeOutlineGeometry.js +27 -27
  85. package/Build/Workers/createRectangleGeometry.js +27 -27
  86. package/Build/Workers/createRectangleOutlineGeometry.js +21 -21
  87. package/Build/Workers/createSimplePolylineGeometry.js +24 -24
  88. package/Build/Workers/createSphereGeometry.js +19 -19
  89. package/Build/Workers/createSphereOutlineGeometry.js +18 -18
  90. package/Build/Workers/createTaskProcessorWorker.js +3 -3
  91. package/Build/Workers/createVectorTileClampedPolylines.js +14 -14
  92. package/Build/Workers/createVectorTileGeometries.js +24 -24
  93. package/Build/Workers/createVectorTilePoints.js +13 -13
  94. package/Build/Workers/createVectorTilePolygons.js +22 -22
  95. package/Build/Workers/createVectorTilePolylines.js +14 -14
  96. package/Build/Workers/createVerticesFromCesium3DTilesTerrain.js +25 -25
  97. package/Build/Workers/createVerticesFromGoogleEarthEnterpriseBuffer.js +22 -22
  98. package/Build/Workers/createVerticesFromHeightmap.js +22 -22
  99. package/Build/Workers/createVerticesFromQuantizedTerrainMesh.js +20 -20
  100. package/Build/Workers/createWallGeometry.js +24 -24
  101. package/Build/Workers/createWallOutlineGeometry.js +24 -24
  102. package/Build/Workers/decodeDraco.js +10 -10
  103. package/Build/Workers/decodeGoogleEarthEnterprisePacket.js +5 -5
  104. package/Build/Workers/decodeI3S.js +10 -10
  105. package/Build/Workers/gaussianSplatSorter.js +4 -4
  106. package/Build/Workers/gaussianSplatTextureGenerator.js +4 -4
  107. package/Build/Workers/incrementallyBuildTerrainPicker.js +10 -10
  108. package/Build/Workers/transcodeKTX2.js +6 -6
  109. package/Build/Workers/transferTypedArrayTest.js +1 -1
  110. package/Build/Workers/upsampleQuantizedTerrainMesh.js +22 -22
  111. package/Build/Workers/upsampleVerticesFromCesium3DTilesTerrain.js +25 -25
  112. package/Source/Core/ArcGISTiledElevationTerrainProvider.js +1 -5
  113. package/Source/Core/BoundingSphere.js +0 -3
  114. package/Source/Core/Cesium3DTilesTerrainGeometryProcessor.js +3 -4
  115. package/Source/Core/CoplanarPolygonGeometry.js +2 -2
  116. package/Source/Core/CorridorGeometry.js +2 -4
  117. package/Source/Core/CorridorOutlineGeometry.js +1 -3
  118. package/Source/Core/EarthOrientationParameters.js +2 -2
  119. package/Source/Core/EllipseGeometryLibrary.js +2 -2
  120. package/Source/Core/EllipsoidGeodesic.js +3 -3
  121. package/Source/Core/EllipsoidRhumbLine.js +1 -1
  122. package/Source/Core/GroundPolylineGeometry.js +2 -2
  123. package/Source/Core/Heap.js +1 -1
  124. package/Source/Core/HermitePolynomialApproximation.js +215 -179
  125. package/Source/Core/InterpolationAlgorithm.js +1 -0
  126. package/Source/Core/Ion.js +1 -1
  127. package/Source/Core/IonResource.js +5 -0
  128. package/Source/Core/IonSnapGeometryType.js +59 -0
  129. package/Source/Core/IonSnapHeat.js +33 -0
  130. package/Source/Core/IonSnapMode.js +45 -0
  131. package/Source/Core/IonSnapParentGeometryType.js +52 -0
  132. package/Source/Core/IonSnapService.js +369 -0
  133. package/Source/Core/JulianDate.js +1 -1
  134. package/Source/Core/LagrangePolynomialApproximation.js +55 -52
  135. package/Source/Core/LinearApproximation.js +69 -66
  136. package/Source/Core/Math.js +59 -0
  137. package/Source/Core/Matrix2.js +2 -2
  138. package/Source/Core/Matrix3.js +2 -2
  139. package/Source/Core/OrthographicFrustum.js +1 -1
  140. package/Source/Core/PerspectiveFrustum.js +1 -1
  141. package/Source/Core/PolygonGeometry.js +2 -2
  142. package/Source/Core/PolygonGeometryLibrary.js +1 -1
  143. package/Source/Core/PolygonOutlineGeometry.js +1 -1
  144. package/Source/Core/PolylineGeometry.js +1 -1
  145. package/Source/Core/PolylineVolumeGeometryLibrary.js +1 -1
  146. package/Source/Core/Rectangle.js +7 -1
  147. package/Source/Core/RectangleOutlineGeometry.js +1 -1
  148. package/Source/Core/SimplePolylineGeometry.js +1 -1
  149. package/Source/Core/SnapService.js +63 -0
  150. package/Source/Core/TerrainEncoding.js +2 -2
  151. package/Source/Core/TerrainPicker.js +179 -168
  152. package/Source/Core/TimeIntervalCollection.js +1 -3
  153. package/Source/Core/Tipsify.js +1 -1
  154. package/Source/Core/Transforms.js +5 -1
  155. package/Source/Core/VectorPipeline.js +1211 -0
  156. package/Source/Core/VectorProvider.js +669 -0
  157. package/Source/Core/WallOutlineGeometry.js +1 -1
  158. package/Source/Core/getTimestamp.js +4 -2
  159. package/Source/DataSources/CompositeEntityCollection.js +0 -1
  160. package/Source/DataSources/CzmlDataSource.js +2 -0
  161. package/Source/DataSources/DataSourceDisplay.js +1 -1
  162. package/Source/DataSources/GeoJsonDataSource.js +0 -1
  163. package/Source/DataSources/GeometryVisualizer.js +1 -1
  164. package/Source/DataSources/KmlDataSource.js +1 -2
  165. package/Source/DataSources/PolylineVisualizer.js +1 -1
  166. package/Source/DataSources/StaticOutlineGeometryBatch.js +1 -1
  167. package/Source/Renderer/AutomaticUniforms.js +67 -2
  168. package/Source/Renderer/Context.js +9 -3
  169. package/Source/Renderer/DrawCommand.js +22 -0
  170. package/Source/Renderer/Framebuffer.js +4 -0
  171. package/Source/Renderer/Pass.js +11 -10
  172. package/Source/Renderer/ShaderBuilder.js +1 -1
  173. package/Source/Renderer/Texture.js +11 -0
  174. package/Source/Renderer/UniformState.js +54 -1
  175. package/Source/Renderer/VertexArray.js +0 -1
  176. package/Source/Scene/ArcGisMapServerImageryProvider.js +0 -5
  177. package/Source/Scene/ArcGisMapService.js +1 -1
  178. package/Source/Scene/Billboard.js +2 -1
  179. package/Source/Scene/BillboardCollection.js +7 -3
  180. package/Source/Scene/BufferPointCollection.js +4 -7
  181. package/Source/Scene/BufferPolygonCollection.js +56 -27
  182. package/Source/Scene/BufferPolylineCollection.js +61 -8
  183. package/Source/Scene/BufferPolylineMaterial.js +6 -5
  184. package/Source/Scene/BufferPrimitiveCollection.js +226 -34
  185. package/Source/Scene/Camera.js +71 -5
  186. package/Source/Scene/Cesium3DTile.js +12 -0
  187. package/Source/Scene/Cesium3DTileset.js +62 -9
  188. package/Source/Scene/Cesium3DTilesetBaseTraversal.js +15 -3
  189. package/Source/Scene/Cesium3DTilesetCache.js +15 -0
  190. package/Source/Scene/ClippingPlaneCollection.js +2 -2
  191. package/Source/Scene/ClippingPolygon.js +154 -100
  192. package/Source/Scene/ClippingPolygonCollection.js +352 -694
  193. package/Source/Scene/Controllers/Controller.js +63 -0
  194. package/Source/Scene/Controllers/ControllerHost.js +78 -0
  195. package/Source/Scene/Controllers/HybridScreenSpacePanCameraController.js +106 -0
  196. package/Source/Scene/Controllers/MouseButton.js +32 -0
  197. package/Source/Scene/Controllers/ScreenSpaceElevatorCameraController.js +295 -0
  198. package/Source/Scene/Controllers/ScreenSpaceInputBindings.js +154 -0
  199. package/Source/Scene/Controllers/ScreenSpaceMapCameraController.js +310 -0
  200. package/Source/Scene/Controllers/ScreenSpaceTiltOrbitCameraController.js +642 -0
  201. package/Source/Scene/Controllers/ScreenSpaceZoomCameraController.js +431 -0
  202. package/Source/Scene/Controllers/defaultPickWorldPosition.js +84 -0
  203. package/Source/Scene/CreditDisplay.js +62 -0
  204. package/Source/Scene/DerivedCommand.js +94 -0
  205. package/Source/Scene/EdgeFramebuffer.js +1 -5
  206. package/Source/Scene/FrameState.js +17 -0
  207. package/Source/Scene/GeoJsonPrimitive.js +114 -24
  208. package/Source/Scene/Globe.js +20 -0
  209. package/Source/Scene/GlobeDepth.js +27 -1
  210. package/Source/Scene/GlobeSurfaceShaderSet.js +42 -53
  211. package/Source/Scene/GlobeSurfaceTile.js +61 -10
  212. package/Source/Scene/GlobeSurfaceTileProvider.js +351 -26
  213. package/Source/Scene/GltfLoader.js +88 -9
  214. package/Source/Scene/GltfSpzLoader.js +1 -1
  215. package/Source/Scene/GltfVertexBufferLoader.js +6 -3
  216. package/Source/Scene/HeightReference.js +1 -1
  217. package/Source/Scene/I3SDataProvider.js +1 -1
  218. package/Source/Scene/I3SLayer.js +1 -1
  219. package/Source/Scene/I3SNode.js +2 -2
  220. package/Source/Scene/ImageryLayerCollection.js +188 -4
  221. package/Source/Scene/IonImageryProvider.js +1 -5
  222. package/Source/Scene/Label.js +4 -4
  223. package/Source/Scene/LabelCollection.js +1 -1
  224. package/Source/Scene/MVTDataProvider.js +11 -0
  225. package/Source/Scene/Model/B3dmLoader.js +1 -2
  226. package/Source/Scene/Model/EdgeVisibilityPipelineStage.js +10 -8
  227. package/Source/Scene/Model/I3dmLoader.js +1 -1
  228. package/Source/Scene/Model/InstancingPipelineStage.js +4 -7
  229. package/Source/Scene/Model/MaterialPipelineStage.js +124 -1
  230. package/Source/Scene/Model/Model.js +250 -26
  231. package/Source/Scene/Model/Model3DTileContent.js +5 -0
  232. package/Source/Scene/Model/ModelClippingPlanesPipelineStage.js +28 -1
  233. package/Source/Scene/Model/ModelClippingPolygonsPipelineStage.js +54 -19
  234. package/Source/Scene/Model/ModelDrawCommand.js +160 -16
  235. package/Source/Scene/Model/ModelDrawCommands.js +4 -0
  236. package/Source/Scene/Model/ModelRenderResources.js +2 -3
  237. package/Source/Scene/Model/ModelSceneGraph.js +31 -1
  238. package/Source/Scene/Model/ModelVectorLookupPipelineStage.js +205 -0
  239. package/Source/Scene/Model/PickingPipelineStage.js +33 -0
  240. package/Source/Scene/Model/PrimitiveRenderResources.js +24 -0
  241. package/Source/Scene/ModelComponents.js +71 -0
  242. package/Source/Scene/Picking.js +16 -5
  243. package/Source/Scene/PlanarFillIdFramebuffer.js +172 -0
  244. package/Source/Scene/PntsParser.js +0 -1
  245. package/Source/Scene/PolylineCollection.js +1 -1
  246. package/Source/Scene/PostProcessStage.js +26 -5
  247. package/Source/Scene/ResourceCache.js +7 -4
  248. package/Source/Scene/ResourceCacheKey.js +16 -13
  249. package/Source/Scene/Scene.js +258 -6
  250. package/Source/Scene/ScreenSpaceCameraController.js +1 -2
  251. package/Source/Scene/ShadowMap.js +9 -3
  252. package/Source/Scene/ShadowMapShader.js +50 -2
  253. package/Source/Scene/SnapFramebuffer.js +121 -0
  254. package/Source/Scene/Snapping.js +241 -0
  255. package/Source/Scene/TerrainFillMesh.js +3 -2
  256. package/Source/Scene/UrlTemplate3DTilesDataProvider.js +13 -2
  257. package/Source/Scene/Vector3DTileContent.js +2 -3
  258. package/Source/Scene/VectorGltf3DTileContent.js +31 -3
  259. package/Source/Scene/View.js +10 -8
  260. package/Source/Scene/VoxelTraversal.js +1 -1
  261. package/Source/Scene/WebMapServiceImageryProvider.js +5 -1
  262. package/Source/Scene/WebMapTileServiceImageryProvider.js +6 -1
  263. package/Source/Scene/createElevationBandMaterial.js +1 -1
  264. package/Source/Scene/renderBufferPointCollection.js +1 -2
  265. package/Source/Scene/renderBufferPolygonCollection.js +1 -2
  266. package/Source/Scene/renderBufferPolylineCollection.js +6 -3
  267. package/Source/Shaders/BufferPolylineMaterialVS.glsl +14 -2
  268. package/Source/Shaders/BufferPolylineMaterialVS.js +14 -2
  269. package/Source/Shaders/Builtin/Constants/passCesium3DTile.glsl +1 -1
  270. package/Source/Shaders/Builtin/Constants/passCesium3DTile.js +1 -1
  271. package/Source/Shaders/Builtin/Constants/passCesium3DTileClassification.glsl +1 -1
  272. package/Source/Shaders/Builtin/Constants/passCesium3DTileClassification.js +1 -1
  273. package/Source/Shaders/Builtin/Constants/passCesium3DTileClassificationIgnoreShow.glsl +1 -1
  274. package/Source/Shaders/Builtin/Constants/passCesium3DTileClassificationIgnoreShow.js +1 -1
  275. package/Source/Shaders/Builtin/Constants/passCesium3DTilePlanarFillId.glsl +9 -0
  276. package/Source/Shaders/Builtin/Constants/passCesium3DTilePlanarFillId.js +11 -0
  277. package/Source/Shaders/Builtin/Constants/passClassification.glsl +1 -1
  278. package/Source/Shaders/Builtin/Constants/passClassification.js +1 -1
  279. package/Source/Shaders/Builtin/Constants/passGaussianSplats.glsl +1 -1
  280. package/Source/Shaders/Builtin/Constants/passGaussianSplats.js +1 -1
  281. package/Source/Shaders/Builtin/Constants/passOpaque.glsl +1 -1
  282. package/Source/Shaders/Builtin/Constants/passOpaque.js +1 -1
  283. package/Source/Shaders/Builtin/Constants/passTranslucent.glsl +1 -1
  284. package/Source/Shaders/Builtin/Constants/passTranslucent.js +1 -1
  285. package/Source/Shaders/Builtin/Constants/passVoxels.glsl +1 -1
  286. package/Source/Shaders/Builtin/Constants/passVoxels.js +1 -1
  287. package/Source/Shaders/Builtin/CzmBuiltins.js +4 -4
  288. package/Source/Shaders/Builtin/Functions/eyeToCartographicDelta.glsl +74 -0
  289. package/Source/Shaders/Builtin/Functions/eyeToCartographicDelta.js +76 -0
  290. package/Source/Shaders/GlobeFS.glsl +20 -14
  291. package/Source/Shaders/GlobeFS.js +20 -14
  292. package/Source/Shaders/GlobeVS.glsl +0 -32
  293. package/Source/Shaders/GlobeVS.js +0 -32
  294. package/Source/Shaders/Materials/PolylineGlowMaterial.glsl +1 -1
  295. package/Source/Shaders/Materials/PolylineGlowMaterial.js +1 -1
  296. package/Source/Shaders/Model/MaterialStageFS.glsl +8 -2
  297. package/Source/Shaders/Model/MaterialStageFS.js +8 -2
  298. package/Source/Shaders/Model/ModelClippingPolygonsStageFS.glsl +15 -3
  299. package/Source/Shaders/Model/ModelClippingPolygonsStageFS.js +15 -3
  300. package/Source/Shaders/Model/ModelClippingPolygonsStageVS.glsl +20 -24
  301. package/Source/Shaders/Model/ModelClippingPolygonsStageVS.js +20 -24
  302. package/Source/Shaders/Model/ModelFS.glsl +109 -0
  303. package/Source/Shaders/Model/ModelFS.js +109 -0
  304. package/Source/Shaders/Model/ModelVS.glsl +7 -2
  305. package/Source/Shaders/Model/ModelVS.js +7 -2
  306. package/Source/Shaders/Model/ModelVectorLookupStageFS.glsl +6 -0
  307. package/Source/Shaders/Model/ModelVectorLookupStageFS.js +8 -0
  308. package/Source/Shaders/Model/ModelVectorLookupStageVS.glsl +15 -0
  309. package/Source/Shaders/Model/ModelVectorLookupStageVS.js +17 -0
  310. package/Source/Shaders/Model/VerticalExaggerationStageVS.glsl +9 -10
  311. package/Source/Shaders/Model/VerticalExaggerationStageVS.js +9 -11
  312. package/Source/Shaders/VectorCommon.glsl +305 -0
  313. package/Source/Shaders/VectorCommon.js +307 -0
  314. package/Source/ThirdParty/Workers/zip-web-worker.js +1 -1
  315. package/Source/ThirdParty/zip-module.wasm +0 -0
  316. package/Source/Widget/CesiumWidget.js +30 -0
  317. package/index.d.ts +1326 -65
  318. package/index.js +179 -155
  319. package/package.json +6 -6
  320. package/Source/Shaders/Builtin/Functions/clipPolygons.glsl +0 -37
  321. package/Source/Shaders/Builtin/Functions/clipPolygons.js +0 -39
  322. package/Source/Shaders/Builtin/Functions/unpackClippingExtents.glsl +0 -14
  323. package/Source/Shaders/Builtin/Functions/unpackClippingExtents.js +0 -15
  324. package/Source/Shaders/PolygonSignedDistanceFS.glsl +0 -131
  325. package/Source/Shaders/PolygonSignedDistanceFS.js +0 -132
@@ -0,0 +1,154 @@
1
+ import Check from "../../Core/Check.js";
2
+ import defined from "../../Core/defined.js";
3
+ import ScreenSpaceEventType from "../../Core/ScreenSpaceEventType.js";
4
+ import MouseButton from "./MouseButton.js";
5
+
6
+ /**
7
+ * @typedef {object} InputBinding
8
+ * @memberof ScreenSpaceInputBindings
9
+ * @property {MouseButton} button The mouse button used for drag start/stop.
10
+ * @property {number} [modifier] The optional keyboard modifier to register.
11
+ */
12
+
13
+ /**
14
+ * @typedef {object} DragInputActions
15
+ * @memberof ScreenSpaceInputBindings
16
+ * @property {Function} [start] Called on drag start.
17
+ * @property {Function} [end] Called on drag stop.
18
+ * @property {Function} [change] Called on drag move.
19
+ */
20
+
21
+ /**
22
+ * @typedef {object} DragInputState
23
+ * @memberof ScreenSpaceInputBindings
24
+ * @property {boolean} isDragging True if a drag is in progress, false otherwise.
25
+ */
26
+
27
+ /**
28
+ * @private
29
+ * @param {MouseButton} button The mouse button.
30
+ * @returns {ScreenSpaceEventType|undefined} The corresponding down event type.
31
+ */
32
+ function getDownEventType(button) {
33
+ if (button === MouseButton.LEFT) {
34
+ return ScreenSpaceEventType.LEFT_DOWN;
35
+ }
36
+
37
+ if (button === MouseButton.MIDDLE) {
38
+ return ScreenSpaceEventType.MIDDLE_DOWN;
39
+ }
40
+
41
+ if (button === MouseButton.RIGHT) {
42
+ return ScreenSpaceEventType.RIGHT_DOWN;
43
+ }
44
+
45
+ return undefined;
46
+ }
47
+
48
+ /**
49
+ * @private
50
+ * @param {MouseButton} button The mouse button.
51
+ * @returns {ScreenSpaceEventType|undefined} The corresponding down event type.
52
+ */
53
+ function getUpEventType(button) {
54
+ if (button === MouseButton.LEFT) {
55
+ return ScreenSpaceEventType.LEFT_UP;
56
+ }
57
+
58
+ if (button === MouseButton.MIDDLE) {
59
+ return ScreenSpaceEventType.MIDDLE_UP;
60
+ }
61
+
62
+ if (button === MouseButton.RIGHT) {
63
+ return ScreenSpaceEventType.RIGHT_UP;
64
+ }
65
+
66
+ return undefined;
67
+ }
68
+
69
+ /**
70
+ * @namespace
71
+ */
72
+ class ScreenSpaceInputBindings {
73
+ /**
74
+ * Registers drag input bindings on a screen space event handler.
75
+ * @param {ScreenSpaceEventHandler} handler The screen space event handler.
76
+ * @param {InputBinding[]} inputBindings The drag bindings to register.
77
+ * @param {DragInputActions} dragInputActions The callbacks to invoke for drag actions.
78
+ * @returns {DragInputState} The drag input state.
79
+ */
80
+ static registerDragInputBindings(handler, inputBindings, dragInputActions) {
81
+ //>>includeStart('debug', pragmas.debug);
82
+ Check.typeOf.object("handler", handler);
83
+ Check.defined("inputBindings", inputBindings);
84
+ Check.typeOf.object("dragInputActions", dragInputActions);
85
+ //>>includeEnd('debug');
86
+
87
+ const changeModifiers = new Set();
88
+ const dragInputState = {
89
+ isDragging: false,
90
+ };
91
+
92
+ for (const binding of inputBindings) {
93
+ dragInputState.isDragging = false;
94
+ const downEventType = getDownEventType(binding.button);
95
+ const upEventType = getUpEventType(binding.button);
96
+
97
+ if (defined(downEventType)) {
98
+ handler.setInputAction(
99
+ (...e) => {
100
+ dragInputState.isDragging = true;
101
+ if (defined(dragInputActions.start)) {
102
+ dragInputActions.start(...e);
103
+ }
104
+ },
105
+ downEventType,
106
+ binding.modifier,
107
+ );
108
+ }
109
+
110
+ if (defined(upEventType)) {
111
+ handler.setInputAction(
112
+ (...e) => {
113
+ if (dragInputState.isDragging) {
114
+ dragInputState.isDragging = false;
115
+ if (defined(dragInputActions.end)) {
116
+ dragInputActions.end(...e);
117
+ }
118
+ }
119
+ },
120
+ upEventType,
121
+ binding.modifier,
122
+ );
123
+
124
+ // Register a global up event to ensure that the drag end callback is called even if the mouse is released outside of the canvas or the modifier key is released before the mouse button.
125
+ handler.setInputAction((...e) => {
126
+ if (dragInputState.isDragging) {
127
+ dragInputState.isDragging = false;
128
+ if (defined(dragInputActions.end)) {
129
+ dragInputActions.end(...e);
130
+ }
131
+ }
132
+ }, upEventType);
133
+ }
134
+
135
+ changeModifiers.add(binding.modifier);
136
+ }
137
+
138
+ for (const modifier of changeModifiers) {
139
+ handler.setInputAction(
140
+ (...e) => {
141
+ if (dragInputState.isDragging && defined(dragInputActions.change)) {
142
+ dragInputActions.change(...e);
143
+ }
144
+ },
145
+ ScreenSpaceEventType.MOUSE_MOVE,
146
+ modifier,
147
+ );
148
+ }
149
+
150
+ return dragInputState;
151
+ }
152
+ }
153
+
154
+ export default ScreenSpaceInputBindings;
@@ -0,0 +1,310 @@
1
+ import Cartesian2 from "../../Core/Cartesian2.js";
2
+ import Cartesian3 from "../../Core/Cartesian3.js";
3
+ import defined from "../../Core/defined.js";
4
+ import Frozen from "../../Core/Frozen.js";
5
+ import getTimestamp from "../../Core/getTimestamp.js";
6
+ import CesiumMath from "../../Core/Math.js";
7
+ import ScreenSpaceEventHandler from "../../Core/ScreenSpaceEventHandler.js";
8
+ import TimeConstants from "../../Core/TimeConstants.js";
9
+ import defaultPickWorldPosition from "./defaultPickWorldPosition.js";
10
+ import ScreenSpaceInputBindings from "./ScreenSpaceInputBindings.js";
11
+ import MouseButton from "./MouseButton.js";
12
+
13
+ /**
14
+ * @typedef {object} ControllerOptions
15
+ * @memberof ScreenSpaceMapCameraController
16
+ * @property {ScreenSpaceInputBindings.InputBinding[]} [dragInputs] The drag input bindings that control panning.
17
+ */
18
+
19
+ /**
20
+ * A camera controller that allows panning the camera tangential to the ellipsoid in screen space
21
+ * by clicking and dragging the mouse.
22
+ * @class
23
+ * @implements Controller
24
+ * @example
25
+ * viewer.scene.screenSpaceCameraController.enableInputs = false;
26
+ *
27
+ * const mapCameraController = new Cesium.ScreenSpaceMapCameraController();
28
+ * viewer.addController(mapCameraController);
29
+ *
30
+ * @example
31
+ * // Configure the controller to use the right mouse button for panning instead of the default left mouse button.
32
+ * const mapCameraController = new Cesium.ScreenSpaceMapCameraController({
33
+ * dragInputs: [{ button: Cesium.MouseButton.RIGHT}]
34
+ * });
35
+ * viewer.addController(mapCameraController);
36
+ */
37
+ class ScreenSpaceMapCameraController {
38
+ /**
39
+ * @private
40
+ * @returns {ScreenSpaceInputBindings.InputBinding[]} The default drag input bindings.
41
+ */
42
+ static _getDefaultDragInputs() {
43
+ return [
44
+ Object.freeze({
45
+ button: MouseButton.LEFT,
46
+ }),
47
+ ];
48
+ }
49
+
50
+ /**
51
+ * Creates an instance of a ScreenSpaceMapCameraController.
52
+ * @param {ScreenSpaceMapCameraController.ControllerOptions} [options] The options for configuring the controller.
53
+ */
54
+ constructor(options = Frozen.EMPTY_OBJECT) {
55
+ this._enabled = true;
56
+ this._handler = undefined;
57
+ this._lastUpdateTime = undefined;
58
+
59
+ /**
60
+ * The drag input bindings that map panning. Each binding is a combination of the mouse button
61
+ * and an optional keyboard modifier.
62
+ * @type {ScreenSpaceInputBindings.InputBinding[]}
63
+ * @see ScreenSpaceEventHandler
64
+ */
65
+ this.dragInputs =
66
+ options.dragInputs ??
67
+ ScreenSpaceMapCameraController._getDefaultDragInputs();
68
+
69
+ this._dragInputState = undefined;
70
+ this._panDelta = new Cartesian2();
71
+ this._panPosition = new Cartesian2();
72
+
73
+ /**
74
+ * A callback function used to pick the world position from which to pan. The function is called with {@link Scene}, the {@link Cartesian2} screen space position, and a {@link Cartesian3} instance to store the result. The function should return the {@link Cartesian3} world position from which to pan, or <code>undefined</code> if no position could be picked. If <code>undefined</code> is returned, the camera will pan relative to the ellipsoid surface below the camera.
75
+ * @type {Function(Scene, Cartesian2, Cartesian3): Cartesian3|undefined}
76
+ * @default defaultPickWorldPosition
77
+ * @example
78
+ * const mapCameraController = new Cesium.ScreenSpaceMapCameraController();
79
+ * mapCameraController.pickWorldPosition = function (scene, windowPosition, result) {
80
+ * // Pick the world position from the depth buffer
81
+ * return scene.pickPosition(windowPosition, result);
82
+ * };
83
+ * viewer.addController(mapCameraController);
84
+ */
85
+ this.pickWorldPosition = defaultPickWorldPosition;
86
+
87
+ this._ellipsoidNormal = new Cartesian3();
88
+ this._ellipsoidSurfacePosition = new Cartesian3();
89
+ this._panDirectionX = new Cartesian3();
90
+ this._panDirectionY = new Cartesian3();
91
+ this._pixelSize = new Cartesian2();
92
+ this._panVelocity = new Cartesian2();
93
+
94
+ /**
95
+ * The speed in meters per pixel at which the camera pans.
96
+ * @type {number}
97
+ * @default 1.0
98
+ */
99
+ this.panSpeed = 1.0;
100
+
101
+ /**
102
+ * Enable or disable inertia when panning. When enabled, the camera will continue to move after the user stops dragging, gradually slowing down based on {@link ScreenSpaceMapCameraController#inertialDecay}.
103
+ * @type {boolean}
104
+ * @default true
105
+ */
106
+ this.inertiaEnabled = true;
107
+
108
+ /**
109
+ * The rate at which the camera's pan velocity decays over time.
110
+ * @type {number}
111
+ * @default 6.0
112
+ */
113
+ this.inertialDecay = 6.0;
114
+
115
+ /**
116
+ * A parameter in the range <code>[0, 1)</code> used to limit the range
117
+ * of inputs to a percentage of the window width/height per animation frame.
118
+ * This helps keep the camera under control in low-frame-rate situations.
119
+ * @type {number}
120
+ * @default 0.1
121
+ */
122
+ this.maximumMovementRatio = 0.1;
123
+ }
124
+
125
+ /**
126
+ * @inheritdoc
127
+ */
128
+ get enabled() {
129
+ return this._enabled;
130
+ }
131
+ set enabled(value) {
132
+ this._enabled = value;
133
+
134
+ if (value) {
135
+ this._panDelta.x = 0;
136
+ this._panDelta.y = 0;
137
+ } else if (defined(this._dragInputState)) {
138
+ this._dragInputState.isDragging = false;
139
+ }
140
+ }
141
+
142
+ /**
143
+ * @private
144
+ * @type {boolean}
145
+ */
146
+ get isDragging() {
147
+ return defined(this._dragInputState) && this._dragInputState.isDragging;
148
+ }
149
+
150
+ /**
151
+ * @inheritdoc
152
+ * @param {HTMLElement} element The DOM element containing the Cesium scene.
153
+ */
154
+ connectedCallback(element) {
155
+ const handler = new ScreenSpaceEventHandler(element);
156
+ this._handler = handler;
157
+
158
+ this._dragInputState = ScreenSpaceInputBindings.registerDragInputBindings(
159
+ handler,
160
+ this.dragInputs,
161
+ {
162
+ start: this._handleStartPan.bind(this),
163
+ change: this._handlePan.bind(this),
164
+ },
165
+ );
166
+ }
167
+
168
+ /**
169
+ * @inheritdoc
170
+ * @param {HTMLElement} element The DOM element containing the Cesium scene.
171
+ */
172
+ disconnectedCallback(element) {
173
+ const handler = this._handler;
174
+ if (defined(handler) && !handler.isDestroyed()) {
175
+ handler.destroy();
176
+ }
177
+ }
178
+
179
+ /**
180
+ * @inheritdoc
181
+ */
182
+ firstUpdate() {
183
+ this._lastUpdateTime = getTimestamp();
184
+ this._panDelta.x = 0;
185
+ this._panDelta.y = 0;
186
+ }
187
+
188
+ /**
189
+ * @inheritdoc
190
+ * @param {any} scene
191
+ */
192
+ update(scene) {
193
+ const dt =
194
+ (getTimestamp() - this._lastUpdateTime) *
195
+ TimeConstants.SECONDS_PER_MILLISECOND;
196
+
197
+ let dx = -this._panDelta.x;
198
+ let dy = this._panDelta.y;
199
+
200
+ if (this.inertiaEnabled && !this.isDragging) {
201
+ const damping = Math.exp(-this.inertialDecay * dt);
202
+ this._panVelocity.x *= damping;
203
+ this._panVelocity.y *= damping;
204
+
205
+ dx = this._panVelocity.x * dt;
206
+ dy = this._panVelocity.y * dt;
207
+ }
208
+
209
+ const { camera, ellipsoid, canvas } = scene;
210
+ const { clientWidth, clientHeight } = canvas;
211
+ if (
212
+ dt === 0 ||
213
+ clientWidth === 0 ||
214
+ clientHeight === 0 ||
215
+ (Math.abs(dx) <= CesiumMath.EPSILON3 &&
216
+ Math.abs(dy) <= CesiumMath.EPSILON3)
217
+ ) {
218
+ // Reset for next frame
219
+ this._lastUpdateTime = getTimestamp();
220
+ this._panDelta.x = 0;
221
+ this._panDelta.y = 0;
222
+ return;
223
+ }
224
+
225
+ const windowPosition = this._panPosition;
226
+ let surface = this.pickWorldPosition(
227
+ scene,
228
+ windowPosition,
229
+ this._ellipsoidSurfacePosition,
230
+ );
231
+
232
+ if (!defined(surface)) {
233
+ surface = ellipsoid.scaleToGeodeticSurface(
234
+ camera.positionWC,
235
+ this._ellipsoidSurfacePosition,
236
+ );
237
+ }
238
+
239
+ const zAxis = ellipsoid.geodeticSurfaceNormal(
240
+ surface,
241
+ this._ellipsoidNormal,
242
+ );
243
+
244
+ let xAxis = Cartesian3.clone(camera.rightWC, this._panDirectionX);
245
+ xAxis = Cartesian3.normalize(xAxis, this._panDirectionX);
246
+
247
+ // If z-axis is parallel to camera forward, we use the camera up vector to compute the y-axis. Otherwise, we use the z-axis and x-axis to compute the y-axis.
248
+ let yAxis = Cartesian3.clone(camera.upWC, this._panDirectionY);
249
+ const theta = Math.abs(Cartesian3.dot(zAxis, camera.directionWC));
250
+ if (CesiumMath.lessThan(theta, 1.0, CesiumMath.EPSILON6)) {
251
+ yAxis = Cartesian3.cross(zAxis, xAxis, this._panDirectionY);
252
+ }
253
+
254
+ yAxis = Cartesian3.normalize(yAxis, this._panDirectionY);
255
+
256
+ const distance = Cartesian3.distance(camera.positionWC, surface);
257
+ const { drawingBufferWidth, drawingBufferHeight, pixelRatio } = scene;
258
+ const pixelSize = camera.frustum.getPixelDimensions(
259
+ drawingBufferWidth,
260
+ drawingBufferHeight,
261
+ distance,
262
+ pixelRatio,
263
+ this._pixelSize,
264
+ );
265
+
266
+ const maxPixels =
267
+ this.maximumMovementRatio * Math.max(clientWidth, clientHeight);
268
+
269
+ dx = CesiumMath.clamp(dx, -maxPixels, maxPixels);
270
+ this._panVelocity.x = dx / dt;
271
+ dx *= this.panSpeed * pixelSize.x;
272
+
273
+ dy = CesiumMath.clamp(dy, -maxPixels, maxPixels);
274
+ this._panVelocity.y = dy / dt;
275
+ dy *= this.panSpeed * pixelSize.y;
276
+
277
+ camera.move(xAxis, dx);
278
+ camera.move(yAxis, dy);
279
+
280
+ // Reset for next frame
281
+ this._lastUpdateTime = getTimestamp();
282
+ this._panDelta.x = 0;
283
+ this._panDelta.y = 0;
284
+ }
285
+
286
+ /**
287
+ * @private
288
+ * @param {Event} event
289
+ */
290
+ _handleStartPan(event) {
291
+ if (!this.enabled) {
292
+ return;
293
+ }
294
+
295
+ this._panDelta.x = 0;
296
+ this._panDelta.y = 0;
297
+ }
298
+
299
+ /**
300
+ * @private
301
+ */
302
+ _handlePan(event) {
303
+ this._panDelta.x += event.endPosition.x - event.startPosition.x;
304
+ this._panDelta.y += event.endPosition.y - event.startPosition.y;
305
+ this._panPosition.x = event.endPosition.x;
306
+ this._panPosition.y = event.endPosition.y;
307
+ }
308
+ }
309
+
310
+ export default ScreenSpaceMapCameraController;