@cesium/engine 2.1.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 (193) hide show
  1. package/Build/Workers/{AxisAlignedBoundingBox-a6f9f0e5.js → AxisAlignedBoundingBox-379015ef.js} +1 -1
  2. package/Build/Workers/{BoundingRectangle-b0a68595.js → BoundingRectangle-57f2b24f.js} +1 -1
  3. package/Build/Workers/{BoxGeometry-baedd794.js → BoxGeometry-ecabfc78.js} +1 -1
  4. package/Build/Workers/{Color-f85df1be.js → Color-14d1a36d.js} +1 -1
  5. package/Build/Workers/{CoplanarPolygonGeometryLibrary-30516950.js → CoplanarPolygonGeometryLibrary-048c3c14.js} +1 -1
  6. package/Build/Workers/{CorridorGeometryLibrary-5d5d3b3a.js → CorridorGeometryLibrary-520c8619.js} +1 -1
  7. package/Build/Workers/{CylinderGeometry-d899ae26.js → CylinderGeometry-119068b8.js} +1 -1
  8. package/Build/Workers/{EllipseGeometry-a49f8449.js → EllipseGeometry-2dfc3523.js} +1 -1
  9. package/Build/Workers/{EllipseGeometryLibrary-cba7edde.js → EllipseGeometryLibrary-0a1e0170.js} +1 -1
  10. package/Build/Workers/{EllipseOutlineGeometry-8095c8cb.js → EllipseOutlineGeometry-c5251669.js} +1 -1
  11. package/Build/Workers/{EllipsoidGeometry-ed93f571.js → EllipsoidGeometry-d10a5221.js} +1 -1
  12. package/Build/Workers/{EllipsoidOutlineGeometry-e4854854.js → EllipsoidOutlineGeometry-7039a0ae.js} +1 -1
  13. package/Build/Workers/{EllipsoidTangentPlane-7ae1aa9a.js → EllipsoidTangentPlane-857186be.js} +1 -1
  14. package/Build/Workers/{FrustumGeometry-b62db3e3.js → FrustumGeometry-400fa1b7.js} +2 -2
  15. package/Build/Workers/{GeometryAttribute-780af4fa.js → GeometryAttribute-7a2de5c6.js} +1 -1
  16. package/Build/Workers/{GeometryPipeline-36b61c99.js → GeometryPipeline-916636fa.js} +1 -1
  17. package/Build/Workers/{IntersectionTests-e889fcf0.js → IntersectionTests-b4d02d4d.js} +1 -1
  18. package/Build/Workers/{OrientedBoundingBox-43478ac8.js → OrientedBoundingBox-96fe1752.js} +5 -3
  19. package/Build/Workers/{PolygonGeometryLibrary-38a98276.js → PolygonGeometryLibrary-931f1ec6.js} +1 -1
  20. package/Build/Workers/{PolygonPipeline-d31ff61c.js → PolygonPipeline-32fc92cc.js} +1 -1
  21. package/Build/Workers/{PolylinePipeline-30e4cec9.js → PolylinePipeline-6d5c63e5.js} +1 -1
  22. package/Build/Workers/{PolylineVolumeGeometryLibrary-90551d26.js → PolylineVolumeGeometryLibrary-f068c1fb.js} +1 -1
  23. package/Build/Workers/{PrimitivePipeline-558d9cb0.js → PrimitivePipeline-879f996a.js} +1 -1
  24. package/Build/Workers/{RectangleGeometryLibrary-815c68df.js → RectangleGeometryLibrary-2d6f36f3.js} +1 -1
  25. package/Build/Workers/{TerrainEncoding-341ead52.js → TerrainEncoding-82882059.js} +1 -1
  26. package/Build/Workers/{Transforms-9e9df299.js → Transforms-9052372a.js} +6 -5
  27. package/Build/Workers/{WallGeometryLibrary-ccf90976.js → WallGeometryLibrary-db7a64fb.js} +1 -1
  28. package/Build/Workers/cesiumWorkerBootstrapper.js +1 -1
  29. package/Build/Workers/combineGeometry.js +1 -1
  30. package/Build/Workers/createBoxGeometry.js +1 -1
  31. package/Build/Workers/createBoxOutlineGeometry.js +1 -1
  32. package/Build/Workers/createCircleGeometry.js +1 -1
  33. package/Build/Workers/createCircleOutlineGeometry.js +1 -1
  34. package/Build/Workers/createCoplanarPolygonGeometry.js +1 -1
  35. package/Build/Workers/createCoplanarPolygonOutlineGeometry.js +1 -1
  36. package/Build/Workers/createCorridorGeometry.js +1 -1
  37. package/Build/Workers/createCorridorOutlineGeometry.js +1 -1
  38. package/Build/Workers/createCylinderGeometry.js +1 -1
  39. package/Build/Workers/createCylinderOutlineGeometry.js +1 -1
  40. package/Build/Workers/createEllipseGeometry.js +1 -1
  41. package/Build/Workers/createEllipseOutlineGeometry.js +1 -1
  42. package/Build/Workers/createEllipsoidGeometry.js +1 -1
  43. package/Build/Workers/createEllipsoidOutlineGeometry.js +1 -1
  44. package/Build/Workers/createFrustumGeometry.js +1 -1
  45. package/Build/Workers/createFrustumOutlineGeometry.js +1 -1
  46. package/Build/Workers/createGeometry.js +1 -1
  47. package/Build/Workers/createGroundPolylineGeometry.js +1 -1
  48. package/Build/Workers/createPlaneGeometry.js +1 -1
  49. package/Build/Workers/createPlaneOutlineGeometry.js +1 -1
  50. package/Build/Workers/createPolygonGeometry.js +1 -1
  51. package/Build/Workers/createPolygonOutlineGeometry.js +1 -1
  52. package/Build/Workers/createPolylineGeometry.js +1 -1
  53. package/Build/Workers/createPolylineVolumeGeometry.js +1 -1
  54. package/Build/Workers/createPolylineVolumeOutlineGeometry.js +1 -1
  55. package/Build/Workers/createRectangleGeometry.js +1 -1
  56. package/Build/Workers/createRectangleOutlineGeometry.js +1 -1
  57. package/Build/Workers/createSimplePolylineGeometry.js +1 -1
  58. package/Build/Workers/createSphereGeometry.js +1 -1
  59. package/Build/Workers/createSphereOutlineGeometry.js +1 -1
  60. package/Build/Workers/createVectorTileGeometries.js +1 -1
  61. package/Build/Workers/createVectorTilePolygons.js +1 -1
  62. package/Build/Workers/createVerticesFromGoogleEarthEnterpriseBuffer.js +1 -1
  63. package/Build/Workers/createVerticesFromHeightmap.js +1 -1
  64. package/Build/Workers/createVerticesFromQuantizedTerrainMesh.js +10 -15
  65. package/Build/Workers/createWallGeometry.js +1 -1
  66. package/Build/Workers/createWallOutlineGeometry.js +1 -1
  67. package/Build/Workers/package.js +1 -1
  68. package/Build/Workers/transferTypedArrayTest.js +1 -1
  69. package/Build/Workers/upsampleQuantizedTerrainMesh.js +1 -1
  70. package/Source/Core/ArcGISTiledElevationTerrainProvider.js +291 -191
  71. package/Source/Core/CesiumTerrainProvider.js +571 -434
  72. package/Source/Core/CustomHeightmapTerrainProvider.js +12 -0
  73. package/Source/Core/EllipsoidTerrainProvider.js +17 -10
  74. package/Source/Core/FrustumGeometry.js +1 -1
  75. package/Source/Core/GoogleEarthEnterpriseMetadata.js +86 -34
  76. package/Source/Core/GoogleEarthEnterpriseTerrainProvider.js +119 -82
  77. package/Source/Core/Ion.js +1 -1
  78. package/Source/Core/IonResource.js +14 -3
  79. package/Source/Core/OrientedBoundingBox.js +4 -2
  80. package/Source/Core/RequestScheduler.js +1 -1
  81. package/Source/Core/Resource.js +2 -2
  82. package/Source/Core/TerrainProvider.js +9 -14
  83. package/Source/Core/TileProviderError.js +8 -8
  84. package/Source/Core/VRTheWorldTerrainProvider.js +193 -124
  85. package/Source/Core/buildModuleUrl.js +4 -3
  86. package/Source/Core/createWorldTerrain.js +20 -2
  87. package/Source/Core/createWorldTerrainAsync.js +48 -0
  88. package/Source/Core/sampleTerrain.js +9 -10
  89. package/Source/Core/sampleTerrainMostDetailed.js +66 -72
  90. package/Source/DataSources/Cesium3DTilesetVisualizer.js +37 -26
  91. package/Source/DataSources/Entity.js +6 -1
  92. package/Source/DataSources/ModelVisualizer.js +99 -31
  93. package/Source/DataSources/PolygonGraphics.js +1 -1
  94. package/Source/Scene/ArcGisMapServerImageryProvider.js +552 -376
  95. package/Source/Scene/BingMapsImageryProvider.js +511 -305
  96. package/Source/Scene/BufferLoader.js +29 -34
  97. package/Source/Scene/Cesium3DTile.js +388 -251
  98. package/Source/Scene/Cesium3DTileBatchTable.js +2 -2
  99. package/Source/Scene/Cesium3DTileContent.js +16 -0
  100. package/Source/Scene/Cesium3DTileContentFactory.js +4 -4
  101. package/Source/Scene/Cesium3DTilePass.js +8 -11
  102. package/Source/Scene/Cesium3DTileStyleEngine.js +1 -1
  103. package/Source/Scene/Cesium3DTilesVoxelProvider.js +225 -117
  104. package/Source/Scene/Cesium3DTileset.js +755 -481
  105. package/Source/Scene/Cesium3DTilesetBaseTraversal.js +301 -0
  106. package/Source/Scene/Cesium3DTilesetMostDetailedTraversal.js +33 -46
  107. package/Source/Scene/Cesium3DTilesetSkipTraversal.js +421 -0
  108. package/Source/Scene/Cesium3DTilesetTraversal.js +219 -671
  109. package/Source/Scene/ClassificationPrimitive.js +7 -0
  110. package/Source/Scene/Composite3DTileContent.js +69 -26
  111. package/Source/Scene/CreditDisplay.js +20 -4
  112. package/Source/Scene/DepthPlane.js +1 -1
  113. package/Source/Scene/Empty3DTileContent.js +31 -1
  114. package/Source/Scene/Geometry3DTileContent.js +47 -7
  115. package/Source/Scene/Globe.js +5 -1
  116. package/Source/Scene/GlobeSurfaceTile.js +2 -1
  117. package/Source/Scene/GlobeSurfaceTileProvider.js +50 -27
  118. package/Source/Scene/GltfBufferViewLoader.js +47 -91
  119. package/Source/Scene/GltfDracoLoader.js +110 -112
  120. package/Source/Scene/GltfImageLoader.js +71 -78
  121. package/Source/Scene/GltfIndexBufferLoader.js +108 -121
  122. package/Source/Scene/GltfJsonLoader.js +75 -74
  123. package/Source/Scene/GltfLoader.js +392 -280
  124. package/Source/Scene/GltfStructuralMetadataLoader.js +109 -110
  125. package/Source/Scene/GltfTextureLoader.js +97 -96
  126. package/Source/Scene/GltfVertexBufferLoader.js +128 -133
  127. package/Source/Scene/GoogleEarthEnterpriseImageryProvider.js +353 -225
  128. package/Source/Scene/GoogleEarthEnterpriseMapsProvider.js +491 -331
  129. package/Source/Scene/GridImageryProvider.js +267 -104
  130. package/Source/Scene/GroundPolylinePrimitive.js +12 -1
  131. package/Source/Scene/GroundPrimitive.js +8 -1
  132. package/Source/Scene/I3SDataProvider.js +214 -113
  133. package/Source/Scene/I3SFeature.js +7 -6
  134. package/Source/Scene/I3SLayer.js +26 -37
  135. package/Source/Scene/I3SNode.js +59 -66
  136. package/Source/Scene/Imagery.js +6 -1
  137. package/Source/Scene/ImageryLayer.js +299 -48
  138. package/Source/Scene/ImageryLayerCollection.js +26 -0
  139. package/Source/Scene/ImageryProvider.js +129 -111
  140. package/Source/Scene/Implicit3DTileContent.js +72 -23
  141. package/Source/Scene/ImplicitSubtree.js +66 -45
  142. package/Source/Scene/IonImageryProvider.js +471 -264
  143. package/Source/Scene/MapboxImageryProvider.js +272 -112
  144. package/Source/Scene/MapboxStyleImageryProvider.js +270 -111
  145. package/Source/Scene/MetadataSchemaLoader.js +26 -36
  146. package/Source/Scene/Model/B3dmLoader.js +42 -46
  147. package/Source/Scene/Model/GeoJsonLoader.js +8 -32
  148. package/Source/Scene/Model/I3dmLoader.js +48 -74
  149. package/Source/Scene/Model/Model.js +470 -132
  150. package/Source/Scene/Model/Model3DTileContent.js +83 -31
  151. package/Source/Scene/Model/ModelAnimationCollection.js +3 -3
  152. package/Source/Scene/Model/ModelDrawCommand.js +15 -26
  153. package/Source/Scene/Model/ModelUtility.js +16 -16
  154. package/Source/Scene/Model/PntsLoader.js +27 -32
  155. package/Source/Scene/Multiple3DTileContent.js +134 -115
  156. package/Source/Scene/PointCloud.js +11 -19
  157. package/Source/Scene/Primitive.js +20 -0
  158. package/Source/Scene/QuadtreePrimitive.js +2 -0
  159. package/Source/Scene/QuadtreeTileProvider.js +4 -8
  160. package/Source/Scene/ResourceCache.js +47 -105
  161. package/Source/Scene/ResourceCacheStatistics.js +24 -58
  162. package/Source/Scene/ResourceLoader.js +5 -17
  163. package/Source/Scene/ResourceLoaderState.js +12 -4
  164. package/Source/Scene/Scene.js +65 -0
  165. package/Source/Scene/ScreenSpaceCameraController.js +1 -1
  166. package/Source/Scene/SingleTileImageryProvider.js +382 -209
  167. package/Source/Scene/Terrain.js +196 -0
  168. package/Source/Scene/TileCoordinatesImageryProvider.js +267 -104
  169. package/Source/Scene/TileMapServiceImageryProvider.js +177 -85
  170. package/Source/Scene/Tileset3DTileContent.js +47 -5
  171. package/Source/Scene/TimeDynamicPointCloud.js +15 -2
  172. package/Source/Scene/UrlTemplateImageryProvider.js +343 -215
  173. package/Source/Scene/Vector3DTileClampedPolylines.js +96 -84
  174. package/Source/Scene/Vector3DTileContent.js +47 -22
  175. package/Source/Scene/Vector3DTileGeometry.js +57 -52
  176. package/Source/Scene/Vector3DTilePoints.js +72 -68
  177. package/Source/Scene/Vector3DTilePolygons.js +118 -117
  178. package/Source/Scene/Vector3DTilePolylines.js +86 -82
  179. package/Source/Scene/Vector3DTilePrimitive.js +0 -1
  180. package/Source/Scene/VoxelContent.js +61 -63
  181. package/Source/Scene/VoxelPrimitive.js +39 -91
  182. package/Source/Scene/VoxelProvider.js +2 -2
  183. package/Source/Scene/WebMapServiceImageryProvider.js +272 -111
  184. package/Source/Scene/WebMapTileServiceImageryProvider.js +270 -107
  185. package/Source/Scene/computeFlyToLocationForRectangle.js +33 -37
  186. package/Source/Scene/createOsmBuildings.js +6 -0
  187. package/Source/Scene/createOsmBuildingsAsync.js +82 -0
  188. package/Source/Scene/createWorldImagery.js +14 -5
  189. package/Source/Scene/createWorldImageryAsync.js +39 -0
  190. package/Source/Widget/CesiumWidget.js +55 -27
  191. package/index.d.ts +2158 -1395
  192. package/index.js +58 -51
  193. package/package.json +1 -1
@@ -115,7 +115,6 @@ function GltfVertexBufferLoader(options) {
115
115
  this._buffer = undefined;
116
116
  this._state = ResourceLoaderState.UNLOADED;
117
117
  this._promise = undefined;
118
- this._process = function (loader, frameState) {};
119
118
  }
120
119
 
121
120
  if (defined(Object.create)) {
@@ -124,20 +123,6 @@ if (defined(Object.create)) {
124
123
  }
125
124
 
126
125
  Object.defineProperties(GltfVertexBufferLoader.prototype, {
127
- /**
128
- * A promise that resolves to the resource when the resource is ready, or undefined if the resource hasn't started loading.
129
- *
130
- * @memberof GltfVertexBufferLoader.prototype
131
- *
132
- * @type {Promise<GltfVertexBufferLoader>|undefined}
133
- * @readonly
134
- * @private
135
- */
136
- promise: {
137
- get: function () {
138
- return this._promise;
139
- },
140
- },
141
126
  /**
142
127
  * The cache key of the resource.
143
128
  *
@@ -209,77 +194,17 @@ function hasDracoCompression(draco, semantic) {
209
194
  * @returns {Promise<GltfVertexBufferLoader>} A promise which resolves to the loader when the resource loading is completed.
210
195
  * @private
211
196
  */
212
- GltfVertexBufferLoader.prototype.load = function () {
213
- let promise;
197
+ GltfVertexBufferLoader.prototype.load = async function () {
198
+ if (defined(this._promise)) {
199
+ return this._promise;
200
+ }
214
201
 
215
202
  if (hasDracoCompression(this._draco, this._attributeSemantic)) {
216
- promise = loadFromDraco(this);
217
- } else {
218
- promise = loadFromBufferView(this);
203
+ this._promise = loadFromDraco(this);
204
+ return this._promise;
219
205
  }
220
206
 
221
- const that = this;
222
- const scratchVertexBufferJob = new CreateVertexBufferJob();
223
- const processPromise = new Promise(function (resolve) {
224
- that._process = function (loader, frameState) {
225
- if (loader._state === ResourceLoaderState.READY) {
226
- return;
227
- }
228
-
229
- const typedArray = loader._typedArray;
230
-
231
- if (defined(loader._dracoLoader)) {
232
- loader._dracoLoader.process(frameState);
233
- }
234
-
235
- if (defined(loader._bufferViewLoader)) {
236
- loader._bufferViewLoader.process(frameState);
237
- }
238
-
239
- if (!defined(typedArray)) {
240
- // Buffer view hasn't been loaded yet
241
- return;
242
- }
243
-
244
- let buffer;
245
- if (loader._loadBuffer && loader._asynchronous) {
246
- const vertexBufferJob = scratchVertexBufferJob;
247
- vertexBufferJob.set(typedArray, frameState.context);
248
- const jobScheduler = frameState.jobScheduler;
249
- if (!jobScheduler.execute(vertexBufferJob, JobType.BUFFER)) {
250
- // Job scheduler is full. Try again next frame.
251
- return;
252
- }
253
- buffer = vertexBufferJob.buffer;
254
- } else if (loader._loadBuffer) {
255
- buffer = createVertexBuffer(typedArray, frameState.context);
256
- }
257
-
258
- // Unload everything except the vertex buffer
259
- loader.unload();
260
-
261
- loader._buffer = buffer;
262
- loader._typedArray = loader._loadTypedArray ? typedArray : undefined;
263
- loader._state = ResourceLoaderState.READY;
264
- resolve(loader);
265
- };
266
- });
267
-
268
- this._promise = promise
269
- .then(function () {
270
- if (that.isDestroyed()) {
271
- return;
272
- }
273
-
274
- return processPromise;
275
- })
276
- .catch(function (error) {
277
- if (that.isDestroyed()) {
278
- return;
279
- }
280
-
281
- return handleError(that, error);
282
- });
207
+ this._promise = loadFromBufferView(this);
283
208
  return this._promise;
284
209
  };
285
210
 
@@ -335,79 +260,98 @@ function getQuantizationInformation(
335
260
  return quantization;
336
261
  }
337
262
 
338
- function loadFromDraco(vertexBufferLoader) {
339
- const resourceCache = vertexBufferLoader._resourceCache;
340
- const dracoLoader = resourceCache.loadDraco({
341
- gltf: vertexBufferLoader._gltf,
342
- draco: vertexBufferLoader._draco,
343
- gltfResource: vertexBufferLoader._gltfResource,
344
- baseResource: vertexBufferLoader._baseResource,
345
- });
346
-
347
- vertexBufferLoader._dracoLoader = dracoLoader;
263
+ async function loadFromDraco(vertexBufferLoader) {
348
264
  vertexBufferLoader._state = ResourceLoaderState.LOADING;
265
+ const resourceCache = vertexBufferLoader._resourceCache;
266
+ try {
267
+ const dracoLoader = resourceCache.getDracoLoader({
268
+ gltf: vertexBufferLoader._gltf,
269
+ draco: vertexBufferLoader._draco,
270
+ gltfResource: vertexBufferLoader._gltfResource,
271
+ baseResource: vertexBufferLoader._baseResource,
272
+ });
273
+ vertexBufferLoader._dracoLoader = dracoLoader;
274
+ await dracoLoader.load();
349
275
 
350
- return dracoLoader.promise.then(function () {
351
276
  if (vertexBufferLoader.isDestroyed()) {
352
277
  return;
353
278
  }
354
- // Get the typed array and quantization information
355
- const decodedVertexAttributes = dracoLoader.decodedData.vertexAttributes;
356
- const attributeSemantic = vertexBufferLoader._attributeSemantic;
357
- const dracoAttribute = decodedVertexAttributes[attributeSemantic];
358
- const accessorId = vertexBufferLoader._accessorId;
359
- const accessor = vertexBufferLoader._gltf.accessors[accessorId];
360
- const type = accessor.type;
361
- const typedArray = dracoAttribute.array;
362
- const dracoQuantization = dracoAttribute.data.quantization;
363
- if (defined(dracoQuantization)) {
364
- vertexBufferLoader._quantization = getQuantizationInformation(
365
- dracoQuantization,
366
- dracoAttribute.data.componentDatatype,
367
- dracoAttribute.data.componentsPerAttribute,
368
- type
369
- );
370
- }
371
279
 
372
280
  // Now wait for process() to run to finish loading
373
- vertexBufferLoader._typedArray = new Uint8Array(
374
- typedArray.buffer,
375
- typedArray.byteOffset,
376
- typedArray.byteLength
377
- );
378
- vertexBufferLoader._state = ResourceLoaderState.PROCESSING;
281
+ vertexBufferLoader._state = ResourceLoaderState.LOADED;
379
282
  return vertexBufferLoader;
380
- });
283
+ } catch {
284
+ if (vertexBufferLoader.isDestroyed()) {
285
+ return;
286
+ }
287
+
288
+ handleError(vertexBufferLoader);
289
+ }
381
290
  }
382
291
 
383
- function loadFromBufferView(vertexBufferLoader) {
384
- const resourceCache = vertexBufferLoader._resourceCache;
385
- const bufferViewLoader = resourceCache.loadBufferView({
386
- gltf: vertexBufferLoader._gltf,
387
- bufferViewId: vertexBufferLoader._bufferViewId,
388
- gltfResource: vertexBufferLoader._gltfResource,
389
- baseResource: vertexBufferLoader._baseResource,
390
- });
292
+ function processDraco(vertexBufferLoader) {
293
+ vertexBufferLoader._state = ResourceLoaderState.PROCESSING;
294
+ const dracoLoader = vertexBufferLoader._dracoLoader;
295
+
296
+ // Get the typed array and quantization information
297
+ const decodedVertexAttributes = dracoLoader.decodedData.vertexAttributes;
298
+ const attributeSemantic = vertexBufferLoader._attributeSemantic;
299
+ const dracoAttribute = decodedVertexAttributes[attributeSemantic];
300
+ const accessorId = vertexBufferLoader._accessorId;
301
+ const accessor = vertexBufferLoader._gltf.accessors[accessorId];
302
+ const type = accessor.type;
303
+ const typedArray = dracoAttribute.array;
304
+ const dracoQuantization = dracoAttribute.data.quantization;
305
+ if (defined(dracoQuantization)) {
306
+ vertexBufferLoader._quantization = getQuantizationInformation(
307
+ dracoQuantization,
308
+ dracoAttribute.data.componentDatatype,
309
+ dracoAttribute.data.componentsPerAttribute,
310
+ type
311
+ );
312
+ }
313
+
314
+ vertexBufferLoader._typedArray = new Uint8Array(
315
+ typedArray.buffer,
316
+ typedArray.byteOffset,
317
+ typedArray.byteLength
318
+ );
319
+ }
320
+
321
+ async function loadFromBufferView(vertexBufferLoader) {
391
322
  vertexBufferLoader._state = ResourceLoaderState.LOADING;
392
- vertexBufferLoader._bufferViewLoader = bufferViewLoader;
323
+ const resourceCache = vertexBufferLoader._resourceCache;
324
+ try {
325
+ const bufferViewLoader = resourceCache.getBufferViewLoader({
326
+ gltf: vertexBufferLoader._gltf,
327
+ bufferViewId: vertexBufferLoader._bufferViewId,
328
+ gltfResource: vertexBufferLoader._gltfResource,
329
+ baseResource: vertexBufferLoader._baseResource,
330
+ });
331
+ vertexBufferLoader._bufferViewLoader = bufferViewLoader;
332
+ await bufferViewLoader.load();
393
333
 
394
- return bufferViewLoader.promise.then(function () {
395
334
  if (vertexBufferLoader.isDestroyed()) {
396
335
  return;
397
336
  }
398
- // Now wait for process() to run to finish loading
337
+
399
338
  vertexBufferLoader._typedArray = bufferViewLoader.typedArray;
400
339
  vertexBufferLoader._state = ResourceLoaderState.PROCESSING;
401
340
  return vertexBufferLoader;
402
- });
341
+ } catch (error) {
342
+ if (vertexBufferLoader.isDestroyed()) {
343
+ return;
344
+ }
345
+
346
+ handleError(vertexBufferLoader, error);
347
+ }
403
348
  }
404
349
 
405
350
  function handleError(vertexBufferLoader, error) {
406
351
  vertexBufferLoader.unload();
407
352
  vertexBufferLoader._state = ResourceLoaderState.FAILED;
408
353
  const errorMessage = "Failed to load vertex buffer";
409
- error = vertexBufferLoader.getError(errorMessage, error);
410
- return Promise.reject(error);
354
+ throw vertexBufferLoader.getError(errorMessage, error);
411
355
  }
412
356
 
413
357
  function CreateVertexBufferJob() {
@@ -435,6 +379,8 @@ function createVertexBuffer(typedArray, context) {
435
379
  return buffer;
436
380
  }
437
381
 
382
+ const scratchVertexBufferJob = new CreateVertexBufferJob();
383
+
438
384
  /**
439
385
  * Processes the resource until it becomes ready.
440
386
  *
@@ -446,7 +392,53 @@ GltfVertexBufferLoader.prototype.process = function (frameState) {
446
392
  Check.typeOf.object("frameState", frameState);
447
393
  //>>includeEnd('debug');
448
394
 
449
- return this._process(this, frameState);
395
+ if (this._state === ResourceLoaderState.READY) {
396
+ return true;
397
+ }
398
+
399
+ if (
400
+ this._state !== ResourceLoaderState.LOADED &&
401
+ this._state !== ResourceLoaderState.PROCESSING
402
+ ) {
403
+ return false;
404
+ }
405
+
406
+ if (defined(this._dracoLoader)) {
407
+ try {
408
+ const ready = this._dracoLoader.process(frameState);
409
+ if (!ready) {
410
+ return false;
411
+ }
412
+ } catch (error) {
413
+ handleError(this, error);
414
+ }
415
+
416
+ processDraco(this);
417
+ }
418
+
419
+ let buffer;
420
+ const typedArray = this._typedArray;
421
+ if (this._loadBuffer && this._asynchronous) {
422
+ const vertexBufferJob = scratchVertexBufferJob;
423
+ vertexBufferJob.set(typedArray, frameState.context);
424
+ const jobScheduler = frameState.jobScheduler;
425
+ if (!jobScheduler.execute(vertexBufferJob, JobType.BUFFER)) {
426
+ // Job scheduler is full. Try again next frame.
427
+ return false;
428
+ }
429
+ buffer = vertexBufferJob.buffer;
430
+ } else if (this._loadBuffer) {
431
+ buffer = createVertexBuffer(typedArray, frameState.context);
432
+ }
433
+
434
+ // Unload everything except the vertex buffer
435
+ this.unload();
436
+
437
+ this._buffer = buffer;
438
+ this._typedArray = this._loadTypedArray ? typedArray : undefined;
439
+ this._state = ResourceLoaderState.READY;
440
+ this._resourceCache.statistics.addGeometryLoader(this);
441
+ return true;
450
442
  };
451
443
 
452
444
  /**
@@ -460,7 +452,10 @@ GltfVertexBufferLoader.prototype.unload = function () {
460
452
 
461
453
  const resourceCache = this._resourceCache;
462
454
 
463
- if (defined(this._bufferViewLoader)) {
455
+ if (
456
+ defined(this._bufferViewLoader) &&
457
+ !this._bufferViewLoader.isDestroyed()
458
+ ) {
464
459
  resourceCache.unload(this._bufferViewLoader);
465
460
  }
466
461