@cesium/engine 25.0.0 → 26.1.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 (225) hide show
  1. package/Build/Workers/{chunk-3VDDRF2E.js → chunk-2EFYUSUY.js} +14 -14
  2. package/Build/Workers/{chunk-4GF4MVPY.js → chunk-5LSOO2KD.js} +7 -7
  3. package/Build/Workers/{chunk-I3A6DXYZ.js → chunk-6HK6IXK2.js} +4 -4
  4. package/Build/Workers/{chunk-CZ23Y3RM.js → chunk-6YR6JBMY.js} +2 -2
  5. package/Build/Workers/{chunk-J7KQEKPK.js → chunk-76FDC45O.js} +13 -13
  6. package/Build/Workers/{chunk-ZCCIIBZT.js → chunk-7D2HZKH7.js} +6 -6
  7. package/Build/Workers/{chunk-HSVQATK2.js → chunk-7KVKHY7O.js} +6 -6
  8. package/Build/Workers/{chunk-ITD2IN7N.js → chunk-A3O6EDBK.js} +2 -2
  9. package/Build/Workers/{chunk-ND3NTTOF.js → chunk-A6X24AZI.js} +6 -6
  10. package/Build/Workers/{chunk-DH26SNAB.js → chunk-AHWAZRBV.js} +6 -2
  11. package/Build/Workers/{chunk-3XY3MVPG.js → chunk-B4CQSLZJ.js} +4 -4
  12. package/Build/Workers/{chunk-DYT5NR6P.js → chunk-C7JQVRLM.js} +3 -3
  13. package/Build/Workers/{chunk-WC57YYBN.js → chunk-CDJDJ5LK.js} +2 -2
  14. package/Build/Workers/{chunk-VQKLRBIK.js → chunk-CEEZE3YZ.js} +7 -7
  15. package/Build/Workers/{chunk-4QQXGTCE.js → chunk-CLCTQVVL.js} +8 -8
  16. package/Build/Workers/{chunk-WNN5D4W3.js → chunk-DBD5WWG2.js} +10 -10
  17. package/Build/Workers/{chunk-URUCCIPS.js → chunk-DIGUUD6G.js} +6 -6
  18. package/Build/Workers/{chunk-BTX2NL3P.js → chunk-E7NZJOK7.js} +196 -22
  19. package/Build/Workers/{chunk-3LSD7OOA.js → chunk-EHTS2YPT.js} +16 -16
  20. package/Build/Workers/{chunk-35H3UBIO.js → chunk-ENNFMWDW.js} +11 -11
  21. package/Build/Workers/{chunk-GL7DNVUS.js → chunk-FCP2QY4G.js} +5 -5
  22. package/Build/Workers/{chunk-3RFFPH4M.js → chunk-FDK4K5IA.js} +1 -1
  23. package/Build/Workers/{chunk-WTQGE7Q6.js → chunk-FGQFQHN5.js} +17 -17
  24. package/Build/Workers/{chunk-WUBKZFF6.js → chunk-GSWMAFTE.js} +9 -9
  25. package/Build/Workers/{chunk-3TKLDHV3.js → chunk-GXWQZBAI.js} +2 -2
  26. package/Build/Workers/{chunk-A7A433MD.js → chunk-HHV3MCGV.js} +5 -5
  27. package/Build/Workers/{chunk-A7ZBMVFS.js → chunk-HS6AD4P2.js} +14 -14
  28. package/Build/Workers/{chunk-QXNQQYPV.js → chunk-IGAZBTFZ.js} +8 -8
  29. package/Build/Workers/{chunk-ZAPOS52G.js → chunk-ILME5BXA.js} +8 -8
  30. package/Build/Workers/{chunk-4MTRQFJP.js → chunk-JKXV6PG5.js} +1 -1
  31. package/Build/Workers/{chunk-FVLVVOBQ.js → chunk-JW6OZT4R.js} +10 -10
  32. package/Build/Workers/{chunk-EZARA5FJ.js → chunk-KGXSYGBG.js} +13 -13
  33. package/Build/Workers/{chunk-J3OFS2RD.js → chunk-LD64RPYV.js} +12 -12
  34. package/Build/Workers/{chunk-AWFZHD2B.js → chunk-LGNDTZVX.js} +4 -4
  35. package/Build/Workers/{chunk-AEAVLYPS.js → chunk-LNSQVXFH.js} +2 -2
  36. package/Build/Workers/{chunk-TA777BGS.js → chunk-N7CCOFLX.js} +1 -1
  37. package/Build/Workers/{chunk-7LSFAEWF.js → chunk-NIWITKQK.js} +10 -10
  38. package/Build/Workers/{chunk-4XXHJI6Y.js → chunk-OBEU25PI.js} +17 -17
  39. package/Build/Workers/{chunk-5T6QQAJW.js → chunk-QVLAFFJY.js} +1 -1
  40. package/Build/Workers/{chunk-J647NNZW.js → chunk-R4FPNAZ2.js} +6 -6
  41. package/Build/Workers/{chunk-HVMG6AG4.js → chunk-RG4F5R57.js} +9 -9
  42. package/Build/Workers/{chunk-ST2UWDUU.js → chunk-SF6K72D7.js} +5 -5
  43. package/Build/Workers/{chunk-H2A4USJR.js → chunk-SGRGNDOD.js} +10 -10
  44. package/Build/Workers/{chunk-DFEI5MAV.js → chunk-SM2CDCYF.js} +7 -7
  45. package/Build/Workers/{chunk-TAI4HLII.js → chunk-SS5ABQGY.js} +4 -4
  46. package/Build/Workers/{chunk-ACFFCHHZ.js → chunk-T5QBPLE3.js} +11 -11
  47. package/Build/Workers/{chunk-BVAIWR7O.js → chunk-TVZD72WJ.js} +12 -12
  48. package/Build/Workers/{chunk-6SDGQI27.js → chunk-UEY73NRN.js} +1 -1
  49. package/Build/Workers/{chunk-K6NFIRFB.js → chunk-UVO6COT2.js} +5 -5
  50. package/Build/Workers/{chunk-77RL3MBD.js → chunk-VAL7DYNR.js} +25 -4
  51. package/Build/Workers/{chunk-WN6P5UDH.js → chunk-WBSY7HDY.js} +12 -12
  52. package/Build/Workers/{chunk-FIBS5S7R.js → chunk-XDWCTQCZ.js} +2 -2
  53. package/Build/Workers/{chunk-CKQP3DSS.js → chunk-XLXSDIP5.js} +6 -6
  54. package/Build/Workers/{chunk-LH5SF3XV.js → chunk-XQ3SKCMM.js} +5 -5
  55. package/Build/Workers/{chunk-QSDY4NS7.js → chunk-YKU2Q3A2.js} +9 -9
  56. package/Build/Workers/{chunk-GPIGURCG.js → chunk-ZMBHFYOX.js} +7 -7
  57. package/Build/Workers/{chunk-QO2CGXMP.js → chunk-ZSGUV73H.js} +6 -6
  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 +22 -22
  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 +22 -22
  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 +987 -2320
  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 +6 -6
  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/BoundingRectangle.js +6 -8
  112. package/Source/Core/Cartesian2.js +1 -1
  113. package/Source/Core/Cartesian3.js +1 -1
  114. package/Source/Core/Cartesian4.js +1 -1
  115. package/Source/Core/Color.js +1 -0
  116. package/Source/Core/ComponentDatatype.js +35 -0
  117. package/Source/Core/InterpolationAlgorithm.js +57 -50
  118. package/Source/Core/Ion.js +1 -1
  119. package/Source/Core/MapProjection.js +1 -0
  120. package/Source/Core/Matrix2.js +1 -1
  121. package/Source/Core/Matrix3.js +1 -1
  122. package/Source/Core/Matrix4.js +1 -1
  123. package/Source/Core/Resource.js +1 -1
  124. package/Source/Core/ScreenSpaceEventHandler.js +51 -41
  125. package/Source/Core/TerrainMesh.js +3 -3
  126. package/Source/Core/TerrainPicker.js +1 -0
  127. package/Source/Core/createColorRamp.js +37 -0
  128. package/Source/Core/globalTypes.js +25 -0
  129. package/Source/Core/writeTextToCanvas.js +1 -0
  130. package/Source/DataSources/CzmlDataSource.js +12 -0
  131. package/Source/DataSources/KmlDataSource.js +528 -555
  132. package/Source/DataSources/PathGraphics.js +8 -1
  133. package/Source/DataSources/PathMode.js +27 -0
  134. package/Source/DataSources/PathVisualizer.js +298 -1
  135. package/Source/Renderer/Pass.js +3 -2
  136. package/Source/Renderer/Texture.js +1 -1
  137. package/Source/Renderer/VertexArray.js +1 -0
  138. package/Source/Renderer/createUniform.js +346 -239
  139. package/Source/Renderer/createUniformArray.js +494 -381
  140. package/Source/Scene/ArcGisMapService.js +1 -1
  141. package/Source/Scene/BillboardTexture.js +5 -3
  142. package/Source/Scene/BufferPoint.js +1 -0
  143. package/Source/Scene/BufferPointCollection.js +14 -1
  144. package/Source/Scene/BufferPolygon.js +3 -2
  145. package/Source/Scene/BufferPolygonCollection.js +10 -0
  146. package/Source/Scene/BufferPolyline.js +1 -0
  147. package/Source/Scene/BufferPolylineCollection.js +2 -0
  148. package/Source/Scene/BufferPrimitiveCollection.js +79 -28
  149. package/Source/Scene/CameraEventAggregator.js +30 -18
  150. package/Source/Scene/Cesium3DTile.js +54 -1
  151. package/Source/Scene/Cesium3DTileContent.js +195 -254
  152. package/Source/Scene/Cesium3DTileContentFactory.js +10 -2
  153. package/Source/Scene/Cesium3DTileOptimizations.js +4 -6
  154. package/Source/Scene/Cesium3DTileset.js +45 -5
  155. package/Source/Scene/ClippingPlaneCollection.js +2 -2
  156. package/Source/Scene/ClippingPolygon.js +2 -0
  157. package/Source/Scene/ClippingPolygonCollection.js +2 -2
  158. package/Source/Scene/Composite3DTileContent.js +254 -292
  159. package/Source/Scene/DerivedCommand.js +4 -0
  160. package/Source/Scene/EdgeDisplayMode.js +50 -0
  161. package/Source/Scene/Empty3DTileContent.js +100 -132
  162. package/Source/Scene/Expression.js +6 -8
  163. package/Source/Scene/GaussianSplat3DTileContent.js +436 -478
  164. package/Source/Scene/GeoJsonPrimitive.js +874 -0
  165. package/Source/Scene/Geometry3DTileContent.js +151 -185
  166. package/Source/Scene/GlobeSurfaceShaderSet.js +501 -409
  167. package/Source/Scene/GlobeSurfaceTile.js +540 -401
  168. package/Source/Scene/GlobeSurfaceTileProvider.js +1259 -1146
  169. package/Source/Scene/GltfBufferViewLoader.js +3 -3
  170. package/Source/Scene/GltfLoader.js +110 -0
  171. package/Source/Scene/GltfLoaderUtil.js +20 -4
  172. package/Source/Scene/GltfPipeline/forEachTextureInMaterial.js +10 -0
  173. package/Source/Scene/GltfPipeline/removeUnusedElements.js +21 -11
  174. package/Source/Scene/ImageryLayer.js +2 -2
  175. package/Source/Scene/ImageryLayerCollection.js +2 -2
  176. package/Source/Scene/Implicit3DTileContent.js +179 -214
  177. package/Source/Scene/MVTDataProvider.js +147 -0
  178. package/Source/Scene/Material.js +1 -0
  179. package/Source/Scene/Model/EdgeVisibilityPipelineStage.js +79 -311
  180. package/Source/Scene/Model/Extensions/Gpm/GltfGpmLoader.js +4 -0
  181. package/Source/Scene/Model/Model.js +37 -0
  182. package/Source/Scene/Model/Model3DTileContent.js +424 -458
  183. package/Source/Scene/Model/ModelDrawCommand.js +31 -3
  184. package/Source/Scene/Model/ModelUtility.js +5 -0
  185. package/Source/Scene/Model/createVectorTileBuffersFromModelComponents.js +466 -150
  186. package/Source/Scene/ModelComponents.js +39 -1
  187. package/Source/Scene/Multiple3DTileContent.js +291 -334
  188. package/Source/Scene/Picking.js +5 -0
  189. package/Source/Scene/PntsParser.js +1 -0
  190. package/Source/Scene/QuadtreePrimitive.js +3 -2
  191. package/Source/Scene/ResourceCacheKey.js +5 -5
  192. package/Source/Scene/Scene.js +27 -0
  193. package/Source/Scene/Tileset3DTileContent.js +113 -146
  194. package/Source/Scene/UrlTemplate3DTilesDataProvider.js +499 -0
  195. package/Source/Scene/Vector3DTileContent.js +205 -234
  196. package/Source/Scene/VectorGltf3DTileContent.js +85 -36
  197. package/Source/Scene/VoxelPrimitive.js +159 -175
  198. package/Source/Scene/VoxelProvider.js +64 -91
  199. package/Source/Scene/buildVectorGltfFromMVT.js +1059 -0
  200. package/Source/Scene/buildVoxelCustomShader.js +199 -0
  201. package/Source/Scene/decodeMVT.js +634 -0
  202. package/Source/Scene/findMeshoptExtension.js +23 -0
  203. package/Source/Scene/renderBufferPointCollection.js +113 -62
  204. package/Source/Scene/renderBufferPolygonCollection.js +98 -55
  205. package/Source/Scene/renderBufferPolylineCollection.js +270 -143
  206. package/Source/Shaders/BufferPointMaterialFS.glsl +1 -0
  207. package/Source/Shaders/BufferPointMaterialFS.js +1 -0
  208. package/Source/Shaders/BufferPointMaterialVS.glsl +19 -9
  209. package/Source/Shaders/BufferPointMaterialVS.js +20 -10
  210. package/Source/Shaders/BufferPolygonMaterialVS.glsl +13 -4
  211. package/Source/Shaders/BufferPolygonMaterialVS.js +14 -5
  212. package/Source/Shaders/BufferPolylineMaterialVS.glsl +16 -2
  213. package/Source/Shaders/BufferPolylineMaterialVS.js +17 -3
  214. package/Source/Shaders/Builtin/Constants/passCesium3DTileEdgesDirect.glsl +9 -0
  215. package/Source/Shaders/Builtin/Constants/passCesium3DTileEdgesDirect.js +11 -0
  216. package/Source/Shaders/Builtin/Constants/passOverlay.glsl +1 -1
  217. package/Source/Shaders/Builtin/Constants/passOverlay.js +1 -1
  218. package/Source/Shaders/Builtin/CzmBuiltins.js +2 -0
  219. package/Source/Shaders/Model/EdgeVisibilityStageVS.glsl +0 -1
  220. package/Source/Shaders/Model/EdgeVisibilityStageVS.js +0 -1
  221. package/Source/Workers/decodeGoogleEarthEnterprisePacket.js +2 -2
  222. package/Source/Workers/incrementallyBuildTerrainPicker.js +2 -0
  223. package/index.d.ts +311 -288
  224. package/index.js +103 -92
  225. package/package.json +4 -4
@@ -22,21 +22,31 @@ function getPosition(screenSpaceEventHandler, event, result) {
22
22
  return result;
23
23
  }
24
24
 
25
- function getInputEventKey(type, modifier) {
26
- let key = type;
27
- if (defined(modifier)) {
28
- key += `+${modifier}`;
25
+ function getInputEventKey(type, modifiers) {
26
+ if (!defined(modifiers)) {
27
+ return `${type}`;
29
28
  }
30
- return key;
29
+
30
+ const modifierList = Array.isArray(modifiers)
31
+ ? modifiers.toSorted()
32
+ : [modifiers];
33
+ return `${type}+${modifierList.join("+")}`;
31
34
  }
32
35
 
33
- function getModifier(event) {
36
+ function getModifiers(event) {
37
+ const modifiers = [];
34
38
  if (event.shiftKey) {
35
- return KeyboardEventModifier.SHIFT;
36
- } else if (event.ctrlKey) {
37
- return KeyboardEventModifier.CTRL;
38
- } else if (event.altKey) {
39
- return KeyboardEventModifier.ALT;
39
+ modifiers.push(KeyboardEventModifier.SHIFT);
40
+ }
41
+ if (event.ctrlKey) {
42
+ modifiers.push(KeyboardEventModifier.CTRL);
43
+ }
44
+ if (event.altKey) {
45
+ modifiers.push(KeyboardEventModifier.ALT);
46
+ }
47
+
48
+ if (modifiers.length) {
49
+ return modifiers;
40
50
  }
41
51
 
42
52
  return undefined;
@@ -223,11 +233,11 @@ function handleMouseDown(screenSpaceEventHandler, event) {
223
233
  Cartesian2.clone(position, screenSpaceEventHandler._primaryStartPosition);
224
234
  Cartesian2.clone(position, screenSpaceEventHandler._primaryPreviousPosition);
225
235
 
226
- const modifier = getModifier(event);
236
+ const modifiers = getModifiers(event);
227
237
 
228
238
  const action = screenSpaceEventHandler.getInputAction(
229
239
  screenSpaceEventType,
230
- modifier,
240
+ modifiers,
231
241
  );
232
242
 
233
243
  if (defined(action)) {
@@ -252,15 +262,15 @@ function cancelMouseEvent(
252
262
  clickScreenSpaceEventType,
253
263
  event,
254
264
  ) {
255
- const modifier = getModifier(event);
265
+ const modifiers = getModifiers(event);
256
266
 
257
267
  const action = screenSpaceEventHandler.getInputAction(
258
268
  screenSpaceEventType,
259
- modifier,
269
+ modifiers,
260
270
  );
261
271
  const clickAction = screenSpaceEventHandler.getInputAction(
262
272
  clickScreenSpaceEventType,
263
- modifier,
273
+ modifiers,
264
274
  );
265
275
 
266
276
  if (defined(action) || defined(clickAction)) {
@@ -347,7 +357,7 @@ function handleMouseMove(screenSpaceEventHandler, event) {
347
357
  return;
348
358
  }
349
359
 
350
- const modifier = getModifier(event);
360
+ const modifiers = getModifiers(event);
351
361
 
352
362
  const position = getPosition(
353
363
  screenSpaceEventHandler,
@@ -358,7 +368,7 @@ function handleMouseMove(screenSpaceEventHandler, event) {
358
368
 
359
369
  const action = screenSpaceEventHandler.getInputAction(
360
370
  ScreenSpaceEventType.MOUSE_MOVE,
361
- modifier,
371
+ modifiers,
362
372
  );
363
373
 
364
374
  if (defined(action)) {
@@ -393,11 +403,11 @@ function handleDblClick(screenSpaceEventHandler, event) {
393
403
  return;
394
404
  }
395
405
 
396
- const modifier = getModifier(event);
406
+ const modifiers = getModifiers(event);
397
407
 
398
408
  const action = screenSpaceEventHandler.getInputAction(
399
409
  screenSpaceEventType,
400
- modifier,
410
+ modifiers,
401
411
  );
402
412
 
403
413
  if (defined(action)) {
@@ -437,10 +447,10 @@ function handleWheel(screenSpaceEventHandler, event) {
437
447
  return;
438
448
  }
439
449
 
440
- const modifier = getModifier(event);
450
+ const modifiers = getModifiers(event);
441
451
  const action = screenSpaceEventHandler.getInputAction(
442
452
  ScreenSpaceEventType.WHEEL,
443
- modifier,
453
+ modifiers,
444
454
  );
445
455
 
446
456
  if (defined(action)) {
@@ -530,7 +540,7 @@ const touchHoldEvent = {
530
540
  };
531
541
 
532
542
  function fireTouchEvents(screenSpaceEventHandler, event) {
533
- const modifier = getModifier(event);
543
+ const modifiers = getModifiers(event);
534
544
  const positions = screenSpaceEventHandler._positions;
535
545
  const numberOfTouches = positions.length;
536
546
  let action;
@@ -551,7 +561,7 @@ function fireTouchEvents(screenSpaceEventHandler, event) {
551
561
 
552
562
  action = screenSpaceEventHandler.getInputAction(
553
563
  ScreenSpaceEventType.LEFT_UP,
554
- modifier,
564
+ modifiers,
555
565
  );
556
566
 
557
567
  if (defined(action)) {
@@ -567,7 +577,7 @@ function fireTouchEvents(screenSpaceEventHandler, event) {
567
577
  // releasing single touch, check for CLICK
568
578
  clickAction = screenSpaceEventHandler.getInputAction(
569
579
  ScreenSpaceEventType.LEFT_CLICK,
570
- modifier,
580
+ modifiers,
571
581
  );
572
582
 
573
583
  if (defined(clickAction)) {
@@ -602,7 +612,7 @@ function fireTouchEvents(screenSpaceEventHandler, event) {
602
612
 
603
613
  action = screenSpaceEventHandler.getInputAction(
604
614
  ScreenSpaceEventType.PINCH_END,
605
- modifier,
615
+ modifiers,
606
616
  );
607
617
 
608
618
  if (defined(action)) {
@@ -624,7 +634,7 @@ function fireTouchEvents(screenSpaceEventHandler, event) {
624
634
 
625
635
  action = screenSpaceEventHandler.getInputAction(
626
636
  ScreenSpaceEventType.LEFT_DOWN,
627
- modifier,
637
+ modifiers,
628
638
  );
629
639
 
630
640
  if (defined(action)) {
@@ -640,7 +650,7 @@ function fireTouchEvents(screenSpaceEventHandler, event) {
640
650
 
641
651
  clickAction = screenSpaceEventHandler.getInputAction(
642
652
  ScreenSpaceEventType.RIGHT_CLICK,
643
- modifier,
653
+ modifiers,
644
654
  );
645
655
 
646
656
  if (defined(clickAction)) {
@@ -674,7 +684,7 @@ function fireTouchEvents(screenSpaceEventHandler, event) {
674
684
 
675
685
  action = screenSpaceEventHandler.getInputAction(
676
686
  ScreenSpaceEventType.PINCH_START,
677
- modifier,
687
+ modifiers,
678
688
  );
679
689
 
680
690
  if (defined(action)) {
@@ -740,7 +750,7 @@ const touchPinchMovementEvent = {
740
750
  };
741
751
 
742
752
  function fireTouchMoveEvents(screenSpaceEventHandler, event) {
743
- const modifier = getModifier(event);
753
+ const modifiers = getModifiers(event);
744
754
  const positions = screenSpaceEventHandler._positions;
745
755
  const previousPositions = screenSpaceEventHandler._previousPositions;
746
756
  const numberOfTouches = positions.length;
@@ -758,7 +768,7 @@ function fireTouchMoveEvents(screenSpaceEventHandler, event) {
758
768
 
759
769
  action = screenSpaceEventHandler.getInputAction(
760
770
  ScreenSpaceEventType.MOUSE_MOVE,
761
- modifier,
771
+ modifiers,
762
772
  );
763
773
 
764
774
  if (defined(action)) {
@@ -776,7 +786,7 @@ function fireTouchMoveEvents(screenSpaceEventHandler, event) {
776
786
 
777
787
  action = screenSpaceEventHandler.getInputAction(
778
788
  ScreenSpaceEventType.PINCH_MOVE,
779
- modifier,
789
+ modifiers,
780
790
  );
781
791
  if (defined(action)) {
782
792
  const position1 = positions.values[0];
@@ -1012,7 +1022,7 @@ function ScreenSpaceEventHandler(element) {
1012
1022
  *
1013
1023
  * @param {ScreenSpaceEventHandler.PositionedEventCallback|ScreenSpaceEventHandler.MotionEventCallback|ScreenSpaceEventHandler.WheelEventCallback|ScreenSpaceEventHandler.TwoPointEventCallback|ScreenSpaceEventHandler.TwoPointMotionEventCallback} action Function to be executed when the input event occurs.
1014
1024
  * @param {ScreenSpaceEventType} type The ScreenSpaceEventType of input event.
1015
- * @param {KeyboardEventModifier} [modifier] A KeyboardEventModifier key that is held when a <code>type</code>
1025
+ * @param {KeyboardEventModifier[] | KeyboardEventModifier} [modifiers] The KeyboardEventModifier keys that are held when a <code>type</code>
1016
1026
  * event occurs.
1017
1027
  *
1018
1028
  * @see ScreenSpaceEventHandler#getInputAction
@@ -1021,7 +1031,7 @@ function ScreenSpaceEventHandler(element) {
1021
1031
  ScreenSpaceEventHandler.prototype.setInputAction = function (
1022
1032
  action,
1023
1033
  type,
1024
- modifier,
1034
+ modifiers,
1025
1035
  ) {
1026
1036
  //>>includeStart('debug', pragmas.debug);
1027
1037
  if (!defined(action)) {
@@ -1032,7 +1042,7 @@ ScreenSpaceEventHandler.prototype.setInputAction = function (
1032
1042
  }
1033
1043
  //>>includeEnd('debug');
1034
1044
 
1035
- const key = getInputEventKey(type, modifier);
1045
+ const key = getInputEventKey(type, modifiers);
1036
1046
  this._inputEvents[key] = action;
1037
1047
  };
1038
1048
 
@@ -1040,7 +1050,7 @@ ScreenSpaceEventHandler.prototype.setInputAction = function (
1040
1050
  * Returns the function to be executed on an input event.
1041
1051
  *
1042
1052
  * @param {ScreenSpaceEventType} type The ScreenSpaceEventType of input event.
1043
- * @param {KeyboardEventModifier} [modifier] A KeyboardEventModifier key that is held when a <code>type</code>
1053
+ * @param {KeyboardEventModifier[] | KeyboardEventModifier} [modifiers] The KeyboardEventModifier keys that are held when a <code>type</code>
1044
1054
  * event occurs.
1045
1055
  *
1046
1056
  * @returns {ScreenSpaceEventHandler.PositionedEventCallback|ScreenSpaceEventHandler.MotionEventCallback|ScreenSpaceEventHandler.WheelEventCallback|ScreenSpaceEventHandler.TwoPointEventCallback|ScreenSpaceEventHandler.TwoPointMotionEventCallback} The function to be executed on an input event.
@@ -1048,14 +1058,14 @@ ScreenSpaceEventHandler.prototype.setInputAction = function (
1048
1058
  * @see ScreenSpaceEventHandler#setInputAction
1049
1059
  * @see ScreenSpaceEventHandler#removeInputAction
1050
1060
  */
1051
- ScreenSpaceEventHandler.prototype.getInputAction = function (type, modifier) {
1061
+ ScreenSpaceEventHandler.prototype.getInputAction = function (type, modifiers) {
1052
1062
  //>>includeStart('debug', pragmas.debug);
1053
1063
  if (!defined(type)) {
1054
1064
  throw new DeveloperError("type is required.");
1055
1065
  }
1056
1066
  //>>includeEnd('debug');
1057
1067
 
1058
- const key = getInputEventKey(type, modifier);
1068
+ const key = getInputEventKey(type, modifiers);
1059
1069
  return this._inputEvents[key];
1060
1070
  };
1061
1071
 
@@ -1063,7 +1073,7 @@ ScreenSpaceEventHandler.prototype.getInputAction = function (type, modifier) {
1063
1073
  * Removes the function to be executed on an input event.
1064
1074
  *
1065
1075
  * @param {ScreenSpaceEventType} type The ScreenSpaceEventType of input event.
1066
- * @param {KeyboardEventModifier} [modifier] A KeyboardEventModifier key that is held when a <code>type</code>
1076
+ * @param {KeyboardEventModifier[] | KeyboardEventModifier} [modifiers] The KeyboardEventModifier keys that are held when a <code>type</code>
1067
1077
  * event occurs.
1068
1078
  *
1069
1079
  * @see ScreenSpaceEventHandler#getInputAction
@@ -1071,7 +1081,7 @@ ScreenSpaceEventHandler.prototype.getInputAction = function (type, modifier) {
1071
1081
  */
1072
1082
  ScreenSpaceEventHandler.prototype.removeInputAction = function (
1073
1083
  type,
1074
- modifier,
1084
+ modifiers,
1075
1085
  ) {
1076
1086
  //>>includeStart('debug', pragmas.debug);
1077
1087
  if (!defined(type)) {
@@ -1079,7 +1089,7 @@ ScreenSpaceEventHandler.prototype.removeInputAction = function (
1079
1089
  }
1080
1090
  //>>includeEnd('debug');
1081
1091
 
1082
- const key = getInputEventKey(type, modifier);
1092
+ const key = getInputEventKey(type, modifiers);
1083
1093
  delete this._inputEvents[key];
1084
1094
  };
1085
1095
 
@@ -328,7 +328,7 @@ function computeTransform2D(mesh, projection, result) {
328
328
  * @param {SceneMode} mode The scene mode (3D, 2D, or Columbus View).
329
329
  * @param {MapProjection} projection The map projection.
330
330
  * @returns {Cartesian3} The point on the mesh where the ray intersects, or undefined if there is no intersection.
331
- * @private
331
+ * @ignore
332
332
  */
333
333
  TerrainMesh.prototype.pick = function (ray, cullBackFaces, mode, projection) {
334
334
  const intersection = this._terrainPicker.rayIntersect(
@@ -347,7 +347,7 @@ TerrainMesh.prototype.pick = function (ray, cullBackFaces, mode, projection) {
347
347
  * Updates the terrain mesh to account for changes in vertical exaggeration.
348
348
  * @param {Number} exaggeration A scalar used to exaggerate terrain.
349
349
  * @param {Number} exaggerationRelativeHeight The relative height from which terrain is exaggerated.
350
- * @private
350
+ * @ignore
351
351
  */
352
352
  TerrainMesh.prototype.updateExaggeration = function (
353
353
  exaggeration,
@@ -363,7 +363,7 @@ TerrainMesh.prototype.updateExaggeration = function (
363
363
  /**
364
364
  * Updates the terrain mesh to account for changes in scene mode.
365
365
  * @param {SceneMode} mode The scene mode (3D, 2D, or Columbus View).
366
- * @private
366
+ * @ignore
367
367
  */
368
368
  TerrainMesh.prototype.updateSceneMode = function (mode) {
369
369
  this._terrainPicker.needsRebuild = true;
@@ -246,6 +246,7 @@ const scratchAABBMax = new Cartesian3();
246
246
  * @param {number} y The y coordinate of the node.
247
247
  * @param {number} level The level of the node.
248
248
  * @returns {AxisAlignedBoundingBox} The axis-aligned bounding box for the node.
249
+ * @ignore
249
250
  */
250
251
  function createAABBForNode(x, y, level) {
251
252
  const sizeAtLevel = 1.0 / Math.pow(2, level);
@@ -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.
@@ -9,6 +9,7 @@ import DeveloperError from "./DeveloperError.js";
9
9
  * Rounds metrics, excluding width, to whole pixels. This is purely to minimize
10
10
  * rendering differences with migration to in-browser measureText(), and may be
11
11
  * revised in the future. See: github.com/CesiumGS/cesium/pull/13081
12
+ * @ignore
12
13
  */
13
14
  function measureText(context2D, textString) {
14
15
  const metrics = context2D.measureText(textString);
@@ -65,6 +65,7 @@ import LabelGraphics from "./LabelGraphics.js";
65
65
  import ModelGraphics from "./ModelGraphics.js";
66
66
  import NodeTransformationProperty from "./NodeTransformationProperty.js";
67
67
  import PathGraphics from "./PathGraphics.js";
68
+ import PathMode from "./PathMode.js";
68
69
  import PointGraphics from "./PointGraphics.js";
69
70
  import PolygonGraphics from "./PolygonGraphics.js";
70
71
  import PolylineArrowMaterialProperty from "./PolylineArrowMaterialProperty.js";
@@ -562,6 +563,8 @@ function unwrapInterval(type, czmlInterval, sourceUri) {
562
563
  return czmlInterval.distanceDisplayCondition;
563
564
  case Object:
564
565
  return czmlInterval.object ?? czmlInterval.value ?? czmlInterval;
566
+ case PathMode:
567
+ return PathMode[czmlInterval.pathMode ?? czmlInterval];
565
568
  case Quaternion:
566
569
  return unwrapQuaternionInterval(czmlInterval);
567
570
  case Rotation:
@@ -3654,6 +3657,15 @@ function processPath(entity, packet, entityCollection, sourceUri) {
3654
3657
  sourceUri,
3655
3658
  entityCollection,
3656
3659
  );
3660
+ processPacketData(
3661
+ PathMode,
3662
+ path,
3663
+ "materialMode",
3664
+ pathData.materialMode,
3665
+ interval,
3666
+ sourceUri,
3667
+ entityCollection,
3668
+ );
3657
3669
  }
3658
3670
 
3659
3671
  function processPoint(entity, packet, entityCollection, sourceUri) {