@cesium/engine 15.0.0 → 17.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 (558) hide show
  1. package/Build/Workers/{chunk-XED3RXKO.js → chunk-236N6BJN.js} +4 -4
  2. package/Build/Workers/{chunk-TU6ZXHVU.js → chunk-2BJXFXD7.js} +46 -42
  3. package/Build/Workers/{chunk-3LHBH4TC.js → chunk-37PA7GZW.js} +7 -7
  4. package/Build/Workers/{chunk-FMZ5CX6V.js → chunk-4BGKMM7J.js} +1 -1
  5. package/Build/Workers/{chunk-L5SO4Y5V.js → chunk-4TIR5UPL.js} +1 -1
  6. package/Build/Workers/{chunk-NAGMYRDW.js → chunk-5PC577K7.js} +17 -20
  7. package/Build/Workers/{chunk-XDHM4G3P.js → chunk-5RPUEFSA.js} +129 -146
  8. package/Build/Workers/{chunk-ZVDLC3T4.js → chunk-5YEFZMMM.js} +25 -30
  9. package/Build/Workers/{chunk-VMVPONIV.js → chunk-77MDEA47.js} +5 -5
  10. package/Build/Workers/{chunk-QTEX3Y4V.js → chunk-7IIMO7ZZ.js} +33 -41
  11. package/Build/Workers/{chunk-Q5BHMNKU.js → chunk-7PHT4JHA.js} +27 -29
  12. package/Build/Workers/{chunk-25TOENEE.js → chunk-C5DCX2YQ.js} +9 -12
  13. package/Build/Workers/{chunk-B2Y4ZS6X.js → chunk-CAKU6ZPR.js} +9 -12
  14. package/Build/Workers/{chunk-RRN6LRDX.js → chunk-CBFJVM6I.js} +26 -28
  15. package/Build/Workers/{chunk-GGV2XJHE.js → chunk-CC2WKHIW.js} +13 -16
  16. package/Build/Workers/{chunk-K5G2WELR.js → chunk-CQMXZF4A.js} +12 -17
  17. package/Build/Workers/{chunk-67ONR44K.js → chunk-DRMXU674.js} +7 -10
  18. package/Build/Workers/{chunk-3LZF23RY.js → chunk-E7SMO47Q.js} +7 -10
  19. package/Build/Workers/{chunk-PUTA3AE2.js → chunk-G6JUXZUO.js} +4 -4
  20. package/Build/Workers/{chunk-CHX2K5AC.js → chunk-GO3RZX2R.js} +14 -17
  21. package/Build/Workers/{chunk-7ITUZTFH.js → chunk-HBNWBMAM.js} +1 -1
  22. package/Build/Workers/{chunk-3JZGPJMZ.js → chunk-HGEGZ67N.js} +6 -6
  23. package/Build/Workers/{chunk-GK4QU6QI.js → chunk-IFIS4CVK.js} +2 -2
  24. package/Build/Workers/{chunk-DYJHEP3B.js → chunk-IKDQX7DY.js} +6 -12
  25. package/Build/Workers/{chunk-FRAWHNSR.js → chunk-J2HTPGC7.js} +2 -2
  26. package/Build/Workers/{chunk-YNYCGTQH.js → chunk-K5JTWJPE.js} +5 -8
  27. package/Build/Workers/{chunk-6EDBC234.js → chunk-KE45DUDH.js} +18 -20
  28. package/Build/Workers/{chunk-TFCOEX3W.js → chunk-LPGOAMYH.js} +2 -2
  29. package/Build/Workers/{chunk-WPXU45PH.js → chunk-LVGYWPEX.js} +4 -4
  30. package/Build/Workers/{chunk-B2UQN3DH.js → chunk-MAIKDIBS.js} +6 -6
  31. package/Build/Workers/{chunk-MWJW37I7.js → chunk-MS5NWDHH.js} +2 -2
  32. package/Build/Workers/{chunk-2AVIUB5H.js → chunk-NZSBSY5K.js} +2 -2
  33. package/Build/Workers/{chunk-OYO6TKMU.js → chunk-OBHLT34A.js} +7 -7
  34. package/Build/Workers/{chunk-RO2Z3LCR.js → chunk-P2N5IDWU.js} +21 -23
  35. package/Build/Workers/{chunk-BD2TPFGC.js → chunk-P57PR3WM.js} +9 -11
  36. package/Build/Workers/{chunk-HYPB7FAV.js → chunk-PM4Q36WX.js} +15 -24
  37. package/Build/Workers/{chunk-CJGVEABL.js → chunk-PS3OKVOQ.js} +16 -19
  38. package/Build/Workers/{chunk-SLIA3GQP.js → chunk-QJTIOB2Z.js} +19 -22
  39. package/Build/Workers/{chunk-EZNAJPP5.js → chunk-QUFN3GEO.js} +18 -21
  40. package/Build/Workers/{chunk-ARVZCY6X.js → chunk-RX65FA7X.js} +7 -7
  41. package/Build/Workers/{chunk-E3H7AVMK.js → chunk-SQKTLDSD.js} +39 -41
  42. package/Build/Workers/{chunk-Z4SI54EB.js → chunk-SSLK4U3V.js} +14 -14
  43. package/Build/Workers/{chunk-IGINOLDX.js → chunk-UC7KH56Y.js} +6 -9
  44. package/Build/Workers/{chunk-VJ2PDF64.js → chunk-UFV3YUIN.js} +6 -9
  45. package/Build/Workers/{chunk-LCMJQVIF.js → chunk-UX5JWAC7.js} +17 -26
  46. package/Build/Workers/{chunk-ISQSYLZY.js → chunk-UZ6KXWCA.js} +4 -4
  47. package/Build/Workers/{chunk-JZAMRL5I.js → chunk-VXAKU6EV.js} +34 -36
  48. package/Build/Workers/{chunk-6EV4VOET.js → chunk-WP3IJYLC.js} +16 -19
  49. package/Build/Workers/{chunk-5S2B46UQ.js → chunk-XYGBWBD5.js} +1 -1
  50. package/Build/Workers/{chunk-F7ZI463G.js → chunk-YE6MDFDA.js} +21 -23
  51. package/Build/Workers/{chunk-I4HO2ED2.js → chunk-ZTBZMRQT.js} +9 -12
  52. package/Build/Workers/combineGeometry.js +21 -22
  53. package/Build/Workers/createBoxGeometry.js +15 -16
  54. package/Build/Workers/createBoxOutlineGeometry.js +20 -25
  55. package/Build/Workers/createCircleGeometry.js +26 -28
  56. package/Build/Workers/createCircleOutlineGeometry.js +19 -21
  57. package/Build/Workers/createCoplanarPolygonGeometry.js +38 -42
  58. package/Build/Workers/createCoplanarPolygonOutlineGeometry.js +34 -36
  59. package/Build/Workers/createCorridorGeometry.js +42 -49
  60. package/Build/Workers/createCorridorOutlineGeometry.js +36 -43
  61. package/Build/Workers/createCylinderGeometry.js +17 -18
  62. package/Build/Workers/createCylinderOutlineGeometry.js +23 -25
  63. package/Build/Workers/createEllipseGeometry.js +23 -24
  64. package/Build/Workers/createEllipseOutlineGeometry.js +16 -17
  65. package/Build/Workers/createEllipsoidGeometry.js +16 -17
  66. package/Build/Workers/createEllipsoidOutlineGeometry.js +15 -16
  67. package/Build/Workers/createFrustumGeometry.js +15 -16
  68. package/Build/Workers/createFrustumOutlineGeometry.js +18 -21
  69. package/Build/Workers/createGeometry.js +22 -25
  70. package/Build/Workers/createGroundPolylineGeometry.js +34 -42
  71. package/Build/Workers/createPlaneGeometry.js +19 -21
  72. package/Build/Workers/createPlaneOutlineGeometry.js +12 -13
  73. package/Build/Workers/createPolygonGeometry.js +45 -50
  74. package/Build/Workers/createPolygonOutlineGeometry.js +39 -44
  75. package/Build/Workers/createPolylineGeometry.js +33 -40
  76. package/Build/Workers/createPolylineVolumeGeometry.js +37 -44
  77. package/Build/Workers/createPolylineVolumeOutlineGeometry.js +32 -39
  78. package/Build/Workers/createRectangleGeometry.js +41 -51
  79. package/Build/Workers/createRectangleOutlineGeometry.js +28 -33
  80. package/Build/Workers/createSimplePolylineGeometry.js +29 -34
  81. package/Build/Workers/createSphereGeometry.js +17 -20
  82. package/Build/Workers/createSphereOutlineGeometry.js +16 -19
  83. package/Build/Workers/createTaskProcessorWorker.js +3 -3
  84. package/Build/Workers/createVectorTileClampedPolylines.js +12 -13
  85. package/Build/Workers/createVectorTileGeometries.js +21 -22
  86. package/Build/Workers/createVectorTilePoints.js +11 -12
  87. package/Build/Workers/createVectorTilePolygons.js +19 -20
  88. package/Build/Workers/createVectorTilePolylines.js +12 -13
  89. package/Build/Workers/createVerticesFromGoogleEarthEnterpriseBuffer.js +20 -23
  90. package/Build/Workers/createVerticesFromHeightmap.js +31 -58
  91. package/Build/Workers/createVerticesFromQuantizedTerrainMesh.js +17 -18
  92. package/Build/Workers/createWallGeometry.js +30 -35
  93. package/Build/Workers/createWallOutlineGeometry.js +28 -33
  94. package/Build/Workers/decodeDraco.js +10 -11
  95. package/Build/Workers/decodeGoogleEarthEnterprisePacket.js +5 -5
  96. package/Build/Workers/decodeI3S.js +10 -16
  97. package/Build/Workers/transcodeKTX2.js +7 -10
  98. package/Build/Workers/transferTypedArrayTest.js +1 -1
  99. package/Build/Workers/upsampleQuantizedTerrainMesh.js +19 -20
  100. package/Source/Core/ApproximateTerrainHeights.js +2 -3
  101. package/Source/Core/ArcGISTiledElevationTerrainProvider.js +6 -6
  102. package/Source/Core/AxisAlignedBoundingBox.js +2 -3
  103. package/Source/Core/BingMapsGeocoderService.js +2 -2
  104. package/Source/Core/BoundingRectangle.js +7 -8
  105. package/Source/Core/BoundingSphere.js +10 -11
  106. package/Source/Core/BoxGeometry.js +7 -7
  107. package/Source/Core/BoxOutlineGeometry.js +7 -9
  108. package/Source/Core/Cartesian2.js +4 -5
  109. package/Source/Core/Cartesian3.js +7 -8
  110. package/Source/Core/Cartesian4.js +6 -7
  111. package/Source/Core/Cartographic.js +5 -6
  112. package/Source/Core/CatmullRomSpline.js +2 -2
  113. package/Source/Core/CesiumTerrainProvider.js +11 -14
  114. package/Source/Core/Check.d.ts +4 -1
  115. package/Source/Core/CircleGeometry.js +2 -2
  116. package/Source/Core/CircleOutlineGeometry.js +2 -2
  117. package/Source/Core/Clock.js +7 -10
  118. package/Source/Core/Color.js +28 -28
  119. package/Source/Core/ColorGeometryInstanceAttribute.js +4 -5
  120. package/Source/Core/ComponentDatatype.js +4 -6
  121. package/Source/Core/CoplanarPolygonGeometry.js +8 -10
  122. package/Source/Core/CoplanarPolygonOutlineGeometry.js +5 -5
  123. package/Source/Core/CorridorGeometry.js +15 -20
  124. package/Source/Core/CorridorOutlineGeometry.js +10 -15
  125. package/Source/Core/Credit.js +1 -2
  126. package/Source/Core/CullingVolume.js +1 -2
  127. package/Source/Core/CustomHeightmapTerrainProvider.js +3 -3
  128. package/Source/Core/CylinderGeometry.js +7 -7
  129. package/Source/Core/CylinderOutlineGeometry.js +7 -7
  130. package/Source/Core/DistanceDisplayCondition.js +4 -5
  131. package/Source/Core/DistanceDisplayConditionGeometryInstanceAttribute.js +2 -3
  132. package/Source/Core/EarthOrientationParameters.js +4 -4
  133. package/Source/Core/EllipseGeometry.js +17 -23
  134. package/Source/Core/EllipseOutlineGeometry.js +12 -15
  135. package/Source/Core/Ellipsoid.js +7 -8
  136. package/Source/Core/EllipsoidGeodesic.js +1 -2
  137. package/Source/Core/EllipsoidGeometry.js +15 -15
  138. package/Source/Core/EllipsoidOutlineGeometry.js +15 -15
  139. package/Source/Core/EllipsoidRhumbLine.js +2 -3
  140. package/Source/Core/EllipsoidTangentPlane.js +1 -2
  141. package/Source/Core/EllipsoidTerrainProvider.js +4 -4
  142. package/Source/Core/EllipsoidalOccluder.js +2 -3
  143. package/Source/Core/FeatureDetection.js +1 -2
  144. package/Source/Core/Frozen.js +24 -0
  145. package/Source/Core/FrustumGeometry.js +7 -8
  146. package/Source/Core/FrustumOutlineGeometry.js +3 -4
  147. package/Source/Core/GeographicProjection.js +1 -2
  148. package/Source/Core/GeographicTilingScheme.js +6 -12
  149. package/Source/Core/Geometry.js +4 -7
  150. package/Source/Core/GeometryAttribute.js +3 -3
  151. package/Source/Core/GeometryAttributes.js +2 -2
  152. package/Source/Core/GeometryInstance.js +4 -6
  153. package/Source/Core/GeometryInstanceAttribute.js +3 -3
  154. package/Source/Core/GeometryPipeline.js +3 -4
  155. package/Source/Core/GoogleEarthEnterpriseMetadata.js +13 -24
  156. package/Source/Core/GoogleEarthEnterpriseTerrainData.js +9 -12
  157. package/Source/Core/GoogleEarthEnterpriseTerrainProvider.js +3 -3
  158. package/Source/Core/GoogleGeocoderService.js +2 -2
  159. package/Source/Core/GregorianDate.js +8 -9
  160. package/Source/Core/GroundPolylineGeometry.js +8 -8
  161. package/Source/Core/HeadingPitchRange.js +3 -4
  162. package/Source/Core/HeadingPitchRoll.js +3 -4
  163. package/Source/Core/Heap.js +3 -4
  164. package/Source/Core/HeightmapTerrainData.js +22 -38
  165. package/Source/Core/HeightmapTessellator.js +21 -37
  166. package/Source/Core/HermitePolynomialApproximation.js +1 -2
  167. package/Source/Core/HermiteSpline.js +5 -5
  168. package/Source/Core/ITwinPlatform.js +72 -15
  169. package/Source/Core/Iau2006XysData.js +8 -10
  170. package/Source/Core/IntersectionTests.js +1 -2
  171. package/Source/Core/Interval.js +2 -4
  172. package/Source/Core/Ion.js +1 -1
  173. package/Source/Core/IonGeocoderService.js +6 -10
  174. package/Source/Core/IonResource.js +6 -6
  175. package/Source/Core/JulianDate.js +11 -12
  176. package/Source/Core/LinearSpline.js +2 -2
  177. package/Source/Core/ManagedArray.js +2 -3
  178. package/Source/Core/Math.js +36 -27
  179. package/Source/Core/Matrix2.js +7 -8
  180. package/Source/Core/Matrix3.js +12 -13
  181. package/Source/Core/Matrix4.js +28 -28
  182. package/Source/Core/MorphWeightSpline.js +2 -2
  183. package/Source/Core/NearFarScalar.js +6 -7
  184. package/Source/Core/Occluder.js +1 -2
  185. package/Source/Core/OffsetGeometryInstanceAttribute.js +3 -4
  186. package/Source/Core/OpenCageGeocoderService.js +1 -2
  187. package/Source/Core/OrientedBoundingBox.js +7 -8
  188. package/Source/Core/OrthographicFrustum.js +6 -6
  189. package/Source/Core/OrthographicOffCenterFrustum.js +4 -4
  190. package/Source/Core/PerspectiveFrustum.js +8 -8
  191. package/Source/Core/PerspectiveOffCenterFrustum.js +4 -4
  192. package/Source/Core/PlaneGeometry.js +5 -5
  193. package/Source/Core/PolygonGeometry.js +17 -19
  194. package/Source/Core/PolygonGeometryLibrary.js +1 -2
  195. package/Source/Core/PolygonOutlineGeometry.js +11 -14
  196. package/Source/Core/PolygonPipeline.js +5 -6
  197. package/Source/Core/PolylineGeometry.js +10 -15
  198. package/Source/Core/PolylinePipeline.js +7 -14
  199. package/Source/Core/PolylineVolumeGeometry.js +8 -13
  200. package/Source/Core/PolylineVolumeOutlineGeometry.js +7 -12
  201. package/Source/Core/QuantizedMeshTerrainData.js +12 -16
  202. package/Source/Core/Quaternion.js +7 -8
  203. package/Source/Core/QuaternionSpline.js +2 -2
  204. package/Source/Core/Ray.js +2 -3
  205. package/Source/Core/Rectangle.js +18 -19
  206. package/Source/Core/RectangleGeometry.js +17 -25
  207. package/Source/Core/RectangleGeometryLibrary.js +1 -1
  208. package/Source/Core/RectangleOutlineGeometry.js +11 -14
  209. package/Source/Core/Request.js +6 -6
  210. package/Source/Core/RequestScheduler.js +4 -6
  211. package/Source/Core/Resource.js +13 -16
  212. package/Source/Core/S2Cell.js +2 -3
  213. package/Source/Core/ScreenSpaceEventHandler.js +1 -2
  214. package/Source/Core/ShowGeometryInstanceAttribute.js +1 -2
  215. package/Source/Core/Simon1994PlanetaryPositions.js +9 -9
  216. package/Source/Core/SimplePolylineGeometry.js +8 -11
  217. package/Source/Core/SphereGeometry.js +1 -2
  218. package/Source/Core/SphereOutlineGeometry.js +1 -2
  219. package/Source/Core/Spherical.js +4 -5
  220. package/Source/Core/Spline.js +1 -2
  221. package/Source/Core/SteppedSpline.js +2 -2
  222. package/Source/Core/TaskProcessor.js +2 -9
  223. package/Source/Core/TerrainData.js +1 -1
  224. package/Source/Core/TerrainEncoding.js +4 -11
  225. package/Source/Core/TerrainMesh.js +1 -3
  226. package/Source/Core/TerrainProvider.js +1 -1
  227. package/Source/Core/TileProviderError.js +1 -2
  228. package/Source/Core/TimeInterval.js +7 -7
  229. package/Source/Core/TimeIntervalCollection.js +7 -7
  230. package/Source/Core/Tipsify.js +5 -5
  231. package/Source/Core/Transforms.js +10 -15
  232. package/Source/Core/TranslationRotationScale.js +3 -6
  233. package/Source/Core/VRTheWorldTerrainProvider.js +5 -5
  234. package/Source/Core/VertexFormat.js +10 -10
  235. package/Source/Core/VerticalExaggeration.js +1 -1
  236. package/Source/Core/VideoSynchronizer.js +6 -6
  237. package/Source/Core/WallGeometry.js +8 -11
  238. package/Source/Core/WallOutlineGeometry.js +7 -10
  239. package/Source/Core/WebMercatorProjection.js +1 -2
  240. package/Source/Core/WebMercatorTilingScheme.js +5 -11
  241. package/Source/Core/arrayRemoveDuplicates.js +1 -2
  242. package/Source/Core/clone.js +1 -3
  243. package/Source/Core/combine.js +1 -2
  244. package/Source/Core/createWorldBathymetryAsync.js +3 -3
  245. package/Source/Core/createWorldTerrainAsync.js +4 -4
  246. package/Source/Core/defaultValue.js +20 -1
  247. package/Source/Core/destroyObject.js +1 -5
  248. package/Source/Core/getAbsoluteUri.js +1 -2
  249. package/Source/Core/getMagic.js +1 -2
  250. package/Source/Core/getStringFromTypedArray.js +2 -3
  251. package/Source/Core/loadImageFromTypedArray.js +2 -6
  252. package/Source/Core/oneTimeWarning.js +1 -2
  253. package/Source/Core/writeTextToCanvas.js +10 -13
  254. package/Source/DataSources/BillboardGraphics.js +27 -53
  255. package/Source/DataSources/BoxGraphics.js +13 -18
  256. package/Source/DataSources/CallbackPositionProperty.js +1 -2
  257. package/Source/DataSources/Cesium3DTilesetGraphics.js +6 -8
  258. package/Source/DataSources/CheckerboardMaterialProperty.js +2 -2
  259. package/Source/DataSources/CompositePositionProperty.js +1 -2
  260. package/Source/DataSources/ConstantPositionProperty.js +1 -2
  261. package/Source/DataSources/CorridorGraphics.js +23 -35
  262. package/Source/DataSources/CylinderGraphics.js +18 -25
  263. package/Source/DataSources/CzmlDataSource.js +34 -60
  264. package/Source/DataSources/DataSourceClock.js +12 -13
  265. package/Source/DataSources/DataSourceCollection.js +2 -3
  266. package/Source/DataSources/DataSourceDisplay.js +2 -5
  267. package/Source/DataSources/EllipseGraphics.js +26 -40
  268. package/Source/DataSources/EllipsoidGeometryUpdater.js +1 -2
  269. package/Source/DataSources/EllipsoidGraphics.js +21 -32
  270. package/Source/DataSources/Entity.js +7 -9
  271. package/Source/DataSources/EntityCluster.js +9 -9
  272. package/Source/DataSources/EntityView.js +1 -2
  273. package/Source/DataSources/GeoJsonDataSource.js +12 -12
  274. package/Source/DataSources/GeometryUpdater.js +12 -17
  275. package/Source/DataSources/GeometryVisualizer.js +2 -3
  276. package/Source/DataSources/GpxDataSource.js +4 -7
  277. package/Source/DataSources/GridMaterialProperty.js +2 -2
  278. package/Source/DataSources/GroundGeometryUpdater.js +1 -2
  279. package/Source/DataSources/ImageMaterialProperty.js +2 -2
  280. package/Source/DataSources/KmlDataSource.js +84 -158
  281. package/Source/DataSources/LabelGraphics.js +27 -56
  282. package/Source/DataSources/LabelVisualizer.js +1 -2
  283. package/Source/DataSources/ModelGraphics.js +29 -63
  284. package/Source/DataSources/ModelVisualizer.js +1 -2
  285. package/Source/DataSources/NodeTransformationProperty.js +2 -2
  286. package/Source/DataSources/PathGraphics.js +10 -12
  287. package/Source/DataSources/PlaneGraphics.js +13 -15
  288. package/Source/DataSources/PointGraphics.js +17 -32
  289. package/Source/DataSources/PolygonGraphics.js +28 -45
  290. package/Source/DataSources/PolylineDashMaterialProperty.js +2 -2
  291. package/Source/DataSources/PolylineGeometryUpdater.js +9 -14
  292. package/Source/DataSources/PolylineGlowMaterialProperty.js +2 -2
  293. package/Source/DataSources/PolylineGraphics.js +16 -23
  294. package/Source/DataSources/PolylineOutlineMaterialProperty.js +2 -2
  295. package/Source/DataSources/PolylineVisualizer.js +2 -3
  296. package/Source/DataSources/PolylineVolumeGraphics.js +15 -17
  297. package/Source/DataSources/PositionPropertyArray.js +1 -2
  298. package/Source/DataSources/Property.js +1 -2
  299. package/Source/DataSources/PropertyBag.js +1 -2
  300. package/Source/DataSources/RectangleGraphics.js +23 -35
  301. package/Source/DataSources/Rotation.js +4 -5
  302. package/Source/DataSources/SampledPositionProperty.js +2 -3
  303. package/Source/DataSources/SampledProperty.js +6 -11
  304. package/Source/DataSources/StaticGroundPolylinePerMaterialBatch.js +1 -2
  305. package/Source/DataSources/StripeMaterialProperty.js +2 -2
  306. package/Source/DataSources/TimeIntervalCollectionPositionProperty.js +1 -2
  307. package/Source/DataSources/VelocityOrientationProperty.js +1 -2
  308. package/Source/DataSources/VelocityVectorProperty.js +1 -2
  309. package/Source/DataSources/WallGraphics.js +15 -23
  310. package/Source/DataSources/createPropertyDescriptor.js +2 -3
  311. package/Source/DataSources/exportKml.js +11 -14
  312. package/Source/Renderer/Buffer.js +5 -5
  313. package/Source/Renderer/ClearCommand.js +2 -2
  314. package/Source/Renderer/ComputeCommand.js +3 -3
  315. package/Source/Renderer/Context.js +22 -33
  316. package/Source/Renderer/CubeMap.js +6 -6
  317. package/Source/Renderer/CubeMapFace.js +11 -12
  318. package/Source/Renderer/DrawCommand.js +14 -25
  319. package/Source/Renderer/Framebuffer.js +3 -3
  320. package/Source/Renderer/FramebufferManager.js +25 -39
  321. package/Source/Renderer/MultisampleFramebuffer.js +2 -2
  322. package/Source/Renderer/RenderState.js +63 -92
  323. package/Source/Renderer/Renderbuffer.js +4 -4
  324. package/Source/Renderer/Sampler.js +2 -2
  325. package/Source/Renderer/ShaderBuilder.js +2 -3
  326. package/Source/Renderer/ShaderProgram.js +3 -3
  327. package/Source/Renderer/ShaderSource.js +3 -3
  328. package/Source/Renderer/Texture.js +10 -10
  329. package/Source/Renderer/TextureAtlas.js +4 -4
  330. package/Source/Renderer/UniformState.js +6 -11
  331. package/Source/Renderer/VertexArray.js +14 -23
  332. package/Source/Renderer/VertexArrayFacade.js +7 -11
  333. package/Source/Scene/Appearance.js +4 -4
  334. package/Source/Scene/ArcGisMapServerImageryProvider.js +23 -37
  335. package/Source/Scene/ArcGisMapService.js +1 -1
  336. package/Source/Scene/B3dmParser.js +2 -3
  337. package/Source/Scene/BatchTableHierarchy.js +6 -13
  338. package/Source/Scene/Billboard.js +22 -44
  339. package/Source/Scene/BillboardCollection.js +8 -22
  340. package/Source/Scene/BingMapsImageryProvider.js +6 -6
  341. package/Source/Scene/BoxEmitter.js +1 -2
  342. package/Source/Scene/BufferLoader.js +2 -2
  343. package/Source/Scene/Camera.js +43 -62
  344. package/Source/Scene/CameraFlightPath.js +6 -6
  345. package/Source/Scene/Cesium3DContentGroup.js +2 -2
  346. package/Source/Scene/Cesium3DTile.js +3 -4
  347. package/Source/Scene/Cesium3DTileBatchTable.js +6 -49
  348. package/Source/Scene/Cesium3DTileFeatureTable.js +2 -3
  349. package/Source/Scene/Cesium3DTilePointFeature.js +10 -18
  350. package/Source/Scene/Cesium3DTileStyle.js +4 -7
  351. package/Source/Scene/Cesium3DTilesVoxelProvider.js +57 -34
  352. package/Source/Scene/Cesium3DTileset.js +77 -143
  353. package/Source/Scene/Cesium3DTilesetMetadata.js +3 -3
  354. package/Source/Scene/CircleEmitter.js +2 -3
  355. package/Source/Scene/ClassificationPrimitive.js +15 -26
  356. package/Source/Scene/ClippingPlaneCollection.js +7 -12
  357. package/Source/Scene/ClippingPolygon.js +1 -2
  358. package/Source/Scene/ClippingPolygonCollection.js +4 -4
  359. package/Source/Scene/CloudCollection.js +9 -11
  360. package/Source/Scene/Composite3DTileContent.js +1 -2
  361. package/Source/Scene/ConeEmitter.js +1 -2
  362. package/Source/Scene/ContentMetadata.js +2 -2
  363. package/Source/Scene/CreditDisplay.js +5 -9
  364. package/Source/Scene/CumulusCloud.js +9 -15
  365. package/Source/Scene/DebugAppearance.js +7 -7
  366. package/Source/Scene/DebugCameraPrimitive.js +5 -5
  367. package/Source/Scene/DebugModelMatrixPrimitive.js +6 -8
  368. package/Source/Scene/DepthPlane.js +1 -2
  369. package/Source/Scene/DirectionalLight.js +2 -3
  370. package/Source/Scene/DiscardMissingTileImagePolicy.js +2 -2
  371. package/Source/Scene/DynamicEnvironmentMapManager.js +15 -24
  372. package/Source/Scene/EllipsoidPrimitive.js +11 -19
  373. package/Source/Scene/EllipsoidSurfaceAppearance.js +11 -15
  374. package/Source/Scene/FrameRateMonitor.js +12 -21
  375. package/Source/Scene/FrustumCommands.js +2 -3
  376. package/Source/Scene/Geometry3DTileContent.js +9 -16
  377. package/Source/Scene/Globe.js +3 -4
  378. package/Source/Scene/GlobeSurfaceTileProvider.js +9 -18
  379. package/Source/Scene/GlobeTranslucencyState.js +12 -25
  380. package/Source/Scene/GltfBufferViewLoader.js +4 -4
  381. package/Source/Scene/GltfDracoLoader.js +2 -2
  382. package/Source/Scene/GltfImageLoader.js +2 -2
  383. package/Source/Scene/GltfIndexBufferLoader.js +5 -5
  384. package/Source/Scene/GltfJsonLoader.js +2 -2
  385. package/Source/Scene/GltfLoader.js +17 -30
  386. package/Source/Scene/GltfLoaderUtil.js +11 -11
  387. package/Source/Scene/GltfPipeline/addDefaults.js +37 -64
  388. package/Source/Scene/GltfPipeline/addToArray.js +1 -3
  389. package/Source/Scene/GltfPipeline/moveTechniqueRenderStates.js +2 -5
  390. package/Source/Scene/GltfPipeline/parseGlb.js +1 -5
  391. package/Source/Scene/GltfPipeline/removeUnusedElements.js +1 -2
  392. package/Source/Scene/GltfPipeline/updateVersion.js +28 -49
  393. package/Source/Scene/GltfStructuralMetadataLoader.js +5 -6
  394. package/Source/Scene/GltfTextureLoader.js +3 -3
  395. package/Source/Scene/GltfVertexBufferLoader.js +5 -5
  396. package/Source/Scene/GoogleEarthEnterpriseImageryProvider.js +2 -2
  397. package/Source/Scene/GoogleEarthEnterpriseMapsProvider.js +3 -4
  398. package/Source/Scene/GridImageryProvider.js +10 -13
  399. package/Source/Scene/GroundPolylinePrimitive.js +11 -22
  400. package/Source/Scene/GroundPrimitive.js +13 -24
  401. package/Source/Scene/GroupMetadata.js +2 -2
  402. package/Source/Scene/I3SDataProvider.js +10 -15
  403. package/Source/Scene/I3SNode.js +1 -6
  404. package/Source/Scene/I3SSublayer.js +1 -2
  405. package/Source/Scene/I3SSymbology.js +2 -3
  406. package/Source/Scene/I3dmParser.js +1 -2
  407. package/Source/Scene/ITwinData.js +11 -6
  408. package/Source/Scene/ImageBasedLighting.js +2 -2
  409. package/Source/Scene/ImageryLayer.js +44 -73
  410. package/Source/Scene/ImageryLayerCollection.js +2 -3
  411. package/Source/Scene/Implicit3DTileContent.js +3 -4
  412. package/Source/Scene/ImplicitAvailabilityBitstream.js +2 -5
  413. package/Source/Scene/ImplicitMetadataView.js +2 -2
  414. package/Source/Scene/ImplicitSubtree.js +8 -15
  415. package/Source/Scene/ImplicitSubtreeCache.js +3 -3
  416. package/Source/Scene/ImplicitSubtreeMetadata.js +2 -2
  417. package/Source/Scene/InstanceAttributeSemantic.js +1 -1
  418. package/Source/Scene/IonImageryProvider.js +3 -3
  419. package/Source/Scene/Label.js +19 -36
  420. package/Source/Scene/LabelCollection.js +6 -14
  421. package/Source/Scene/MapboxImageryProvider.js +4 -4
  422. package/Source/Scene/MapboxStyleImageryProvider.js +5 -5
  423. package/Source/Scene/Material.js +14 -20
  424. package/Source/Scene/MaterialAppearance.js +12 -18
  425. package/Source/Scene/Megatexture.js +1 -2
  426. package/Source/Scene/MetadataClass.js +4 -4
  427. package/Source/Scene/MetadataClassProperty.js +11 -14
  428. package/Source/Scene/MetadataEnum.js +4 -7
  429. package/Source/Scene/MetadataEnumValue.js +2 -2
  430. package/Source/Scene/MetadataSchema.js +4 -4
  431. package/Source/Scene/MetadataSchemaLoader.js +2 -2
  432. package/Source/Scene/MetadataTable.js +2 -2
  433. package/Source/Scene/MetadataTableProperty.js +17 -31
  434. package/Source/Scene/Model/AlphaPipelineStage.js +1 -2
  435. package/Source/Scene/Model/B3dmLoader.js +15 -26
  436. package/Source/Scene/Model/BatchTexturePipelineStage.js +1 -2
  437. package/Source/Scene/Model/ClassificationModelDrawCommand.js +2 -2
  438. package/Source/Scene/Model/CustomShader.js +10 -12
  439. package/Source/Scene/Model/Extensions/Gpm/GltfMeshPrimitiveGpmLoader.js +3 -3
  440. package/Source/Scene/Model/FeatureIdPipelineStage.js +1 -5
  441. package/Source/Scene/Model/GeoJsonLoader.js +5 -8
  442. package/Source/Scene/Model/I3dmLoader.js +13 -21
  443. package/Source/Scene/Model/MaterialPipelineStage.js +1 -2
  444. package/Source/Scene/Model/Model.js +40 -62
  445. package/Source/Scene/Model/ModelAnimation.js +5 -6
  446. package/Source/Scene/Model/ModelAnimationChannel.js +2 -2
  447. package/Source/Scene/Model/ModelAnimationCollection.js +4 -4
  448. package/Source/Scene/Model/ModelArticulation.js +2 -2
  449. package/Source/Scene/Model/ModelArticulationStage.js +2 -2
  450. package/Source/Scene/Model/ModelDrawCommand.js +3 -3
  451. package/Source/Scene/Model/ModelFeatureTable.js +3 -9
  452. package/Source/Scene/Model/ModelLightingOptions.js +3 -3
  453. package/Source/Scene/Model/ModelNode.js +1 -1
  454. package/Source/Scene/Model/ModelRuntimeNode.js +2 -2
  455. package/Source/Scene/Model/ModelRuntimePrimitive.js +2 -2
  456. package/Source/Scene/Model/ModelSceneGraph.js +2 -2
  457. package/Source/Scene/Model/ModelSkin.js +2 -2
  458. package/Source/Scene/Model/PickingPipelineStage.js +1 -2
  459. package/Source/Scene/Model/PntsLoader.js +6 -6
  460. package/Source/Scene/Model/PointCloudStylingPipelineStage.js +1 -5
  461. package/Source/Scene/Model/PrimitiveOutlineGenerator.js +2 -2
  462. package/Source/Scene/Model/SelectedFeatureIdPipelineStage.js +2 -3
  463. package/Source/Scene/Model/TextureUniform.js +5 -8
  464. package/Source/Scene/Model/VaryingType.js +2 -2
  465. package/Source/Scene/Model/pickModel.js +4 -5
  466. package/Source/Scene/Moon.js +5 -5
  467. package/Source/Scene/OpenStreetMapImageryProvider.js +7 -7
  468. package/Source/Scene/OrderedGroundPrimitiveCollection.js +1 -2
  469. package/Source/Scene/Particle.js +11 -17
  470. package/Source/Scene/ParticleBurst.js +5 -5
  471. package/Source/Scene/ParticleSystem.js +24 -54
  472. package/Source/Scene/PerInstanceColorAppearance.js +8 -8
  473. package/Source/Scene/PerformanceDisplay.js +3 -3
  474. package/Source/Scene/PickFramebuffer.js +4 -5
  475. package/Source/Scene/Picking.js +3 -4
  476. package/Source/Scene/PntsParser.js +1 -2
  477. package/Source/Scene/PointCloud.js +6 -12
  478. package/Source/Scene/PointCloudShading.js +9 -18
  479. package/Source/Scene/PointPrimitive.js +11 -21
  480. package/Source/Scene/PointPrimitiveCollection.js +6 -14
  481. package/Source/Scene/Polyline.js +5 -5
  482. package/Source/Scene/PolylineCollection.js +5 -10
  483. package/Source/Scene/PolylineColorAppearance.js +7 -11
  484. package/Source/Scene/PolylineMaterialAppearance.js +7 -11
  485. package/Source/Scene/PostProcessStage.js +2 -2
  486. package/Source/Scene/PostProcessStageComposite.js +3 -6
  487. package/Source/Scene/Primitive.js +21 -42
  488. package/Source/Scene/PrimitiveCollection.js +4 -4
  489. package/Source/Scene/PrimitivePipeline.js +1 -2
  490. package/Source/Scene/PropertyAttribute.js +2 -2
  491. package/Source/Scene/PropertyAttributeProperty.js +4 -4
  492. package/Source/Scene/PropertyTable.js +2 -2
  493. package/Source/Scene/PropertyTexture.js +2 -2
  494. package/Source/Scene/PropertyTextureProperty.js +4 -4
  495. package/Source/Scene/QuadtreePrimitive.js +89 -67
  496. package/Source/Scene/QuadtreeTile.js +170 -0
  497. package/Source/Scene/ResourceCache.js +11 -11
  498. package/Source/Scene/ResourceCacheKey.js +11 -11
  499. package/Source/Scene/Scene.js +27 -25
  500. package/Source/Scene/ScreenSpaceCameraController.js +10 -12
  501. package/Source/Scene/ShadowMap.js +15 -15
  502. package/Source/Scene/ShadowVolumeAppearance.js +1 -2
  503. package/Source/Scene/SingleTileImageryProvider.js +4 -4
  504. package/Source/Scene/SkyAtmosphere.js +1 -2
  505. package/Source/Scene/SkyBox.js +1 -2
  506. package/Source/Scene/SphereEmitter.js +2 -3
  507. package/Source/Scene/StructuralMetadata.js +2 -2
  508. package/Source/Scene/SunLight.js +4 -4
  509. package/Source/Scene/SupportedImageFormats.js +4 -4
  510. package/Source/Scene/TileBoundingRegion.js +4 -5
  511. package/Source/Scene/TileBoundingS2Cell.js +3 -4
  512. package/Source/Scene/TileCoordinatesImageryProvider.js +5 -5
  513. package/Source/Scene/TileMapServiceImageryProvider.js +18 -27
  514. package/Source/Scene/TileMetadata.js +2 -2
  515. package/Source/Scene/TilesetMetadata.js +2 -2
  516. package/Source/Scene/TimeDynamicImagery.js +2 -2
  517. package/Source/Scene/TimeDynamicPointCloud.js +8 -10
  518. package/Source/Scene/TweenCollection.js +13 -16
  519. package/Source/Scene/UrlTemplateImageryProvider.js +11 -15
  520. package/Source/Scene/Vector3DTileClampedPolylines.js +1 -2
  521. package/Source/Scene/Vector3DTileContent.js +16 -20
  522. package/Source/Scene/Vector3DTileGeometry.js +1 -2
  523. package/Source/Scene/Vector3DTilePolygons.js +2 -3
  524. package/Source/Scene/Vector3DTilePolylines.js +1 -2
  525. package/Source/Scene/Vector3DTilePrimitive.js +9 -13
  526. package/Source/Scene/VoxelBoxShape.js +38 -82
  527. package/Source/Scene/VoxelCylinderShape.js +130 -271
  528. package/Source/Scene/VoxelEllipsoidShape.js +2 -3
  529. package/Source/Scene/VoxelMetadataOrder.js +14 -2
  530. package/Source/Scene/VoxelPrimitive.js +17 -30
  531. package/Source/Scene/VoxelProvider.js +0 -12
  532. package/Source/Scene/VoxelRenderResources.js +17 -21
  533. package/Source/Scene/VoxelTraversal.js +2 -6
  534. package/Source/Scene/WebMapServiceImageryProvider.js +17 -24
  535. package/Source/Scene/WebMapTileServiceImageryProvider.js +7 -10
  536. package/Source/Scene/createElevationBandMaterial.js +4 -4
  537. package/Source/Scene/createGooglePhotorealistic3DTileset.js +8 -16
  538. package/Source/Scene/createOsmBuildingsAsync.js +3 -6
  539. package/Source/Scene/createTangentSpaceDebugPrimitive.js +4 -6
  540. package/Source/Scene/createWorldImageryAsync.js +3 -3
  541. package/Source/Scene/findContentMetadata.js +2 -5
  542. package/Source/Scene/findTileMetadata.js +2 -5
  543. package/Source/Scene/parseBatchTable.js +1 -5
  544. package/Source/Scene/parseFeatureMetadataLegacy.js +2 -2
  545. package/Source/Scene/parseStructuralMetadata.js +2 -2
  546. package/Source/Shaders/PolylineCommon.glsl +1 -1
  547. package/Source/Shaders/PolylineCommon.js +1 -1
  548. package/Source/Shaders/Voxels/Octree.glsl +1 -1
  549. package/Source/Shaders/Voxels/Octree.js +1 -1
  550. package/Source/Widget/CesiumWidget.js +17 -25
  551. package/Source/Workers/createGeometry.js +1 -2
  552. package/Source/Workers/createVerticesFromGoogleEarthEnterpriseBuffer.js +1 -2
  553. package/Source/Workers/decodeI3S.js +1 -5
  554. package/Source/Workers/transcodeKTX2.js +1 -2
  555. package/index.d.ts +83 -37
  556. package/index.js +179 -178
  557. package/package.json +2 -2
  558. package/Build/Workers/chunk-QZKN2RXM.js +0 -39
@@ -4,6 +4,45 @@ import Rectangle from "../Core/Rectangle.js";
4
4
  import QuadtreeTileLoadState from "./QuadtreeTileLoadState.js";
5
5
  import TileSelectionResult from "./TileSelectionResult.js";
6
6
 
7
+ /**
8
+ * A simple Least Recently Used (LRU) cache implementation.
9
+ */
10
+ class LRUCache {
11
+ constructor(maxSize) {
12
+ this.maxSize = maxSize;
13
+ this.cache = new Map();
14
+ }
15
+
16
+ get(key) {
17
+ if (!this.cache.has(key)) {
18
+ return undefined;
19
+ }
20
+ // Move accessed item to the end (most recently used)
21
+ const value = this.cache.get(key);
22
+ this.cache.delete(key);
23
+ this.cache.set(key, value);
24
+ return value;
25
+ }
26
+
27
+ set(key, value) {
28
+ if (this.cache.has(key)) {
29
+ this.cache.delete(key);
30
+ } else if (this.cache.size >= this.maxSize) {
31
+ // Remove the least recently used (first entry)
32
+ const firstKey = this.cache.keys().next().value;
33
+ this.cache.delete(firstKey);
34
+ }
35
+ this.cache.set(key, value);
36
+ }
37
+
38
+ clear() {
39
+ this.cache.clear();
40
+ }
41
+ }
42
+
43
+ // Maximum cache entries per tile
44
+ const MAX_CACHE_ENTRIES = 1000;
45
+
7
46
  /**
8
47
  * A single tile in a {@link QuadtreePrimitive}.
9
48
  *
@@ -74,6 +113,9 @@ function QuadtreeTile(options) {
74
113
  this._lastSelectionResultFrame = undefined;
75
114
  this._loadedCallbacks = {};
76
115
 
116
+ // Cache for storing computed position values per tile to avoid redundant calculations
117
+ this._positionCache = new LRUCache(MAX_CACHE_ENTRIES);
118
+
77
119
  /**
78
120
  * Gets or sets the current state of the tile in the tile load pipeline.
79
121
  * @type {QuadtreeTileLoadState}
@@ -143,6 +185,132 @@ QuadtreeTile.createLevelZeroTiles = function (tilingScheme) {
143
185
  return result;
144
186
  };
145
187
 
188
+ /**
189
+ * Creates a spatial hash key for the given longitude, latitude, and tile level.
190
+ * The precision is adjusted based on the tile level and extent to achieve finer precision at higher levels.
191
+ *
192
+ * This function calculates the spatial hash key by first determining the precision at the given tile for the current maximum screenspace error (MAX_ERROR_PX),
193
+ * and then rounding the longitude and latitude to that precision for consistency.
194
+ *
195
+ * The steps for computing the level precision are as follows:
196
+ *
197
+ * 1. Compute the resolution (meters per pixel) at the given level:
198
+ * level_resolution_m = (2 * PI * RADIUS) / (2^level * TILE_SIZE)
199
+ *
200
+ * 2. Compute the target precision in meters:
201
+ * level_precision_m = level_resolution_m * MAX_ERROR_PX
202
+ *
203
+ * 3. Compute the target precision to radians:
204
+ * level_precision_rad = level_precision_m / BODY_RADIUS
205
+ *
206
+ * This simplifies to:
207
+ * level_precision_rad = (2 * PI * MAX_ERROR_PX) / (2^level * TILE_SIZE)
208
+ * which can also be written as:
209
+ * level_precision_rad = (PI * MAX_ERROR_PX) / (2^(level-1) * TILE_SIZE)
210
+ *
211
+ * The computed level_precision_rad is then used to round the input longitude and latitude,
212
+ * ensuring that positions that fall within the same spatial bin produce the same hash key.
213
+ *
214
+ * The constants below are computed once since they are fixed for the given configuration.
215
+ *
216
+ * @param {number} longitude - The longitude in radians.
217
+ * @param {number} latitude - The latitude in radians.
218
+ * @param {Rectangle} rectangle - The quadtree tile extents.
219
+ * @returns {string} A string representing the spatial hash key.
220
+ */
221
+ const TILE_SIZE = 256;
222
+
223
+ function createSpatialHashKey(
224
+ longitude,
225
+ latitude,
226
+ rectangle,
227
+ maximumScreenSpaceError,
228
+ ) {
229
+ // Adjust precision based on quadtree level - higher levels get finer precision
230
+ const maxError = (rectangle.width / TILE_SIZE) * maximumScreenSpaceError;
231
+ // Round to the grid precision
232
+ const lonGrid = Math.floor(longitude / maxError) * maxError;
233
+ const latGrid = Math.floor(latitude / maxError) * maxError;
234
+ return `${lonGrid.toFixed(10)},${latGrid.toFixed(10)}`;
235
+ }
236
+
237
+ /**
238
+ * Generates a unique cache key for a given cartographic position.
239
+ * @memberof QuadtreeTile
240
+ *
241
+ * @param {Cartographic} cartographic The cartographic coordinates.
242
+ * @param {number} maximumScreenSpaceError The maximum screen-space error, in pixels, that is allowed.
243
+ * A higher maximum error will render fewer tiles and improve performance, while a lower
244
+ * value will improve visual quality.
245
+ * @returns {string} A string representing the spatial hash key.
246
+ */
247
+ QuadtreeTile.prototype._getCacheKey = function (
248
+ cartographic,
249
+ maximumScreenSpaceError,
250
+ ) {
251
+ return createSpatialHashKey(
252
+ cartographic.longitude,
253
+ cartographic.latitude,
254
+ this._rectangle,
255
+ maximumScreenSpaceError,
256
+ );
257
+ };
258
+
259
+ /**
260
+ * Retrieves a cached position for the specified cartographic position.
261
+ *
262
+ * @memberof QuadtreeTile
263
+ *
264
+ * @param {Cartographic} cartographic - The cartographic coordinates.
265
+ * @param {number} maximumScreenSpaceError The maximum screen-space error, in pixels, that is allowed.
266
+ * A higher maximum error will render fewer tiles and improve performance, while a lower
267
+ * value will improve visual quality.
268
+ * @returns {Object|undefined} The cached position data or undefined if not found.
269
+ */
270
+ QuadtreeTile.prototype.getPositionCacheEntry = function (
271
+ cartographic,
272
+ maximumScreenSpaceError,
273
+ ) {
274
+ return this._positionCache.get(
275
+ this._getCacheKey(cartographic, maximumScreenSpaceError),
276
+ );
277
+ };
278
+
279
+ /**
280
+ * Sets a position on the cache for this tile.
281
+ *
282
+ * @memberof QuadtreeTile
283
+ *
284
+ * @param {Cartographic} cartographic - The cartographic coordinates.
285
+ * @param {number} maximumScreenSpaceError The maximum screen-space error, in pixels, that is allowed.
286
+ * A higher maximum error will render fewer tiles and improve performance, while a lower
287
+ * value will improve visual quality.
288
+ * @param {Object} value - The object to be cached.
289
+ */
290
+ QuadtreeTile.prototype.setPositionCacheEntry = function (
291
+ cartographic,
292
+ maximumScreenSpaceError,
293
+ value,
294
+ ) {
295
+ this._positionCache.set(
296
+ this._getCacheKey(cartographic, maximumScreenSpaceError),
297
+ value,
298
+ );
299
+ };
300
+
301
+ /**
302
+ * Clears the position cache for this tile.
303
+ * This function removes all cached positions that were previously stored
304
+ * to optimize height computations.
305
+ *
306
+ * @memberof QuadtreeTile
307
+ */
308
+ QuadtreeTile.prototype.clearPositionCache = function () {
309
+ if (this._positionCache.size > 0) {
310
+ this._positionCache.clear();
311
+ }
312
+ };
313
+
146
314
  QuadtreeTile.prototype._updateCustomData = function (
147
315
  frameNumber,
148
316
  added,
@@ -513,6 +681,8 @@ QuadtreeTile.prototype.findTileToNorth = function (levelZeroTiles) {
513
681
  * @memberof QuadtreeTile
514
682
  */
515
683
  QuadtreeTile.prototype.freeResources = function () {
684
+ // Clears cached heights when the tile is freed
685
+ this.clearPositionCache();
516
686
  this.state = QuadtreeTileLoadState.START;
517
687
  this.renderable = false;
518
688
  this.upsampledFromParent = false;
@@ -1,5 +1,5 @@
1
1
  import Check from "../Core/Check.js";
2
- import defaultValue from "../Core/defaultValue.js";
2
+ import Frozen from "../Core/Frozen.js";
3
3
  import defined from "../Core/defined.js";
4
4
  import DeveloperError from "../Core/DeveloperError.js";
5
5
  import BufferLoader from "./BufferLoader.js";
@@ -145,7 +145,7 @@ ResourceCache.unload = function (resourceLoader) {
145
145
  * @private
146
146
  */
147
147
  ResourceCache.getSchemaLoader = function (options) {
148
- options = defaultValue(options, defaultValue.EMPTY_OBJECT);
148
+ options = options ?? Frozen.EMPTY_OBJECT;
149
149
  const { schema, resource } = options;
150
150
 
151
151
  //>>includeStart('debug', pragmas.debug);
@@ -187,7 +187,7 @@ ResourceCache.getSchemaLoader = function (options) {
187
187
  * @private
188
188
  */
189
189
  ResourceCache.getEmbeddedBufferLoader = function (options) {
190
- options = defaultValue(options, defaultValue.EMPTY_OBJECT);
190
+ options = options ?? Frozen.EMPTY_OBJECT;
191
191
  const { parentResource, bufferId, typedArray } = options;
192
192
 
193
193
  //>>includeStart('debug', pragmas.debug);
@@ -227,7 +227,7 @@ ResourceCache.getEmbeddedBufferLoader = function (options) {
227
227
  * @private
228
228
  */
229
229
  ResourceCache.getExternalBufferLoader = function (options) {
230
- options = defaultValue(options, defaultValue.EMPTY_OBJECT);
230
+ options = options ?? Frozen.EMPTY_OBJECT;
231
231
  const { resource } = options;
232
232
 
233
233
  //>>includeStart('debug', pragmas.debug);
@@ -264,7 +264,7 @@ ResourceCache.getExternalBufferLoader = function (options) {
264
264
  * @private
265
265
  */
266
266
  ResourceCache.getGltfJsonLoader = function (options) {
267
- options = defaultValue(options, defaultValue.EMPTY_OBJECT);
267
+ options = options ?? Frozen.EMPTY_OBJECT;
268
268
  const { gltfResource, baseResource, typedArray, gltfJson } = options;
269
269
 
270
270
  //>>includeStart('debug', pragmas.debug);
@@ -306,7 +306,7 @@ ResourceCache.getGltfJsonLoader = function (options) {
306
306
  * @private
307
307
  */
308
308
  ResourceCache.getBufferViewLoader = function (options) {
309
- options = defaultValue(options, defaultValue.EMPTY_OBJECT);
309
+ options = options ?? Frozen.EMPTY_OBJECT;
310
310
  const { gltf, bufferViewId, gltfResource, baseResource } = options;
311
311
 
312
312
  //>>includeStart('debug', pragmas.debug);
@@ -354,7 +354,7 @@ ResourceCache.getBufferViewLoader = function (options) {
354
354
  * @private
355
355
  */
356
356
  ResourceCache.getDracoLoader = function (options) {
357
- options = defaultValue(options, defaultValue.EMPTY_OBJECT);
357
+ options = options ?? Frozen.EMPTY_OBJECT;
358
358
  const { gltf, primitive, draco, gltfResource, baseResource } = options;
359
359
 
360
360
  //>>includeStart('debug', pragmas.debug);
@@ -415,7 +415,7 @@ ResourceCache.getDracoLoader = function (options) {
415
415
  * @private
416
416
  */
417
417
  ResourceCache.getVertexBufferLoader = function (options) {
418
- options = defaultValue(options, defaultValue.EMPTY_OBJECT);
418
+ options = options ?? Frozen.EMPTY_OBJECT;
419
419
  const {
420
420
  gltf,
421
421
  gltfResource,
@@ -544,7 +544,7 @@ function hasDracoCompression(draco, semantic) {
544
544
  * @private
545
545
  */
546
546
  ResourceCache.getIndexBufferLoader = function (options) {
547
- options = defaultValue(options, defaultValue.EMPTY_OBJECT);
547
+ options = options ?? Frozen.EMPTY_OBJECT;
548
548
  const {
549
549
  gltf,
550
550
  accessorId,
@@ -617,7 +617,7 @@ ResourceCache.getIndexBufferLoader = function (options) {
617
617
  * @private
618
618
  */
619
619
  ResourceCache.getImageLoader = function (options) {
620
- options = defaultValue(options, defaultValue.EMPTY_OBJECT);
620
+ options = options ?? Frozen.EMPTY_OBJECT;
621
621
  const { gltf, imageId, gltfResource, baseResource } = options;
622
622
 
623
623
  //>>includeStart('debug', pragmas.debug);
@@ -667,7 +667,7 @@ ResourceCache.getImageLoader = function (options) {
667
667
  * @private
668
668
  */
669
669
  ResourceCache.getTextureLoader = function (options) {
670
- options = defaultValue(options, defaultValue.EMPTY_OBJECT);
670
+ options = options ?? Frozen.EMPTY_OBJECT;
671
671
  const {
672
672
  gltf,
673
673
  textureInfo,
@@ -1,5 +1,5 @@
1
1
  import Check from "../Core/Check.js";
2
- import defaultValue from "../Core/defaultValue.js";
2
+ import Frozen from "../Core/Frozen.js";
3
3
  import defined from "../Core/defined.js";
4
4
  import DeveloperError from "../Core/DeveloperError.js";
5
5
  import getAbsoluteUri from "../Core/getAbsoluteUri.js";
@@ -24,7 +24,7 @@ function getBufferViewCacheKey(bufferView) {
24
24
 
25
25
  if (hasExtension(bufferView, "EXT_meshopt_compression")) {
26
26
  const meshopt = bufferView.extensions.EXT_meshopt_compression;
27
- byteOffset = defaultValue(meshopt.byteOffset, 0);
27
+ byteOffset = meshopt.byteOffset ?? 0;
28
28
  byteLength = meshopt.byteLength;
29
29
  }
30
30
 
@@ -148,7 +148,7 @@ ResourceCacheKey.getSchemaCacheKey = function (options) {
148
148
  * @private
149
149
  */
150
150
  ResourceCacheKey.getExternalBufferCacheKey = function (options) {
151
- options = defaultValue(options, defaultValue.EMPTY_OBJECT);
151
+ options = options ?? Frozen.EMPTY_OBJECT;
152
152
  const { resource } = options;
153
153
 
154
154
  //>>includeStart('debug', pragmas.debug);
@@ -169,7 +169,7 @@ ResourceCacheKey.getExternalBufferCacheKey = function (options) {
169
169
  * @private
170
170
  */
171
171
  ResourceCacheKey.getEmbeddedBufferCacheKey = function (options) {
172
- options = defaultValue(options, defaultValue.EMPTY_OBJECT);
172
+ options = options ?? Frozen.EMPTY_OBJECT;
173
173
  const { parentResource, bufferId } = options;
174
174
 
175
175
  //>>includeStart('debug', pragmas.debug);
@@ -193,7 +193,7 @@ ResourceCacheKey.getEmbeddedBufferCacheKey = function (options) {
193
193
  * @private
194
194
  */
195
195
  ResourceCacheKey.getGltfCacheKey = function (options) {
196
- options = defaultValue(options, defaultValue.EMPTY_OBJECT);
196
+ options = options ?? Frozen.EMPTY_OBJECT;
197
197
  const { gltfResource } = options;
198
198
 
199
199
  //>>includeStart('debug', pragmas.debug);
@@ -216,7 +216,7 @@ ResourceCacheKey.getGltfCacheKey = function (options) {
216
216
  * @private
217
217
  */
218
218
  ResourceCacheKey.getBufferViewCacheKey = function (options) {
219
- options = defaultValue(options, defaultValue.EMPTY_OBJECT);
219
+ options = options ?? Frozen.EMPTY_OBJECT;
220
220
  const { gltf, bufferViewId, gltfResource, baseResource } = options;
221
221
 
222
222
  //>>includeStart('debug', pragmas.debug);
@@ -259,7 +259,7 @@ ResourceCacheKey.getBufferViewCacheKey = function (options) {
259
259
  * @private
260
260
  */
261
261
  ResourceCacheKey.getDracoCacheKey = function (options) {
262
- options = defaultValue(options, defaultValue.EMPTY_OBJECT);
262
+ options = options ?? Frozen.EMPTY_OBJECT;
263
263
  const { gltf, draco, gltfResource, baseResource } = options;
264
264
 
265
265
  //>>includeStart('debug', pragmas.debug);
@@ -293,7 +293,7 @@ ResourceCacheKey.getDracoCacheKey = function (options) {
293
293
  * @private
294
294
  */
295
295
  ResourceCacheKey.getVertexBufferCacheKey = function (options) {
296
- options = defaultValue(options, defaultValue.EMPTY_OBJECT);
296
+ options = options ?? Frozen.EMPTY_OBJECT;
297
297
  const {
298
298
  gltf,
299
299
  gltfResource,
@@ -406,7 +406,7 @@ function hasDracoCompression(draco, semantic) {
406
406
  * @private
407
407
  */
408
408
  ResourceCacheKey.getIndexBufferCacheKey = function (options) {
409
- options = defaultValue(options, defaultValue.EMPTY_OBJECT);
409
+ options = options ?? Frozen.EMPTY_OBJECT;
410
410
  const {
411
411
  gltf,
412
412
  accessorId,
@@ -483,7 +483,7 @@ ResourceCacheKey.getIndexBufferCacheKey = function (options) {
483
483
  * @private
484
484
  */
485
485
  ResourceCacheKey.getImageCacheKey = function (options) {
486
- options = defaultValue(options, defaultValue.EMPTY_OBJECT);
486
+ options = options ?? Frozen.EMPTY_OBJECT;
487
487
  const { gltf, imageId, gltfResource, baseResource } = options;
488
488
 
489
489
  //>>includeStart('debug', pragmas.debug);
@@ -518,7 +518,7 @@ ResourceCacheKey.getImageCacheKey = function (options) {
518
518
  * @private
519
519
  */
520
520
  ResourceCacheKey.getTextureCacheKey = function (options) {
521
- options = defaultValue(options, defaultValue.EMPTY_OBJECT);
521
+ options = options ?? Frozen.EMPTY_OBJECT;
522
522
  const {
523
523
  gltf,
524
524
  textureInfo,
@@ -9,7 +9,7 @@ import Color from "../Core/Color.js";
9
9
  import ColorGeometryInstanceAttribute from "../Core/ColorGeometryInstanceAttribute.js";
10
10
  import createGuid from "../Core/createGuid.js";
11
11
  import CullingVolume from "../Core/CullingVolume.js";
12
- import defaultValue from "../Core/defaultValue.js";
12
+ import Frozen from "../Core/Frozen.js";
13
13
  import defined from "../Core/defined.js";
14
14
  import destroyObject from "../Core/destroyObject.js";
15
15
  import DeveloperError from "../Core/DeveloperError.js";
@@ -127,7 +127,7 @@ const requestRenderAfterFrame = function (scene) {
127
127
  * });
128
128
  */
129
129
  function Scene(options) {
130
- options = defaultValue(options, defaultValue.EMPTY_OBJECT);
130
+ options = options ?? Frozen.EMPTY_OBJECT;
131
131
  const canvas = options.canvas;
132
132
  let creditContainer = options.creditContainer;
133
133
  let creditViewport = options.creditViewport;
@@ -162,7 +162,7 @@ function Scene(options) {
162
162
  new CreditDisplay(creditContainer, "•", creditViewport),
163
163
  this._jobScheduler,
164
164
  );
165
- this._frameState.scene3DOnly = defaultValue(options.scene3DOnly, false);
165
+ this._frameState.scene3DOnly = options.scene3DOnly ?? false;
166
166
  this._removeCreditContainer = !hasCreditContainer;
167
167
  this._creditContainer = creditContainer;
168
168
 
@@ -170,7 +170,7 @@ function Scene(options) {
170
170
  this._context = context;
171
171
  this._computeEngine = new ComputeEngine(context);
172
172
 
173
- this._ellipsoid = defaultValue(options.ellipsoid, Ellipsoid.default);
173
+ this._ellipsoid = options.ellipsoid ?? Ellipsoid.default;
174
174
  this._globe = undefined;
175
175
  this._globeTranslucencyState = new GlobeTranslucencyState();
176
176
  this._primitives = new PrimitiveCollection();
@@ -193,7 +193,7 @@ function Scene(options) {
193
193
  this._computeCommandList = [];
194
194
  this._overlayCommandList = [];
195
195
 
196
- this._useOIT = defaultValue(options.orderIndependentTranslucency, true);
196
+ this._useOIT = options.orderIndependentTranslucency ?? true;
197
197
  /**
198
198
  * The function that will be used for executing translucent commands when
199
199
  * useOIT is true. This is created once in
@@ -237,7 +237,7 @@ function Scene(options) {
237
237
  this._minimumDisableDepthTestDistance = 0.0;
238
238
  this._debugInspector = new DebugInspector();
239
239
 
240
- this._msaaSamples = defaultValue(options.msaaSamples, 4);
240
+ this._msaaSamples = options.msaaSamples ?? 4;
241
241
 
242
242
  /**
243
243
  * Exceptions occurring in <code>render</code> are always caught in order to raise the
@@ -569,7 +569,7 @@ function Scene(options) {
569
569
  this.shadowMap = new ShadowMap({
570
570
  context: context,
571
571
  lightCamera: this._shadowMapCamera,
572
- enabled: defaultValue(options.shadows, false),
572
+ enabled: options.shadows ?? false,
573
573
  });
574
574
 
575
575
  /**
@@ -619,7 +619,7 @@ function Scene(options) {
619
619
 
620
620
  this._screenSpaceCameraController = new ScreenSpaceCameraController(this);
621
621
  this._cameraUnderground = false;
622
- this._mapMode2D = defaultValue(options.mapMode2D, MapMode2D.INFINITE_SCROLL);
622
+ this._mapMode2D = options.mapMode2D ?? MapMode2D.INFINITE_SCROLL;
623
623
 
624
624
  // Keeps track of the state of a frame. FrameState is the state across
625
625
  // the primitives of the scene. This state is for internally keeping track
@@ -667,7 +667,7 @@ function Scene(options) {
667
667
  * @type {boolean}
668
668
  * @default false
669
669
  */
670
- this.requestRenderMode = defaultValue(options.requestRenderMode, false);
670
+ this.requestRenderMode = options.requestRenderMode ?? false;
671
671
  this._renderRequested = true;
672
672
 
673
673
  /**
@@ -684,10 +684,7 @@ function Scene(options) {
684
684
  * @type {number}
685
685
  * @default 0.0
686
686
  */
687
- this.maximumRenderTimeChange = defaultValue(
688
- options.maximumRenderTimeChange,
689
- 0.0,
690
- );
687
+ this.maximumRenderTimeChange = options.maximumRenderTimeChange ?? 0.0;
691
688
  this._lastRenderTime = undefined;
692
689
  this._frameRateMonitor = undefined;
693
690
 
@@ -3105,8 +3102,8 @@ function executeWebVRCommands(scene, passState) {
3105
3102
  savedCamera.frustum = camera.frustum;
3106
3103
 
3107
3104
  const near = camera.frustum.near;
3108
- const fo = near * defaultValue(scene.focalLength, 5.0);
3109
- const eyeSeparation = defaultValue(scene.eyeSeparation, fo / 30.0);
3105
+ const fo = near * (scene.focalLength ?? 5.0);
3106
+ const eyeSeparation = scene.eyeSeparation ?? fo / 30.0;
3110
3107
  const eyeTranslation = Cartesian3.multiplyByScalar(
3111
3108
  savedCamera.right,
3112
3109
  eyeSeparation * 0.5,
@@ -3769,9 +3766,8 @@ Scene.prototype.resolveFramebuffers = function (passState) {
3769
3766
  const postProcess = this.postProcessStages;
3770
3767
  const colorTexture = inputFramebuffer.getColorTexture(0);
3771
3768
  const idTexture = idFramebuffer.getColorTexture(0);
3772
- const depthTexture = defaultValue(
3773
- globeFramebuffer,
3774
- sceneFramebuffer,
3769
+ const depthTexture = (
3770
+ globeFramebuffer ?? sceneFramebuffer
3775
3771
  ).getDepthStencilTexture();
3776
3772
  postProcess.execute(context, colorTexture, depthTexture, idTexture);
3777
3773
  postProcess.copy(context, originalFramebuffer);
@@ -3909,10 +3905,17 @@ Scene.prototype.updateHeight = function (
3909
3905
  Check.typeOf.func("callback", callback);
3910
3906
  //>>includeEnd('debug');
3911
3907
 
3912
- const callbackWrapper = () => {
3908
+ const ellipsoid = this._ellipsoid;
3909
+ const callbackWrapper = (clampedCartographic) => {
3913
3910
  Cartographic.clone(cartographic, updateHeightScratchCartographic);
3914
3911
 
3915
- const height = this.getHeight(cartographic, heightReference);
3912
+ let height;
3913
+ if (defined(clampedCartographic)) {
3914
+ height = clampedCartographic.height;
3915
+ }
3916
+ if (!defined(height)) {
3917
+ height = this.getHeight(cartographic, heightReference);
3918
+ }
3916
3919
  if (defined(height)) {
3917
3920
  updateHeightScratchCartographic.height = height;
3918
3921
  callback(updateHeightScratchCartographic);
@@ -3936,7 +3939,6 @@ Scene.prototype.updateHeight = function (
3936
3939
  }
3937
3940
 
3938
3941
  let tilesetRemoveCallbacks = {};
3939
- const ellipsoid = this._ellipsoid;
3940
3942
  const createPrimitiveEventListener = (primitive) => {
3941
3943
  if (
3942
3944
  ignore3dTiles ||
@@ -4126,7 +4128,7 @@ function render(scene) {
4126
4128
  frameState.passes.postProcess = scene.postProcessStages.hasSelected;
4127
4129
  frameState.tilesetPassState = renderTilesetPassState;
4128
4130
 
4129
- let backgroundColor = defaultValue(scene.backgroundColor, Color.BLACK);
4131
+ let backgroundColor = scene.backgroundColor ?? Color.BLACK;
4130
4132
  if (scene._hdr) {
4131
4133
  backgroundColor = Color.clone(backgroundColor, scratchBackgroundColor);
4132
4134
  backgroundColor.red = Math.pow(backgroundColor.red, scene.gamma);
@@ -4919,7 +4921,7 @@ Scene.prototype.completeMorph = function () {
4919
4921
  * @param {number} [duration=2.0] The amount of time, in seconds, for transition animations to complete.
4920
4922
  */
4921
4923
  Scene.prototype.morphTo2D = function (duration) {
4922
- duration = defaultValue(duration, 2.0);
4924
+ duration = duration ?? 2.0;
4923
4925
  this._transitioner.morphTo2D(duration, this._ellipsoid);
4924
4926
  };
4925
4927
 
@@ -4928,7 +4930,7 @@ Scene.prototype.morphTo2D = function (duration) {
4928
4930
  * @param {number} [duration=2.0] The amount of time, in seconds, for transition animations to complete.
4929
4931
  */
4930
4932
  Scene.prototype.morphToColumbusView = function (duration) {
4931
- duration = defaultValue(duration, 2.0);
4933
+ duration = duration ?? 2.0;
4932
4934
  this._transitioner.morphToColumbusView(duration, this._ellipsoid);
4933
4935
  };
4934
4936
 
@@ -4937,7 +4939,7 @@ Scene.prototype.morphToColumbusView = function (duration) {
4937
4939
  * @param {number} [duration=2.0] The amount of time, in seconds, for transition animations to complete.
4938
4940
  */
4939
4941
  Scene.prototype.morphTo3D = function (duration) {
4940
- duration = defaultValue(duration, 2.0);
4942
+ duration = duration ?? 2.0;
4941
4943
  this._transitioner.morphTo3D(duration, this._ellipsoid);
4942
4944
  };
4943
4945
 
@@ -2,7 +2,6 @@ import Cartesian2 from "../Core/Cartesian2.js";
2
2
  import Cartesian3 from "../Core/Cartesian3.js";
3
3
  import Cartesian4 from "../Core/Cartesian4.js";
4
4
  import Cartographic from "../Core/Cartographic.js";
5
- import defaultValue from "../Core/defaultValue.js";
6
5
  import defined from "../Core/defined.js";
7
6
  import destroyObject from "../Core/destroyObject.js";
8
7
  import DeveloperError from "../Core/DeveloperError.js";
@@ -225,7 +224,7 @@ function ScreenSpaceCameraController(scene) {
225
224
  modifier: KeyboardEventModifier.SHIFT,
226
225
  };
227
226
 
228
- const ellipsoid = defaultValue(scene.ellipsoid, Ellipsoid.default);
227
+ const ellipsoid = scene.ellipsoid ?? Ellipsoid.default;
229
228
 
230
229
  /**
231
230
  * The minimum height the camera must be before picking the terrain or scene content instead of the ellipsoid. Defaults to scene.ellipsoid.minimumRadius * 0.025 when another ellipsoid than WGS84 is used.
@@ -623,10 +622,9 @@ function handleZoom(
623
622
  orientation.pitch = camera.pitch;
624
623
  orientation.roll = camera.roll;
625
624
 
626
- const sameStartPosition = defaultValue(
627
- movement.inertiaEnabled,
628
- Cartesian2.equals(startPosition, object._zoomMouseStart),
629
- );
625
+ const sameStartPosition =
626
+ movement.inertiaEnabled ??
627
+ Cartesian2.equals(startPosition, object._zoomMouseStart);
630
628
  let zoomingOnVector = object._zoomingOnVector;
631
629
  let rotatingZoom = object._rotatingZoom;
632
630
  let pickedPosition;
@@ -1202,7 +1200,7 @@ function getDistanceFromSurface(controller) {
1202
1200
  } else {
1203
1201
  height = camera.position.z;
1204
1202
  }
1205
- const globeHeight = defaultValue(controller._scene.globeHeight, 0.0);
1203
+ const globeHeight = controller._scene.globeHeight ?? 0.0;
1206
1204
  const distanceFromSurface = Math.abs(globeHeight - height);
1207
1205
  return distanceFromSurface;
1208
1206
  }
@@ -2030,8 +2028,8 @@ function rotate3D(
2030
2028
  rotateOnlyVertical,
2031
2029
  rotateOnlyHorizontal,
2032
2030
  ) {
2033
- rotateOnlyVertical = defaultValue(rotateOnlyVertical, false);
2034
- rotateOnlyHorizontal = defaultValue(rotateOnlyHorizontal, false);
2031
+ rotateOnlyVertical = rotateOnlyVertical ?? false;
2032
+ rotateOnlyHorizontal = rotateOnlyHorizontal ?? false;
2035
2033
 
2036
2034
  const scene = controller._scene;
2037
2035
  const camera = scene.camera;
@@ -2818,7 +2816,7 @@ function look3D(controller, startPosition, movement, rotationAxis) {
2818
2816
  }
2819
2817
  angle = movement.startPosition.y > movement.endPosition.y ? -angle : angle;
2820
2818
 
2821
- rotationAxis = defaultValue(rotationAxis, horizontalRotationAxis);
2819
+ rotationAxis = rotationAxis ?? horizontalRotationAxis;
2822
2820
  if (defined(rotationAxis)) {
2823
2821
  const direction = camera.direction;
2824
2822
  const negativeRotationAxis = Cartesian3.negate(
@@ -2905,7 +2903,7 @@ function adjustHeightForTerrain(controller, cameraChanged) {
2905
2903
  }
2906
2904
 
2907
2905
  const camera = scene.camera;
2908
- const ellipsoid = defaultValue(scene.ellipsoid, Ellipsoid.WGS84);
2906
+ const ellipsoid = scene.ellipsoid ?? Ellipsoid.WGS84;
2909
2907
  const projection = scene.mapProjection;
2910
2908
 
2911
2909
  let transform;
@@ -3004,7 +3002,7 @@ ScreenSpaceCameraController.prototype.update = function () {
3004
3002
  this._ellipsoid = Ellipsoid.UNIT_SPHERE;
3005
3003
  } else {
3006
3004
  this._globe = globe;
3007
- this._ellipsoid = defaultValue(scene.ellipsoid, Ellipsoid.default);
3005
+ this._ellipsoid = scene.ellipsoid ?? Ellipsoid.default;
3008
3006
  }
3009
3007
 
3010
3008
  const { verticalExaggeration, verticalExaggerationRelativeHeight } = scene;