@cesium/engine 2.0.0 → 2.2.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 (828) hide show
  1. package/Build/Workers/{ArcType-ce2e50ab.js → ArcType-2d9abbbc.js} +4 -4
  2. package/Build/Workers/{AttributeCompression-b646d393.js → AttributeCompression-8a5a065e.js} +24 -24
  3. package/Build/Workers/{AxisAlignedBoundingBox-47525601.js → AxisAlignedBoundingBox-379015ef.js} +3 -3
  4. package/Build/Workers/{BoundingRectangle-93b263ac.js → BoundingRectangle-57f2b24f.js} +18 -18
  5. package/Build/Workers/{BoxGeometry-8c4b4125.js → BoxGeometry-ecabfc78.js} +9 -9
  6. package/Build/Workers/{Check-666ab1a0.js → Check-6ede7e26.js} +22 -22
  7. package/Build/Workers/{Color-52c60ed7.js → Color-14d1a36d.js} +59 -59
  8. package/Build/Workers/{ComponentDatatype-f7b11d02.js → ComponentDatatype-cf1fa08e.js} +16 -16
  9. package/Build/Workers/{CoplanarPolygonGeometryLibrary-33c4c1f8.js → CoplanarPolygonGeometryLibrary-048c3c14.js} +1 -1
  10. package/Build/Workers/{CorridorGeometryLibrary-5039cd8e.js → CorridorGeometryLibrary-520c8619.js} +1 -1
  11. package/Build/Workers/{CylinderGeometry-3ac44974.js → CylinderGeometry-119068b8.js} +12 -12
  12. package/Build/Workers/{CylinderGeometryLibrary-372c07d8.js → CylinderGeometryLibrary-135b0858.js} +1 -1
  13. package/Build/Workers/{EllipseGeometry-a9c9b3be.js → EllipseGeometry-2dfc3523.js} +20 -20
  14. package/Build/Workers/{EllipseGeometryLibrary-855d4681.js → EllipseGeometryLibrary-0a1e0170.js} +1 -1
  15. package/Build/Workers/{EllipseOutlineGeometry-017a5929.js → EllipseOutlineGeometry-c5251669.js} +15 -15
  16. package/Build/Workers/{EllipsoidGeodesic-98c62a56.js → EllipsoidGeodesic-dcff5cbd.js} +6 -6
  17. package/Build/Workers/{EllipsoidGeometry-826e7bce.js → EllipsoidGeometry-d10a5221.js} +14 -14
  18. package/Build/Workers/{EllipsoidOutlineGeometry-784dcdb5.js → EllipsoidOutlineGeometry-7039a0ae.js} +15 -15
  19. package/Build/Workers/{EllipsoidRhumbLine-19756602.js → EllipsoidRhumbLine-b672d507.js} +9 -9
  20. package/Build/Workers/{EllipsoidTangentPlane-ed9443a1.js → EllipsoidTangentPlane-857186be.js} +1 -1
  21. package/Build/Workers/{EncodedCartesian3-81f70735.js → EncodedCartesian3-e8bbca36.js} +6 -6
  22. package/Build/Workers/{FrustumGeometry-9f1ee4d8.js → FrustumGeometry-400fa1b7.js} +109 -109
  23. package/Build/Workers/{GeometryAttribute-334718f8.js → GeometryAttribute-7a2de5c6.js} +20 -20
  24. package/Build/Workers/{GeometryAttributes-f06a2792.js → GeometryAttributes-ad136444.js} +1 -1
  25. package/Build/Workers/{GeometryInstance-451dc1cd.js → GeometryInstance-3fb607b7.js} +6 -6
  26. package/Build/Workers/{GeometryPipeline-8fb0db69.js → GeometryPipeline-916636fa.js} +22 -22
  27. package/Build/Workers/{IndexDatatype-a55ceaa1.js → IndexDatatype-b8f3e09d.js} +13 -13
  28. package/Build/Workers/{IntersectionTests-27d49265.js → IntersectionTests-b4d02d4d.js} +37 -37
  29. package/Build/Workers/{Math-2dbd6b93.js → Math-dad82b4d.js} +137 -137
  30. package/Build/Workers/{Matrix2-13178034.js → Matrix2-1e403d0e.js} +256 -256
  31. package/Build/Workers/{Matrix3-315394f6.js → Matrix3-fa806b97.js} +150 -150
  32. package/Build/Workers/{OrientedBoundingBox-79ee7cbb.js → OrientedBoundingBox-96fe1752.js} +19 -17
  33. package/Build/Workers/{Plane-900aa728.js → Plane-c27e1ac6.js} +5 -5
  34. package/Build/Workers/{PolygonGeometryLibrary-6b5a29e9.js → PolygonGeometryLibrary-931f1ec6.js} +6 -6
  35. package/Build/Workers/{PolygonPipeline-21668b3f.js → PolygonPipeline-32fc92cc.js} +14 -14
  36. package/Build/Workers/{PolylinePipeline-5e2e1b21.js → PolylinePipeline-6d5c63e5.js} +16 -16
  37. package/Build/Workers/{PolylineVolumeGeometryLibrary-97f0b94e.js → PolylineVolumeGeometryLibrary-f068c1fb.js} +7 -7
  38. package/Build/Workers/{PrimitivePipeline-5640850a.js → PrimitivePipeline-879f996a.js} +6 -6
  39. package/Build/Workers/{RectangleGeometryLibrary-d5457f7b.js → RectangleGeometryLibrary-2d6f36f3.js} +1 -1
  40. package/Build/Workers/{RuntimeError-06c93819.js → RuntimeError-ef395448.js} +5 -5
  41. package/Build/Workers/{TerrainEncoding-bfdf2021.js → TerrainEncoding-82882059.js} +30 -30
  42. package/Build/Workers/{Transforms-a05e5e6e.js → Transforms-9052372a.js} +531 -530
  43. package/Build/Workers/{VertexFormat-6b480673.js → VertexFormat-030f11ff.js} +14 -14
  44. package/Build/Workers/{WallGeometryLibrary-6db0ebb6.js → WallGeometryLibrary-db7a64fb.js} +1 -1
  45. package/Build/Workers/{WebGLConstants-a8cc3e8c.js → WebGLConstants-0b1ce7ba.js} +1 -1
  46. package/Build/Workers/{WebMercatorProjection-13a90d41.js → WebMercatorProjection-76a3fcc0.js} +6 -6
  47. package/Build/Workers/{arrayRemoveDuplicates-c2038105.js → arrayRemoveDuplicates-fac118a8.js} +5 -5
  48. package/Build/Workers/cesiumWorkerBootstrapper.js +5 -5
  49. package/Build/Workers/{combine-ca22a614.js → combine-d9581036.js} +5 -5
  50. package/Build/Workers/combineGeometry.js +1 -1
  51. package/Build/Workers/createBoxGeometry.js +1 -1
  52. package/Build/Workers/createBoxOutlineGeometry.js +9 -9
  53. package/Build/Workers/createCircleGeometry.js +13 -13
  54. package/Build/Workers/createCircleOutlineGeometry.js +13 -13
  55. package/Build/Workers/createCoplanarPolygonGeometry.js +11 -11
  56. package/Build/Workers/createCoplanarPolygonOutlineGeometry.js +9 -9
  57. package/Build/Workers/createCorridorGeometry.js +14 -14
  58. package/Build/Workers/createCorridorOutlineGeometry.js +12 -12
  59. package/Build/Workers/createCylinderGeometry.js +1 -1
  60. package/Build/Workers/createCylinderOutlineGeometry.js +13 -13
  61. package/Build/Workers/createEllipseGeometry.js +1 -1
  62. package/Build/Workers/createEllipseOutlineGeometry.js +1 -1
  63. package/Build/Workers/createEllipsoidGeometry.js +1 -1
  64. package/Build/Workers/createEllipsoidOutlineGeometry.js +1 -1
  65. package/Build/Workers/createFrustumGeometry.js +1 -1
  66. package/Build/Workers/createFrustumOutlineGeometry.js +8 -8
  67. package/Build/Workers/createGeometry.js +1 -1
  68. package/Build/Workers/createGroundPolylineGeometry.js +33 -33
  69. package/Build/Workers/createPlaneGeometry.js +8 -8
  70. package/Build/Workers/createPlaneOutlineGeometry.js +6 -6
  71. package/Build/Workers/createPolygonGeometry.js +25 -25
  72. package/Build/Workers/createPolygonOutlineGeometry.js +17 -17
  73. package/Build/Workers/createPolylineGeometry.js +11 -11
  74. package/Build/Workers/createPolylineVolumeGeometry.js +9 -9
  75. package/Build/Workers/createPolylineVolumeOutlineGeometry.js +9 -9
  76. package/Build/Workers/createRectangleGeometry.js +16 -16
  77. package/Build/Workers/createRectangleOutlineGeometry.js +12 -12
  78. package/Build/Workers/createSimplePolylineGeometry.js +10 -10
  79. package/Build/Workers/createSphereGeometry.js +11 -11
  80. package/Build/Workers/createSphereOutlineGeometry.js +12 -12
  81. package/Build/Workers/createTaskProcessorWorker.js +2 -2
  82. package/Build/Workers/createVectorTileClampedPolylines.js +1 -1
  83. package/Build/Workers/createVectorTileGeometries.js +8 -8
  84. package/Build/Workers/createVectorTilePoints.js +1 -1
  85. package/Build/Workers/createVectorTilePolygons.js +1 -1
  86. package/Build/Workers/createVectorTilePolylines.js +1 -1
  87. package/Build/Workers/createVerticesFromGoogleEarthEnterpriseBuffer.js +1 -1
  88. package/Build/Workers/createVerticesFromHeightmap.js +23 -21
  89. package/Build/Workers/createVerticesFromQuantizedTerrainMesh.js +33 -38
  90. package/Build/Workers/createWallGeometry.js +14 -14
  91. package/Build/Workers/createWallOutlineGeometry.js +14 -14
  92. package/Build/Workers/decodeDraco.js +1 -1
  93. package/Build/Workers/decodeGoogleEarthEnterprisePacket.js +15 -15
  94. package/Build/Workers/decodeI3S.js +1 -1
  95. package/Build/Workers/{defaultValue-0a909f67.js → defaultValue-fe22d8c0.js} +2 -2
  96. package/Build/Workers/package.js +1 -1
  97. package/Build/Workers/transcodeKTX2.js +26 -26
  98. package/Build/Workers/transferTypedArrayTest.js +1 -1
  99. package/Build/Workers/upsampleQuantizedTerrainMesh.js +24 -24
  100. package/Source/Core/ApproximateTerrainHeights.js +3 -3
  101. package/Source/Core/ArcGISTiledElevationTerrainProvider.js +308 -208
  102. package/Source/Core/ArcType.js +4 -4
  103. package/Source/Core/ArticulationStageType.js +1 -1
  104. package/Source/Core/AssociativeArray.js +7 -7
  105. package/Source/Core/AttributeCompression.js +12 -12
  106. package/Source/Core/AxisAlignedBoundingBox.js +2 -2
  107. package/Source/Core/BingMapsGeocoderService.js +6 -6
  108. package/Source/Core/BoundingRectangle.js +17 -17
  109. package/Source/Core/BoundingSphere.js +25 -25
  110. package/Source/Core/BoxGeometry.js +8 -8
  111. package/Source/Core/BoxOutlineGeometry.js +8 -8
  112. package/Source/Core/Cartesian2.js +38 -38
  113. package/Source/Core/Cartesian3.js +50 -50
  114. package/Source/Core/Cartesian4.js +44 -44
  115. package/Source/Core/Cartographic.js +19 -19
  116. package/Source/Core/CartographicGeocoderService.js +1 -1
  117. package/Source/Core/CatmullRomSpline.js +10 -10
  118. package/Source/Core/CesiumTerrainProvider.js +598 -461
  119. package/Source/Core/Check.js +17 -17
  120. package/Source/Core/CircleGeometry.js +12 -12
  121. package/Source/Core/CircleOutlineGeometry.js +12 -12
  122. package/Source/Core/Clock.js +7 -7
  123. package/Source/Core/ClockRange.js +4 -4
  124. package/Source/Core/ClockStep.js +4 -4
  125. package/Source/Core/Color.js +58 -58
  126. package/Source/Core/ColorGeometryInstanceAttribute.js +7 -7
  127. package/Source/Core/ComponentDatatype.js +15 -15
  128. package/Source/Core/CompressedTextureBuffer.js +7 -7
  129. package/Source/Core/ConstantSpline.js +9 -9
  130. package/Source/Core/CoplanarPolygonGeometry.js +10 -10
  131. package/Source/Core/CoplanarPolygonOutlineGeometry.js +8 -8
  132. package/Source/Core/CornerType.js +4 -4
  133. package/Source/Core/CorridorGeometry.js +13 -13
  134. package/Source/Core/CorridorOutlineGeometry.js +11 -11
  135. package/Source/Core/Credit.js +7 -7
  136. package/Source/Core/CubicRealPolynomial.js +10 -10
  137. package/Source/Core/CullingVolume.js +7 -7
  138. package/Source/Core/CustomHeightmapTerrainProvider.js +40 -28
  139. package/Source/Core/CylinderGeometry.js +11 -11
  140. package/Source/Core/CylinderOutlineGeometry.js +12 -12
  141. package/Source/Core/DefaultProxy.js +3 -3
  142. package/Source/Core/DeveloperError.js +4 -4
  143. package/Source/Core/DistanceDisplayCondition.js +12 -12
  144. package/Source/Core/DistanceDisplayConditionGeometryInstanceAttribute.js +5 -5
  145. package/Source/Core/DoubleEndedPriorityQueue.js +5 -5
  146. package/Source/Core/EarthOrientationParameters.js +6 -6
  147. package/Source/Core/EarthOrientationParametersSample.js +10 -10
  148. package/Source/Core/EasingFunction.js +2 -2
  149. package/Source/Core/EllipseGeometry.js +19 -19
  150. package/Source/Core/EllipseOutlineGeometry.js +14 -14
  151. package/Source/Core/Ellipsoid.js +20 -20
  152. package/Source/Core/EllipsoidGeodesic.js +5 -5
  153. package/Source/Core/EllipsoidGeometry.js +13 -13
  154. package/Source/Core/EllipsoidOutlineGeometry.js +14 -14
  155. package/Source/Core/EllipsoidRhumbLine.js +8 -8
  156. package/Source/Core/EllipsoidTerrainProvider.js +35 -28
  157. package/Source/Core/EllipsoidalOccluder.js +9 -9
  158. package/Source/Core/EncodedCartesian3.js +5 -5
  159. package/Source/Core/Event.js +4 -4
  160. package/Source/Core/EventHelper.js +1 -1
  161. package/Source/Core/ExtrapolationType.js +4 -4
  162. package/Source/Core/FeatureDetection.js +9 -9
  163. package/Source/Core/FrustumGeometry.js +8 -8
  164. package/Source/Core/FrustumOutlineGeometry.js +7 -7
  165. package/Source/Core/Fullscreen.js +8 -8
  166. package/Source/Core/GeocodeType.js +3 -3
  167. package/Source/Core/GeocoderService.js +3 -3
  168. package/Source/Core/GeographicTilingScheme.js +16 -16
  169. package/Source/Core/Geometry.js +5 -5
  170. package/Source/Core/GeometryAttribute.js +6 -6
  171. package/Source/Core/GeometryInstance.js +5 -5
  172. package/Source/Core/GeometryInstanceAttribute.js +7 -7
  173. package/Source/Core/GeometryPipeline.js +11 -11
  174. package/Source/Core/GoogleEarthEnterpriseMetadata.js +107 -55
  175. package/Source/Core/GoogleEarthEnterpriseTerrainData.js +29 -29
  176. package/Source/Core/GoogleEarthEnterpriseTerrainProvider.js +137 -100
  177. package/Source/Core/GoogleEarthEnterpriseTileInformation.js +14 -14
  178. package/Source/Core/GregorianDate.js +16 -16
  179. package/Source/Core/GroundPolylineGeometry.js +13 -13
  180. package/Source/Core/HeadingPitchRange.js +6 -6
  181. package/Source/Core/HeadingPitchRoll.js +18 -18
  182. package/Source/Core/Heap.js +7 -7
  183. package/Source/Core/HeightmapEncoding.js +3 -3
  184. package/Source/Core/HeightmapTerrainData.js +44 -44
  185. package/Source/Core/HeightmapTessellator.js +16 -16
  186. package/Source/Core/HermitePolynomialApproximation.js +17 -17
  187. package/Source/Core/HermiteSpline.js +17 -17
  188. package/Source/Core/HilbertOrder.js +7 -7
  189. package/Source/Core/Iau2006XysData.js +13 -13
  190. package/Source/Core/Iau2006XysSample.js +6 -6
  191. package/Source/Core/IauOrientationParameters.js +4 -4
  192. package/Source/Core/IndexDatatype.js +12 -12
  193. package/Source/Core/InterpolationAlgorithm.js +17 -17
  194. package/Source/Core/InterpolationType.js +1 -1
  195. package/Source/Core/Intersect.js +4 -4
  196. package/Source/Core/IntersectionTests.js +5 -5
  197. package/Source/Core/Intersections2D.js +23 -23
  198. package/Source/Core/Interval.js +4 -4
  199. package/Source/Core/Ion.js +3 -3
  200. package/Source/Core/IonGeocoderService.js +4 -4
  201. package/Source/Core/IonResource.js +20 -9
  202. package/Source/Core/JulianDate.js +27 -27
  203. package/Source/Core/KeyboardEventModifier.js +4 -4
  204. package/Source/Core/LagrangePolynomialApproximation.js +8 -8
  205. package/Source/Core/LeapSecond.js +2 -2
  206. package/Source/Core/LinearApproximation.js +8 -8
  207. package/Source/Core/LinearSpline.js +13 -13
  208. package/Source/Core/ManagedArray.js +8 -8
  209. package/Source/Core/Math.js +136 -136
  210. package/Source/Core/Matrix2.js +44 -44
  211. package/Source/Core/Matrix3.js +59 -59
  212. package/Source/Core/Matrix4.js +91 -91
  213. package/Source/Core/MorphWeightSpline.js +14 -14
  214. package/Source/Core/MortonOrder.js +21 -21
  215. package/Source/Core/NearFarScalar.js +16 -16
  216. package/Source/Core/Occluder.js +5 -5
  217. package/Source/Core/OffsetGeometryInstanceAttribute.js +5 -5
  218. package/Source/Core/OpenCageGeocoderService.js +18 -18
  219. package/Source/Core/OrientedBoundingBox.js +18 -16
  220. package/Source/Core/OrthographicFrustum.js +23 -23
  221. package/Source/Core/OrthographicOffCenterFrustum.js +21 -21
  222. package/Source/Core/Packable.js +7 -7
  223. package/Source/Core/PackableForInterpolation.js +11 -11
  224. package/Source/Core/PeliasGeocoderService.js +2 -2
  225. package/Source/Core/PerspectiveFrustum.js +28 -28
  226. package/Source/Core/PerspectiveOffCenterFrustum.js +21 -21
  227. package/Source/Core/PinBuilder.js +9 -9
  228. package/Source/Core/PixelFormat.js +23 -23
  229. package/Source/Core/Plane.js +4 -4
  230. package/Source/Core/PlaneGeometry.js +7 -7
  231. package/Source/Core/PlaneOutlineGeometry.js +5 -5
  232. package/Source/Core/PolygonGeometry.js +24 -24
  233. package/Source/Core/PolygonGeometryLibrary.js +4 -4
  234. package/Source/Core/PolygonOutlineGeometry.js +16 -16
  235. package/Source/Core/PolygonPipeline.js +10 -10
  236. package/Source/Core/PolylineGeometry.js +10 -10
  237. package/Source/Core/PolylinePipeline.js +15 -15
  238. package/Source/Core/PolylineVolumeGeometry.js +8 -8
  239. package/Source/Core/PolylineVolumeOutlineGeometry.js +8 -8
  240. package/Source/Core/PrimitiveType.js +8 -8
  241. package/Source/Core/Proxy.js +2 -2
  242. package/Source/Core/QuadraticRealPolynomial.js +8 -8
  243. package/Source/Core/QuantizedMeshTerrainData.js +37 -37
  244. package/Source/Core/QuarticRealPolynomial.js +12 -12
  245. package/Source/Core/Quaternion.js +42 -42
  246. package/Source/Core/QuaternionSpline.js +10 -10
  247. package/Source/Core/Queue.js +2 -2
  248. package/Source/Core/Ray.js +1 -1
  249. package/Source/Core/Rectangle.js +38 -38
  250. package/Source/Core/RectangleCollisionChecker.js +3 -3
  251. package/Source/Core/RectangleGeometry.js +15 -15
  252. package/Source/Core/RectangleOutlineGeometry.js +11 -11
  253. package/Source/Core/ReferenceFrame.js +3 -3
  254. package/Source/Core/Request.js +13 -13
  255. package/Source/Core/RequestErrorEvent.js +7 -7
  256. package/Source/Core/RequestScheduler.js +15 -15
  257. package/Source/Core/RequestState.js +7 -7
  258. package/Source/Core/RequestType.js +5 -5
  259. package/Source/Core/Resource.js +225 -225
  260. package/Source/Core/RuntimeError.js +4 -4
  261. package/Source/Core/S2Cell.js +15 -15
  262. package/Source/Core/ScreenSpaceEventHandler.js +7 -7
  263. package/Source/Core/ScreenSpaceEventType.js +16 -16
  264. package/Source/Core/ShowGeometryInstanceAttribute.js +4 -4
  265. package/Source/Core/SimplePolylineGeometry.js +9 -9
  266. package/Source/Core/SphereGeometry.js +10 -10
  267. package/Source/Core/SphereOutlineGeometry.js +11 -11
  268. package/Source/Core/Spherical.js +13 -13
  269. package/Source/Core/Spline.js +14 -14
  270. package/Source/Core/SteppedSpline.js +14 -14
  271. package/Source/Core/TaskProcessor.js +10 -10
  272. package/Source/Core/TerrainData.js +25 -25
  273. package/Source/Core/TerrainEncoding.js +14 -14
  274. package/Source/Core/TerrainExaggeration.js +3 -3
  275. package/Source/Core/TerrainMesh.js +18 -18
  276. package/Source/Core/TerrainProvider.js +32 -37
  277. package/Source/Core/TerrainQuantization.js +3 -3
  278. package/Source/Core/TileAvailability.js +16 -16
  279. package/Source/Core/TileProviderError.js +19 -19
  280. package/Source/Core/TilingScheme.js +13 -13
  281. package/Source/Core/TimeConstants.js +10 -10
  282. package/Source/Core/TimeInterval.js +23 -23
  283. package/Source/Core/TimeIntervalCollection.js +39 -39
  284. package/Source/Core/TimeStandard.js +3 -3
  285. package/Source/Core/Tipsify.js +10 -10
  286. package/Source/Core/Transforms.js +2 -2
  287. package/Source/Core/TranslationRotationScale.js +1 -1
  288. package/Source/Core/TridiagonalSystemSolver.js +3 -3
  289. package/Source/Core/TrustedServers.js +5 -5
  290. package/Source/Core/VRTheWorldTerrainProvider.js +210 -141
  291. package/Source/Core/VertexFormat.js +13 -13
  292. package/Source/Core/VideoSynchronizer.js +4 -4
  293. package/Source/Core/Visibility.js +4 -4
  294. package/Source/Core/VulkanConstants.js +1 -1
  295. package/Source/Core/WallGeometry.js +13 -13
  296. package/Source/Core/WallOutlineGeometry.js +13 -13
  297. package/Source/Core/WebGLConstants.js +1 -1
  298. package/Source/Core/WebMercatorProjection.js +5 -5
  299. package/Source/Core/WebMercatorTilingScheme.js +16 -16
  300. package/Source/Core/WindingOrder.js +3 -3
  301. package/Source/Core/WireframeIndexGenerator.js +3 -3
  302. package/Source/Core/arrayRemoveDuplicates.js +4 -4
  303. package/Source/Core/binarySearch.js +2 -2
  304. package/Source/Core/buildModuleUrl.js +8 -7
  305. package/Source/Core/clone.js +3 -3
  306. package/Source/Core/combine.js +4 -4
  307. package/Source/Core/createGuid.js +1 -1
  308. package/Source/Core/createWorldTerrain.js +23 -5
  309. package/Source/Core/createWorldTerrainAsync.js +48 -0
  310. package/Source/Core/defaultValue.js +1 -1
  311. package/Source/Core/defer.js +1 -1
  312. package/Source/Core/defined.js +1 -1
  313. package/Source/Core/deprecationWarning.js +2 -2
  314. package/Source/Core/destroyObject.js +2 -2
  315. package/Source/Core/formatError.js +1 -1
  316. package/Source/Core/getAbsoluteUri.js +3 -3
  317. package/Source/Core/getBaseUri.js +3 -3
  318. package/Source/Core/getExtensionFromUri.js +2 -2
  319. package/Source/Core/getFilenameFromUri.js +2 -2
  320. package/Source/Core/getImageFromTypedArray.js +2 -2
  321. package/Source/Core/getImagePixels.js +4 -3
  322. package/Source/Core/getJsonFromTypedArray.js +3 -3
  323. package/Source/Core/getStringFromTypedArray.js +3 -3
  324. package/Source/Core/getTimestamp.js +1 -1
  325. package/Source/Core/isBlobUri.js +2 -2
  326. package/Source/Core/isDataUri.js +2 -2
  327. package/Source/Core/isLeapYear.js +2 -2
  328. package/Source/Core/loadKTX2.js +8 -8
  329. package/Source/Core/mergeSort.js +1 -1
  330. package/Source/Core/objectToQuery.js +2 -2
  331. package/Source/Core/oneTimeWarning.js +2 -2
  332. package/Source/Core/parseResponseHeaders.js +2 -2
  333. package/Source/Core/pointInsideTriangle.js +1 -1
  334. package/Source/Core/queryToObject.js +2 -2
  335. package/Source/Core/sampleTerrain.js +16 -17
  336. package/Source/Core/sampleTerrainMostDetailed.js +67 -73
  337. package/Source/Core/scaleToGeodeticSurface.js +1 -1
  338. package/Source/Core/subdivideArray.js +1 -1
  339. package/Source/Core/writeTextToCanvas.js +10 -9
  340. package/Source/DataSources/BillboardGraphics.js +1 -1
  341. package/Source/DataSources/BillboardVisualizer.js +2 -2
  342. package/Source/DataSources/BoundingSphereState.js +1 -1
  343. package/Source/DataSources/BoxGraphics.js +1 -1
  344. package/Source/DataSources/CallbackProperty.js +8 -8
  345. package/Source/DataSources/Cesium3DTilesetGraphics.js +1 -1
  346. package/Source/DataSources/Cesium3DTilesetVisualizer.js +39 -28
  347. package/Source/DataSources/CheckerboardMaterialProperty.js +6 -6
  348. package/Source/DataSources/ColorMaterialProperty.js +5 -5
  349. package/Source/DataSources/CompositeEntityCollection.js +8 -8
  350. package/Source/DataSources/CompositeMaterialProperty.js +5 -5
  351. package/Source/DataSources/CompositePositionProperty.js +2 -2
  352. package/Source/DataSources/CompositeProperty.js +4 -4
  353. package/Source/DataSources/ConstantPositionProperty.js +4 -4
  354. package/Source/DataSources/ConstantProperty.js +5 -5
  355. package/Source/DataSources/CorridorGraphics.js +1 -1
  356. package/Source/DataSources/CustomDataSource.js +5 -5
  357. package/Source/DataSources/CylinderGraphics.js +1 -1
  358. package/Source/DataSources/CzmlDataSource.js +26 -26
  359. package/Source/DataSources/DataSource.js +4 -4
  360. package/Source/DataSources/DataSourceClock.js +2 -2
  361. package/Source/DataSources/DataSourceCollection.js +11 -11
  362. package/Source/DataSources/DataSourceDisplay.js +5 -5
  363. package/Source/DataSources/DynamicGeometryUpdater.js +1 -1
  364. package/Source/DataSources/EllipseGraphics.js +1 -1
  365. package/Source/DataSources/EllipsoidGeometryUpdater.js +2 -2
  366. package/Source/DataSources/EllipsoidGraphics.js +1 -1
  367. package/Source/DataSources/Entity.js +20 -15
  368. package/Source/DataSources/EntityCluster.js +16 -16
  369. package/Source/DataSources/EntityCollection.js +8 -8
  370. package/Source/DataSources/GeoJsonDataSource.js +27 -27
  371. package/Source/DataSources/GeometryUpdater.js +22 -22
  372. package/Source/DataSources/GeometryVisualizer.js +2 -2
  373. package/Source/DataSources/GpxDataSource.js +23 -23
  374. package/Source/DataSources/GridMaterialProperty.js +7 -7
  375. package/Source/DataSources/GroundGeometryUpdater.js +5 -5
  376. package/Source/DataSources/ImageMaterialProperty.js +8 -8
  377. package/Source/DataSources/KmlDataSource.js +32 -32
  378. package/Source/DataSources/KmlTour.js +7 -7
  379. package/Source/DataSources/KmlTourFlyTo.js +6 -6
  380. package/Source/DataSources/KmlTourWait.js +2 -2
  381. package/Source/DataSources/LabelGraphics.js +1 -1
  382. package/Source/DataSources/LabelVisualizer.js +2 -2
  383. package/Source/DataSources/MaterialProperty.js +5 -5
  384. package/Source/DataSources/ModelGraphics.js +3 -3
  385. package/Source/DataSources/ModelVisualizer.js +101 -33
  386. package/Source/DataSources/NodeTransformationProperty.js +3 -3
  387. package/Source/DataSources/PathGraphics.js +1 -1
  388. package/Source/DataSources/PathVisualizer.js +2 -2
  389. package/Source/DataSources/PlaneGraphics.js +1 -1
  390. package/Source/DataSources/PointGraphics.js +1 -1
  391. package/Source/DataSources/PointVisualizer.js +2 -2
  392. package/Source/DataSources/PolygonGraphics.js +4 -4
  393. package/Source/DataSources/PolylineArrowMaterialProperty.js +5 -5
  394. package/Source/DataSources/PolylineDashMaterialProperty.js +8 -8
  395. package/Source/DataSources/PolylineGeometryUpdater.js +13 -13
  396. package/Source/DataSources/PolylineGlowMaterialProperty.js +8 -8
  397. package/Source/DataSources/PolylineGraphics.js +2 -2
  398. package/Source/DataSources/PolylineOutlineMaterialProperty.js +7 -7
  399. package/Source/DataSources/PolylineVisualizer.js +2 -2
  400. package/Source/DataSources/PolylineVolumeGraphics.js +3 -3
  401. package/Source/DataSources/PositionProperty.js +2 -2
  402. package/Source/DataSources/PositionPropertyArray.js +2 -2
  403. package/Source/DataSources/Property.js +4 -4
  404. package/Source/DataSources/PropertyArray.js +2 -2
  405. package/Source/DataSources/PropertyBag.js +10 -10
  406. package/Source/DataSources/RectangleGraphics.js +1 -1
  407. package/Source/DataSources/ReferenceProperty.js +10 -10
  408. package/Source/DataSources/Rotation.js +14 -14
  409. package/Source/DataSources/SampledPositionProperty.js +11 -11
  410. package/Source/DataSources/SampledProperty.js +12 -12
  411. package/Source/DataSources/StripeMaterialProperty.js +8 -8
  412. package/Source/DataSources/StripeOrientation.js +3 -3
  413. package/Source/DataSources/TerrainOffsetProperty.js +1 -1
  414. package/Source/DataSources/TimeIntervalCollectionPositionProperty.js +3 -3
  415. package/Source/DataSources/TimeIntervalCollectionProperty.js +4 -4
  416. package/Source/DataSources/VelocityOrientationProperty.js +2 -2
  417. package/Source/DataSources/VelocityVectorProperty.js +4 -4
  418. package/Source/DataSources/Visualizer.js +2 -2
  419. package/Source/DataSources/WallGraphics.js +4 -4
  420. package/Source/DataSources/exportKml.js +9 -9
  421. package/Source/Renderer/Buffer.js +4 -4
  422. package/Source/Renderer/ClearCommand.js +3 -3
  423. package/Source/Renderer/ComputeCommand.js +3 -3
  424. package/Source/Renderer/Context.js +46 -46
  425. package/Source/Renderer/ContextLimits.js +22 -22
  426. package/Source/Renderer/CubeMapFace.js +11 -11
  427. package/Source/Renderer/DrawCommand.js +15 -15
  428. package/Source/Renderer/Framebuffer.js +4 -4
  429. package/Source/Renderer/FramebufferManager.js +9 -9
  430. package/Source/Renderer/MultisampleFramebuffer.js +1 -1
  431. package/Source/Renderer/PassState.js +2 -2
  432. package/Source/Renderer/PixelDatatype.js +1 -1
  433. package/Source/Renderer/RenderState.js +1 -1
  434. package/Source/Renderer/ShaderBuilder.js +24 -24
  435. package/Source/Renderer/ShaderCache.js +8 -8
  436. package/Source/Renderer/ShaderDestination.js +2 -2
  437. package/Source/Renderer/ShaderFunction.js +3 -3
  438. package/Source/Renderer/ShaderSource.js +8 -8
  439. package/Source/Renderer/ShaderStruct.js +4 -4
  440. package/Source/Renderer/Texture.js +18 -18
  441. package/Source/Renderer/TextureMagnificationFilter.js +4 -4
  442. package/Source/Renderer/TextureMinificationFilter.js +8 -8
  443. package/Source/Renderer/UniformState.js +14 -14
  444. package/Source/Renderer/VertexArray.js +2 -2
  445. package/Source/Renderer/createUniform.js +12 -12
  446. package/Source/Renderer/createUniformArray.js +12 -12
  447. package/Source/Renderer/freezeRenderState.js +2 -2
  448. package/Source/Renderer/loadCubeMap.js +3 -3
  449. package/Source/Scene/AlphaMode.js +4 -4
  450. package/Source/Scene/Appearance.js +14 -14
  451. package/Source/Scene/ArcGisMapServerImageryProvider.js +585 -409
  452. package/Source/Scene/AttributeType.js +11 -11
  453. package/Source/Scene/AutoExposure.js +6 -6
  454. package/Source/Scene/Axis.js +6 -6
  455. package/Source/Scene/B3dmParser.js +2 -2
  456. package/Source/Scene/BatchTable.js +13 -13
  457. package/Source/Scene/BatchTableHierarchy.js +22 -22
  458. package/Source/Scene/BatchTexture.js +14 -14
  459. package/Source/Scene/Billboard.js +17 -17
  460. package/Source/Scene/BillboardCollection.js +13 -13
  461. package/Source/Scene/BingMapsImageryProvider.js +541 -335
  462. package/Source/Scene/BingMapsStyle.js +11 -11
  463. package/Source/Scene/BlendEquation.js +6 -6
  464. package/Source/Scene/BlendFunction.js +16 -16
  465. package/Source/Scene/BlendOption.js +4 -4
  466. package/Source/Scene/BlendingState.js +4 -4
  467. package/Source/Scene/BufferLoader.js +33 -38
  468. package/Source/Scene/Camera.js +57 -57
  469. package/Source/Scene/CameraEventAggregator.js +26 -16
  470. package/Source/Scene/CameraEventType.js +6 -6
  471. package/Source/Scene/Cesium3DContentGroup.js +1 -1
  472. package/Source/Scene/Cesium3DTile.js +409 -272
  473. package/Source/Scene/Cesium3DTileBatchTable.js +3 -3
  474. package/Source/Scene/Cesium3DTileColorBlendMode.js +4 -4
  475. package/Source/Scene/Cesium3DTileContent.js +31 -15
  476. package/Source/Scene/Cesium3DTileContentFactory.js +4 -4
  477. package/Source/Scene/Cesium3DTileContentType.js +17 -17
  478. package/Source/Scene/Cesium3DTileFeature.js +16 -16
  479. package/Source/Scene/Cesium3DTileOptimizationHint.js +1 -1
  480. package/Source/Scene/Cesium3DTileOptimizations.js +1 -1
  481. package/Source/Scene/Cesium3DTilePass.js +8 -11
  482. package/Source/Scene/Cesium3DTilePassState.js +1 -1
  483. package/Source/Scene/Cesium3DTilePointFeature.js +23 -23
  484. package/Source/Scene/Cesium3DTileRefine.js +3 -3
  485. package/Source/Scene/Cesium3DTileStyle.js +17 -17
  486. package/Source/Scene/Cesium3DTileStyleEngine.js +1 -1
  487. package/Source/Scene/Cesium3DTilesVoxelProvider.js +226 -118
  488. package/Source/Scene/Cesium3DTileset.js +817 -543
  489. package/Source/Scene/Cesium3DTilesetBaseTraversal.js +301 -0
  490. package/Source/Scene/Cesium3DTilesetHeatmap.js +4 -4
  491. package/Source/Scene/Cesium3DTilesetMetadata.js +5 -5
  492. package/Source/Scene/Cesium3DTilesetMostDetailedTraversal.js +33 -46
  493. package/Source/Scene/Cesium3DTilesetSkipTraversal.js +421 -0
  494. package/Source/Scene/Cesium3DTilesetTraversal.js +219 -671
  495. package/Source/Scene/CircleEmitter.js +2 -2
  496. package/Source/Scene/ClassificationPrimitive.js +32 -25
  497. package/Source/Scene/ClassificationType.js +4 -4
  498. package/Source/Scene/ClippingPlane.js +2 -2
  499. package/Source/Scene/ClippingPlaneCollection.js +17 -17
  500. package/Source/Scene/CloudCollection.js +16 -16
  501. package/Source/Scene/CloudType.js +3 -3
  502. package/Source/Scene/ColorBlendMode.js +1 -1
  503. package/Source/Scene/Composite3DTileContent.js +69 -26
  504. package/Source/Scene/ConditionsExpression.js +11 -11
  505. package/Source/Scene/ConeEmitter.js +2 -2
  506. package/Source/Scene/ContentMetadata.js +16 -16
  507. package/Source/Scene/CreditDisplay.js +22 -6
  508. package/Source/Scene/CullFace.js +4 -4
  509. package/Source/Scene/CumulusCloud.js +3 -3
  510. package/Source/Scene/DebugAppearance.js +17 -17
  511. package/Source/Scene/DebugCameraPrimitive.js +7 -7
  512. package/Source/Scene/DebugModelMatrixPrimitive.js +9 -9
  513. package/Source/Scene/DepthFunction.js +9 -9
  514. package/Source/Scene/DepthPlane.js +1 -1
  515. package/Source/Scene/DeviceOrientationCameraController.js +1 -1
  516. package/Source/Scene/DirectionalLight.js +3 -3
  517. package/Source/Scene/DiscardEmptyTileImagePolicy.js +2 -2
  518. package/Source/Scene/DiscardMissingTileImagePolicy.js +5 -5
  519. package/Source/Scene/DracoLoader.js +4 -4
  520. package/Source/Scene/EllipsoidPrimitive.js +8 -8
  521. package/Source/Scene/EllipsoidSurfaceAppearance.js +19 -19
  522. package/Source/Scene/Empty3DTileContent.js +31 -1
  523. package/Source/Scene/Expression.js +14 -14
  524. package/Source/Scene/Fog.js +5 -5
  525. package/Source/Scene/FrameRateMonitor.js +14 -14
  526. package/Source/Scene/FrameState.js +36 -36
  527. package/Source/Scene/FrustumCommands.js +2 -2
  528. package/Source/Scene/Geometry3DTileContent.js +47 -7
  529. package/Source/Scene/GetFeatureInfoFormat.js +2 -2
  530. package/Source/Scene/Globe.js +39 -35
  531. package/Source/Scene/GlobeSurfaceTile.js +3 -2
  532. package/Source/Scene/GlobeSurfaceTileProvider.js +56 -33
  533. package/Source/Scene/GlobeTranslucency.js +3 -3
  534. package/Source/Scene/GltfBufferViewLoader.js +52 -96
  535. package/Source/Scene/GltfDracoLoader.js +117 -119
  536. package/Source/Scene/GltfImageLoader.js +77 -84
  537. package/Source/Scene/GltfIndexBufferLoader.js +118 -131
  538. package/Source/Scene/GltfJsonLoader.js +81 -80
  539. package/Source/Scene/GltfLoader.js +413 -301
  540. package/Source/Scene/GltfLoaderUtil.js +11 -11
  541. package/Source/Scene/GltfPipeline/addBuffer.js +2 -2
  542. package/Source/Scene/GltfPipeline/addDefaults.js +2 -2
  543. package/Source/Scene/GltfPipeline/addExtensionsRequired.js +2 -2
  544. package/Source/Scene/GltfPipeline/addExtensionsUsed.js +2 -2
  545. package/Source/Scene/GltfPipeline/addPipelineExtras.js +2 -2
  546. package/Source/Scene/GltfPipeline/addToArray.js +2 -2
  547. package/Source/Scene/GltfPipeline/findAccessorMinMax.js +2 -2
  548. package/Source/Scene/GltfPipeline/forEachTextureInMaterial.js +3 -3
  549. package/Source/Scene/GltfPipeline/getAccessorByteStride.js +3 -3
  550. package/Source/Scene/GltfPipeline/getComponentReader.js +5 -5
  551. package/Source/Scene/GltfPipeline/moveTechniqueRenderStates.js +2 -2
  552. package/Source/Scene/GltfPipeline/moveTechniquesToExtension.js +2 -2
  553. package/Source/Scene/GltfPipeline/numberOfComponentsForType.js +2 -2
  554. package/Source/Scene/GltfPipeline/parseGlb.js +1 -1
  555. package/Source/Scene/GltfPipeline/readAccessorPacked.js +2 -2
  556. package/Source/Scene/GltfPipeline/removeExtension.js +2 -2
  557. package/Source/Scene/GltfPipeline/removeExtensionsRequired.js +2 -2
  558. package/Source/Scene/GltfPipeline/removeExtensionsUsed.js +2 -2
  559. package/Source/Scene/GltfPipeline/removePipelineExtras.js +2 -2
  560. package/Source/Scene/GltfPipeline/removeUnusedElements.js +2 -2
  561. package/Source/Scene/GltfPipeline/updateAccessorComponentTypes.js +2 -2
  562. package/Source/Scene/GltfPipeline/updateVersion.js +4 -4
  563. package/Source/Scene/GltfPipeline/usesExtension.js +3 -3
  564. package/Source/Scene/GltfStructuralMetadataLoader.js +117 -118
  565. package/Source/Scene/GltfTextureLoader.js +104 -103
  566. package/Source/Scene/GltfVertexBufferLoader.js +140 -145
  567. package/Source/Scene/GoogleEarthEnterpriseImageryProvider.js +377 -249
  568. package/Source/Scene/GoogleEarthEnterpriseMapsProvider.js +520 -360
  569. package/Source/Scene/GridImageryProvider.js +292 -129
  570. package/Source/Scene/GroundPolylinePrimitive.js +32 -21
  571. package/Source/Scene/GroundPrimitive.js +34 -27
  572. package/Source/Scene/GroupMetadata.js +17 -17
  573. package/Source/Scene/HeightReference.js +4 -4
  574. package/Source/Scene/HorizontalOrigin.js +4 -4
  575. package/Source/Scene/I3SDataProvider.js +221 -120
  576. package/Source/Scene/I3SFeature.js +8 -7
  577. package/Source/Scene/I3SField.js +5 -5
  578. package/Source/Scene/I3SGeometry.js +8 -8
  579. package/Source/Scene/I3SLayer.js +33 -44
  580. package/Source/Scene/I3SNode.js +65 -72
  581. package/Source/Scene/I3dmParser.js +2 -2
  582. package/Source/Scene/ImageBasedLighting.js +21 -17
  583. package/Source/Scene/Imagery.js +6 -1
  584. package/Source/Scene/ImageryLayer.js +324 -73
  585. package/Source/Scene/ImageryLayerCollection.js +37 -11
  586. package/Source/Scene/ImageryLayerFeatureInfo.js +6 -6
  587. package/Source/Scene/ImageryProvider.js +151 -133
  588. package/Source/Scene/Implicit3DTileContent.js +128 -79
  589. package/Source/Scene/ImplicitAvailabilityBitstream.js +10 -10
  590. package/Source/Scene/ImplicitMetadataView.js +16 -16
  591. package/Source/Scene/ImplicitSubdivisionScheme.js +4 -4
  592. package/Source/Scene/ImplicitSubtree.js +113 -92
  593. package/Source/Scene/ImplicitSubtreeCache.js +6 -6
  594. package/Source/Scene/ImplicitSubtreeMetadata.js +16 -16
  595. package/Source/Scene/ImplicitTileCoordinates.js +27 -27
  596. package/Source/Scene/ImplicitTileset.js +10 -10
  597. package/Source/Scene/InstanceAttributeSemantic.js +5 -5
  598. package/Source/Scene/IonImageryProvider.js +493 -286
  599. package/Source/Scene/IonWorldImageryStyle.js +4 -4
  600. package/Source/Scene/JsonMetadataTable.js +11 -11
  601. package/Source/Scene/KeyframeNode.js +1 -1
  602. package/Source/Scene/Label.js +14 -14
  603. package/Source/Scene/LabelCollection.js +12 -11
  604. package/Source/Scene/LabelStyle.js +4 -4
  605. package/Source/Scene/Light.js +1 -1
  606. package/Source/Scene/MapMode2D.js +3 -3
  607. package/Source/Scene/MapboxImageryProvider.js +301 -141
  608. package/Source/Scene/MapboxStyleImageryProvider.js +301 -142
  609. package/Source/Scene/Material.js +47 -47
  610. package/Source/Scene/MaterialAppearance.js +21 -21
  611. package/Source/Scene/Megatexture.js +15 -15
  612. package/Source/Scene/MetadataClass.js +16 -16
  613. package/Source/Scene/MetadataClassProperty.js +41 -41
  614. package/Source/Scene/MetadataComponentType.js +21 -21
  615. package/Source/Scene/MetadataEntity.js +31 -31
  616. package/Source/Scene/MetadataEnum.js +14 -14
  617. package/Source/Scene/MetadataEnumValue.js +10 -10
  618. package/Source/Scene/MetadataSchema.js +16 -16
  619. package/Source/Scene/MetadataSchemaLoader.js +31 -41
  620. package/Source/Scene/MetadataSemantic.js +17 -17
  621. package/Source/Scene/MetadataTable.js +24 -24
  622. package/Source/Scene/MetadataTableProperty.js +9 -9
  623. package/Source/Scene/MetadataType.js +15 -15
  624. package/Source/Scene/Model/B3dmLoader.js +54 -58
  625. package/Source/Scene/Model/ClassificationModelDrawCommand.js +3 -3
  626. package/Source/Scene/Model/CustomShader.js +18 -18
  627. package/Source/Scene/Model/CustomShaderMode.js +4 -4
  628. package/Source/Scene/Model/CustomShaderTranslucencyMode.js +4 -4
  629. package/Source/Scene/Model/GeoJsonLoader.js +12 -36
  630. package/Source/Scene/Model/I3dmLoader.js +58 -84
  631. package/Source/Scene/Model/LightingModel.js +3 -3
  632. package/Source/Scene/Model/MaterialPipelineStage.js +6 -6
  633. package/Source/Scene/Model/MetadataPipelineStage.js +25 -26
  634. package/Source/Scene/Model/Model.js +531 -193
  635. package/Source/Scene/Model/Model3DTileContent.js +83 -31
  636. package/Source/Scene/Model/ModelAlphaOptions.js +1 -1
  637. package/Source/Scene/Model/ModelAnimation.js +11 -11
  638. package/Source/Scene/Model/ModelAnimationChannel.js +2 -2
  639. package/Source/Scene/Model/ModelAnimationCollection.js +21 -21
  640. package/Source/Scene/Model/ModelArticulation.js +4 -4
  641. package/Source/Scene/Model/ModelArticulationStage.js +5 -5
  642. package/Source/Scene/Model/ModelDrawCommand.js +18 -29
  643. package/Source/Scene/Model/ModelFeature.js +12 -12
  644. package/Source/Scene/Model/ModelFeatureTable.js +5 -5
  645. package/Source/Scene/Model/ModelLightingOptions.js +1 -1
  646. package/Source/Scene/Model/ModelNode.js +3 -3
  647. package/Source/Scene/Model/ModelRenderResources.js +4 -4
  648. package/Source/Scene/Model/ModelRuntimeNode.js +7 -7
  649. package/Source/Scene/Model/ModelRuntimePrimitive.js +3 -3
  650. package/Source/Scene/Model/ModelSceneGraph.js +11 -11
  651. package/Source/Scene/Model/ModelSilhouettePipelineStage.js +1 -1
  652. package/Source/Scene/Model/ModelSkin.js +1 -1
  653. package/Source/Scene/Model/ModelStatistics.js +7 -7
  654. package/Source/Scene/Model/ModelType.js +8 -8
  655. package/Source/Scene/Model/ModelUtility.js +26 -26
  656. package/Source/Scene/Model/NodeRenderResources.js +7 -7
  657. package/Source/Scene/Model/PntsLoader.js +32 -37
  658. package/Source/Scene/Model/PointCloudStylingPipelineStage.js +1 -1
  659. package/Source/Scene/Model/PrimitiveOutlineGenerator.js +28 -28
  660. package/Source/Scene/Model/PrimitiveRenderResources.js +10 -10
  661. package/Source/Scene/Model/StyleCommandsNeeded.js +1 -1
  662. package/Source/Scene/Model/TextureManager.js +3 -3
  663. package/Source/Scene/Model/TextureUniform.js +6 -6
  664. package/Source/Scene/Model/UniformType.js +17 -17
  665. package/Source/Scene/Model/VaryingType.js +8 -8
  666. package/Source/Scene/ModelAnimationLoop.js +4 -4
  667. package/Source/Scene/ModelComponents.js +61 -61
  668. package/Source/Scene/Moon.js +8 -8
  669. package/Source/Scene/Multiple3DTileContent.js +146 -127
  670. package/Source/Scene/NeverTileDiscardPolicy.js +2 -2
  671. package/Source/Scene/OIT.js +9 -9
  672. package/Source/Scene/OctahedralProjectedCubeMap.js +28 -39
  673. package/Source/Scene/OpenStreetMapImageryProvider.js +6 -6
  674. package/Source/Scene/OrderedGroundPrimitiveCollection.js +9 -9
  675. package/Source/Scene/Particle.js +13 -13
  676. package/Source/Scene/ParticleBurst.js +8 -8
  677. package/Source/Scene/ParticleSystem.js +41 -36
  678. package/Source/Scene/PerInstanceColorAppearance.js +18 -18
  679. package/Source/Scene/PerformanceDisplay.js +2 -2
  680. package/Source/Scene/PntsParser.js +1 -1
  681. package/Source/Scene/PointCloud.js +11 -19
  682. package/Source/Scene/PointCloudEyeDomeLighting.js +1 -1
  683. package/Source/Scene/PointCloudShading.js +20 -20
  684. package/Source/Scene/PointPrimitive.js +6 -6
  685. package/Source/Scene/PointPrimitiveCollection.js +11 -11
  686. package/Source/Scene/Polyline.js +9 -9
  687. package/Source/Scene/PolylineCollection.js +11 -11
  688. package/Source/Scene/PolylineColorAppearance.js +13 -13
  689. package/Source/Scene/PolylineMaterialAppearance.js +13 -13
  690. package/Source/Scene/PostProcessStage.js +15 -15
  691. package/Source/Scene/PostProcessStageCollection.js +10 -10
  692. package/Source/Scene/PostProcessStageComposite.js +13 -13
  693. package/Source/Scene/PostProcessStageLibrary.js +8 -8
  694. package/Source/Scene/PostProcessStageSampleMode.js +3 -3
  695. package/Source/Scene/PostProcessStageTextureCache.js +4 -4
  696. package/Source/Scene/Primitive.js +50 -30
  697. package/Source/Scene/PrimitiveCollection.js +20 -20
  698. package/Source/Scene/PrimitiveLoadPlan.js +6 -6
  699. package/Source/Scene/PropertyAttribute.js +9 -9
  700. package/Source/Scene/PropertyAttributeProperty.js +6 -6
  701. package/Source/Scene/PropertyTable.js +34 -34
  702. package/Source/Scene/PropertyTexture.js +9 -9
  703. package/Source/Scene/PropertyTextureProperty.js +8 -8
  704. package/Source/Scene/QuadtreePrimitive.js +11 -9
  705. package/Source/Scene/QuadtreeTile.js +11 -11
  706. package/Source/Scene/QuadtreeTileLoadState.js +1 -1
  707. package/Source/Scene/QuadtreeTileProvider.js +10 -14
  708. package/Source/Scene/ResourceCache.js +85 -143
  709. package/Source/Scene/ResourceCacheKey.js +42 -42
  710. package/Source/Scene/ResourceCacheStatistics.js +26 -60
  711. package/Source/Scene/ResourceLoader.js +9 -21
  712. package/Source/Scene/ResourceLoaderState.js +16 -8
  713. package/Source/Scene/SDFSettings.js +4 -4
  714. package/Source/Scene/Scene.js +153 -88
  715. package/Source/Scene/SceneMode.js +6 -6
  716. package/Source/Scene/SceneTransitioner.js +1 -1
  717. package/Source/Scene/ScreenSpaceCameraController.js +41 -23
  718. package/Source/Scene/ShadowMap.js +22 -22
  719. package/Source/Scene/ShadowMapShader.js +1 -1
  720. package/Source/Scene/ShadowMode.js +5 -5
  721. package/Source/Scene/ShadowVolumeAppearance.js +17 -17
  722. package/Source/Scene/SingleTileImageryProvider.js +403 -230
  723. package/Source/Scene/SkyAtmosphere.js +10 -10
  724. package/Source/Scene/SkyBox.js +6 -6
  725. package/Source/Scene/SpatialNode.js +103 -87
  726. package/Source/Scene/SphereEmitter.js +2 -2
  727. package/Source/Scene/SplitDirection.js +4 -4
  728. package/Source/Scene/Splitter.js +2 -2
  729. package/Source/Scene/StencilFunction.js +9 -9
  730. package/Source/Scene/StencilOperation.js +9 -9
  731. package/Source/Scene/StructuralMetadata.js +11 -11
  732. package/Source/Scene/StyleExpression.js +8 -8
  733. package/Source/Scene/Sun.js +3 -3
  734. package/Source/Scene/SunLight.js +3 -3
  735. package/Source/Scene/SupportedImageFormats.js +3 -3
  736. package/Source/Scene/Terrain.js +196 -0
  737. package/Source/Scene/TextureAtlas.js +16 -16
  738. package/Source/Scene/TileBoundingRegion.js +6 -6
  739. package/Source/Scene/TileBoundingS2Cell.js +6 -6
  740. package/Source/Scene/TileBoundingSphere.js +5 -5
  741. package/Source/Scene/TileBoundingVolume.js +2 -2
  742. package/Source/Scene/TileCoordinatesImageryProvider.js +289 -126
  743. package/Source/Scene/TileDiscardPolicy.js +2 -2
  744. package/Source/Scene/TileImagery.js +3 -3
  745. package/Source/Scene/TileMapServiceImageryProvider.js +185 -93
  746. package/Source/Scene/TileMetadata.js +16 -16
  747. package/Source/Scene/TileOrientedBoundingBox.js +2 -2
  748. package/Source/Scene/TileReplacementQueue.js +1 -1
  749. package/Source/Scene/TileSelectionResult.js +1 -1
  750. package/Source/Scene/Tileset3DTileContent.js +47 -5
  751. package/Source/Scene/TilesetMetadata.js +15 -15
  752. package/Source/Scene/TimeDynamicImagery.js +8 -8
  753. package/Source/Scene/TimeDynamicPointCloud.js +24 -11
  754. package/Source/Scene/Tonemapper.js +5 -5
  755. package/Source/Scene/TranslucentTileClassification.js +1 -1
  756. package/Source/Scene/TweenCollection.js +31 -31
  757. package/Source/Scene/UrlTemplateImageryProvider.js +380 -252
  758. package/Source/Scene/Vector3DTileBatch.js +7 -7
  759. package/Source/Scene/Vector3DTileClampedPolylines.js +105 -93
  760. package/Source/Scene/Vector3DTileContent.js +47 -22
  761. package/Source/Scene/Vector3DTileGeometry.js +65 -60
  762. package/Source/Scene/Vector3DTilePoints.js +79 -75
  763. package/Source/Scene/Vector3DTilePolygons.js +128 -127
  764. package/Source/Scene/Vector3DTilePolylines.js +95 -91
  765. package/Source/Scene/Vector3DTilePrimitive.js +8 -9
  766. package/Source/Scene/VertexAttributeSemantic.js +15 -15
  767. package/Source/Scene/VerticalOrigin.js +5 -5
  768. package/Source/Scene/ViewportQuad.js +2 -2
  769. package/Source/Scene/VoxelBoxShape.js +27 -118
  770. package/Source/Scene/VoxelContent.js +63 -65
  771. package/Source/Scene/VoxelCylinderShape.js +21 -21
  772. package/Source/Scene/VoxelEllipsoidShape.js +13 -13
  773. package/Source/Scene/VoxelPrimitive.js +83 -135
  774. package/Source/Scene/VoxelProvider.js +15 -15
  775. package/Source/Scene/VoxelRenderResources.js +6 -3
  776. package/Source/Scene/VoxelShape.js +9 -9
  777. package/Source/Scene/VoxelShapeType.js +4 -4
  778. package/Source/Scene/VoxelTraversal.js +86 -144
  779. package/Source/Scene/WebMapServiceImageryProvider.js +313 -152
  780. package/Source/Scene/WebMapTileServiceImageryProvider.js +305 -142
  781. package/Source/Scene/buildVoxelDrawCommands.js +1 -0
  782. package/Source/Scene/computeFlyToLocationForRectangle.js +33 -37
  783. package/Source/Scene/createBillboardPointCallback.js +5 -5
  784. package/Source/Scene/createElevationBandMaterial.js +5 -5
  785. package/Source/Scene/createOsmBuildings.js +9 -3
  786. package/Source/Scene/createOsmBuildingsAsync.js +82 -0
  787. package/Source/Scene/createTangentSpaceDebugPrimitive.js +2 -2
  788. package/Source/Scene/createWorldImagery.js +15 -6
  789. package/Source/Scene/createWorldImageryAsync.js +39 -0
  790. package/Source/Scene/findContentMetadata.js +1 -1
  791. package/Source/Scene/findGroupMetadata.js +1 -1
  792. package/Source/Scene/findTileMetadata.js +1 -1
  793. package/Source/Scene/getClipAndStyleCode.js +4 -4
  794. package/Source/Scene/getClippingFunction.js +1 -1
  795. package/Source/Scene/hasExtension.js +3 -3
  796. package/Source/Scene/parseBatchTable.js +14 -14
  797. package/Source/Scene/parseBoundingVolumeSemantics.js +7 -7
  798. package/Source/Scene/parseFeatureMetadataLegacy.js +4 -4
  799. package/Source/Scene/parseStructuralMetadata.js +4 -4
  800. package/Source/Scene/preprocess3DTileContent.js +2 -2
  801. package/Source/Scene/processVoxelProperties.js +8 -7
  802. package/Source/Shaders/Voxels/IntersectBox.glsl +52 -58
  803. package/Source/Shaders/Voxels/IntersectBox.js +52 -58
  804. package/Source/Shaders/Voxels/IntersectClippingPlanes.glsl +38 -30
  805. package/Source/Shaders/Voxels/IntersectClippingPlanes.js +38 -30
  806. package/Source/Shaders/Voxels/IntersectDepth.glsl +1 -1
  807. package/Source/Shaders/Voxels/IntersectDepth.js +1 -1
  808. package/Source/Shaders/Voxels/Intersection.glsl +10 -12
  809. package/Source/Shaders/Voxels/Intersection.js +10 -12
  810. package/Source/Shaders/Voxels/IntersectionUtils.glsl +52 -59
  811. package/Source/Shaders/Voxels/IntersectionUtils.js +52 -59
  812. package/Source/Shaders/Voxels/Octree.glsl +72 -73
  813. package/Source/Shaders/Voxels/Octree.js +72 -73
  814. package/Source/Shaders/Voxels/VoxelFS.glsl +42 -22
  815. package/Source/Shaders/Voxels/VoxelFS.js +42 -22
  816. package/Source/Shaders/Voxels/convertUvToBox.glsl +13 -5
  817. package/Source/Shaders/Voxels/convertUvToBox.js +13 -5
  818. package/Source/ThirdParty/Workers/draco_decoder_nodejs.js +91 -91
  819. package/Source/ThirdParty/draco_decoder.wasm +0 -0
  820. package/Source/Widget/CesiumWidget.js +78 -50
  821. package/Source/Workers/cesiumWorkerBootstrapper.js +18 -18
  822. package/Source/WorkersES6/createTaskProcessorWorker.js +3 -3
  823. package/index.d.ts +2172 -1432
  824. package/index.js +8 -3
  825. package/package.json +1 -1
  826. package/Source/Core/cancelAnimationFrame.js +0 -53
  827. package/Source/Core/requestAnimationFrame.js +0 -83
  828. /package/Build/Workers/{GeometryOffsetAttribute-04332ce7.js → GeometryOffsetAttribute-9ad0019c.js} +0 -0
@@ -52,6 +52,10 @@ import Pass from "../Renderer/Pass.js";
52
52
  *
53
53
  * @alias Cesium3DTile
54
54
  * @constructor
55
+ * @param {Cesium3DTileset} tileset The tileset
56
+ * @param {Resource} baseResource The base resource for the tileset
57
+ * @param {object} header The JSON header for the tile
58
+ * @param {Cesium3DTile} parent The parent tile of the new tile
55
59
  */
56
60
  function Cesium3DTile(tileset, baseResource, header, parent) {
57
61
  this._tileset = tileset;
@@ -138,7 +142,7 @@ function Cesium3DTile(tileset, baseResource, header, parent) {
138
142
  * The error, in meters, introduced if this tile is rendered and its children are not.
139
143
  * This is used to compute screen space error, i.e., the error measured in pixels.
140
144
  *
141
- * @type {Number}
145
+ * @type {number}
142
146
  * @readonly
143
147
  */
144
148
  this.geometricError = header.geometricError;
@@ -255,8 +259,6 @@ function Cesium3DTile(tileset, baseResource, header, parent) {
255
259
  this._content = content;
256
260
  this._contentResource = contentResource;
257
261
  this._contentState = contentState;
258
- this._contentReadyToProcessPromise = undefined;
259
- this._contentReadyPromise = undefined;
260
262
  this._expiredContent = undefined;
261
263
 
262
264
  this._serverKey = serverKey;
@@ -264,7 +266,7 @@ function Cesium3DTile(tileset, baseResource, header, parent) {
264
266
  /**
265
267
  * When <code>true</code>, the tile has no content.
266
268
  *
267
- * @type {Boolean}
269
+ * @type {boolean}
268
270
  * @readonly
269
271
  *
270
272
  * @private
@@ -277,7 +279,7 @@ function Cesium3DTile(tileset, baseResource, header, parent) {
277
279
  * This is <code>false</code> until the tile's content is loaded.
278
280
  * </p>
279
281
  *
280
- * @type {Boolean}
282
+ * @type {boolean}
281
283
  * @readonly
282
284
  *
283
285
  * @private
@@ -290,7 +292,7 @@ function Cesium3DTile(tileset, baseResource, header, parent) {
290
292
  * This is <code>false</code> until the tile's implicit content is loaded.
291
293
  * </p>
292
294
  *
293
- * @type {Boolean}
295
+ * @type {boolean}
294
296
  * @readonly
295
297
  *
296
298
  * @private
@@ -305,7 +307,7 @@ function Cesium3DTile(tileset, baseResource, header, parent) {
305
307
  * This is <code>false</code> until the tile's content is loaded.
306
308
  * </p>
307
309
  *
308
- * @type {Boolean}
310
+ * @type {boolean}
309
311
  * @readonly
310
312
  *
311
313
  * @private
@@ -319,7 +321,7 @@ function Cesium3DTile(tileset, baseResource, header, parent) {
319
321
  *
320
322
  * @see {@link https://github.com/CesiumGS/3d-tiles/tree/main/extensions/3DTILES_multiple_contents|3DTILES_multiple_contents extension}
321
323
  *
322
- * @type {Boolean}
324
+ * @type {boolean}
323
325
  * @readonly
324
326
  *
325
327
  * @private
@@ -362,7 +364,7 @@ function Cesium3DTile(tileset, baseResource, header, parent) {
362
364
  /**
363
365
  * The time in seconds after the tile's content is ready when the content expires and new content is requested.
364
366
  *
365
- * @type {Number}
367
+ * @type {number}
366
368
  */
367
369
  this.expireDuration = expireDuration;
368
370
 
@@ -376,7 +378,7 @@ function Cesium3DTile(tileset, baseResource, header, parent) {
376
378
  /**
377
379
  * The time when a style was last applied to this tile.
378
380
  *
379
- * @type {Number}
381
+ * @type {number}
380
382
  *
381
383
  * @private
382
384
  */
@@ -395,7 +397,7 @@ function Cesium3DTile(tileset, baseResource, header, parent) {
395
397
  * Tracks if the tile's relationship with a ClippingPlaneCollection has changed with regards
396
398
  * to the ClippingPlaneCollection's state.
397
399
  *
398
- * @type {Boolean}
400
+ * @type {boolean}
399
401
  *
400
402
  * @private
401
403
  */
@@ -405,7 +407,7 @@ function Cesium3DTile(tileset, baseResource, header, parent) {
405
407
  * Tracks if the tile's request should be deferred until all non-deferred
406
408
  * tiles load.
407
409
  *
408
- * @type {Boolean}
410
+ * @type {boolean}
409
411
  *
410
412
  * @private
411
413
  */
@@ -574,13 +576,29 @@ Object.defineProperties(Cesium3DTile.prototype, {
574
576
  },
575
577
  },
576
578
 
579
+ /**
580
+ * Determines if the tile is visible within the current field of view
581
+ *
582
+ * @memberof Cesium3DTile.prototype
583
+ *
584
+ * @type {boolean}
585
+ * @readonly
586
+ *
587
+ * @private
588
+ */
589
+ isVisible: {
590
+ get: function () {
591
+ return this._visible && this._inRequestVolume;
592
+ },
593
+ },
594
+
577
595
  /**
578
596
  * Returns the <code>extras</code> property in the tileset JSON for this tile, which contains application specific metadata.
579
597
  * Returns <code>undefined</code> if <code>extras</code> does not exist.
580
598
  *
581
599
  * @memberof Cesium3DTile.prototype
582
600
  *
583
- * @type {*}
601
+ * @type {object}
584
602
  * @readonly
585
603
  * @see {@link https://github.com/CesiumGS/3d-tiles/tree/main/specification#specifying-extensions-and-application-specific-extras|Extras in the 3D Tiles specification.}
586
604
  */
@@ -614,6 +632,27 @@ Object.defineProperties(Cesium3DTile.prototype, {
614
632
  },
615
633
  },
616
634
 
635
+ /**
636
+ * Determines if the tile's content is renderable. <code>false</code> if the
637
+ * tile has empty content or if it points to an external tileset or implicit content
638
+ *
639
+ * @memberof Cesium3DTile.prototype
640
+ *
641
+ * @type {boolean}
642
+ * @readonly
643
+ *
644
+ * @private
645
+ */
646
+ hasRenderableContent: {
647
+ get: function () {
648
+ return (
649
+ !this.hasEmptyContent &&
650
+ !this.hasTilesetContent &&
651
+ !this.hasImplicitContent
652
+ );
653
+ },
654
+ },
655
+
617
656
  /**
618
657
  * Determines if the tile has available content to render. <code>true</code> if the tile's
619
658
  * content is ready or if it has expired content that renders while new content loads; otherwise,
@@ -621,7 +660,7 @@ Object.defineProperties(Cesium3DTile.prototype, {
621
660
  *
622
661
  * @memberof Cesium3DTile.prototype
623
662
  *
624
- * @type {Boolean}
663
+ * @type {boolean}
625
664
  * @readonly
626
665
  *
627
666
  * @private
@@ -629,10 +668,7 @@ Object.defineProperties(Cesium3DTile.prototype, {
629
668
  contentAvailable: {
630
669
  get: function () {
631
670
  return (
632
- (this.contentReady &&
633
- !this.hasEmptyContent &&
634
- !this.hasTilesetContent &&
635
- !this.hasImplicitContent) ||
671
+ (this.contentReady && this.hasRenderableContent) ||
636
672
  (defined(this._expiredContent) && !this.contentFailed)
637
673
  );
638
674
  },
@@ -644,7 +680,7 @@ Object.defineProperties(Cesium3DTile.prototype, {
644
680
  *
645
681
  * @memberof Cesium3DTile.prototype
646
682
  *
647
- * @type {Boolean}
683
+ * @type {boolean}
648
684
  * @readonly
649
685
  *
650
686
  * @private
@@ -661,7 +697,7 @@ Object.defineProperties(Cesium3DTile.prototype, {
661
697
  *
662
698
  * @memberof Cesium3DTile.prototype
663
699
  *
664
- * @type {Boolean}
700
+ * @type {boolean}
665
701
  * @readonly
666
702
  *
667
703
  * @private
@@ -673,72 +709,52 @@ Object.defineProperties(Cesium3DTile.prototype, {
673
709
  },
674
710
 
675
711
  /**
676
- * Determines if the tile's content is expired. <code>true</code> if tile's
677
- * content is expired; otherwise, <code>false</code>.
712
+ * Determines if the tile has renderable content which is unloaded
678
713
  *
679
714
  * @memberof Cesium3DTile.prototype
680
715
  *
681
- * @type {Boolean}
716
+ * @type {boolean}
682
717
  * @readonly
683
718
  *
684
719
  * @private
685
720
  */
686
- contentExpired: {
721
+ hasUnloadedRenderableContent: {
687
722
  get: function () {
688
- return this._contentState === Cesium3DTileContentState.EXPIRED;
723
+ return this.hasRenderableContent && this.contentUnloaded;
689
724
  },
690
725
  },
691
726
 
692
727
  /**
693
- * Determines if the tile's content failed to load. <code>true</code> if the tile's
694
- * content failed to load; otherwise, <code>false</code>.
728
+ * Determines if the tile's content is expired. <code>true</code> if tile's
729
+ * content is expired; otherwise, <code>false</code>.
695
730
  *
696
731
  * @memberof Cesium3DTile.prototype
697
732
  *
698
- * @type {Boolean}
733
+ * @type {boolean}
699
734
  * @readonly
700
735
  *
701
736
  * @private
702
737
  */
703
- contentFailed: {
738
+ contentExpired: {
704
739
  get: function () {
705
- return this._contentState === Cesium3DTileContentState.FAILED;
740
+ return this._contentState === Cesium3DTileContentState.EXPIRED;
706
741
  },
707
742
  },
708
743
 
709
744
  /**
710
- * Gets the promise that will be resolved when the tile's content is ready to process.
711
- * This happens after the content is downloaded but before the content is ready
712
- * to render.
713
- * <p>
714
- * The promise remains <code>undefined</code> until the tile's content is requested.
715
- * </p>
716
- *
717
- * @type {Promise.<Cesium3DTileContent>}
718
- * @readonly
745
+ * Determines if the tile's content failed to load. <code>true</code> if the tile's
746
+ * content failed to load; otherwise, <code>false</code>.
719
747
  *
720
- * @private
721
- */
722
- contentReadyToProcessPromise: {
723
- get: function () {
724
- return this._contentReadyToProcessPromise;
725
- },
726
- },
727
-
728
- /**
729
- * Gets the promise that will be resolved when the tile's content is ready to render.
730
- * <p>
731
- * The promise remains <code>undefined</code> until the tile's content is requested.
732
- * </p>
748
+ * @memberof Cesium3DTile.prototype
733
749
  *
734
- * @type {Promise.<Cesium3DTileContent>}
750
+ * @type {boolean}
735
751
  * @readonly
736
752
  *
737
753
  * @private
738
754
  */
739
- contentReadyPromise: {
755
+ contentFailed: {
740
756
  get: function () {
741
- return this._contentReadyPromise;
757
+ return this._contentState === Cesium3DTileContentState.FAILED;
742
758
  },
743
759
  },
744
760
 
@@ -757,13 +773,20 @@ Object.defineProperties(Cesium3DTile.prototype, {
757
773
  });
758
774
 
759
775
  const scratchCartesian = new Cartesian3();
776
+
777
+ /**
778
+ * @private
779
+ * @param {Cesium3DTile} tile
780
+ * @param {FrameState} frameState
781
+ * @returns {Boolean}
782
+ */
760
783
  function isPriorityDeferred(tile, frameState) {
761
- const tileset = tile._tileset;
784
+ const { tileset, boundingSphere } = tile;
785
+ const { radius, center } = boundingSphere;
786
+ const { camera } = frameState;
762
787
 
763
- // If closest point on line is inside the sphere then set foveatedFactor to 0. Otherwise, the dot product is with the line from camera to the point on the sphere that is closest to the line.
764
- const camera = frameState.camera;
765
- const boundingSphere = tile.boundingSphere;
766
- const radius = boundingSphere.radius;
788
+ // If closest point on line is inside the sphere then set foveatedFactor to 0.
789
+ // Otherwise, the dot product is with the line from camera to the point on the sphere that is closest to the line.
767
790
  const scaledCameraDirection = Cartesian3.multiplyByScalar(
768
791
  camera.directionWC,
769
792
  tile._centerZDepth,
@@ -777,7 +800,7 @@ function isPriorityDeferred(tile, frameState) {
777
800
  // The distance from the camera's view direction to the tile.
778
801
  const toLine = Cartesian3.subtract(
779
802
  closestPointOnLine,
780
- boundingSphere.center,
803
+ center,
781
804
  scratchCartesian
782
805
  );
783
806
  const distanceToCenterLine = Cartesian3.magnitude(toLine);
@@ -795,7 +818,7 @@ function isPriorityDeferred(tile, frameState) {
795
818
  scratchCartesian
796
819
  );
797
820
  const closestOnSphere = Cartesian3.add(
798
- boundingSphere.center,
821
+ center,
799
822
  scaledToLine,
800
823
  scratchCartesian
801
824
  );
@@ -818,7 +841,7 @@ function isPriorityDeferred(tile, frameState) {
818
841
  // Skip this feature if: non-skipLevelOfDetail and replace refine, if the foveated settings are turned off, if tile is progressive resolution and replace refine and skipLevelOfDetail (will help get rid of ancestor artifacts faster)
819
842
  // Or if the tile is a preload of any kind
820
843
  const replace = tile.refine === Cesium3DTileRefine.REPLACE;
821
- const skipLevelOfDetail = tileset._skipLevelOfDetail;
844
+ const skipLevelOfDetail = tileset.isSkippingLevelOfDetail;
822
845
  if (
823
846
  (replace && !skipLevelOfDetail) ||
824
847
  !tileset.foveatedScreenSpaceError ||
@@ -864,6 +887,9 @@ const scratchJulianDate = new JulianDate();
864
887
  * Get the tile's screen space error.
865
888
  *
866
889
  * @private
890
+ * @param {FrameState} frameState
891
+ * @param {Boolean} useParentGeometricError
892
+ * @param {number} progressiveResolutionHeightFraction
867
893
  */
868
894
  Cesium3DTile.prototype.getScreenSpaceError = function (
869
895
  frameState,
@@ -882,9 +908,8 @@ Cesium3DTile.prototype.getScreenSpaceError = function (
882
908
  // Leaf tiles do not have any error so save the computation
883
909
  return 0.0;
884
910
  }
885
- const camera = frameState.camera;
911
+ const { camera, context } = frameState;
886
912
  let frustum = camera.frustum;
887
- const context = frameState.context;
888
913
  const width = context.drawingBufferWidth;
889
914
  const height = context.drawingBufferHeight * heightFraction;
890
915
  let error;
@@ -902,7 +927,7 @@ Cesium3DTile.prototype.getScreenSpaceError = function (
902
927
  } else {
903
928
  // Avoid divide by zero when viewer is inside the tile
904
929
  const distance = Math.max(this._distanceToCamera, CesiumMath.EPSILON7);
905
- const sseDenominator = camera.frustum.sseDenominator;
930
+ const sseDenominator = frustum.sseDenominator;
906
931
  error = (geometricError * height) / (distance * sseDenominator);
907
932
  if (tileset.dynamicScreenSpaceError) {
908
933
  const density = tileset._dynamicScreenSpaceErrorComputedDensity;
@@ -917,6 +942,12 @@ Cesium3DTile.prototype.getScreenSpaceError = function (
917
942
  return error;
918
943
  };
919
944
 
945
+ /**
946
+ * @private
947
+ * @param {Cesium3DTileset} tileset
948
+ * @param {Cesium3DTile} tile
949
+ * @returns {Boolean}
950
+ */
920
951
  function isPriorityProgressiveResolution(tileset, tile) {
921
952
  if (
922
953
  tileset.progressiveResolutionHeightFraction <= 0.0 ||
@@ -944,11 +975,17 @@ function isPriorityProgressiveResolution(tileset, tile) {
944
975
  return isProgressiveResolutionTile;
945
976
  }
946
977
 
978
+ /**
979
+ * @private
980
+ * @param {Cesium3DTileset} tileset
981
+ * @param {Cesium3DTile} tile
982
+ * @returns {number}
983
+ */
947
984
  function getPriorityReverseScreenSpaceError(tileset, tile) {
948
985
  const parent = tile.parent;
949
986
  const useParentScreenSpaceError =
950
987
  defined(parent) &&
951
- (!tileset._skipLevelOfDetail ||
988
+ (!tileset.isSkippingLevelOfDetail ||
952
989
  tile._screenSpaceError === 0.0 ||
953
990
  parent.hasTilesetContent ||
954
991
  parent.hasImplicitContent);
@@ -962,10 +999,15 @@ function getPriorityReverseScreenSpaceError(tileset, tile) {
962
999
  * Update the tile's visibility.
963
1000
  *
964
1001
  * @private
1002
+ * @param {FrameState} frameState
965
1003
  */
966
1004
  Cesium3DTile.prototype.updateVisibility = function (frameState) {
967
- const parent = this.parent;
968
- const tileset = this._tileset;
1005
+ const { parent, tileset } = this;
1006
+ if (this._updatedVisibilityFrame === tileset._updatedVisibilityFrame) {
1007
+ // The tile has already been updated for this frame
1008
+ return;
1009
+ }
1010
+
969
1011
  const parentTransform = defined(parent)
970
1012
  ? parent.computedTransform
971
1013
  : tileset.modelMatrix;
@@ -996,6 +1038,8 @@ Cesium3DTile.prototype.updateVisibility = function (frameState) {
996
1038
  this
997
1039
  );
998
1040
  this.priorityDeferred = isPriorityDeferred(this, frameState);
1041
+
1042
+ this._updatedVisibilityFrame = tileset._updatedVisibilityFrame;
999
1043
  };
1000
1044
 
1001
1045
  /**
@@ -1018,25 +1062,35 @@ Cesium3DTile.prototype.updateExpiration = function () {
1018
1062
  }
1019
1063
  };
1020
1064
 
1065
+ /**
1066
+ * @private
1067
+ * @param {Cesium3DTile} tile
1068
+ */
1021
1069
  function updateExpireDate(tile) {
1022
- if (defined(tile.expireDuration)) {
1023
- const expireDurationDate = JulianDate.now(scratchJulianDate);
1024
- JulianDate.addSeconds(
1025
- expireDurationDate,
1026
- tile.expireDuration,
1027
- expireDurationDate
1028
- );
1070
+ if (!defined(tile.expireDuration)) {
1071
+ return;
1072
+ }
1073
+ const expireDurationDate = JulianDate.now(scratchJulianDate);
1074
+ JulianDate.addSeconds(
1075
+ expireDurationDate,
1076
+ tile.expireDuration,
1077
+ expireDurationDate
1078
+ );
1029
1079
 
1030
- if (defined(tile.expireDate)) {
1031
- if (JulianDate.lessThan(tile.expireDate, expireDurationDate)) {
1032
- JulianDate.clone(expireDurationDate, tile.expireDate);
1033
- }
1034
- } else {
1035
- tile.expireDate = JulianDate.clone(expireDurationDate);
1080
+ if (defined(tile.expireDate)) {
1081
+ if (JulianDate.lessThan(tile.expireDate, expireDurationDate)) {
1082
+ JulianDate.clone(expireDurationDate, tile.expireDate);
1036
1083
  }
1084
+ } else {
1085
+ tile.expireDate = JulianDate.clone(expireDurationDate);
1037
1086
  }
1038
1087
  }
1039
1088
 
1089
+ /**
1090
+ * @private
1091
+ * @param {Cesium3DTile} tile
1092
+ * @returns {Function}
1093
+ */
1040
1094
  function createPriorityFunction(tile) {
1041
1095
  return function () {
1042
1096
  return tile._priority;
@@ -1049,13 +1103,13 @@ function createPriorityFunction(tile) {
1049
1103
  * The request may not be made if the Cesium Request Scheduler can't prioritize it.
1050
1104
  * </p>
1051
1105
  *
1052
- * @return {Number} The number of requests that were attempted but not scheduled.
1106
+ * @return {Promise<Cesium3DTileContent>|undefined} A promise that resolves when the request completes, or undefined if there is no request needed, or the request cannot be scheduled.
1053
1107
  * @private
1054
1108
  */
1055
1109
  Cesium3DTile.prototype.requestContent = function () {
1056
1110
  // empty contents don't require any HTTP requests
1057
1111
  if (this.hasEmptyContent) {
1058
- return 0;
1112
+ return;
1059
1113
  }
1060
1114
 
1061
1115
  if (this.hasMultipleContents) {
@@ -1076,6 +1130,8 @@ Cesium3DTile.prototype.requestContent = function () {
1076
1130
  * </p>
1077
1131
  *
1078
1132
  * @private
1133
+ * @param {Cesium3DTile} tile
1134
+ * @returns {Promise<Cesium3DTileContent>|Promise<undefined>|undefined} A promise that resolves to the tile content once loaded, or a promise that resolves to undefined if the request was cancelled mid-flight, or undefined if the request cannot be scheduled this frame
1079
1135
  */
1080
1136
  function requestMultipleContents(tile) {
1081
1137
  let multipleContents = tile._content;
@@ -1097,86 +1153,120 @@ function requestMultipleContents(tile) {
1097
1153
  tile._content = multipleContents;
1098
1154
  }
1099
1155
 
1100
- const backloggedRequestCount = multipleContents.requestInnerContents();
1101
- if (backloggedRequestCount > 0) {
1102
- return backloggedRequestCount;
1156
+ const promise = multipleContents.requestInnerContents();
1157
+
1158
+ if (!defined(promise)) {
1159
+ // Request could not all be scheduled this frame
1160
+ return;
1103
1161
  }
1104
1162
 
1105
1163
  tile._contentState = Cesium3DTileContentState.LOADING;
1106
- const contentReadyToProcessPromise = multipleContents.contentsFetchedPromise.then(
1107
- function () {
1108
- if (
1109
- tile._contentState !== Cesium3DTileContentState.LOADING ||
1110
- !defined(multipleContents.readyPromise)
1111
- ) {
1112
- // The tile or one of the inner content requests was canceled,
1113
- // short circuit.
1114
- return;
1115
- }
1116
-
1164
+ return promise
1165
+ .then((content) => {
1117
1166
  if (tile.isDestroyed()) {
1118
- multipleContentFailed(
1119
- tile,
1120
- tileset,
1121
- "Tile was unloaded while content was loading"
1122
- );
1167
+ // Tile is unloaded before the content can process
1123
1168
  return;
1124
1169
  }
1125
1170
 
1126
- tile._contentState = Cesium3DTileContentState.PROCESSING;
1127
- return multipleContents;
1128
- }
1129
- );
1130
- tile._contentReadyToProcessPromise = contentReadyToProcessPromise;
1131
- tile._contentReadyPromise = contentReadyToProcessPromise
1132
- .then(function (content) {
1171
+ // Tile was canceled, try again later
1133
1172
  if (!defined(content)) {
1134
- // request was canceled, short circuit.
1135
1173
  return;
1136
1174
  }
1137
1175
 
1138
- return multipleContents.readyPromise;
1176
+ tile._contentState = Cesium3DTileContentState.PROCESSING;
1177
+ return multipleContents;
1139
1178
  })
1140
- .then(function (content) {
1141
- if (!defined(content)) {
1142
- // tile was canceled, short circuit.
1143
- return;
1144
- }
1145
-
1179
+ .catch((error) => {
1146
1180
  if (tile.isDestroyed()) {
1147
- multipleContentFailed(
1148
- tile,
1149
- tileset,
1150
- "Tile was unloaded while content was processing"
1151
- );
1181
+ // Tile is unloaded before the content can process
1152
1182
  return;
1153
1183
  }
1154
1184
 
1155
- // Refresh style for expired content
1156
- tile._selectedFrame = 0;
1157
- tile.lastStyleTime = 0.0;
1158
-
1159
- JulianDate.now(tile._loadTimestamp);
1160
- tile._contentState = Cesium3DTileContentState.READY;
1161
- return content;
1162
- })
1163
- .catch(function (error) {
1164
- multipleContentFailed(tile, tileset, error);
1185
+ tile._contentState = Cesium3DTileContentState.FAILED;
1186
+ throw error;
1165
1187
  });
1166
-
1167
- return 0;
1168
1188
  }
1169
1189
 
1170
- function multipleContentFailed(tile, tileset, error) {
1171
- // note: The Multiple3DTileContent handles decrementing the number of pending
1172
- // requests if the state is LOADING.
1173
- if (tile._contentState === Cesium3DTileContentState.PROCESSING) {
1174
- --tileset.statistics.numberOfTilesProcessing;
1190
+ async function processArrayBuffer(
1191
+ tile,
1192
+ tileset,
1193
+ request,
1194
+ expired,
1195
+ requestPromise
1196
+ ) {
1197
+ const previousState = tile._contentState;
1198
+ tile._contentState = Cesium3DTileContentState.LOADING;
1199
+ ++tileset.statistics.numberOfPendingRequests;
1200
+
1201
+ let arrayBuffer;
1202
+ try {
1203
+ arrayBuffer = await requestPromise;
1204
+ } catch (error) {
1205
+ --tileset.statistics.numberOfPendingRequests;
1206
+ if (tile.isDestroyed()) {
1207
+ // Tile is unloaded before the content can process
1208
+ return;
1209
+ }
1210
+
1211
+ if (request.cancelled || request.state === RequestState.CANCELLED) {
1212
+ // Cancelled due to low priority - try again later.
1213
+ tile._contentState = previousState;
1214
+ ++tileset.statistics.numberOfAttemptedRequests;
1215
+ return;
1216
+ }
1217
+
1218
+ tile._contentState = Cesium3DTileContentState.FAILED;
1219
+ throw error;
1220
+ }
1221
+
1222
+ if (tile.isDestroyed()) {
1223
+ --tileset.statistics.numberOfPendingRequests;
1224
+ // Tile is unloaded before the content can process
1225
+ return;
1226
+ }
1227
+
1228
+ if (request.cancelled || request.state === RequestState.CANCELLED) {
1229
+ // Cancelled due to low priority - try again later.
1230
+ tile._contentState = previousState;
1231
+ --tileset.statistics.numberOfPendingRequests;
1232
+ ++tileset.statistics.numberOfAttemptedRequests;
1233
+ return;
1175
1234
  }
1176
1235
 
1177
- tile._contentState = Cesium3DTileContentState.FAILED;
1236
+ try {
1237
+ const content = await makeContent(tile, arrayBuffer);
1238
+ --tileset.statistics.numberOfPendingRequests;
1239
+
1240
+ if (tile.isDestroyed()) {
1241
+ // Tile is unloaded before the content can process
1242
+ return;
1243
+ }
1244
+
1245
+ if (expired) {
1246
+ tile.expireDate = undefined;
1247
+ }
1248
+
1249
+ tile._content = content;
1250
+ tile._contentState = Cesium3DTileContentState.PROCESSING;
1251
+
1252
+ return content;
1253
+ } catch (error) {
1254
+ --tileset.statistics.numberOfPendingRequests;
1255
+ if (tile.isDestroyed()) {
1256
+ // Tile is unloaded before the content can process
1257
+ return;
1258
+ }
1259
+
1260
+ tile._contentState = Cesium3DTileContentState.FAILED;
1261
+ throw error;
1262
+ }
1178
1263
  }
1179
1264
 
1265
+ /**
1266
+ * @private
1267
+ * @param {Cesium3DTile} tile
1268
+ * @returns {Promise<Cesium3DTileContent>|Promise<undefined>|undefined} A promise that resolves to the tile content once loaded; a promise that resolves to undefined if the tile was destroyed before processing can happen or the request was cancelled mid-flight; or undefined if the request cannot be scheduled this frame.
1269
+ */
1180
1270
  function requestSingleContent(tile) {
1181
1271
  // it is important to clone here. The fetchArrayBuffer() below uses
1182
1272
  // throttling, but other uses of the resources do not.
@@ -1199,85 +1289,14 @@ function requestSingleContent(tile) {
1199
1289
 
1200
1290
  tile._request = request;
1201
1291
  resource.request = request;
1202
-
1292
+ const tileset = tile._tileset;
1203
1293
  const promise = resource.fetchArrayBuffer();
1204
1294
  if (!defined(promise)) {
1205
- return 1;
1295
+ ++tileset.statistics.numberOfAttemptedRequests;
1296
+ return;
1206
1297
  }
1207
1298
 
1208
- const previousState = tile._contentState;
1209
- const tileset = tile._tileset;
1210
- tile._contentState = Cesium3DTileContentState.LOADING;
1211
- ++tileset.statistics.numberOfPendingRequests;
1212
- const contentReadyToProcessPromise = promise.then(function (arrayBuffer) {
1213
- if (tile.isDestroyed()) {
1214
- // Tile is unloaded before the content finishes loading
1215
- singleContentFailed(tile, tileset);
1216
- return;
1217
- }
1218
-
1219
- const content = makeContent(tile, arrayBuffer);
1220
-
1221
- if (expired) {
1222
- tile.expireDate = undefined;
1223
- }
1224
-
1225
- tile._content = content;
1226
- tile._contentState = Cesium3DTileContentState.PROCESSING;
1227
- return content;
1228
- });
1229
- tile._contentReadyToProcessPromise = contentReadyToProcessPromise;
1230
- tile._contentReadyPromise = contentReadyToProcessPromise
1231
- .then(function (content) {
1232
- if (!defined(content)) {
1233
- return;
1234
- }
1235
-
1236
- --tileset.statistics.numberOfPendingRequests;
1237
- return content.readyPromise;
1238
- })
1239
- .then(function (content) {
1240
- if (!defined(content)) {
1241
- return;
1242
- }
1243
-
1244
- if (tile.isDestroyed()) {
1245
- // Tile is unloaded before the content finishes processing
1246
- singleContentFailed(tile, tileset);
1247
- return;
1248
- }
1249
- updateExpireDate(tile);
1250
-
1251
- // Refresh style for expired content
1252
- tile._selectedFrame = 0;
1253
- tile.lastStyleTime = 0.0;
1254
-
1255
- JulianDate.now(tile._loadTimestamp);
1256
- tile._contentState = Cesium3DTileContentState.READY;
1257
- return content;
1258
- })
1259
- .catch(function (error) {
1260
- if (request.state === RequestState.CANCELLED) {
1261
- // Cancelled due to low priority - try again later.
1262
- tile._contentState = previousState;
1263
- --tileset.statistics.numberOfPendingRequests;
1264
- ++tileset.statistics.numberOfAttemptedRequests;
1265
- return Promise.reject("Cancelled");
1266
- }
1267
- singleContentFailed(tile, tileset);
1268
- return Promise.reject(error);
1269
- });
1270
-
1271
- return 0;
1272
- }
1273
-
1274
- function singleContentFailed(tile, tileset) {
1275
- if (tile._contentState === Cesium3DTileContentState.PROCESSING) {
1276
- --tileset.statistics.numberOfTilesProcessing;
1277
- } else {
1278
- --tileset.statistics.numberOfPendingRequests;
1279
- }
1280
- tile._contentState = Cesium3DTileContentState.FAILED;
1299
+ return processArrayBuffer(tile, tileset, request, expired, promise);
1281
1300
  }
1282
1301
 
1283
1302
  /**
@@ -1288,10 +1307,10 @@ function singleContentFailed(tile, tileset) {
1288
1307
  *
1289
1308
  * @param {Cesium3DTile} tile The tile
1290
1309
  * @param {ArrayBuffer} arrayBuffer The downloaded payload containing data for the content
1291
- * @return {Cesium3DTileContent} A content object
1310
+ * @return {Promise<Cesium3DTileContent>} A content object
1292
1311
  * @private
1293
1312
  */
1294
- function makeContent(tile, arrayBuffer) {
1313
+ async function makeContent(tile, arrayBuffer) {
1295
1314
  const preprocessed = preprocess3DTileContent(arrayBuffer);
1296
1315
 
1297
1316
  // Vector and Geometry tile rendering do not support the skip LOD optimization.
@@ -1314,21 +1333,29 @@ function makeContent(tile, arrayBuffer) {
1314
1333
 
1315
1334
  let content;
1316
1335
  const contentFactory = Cesium3DTileContentFactory[preprocessed.contentType];
1336
+ if (tile.isDestroyed()) {
1337
+ return;
1338
+ }
1339
+
1317
1340
  if (defined(preprocessed.binaryPayload)) {
1318
- content = contentFactory(
1319
- tileset,
1320
- tile,
1321
- tile._contentResource,
1322
- preprocessed.binaryPayload.buffer,
1323
- 0
1341
+ content = await Promise.resolve(
1342
+ contentFactory(
1343
+ tileset,
1344
+ tile,
1345
+ tile._contentResource,
1346
+ preprocessed.binaryPayload.buffer,
1347
+ 0
1348
+ )
1324
1349
  );
1325
1350
  } else {
1326
1351
  // JSON formats
1327
- content = contentFactory(
1328
- tileset,
1329
- tile,
1330
- tile._contentResource,
1331
- preprocessed.jsonPayload
1352
+ content = await Promise.resolve(
1353
+ contentFactory(
1354
+ tileset,
1355
+ tile,
1356
+ tile._contentResource,
1357
+ preprocessed.jsonPayload
1358
+ )
1332
1359
  );
1333
1360
  }
1334
1361
 
@@ -1372,18 +1399,12 @@ Cesium3DTile.prototype.cancelRequests = function () {
1372
1399
  * @private
1373
1400
  */
1374
1401
  Cesium3DTile.prototype.unloadContent = function () {
1375
- if (
1376
- this.hasEmptyContent ||
1377
- this.hasTilesetContent ||
1378
- this.hasImplicitContent
1379
- ) {
1402
+ if (!this.hasRenderableContent) {
1380
1403
  return;
1381
1404
  }
1382
1405
 
1383
1406
  this._content = this._content && this._content.destroy();
1384
1407
  this._contentState = Cesium3DTileContentState.UNLOADED;
1385
- this._contentReadyToProcessPromise = undefined;
1386
- this._contentReadyPromise = undefined;
1387
1408
 
1388
1409
  this.lastStyleTime = 0.0;
1389
1410
  this.clippingPlanesDirty = this._clippingPlanesState === 0;
@@ -1402,6 +1423,12 @@ Cesium3DTile.prototype.unloadContent = function () {
1402
1423
 
1403
1424
  const scratchProjectedBoundingSphere = new BoundingSphere();
1404
1425
 
1426
+ /**
1427
+ * @private
1428
+ * @param {Cesium3DTile} tile
1429
+ * @param {FrameState} frameState
1430
+ * @returns {TileBoundingVolume}
1431
+ */
1405
1432
  function getBoundingVolume(tile, frameState) {
1406
1433
  if (
1407
1434
  frameState.mode !== SceneMode.SCENE3D &&
@@ -1424,6 +1451,12 @@ function getBoundingVolume(tile, frameState) {
1424
1451
  : tile._boundingVolume;
1425
1452
  }
1426
1453
 
1454
+ /**
1455
+ * @private
1456
+ * @param {Cesium3DTile} tile
1457
+ * @param {FrameState} frameState
1458
+ * @returns {TileBoundingVolume}
1459
+ */
1427
1460
  function getContentBoundingVolume(tile, frameState) {
1428
1461
  if (
1429
1462
  frameState.mode !== SceneMode.SCENE3D &&
@@ -1449,8 +1482,8 @@ function getContentBoundingVolume(tile, frameState) {
1449
1482
  * Determines whether the tile's bounding volume intersects the culling volume.
1450
1483
  *
1451
1484
  * @param {FrameState} frameState The frame state.
1452
- * @param {Number} parentVisibilityPlaneMask The parent's plane mask to speed up the visibility check.
1453
- * @returns {Number} A plane mask as described above in {@link CullingVolume#computeVisibilityWithPlaneMask}.
1485
+ * @param {number} parentVisibilityPlaneMask The parent's plane mask to speed up the visibility check.
1486
+ * @returns {number} A plane mask as described above in {@link CullingVolume#computeVisibilityWithPlaneMask}.
1454
1487
  *
1455
1488
  * @private
1456
1489
  */
@@ -1527,7 +1560,7 @@ Cesium3DTile.prototype.contentVisibility = function (frameState) {
1527
1560
  * Computes the (potentially approximate) distance from the closest point of the tile's bounding volume to the camera.
1528
1561
  *
1529
1562
  * @param {FrameState} frameState The frame state.
1530
- * @returns {Number} The distance, in meters, or zero if the camera is inside the bounding volume.
1563
+ * @returns {number} The distance, in meters, or zero if the camera is inside the bounding volume.
1531
1564
  *
1532
1565
  * @private
1533
1566
  */
@@ -1542,7 +1575,7 @@ const scratchToTileCenter = new Cartesian3();
1542
1575
  * Computes the distance from the center of the tile's bounding volume to the camera's plane defined by its position and view direction.
1543
1576
  *
1544
1577
  * @param {FrameState} frameState The frame state.
1545
- * @returns {Number} The distance, in meters.
1578
+ * @returns {number} The distance, in meters.
1546
1579
  *
1547
1580
  * @private
1548
1581
  */
@@ -1561,7 +1594,7 @@ Cesium3DTile.prototype.distanceToTileCenter = function (frameState) {
1561
1594
  * Checks if the camera is inside the viewer request volume.
1562
1595
  *
1563
1596
  * @param {FrameState} frameState The frame state.
1564
- * @returns {Boolean} Whether the camera is inside the volume.
1597
+ * @returns {boolean} Whether the camera is inside the volume.
1565
1598
  *
1566
1599
  * @private
1567
1600
  */
@@ -1581,6 +1614,13 @@ const scratchRectangle = new Rectangle();
1581
1614
  const scratchOrientedBoundingBox = new OrientedBoundingBox();
1582
1615
  const scratchTransform = new Matrix4();
1583
1616
 
1617
+ /**
1618
+ * @private
1619
+ * @param {Array} box An array of 12 numbers that define an oriented bounding box
1620
+ * @param {Matrix4} transform
1621
+ * @param {TileBoundingVolume} [result]
1622
+ * @returns {TileOrientedBoundingBox}
1623
+ */
1584
1624
  function createBox(box, transform, result) {
1585
1625
  let center = Cartesian3.fromElements(box[0], box[1], box[2], scratchCenter);
1586
1626
  let halfAxes = Matrix3.fromArray(box, 3, scratchHalfAxes);
@@ -1597,6 +1637,14 @@ function createBox(box, transform, result) {
1597
1637
  return new TileOrientedBoundingBox(center, halfAxes);
1598
1638
  }
1599
1639
 
1640
+ /**
1641
+ * @private
1642
+ * @param {Array} region An array of six numbers that define a bounding geographic region in EPSG:4979 coordinates with the order [west, south, east, north, minimum height, maximum height]
1643
+ * @param {Matrix4} transform
1644
+ * @param {Matrix4} initialTransform
1645
+ * @param {TileOrientedBoundingBox} [result]
1646
+ * @returns {TileOrientedBoundingBox}
1647
+ */
1600
1648
  function createBoxFromTransformedRegion(
1601
1649
  region,
1602
1650
  transform,
@@ -1637,6 +1685,14 @@ function createBoxFromTransformedRegion(
1637
1685
  return new TileOrientedBoundingBox(center, halfAxes);
1638
1686
  }
1639
1687
 
1688
+ /**
1689
+ * @private
1690
+ * @param {Array} region An array of six numbers that define a bounding geographic region in EPSG:4979 coordinates with the order [west, south, east, north, minimum height, maximum height]
1691
+ * @param {Matrix4} transform
1692
+ * @param {Matrix4} initialTransform
1693
+ * @param {TileBoundingVolume} [result]
1694
+ * @returns {TileBoundingVolume}
1695
+ */
1640
1696
  function createRegion(region, transform, initialTransform, result) {
1641
1697
  if (
1642
1698
  !Matrix4.equalsEpsilon(transform, initialTransform, CesiumMath.EPSILON8)
@@ -1662,6 +1718,13 @@ function createRegion(region, transform, initialTransform, result) {
1662
1718
  });
1663
1719
  }
1664
1720
 
1721
+ /**
1722
+ * @private
1723
+ * @param {Array} sphere An array of four numbers that define a bounding sphere
1724
+ * @param {Matrix4} transform
1725
+ * @param {TileBoundingVolume} [result]
1726
+ * @returns {TileBoundingSphere}
1727
+ */
1665
1728
  function createSphere(sphere, transform, result) {
1666
1729
  let center = Cartesian3.fromElements(
1667
1730
  sphere[0],
@@ -1687,7 +1750,7 @@ function createSphere(sphere, transform, result) {
1687
1750
  /**
1688
1751
  * Create a bounding volume from the tile's bounding volume header.
1689
1752
  *
1690
- * @param {Object} boundingVolumeHeader The tile's bounding volume header.
1753
+ * @param {object} boundingVolumeHeader The tile's bounding volume header.
1691
1754
  * @param {Matrix4} transform The transform to apply to the bounding volume.
1692
1755
  * @param {TileBoundingVolume} [result] The object onto which to store the result.
1693
1756
  *
@@ -1710,19 +1773,15 @@ Cesium3DTile.prototype.createBoundingVolume = function (
1710
1773
  );
1711
1774
  }
1712
1775
 
1713
- if (defined(boundingVolumeHeader.box)) {
1714
- return createBox(boundingVolumeHeader.box, transform, result);
1776
+ const { box, region, sphere } = boundingVolumeHeader;
1777
+ if (defined(box)) {
1778
+ return createBox(box, transform, result);
1715
1779
  }
1716
- if (defined(boundingVolumeHeader.region)) {
1717
- return createRegion(
1718
- boundingVolumeHeader.region,
1719
- transform,
1720
- this._initialTransform,
1721
- result
1722
- );
1780
+ if (defined(region)) {
1781
+ return createRegion(region, transform, this._initialTransform, result);
1723
1782
  }
1724
- if (defined(boundingVolumeHeader.sphere)) {
1725
- return createSphere(boundingVolumeHeader.sphere, transform, result);
1783
+ if (defined(sphere)) {
1784
+ return createSphere(sphere, transform, result);
1726
1785
  }
1727
1786
  throw new RuntimeError(
1728
1787
  "boundingVolume must contain a sphere, region, or box"
@@ -1733,6 +1792,7 @@ Cesium3DTile.prototype.createBoundingVolume = function (
1733
1792
  * Update the tile's transform. The transform is applied to the tile's bounding volumes.
1734
1793
  *
1735
1794
  * @private
1795
+ * @param {Matrix4} parentTransform
1736
1796
  */
1737
1797
  Cesium3DTile.prototype.updateTransform = function (parentTransform) {
1738
1798
  parentTransform = defaultValue(parentTransform, Matrix4.IDENTITY);
@@ -1799,6 +1859,13 @@ Cesium3DTile.prototype.updateGeometricErrorScale = function () {
1799
1859
  }
1800
1860
  };
1801
1861
 
1862
+ /**
1863
+ * @private
1864
+ * @param {Cesium3DTile} tile
1865
+ * @param {Cesium3DTileset} tileset
1866
+ * @param {FrameState} frameState
1867
+ * @param {object} passOptions
1868
+ */
1802
1869
  function applyDebugSettings(tile, tileset, frameState, passOptions) {
1803
1870
  if (!passOptions.isRender) {
1804
1871
  return;
@@ -1806,8 +1873,6 @@ function applyDebugSettings(tile, tileset, frameState, passOptions) {
1806
1873
 
1807
1874
  const hasContentBoundingVolume =
1808
1875
  defined(tile._contentHeader) && defined(tile._contentHeader.boundingVolume);
1809
- const empty =
1810
- tile.hasEmptyContent || tile.hasTilesetContent || tile.hasImplicitContent;
1811
1876
 
1812
1877
  const showVolume =
1813
1878
  tileset.debugShowBoundingVolume ||
@@ -1816,7 +1881,7 @@ function applyDebugSettings(tile, tileset, frameState, passOptions) {
1816
1881
  let color;
1817
1882
  if (!tile._finalResolution) {
1818
1883
  color = Color.YELLOW;
1819
- } else if (empty) {
1884
+ } else if (!tile.hasRenderableContent) {
1820
1885
  color = Color.DARKGRAY;
1821
1886
  } else {
1822
1887
  color = Color.WHITE;
@@ -1892,15 +1957,24 @@ function applyDebugSettings(tile, tileset, frameState, passOptions) {
1892
1957
  }
1893
1958
  }
1894
1959
 
1960
+ /**
1961
+ * @private
1962
+ * @param {Cesium3DTile} tile
1963
+ * @param {Cesium3DTileset} tileset
1964
+ * @param {FrameState} frameState
1965
+ */
1895
1966
  function updateContent(tile, tileset, frameState) {
1896
- const content = tile._content;
1897
1967
  const expiredContent = tile._expiredContent;
1898
1968
 
1899
1969
  // expired content is not supported for multiple contents
1900
1970
  if (!tile.hasMultipleContents && defined(expiredContent)) {
1901
1971
  if (!tile.contentReady) {
1902
1972
  // Render the expired content while the content loads
1903
- expiredContent.update(tileset, frameState);
1973
+ try {
1974
+ expiredContent.update(tileset, frameState);
1975
+ } catch (error) {
1976
+ // Eat error for expired content
1977
+ }
1904
1978
  return;
1905
1979
  }
1906
1980
 
@@ -1909,14 +1983,30 @@ function updateContent(tile, tileset, frameState) {
1909
1983
  tile._expiredContent = undefined;
1910
1984
  }
1911
1985
 
1912
- content.update(tileset, frameState);
1986
+ if (!defined(tile.content)) {
1987
+ // Implicit placeholder tile
1988
+ return;
1989
+ }
1990
+
1991
+ try {
1992
+ tile.content.update(tileset, frameState);
1993
+ } catch (error) {
1994
+ tile._contentState = Cesium3DTileContentState.FAILED;
1995
+ throw error;
1996
+ }
1913
1997
  }
1914
1998
 
1999
+ /**
2000
+ * Compute and compare ClippingPlanes state:
2001
+ * - enabled-ness - are clipping planes enabled? is this tile clipped?
2002
+ * - clipping plane count
2003
+ * - clipping function (union v. intersection)
2004
+
2005
+ * @private
2006
+ * @param {Cesium3DTile} tile
2007
+ * @param {Cesium3DTileset} tileset
2008
+ */
1915
2009
  function updateClippingPlanes(tile, tileset) {
1916
- // Compute and compare ClippingPlanes state:
1917
- // - enabled-ness - are clipping planes enabled? is this tile clipped?
1918
- // - clipping plane count
1919
- // - clipping function (union v. intersection)
1920
2010
  const clippingPlanes = tileset.clippingPlanes;
1921
2011
  let currentClippingPlanesState = 0;
1922
2012
  if (defined(clippingPlanes) && tile._isClipped && clippingPlanes.enabled) {
@@ -1933,20 +2023,23 @@ function updateClippingPlanes(tile, tileset) {
1933
2023
  * Get the draw commands needed to render this tile.
1934
2024
  *
1935
2025
  * @private
2026
+ * @param {Cesium3DTileset} tileset
2027
+ * @param {FrameState} frameState
2028
+ * @param {object} passOptions
1936
2029
  */
1937
2030
  Cesium3DTile.prototype.update = function (tileset, frameState, passOptions) {
1938
- const commandStart = frameState.commandList.length;
2031
+ const { commandList } = frameState;
2032
+ const commandStart = commandList.length;
1939
2033
 
1940
2034
  updateClippingPlanes(this, tileset);
1941
2035
  applyDebugSettings(this, tileset, frameState, passOptions);
1942
2036
  updateContent(this, tileset, frameState);
1943
2037
 
1944
- const commandEnd = frameState.commandList.length;
1945
- const commandsLength = commandEnd - commandStart;
1946
- this._commandsLength = commandsLength;
2038
+ const commandEnd = commandList.length;
2039
+ this._commandsLength = commandEnd - commandStart;
1947
2040
 
1948
- for (let i = 0; i < commandsLength; ++i) {
1949
- const command = frameState.commandList[commandStart + i];
2041
+ for (let i = commandStart; i < commandEnd; ++i) {
2042
+ const command = commandList[i];
1950
2043
  const translucent = command.pass === Pass.TRANSLUCENT;
1951
2044
  command.depthForTranslucentClassification = translucent;
1952
2045
  }
@@ -1965,26 +2058,68 @@ const scratchCommandList = [];
1965
2058
  * @private
1966
2059
  */
1967
2060
  Cesium3DTile.prototype.process = function (tileset, frameState) {
2061
+ if (!this.contentExpired && !this.contentReady && this._content.ready) {
2062
+ updateExpireDate(this);
2063
+
2064
+ // Refresh style for expired content
2065
+ this._selectedFrame = 0;
2066
+ this.lastStyleTime = 0.0;
2067
+
2068
+ JulianDate.now(this._loadTimestamp);
2069
+ this._contentState = Cesium3DTileContentState.READY;
2070
+
2071
+ if (!this.hasTilesetContent && !this.hasImplicitContent) {
2072
+ // RESEARCH_IDEA: ability to unload tiles (without content) for an
2073
+ // external tileset when all the tiles are unloaded.
2074
+ tileset._statistics.incrementLoadCounts(this.content);
2075
+ ++tileset._statistics.numberOfTilesWithContentReady;
2076
+ ++tileset._statistics.numberOfLoadedTilesTotal;
2077
+
2078
+ // Add to the tile cache. Previously expired tiles are already in the cache and won't get re-added.
2079
+ tileset._cache.add(this);
2080
+ }
2081
+ }
2082
+
1968
2083
  const savedCommandList = frameState.commandList;
1969
2084
  frameState.commandList = scratchCommandList;
1970
2085
 
1971
- this._content.update(tileset, frameState);
2086
+ try {
2087
+ this._content.update(tileset, frameState);
2088
+ } catch (error) {
2089
+ this._contentState = Cesium3DTileContentState.FAILED;
2090
+ throw error;
2091
+ }
1972
2092
 
1973
2093
  scratchCommandList.length = 0;
1974
2094
  frameState.commandList = savedCommandList;
1975
2095
  };
1976
2096
 
2097
+ /**
2098
+ * @private
2099
+ * @param {number} normalizedValue
2100
+ * @param {number} numberOfDigits
2101
+ * @param {number} leftShift
2102
+ * @returns {number}
2103
+ */
1977
2104
  function isolateDigits(normalizedValue, numberOfDigits, leftShift) {
1978
2105
  const scaled = normalizedValue * Math.pow(10, numberOfDigits);
1979
2106
  const integer = parseInt(scaled);
1980
2107
  return integer * Math.pow(10, leftShift);
1981
2108
  }
1982
2109
 
2110
+ /**
2111
+ * @private
2112
+ * @param {number} value
2113
+ * @param {number} minimum
2114
+ * @param {number} maximum
2115
+ * @returns {number}
2116
+ */
1983
2117
  function priorityNormalizeAndClamp(value, minimum, maximum) {
2118
+ // Subtract epsilon since we only want decimal digits present in the output.
1984
2119
  return Math.max(
1985
2120
  CesiumMath.normalize(value, minimum, maximum) - CesiumMath.EPSILON7,
1986
2121
  0.0
1987
- ); // Subtract epsilon since we only want decimal digits present in the output.
2122
+ );
1988
2123
  }
1989
2124
 
1990
2125
  /**
@@ -2044,7 +2179,8 @@ Cesium3DTile.prototype.updatePriority = function () {
2044
2179
 
2045
2180
  // Map 0-1 then convert to digit. Include a distance sort when doing non-skipLOD and replacement refinement, helps things like non-skipLOD photogrammetry
2046
2181
  const useDistance =
2047
- !tileset._skipLevelOfDetail && this.refine === Cesium3DTileRefine.REPLACE;
2182
+ !tileset.isSkippingLevelOfDetail &&
2183
+ this.refine === Cesium3DTileRefine.REPLACE;
2048
2184
  const normalizedPreferredSorting = useDistance
2049
2185
  ? priorityNormalizeAndClamp(
2050
2186
  this._priorityHolder._distanceToCamera,
@@ -2118,4 +2254,5 @@ Cesium3DTile.prototype.destroy = function () {
2118
2254
  this._debugViewerRequestVolume && this._debugViewerRequestVolume.destroy();
2119
2255
  return destroyObject(this);
2120
2256
  };
2257
+
2121
2258
  export default Cesium3DTile;