@cesium/engine 24.0.0 → 26.0.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 (362) hide show
  1. package/Build/Workers/{chunk-6WLHJFD3.js → chunk-3VFEWOBI.js} +59 -32
  2. package/Build/Workers/{chunk-UQU4RXLT.js → chunk-424RNO3D.js} +50 -45
  3. package/Build/Workers/chunk-4MGMYHOO.js +147 -0
  4. package/Build/Workers/{chunk-AMIHNSST.js → chunk-4S7IE3LB.js} +2 -2
  5. package/Build/Workers/{chunk-J6AW5YHS.js → chunk-52JDLOEM.js} +14 -14
  6. package/Build/Workers/{chunk-6RMS4S72.js → chunk-54I6Y66F.js} +6 -6
  7. package/Build/Workers/{chunk-C6P4IG5P.js → chunk-6YEE6JDR.js} +6 -6
  8. package/Build/Workers/{chunk-72VYSVEW.js → chunk-7J2HKPRH.js} +11 -10
  9. package/Build/Workers/{chunk-7O5XJTVE.js → chunk-7WM2PX4V.js} +5 -5
  10. package/Build/Workers/{chunk-5A2SW66E.js → chunk-ACXQXN46.js} +16 -16
  11. package/Build/Workers/{chunk-VLDEUTOP.js → chunk-AYKR4VBR.js} +2 -2
  12. package/Build/Workers/{chunk-YQFTYQMZ.js → chunk-C6J67V5A.js} +3 -2
  13. package/Build/Workers/{chunk-D4EJ2NXG.js → chunk-C6KNZ7T4.js} +17 -17
  14. package/Build/Workers/{chunk-7MDYBRYJ.js → chunk-CFQP6LYM.js} +4 -4
  15. package/Build/Workers/{chunk-YAOZMOFL.js → chunk-CXOYE2WM.js} +5 -5
  16. package/Build/Workers/{chunk-B6SCUUFP.js → chunk-CZEYZU4N.js} +10 -10
  17. package/Build/Workers/{chunk-NPF7SSHZ.js → chunk-DBOEKL43.js} +7 -7
  18. package/Build/Workers/{chunk-44EMEGKW.js → chunk-DDWSZVMY.js} +5 -5
  19. package/Build/Workers/{chunk-7X322WP2.js → chunk-DOBXCNC3.js} +13 -13
  20. package/Build/Workers/{chunk-JCI63T3K.js → chunk-E7VQ76KE.js} +6 -6
  21. package/Build/Workers/{chunk-7TYLCBGK.js → chunk-EBSIOBXY.js} +12 -10
  22. package/Build/Workers/{chunk-GQUNK2XC.js → chunk-EF2QYXGA.js} +14 -14
  23. package/Build/Workers/{chunk-BJD6QGXZ.js → chunk-EPYXRCDB.js} +12 -12
  24. package/Build/Workers/{chunk-63SIWPLS.js → chunk-F6QDY6HU.js} +13 -13
  25. package/Build/Workers/{chunk-XY6HMDGI.js → chunk-FRQZECAO.js} +5 -5
  26. package/Build/Workers/{chunk-VMVOUQ5J.js → chunk-G7PXZRVF.js} +7 -7
  27. package/Build/Workers/{chunk-N65BAKSH.js → chunk-INUEEEQA.js} +8 -8
  28. package/Build/Workers/{chunk-7QRFIKWQ.js → chunk-IRBKFCEJ.js} +2 -2
  29. package/Build/Workers/{chunk-UIGVOKKI.js → chunk-IYOUHCZB.js} +3 -2
  30. package/Build/Workers/{chunk-5GXYJQ2K.js → chunk-J6BWOHUF.js} +3 -3
  31. package/Build/Workers/{chunk-A47HVBC5.js → chunk-KFSTQKNM.js} +7 -7
  32. package/Build/Workers/{chunk-EV3VGO6Y.js → chunk-KKOSKAZB.js} +17 -17
  33. package/Build/Workers/{chunk-6MPGQEHA.js → chunk-KSSWJIZW.js} +2 -2
  34. package/Build/Workers/{chunk-DHKPFLSJ.js → chunk-M3B5JKSM.js} +3 -2
  35. package/Build/Workers/chunk-MPZHGZU6.js +2342 -0
  36. package/Build/Workers/{chunk-YJZGW74L.js → chunk-MYP774IS.js} +2213 -1349
  37. package/Build/Workers/{chunk-LIB2H534.js → chunk-O3EA5HS7.js} +12 -11
  38. package/Build/Workers/{chunk-ILMFADZA.js → chunk-P3CK7MCY.js} +27 -5
  39. package/Build/Workers/chunk-Q3PY526V.js +3201 -0
  40. package/Build/Workers/chunk-QN67VG36.js +973 -0
  41. package/Build/Workers/{chunk-XJRBB253.js → chunk-QRWGUWI6.js} +11 -11
  42. package/Build/Workers/{chunk-AF3MU2RL.js → chunk-S4MCOY6I.js} +7 -6
  43. package/Build/Workers/{chunk-Y7HNNPNK.js → chunk-SMQZZOW6.js} +10 -10
  44. package/Build/Workers/{chunk-PVV64VFW.js → chunk-TKKIREQ6.js} +3 -2
  45. package/Build/Workers/{chunk-MKM27KGV.js → chunk-U3ZA64U7.js} +2 -2
  46. package/Build/Workers/{chunk-2N4KDHS3.js → chunk-UA25D5MX.js} +12 -11
  47. package/Build/Workers/{chunk-RQNJD3O4.js → chunk-UOOIQ3KX.js} +12 -12
  48. package/Build/Workers/{chunk-GOQBUCXH.js → chunk-V7VQKN6N.js} +709 -431
  49. package/Build/Workers/{chunk-LXMCPFFS.js → chunk-VQYETPWC.js} +4 -4
  50. package/Build/Workers/{chunk-NKT5K3K3.js → chunk-VWV2IJRB.js} +13 -12
  51. package/Build/Workers/chunk-XZMBNNDX.js +1287 -0
  52. package/Build/Workers/{chunk-ISY4EZCA.js → chunk-Y57HREW5.js} +4 -4
  53. package/Build/Workers/{chunk-EDXL4W76.js → chunk-Y5BF6AFU.js} +2 -2
  54. package/Build/Workers/{chunk-Q3C6VQH6.js → chunk-YLY7NKAB.js} +4 -4
  55. package/Build/Workers/{chunk-4TIG36AW.js → chunk-ZK3CF7ZD.js} +12 -12
  56. package/Build/Workers/{chunk-AJLTU6PF.js → chunk-ZP7JMQV4.js} +4 -1
  57. package/Build/Workers/{chunk-HXJMS2ZI.js → chunk-ZZ46LWL6.js} +1 -1
  58. package/Build/Workers/combineGeometry.js +24 -24
  59. package/Build/Workers/createBoxGeometry.js +18 -18
  60. package/Build/Workers/createBoxOutlineGeometry.js +16 -16
  61. package/Build/Workers/createCircleGeometry.js +26 -26
  62. package/Build/Workers/createCircleOutlineGeometry.js +19 -19
  63. package/Build/Workers/createCoplanarPolygonGeometry.js +33 -33
  64. package/Build/Workers/createCoplanarPolygonOutlineGeometry.js +31 -31
  65. package/Build/Workers/createCorridorGeometry.js +29 -29
  66. package/Build/Workers/createCorridorOutlineGeometry.js +28 -28
  67. package/Build/Workers/createCylinderGeometry.js +20 -20
  68. package/Build/Workers/createCylinderOutlineGeometry.js +18 -18
  69. package/Build/Workers/createEllipseGeometry.js +26 -26
  70. package/Build/Workers/createEllipseOutlineGeometry.js +19 -19
  71. package/Build/Workers/createEllipsoidGeometry.js +19 -19
  72. package/Build/Workers/createEllipsoidOutlineGeometry.js +18 -18
  73. package/Build/Workers/createFrustumGeometry.js +18 -18
  74. package/Build/Workers/createFrustumOutlineGeometry.js +18 -18
  75. package/Build/Workers/createGeometry.js +24 -24
  76. package/Build/Workers/createGroundPolylineGeometry.js +175 -118
  77. package/Build/Workers/createPlaneGeometry.js +16 -16
  78. package/Build/Workers/createPlaneOutlineGeometry.js +15 -15
  79. package/Build/Workers/createPolygonGeometry.js +32 -32
  80. package/Build/Workers/createPolygonOutlineGeometry.js +30 -30
  81. package/Build/Workers/createPolylineGeometry.js +25 -25
  82. package/Build/Workers/createPolylineVolumeGeometry.js +31 -31
  83. package/Build/Workers/createPolylineVolumeOutlineGeometry.js +27 -27
  84. package/Build/Workers/createRectangleGeometry.js +27 -27
  85. package/Build/Workers/createRectangleOutlineGeometry.js +20 -20
  86. package/Build/Workers/createSimplePolylineGeometry.js +23 -23
  87. package/Build/Workers/createSphereGeometry.js +19 -19
  88. package/Build/Workers/createSphereOutlineGeometry.js +18 -18
  89. package/Build/Workers/createTaskProcessorWorker.js +3 -3
  90. package/Build/Workers/createVectorTileClampedPolylines.js +14 -14
  91. package/Build/Workers/createVectorTileGeometries.js +24 -24
  92. package/Build/Workers/createVectorTilePoints.js +13 -13
  93. package/Build/Workers/createVectorTilePolygons.js +22 -22
  94. package/Build/Workers/createVectorTilePolylines.js +14 -14
  95. package/Build/Workers/createVerticesFromCesium3DTilesTerrain.js +25 -25
  96. package/Build/Workers/createVerticesFromGoogleEarthEnterpriseBuffer.js +22 -22
  97. package/Build/Workers/createVerticesFromHeightmap.js +24 -23
  98. package/Build/Workers/createVerticesFromQuantizedTerrainMesh.js +20 -20
  99. package/Build/Workers/createWallGeometry.js +24 -24
  100. package/Build/Workers/createWallOutlineGeometry.js +23 -23
  101. package/Build/Workers/decodeDraco.js +10 -10
  102. package/Build/Workers/decodeGoogleEarthEnterprisePacket.js +5 -5
  103. package/Build/Workers/decodeI3S.js +10 -10
  104. package/Build/Workers/gaussianSplatSorter.js +4 -4
  105. package/Build/Workers/gaussianSplatTextureGenerator.js +4 -4
  106. package/Build/Workers/incrementallyBuildTerrainPicker.js +10 -10
  107. package/Build/Workers/transcodeKTX2.js +12 -9
  108. package/Build/Workers/transferTypedArrayTest.js +1 -1
  109. package/Build/Workers/upsampleQuantizedTerrainMesh.js +22 -22
  110. package/Build/Workers/upsampleVerticesFromCesium3DTilesTerrain.js +25 -25
  111. package/Source/Core/ArcType.js +6 -1
  112. package/Source/Core/ArticulationStageType.js +5 -1
  113. package/Source/Core/AssociativeArray.js +100 -94
  114. package/Source/Core/BoundingSphere.js +1296 -1300
  115. package/Source/Core/Cartesian2.js +1 -1
  116. package/Source/Core/Cartesian3.js +2 -3
  117. package/Source/Core/Cartesian4.js +1 -1
  118. package/Source/Core/Cartographic.js +257 -249
  119. package/Source/Core/ClockRange.js +6 -1
  120. package/Source/Core/ClockStep.js +6 -1
  121. package/Source/Core/Color.js +844 -835
  122. package/Source/Core/ComponentDatatype.js +39 -1
  123. package/Source/Core/CornerType.js +6 -1
  124. package/Source/Core/Credit.js +121 -124
  125. package/Source/Core/Ellipsoid.js +637 -660
  126. package/Source/Core/ExtrapolationType.js +6 -1
  127. package/Source/Core/GeocodeType.js +6 -1
  128. package/Source/Core/GeographicProjection.js +74 -74
  129. package/Source/Core/GeographicTilingScheme.js +179 -198
  130. package/Source/Core/GeometryOffsetAttribute.js +7 -1
  131. package/Source/Core/GeometryType.js +7 -1
  132. package/Source/Core/HeightmapEncoding.js +6 -1
  133. package/Source/Core/Iau2006XysData.js +24 -13
  134. package/Source/Core/IndexDatatype.js +3 -1
  135. package/Source/Core/InterpolationType.js +5 -1
  136. package/Source/Core/Intersect.js +6 -1
  137. package/Source/Core/Ion.js +1 -1
  138. package/Source/Core/IonGeocodeProviderType.js +5 -1
  139. package/Source/Core/JulianDate.js +850 -848
  140. package/Source/Core/KeyboardEventModifier.js +6 -1
  141. package/Source/Core/MapProjection.js +40 -44
  142. package/Source/Core/Matrix2.js +906 -893
  143. package/Source/Core/Matrix3.js +1643 -1575
  144. package/Source/Core/Matrix4.js +2903 -2872
  145. package/Source/Core/PixelFormat.js +3 -1
  146. package/Source/Core/PrimitiveType.js +11 -1
  147. package/Source/Core/Ray.js +62 -60
  148. package/Source/Core/Rectangle.js +913 -904
  149. package/Source/Core/ReferenceFrame.js +6 -1
  150. package/Source/Core/RequestScheduler.js +8 -3
  151. package/Source/Core/RequestState.js +6 -1
  152. package/Source/Core/RequestType.js +6 -1
  153. package/Source/Core/Resource.js +1 -1
  154. package/Source/Core/ScreenSpaceEventHandler.js +51 -41
  155. package/Source/Core/ScreenSpaceEventType.js +6 -1
  156. package/Source/Core/TerrainQuantization.js +6 -1
  157. package/Source/Core/TilingScheme.js +100 -98
  158. package/Source/Core/TimeConstants.js +6 -1
  159. package/Source/Core/TimeStandard.js +6 -1
  160. package/Source/Core/TrackingReferenceFrame.js +6 -1
  161. package/Source/Core/Visibility.js +6 -1
  162. package/Source/Core/VulkanConstants.js +6 -1
  163. package/Source/Core/WebGLConstants.js +6 -1
  164. package/Source/Core/WebMercatorProjection.js +108 -109
  165. package/Source/Core/WebMercatorTilingScheme.js +246 -242
  166. package/Source/Core/WindingOrder.js +3 -1
  167. package/Source/Core/createColorRamp.js +37 -0
  168. package/Source/Core/globalTypes.js +25 -0
  169. package/Source/DataSources/StaticGroundGeometryPerMaterialBatch.js +1 -0
  170. package/Source/DataSources/StaticGroundPolylinePerMaterialBatch.js +1 -0
  171. package/Source/DataSources/StripeOrientation.js +6 -1
  172. package/Source/Renderer/BufferUsage.js +20 -9
  173. package/Source/Renderer/Context.js +2 -29
  174. package/Source/Renderer/DrawCommand.js +435 -403
  175. package/Source/Renderer/MipmapHint.js +5 -1
  176. package/Source/Renderer/Pass.js +10 -3
  177. package/Source/Renderer/PickId.js +44 -0
  178. package/Source/Renderer/PixelDatatype.js +3 -1
  179. package/Source/Renderer/RenderbufferFormat.js +5 -1
  180. package/Source/Renderer/ShaderDestination.js +4 -1
  181. package/Source/Renderer/TextureMagnificationFilter.js +3 -1
  182. package/Source/Renderer/TextureMinificationFilter.js +3 -1
  183. package/Source/Renderer/TextureWrap.js +5 -1
  184. package/Source/Renderer/createUniform.js +346 -239
  185. package/Source/Renderer/createUniformArray.js +494 -381
  186. package/Source/Scene/AlphaMode.js +5 -1
  187. package/Source/Scene/ArcGisBaseMapType.js +6 -1
  188. package/Source/Scene/ArcGisMapService.js +1 -1
  189. package/Source/Scene/AttributeType.js +3 -1
  190. package/Source/Scene/Axis.js +3 -1
  191. package/Source/Scene/BingMapsStyle.js +6 -1
  192. package/Source/Scene/BlendEquation.js +6 -1
  193. package/Source/Scene/BlendFunction.js +6 -1
  194. package/Source/Scene/BlendOption.js +6 -1
  195. package/Source/Scene/BlendingState.js +6 -1
  196. package/Source/Scene/BufferLoader.js +0 -2
  197. package/Source/Scene/BufferPoint.js +1 -0
  198. package/Source/Scene/BufferPointCollection.js +17 -1
  199. package/Source/Scene/BufferPolygon.js +3 -2
  200. package/Source/Scene/BufferPolygonCollection.js +13 -1
  201. package/Source/Scene/BufferPolyline.js +1 -0
  202. package/Source/Scene/BufferPolylineCollection.js +5 -1
  203. package/Source/Scene/BufferPrimitiveCollection.js +210 -43
  204. package/Source/Scene/CameraEventAggregator.js +30 -18
  205. package/Source/Scene/CameraEventType.js +6 -1
  206. package/Source/Scene/Cesium3DTile.js +54 -1
  207. package/Source/Scene/Cesium3DTileColorBlendMode.js +6 -1
  208. package/Source/Scene/Cesium3DTileContent.js +195 -254
  209. package/Source/Scene/Cesium3DTileContentFactory.js +10 -2
  210. package/Source/Scene/Cesium3DTileContentState.js +6 -1
  211. package/Source/Scene/Cesium3DTileContentType.js +3 -1
  212. package/Source/Scene/Cesium3DTileFeature.js +289 -306
  213. package/Source/Scene/Cesium3DTileOptimizationHint.js +6 -1
  214. package/Source/Scene/Cesium3DTilePass.js +5 -1
  215. package/Source/Scene/Cesium3DTilePointFeature.js +433 -511
  216. package/Source/Scene/Cesium3DTileRefine.js +6 -1
  217. package/Source/Scene/Cesium3DTileVectorFeature.js +586 -0
  218. package/Source/Scene/Cesium3DTileset.js +46 -6
  219. package/Source/Scene/ClassificationType.js +3 -1
  220. package/Source/Scene/CloudType.js +3 -1
  221. package/Source/Scene/ColorBlendMode.js +4 -1
  222. package/Source/Scene/Composite3DTileContent.js +254 -292
  223. package/Source/Scene/CullFace.js +6 -1
  224. package/Source/Scene/DepthFunction.js +6 -1
  225. package/Source/Scene/DynamicAtmosphereLightingType.js +3 -1
  226. package/Source/Scene/EdgeDisplayMode.js +50 -0
  227. package/Source/Scene/Empty3DTileContent.js +100 -132
  228. package/Source/Scene/EquirectangularPanorama.js +1 -0
  229. package/Source/Scene/ExpressionNodeType.js +6 -1
  230. package/Source/Scene/GaussianSplat3DTileContent.js +436 -478
  231. package/Source/Scene/GeoJsonPrimitive.js +874 -0
  232. package/Source/Scene/Geometry3DTileContent.js +151 -185
  233. package/Source/Scene/GltfBufferViewLoader.js +0 -2
  234. package/Source/Scene/GltfDracoLoader.js +0 -2
  235. package/Source/Scene/GltfImageLoader.js +0 -3
  236. package/Source/Scene/GltfIndexBufferLoader.js +0 -4
  237. package/Source/Scene/GltfJsonLoader.js +0 -2
  238. package/Source/Scene/GltfLoader.js +109 -5
  239. package/Source/Scene/GltfLoaderUtil.js +14 -0
  240. package/Source/Scene/GltfSpzLoader.js +0 -2
  241. package/Source/Scene/GltfStructuralMetadataLoader.js +0 -2
  242. package/Source/Scene/GltfTextureLoader.js +0 -2
  243. package/Source/Scene/GltfVertexBufferLoader.js +0 -4
  244. package/Source/Scene/HeightReference.js +5 -1
  245. package/Source/Scene/HorizontalOrigin.js +6 -1
  246. package/Source/Scene/ImageryProvider.js +1 -1
  247. package/Source/Scene/ImageryState.js +6 -1
  248. package/Source/Scene/Implicit3DTileContent.js +179 -214
  249. package/Source/Scene/ImplicitSubdivisionScheme.js +3 -1
  250. package/Source/Scene/InstanceAttributeSemantic.js +3 -1
  251. package/Source/Scene/IonWorldImageryStyle.js +6 -1
  252. package/Source/Scene/JobType.js +6 -1
  253. package/Source/Scene/LabelStyle.js +6 -1
  254. package/Source/Scene/MVTDataProvider.js +147 -0
  255. package/Source/Scene/MapMode2D.js +6 -1
  256. package/Source/Scene/MetadataComponentType.js +3 -1
  257. package/Source/Scene/MetadataSchemaLoader.js +0 -2
  258. package/Source/Scene/MetadataSemantic.js +6 -2
  259. package/Source/Scene/MetadataType.js +3 -1
  260. package/Source/Scene/Model/B3dmLoader.js +0 -3
  261. package/Source/Scene/Model/CustomShaderMode.js +3 -1
  262. package/Source/Scene/Model/CustomShaderTranslucencyMode.js +5 -1
  263. package/Source/Scene/Model/EdgeVisibilityPipelineStage.js +78 -337
  264. package/Source/Scene/Model/Extensions/Gpm/PpeSource.js +5 -1
  265. package/Source/Scene/Model/Extensions/Gpm/StorageType.js +5 -1
  266. package/Source/Scene/Model/GeoJsonLoader.js +0 -2
  267. package/Source/Scene/Model/I3dmLoader.js +0 -3
  268. package/Source/Scene/Model/InstancingPipelineStage.js +1 -1
  269. package/Source/Scene/Model/LightingModel.js +5 -1
  270. package/Source/Scene/Model/MaterialPipelineStage.js +184 -3
  271. package/Source/Scene/Model/Model.js +34 -0
  272. package/Source/Scene/Model/Model3DTileContent.js +424 -458
  273. package/Source/Scene/Model/ModelDrawCommand.js +31 -3
  274. package/Source/Scene/Model/ModelReader.js +474 -3
  275. package/Source/Scene/Model/ModelRuntimePrimitive.js +2 -1
  276. package/Source/Scene/Model/ModelType.js +3 -1
  277. package/Source/Scene/Model/ModelUtility.js +4 -0
  278. package/Source/Scene/Model/PntsLoader.js +4 -3
  279. package/Source/Scene/Model/StyleCommandsNeeded.js +3 -1
  280. package/Source/Scene/Model/UniformType.js +5 -1
  281. package/Source/Scene/Model/VaryingType.js +5 -1
  282. package/Source/Scene/Model/createVectorTileBuffersFromModelComponents.js +500 -139
  283. package/Source/Scene/Model/pickModel.js +94 -299
  284. package/Source/Scene/ModelAnimationLoop.js +6 -1
  285. package/Source/Scene/ModelAnimationState.js +6 -1
  286. package/Source/Scene/ModelComponents.js +47 -2
  287. package/Source/Scene/Multiple3DTileContent.js +291 -334
  288. package/Source/Scene/PrimitiveState.js +7 -1
  289. package/Source/Scene/QuadtreeOccluders.js +20 -15
  290. package/Source/Scene/QuadtreeTile.js +547 -541
  291. package/Source/Scene/QuadtreeTileLoadState.js +6 -1
  292. package/Source/Scene/QuadtreeTileProvider.js +159 -175
  293. package/Source/Scene/ResourceLoader.js +0 -1
  294. package/Source/Scene/ResourceLoaderState.js +7 -1
  295. package/Source/Scene/Scene.js +26 -0
  296. package/Source/Scene/SceneMode.js +4 -1
  297. package/Source/Scene/ShadowMode.js +3 -1
  298. package/Source/Scene/SkyBox.js +1 -1
  299. package/Source/Scene/SplitDirection.js +6 -1
  300. package/Source/Scene/StencilFunction.js +6 -1
  301. package/Source/Scene/StencilOperation.js +6 -1
  302. package/Source/Scene/TerrainState.js +7 -1
  303. package/Source/Scene/TileState.js +7 -1
  304. package/Source/Scene/Tileset3DTileContent.js +113 -146
  305. package/Source/Scene/Tonemapper.js +5 -1
  306. package/Source/Scene/UrlTemplate3DTilesDataProvider.js +499 -0
  307. package/Source/Scene/Vector3DTileContent.js +205 -234
  308. package/Source/Scene/VectorGltf3DTileContent.js +131 -61
  309. package/Source/Scene/VertexAttributeSemantic.js +3 -1
  310. package/Source/Scene/VerticalOrigin.js +6 -1
  311. package/Source/Scene/VoxelBoxShape.js +12 -6
  312. package/Source/Scene/VoxelContent.js +2 -0
  313. package/Source/Scene/VoxelCylinderShape.js +39 -38
  314. package/Source/Scene/VoxelEllipsoidShape.js +46 -96
  315. package/Source/Scene/VoxelMetadataOrder.js +6 -1
  316. package/Source/Scene/VoxelPrimitive.js +159 -175
  317. package/Source/Scene/VoxelProvider.js +64 -90
  318. package/Source/Scene/VoxelShapeType.js +3 -1
  319. package/Source/Scene/buildVectorGltfFromMVT.js +1059 -0
  320. package/Source/Scene/buildVoxelCustomShader.js +199 -0
  321. package/Source/Scene/decodeMVT.js +634 -0
  322. package/Source/Scene/renderBufferPointCollection.js +124 -127
  323. package/Source/Scene/renderBufferPolygonCollection.js +122 -122
  324. package/Source/Scene/renderBufferPolylineCollection.js +386 -238
  325. package/Source/Shaders/BufferPointMaterialFS.glsl +1 -0
  326. package/Source/Shaders/BufferPointMaterialFS.js +1 -0
  327. package/Source/Shaders/BufferPointMaterialVS.glsl +19 -9
  328. package/Source/Shaders/BufferPointMaterialVS.js +20 -10
  329. package/Source/Shaders/BufferPolygonMaterialVS.glsl +13 -4
  330. package/Source/Shaders/BufferPolygonMaterialVS.js +14 -5
  331. package/Source/Shaders/BufferPolylineMaterialVS.glsl +16 -2
  332. package/Source/Shaders/BufferPolylineMaterialVS.js +17 -3
  333. package/Source/Shaders/Builtin/Constants/passCesium3DTileEdgesDirect.glsl +9 -0
  334. package/Source/Shaders/Builtin/Constants/passCesium3DTileEdgesDirect.js +11 -0
  335. package/Source/Shaders/Builtin/Constants/passOverlay.glsl +1 -1
  336. package/Source/Shaders/Builtin/Constants/passOverlay.js +1 -1
  337. package/Source/Shaders/Builtin/CzmBuiltins.js +4 -0
  338. package/Source/Shaders/Builtin/Functions/computeTextureTransform.glsl +24 -0
  339. package/Source/Shaders/Builtin/Functions/computeTextureTransform.js +25 -0
  340. package/Source/Shaders/Model/ConstantLodStageFS.glsl +60 -0
  341. package/Source/Shaders/Model/ConstantLodStageFS.js +62 -0
  342. package/Source/Shaders/Model/ConstantLodStageVS.glsl +12 -0
  343. package/Source/Shaders/Model/ConstantLodStageVS.js +13 -0
  344. package/Source/Shaders/Model/EdgeVisibilityStageVS.glsl +0 -1
  345. package/Source/Shaders/Model/EdgeVisibilityStageVS.js +0 -1
  346. package/Source/Shaders/Model/MaterialStageFS.glsl +46 -20
  347. package/Source/Shaders/Model/MaterialStageFS.js +46 -20
  348. package/Source/Shaders/Voxels/convertLocalToBoxUv.glsl +0 -1
  349. package/Source/Shaders/Voxels/convertLocalToBoxUv.js +0 -1
  350. package/Source/Shaders/Voxels/convertLocalToCylinderUv.glsl +7 -9
  351. package/Source/Shaders/Voxels/convertLocalToCylinderUv.js +7 -9
  352. package/Source/Shaders/Voxels/convertLocalToEllipsoidUv.glsl +7 -17
  353. package/Source/Shaders/Voxels/convertLocalToEllipsoidUv.js +7 -17
  354. package/Source/Widget/CesiumWidget.js +11 -4
  355. package/index.d.ts +595 -343
  356. package/index.js +392 -378
  357. package/package.json +3 -3
  358. package/Build/Workers/chunk-DVB56LG7.js +0 -114
  359. package/Build/Workers/chunk-HKUES6UG.js +0 -2357
  360. package/Build/Workers/chunk-HRHRYFHS.js +0 -940
  361. package/Build/Workers/chunk-KLPGTXS3.js +0 -642
  362. package/Build/Workers/chunk-ZBZRTRJB.js +0 -1829
@@ -1,291 +1,295 @@
1
+ // @ts-check
2
+
1
3
  import Cartesian2 from "./Cartesian2.js";
4
+ import Cartesian3 from "./Cartesian3.js";
5
+ import Cartographic from "./Cartographic.js";
2
6
  import Frozen from "./Frozen.js";
3
7
  import defined from "./defined.js";
4
8
  import Ellipsoid from "./Ellipsoid.js";
5
9
  import Rectangle from "./Rectangle.js";
6
10
  import WebMercatorProjection from "./WebMercatorProjection.js";
7
11
 
12
+ /** @import MapProjection from "./MapProjection.js"; */
13
+ /** @import TilingScheme from "./TilingScheme.js"; */
14
+
15
+ const southwestScratch = new Cartographic();
16
+ const northeastScratch = new Cartographic();
17
+
18
+ const southwestCartesianScratch = new Cartesian3();
19
+ const northeastCartesianScratch = new Cartesian3();
20
+
8
21
  /**
9
22
  * A tiling scheme for geometry referenced to a {@link WebMercatorProjection}, EPSG:3857. This is
10
23
  * the tiling scheme used by Google Maps, Microsoft Bing Maps, and most of ESRI ArcGIS Online.
11
24
  *
12
- * @alias WebMercatorTilingScheme
13
- * @constructor
14
- *
15
- * @param {object} [options] Object with the following properties:
16
- * @param {Ellipsoid} [options.ellipsoid=Ellipsoid.default] The ellipsoid whose surface is being tiled. Defaults to
17
- * the default ellipsoid.
18
- * @param {number} [options.numberOfLevelZeroTilesX=1] The number of tiles in the X direction at level zero of
19
- * the tile tree.
20
- * @param {number} [options.numberOfLevelZeroTilesY=1] The number of tiles in the Y direction at level zero of
21
- * the tile tree.
22
- * @param {Cartesian2} [options.rectangleSouthwestInMeters] The southwest corner of the rectangle covered by the
23
- * tiling scheme, in meters. If this parameter or rectangleNortheastInMeters is not specified, the entire
24
- * globe is covered in the longitude direction and an equal distance is covered in the latitude
25
- * direction, resulting in a square projection.
26
- * @param {Cartesian2} [options.rectangleNortheastInMeters] The northeast corner of the rectangle covered by the
27
- * tiling scheme, in meters. If this parameter or rectangleSouthwestInMeters is not specified, the entire
28
- * globe is covered in the longitude direction and an equal distance is covered in the latitude
29
- * direction, resulting in a square projection.
25
+ * @implements {TilingScheme}
30
26
  */
31
- function WebMercatorTilingScheme(options) {
32
- options = options ?? Frozen.EMPTY_OBJECT;
33
-
34
- this._ellipsoid = options.ellipsoid ?? Ellipsoid.default;
35
- this._numberOfLevelZeroTilesX = options.numberOfLevelZeroTilesX ?? 1;
36
- this._numberOfLevelZeroTilesY = options.numberOfLevelZeroTilesY ?? 1;
37
-
38
- this._projection = new WebMercatorProjection(this._ellipsoid);
39
-
40
- if (
41
- defined(options.rectangleSouthwestInMeters) &&
42
- defined(options.rectangleNortheastInMeters)
43
- ) {
44
- this._rectangleSouthwestInMeters = options.rectangleSouthwestInMeters;
45
- this._rectangleNortheastInMeters = options.rectangleNortheastInMeters;
46
- } else {
47
- const semimajorAxisTimesPi = this._ellipsoid.maximumRadius * Math.PI;
48
- this._rectangleSouthwestInMeters = new Cartesian2(
49
- -semimajorAxisTimesPi,
50
- -semimajorAxisTimesPi,
51
- );
52
- this._rectangleNortheastInMeters = new Cartesian2(
53
- semimajorAxisTimesPi,
54
- semimajorAxisTimesPi,
27
+ class WebMercatorTilingScheme {
28
+ /**
29
+ * @type {Cartesian2}
30
+ * @private
31
+ */
32
+ _rectangleSouthwestInMeters;
33
+
34
+ /**
35
+ * @type {Cartesian2}
36
+ * @private
37
+ */
38
+ _rectangleNortheastInMeters;
39
+
40
+ /**
41
+ * @param {object} [options] Object with the following properties:
42
+ * @param {Ellipsoid} [options.ellipsoid=Ellipsoid.default] The ellipsoid whose surface is being tiled. Defaults to
43
+ * the default ellipsoid.
44
+ * @param {number} [options.numberOfLevelZeroTilesX=1] The number of tiles in the X direction at level zero of
45
+ * the tile tree.
46
+ * @param {number} [options.numberOfLevelZeroTilesY=1] The number of tiles in the Y direction at level zero of
47
+ * the tile tree.
48
+ * @param {Cartesian2} [options.rectangleSouthwestInMeters] The southwest corner of the rectangle covered by the
49
+ * tiling scheme, in meters. If this parameter or rectangleNortheastInMeters is not specified, the entire
50
+ * globe is covered in the longitude direction and an equal distance is covered in the latitude
51
+ * direction, resulting in a square projection.
52
+ * @param {Cartesian2} [options.rectangleNortheastInMeters] The northeast corner of the rectangle covered by the
53
+ * tiling scheme, in meters. If this parameter or rectangleSouthwestInMeters is not specified, the entire
54
+ * globe is covered in the longitude direction and an equal distance is covered in the latitude
55
+ * direction, resulting in a square projection.
56
+ */
57
+ constructor(options) {
58
+ options = options ?? Frozen.EMPTY_OBJECT;
59
+
60
+ this._ellipsoid = options.ellipsoid ?? Ellipsoid.default;
61
+ this._numberOfLevelZeroTilesX = options.numberOfLevelZeroTilesX ?? 1;
62
+ this._numberOfLevelZeroTilesY = options.numberOfLevelZeroTilesY ?? 1;
63
+
64
+ this._projection = new WebMercatorProjection(this._ellipsoid);
65
+
66
+ if (
67
+ defined(options.rectangleSouthwestInMeters) &&
68
+ defined(options.rectangleNortheastInMeters)
69
+ ) {
70
+ this._rectangleSouthwestInMeters = options.rectangleSouthwestInMeters;
71
+ this._rectangleNortheastInMeters = options.rectangleNortheastInMeters;
72
+ } else {
73
+ const semimajorAxisTimesPi = this._ellipsoid.maximumRadius * Math.PI;
74
+ this._rectangleSouthwestInMeters = new Cartesian2(
75
+ -semimajorAxisTimesPi,
76
+ -semimajorAxisTimesPi,
77
+ );
78
+ this._rectangleNortheastInMeters = new Cartesian2(
79
+ semimajorAxisTimesPi,
80
+ semimajorAxisTimesPi,
81
+ );
82
+ }
83
+
84
+ let { x, y } = this._rectangleSouthwestInMeters;
85
+ Cartesian3.fromElements(x, y, 0, southwestCartesianScratch);
86
+ this._projection.unproject(southwestCartesianScratch, southwestScratch);
87
+
88
+ ({ x, y } = this._rectangleNortheastInMeters);
89
+ Cartesian3.fromElements(x, y, 0, northeastCartesianScratch);
90
+ this._projection.unproject(northeastCartesianScratch, northeastScratch);
91
+
92
+ this._rectangle = new Rectangle(
93
+ southwestScratch.longitude,
94
+ southwestScratch.latitude,
95
+ northeastScratch.longitude,
96
+ northeastScratch.latitude,
55
97
  );
56
98
  }
57
99
 
58
- const southwest = this._projection.unproject(
59
- this._rectangleSouthwestInMeters,
60
- );
61
- const northeast = this._projection.unproject(
62
- this._rectangleNortheastInMeters,
63
- );
64
- this._rectangle = new Rectangle(
65
- southwest.longitude,
66
- southwest.latitude,
67
- northeast.longitude,
68
- northeast.latitude,
69
- );
70
- }
71
-
72
- Object.defineProperties(WebMercatorTilingScheme.prototype, {
73
100
  /**
74
101
  * Gets the ellipsoid that is tiled by this tiling scheme.
75
- * @memberof WebMercatorTilingScheme.prototype
76
102
  * @type {Ellipsoid}
77
103
  */
78
- ellipsoid: {
79
- get: function () {
80
- return this._ellipsoid;
81
- },
82
- },
104
+ get ellipsoid() {
105
+ return this._ellipsoid;
106
+ }
83
107
 
84
108
  /**
85
109
  * Gets the rectangle, in radians, covered by this tiling scheme.
86
- * @memberof WebMercatorTilingScheme.prototype
87
110
  * @type {Rectangle}
88
111
  */
89
- rectangle: {
90
- get: function () {
91
- return this._rectangle;
92
- },
93
- },
112
+ get rectangle() {
113
+ return this._rectangle;
114
+ }
94
115
 
95
116
  /**
96
117
  * Gets the map projection used by this tiling scheme.
97
- * @memberof WebMercatorTilingScheme.prototype
98
118
  * @type {MapProjection}
99
119
  */
100
- projection: {
101
- get: function () {
102
- return this._projection;
103
- },
104
- },
105
- });
120
+ get projection() {
121
+ return this._projection;
122
+ }
106
123
 
107
- /**
108
- * Gets the total number of tiles in the X direction at a specified level-of-detail.
109
- *
110
- * @param {number} level The level-of-detail.
111
- * @returns {number} The number of tiles in the X direction at the given level.
112
- */
113
- WebMercatorTilingScheme.prototype.getNumberOfXTilesAtLevel = function (level) {
114
- return this._numberOfLevelZeroTilesX << level;
115
- };
124
+ /**
125
+ * Gets the total number of tiles in the X direction at a specified level-of-detail.
126
+ *
127
+ * @param {number} level The level-of-detail.
128
+ * @returns {number} The number of tiles in the X direction at the given level.
129
+ */
130
+ getNumberOfXTilesAtLevel(level) {
131
+ return this._numberOfLevelZeroTilesX << level;
132
+ }
116
133
 
117
- /**
118
- * Gets the total number of tiles in the Y direction at a specified level-of-detail.
119
- *
120
- * @param {number} level The level-of-detail.
121
- * @returns {number} The number of tiles in the Y direction at the given level.
122
- */
123
- WebMercatorTilingScheme.prototype.getNumberOfYTilesAtLevel = function (level) {
124
- return this._numberOfLevelZeroTilesY << level;
125
- };
134
+ /**
135
+ * Gets the total number of tiles in the Y direction at a specified level-of-detail.
136
+ *
137
+ * @param {number} level The level-of-detail.
138
+ * @returns {number} The number of tiles in the Y direction at the given level.
139
+ */
140
+ getNumberOfYTilesAtLevel(level) {
141
+ return this._numberOfLevelZeroTilesY << level;
142
+ }
126
143
 
127
- /**
128
- * Transforms a rectangle specified in geodetic radians to the native coordinate system
129
- * of this tiling scheme.
130
- *
131
- * @param {Rectangle} rectangle The rectangle to transform.
132
- * @param {Rectangle} [result] The instance to which to copy the result, or undefined if a new instance
133
- * should be created.
134
- * @returns {Rectangle} The specified 'result', or a new object containing the native rectangle if 'result'
135
- * is undefined.
136
- */
137
- WebMercatorTilingScheme.prototype.rectangleToNativeRectangle = function (
138
- rectangle,
139
- result,
140
- ) {
141
- const projection = this._projection;
142
- const southwest = projection.project(Rectangle.southwest(rectangle));
143
- const northeast = projection.project(Rectangle.northeast(rectangle));
144
-
145
- if (!defined(result)) {
146
- return new Rectangle(southwest.x, southwest.y, northeast.x, northeast.y);
144
+ /**
145
+ * Transforms a rectangle specified in geodetic radians to the native coordinate system
146
+ * of this tiling scheme.
147
+ *
148
+ * @param {Rectangle} rectangle The rectangle to transform.
149
+ * @param {Rectangle} [result] The instance to which to copy the result, or undefined if a new instance
150
+ * should be created.
151
+ * @returns {Rectangle} The specified 'result', or a new object containing the native rectangle if 'result'
152
+ * is undefined.
153
+ */
154
+ rectangleToNativeRectangle(rectangle, result) {
155
+ const projection = this._projection;
156
+ const southwest = projection.project(Rectangle.southwest(rectangle));
157
+ const northeast = projection.project(Rectangle.northeast(rectangle));
158
+
159
+ if (!defined(result)) {
160
+ return new Rectangle(southwest.x, southwest.y, northeast.x, northeast.y);
161
+ }
162
+
163
+ result.west = southwest.x;
164
+ result.south = southwest.y;
165
+ result.east = northeast.x;
166
+ result.north = northeast.y;
167
+ return result;
147
168
  }
148
169
 
149
- result.west = southwest.x;
150
- result.south = southwest.y;
151
- result.east = northeast.x;
152
- result.north = northeast.y;
153
- return result;
154
- };
170
+ /**
171
+ * Converts tile x, y coordinates and level to a rectangle expressed in the native coordinates
172
+ * of the tiling scheme.
173
+ *
174
+ * @param {number} x The integer x coordinate of the tile.
175
+ * @param {number} y The integer y coordinate of the tile.
176
+ * @param {number} level The tile level-of-detail. Zero is the least detailed.
177
+ * @param {Rectangle} [result] The instance to which to copy the result, or undefined if a new instance
178
+ * should be created.
179
+ * @returns {Rectangle} The specified 'result', or a new object containing the rectangle
180
+ * if 'result' is undefined.
181
+ */
182
+ tileXYToNativeRectangle(x, y, level, result) {
183
+ const xTiles = this.getNumberOfXTilesAtLevel(level);
184
+ const yTiles = this.getNumberOfYTilesAtLevel(level);
155
185
 
156
- /**
157
- * Converts tile x, y coordinates and level to a rectangle expressed in the native coordinates
158
- * of the tiling scheme.
159
- *
160
- * @param {number} x The integer x coordinate of the tile.
161
- * @param {number} y The integer y coordinate of the tile.
162
- * @param {number} level The tile level-of-detail. Zero is the least detailed.
163
- * @param {object} [result] The instance to which to copy the result, or undefined if a new instance
164
- * should be created.
165
- * @returns {Rectangle} The specified 'result', or a new object containing the rectangle
166
- * if 'result' is undefined.
167
- */
168
- WebMercatorTilingScheme.prototype.tileXYToNativeRectangle = function (
169
- x,
170
- y,
171
- level,
172
- result,
173
- ) {
174
- const xTiles = this.getNumberOfXTilesAtLevel(level);
175
- const yTiles = this.getNumberOfYTilesAtLevel(level);
176
-
177
- const xTileWidth =
178
- (this._rectangleNortheastInMeters.x - this._rectangleSouthwestInMeters.x) /
179
- xTiles;
180
- const west = this._rectangleSouthwestInMeters.x + x * xTileWidth;
181
- const east = this._rectangleSouthwestInMeters.x + (x + 1) * xTileWidth;
182
-
183
- const yTileHeight =
184
- (this._rectangleNortheastInMeters.y - this._rectangleSouthwestInMeters.y) /
185
- yTiles;
186
- const north = this._rectangleNortheastInMeters.y - y * yTileHeight;
187
- const south = this._rectangleNortheastInMeters.y - (y + 1) * yTileHeight;
188
-
189
- if (!defined(result)) {
190
- return new Rectangle(west, south, east, north);
186
+ const xTileWidth =
187
+ (this._rectangleNortheastInMeters.x -
188
+ this._rectangleSouthwestInMeters.x) /
189
+ xTiles;
190
+ const west = this._rectangleSouthwestInMeters.x + x * xTileWidth;
191
+ const east = this._rectangleSouthwestInMeters.x + (x + 1) * xTileWidth;
192
+
193
+ const yTileHeight =
194
+ (this._rectangleNortheastInMeters.y -
195
+ this._rectangleSouthwestInMeters.y) /
196
+ yTiles;
197
+ const north = this._rectangleNortheastInMeters.y - y * yTileHeight;
198
+ const south = this._rectangleNortheastInMeters.y - (y + 1) * yTileHeight;
199
+
200
+ if (!defined(result)) {
201
+ return new Rectangle(west, south, east, north);
202
+ }
203
+
204
+ result.west = west;
205
+ result.south = south;
206
+ result.east = east;
207
+ result.north = north;
208
+ return result;
191
209
  }
192
210
 
193
- result.west = west;
194
- result.south = south;
195
- result.east = east;
196
- result.north = north;
197
- return result;
198
- };
211
+ /**
212
+ * Converts tile x, y coordinates and level to a cartographic rectangle in radians.
213
+ *
214
+ * @param {number} x The integer x coordinate of the tile.
215
+ * @param {number} y The integer y coordinate of the tile.
216
+ * @param {number} level The tile level-of-detail. Zero is the least detailed.
217
+ * @param {Rectangle} [result] The instance to which to copy the result, or undefined if a new instance
218
+ * should be created.
219
+ * @returns {Rectangle} The specified 'result', or a new object containing the rectangle
220
+ * if 'result' is undefined.
221
+ */
222
+ tileXYToRectangle(x, y, level, result) {
223
+ const nativeRectangle = this.tileXYToNativeRectangle(x, y, level, result);
199
224
 
200
- /**
201
- * Converts tile x, y coordinates and level to a cartographic rectangle in radians.
202
- *
203
- * @param {number} x The integer x coordinate of the tile.
204
- * @param {number} y The integer y coordinate of the tile.
205
- * @param {number} level The tile level-of-detail. Zero is the least detailed.
206
- * @param {object} [result] The instance to which to copy the result, or undefined if a new instance
207
- * should be created.
208
- * @returns {Rectangle} The specified 'result', or a new object containing the rectangle
209
- * if 'result' is undefined.
210
- */
211
- WebMercatorTilingScheme.prototype.tileXYToRectangle = function (
212
- x,
213
- y,
214
- level,
215
- result,
216
- ) {
217
- const nativeRectangle = this.tileXYToNativeRectangle(x, y, level, result);
218
-
219
- const projection = this._projection;
220
- const southwest = projection.unproject(
221
- new Cartesian2(nativeRectangle.west, nativeRectangle.south),
222
- );
223
- const northeast = projection.unproject(
224
- new Cartesian2(nativeRectangle.east, nativeRectangle.north),
225
- );
226
-
227
- nativeRectangle.west = southwest.longitude;
228
- nativeRectangle.south = southwest.latitude;
229
- nativeRectangle.east = northeast.longitude;
230
- nativeRectangle.north = northeast.latitude;
231
- return nativeRectangle;
232
- };
225
+ const projection = this._projection;
226
+ const southwest = projection.unproject(
227
+ new Cartesian3(nativeRectangle.west, nativeRectangle.south),
228
+ );
229
+ const northeast = projection.unproject(
230
+ new Cartesian3(nativeRectangle.east, nativeRectangle.north),
231
+ );
233
232
 
234
- /**
235
- * Calculates the tile x, y coordinates of the tile containing
236
- * a given cartographic position.
237
- *
238
- * @param {Cartographic} position The position.
239
- * @param {number} level The tile level-of-detail. Zero is the least detailed.
240
- * @param {Cartesian2} [result] The instance to which to copy the result, or undefined if a new instance
241
- * should be created.
242
- * @returns {Cartesian2} The specified 'result', or a new object containing the tile x, y coordinates
243
- * if 'result' is undefined.
244
- */
245
- WebMercatorTilingScheme.prototype.positionToTileXY = function (
246
- position,
247
- level,
248
- result,
249
- ) {
250
- const rectangle = this._rectangle;
251
- if (!Rectangle.contains(rectangle, position)) {
252
- // outside the bounds of the tiling scheme
253
- return undefined;
233
+ nativeRectangle.west = southwest.longitude;
234
+ nativeRectangle.south = southwest.latitude;
235
+ nativeRectangle.east = northeast.longitude;
236
+ nativeRectangle.north = northeast.latitude;
237
+ return nativeRectangle;
254
238
  }
255
239
 
256
- const xTiles = this.getNumberOfXTilesAtLevel(level);
257
- const yTiles = this.getNumberOfYTilesAtLevel(level);
240
+ /**
241
+ * Calculates the tile x, y coordinates of the tile containing
242
+ * a given cartographic position.
243
+ *
244
+ * @param {Cartographic} position The position.
245
+ * @param {number} level The tile level-of-detail. Zero is the least detailed.
246
+ * @param {Cartesian2} [result] The instance to which to copy the result, or undefined if a new instance
247
+ * should be created.
248
+ * @returns {Cartesian2} The specified 'result', or a new object containing the tile x, y coordinates
249
+ * if 'result' is undefined.
250
+ */
251
+ positionToTileXY(position, level, result) {
252
+ const rectangle = this._rectangle;
253
+ if (!Rectangle.contains(rectangle, position)) {
254
+ // outside the bounds of the tiling scheme
255
+ return undefined;
256
+ }
258
257
 
259
- const overallWidth =
260
- this._rectangleNortheastInMeters.x - this._rectangleSouthwestInMeters.x;
261
- const xTileWidth = overallWidth / xTiles;
262
- const overallHeight =
263
- this._rectangleNortheastInMeters.y - this._rectangleSouthwestInMeters.y;
264
- const yTileHeight = overallHeight / yTiles;
258
+ const xTiles = this.getNumberOfXTilesAtLevel(level);
259
+ const yTiles = this.getNumberOfYTilesAtLevel(level);
265
260
 
266
- const projection = this._projection;
261
+ const overallWidth =
262
+ this._rectangleNortheastInMeters.x - this._rectangleSouthwestInMeters.x;
263
+ const xTileWidth = overallWidth / xTiles;
264
+ const overallHeight =
265
+ this._rectangleNortheastInMeters.y - this._rectangleSouthwestInMeters.y;
266
+ const yTileHeight = overallHeight / yTiles;
267
267
 
268
- const webMercatorPosition = projection.project(position);
269
- const distanceFromWest =
270
- webMercatorPosition.x - this._rectangleSouthwestInMeters.x;
271
- const distanceFromNorth =
272
- this._rectangleNortheastInMeters.y - webMercatorPosition.y;
268
+ const projection = this._projection;
273
269
 
274
- let xTileCoordinate = (distanceFromWest / xTileWidth) | 0;
275
- if (xTileCoordinate >= xTiles) {
276
- xTileCoordinate = xTiles - 1;
277
- }
278
- let yTileCoordinate = (distanceFromNorth / yTileHeight) | 0;
279
- if (yTileCoordinate >= yTiles) {
280
- yTileCoordinate = yTiles - 1;
281
- }
270
+ const webMercatorPosition = projection.project(position);
271
+ const distanceFromWest =
272
+ webMercatorPosition.x - this._rectangleSouthwestInMeters.x;
273
+ const distanceFromNorth =
274
+ this._rectangleNortheastInMeters.y - webMercatorPosition.y;
275
+
276
+ let xTileCoordinate = (distanceFromWest / xTileWidth) | 0;
277
+ if (xTileCoordinate >= xTiles) {
278
+ xTileCoordinate = xTiles - 1;
279
+ }
280
+ let yTileCoordinate = (distanceFromNorth / yTileHeight) | 0;
281
+ if (yTileCoordinate >= yTiles) {
282
+ yTileCoordinate = yTiles - 1;
283
+ }
282
284
 
283
- if (!defined(result)) {
284
- return new Cartesian2(xTileCoordinate, yTileCoordinate);
285
+ if (!defined(result)) {
286
+ return new Cartesian2(xTileCoordinate, yTileCoordinate);
287
+ }
288
+
289
+ result.x = xTileCoordinate;
290
+ result.y = yTileCoordinate;
291
+ return result;
285
292
  }
293
+ }
286
294
 
287
- result.x = xTileCoordinate;
288
- result.y = yTileCoordinate;
289
- return result;
290
- };
291
295
  export default WebMercatorTilingScheme;
@@ -33,4 +33,6 @@ WindingOrder.validate = function (windingOrder) {
33
33
  );
34
34
  };
35
35
 
36
- export default Object.freeze(WindingOrder);
36
+ Object.freeze(WindingOrder);
37
+
38
+ export default WindingOrder;
@@ -0,0 +1,37 @@
1
+ // @ts-check
2
+
3
+ /** @import Color from "./Color.js"; */
4
+
5
+ /**
6
+ * Creates a color ramp that linearly interpolates between the given colors.
7
+ *
8
+ * @param {Color[]} colors The array of colors to use for the color ramp.
9
+ * @param {number} rampLength The length (in number of samples) of the color ramp to create.
10
+ * @returns {Uint8Array} A typed array representing the color ramp.
11
+ *
12
+ * @private
13
+ */
14
+ function createColorRamp(colors, rampLength) {
15
+ const ramp = document.createElement("canvas");
16
+ ramp.width = rampLength;
17
+ ramp.height = 1;
18
+ const ctx = ramp.getContext("2d");
19
+ const grd = ctx.createLinearGradient(0, 0, ramp.width, 0);
20
+
21
+ const stepSize = 1 / (colors.length - 1);
22
+ for (let i = 0; i < colors.length; i++) {
23
+ const color = colors[i];
24
+ const stop = i * stepSize;
25
+ const cssColor = color.toCssColorString();
26
+ grd.addColorStop(stop, cssColor);
27
+ }
28
+
29
+ ctx.fillStyle = grd;
30
+ ctx.fillRect(0, 0, ramp.width, ramp.height);
31
+
32
+ const imageData = ctx.getImageData(0, 0, ramp.width, ramp.height);
33
+ const array = new Uint8Array(imageData.data.buffer);
34
+ return array;
35
+ }
36
+
37
+ export default createColorRamp;
@@ -12,6 +12,31 @@
12
12
  * @typedef {{destroy: Function}} Destroyable
13
13
  */
14
14
 
15
+ /**
16
+ * A GeoJSON position expressed as [longitude, latitude] or [longitude, latitude, altitude].
17
+ * @typedef {Array.<number>} GeoJsonPosition
18
+ */
19
+
20
+ /**
21
+ * A GeoJSON geometry object.
22
+ * @typedef {{type: string, coordinates: (unknown|undefined), geometries: (Array.<GeoJsonGeometry>|undefined)}} GeoJsonGeometry
23
+ */
24
+
25
+ /**
26
+ * A GeoJSON feature object.
27
+ * @typedef {{type: string, geometry: (GeoJsonGeometry|null), properties: (Object.<string, *>|null), id: (string|number|undefined)}} GeoJsonFeature
28
+ */
29
+
30
+ /**
31
+ * A GeoJSON feature collection object.
32
+ * @typedef {{type: string, features: Array.<GeoJsonFeature>}} GeoJsonFeatureCollection
33
+ */
34
+
35
+ /**
36
+ * A top-level GeoJSON object (Geometry, Feature, or FeatureCollection).
37
+ * @typedef {GeoJsonGeometry|GeoJsonFeature|GeoJsonFeatureCollection} GeoJson
38
+ */
39
+
15
40
  /**
16
41
  * This file is omitted from 'workspaceSourceFiles' in 'scripts/build.js', and
17
42
  * must provide type-only exports exclusively, without runtime values.
@@ -118,6 +118,7 @@ Batch.prototype.remove = function (updater) {
118
118
  if (defined(unsubscribe)) {
119
119
  unsubscribe();
120
120
  this.subscriptions.remove(id);
121
+ this.showsUpdated.remove(id);
121
122
  }
122
123
  return true;
123
124
  }
@@ -113,6 +113,7 @@ Batch.prototype.remove = function (updater) {
113
113
  if (defined(unsubscribe)) {
114
114
  unsubscribe();
115
115
  this.subscriptions.remove(id);
116
+ this.showsUpdated.remove(id);
116
117
  }
117
118
  return true;
118
119
  }
@@ -1,3 +1,5 @@
1
+ // @ts-check
2
+
1
3
  /**
2
4
  * Defined the orientation of stripes in {@link StripeMaterialProperty}.
3
5
  *
@@ -16,4 +18,7 @@ const StripeOrientation = {
16
18
  */
17
19
  VERTICAL: 1,
18
20
  };
19
- export default Object.freeze(StripeOrientation);
21
+
22
+ Object.freeze(StripeOrientation);
23
+
24
+ export default StripeOrientation;