@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
|
@@ -68,20 +68,6 @@ if (defined(Object.create)) {
|
|
|
68
68
|
}
|
|
69
69
|
|
|
70
70
|
Object.defineProperties(GltfImageLoader.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 GltfImageLoader.prototype
|
|
75
|
-
*
|
|
76
|
-
* @type {Promise<GltfImageLoader>|undefined}
|
|
77
|
-
* @readonly
|
|
78
|
-
* @private
|
|
79
|
-
*/
|
|
80
|
-
promise: {
|
|
81
|
-
get: function () {
|
|
82
|
-
return this._promise;
|
|
83
|
-
},
|
|
84
|
-
},
|
|
85
71
|
/**
|
|
86
72
|
* The cache key of the resource.
|
|
87
73
|
*
|
|
@@ -132,6 +118,10 @@ Object.defineProperties(GltfImageLoader.prototype, {
|
|
|
132
118
|
* @private
|
|
133
119
|
*/
|
|
134
120
|
GltfImageLoader.prototype.load = function () {
|
|
121
|
+
if (defined(this._promise)) {
|
|
122
|
+
return this._promise;
|
|
123
|
+
}
|
|
124
|
+
|
|
135
125
|
if (defined(this._bufferViewId)) {
|
|
136
126
|
this._promise = loadFromBufferView(this);
|
|
137
127
|
return this._promise;
|
|
@@ -158,78 +148,78 @@ function getImageAndMipLevels(image) {
|
|
|
158
148
|
};
|
|
159
149
|
}
|
|
160
150
|
|
|
161
|
-
function loadFromBufferView(imageLoader) {
|
|
151
|
+
async function loadFromBufferView(imageLoader) {
|
|
152
|
+
imageLoader._state = ResourceLoaderState.LOADING;
|
|
162
153
|
const resourceCache = imageLoader._resourceCache;
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
154
|
+
try {
|
|
155
|
+
const bufferViewLoader = resourceCache.getBufferViewLoader({
|
|
156
|
+
gltf: imageLoader._gltf,
|
|
157
|
+
bufferViewId: imageLoader._bufferViewId,
|
|
158
|
+
gltfResource: imageLoader._gltfResource,
|
|
159
|
+
baseResource: imageLoader._baseResource,
|
|
160
|
+
});
|
|
161
|
+
imageLoader._bufferViewLoader = bufferViewLoader;
|
|
162
|
+
await bufferViewLoader.load();
|
|
169
163
|
|
|
170
|
-
|
|
171
|
-
|
|
164
|
+
if (imageLoader.isDestroyed()) {
|
|
165
|
+
return;
|
|
166
|
+
}
|
|
172
167
|
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
.catch(function (error) {
|
|
197
|
-
if (imageLoader.isDestroyed()) {
|
|
198
|
-
return;
|
|
199
|
-
}
|
|
200
|
-
return handleError(imageLoader, error, "Failed to load embedded image");
|
|
201
|
-
});
|
|
168
|
+
const typedArray = bufferViewLoader.typedArray;
|
|
169
|
+
const image = await loadImageFromBufferTypedArray(typedArray);
|
|
170
|
+
if (imageLoader.isDestroyed()) {
|
|
171
|
+
return;
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
const imageAndMipLevels = getImageAndMipLevels(image);
|
|
175
|
+
|
|
176
|
+
// Unload everything except the image
|
|
177
|
+
imageLoader.unload();
|
|
178
|
+
|
|
179
|
+
imageLoader._image = imageAndMipLevels.image;
|
|
180
|
+
imageLoader._mipLevels = imageAndMipLevels.mipLevels;
|
|
181
|
+
imageLoader._state = ResourceLoaderState.READY;
|
|
182
|
+
|
|
183
|
+
return imageLoader;
|
|
184
|
+
} catch (error) {
|
|
185
|
+
if (imageLoader.isDestroyed()) {
|
|
186
|
+
return;
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
return handleError(imageLoader, error, "Failed to load embedded image");
|
|
190
|
+
}
|
|
202
191
|
}
|
|
203
192
|
|
|
204
|
-
function loadFromUri(imageLoader) {
|
|
193
|
+
async function loadFromUri(imageLoader) {
|
|
194
|
+
imageLoader._state = ResourceLoaderState.LOADING;
|
|
205
195
|
const baseResource = imageLoader._baseResource;
|
|
206
196
|
const uri = imageLoader._uri;
|
|
207
197
|
const resource = baseResource.getDerivedResource({
|
|
208
198
|
url: uri,
|
|
209
199
|
});
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
200
|
+
|
|
201
|
+
try {
|
|
202
|
+
const image = await loadImageFromUri(resource);
|
|
203
|
+
if (imageLoader.isDestroyed()) {
|
|
204
|
+
return;
|
|
205
|
+
}
|
|
206
|
+
|
|
207
|
+
const imageAndMipLevels = getImageAndMipLevels(image);
|
|
208
|
+
|
|
209
|
+
// Unload everything except the image
|
|
210
|
+
imageLoader.unload();
|
|
211
|
+
|
|
212
|
+
imageLoader._image = imageAndMipLevels.image;
|
|
213
|
+
imageLoader._mipLevels = imageAndMipLevels.mipLevels;
|
|
214
|
+
imageLoader._state = ResourceLoaderState.READY;
|
|
215
|
+
|
|
216
|
+
return imageLoader;
|
|
217
|
+
} catch (error) {
|
|
218
|
+
if (imageLoader.isDestroyed()) {
|
|
219
|
+
return;
|
|
220
|
+
}
|
|
221
|
+
return handleError(imageLoader, error, `Failed to load image: ${uri}`);
|
|
222
|
+
}
|
|
233
223
|
}
|
|
234
224
|
|
|
235
225
|
function handleError(imageLoader, error, errorMessage) {
|
|
@@ -269,7 +259,7 @@ function getMimeTypeFromTypedArray(typedArray) {
|
|
|
269
259
|
throw new RuntimeError("Image format is not recognized");
|
|
270
260
|
}
|
|
271
261
|
|
|
272
|
-
function loadImageFromBufferTypedArray(typedArray) {
|
|
262
|
+
async function loadImageFromBufferTypedArray(typedArray) {
|
|
273
263
|
const mimeType = getMimeTypeFromTypedArray(typedArray);
|
|
274
264
|
if (mimeType === "image/ktx2") {
|
|
275
265
|
// Need to make a copy of the embedded KTX2 buffer otherwise the underlying
|
|
@@ -310,7 +300,10 @@ function loadImageFromUri(resource) {
|
|
|
310
300
|
* @private
|
|
311
301
|
*/
|
|
312
302
|
GltfImageLoader.prototype.unload = function () {
|
|
313
|
-
if (
|
|
303
|
+
if (
|
|
304
|
+
defined(this._bufferViewLoader) &&
|
|
305
|
+
!this._bufferViewLoader.isDestroyed()
|
|
306
|
+
) {
|
|
314
307
|
this._resourceCache.unload(this._bufferViewLoader);
|
|
315
308
|
}
|
|
316
309
|
|
|
@@ -79,7 +79,6 @@ function GltfIndexBufferLoader(options) {
|
|
|
79
79
|
this._buffer = undefined;
|
|
80
80
|
this._state = ResourceLoaderState.UNLOADED;
|
|
81
81
|
this._promise = undefined;
|
|
82
|
-
this._process = function (loader, frameState) {};
|
|
83
82
|
}
|
|
84
83
|
|
|
85
84
|
if (defined(Object.create)) {
|
|
@@ -88,20 +87,6 @@ if (defined(Object.create)) {
|
|
|
88
87
|
}
|
|
89
88
|
|
|
90
89
|
Object.defineProperties(GltfIndexBufferLoader.prototype, {
|
|
91
|
-
/**
|
|
92
|
-
* A promise that resolves to the resource when the resource is ready, or undefined if the resource has not yet started loading.
|
|
93
|
-
*
|
|
94
|
-
* @memberof GltfIndexBufferLoader.prototype
|
|
95
|
-
*
|
|
96
|
-
* @type {Promise<GltfIndexBufferLoader>|undefined}
|
|
97
|
-
* @readonly
|
|
98
|
-
* @private
|
|
99
|
-
*/
|
|
100
|
-
promise: {
|
|
101
|
-
get: function () {
|
|
102
|
-
return this._promise;
|
|
103
|
-
},
|
|
104
|
-
},
|
|
105
90
|
/**
|
|
106
91
|
* The cache key of the resource.
|
|
107
92
|
*
|
|
@@ -168,135 +153,72 @@ const scratchIndexBufferJob = new CreateIndexBufferJob();
|
|
|
168
153
|
* @returns {Promise<GltfIndexBufferLoader>} A promise which resolves to the loader when the resource loading is completed.
|
|
169
154
|
* @private
|
|
170
155
|
*/
|
|
171
|
-
GltfIndexBufferLoader.prototype.load = function () {
|
|
172
|
-
|
|
156
|
+
GltfIndexBufferLoader.prototype.load = async function () {
|
|
157
|
+
if (defined(this._promise)) {
|
|
158
|
+
return this._promise;
|
|
159
|
+
}
|
|
173
160
|
|
|
174
161
|
if (defined(this._draco)) {
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
promise = loadFromBufferView(this);
|
|
162
|
+
this._promise = loadFromDraco(this);
|
|
163
|
+
return this._promise;
|
|
178
164
|
}
|
|
179
165
|
|
|
180
|
-
|
|
181
|
-
const processPromise = new Promise(function (resolve) {
|
|
182
|
-
that._process = function (loader, frameState) {
|
|
183
|
-
if (loader._state === ResourceLoaderState.READY) {
|
|
184
|
-
return;
|
|
185
|
-
}
|
|
186
|
-
|
|
187
|
-
const typedArray = loader._typedArray;
|
|
188
|
-
const indexDatatype = loader._indexDatatype;
|
|
189
|
-
|
|
190
|
-
if (defined(loader._dracoLoader)) {
|
|
191
|
-
loader._dracoLoader.process(frameState);
|
|
192
|
-
}
|
|
193
|
-
|
|
194
|
-
if (defined(loader._bufferViewLoader)) {
|
|
195
|
-
loader._bufferViewLoader.process(frameState);
|
|
196
|
-
}
|
|
197
|
-
|
|
198
|
-
if (!defined(typedArray)) {
|
|
199
|
-
// Buffer view hasn't been loaded yet
|
|
200
|
-
return;
|
|
201
|
-
}
|
|
202
|
-
|
|
203
|
-
let buffer;
|
|
204
|
-
if (loader._loadBuffer && loader._asynchronous) {
|
|
205
|
-
const indexBufferJob = scratchIndexBufferJob;
|
|
206
|
-
indexBufferJob.set(typedArray, indexDatatype, frameState.context);
|
|
207
|
-
const jobScheduler = frameState.jobScheduler;
|
|
208
|
-
if (!jobScheduler.execute(indexBufferJob, JobType.BUFFER)) {
|
|
209
|
-
// Job scheduler is full. Try again next frame.
|
|
210
|
-
return;
|
|
211
|
-
}
|
|
212
|
-
buffer = indexBufferJob.buffer;
|
|
213
|
-
} else if (loader._loadBuffer) {
|
|
214
|
-
buffer = createIndexBuffer(
|
|
215
|
-
typedArray,
|
|
216
|
-
indexDatatype,
|
|
217
|
-
frameState.context
|
|
218
|
-
);
|
|
219
|
-
}
|
|
220
|
-
|
|
221
|
-
// Unload everything except the index buffer and/or typed array.
|
|
222
|
-
loader.unload();
|
|
223
|
-
|
|
224
|
-
loader._buffer = buffer;
|
|
225
|
-
loader._typedArray = loader._loadTypedArray ? typedArray : undefined;
|
|
226
|
-
loader._state = ResourceLoaderState.READY;
|
|
227
|
-
resolve(loader);
|
|
228
|
-
};
|
|
229
|
-
});
|
|
230
|
-
|
|
231
|
-
this._promise = promise
|
|
232
|
-
.then(function () {
|
|
233
|
-
if (that.isDestroyed()) {
|
|
234
|
-
return;
|
|
235
|
-
}
|
|
236
|
-
|
|
237
|
-
return processPromise;
|
|
238
|
-
})
|
|
239
|
-
.catch(function (error) {
|
|
240
|
-
if (that.isDestroyed()) {
|
|
241
|
-
return;
|
|
242
|
-
}
|
|
243
|
-
|
|
244
|
-
return handleError(that, error);
|
|
245
|
-
});
|
|
246
|
-
|
|
166
|
+
this._promise = loadFromBufferView(this);
|
|
247
167
|
return this._promise;
|
|
248
168
|
};
|
|
249
169
|
|
|
250
|
-
function loadFromDraco(indexBufferLoader) {
|
|
170
|
+
async function loadFromDraco(indexBufferLoader) {
|
|
171
|
+
indexBufferLoader._state = ResourceLoaderState.LOADING;
|
|
251
172
|
const resourceCache = indexBufferLoader._resourceCache;
|
|
252
|
-
const dracoLoader = resourceCache.loadDraco({
|
|
253
|
-
gltf: indexBufferLoader._gltf,
|
|
254
|
-
draco: indexBufferLoader._draco,
|
|
255
|
-
gltfResource: indexBufferLoader._gltfResource,
|
|
256
|
-
baseResource: indexBufferLoader._baseResource,
|
|
257
|
-
});
|
|
258
173
|
|
|
259
|
-
|
|
260
|
-
|
|
174
|
+
try {
|
|
175
|
+
const dracoLoader = resourceCache.getDracoLoader({
|
|
176
|
+
gltf: indexBufferLoader._gltf,
|
|
177
|
+
draco: indexBufferLoader._draco,
|
|
178
|
+
gltfResource: indexBufferLoader._gltfResource,
|
|
179
|
+
baseResource: indexBufferLoader._baseResource,
|
|
180
|
+
});
|
|
181
|
+
indexBufferLoader._dracoLoader = dracoLoader;
|
|
182
|
+
await dracoLoader.load();
|
|
261
183
|
|
|
262
|
-
return dracoLoader.promise.then(function () {
|
|
263
184
|
if (indexBufferLoader.isDestroyed()) {
|
|
264
185
|
return;
|
|
265
186
|
}
|
|
187
|
+
|
|
266
188
|
// Now wait for process() to run to finish loading
|
|
267
|
-
|
|
268
|
-
indexBufferLoader._typedArray = typedArray;
|
|
269
|
-
// The index datatype may be a smaller datatype after draco decode
|
|
270
|
-
indexBufferLoader._indexDatatype = ComponentDatatype.fromTypedArray(
|
|
271
|
-
typedArray
|
|
272
|
-
);
|
|
273
|
-
indexBufferLoader._state = ResourceLoaderState.PROCESSING;
|
|
189
|
+
indexBufferLoader._state = ResourceLoaderState.LOADED;
|
|
274
190
|
return indexBufferLoader;
|
|
275
|
-
})
|
|
191
|
+
} catch (error) {
|
|
192
|
+
if (indexBufferLoader.isDestroyed()) {
|
|
193
|
+
return;
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
handleError(indexBufferLoader, error);
|
|
197
|
+
}
|
|
276
198
|
}
|
|
277
199
|
|
|
278
|
-
function loadFromBufferView(indexBufferLoader) {
|
|
200
|
+
async function loadFromBufferView(indexBufferLoader) {
|
|
279
201
|
const gltf = indexBufferLoader._gltf;
|
|
280
202
|
const accessorId = indexBufferLoader._accessorId;
|
|
281
203
|
const accessor = gltf.accessors[accessorId];
|
|
282
204
|
const bufferViewId = accessor.bufferView;
|
|
283
205
|
|
|
284
|
-
const resourceCache = indexBufferLoader._resourceCache;
|
|
285
|
-
const bufferViewLoader = resourceCache.loadBufferView({
|
|
286
|
-
gltf: gltf,
|
|
287
|
-
bufferViewId: bufferViewId,
|
|
288
|
-
gltfResource: indexBufferLoader._gltfResource,
|
|
289
|
-
baseResource: indexBufferLoader._baseResource,
|
|
290
|
-
});
|
|
291
206
|
indexBufferLoader._state = ResourceLoaderState.LOADING;
|
|
292
|
-
|
|
207
|
+
const resourceCache = indexBufferLoader._resourceCache;
|
|
208
|
+
try {
|
|
209
|
+
const bufferViewLoader = resourceCache.getBufferViewLoader({
|
|
210
|
+
gltf: gltf,
|
|
211
|
+
bufferViewId: bufferViewId,
|
|
212
|
+
gltfResource: indexBufferLoader._gltfResource,
|
|
213
|
+
baseResource: indexBufferLoader._baseResource,
|
|
214
|
+
});
|
|
215
|
+
indexBufferLoader._bufferViewLoader = bufferViewLoader;
|
|
293
216
|
|
|
294
|
-
|
|
217
|
+
await bufferViewLoader.load();
|
|
295
218
|
if (indexBufferLoader.isDestroyed()) {
|
|
296
219
|
return;
|
|
297
220
|
}
|
|
298
221
|
|
|
299
|
-
// Now wait for process() to run to finish loading
|
|
300
222
|
const bufferViewTypedArray = bufferViewLoader.typedArray;
|
|
301
223
|
indexBufferLoader._typedArray = createIndicesTypedArray(
|
|
302
224
|
indexBufferLoader,
|
|
@@ -304,7 +226,13 @@ function loadFromBufferView(indexBufferLoader) {
|
|
|
304
226
|
);
|
|
305
227
|
indexBufferLoader._state = ResourceLoaderState.PROCESSING;
|
|
306
228
|
return indexBufferLoader;
|
|
307
|
-
})
|
|
229
|
+
} catch (error) {
|
|
230
|
+
if (indexBufferLoader.isDestroyed()) {
|
|
231
|
+
return;
|
|
232
|
+
}
|
|
233
|
+
|
|
234
|
+
handleError(indexBufferLoader, error);
|
|
235
|
+
}
|
|
308
236
|
}
|
|
309
237
|
|
|
310
238
|
function createIndicesTypedArray(indexBufferLoader, bufferViewTypedArray) {
|
|
@@ -346,8 +274,7 @@ function handleError(indexBufferLoader, error) {
|
|
|
346
274
|
indexBufferLoader.unload();
|
|
347
275
|
indexBufferLoader._state = ResourceLoaderState.FAILED;
|
|
348
276
|
const errorMessage = "Failed to load index buffer";
|
|
349
|
-
|
|
350
|
-
return Promise.reject(error);
|
|
277
|
+
throw indexBufferLoader.getError(errorMessage, error);
|
|
351
278
|
}
|
|
352
279
|
|
|
353
280
|
function CreateIndexBufferJob() {
|
|
@@ -397,7 +324,64 @@ GltfIndexBufferLoader.prototype.process = function (frameState) {
|
|
|
397
324
|
Check.typeOf.object("frameState", frameState);
|
|
398
325
|
//>>includeEnd('debug');
|
|
399
326
|
|
|
400
|
-
|
|
327
|
+
if (this._state === ResourceLoaderState.READY) {
|
|
328
|
+
return true;
|
|
329
|
+
}
|
|
330
|
+
|
|
331
|
+
if (
|
|
332
|
+
this._state !== ResourceLoaderState.LOADED &&
|
|
333
|
+
this._state !== ResourceLoaderState.PROCESSING
|
|
334
|
+
) {
|
|
335
|
+
return false;
|
|
336
|
+
}
|
|
337
|
+
|
|
338
|
+
let typedArray = this._typedArray;
|
|
339
|
+
let indexDatatype = this._indexDatatype;
|
|
340
|
+
|
|
341
|
+
if (defined(this._dracoLoader)) {
|
|
342
|
+
try {
|
|
343
|
+
const ready = this._dracoLoader.process(frameState);
|
|
344
|
+
if (ready) {
|
|
345
|
+
const dracoLoader = this._dracoLoader;
|
|
346
|
+
typedArray = dracoLoader.decodedData.indices.typedArray;
|
|
347
|
+
this._typedArray = typedArray;
|
|
348
|
+
// The index datatype may be a smaller datatype after draco decode
|
|
349
|
+
indexDatatype = ComponentDatatype.fromTypedArray(typedArray);
|
|
350
|
+
this._indexDatatype = indexDatatype;
|
|
351
|
+
}
|
|
352
|
+
} catch (error) {
|
|
353
|
+
handleError(this, error);
|
|
354
|
+
}
|
|
355
|
+
}
|
|
356
|
+
|
|
357
|
+
if (!defined(typedArray)) {
|
|
358
|
+
// Buffer view hasn't been loaded yet
|
|
359
|
+
return false;
|
|
360
|
+
}
|
|
361
|
+
|
|
362
|
+
let buffer;
|
|
363
|
+
if (this._loadBuffer && this._asynchronous) {
|
|
364
|
+
const indexBufferJob = scratchIndexBufferJob;
|
|
365
|
+
indexBufferJob.set(typedArray, indexDatatype, frameState.context);
|
|
366
|
+
const jobScheduler = frameState.jobScheduler;
|
|
367
|
+
if (!jobScheduler.execute(indexBufferJob, JobType.BUFFER)) {
|
|
368
|
+
// Job scheduler is full. Try again next frame.
|
|
369
|
+
return false;
|
|
370
|
+
}
|
|
371
|
+
buffer = indexBufferJob.buffer;
|
|
372
|
+
} else if (this._loadBuffer) {
|
|
373
|
+
buffer = createIndexBuffer(typedArray, indexDatatype, frameState.context);
|
|
374
|
+
}
|
|
375
|
+
|
|
376
|
+
// Unload everything except the index buffer and/or typed array.
|
|
377
|
+
this.unload();
|
|
378
|
+
|
|
379
|
+
this._buffer = buffer;
|
|
380
|
+
this._typedArray = this._loadTypedArray ? typedArray : undefined;
|
|
381
|
+
this._state = ResourceLoaderState.READY;
|
|
382
|
+
|
|
383
|
+
this._resourceCache.statistics.addGeometryLoader(this);
|
|
384
|
+
return true;
|
|
401
385
|
};
|
|
402
386
|
|
|
403
387
|
/**
|
|
@@ -411,7 +395,10 @@ GltfIndexBufferLoader.prototype.unload = function () {
|
|
|
411
395
|
|
|
412
396
|
const resourceCache = this._resourceCache;
|
|
413
397
|
|
|
414
|
-
if (
|
|
398
|
+
if (
|
|
399
|
+
defined(this._bufferViewLoader) &&
|
|
400
|
+
!this._bufferViewLoader.isDestroyed()
|
|
401
|
+
) {
|
|
415
402
|
resourceCache.unload(this._bufferViewLoader);
|
|
416
403
|
}
|
|
417
404
|
|