@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
@@ -59,7 +59,7 @@ const Material = ModelComponents.Material;
59
59
  * States of the glTF loading process. These states also apply to
60
60
  * asynchronous texture loading unless otherwise noted
61
61
  *
62
- * @enum {Number}
62
+ * @enum {number}
63
63
  *
64
64
  * @private
65
65
  */
@@ -67,7 +67,7 @@ const GltfLoaderState = {
67
67
  /**
68
68
  * The initial state of the glTF loader before load() is called.
69
69
  *
70
- * @type {Number}
70
+ * @type {number}
71
71
  * @constant
72
72
  *
73
73
  * @private
@@ -77,7 +77,7 @@ const GltfLoaderState = {
77
77
  * The state of the loader while waiting for the glTF JSON loader promise
78
78
  * to resolve.
79
79
  *
80
- * @type {Number}
80
+ * @type {number}
81
81
  * @constant
82
82
  *
83
83
  * @private
@@ -87,16 +87,20 @@ const GltfLoaderState = {
87
87
  * The state of the loader once the glTF JSON is loaded but before
88
88
  * process() is called.
89
89
  *
90
- * @type {Number}
90
+ * @type {number}
91
91
  * @constant
92
+ *
93
+ * @private
92
94
  */
93
95
  LOADED: 2,
94
96
  /**
95
97
  * The state of the loader while parsing the glTF and creating GPU resources
96
98
  * as needed.
97
99
  *
98
- * @type {Number}
100
+ * @type {number}
99
101
  * @constant
102
+ *
103
+ * @private
100
104
  */
101
105
  PROCESSING: 3,
102
106
  /**
@@ -107,8 +111,10 @@ const GltfLoaderState = {
107
111
  * This state is not used for asynchronous texture loading.
108
112
  * </p>
109
113
  *
110
- * @type {Number}
114
+ * @type {number}
111
115
  * @constant
116
+ *
117
+ * @private
112
118
  */
113
119
  POST_PROCESSING: 4,
114
120
  /**
@@ -116,30 +122,38 @@ const GltfLoaderState = {
116
122
  * enters the processed state (sometimes from a promise chain). The next
117
123
  * call to process() will advance to the ready state.
118
124
  *
119
- * @type {Number}
125
+ * @type {number}
120
126
  * @constant
127
+ *
128
+ * @private
121
129
  */
122
130
  PROCESSED: 5,
123
131
  /**
124
132
  * When the loader reaches the ready state, the loaders' promise will be
125
133
  * resolved.
126
134
  *
127
- * @type {Number}
135
+ * @type {number}
128
136
  * @constant
137
+ *
138
+ * @private
129
139
  */
130
140
  READY: 6,
131
141
  /**
132
142
  * If an error occurs at any point, the loader switches to the failed state.
133
143
  *
134
- * @type {Number}
144
+ * @type {number}
135
145
  * @constant
146
+ *
147
+ * @private
136
148
  */
137
149
  FAILED: 7,
138
150
  /**
139
151
  * If unload() is called, the loader switches to the unloaded state.
140
152
  *
141
- * @type {Number}
153
+ * @type {number}
142
154
  * @constant
155
+ *
156
+ * @private
143
157
  */
144
158
  UNLOADED: 8,
145
159
  };
@@ -154,22 +168,22 @@ const GltfLoaderState = {
154
168
  * @constructor
155
169
  * @augments ResourceLoader
156
170
  *
157
- * @param {Object} options Object with the following properties:
171
+ * @param {object} options Object with the following properties:
158
172
  * @param {Resource} options.gltfResource The {@link Resource} containing the glTF. This is often the path of the .gltf or .glb file, but may also be the path of the .b3dm, .i3dm, or .cmpt file containing the embedded glb. .cmpt resources should have a URI fragment indicating the index of the inner content to which the glb belongs in order to individually identify the glb in the cache, e.g. http://example.com/tile.cmpt#index=2.
159
173
  * @param {Resource} [options.baseResource] The {@link Resource} that paths in the glTF JSON are relative to.
160
174
  * @param {Uint8Array} [options.typedArray] The typed array containing the glTF contents, e.g. from a .b3dm, .i3dm, or .cmpt file.
161
- * @param {Object} [options.gltfJson] A parsed glTF JSON file instead of passing it in as a typed array.
162
- * @param {Boolean} [options.releaseGltfJson=false] When true, the glTF JSON is released once the glTF is loaded. This is especially useful for cases like 3D Tiles, where each .gltf model is unique and caching the glTF JSON is not effective.
163
- * @param {Boolean} [options.asynchronous=true] Determines if WebGL resource creation will be spread out over several frames or block until all WebGL resources are created.
164
- * @param {Boolean} [options.incrementallyLoadTextures=true] Determine if textures may continue to stream in after the glTF is loaded.
175
+ * @param {object} [options.gltfJson] A parsed glTF JSON file instead of passing it in as a typed array.
176
+ * @param {boolean} [options.releaseGltfJson=false] When true, the glTF JSON is released once the glTF is loaded. This is especially useful for cases like 3D Tiles, where each .gltf model is unique and caching the glTF JSON is not effective.
177
+ * @param {boolean} [options.asynchronous=true] Determines if WebGL resource creation will be spread out over several frames or block until all WebGL resources are created.
178
+ * @param {boolean} [options.incrementallyLoadTextures=true] Determine if textures may continue to stream in after the glTF is loaded.
165
179
  * @param {Axis} [options.upAxis=Axis.Y] The up-axis of the glTF model.
166
180
  * @param {Axis} [options.forwardAxis=Axis.Z] The forward-axis of the glTF model.
167
- * @param {Boolean} [options.loadAttributesAsTypedArray=false] Load all attributes and indices as typed arrays instead of GPU buffers. If the attributes are interleaved in the glTF they will be de-interleaved in the typed array.
168
- * @param {Boolean} [options.loadAttributesFor2D=false] If <code>true</code>, load the positions buffer and any instanced attribute buffers as typed arrays for accurately projecting models to 2D.
169
- * @param {Boolean} [options.loadIndicesForWireframe=false] If <code>true</code>, load the index buffer as both a buffer and typed array. The latter is useful for creating wireframe indices in WebGL1.
170
- * @param {Boolean} [options.loadPrimitiveOutline=true] If <code>true</code>, load outlines from the {@link https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Vendor/CESIUM_primitive_outline|CESIUM_primitive_outline} extension. This can be set false to avoid post-processing geometry at load time.
171
- * @param {Boolean} [options.loadForClassification=false] If <code>true</code> and if the model has feature IDs, load the feature IDs and indices as typed arrays. This is useful for batching features for classification.
172
- * @param {Boolean} [options.renameBatchIdSemantic=false] If <code>true</code>, rename _BATCHID or BATCHID to _FEATURE_ID_0. This is used for .b3dm models
181
+ * @param {boolean} [options.loadAttributesAsTypedArray=false] Load all attributes and indices as typed arrays instead of GPU buffers. If the attributes are interleaved in the glTF they will be de-interleaved in the typed array.
182
+ * @param {boolean} [options.loadAttributesFor2D=false] If <code>true</code>, load the positions buffer and any instanced attribute buffers as typed arrays for accurately projecting models to 2D.
183
+ * @param {boolean} [options.loadIndicesForWireframe=false] If <code>true</code>, load the index buffer as both a buffer and typed array. The latter is useful for creating wireframe indices in WebGL1.
184
+ * @param {boolean} [options.loadPrimitiveOutline=true] If <code>true</code>, load outlines from the {@link https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Vendor/CESIUM_primitive_outline|CESIUM_primitive_outline} extension. This can be set false to avoid post-processing geometry at load time.
185
+ * @param {boolean} [options.loadForClassification=false] If <code>true</code> and if the model has feature IDs, load the feature IDs and indices as typed arrays. This is useful for batching features for classification.
186
+ * @param {boolean} [options.renameBatchIdSemantic=false] If <code>true</code>, rename _BATCHID or BATCHID to _FEATURE_ID_0. This is used for .b3dm models
173
187
  * @private
174
188
  */
175
189
  function GltfLoader(options) {
@@ -242,9 +256,8 @@ function GltfLoader(options) {
242
256
  this._state = GltfLoaderState.NOT_LOADED;
243
257
  this._textureState = GltfLoaderState.NOT_LOADED;
244
258
  this._promise = undefined;
245
- this._texturesLoadedPromise = undefined;
246
- this._process = function (loader, frameState) {};
247
- this._processTextures = function (loader, frameState) {};
259
+ this._processError = undefined;
260
+ this._textureErrors = [];
248
261
 
249
262
  // Information about whether to load primitives as typed arrays or buffers,
250
263
  // and whether post-processing is needed after loading (e.g. for
@@ -255,9 +268,14 @@ function GltfLoader(options) {
255
268
  this._loaderPromises = [];
256
269
  this._textureLoaders = [];
257
270
  this._texturesPromises = [];
271
+ this._textureCallbacks = [];
258
272
  this._bufferViewLoaders = [];
259
273
  this._geometryLoaders = [];
274
+ this._geometryCallbacks = [];
260
275
  this._structuralMetadataLoader = undefined;
276
+ this._loadResourcesPromise = undefined;
277
+ this._resourcesLoaded = false;
278
+ this._texturesLoaded = false;
261
279
 
262
280
  // In some cases where geometry post-processing is needed (like generating
263
281
  // outlines) new attributes are added that may have GPU resources attached.
@@ -275,231 +293,223 @@ if (defined(Object.create)) {
275
293
 
276
294
  Object.defineProperties(GltfLoader.prototype, {
277
295
  /**
278
- * A promise that resolves to the resource when the resource is ready, or undefined if the resource hasn't started loading.
296
+ * The cache key of the resource.
279
297
  *
280
298
  * @memberof GltfLoader.prototype
281
299
  *
282
- * @type {Promise.<GltfLoader>|undefined}
300
+ * @type {string}
283
301
  * @readonly
284
302
  * @private
285
303
  */
286
- promise: {
304
+ cacheKey: {
287
305
  get: function () {
288
- return this._promise;
306
+ return undefined;
289
307
  },
290
308
  },
291
309
  /**
292
- * The cache key of the resource.
310
+ * The loaded components.
293
311
  *
294
312
  * @memberof GltfLoader.prototype
295
313
  *
296
- * @type {String}
314
+ * @type {ModelComponents.Components}
297
315
  * @readonly
298
316
  * @private
299
317
  */
300
- cacheKey: {
318
+ components: {
301
319
  get: function () {
302
- return undefined;
320
+ return this._components;
303
321
  },
304
322
  },
305
323
  /**
306
- * The loaded components.
324
+ * The loaded glTF json.
307
325
  *
308
326
  * @memberof GltfLoader.prototype
309
327
  *
310
- * @type {ModelComponents.Components}
328
+ * @type {object}
311
329
  * @readonly
312
330
  * @private
313
331
  */
314
- components: {
332
+ gltfJson: {
315
333
  get: function () {
316
- return this._components;
334
+ if (defined(this._gltfJsonLoader)) {
335
+ return this._gltfJsonLoader.gltf;
336
+ }
337
+ return this._gltfJson;
317
338
  },
318
339
  },
319
-
320
340
  /**
321
- * A promise that resolves when all textures are loaded.
322
- * When <code>incrementallyLoadTextures</code> is true this may resolve after
323
- * <code>promise</code> resolves.
341
+ * Returns true if textures are loaded separately from the other glTF resources.
324
342
  *
325
343
  * @memberof GltfLoader.prototype
326
344
  *
327
- * @type {Promise<void>}
345
+ * @type {boolean}
328
346
  * @readonly
329
347
  * @private
330
348
  */
331
- texturesLoadedPromise: {
349
+ incrementallyLoadTextures: {
332
350
  get: function () {
333
- return this._texturesLoadedPromise;
351
+ return this._incrementallyLoadTextures;
352
+ },
353
+ },
354
+ /**
355
+ * true if textures are loaded, useful when incrementallyLoadTextures is true
356
+ *
357
+ * @memberof GltfLoader.prototype
358
+ *
359
+ * @type {boolean}
360
+ * @readonly
361
+ * @private
362
+ */
363
+ texturesLoaded: {
364
+ get: function () {
365
+ return this._texturesLoaded;
334
366
  },
335
367
  },
336
368
  });
337
369
 
338
370
  /**
339
- * Loads the resource.
340
- * @returns {Promise.<GltfLoader>} A promise which resolves to the loader when the resource loading is completed.
341
- * @private
371
+ * Loads the gltf object
342
372
  */
343
- GltfLoader.prototype.load = function () {
344
- const gltfJsonLoader = ResourceCache.loadGltfJson({
345
- gltfResource: this._gltfResource,
346
- baseResource: this._baseResource,
347
- typedArray: this._typedArray,
348
- gltfJson: this._gltfJson,
349
- });
350
-
351
- this._gltfJsonLoader = gltfJsonLoader;
352
- this._state = GltfLoaderState.LOADING;
353
- this._textureState = GltfLoaderState.LOADING;
373
+ async function loadGltfJson(loader) {
374
+ loader._state = GltfLoaderState.LOADING;
375
+ loader._textureState = GltfLoaderState.LOADING;
376
+
377
+ try {
378
+ const gltfJsonLoader = ResourceCache.getGltfJsonLoader({
379
+ gltfResource: loader._gltfResource,
380
+ baseResource: loader._baseResource,
381
+ typedArray: loader._typedArray,
382
+ gltfJson: loader._gltfJson,
383
+ });
384
+ loader._gltfJsonLoader = gltfJsonLoader;
385
+ await gltfJsonLoader.load();
354
386
 
355
- const that = this;
356
- let textureProcessPromise;
357
- const processPromise = new Promise(function (resolve, reject) {
358
- textureProcessPromise = new Promise(function (
359
- resolveTextures,
360
- rejectTextures
387
+ if (
388
+ loader.isDestroyed() ||
389
+ loader.isUnloaded() ||
390
+ gltfJsonLoader.isDestroyed()
361
391
  ) {
362
- that._process = function (loader, frameState) {
363
- if (!FeatureDetection.supportsWebP.initialized) {
364
- FeatureDetection.supportsWebP.initialize();
365
- return;
366
- }
367
-
368
- if (loader._state === GltfLoaderState.LOADED) {
369
- loader._state = GltfLoaderState.PROCESSING;
370
-
371
- const supportedImageFormats = new SupportedImageFormats({
372
- webp: FeatureDetection.supportsWebP(),
373
- basis: frameState.context.supportsBasis,
374
- });
375
-
376
- let gltf;
377
- if (defined(loader._gltfJsonLoader)) {
378
- gltf = loader._gltfJsonLoader.gltf;
379
- } else {
380
- gltf = loader._gltfJson;
381
- }
382
-
383
- // Parse the glTF which populates the loaders arrays. The promise will
384
- // resolve once all the loaders are ready (i.e. all external resources
385
- // have been fetched and all GPU resources have been created). Loaders that
386
- // create GPU resources need to be processed every frame until they become
387
- // ready since the JobScheduler is not able to execute all jobs in a single
388
- // frame. Also note that it's fine to call process before a loader is ready
389
- // to process; nothing will happen.
390
- parse(
391
- loader,
392
- gltf,
393
- supportedImageFormats,
394
- frameState,
395
- reject,
396
- rejectTextures
397
- );
398
-
399
- if (defined(loader._gltfJsonLoader) && loader._releaseGltfJson) {
400
- // Check that the glTF JSON loader is still defined before trying to unload it.
401
- // It may be undefined if the ready promise rejects immediately (which can happen in unit tests)
402
- ResourceCache.unload(loader._gltfJsonLoader);
403
- loader._gltfJsonLoader = undefined;
404
- }
405
- }
392
+ return;
393
+ }
406
394
 
407
- if (loader._state === GltfLoaderState.PROCESSING) {
408
- processLoaders(loader, frameState);
409
- }
395
+ const gltf = gltfJsonLoader.gltf;
396
+ const version = gltf.asset.version;
397
+ if (version !== "1.0" && version !== "2.0") {
398
+ const url = loader._gltfResource.url;
399
+ throw new RuntimeError(
400
+ `Failed to load ${url}: \nUnsupported glTF version: ${version}`
401
+ );
402
+ }
410
403
 
411
- if (loader._state === GltfLoaderState.POST_PROCESSING) {
412
- postProcessGeometry(loader, frameState.context);
413
- loader._state = GltfLoaderState.PROCESSED;
414
- }
404
+ const extensionsRequired = gltf.extensionsRequired;
405
+ if (defined(extensionsRequired)) {
406
+ ModelUtility.checkSupportedExtensions(extensionsRequired);
415
407
 
416
- if (loader._state === GltfLoaderState.PROCESSED) {
417
- // The buffer views can be unloaded once the data is copied.
418
- unloadBufferViews(loader);
408
+ // Check for the KHR_mesh_quantization extension here, it will be used later
409
+ // in loadAttribute().
410
+ loader._hasKhrMeshQuantization = extensionsRequired.includes(
411
+ "KHR_mesh_quantization"
412
+ );
413
+ }
419
414
 
420
- // Similarly, if the glTF was loaded from a typed array, release the memory
421
- loader._typedArray = undefined;
415
+ loader._state = GltfLoaderState.LOADED;
416
+ loader._textureState = GltfLoaderState.LOADED;
422
417
 
423
- loader._state = GltfLoaderState.READY;
424
- resolve(loader);
425
- }
426
- };
418
+ return loader;
419
+ } catch (error) {
420
+ if (loader.isDestroyed()) {
421
+ return;
422
+ }
427
423
 
428
- that._processTextures = function (loader, frameState) {
429
- if (loader._textureState === GltfLoaderState.LOADED) {
430
- loader._textureState = GltfLoaderState.PROCESSING;
431
- }
424
+ loader._state = GltfLoaderState.FAILED;
425
+ loader._textureState = GltfLoaderState.FAILED;
426
+ handleError(loader, error);
427
+ }
428
+ }
432
429
 
433
- if (loader._textureState === GltfLoaderState.PROCESSING) {
434
- let i;
435
- const textureLoaders = loader._textureLoaders;
436
- const textureLoadersLength = textureLoaders.length;
437
- for (i = 0; i < textureLoadersLength; ++i) {
438
- textureLoaders[i].process(frameState);
439
- }
440
- }
430
+ async function loadResources(loader, frameState) {
431
+ if (!FeatureDetection.supportsWebP.initialized) {
432
+ await FeatureDetection.supportsWebP.initialize();
433
+ }
441
434
 
442
- if (loader._textureState === GltfLoaderState.PROCESSED) {
443
- loader._textureState = GltfLoaderState.READY;
444
- resolveTextures(loader);
445
- }
446
- };
447
- });
435
+ const supportedImageFormats = new SupportedImageFormats({
436
+ webp: FeatureDetection.supportsWebP(),
437
+ basis: frameState.context.supportsBasis,
448
438
  });
449
439
 
450
- this._promise = gltfJsonLoader.promise
451
- .then(function () {
452
- if (that.isDestroyed()) {
453
- return;
454
- }
455
- that._state = GltfLoaderState.LOADED;
456
- that._textureState = GltfLoaderState.LOADED;
440
+ // Parse the glTF which populates the loaders arrays. Loading promises will be created, and will
441
+ // resolve once the loaders are ready (i.e. all external resources
442
+ // have been fetched and all GPU resources have been created). Loaders that
443
+ // create GPU resources need to be processed every frame until they become
444
+ // ready since the JobScheduler is not able to execute all jobs in a single
445
+ // frame. Any promise failures are collected, and will be handled synchronously in process(). Also note that it's fine to call process before a loader is ready
446
+ // to process or after it has failed; nothing will happen.
447
+ const gltf = loader.gltfJson;
448
+ const promise = parse(loader, gltf, supportedImageFormats, frameState);
457
449
 
458
- return processPromise;
459
- })
460
- .catch(function (error) {
461
- if (that.isDestroyed()) {
462
- return;
463
- }
464
- that._state = GltfLoaderState.FAILED;
465
- that._textureState = GltfLoaderState.FAILED;
466
- return handleError(that, error);
467
- });
450
+ // All resource loaders have been created, so we can begin processing
451
+ loader._state = GltfLoaderState.PROCESSING;
452
+ loader._textureState = GltfLoaderState.PROCESSING;
468
453
 
469
- this._texturesLoadedPromise = textureProcessPromise.catch(function (error) {
470
- if (that.isDestroyed()) {
471
- return;
472
- }
454
+ if (defined(loader._gltfJsonLoader) && loader._releaseGltfJson) {
455
+ // Check that the glTF JSON loader is still defined before trying to unload it.
456
+ // It can be unloaded if the glTF loader is destroyed.
457
+ ResourceCache.unload(loader._gltfJsonLoader);
458
+ loader._gltfJsonLoader = undefined;
459
+ }
473
460
 
474
- that._textureState = GltfLoaderState.FAILED;
475
- return handleError(that, error);
476
- });
461
+ return promise;
462
+ }
463
+
464
+ /**
465
+ * Loads the resource.
466
+ * @returns {Promise.<GltfLoader>} A promise which resolves to the loader when the resource loading is completed.
467
+ * @exception {RuntimeError} Unsupported glTF version
468
+ * @exception {RuntimeError} Unsupported glTF Extension
469
+ * @private
470
+ */
471
+ GltfLoader.prototype.load = async function () {
472
+ if (defined(this._promise)) {
473
+ return this._promise;
474
+ }
477
475
 
476
+ this._promise = loadGltfJson(this);
478
477
  return this._promise;
479
478
  };
480
479
 
481
480
  function handleError(gltfLoader, error) {
482
481
  gltfLoader.unload();
483
482
  const errorMessage = "Failed to load glTF";
484
- error = gltfLoader.getError(errorMessage, error);
485
- return Promise.reject(error);
483
+ throw gltfLoader.getError(errorMessage, error);
486
484
  }
487
485
 
488
486
  function processLoaders(loader, frameState) {
489
- const bufferViewLoaders = loader._bufferViewLoaders;
490
- const bufferViewLoadersLength = bufferViewLoaders.length;
491
- for (let i = 0; i < bufferViewLoadersLength; ++i) {
492
- bufferViewLoaders[i].process(frameState);
493
- }
494
-
487
+ let i;
488
+ let ready = true;
495
489
  const geometryLoaders = loader._geometryLoaders;
496
490
  const geometryLoadersLength = geometryLoaders.length;
497
- for (let i = 0; i < geometryLoadersLength; ++i) {
498
- geometryLoaders[i].process(frameState);
491
+ for (i = 0; i < geometryLoadersLength; ++i) {
492
+ const geometryReady = geometryLoaders[i].process(frameState);
493
+ if (geometryReady && defined(loader._geometryCallbacks[i])) {
494
+ loader._geometryCallbacks[i]();
495
+ loader._geometryCallbacks[i] = undefined;
496
+ }
497
+ ready = ready && geometryReady;
499
498
  }
500
499
 
501
- if (defined(loader._structuralMetadataLoader)) {
502
- loader._structuralMetadataLoader.process(frameState);
500
+ const structuralMetadataLoader = loader._structuralMetadataLoader;
501
+ if (defined(structuralMetadataLoader)) {
502
+ const metadataReady = structuralMetadataLoader.process(frameState);
503
+ if (metadataReady) {
504
+ loader._components.structuralMetadata =
505
+ structuralMetadataLoader.structuralMetadata;
506
+ }
507
+ ready = ready && metadataReady;
508
+ }
509
+
510
+ if (ready) {
511
+ // Geometry requires further processing
512
+ loader._state = GltfLoaderState.POST_PROCESSING;
503
513
  }
504
514
  }
505
515
 
@@ -549,6 +559,77 @@ function gatherPostProcessBuffers(loader, primitiveLoadPlan) {
549
559
  }
550
560
  }
551
561
 
562
+ /**
563
+ * Process loaders other than textures
564
+ * @private
565
+ */
566
+ GltfLoader.prototype._process = function (frameState) {
567
+ if (this._state === GltfLoaderState.READY) {
568
+ return true;
569
+ }
570
+
571
+ if (this._state === GltfLoaderState.PROCESSING) {
572
+ processLoaders(this, frameState);
573
+ }
574
+
575
+ if (
576
+ this._resourcesLoaded &&
577
+ this._state === GltfLoaderState.POST_PROCESSING
578
+ ) {
579
+ postProcessGeometry(this, frameState.context);
580
+ this._state = GltfLoaderState.PROCESSED;
581
+ }
582
+
583
+ if (this._resourcesLoaded && this._state === GltfLoaderState.PROCESSED) {
584
+ // The buffer views can be unloaded once the data is copied.
585
+ unloadBufferViewLoaders(this);
586
+
587
+ // Similarly, if the glTF was loaded from a typed array, release the memory
588
+ this._typedArray = undefined;
589
+
590
+ this._state = GltfLoaderState.READY;
591
+ return true;
592
+ }
593
+
594
+ return false;
595
+ };
596
+
597
+ /**
598
+ * Process textures other than textures
599
+ * @private
600
+ */
601
+ GltfLoader.prototype._processTextures = function (frameState) {
602
+ if (this._textureState === GltfLoaderState.READY) {
603
+ return true;
604
+ }
605
+
606
+ if (this._textureState !== GltfLoaderState.PROCESSING) {
607
+ return false;
608
+ }
609
+
610
+ let i;
611
+ let ready = true;
612
+ const textureLoaders = this._textureLoaders;
613
+ const textureLoadersLength = textureLoaders.length;
614
+ for (i = 0; i < textureLoadersLength; ++i) {
615
+ const textureReady = textureLoaders[i].process(frameState);
616
+ if (textureReady && defined(this._textureCallbacks[i])) {
617
+ this._textureCallbacks[i]();
618
+ this._textureCallbacks[i] = undefined;
619
+ }
620
+
621
+ ready = ready && textureReady;
622
+ }
623
+
624
+ if (!ready) {
625
+ return false;
626
+ }
627
+
628
+ this._textureState = GltfLoaderState.READY;
629
+ this._texturesLoaded = true;
630
+ return true;
631
+ };
632
+
552
633
  /**
553
634
  * Processes the resource until it becomes ready.
554
635
  *
@@ -560,12 +641,64 @@ GltfLoader.prototype.process = function (frameState) {
560
641
  Check.typeOf.object("frameState", frameState);
561
642
  //>>includeEnd('debug');
562
643
 
563
- this._process(this, frameState);
644
+ if (
645
+ this._state === GltfLoaderState.LOADED &&
646
+ !defined(this._loadResourcesPromise)
647
+ ) {
648
+ this._loadResourcesPromise = loadResources(this, frameState)
649
+ .then(() => {
650
+ this._resourcesLoaded = true;
651
+ })
652
+ .catch((error) => {
653
+ this._processError = error;
654
+ });
655
+ }
656
+
657
+ if (defined(this._processError)) {
658
+ this._state = GltfLoaderState.FAILED;
659
+ const error = this._processError;
660
+ this._processError = undefined;
661
+ handleError(this, error);
662
+ }
663
+
664
+ // Pop the next error of the list in case there are multiple
665
+ const textureError = this._textureErrors.pop();
666
+ if (defined(textureError)) {
667
+ // There shouldn't be the need to completely unload in this case. Just throw the error.
668
+ const error = this.getError("Failed to load glTF texture", textureError);
669
+ error.name = "TextureError";
670
+ throw error;
671
+ }
672
+
673
+ if (this._state === GltfLoaderState.FAILED) {
674
+ return false;
675
+ }
676
+
677
+ let ready = false;
678
+ try {
679
+ ready = this._process(frameState);
680
+ } catch (error) {
681
+ this._state = GltfLoaderState.FAILED;
682
+ handleError(this, error);
683
+ }
684
+
564
685
  // Since textures can be loaded independently and are handled through a separate promise, they are processed in their own function
565
- this._processTextures(this, frameState);
686
+ let texturesReady = false;
687
+ try {
688
+ texturesReady = this._processTextures(frameState);
689
+ } catch (error) {
690
+ this._textureState = GltfLoaderState.FAILED;
691
+ handleError(this, error);
692
+ }
693
+
694
+ if (this._incrementallyLoadTextures) {
695
+ return ready;
696
+ }
697
+
698
+ return ready && texturesReady;
566
699
  };
567
700
 
568
- function loadVertexBuffer(
701
+ function getVertexBufferLoader(
569
702
  loader,
570
703
  gltf,
571
704
  accessorId,
@@ -578,7 +711,7 @@ function loadVertexBuffer(
578
711
  const accessor = gltf.accessors[accessorId];
579
712
  const bufferViewId = accessor.bufferView;
580
713
 
581
- const vertexBufferLoader = ResourceCache.loadVertexBuffer({
714
+ const vertexBufferLoader = ResourceCache.getVertexBufferLoader({
582
715
  gltf: gltf,
583
716
  gltfResource: loader._gltfResource,
584
717
  baseResource: loader._baseResource,
@@ -592,12 +725,10 @@ function loadVertexBuffer(
592
725
  loadTypedArray: loadTypedArray,
593
726
  });
594
727
 
595
- loader._geometryLoaders.push(vertexBufferLoader);
596
-
597
728
  return vertexBufferLoader;
598
729
  }
599
730
 
600
- function loadIndexBuffer(
731
+ function getIndexBufferLoader(
601
732
  loader,
602
733
  gltf,
603
734
  accessorId,
@@ -606,7 +737,7 @@ function loadIndexBuffer(
606
737
  loadTypedArray,
607
738
  frameState
608
739
  ) {
609
- const indexBufferLoader = ResourceCache.loadIndexBuffer({
740
+ const indexBufferLoader = ResourceCache.getIndexBufferLoader({
610
741
  gltf: gltf,
611
742
  accessorId: accessorId,
612
743
  gltfResource: loader._gltfResource,
@@ -618,13 +749,11 @@ function loadIndexBuffer(
618
749
  loadTypedArray: loadTypedArray,
619
750
  });
620
751
 
621
- loader._geometryLoaders.push(indexBufferLoader);
622
-
623
752
  return indexBufferLoader;
624
753
  }
625
754
 
626
- function loadBufferView(loader, gltf, bufferViewId) {
627
- const bufferViewLoader = ResourceCache.loadBufferView({
755
+ function getBufferViewLoader(loader, gltf, bufferViewId) {
756
+ const bufferViewLoader = ResourceCache.getBufferViewLoader({
628
757
  gltf: gltf,
629
758
  bufferViewId: bufferViewId,
630
759
  gltfResource: loader._gltfResource,
@@ -720,6 +849,26 @@ function loadAccessorValues(accessor, typedArray, values, useQuaternion) {
720
849
  return values;
721
850
  }
722
851
 
852
+ async function loadAccessorBufferView(
853
+ loader,
854
+ bufferViewLoader,
855
+ gltf,
856
+ accessor,
857
+ useQuaternion,
858
+ values
859
+ ) {
860
+ await bufferViewLoader.load();
861
+ if (loader.isDestroyed()) {
862
+ return;
863
+ }
864
+
865
+ const bufferViewTypedArray = bufferViewLoader.typedArray;
866
+ const typedArray = getPackedTypedArray(gltf, accessor, bufferViewTypedArray);
867
+
868
+ useQuaternion = defaultValue(useQuaternion, false);
869
+ loadAccessorValues(accessor, typedArray, values, useQuaternion);
870
+ }
871
+
723
872
  function loadAccessor(loader, gltf, accessorId, useQuaternion) {
724
873
  const accessor = gltf.accessors[accessorId];
725
874
  const accessorCount = accessor.count;
@@ -727,21 +876,15 @@ function loadAccessor(loader, gltf, accessorId, useQuaternion) {
727
876
 
728
877
  const bufferViewId = accessor.bufferView;
729
878
  if (defined(bufferViewId)) {
730
- const bufferViewLoader = loadBufferView(loader, gltf, bufferViewId);
731
- const promise = bufferViewLoader.promise.then(function (bufferViewLoader) {
732
- if (loader.isDestroyed()) {
733
- return;
734
- }
735
- const bufferViewTypedArray = bufferViewLoader.typedArray;
736
- const typedArray = getPackedTypedArray(
737
- gltf,
738
- accessor,
739
- bufferViewTypedArray
740
- );
741
-
742
- useQuaternion = defaultValue(useQuaternion, false);
743
- loadAccessorValues(accessor, typedArray, values, useQuaternion);
744
- });
879
+ const bufferViewLoader = getBufferViewLoader(loader, gltf, bufferViewId);
880
+ const promise = loadAccessorBufferView(
881
+ loader,
882
+ bufferViewLoader,
883
+ gltf,
884
+ accessor,
885
+ useQuaternion,
886
+ values
887
+ );
745
888
  loader._loaderPromises.push(promise);
746
889
 
747
890
  return values;
@@ -1062,7 +1205,7 @@ function loadAttribute(
1062
1205
  return attribute;
1063
1206
  }
1064
1207
 
1065
- const vertexBufferLoader = loadVertexBuffer(
1208
+ const vertexBufferLoader = getVertexBufferLoader(
1066
1209
  loader,
1067
1210
  gltf,
1068
1211
  accessorId,
@@ -1072,13 +1215,15 @@ function loadAttribute(
1072
1215
  loadTypedArray,
1073
1216
  frameState
1074
1217
  );
1075
- const promise = vertexBufferLoader.promise.then(function (
1076
- vertexBufferLoader
1077
- ) {
1078
- if (loader.isDestroyed()) {
1079
- return;
1080
- }
1081
1218
 
1219
+ const index = loader._geometryLoaders.length;
1220
+ loader._geometryLoaders.push(vertexBufferLoader);
1221
+ const promise = vertexBufferLoader.load();
1222
+ loader._loaderPromises.push(promise);
1223
+ // This can only execute once vertexBufferLoader.process() has run and returns true
1224
+ // Save this finish callback by the loader index so it can be called
1225
+ // in process().
1226
+ loader._geometryCallbacks[index] = () => {
1082
1227
  if (
1083
1228
  defined(draco) &&
1084
1229
  defined(draco.attributes) &&
@@ -1100,9 +1245,7 @@ function loadAttribute(
1100
1245
  loadTypedArray
1101
1246
  );
1102
1247
  }
1103
- });
1104
-
1105
- loader._loaderPromises.push(promise);
1248
+ };
1106
1249
 
1107
1250
  return attribute;
1108
1251
  }
@@ -1276,7 +1419,7 @@ function loadIndices(
1276
1419
  const loadBuffer = needsPostProcessing ? false : outputBuffer;
1277
1420
  const loadTypedArray = needsPostProcessing ? true : outputTypedArray;
1278
1421
 
1279
- const indexBufferLoader = loadIndexBuffer(
1422
+ const indexBufferLoader = getIndexBufferLoader(
1280
1423
  loader,
1281
1424
  gltf,
1282
1425
  accessorId,
@@ -1286,18 +1429,18 @@ function loadIndices(
1286
1429
  frameState
1287
1430
  );
1288
1431
 
1289
- const promise = indexBufferLoader.promise.then(function (indexBufferLoader) {
1290
- if (loader.isDestroyed()) {
1291
- return;
1292
- }
1293
-
1432
+ const index = loader._geometryLoaders.length;
1433
+ loader._geometryLoaders.push(indexBufferLoader);
1434
+ const promise = indexBufferLoader.load();
1435
+ loader._loaderPromises.push(promise);
1436
+ // This can only execute once indexBufferLoader.process() has run and returns true
1437
+ // Save this finish callback by the loader index so it can be called
1438
+ // in process().
1439
+ loader._geometryCallbacks[index] = () => {
1294
1440
  indices.indexDatatype = indexBufferLoader.indexDatatype;
1295
-
1296
1441
  indices.buffer = indexBufferLoader.buffer;
1297
1442
  indices.typedArray = indexBufferLoader.typedArray;
1298
- });
1299
-
1300
- loader._loaderPromises.push(promise);
1443
+ };
1301
1444
 
1302
1445
  const indicesPlan = new PrimitiveLoadPlan.IndicesLoadPlan(indices);
1303
1446
  indicesPlan.loadBuffer = outputBuffer;
@@ -1324,7 +1467,7 @@ function loadTexture(
1324
1467
  return undefined;
1325
1468
  }
1326
1469
 
1327
- const textureLoader = ResourceCache.loadTexture({
1470
+ const textureLoader = ResourceCache.getTextureLoader({
1328
1471
  gltf: gltf,
1329
1472
  textureInfo: textureInfo,
1330
1473
  gltfResource: loader._gltfResource,
@@ -1334,23 +1477,37 @@ function loadTexture(
1334
1477
  asynchronous: loader._asynchronous,
1335
1478
  });
1336
1479
 
1337
- loader._textureLoaders.push(textureLoader);
1338
-
1339
1480
  const textureReader = GltfLoaderUtil.createModelTextureReader({
1340
1481
  textureInfo: textureInfo,
1341
1482
  });
1342
1483
 
1343
- const promise = textureLoader.promise.then(function (textureLoader) {
1344
- if (loader.isUnloaded() || loader.isDestroyed()) {
1484
+ const index = loader._textureLoaders.length;
1485
+ loader._textureLoaders.push(textureLoader);
1486
+ const promise = textureLoader.load().catch((error) => {
1487
+ if (loader.isDestroyed()) {
1345
1488
  return;
1346
1489
  }
1490
+
1491
+ if (!loader._incrementallyLoadTextures) {
1492
+ // If incrementallyLoadTextures is false, throw the error to ensure the loader state
1493
+ // immediately is set to have failed
1494
+ throw error;
1495
+ }
1496
+
1497
+ // Otherwise, save the error so it can be thrown next
1498
+ loader._textureState = GltfLoaderState.FAILED;
1499
+ loader._textureErrors.push(error);
1500
+ });
1501
+ loader._texturesPromises.push(promise);
1502
+ // This can only execute once textureLoader.process() has run and returns true
1503
+ // Save this finish callback by the loader index so it can be called
1504
+ // in process().
1505
+ loader._textureCallbacks[index] = () => {
1347
1506
  textureReader.texture = textureLoader.texture;
1348
1507
  if (defined(samplerOverride)) {
1349
1508
  textureReader.texture.sampler = samplerOverride;
1350
1509
  }
1351
- });
1352
-
1353
- loader._texturesPromises.push(promise);
1510
+ };
1354
1511
 
1355
1512
  return textureReader;
1356
1513
  }
@@ -2246,7 +2403,7 @@ function loadSkins(loader, gltf, nodes) {
2246
2403
  return skins;
2247
2404
  }
2248
2405
 
2249
- function loadStructuralMetadata(
2406
+ async function loadStructuralMetadata(
2250
2407
  loader,
2251
2408
  gltf,
2252
2409
  extension,
@@ -2264,11 +2421,8 @@ function loadStructuralMetadata(
2264
2421
  frameState: frameState,
2265
2422
  asynchronous: loader._asynchronous,
2266
2423
  });
2267
- structuralMetadataLoader.load();
2268
-
2269
2424
  loader._structuralMetadataLoader = structuralMetadataLoader;
2270
-
2271
- return structuralMetadataLoader;
2425
+ return structuralMetadataLoader.load();
2272
2426
  }
2273
2427
 
2274
2428
  function loadAnimationSampler(loader, gltf, gltfSampler) {
@@ -2442,32 +2596,7 @@ function loadScene(gltf, nodes) {
2442
2596
 
2443
2597
  const scratchCenter = new Cartesian3();
2444
2598
 
2445
- function parse(
2446
- loader,
2447
- gltf,
2448
- supportedImageFormats,
2449
- frameState,
2450
- rejectPromise,
2451
- rejectTexturesPromise
2452
- ) {
2453
- const version = gltf.asset.version;
2454
- if (version !== "1.0" && version !== "2.0") {
2455
- const url = loader._gltfResource.url;
2456
- throw new RuntimeError(
2457
- `Failed to load ${url}: \nUnsupported glTF version: ${version}`
2458
- );
2459
- }
2460
- const extensionsRequired = gltf.extensionsRequired;
2461
- if (defined(extensionsRequired)) {
2462
- ModelUtility.checkSupportedExtensions(extensionsRequired);
2463
-
2464
- // Check for the KHR_mesh_quantization extension here, it will be used later
2465
- // in loadAttribute().
2466
- loader._hasKhrMeshQuantization = extensionsRequired.includes(
2467
- "KHR_mesh_quantization"
2468
- );
2469
- }
2470
-
2599
+ function parse(loader, gltf, supportedImageFormats, frameState) {
2471
2600
  const extensions = defaultValue(gltf.extensions, defaultValue.EMPTY_OBJECT);
2472
2601
  const structuralMetadataExtension = extensions.EXT_structural_metadata;
2473
2602
  const featureMetadataExtensionLegacy = extensions.EXT_feature_metadata;
@@ -2535,7 +2664,7 @@ function parse(
2535
2664
  defined(structuralMetadataExtension) ||
2536
2665
  defined(featureMetadataExtensionLegacy)
2537
2666
  ) {
2538
- const structuralMetadataLoader = loadStructuralMetadata(
2667
+ const promise = loadStructuralMetadata(
2539
2668
  loader,
2540
2669
  gltf,
2541
2670
  structuralMetadataExtension,
@@ -2543,62 +2672,40 @@ function parse(
2543
2672
  supportedImageFormats,
2544
2673
  frameState
2545
2674
  );
2546
- const promise = structuralMetadataLoader.promise.then(function (
2547
- structuralMetadataLoader
2548
- ) {
2549
- if (loader.isDestroyed()) {
2550
- return;
2551
- }
2552
- components.structuralMetadata =
2553
- structuralMetadataLoader.structuralMetadata;
2554
- });
2555
2675
  loader._loaderPromises.push(promise);
2556
2676
  }
2557
2677
 
2558
- // Gather promises and reject if any promises fail.
2678
+ // Gather promises and handle any errors
2559
2679
  const readyPromises = [];
2560
2680
  readyPromises.push.apply(readyPromises, loader._loaderPromises);
2561
2681
 
2682
+ // When incrementallyLoadTextures is true, the errors are caught and thrown individually
2683
+ // since it doesn't affect the overall loader state
2562
2684
  if (!loader._incrementallyLoadTextures) {
2563
2685
  readyPromises.push.apply(readyPromises, loader._texturesPromises);
2564
2686
  }
2565
2687
 
2566
- Promise.all(readyPromises)
2567
- .then(function () {
2568
- if (loader.isDestroyed()) {
2569
- return;
2570
- }
2571
- loader._state = GltfLoaderState.POST_PROCESSING;
2572
- })
2573
- .catch(rejectPromise);
2574
-
2575
- // Separate promise will resolve once textures are loaded.
2576
- Promise.all(loader._texturesPromises)
2577
- .then(function () {
2578
- if (loader.isDestroyed()) {
2579
- return;
2580
- }
2581
-
2582
- // post processing only applies for geometry
2583
- loader._textureState = GltfLoaderState.PROCESSED;
2584
- })
2585
- .catch(rejectTexturesPromise);
2688
+ return Promise.all(readyPromises);
2586
2689
  }
2587
2690
 
2588
2691
  function unloadTextures(loader) {
2589
2692
  const textureLoaders = loader._textureLoaders;
2590
2693
  const textureLoadersLength = textureLoaders.length;
2591
2694
  for (let i = 0; i < textureLoadersLength; ++i) {
2592
- ResourceCache.unload(textureLoaders[i]);
2695
+ textureLoaders[i] =
2696
+ !textureLoaders[i].isDestroyed() &&
2697
+ ResourceCache.unload(textureLoaders[i]);
2593
2698
  }
2594
2699
  loader._textureLoaders.length = 0;
2595
2700
  }
2596
2701
 
2597
- function unloadBufferViews(loader) {
2702
+ function unloadBufferViewLoaders(loader) {
2598
2703
  const bufferViewLoaders = loader._bufferViewLoaders;
2599
2704
  const bufferViewLoadersLength = bufferViewLoaders.length;
2600
2705
  for (let i = 0; i < bufferViewLoadersLength; ++i) {
2601
- ResourceCache.unload(bufferViewLoaders[i]);
2706
+ bufferViewLoaders[i] =
2707
+ !bufferViewLoaders[i].isDestroyed() &&
2708
+ ResourceCache.unload(bufferViewLoaders[i]);
2602
2709
  }
2603
2710
  loader._bufferViewLoaders.length = 0;
2604
2711
  }
@@ -2607,7 +2714,9 @@ function unloadGeometry(loader) {
2607
2714
  const geometryLoaders = loader._geometryLoaders;
2608
2715
  const geometryLoadersLength = geometryLoaders.length;
2609
2716
  for (let i = 0; i < geometryLoadersLength; ++i) {
2610
- ResourceCache.unload(geometryLoaders[i]);
2717
+ geometryLoaders[i] =
2718
+ !geometryLoaders[i].isDestroyed() &&
2719
+ ResourceCache.unload(geometryLoaders[i]);
2611
2720
  }
2612
2721
  loader._geometryLoaders.length = 0;
2613
2722
  }
@@ -2625,7 +2734,10 @@ function unloadGeneratedAttributes(loader) {
2625
2734
  }
2626
2735
 
2627
2736
  function unloadStructuralMetadata(loader) {
2628
- if (defined(loader._structuralMetadataLoader)) {
2737
+ if (
2738
+ defined(loader._structuralMetadataLoader) &&
2739
+ !loader._structuralMetadataLoader.isDestroyed()
2740
+ ) {
2629
2741
  loader._structuralMetadataLoader.destroy();
2630
2742
  loader._structuralMetadataLoader = undefined;
2631
2743
  }
@@ -2644,13 +2756,13 @@ GltfLoader.prototype.isUnloaded = function () {
2644
2756
  * @private
2645
2757
  */
2646
2758
  GltfLoader.prototype.unload = function () {
2647
- if (defined(this._gltfJsonLoader)) {
2759
+ if (defined(this._gltfJsonLoader) && !this._gltfJsonLoader.isDestroyed()) {
2648
2760
  ResourceCache.unload(this._gltfJsonLoader);
2649
2761
  }
2650
2762
  this._gltfJsonLoader = undefined;
2651
2763
 
2652
2764
  unloadTextures(this);
2653
- unloadBufferViews(this);
2765
+ unloadBufferViewLoaders(this);
2654
2766
  unloadGeometry(this);
2655
2767
  unloadGeneratedAttributes(this);
2656
2768
  unloadStructuralMetadata(this);