@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.
- package/Build/Workers/{AxisAlignedBoundingBox-a6f9f0e5.js → AxisAlignedBoundingBox-379015ef.js} +1 -1
- package/Build/Workers/{BoundingRectangle-b0a68595.js → BoundingRectangle-57f2b24f.js} +1 -1
- package/Build/Workers/{BoxGeometry-baedd794.js → BoxGeometry-ecabfc78.js} +1 -1
- package/Build/Workers/{Color-f85df1be.js → Color-14d1a36d.js} +1 -1
- package/Build/Workers/{CoplanarPolygonGeometryLibrary-30516950.js → CoplanarPolygonGeometryLibrary-048c3c14.js} +1 -1
- package/Build/Workers/{CorridorGeometryLibrary-5d5d3b3a.js → CorridorGeometryLibrary-520c8619.js} +1 -1
- package/Build/Workers/{CylinderGeometry-d899ae26.js → CylinderGeometry-119068b8.js} +1 -1
- package/Build/Workers/{EllipseGeometry-a49f8449.js → EllipseGeometry-2dfc3523.js} +1 -1
- package/Build/Workers/{EllipseGeometryLibrary-cba7edde.js → EllipseGeometryLibrary-0a1e0170.js} +1 -1
- package/Build/Workers/{EllipseOutlineGeometry-8095c8cb.js → EllipseOutlineGeometry-c5251669.js} +1 -1
- package/Build/Workers/{EllipsoidGeometry-ed93f571.js → EllipsoidGeometry-d10a5221.js} +1 -1
- package/Build/Workers/{EllipsoidOutlineGeometry-e4854854.js → EllipsoidOutlineGeometry-7039a0ae.js} +1 -1
- package/Build/Workers/{EllipsoidTangentPlane-7ae1aa9a.js → EllipsoidTangentPlane-857186be.js} +1 -1
- package/Build/Workers/{FrustumGeometry-b62db3e3.js → FrustumGeometry-400fa1b7.js} +2 -2
- package/Build/Workers/{GeometryAttribute-780af4fa.js → GeometryAttribute-7a2de5c6.js} +1 -1
- package/Build/Workers/{GeometryPipeline-36b61c99.js → GeometryPipeline-916636fa.js} +1 -1
- package/Build/Workers/{IntersectionTests-e889fcf0.js → IntersectionTests-b4d02d4d.js} +1 -1
- package/Build/Workers/{OrientedBoundingBox-43478ac8.js → OrientedBoundingBox-96fe1752.js} +5 -3
- package/Build/Workers/{PolygonGeometryLibrary-38a98276.js → PolygonGeometryLibrary-931f1ec6.js} +1 -1
- package/Build/Workers/{PolygonPipeline-d31ff61c.js → PolygonPipeline-32fc92cc.js} +1 -1
- package/Build/Workers/{PolylinePipeline-30e4cec9.js → PolylinePipeline-6d5c63e5.js} +1 -1
- package/Build/Workers/{PolylineVolumeGeometryLibrary-90551d26.js → PolylineVolumeGeometryLibrary-f068c1fb.js} +1 -1
- package/Build/Workers/{PrimitivePipeline-558d9cb0.js → PrimitivePipeline-879f996a.js} +1 -1
- package/Build/Workers/{RectangleGeometryLibrary-815c68df.js → RectangleGeometryLibrary-2d6f36f3.js} +1 -1
- package/Build/Workers/{TerrainEncoding-341ead52.js → TerrainEncoding-82882059.js} +1 -1
- package/Build/Workers/{Transforms-9e9df299.js → Transforms-9052372a.js} +6 -5
- package/Build/Workers/{WallGeometryLibrary-ccf90976.js → WallGeometryLibrary-db7a64fb.js} +1 -1
- package/Build/Workers/cesiumWorkerBootstrapper.js +1 -1
- package/Build/Workers/combineGeometry.js +1 -1
- package/Build/Workers/createBoxGeometry.js +1 -1
- package/Build/Workers/createBoxOutlineGeometry.js +1 -1
- package/Build/Workers/createCircleGeometry.js +1 -1
- package/Build/Workers/createCircleOutlineGeometry.js +1 -1
- package/Build/Workers/createCoplanarPolygonGeometry.js +1 -1
- package/Build/Workers/createCoplanarPolygonOutlineGeometry.js +1 -1
- package/Build/Workers/createCorridorGeometry.js +1 -1
- package/Build/Workers/createCorridorOutlineGeometry.js +1 -1
- package/Build/Workers/createCylinderGeometry.js +1 -1
- package/Build/Workers/createCylinderOutlineGeometry.js +1 -1
- package/Build/Workers/createEllipseGeometry.js +1 -1
- package/Build/Workers/createEllipseOutlineGeometry.js +1 -1
- package/Build/Workers/createEllipsoidGeometry.js +1 -1
- package/Build/Workers/createEllipsoidOutlineGeometry.js +1 -1
- package/Build/Workers/createFrustumGeometry.js +1 -1
- package/Build/Workers/createFrustumOutlineGeometry.js +1 -1
- package/Build/Workers/createGeometry.js +1 -1
- package/Build/Workers/createGroundPolylineGeometry.js +1 -1
- package/Build/Workers/createPlaneGeometry.js +1 -1
- package/Build/Workers/createPlaneOutlineGeometry.js +1 -1
- package/Build/Workers/createPolygonGeometry.js +1 -1
- package/Build/Workers/createPolygonOutlineGeometry.js +1 -1
- package/Build/Workers/createPolylineGeometry.js +1 -1
- package/Build/Workers/createPolylineVolumeGeometry.js +1 -1
- package/Build/Workers/createPolylineVolumeOutlineGeometry.js +1 -1
- package/Build/Workers/createRectangleGeometry.js +1 -1
- package/Build/Workers/createRectangleOutlineGeometry.js +1 -1
- package/Build/Workers/createSimplePolylineGeometry.js +1 -1
- package/Build/Workers/createSphereGeometry.js +1 -1
- package/Build/Workers/createSphereOutlineGeometry.js +1 -1
- package/Build/Workers/createVectorTileGeometries.js +1 -1
- package/Build/Workers/createVectorTilePolygons.js +1 -1
- package/Build/Workers/createVerticesFromGoogleEarthEnterpriseBuffer.js +1 -1
- package/Build/Workers/createVerticesFromHeightmap.js +1 -1
- package/Build/Workers/createVerticesFromQuantizedTerrainMesh.js +10 -15
- package/Build/Workers/createWallGeometry.js +1 -1
- package/Build/Workers/createWallOutlineGeometry.js +1 -1
- package/Build/Workers/package.js +1 -1
- package/Build/Workers/transferTypedArrayTest.js +1 -1
- package/Build/Workers/upsampleQuantizedTerrainMesh.js +1 -1
- package/Source/Core/ArcGISTiledElevationTerrainProvider.js +291 -191
- package/Source/Core/CesiumTerrainProvider.js +571 -434
- package/Source/Core/CustomHeightmapTerrainProvider.js +12 -0
- package/Source/Core/EllipsoidTerrainProvider.js +17 -10
- package/Source/Core/FrustumGeometry.js +1 -1
- package/Source/Core/GoogleEarthEnterpriseMetadata.js +86 -34
- package/Source/Core/GoogleEarthEnterpriseTerrainProvider.js +119 -82
- package/Source/Core/Ion.js +1 -1
- package/Source/Core/IonResource.js +14 -3
- package/Source/Core/OrientedBoundingBox.js +4 -2
- package/Source/Core/RequestScheduler.js +1 -1
- package/Source/Core/Resource.js +2 -2
- package/Source/Core/TerrainProvider.js +9 -14
- package/Source/Core/TileProviderError.js +8 -8
- package/Source/Core/VRTheWorldTerrainProvider.js +193 -124
- package/Source/Core/buildModuleUrl.js +4 -3
- package/Source/Core/createWorldTerrain.js +20 -2
- package/Source/Core/createWorldTerrainAsync.js +48 -0
- package/Source/Core/sampleTerrain.js +9 -10
- package/Source/Core/sampleTerrainMostDetailed.js +66 -72
- package/Source/DataSources/Cesium3DTilesetVisualizer.js +37 -26
- package/Source/DataSources/Entity.js +6 -1
- package/Source/DataSources/ModelVisualizer.js +99 -31
- package/Source/DataSources/PolygonGraphics.js +1 -1
- package/Source/Scene/ArcGisMapServerImageryProvider.js +552 -376
- package/Source/Scene/BingMapsImageryProvider.js +511 -305
- package/Source/Scene/BufferLoader.js +29 -34
- package/Source/Scene/Cesium3DTile.js +388 -251
- package/Source/Scene/Cesium3DTileBatchTable.js +2 -2
- package/Source/Scene/Cesium3DTileContent.js +16 -0
- package/Source/Scene/Cesium3DTileContentFactory.js +4 -4
- package/Source/Scene/Cesium3DTilePass.js +8 -11
- package/Source/Scene/Cesium3DTileStyleEngine.js +1 -1
- package/Source/Scene/Cesium3DTilesVoxelProvider.js +225 -117
- package/Source/Scene/Cesium3DTileset.js +755 -481
- package/Source/Scene/Cesium3DTilesetBaseTraversal.js +301 -0
- package/Source/Scene/Cesium3DTilesetMostDetailedTraversal.js +33 -46
- package/Source/Scene/Cesium3DTilesetSkipTraversal.js +421 -0
- package/Source/Scene/Cesium3DTilesetTraversal.js +219 -671
- package/Source/Scene/ClassificationPrimitive.js +7 -0
- package/Source/Scene/Composite3DTileContent.js +69 -26
- package/Source/Scene/CreditDisplay.js +20 -4
- package/Source/Scene/DepthPlane.js +1 -1
- package/Source/Scene/Empty3DTileContent.js +31 -1
- package/Source/Scene/Geometry3DTileContent.js +47 -7
- package/Source/Scene/Globe.js +5 -1
- package/Source/Scene/GlobeSurfaceTile.js +2 -1
- package/Source/Scene/GlobeSurfaceTileProvider.js +50 -27
- package/Source/Scene/GltfBufferViewLoader.js +47 -91
- package/Source/Scene/GltfDracoLoader.js +110 -112
- package/Source/Scene/GltfImageLoader.js +71 -78
- package/Source/Scene/GltfIndexBufferLoader.js +108 -121
- package/Source/Scene/GltfJsonLoader.js +75 -74
- package/Source/Scene/GltfLoader.js +392 -280
- package/Source/Scene/GltfStructuralMetadataLoader.js +109 -110
- package/Source/Scene/GltfTextureLoader.js +97 -96
- package/Source/Scene/GltfVertexBufferLoader.js +128 -133
- package/Source/Scene/GoogleEarthEnterpriseImageryProvider.js +353 -225
- package/Source/Scene/GoogleEarthEnterpriseMapsProvider.js +491 -331
- package/Source/Scene/GridImageryProvider.js +267 -104
- package/Source/Scene/GroundPolylinePrimitive.js +12 -1
- package/Source/Scene/GroundPrimitive.js +8 -1
- package/Source/Scene/I3SDataProvider.js +214 -113
- package/Source/Scene/I3SFeature.js +7 -6
- package/Source/Scene/I3SLayer.js +26 -37
- package/Source/Scene/I3SNode.js +59 -66
- package/Source/Scene/Imagery.js +6 -1
- package/Source/Scene/ImageryLayer.js +299 -48
- package/Source/Scene/ImageryLayerCollection.js +26 -0
- package/Source/Scene/ImageryProvider.js +129 -111
- package/Source/Scene/Implicit3DTileContent.js +72 -23
- package/Source/Scene/ImplicitSubtree.js +66 -45
- package/Source/Scene/IonImageryProvider.js +471 -264
- package/Source/Scene/MapboxImageryProvider.js +272 -112
- package/Source/Scene/MapboxStyleImageryProvider.js +270 -111
- package/Source/Scene/MetadataSchemaLoader.js +26 -36
- package/Source/Scene/Model/B3dmLoader.js +42 -46
- package/Source/Scene/Model/GeoJsonLoader.js +8 -32
- package/Source/Scene/Model/I3dmLoader.js +48 -74
- package/Source/Scene/Model/Model.js +470 -132
- package/Source/Scene/Model/Model3DTileContent.js +83 -31
- package/Source/Scene/Model/ModelAnimationCollection.js +3 -3
- package/Source/Scene/Model/ModelDrawCommand.js +15 -26
- package/Source/Scene/Model/ModelUtility.js +16 -16
- package/Source/Scene/Model/PntsLoader.js +27 -32
- package/Source/Scene/Multiple3DTileContent.js +134 -115
- package/Source/Scene/PointCloud.js +11 -19
- package/Source/Scene/Primitive.js +20 -0
- package/Source/Scene/QuadtreePrimitive.js +2 -0
- package/Source/Scene/QuadtreeTileProvider.js +4 -8
- package/Source/Scene/ResourceCache.js +47 -105
- package/Source/Scene/ResourceCacheStatistics.js +24 -58
- package/Source/Scene/ResourceLoader.js +5 -17
- package/Source/Scene/ResourceLoaderState.js +12 -4
- package/Source/Scene/Scene.js +65 -0
- package/Source/Scene/ScreenSpaceCameraController.js +1 -1
- package/Source/Scene/SingleTileImageryProvider.js +382 -209
- package/Source/Scene/Terrain.js +196 -0
- package/Source/Scene/TileCoordinatesImageryProvider.js +267 -104
- package/Source/Scene/TileMapServiceImageryProvider.js +177 -85
- package/Source/Scene/Tileset3DTileContent.js +47 -5
- package/Source/Scene/TimeDynamicPointCloud.js +15 -2
- package/Source/Scene/UrlTemplateImageryProvider.js +343 -215
- package/Source/Scene/Vector3DTileClampedPolylines.js +96 -84
- package/Source/Scene/Vector3DTileContent.js +47 -22
- package/Source/Scene/Vector3DTileGeometry.js +57 -52
- package/Source/Scene/Vector3DTilePoints.js +72 -68
- package/Source/Scene/Vector3DTilePolygons.js +118 -117
- package/Source/Scene/Vector3DTilePolylines.js +86 -82
- package/Source/Scene/Vector3DTilePrimitive.js +0 -1
- package/Source/Scene/VoxelContent.js +61 -63
- package/Source/Scene/VoxelPrimitive.js +39 -91
- package/Source/Scene/VoxelProvider.js +2 -2
- package/Source/Scene/WebMapServiceImageryProvider.js +272 -111
- package/Source/Scene/WebMapTileServiceImageryProvider.js +270 -107
- package/Source/Scene/computeFlyToLocationForRectangle.js +33 -37
- package/Source/Scene/createOsmBuildings.js +6 -0
- package/Source/Scene/createOsmBuildingsAsync.js +82 -0
- package/Source/Scene/createWorldImagery.js +14 -5
- package/Source/Scene/createWorldImageryAsync.js +39 -0
- package/Source/Widget/CesiumWidget.js +55 -27
- package/index.d.ts +2158 -1395
- package/index.js +58 -51
- 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
|
-
|
|
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
|
-
|
|
217
|
-
|
|
218
|
-
promise = loadFromBufferView(this);
|
|
203
|
+
this._promise = loadFromDraco(this);
|
|
204
|
+
return this._promise;
|
|
219
205
|
}
|
|
220
206
|
|
|
221
|
-
|
|
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.
|
|
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
|
|
384
|
-
|
|
385
|
-
const
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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 (
|
|
455
|
+
if (
|
|
456
|
+
defined(this._bufferViewLoader) &&
|
|
457
|
+
!this._bufferViewLoader.isDestroyed()
|
|
458
|
+
) {
|
|
464
459
|
resourceCache.unload(this._bufferViewLoader);
|
|
465
460
|
}
|
|
466
461
|
|