@cesium/engine 2.1.0 → 2.3.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 (240) hide show
  1. package/Build/Workers/{AttributeCompression-8a5a065e.js → AttributeCompression-f9f6c717.js} +1 -1
  2. package/Build/Workers/{AxisAlignedBoundingBox-a6f9f0e5.js → AxisAlignedBoundingBox-31fadcf0.js} +1 -1
  3. package/Build/Workers/{BoundingRectangle-b0a68595.js → BoundingRectangle-995f0079.js} +1 -1
  4. package/Build/Workers/{BoxGeometry-baedd794.js → BoxGeometry-7eb1af60.js} +1 -1
  5. package/Build/Workers/{Color-f85df1be.js → Color-2dc49658.js} +1 -1
  6. package/Build/Workers/{CoplanarPolygonGeometryLibrary-30516950.js → CoplanarPolygonGeometryLibrary-d7d972d6.js} +1 -1
  7. package/Build/Workers/{CorridorGeometryLibrary-5d5d3b3a.js → CorridorGeometryLibrary-1f5ef7b3.js} +1 -1
  8. package/Build/Workers/{CylinderGeometry-d899ae26.js → CylinderGeometry-23c67a6c.js} +1 -1
  9. package/Build/Workers/{CylinderGeometryLibrary-135b0858.js → CylinderGeometryLibrary-7bf291b4.js} +1 -1
  10. package/Build/Workers/{EllipseGeometry-a49f8449.js → EllipseGeometry-37014da4.js} +1 -1
  11. package/Build/Workers/{EllipseGeometryLibrary-cba7edde.js → EllipseGeometryLibrary-92ab6b1e.js} +1 -1
  12. package/Build/Workers/{EllipseOutlineGeometry-8095c8cb.js → EllipseOutlineGeometry-12b6fef5.js} +1 -1
  13. package/Build/Workers/{EllipsoidGeodesic-dcff5cbd.js → EllipsoidGeodesic-5b3623dc.js} +1 -1
  14. package/Build/Workers/{EllipsoidGeometry-ed93f571.js → EllipsoidGeometry-508da15c.js} +1 -1
  15. package/Build/Workers/{EllipsoidOutlineGeometry-e4854854.js → EllipsoidOutlineGeometry-40d97455.js} +1 -1
  16. package/Build/Workers/{EllipsoidRhumbLine-b672d507.js → EllipsoidRhumbLine-ef872433.js} +1 -1
  17. package/Build/Workers/{EllipsoidTangentPlane-7ae1aa9a.js → EllipsoidTangentPlane-46d4d9c2.js} +1 -1
  18. package/Build/Workers/{EncodedCartesian3-e8bbca36.js → EncodedCartesian3-57415c8a.js} +1 -1
  19. package/Build/Workers/{FrustumGeometry-b62db3e3.js → FrustumGeometry-38605e69.js} +32 -4
  20. package/Build/Workers/{GeometryAttribute-780af4fa.js → GeometryAttribute-a466e9c7.js} +1 -1
  21. package/Build/Workers/{GeometryInstance-3fb607b7.js → GeometryInstance-34d9e21e.js} +1 -1
  22. package/Build/Workers/{GeometryPipeline-36b61c99.js → GeometryPipeline-dcf79306.js} +1 -1
  23. package/Build/Workers/{IndexDatatype-b8f3e09d.js → IndexDatatype-2643aa47.js} +1 -1
  24. package/Build/Workers/{IntersectionTests-e889fcf0.js → IntersectionTests-88c49b2e.js} +1 -1
  25. package/Build/Workers/{Math-dad82b4d.js → Math-0a2ac845.js} +12 -2
  26. package/Build/Workers/{Matrix2-1e403d0e.js → Matrix2-e1298525.js} +1 -1
  27. package/Build/Workers/{Matrix3-fa806b97.js → Matrix3-41c58dde.js} +1 -1
  28. package/Build/Workers/{OrientedBoundingBox-43478ac8.js → OrientedBoundingBox-2dd47921.js} +5 -3
  29. package/Build/Workers/{Plane-c27e1ac6.js → Plane-4c3d403b.js} +1 -1
  30. package/Build/Workers/{PolygonGeometryLibrary-38a98276.js → PolygonGeometryLibrary-59126025.js} +1 -1
  31. package/Build/Workers/PolygonPipeline-1fe328c0.js +1344 -0
  32. package/Build/Workers/{PolylinePipeline-30e4cec9.js → PolylinePipeline-896735cc.js} +1 -1
  33. package/Build/Workers/{PolylineVolumeGeometryLibrary-90551d26.js → PolylineVolumeGeometryLibrary-9c0639f7.js} +1 -1
  34. package/Build/Workers/{PrimitivePipeline-558d9cb0.js → PrimitivePipeline-fc1a47ff.js} +1 -1
  35. package/Build/Workers/{RectangleGeometryLibrary-815c68df.js → RectangleGeometryLibrary-a23c9ebe.js} +1 -1
  36. package/Build/Workers/{TerrainEncoding-341ead52.js → TerrainEncoding-51b8b33b.js} +1 -1
  37. package/Build/Workers/Transforms-bc45e707.js +14699 -0
  38. package/Build/Workers/{WallGeometryLibrary-ccf90976.js → WallGeometryLibrary-007e9883.js} +1 -1
  39. package/Build/Workers/{WebMercatorProjection-76a3fcc0.js → WebMercatorProjection-13ed1a6e.js} +1 -1
  40. package/Build/Workers/{arrayRemoveDuplicates-fac118a8.js → arrayRemoveDuplicates-d2061e85.js} +1 -1
  41. package/Build/Workers/cesiumWorkerBootstrapper.js +1 -1
  42. package/Build/Workers/combineGeometry.js +1 -1
  43. package/Build/Workers/createBoxGeometry.js +1 -1
  44. package/Build/Workers/createBoxOutlineGeometry.js +1 -1
  45. package/Build/Workers/createCircleGeometry.js +1 -1
  46. package/Build/Workers/createCircleOutlineGeometry.js +1 -1
  47. package/Build/Workers/createCoplanarPolygonGeometry.js +1 -1
  48. package/Build/Workers/createCoplanarPolygonOutlineGeometry.js +1 -1
  49. package/Build/Workers/createCorridorGeometry.js +1 -1
  50. package/Build/Workers/createCorridorOutlineGeometry.js +1 -1
  51. package/Build/Workers/createCylinderGeometry.js +1 -1
  52. package/Build/Workers/createCylinderOutlineGeometry.js +1 -1
  53. package/Build/Workers/createEllipseGeometry.js +1 -1
  54. package/Build/Workers/createEllipseOutlineGeometry.js +1 -1
  55. package/Build/Workers/createEllipsoidGeometry.js +1 -1
  56. package/Build/Workers/createEllipsoidOutlineGeometry.js +1 -1
  57. package/Build/Workers/createFrustumGeometry.js +1 -1
  58. package/Build/Workers/createFrustumOutlineGeometry.js +1 -1
  59. package/Build/Workers/createGeometry.js +1 -1
  60. package/Build/Workers/createGroundPolylineGeometry.js +1 -1
  61. package/Build/Workers/createPlaneGeometry.js +1 -1
  62. package/Build/Workers/createPlaneOutlineGeometry.js +1 -1
  63. package/Build/Workers/createPolygonGeometry.js +1 -1
  64. package/Build/Workers/createPolygonOutlineGeometry.js +1 -1
  65. package/Build/Workers/createPolylineGeometry.js +1 -1
  66. package/Build/Workers/createPolylineVolumeGeometry.js +1 -1
  67. package/Build/Workers/createPolylineVolumeOutlineGeometry.js +1 -1
  68. package/Build/Workers/createRectangleGeometry.js +1 -1
  69. package/Build/Workers/createRectangleOutlineGeometry.js +1 -1
  70. package/Build/Workers/createSimplePolylineGeometry.js +1 -1
  71. package/Build/Workers/createSphereGeometry.js +1 -1
  72. package/Build/Workers/createSphereOutlineGeometry.js +1 -1
  73. package/Build/Workers/createVectorTileClampedPolylines.js +1 -1
  74. package/Build/Workers/createVectorTileGeometries.js +1 -1
  75. package/Build/Workers/createVectorTilePoints.js +1 -1
  76. package/Build/Workers/createVectorTilePolygons.js +1 -1
  77. package/Build/Workers/createVectorTilePolylines.js +1 -1
  78. package/Build/Workers/createVerticesFromGoogleEarthEnterpriseBuffer.js +1 -1
  79. package/Build/Workers/createVerticesFromHeightmap.js +5 -8
  80. package/Build/Workers/createVerticesFromQuantizedTerrainMesh.js +10 -15
  81. package/Build/Workers/createWallGeometry.js +1 -1
  82. package/Build/Workers/createWallOutlineGeometry.js +1 -1
  83. package/Build/Workers/decodeDraco.js +1 -1
  84. package/Build/Workers/decodeI3S.js +1 -1
  85. package/Build/Workers/package.js +1 -1
  86. package/Build/Workers/transferTypedArrayTest.js +1 -1
  87. package/Build/Workers/upsampleQuantizedTerrainMesh.js +1 -1
  88. package/Source/Core/ArcGISTiledElevationTerrainProvider.js +291 -191
  89. package/Source/Core/BingMapsGeocoderService.js +19 -1
  90. package/Source/Core/CartographicGeocoderService.js +15 -0
  91. package/Source/Core/CesiumTerrainProvider.js +571 -434
  92. package/Source/Core/Credit.js +1 -1
  93. package/Source/Core/CustomHeightmapTerrainProvider.js +12 -0
  94. package/Source/Core/EllipsoidTerrainProvider.js +17 -10
  95. package/Source/Core/FrustumGeometry.js +4 -3
  96. package/Source/Core/GeocoderService.js +32 -1
  97. package/Source/Core/GoogleEarthEnterpriseMetadata.js +86 -34
  98. package/Source/Core/GoogleEarthEnterpriseTerrainProvider.js +119 -82
  99. package/Source/Core/Ion.js +1 -1
  100. package/Source/Core/IonGeocoderService.js +17 -2
  101. package/Source/Core/IonResource.js +14 -3
  102. package/Source/Core/OpenCageGeocoderService.js +18 -1
  103. package/Source/Core/OrientedBoundingBox.js +4 -2
  104. package/Source/Core/OrthographicFrustum.js +13 -0
  105. package/Source/Core/PeliasGeocoderService.js +14 -1
  106. package/Source/Core/PerspectiveFrustum.js +14 -0
  107. package/Source/Core/Request.js +3 -2
  108. package/Source/Core/RequestScheduler.js +10 -5
  109. package/Source/Core/Resource.js +230 -236
  110. package/Source/Core/TerrainProvider.js +9 -14
  111. package/Source/Core/TileProviderError.js +8 -8
  112. package/Source/Core/VRTheWorldTerrainProvider.js +193 -124
  113. package/Source/Core/buildModuleUrl.js +4 -3
  114. package/Source/Core/createWorldTerrain.js +20 -2
  115. package/Source/Core/createWorldTerrainAsync.js +48 -0
  116. package/Source/Core/sampleTerrain.js +9 -10
  117. package/Source/Core/sampleTerrainMostDetailed.js +66 -72
  118. package/Source/DataSources/Cesium3DTilesetVisualizer.js +37 -26
  119. package/Source/DataSources/DataSourceDisplay.js +2 -2
  120. package/Source/DataSources/Entity.js +6 -1
  121. package/Source/DataSources/EntityCluster.js +126 -128
  122. package/Source/DataSources/ModelVisualizer.js +104 -34
  123. package/Source/DataSources/PolygonGraphics.js +1 -1
  124. package/Source/Renderer/UniformState.js +3 -2
  125. package/Source/Renderer/demodernizeShader.js +5 -5
  126. package/Source/Scene/ArcGisBaseMapType.js +12 -0
  127. package/Source/Scene/ArcGisMapServerImageryProvider.js +694 -376
  128. package/Source/Scene/ArcGisMapService.js +83 -0
  129. package/Source/Scene/BingMapsImageryProvider.js +511 -305
  130. package/Source/Scene/BufferLoader.js +29 -34
  131. package/Source/Scene/Camera.js +8 -7
  132. package/Source/Scene/Cesium3DTile.js +392 -254
  133. package/Source/Scene/Cesium3DTileBatchTable.js +2 -2
  134. package/Source/Scene/Cesium3DTileContent.js +16 -0
  135. package/Source/Scene/Cesium3DTileContentFactory.js +4 -4
  136. package/Source/Scene/Cesium3DTilePass.js +8 -11
  137. package/Source/Scene/Cesium3DTileStyleEngine.js +1 -1
  138. package/Source/Scene/Cesium3DTilesVoxelProvider.js +225 -117
  139. package/Source/Scene/Cesium3DTileset.js +756 -482
  140. package/Source/Scene/Cesium3DTilesetBaseTraversal.js +301 -0
  141. package/Source/Scene/Cesium3DTilesetMostDetailedTraversal.js +33 -46
  142. package/Source/Scene/Cesium3DTilesetSkipTraversal.js +421 -0
  143. package/Source/Scene/Cesium3DTilesetTraversal.js +219 -671
  144. package/Source/Scene/ClassificationPrimitive.js +7 -0
  145. package/Source/Scene/Composite3DTileContent.js +69 -26
  146. package/Source/Scene/CreditDisplay.js +132 -20
  147. package/Source/Scene/DepthPlane.js +1 -1
  148. package/Source/Scene/Empty3DTileContent.js +31 -1
  149. package/Source/Scene/Geometry3DTileContent.js +47 -7
  150. package/Source/Scene/Globe.js +5 -1
  151. package/Source/Scene/GlobeSurfaceTile.js +2 -1
  152. package/Source/Scene/GlobeSurfaceTileProvider.js +53 -30
  153. package/Source/Scene/GltfBufferViewLoader.js +47 -91
  154. package/Source/Scene/GltfDracoLoader.js +110 -112
  155. package/Source/Scene/GltfImageLoader.js +71 -78
  156. package/Source/Scene/GltfIndexBufferLoader.js +108 -121
  157. package/Source/Scene/GltfJsonLoader.js +87 -74
  158. package/Source/Scene/GltfLoader.js +381 -300
  159. package/Source/Scene/GltfStructuralMetadataLoader.js +109 -110
  160. package/Source/Scene/GltfTextureLoader.js +97 -96
  161. package/Source/Scene/GltfVertexBufferLoader.js +128 -133
  162. package/Source/Scene/GoogleEarthEnterpriseImageryProvider.js +353 -225
  163. package/Source/Scene/GoogleEarthEnterpriseMapsProvider.js +491 -331
  164. package/Source/Scene/GridImageryProvider.js +267 -104
  165. package/Source/Scene/GroundPolylinePrimitive.js +12 -1
  166. package/Source/Scene/GroundPrimitive.js +8 -1
  167. package/Source/Scene/I3SDataProvider.js +214 -113
  168. package/Source/Scene/I3SFeature.js +7 -6
  169. package/Source/Scene/I3SLayer.js +26 -37
  170. package/Source/Scene/I3SNode.js +59 -66
  171. package/Source/Scene/Imagery.js +6 -1
  172. package/Source/Scene/ImageryLayer.js +299 -48
  173. package/Source/Scene/ImageryLayerCollection.js +26 -0
  174. package/Source/Scene/ImageryProvider.js +129 -111
  175. package/Source/Scene/Implicit3DTileContent.js +72 -23
  176. package/Source/Scene/ImplicitSubtree.js +66 -45
  177. package/Source/Scene/IonImageryProvider.js +482 -275
  178. package/Source/Scene/MapboxImageryProvider.js +272 -112
  179. package/Source/Scene/MapboxStyleImageryProvider.js +270 -111
  180. package/Source/Scene/MetadataSchemaLoader.js +26 -36
  181. package/Source/Scene/Model/B3dmLoader.js +42 -46
  182. package/Source/Scene/Model/GeoJsonLoader.js +8 -32
  183. package/Source/Scene/Model/I3dmLoader.js +48 -74
  184. package/Source/Scene/Model/MaterialPipelineStage.js +12 -12
  185. package/Source/Scene/Model/Model.js +514 -135
  186. package/Source/Scene/Model/Model3DTileContent.js +83 -31
  187. package/Source/Scene/Model/ModelAnimationCollection.js +3 -3
  188. package/Source/Scene/Model/ModelDrawCommand.js +15 -26
  189. package/Source/Scene/Model/ModelUtility.js +16 -16
  190. package/Source/Scene/Model/PntsLoader.js +27 -32
  191. package/Source/Scene/Model/UniformType.js +1 -1
  192. package/Source/Scene/Multiple3DTileContent.js +134 -115
  193. package/Source/Scene/Picking.js +3 -2
  194. package/Source/Scene/PointCloud.js +11 -19
  195. package/Source/Scene/Primitive.js +20 -0
  196. package/Source/Scene/QuadtreePrimitive.js +5 -2
  197. package/Source/Scene/QuadtreeTileProvider.js +4 -8
  198. package/Source/Scene/ResourceCache.js +47 -105
  199. package/Source/Scene/ResourceCacheStatistics.js +24 -58
  200. package/Source/Scene/ResourceLoader.js +5 -17
  201. package/Source/Scene/ResourceLoaderState.js +12 -4
  202. package/Source/Scene/Scene.js +65 -0
  203. package/Source/Scene/SceneTransforms.js +3 -2
  204. package/Source/Scene/ScreenSpaceCameraController.js +2 -2
  205. package/Source/Scene/SingleTileImageryProvider.js +382 -209
  206. package/Source/Scene/Terrain.js +196 -0
  207. package/Source/Scene/TileCoordinatesImageryProvider.js +267 -104
  208. package/Source/Scene/TileMapServiceImageryProvider.js +177 -85
  209. package/Source/Scene/Tileset3DTileContent.js +47 -5
  210. package/Source/Scene/TimeDynamicPointCloud.js +15 -2
  211. package/Source/Scene/UrlTemplateImageryProvider.js +343 -215
  212. package/Source/Scene/Vector3DTileClampedPolylines.js +96 -84
  213. package/Source/Scene/Vector3DTileContent.js +47 -22
  214. package/Source/Scene/Vector3DTileGeometry.js +57 -52
  215. package/Source/Scene/Vector3DTilePoints.js +97 -81
  216. package/Source/Scene/Vector3DTilePolygons.js +118 -117
  217. package/Source/Scene/Vector3DTilePolylines.js +86 -82
  218. package/Source/Scene/Vector3DTilePrimitive.js +0 -1
  219. package/Source/Scene/VoxelContent.js +61 -63
  220. package/Source/Scene/VoxelPrimitive.js +39 -91
  221. package/Source/Scene/VoxelProvider.js +2 -2
  222. package/Source/Scene/WebMapServiceImageryProvider.js +272 -111
  223. package/Source/Scene/WebMapTileServiceImageryProvider.js +270 -107
  224. package/Source/Scene/computeFlyToLocationForRectangle.js +33 -37
  225. package/Source/Scene/createOsmBuildings.js +6 -0
  226. package/Source/Scene/createOsmBuildingsAsync.js +82 -0
  227. package/Source/Scene/createWorldImagery.js +14 -5
  228. package/Source/Scene/createWorldImageryAsync.js +39 -0
  229. package/Source/Shaders/AtmosphereCommon.glsl +51 -8
  230. package/Source/Shaders/AtmosphereCommon.js +51 -8
  231. package/Source/Shaders/PostProcessStages/AmbientOcclusionGenerate.glsl +1 -1
  232. package/Source/Shaders/PostProcessStages/AmbientOcclusionGenerate.js +1 -1
  233. package/Source/Shaders/PostProcessStages/AmbientOcclusionModulate.glsl +3 -3
  234. package/Source/Shaders/PostProcessStages/AmbientOcclusionModulate.js +3 -3
  235. package/Source/Widget/CesiumWidget.js +67 -27
  236. package/index.d.ts +2429 -1475
  237. package/index.js +324 -315
  238. package/package.json +4 -4
  239. package/Build/Workers/PolygonPipeline-d31ff61c.js +0 -1345
  240. package/Build/Workers/Transforms-9e9df299.js +0 -14714
@@ -5,6 +5,7 @@ import getJsonFromTypedArray from "../Core/getJsonFromTypedArray.js";
5
5
  import getMagic from "../Core/getMagic.js";
6
6
  import isDataUri from "../Core/isDataUri.js";
7
7
  import Resource from "../Core/Resource.js";
8
+ import RuntimeError from "../Core/RuntimeError.js";
8
9
  import addDefaults from "./GltfPipeline/addDefaults.js";
9
10
  import addPipelineExtras from "./GltfPipeline/addPipelineExtras.js";
10
11
  import ForEach from "./GltfPipeline/ForEach.js";
@@ -14,6 +15,7 @@ import updateVersion from "./GltfPipeline/updateVersion.js";
14
15
  import usesExtension from "./GltfPipeline/usesExtension.js";
15
16
  import ResourceLoader from "./ResourceLoader.js";
16
17
  import ResourceLoaderState from "./ResourceLoaderState.js";
18
+ import ModelUtility from "./Model/ModelUtility.js";
17
19
 
18
20
  /**
19
21
  * Loads a glTF JSON from a glTF or glb.
@@ -68,20 +70,6 @@ if (defined(Object.create)) {
68
70
  }
69
71
 
70
72
  Object.defineProperties(GltfJsonLoader.prototype, {
71
- /**
72
- * A promise that resolves to the resource when the resource is ready, or undefined if the resource hasn't started loading.
73
- *
74
- * @memberof GltfJsonLoader.prototype
75
- *
76
- * @type {Promise<GltfJsonLoader>|undefined}
77
- * @readonly
78
- * @private
79
- */
80
- promise: {
81
- get: function () {
82
- return this._promise;
83
- },
84
- },
85
73
  /**
86
74
  * The cache key of the resource.
87
75
  *
@@ -117,56 +105,55 @@ Object.defineProperties(GltfJsonLoader.prototype, {
117
105
  * @returns {Promise<GltfJsonLoader>} A promise which resolves to the loader when the resource loading is completed.
118
106
  * @private
119
107
  */
120
- GltfJsonLoader.prototype.load = function () {
108
+ GltfJsonLoader.prototype.load = async function () {
109
+ if (defined(this._promise)) {
110
+ return this._promise;
111
+ }
112
+
121
113
  this._state = ResourceLoaderState.LOADING;
122
114
 
123
- let processPromise;
124
115
  if (defined(this._gltfJson)) {
125
- processPromise = processGltfJson(this, this._gltfJson);
126
- } else if (defined(this._typedArray)) {
127
- processPromise = processGltfTypedArray(this, this._typedArray);
128
- } else {
129
- processPromise = loadFromUri(this);
116
+ this._promise = processGltfJson(this, this._gltfJson);
117
+ return this._promise;
130
118
  }
131
119
 
132
- const that = this;
133
- this._promise = processPromise
134
- .then(function (gltf) {
135
- if (that.isDestroyed()) {
136
- return;
137
- }
138
- that._gltf = gltf;
139
- that._state = ResourceLoaderState.READY;
140
- return that;
141
- })
142
- .catch(function (error) {
143
- if (that.isDestroyed()) {
144
- return;
145
- }
146
- return handleError(that, error);
147
- });
120
+ if (defined(this._typedArray)) {
121
+ this._promise = processGltfTypedArray(this, this._typedArray);
122
+ return this._promise;
123
+ }
148
124
 
125
+ this._promise = loadFromUri(this);
149
126
  return this._promise;
150
127
  };
151
128
 
152
- function loadFromUri(gltfJsonLoader) {
153
- return gltfJsonLoader._fetchGltf().then(function (arrayBuffer) {
129
+ async function loadFromUri(gltfJsonLoader) {
130
+ let typedArray;
131
+ try {
132
+ const arrayBuffer = await gltfJsonLoader._fetchGltf();
154
133
  if (gltfJsonLoader.isDestroyed()) {
155
134
  return;
156
135
  }
157
- const typedArray = new Uint8Array(arrayBuffer);
158
- return processGltfTypedArray(gltfJsonLoader, typedArray);
159
- });
136
+
137
+ typedArray = new Uint8Array(arrayBuffer);
138
+ } catch (error) {
139
+ if (gltfJsonLoader.isDestroyed()) {
140
+ return;
141
+ }
142
+
143
+ handleError(gltfJsonLoader, error);
144
+ }
145
+
146
+ return processGltfTypedArray(gltfJsonLoader, typedArray);
160
147
  }
161
148
 
162
149
  function handleError(gltfJsonLoader, error) {
163
150
  gltfJsonLoader.unload();
164
151
  gltfJsonLoader._state = ResourceLoaderState.FAILED;
165
152
  const errorMessage = `Failed to load glTF: ${gltfJsonLoader._gltfResource.url}`;
166
- return Promise.reject(gltfJsonLoader.getError(errorMessage, error));
153
+ throw gltfJsonLoader.getError(errorMessage, error);
167
154
  }
168
155
 
169
- function upgradeVersion(gltfJsonLoader, gltf) {
156
+ async function upgradeVersion(gltfJsonLoader, gltf) {
170
157
  if (
171
158
  defined(gltf.asset) &&
172
159
  gltf.asset.version === "2.0" &&
@@ -188,23 +175,25 @@ function upgradeVersion(gltfJsonLoader, gltf) {
188
175
  url: buffer.uri,
189
176
  });
190
177
  const resourceCache = gltfJsonLoader._resourceCache;
191
- const bufferLoader = resourceCache.loadExternalBuffer({
178
+ const bufferLoader = resourceCache.getExternalBufferLoader({
192
179
  resource: resource,
193
180
  });
194
-
195
181
  gltfJsonLoader._bufferLoaders.push(bufferLoader);
196
182
 
197
183
  promises.push(
198
- bufferLoader.promise.then(function (bufferLoader) {
184
+ bufferLoader.load().then(function () {
185
+ if (bufferLoader.isDestroyed()) {
186
+ return;
187
+ }
188
+
199
189
  buffer.extras._pipeline.source = bufferLoader.typedArray;
200
190
  })
201
191
  );
202
192
  }
203
193
  });
204
194
 
205
- return Promise.all(promises).then(function () {
206
- updateVersion(gltf);
207
- });
195
+ await Promise.all(promises);
196
+ updateVersion(gltf);
208
197
  }
209
198
 
210
199
  function decodeDataUris(gltf) {
@@ -233,42 +222,64 @@ function loadEmbeddedBuffers(gltfJsonLoader, gltf) {
233
222
  const source = buffer.extras._pipeline.source;
234
223
  if (defined(source) && !defined(buffer.uri)) {
235
224
  const resourceCache = gltfJsonLoader._resourceCache;
236
- const bufferLoader = resourceCache.loadEmbeddedBuffer({
225
+ const bufferLoader = resourceCache.getEmbeddedBufferLoader({
237
226
  parentResource: gltfJsonLoader._gltfResource,
238
227
  bufferId: bufferId,
239
228
  typedArray: source,
240
229
  });
241
-
242
230
  gltfJsonLoader._bufferLoaders.push(bufferLoader);
243
- promises.push(bufferLoader.promise);
231
+ promises.push(bufferLoader.load());
244
232
  }
245
233
  });
246
234
  return Promise.all(promises);
247
235
  }
248
236
 
249
- function processGltfJson(gltfJsonLoader, gltf) {
250
- addPipelineExtras(gltf);
251
-
252
- return decodeDataUris(gltf)
253
- .then(function () {
254
- return upgradeVersion(gltfJsonLoader, gltf);
255
- })
256
- .then(function () {
257
- addDefaults(gltf);
258
- return loadEmbeddedBuffers(gltfJsonLoader, gltf);
259
- })
260
- .then(function () {
261
- removePipelineExtras(gltf);
262
- return gltf;
263
- });
237
+ async function processGltfJson(gltfJsonLoader, gltf) {
238
+ try {
239
+ addPipelineExtras(gltf);
240
+
241
+ await decodeDataUris(gltf);
242
+ await upgradeVersion(gltfJsonLoader, gltf);
243
+ addDefaults(gltf);
244
+ await loadEmbeddedBuffers(gltfJsonLoader, gltf);
245
+ removePipelineExtras(gltf);
246
+
247
+ const version = gltf.asset.version;
248
+ if (version !== "1.0" && version !== "2.0") {
249
+ throw new RuntimeError(`Unsupported glTF version: ${version}`);
250
+ }
251
+
252
+ const extensionsRequired = gltf.extensionsRequired;
253
+ if (defined(extensionsRequired)) {
254
+ ModelUtility.checkSupportedExtensions(extensionsRequired);
255
+ }
256
+
257
+ gltfJsonLoader._gltf = gltf;
258
+ gltfJsonLoader._state = ResourceLoaderState.READY;
259
+ return gltfJsonLoader;
260
+ } catch (error) {
261
+ if (gltfJsonLoader.isDestroyed()) {
262
+ return;
263
+ }
264
+
265
+ handleError(gltfJsonLoader, error);
266
+ }
264
267
  }
265
268
 
266
- function processGltfTypedArray(gltfJsonLoader, typedArray) {
269
+ async function processGltfTypedArray(gltfJsonLoader, typedArray) {
267
270
  let gltf;
268
- if (getMagic(typedArray) === "glTF") {
269
- gltf = parseGlb(typedArray);
270
- } else {
271
- gltf = getJsonFromTypedArray(typedArray);
271
+ try {
272
+ if (getMagic(typedArray) === "glTF") {
273
+ gltf = parseGlb(typedArray);
274
+ } else {
275
+ gltf = getJsonFromTypedArray(typedArray);
276
+ }
277
+ } catch (error) {
278
+ if (gltfJsonLoader.isDestroyed()) {
279
+ return;
280
+ }
281
+
282
+ handleError(gltfJsonLoader, error);
272
283
  }
273
284
 
274
285
  return processGltfJson(gltfJsonLoader, gltf);
@@ -282,7 +293,9 @@ GltfJsonLoader.prototype.unload = function () {
282
293
  const bufferLoaders = this._bufferLoaders;
283
294
  const bufferLoadersLength = bufferLoaders.length;
284
295
  for (let i = 0; i < bufferLoadersLength; ++i) {
285
- this._resourceCache.unload(bufferLoaders[i]);
296
+ bufferLoaders[i] =
297
+ !bufferLoaders[i].isDestroyed() &&
298
+ this._resourceCache.unload(bufferLoaders[i]);
286
299
  }
287
300
  this._bufferLoaders.length = 0;
288
301