@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
@@ -1,16 +1,18 @@
1
1
  import AttributeCompression from "./AttributeCompression.js";
2
2
  import BoundingSphere from "./BoundingSphere.js";
3
3
  import Cartesian3 from "./Cartesian3.js";
4
+ import Check from "./Check.js";
4
5
  import Credit from "./Credit.js";
5
6
  import defaultValue from "./defaultValue.js";
6
7
  import defined from "./defined.js";
7
- import DeveloperError from "./DeveloperError.js";
8
+ import deprecationWarning from "./deprecationWarning.js";
8
9
  import Event from "./Event.js";
9
10
  import GeographicTilingScheme from "./GeographicTilingScheme.js";
10
11
  import WebMercatorTilingScheme from "./WebMercatorTilingScheme.js";
11
12
  import getJsonFromTypedArray from "./getJsonFromTypedArray.js";
12
13
  import HeightmapTerrainData from "./HeightmapTerrainData.js";
13
14
  import IndexDatatype from "./IndexDatatype.js";
15
+ import IonResource from "./IonResource.js";
14
16
  import OrientedBoundingBox from "./OrientedBoundingBox.js";
15
17
  import QuantizedMeshTerrainData from "./QuantizedMeshTerrainData.js";
16
18
  import Request from "./Request.js";
@@ -37,6 +39,415 @@ function LayerInformation(layer) {
37
39
  }
38
40
 
39
41
  /**
42
+ * @typedef {Object} CesiumTerrainProvider.ConstructorOptions
43
+ *
44
+ * Initialization options for the CesiumTerrainProvider constructor
45
+ *
46
+ * @property {boolean} [requestVertexNormals=false] Flag that indicates if the client should request additional lighting information from the server, in the form of per vertex normals if available.
47
+ * @property {boolean} [requestWaterMask=false] Flag that indicates if the client should request per tile water masks from the server, if available.
48
+ * @property {boolean} [requestMetadata=true] Flag that indicates if the client should request per tile metadata from the server, if available.
49
+ * @property {Ellipsoid} [ellipsoid] The ellipsoid. If not specified, the WGS84 ellipsoid is used.
50
+ * @property {Credit|string} [credit] A credit for the data source, which is displayed on the canvas.
51
+ * @property {Resource|string|Promise<Resource>|Promise<string>} [url] The URL of the Cesium terrain server. Deprecated.
52
+ */
53
+
54
+ /**
55
+ * Used to track creation details while fetching initial metadata
56
+ *
57
+ * @constructor
58
+ * @private
59
+ *
60
+ * @param {CesiumTerrainProvider.ConstructorOptions} options An object describing initialization options
61
+ */
62
+ function TerrainProviderBuilder(options) {
63
+ this.requestVertexNormals = defaultValue(options.requestVertexNormals, false);
64
+ this.requestWaterMask = defaultValue(options.requestWaterMask, false);
65
+ this.requestMetadata = defaultValue(options.requestMetadata, true);
66
+ this.ellipsoid = options.ellipsoid;
67
+
68
+ this.heightmapWidth = 65;
69
+ this.heightmapStructure = undefined;
70
+ this.hasWaterMask = false;
71
+ this.hasMetadata = false;
72
+ this.hasVertexNormals = false;
73
+ this.scheme = undefined;
74
+
75
+ this.lastResource = undefined;
76
+ this.layerJsonResource = undefined;
77
+ this.previousError = undefined;
78
+ this.availability = undefined;
79
+ this.tilingScheme = undefined;
80
+ this.levelZeroMaximumGeometricError = undefined;
81
+ this.heightmapStructure = undefined;
82
+ this.layers = [];
83
+ this.attribution = "";
84
+ this.overallAvailability = [];
85
+ this.overallMaxZoom = 0;
86
+ this.tileCredits = [];
87
+ }
88
+
89
+ /**
90
+ * Complete CesiumTerrainProvider creation based on builder values.
91
+ *
92
+ * @private
93
+ *
94
+ * @param {CesiumTerrainProvider} provider
95
+ */
96
+ TerrainProviderBuilder.prototype.build = function (provider) {
97
+ provider._heightmapWidth = this.heightmapWidth;
98
+ provider._scheme = this.scheme;
99
+
100
+ // ion resources have a credits property we can use for additional attribution.
101
+ const credits = defined(this.lastResource.credits)
102
+ ? this.lastResource.credits
103
+ : [];
104
+ provider._tileCredits = credits.concat(this.tileCredits);
105
+ provider._availability = this.availability;
106
+ provider._tilingScheme = this.tilingScheme;
107
+ provider._requestWaterMask = this.requestWaterMask;
108
+ provider._levelZeroMaximumGeometricError = this.levelZeroMaximumGeometricError;
109
+ provider._heightmapStructure = this.heightmapStructure;
110
+ provider._layers = this.layers;
111
+
112
+ provider._hasWaterMask = this.hasWaterMask;
113
+ provider._hasVertexNormals = this.hasVertexNormals;
114
+ provider._hasMetadata = this.hasMetadata;
115
+
116
+ provider._ready = true;
117
+ };
118
+
119
+ async function parseMetadataSuccess(terrainProviderBuilder, data, provider) {
120
+ if (!data.format) {
121
+ const message = "The tile format is not specified in the layer.json file.";
122
+ terrainProviderBuilder.previousError = TileProviderError.reportError(
123
+ terrainProviderBuilder.previousError,
124
+ provider,
125
+ defined(provider) ? provider._errorEvent : undefined,
126
+ message
127
+ );
128
+
129
+ throw new RuntimeError(message);
130
+ }
131
+
132
+ if (!data.tiles || data.tiles.length === 0) {
133
+ const message =
134
+ "The layer.json file does not specify any tile URL templates.";
135
+ terrainProviderBuilder.previousError = TileProviderError.reportError(
136
+ terrainProviderBuilder.previousError,
137
+ provider,
138
+ defined(provider) ? provider._errorEvent : undefined,
139
+ message
140
+ );
141
+
142
+ throw new RuntimeError(message);
143
+ }
144
+
145
+ let hasVertexNormals = false;
146
+ let hasWaterMask = false;
147
+ let hasMetadata = false;
148
+ let littleEndianExtensionSize = true;
149
+ let isHeightmap = false;
150
+ if (data.format === "heightmap-1.0") {
151
+ isHeightmap = true;
152
+ if (!defined(terrainProviderBuilder.heightmapStructure)) {
153
+ terrainProviderBuilder.heightmapStructure = {
154
+ heightScale: 1.0 / 5.0,
155
+ heightOffset: -1000.0,
156
+ elementsPerHeight: 1,
157
+ stride: 1,
158
+ elementMultiplier: 256.0,
159
+ isBigEndian: false,
160
+ lowestEncodedHeight: 0,
161
+ highestEncodedHeight: 256 * 256 - 1,
162
+ };
163
+ }
164
+ hasWaterMask = true;
165
+ terrainProviderBuilder.requestWaterMask = true;
166
+ } else if (data.format.indexOf("quantized-mesh-1.") !== 0) {
167
+ const message = `The tile format "${data.format}" is invalid or not supported.`;
168
+ terrainProviderBuilder.previousError = TileProviderError.reportError(
169
+ terrainProviderBuilder.previousError,
170
+ provider,
171
+ defined(provider) ? provider._errorEvent : undefined,
172
+ message
173
+ );
174
+
175
+ throw new RuntimeError(message);
176
+ }
177
+
178
+ const tileUrlTemplates = data.tiles;
179
+
180
+ const maxZoom = data.maxzoom;
181
+ terrainProviderBuilder.overallMaxZoom = Math.max(
182
+ terrainProviderBuilder.overallMaxZoom,
183
+ maxZoom
184
+ );
185
+
186
+ // Keeps track of which of the availability containing tiles have been loaded
187
+ if (!data.projection || data.projection === "EPSG:4326") {
188
+ terrainProviderBuilder.tilingScheme = new GeographicTilingScheme({
189
+ numberOfLevelZeroTilesX: 2,
190
+ numberOfLevelZeroTilesY: 1,
191
+ ellipsoid: terrainProviderBuilder.ellipsoid,
192
+ });
193
+ } else if (data.projection === "EPSG:3857") {
194
+ terrainProviderBuilder.tilingScheme = new WebMercatorTilingScheme({
195
+ numberOfLevelZeroTilesX: 1,
196
+ numberOfLevelZeroTilesY: 1,
197
+ ellipsoid: terrainProviderBuilder.ellipsoid,
198
+ });
199
+ } else {
200
+ const message = `The projection "${data.projection}" is invalid or not supported.`;
201
+ terrainProviderBuilder.previousError = TileProviderError.reportError(
202
+ terrainProviderBuilder.previousError,
203
+ provider,
204
+ defined(provider) ? provider._errorEvent : undefined,
205
+ message
206
+ );
207
+
208
+ throw new RuntimeError(message);
209
+ }
210
+
211
+ terrainProviderBuilder.levelZeroMaximumGeometricError = TerrainProvider.getEstimatedLevelZeroGeometricErrorForAHeightmap(
212
+ terrainProviderBuilder.tilingScheme.ellipsoid,
213
+ terrainProviderBuilder.heightmapWidth,
214
+ terrainProviderBuilder.tilingScheme.getNumberOfXTilesAtLevel(0)
215
+ );
216
+ if (!data.scheme || data.scheme === "tms" || data.scheme === "slippyMap") {
217
+ terrainProviderBuilder.scheme = data.scheme;
218
+ } else {
219
+ const message = `The scheme "${data.scheme}" is invalid or not supported.`;
220
+ terrainProviderBuilder.previousError = TileProviderError.reportError(
221
+ terrainProviderBuilder.previousError,
222
+ provider,
223
+ defined(provider) ? provider._errorEvent : undefined,
224
+ message
225
+ );
226
+
227
+ throw new RuntimeError(message);
228
+ }
229
+
230
+ let availabilityTilesLoaded;
231
+
232
+ // The vertex normals defined in the 'octvertexnormals' extension is identical to the original
233
+ // contents of the original 'vertexnormals' extension. 'vertexnormals' extension is now
234
+ // deprecated, as the extensionLength for this extension was incorrectly using big endian.
235
+ // We maintain backwards compatibility with the legacy 'vertexnormal' implementation
236
+ // by setting the _littleEndianExtensionSize to false. Always prefer 'octvertexnormals'
237
+ // over 'vertexnormals' if both extensions are supported by the server.
238
+ if (
239
+ defined(data.extensions) &&
240
+ data.extensions.indexOf("octvertexnormals") !== -1
241
+ ) {
242
+ hasVertexNormals = true;
243
+ } else if (
244
+ defined(data.extensions) &&
245
+ data.extensions.indexOf("vertexnormals") !== -1
246
+ ) {
247
+ hasVertexNormals = true;
248
+ littleEndianExtensionSize = false;
249
+ }
250
+ if (defined(data.extensions) && data.extensions.indexOf("watermask") !== -1) {
251
+ hasWaterMask = true;
252
+ }
253
+ if (defined(data.extensions) && data.extensions.indexOf("metadata") !== -1) {
254
+ hasMetadata = true;
255
+ }
256
+
257
+ const availabilityLevels = data.metadataAvailability;
258
+ const availableTiles = data.available;
259
+ let availability;
260
+ if (defined(availableTiles) && !defined(availabilityLevels)) {
261
+ availability = new TileAvailability(
262
+ terrainProviderBuilder.tilingScheme,
263
+ availableTiles.length
264
+ );
265
+ for (let level = 0; level < availableTiles.length; ++level) {
266
+ const rangesAtLevel = availableTiles[level];
267
+ const yTiles = terrainProviderBuilder.tilingScheme.getNumberOfYTilesAtLevel(
268
+ level
269
+ );
270
+ if (!defined(terrainProviderBuilder.overallAvailability[level])) {
271
+ terrainProviderBuilder.overallAvailability[level] = [];
272
+ }
273
+
274
+ for (
275
+ let rangeIndex = 0;
276
+ rangeIndex < rangesAtLevel.length;
277
+ ++rangeIndex
278
+ ) {
279
+ const range = rangesAtLevel[rangeIndex];
280
+ const yStart = yTiles - range.endY - 1;
281
+ const yEnd = yTiles - range.startY - 1;
282
+ terrainProviderBuilder.overallAvailability[level].push([
283
+ range.startX,
284
+ yStart,
285
+ range.endX,
286
+ yEnd,
287
+ ]);
288
+ availability.addAvailableTileRange(
289
+ level,
290
+ range.startX,
291
+ yStart,
292
+ range.endX,
293
+ yEnd
294
+ );
295
+ }
296
+ }
297
+ } else if (defined(availabilityLevels)) {
298
+ availabilityTilesLoaded = new TileAvailability(
299
+ terrainProviderBuilder.tilingScheme,
300
+ maxZoom
301
+ );
302
+ availability = new TileAvailability(
303
+ terrainProviderBuilder.tilingScheme,
304
+ maxZoom
305
+ );
306
+ terrainProviderBuilder.overallAvailability[0] = [[0, 0, 1, 0]];
307
+ availability.addAvailableTileRange(0, 0, 0, 1, 0);
308
+ }
309
+
310
+ terrainProviderBuilder.hasWaterMask =
311
+ terrainProviderBuilder.hasWaterMask || hasWaterMask;
312
+ terrainProviderBuilder.hasVertexNormals =
313
+ terrainProviderBuilder.hasVertexNormals || hasVertexNormals;
314
+ terrainProviderBuilder.hasMetadata =
315
+ terrainProviderBuilder.hasMetadata || hasMetadata;
316
+
317
+ if (defined(data.attribution)) {
318
+ if (terrainProviderBuilder.attribution.length > 0) {
319
+ terrainProviderBuilder.attribution += " ";
320
+ }
321
+ terrainProviderBuilder.attribution += data.attribution;
322
+ }
323
+
324
+ terrainProviderBuilder.layers.push(
325
+ new LayerInformation({
326
+ resource: terrainProviderBuilder.lastResource,
327
+ version: data.version,
328
+ isHeightmap: isHeightmap,
329
+ tileUrlTemplates: tileUrlTemplates,
330
+ availability: availability,
331
+ hasVertexNormals: hasVertexNormals,
332
+ hasWaterMask: hasWaterMask,
333
+ hasMetadata: hasMetadata,
334
+ availabilityLevels: availabilityLevels,
335
+ availabilityTilesLoaded: availabilityTilesLoaded,
336
+ littleEndianExtensionSize: littleEndianExtensionSize,
337
+ })
338
+ );
339
+
340
+ const parentUrl = data.parentUrl;
341
+ if (defined(parentUrl)) {
342
+ if (!defined(availability)) {
343
+ console.log(
344
+ "A layer.json can't have a parentUrl if it does't have an available array."
345
+ );
346
+ return true;
347
+ }
348
+
349
+ terrainProviderBuilder.lastResource = terrainProviderBuilder.lastResource.getDerivedResource(
350
+ {
351
+ url: parentUrl,
352
+ }
353
+ );
354
+ terrainProviderBuilder.lastResource.appendForwardSlash(); // Terrain always expects a directory
355
+ terrainProviderBuilder.layerJsonResource = terrainProviderBuilder.lastResource.getDerivedResource(
356
+ {
357
+ url: "layer.json",
358
+ }
359
+ );
360
+ await requestLayerJson(terrainProviderBuilder);
361
+ return true;
362
+ }
363
+
364
+ return true;
365
+ }
366
+
367
+ function parseMetadataFailure(terrainProviderBuilder, error, provider) {
368
+ let message = `An error occurred while accessing ${terrainProviderBuilder.layerJsonResource.url}.`;
369
+ if (defined(error)) {
370
+ message += `\n${error.message}`;
371
+ }
372
+
373
+ terrainProviderBuilder.previousError = TileProviderError.reportError(
374
+ terrainProviderBuilder.previousError,
375
+ provider,
376
+ defined(provider) ? provider._errorEvent : undefined,
377
+ message
378
+ );
379
+
380
+ // If we can retry, do so. Otherwise throw the error.
381
+ if (terrainProviderBuilder.previousError.retry) {
382
+ return requestLayerJson(terrainProviderBuilder, provider);
383
+ }
384
+
385
+ throw new RuntimeError(message);
386
+ }
387
+
388
+ async function metadataSuccess(terrainProviderBuilder, data, provider) {
389
+ await parseMetadataSuccess(terrainProviderBuilder, data, provider);
390
+
391
+ const length = terrainProviderBuilder.overallAvailability.length;
392
+ if (length > 0) {
393
+ const availability = (terrainProviderBuilder.availability = new TileAvailability(
394
+ terrainProviderBuilder.tilingScheme,
395
+ terrainProviderBuilder.overallMaxZoom
396
+ ));
397
+ for (let level = 0; level < length; ++level) {
398
+ const levelRanges = terrainProviderBuilder.overallAvailability[level];
399
+ for (let i = 0; i < levelRanges.length; ++i) {
400
+ const range = levelRanges[i];
401
+ availability.addAvailableTileRange(
402
+ level,
403
+ range[0],
404
+ range[1],
405
+ range[2],
406
+ range[3]
407
+ );
408
+ }
409
+ }
410
+ }
411
+
412
+ if (terrainProviderBuilder.attribution.length > 0) {
413
+ const layerJsonCredit = new Credit(terrainProviderBuilder.attribution);
414
+ terrainProviderBuilder.tileCredits.push(layerJsonCredit);
415
+ }
416
+
417
+ return true;
418
+ }
419
+
420
+ async function requestLayerJson(terrainProviderBuilder, provider) {
421
+ try {
422
+ const data = await terrainProviderBuilder.layerJsonResource.fetchJson();
423
+ return metadataSuccess(terrainProviderBuilder, data, provider);
424
+ } catch (error) {
425
+ // If the metadata is not found, assume this is a pre-metadata heightmap tileset.
426
+ if (defined(error) && error.statusCode === 404) {
427
+ await parseMetadataSuccess(
428
+ terrainProviderBuilder,
429
+ {
430
+ tilejson: "2.1.0",
431
+ format: "heightmap-1.0",
432
+ version: "1.0.0",
433
+ scheme: "tms",
434
+ tiles: ["{z}/{x}/{y}.terrain?v={version}"],
435
+ },
436
+ provider
437
+ );
438
+
439
+ return true;
440
+ }
441
+
442
+ return parseMetadataFailure(terrainProviderBuilder, error, provider);
443
+ }
444
+ }
445
+
446
+ /**
447
+ * <div class="notice">
448
+ * To construct a CesiumTerrainProvider, call {@link CesiumTerrainProvider.fromIonAssetId} or {@link CesiumTerrainProvider.fromUrl}. Do not call the constructor directly.
449
+ * </div>
450
+ *
40
451
  * A {@link TerrainProvider} that accesses terrain data in a Cesium terrain format.
41
452
  * Terrain formats can be one of the following:
42
453
  * <ul>
@@ -47,43 +458,39 @@ function LayerInformation(layer) {
47
458
  * @alias CesiumTerrainProvider
48
459
  * @constructor
49
460
  *
50
- * @param {Object} options Object with the following properties:
51
- * @param {Resource|String|Promise<Resource>|Promise<String>} options.url The URL of the Cesium terrain server.
52
- * @param {Boolean} [options.requestVertexNormals=false] Flag that indicates if the client should request additional lighting information from the server, in the form of per vertex normals if available.
53
- * @param {Boolean} [options.requestWaterMask=false] Flag that indicates if the client should request per tile water masks from the server, if available.
54
- * @param {Boolean} [options.requestMetadata=true] Flag that indicates if the client should request per tile metadata from the server, if available.
55
- * @param {Ellipsoid} [options.ellipsoid] The ellipsoid. If not specified, the WGS84 ellipsoid is used.
56
- * @param {Credit|String} [options.credit] A credit for the data source, which is displayed on the canvas.
57
- *
461
+ * @param {CesiumTerrainProvider.ConstructorOptions} [options] An object describing initialization options
58
462
  *
59
463
  * @example
60
464
  * // Create Arctic DEM terrain with normals.
61
- * const viewer = new Cesium.Viewer('cesiumContainer', {
62
- * terrainProvider : new Cesium.CesiumTerrainProvider({
63
- * url : Cesium.IonResource.fromAssetId(3956),
64
- * requestVertexNormals : true
465
+ * try {
466
+ * const viewer = new Cesium.Viewer("cesiumContainer", {
467
+ * terrainProvider: await Cesium.CesiumTerrainProvider.fromIonAssetId(3956, {
468
+ * requestVertexNormals: true
65
469
  * })
66
- * });
470
+ * });
471
+ * } catch (error) {
472
+ * console.log(error);
473
+ * }
67
474
  *
68
475
  * @see createWorldTerrain
476
+ * @see CesiumTerrainProvider.fromUrl
477
+ * @see CesiumTerrainProvider.fromIonAssetId
69
478
  * @see TerrainProvider
70
479
  */
71
480
  function CesiumTerrainProvider(options) {
72
- //>>includeStart('debug', pragmas.debug)
73
- if (!defined(options) || !defined(options.url)) {
74
- throw new DeveloperError("options.url is required.");
75
- }
76
- //>>includeEnd('debug');
481
+ options = defaultValue(options, defaultValue.EMPTY_OBJECT);
77
482
 
78
- this._heightmapWidth = 65;
483
+ this._heightmapWidth = undefined;
79
484
  this._heightmapStructure = undefined;
80
485
  this._hasWaterMask = false;
81
486
  this._hasVertexNormals = false;
487
+ this._hasMetadata = false;
488
+ this._scheme = undefined;
82
489
  this._ellipsoid = options.ellipsoid;
83
490
 
84
491
  /**
85
492
  * Boolean flag that indicates if the client should request vertex normals from the server.
86
- * @type {Boolean}
493
+ * @type {boolean}
87
494
  * @default false
88
495
  * @private
89
496
  */
@@ -94,7 +501,7 @@ function CesiumTerrainProvider(options) {
94
501
 
95
502
  /**
96
503
  * Boolean flag that indicates if the client should request tile watermasks from the server.
97
- * @type {Boolean}
504
+ * @type {boolean}
98
505
  * @default false
99
506
  * @private
100
507
  */
@@ -102,7 +509,7 @@ function CesiumTerrainProvider(options) {
102
509
 
103
510
  /**
104
511
  * Boolean flag that indicates if the client should request tile metadata from the server.
105
- * @type {Boolean}
512
+ * @type {boolean}
106
513
  * @default true
107
514
  * @private
108
515
  */
@@ -117,359 +524,48 @@ function CesiumTerrainProvider(options) {
117
524
  this._credit = credit;
118
525
 
119
526
  this._availability = undefined;
527
+ this._tilingScheme = undefined;
528
+ this._levelZeroMaximumGeometricError = undefined;
529
+ this._layers = undefined;
120
530
 
121
531
  this._ready = false;
122
532
  this._tileCredits = undefined;
123
533
 
124
- const that = this;
125
- let lastResource;
126
- let layerJsonResource;
127
- let metadataError;
128
-
129
- const layers = (this._layers = []);
130
- let attribution = "";
131
- const overallAvailability = [];
132
- let overallMaxZoom = 0;
133
- this._readyPromise = Promise.resolve(options.url).then(function (url) {
134
- const resource = Resource.createIfNeeded(url);
135
- resource.appendForwardSlash();
136
- lastResource = resource;
137
- layerJsonResource = lastResource.getDerivedResource({
138
- url: "layer.json",
139
- });
140
-
141
- // ion resources have a credits property we can use for additional attribution.
142
- that._tileCredits = resource.credits;
143
-
144
- return requestLayerJson();
145
- });
146
-
147
- function parseMetadataSuccess(data) {
148
- let message;
149
-
150
- if (!data.format) {
151
- message = "The tile format is not specified in the layer.json file.";
152
- metadataError = TileProviderError.reportError(
153
- metadataError,
154
- that,
155
- that._errorEvent,
156
- message
157
- );
158
- if (metadataError.retry) {
159
- return requestLayerJson();
160
- }
161
- return Promise.reject(new RuntimeError(message));
162
- }
163
-
164
- if (!data.tiles || data.tiles.length === 0) {
165
- message = "The layer.json file does not specify any tile URL templates.";
166
- metadataError = TileProviderError.reportError(
167
- metadataError,
168
- that,
169
- that._errorEvent,
170
- message
171
- );
172
- if (metadataError.retry) {
173
- return requestLayerJson();
174
- }
175
- return Promise.reject(new RuntimeError(message));
176
- }
177
-
178
- let hasVertexNormals = false;
179
- let hasWaterMask = false;
180
- let hasMetadata = false;
181
- let littleEndianExtensionSize = true;
182
- let isHeightmap = false;
183
- if (data.format === "heightmap-1.0") {
184
- isHeightmap = true;
185
- if (!defined(that._heightmapStructure)) {
186
- that._heightmapStructure = {
187
- heightScale: 1.0 / 5.0,
188
- heightOffset: -1000.0,
189
- elementsPerHeight: 1,
190
- stride: 1,
191
- elementMultiplier: 256.0,
192
- isBigEndian: false,
193
- lowestEncodedHeight: 0,
194
- highestEncodedHeight: 256 * 256 - 1,
195
- };
196
- }
197
- hasWaterMask = true;
198
- that._requestWaterMask = true;
199
- } else if (data.format.indexOf("quantized-mesh-1.") !== 0) {
200
- message = `The tile format "${data.format}" is invalid or not supported.`;
201
- metadataError = TileProviderError.reportError(
202
- metadataError,
203
- that,
204
- that._errorEvent,
205
- message
206
- );
207
- if (metadataError.retry) {
208
- return requestLayerJson();
209
- }
210
- return Promise.reject(new RuntimeError(message));
211
- }
212
-
213
- const tileUrlTemplates = data.tiles;
214
-
215
- const maxZoom = data.maxzoom;
216
- overallMaxZoom = Math.max(overallMaxZoom, maxZoom);
217
- // Keeps track of which of the availablity containing tiles have been loaded
218
-
219
- if (!data.projection || data.projection === "EPSG:4326") {
220
- that._tilingScheme = new GeographicTilingScheme({
221
- numberOfLevelZeroTilesX: 2,
222
- numberOfLevelZeroTilesY: 1,
223
- ellipsoid: that._ellipsoid,
224
- });
225
- } else if (data.projection === "EPSG:3857") {
226
- that._tilingScheme = new WebMercatorTilingScheme({
227
- numberOfLevelZeroTilesX: 1,
228
- numberOfLevelZeroTilesY: 1,
229
- ellipsoid: that._ellipsoid,
230
- });
231
- } else {
232
- message = `The projection "${data.projection}" is invalid or not supported.`;
233
- metadataError = TileProviderError.reportError(
234
- metadataError,
235
- that,
236
- that._errorEvent,
237
- message
238
- );
239
- if (metadataError.retry) {
240
- return requestLayerJson();
241
- }
242
- return Promise.reject(new RuntimeError(message));
243
- }
244
-
245
- that._levelZeroMaximumGeometricError = TerrainProvider.getEstimatedLevelZeroGeometricErrorForAHeightmap(
246
- that._tilingScheme.ellipsoid,
247
- that._heightmapWidth,
248
- that._tilingScheme.getNumberOfXTilesAtLevel(0)
534
+ this._readyPromise = Promise.resolve(true);
535
+ if (defined(options.url)) {
536
+ deprecationWarning(
537
+ "CesiumTerrainProvider options.url",
538
+ "options.url was deprecated in CesiumJS 1.104. It will be in CesiumJS 1.107. Use CesiumTerrainProvider.fromIonAssetId or CesiumTerrainProvider.fromUrl instead."
249
539
  );
250
- if (!data.scheme || data.scheme === "tms" || data.scheme === "slippyMap") {
251
- that._scheme = data.scheme;
252
- } else {
253
- message = `The scheme "${data.scheme}" is invalid or not supported.`;
254
- metadataError = TileProviderError.reportError(
255
- metadataError,
256
- that,
257
- that._errorEvent,
258
- message
259
- );
260
- if (metadataError.retry) {
261
- return requestLayerJson();
262
- }
263
- return Promise.reject(new RuntimeError(message));
264
- }
265
-
266
- let availabilityTilesLoaded;
267
-
268
- // The vertex normals defined in the 'octvertexnormals' extension is identical to the original
269
- // contents of the original 'vertexnormals' extension. 'vertexnormals' extension is now
270
- // deprecated, as the extensionLength for this extension was incorrectly using big endian.
271
- // We maintain backwards compatibility with the legacy 'vertexnormal' implementation
272
- // by setting the _littleEndianExtensionSize to false. Always prefer 'octvertexnormals'
273
- // over 'vertexnormals' if both extensions are supported by the server.
274
- if (
275
- defined(data.extensions) &&
276
- data.extensions.indexOf("octvertexnormals") !== -1
277
- ) {
278
- hasVertexNormals = true;
279
- } else if (
280
- defined(data.extensions) &&
281
- data.extensions.indexOf("vertexnormals") !== -1
282
- ) {
283
- hasVertexNormals = true;
284
- littleEndianExtensionSize = false;
285
- }
286
- if (
287
- defined(data.extensions) &&
288
- data.extensions.indexOf("watermask") !== -1
289
- ) {
290
- hasWaterMask = true;
291
- }
292
- if (
293
- defined(data.extensions) &&
294
- data.extensions.indexOf("metadata") !== -1
295
- ) {
296
- hasMetadata = true;
297
- }
298
-
299
- const availabilityLevels = data.metadataAvailability;
300
- const availableTiles = data.available;
301
- let availability;
302
- if (defined(availableTiles) && !defined(availabilityLevels)) {
303
- availability = new TileAvailability(
304
- that._tilingScheme,
305
- availableTiles.length
306
- );
307
- for (let level = 0; level < availableTiles.length; ++level) {
308
- const rangesAtLevel = availableTiles[level];
309
- const yTiles = that._tilingScheme.getNumberOfYTilesAtLevel(level);
310
- if (!defined(overallAvailability[level])) {
311
- overallAvailability[level] = [];
312
- }
313
-
314
- for (
315
- let rangeIndex = 0;
316
- rangeIndex < rangesAtLevel.length;
317
- ++rangeIndex
318
- ) {
319
- const range = rangesAtLevel[rangeIndex];
320
- const yStart = yTiles - range.endY - 1;
321
- const yEnd = yTiles - range.startY - 1;
322
- overallAvailability[level].push([
323
- range.startX,
324
- yStart,
325
- range.endX,
326
- yEnd,
327
- ]);
328
- availability.addAvailableTileRange(
329
- level,
330
- range.startX,
331
- yStart,
332
- range.endX,
333
- yEnd
334
- );
335
- }
336
- }
337
- } else if (defined(availabilityLevels)) {
338
- availabilityTilesLoaded = new TileAvailability(
339
- that._tilingScheme,
340
- maxZoom
341
- );
342
- availability = new TileAvailability(that._tilingScheme, maxZoom);
343
- overallAvailability[0] = [[0, 0, 1, 0]];
344
- availability.addAvailableTileRange(0, 0, 0, 1, 0);
345
- }
346
-
347
- that._hasWaterMask = that._hasWaterMask || hasWaterMask;
348
- that._hasVertexNormals = that._hasVertexNormals || hasVertexNormals;
349
- that._hasMetadata = that._hasMetadata || hasMetadata;
350
- if (defined(data.attribution)) {
351
- if (attribution.length > 0) {
352
- attribution += " ";
353
- }
354
- attribution += data.attribution;
355
- }
356
-
357
- layers.push(
358
- new LayerInformation({
359
- resource: lastResource,
360
- version: data.version,
361
- isHeightmap: isHeightmap,
362
- tileUrlTemplates: tileUrlTemplates,
363
- availability: availability,
364
- hasVertexNormals: hasVertexNormals,
365
- hasWaterMask: hasWaterMask,
366
- hasMetadata: hasMetadata,
367
- availabilityLevels: availabilityLevels,
368
- availabilityTilesLoaded: availabilityTilesLoaded,
369
- littleEndianExtensionSize: littleEndianExtensionSize,
370
- })
540
+ this._readyPromise = CesiumTerrainProvider._initializeReadyPromise(
541
+ options,
542
+ this
371
543
  );
372
-
373
- const parentUrl = data.parentUrl;
374
- if (defined(parentUrl)) {
375
- if (!defined(availability)) {
376
- console.log(
377
- "A layer.json can't have a parentUrl if it does't have an available array."
378
- );
379
- return Promise.resolve(true);
380
- }
381
- lastResource = lastResource.getDerivedResource({
382
- url: parentUrl,
383
- });
384
- lastResource.appendForwardSlash(); // Terrain always expects a directory
385
- layerJsonResource = lastResource.getDerivedResource({
386
- url: "layer.json",
387
- });
388
- const parentMetadata = layerJsonResource.fetchJson();
389
- return Promise.resolve(parentMetadata)
390
- .then(parseMetadataSuccess)
391
- .catch(parseMetadataFailure);
392
- }
393
-
394
- return Promise.resolve(true);
395
544
  }
545
+ }
396
546
 
397
- function parseMetadataFailure(data) {
398
- const message = `An error occurred while accessing ${layerJsonResource.url}.`;
399
- metadataError = TileProviderError.reportError(
400
- metadataError,
401
- that,
402
- that._errorEvent,
403
- message
404
- );
405
- if (metadataError.retry) {
406
- return requestLayerJson();
547
+ // Exposed for deprecation
548
+ CesiumTerrainProvider._initializeReadyPromise = async function (
549
+ options,
550
+ provider
551
+ ) {
552
+ const url = await Promise.resolve(options.url);
553
+
554
+ const terrainProviderBuilder = new TerrainProviderBuilder(options);
555
+ const resource = Resource.createIfNeeded(url);
556
+ resource.appendForwardSlash();
557
+ terrainProviderBuilder.lastResource = resource;
558
+ terrainProviderBuilder.layerJsonResource = terrainProviderBuilder.lastResource.getDerivedResource(
559
+ {
560
+ url: "layer.json",
407
561
  }
408
- return Promise.reject(new RuntimeError(message));
409
- }
410
-
411
- function metadataSuccess(data) {
412
- return parseMetadataSuccess(data).then(function () {
413
- if (defined(metadataError)) {
414
- return;
415
- }
416
-
417
- const length = overallAvailability.length;
418
- if (length > 0) {
419
- const availability = (that._availability = new TileAvailability(
420
- that._tilingScheme,
421
- overallMaxZoom
422
- ));
423
- for (let level = 0; level < length; ++level) {
424
- const levelRanges = overallAvailability[level];
425
- for (let i = 0; i < levelRanges.length; ++i) {
426
- const range = levelRanges[i];
427
- availability.addAvailableTileRange(
428
- level,
429
- range[0],
430
- range[1],
431
- range[2],
432
- range[3]
433
- );
434
- }
435
- }
436
- }
437
-
438
- if (attribution.length > 0) {
439
- const layerJsonCredit = new Credit(attribution);
440
-
441
- if (defined(that._tileCredits)) {
442
- that._tileCredits.push(layerJsonCredit);
443
- } else {
444
- that._tileCredits = [layerJsonCredit];
445
- }
446
- }
562
+ );
447
563
 
448
- that._ready = true;
449
- return Promise.resolve(true);
450
- });
451
- }
564
+ await requestLayerJson(terrainProviderBuilder, provider);
565
+ terrainProviderBuilder.build(provider);
452
566
 
453
- function metadataFailure(data) {
454
- // If the metadata is not found, assume this is a pre-metadata heightmap tileset.
455
- if (defined(data) && data.statusCode === 404) {
456
- return metadataSuccess({
457
- tilejson: "2.1.0",
458
- format: "heightmap-1.0",
459
- version: "1.0.0",
460
- scheme: "tms",
461
- tiles: ["{z}/{x}/{y}.terrain?v={version}"],
462
- });
463
- }
464
- return parseMetadataFailure(data);
465
- }
466
-
467
- function requestLayerJson() {
468
- return Promise.resolve(layerJsonResource.fetchJson())
469
- .then(metadataSuccess)
470
- .catch(metadataFailure);
471
- }
472
- }
567
+ return true;
568
+ };
473
569
 
474
570
  /**
475
571
  * When using the Quantized-Mesh format, a tile may be returned that includes additional extensions, such as PerVertexNormals, watermask, etc.
@@ -483,7 +579,7 @@ const QuantizedMeshExtensionIds = {
483
579
  /**
484
580
  * Oct-Encoded Per-Vertex Normals are included as an extension to the tile mesh
485
581
  *
486
- * @type {Number}
582
+ * @type {number}
487
583
  * @constant
488
584
  * @default 1
489
585
  */
@@ -491,7 +587,7 @@ const QuantizedMeshExtensionIds = {
491
587
  /**
492
588
  * A watermask is included as an extension to the tile mesh
493
589
  *
494
- * @type {Number}
590
+ * @type {number}
495
591
  * @constant
496
592
  * @default 2
497
593
  */
@@ -499,7 +595,7 @@ const QuantizedMeshExtensionIds = {
499
595
  /**
500
596
  * A json object contain metadata about the tile
501
597
  *
502
- * @type {Number}
598
+ * @type {number}
503
599
  * @constant
504
600
  * @default 4
505
601
  */
@@ -783,21 +879,18 @@ function createQuantizedMeshTerrainData(provider, buffer, level, x, y, layer) {
783
879
  }
784
880
 
785
881
  /**
786
- * Requests the geometry for a given tile. This function should not be called before
787
- * {@link CesiumTerrainProvider#ready} returns true. The result must include terrain data and
882
+ * Requests the geometry for a given tile. The result must include terrain data and
788
883
  * may optionally include a water mask and an indication of which child tiles are available.
789
884
  *
790
- * @param {Number} x The X coordinate of the tile for which to request geometry.
791
- * @param {Number} y The Y coordinate of the tile for which to request geometry.
792
- * @param {Number} level The level of the tile for which to request geometry.
885
+ * @param {number} x The X coordinate of the tile for which to request geometry.
886
+ * @param {number} y The Y coordinate of the tile for which to request geometry.
887
+ * @param {number} level The level of the tile for which to request geometry.
793
888
  * @param {Request} [request] The request object. Intended for internal use only.
794
889
  *
795
- * @returns {Promise.<TerrainData>|undefined} A promise for the requested geometry. If this method
890
+ * @returns {Promise<TerrainData>|undefined} A promise for the requested geometry. If this method
796
891
  * returns undefined instead of a promise, it is an indication that too many requests are already
797
892
  * pending and the request will be retried later.
798
893
  *
799
- * @exception {DeveloperError} This function must not be called before {@link CesiumTerrainProvider#ready}
800
- * returns true.
801
894
  */
802
895
  CesiumTerrainProvider.prototype.requestTileGeometry = function (
803
896
  x,
@@ -805,14 +898,6 @@ CesiumTerrainProvider.prototype.requestTileGeometry = function (
805
898
  level,
806
899
  request
807
900
  ) {
808
- //>>includeStart('debug', pragmas.debug)
809
- if (!this._ready) {
810
- throw new DeveloperError(
811
- "requestTileGeometry must not be called before the terrain provider is ready."
812
- );
813
- }
814
- //>>includeEnd('debug');
815
-
816
901
  const layers = this._layers;
817
902
  let layerToUse;
818
903
  const layerCount = layers.length;
@@ -879,7 +964,7 @@ function requestTileGeometry(provider, x, y, level, layerToUse, request) {
879
964
  defined(resource._ionEndpoint) &&
880
965
  !defined(resource._ionEndpoint.externalType)
881
966
  ) {
882
- // ion uses query paremeters to request extensions
967
+ // ion uses query parameters to request extensions
883
968
  if (extensionList.length !== 0) {
884
969
  query = { extensions: extensionList.join("-") };
885
970
  }
@@ -943,42 +1028,25 @@ Object.defineProperties(CesiumTerrainProvider.prototype, {
943
1028
 
944
1029
  /**
945
1030
  * Gets the credit to display when this terrain provider is active. Typically this is used to credit
946
- * the source of the terrain. This function should not be called before {@link CesiumTerrainProvider#ready} returns true.
1031
+ * the source of the terrain.
947
1032
  * @memberof CesiumTerrainProvider.prototype
948
1033
  * @type {Credit}
949
1034
  * @readonly
950
1035
  */
951
1036
  credit: {
952
1037
  get: function () {
953
- //>>includeStart('debug', pragmas.debug)
954
- if (!this._ready) {
955
- throw new DeveloperError(
956
- "credit must not be called before the terrain provider is ready."
957
- );
958
- }
959
- //>>includeEnd('debug');
960
-
961
1038
  return this._credit;
962
1039
  },
963
1040
  },
964
1041
 
965
1042
  /**
966
- * Gets the tiling scheme used by this provider. This function should
967
- * not be called before {@link CesiumTerrainProvider#ready} returns true.
1043
+ * Gets the tiling scheme used by this provider.
968
1044
  * @memberof CesiumTerrainProvider.prototype
969
1045
  * @type {GeographicTilingScheme}
970
1046
  * @readonly
971
1047
  */
972
1048
  tilingScheme: {
973
1049
  get: function () {
974
- //>>includeStart('debug', pragmas.debug)
975
- if (!this._ready) {
976
- throw new DeveloperError(
977
- "tilingScheme must not be called before the terrain provider is ready."
978
- );
979
- }
980
- //>>includeEnd('debug');
981
-
982
1050
  return this._tilingScheme;
983
1051
  },
984
1052
  },
@@ -986,11 +1054,16 @@ Object.defineProperties(CesiumTerrainProvider.prototype, {
986
1054
  /**
987
1055
  * Gets a value indicating whether or not the provider is ready for use.
988
1056
  * @memberof CesiumTerrainProvider.prototype
989
- * @type {Boolean}
1057
+ * @type {boolean}
990
1058
  * @readonly
1059
+ * @deprecated
991
1060
  */
992
1061
  ready: {
993
1062
  get: function () {
1063
+ deprecationWarning(
1064
+ "CesiumTerrainProvider.ready",
1065
+ "CesiumTerrainProvider.ready was deprecated in CesiumJS 1.104. It will be in CesiumJS 1.107. Use CesiumTerrainProvider.fromIonAssetId or CesiumTerrainProvider.fromUrl instead."
1066
+ );
994
1067
  return this._ready;
995
1068
  },
996
1069
  },
@@ -998,11 +1071,16 @@ Object.defineProperties(CesiumTerrainProvider.prototype, {
998
1071
  /**
999
1072
  * Gets a promise that resolves to true when the provider is ready for use.
1000
1073
  * @memberof CesiumTerrainProvider.prototype
1001
- * @type {Promise.<Boolean>}
1074
+ * @type {Promise<boolean>}
1002
1075
  * @readonly
1076
+ * @deprecated
1003
1077
  */
1004
1078
  readyPromise: {
1005
1079
  get: function () {
1080
+ deprecationWarning(
1081
+ "CesiumTerrainProvider.readyPromise",
1082
+ "CesiumTerrainProvider.readyPromise was deprecated in CesiumJS 1.104. It will be in CesiumJS 1.107. Use CesiumTerrainProvider.fromIonAssetId or CesiumTerrainProvider.fromUrl instead."
1083
+ );
1006
1084
  return this._readyPromise;
1007
1085
  },
1008
1086
  },
@@ -1010,45 +1088,25 @@ Object.defineProperties(CesiumTerrainProvider.prototype, {
1010
1088
  /**
1011
1089
  * Gets a value indicating whether or not the provider includes a water mask. The water mask
1012
1090
  * indicates which areas of the globe are water rather than land, so they can be rendered
1013
- * as a reflective surface with animated waves. This function should not be
1014
- * called before {@link CesiumTerrainProvider#ready} returns true.
1091
+ * as a reflective surface with animated waves.
1015
1092
  * @memberof CesiumTerrainProvider.prototype
1016
- * @type {Boolean}
1093
+ * @type {boolean}
1017
1094
  * @readonly
1018
- * @exception {DeveloperError} This property must not be called before {@link CesiumTerrainProvider#ready}
1019
1095
  */
1020
1096
  hasWaterMask: {
1021
1097
  get: function () {
1022
- //>>includeStart('debug', pragmas.debug)
1023
- if (!this._ready) {
1024
- throw new DeveloperError(
1025
- "hasWaterMask must not be called before the terrain provider is ready."
1026
- );
1027
- }
1028
- //>>includeEnd('debug');
1029
-
1030
1098
  return this._hasWaterMask && this._requestWaterMask;
1031
1099
  },
1032
1100
  },
1033
1101
 
1034
1102
  /**
1035
1103
  * Gets a value indicating whether or not the requested tiles include vertex normals.
1036
- * This function should not be called before {@link CesiumTerrainProvider#ready} returns true.
1037
1104
  * @memberof CesiumTerrainProvider.prototype
1038
- * @type {Boolean}
1105
+ * @type {boolean}
1039
1106
  * @readonly
1040
- * @exception {DeveloperError} This property must not be called before {@link CesiumTerrainProvider#ready}
1041
1107
  */
1042
1108
  hasVertexNormals: {
1043
1109
  get: function () {
1044
- //>>includeStart('debug', pragmas.debug)
1045
- if (!this._ready) {
1046
- throw new DeveloperError(
1047
- "hasVertexNormals must not be called before the terrain provider is ready."
1048
- );
1049
- }
1050
- //>>includeEnd('debug');
1051
-
1052
1110
  // returns true if we can request vertex normals from the server
1053
1111
  return this._hasVertexNormals && this._requestVertexNormals;
1054
1112
  },
@@ -1056,22 +1114,12 @@ Object.defineProperties(CesiumTerrainProvider.prototype, {
1056
1114
 
1057
1115
  /**
1058
1116
  * Gets a value indicating whether or not the requested tiles include metadata.
1059
- * This function should not be called before {@link CesiumTerrainProvider#ready} returns true.
1060
1117
  * @memberof CesiumTerrainProvider.prototype
1061
- * @type {Boolean}
1118
+ * @type {boolean}
1062
1119
  * @readonly
1063
- * @exception {DeveloperError} This property must not be called before {@link CesiumTerrainProvider#ready}
1064
1120
  */
1065
1121
  hasMetadata: {
1066
1122
  get: function () {
1067
- //>>includeStart('debug', pragmas.debug)
1068
- if (!this._ready) {
1069
- throw new DeveloperError(
1070
- "hasMetadata must not be called before the terrain provider is ready."
1071
- );
1072
- }
1073
- //>>includeEnd('debug');
1074
-
1075
1123
  // returns true if we can request metadata from the server
1076
1124
  return this._hasMetadata && this._requestMetadata;
1077
1125
  },
@@ -1082,7 +1130,7 @@ Object.defineProperties(CesiumTerrainProvider.prototype, {
1082
1130
  * Vertex normals data is appended to the standard tile mesh data only if the client requests the vertex normals and
1083
1131
  * if the server provides vertex normals.
1084
1132
  * @memberof CesiumTerrainProvider.prototype
1085
- * @type {Boolean}
1133
+ * @type {boolean}
1086
1134
  * @readonly
1087
1135
  */
1088
1136
  requestVertexNormals: {
@@ -1096,7 +1144,7 @@ Object.defineProperties(CesiumTerrainProvider.prototype, {
1096
1144
  * Watermask data is appended to the standard tile mesh data only if the client requests the watermask and
1097
1145
  * if the server provides a watermask.
1098
1146
  * @memberof CesiumTerrainProvider.prototype
1099
- * @type {Boolean}
1147
+ * @type {boolean}
1100
1148
  * @readonly
1101
1149
  */
1102
1150
  requestWaterMask: {
@@ -1110,7 +1158,7 @@ Object.defineProperties(CesiumTerrainProvider.prototype, {
1110
1158
  * Metadata is appended to the standard tile mesh data only if the client requests the metadata and
1111
1159
  * if the server provides a metadata.
1112
1160
  * @memberof CesiumTerrainProvider.prototype
1113
- * @type {Boolean}
1161
+ * @type {boolean}
1114
1162
  * @readonly
1115
1163
  */
1116
1164
  requestMetadata: {
@@ -1121,8 +1169,7 @@ Object.defineProperties(CesiumTerrainProvider.prototype, {
1121
1169
 
1122
1170
  /**
1123
1171
  * Gets an object that can be used to determine availability of terrain from this provider, such as
1124
- * at points and in rectangles. This function should not be called before
1125
- * {@link CesiumTerrainProvider#ready} returns true. This property may be undefined if availability
1172
+ * at points and in rectangles. This property may be undefined if availability
1126
1173
  * information is not available. Note that this reflects tiles that are known to be available currently.
1127
1174
  * Additional tiles may be discovered to be available in the future, e.g. if availability information
1128
1175
  * exists deeper in the tree rather than it all being discoverable at the root. However, a tile that
@@ -1133,13 +1180,6 @@ Object.defineProperties(CesiumTerrainProvider.prototype, {
1133
1180
  */
1134
1181
  availability: {
1135
1182
  get: function () {
1136
- //>>includeStart('debug', pragmas.debug)
1137
- if (!this._ready) {
1138
- throw new DeveloperError(
1139
- "availability must not be called before the terrain provider is ready."
1140
- );
1141
- }
1142
- //>>includeEnd('debug');
1143
1183
  return this._availability;
1144
1184
  },
1145
1185
  },
@@ -1148,8 +1188,8 @@ Object.defineProperties(CesiumTerrainProvider.prototype, {
1148
1188
  /**
1149
1189
  * Gets the maximum geometric error allowed in a tile at a given level.
1150
1190
  *
1151
- * @param {Number} level The tile level for which to get the maximum geometric error.
1152
- * @returns {Number} The maximum geometric error.
1191
+ * @param {number} level The tile level for which to get the maximum geometric error.
1192
+ * @returns {number} The maximum geometric error.
1153
1193
  */
1154
1194
  CesiumTerrainProvider.prototype.getLevelMaximumGeometricError = function (
1155
1195
  level
@@ -1157,13 +1197,110 @@ CesiumTerrainProvider.prototype.getLevelMaximumGeometricError = function (
1157
1197
  return this._levelZeroMaximumGeometricError / (1 << level);
1158
1198
  };
1159
1199
 
1200
+ /**
1201
+ * Creates a {@link TerrainProvider} from a Cesium ion asset ID that accesses terrain data in a Cesium terrain format
1202
+ * Terrain formats can be one of the following:
1203
+ * <ul>
1204
+ * <li> {@link https://github.com/AnalyticalGraphicsInc/quantized-mesh Quantized Mesh} </li>
1205
+ * <li> {@link https://github.com/AnalyticalGraphicsInc/cesium/wiki/heightmap-1.0 Height Map} </li>
1206
+ * </ul>
1207
+ *
1208
+ * @param {number} assetId The Cesium ion asset id.
1209
+ * @param {CesiumTerrainProvider.ConstructorOptions} [options] An object describing initialization options.
1210
+ * @returns {Promise<CesiumTerrainProvider>}
1211
+ *
1212
+ * @example
1213
+ * // Create Arctic DEM terrain with normals.
1214
+ * try {
1215
+ * const viewer = new Cesium.Viewer("cesiumContainer", {
1216
+ * terrainProvider: await Cesium.CesiumTerrainProvider.fromIonAssetId(3956, {
1217
+ * requestVertexNormals: true
1218
+ * })
1219
+ * });
1220
+ * } catch (error) {
1221
+ * console.log(error);
1222
+ * }
1223
+ *
1224
+ * @exception {RuntimeError} layer.json does not specify a format
1225
+ * @exception {RuntimeError} layer.json specifies an unknown format
1226
+ * @exception {RuntimeError} layer.json specifies an unsupported quantized-mesh version
1227
+ * @exception {RuntimeError} layer.json does not specify a tiles property, or specifies an empty array
1228
+ * @exception {RuntimeError} layer.json does not specify any tile URL templates
1229
+ */
1230
+ CesiumTerrainProvider.fromIonAssetId = async function (assetId, options) {
1231
+ //>>includeStart('debug', pragmas.debug);
1232
+ Check.defined("assetId", assetId);
1233
+ //>>includeEnd('debug');
1234
+
1235
+ const resource = await IonResource.fromAssetId(assetId);
1236
+ return CesiumTerrainProvider.fromUrl(resource, options);
1237
+ };
1238
+
1239
+ /**
1240
+ * Creates a {@link TerrainProvider} that accesses terrain data in a Cesium terrain format.
1241
+ * Terrain formats can be one of the following:
1242
+ * <ul>
1243
+ * <li> {@link https://github.com/AnalyticalGraphicsInc/quantized-mesh Quantized Mesh} </li>
1244
+ * <li> {@link https://github.com/AnalyticalGraphicsInc/cesium/wiki/heightmap-1.0 Height Map} </li>
1245
+ * </ul>
1246
+ *
1247
+ * @param {Resource|String|Promise<Resource>|Promise<String>} url The URL of the Cesium terrain server.
1248
+ * @param {CesiumTerrainProvider.ConstructorOptions} [options] An object describing initialization options.
1249
+ * @returns {Promise<CesiumTerrainProvider>}
1250
+ *
1251
+ * @example
1252
+ * // Create Arctic DEM terrain with normals.
1253
+ * try {
1254
+ * const viewer = new Cesium.Viewer("cesiumContainer", {
1255
+ * terrainProvider: await Cesium.CesiumTerrainProvider.fromUrl(
1256
+ * Cesium.IonResource.fromAssetId(3956), {
1257
+ * requestVertexNormals: true
1258
+ * })
1259
+ * });
1260
+ * } catch (error) {
1261
+ * console.log(error);
1262
+ * }
1263
+ *
1264
+ * @exception {RuntimeError} layer.json does not specify a format
1265
+ * @exception {RuntimeError} layer.json specifies an unknown format
1266
+ * @exception {RuntimeError} layer.json specifies an unsupported quantized-mesh version
1267
+ * @exception {RuntimeError} layer.json does not specify a tiles property, or specifies an empty array
1268
+ * @exception {RuntimeError} layer.json does not specify any tile URL templates
1269
+ */
1270
+ CesiumTerrainProvider.fromUrl = async function (url, options) {
1271
+ //>>includeStart('debug', pragmas.debug);
1272
+ Check.defined("url", url);
1273
+ //>>includeEnd('debug');
1274
+
1275
+ options = defaultValue(options, defaultValue.EMPTY_OBJECT);
1276
+
1277
+ url = await Promise.resolve(url);
1278
+ const resource = Resource.createIfNeeded(url);
1279
+ resource.appendForwardSlash();
1280
+
1281
+ const terrainProviderBuilder = new TerrainProviderBuilder(options);
1282
+ terrainProviderBuilder.lastResource = resource;
1283
+ terrainProviderBuilder.layerJsonResource = terrainProviderBuilder.lastResource.getDerivedResource(
1284
+ {
1285
+ url: "layer.json",
1286
+ }
1287
+ );
1288
+
1289
+ await requestLayerJson(terrainProviderBuilder);
1290
+
1291
+ const provider = new CesiumTerrainProvider(options);
1292
+ terrainProviderBuilder.build(provider);
1293
+
1294
+ return provider;
1295
+ };
1296
+
1160
1297
  /**
1161
1298
  * Determines whether data for a tile is available to be loaded.
1162
1299
  *
1163
- * @param {Number} x The X coordinate of the tile for which to request geometry.
1164
- * @param {Number} y The Y coordinate of the tile for which to request geometry.
1165
- * @param {Number} level The level of the tile for which to request geometry.
1166
- * @returns {Boolean|undefined} Undefined if not supported or availability is unknown, otherwise true or false.
1300
+ * @param {number} x The X coordinate of the tile for which to request geometry.
1301
+ * @param {number} y The Y coordinate of the tile for which to request geometry.
1302
+ * @param {number} level The level of the tile for which to request geometry.
1303
+ * @returns {boolean|undefined} Undefined if not supported or availability is unknown, otherwise true or false.
1167
1304
  */
1168
1305
  CesiumTerrainProvider.prototype.getTileDataAvailable = function (x, y, level) {
1169
1306
  if (!defined(this._availability)) {
@@ -1198,9 +1335,9 @@ CesiumTerrainProvider.prototype.getTileDataAvailable = function (x, y, level) {
1198
1335
  /**
1199
1336
  * Makes sure we load availability data for a tile
1200
1337
  *
1201
- * @param {Number} x The X coordinate of the tile for which to request geometry.
1202
- * @param {Number} y The Y coordinate of the tile for which to request geometry.
1203
- * @param {Number} level The level of the tile for which to request geometry.
1338
+ * @param {number} x The X coordinate of the tile for which to request geometry.
1339
+ * @param {number} y The Y coordinate of the tile for which to request geometry.
1340
+ * @param {number} level The level of the tile for which to request geometry.
1204
1341
  * @returns {undefined|Promise<void>} Undefined if nothing need to be loaded or a Promise that resolves when all required tiles are loaded
1205
1342
  */
1206
1343
  CesiumTerrainProvider.prototype.loadTileDataAvailability = function (