@cesium/engine 23.0.1 → 25.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 (398) hide show
  1. package/Build/Workers/{chunk-ZEMJQKHD.js → chunk-35H3UBIO.js} +13 -12
  2. package/Build/Workers/{chunk-PQTSXJBJ.js → chunk-3LSD7OOA.js} +16 -16
  3. package/Build/Workers/{chunk-PUO7BYDY.js → chunk-3RFFPH4M.js} +1 -1
  4. package/Build/Workers/{chunk-PBECJOWF.js → chunk-3TKLDHV3.js} +2 -2
  5. package/Build/Workers/{chunk-TMCTZ5E3.js → chunk-3VDDRF2E.js} +14 -14
  6. package/Build/Workers/{chunk-FKU77FNM.js → chunk-3XY3MVPG.js} +4 -4
  7. package/Build/Workers/{chunk-2OBWHTIC.js → chunk-4GF4MVPY.js} +7 -7
  8. package/Build/Workers/{chunk-JUKGMJX7.js → chunk-4MTRQFJP.js} +3 -2
  9. package/Build/Workers/{chunk-66OWUDO7.js → chunk-4QQXGTCE.js} +8 -8
  10. package/Build/Workers/{chunk-ALTCIHRH.js → chunk-4XXHJI6Y.js} +17 -17
  11. package/Build/Workers/{chunk-K7UTK4OM.js → chunk-5T6QQAJW.js} +3 -2
  12. package/Build/Workers/{chunk-IJ3SUMK3.js → chunk-6SDGQI27.js} +3 -2
  13. package/Build/Workers/{chunk-FXSRA5UG.js → chunk-77RL3MBD.js} +6 -5
  14. package/Build/Workers/{chunk-G6MJ3ZW3.js → chunk-7LSFAEWF.js} +12 -11
  15. package/Build/Workers/{chunk-C6HHBKT5.js → chunk-A7A433MD.js} +5 -5
  16. package/Build/Workers/{chunk-PGZ3B6CB.js → chunk-A7ZBMVFS.js} +14 -14
  17. package/Build/Workers/{chunk-OZYB3AOR.js → chunk-ACFFCHHZ.js} +11 -11
  18. package/Build/Workers/{chunk-DNMASBMH.js → chunk-AEAVLYPS.js} +2 -2
  19. package/Build/Workers/{chunk-VPWYHFQA.js → chunk-AWFZHD2B.js} +4 -4
  20. package/Build/Workers/{chunk-TFPG3ZKW.js → chunk-BTX2NL3P.js} +59 -46
  21. package/Build/Workers/{chunk-TNXOPEIG.js → chunk-BVAIWR7O.js} +12 -12
  22. package/Build/Workers/chunk-CKQP3DSS.js +973 -0
  23. package/Build/Workers/{chunk-N6HRZLS6.js → chunk-CZ23Y3RM.js} +2 -2
  24. package/Build/Workers/{chunk-EIC3VAOZ.js → chunk-DFEI5MAV.js} +7 -7
  25. package/Build/Workers/{chunk-BTP3634E.js → chunk-DH26SNAB.js} +4 -1
  26. package/Build/Workers/{chunk-TXYQNXNW.js → chunk-DYT5NR6P.js} +3 -3
  27. package/Build/Workers/{chunk-O67UP5YO.js → chunk-EZARA5FJ.js} +13 -13
  28. package/Build/Workers/{chunk-YSJRB2UZ.js → chunk-FIBS5S7R.js} +2 -2
  29. package/Build/Workers/{chunk-2M7DKGLW.js → chunk-FVLVVOBQ.js} +10 -10
  30. package/Build/Workers/{chunk-B2VA6IEL.js → chunk-GL7DNVUS.js} +5 -5
  31. package/Build/Workers/{chunk-77DJBHMI.js → chunk-GPIGURCG.js} +59 -32
  32. package/Build/Workers/{chunk-QPXGGVHC.js → chunk-H2A4USJR.js} +10 -10
  33. package/Build/Workers/chunk-HSVQATK2.js +147 -0
  34. package/Build/Workers/{chunk-HXEPZWJN.js → chunk-HVMG6AG4.js} +11 -10
  35. package/Build/Workers/{chunk-H3TVRJLY.js → chunk-I3A6DXYZ.js} +4 -4
  36. package/Build/Workers/{chunk-UEWYSOFD.js → chunk-ITD2IN7N.js} +2 -2
  37. package/Build/Workers/{chunk-CYOPNGPX.js → chunk-J3OFS2RD.js} +12 -12
  38. package/Build/Workers/{chunk-RZX6LOG6.js → chunk-J647NNZW.js} +6 -6
  39. package/Build/Workers/{chunk-GLCPE2BJ.js → chunk-J7KQEKPK.js} +13 -13
  40. package/Build/Workers/{chunk-XPMXRJDD.js → chunk-K6NFIRFB.js} +5 -5
  41. package/Build/Workers/{chunk-CID5SY7L.js → chunk-LH5SF3XV.js} +7 -6
  42. package/Build/Workers/{chunk-UOQB7XQI.js → chunk-ND3NTTOF.js} +713 -435
  43. package/Build/Workers/chunk-QO2CGXMP.js +2342 -0
  44. package/Build/Workers/chunk-QSDY4NS7.js +1287 -0
  45. package/Build/Workers/chunk-QXNQQYPV.js +3201 -0
  46. package/Build/Workers/{chunk-CJ7ZDY77.js → chunk-ST2UWDUU.js} +5 -5
  47. package/Build/Workers/{chunk-YDR5LX5Z.js → chunk-TA777BGS.js} +3 -2
  48. package/Build/Workers/{chunk-U4SWB6TI.js → chunk-TAI4HLII.js} +4 -4
  49. package/Build/Workers/{chunk-VX774SWE.js → chunk-URUCCIPS.js} +6 -6
  50. package/Build/Workers/{chunk-MNSNOONX.js → chunk-VQKLRBIK.js} +7 -7
  51. package/Build/Workers/{chunk-CVAAIRNP.js → chunk-WC57YYBN.js} +2 -2
  52. package/Build/Workers/{chunk-QNABVTTP.js → chunk-WN6P5UDH.js} +12 -12
  53. package/Build/Workers/{chunk-CNLXMOPM.js → chunk-WNN5D4W3.js} +12 -11
  54. package/Build/Workers/{chunk-4JJQRZYL.js → chunk-WTQGE7Q6.js} +17 -17
  55. package/Build/Workers/{chunk-FCJQO4NC.js → chunk-WUBKZFF6.js} +2213 -1349
  56. package/Build/Workers/{chunk-3UQ2YMPP.js → chunk-ZAPOS52G.js} +12 -10
  57. package/Build/Workers/{chunk-LHFC4R7Z.js → chunk-ZCCIIBZT.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 +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 +25 -25
  100. package/Build/Workers/createWallOutlineGeometry.js +24 -24
  101. package/Build/Workers/decodeDraco.js +10 -10
  102. package/Build/Workers/decodeGoogleEarthEnterprisePacket.js +5 -5
  103. package/Build/Workers/decodeI3S.js +12 -12
  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 +7 -5
  116. package/Source/Core/Cartesian3.js +9 -8
  117. package/Source/Core/Cartesian4.js +8 -6
  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 +846 -835
  122. package/Source/Core/ComponentDatatype.js +4 -1
  123. package/Source/Core/CornerType.js +6 -1
  124. package/Source/Core/Credit.js +121 -124
  125. package/Source/Core/DeveloperError.js +2 -1
  126. package/Source/Core/Ellipsoid.js +637 -660
  127. package/Source/Core/ExtrapolationType.js +6 -1
  128. package/Source/Core/GeocodeType.js +6 -1
  129. package/Source/Core/GeographicProjection.js +74 -74
  130. package/Source/Core/GeographicTilingScheme.js +179 -198
  131. package/Source/Core/GeometryOffsetAttribute.js +7 -1
  132. package/Source/Core/GeometryType.js +7 -1
  133. package/Source/Core/HeightmapEncoding.js +6 -1
  134. package/Source/Core/ITwinPlatform.js +1 -0
  135. package/Source/Core/Iau2006XysData.js +24 -13
  136. package/Source/Core/IndexDatatype.js +3 -1
  137. package/Source/Core/InterpolationType.js +5 -1
  138. package/Source/Core/Intersect.js +6 -1
  139. package/Source/Core/Ion.js +1 -1
  140. package/Source/Core/IonGeocodeProviderType.js +5 -1
  141. package/Source/Core/JulianDate.js +850 -848
  142. package/Source/Core/KeyboardEventModifier.js +6 -1
  143. package/Source/Core/MapProjection.js +39 -44
  144. package/Source/Core/Matrix2.js +906 -893
  145. package/Source/Core/Matrix3.js +1643 -1575
  146. package/Source/Core/Matrix4.js +2903 -2872
  147. package/Source/Core/PixelFormat.js +3 -1
  148. package/Source/Core/PrimitiveType.js +11 -1
  149. package/Source/Core/Ray.js +62 -60
  150. package/Source/Core/Rectangle.js +913 -904
  151. package/Source/Core/ReferenceFrame.js +6 -1
  152. package/Source/Core/RequestScheduler.js +8 -3
  153. package/Source/Core/RequestState.js +6 -1
  154. package/Source/Core/RequestType.js +6 -1
  155. package/Source/Core/S2Cell.js +2 -2
  156. package/Source/Core/ScreenSpaceEventType.js +6 -1
  157. package/Source/Core/TerrainMesh.js +10 -1
  158. package/Source/Core/TerrainPicker.js +1 -0
  159. package/Source/Core/TerrainQuantization.js +6 -1
  160. package/Source/Core/TilingScheme.js +100 -98
  161. package/Source/Core/TimeConstants.js +6 -1
  162. package/Source/Core/TimeStandard.js +6 -1
  163. package/Source/Core/TrackingReferenceFrame.js +6 -1
  164. package/Source/Core/Visibility.js +6 -1
  165. package/Source/Core/VulkanConstants.js +6 -1
  166. package/Source/Core/WallGeometry.js +1 -1
  167. package/Source/Core/WallOutlineGeometry.js +1 -1
  168. package/Source/Core/WebGLConstants.js +6 -1
  169. package/Source/Core/WebMercatorProjection.js +108 -109
  170. package/Source/Core/WebMercatorTilingScheme.js +246 -242
  171. package/Source/Core/WindingOrder.js +3 -1
  172. package/Source/Core/assert.js +27 -0
  173. package/Source/Core/globalTypes.js +4 -0
  174. package/Source/DataSources/CzmlDataSource.js +9 -0
  175. package/Source/DataSources/PathGraphics.js +13 -0
  176. package/Source/DataSources/PathVisualizer.js +330 -18
  177. package/Source/DataSources/StaticGeometryColorBatch.js +7 -2
  178. package/Source/DataSources/StaticGeometryPerMaterialBatch.js +7 -2
  179. package/Source/DataSources/StaticGroundGeometryPerMaterialBatch.js +4 -1
  180. package/Source/DataSources/StaticGroundPolylinePerMaterialBatch.js +4 -1
  181. package/Source/DataSources/StripeOrientation.js +6 -1
  182. package/Source/Renderer/BufferUsage.js +20 -9
  183. package/Source/Renderer/Context.js +2 -29
  184. package/Source/Renderer/DrawCommand.js +435 -403
  185. package/Source/Renderer/MipmapHint.js +5 -1
  186. package/Source/Renderer/Pass.js +7 -1
  187. package/Source/Renderer/PickId.js +44 -0
  188. package/Source/Renderer/PixelDatatype.js +3 -1
  189. package/Source/Renderer/RenderState.js +2 -2
  190. package/Source/Renderer/RenderbufferFormat.js +5 -1
  191. package/Source/Renderer/ShaderDestination.js +4 -1
  192. package/Source/Renderer/TextureMagnificationFilter.js +3 -1
  193. package/Source/Renderer/TextureMinificationFilter.js +3 -1
  194. package/Source/Renderer/TextureWrap.js +5 -1
  195. package/Source/Renderer/VertexArray.js +80 -0
  196. package/Source/Scene/AlphaMode.js +5 -1
  197. package/Source/Scene/ArcGisBaseMapType.js +6 -1
  198. package/Source/Scene/ArcGisMapService.js +1 -1
  199. package/Source/Scene/AttributeType.js +3 -1
  200. package/Source/Scene/Axis.js +3 -1
  201. package/Source/Scene/BillboardCollection.js +65 -364
  202. package/Source/Scene/BingMapsStyle.js +6 -1
  203. package/Source/Scene/BlendEquation.js +6 -1
  204. package/Source/Scene/BlendFunction.js +6 -1
  205. package/Source/Scene/BlendOption.js +6 -1
  206. package/Source/Scene/BlendingState.js +6 -1
  207. package/Source/Scene/BufferLoader.js +0 -2
  208. package/Source/Scene/BufferPoint.js +148 -0
  209. package/Source/Scene/BufferPointCollection.js +138 -0
  210. package/Source/Scene/BufferPointMaterial.js +95 -0
  211. package/Source/Scene/BufferPolygon.js +516 -0
  212. package/Source/Scene/BufferPolygonCollection.js +370 -0
  213. package/Source/Scene/BufferPolygonMaterial.js +41 -0
  214. package/Source/Scene/BufferPolyline.js +185 -0
  215. package/Source/Scene/BufferPolylineCollection.js +138 -0
  216. package/Source/Scene/BufferPolylineMaterial.js +93 -0
  217. package/Source/Scene/BufferPrimitive.js +347 -0
  218. package/Source/Scene/BufferPrimitiveCollection.js +818 -0
  219. package/Source/Scene/BufferPrimitiveMaterial.js +140 -0
  220. package/Source/Scene/CameraEventType.js +6 -1
  221. package/Source/Scene/Cesium3DTileColorBlendMode.js +6 -1
  222. package/Source/Scene/Cesium3DTileContent.js +5 -1
  223. package/Source/Scene/Cesium3DTileContentFactory.js +9 -0
  224. package/Source/Scene/Cesium3DTileContentState.js +6 -1
  225. package/Source/Scene/Cesium3DTileContentType.js +3 -1
  226. package/Source/Scene/Cesium3DTileFeature.js +289 -306
  227. package/Source/Scene/Cesium3DTileOptimizationHint.js +6 -1
  228. package/Source/Scene/Cesium3DTilePass.js +5 -1
  229. package/Source/Scene/Cesium3DTilePointFeature.js +433 -511
  230. package/Source/Scene/Cesium3DTileRefine.js +6 -1
  231. package/Source/Scene/Cesium3DTileStyle.js +22 -0
  232. package/Source/Scene/Cesium3DTileVectorFeature.js +586 -0
  233. package/Source/Scene/Cesium3DTileset.js +2 -1
  234. package/Source/Scene/ClassificationType.js +3 -1
  235. package/Source/Scene/ClippingPolygonCollection.js +270 -101
  236. package/Source/Scene/CloudType.js +3 -1
  237. package/Source/Scene/ColorBlendMode.js +4 -1
  238. package/Source/Scene/CubeMapPanorama.js +4 -4
  239. package/Source/Scene/CullFace.js +6 -1
  240. package/Source/Scene/DepthFunction.js +6 -1
  241. package/Source/Scene/DynamicAtmosphereLightingType.js +3 -1
  242. package/Source/Scene/EquirectangularPanorama.js +1 -0
  243. package/Source/Scene/ExpressionNodeType.js +6 -1
  244. package/Source/Scene/GaussianSplat3DTileContent.js +40 -46
  245. package/Source/Scene/GaussianSplatPrimitive.js +413 -70
  246. package/Source/Scene/GetFeatureInfoFormat.js +3 -3
  247. package/Source/Scene/GltfBufferViewLoader.js +0 -2
  248. package/Source/Scene/GltfDracoLoader.js +0 -2
  249. package/Source/Scene/GltfImageLoader.js +0 -3
  250. package/Source/Scene/GltfIndexBufferLoader.js +0 -4
  251. package/Source/Scene/GltfJsonLoader.js +0 -2
  252. package/Source/Scene/GltfLoader.js +215 -39
  253. package/Source/Scene/GltfLoaderUtil.js +14 -0
  254. package/Source/Scene/GltfSpzLoader.js +109 -2
  255. package/Source/Scene/GltfStructuralMetadataLoader.js +0 -2
  256. package/Source/Scene/GltfTextureLoader.js +0 -2
  257. package/Source/Scene/GltfVertexBufferLoader.js +0 -4
  258. package/Source/Scene/HeightReference.js +5 -1
  259. package/Source/Scene/HorizontalOrigin.js +6 -1
  260. package/Source/Scene/ITwinData.js +1 -0
  261. package/Source/Scene/ImageryProvider.js +1 -1
  262. package/Source/Scene/ImageryState.js +6 -1
  263. package/Source/Scene/ImplicitSubdivisionScheme.js +3 -1
  264. package/Source/Scene/InstanceAttributeSemantic.js +3 -1
  265. package/Source/Scene/IonWorldImageryStyle.js +6 -1
  266. package/Source/Scene/JobType.js +6 -1
  267. package/Source/Scene/Label.js +32 -0
  268. package/Source/Scene/LabelCollection.js +14 -13
  269. package/Source/Scene/LabelStyle.js +6 -1
  270. package/Source/Scene/MapMode2D.js +6 -1
  271. package/Source/Scene/Material.js +2 -0
  272. package/Source/Scene/Megatexture.js +1 -0
  273. package/Source/Scene/MetadataClassProperty.js +24 -10
  274. package/Source/Scene/MetadataComponentType.js +118 -24
  275. package/Source/Scene/MetadataSchemaLoader.js +0 -2
  276. package/Source/Scene/MetadataSemantic.js +6 -2
  277. package/Source/Scene/MetadataType.js +3 -1
  278. package/Source/Scene/Model/B3dmLoader.js +0 -3
  279. package/Source/Scene/Model/CustomShaderMode.js +3 -1
  280. package/Source/Scene/Model/CustomShaderPipelineStage.js +3 -1
  281. package/Source/Scene/Model/CustomShaderTranslucencyMode.js +5 -1
  282. package/Source/Scene/Model/EdgeVisibilityPipelineStage.js +735 -264
  283. package/Source/Scene/Model/Extensions/Gpm/PpeSource.js +5 -1
  284. package/Source/Scene/Model/Extensions/Gpm/StorageType.js +5 -1
  285. package/Source/Scene/Model/GeoJsonLoader.js +0 -2
  286. package/Source/Scene/Model/I3dmLoader.js +0 -3
  287. package/Source/Scene/Model/InstancingPipelineStage.js +1 -1
  288. package/Source/Scene/Model/LightingModel.js +5 -1
  289. package/Source/Scene/Model/MaterialPipelineStage.js +331 -3
  290. package/Source/Scene/Model/MetadataPipelineStage.js +3 -3
  291. package/Source/Scene/Model/ModelDrawCommand.js +6 -0
  292. package/Source/Scene/Model/ModelReader.js +475 -4
  293. package/Source/Scene/Model/ModelRuntimePrimitive.js +2 -1
  294. package/Source/Scene/Model/ModelType.js +3 -1
  295. package/Source/Scene/Model/ModelUtility.js +3 -1
  296. package/Source/Scene/Model/PntsLoader.js +4 -3
  297. package/Source/Scene/Model/StyleCommandsNeeded.js +3 -1
  298. package/Source/Scene/Model/UniformType.js +5 -1
  299. package/Source/Scene/Model/VaryingType.js +5 -1
  300. package/Source/Scene/Model/createVectorTileBuffersFromModelComponents.js +375 -0
  301. package/Source/Scene/Model/pickModel.js +94 -299
  302. package/Source/Scene/ModelAnimationLoop.js +6 -1
  303. package/Source/Scene/ModelAnimationState.js +6 -1
  304. package/Source/Scene/ModelComponents.js +1639 -1542
  305. package/Source/Scene/PickedMetadataInfo.js +1 -0
  306. package/Source/Scene/PrimitiveState.js +7 -1
  307. package/Source/Scene/QuadtreeOccluders.js +20 -15
  308. package/Source/Scene/QuadtreeTile.js +547 -541
  309. package/Source/Scene/QuadtreeTileLoadState.js +6 -1
  310. package/Source/Scene/QuadtreeTileProvider.js +159 -175
  311. package/Source/Scene/ResourceLoader.js +0 -1
  312. package/Source/Scene/ResourceLoaderState.js +7 -1
  313. package/Source/Scene/SceneMode.js +4 -1
  314. package/Source/Scene/ScreenSpaceCameraController.js +13 -0
  315. package/Source/Scene/ShadowMode.js +3 -1
  316. package/Source/Scene/SkyBox.js +17 -8
  317. package/Source/Scene/SplitDirection.js +6 -1
  318. package/Source/Scene/StencilFunction.js +6 -1
  319. package/Source/Scene/StencilOperation.js +6 -1
  320. package/Source/Scene/TerrainState.js +7 -1
  321. package/Source/Scene/TileBoundingRegion.js +1 -1
  322. package/Source/Scene/TileBoundingS2Cell.js +1 -1
  323. package/Source/Scene/TileBoundingSphere.js +1 -1
  324. package/Source/Scene/TileState.js +7 -1
  325. package/Source/Scene/Tonemapper.js +5 -1
  326. package/Source/Scene/TweenCollection.js +7 -0
  327. package/Source/Scene/VectorGltf3DTileContent.js +403 -0
  328. package/Source/Scene/VertexAttributeSemantic.js +17 -1
  329. package/Source/Scene/VerticalOrigin.js +6 -1
  330. package/Source/Scene/VoxelBoxShape.js +12 -6
  331. package/Source/Scene/VoxelContent.js +2 -0
  332. package/Source/Scene/VoxelCylinderShape.js +39 -38
  333. package/Source/Scene/VoxelEllipsoidShape.js +46 -96
  334. package/Source/Scene/VoxelMetadataOrder.js +6 -1
  335. package/Source/Scene/VoxelProvider.js +1 -0
  336. package/Source/Scene/VoxelShapeType.js +3 -1
  337. package/Source/Scene/WebMapServiceImageryProvider.js +2 -2
  338. package/Source/Scene/WebMapTileServiceImageryProvider.js +366 -131
  339. package/Source/Scene/parseStructuralMetadata.js +97 -37
  340. package/Source/Scene/renderBufferPointCollection.js +285 -0
  341. package/Source/Scene/renderBufferPolygonCollection.js +339 -0
  342. package/Source/Scene/renderBufferPolylineCollection.js +478 -0
  343. package/Source/Shaders/BillboardCollectionFS.glsl +2 -77
  344. package/Source/Shaders/BillboardCollectionFS.js +2 -77
  345. package/Source/Shaders/BillboardCollectionVS.glsl +2 -60
  346. package/Source/Shaders/BillboardCollectionVS.js +2 -60
  347. package/Source/Shaders/BufferPointMaterialFS.glsl +27 -0
  348. package/Source/Shaders/BufferPointMaterialFS.js +29 -0
  349. package/Source/Shaders/BufferPointMaterialVS.glsl +48 -0
  350. package/Source/Shaders/BufferPointMaterialVS.js +50 -0
  351. package/Source/Shaders/BufferPolygonMaterialFS.glsl +13 -0
  352. package/Source/Shaders/BufferPolygonMaterialFS.js +15 -0
  353. package/Source/Shaders/BufferPolygonMaterialVS.glsl +30 -0
  354. package/Source/Shaders/BufferPolygonMaterialVS.js +32 -0
  355. package/Source/Shaders/BufferPolylineMaterialFS.glsl +13 -0
  356. package/Source/Shaders/BufferPolylineMaterialFS.js +15 -0
  357. package/Source/Shaders/BufferPolylineMaterialVS.glsl +49 -0
  358. package/Source/Shaders/BufferPolylineMaterialVS.js +51 -0
  359. package/Source/Shaders/Builtin/CzmBuiltins.js +2 -0
  360. package/Source/Shaders/Builtin/Functions/computeTextureTransform.glsl +24 -0
  361. package/Source/Shaders/Builtin/Functions/computeTextureTransform.js +25 -0
  362. package/Source/Shaders/Model/ConstantLodStageFS.glsl +60 -0
  363. package/Source/Shaders/Model/ConstantLodStageFS.js +62 -0
  364. package/Source/Shaders/Model/ConstantLodStageVS.glsl +12 -0
  365. package/Source/Shaders/Model/ConstantLodStageVS.js +13 -0
  366. package/Source/Shaders/Model/EdgeVisibilityStageFS.glsl +34 -48
  367. package/Source/Shaders/Model/EdgeVisibilityStageFS.js +34 -49
  368. package/Source/Shaders/Model/EdgeVisibilityStageVS.glsl +98 -0
  369. package/Source/Shaders/Model/EdgeVisibilityStageVS.js +100 -0
  370. package/Source/Shaders/Model/MaterialStageFS.glsl +46 -20
  371. package/Source/Shaders/Model/MaterialStageFS.js +46 -20
  372. package/Source/Shaders/Model/ModelFS.glsl +15 -0
  373. package/Source/Shaders/Model/ModelFS.js +15 -0
  374. package/Source/Shaders/Model/ModelVS.glsl +8 -0
  375. package/Source/Shaders/Model/ModelVS.js +8 -0
  376. package/Source/Shaders/PolygonSignedDistanceFS.glsl +64 -33
  377. package/Source/Shaders/PolygonSignedDistanceFS.js +64 -33
  378. package/Source/Shaders/PrimitiveGaussianSplatVS.glsl +9 -2
  379. package/Source/Shaders/PrimitiveGaussianSplatVS.js +9 -2
  380. package/Source/Shaders/Voxels/VoxelFS.glsl +1 -1
  381. package/Source/Shaders/Voxels/VoxelFS.js +1 -1
  382. package/Source/Shaders/Voxels/convertLocalToBoxUv.glsl +0 -1
  383. package/Source/Shaders/Voxels/convertLocalToBoxUv.js +0 -1
  384. package/Source/Shaders/Voxels/convertLocalToCylinderUv.glsl +7 -9
  385. package/Source/Shaders/Voxels/convertLocalToCylinderUv.js +7 -9
  386. package/Source/Shaders/Voxels/convertLocalToEllipsoidUv.glsl +7 -17
  387. package/Source/Shaders/Voxels/convertLocalToEllipsoidUv.js +7 -17
  388. package/Source/Widget/CesiumWidget.js +11 -4
  389. package/Source/Workers/decodeDraco.js +3 -0
  390. package/Source/Workers/decodeI3S.js +5 -2
  391. package/index.d.ts +1332 -402
  392. package/index.js +111 -81
  393. package/package.json +3 -3
  394. package/Build/Workers/chunk-54O3AGOA.js +0 -642
  395. package/Build/Workers/chunk-6U5QMZU3.js +0 -940
  396. package/Build/Workers/chunk-HNDE73JK.js +0 -1829
  397. package/Build/Workers/chunk-PAFMAR7A.js +0 -2357
  398. package/Build/Workers/chunk-S53HSRT6.js +0 -114
@@ -0,0 +1,370 @@
1
+ // @ts-check
2
+
3
+ import defined from "../Core/defined.js";
4
+ import BufferPrimitiveCollection from "./BufferPrimitiveCollection.js";
5
+ import BufferPolygon from "./BufferPolygon.js";
6
+ import Frozen from "../Core/Frozen.js";
7
+ import assert from "../Core/assert.js";
8
+ import IndexDatatype from "../Core/IndexDatatype.js";
9
+ import renderPolygons from "./renderBufferPolygonCollection.js";
10
+ import BufferPolygonMaterial from "./BufferPolygonMaterial.js";
11
+
12
+ /** @import { TypedArray } from "../Core/globalTypes.js"; */
13
+ /** @import Matrix4 from "../Core/Matrix4.js"; */
14
+ /** @import FrameState from "./FrameState.js" */
15
+ /** @import ComponentDatatype from "../Core/ComponentDatatype.js"; */
16
+
17
+ const { ERR_CAPACITY } = BufferPrimitiveCollection.Error;
18
+
19
+ /**
20
+ * @typedef {object} BufferPolygonOptions
21
+ * @property {Matrix4} [modelMatrix=Matrix4.IDENTITY] Transforms geometry from model to world coordinates.
22
+ * @property {boolean} [show=true]
23
+ * @property {BufferPolygonMaterial} [material=BufferPolygonMaterial.DEFAULT_MATERIAL]
24
+ * @property {number} [featureId]
25
+ * @property {object} [pickObject]
26
+ * @property {TypedArray} [positions]
27
+ * @property {TypedArray} [holes]
28
+ * @property {TypedArray} [triangles]
29
+ * @experimental This feature is not final and is subject to change without Cesium's standard deprecation policy.
30
+ */
31
+
32
+ /**
33
+ * Collection of polygons held in ArrayBuffer storage for performance and memory optimization.
34
+ *
35
+ * <p>Default buffer memory allocation is arbitrary, and collections cannot be resized,
36
+ * so specific per-buffer capacities should be provided in the collection
37
+ * constructor when available.</p>
38
+ *
39
+ * @example
40
+ * import earcut from "earcut";
41
+ *
42
+ * const collection = new BufferPolygonCollection({
43
+ * primitiveCountMax: 1024,
44
+ * vertexCountMax: 4096,
45
+ * holeCountMax: 1024,
46
+ * triangleCountMax: 2048,
47
+ * });
48
+ *
49
+ * const polygon = new BufferPolygon();
50
+ * const positions = [ ... ];
51
+ * const holes = [ ... ];
52
+ * const material = new BufferPolygonMaterial({color: Color.WHITE});
53
+ *
54
+ * // Create a new polygon, temporarily bound to 'polygon' local variable.
55
+ * collection.add({
56
+ * positions: new Float64Array(positions),
57
+ * holes: new Uint32Array(holes),
58
+ * triangles: new Uint32Array(earcut(positions, holes, 3)),
59
+ * material
60
+ * }, polygon);
61
+ *
62
+ * // Iterate over all polygons in collection, temporarily binding 'polygon'
63
+ * // local variable to each, and updating polygon material.
64
+ * for (let i = 0; i < collection.primitiveCount; i++) {
65
+ * collection.get(i, polygon);
66
+ * polygon.setMaterial(material);
67
+ * }
68
+ *
69
+ * @see BufferPolygon
70
+ * @see BufferPolygonMaterial
71
+ * @see BufferPrimitiveCollection
72
+ * @extends BufferPrimitiveCollection<BufferPolygon>
73
+ * @experimental This feature is not final and is subject to change without Cesium's standard deprecation policy.
74
+ */
75
+ class BufferPolygonCollection extends BufferPrimitiveCollection {
76
+ /**
77
+ * @param {object} options
78
+ * @param {number} [options.primitiveCountMax=BufferPrimitiveCollection.DEFAULT_CAPACITY]
79
+ * @param {number} [options.vertexCountMax=BufferPrimitiveCollection.DEFAULT_CAPACITY]
80
+ * @param {number} [options.holeCountMax=BufferPrimitiveCollection.DEFAULT_CAPACITY]
81
+ * @param {number} [options.triangleCountMax=BufferPrimitiveCollection.DEFAULT_CAPACITY]
82
+ * @param {ComponentDatatype} [options.positionDatatype=ComponentDatatype.DOUBLE]
83
+ * @param {boolean} [options.show=true]
84
+ * @param {boolean} [options.allowPicking=true] When <code>true</code>, primitives are pickable with {@link Scene#pick}. When <code>false</code>, memory and initialization cost are lower.
85
+ * @param {boolean} [options.debugShowBoundingVolume=false]
86
+ */
87
+ constructor(options = Frozen.EMPTY_OBJECT) {
88
+ super(options);
89
+
90
+ /**
91
+ * @type {number}
92
+ * @ignore
93
+ */
94
+ this._holeCount = 0;
95
+
96
+ /**
97
+ * @type {number}
98
+ * @protected
99
+ * @ignore
100
+ */
101
+ this._holeCountMax =
102
+ options.holeCountMax ?? BufferPrimitiveCollection.DEFAULT_CAPACITY;
103
+
104
+ /**
105
+ * @type {TypedArray}
106
+ * @ignore
107
+ */
108
+ this._holeIndexView = null;
109
+
110
+ /**
111
+ * @type {number}
112
+ * @ignore
113
+ */
114
+ this._triangleCount = 0;
115
+
116
+ /**
117
+ * @type {number}
118
+ * @protected
119
+ * @ignore
120
+ */
121
+ this._triangleCountMax =
122
+ options.triangleCountMax ?? BufferPrimitiveCollection.DEFAULT_CAPACITY;
123
+
124
+ /**
125
+ * @type {TypedArray}
126
+ * @ignore
127
+ */
128
+ this._triangleIndexView = null;
129
+
130
+ this._allocateHoleIndexBuffer();
131
+ this._allocateTriangleIndexBuffer();
132
+ }
133
+
134
+ _getCollectionClass() {
135
+ return BufferPolygonCollection;
136
+ }
137
+
138
+ _getPrimitiveClass() {
139
+ return BufferPolygon;
140
+ }
141
+
142
+ _getMaterialClass() {
143
+ return BufferPolygonMaterial;
144
+ }
145
+
146
+ /////////////////////////////////////////////////////////////////////////////
147
+ // COLLECTION LIFECYCLE
148
+
149
+ /**
150
+ * @private
151
+ * @ignore
152
+ */
153
+ _allocateHoleIndexBuffer() {
154
+ // @ts-expect-error Requires https://github.com/CesiumGS/cesium/pull/13203.
155
+ this._holeIndexView = IndexDatatype.createTypedArray(
156
+ this._positionCountMax,
157
+ this._holeCountMax,
158
+ );
159
+ }
160
+
161
+ /**
162
+ * @private
163
+ * @ignore
164
+ */
165
+ _allocateTriangleIndexBuffer() {
166
+ // @ts-expect-error Requires https://github.com/CesiumGS/cesium/pull/13203.
167
+ this._triangleIndexView = IndexDatatype.createTypedArray(
168
+ this._positionCountMax,
169
+ this._triangleCountMax * 3,
170
+ );
171
+ }
172
+
173
+ /**
174
+ * Duplicates the contents of this collection into the result collection.
175
+ * Result collection is not resized, and must contain enough space for all
176
+ * primitives in the source collection. Existing polygons in the result
177
+ * collection will be overwritten.
178
+ *
179
+ * <p>Useful when allocating more space for a collection that has reached its
180
+ * capacity, and efficiently transferring polygons to the new collection.</p>
181
+ *
182
+ * @example
183
+ * const result = new BufferPolygonCollection({ ... }); // allocate larger 'result' collection
184
+ * BufferPolygonCollection.clone(collection, result); // copy polygons from 'collection' into 'result'
185
+ *
186
+ * @param {BufferPolygonCollection} collection
187
+ * @param {BufferPolygonCollection} result
188
+ * @returns {BufferPolygonCollection}
189
+ */
190
+ static clone(collection, result) {
191
+ super.clone(collection, result);
192
+
193
+ //>>includeStart('debug', pragmas.debug);
194
+ assert(collection.holeCount <= result.holeCountMax, ERR_CAPACITY);
195
+ assert(collection.triangleCount <= result.triangleCountMax, ERR_CAPACITY);
196
+ //>>includeEnd('debug');
197
+
198
+ this._copySubArray(
199
+ collection._holeIndexView,
200
+ result._holeIndexView,
201
+ collection.holeCount,
202
+ );
203
+
204
+ this._copySubArray(
205
+ collection._triangleIndexView,
206
+ result._triangleIndexView,
207
+ collection._triangleCount * 3,
208
+ );
209
+
210
+ result._holeCount = collection._holeCount;
211
+ result._triangleCount = collection._triangleCount;
212
+
213
+ return result;
214
+ }
215
+
216
+ /**
217
+ * @param {BufferPolygonCollection} collection
218
+ * @returns {BufferPolygonCollection}
219
+ * @override
220
+ * @ignore
221
+ */
222
+ static _cloneEmpty(collection) {
223
+ return new BufferPolygonCollection({
224
+ primitiveCountMax: collection.primitiveCountMax,
225
+ vertexCountMax: collection.vertexCountMax,
226
+ holeCountMax: collection.holeCountMax,
227
+ triangleCountMax: collection.triangleCountMax,
228
+ });
229
+ }
230
+
231
+ /**
232
+ * @param {BufferPolygonCollection} src
233
+ * @param {BufferPolygonCollection} dst
234
+ * @override
235
+ * @ignore
236
+ */
237
+ static _replaceBuffers(src, dst) {
238
+ super._replaceBuffers(src, dst);
239
+ dst._holeIndexView = src._holeIndexView;
240
+ dst._triangleIndexView = src._triangleIndexView;
241
+ }
242
+
243
+ /////////////////////////////////////////////////////////////////////////////
244
+ // PRIMITIVE LIFECYCLE
245
+
246
+ /**
247
+ * Adds a new polygon to the collection, with the specified options. A
248
+ * {@link BufferPolygon} instance is linked to the new polygon, using
249
+ * the 'result' argument if given, or a new instance if not. For repeated
250
+ * calls, prefer to reuse a single BufferPolygon instance rather than
251
+ * allocating a new instance on each call.
252
+ *
253
+ * @param {BufferPolygonOptions} options
254
+ * @param {BufferPolygon} result
255
+ * @returns {BufferPolygon}
256
+ * @override
257
+ */
258
+ add(options, result = new BufferPolygon()) {
259
+ super.add(options, result);
260
+
261
+ const vertexOffset = this._positionCount;
262
+ result._setUint32(BufferPolygon.Layout.POSITION_OFFSET_U32, vertexOffset);
263
+ result._setUint32(BufferPolygon.Layout.POSITION_COUNT_U32, 0);
264
+
265
+ const holeOffset = this._holeCount;
266
+ result._setUint32(BufferPolygon.Layout.HOLE_OFFSET_U32, holeOffset);
267
+ result._setUint32(BufferPolygon.Layout.HOLE_COUNT_U32, 0);
268
+
269
+ const triangleOffset = this._triangleCount;
270
+ result._setUint32(BufferPolygon.Layout.TRIANGLE_OFFSET_U32, triangleOffset);
271
+ result._setUint32(BufferPolygon.Layout.TRIANGLE_COUNT_U32, 0);
272
+
273
+ if (defined(options.positions)) {
274
+ result.setPositions(options.positions);
275
+ }
276
+
277
+ if (defined(options.holes)) {
278
+ result.setHoles(options.holes);
279
+ }
280
+
281
+ if (defined(options.triangles)) {
282
+ result.setTriangles(options.triangles);
283
+ }
284
+
285
+ return result;
286
+ }
287
+
288
+ /////////////////////////////////////////////////////////////////////////////
289
+ // RENDER
290
+
291
+ /**
292
+ * @param {FrameState} frameState
293
+ * @ignore
294
+ */
295
+ update(frameState) {
296
+ super.update(frameState);
297
+
298
+ const passes = frameState.passes;
299
+ if (this.show && (passes.render || passes.pick)) {
300
+ this._renderContext = renderPolygons(
301
+ this,
302
+ frameState,
303
+ this._renderContext,
304
+ );
305
+ }
306
+ }
307
+
308
+ /////////////////////////////////////////////////////////////////////////////
309
+ // ACCESSORS
310
+
311
+ /**
312
+ * Total byte length of buffers owned by this collection. Includes any unused
313
+ * space allocated by {@link primitiveCountMax}, even if no polygons have
314
+ * yet been added in that space.
315
+ *
316
+ * @type {number}
317
+ * @readonly
318
+ * @override
319
+ */
320
+ get byteLength() {
321
+ return (
322
+ super.byteLength +
323
+ this._holeIndexView.byteLength +
324
+ this._triangleIndexView.byteLength
325
+ );
326
+ }
327
+
328
+ /**
329
+ * Number of holes in collection. Must be <= {@link holeCountMax}.
330
+ *
331
+ * @type {number}
332
+ * @readonly
333
+ */
334
+ get holeCount() {
335
+ return this._holeCount;
336
+ }
337
+
338
+ /**
339
+ * Maximum number of holes in collection. Must be >= {@link holeCount}.
340
+ *
341
+ * @type {number}
342
+ * @readonly
343
+ * @default {@link BufferPrimitiveCollection.DEFAULT_CAPACITY}
344
+ */
345
+ get holeCountMax() {
346
+ return this._holeCountMax;
347
+ }
348
+
349
+ /**
350
+ * Number of triangles in collection. Must be <= {@link triangleCountMax}.
351
+ *
352
+ * @type {number}
353
+ * @readonly
354
+ */
355
+ get triangleCount() {
356
+ return this._triangleCount;
357
+ }
358
+
359
+ /**
360
+ * Maximum number of triangles in collection. Must be >= {@link triangleCount}.
361
+ *
362
+ * @type {number}
363
+ * @readonly
364
+ * @default {@link BufferPrimitiveCollection.DEFAULT_CAPACITY}
365
+ */
366
+ get triangleCountMax() {
367
+ return this._triangleCountMax;
368
+ }
369
+ }
370
+ export default BufferPolygonCollection;
@@ -0,0 +1,41 @@
1
+ // @ts-check
2
+
3
+ import Frozen from "../Core/Frozen.js";
4
+ import BufferPrimitiveMaterial from "./BufferPrimitiveMaterial.js";
5
+
6
+ /** @import Color from "../Core/Color.js"; */
7
+ /** @import BufferPolygon from "./BufferPolygon.js"; */
8
+
9
+ /**
10
+ * @typedef {object} BufferPolygonMaterialOptions
11
+ * @property {Color} [color=Color.WHITE] Color of fill.
12
+ * @property {Color} [outlineColor=Color.WHITE] Color of outline.
13
+ * @property {number} [outlineWidth=0.0] Width of outline, 0-255px.
14
+ */
15
+
16
+ /**
17
+ * Material description for a {@link BufferPolygon}.
18
+ *
19
+ * <p>BufferPolygonMaterial objects are {@link Packable|packable}, stored
20
+ * when calling {@link BufferPolygon#setMaterial}. Subsequent changes to the
21
+ * material will not affect the polygon until setMaterial() is called again.</p>
22
+ *
23
+ * @experimental This feature is not final and is subject to change without Cesium's standard deprecation policy.
24
+ * @extends BufferPrimitiveMaterial
25
+ */
26
+ class BufferPolygonMaterial extends BufferPrimitiveMaterial {
27
+ /**
28
+ * @type {BufferPolygonMaterial}
29
+ * @ignore
30
+ */
31
+ static DEFAULT_MATERIAL = Object.freeze(new BufferPolygonMaterial());
32
+
33
+ /**
34
+ * @param {BufferPolygonMaterialOptions} [options]
35
+ */
36
+ constructor(options = Frozen.EMPTY_OBJECT) {
37
+ super(options);
38
+ }
39
+ }
40
+
41
+ export default BufferPolygonMaterial;
@@ -0,0 +1,185 @@
1
+ // @ts-check
2
+
3
+ import BufferPrimitive from "./BufferPrimitive.js";
4
+ import assert from "../Core/assert.js";
5
+ import BufferPrimitiveCollection from "./BufferPrimitiveCollection.js";
6
+ import defined from "../Core/defined.js";
7
+
8
+ /** @import { TypedArray, TypedArrayConstructor } from "../Core/globalTypes.js"; */
9
+ /** @import BufferPolylineCollection from "./BufferPolylineCollection.js"; */
10
+
11
+ const { ERR_RESIZE, ERR_CAPACITY } = BufferPrimitiveCollection.Error;
12
+
13
+ /**
14
+ * View bound to the underlying buffer data of a {@link BufferPolylineCollection}.
15
+ *
16
+ * <p>BufferPolyline instances are {@link https://en.wikipedia.org/wiki/Flyweight_pattern|flyweights}:
17
+ * a single BufferPolyline instance can be temporarily bound to any conceptual
18
+ * "polyline" in a BufferPolylineCollection, allowing very large collections to be
19
+ * iterated and updated with a minimal memory footprint.</p>
20
+ *
21
+ * Represented as two (2) or more positions.
22
+ *
23
+ * @see BufferPolylineCollection
24
+ * @see BufferPolylineMaterial
25
+ * @see BufferPrimitive
26
+ * @extends BufferPrimitive
27
+ * @experimental This feature is not final and is subject to change without Cesium's standard deprecation policy.
28
+ */
29
+ class BufferPolyline extends BufferPrimitive {
30
+ /**
31
+ * @type {BufferPolylineCollection}
32
+ * @ignore
33
+ */
34
+ _collection = null;
35
+
36
+ /** @ignore */
37
+ static Layout = {
38
+ ...BufferPrimitive.Layout,
39
+
40
+ /**
41
+ * Offset in position array to first vertex in polyline, number of VEC3 elements.
42
+ * @type {number}
43
+ * @ignore
44
+ */
45
+ POSITION_OFFSET_U32: BufferPrimitive.Layout.__BYTE_LENGTH,
46
+
47
+ /**
48
+ * Count of positions (vertices) in this polyline, number of VEC3 elements.
49
+ * @type {number}
50
+ * @ignore
51
+ */
52
+ POSITION_COUNT_U32: BufferPrimitive.Layout.__BYTE_LENGTH + 4,
53
+
54
+ /**
55
+ * @type {number}
56
+ * @ignore
57
+ */
58
+ __BYTE_LENGTH: BufferPrimitive.Layout.__BYTE_LENGTH + 8,
59
+ };
60
+
61
+ /////////////////////////////////////////////////////////////////////////////
62
+ // LIFECYCLE
63
+
64
+ /**
65
+ * Copies data from source polyline to result. If the result polyline is not
66
+ * new (the last polyline in the collection) then source and result polylines
67
+ * must have the same vertex counts.
68
+ *
69
+ * @param {BufferPolyline} polyline
70
+ * @param {BufferPolyline} result
71
+ * @return {BufferPolyline}
72
+ * @override
73
+ */
74
+ static clone(polyline, result) {
75
+ super.clone(polyline, result);
76
+ result.setPositions(polyline.getPositions());
77
+ return result;
78
+ }
79
+
80
+ /////////////////////////////////////////////////////////////////////////////
81
+ // GEOMETRY
82
+
83
+ /**
84
+ * Offset in collection position array to first vertex in polyline, number
85
+ * of VEC3 elements.
86
+ *
87
+ * @type {number}
88
+ * @readonly
89
+ * @ignore
90
+ */
91
+ get vertexOffset() {
92
+ return this._getUint32(BufferPolyline.Layout.POSITION_OFFSET_U32);
93
+ }
94
+
95
+ /**
96
+ * Count of positions (vertices) in this polyline, number of VEC3 elements.
97
+ *
98
+ * @type {number}
99
+ * @readonly
100
+ */
101
+ get vertexCount() {
102
+ return this._getUint32(BufferPolyline.Layout.POSITION_COUNT_U32);
103
+ }
104
+
105
+ /**
106
+ * Returns an array view of this polyline's vertex positions. If 'result'
107
+ * argument is given, vertex positions are written to that array and returned.
108
+ * Otherwise, returns an ArrayView on collection memory — changes to this array
109
+ * will not trigger render updates, which requires `.setPositions()`.
110
+ *
111
+ * @param {TypedArray} [result]
112
+ * return {TypedArray}
113
+ */
114
+ getPositions(result) {
115
+ const { vertexOffset, vertexCount } = this;
116
+ const positionView = this._collection._positionView;
117
+
118
+ if (!defined(result)) {
119
+ const byteOffset =
120
+ positionView.byteOffset +
121
+ vertexOffset * 3 * positionView.BYTES_PER_ELEMENT;
122
+ const TypedArray = /** @type {TypedArrayConstructor} */ (
123
+ positionView.constructor
124
+ );
125
+ return new TypedArray(
126
+ /** @type {ArrayBuffer} */ (positionView.buffer),
127
+ byteOffset,
128
+ vertexCount * 3,
129
+ );
130
+ }
131
+
132
+ for (let i = 0; i < vertexCount; i++) {
133
+ result[i * 3] = positionView[(vertexOffset + i) * 3];
134
+ result[i * 3 + 1] = positionView[(vertexOffset + i) * 3 + 1];
135
+ result[i * 3 + 2] = positionView[(vertexOffset + i) * 3 + 2];
136
+ }
137
+ return result;
138
+ }
139
+
140
+ /** @param {TypedArray} positions */
141
+ setPositions(positions) {
142
+ const collection = this._collection;
143
+ const vertexOffset = this.vertexOffset;
144
+ const srcCount = this.vertexCount;
145
+ const dstCount = positions.length / 3;
146
+ const collectionCount = collection._positionCount + dstCount - srcCount;
147
+
148
+ //>>includeStart('debug', pragmas.debug);
149
+ assert(srcCount === dstCount || this._isResizable(), ERR_RESIZE);
150
+ assert(collectionCount <= collection.vertexCountMax, ERR_CAPACITY);
151
+ //>>includeEnd('debug');
152
+
153
+ collection._positionCount = collectionCount;
154
+ this._setUint32(BufferPolyline.Layout.POSITION_COUNT_U32, dstCount);
155
+
156
+ const positionView = collection._positionView;
157
+ for (let i = 0; i < dstCount; i++) {
158
+ positionView[(vertexOffset + i) * 3] = positions[i * 3];
159
+ positionView[(vertexOffset + i) * 3 + 1] = positions[i * 3 + 1];
160
+ positionView[(vertexOffset + i) * 3 + 2] = positions[i * 3 + 2];
161
+ }
162
+
163
+ collection._makeDirtyBoundingVolume();
164
+ }
165
+
166
+ /////////////////////////////////////////////////////////////////////////////
167
+ // DEBUG
168
+
169
+ /**
170
+ * Returns a JSON-serializable object representing the polyline. This encoding
171
+ * is not memory-efficient, and should generally be used for debugging and
172
+ * testing.
173
+ *
174
+ * @returns {Object} JSON-serializable object.
175
+ * @override
176
+ */
177
+ toJSON() {
178
+ return {
179
+ ...super.toJSON(),
180
+ positions: Array.from(this.getPositions()),
181
+ };
182
+ }
183
+ }
184
+
185
+ export default BufferPolyline;