@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,7 +68,9 @@ function GltfStructuralMetadataLoader(options) {
|
|
|
68
68
|
this._cacheKey = cacheKey;
|
|
69
69
|
this._asynchronous = asynchronous;
|
|
70
70
|
this._bufferViewLoaders = [];
|
|
71
|
+
this._bufferViewIds = [];
|
|
71
72
|
this._textureLoaders = [];
|
|
73
|
+
this._textureIds = [];
|
|
72
74
|
this._schemaLoader = undefined;
|
|
73
75
|
this._structuralMetadata = undefined;
|
|
74
76
|
this._state = ResourceLoaderState.UNLOADED;
|
|
@@ -83,20 +85,6 @@ if (defined(Object.create)) {
|
|
|
83
85
|
}
|
|
84
86
|
|
|
85
87
|
Object.defineProperties(GltfStructuralMetadataLoader.prototype, {
|
|
86
|
-
/**
|
|
87
|
-
* A promise that resolves to the resource when the resource is ready, or undefined if the resource hasn't started loading.
|
|
88
|
-
*
|
|
89
|
-
* @memberof GltfStructuralMetadataLoader.prototype
|
|
90
|
-
*
|
|
91
|
-
* @type {Promise<GltfStructuralMetadataLoader>|undefined}
|
|
92
|
-
* @readonly
|
|
93
|
-
* @private
|
|
94
|
-
*/
|
|
95
|
-
promise: {
|
|
96
|
-
get: function () {
|
|
97
|
-
return this._promise;
|
|
98
|
-
},
|
|
99
|
-
},
|
|
100
88
|
/**
|
|
101
89
|
* The cache key of the resource.
|
|
102
90
|
*
|
|
@@ -127,61 +115,47 @@ Object.defineProperties(GltfStructuralMetadataLoader.prototype, {
|
|
|
127
115
|
},
|
|
128
116
|
});
|
|
129
117
|
|
|
118
|
+
async function loadResources(loader) {
|
|
119
|
+
try {
|
|
120
|
+
const bufferViewsPromise = loadBufferViews(loader);
|
|
121
|
+
const texturesPromise = loadTextures(loader);
|
|
122
|
+
const schemaPromise = loadSchema(loader);
|
|
123
|
+
|
|
124
|
+
await Promise.all([bufferViewsPromise, texturesPromise, schemaPromise]);
|
|
125
|
+
|
|
126
|
+
if (loader.isDestroyed()) {
|
|
127
|
+
return;
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
loader._gltf = undefined; // No longer need to hold onto the glTF
|
|
131
|
+
|
|
132
|
+
loader._state = ResourceLoaderState.LOADED;
|
|
133
|
+
return loader;
|
|
134
|
+
} catch (error) {
|
|
135
|
+
if (loader.isDestroyed()) {
|
|
136
|
+
return;
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
loader.unload();
|
|
140
|
+
loader._state = ResourceLoaderState.FAILED;
|
|
141
|
+
const errorMessage = "Failed to load structural metadata";
|
|
142
|
+
throw loader.getError(errorMessage, error);
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
|
|
130
146
|
/**
|
|
131
147
|
* Loads the resource.
|
|
132
148
|
* @returns {Promise<GltfStructuralMetadataLoader>} A promise which resolves to the loader when the resource loading is completed.
|
|
133
149
|
* @private
|
|
134
150
|
*/
|
|
135
151
|
GltfStructuralMetadataLoader.prototype.load = function () {
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
152
|
+
if (defined(this._promise)) {
|
|
153
|
+
return this._promise;
|
|
154
|
+
}
|
|
139
155
|
|
|
140
|
-
this._gltf = undefined; // No longer need to hold onto the glTF
|
|
141
156
|
this._state = ResourceLoaderState.LOADING;
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
this._promise = Promise.all([
|
|
146
|
-
bufferViewsPromise,
|
|
147
|
-
texturesPromise,
|
|
148
|
-
schemaPromise,
|
|
149
|
-
])
|
|
150
|
-
.then(function (results) {
|
|
151
|
-
if (that.isDestroyed()) {
|
|
152
|
-
return;
|
|
153
|
-
}
|
|
154
|
-
const bufferViews = results[0];
|
|
155
|
-
const textures = results[1];
|
|
156
|
-
const schema = results[2];
|
|
157
|
-
|
|
158
|
-
if (defined(that._extension)) {
|
|
159
|
-
that._structuralMetadata = parseStructuralMetadata({
|
|
160
|
-
extension: that._extension,
|
|
161
|
-
schema: schema,
|
|
162
|
-
bufferViews: bufferViews,
|
|
163
|
-
textures: textures,
|
|
164
|
-
});
|
|
165
|
-
} else {
|
|
166
|
-
that._structuralMetadata = parseFeatureMetadataLegacy({
|
|
167
|
-
extension: that._extensionLegacy,
|
|
168
|
-
schema: schema,
|
|
169
|
-
bufferViews: bufferViews,
|
|
170
|
-
textures: textures,
|
|
171
|
-
});
|
|
172
|
-
}
|
|
173
|
-
that._state = ResourceLoaderState.READY;
|
|
174
|
-
return that;
|
|
175
|
-
})
|
|
176
|
-
.catch(function (error) {
|
|
177
|
-
if (that.isDestroyed()) {
|
|
178
|
-
return;
|
|
179
|
-
}
|
|
180
|
-
that.unload();
|
|
181
|
-
that._state = ResourceLoaderState.FAILED;
|
|
182
|
-
const errorMessage = "Failed to load structural metadata";
|
|
183
|
-
return Promise.reject(that.getError(errorMessage, error));
|
|
184
|
-
});
|
|
157
|
+
this._promise = loadResources(this);
|
|
158
|
+
return this._promise;
|
|
185
159
|
};
|
|
186
160
|
|
|
187
161
|
function gatherBufferViewIdsFromProperties(properties, bufferViewIdSet) {
|
|
@@ -261,7 +235,7 @@ function gatherUsedBufferViewIdsLegacy(extensionLegacy) {
|
|
|
261
235
|
return bufferViewIdSet;
|
|
262
236
|
}
|
|
263
237
|
|
|
264
|
-
function loadBufferViews(structuralMetadataLoader) {
|
|
238
|
+
async function loadBufferViews(structuralMetadataLoader) {
|
|
265
239
|
let bufferViewIds;
|
|
266
240
|
if (defined(structuralMetadataLoader._extension)) {
|
|
267
241
|
bufferViewIds = gatherUsedBufferViewIds(
|
|
@@ -275,40 +249,23 @@ function loadBufferViews(structuralMetadataLoader) {
|
|
|
275
249
|
|
|
276
250
|
// Load the buffer views
|
|
277
251
|
const bufferViewPromises = [];
|
|
278
|
-
const bufferViewLoaders = {};
|
|
279
252
|
for (const bufferViewId in bufferViewIds) {
|
|
280
253
|
if (bufferViewIds.hasOwnProperty(bufferViewId)) {
|
|
281
|
-
const bufferViewLoader = ResourceCache.
|
|
254
|
+
const bufferViewLoader = ResourceCache.getBufferViewLoader({
|
|
282
255
|
gltf: structuralMetadataLoader._gltf,
|
|
283
256
|
bufferViewId: parseInt(bufferViewId),
|
|
284
257
|
gltfResource: structuralMetadataLoader._gltfResource,
|
|
285
258
|
baseResource: structuralMetadataLoader._baseResource,
|
|
286
259
|
});
|
|
287
|
-
|
|
260
|
+
|
|
288
261
|
structuralMetadataLoader._bufferViewLoaders.push(bufferViewLoader);
|
|
289
|
-
|
|
290
|
-
}
|
|
291
|
-
}
|
|
262
|
+
structuralMetadataLoader._bufferViewIds.push(bufferViewId);
|
|
292
263
|
|
|
293
|
-
|
|
294
|
-
return Promise.all(bufferViewPromises).then(function () {
|
|
295
|
-
const bufferViews = {};
|
|
296
|
-
for (const bufferViewId in bufferViewLoaders) {
|
|
297
|
-
if (bufferViewLoaders.hasOwnProperty(bufferViewId)) {
|
|
298
|
-
const bufferViewLoader = bufferViewLoaders[bufferViewId];
|
|
299
|
-
// Copy the typed array and let the underlying ArrayBuffer be freed
|
|
300
|
-
const bufferViewTypedArray = new Uint8Array(
|
|
301
|
-
bufferViewLoader.typedArray
|
|
302
|
-
);
|
|
303
|
-
bufferViews[bufferViewId] = bufferViewTypedArray;
|
|
304
|
-
}
|
|
264
|
+
bufferViewPromises.push(bufferViewLoader.load());
|
|
305
265
|
}
|
|
266
|
+
}
|
|
306
267
|
|
|
307
|
-
|
|
308
|
-
unloadBufferViews(structuralMetadataLoader);
|
|
309
|
-
|
|
310
|
-
return bufferViews;
|
|
311
|
-
});
|
|
268
|
+
return Promise.all(bufferViewPromises);
|
|
312
269
|
}
|
|
313
270
|
|
|
314
271
|
function gatherUsedTextureIds(structuralMetadataExtension) {
|
|
@@ -385,10 +342,9 @@ function loadTextures(structuralMetadataLoader) {
|
|
|
385
342
|
|
|
386
343
|
// Load the textures
|
|
387
344
|
const texturePromises = [];
|
|
388
|
-
const textureLoaders = {};
|
|
389
345
|
for (const textureId in textureIds) {
|
|
390
346
|
if (textureIds.hasOwnProperty(textureId)) {
|
|
391
|
-
const textureLoader = ResourceCache.
|
|
347
|
+
const textureLoader = ResourceCache.getTextureLoader({
|
|
392
348
|
gltf: gltf,
|
|
393
349
|
textureInfo: textureIds[textureId],
|
|
394
350
|
gltfResource: gltfResource,
|
|
@@ -397,26 +353,16 @@ function loadTextures(structuralMetadataLoader) {
|
|
|
397
353
|
frameState: frameState,
|
|
398
354
|
asynchronous: asynchronous,
|
|
399
355
|
});
|
|
400
|
-
texturePromises.push(textureLoader.promise);
|
|
401
356
|
structuralMetadataLoader._textureLoaders.push(textureLoader);
|
|
402
|
-
|
|
357
|
+
structuralMetadataLoader._textureIds.push(textureId);
|
|
358
|
+
texturePromises.push(textureLoader.load());
|
|
403
359
|
}
|
|
404
360
|
}
|
|
405
361
|
|
|
406
|
-
|
|
407
|
-
return Promise.all(texturePromises).then(function () {
|
|
408
|
-
const textures = {};
|
|
409
|
-
for (const textureId in textureLoaders) {
|
|
410
|
-
if (textureLoaders.hasOwnProperty(textureId)) {
|
|
411
|
-
const textureLoader = textureLoaders[textureId];
|
|
412
|
-
textures[textureId] = textureLoader.texture;
|
|
413
|
-
}
|
|
414
|
-
}
|
|
415
|
-
return textures;
|
|
416
|
-
});
|
|
362
|
+
return Promise.all(texturePromises);
|
|
417
363
|
}
|
|
418
364
|
|
|
419
|
-
function loadSchema(structuralMetadataLoader) {
|
|
365
|
+
async function loadSchema(structuralMetadataLoader) {
|
|
420
366
|
const extension = defaultValue(
|
|
421
367
|
structuralMetadataLoader._extension,
|
|
422
368
|
structuralMetadataLoader._extensionLegacy
|
|
@@ -427,20 +373,20 @@ function loadSchema(structuralMetadataLoader) {
|
|
|
427
373
|
const resource = structuralMetadataLoader._baseResource.getDerivedResource({
|
|
428
374
|
url: extension.schemaUri,
|
|
429
375
|
});
|
|
430
|
-
schemaLoader = ResourceCache.
|
|
376
|
+
schemaLoader = ResourceCache.getSchemaLoader({
|
|
431
377
|
resource: resource,
|
|
432
378
|
});
|
|
433
379
|
} else {
|
|
434
|
-
schemaLoader = ResourceCache.
|
|
380
|
+
schemaLoader = ResourceCache.getSchemaLoader({
|
|
435
381
|
schema: extension.schema,
|
|
436
382
|
});
|
|
437
383
|
}
|
|
438
384
|
|
|
439
385
|
structuralMetadataLoader._schemaLoader = schemaLoader;
|
|
440
|
-
|
|
441
|
-
|
|
386
|
+
await schemaLoader.load();
|
|
387
|
+
if (!schemaLoader.isDestroyed()) {
|
|
442
388
|
return schemaLoader.schema;
|
|
443
|
-
}
|
|
389
|
+
}
|
|
444
390
|
}
|
|
445
391
|
|
|
446
392
|
/**
|
|
@@ -454,17 +400,68 @@ GltfStructuralMetadataLoader.prototype.process = function (frameState) {
|
|
|
454
400
|
Check.typeOf.object("frameState", frameState);
|
|
455
401
|
//>>includeEnd('debug');
|
|
456
402
|
|
|
457
|
-
if (this._state
|
|
458
|
-
return;
|
|
403
|
+
if (this._state === ResourceLoaderState.READY) {
|
|
404
|
+
return true;
|
|
405
|
+
}
|
|
406
|
+
|
|
407
|
+
if (this._state !== ResourceLoaderState.LOADED) {
|
|
408
|
+
return false;
|
|
459
409
|
}
|
|
460
410
|
|
|
461
411
|
const textureLoaders = this._textureLoaders;
|
|
462
412
|
const textureLoadersLength = textureLoaders.length;
|
|
463
|
-
|
|
413
|
+
let ready = true;
|
|
464
414
|
for (let i = 0; i < textureLoadersLength; ++i) {
|
|
465
415
|
const textureLoader = textureLoaders[i];
|
|
466
|
-
textureLoader.process(frameState);
|
|
416
|
+
const textureReady = textureLoader.process(frameState);
|
|
417
|
+
ready = ready && textureReady;
|
|
418
|
+
}
|
|
419
|
+
|
|
420
|
+
if (!ready) {
|
|
421
|
+
return false;
|
|
422
|
+
}
|
|
423
|
+
|
|
424
|
+
const schema = this._schemaLoader.schema;
|
|
425
|
+
const bufferViews = {};
|
|
426
|
+
for (let i = 0; i < this._bufferViewIds.length; ++i) {
|
|
427
|
+
const bufferViewId = this._bufferViewIds[i];
|
|
428
|
+
const bufferViewLoader = this._bufferViewLoaders[i];
|
|
429
|
+
if (!bufferViewLoader.isDestroyed()) {
|
|
430
|
+
// Copy the typed array and let the underlying ArrayBuffer be freed
|
|
431
|
+
const bufferViewTypedArray = new Uint8Array(bufferViewLoader.typedArray);
|
|
432
|
+
bufferViews[bufferViewId] = bufferViewTypedArray;
|
|
433
|
+
}
|
|
434
|
+
}
|
|
435
|
+
|
|
436
|
+
const textures = {};
|
|
437
|
+
for (let i = 0; i < this._textureIds.length; ++i) {
|
|
438
|
+
const textureId = this._textureIds[i];
|
|
439
|
+
const textureLoader = textureLoaders[i];
|
|
440
|
+
if (!textureLoader.isDestroyed()) {
|
|
441
|
+
textures[textureId] = textureLoader.texture;
|
|
442
|
+
}
|
|
467
443
|
}
|
|
444
|
+
if (defined(this._extension)) {
|
|
445
|
+
this._structuralMetadata = parseStructuralMetadata({
|
|
446
|
+
extension: this._extension,
|
|
447
|
+
schema: schema,
|
|
448
|
+
bufferViews: bufferViews,
|
|
449
|
+
textures: textures,
|
|
450
|
+
});
|
|
451
|
+
} else {
|
|
452
|
+
this._structuralMetadata = parseFeatureMetadataLegacy({
|
|
453
|
+
extension: this._extensionLegacy,
|
|
454
|
+
schema: schema,
|
|
455
|
+
bufferViews: bufferViews,
|
|
456
|
+
textures: textures,
|
|
457
|
+
});
|
|
458
|
+
}
|
|
459
|
+
|
|
460
|
+
// Buffer views can be unloaded after the data has been copied
|
|
461
|
+
unloadBufferViews(this);
|
|
462
|
+
|
|
463
|
+
this._state = ResourceLoaderState.READY;
|
|
464
|
+
return true;
|
|
468
465
|
};
|
|
469
466
|
|
|
470
467
|
function unloadBufferViews(structuralMetadataLoader) {
|
|
@@ -474,6 +471,7 @@ function unloadBufferViews(structuralMetadataLoader) {
|
|
|
474
471
|
ResourceCache.unload(bufferViewLoaders[i]);
|
|
475
472
|
}
|
|
476
473
|
structuralMetadataLoader._bufferViewLoaders.length = 0;
|
|
474
|
+
structuralMetadataLoader._bufferViewIds.length = 0;
|
|
477
475
|
}
|
|
478
476
|
|
|
479
477
|
function unloadTextures(structuralMetadataLoader) {
|
|
@@ -483,6 +481,7 @@ function unloadTextures(structuralMetadataLoader) {
|
|
|
483
481
|
ResourceCache.unload(textureLoaders[i]);
|
|
484
482
|
}
|
|
485
483
|
structuralMetadataLoader._textureLoaders.length = 0;
|
|
484
|
+
structuralMetadataLoader._textureIds.length = 0;
|
|
486
485
|
}
|
|
487
486
|
|
|
488
487
|
/**
|
|
@@ -78,7 +78,6 @@ function GltfTextureLoader(options) {
|
|
|
78
78
|
this._texture = undefined;
|
|
79
79
|
this._state = ResourceLoaderState.UNLOADED;
|
|
80
80
|
this._promise = undefined;
|
|
81
|
-
this._process = function (loader, frameState) {};
|
|
82
81
|
}
|
|
83
82
|
|
|
84
83
|
if (defined(Object.create)) {
|
|
@@ -87,20 +86,6 @@ if (defined(Object.create)) {
|
|
|
87
86
|
}
|
|
88
87
|
|
|
89
88
|
Object.defineProperties(GltfTextureLoader.prototype, {
|
|
90
|
-
/**
|
|
91
|
-
* A promise that resolves to the resource when the resource is ready, or undefined if the resource hasn't started loading.
|
|
92
|
-
*
|
|
93
|
-
* @memberof GltfTextureLoader.prototype
|
|
94
|
-
*
|
|
95
|
-
* @type {Promise<GltfTextureLoader>|undefined}
|
|
96
|
-
* @readonly
|
|
97
|
-
* @private
|
|
98
|
-
*/
|
|
99
|
-
promise: {
|
|
100
|
-
get: function () {
|
|
101
|
-
return this._promise;
|
|
102
|
-
},
|
|
103
|
-
},
|
|
104
89
|
/**
|
|
105
90
|
* The cache key of the resource.
|
|
106
91
|
*
|
|
@@ -133,92 +118,52 @@ Object.defineProperties(GltfTextureLoader.prototype, {
|
|
|
133
118
|
|
|
134
119
|
const scratchTextureJob = new CreateTextureJob();
|
|
135
120
|
|
|
121
|
+
async function loadResources(loader) {
|
|
122
|
+
const resourceCache = loader._resourceCache;
|
|
123
|
+
try {
|
|
124
|
+
const imageLoader = resourceCache.getImageLoader({
|
|
125
|
+
gltf: loader._gltf,
|
|
126
|
+
imageId: loader._imageId,
|
|
127
|
+
gltfResource: loader._gltfResource,
|
|
128
|
+
baseResource: loader._baseResource,
|
|
129
|
+
});
|
|
130
|
+
loader._imageLoader = imageLoader;
|
|
131
|
+
await imageLoader.load();
|
|
132
|
+
|
|
133
|
+
if (loader.isDestroyed()) {
|
|
134
|
+
return;
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
// Now wait for process() to run to finish loading
|
|
138
|
+
loader._image = imageLoader.image;
|
|
139
|
+
loader._mipLevels = imageLoader.mipLevels;
|
|
140
|
+
loader._state = ResourceLoaderState.LOADED;
|
|
141
|
+
|
|
142
|
+
return loader;
|
|
143
|
+
} catch (error) {
|
|
144
|
+
if (loader.isDestroyed()) {
|
|
145
|
+
return;
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
loader.unload();
|
|
149
|
+
loader._state = ResourceLoaderState.FAILED;
|
|
150
|
+
const errorMessage = "Failed to load texture";
|
|
151
|
+
throw loader.getError(errorMessage, error);
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
|
|
136
155
|
/**
|
|
137
156
|
* Loads the resource.
|
|
138
157
|
* @returns {Promise<GltfDracoLoader>} A promise which resolves to the loader when the resource loading is completed.
|
|
139
158
|
* @private
|
|
140
159
|
*/
|
|
141
|
-
GltfTextureLoader.prototype.load = function () {
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
imageId: this._imageId,
|
|
146
|
-
gltfResource: this._gltfResource,
|
|
147
|
-
baseResource: this._baseResource,
|
|
148
|
-
});
|
|
160
|
+
GltfTextureLoader.prototype.load = async function () {
|
|
161
|
+
if (defined(this._promise)) {
|
|
162
|
+
return this._promise;
|
|
163
|
+
}
|
|
149
164
|
|
|
150
|
-
this._imageLoader = imageLoader;
|
|
151
165
|
this._state = ResourceLoaderState.LOADING;
|
|
152
|
-
|
|
153
|
-
const processPromise = new Promise(function (resolve) {
|
|
154
|
-
that._process = function (loader, frameState) {
|
|
155
|
-
if (defined(loader._texture)) {
|
|
156
|
-
// Already created texture
|
|
157
|
-
return;
|
|
158
|
-
}
|
|
159
|
-
|
|
160
|
-
if (!defined(loader._image)) {
|
|
161
|
-
// Not ready to create texture
|
|
162
|
-
return;
|
|
163
|
-
}
|
|
164
|
-
|
|
165
|
-
let texture;
|
|
166
|
-
|
|
167
|
-
if (loader._asynchronous) {
|
|
168
|
-
const textureJob = scratchTextureJob;
|
|
169
|
-
textureJob.set(
|
|
170
|
-
loader._gltf,
|
|
171
|
-
loader._textureInfo,
|
|
172
|
-
loader._image,
|
|
173
|
-
loader._mipLevels,
|
|
174
|
-
frameState.context
|
|
175
|
-
);
|
|
176
|
-
const jobScheduler = frameState.jobScheduler;
|
|
177
|
-
if (!jobScheduler.execute(textureJob, JobType.TEXTURE)) {
|
|
178
|
-
// Job scheduler is full. Try again next frame.
|
|
179
|
-
return;
|
|
180
|
-
}
|
|
181
|
-
texture = textureJob.texture;
|
|
182
|
-
} else {
|
|
183
|
-
texture = createTexture(
|
|
184
|
-
loader._gltf,
|
|
185
|
-
loader._textureInfo,
|
|
186
|
-
loader._image,
|
|
187
|
-
loader._mipLevels,
|
|
188
|
-
frameState.context
|
|
189
|
-
);
|
|
190
|
-
}
|
|
191
|
-
|
|
192
|
-
// Unload everything except the texture
|
|
193
|
-
loader.unload();
|
|
194
|
-
|
|
195
|
-
loader._texture = texture;
|
|
196
|
-
loader._state = ResourceLoaderState.READY;
|
|
197
|
-
resolve(loader);
|
|
198
|
-
};
|
|
199
|
-
});
|
|
200
|
-
|
|
201
|
-
this._promise = imageLoader.promise
|
|
202
|
-
.then(function () {
|
|
203
|
-
if (that.isDestroyed()) {
|
|
204
|
-
return;
|
|
205
|
-
}
|
|
206
|
-
// Now wait for process() to run to finish loading
|
|
207
|
-
that._image = imageLoader.image;
|
|
208
|
-
that._mipLevels = imageLoader.mipLevels;
|
|
209
|
-
that._state = ResourceLoaderState.PROCESSING;
|
|
210
|
-
return processPromise;
|
|
211
|
-
})
|
|
212
|
-
.catch(function (error) {
|
|
213
|
-
if (that.isDestroyed()) {
|
|
214
|
-
return;
|
|
215
|
-
}
|
|
216
|
-
that.unload();
|
|
217
|
-
that._state = ResourceLoaderState.FAILED;
|
|
218
|
-
const errorMessage = "Failed to load texture";
|
|
219
|
-
return Promise.reject(that.getError(errorMessage, error));
|
|
220
|
-
});
|
|
221
|
-
|
|
166
|
+
this._promise = loadResources(this);
|
|
222
167
|
return this._promise;
|
|
223
168
|
};
|
|
224
169
|
|
|
@@ -350,6 +295,7 @@ function createTexture(gltf, textureInfo, image, mipLevels, context) {
|
|
|
350
295
|
* Processes the resource until it becomes ready.
|
|
351
296
|
*
|
|
352
297
|
* @param {FrameState} frameState The frame state.
|
|
298
|
+
* @returns {boolean} true once all resourced are ready.
|
|
353
299
|
* @private
|
|
354
300
|
*/
|
|
355
301
|
GltfTextureLoader.prototype.process = function (frameState) {
|
|
@@ -357,7 +303,62 @@ GltfTextureLoader.prototype.process = function (frameState) {
|
|
|
357
303
|
Check.typeOf.object("frameState", frameState);
|
|
358
304
|
//>>includeEnd('debug');
|
|
359
305
|
|
|
360
|
-
|
|
306
|
+
if (this._state === ResourceLoaderState.READY) {
|
|
307
|
+
return true;
|
|
308
|
+
}
|
|
309
|
+
|
|
310
|
+
if (
|
|
311
|
+
this._state !== ResourceLoaderState.LOADED &&
|
|
312
|
+
this._state !== ResourceLoaderState.PROCESSING
|
|
313
|
+
) {
|
|
314
|
+
return false;
|
|
315
|
+
}
|
|
316
|
+
|
|
317
|
+
if (defined(this._texture)) {
|
|
318
|
+
// Already created texture
|
|
319
|
+
return false;
|
|
320
|
+
}
|
|
321
|
+
|
|
322
|
+
if (!defined(this._image)) {
|
|
323
|
+
// Not ready to create texture
|
|
324
|
+
return false;
|
|
325
|
+
}
|
|
326
|
+
|
|
327
|
+
this._state = ResourceLoaderState.PROCESSING;
|
|
328
|
+
|
|
329
|
+
let texture;
|
|
330
|
+
if (this._asynchronous) {
|
|
331
|
+
const textureJob = scratchTextureJob;
|
|
332
|
+
textureJob.set(
|
|
333
|
+
this._gltf,
|
|
334
|
+
this._textureInfo,
|
|
335
|
+
this._image,
|
|
336
|
+
this._mipLevels,
|
|
337
|
+
frameState.context
|
|
338
|
+
);
|
|
339
|
+
const jobScheduler = frameState.jobScheduler;
|
|
340
|
+
if (!jobScheduler.execute(textureJob, JobType.TEXTURE)) {
|
|
341
|
+
// Job scheduler is full. Try again next frame.
|
|
342
|
+
return;
|
|
343
|
+
}
|
|
344
|
+
texture = textureJob.texture;
|
|
345
|
+
} else {
|
|
346
|
+
texture = createTexture(
|
|
347
|
+
this._gltf,
|
|
348
|
+
this._textureInfo,
|
|
349
|
+
this._image,
|
|
350
|
+
this._mipLevels,
|
|
351
|
+
frameState.context
|
|
352
|
+
);
|
|
353
|
+
}
|
|
354
|
+
|
|
355
|
+
// Unload everything except the texture
|
|
356
|
+
this.unload();
|
|
357
|
+
|
|
358
|
+
this._texture = texture;
|
|
359
|
+
this._state = ResourceLoaderState.READY;
|
|
360
|
+
this._resourceCache.statistics.addTextureLoader(this);
|
|
361
|
+
return true;
|
|
361
362
|
};
|
|
362
363
|
|
|
363
364
|
/**
|
|
@@ -369,7 +370,7 @@ GltfTextureLoader.prototype.unload = function () {
|
|
|
369
370
|
this._texture.destroy();
|
|
370
371
|
}
|
|
371
372
|
|
|
372
|
-
if (defined(this._imageLoader)) {
|
|
373
|
+
if (defined(this._imageLoader) && !this._imageLoader.isDestroyed()) {
|
|
373
374
|
this._resourceCache.unload(this._imageLoader);
|
|
374
375
|
}
|
|
375
376
|
|