@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.
- package/Build/Workers/{AttributeCompression-8a5a065e.js → AttributeCompression-f9f6c717.js} +1 -1
- package/Build/Workers/{AxisAlignedBoundingBox-a6f9f0e5.js → AxisAlignedBoundingBox-31fadcf0.js} +1 -1
- package/Build/Workers/{BoundingRectangle-b0a68595.js → BoundingRectangle-995f0079.js} +1 -1
- package/Build/Workers/{BoxGeometry-baedd794.js → BoxGeometry-7eb1af60.js} +1 -1
- package/Build/Workers/{Color-f85df1be.js → Color-2dc49658.js} +1 -1
- package/Build/Workers/{CoplanarPolygonGeometryLibrary-30516950.js → CoplanarPolygonGeometryLibrary-d7d972d6.js} +1 -1
- package/Build/Workers/{CorridorGeometryLibrary-5d5d3b3a.js → CorridorGeometryLibrary-1f5ef7b3.js} +1 -1
- package/Build/Workers/{CylinderGeometry-d899ae26.js → CylinderGeometry-23c67a6c.js} +1 -1
- package/Build/Workers/{CylinderGeometryLibrary-135b0858.js → CylinderGeometryLibrary-7bf291b4.js} +1 -1
- package/Build/Workers/{EllipseGeometry-a49f8449.js → EllipseGeometry-37014da4.js} +1 -1
- package/Build/Workers/{EllipseGeometryLibrary-cba7edde.js → EllipseGeometryLibrary-92ab6b1e.js} +1 -1
- package/Build/Workers/{EllipseOutlineGeometry-8095c8cb.js → EllipseOutlineGeometry-12b6fef5.js} +1 -1
- package/Build/Workers/{EllipsoidGeodesic-dcff5cbd.js → EllipsoidGeodesic-5b3623dc.js} +1 -1
- package/Build/Workers/{EllipsoidGeometry-ed93f571.js → EllipsoidGeometry-508da15c.js} +1 -1
- package/Build/Workers/{EllipsoidOutlineGeometry-e4854854.js → EllipsoidOutlineGeometry-40d97455.js} +1 -1
- package/Build/Workers/{EllipsoidRhumbLine-b672d507.js → EllipsoidRhumbLine-ef872433.js} +1 -1
- package/Build/Workers/{EllipsoidTangentPlane-7ae1aa9a.js → EllipsoidTangentPlane-46d4d9c2.js} +1 -1
- package/Build/Workers/{EncodedCartesian3-e8bbca36.js → EncodedCartesian3-57415c8a.js} +1 -1
- package/Build/Workers/{FrustumGeometry-b62db3e3.js → FrustumGeometry-38605e69.js} +32 -4
- package/Build/Workers/{GeometryAttribute-780af4fa.js → GeometryAttribute-a466e9c7.js} +1 -1
- package/Build/Workers/{GeometryInstance-3fb607b7.js → GeometryInstance-34d9e21e.js} +1 -1
- package/Build/Workers/{GeometryPipeline-36b61c99.js → GeometryPipeline-dcf79306.js} +1 -1
- package/Build/Workers/{IndexDatatype-b8f3e09d.js → IndexDatatype-2643aa47.js} +1 -1
- package/Build/Workers/{IntersectionTests-e889fcf0.js → IntersectionTests-88c49b2e.js} +1 -1
- package/Build/Workers/{Math-dad82b4d.js → Math-0a2ac845.js} +12 -2
- package/Build/Workers/{Matrix2-1e403d0e.js → Matrix2-e1298525.js} +1 -1
- package/Build/Workers/{Matrix3-fa806b97.js → Matrix3-41c58dde.js} +1 -1
- package/Build/Workers/{OrientedBoundingBox-43478ac8.js → OrientedBoundingBox-2dd47921.js} +5 -3
- package/Build/Workers/{Plane-c27e1ac6.js → Plane-4c3d403b.js} +1 -1
- package/Build/Workers/{PolygonGeometryLibrary-38a98276.js → PolygonGeometryLibrary-59126025.js} +1 -1
- package/Build/Workers/PolygonPipeline-1fe328c0.js +1344 -0
- package/Build/Workers/{PolylinePipeline-30e4cec9.js → PolylinePipeline-896735cc.js} +1 -1
- package/Build/Workers/{PolylineVolumeGeometryLibrary-90551d26.js → PolylineVolumeGeometryLibrary-9c0639f7.js} +1 -1
- package/Build/Workers/{PrimitivePipeline-558d9cb0.js → PrimitivePipeline-fc1a47ff.js} +1 -1
- package/Build/Workers/{RectangleGeometryLibrary-815c68df.js → RectangleGeometryLibrary-a23c9ebe.js} +1 -1
- package/Build/Workers/{TerrainEncoding-341ead52.js → TerrainEncoding-51b8b33b.js} +1 -1
- package/Build/Workers/Transforms-bc45e707.js +14699 -0
- package/Build/Workers/{WallGeometryLibrary-ccf90976.js → WallGeometryLibrary-007e9883.js} +1 -1
- package/Build/Workers/{WebMercatorProjection-76a3fcc0.js → WebMercatorProjection-13ed1a6e.js} +1 -1
- package/Build/Workers/{arrayRemoveDuplicates-fac118a8.js → arrayRemoveDuplicates-d2061e85.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/createVectorTileClampedPolylines.js +1 -1
- package/Build/Workers/createVectorTileGeometries.js +1 -1
- package/Build/Workers/createVectorTilePoints.js +1 -1
- package/Build/Workers/createVectorTilePolygons.js +1 -1
- package/Build/Workers/createVectorTilePolylines.js +1 -1
- package/Build/Workers/createVerticesFromGoogleEarthEnterpriseBuffer.js +1 -1
- package/Build/Workers/createVerticesFromHeightmap.js +5 -8
- package/Build/Workers/createVerticesFromQuantizedTerrainMesh.js +10 -15
- package/Build/Workers/createWallGeometry.js +1 -1
- package/Build/Workers/createWallOutlineGeometry.js +1 -1
- package/Build/Workers/decodeDraco.js +1 -1
- package/Build/Workers/decodeI3S.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/BingMapsGeocoderService.js +19 -1
- package/Source/Core/CartographicGeocoderService.js +15 -0
- package/Source/Core/CesiumTerrainProvider.js +571 -434
- package/Source/Core/Credit.js +1 -1
- package/Source/Core/CustomHeightmapTerrainProvider.js +12 -0
- package/Source/Core/EllipsoidTerrainProvider.js +17 -10
- package/Source/Core/FrustumGeometry.js +4 -3
- package/Source/Core/GeocoderService.js +32 -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/IonGeocoderService.js +17 -2
- package/Source/Core/IonResource.js +14 -3
- package/Source/Core/OpenCageGeocoderService.js +18 -1
- package/Source/Core/OrientedBoundingBox.js +4 -2
- package/Source/Core/OrthographicFrustum.js +13 -0
- package/Source/Core/PeliasGeocoderService.js +14 -1
- package/Source/Core/PerspectiveFrustum.js +14 -0
- package/Source/Core/Request.js +3 -2
- package/Source/Core/RequestScheduler.js +10 -5
- package/Source/Core/Resource.js +230 -236
- 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/DataSourceDisplay.js +2 -2
- package/Source/DataSources/Entity.js +6 -1
- package/Source/DataSources/EntityCluster.js +126 -128
- package/Source/DataSources/ModelVisualizer.js +104 -34
- package/Source/DataSources/PolygonGraphics.js +1 -1
- package/Source/Renderer/UniformState.js +3 -2
- package/Source/Renderer/demodernizeShader.js +5 -5
- package/Source/Scene/ArcGisBaseMapType.js +12 -0
- package/Source/Scene/ArcGisMapServerImageryProvider.js +694 -376
- package/Source/Scene/ArcGisMapService.js +83 -0
- package/Source/Scene/BingMapsImageryProvider.js +511 -305
- package/Source/Scene/BufferLoader.js +29 -34
- package/Source/Scene/Camera.js +8 -7
- package/Source/Scene/Cesium3DTile.js +392 -254
- 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 +756 -482
- 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 +132 -20
- 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 +53 -30
- 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 +87 -74
- package/Source/Scene/GltfLoader.js +381 -300
- 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 +482 -275
- 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/MaterialPipelineStage.js +12 -12
- package/Source/Scene/Model/Model.js +514 -135
- 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/Model/UniformType.js +1 -1
- package/Source/Scene/Multiple3DTileContent.js +134 -115
- package/Source/Scene/Picking.js +3 -2
- package/Source/Scene/PointCloud.js +11 -19
- package/Source/Scene/Primitive.js +20 -0
- package/Source/Scene/QuadtreePrimitive.js +5 -2
- 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/SceneTransforms.js +3 -2
- package/Source/Scene/ScreenSpaceCameraController.js +2 -2
- 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 +97 -81
- 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/Shaders/AtmosphereCommon.glsl +51 -8
- package/Source/Shaders/AtmosphereCommon.js +51 -8
- package/Source/Shaders/PostProcessStages/AmbientOcclusionGenerate.glsl +1 -1
- package/Source/Shaders/PostProcessStages/AmbientOcclusionGenerate.js +1 -1
- package/Source/Shaders/PostProcessStages/AmbientOcclusionModulate.glsl +3 -3
- package/Source/Shaders/PostProcessStages/AmbientOcclusionModulate.js +3 -3
- package/Source/Widget/CesiumWidget.js +67 -27
- package/index.d.ts +2429 -1475
- package/index.js +324 -315
- package/package.json +4 -4
- package/Build/Workers/PolygonPipeline-d31ff61c.js +0 -1345
- package/Build/Workers/Transforms-9e9df299.js +0 -14714
|
@@ -127,19 +127,19 @@ function GlobeSurfaceTileProvider(options) {
|
|
|
127
127
|
|
|
128
128
|
this._errorEvent = new Event();
|
|
129
129
|
|
|
130
|
-
this._imageryLayers.layerAdded.addEventListener(
|
|
130
|
+
this._removeLayerAddedListener = this._imageryLayers.layerAdded.addEventListener(
|
|
131
131
|
GlobeSurfaceTileProvider.prototype._onLayerAdded,
|
|
132
132
|
this
|
|
133
133
|
);
|
|
134
|
-
this._imageryLayers.layerRemoved.addEventListener(
|
|
134
|
+
this._removeLayerRemovedListener = this._imageryLayers.layerRemoved.addEventListener(
|
|
135
135
|
GlobeSurfaceTileProvider.prototype._onLayerRemoved,
|
|
136
136
|
this
|
|
137
137
|
);
|
|
138
|
-
this._imageryLayers.layerMoved.addEventListener(
|
|
138
|
+
this._removeLayerMovedListener = this._imageryLayers.layerMoved.addEventListener(
|
|
139
139
|
GlobeSurfaceTileProvider.prototype._onLayerMoved,
|
|
140
140
|
this
|
|
141
141
|
);
|
|
142
|
-
this._imageryLayers.layerShownOrHidden.addEventListener(
|
|
142
|
+
this._removeLayerShownListener = this._imageryLayers.layerShownOrHidden.addEventListener(
|
|
143
143
|
GlobeSurfaceTileProvider.prototype._onLayerShownOrHidden,
|
|
144
144
|
this
|
|
145
145
|
);
|
|
@@ -233,20 +233,24 @@ Object.defineProperties(GlobeSurfaceTileProvider.prototype, {
|
|
|
233
233
|
* Gets a value indicating whether or not the provider is ready for use.
|
|
234
234
|
* @memberof GlobeSurfaceTileProvider.prototype
|
|
235
235
|
* @type {boolean}
|
|
236
|
+
* @deprecated
|
|
236
237
|
*/
|
|
237
238
|
ready: {
|
|
238
239
|
get: function () {
|
|
239
240
|
return (
|
|
240
|
-
this._terrainProvider
|
|
241
|
+
defined(this._terrainProvider) &&
|
|
242
|
+
// TerrainProvider.ready is deprecated; This is here for backwards compatibility
|
|
243
|
+
this._terrainProvider._ready &&
|
|
241
244
|
(this._imageryLayers.length === 0 ||
|
|
242
|
-
|
|
245
|
+
// ImageryProvider.ready is deprecated; This is here for backwards compatibility
|
|
246
|
+
(this._imageryLayers.get(0).ready &&
|
|
247
|
+
this._imageryLayers.get(0).imageryProvider._ready))
|
|
243
248
|
);
|
|
244
249
|
},
|
|
245
250
|
},
|
|
246
251
|
|
|
247
252
|
/**
|
|
248
|
-
* Gets the tiling scheme used by the provider.
|
|
249
|
-
* not be accessed before {@link GlobeSurfaceTileProvider#ready} returns true.
|
|
253
|
+
* Gets the tiling scheme used by the provider.
|
|
250
254
|
* @memberof GlobeSurfaceTileProvider.prototype
|
|
251
255
|
* @type {TilingScheme}
|
|
252
256
|
*/
|
|
@@ -294,12 +298,6 @@ Object.defineProperties(GlobeSurfaceTileProvider.prototype, {
|
|
|
294
298
|
return;
|
|
295
299
|
}
|
|
296
300
|
|
|
297
|
-
//>>includeStart('debug', pragmas.debug);
|
|
298
|
-
if (!defined(terrainProvider)) {
|
|
299
|
-
throw new DeveloperError("terrainProvider is required.");
|
|
300
|
-
}
|
|
301
|
-
//>>includeEnd('debug');
|
|
302
|
-
|
|
303
301
|
this._terrainProvider = terrainProvider;
|
|
304
302
|
|
|
305
303
|
if (defined(this._quadtree)) {
|
|
@@ -349,17 +347,24 @@ GlobeSurfaceTileProvider.prototype.update = function (frameState) {
|
|
|
349
347
|
function updateCredits(surface, frameState) {
|
|
350
348
|
const creditDisplay = frameState.creditDisplay;
|
|
351
349
|
if (
|
|
352
|
-
surface._terrainProvider
|
|
350
|
+
defined(surface._terrainProvider) &&
|
|
351
|
+
// ready is deprecated; This is here for backwards compatibility
|
|
352
|
+
surface._terrainProvider._ready &&
|
|
353
353
|
defined(surface._terrainProvider.credit)
|
|
354
354
|
) {
|
|
355
|
-
creditDisplay.
|
|
355
|
+
creditDisplay.addCreditToNextFrame(surface._terrainProvider.credit);
|
|
356
356
|
}
|
|
357
357
|
|
|
358
358
|
const imageryLayers = surface._imageryLayers;
|
|
359
359
|
for (let i = 0, len = imageryLayers.length; i < len; ++i) {
|
|
360
|
-
const
|
|
361
|
-
|
|
362
|
-
|
|
360
|
+
const layer = imageryLayers.get(i);
|
|
361
|
+
// ImageryProvider.ready is deprecated; This is here for backwards compatibility
|
|
362
|
+
if (
|
|
363
|
+
layer.ready &&
|
|
364
|
+
layer.imageryProvider._ready &&
|
|
365
|
+
defined(layer.imageryProvider.credit)
|
|
366
|
+
) {
|
|
367
|
+
creditDisplay.addCreditToNextFrame(layer.imageryProvider.credit);
|
|
363
368
|
}
|
|
364
369
|
}
|
|
365
370
|
}
|
|
@@ -562,8 +567,7 @@ GlobeSurfaceTileProvider.prototype.cancelReprojections = function () {
|
|
|
562
567
|
};
|
|
563
568
|
|
|
564
569
|
/**
|
|
565
|
-
* Gets the maximum geometric error allowed in a tile at a given level, in meters.
|
|
566
|
-
* called before {@link GlobeSurfaceTileProvider#ready} returns true.
|
|
570
|
+
* Gets the maximum geometric error allowed in a tile at a given level, in meters.
|
|
567
571
|
*
|
|
568
572
|
* @param {number} level The tile level for which to get the maximum geometric error.
|
|
569
573
|
* @returns {number} The maximum geometric error in meters.
|
|
@@ -571,18 +575,19 @@ GlobeSurfaceTileProvider.prototype.cancelReprojections = function () {
|
|
|
571
575
|
GlobeSurfaceTileProvider.prototype.getLevelMaximumGeometricError = function (
|
|
572
576
|
level
|
|
573
577
|
) {
|
|
578
|
+
if (!defined(this._terrainProvider)) {
|
|
579
|
+
return 0;
|
|
580
|
+
}
|
|
581
|
+
|
|
574
582
|
return this._terrainProvider.getLevelMaximumGeometricError(level);
|
|
575
583
|
};
|
|
576
584
|
|
|
577
585
|
/**
|
|
578
586
|
* Loads, or continues loading, a given tile. This function will continue to be called
|
|
579
|
-
* until {@link QuadtreeTile#state} is no longer {@link QuadtreeTileLoadState#LOADING}.
|
|
580
|
-
* not be called before {@link GlobeSurfaceTileProvider#ready} returns true.
|
|
587
|
+
* until {@link QuadtreeTile#state} is no longer {@link QuadtreeTileLoadState#LOADING}.
|
|
581
588
|
*
|
|
582
589
|
* @param {FrameState} frameState The frame state.
|
|
583
590
|
* @param {QuadtreeTile} tile The tile to load.
|
|
584
|
-
*
|
|
585
|
-
* @exception {DeveloperError} <code>loadTile</code> must not be called before the tile provider is ready.
|
|
586
591
|
*/
|
|
587
592
|
GlobeSurfaceTileProvider.prototype.loadTile = function (frameState, tile) {
|
|
588
593
|
// We don't want to load imagery until we're certain that the terrain tiles are actually visible.
|
|
@@ -1384,6 +1389,14 @@ GlobeSurfaceTileProvider.prototype.isDestroyed = function () {
|
|
|
1384
1389
|
GlobeSurfaceTileProvider.prototype.destroy = function () {
|
|
1385
1390
|
this._tileProvider = this._tileProvider && this._tileProvider.destroy();
|
|
1386
1391
|
this._clippingPlanes = this._clippingPlanes && this._clippingPlanes.destroy();
|
|
1392
|
+
this._removeLayerAddedListener =
|
|
1393
|
+
this._removeLayerAddedListener && this._removeLayerAddedListener();
|
|
1394
|
+
this._removeLayerRemovedListener =
|
|
1395
|
+
this._removeLayerRemovedListener && this._removeLayerRemovedListener();
|
|
1396
|
+
this._removeLayerMovedListener =
|
|
1397
|
+
this._removeLayerMovedListener && this._removeLayerMovedListener();
|
|
1398
|
+
this._removeLayerShownListener =
|
|
1399
|
+
this._removeLayerShownListener && this._removeLayerShownListener();
|
|
1387
1400
|
|
|
1388
1401
|
return destroyObject(this);
|
|
1389
1402
|
};
|
|
@@ -1436,13 +1449,16 @@ function getTileReadyCallback(tileImageriesToFree, layer, terrainProvider) {
|
|
|
1436
1449
|
}
|
|
1437
1450
|
|
|
1438
1451
|
GlobeSurfaceTileProvider.prototype._onLayerAdded = function (layer, index) {
|
|
1452
|
+
if (this.isDestroyed()) {
|
|
1453
|
+
return;
|
|
1454
|
+
}
|
|
1455
|
+
|
|
1439
1456
|
if (layer.show) {
|
|
1440
1457
|
const terrainProvider = this._terrainProvider;
|
|
1441
1458
|
|
|
1442
1459
|
const that = this;
|
|
1443
|
-
const imageryProvider = layer.imageryProvider;
|
|
1444
1460
|
const tileImageryUpdatedEvent = this._imageryLayersUpdatedEvent;
|
|
1445
|
-
|
|
1461
|
+
const reloadFunction = function () {
|
|
1446
1462
|
// Clear the layer's cache
|
|
1447
1463
|
layer._imageryCache = {};
|
|
1448
1464
|
|
|
@@ -1504,6 +1520,11 @@ GlobeSurfaceTileProvider.prototype._onLayerAdded = function (layer, index) {
|
|
|
1504
1520
|
});
|
|
1505
1521
|
};
|
|
1506
1522
|
|
|
1523
|
+
if (layer.ready) {
|
|
1524
|
+
const imageryProvider = layer.imageryProvider;
|
|
1525
|
+
imageryProvider._reload = reloadFunction;
|
|
1526
|
+
}
|
|
1527
|
+
|
|
1507
1528
|
// create TileImageries for this layer for all previously loaded tiles
|
|
1508
1529
|
this._quadtree.forEachLoadedTile(function (tile) {
|
|
1509
1530
|
if (layer._createTileImagerySkeletons(tile, terrainProvider)) {
|
|
@@ -2077,7 +2098,7 @@ function addDrawCommandsForTile(tileProvider, tile, frameState) {
|
|
|
2077
2098
|
tileCreditIndex < tileCreditLength;
|
|
2078
2099
|
++tileCreditIndex
|
|
2079
2100
|
) {
|
|
2080
|
-
creditDisplay.
|
|
2101
|
+
creditDisplay.addCreditToNextFrame(tileCredits[tileCreditIndex]);
|
|
2081
2102
|
}
|
|
2082
2103
|
}
|
|
2083
2104
|
|
|
@@ -2124,7 +2145,9 @@ function addDrawCommandsForTile(tileProvider, tile, frameState) {
|
|
|
2124
2145
|
const oceanNormalMap = tileProvider.oceanNormalMap;
|
|
2125
2146
|
const showOceanWaves = showReflectiveOcean && defined(oceanNormalMap);
|
|
2126
2147
|
const hasVertexNormals =
|
|
2127
|
-
tileProvider.terrainProvider
|
|
2148
|
+
defined(tileProvider.terrainProvider) &&
|
|
2149
|
+
// ready is deprecated; This is here for backwards compatibility
|
|
2150
|
+
tileProvider.terrainProvider._ready &&
|
|
2128
2151
|
tileProvider.terrainProvider.hasVertexNormals;
|
|
2129
2152
|
const enableFog =
|
|
2130
2153
|
frameState.fog.enabled && frameState.fog.renderable && !cameraUnderground;
|
|
@@ -2696,7 +2719,7 @@ function addDrawCommandsForTile(tileProvider, tile, frameState) {
|
|
|
2696
2719
|
creditIndex < creditLength;
|
|
2697
2720
|
++creditIndex
|
|
2698
2721
|
) {
|
|
2699
|
-
creditDisplay.
|
|
2722
|
+
creditDisplay.addCreditToNextFrame(credits[creditIndex]);
|
|
2700
2723
|
}
|
|
2701
2724
|
}
|
|
2702
2725
|
|
|
@@ -87,7 +87,6 @@ function GltfBufferViewLoader(options) {
|
|
|
87
87
|
this._typedArray = undefined;
|
|
88
88
|
this._state = ResourceLoaderState.UNLOADED;
|
|
89
89
|
this._promise = undefined;
|
|
90
|
-
this._process = function (loader, frameState) {};
|
|
91
90
|
}
|
|
92
91
|
|
|
93
92
|
if (defined(Object.create)) {
|
|
@@ -96,20 +95,6 @@ if (defined(Object.create)) {
|
|
|
96
95
|
}
|
|
97
96
|
|
|
98
97
|
Object.defineProperties(GltfBufferViewLoader.prototype, {
|
|
99
|
-
/**
|
|
100
|
-
* A promise that resolves to the resource when the resource is ready, or undefined if the resource hasn't started loading.
|
|
101
|
-
*
|
|
102
|
-
* @memberof GltfBufferViewLoader.prototype
|
|
103
|
-
*
|
|
104
|
-
* @type {Promise<GltfBufferViewLoader>|undefined}
|
|
105
|
-
* @readonly
|
|
106
|
-
* @private
|
|
107
|
-
*/
|
|
108
|
-
promise: {
|
|
109
|
-
get: function () {
|
|
110
|
-
return this._promise;
|
|
111
|
-
},
|
|
112
|
-
},
|
|
113
98
|
/**
|
|
114
99
|
* The cache key of the resource.
|
|
115
100
|
*
|
|
@@ -140,31 +125,28 @@ Object.defineProperties(GltfBufferViewLoader.prototype, {
|
|
|
140
125
|
},
|
|
141
126
|
});
|
|
142
127
|
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
GltfBufferViewLoader.prototype.load = function () {
|
|
149
|
-
const bufferLoader = getBufferLoader(this);
|
|
150
|
-
this._bufferLoader = bufferLoader;
|
|
151
|
-
this._state = ResourceLoaderState.LOADING;
|
|
128
|
+
async function loadResources(loader) {
|
|
129
|
+
try {
|
|
130
|
+
const bufferLoader = getBufferLoader(loader);
|
|
131
|
+
loader._bufferLoader = bufferLoader;
|
|
132
|
+
await bufferLoader.load();
|
|
152
133
|
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
if (!loader._hasMeshopt) {
|
|
157
|
-
return;
|
|
158
|
-
}
|
|
134
|
+
if (loader.isDestroyed()) {
|
|
135
|
+
return;
|
|
136
|
+
}
|
|
159
137
|
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
138
|
+
const bufferTypedArray = bufferLoader.typedArray;
|
|
139
|
+
const bufferViewTypedArray = new Uint8Array(
|
|
140
|
+
bufferTypedArray.buffer,
|
|
141
|
+
bufferTypedArray.byteOffset + loader._byteOffset,
|
|
142
|
+
loader._byteLength
|
|
143
|
+
);
|
|
163
144
|
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
}
|
|
145
|
+
// Unload the buffer
|
|
146
|
+
loader.unload();
|
|
167
147
|
|
|
148
|
+
loader._typedArray = bufferViewTypedArray;
|
|
149
|
+
if (loader._hasMeshopt) {
|
|
168
150
|
const count = loader._meshoptCount;
|
|
169
151
|
const byteStride = loader._meshoptByteStride;
|
|
170
152
|
const result = new Uint8Array(count * byteStride);
|
|
@@ -176,47 +158,35 @@ GltfBufferViewLoader.prototype.load = function () {
|
|
|
176
158
|
loader._meshoptMode,
|
|
177
159
|
loader._meshoptFilter
|
|
178
160
|
);
|
|
179
|
-
|
|
180
161
|
loader._typedArray = result;
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
);
|
|
197
|
-
|
|
198
|
-
// Unload the buffer
|
|
199
|
-
that.unload();
|
|
200
|
-
|
|
201
|
-
that._typedArray = bufferViewTypedArray;
|
|
202
|
-
if (that._hasMeshopt) {
|
|
203
|
-
that._state = ResourceLoaderState.PROCESSING;
|
|
204
|
-
return bufferViewPromise;
|
|
205
|
-
}
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
loader._state = ResourceLoaderState.READY;
|
|
165
|
+
return loader;
|
|
166
|
+
} catch (error) {
|
|
167
|
+
if (loader.isDestroyed()) {
|
|
168
|
+
return;
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
loader.unload();
|
|
172
|
+
loader._state = ResourceLoaderState.FAILED;
|
|
173
|
+
const errorMessage = "Failed to load buffer view";
|
|
174
|
+
throw loader.getError(errorMessage, error);
|
|
175
|
+
}
|
|
176
|
+
}
|
|
206
177
|
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
const errorMessage = "Failed to load buffer view";
|
|
217
|
-
return Promise.reject(that.getError(errorMessage, error));
|
|
218
|
-
});
|
|
178
|
+
/**
|
|
179
|
+
* Loads the resource.
|
|
180
|
+
* @returns {Promise<GltfBufferViewLoader>} A promise which resolves to the loader when the resource loading is completed.
|
|
181
|
+
* @private
|
|
182
|
+
*/
|
|
183
|
+
GltfBufferViewLoader.prototype.load = async function () {
|
|
184
|
+
if (defined(this._promise)) {
|
|
185
|
+
return this._promise;
|
|
186
|
+
}
|
|
219
187
|
|
|
188
|
+
this._state = ResourceLoaderState.LOADING;
|
|
189
|
+
this._promise = loadResources(this);
|
|
220
190
|
return this._promise;
|
|
221
191
|
};
|
|
222
192
|
|
|
@@ -228,36 +198,22 @@ function getBufferLoader(bufferViewLoader) {
|
|
|
228
198
|
const resource = baseResource.getDerivedResource({
|
|
229
199
|
url: buffer.uri,
|
|
230
200
|
});
|
|
231
|
-
return resourceCache.
|
|
201
|
+
return resourceCache.getExternalBufferLoader({
|
|
232
202
|
resource: resource,
|
|
233
203
|
});
|
|
234
204
|
}
|
|
235
|
-
return resourceCache.
|
|
205
|
+
return resourceCache.getEmbeddedBufferLoader({
|
|
236
206
|
parentResource: bufferViewLoader._gltfResource,
|
|
237
207
|
bufferId: bufferViewLoader._bufferId,
|
|
238
208
|
});
|
|
239
209
|
}
|
|
240
210
|
|
|
241
|
-
/**
|
|
242
|
-
* Processes the resources. For a BufferView that does not have the EXT_meshopt_compression extension, there
|
|
243
|
-
* is no processing that needs to happen, so this function returns immediately.
|
|
244
|
-
*
|
|
245
|
-
* @param {FrameState} frameState The frame state.
|
|
246
|
-
*/
|
|
247
|
-
GltfBufferViewLoader.prototype.process = function (frameState) {
|
|
248
|
-
//>>includeStart('debug', pragmas.debug);
|
|
249
|
-
Check.typeOf.object("frameState", frameState);
|
|
250
|
-
//>>includeEnd('debug');
|
|
251
|
-
|
|
252
|
-
return this._process(this, frameState);
|
|
253
|
-
};
|
|
254
|
-
|
|
255
211
|
/**
|
|
256
212
|
* Unloads the resource.
|
|
257
213
|
* @private
|
|
258
214
|
*/
|
|
259
215
|
GltfBufferViewLoader.prototype.unload = function () {
|
|
260
|
-
if (defined(this._bufferLoader)) {
|
|
216
|
+
if (defined(this._bufferLoader) && !this._bufferLoader.isDestroyed()) {
|
|
261
217
|
this._resourceCache.unload(this._bufferLoader);
|
|
262
218
|
}
|
|
263
219
|
|
|
@@ -54,7 +54,7 @@ function GltfDracoLoader(options) {
|
|
|
54
54
|
this._decodedData = undefined;
|
|
55
55
|
this._state = ResourceLoaderState.UNLOADED;
|
|
56
56
|
this._promise = undefined;
|
|
57
|
-
this.
|
|
57
|
+
this._dracoError = undefined;
|
|
58
58
|
}
|
|
59
59
|
|
|
60
60
|
if (defined(Object.create)) {
|
|
@@ -63,20 +63,6 @@ if (defined(Object.create)) {
|
|
|
63
63
|
}
|
|
64
64
|
|
|
65
65
|
Object.defineProperties(GltfDracoLoader.prototype, {
|
|
66
|
-
/**
|
|
67
|
-
* A promise that resolves to the resource when the resource is ready.
|
|
68
|
-
*
|
|
69
|
-
* @memberof GltfDracoLoader.prototype
|
|
70
|
-
*
|
|
71
|
-
* @type {Promise<GltfDracoLoader>}
|
|
72
|
-
* @readonly
|
|
73
|
-
* @private
|
|
74
|
-
*/
|
|
75
|
-
promise: {
|
|
76
|
-
get: function () {
|
|
77
|
-
return this._promise;
|
|
78
|
-
},
|
|
79
|
-
},
|
|
80
66
|
/**
|
|
81
67
|
* The cache key of the resource.
|
|
82
68
|
*
|
|
@@ -107,107 +93,46 @@ Object.defineProperties(GltfDracoLoader.prototype, {
|
|
|
107
93
|
},
|
|
108
94
|
});
|
|
109
95
|
|
|
96
|
+
async function loadResources(loader) {
|
|
97
|
+
const resourceCache = loader._resourceCache;
|
|
98
|
+
try {
|
|
99
|
+
const bufferViewLoader = resourceCache.getBufferViewLoader({
|
|
100
|
+
gltf: loader._gltf,
|
|
101
|
+
bufferViewId: loader._draco.bufferView,
|
|
102
|
+
gltfResource: loader._gltfResource,
|
|
103
|
+
baseResource: loader._baseResource,
|
|
104
|
+
});
|
|
105
|
+
loader._bufferViewLoader = bufferViewLoader;
|
|
106
|
+
await bufferViewLoader.load();
|
|
107
|
+
|
|
108
|
+
if (loader.isDestroyed()) {
|
|
109
|
+
return;
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
loader._bufferViewTypedArray = bufferViewLoader.typedArray;
|
|
113
|
+
loader._state = ResourceLoaderState.PROCESSING;
|
|
114
|
+
return loader;
|
|
115
|
+
} catch (error) {
|
|
116
|
+
if (loader.isDestroyed()) {
|
|
117
|
+
return;
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
handleError(loader, error);
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
|
|
110
124
|
/**
|
|
111
125
|
* Loads the resource.
|
|
112
126
|
* @returns {Promise<GltfDracoLoader>} A promise which resolves to the loader when the resource loading is completed.
|
|
113
127
|
* @private
|
|
114
128
|
*/
|
|
115
|
-
GltfDracoLoader.prototype.load = function () {
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
bufferViewId: this._draco.bufferView,
|
|
120
|
-
gltfResource: this._gltfResource,
|
|
121
|
-
baseResource: this._baseResource,
|
|
122
|
-
});
|
|
123
|
-
|
|
124
|
-
this._bufferViewLoader = bufferViewLoader;
|
|
125
|
-
this._state = ResourceLoaderState.LOADING;
|
|
126
|
-
const that = this;
|
|
127
|
-
const dracoPromise = new Promise(function (resolve, reject) {
|
|
128
|
-
that._process = function (loader, frameState) {
|
|
129
|
-
if (!defined(loader._bufferViewTypedArray)) {
|
|
130
|
-
// Not ready to decode the Draco buffer
|
|
131
|
-
return;
|
|
132
|
-
}
|
|
133
|
-
|
|
134
|
-
if (defined(loader._decodePromise)) {
|
|
135
|
-
// Currently decoding
|
|
136
|
-
return;
|
|
137
|
-
}
|
|
138
|
-
|
|
139
|
-
const draco = loader._draco;
|
|
140
|
-
const gltf = loader._gltf;
|
|
141
|
-
const bufferViews = gltf.bufferViews;
|
|
142
|
-
const bufferViewId = draco.bufferView;
|
|
143
|
-
const bufferView = bufferViews[bufferViewId];
|
|
144
|
-
const compressedAttributes = draco.attributes;
|
|
145
|
-
|
|
146
|
-
const decodeOptions = {
|
|
147
|
-
// Need to make a copy of the typed array otherwise the underlying
|
|
148
|
-
// ArrayBuffer may be accessed on both the worker and the main thread. This
|
|
149
|
-
// leads to errors such as "ArrayBuffer at index 0 is already detached".
|
|
150
|
-
// PERFORMANCE_IDEA: Look into SharedArrayBuffer to get around this.
|
|
151
|
-
array: new Uint8Array(loader._bufferViewTypedArray),
|
|
152
|
-
bufferView: bufferView,
|
|
153
|
-
compressedAttributes: compressedAttributes,
|
|
154
|
-
dequantizeInShader: true,
|
|
155
|
-
};
|
|
156
|
-
|
|
157
|
-
const decodePromise = DracoLoader.decodeBufferView(decodeOptions);
|
|
158
|
-
|
|
159
|
-
if (!defined(decodePromise)) {
|
|
160
|
-
// Cannot schedule task this frame
|
|
161
|
-
return;
|
|
162
|
-
}
|
|
163
|
-
|
|
164
|
-
loader._decodePromise = decodePromise
|
|
165
|
-
.then(function (results) {
|
|
166
|
-
if (loader.isDestroyed()) {
|
|
167
|
-
resolve();
|
|
168
|
-
return;
|
|
169
|
-
}
|
|
170
|
-
|
|
171
|
-
// Unload everything except the decoded data
|
|
172
|
-
loader.unload();
|
|
173
|
-
|
|
174
|
-
loader._decodedData = {
|
|
175
|
-
indices: results.indexArray,
|
|
176
|
-
vertexAttributes: results.attributeData,
|
|
177
|
-
};
|
|
178
|
-
loader._state = ResourceLoaderState.READY;
|
|
179
|
-
resolve(loader);
|
|
180
|
-
})
|
|
181
|
-
.catch(function (e) {
|
|
182
|
-
if (loader.isDestroyed()) {
|
|
183
|
-
resolve();
|
|
184
|
-
return;
|
|
185
|
-
}
|
|
186
|
-
|
|
187
|
-
reject(e);
|
|
188
|
-
});
|
|
189
|
-
};
|
|
190
|
-
});
|
|
191
|
-
|
|
192
|
-
this._promise = bufferViewLoader.promise
|
|
193
|
-
.then(function () {
|
|
194
|
-
if (that.isDestroyed()) {
|
|
195
|
-
return;
|
|
196
|
-
}
|
|
197
|
-
// Now wait for process() to run to finish loading
|
|
198
|
-
that._bufferViewTypedArray = bufferViewLoader.typedArray;
|
|
199
|
-
that._state = ResourceLoaderState.PROCESSING;
|
|
200
|
-
|
|
201
|
-
return dracoPromise;
|
|
202
|
-
})
|
|
203
|
-
.catch(function (error) {
|
|
204
|
-
if (that.isDestroyed()) {
|
|
205
|
-
return;
|
|
206
|
-
}
|
|
207
|
-
|
|
208
|
-
return handleError(that, error);
|
|
209
|
-
});
|
|
129
|
+
GltfDracoLoader.prototype.load = async function () {
|
|
130
|
+
if (defined(this._promise)) {
|
|
131
|
+
return this._promise;
|
|
132
|
+
}
|
|
210
133
|
|
|
134
|
+
this._state = ResourceLoaderState.LOADING;
|
|
135
|
+
this._promise = loadResources(this);
|
|
211
136
|
return this._promise;
|
|
212
137
|
};
|
|
213
138
|
|
|
@@ -215,7 +140,33 @@ function handleError(dracoLoader, error) {
|
|
|
215
140
|
dracoLoader.unload();
|
|
216
141
|
dracoLoader._state = ResourceLoaderState.FAILED;
|
|
217
142
|
const errorMessage = "Failed to load Draco";
|
|
218
|
-
|
|
143
|
+
throw dracoLoader.getError(errorMessage, error);
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
async function processDecode(loader, decodePromise) {
|
|
147
|
+
try {
|
|
148
|
+
const results = await decodePromise;
|
|
149
|
+
if (loader.isDestroyed()) {
|
|
150
|
+
return;
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
// Unload everything except the decoded data
|
|
154
|
+
loader.unload();
|
|
155
|
+
|
|
156
|
+
loader._decodedData = {
|
|
157
|
+
indices: results.indexArray,
|
|
158
|
+
vertexAttributes: results.attributeData,
|
|
159
|
+
};
|
|
160
|
+
loader._state = ResourceLoaderState.READY;
|
|
161
|
+
return loader._baseResource;
|
|
162
|
+
} catch (error) {
|
|
163
|
+
if (loader.isDestroyed()) {
|
|
164
|
+
return;
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
// Capture this error so it can be thrown on the next `process` call
|
|
168
|
+
loader._dracoError = error;
|
|
169
|
+
}
|
|
219
170
|
}
|
|
220
171
|
|
|
221
172
|
/**
|
|
@@ -229,7 +180,54 @@ GltfDracoLoader.prototype.process = function (frameState) {
|
|
|
229
180
|
Check.typeOf.object("frameState", frameState);
|
|
230
181
|
//>>includeEnd('debug');
|
|
231
182
|
|
|
232
|
-
|
|
183
|
+
if (this._state === ResourceLoaderState.READY) {
|
|
184
|
+
return true;
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
if (this._state !== ResourceLoaderState.PROCESSING) {
|
|
188
|
+
return false;
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
if (defined(this._dracoError)) {
|
|
192
|
+
handleError(this, this._dracoError);
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
if (!defined(this._bufferViewTypedArray)) {
|
|
196
|
+
// Not ready to decode the Draco buffer
|
|
197
|
+
return false;
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
if (defined(this._decodePromise)) {
|
|
201
|
+
// Currently decoding
|
|
202
|
+
return false;
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
const draco = this._draco;
|
|
206
|
+
const gltf = this._gltf;
|
|
207
|
+
const bufferViews = gltf.bufferViews;
|
|
208
|
+
const bufferViewId = draco.bufferView;
|
|
209
|
+
const bufferView = bufferViews[bufferViewId];
|
|
210
|
+
const compressedAttributes = draco.attributes;
|
|
211
|
+
|
|
212
|
+
const decodeOptions = {
|
|
213
|
+
// Need to make a copy of the typed array otherwise the underlying
|
|
214
|
+
// ArrayBuffer may be accessed on both the worker and the main thread. This
|
|
215
|
+
// leads to errors such as "ArrayBuffer at index 0 is already detached".
|
|
216
|
+
// PERFORMANCE_IDEA: Look into SharedArrayBuffer to get around this.
|
|
217
|
+
array: new Uint8Array(this._bufferViewTypedArray),
|
|
218
|
+
bufferView: bufferView,
|
|
219
|
+
compressedAttributes: compressedAttributes,
|
|
220
|
+
dequantizeInShader: true,
|
|
221
|
+
};
|
|
222
|
+
|
|
223
|
+
const decodePromise = DracoLoader.decodeBufferView(decodeOptions);
|
|
224
|
+
|
|
225
|
+
if (!defined(decodePromise)) {
|
|
226
|
+
// Cannot schedule task this frame
|
|
227
|
+
return false;
|
|
228
|
+
}
|
|
229
|
+
|
|
230
|
+
this._decodePromise = processDecode(this, decodePromise);
|
|
233
231
|
};
|
|
234
232
|
|
|
235
233
|
/**
|