@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
|
@@ -2,6 +2,7 @@ import ColorGeometryInstanceAttribute from "../Core/ColorGeometryInstanceAttribu
|
|
|
2
2
|
import combine from "../Core/combine.js";
|
|
3
3
|
import defaultValue from "../Core/defaultValue.js";
|
|
4
4
|
import defined from "../Core/defined.js";
|
|
5
|
+
import deprecationWarning from "../Core/deprecationWarning.js";
|
|
5
6
|
import destroyObject from "../Core/destroyObject.js";
|
|
6
7
|
import DeveloperError from "../Core/DeveloperError.js";
|
|
7
8
|
import GeometryInstance from "../Core/GeometryInstance.js";
|
|
@@ -164,6 +165,7 @@ function ClassificationPrimitive(options) {
|
|
|
164
165
|
this._ready = false;
|
|
165
166
|
|
|
166
167
|
const classificationPrimitive = this;
|
|
168
|
+
// This is here for backwards compatibility. This promise wrapper can be removed once readyPromise is removed.
|
|
167
169
|
this._readyPromise = new Promise((resolve, reject) => {
|
|
168
170
|
classificationPrimitive._completeLoad = () => {
|
|
169
171
|
if (this._ready) {
|
|
@@ -340,9 +342,14 @@ Object.defineProperties(ClassificationPrimitive.prototype, {
|
|
|
340
342
|
* @memberof ClassificationPrimitive.prototype
|
|
341
343
|
* @type {Promise<ClassificationPrimitive>}
|
|
342
344
|
* @readonly
|
|
345
|
+
* @deprecated
|
|
343
346
|
*/
|
|
344
347
|
readyPromise: {
|
|
345
348
|
get: function () {
|
|
349
|
+
deprecationWarning(
|
|
350
|
+
"ClassificationPrimitive.readyPromise",
|
|
351
|
+
"ClassificationPrimitive.readyPromise was deprecated in CesiumJS 1.104. It will be removed in 1.107. Wait for ClassificationPrimitive.ready to return true instead."
|
|
352
|
+
);
|
|
346
353
|
return this._readyPromise;
|
|
347
354
|
},
|
|
348
355
|
},
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import defaultValue from "../Core/defaultValue.js";
|
|
2
2
|
import defined from "../Core/defined.js";
|
|
3
|
+
import deprecationWarning from "../Core/deprecationWarning.js";
|
|
3
4
|
import destroyObject from "../Core/destroyObject.js";
|
|
4
5
|
import getMagic from "../Core/getMagic.js";
|
|
5
6
|
import RuntimeError from "../Core/RuntimeError.js";
|
|
@@ -17,23 +18,24 @@ import RuntimeError from "../Core/RuntimeError.js";
|
|
|
17
18
|
*
|
|
18
19
|
* @private
|
|
19
20
|
*/
|
|
20
|
-
function Composite3DTileContent(
|
|
21
|
-
tileset,
|
|
22
|
-
tile,
|
|
23
|
-
resource,
|
|
24
|
-
arrayBuffer,
|
|
25
|
-
byteOffset,
|
|
26
|
-
factory
|
|
27
|
-
) {
|
|
21
|
+
function Composite3DTileContent(tileset, tile, resource, contents) {
|
|
28
22
|
this._tileset = tileset;
|
|
29
23
|
this._tile = tile;
|
|
30
24
|
this._resource = resource;
|
|
31
|
-
|
|
25
|
+
|
|
26
|
+
if (!defined(contents)) {
|
|
27
|
+
contents = [];
|
|
28
|
+
}
|
|
29
|
+
this._contents = contents;
|
|
32
30
|
|
|
33
31
|
this._metadata = undefined;
|
|
34
32
|
this._group = undefined;
|
|
33
|
+
this._ready = false;
|
|
35
34
|
|
|
36
|
-
this.
|
|
35
|
+
this._resolveContent = undefined;
|
|
36
|
+
this._readyPromise = new Promise((resolve) => {
|
|
37
|
+
this._resolveContent = resolve;
|
|
38
|
+
});
|
|
37
39
|
}
|
|
38
40
|
|
|
39
41
|
Object.defineProperties(Composite3DTileContent.prototype, {
|
|
@@ -130,8 +132,37 @@ Object.defineProperties(Composite3DTileContent.prototype, {
|
|
|
130
132
|
},
|
|
131
133
|
},
|
|
132
134
|
|
|
135
|
+
/**
|
|
136
|
+
* Returns true when the tile's content is ready to render; otherwise false
|
|
137
|
+
*
|
|
138
|
+
* @memberof Composite3DTileContent.prototype
|
|
139
|
+
*
|
|
140
|
+
* @type {boolean}
|
|
141
|
+
* @readonly
|
|
142
|
+
* @private
|
|
143
|
+
*/
|
|
144
|
+
ready: {
|
|
145
|
+
get: function () {
|
|
146
|
+
return this._ready;
|
|
147
|
+
},
|
|
148
|
+
},
|
|
149
|
+
|
|
150
|
+
/**
|
|
151
|
+
* Gets the promise that will be resolved when the tile's content is ready to render.
|
|
152
|
+
*
|
|
153
|
+
* @memberof Composite3DTileContent.prototype
|
|
154
|
+
*
|
|
155
|
+
* @type {Promise<Composite3DTileContent>}
|
|
156
|
+
* @readonly
|
|
157
|
+
* @deprecated
|
|
158
|
+
* @private
|
|
159
|
+
*/
|
|
133
160
|
readyPromise: {
|
|
134
161
|
get: function () {
|
|
162
|
+
deprecationWarning(
|
|
163
|
+
"Composite3DTileContent.readyPromise",
|
|
164
|
+
"Composite3DTileContent.readyPromise was deprecated in CesiumJS 1.104. It will be removed in 1.107. Wait for Composite3DTileContent.ready to return true instead."
|
|
165
|
+
);
|
|
135
166
|
return this._readyPromise;
|
|
136
167
|
},
|
|
137
168
|
},
|
|
@@ -210,7 +241,14 @@ Object.defineProperties(Composite3DTileContent.prototype, {
|
|
|
210
241
|
|
|
211
242
|
const sizeOfUint32 = Uint32Array.BYTES_PER_ELEMENT;
|
|
212
243
|
|
|
213
|
-
|
|
244
|
+
Composite3DTileContent.fromTileType = async function (
|
|
245
|
+
tileset,
|
|
246
|
+
tile,
|
|
247
|
+
resource,
|
|
248
|
+
arrayBuffer,
|
|
249
|
+
byteOffset,
|
|
250
|
+
factory
|
|
251
|
+
) {
|
|
214
252
|
byteOffset = defaultValue(byteOffset, 0);
|
|
215
253
|
|
|
216
254
|
const uint8Array = new Uint8Array(arrayBuffer);
|
|
@@ -231,14 +269,11 @@ function initialize(content, arrayBuffer, byteOffset, factory) {
|
|
|
231
269
|
const tilesLength = view.getUint32(byteOffset, true);
|
|
232
270
|
byteOffset += sizeOfUint32;
|
|
233
271
|
|
|
234
|
-
const contentPromises = [];
|
|
235
|
-
|
|
236
272
|
// For caching purposes, models within the composite tile must be
|
|
237
273
|
// distinguished. To do this, add a query parameter ?compositeIndex=i.
|
|
238
274
|
// Since composite tiles may contain other composite tiles, check for an
|
|
239
275
|
// existing prefix and separate them with underscores. e.g.
|
|
240
276
|
// ?compositeIndex=0_1_1
|
|
241
|
-
const resource = content._resource;
|
|
242
277
|
let prefix = resource.queryParameters.compositeIndex;
|
|
243
278
|
if (defined(prefix)) {
|
|
244
279
|
// We'll be adding another value at the end, so add an underscore.
|
|
@@ -248,6 +283,8 @@ function initialize(content, arrayBuffer, byteOffset, factory) {
|
|
|
248
283
|
prefix = "";
|
|
249
284
|
}
|
|
250
285
|
|
|
286
|
+
const promises = [];
|
|
287
|
+
promises.length = tilesLength;
|
|
251
288
|
for (let i = 0; i < tilesLength; ++i) {
|
|
252
289
|
const tileType = getMagic(uint8Array, byteOffset);
|
|
253
290
|
|
|
@@ -265,15 +302,9 @@ function initialize(content, arrayBuffer, byteOffset, factory) {
|
|
|
265
302
|
});
|
|
266
303
|
|
|
267
304
|
if (defined(contentFactory)) {
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
content._tile,
|
|
271
|
-
childResource,
|
|
272
|
-
arrayBuffer,
|
|
273
|
-
byteOffset
|
|
305
|
+
promises[i] = Promise.resolve(
|
|
306
|
+
contentFactory(tileset, tile, childResource, arrayBuffer, byteOffset)
|
|
274
307
|
);
|
|
275
|
-
content._contents.push(innerContent);
|
|
276
|
-
contentPromises.push(innerContent.readyPromise);
|
|
277
308
|
} else {
|
|
278
309
|
throw new RuntimeError(
|
|
279
310
|
`Unknown tile content type, ${tileType}, inside Composite tile`
|
|
@@ -283,10 +314,15 @@ function initialize(content, arrayBuffer, byteOffset, factory) {
|
|
|
283
314
|
byteOffset += tileByteLength;
|
|
284
315
|
}
|
|
285
316
|
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
317
|
+
const innerContents = await Promise.all(promises);
|
|
318
|
+
const content = new Composite3DTileContent(
|
|
319
|
+
tileset,
|
|
320
|
+
tile,
|
|
321
|
+
resource,
|
|
322
|
+
innerContents
|
|
323
|
+
);
|
|
324
|
+
return content;
|
|
325
|
+
};
|
|
290
326
|
|
|
291
327
|
/**
|
|
292
328
|
* Part of the {@link Cesium3DTileContent} interface. <code>Composite3DTileContent</code>
|
|
@@ -326,8 +362,15 @@ Composite3DTileContent.prototype.applyStyle = function (style) {
|
|
|
326
362
|
Composite3DTileContent.prototype.update = function (tileset, frameState) {
|
|
327
363
|
const contents = this._contents;
|
|
328
364
|
const length = contents.length;
|
|
365
|
+
let ready = true;
|
|
329
366
|
for (let i = 0; i < length; ++i) {
|
|
330
367
|
contents[i].update(tileset, frameState);
|
|
368
|
+
ready = ready && contents[i].ready;
|
|
369
|
+
}
|
|
370
|
+
|
|
371
|
+
if (!this._ready && ready) {
|
|
372
|
+
this._ready = true;
|
|
373
|
+
this._resolveContent(this);
|
|
331
374
|
}
|
|
332
375
|
};
|
|
333
376
|
|
|
@@ -174,7 +174,7 @@ function addStyle(selector, styles) {
|
|
|
174
174
|
return style;
|
|
175
175
|
}
|
|
176
176
|
|
|
177
|
-
function appendCss() {
|
|
177
|
+
function appendCss(container) {
|
|
178
178
|
let style = "";
|
|
179
179
|
style += addStyle(".cesium-credit-lightbox-overlay", {
|
|
180
180
|
display: "none",
|
|
@@ -270,10 +270,26 @@ function appendCss() {
|
|
|
270
270
|
}
|
|
271
271
|
);
|
|
272
272
|
|
|
273
|
-
|
|
273
|
+
function getShadowRoot(container) {
|
|
274
|
+
if (container.shadowRoot) {
|
|
275
|
+
return container.shadowRoot;
|
|
276
|
+
}
|
|
277
|
+
if (container.getRootNode) {
|
|
278
|
+
const root = container.getRootNode();
|
|
279
|
+
if (root instanceof ShadowRoot) {
|
|
280
|
+
return root;
|
|
281
|
+
}
|
|
282
|
+
}
|
|
283
|
+
return undefined;
|
|
284
|
+
}
|
|
285
|
+
|
|
286
|
+
const shadowRootOrDocumentHead = defaultValue(
|
|
287
|
+
getShadowRoot(container),
|
|
288
|
+
document.head
|
|
289
|
+
);
|
|
274
290
|
const css = document.createElement("style");
|
|
275
291
|
css.innerHTML = style;
|
|
276
|
-
|
|
292
|
+
shadowRootOrDocumentHead.appendChild(css);
|
|
277
293
|
}
|
|
278
294
|
|
|
279
295
|
/**
|
|
@@ -343,7 +359,7 @@ function CreditDisplay(container, delimiter, viewport) {
|
|
|
343
359
|
expandLink.textContent = "Data attribution";
|
|
344
360
|
container.appendChild(expandLink);
|
|
345
361
|
|
|
346
|
-
appendCss();
|
|
362
|
+
appendCss(container);
|
|
347
363
|
const cesiumCredit = Credit.clone(CreditDisplay.cesiumCredit);
|
|
348
364
|
|
|
349
365
|
this._delimiter = defaultValue(delimiter, " • ");
|
|
@@ -125,7 +125,7 @@ DepthPlane.prototype.update = function (frameState) {
|
|
|
125
125
|
|
|
126
126
|
const context = frameState.context;
|
|
127
127
|
|
|
128
|
-
// Allow offsetting the ellipsoid radius to address rendering
|
|
128
|
+
// Allow offsetting the ellipsoid radius to address rendering artifacts below ellipsoid zero elevation.
|
|
129
129
|
const radii = frameState.mapProjection.ellipsoid.radii;
|
|
130
130
|
const ellipsoid = new Ellipsoid(
|
|
131
131
|
radii.x + this._ellipsoidOffset,
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import deprecationWarning from "../Core/deprecationWarning.js";
|
|
1
2
|
import destroyObject from "../Core/destroyObject.js";
|
|
2
3
|
import DeveloperError from "../Core/DeveloperError.js";
|
|
3
4
|
|
|
@@ -64,9 +65,38 @@ Object.defineProperties(Empty3DTileContent.prototype, {
|
|
|
64
65
|
},
|
|
65
66
|
},
|
|
66
67
|
|
|
68
|
+
/**
|
|
69
|
+
* Returns true when the tile's content is ready to render; otherwise false
|
|
70
|
+
*
|
|
71
|
+
* @memberof Empty3DTileContent.prototype
|
|
72
|
+
*
|
|
73
|
+
* @type {boolean}
|
|
74
|
+
* @readonly
|
|
75
|
+
* @private
|
|
76
|
+
*/
|
|
77
|
+
ready: {
|
|
78
|
+
get: function () {
|
|
79
|
+
return true;
|
|
80
|
+
},
|
|
81
|
+
},
|
|
82
|
+
|
|
83
|
+
/**
|
|
84
|
+
* Gets the promise that will be resolved when the tile's content is ready to render.
|
|
85
|
+
*
|
|
86
|
+
* @memberof Empty3DTileContent.prototype
|
|
87
|
+
*
|
|
88
|
+
* @type {Promise<Empty3DTileContent>}
|
|
89
|
+
* @readonly
|
|
90
|
+
* @deprecated
|
|
91
|
+
* @private
|
|
92
|
+
*/
|
|
67
93
|
readyPromise: {
|
|
68
94
|
get: function () {
|
|
69
|
-
|
|
95
|
+
deprecationWarning(
|
|
96
|
+
"Empty3DTileContent.readyPromise",
|
|
97
|
+
"Empty3DTileContent.readyPromise was deprecated in CesiumJS 1.104. It will be removed in 1.107. Wait for Empty3DTileContent.ready to return true instead."
|
|
98
|
+
);
|
|
99
|
+
return Promise.resolve(this);
|
|
70
100
|
},
|
|
71
101
|
},
|
|
72
102
|
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import Cartesian3 from "../Core/Cartesian3.js";
|
|
2
2
|
import defaultValue from "../Core/defaultValue.js";
|
|
3
3
|
import defined from "../Core/defined.js";
|
|
4
|
+
import deprecationWarning from "../Core/deprecationWarning.js";
|
|
4
5
|
import destroyObject from "../Core/destroyObject.js";
|
|
5
6
|
import DeveloperError from "../Core/DeveloperError.js";
|
|
6
7
|
import getJsonFromTypedArray from "../Core/getJsonFromTypedArray.js";
|
|
@@ -42,7 +43,15 @@ function Geometry3DTileContent(
|
|
|
42
43
|
this.featurePropertiesDirty = false;
|
|
43
44
|
this._group = undefined;
|
|
44
45
|
|
|
45
|
-
this.
|
|
46
|
+
this._ready = false;
|
|
47
|
+
|
|
48
|
+
// This is for backwards compatibility. It can be removed once readyPromise is removed.
|
|
49
|
+
this._resolveContent = undefined;
|
|
50
|
+
this._readyPromise = new Promise((resolve) => {
|
|
51
|
+
this._resolveContent = resolve;
|
|
52
|
+
});
|
|
53
|
+
|
|
54
|
+
initialize(this, arrayBuffer, byteOffset);
|
|
46
55
|
}
|
|
47
56
|
|
|
48
57
|
Object.defineProperties(Geometry3DTileContent.prototype, {
|
|
@@ -96,8 +105,37 @@ Object.defineProperties(Geometry3DTileContent.prototype, {
|
|
|
96
105
|
},
|
|
97
106
|
},
|
|
98
107
|
|
|
108
|
+
/**
|
|
109
|
+
* Returns true when the tile's content is ready to render; otherwise false
|
|
110
|
+
*
|
|
111
|
+
* @memberof Geometry3DTileContent.prototype
|
|
112
|
+
*
|
|
113
|
+
* @type {boolean}
|
|
114
|
+
* @readonly
|
|
115
|
+
* @private
|
|
116
|
+
*/
|
|
117
|
+
ready: {
|
|
118
|
+
get: function () {
|
|
119
|
+
return this._ready;
|
|
120
|
+
},
|
|
121
|
+
},
|
|
122
|
+
|
|
123
|
+
/**
|
|
124
|
+
* Gets the promise that will be resolved when the tile's content is ready to render.
|
|
125
|
+
*
|
|
126
|
+
* @memberof Geometry3DTileContent.prototype
|
|
127
|
+
*
|
|
128
|
+
* @type {Promise<Geometry3DTileContent>}
|
|
129
|
+
* @readonly
|
|
130
|
+
* @deprecated
|
|
131
|
+
* @private
|
|
132
|
+
*/
|
|
99
133
|
readyPromise: {
|
|
100
134
|
get: function () {
|
|
135
|
+
deprecationWarning(
|
|
136
|
+
"Geometry3DTileContent.readyPromise",
|
|
137
|
+
"Geometry3DTileContent.readyPromise was deprecated in CesiumJS 1.104. It will be removed in 1.107. Wait for Geometry3DTileContent.ready to return true instead."
|
|
138
|
+
);
|
|
101
139
|
return this._readyPromise;
|
|
102
140
|
},
|
|
103
141
|
},
|
|
@@ -224,7 +262,7 @@ function getBatchIds(featureTableJson, featureTableBinary) {
|
|
|
224
262
|
|
|
225
263
|
if (atLeastOneDefined && atLeastOneUndefined) {
|
|
226
264
|
throw new RuntimeError(
|
|
227
|
-
"If one group of batch ids is defined, then all batch ids must be defined
|
|
265
|
+
"If one group of batch ids is defined, then all batch ids must be defined"
|
|
228
266
|
);
|
|
229
267
|
}
|
|
230
268
|
|
|
@@ -290,7 +328,8 @@ function initialize(content, arrayBuffer, byteOffset) {
|
|
|
290
328
|
byteOffset += sizeOfUint32;
|
|
291
329
|
|
|
292
330
|
if (byteLength === 0) {
|
|
293
|
-
content.
|
|
331
|
+
content._ready = true;
|
|
332
|
+
content._resolveContent(content);
|
|
294
333
|
return;
|
|
295
334
|
}
|
|
296
335
|
|
|
@@ -451,9 +490,7 @@ function initialize(content, arrayBuffer, byteOffset) {
|
|
|
451
490
|
boundingVolume: content.tile.boundingVolume.boundingVolume,
|
|
452
491
|
});
|
|
453
492
|
|
|
454
|
-
return content
|
|
455
|
-
return content;
|
|
456
|
-
});
|
|
493
|
+
return content;
|
|
457
494
|
}
|
|
458
495
|
|
|
459
496
|
return Promise.resolve(content);
|
|
@@ -509,8 +546,11 @@ Geometry3DTileContent.prototype.update = function (tileset, frameState) {
|
|
|
509
546
|
this._geometries.debugWireframe = this._tileset.debugWireframe;
|
|
510
547
|
this._geometries.update(frameState);
|
|
511
548
|
}
|
|
512
|
-
|
|
549
|
+
|
|
550
|
+
if (defined(this._batchTable) && this._geometries.ready) {
|
|
513
551
|
this._batchTable.update(tileset, frameState);
|
|
552
|
+
this._ready = true;
|
|
553
|
+
this._resolveContent(this);
|
|
514
554
|
}
|
|
515
555
|
};
|
|
516
556
|
|
package/Source/Scene/Globe.js
CHANGED
|
@@ -436,6 +436,7 @@ Object.defineProperties(Globe.prototype, {
|
|
|
436
436
|
return true;
|
|
437
437
|
}
|
|
438
438
|
return (
|
|
439
|
+
// ready is deprecated. This is here for backwards compatibility
|
|
439
440
|
this._surface.tileProvider.ready &&
|
|
440
441
|
this._surface._tileLoadQueueHigh.length === 0 &&
|
|
441
442
|
this._surface._tileLoadQueueMedium.length === 0 &&
|
|
@@ -984,7 +985,10 @@ Globe.prototype.beginFrame = function (frameState) {
|
|
|
984
985
|
const terrainProvider = this.terrainProvider;
|
|
985
986
|
const hasWaterMask =
|
|
986
987
|
this.showWaterEffect &&
|
|
987
|
-
terrainProvider
|
|
988
|
+
defined(terrainProvider) &&
|
|
989
|
+
terrainProvider.hasWaterMask &&
|
|
990
|
+
// ready is deprecated; This is here for backwards compatibility
|
|
991
|
+
terrainProvider._ready &&
|
|
988
992
|
terrainProvider.hasWaterMask;
|
|
989
993
|
|
|
990
994
|
if (hasWaterMask && this._oceanNormalMapResourceDirty) {
|
|
@@ -345,7 +345,8 @@ GlobeSurfaceTile.prototype.processImagery = function (
|
|
|
345
345
|
|
|
346
346
|
if (tileImagery.loadingImagery.state === ImageryState.PLACEHOLDER) {
|
|
347
347
|
const imageryLayer = tileImagery.loadingImagery.imageryLayer;
|
|
348
|
-
|
|
348
|
+
// ImageryProvider.ready is deprecated. This is here for backwards compatibility
|
|
349
|
+
if (imageryLayer.ready && imageryLayer.imageryProvider._ready) {
|
|
349
350
|
// Remove the placeholder and add the actual skeletons (if any)
|
|
350
351
|
// at the same position. Then continue the loop at the same index.
|
|
351
352
|
tileImagery.freeResources();
|
|
@@ -127,19 +127,19 @@ function GlobeSurfaceTileProvider(options) {
|
|
|
127
127
|
|
|
128
128
|
this._errorEvent = new Event();
|
|
129
129
|
|
|
130
|
-
this._imageryLayers.layerAdded.addEventListener(
|
|
130
|
+
this._removeLayerAddedListener = this._imageryLayers.layerAdded.addEventListener(
|
|
131
131
|
GlobeSurfaceTileProvider.prototype._onLayerAdded,
|
|
132
132
|
this
|
|
133
133
|
);
|
|
134
|
-
this._imageryLayers.layerRemoved.addEventListener(
|
|
134
|
+
this._removeLayerRemovedListener = this._imageryLayers.layerRemoved.addEventListener(
|
|
135
135
|
GlobeSurfaceTileProvider.prototype._onLayerRemoved,
|
|
136
136
|
this
|
|
137
137
|
);
|
|
138
|
-
this._imageryLayers.layerMoved.addEventListener(
|
|
138
|
+
this._removeLayerMovedListener = this._imageryLayers.layerMoved.addEventListener(
|
|
139
139
|
GlobeSurfaceTileProvider.prototype._onLayerMoved,
|
|
140
140
|
this
|
|
141
141
|
);
|
|
142
|
-
this._imageryLayers.layerShownOrHidden.addEventListener(
|
|
142
|
+
this._removeLayerShownListener = this._imageryLayers.layerShownOrHidden.addEventListener(
|
|
143
143
|
GlobeSurfaceTileProvider.prototype._onLayerShownOrHidden,
|
|
144
144
|
this
|
|
145
145
|
);
|
|
@@ -233,20 +233,24 @@ Object.defineProperties(GlobeSurfaceTileProvider.prototype, {
|
|
|
233
233
|
* Gets a value indicating whether or not the provider is ready for use.
|
|
234
234
|
* @memberof GlobeSurfaceTileProvider.prototype
|
|
235
235
|
* @type {boolean}
|
|
236
|
+
* @deprecated
|
|
236
237
|
*/
|
|
237
238
|
ready: {
|
|
238
239
|
get: function () {
|
|
239
240
|
return (
|
|
240
|
-
this._terrainProvider
|
|
241
|
+
defined(this._terrainProvider) &&
|
|
242
|
+
// TerrainProvider.ready is deprecated; This is here for backwards compatibility
|
|
243
|
+
this._terrainProvider._ready &&
|
|
241
244
|
(this._imageryLayers.length === 0 ||
|
|
242
|
-
|
|
245
|
+
// ImageryProvider.ready is deprecated; This is here for backwards compatibility
|
|
246
|
+
(this._imageryLayers.get(0).ready &&
|
|
247
|
+
this._imageryLayers.get(0).imageryProvider._ready))
|
|
243
248
|
);
|
|
244
249
|
},
|
|
245
250
|
},
|
|
246
251
|
|
|
247
252
|
/**
|
|
248
|
-
* Gets the tiling scheme used by the provider.
|
|
249
|
-
* not be accessed before {@link GlobeSurfaceTileProvider#ready} returns true.
|
|
253
|
+
* Gets the tiling scheme used by the provider.
|
|
250
254
|
* @memberof GlobeSurfaceTileProvider.prototype
|
|
251
255
|
* @type {TilingScheme}
|
|
252
256
|
*/
|
|
@@ -294,12 +298,6 @@ Object.defineProperties(GlobeSurfaceTileProvider.prototype, {
|
|
|
294
298
|
return;
|
|
295
299
|
}
|
|
296
300
|
|
|
297
|
-
//>>includeStart('debug', pragmas.debug);
|
|
298
|
-
if (!defined(terrainProvider)) {
|
|
299
|
-
throw new DeveloperError("terrainProvider is required.");
|
|
300
|
-
}
|
|
301
|
-
//>>includeEnd('debug');
|
|
302
|
-
|
|
303
301
|
this._terrainProvider = terrainProvider;
|
|
304
302
|
|
|
305
303
|
if (defined(this._quadtree)) {
|
|
@@ -349,7 +347,9 @@ GlobeSurfaceTileProvider.prototype.update = function (frameState) {
|
|
|
349
347
|
function updateCredits(surface, frameState) {
|
|
350
348
|
const creditDisplay = frameState.creditDisplay;
|
|
351
349
|
if (
|
|
352
|
-
surface._terrainProvider
|
|
350
|
+
defined(surface._terrainProvider) &&
|
|
351
|
+
// ready is deprecated; This is here for backwards compatibility
|
|
352
|
+
surface._terrainProvider._ready &&
|
|
353
353
|
defined(surface._terrainProvider.credit)
|
|
354
354
|
) {
|
|
355
355
|
creditDisplay.addCredit(surface._terrainProvider.credit);
|
|
@@ -357,9 +357,14 @@ function updateCredits(surface, frameState) {
|
|
|
357
357
|
|
|
358
358
|
const imageryLayers = surface._imageryLayers;
|
|
359
359
|
for (let i = 0, len = imageryLayers.length; i < len; ++i) {
|
|
360
|
-
const
|
|
361
|
-
|
|
362
|
-
|
|
360
|
+
const layer = imageryLayers.get(i);
|
|
361
|
+
// ImageryProvider.ready is deprecated; This is here for backwards compatibility
|
|
362
|
+
if (
|
|
363
|
+
layer.ready &&
|
|
364
|
+
layer.imageryProvider._ready &&
|
|
365
|
+
defined(layer.imageryProvider.credit)
|
|
366
|
+
) {
|
|
367
|
+
creditDisplay.addCredit(layer.imageryProvider.credit);
|
|
363
368
|
}
|
|
364
369
|
}
|
|
365
370
|
}
|
|
@@ -562,8 +567,7 @@ GlobeSurfaceTileProvider.prototype.cancelReprojections = function () {
|
|
|
562
567
|
};
|
|
563
568
|
|
|
564
569
|
/**
|
|
565
|
-
* Gets the maximum geometric error allowed in a tile at a given level, in meters.
|
|
566
|
-
* called before {@link GlobeSurfaceTileProvider#ready} returns true.
|
|
570
|
+
* Gets the maximum geometric error allowed in a tile at a given level, in meters.
|
|
567
571
|
*
|
|
568
572
|
* @param {number} level The tile level for which to get the maximum geometric error.
|
|
569
573
|
* @returns {number} The maximum geometric error in meters.
|
|
@@ -571,18 +575,19 @@ GlobeSurfaceTileProvider.prototype.cancelReprojections = function () {
|
|
|
571
575
|
GlobeSurfaceTileProvider.prototype.getLevelMaximumGeometricError = function (
|
|
572
576
|
level
|
|
573
577
|
) {
|
|
578
|
+
if (!defined(this._terrainProvider)) {
|
|
579
|
+
return 0;
|
|
580
|
+
}
|
|
581
|
+
|
|
574
582
|
return this._terrainProvider.getLevelMaximumGeometricError(level);
|
|
575
583
|
};
|
|
576
584
|
|
|
577
585
|
/**
|
|
578
586
|
* Loads, or continues loading, a given tile. This function will continue to be called
|
|
579
|
-
* until {@link QuadtreeTile#state} is no longer {@link QuadtreeTileLoadState#LOADING}.
|
|
580
|
-
* not be called before {@link GlobeSurfaceTileProvider#ready} returns true.
|
|
587
|
+
* until {@link QuadtreeTile#state} is no longer {@link QuadtreeTileLoadState#LOADING}.
|
|
581
588
|
*
|
|
582
589
|
* @param {FrameState} frameState The frame state.
|
|
583
590
|
* @param {QuadtreeTile} tile The tile to load.
|
|
584
|
-
*
|
|
585
|
-
* @exception {DeveloperError} <code>loadTile</code> must not be called before the tile provider is ready.
|
|
586
591
|
*/
|
|
587
592
|
GlobeSurfaceTileProvider.prototype.loadTile = function (frameState, tile) {
|
|
588
593
|
// We don't want to load imagery until we're certain that the terrain tiles are actually visible.
|
|
@@ -1384,6 +1389,14 @@ GlobeSurfaceTileProvider.prototype.isDestroyed = function () {
|
|
|
1384
1389
|
GlobeSurfaceTileProvider.prototype.destroy = function () {
|
|
1385
1390
|
this._tileProvider = this._tileProvider && this._tileProvider.destroy();
|
|
1386
1391
|
this._clippingPlanes = this._clippingPlanes && this._clippingPlanes.destroy();
|
|
1392
|
+
this._removeLayerAddedListener =
|
|
1393
|
+
this._removeLayerAddedListener && this._removeLayerAddedListener();
|
|
1394
|
+
this._removeLayerRemovedListener =
|
|
1395
|
+
this._removeLayerRemovedListener && this._removeLayerRemovedListener();
|
|
1396
|
+
this._removeLayerMovedListener =
|
|
1397
|
+
this._removeLayerMovedListener && this._removeLayerMovedListener();
|
|
1398
|
+
this._removeLayerShownListener =
|
|
1399
|
+
this._removeLayerShownListener && this._removeLayerShownListener();
|
|
1387
1400
|
|
|
1388
1401
|
return destroyObject(this);
|
|
1389
1402
|
};
|
|
@@ -1436,13 +1449,16 @@ function getTileReadyCallback(tileImageriesToFree, layer, terrainProvider) {
|
|
|
1436
1449
|
}
|
|
1437
1450
|
|
|
1438
1451
|
GlobeSurfaceTileProvider.prototype._onLayerAdded = function (layer, index) {
|
|
1452
|
+
if (this.isDestroyed()) {
|
|
1453
|
+
return;
|
|
1454
|
+
}
|
|
1455
|
+
|
|
1439
1456
|
if (layer.show) {
|
|
1440
1457
|
const terrainProvider = this._terrainProvider;
|
|
1441
1458
|
|
|
1442
1459
|
const that = this;
|
|
1443
|
-
const imageryProvider = layer.imageryProvider;
|
|
1444
1460
|
const tileImageryUpdatedEvent = this._imageryLayersUpdatedEvent;
|
|
1445
|
-
|
|
1461
|
+
const reloadFunction = function () {
|
|
1446
1462
|
// Clear the layer's cache
|
|
1447
1463
|
layer._imageryCache = {};
|
|
1448
1464
|
|
|
@@ -1504,6 +1520,11 @@ GlobeSurfaceTileProvider.prototype._onLayerAdded = function (layer, index) {
|
|
|
1504
1520
|
});
|
|
1505
1521
|
};
|
|
1506
1522
|
|
|
1523
|
+
if (layer.ready) {
|
|
1524
|
+
const imageryProvider = layer.imageryProvider;
|
|
1525
|
+
imageryProvider._reload = reloadFunction;
|
|
1526
|
+
}
|
|
1527
|
+
|
|
1507
1528
|
// create TileImageries for this layer for all previously loaded tiles
|
|
1508
1529
|
this._quadtree.forEachLoadedTile(function (tile) {
|
|
1509
1530
|
if (layer._createTileImagerySkeletons(tile, terrainProvider)) {
|
|
@@ -2124,7 +2145,9 @@ function addDrawCommandsForTile(tileProvider, tile, frameState) {
|
|
|
2124
2145
|
const oceanNormalMap = tileProvider.oceanNormalMap;
|
|
2125
2146
|
const showOceanWaves = showReflectiveOcean && defined(oceanNormalMap);
|
|
2126
2147
|
const hasVertexNormals =
|
|
2127
|
-
tileProvider.terrainProvider
|
|
2148
|
+
defined(tileProvider.terrainProvider) &&
|
|
2149
|
+
// ready is deprecated; This is here for backwards compatibility
|
|
2150
|
+
tileProvider.terrainProvider._ready &&
|
|
2128
2151
|
tileProvider.terrainProvider.hasVertexNormals;
|
|
2129
2152
|
const enableFog =
|
|
2130
2153
|
frameState.fog.enabled && frameState.fog.renderable && !cameraUnderground;
|