@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
@@ -21,314 +21,429 @@ import preprocess3DTileContent from "./preprocess3DTileContent.js";
21
21
  *
22
22
  * @see {@link https://github.com/CesiumGS/3d-tiles/tree/main/extensions/3DTILES_multiple_contents|3DTILES_multiple_contents extension}
23
23
  *
24
- * @alias Multiple3DTileContent
25
- * @constructor
26
- *
27
- * @param {Cesium3DTileset} tileset The tileset this content belongs to
28
- * @param {Cesium3DTile} tile The content this content belongs to
29
- * @param {Resource} tilesetResource The resource that points to the tileset. This will be used to derive each inner content's resource.
30
- * @param {object} contentsJson Either the tile JSON containing the contents array (3D Tiles 1.1), or <code>3DTILES_multiple_contents</code> extension JSON
31
- *
24
+ * @implements Cesium3DTileContent
32
25
  * @private
33
26
  * @experimental This feature is using part of the 3D Tiles spec that is not final and is subject to change without Cesium's standard deprecation policy.
34
27
  */
35
- function Multiple3DTileContent(tileset, tile, tilesetResource, contentsJson) {
36
- this._tileset = tileset;
37
- this._tile = tile;
38
- this._tilesetResource = tilesetResource;
39
- this._contents = [];
40
- this._contentsCreated = false;
41
-
42
- // An older version of 3DTILES_multiple_contents used "content" instead of "contents"
43
- const contentHeaders = defined(contentsJson.contents)
44
- ? contentsJson.contents
45
- : contentsJson.content;
46
-
47
- this._innerContentHeaders = contentHeaders;
48
- this._requestsInFlight = 0;
49
-
50
- // How many times cancelPendingRequests() has been called. This is
51
- // used to help short-circuit computations after a tile was canceled.
52
- this._cancelCount = 0;
53
-
54
- // The number of contents that turned out to be external tilesets
55
- // in createInnerContent. When all contents are external tilesets,
56
- // then tile.hasRenderableContent will become `false`
57
- this._externalTilesetCount = 0;
58
-
59
- const contentCount = this._innerContentHeaders.length;
60
- this._arrayFetchPromises = new Array(contentCount);
61
- this._requests = new Array(contentCount);
62
- this._ready = false;
63
-
64
- this._innerContentResources = new Array(contentCount);
65
- this._serverKeys = new Array(contentCount);
66
-
67
- for (let i = 0; i < contentCount; i++) {
68
- const contentResource = tilesetResource.getDerivedResource({
69
- url: contentHeaders[i].uri,
70
- });
28
+ class Multiple3DTileContent {
29
+ /**
30
+ * @param {Cesium3DTileset} tileset The tileset this content belongs to
31
+ * @param {Cesium3DTile} tile The content this content belongs to
32
+ * @param {Resource} tilesetResource The resource that points to the tileset. This will be used to derive each inner content's resource.
33
+ * @param {object} contentsJson Either the tile JSON containing the contents array (3D Tiles 1.1), or <code>3DTILES_multiple_contents</code> extension JSON
34
+ */
35
+ constructor(tileset, tile, tilesetResource, contentsJson) {
36
+ this._tileset = tileset;
37
+ this._tile = tile;
38
+ this._tilesetResource = tilesetResource;
39
+ this._contents = [];
40
+ this._contentsCreated = false;
41
+
42
+ // An older version of 3DTILES_multiple_contents used "content" instead of "contents"
43
+ const contentHeaders = defined(contentsJson.contents)
44
+ ? contentsJson.contents
45
+ : contentsJson.content;
46
+
47
+ this._innerContentHeaders = contentHeaders;
48
+ this._requestsInFlight = 0;
49
+
50
+ // How many times cancelPendingRequests() has been called. This is
51
+ // used to help short-circuit computations after a tile was canceled.
52
+ this._cancelCount = 0;
53
+
54
+ // The number of contents that turned out to be external tilesets
55
+ // in createInnerContent. When all contents are external tilesets,
56
+ // then tile.hasRenderableContent will become `false`
57
+ this._externalTilesetCount = 0;
58
+
59
+ const contentCount = this._innerContentHeaders.length;
60
+ this._arrayFetchPromises = new Array(contentCount);
61
+ this._requests = new Array(contentCount);
62
+ this._ready = false;
63
+
64
+ this._innerContentResources = new Array(contentCount);
65
+ this._serverKeys = new Array(contentCount);
66
+
67
+ for (let i = 0; i < contentCount; i++) {
68
+ const contentResource = tilesetResource.getDerivedResource({
69
+ url: contentHeaders[i].uri,
70
+ });
71
71
 
72
- const serverKey = RequestScheduler.getServerKey(
73
- contentResource.getUrlComponent(),
74
- );
72
+ const serverKey = RequestScheduler.getServerKey(
73
+ contentResource.getUrlComponent(),
74
+ );
75
75
 
76
- this._innerContentResources[i] = contentResource;
77
- this._serverKeys[i] = serverKey;
76
+ this._innerContentResources[i] = contentResource;
77
+ this._serverKeys[i] = serverKey;
78
+ }
78
79
  }
79
- }
80
80
 
81
- Object.defineProperties(Multiple3DTileContent.prototype, {
82
81
  /**
83
82
  * Part of the {@link Cesium3DTileContent} interface. <code>Multiple3DTileContent</code> checks if any of the inner contents have dirty featurePropertiesDirty.
84
- * @memberof Multiple3DTileContent.prototype
85
83
  *
86
84
  * @type {boolean}
87
85
  *
88
86
  * @private
89
87
  */
90
- featurePropertiesDirty: {
91
- get: function () {
92
- const contents = this._contents;
93
- const length = contents.length;
94
- for (let i = 0; i < length; ++i) {
95
- if (contents[i].featurePropertiesDirty) {
96
- return true;
97
- }
88
+ get featurePropertiesDirty() {
89
+ const contents = this._contents;
90
+ const length = contents.length;
91
+ for (let i = 0; i < length; ++i) {
92
+ if (contents[i].featurePropertiesDirty) {
93
+ return true;
98
94
  }
95
+ }
99
96
 
100
- return false;
101
- },
102
- set: function (value) {
103
- const contents = this._contents;
104
- const length = contents.length;
105
- for (let i = 0; i < length; ++i) {
106
- contents[i].featurePropertiesDirty = value;
107
- }
108
- },
109
- },
97
+ return false;
98
+ }
99
+
100
+ set featurePropertiesDirty(value) {
101
+ const contents = this._contents;
102
+ const length = contents.length;
103
+ for (let i = 0; i < length; ++i) {
104
+ contents[i].featurePropertiesDirty = value;
105
+ }
106
+ }
110
107
 
111
108
  /**
112
109
  * Part of the {@link Cesium3DTileContent} interface. <code>Multiple3DTileContent</code>
113
110
  * always returns <code>0</code>. Instead call <code>featuresLength</code> for a specific inner content.
114
111
  *
115
- * @memberof Multiple3DTileContent.prototype
116
112
  *
117
113
  * @type {number}
118
114
  * @readonly
119
115
  *
120
116
  * @private
121
117
  */
122
- featuresLength: {
123
- get: function () {
124
- return 0;
125
- },
126
- },
118
+ get featuresLength() {
119
+ return 0;
120
+ }
127
121
 
128
122
  /**
129
123
  * Part of the {@link Cesium3DTileContent} interface. <code>Multiple3DTileContent</code>
130
124
  * always returns <code>0</code>. Instead, call <code>pointsLength</code> for a specific inner content.
131
125
  *
132
- * @memberof Multiple3DTileContent.prototype
133
126
  *
134
127
  * @type {number}
135
128
  * @readonly
136
129
  *
137
130
  * @private
138
131
  */
139
- pointsLength: {
140
- get: function () {
141
- return 0;
142
- },
143
- },
132
+ get pointsLength() {
133
+ return 0;
134
+ }
144
135
 
145
136
  /**
146
137
  * Part of the {@link Cesium3DTileContent} interface. <code>Multiple3DTileContent</code>
147
138
  * always returns <code>0</code>. Instead call <code>trianglesLength</code> for a specific inner content.
148
139
  *
149
- * @memberof Multiple3DTileContent.prototype
150
140
  *
151
141
  * @type {number}
152
142
  * @readonly
153
143
  *
154
144
  * @private
155
145
  */
156
- trianglesLength: {
157
- get: function () {
158
- return 0;
159
- },
160
- },
146
+ get trianglesLength() {
147
+ return 0;
148
+ }
161
149
 
162
150
  /**
163
151
  * Part of the {@link Cesium3DTileContent} interface. <code>Multiple3DTileContent</code>
164
152
  * always returns <code>0</code>. Instead call <code>geometryByteLength</code> for a specific inner content.
165
153
  *
166
- * @memberof Multiple3DTileContent.prototype
167
154
  *
168
155
  * @type {number}
169
156
  * @readonly
170
157
  *
171
158
  * @private
172
159
  */
173
- geometryByteLength: {
174
- get: function () {
175
- return 0;
176
- },
177
- },
160
+ get geometryByteLength() {
161
+ return 0;
162
+ }
178
163
 
179
164
  /**
180
165
  * Part of the {@link Cesium3DTileContent} interface. <code>Multiple3DTileContent</code>
181
166
  * always returns <code>0</code>. Instead call <code>texturesByteLength</code> for a specific inner content.
182
167
  *
183
- * @memberof Multiple3DTileContent.prototype
184
168
  *
185
169
  * @type {number}
186
170
  * @readonly
187
171
  *
188
172
  * @private
189
173
  */
190
- texturesByteLength: {
191
- get: function () {
192
- return 0;
193
- },
194
- },
174
+ get texturesByteLength() {
175
+ return 0;
176
+ }
195
177
 
196
178
  /**
197
179
  * Part of the {@link Cesium3DTileContent} interface. <code>Multiple3DTileContent</code>
198
180
  * always returns <code>0</code>. Instead call <code>batchTableByteLength</code> for a specific inner content.
199
181
  *
200
- * @memberof Multiple3DTileContent.prototype
201
182
  *
202
183
  * @type {number}
203
184
  * @readonly
204
185
  *
205
186
  * @private
206
187
  */
207
- batchTableByteLength: {
208
- get: function () {
209
- return 0;
210
- },
211
- },
212
-
213
- innerContents: {
214
- get: function () {
215
- return this._contents;
216
- },
217
- },
188
+ get batchTableByteLength() {
189
+ return 0;
190
+ }
191
+
192
+ get innerContents() {
193
+ return this._contents;
194
+ }
218
195
 
219
196
  /**
220
197
  * Returns true when the tile's content is ready to render; otherwise false
221
198
  *
222
- * @memberof Multiple3DTileContent.prototype
223
199
  *
224
200
  * @type {boolean}
225
201
  * @readonly
226
202
  * @private
227
203
  */
228
- ready: {
229
- get: function () {
230
- if (!this._contentsCreated) {
231
- return false;
232
- }
204
+ get ready() {
205
+ if (!this._contentsCreated) {
206
+ return false;
207
+ }
233
208
 
234
- return this._ready;
235
- },
236
- },
209
+ return this._ready;
210
+ }
237
211
 
238
- tileset: {
239
- get: function () {
240
- return this._tileset;
241
- },
242
- },
212
+ get tileset() {
213
+ return this._tileset;
214
+ }
243
215
 
244
- tile: {
245
- get: function () {
246
- return this._tile;
247
- },
248
- },
216
+ get tile() {
217
+ return this._tile;
218
+ }
249
219
 
250
220
  /**
251
221
  * Part of the {@link Cesium3DTileContent} interface.
252
222
  * Unlike other content types, <code>Multiple3DTileContent</code> does not
253
223
  * have a single URL, so this returns undefined.
254
- * @memberof Multiple3DTileContent.prototype
255
224
  *
256
225
  * @type {string}
257
226
  * @readonly
258
227
  * @private
259
228
  */
260
- url: {
261
- get: function () {
262
- return undefined;
263
- },
264
- },
229
+ get url() {
230
+ return undefined;
231
+ }
265
232
 
266
233
  /**
267
234
  * Part of the {@link Cesium3DTileContent} interface. <code>Multiple3DTileContent</code>
268
235
  * always returns <code>undefined</code>. Instead call <code>metadata</code> for a specific inner content.
269
- * @memberof Multiple3DTileContent.prototype
270
236
  * @private
271
237
  */
272
- metadata: {
273
- get: function () {
274
- return undefined;
275
- },
276
- set: function () {
277
- //>>includeStart('debug', pragmas.debug);
278
- throw new DeveloperError("Multiple3DTileContent cannot have metadata");
279
- //>>includeEnd('debug');
280
- },
281
- },
238
+ get metadata() {
239
+ return undefined;
240
+ }
241
+
242
+ set metadata(_) {
243
+ //>>includeStart('debug', pragmas.debug);
244
+ throw new DeveloperError("Multiple3DTileContent cannot have metadata");
245
+ //>>includeEnd('debug');
246
+ }
282
247
 
283
248
  /**
284
249
  * Part of the {@link Cesium3DTileContent} interface. <code>Multiple3DTileContent</code>
285
250
  * always returns <code>undefined</code>. Instead call <code>batchTable</code> for a specific inner content.
286
- * @memberof Multiple3DTileContent.prototype
287
251
  * @private
288
252
  */
289
- batchTable: {
290
- get: function () {
291
- return undefined;
292
- },
293
- },
253
+ get batchTable() {
254
+ return undefined;
255
+ }
294
256
 
295
257
  /**
296
258
  * Part of the {@link Cesium3DTileContent} interface. <code>Multiple3DTileContent</code>
297
259
  * always returns <code>undefined</code>. Instead call <code>group</code> for a specific inner content.
298
- * @memberof Multiple3DTileContent.prototype
299
260
  * @private
300
261
  */
301
- group: {
302
- get: function () {
303
- return undefined;
304
- },
305
- set: function () {
306
- //>>includeStart('debug', pragmas.debug);
307
- throw new DeveloperError(
308
- "Multiple3DTileContent cannot have group metadata",
309
- );
310
- //>>includeEnd('debug');
311
- },
312
- },
262
+ get group() {
263
+ return undefined;
264
+ }
265
+
266
+ set group(_) {
267
+ //>>includeStart('debug', pragmas.debug);
268
+ throw new DeveloperError(
269
+ "Multiple3DTileContent cannot have group metadata",
270
+ );
271
+ //>>includeEnd('debug');
272
+ }
313
273
 
314
274
  /**
315
275
  * Get an array of the inner content URLs, regardless of whether they've
316
276
  * been fetched or not. This is intended for use with
317
277
  * {@link Cesium3DTileset#debugShowUrl}.
318
- * @memberof Multiple3DTileContent.prototype
319
278
  *
320
279
  * @type {string[]}
321
280
  * @readonly
322
281
  * @private
323
282
  */
324
- innerContentUrls: {
325
- get: function () {
326
- return this._innerContentHeaders.map(function (contentHeader) {
327
- return contentHeader.uri;
328
- });
329
- },
330
- },
331
- });
283
+ get innerContentUrls() {
284
+ return this._innerContentHeaders.map(function (contentHeader) {
285
+ return contentHeader.uri;
286
+ });
287
+ }
288
+
289
+ /**
290
+ * Request the inner contents of this <code>Multiple3DTileContent</code>. This must be called once a frame until
291
+ * {@link Multiple3DTileContent#contentsFetchedPromise} is defined. This promise
292
+ * becomes available as soon as all requests are scheduled.
293
+ * <p>
294
+ * This method also updates the tile statistics' pending request count if the
295
+ * requests are successfully scheduled.
296
+ * </p>
297
+ *
298
+ * @return {Promise<void>|undefined} A promise that resolves when the request completes, or undefined if there is no request needed, or the request cannot be scheduled.
299
+ * @private
300
+ */
301
+ requestInnerContents() {
302
+ // It's possible for these promises to leak content array buffers if the
303
+ // camera moves before they all are scheduled. To prevent this leak, check
304
+ // if we can schedule all the requests at once. If not, no requests are
305
+ // scheduled
306
+ if (!canScheduleAllRequests(this._serverKeys)) {
307
+ this.tileset.statistics.numberOfAttemptedRequests +=
308
+ this._serverKeys.length;
309
+ return;
310
+ }
311
+
312
+ const contentHeaders = this._innerContentHeaders;
313
+ updatePendingRequests(this, contentHeaders.length);
314
+
315
+ const originalCancelCount = this._cancelCount;
316
+ for (let i = 0; i < contentHeaders.length; i++) {
317
+ // The cancel count is needed to avoid a race condition where a content
318
+ // is canceled multiple times.
319
+ this._arrayFetchPromises[i] = requestInnerContent(
320
+ this,
321
+ i,
322
+ originalCancelCount,
323
+ this._tile._contentState,
324
+ );
325
+ }
326
+
327
+ return createInnerContents(this);
328
+ }
329
+
330
+ /**
331
+ * Cancel all requests for inner contents. This is called by the tile
332
+ * when a tile goes out of view.
333
+ *
334
+ * @private
335
+ */
336
+ cancelRequests() {
337
+ for (let i = 0; i < this._requests.length; i++) {
338
+ const request = this._requests[i];
339
+ if (defined(request)) {
340
+ request.cancel();
341
+ }
342
+ }
343
+ }
344
+
345
+ /**
346
+ * Part of the {@link Cesium3DTileContent} interface. <code>Multiple3DTileContent</code>
347
+ * always returns <code>false</code>. Instead call <code>hasProperty</code> for a specific inner content
348
+ * @private
349
+ */
350
+ hasProperty(batchId, name) {
351
+ return false;
352
+ }
353
+
354
+ /**
355
+ * Part of the {@link Cesium3DTileContent} interface. <code>Multiple3DTileContent</code>
356
+ * always returns <code>undefined</code>. Instead call <code>getFeature</code> for a specific inner content
357
+ * @private
358
+ */
359
+ getFeature(batchId) {
360
+ return undefined;
361
+ }
362
+
363
+ applyDebugSettings(enabled, color) {
364
+ const contents = this._contents;
365
+ const length = contents.length;
366
+ for (let i = 0; i < length; ++i) {
367
+ contents[i].applyDebugSettings(enabled, color);
368
+ }
369
+ }
370
+
371
+ applyStyle(style) {
372
+ const contents = this._contents;
373
+ const length = contents.length;
374
+ for (let i = 0; i < length; ++i) {
375
+ contents[i].applyStyle(style);
376
+ }
377
+ }
378
+
379
+ update(tileset, frameState) {
380
+ const contents = this._contents;
381
+ const length = contents.length;
382
+ let ready = true;
383
+ for (let i = 0; i < length; ++i) {
384
+ contents[i].update(tileset, frameState);
385
+ ready = ready && contents[i].ready;
386
+ }
387
+
388
+ if (!this._ready && ready) {
389
+ this._ready = true;
390
+ }
391
+ }
392
+
393
+ /**
394
+ * Find an intersection between a ray and the tile content surface that was rendered. The ray must be given in world coordinates.
395
+ *
396
+ * @param {Ray} ray The ray to test for intersection.
397
+ * @param {FrameState} frameState The frame state.
398
+ * @param {Cartesian3|undefined} [result] The intersection or <code>undefined</code> if none was found.
399
+ * @returns {Cartesian3|undefined} The intersection or <code>undefined</code> if none was found.
400
+ *
401
+ * @private
402
+ */
403
+ pick(ray, frameState, result) {
404
+ if (!this._ready) {
405
+ return undefined;
406
+ }
407
+
408
+ let intersection;
409
+ let minDistance = Number.POSITIVE_INFINITY;
410
+ const contents = this._contents;
411
+ const length = contents.length;
412
+
413
+ for (let i = 0; i < length; ++i) {
414
+ const candidate = contents[i].pick(ray, frameState, result);
415
+
416
+ if (!defined(candidate)) {
417
+ continue;
418
+ }
419
+
420
+ const distance = Cartesian3.distance(ray.origin, candidate);
421
+ if (distance < minDistance) {
422
+ intersection = candidate;
423
+ minDistance = distance;
424
+ }
425
+ }
426
+
427
+ if (!defined(intersection)) {
428
+ return undefined;
429
+ }
430
+
431
+ return result;
432
+ }
433
+
434
+ isDestroyed() {
435
+ return false;
436
+ }
437
+
438
+ destroy() {
439
+ const contents = this._contents;
440
+ const length = contents.length;
441
+ for (let i = 0; i < length; ++i) {
442
+ contents[i].destroy();
443
+ }
444
+ return destroyObject(this);
445
+ }
446
+ }
332
447
 
333
448
  function updatePendingRequests(multipleContents, deltaRequestCount) {
334
449
  multipleContents._requestsInFlight += deltaRequestCount;
@@ -353,47 +468,6 @@ function cancelPendingRequests(multipleContents, originalContentState) {
353
468
  multipleContents._arrayFetchPromises = new Array(contentCount);
354
469
  }
355
470
 
356
- /**
357
- * Request the inner contents of this <code>Multiple3DTileContent</code>. This must be called once a frame until
358
- * {@link Multiple3DTileContent#contentsFetchedPromise} is defined. This promise
359
- * becomes available as soon as all requests are scheduled.
360
- * <p>
361
- * This method also updates the tile statistics' pending request count if the
362
- * requests are successfully scheduled.
363
- * </p>
364
- *
365
- * @return {Promise<void>|undefined} A promise that resolves when the request completes, or undefined if there is no request needed, or the request cannot be scheduled.
366
- * @private
367
- */
368
- Multiple3DTileContent.prototype.requestInnerContents = function () {
369
- // It's possible for these promises to leak content array buffers if the
370
- // camera moves before they all are scheduled. To prevent this leak, check
371
- // if we can schedule all the requests at once. If not, no requests are
372
- // scheduled
373
- if (!canScheduleAllRequests(this._serverKeys)) {
374
- this.tileset.statistics.numberOfAttemptedRequests +=
375
- this._serverKeys.length;
376
- return;
377
- }
378
-
379
- const contentHeaders = this._innerContentHeaders;
380
- updatePendingRequests(this, contentHeaders.length);
381
-
382
- const originalCancelCount = this._cancelCount;
383
- for (let i = 0; i < contentHeaders.length; i++) {
384
- // The cancel count is needed to avoid a race condition where a content
385
- // is canceled multiple times.
386
- this._arrayFetchPromises[i] = requestInnerContent(
387
- this,
388
- i,
389
- originalCancelCount,
390
- this._tile._contentState,
391
- );
392
- }
393
-
394
- return createInnerContents(this);
395
- };
396
-
397
471
  /**
398
472
  * Check if all requests for inner contents can be scheduled at once. This is slower, but it avoids a potential memory leak.
399
473
  * @param {string[]} serverKeys The server keys for all of the inner contents
@@ -602,121 +676,4 @@ function handleInnerContentFailed(multipleContents, index, error) {
602
676
  }
603
677
  }
604
678
 
605
- /**
606
- * Cancel all requests for inner contents. This is called by the tile
607
- * when a tile goes out of view.
608
- *
609
- * @private
610
- */
611
- Multiple3DTileContent.prototype.cancelRequests = function () {
612
- for (let i = 0; i < this._requests.length; i++) {
613
- const request = this._requests[i];
614
- if (defined(request)) {
615
- request.cancel();
616
- }
617
- }
618
- };
619
-
620
- /**
621
- * Part of the {@link Cesium3DTileContent} interface. <code>Multiple3DTileContent</code>
622
- * always returns <code>false</code>. Instead call <code>hasProperty</code> for a specific inner content
623
- * @private
624
- */
625
- Multiple3DTileContent.prototype.hasProperty = function (batchId, name) {
626
- return false;
627
- };
628
-
629
- /**
630
- * Part of the {@link Cesium3DTileContent} interface. <code>Multiple3DTileContent</code>
631
- * always returns <code>undefined</code>. Instead call <code>getFeature</code> for a specific inner content
632
- * @private
633
- */
634
- Multiple3DTileContent.prototype.getFeature = function (batchId) {
635
- return undefined;
636
- };
637
-
638
- Multiple3DTileContent.prototype.applyDebugSettings = function (enabled, color) {
639
- const contents = this._contents;
640
- const length = contents.length;
641
- for (let i = 0; i < length; ++i) {
642
- contents[i].applyDebugSettings(enabled, color);
643
- }
644
- };
645
-
646
- Multiple3DTileContent.prototype.applyStyle = function (style) {
647
- const contents = this._contents;
648
- const length = contents.length;
649
- for (let i = 0; i < length; ++i) {
650
- contents[i].applyStyle(style);
651
- }
652
- };
653
-
654
- Multiple3DTileContent.prototype.update = function (tileset, frameState) {
655
- const contents = this._contents;
656
- const length = contents.length;
657
- let ready = true;
658
- for (let i = 0; i < length; ++i) {
659
- contents[i].update(tileset, frameState);
660
- ready = ready && contents[i].ready;
661
- }
662
-
663
- if (!this._ready && ready) {
664
- this._ready = true;
665
- }
666
- };
667
-
668
- /**
669
- * Find an intersection between a ray and the tile content surface that was rendered. The ray must be given in world coordinates.
670
- *
671
- * @param {Ray} ray The ray to test for intersection.
672
- * @param {FrameState} frameState The frame state.
673
- * @param {Cartesian3|undefined} [result] The intersection or <code>undefined</code> if none was found.
674
- * @returns {Cartesian3|undefined} The intersection or <code>undefined</code> if none was found.
675
- *
676
- * @private
677
- */
678
- Multiple3DTileContent.prototype.pick = function (ray, frameState, result) {
679
- if (!this._ready) {
680
- return undefined;
681
- }
682
-
683
- let intersection;
684
- let minDistance = Number.POSITIVE_INFINITY;
685
- const contents = this._contents;
686
- const length = contents.length;
687
-
688
- for (let i = 0; i < length; ++i) {
689
- const candidate = contents[i].pick(ray, frameState, result);
690
-
691
- if (!defined(candidate)) {
692
- continue;
693
- }
694
-
695
- const distance = Cartesian3.distance(ray.origin, candidate);
696
- if (distance < minDistance) {
697
- intersection = candidate;
698
- minDistance = distance;
699
- }
700
- }
701
-
702
- if (!defined(intersection)) {
703
- return undefined;
704
- }
705
-
706
- return result;
707
- };
708
-
709
- Multiple3DTileContent.prototype.isDestroyed = function () {
710
- return false;
711
- };
712
-
713
- Multiple3DTileContent.prototype.destroy = function () {
714
- const contents = this._contents;
715
- const length = contents.length;
716
- for (let i = 0; i < length; ++i) {
717
- contents[i].destroy();
718
- }
719
- return destroyObject(this);
720
- };
721
-
722
679
  export default Multiple3DTileContent;