@cesium/engine 2.1.0 → 2.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/Build/Workers/{AxisAlignedBoundingBox-a6f9f0e5.js → AxisAlignedBoundingBox-379015ef.js} +1 -1
- package/Build/Workers/{BoundingRectangle-b0a68595.js → BoundingRectangle-57f2b24f.js} +1 -1
- package/Build/Workers/{BoxGeometry-baedd794.js → BoxGeometry-ecabfc78.js} +1 -1
- package/Build/Workers/{Color-f85df1be.js → Color-14d1a36d.js} +1 -1
- package/Build/Workers/{CoplanarPolygonGeometryLibrary-30516950.js → CoplanarPolygonGeometryLibrary-048c3c14.js} +1 -1
- package/Build/Workers/{CorridorGeometryLibrary-5d5d3b3a.js → CorridorGeometryLibrary-520c8619.js} +1 -1
- package/Build/Workers/{CylinderGeometry-d899ae26.js → CylinderGeometry-119068b8.js} +1 -1
- package/Build/Workers/{EllipseGeometry-a49f8449.js → EllipseGeometry-2dfc3523.js} +1 -1
- package/Build/Workers/{EllipseGeometryLibrary-cba7edde.js → EllipseGeometryLibrary-0a1e0170.js} +1 -1
- package/Build/Workers/{EllipseOutlineGeometry-8095c8cb.js → EllipseOutlineGeometry-c5251669.js} +1 -1
- package/Build/Workers/{EllipsoidGeometry-ed93f571.js → EllipsoidGeometry-d10a5221.js} +1 -1
- package/Build/Workers/{EllipsoidOutlineGeometry-e4854854.js → EllipsoidOutlineGeometry-7039a0ae.js} +1 -1
- package/Build/Workers/{EllipsoidTangentPlane-7ae1aa9a.js → EllipsoidTangentPlane-857186be.js} +1 -1
- package/Build/Workers/{FrustumGeometry-b62db3e3.js → FrustumGeometry-400fa1b7.js} +2 -2
- package/Build/Workers/{GeometryAttribute-780af4fa.js → GeometryAttribute-7a2de5c6.js} +1 -1
- package/Build/Workers/{GeometryPipeline-36b61c99.js → GeometryPipeline-916636fa.js} +1 -1
- package/Build/Workers/{IntersectionTests-e889fcf0.js → IntersectionTests-b4d02d4d.js} +1 -1
- package/Build/Workers/{OrientedBoundingBox-43478ac8.js → OrientedBoundingBox-96fe1752.js} +5 -3
- package/Build/Workers/{PolygonGeometryLibrary-38a98276.js → PolygonGeometryLibrary-931f1ec6.js} +1 -1
- package/Build/Workers/{PolygonPipeline-d31ff61c.js → PolygonPipeline-32fc92cc.js} +1 -1
- package/Build/Workers/{PolylinePipeline-30e4cec9.js → PolylinePipeline-6d5c63e5.js} +1 -1
- package/Build/Workers/{PolylineVolumeGeometryLibrary-90551d26.js → PolylineVolumeGeometryLibrary-f068c1fb.js} +1 -1
- package/Build/Workers/{PrimitivePipeline-558d9cb0.js → PrimitivePipeline-879f996a.js} +1 -1
- package/Build/Workers/{RectangleGeometryLibrary-815c68df.js → RectangleGeometryLibrary-2d6f36f3.js} +1 -1
- package/Build/Workers/{TerrainEncoding-341ead52.js → TerrainEncoding-82882059.js} +1 -1
- package/Build/Workers/{Transforms-9e9df299.js → Transforms-9052372a.js} +6 -5
- package/Build/Workers/{WallGeometryLibrary-ccf90976.js → WallGeometryLibrary-db7a64fb.js} +1 -1
- package/Build/Workers/cesiumWorkerBootstrapper.js +1 -1
- package/Build/Workers/combineGeometry.js +1 -1
- package/Build/Workers/createBoxGeometry.js +1 -1
- package/Build/Workers/createBoxOutlineGeometry.js +1 -1
- package/Build/Workers/createCircleGeometry.js +1 -1
- package/Build/Workers/createCircleOutlineGeometry.js +1 -1
- package/Build/Workers/createCoplanarPolygonGeometry.js +1 -1
- package/Build/Workers/createCoplanarPolygonOutlineGeometry.js +1 -1
- package/Build/Workers/createCorridorGeometry.js +1 -1
- package/Build/Workers/createCorridorOutlineGeometry.js +1 -1
- package/Build/Workers/createCylinderGeometry.js +1 -1
- package/Build/Workers/createCylinderOutlineGeometry.js +1 -1
- package/Build/Workers/createEllipseGeometry.js +1 -1
- package/Build/Workers/createEllipseOutlineGeometry.js +1 -1
- package/Build/Workers/createEllipsoidGeometry.js +1 -1
- package/Build/Workers/createEllipsoidOutlineGeometry.js +1 -1
- package/Build/Workers/createFrustumGeometry.js +1 -1
- package/Build/Workers/createFrustumOutlineGeometry.js +1 -1
- package/Build/Workers/createGeometry.js +1 -1
- package/Build/Workers/createGroundPolylineGeometry.js +1 -1
- package/Build/Workers/createPlaneGeometry.js +1 -1
- package/Build/Workers/createPlaneOutlineGeometry.js +1 -1
- package/Build/Workers/createPolygonGeometry.js +1 -1
- package/Build/Workers/createPolygonOutlineGeometry.js +1 -1
- package/Build/Workers/createPolylineGeometry.js +1 -1
- package/Build/Workers/createPolylineVolumeGeometry.js +1 -1
- package/Build/Workers/createPolylineVolumeOutlineGeometry.js +1 -1
- package/Build/Workers/createRectangleGeometry.js +1 -1
- package/Build/Workers/createRectangleOutlineGeometry.js +1 -1
- package/Build/Workers/createSimplePolylineGeometry.js +1 -1
- package/Build/Workers/createSphereGeometry.js +1 -1
- package/Build/Workers/createSphereOutlineGeometry.js +1 -1
- package/Build/Workers/createVectorTileGeometries.js +1 -1
- package/Build/Workers/createVectorTilePolygons.js +1 -1
- package/Build/Workers/createVerticesFromGoogleEarthEnterpriseBuffer.js +1 -1
- package/Build/Workers/createVerticesFromHeightmap.js +1 -1
- package/Build/Workers/createVerticesFromQuantizedTerrainMesh.js +10 -15
- package/Build/Workers/createWallGeometry.js +1 -1
- package/Build/Workers/createWallOutlineGeometry.js +1 -1
- package/Build/Workers/package.js +1 -1
- package/Build/Workers/transferTypedArrayTest.js +1 -1
- package/Build/Workers/upsampleQuantizedTerrainMesh.js +1 -1
- package/Source/Core/ArcGISTiledElevationTerrainProvider.js +291 -191
- package/Source/Core/CesiumTerrainProvider.js +571 -434
- package/Source/Core/CustomHeightmapTerrainProvider.js +12 -0
- package/Source/Core/EllipsoidTerrainProvider.js +17 -10
- package/Source/Core/FrustumGeometry.js +1 -1
- package/Source/Core/GoogleEarthEnterpriseMetadata.js +86 -34
- package/Source/Core/GoogleEarthEnterpriseTerrainProvider.js +119 -82
- package/Source/Core/Ion.js +1 -1
- package/Source/Core/IonResource.js +14 -3
- package/Source/Core/OrientedBoundingBox.js +4 -2
- package/Source/Core/RequestScheduler.js +1 -1
- package/Source/Core/Resource.js +2 -2
- package/Source/Core/TerrainProvider.js +9 -14
- package/Source/Core/TileProviderError.js +8 -8
- package/Source/Core/VRTheWorldTerrainProvider.js +193 -124
- package/Source/Core/buildModuleUrl.js +4 -3
- package/Source/Core/createWorldTerrain.js +20 -2
- package/Source/Core/createWorldTerrainAsync.js +48 -0
- package/Source/Core/sampleTerrain.js +9 -10
- package/Source/Core/sampleTerrainMostDetailed.js +66 -72
- package/Source/DataSources/Cesium3DTilesetVisualizer.js +37 -26
- package/Source/DataSources/Entity.js +6 -1
- package/Source/DataSources/ModelVisualizer.js +99 -31
- package/Source/DataSources/PolygonGraphics.js +1 -1
- package/Source/Scene/ArcGisMapServerImageryProvider.js +552 -376
- package/Source/Scene/BingMapsImageryProvider.js +511 -305
- package/Source/Scene/BufferLoader.js +29 -34
- package/Source/Scene/Cesium3DTile.js +388 -251
- package/Source/Scene/Cesium3DTileBatchTable.js +2 -2
- package/Source/Scene/Cesium3DTileContent.js +16 -0
- package/Source/Scene/Cesium3DTileContentFactory.js +4 -4
- package/Source/Scene/Cesium3DTilePass.js +8 -11
- package/Source/Scene/Cesium3DTileStyleEngine.js +1 -1
- package/Source/Scene/Cesium3DTilesVoxelProvider.js +225 -117
- package/Source/Scene/Cesium3DTileset.js +755 -481
- package/Source/Scene/Cesium3DTilesetBaseTraversal.js +301 -0
- package/Source/Scene/Cesium3DTilesetMostDetailedTraversal.js +33 -46
- package/Source/Scene/Cesium3DTilesetSkipTraversal.js +421 -0
- package/Source/Scene/Cesium3DTilesetTraversal.js +219 -671
- package/Source/Scene/ClassificationPrimitive.js +7 -0
- package/Source/Scene/Composite3DTileContent.js +69 -26
- package/Source/Scene/CreditDisplay.js +20 -4
- package/Source/Scene/DepthPlane.js +1 -1
- package/Source/Scene/Empty3DTileContent.js +31 -1
- package/Source/Scene/Geometry3DTileContent.js +47 -7
- package/Source/Scene/Globe.js +5 -1
- package/Source/Scene/GlobeSurfaceTile.js +2 -1
- package/Source/Scene/GlobeSurfaceTileProvider.js +50 -27
- package/Source/Scene/GltfBufferViewLoader.js +47 -91
- package/Source/Scene/GltfDracoLoader.js +110 -112
- package/Source/Scene/GltfImageLoader.js +71 -78
- package/Source/Scene/GltfIndexBufferLoader.js +108 -121
- package/Source/Scene/GltfJsonLoader.js +75 -74
- package/Source/Scene/GltfLoader.js +392 -280
- package/Source/Scene/GltfStructuralMetadataLoader.js +109 -110
- package/Source/Scene/GltfTextureLoader.js +97 -96
- package/Source/Scene/GltfVertexBufferLoader.js +128 -133
- package/Source/Scene/GoogleEarthEnterpriseImageryProvider.js +353 -225
- package/Source/Scene/GoogleEarthEnterpriseMapsProvider.js +491 -331
- package/Source/Scene/GridImageryProvider.js +267 -104
- package/Source/Scene/GroundPolylinePrimitive.js +12 -1
- package/Source/Scene/GroundPrimitive.js +8 -1
- package/Source/Scene/I3SDataProvider.js +214 -113
- package/Source/Scene/I3SFeature.js +7 -6
- package/Source/Scene/I3SLayer.js +26 -37
- package/Source/Scene/I3SNode.js +59 -66
- package/Source/Scene/Imagery.js +6 -1
- package/Source/Scene/ImageryLayer.js +299 -48
- package/Source/Scene/ImageryLayerCollection.js +26 -0
- package/Source/Scene/ImageryProvider.js +129 -111
- package/Source/Scene/Implicit3DTileContent.js +72 -23
- package/Source/Scene/ImplicitSubtree.js +66 -45
- package/Source/Scene/IonImageryProvider.js +471 -264
- package/Source/Scene/MapboxImageryProvider.js +272 -112
- package/Source/Scene/MapboxStyleImageryProvider.js +270 -111
- package/Source/Scene/MetadataSchemaLoader.js +26 -36
- package/Source/Scene/Model/B3dmLoader.js +42 -46
- package/Source/Scene/Model/GeoJsonLoader.js +8 -32
- package/Source/Scene/Model/I3dmLoader.js +48 -74
- package/Source/Scene/Model/Model.js +470 -132
- package/Source/Scene/Model/Model3DTileContent.js +83 -31
- package/Source/Scene/Model/ModelAnimationCollection.js +3 -3
- package/Source/Scene/Model/ModelDrawCommand.js +15 -26
- package/Source/Scene/Model/ModelUtility.js +16 -16
- package/Source/Scene/Model/PntsLoader.js +27 -32
- package/Source/Scene/Multiple3DTileContent.js +134 -115
- package/Source/Scene/PointCloud.js +11 -19
- package/Source/Scene/Primitive.js +20 -0
- package/Source/Scene/QuadtreePrimitive.js +2 -0
- package/Source/Scene/QuadtreeTileProvider.js +4 -8
- package/Source/Scene/ResourceCache.js +47 -105
- package/Source/Scene/ResourceCacheStatistics.js +24 -58
- package/Source/Scene/ResourceLoader.js +5 -17
- package/Source/Scene/ResourceLoaderState.js +12 -4
- package/Source/Scene/Scene.js +65 -0
- package/Source/Scene/ScreenSpaceCameraController.js +1 -1
- package/Source/Scene/SingleTileImageryProvider.js +382 -209
- package/Source/Scene/Terrain.js +196 -0
- package/Source/Scene/TileCoordinatesImageryProvider.js +267 -104
- package/Source/Scene/TileMapServiceImageryProvider.js +177 -85
- package/Source/Scene/Tileset3DTileContent.js +47 -5
- package/Source/Scene/TimeDynamicPointCloud.js +15 -2
- package/Source/Scene/UrlTemplateImageryProvider.js +343 -215
- package/Source/Scene/Vector3DTileClampedPolylines.js +96 -84
- package/Source/Scene/Vector3DTileContent.js +47 -22
- package/Source/Scene/Vector3DTileGeometry.js +57 -52
- package/Source/Scene/Vector3DTilePoints.js +72 -68
- package/Source/Scene/Vector3DTilePolygons.js +118 -117
- package/Source/Scene/Vector3DTilePolylines.js +86 -82
- package/Source/Scene/Vector3DTilePrimitive.js +0 -1
- package/Source/Scene/VoxelContent.js +61 -63
- package/Source/Scene/VoxelPrimitive.js +39 -91
- package/Source/Scene/VoxelProvider.js +2 -2
- package/Source/Scene/WebMapServiceImageryProvider.js +272 -111
- package/Source/Scene/WebMapTileServiceImageryProvider.js +270 -107
- package/Source/Scene/computeFlyToLocationForRectangle.js +33 -37
- package/Source/Scene/createOsmBuildings.js +6 -0
- package/Source/Scene/createOsmBuildingsAsync.js +82 -0
- package/Source/Scene/createWorldImagery.js +14 -5
- package/Source/Scene/createWorldImageryAsync.js +39 -0
- package/Source/Widget/CesiumWidget.js +55 -27
- package/index.d.ts +2158 -1395
- package/index.js +58 -51
- package/package.json +1 -1
|
@@ -129,34 +129,17 @@ if (defined(Object.create)) {
|
|
|
129
129
|
|
|
130
130
|
Object.defineProperties(B3dmLoader.prototype, {
|
|
131
131
|
/**
|
|
132
|
-
*
|
|
132
|
+
* true if textures are loaded, useful when incrementallyLoadTextures is true
|
|
133
133
|
*
|
|
134
134
|
* @memberof B3dmLoader.prototype
|
|
135
135
|
*
|
|
136
|
-
* @type {
|
|
136
|
+
* @type {boolean}
|
|
137
137
|
* @readonly
|
|
138
138
|
* @private
|
|
139
139
|
*/
|
|
140
|
-
|
|
140
|
+
texturesLoaded: {
|
|
141
141
|
get: function () {
|
|
142
|
-
return this.
|
|
143
|
-
},
|
|
144
|
-
},
|
|
145
|
-
|
|
146
|
-
/**
|
|
147
|
-
* A promise that resolves when all textures are loaded.
|
|
148
|
-
* When <code>incrementallyLoadTextures</code> is true this may resolve after
|
|
149
|
-
* <code>promise</code> resolves.
|
|
150
|
-
*
|
|
151
|
-
* @memberof B3dmLoader.prototype
|
|
152
|
-
*
|
|
153
|
-
* @type {Promise}
|
|
154
|
-
* @readonly
|
|
155
|
-
* @private
|
|
156
|
-
*/
|
|
157
|
-
texturesLoadedPromise: {
|
|
158
|
-
get: function () {
|
|
159
|
-
return this._gltfLoader.texturesLoadedPromise;
|
|
142
|
+
return this._gltfLoader?.texturesLoaded;
|
|
160
143
|
},
|
|
161
144
|
},
|
|
162
145
|
/**
|
|
@@ -196,6 +179,10 @@ Object.defineProperties(B3dmLoader.prototype, {
|
|
|
196
179
|
* @private
|
|
197
180
|
*/
|
|
198
181
|
B3dmLoader.prototype.load = function () {
|
|
182
|
+
if (defined(this._promise)) {
|
|
183
|
+
return this._promise;
|
|
184
|
+
}
|
|
185
|
+
|
|
199
186
|
const b3dm = B3dmParser.parse(this._arrayBuffer, this._byteOffset);
|
|
200
187
|
|
|
201
188
|
let batchLength = b3dm.batchLength;
|
|
@@ -246,37 +233,21 @@ B3dmLoader.prototype.load = function () {
|
|
|
246
233
|
this._state = B3dmLoaderState.LOADING;
|
|
247
234
|
|
|
248
235
|
const that = this;
|
|
249
|
-
gltfLoader
|
|
250
|
-
|
|
236
|
+
this._promise = gltfLoader
|
|
237
|
+
.load()
|
|
251
238
|
.then(function () {
|
|
252
239
|
if (that.isDestroyed()) {
|
|
253
240
|
return;
|
|
254
241
|
}
|
|
255
242
|
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
// Combine the RTC_CENTER transform from the b3dm and the CESIUM_RTC
|
|
259
|
-
// transform from the glTF. In practice usually only one or the
|
|
260
|
-
// other is supplied. If they don't exist the transforms will
|
|
261
|
-
// be identity matrices.
|
|
262
|
-
components.transform = Matrix4.multiplyTransformation(
|
|
263
|
-
that._transform,
|
|
264
|
-
components.transform,
|
|
265
|
-
components.transform
|
|
266
|
-
);
|
|
267
|
-
createStructuralMetadata(that, components);
|
|
268
|
-
that._components = components;
|
|
269
|
-
|
|
270
|
-
// Now that we have the parsed components, we can release the array buffer
|
|
271
|
-
that._arrayBuffer = undefined;
|
|
272
|
-
|
|
273
|
-
that._state = B3dmLoaderState.READY;
|
|
243
|
+
that._state = B3dmLoaderState.PROCESSING;
|
|
274
244
|
return that;
|
|
275
245
|
})
|
|
276
246
|
.catch(function (error) {
|
|
277
247
|
if (that.isDestroyed()) {
|
|
278
248
|
return;
|
|
279
249
|
}
|
|
250
|
+
|
|
280
251
|
return handleError(that, error);
|
|
281
252
|
});
|
|
282
253
|
|
|
@@ -296,13 +267,38 @@ B3dmLoader.prototype.process = function (frameState) {
|
|
|
296
267
|
Check.typeOf.object("frameState", frameState);
|
|
297
268
|
//>>includeEnd('debug');
|
|
298
269
|
|
|
299
|
-
if (this._state === B3dmLoaderState.
|
|
300
|
-
|
|
270
|
+
if (this._state === B3dmLoaderState.READY) {
|
|
271
|
+
return true;
|
|
272
|
+
}
|
|
273
|
+
|
|
274
|
+
if (this._state !== B3dmLoaderState.PROCESSING) {
|
|
275
|
+
return false;
|
|
301
276
|
}
|
|
302
277
|
|
|
303
|
-
|
|
304
|
-
|
|
278
|
+
const ready = this._gltfLoader.process(frameState);
|
|
279
|
+
if (!ready) {
|
|
280
|
+
return false;
|
|
305
281
|
}
|
|
282
|
+
|
|
283
|
+
const components = this._gltfLoader.components;
|
|
284
|
+
|
|
285
|
+
// Combine the RTC_CENTER transform from the b3dm and the CESIUM_RTC
|
|
286
|
+
// transform from the glTF. In practice usually only one or the
|
|
287
|
+
// other is supplied. If they don't exist the transforms will
|
|
288
|
+
// be identity matrices.
|
|
289
|
+
components.transform = Matrix4.multiplyTransformation(
|
|
290
|
+
this._transform,
|
|
291
|
+
components.transform,
|
|
292
|
+
components.transform
|
|
293
|
+
);
|
|
294
|
+
createStructuralMetadata(this, components);
|
|
295
|
+
this._components = components;
|
|
296
|
+
|
|
297
|
+
// Now that we have the parsed components, we can release the array buffer
|
|
298
|
+
this._arrayBuffer = undefined;
|
|
299
|
+
|
|
300
|
+
this._state = B3dmLoaderState.READY;
|
|
301
|
+
return true;
|
|
306
302
|
};
|
|
307
303
|
|
|
308
304
|
function createStructuralMetadata(loader, components) {
|
|
@@ -368,7 +364,7 @@ function processNode(node) {
|
|
|
368
364
|
}
|
|
369
365
|
|
|
370
366
|
B3dmLoader.prototype.unload = function () {
|
|
371
|
-
if (defined(this._gltfLoader)) {
|
|
367
|
+
if (defined(this._gltfLoader) && !this._gltfLoader.isDestroyed()) {
|
|
372
368
|
this._gltfLoader.unload();
|
|
373
369
|
}
|
|
374
370
|
|
|
@@ -48,8 +48,6 @@ function GeoJsonLoader(options) {
|
|
|
48
48
|
//>>includeEnd('debug');
|
|
49
49
|
|
|
50
50
|
this._geoJson = options.geoJson;
|
|
51
|
-
this._promise = undefined;
|
|
52
|
-
this._process = function (loader, frameState) {};
|
|
53
51
|
this._components = undefined;
|
|
54
52
|
}
|
|
55
53
|
|
|
@@ -59,20 +57,6 @@ if (defined(Object.create)) {
|
|
|
59
57
|
}
|
|
60
58
|
|
|
61
59
|
Object.defineProperties(GeoJsonLoader.prototype, {
|
|
62
|
-
/**
|
|
63
|
-
* A promise that resolves to the resource when the resource is ready, or undefined if the resource has not yet started loading.
|
|
64
|
-
*
|
|
65
|
-
* @memberof GeoJsonLoader.prototype
|
|
66
|
-
*
|
|
67
|
-
* @type {Promise<GeoJsonLoader>|Undefined}
|
|
68
|
-
* @readonly
|
|
69
|
-
* @private
|
|
70
|
-
*/
|
|
71
|
-
promise: {
|
|
72
|
-
get: function () {
|
|
73
|
-
return this._promise;
|
|
74
|
-
},
|
|
75
|
-
},
|
|
76
60
|
/**
|
|
77
61
|
* The cache key of the resource.
|
|
78
62
|
*
|
|
@@ -109,21 +93,7 @@ Object.defineProperties(GeoJsonLoader.prototype, {
|
|
|
109
93
|
* @private
|
|
110
94
|
*/
|
|
111
95
|
GeoJsonLoader.prototype.load = function () {
|
|
112
|
-
|
|
113
|
-
const promise = new Promise(function (resolve) {
|
|
114
|
-
loader._process = function (loader, frameState) {
|
|
115
|
-
if (defined(loader._components)) {
|
|
116
|
-
return;
|
|
117
|
-
}
|
|
118
|
-
|
|
119
|
-
loader._components = parse(loader._geoJson, frameState);
|
|
120
|
-
loader._geoJson = undefined;
|
|
121
|
-
resolve(loader);
|
|
122
|
-
};
|
|
123
|
-
});
|
|
124
|
-
|
|
125
|
-
this._promise = promise;
|
|
126
|
-
return promise;
|
|
96
|
+
return Promise.resolve(this);
|
|
127
97
|
};
|
|
128
98
|
|
|
129
99
|
/**
|
|
@@ -137,7 +107,13 @@ GeoJsonLoader.prototype.process = function (frameState) {
|
|
|
137
107
|
Check.typeOf.object("frameState", frameState);
|
|
138
108
|
//>>includeEnd('debug');
|
|
139
109
|
|
|
140
|
-
this.
|
|
110
|
+
if (defined(this._components)) {
|
|
111
|
+
return true;
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
this._components = parse(this._geoJson, frameState);
|
|
115
|
+
this._geoJson = undefined;
|
|
116
|
+
return true;
|
|
141
117
|
};
|
|
142
118
|
|
|
143
119
|
function ParsedFeature() {
|
|
@@ -116,9 +116,6 @@ function I3dmLoader(options) {
|
|
|
116
116
|
this._promise = undefined;
|
|
117
117
|
|
|
118
118
|
this._gltfLoader = undefined;
|
|
119
|
-
this._gltfLoaderPromise = undefined;
|
|
120
|
-
this._process = function (loader, frameState) {};
|
|
121
|
-
this._postProcess = function (loader, frameState) {};
|
|
122
119
|
|
|
123
120
|
// Instanced attributes are initially parsed as typed arrays, but if they
|
|
124
121
|
// do not need to be further processed (e.g. turned into transform matrices),
|
|
@@ -140,34 +137,17 @@ if (defined(Object.create)) {
|
|
|
140
137
|
|
|
141
138
|
Object.defineProperties(I3dmLoader.prototype, {
|
|
142
139
|
/**
|
|
143
|
-
*
|
|
140
|
+
* true if textures are loaded, useful when incrementallyLoadTextures is true
|
|
144
141
|
*
|
|
145
|
-
* @memberof
|
|
146
|
-
*
|
|
147
|
-
* @type {Promise<I3dmLoader>|undefined}
|
|
148
|
-
* @readonly
|
|
149
|
-
* @private
|
|
150
|
-
*/
|
|
151
|
-
promise: {
|
|
152
|
-
get: function () {
|
|
153
|
-
return this._promise;
|
|
154
|
-
},
|
|
155
|
-
},
|
|
156
|
-
|
|
157
|
-
/**
|
|
158
|
-
* A promise that resolves when all textures are loaded.
|
|
159
|
-
* When <code>incrementallyLoadTextures</code> is true this may resolve after
|
|
160
|
-
* <code>promise</code> resolves.
|
|
142
|
+
* @memberof I3dmLoader.prototype
|
|
161
143
|
*
|
|
162
|
-
* @
|
|
163
|
-
*
|
|
164
|
-
* @type {Promise}
|
|
144
|
+
* @type {boolean}
|
|
165
145
|
* @readonly
|
|
166
146
|
* @private
|
|
167
147
|
*/
|
|
168
|
-
|
|
148
|
+
texturesLoaded: {
|
|
169
149
|
get: function () {
|
|
170
|
-
return this._gltfLoader
|
|
150
|
+
return this._gltfLoader?.texturesLoaded;
|
|
171
151
|
},
|
|
172
152
|
},
|
|
173
153
|
/**
|
|
@@ -208,6 +188,10 @@ Object.defineProperties(I3dmLoader.prototype, {
|
|
|
208
188
|
* @private
|
|
209
189
|
*/
|
|
210
190
|
I3dmLoader.prototype.load = function () {
|
|
191
|
+
if (defined(this._promise)) {
|
|
192
|
+
return this._promise;
|
|
193
|
+
}
|
|
194
|
+
|
|
211
195
|
// Parse the i3dm into its various sections.
|
|
212
196
|
const i3dm = I3dmParser.parse(this._arrayBuffer, this._byteOffset);
|
|
213
197
|
|
|
@@ -282,53 +266,21 @@ I3dmLoader.prototype.load = function () {
|
|
|
282
266
|
this._gltfLoader = gltfLoader;
|
|
283
267
|
this._state = I3dmLoaderState.LOADING;
|
|
284
268
|
|
|
285
|
-
gltfLoader
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
that._process = function (loader, frameState) {
|
|
290
|
-
loader._gltfLoader.process(frameState);
|
|
291
|
-
};
|
|
292
|
-
|
|
293
|
-
that._postProcess = function (loader, frameState) {
|
|
294
|
-
const gltfLoader = loader._gltfLoader;
|
|
295
|
-
const components = gltfLoader.components;
|
|
296
|
-
|
|
297
|
-
// Combine the RTC_CENTER transform from the i3dm and the CESIUM_RTC
|
|
298
|
-
// transform from the glTF. In practice CESIUM_RTC is not set for
|
|
299
|
-
// instanced models but multiply the transforms just in case.
|
|
300
|
-
components.transform = Matrix4.multiplyTransformation(
|
|
301
|
-
loader._transform,
|
|
302
|
-
components.transform,
|
|
303
|
-
components.transform
|
|
304
|
-
);
|
|
305
|
-
|
|
306
|
-
createInstances(loader, components, frameState);
|
|
307
|
-
createStructuralMetadata(loader, components);
|
|
308
|
-
loader._components = components;
|
|
309
|
-
|
|
310
|
-
// Now that we have the parsed components, we can release the array buffer
|
|
311
|
-
loader._arrayBuffer = undefined;
|
|
312
|
-
|
|
313
|
-
loader._state = I3dmLoaderState.READY;
|
|
314
|
-
resolve(loader);
|
|
315
|
-
};
|
|
316
|
-
});
|
|
317
|
-
|
|
318
|
-
this._promise = gltfLoader.promise
|
|
319
|
-
.then(function () {
|
|
320
|
-
if (that.isDestroyed()) {
|
|
269
|
+
this._promise = gltfLoader
|
|
270
|
+
.load()
|
|
271
|
+
.then(() => {
|
|
272
|
+
if (this.isDestroyed()) {
|
|
321
273
|
return;
|
|
322
274
|
}
|
|
323
|
-
that._state = I3dmLoaderState.POST_PROCESSING;
|
|
324
275
|
|
|
325
|
-
|
|
276
|
+
this._state = I3dmLoaderState.PROCESSING;
|
|
277
|
+
return this;
|
|
326
278
|
})
|
|
327
|
-
.catch(
|
|
328
|
-
if (
|
|
279
|
+
.catch((error) => {
|
|
280
|
+
if (this.isDestroyed()) {
|
|
329
281
|
return;
|
|
330
282
|
}
|
|
331
|
-
|
|
283
|
+
throw handleError(this, error);
|
|
332
284
|
});
|
|
333
285
|
|
|
334
286
|
return this._promise;
|
|
@@ -338,8 +290,7 @@ function handleError(i3dmLoader, error) {
|
|
|
338
290
|
i3dmLoader.unload();
|
|
339
291
|
i3dmLoader._state = I3dmLoaderState.FAILED;
|
|
340
292
|
const errorMessage = "Failed to load i3dm";
|
|
341
|
-
|
|
342
|
-
return Promise.reject(error);
|
|
293
|
+
return i3dmLoader.getError(errorMessage, error);
|
|
343
294
|
}
|
|
344
295
|
|
|
345
296
|
I3dmLoader.prototype.process = function (frameState) {
|
|
@@ -347,17 +298,40 @@ I3dmLoader.prototype.process = function (frameState) {
|
|
|
347
298
|
Check.typeOf.object("frameState", frameState);
|
|
348
299
|
//>>includeEnd('debug');
|
|
349
300
|
|
|
350
|
-
if (this._state === I3dmLoaderState.
|
|
351
|
-
|
|
301
|
+
if (this._state === I3dmLoaderState.READY) {
|
|
302
|
+
return true;
|
|
352
303
|
}
|
|
353
304
|
|
|
305
|
+
const gltfLoader = this._gltfLoader;
|
|
306
|
+
let ready = false;
|
|
354
307
|
if (this._state === I3dmLoaderState.PROCESSING) {
|
|
355
|
-
|
|
308
|
+
ready = gltfLoader.process(frameState);
|
|
356
309
|
}
|
|
357
310
|
|
|
358
|
-
if (
|
|
359
|
-
|
|
311
|
+
if (!ready) {
|
|
312
|
+
return false;
|
|
360
313
|
}
|
|
314
|
+
|
|
315
|
+
const components = gltfLoader.components;
|
|
316
|
+
|
|
317
|
+
// Combine the RTC_CENTER transform from the i3dm and the CESIUM_RTC
|
|
318
|
+
// transform from the glTF. In practice CESIUM_RTC is not set for
|
|
319
|
+
// instanced models but multiply the transforms just in case.
|
|
320
|
+
components.transform = Matrix4.multiplyTransformation(
|
|
321
|
+
this._transform,
|
|
322
|
+
components.transform,
|
|
323
|
+
components.transform
|
|
324
|
+
);
|
|
325
|
+
|
|
326
|
+
createInstances(this, components, frameState);
|
|
327
|
+
createStructuralMetadata(this, components);
|
|
328
|
+
this._components = components;
|
|
329
|
+
|
|
330
|
+
// Now that we have the parsed components, we can release the array buffer
|
|
331
|
+
this._arrayBuffer = undefined;
|
|
332
|
+
|
|
333
|
+
this._state = I3dmLoaderState.READY;
|
|
334
|
+
return true;
|
|
361
335
|
};
|
|
362
336
|
|
|
363
337
|
function createStructuralMetadata(loader, components) {
|
|
@@ -895,7 +869,7 @@ I3dmLoader.prototype.isUnloaded = function () {
|
|
|
895
869
|
};
|
|
896
870
|
|
|
897
871
|
I3dmLoader.prototype.unload = function () {
|
|
898
|
-
if (defined(this._gltfLoader)) {
|
|
872
|
+
if (defined(this._gltfLoader) && !this._gltfLoader.isDestroyed()) {
|
|
899
873
|
this._gltfLoader.unload();
|
|
900
874
|
}
|
|
901
875
|
|