@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.
Files changed (193) hide show
  1. package/Build/Workers/{AxisAlignedBoundingBox-a6f9f0e5.js → AxisAlignedBoundingBox-379015ef.js} +1 -1
  2. package/Build/Workers/{BoundingRectangle-b0a68595.js → BoundingRectangle-57f2b24f.js} +1 -1
  3. package/Build/Workers/{BoxGeometry-baedd794.js → BoxGeometry-ecabfc78.js} +1 -1
  4. package/Build/Workers/{Color-f85df1be.js → Color-14d1a36d.js} +1 -1
  5. package/Build/Workers/{CoplanarPolygonGeometryLibrary-30516950.js → CoplanarPolygonGeometryLibrary-048c3c14.js} +1 -1
  6. package/Build/Workers/{CorridorGeometryLibrary-5d5d3b3a.js → CorridorGeometryLibrary-520c8619.js} +1 -1
  7. package/Build/Workers/{CylinderGeometry-d899ae26.js → CylinderGeometry-119068b8.js} +1 -1
  8. package/Build/Workers/{EllipseGeometry-a49f8449.js → EllipseGeometry-2dfc3523.js} +1 -1
  9. package/Build/Workers/{EllipseGeometryLibrary-cba7edde.js → EllipseGeometryLibrary-0a1e0170.js} +1 -1
  10. package/Build/Workers/{EllipseOutlineGeometry-8095c8cb.js → EllipseOutlineGeometry-c5251669.js} +1 -1
  11. package/Build/Workers/{EllipsoidGeometry-ed93f571.js → EllipsoidGeometry-d10a5221.js} +1 -1
  12. package/Build/Workers/{EllipsoidOutlineGeometry-e4854854.js → EllipsoidOutlineGeometry-7039a0ae.js} +1 -1
  13. package/Build/Workers/{EllipsoidTangentPlane-7ae1aa9a.js → EllipsoidTangentPlane-857186be.js} +1 -1
  14. package/Build/Workers/{FrustumGeometry-b62db3e3.js → FrustumGeometry-400fa1b7.js} +2 -2
  15. package/Build/Workers/{GeometryAttribute-780af4fa.js → GeometryAttribute-7a2de5c6.js} +1 -1
  16. package/Build/Workers/{GeometryPipeline-36b61c99.js → GeometryPipeline-916636fa.js} +1 -1
  17. package/Build/Workers/{IntersectionTests-e889fcf0.js → IntersectionTests-b4d02d4d.js} +1 -1
  18. package/Build/Workers/{OrientedBoundingBox-43478ac8.js → OrientedBoundingBox-96fe1752.js} +5 -3
  19. package/Build/Workers/{PolygonGeometryLibrary-38a98276.js → PolygonGeometryLibrary-931f1ec6.js} +1 -1
  20. package/Build/Workers/{PolygonPipeline-d31ff61c.js → PolygonPipeline-32fc92cc.js} +1 -1
  21. package/Build/Workers/{PolylinePipeline-30e4cec9.js → PolylinePipeline-6d5c63e5.js} +1 -1
  22. package/Build/Workers/{PolylineVolumeGeometryLibrary-90551d26.js → PolylineVolumeGeometryLibrary-f068c1fb.js} +1 -1
  23. package/Build/Workers/{PrimitivePipeline-558d9cb0.js → PrimitivePipeline-879f996a.js} +1 -1
  24. package/Build/Workers/{RectangleGeometryLibrary-815c68df.js → RectangleGeometryLibrary-2d6f36f3.js} +1 -1
  25. package/Build/Workers/{TerrainEncoding-341ead52.js → TerrainEncoding-82882059.js} +1 -1
  26. package/Build/Workers/{Transforms-9e9df299.js → Transforms-9052372a.js} +6 -5
  27. package/Build/Workers/{WallGeometryLibrary-ccf90976.js → WallGeometryLibrary-db7a64fb.js} +1 -1
  28. package/Build/Workers/cesiumWorkerBootstrapper.js +1 -1
  29. package/Build/Workers/combineGeometry.js +1 -1
  30. package/Build/Workers/createBoxGeometry.js +1 -1
  31. package/Build/Workers/createBoxOutlineGeometry.js +1 -1
  32. package/Build/Workers/createCircleGeometry.js +1 -1
  33. package/Build/Workers/createCircleOutlineGeometry.js +1 -1
  34. package/Build/Workers/createCoplanarPolygonGeometry.js +1 -1
  35. package/Build/Workers/createCoplanarPolygonOutlineGeometry.js +1 -1
  36. package/Build/Workers/createCorridorGeometry.js +1 -1
  37. package/Build/Workers/createCorridorOutlineGeometry.js +1 -1
  38. package/Build/Workers/createCylinderGeometry.js +1 -1
  39. package/Build/Workers/createCylinderOutlineGeometry.js +1 -1
  40. package/Build/Workers/createEllipseGeometry.js +1 -1
  41. package/Build/Workers/createEllipseOutlineGeometry.js +1 -1
  42. package/Build/Workers/createEllipsoidGeometry.js +1 -1
  43. package/Build/Workers/createEllipsoidOutlineGeometry.js +1 -1
  44. package/Build/Workers/createFrustumGeometry.js +1 -1
  45. package/Build/Workers/createFrustumOutlineGeometry.js +1 -1
  46. package/Build/Workers/createGeometry.js +1 -1
  47. package/Build/Workers/createGroundPolylineGeometry.js +1 -1
  48. package/Build/Workers/createPlaneGeometry.js +1 -1
  49. package/Build/Workers/createPlaneOutlineGeometry.js +1 -1
  50. package/Build/Workers/createPolygonGeometry.js +1 -1
  51. package/Build/Workers/createPolygonOutlineGeometry.js +1 -1
  52. package/Build/Workers/createPolylineGeometry.js +1 -1
  53. package/Build/Workers/createPolylineVolumeGeometry.js +1 -1
  54. package/Build/Workers/createPolylineVolumeOutlineGeometry.js +1 -1
  55. package/Build/Workers/createRectangleGeometry.js +1 -1
  56. package/Build/Workers/createRectangleOutlineGeometry.js +1 -1
  57. package/Build/Workers/createSimplePolylineGeometry.js +1 -1
  58. package/Build/Workers/createSphereGeometry.js +1 -1
  59. package/Build/Workers/createSphereOutlineGeometry.js +1 -1
  60. package/Build/Workers/createVectorTileGeometries.js +1 -1
  61. package/Build/Workers/createVectorTilePolygons.js +1 -1
  62. package/Build/Workers/createVerticesFromGoogleEarthEnterpriseBuffer.js +1 -1
  63. package/Build/Workers/createVerticesFromHeightmap.js +1 -1
  64. package/Build/Workers/createVerticesFromQuantizedTerrainMesh.js +10 -15
  65. package/Build/Workers/createWallGeometry.js +1 -1
  66. package/Build/Workers/createWallOutlineGeometry.js +1 -1
  67. package/Build/Workers/package.js +1 -1
  68. package/Build/Workers/transferTypedArrayTest.js +1 -1
  69. package/Build/Workers/upsampleQuantizedTerrainMesh.js +1 -1
  70. package/Source/Core/ArcGISTiledElevationTerrainProvider.js +291 -191
  71. package/Source/Core/CesiumTerrainProvider.js +571 -434
  72. package/Source/Core/CustomHeightmapTerrainProvider.js +12 -0
  73. package/Source/Core/EllipsoidTerrainProvider.js +17 -10
  74. package/Source/Core/FrustumGeometry.js +1 -1
  75. package/Source/Core/GoogleEarthEnterpriseMetadata.js +86 -34
  76. package/Source/Core/GoogleEarthEnterpriseTerrainProvider.js +119 -82
  77. package/Source/Core/Ion.js +1 -1
  78. package/Source/Core/IonResource.js +14 -3
  79. package/Source/Core/OrientedBoundingBox.js +4 -2
  80. package/Source/Core/RequestScheduler.js +1 -1
  81. package/Source/Core/Resource.js +2 -2
  82. package/Source/Core/TerrainProvider.js +9 -14
  83. package/Source/Core/TileProviderError.js +8 -8
  84. package/Source/Core/VRTheWorldTerrainProvider.js +193 -124
  85. package/Source/Core/buildModuleUrl.js +4 -3
  86. package/Source/Core/createWorldTerrain.js +20 -2
  87. package/Source/Core/createWorldTerrainAsync.js +48 -0
  88. package/Source/Core/sampleTerrain.js +9 -10
  89. package/Source/Core/sampleTerrainMostDetailed.js +66 -72
  90. package/Source/DataSources/Cesium3DTilesetVisualizer.js +37 -26
  91. package/Source/DataSources/Entity.js +6 -1
  92. package/Source/DataSources/ModelVisualizer.js +99 -31
  93. package/Source/DataSources/PolygonGraphics.js +1 -1
  94. package/Source/Scene/ArcGisMapServerImageryProvider.js +552 -376
  95. package/Source/Scene/BingMapsImageryProvider.js +511 -305
  96. package/Source/Scene/BufferLoader.js +29 -34
  97. package/Source/Scene/Cesium3DTile.js +388 -251
  98. package/Source/Scene/Cesium3DTileBatchTable.js +2 -2
  99. package/Source/Scene/Cesium3DTileContent.js +16 -0
  100. package/Source/Scene/Cesium3DTileContentFactory.js +4 -4
  101. package/Source/Scene/Cesium3DTilePass.js +8 -11
  102. package/Source/Scene/Cesium3DTileStyleEngine.js +1 -1
  103. package/Source/Scene/Cesium3DTilesVoxelProvider.js +225 -117
  104. package/Source/Scene/Cesium3DTileset.js +755 -481
  105. package/Source/Scene/Cesium3DTilesetBaseTraversal.js +301 -0
  106. package/Source/Scene/Cesium3DTilesetMostDetailedTraversal.js +33 -46
  107. package/Source/Scene/Cesium3DTilesetSkipTraversal.js +421 -0
  108. package/Source/Scene/Cesium3DTilesetTraversal.js +219 -671
  109. package/Source/Scene/ClassificationPrimitive.js +7 -0
  110. package/Source/Scene/Composite3DTileContent.js +69 -26
  111. package/Source/Scene/CreditDisplay.js +20 -4
  112. package/Source/Scene/DepthPlane.js +1 -1
  113. package/Source/Scene/Empty3DTileContent.js +31 -1
  114. package/Source/Scene/Geometry3DTileContent.js +47 -7
  115. package/Source/Scene/Globe.js +5 -1
  116. package/Source/Scene/GlobeSurfaceTile.js +2 -1
  117. package/Source/Scene/GlobeSurfaceTileProvider.js +50 -27
  118. package/Source/Scene/GltfBufferViewLoader.js +47 -91
  119. package/Source/Scene/GltfDracoLoader.js +110 -112
  120. package/Source/Scene/GltfImageLoader.js +71 -78
  121. package/Source/Scene/GltfIndexBufferLoader.js +108 -121
  122. package/Source/Scene/GltfJsonLoader.js +75 -74
  123. package/Source/Scene/GltfLoader.js +392 -280
  124. package/Source/Scene/GltfStructuralMetadataLoader.js +109 -110
  125. package/Source/Scene/GltfTextureLoader.js +97 -96
  126. package/Source/Scene/GltfVertexBufferLoader.js +128 -133
  127. package/Source/Scene/GoogleEarthEnterpriseImageryProvider.js +353 -225
  128. package/Source/Scene/GoogleEarthEnterpriseMapsProvider.js +491 -331
  129. package/Source/Scene/GridImageryProvider.js +267 -104
  130. package/Source/Scene/GroundPolylinePrimitive.js +12 -1
  131. package/Source/Scene/GroundPrimitive.js +8 -1
  132. package/Source/Scene/I3SDataProvider.js +214 -113
  133. package/Source/Scene/I3SFeature.js +7 -6
  134. package/Source/Scene/I3SLayer.js +26 -37
  135. package/Source/Scene/I3SNode.js +59 -66
  136. package/Source/Scene/Imagery.js +6 -1
  137. package/Source/Scene/ImageryLayer.js +299 -48
  138. package/Source/Scene/ImageryLayerCollection.js +26 -0
  139. package/Source/Scene/ImageryProvider.js +129 -111
  140. package/Source/Scene/Implicit3DTileContent.js +72 -23
  141. package/Source/Scene/ImplicitSubtree.js +66 -45
  142. package/Source/Scene/IonImageryProvider.js +471 -264
  143. package/Source/Scene/MapboxImageryProvider.js +272 -112
  144. package/Source/Scene/MapboxStyleImageryProvider.js +270 -111
  145. package/Source/Scene/MetadataSchemaLoader.js +26 -36
  146. package/Source/Scene/Model/B3dmLoader.js +42 -46
  147. package/Source/Scene/Model/GeoJsonLoader.js +8 -32
  148. package/Source/Scene/Model/I3dmLoader.js +48 -74
  149. package/Source/Scene/Model/Model.js +470 -132
  150. package/Source/Scene/Model/Model3DTileContent.js +83 -31
  151. package/Source/Scene/Model/ModelAnimationCollection.js +3 -3
  152. package/Source/Scene/Model/ModelDrawCommand.js +15 -26
  153. package/Source/Scene/Model/ModelUtility.js +16 -16
  154. package/Source/Scene/Model/PntsLoader.js +27 -32
  155. package/Source/Scene/Multiple3DTileContent.js +134 -115
  156. package/Source/Scene/PointCloud.js +11 -19
  157. package/Source/Scene/Primitive.js +20 -0
  158. package/Source/Scene/QuadtreePrimitive.js +2 -0
  159. package/Source/Scene/QuadtreeTileProvider.js +4 -8
  160. package/Source/Scene/ResourceCache.js +47 -105
  161. package/Source/Scene/ResourceCacheStatistics.js +24 -58
  162. package/Source/Scene/ResourceLoader.js +5 -17
  163. package/Source/Scene/ResourceLoaderState.js +12 -4
  164. package/Source/Scene/Scene.js +65 -0
  165. package/Source/Scene/ScreenSpaceCameraController.js +1 -1
  166. package/Source/Scene/SingleTileImageryProvider.js +382 -209
  167. package/Source/Scene/Terrain.js +196 -0
  168. package/Source/Scene/TileCoordinatesImageryProvider.js +267 -104
  169. package/Source/Scene/TileMapServiceImageryProvider.js +177 -85
  170. package/Source/Scene/Tileset3DTileContent.js +47 -5
  171. package/Source/Scene/TimeDynamicPointCloud.js +15 -2
  172. package/Source/Scene/UrlTemplateImageryProvider.js +343 -215
  173. package/Source/Scene/Vector3DTileClampedPolylines.js +96 -84
  174. package/Source/Scene/Vector3DTileContent.js +47 -22
  175. package/Source/Scene/Vector3DTileGeometry.js +57 -52
  176. package/Source/Scene/Vector3DTilePoints.js +72 -68
  177. package/Source/Scene/Vector3DTilePolygons.js +118 -117
  178. package/Source/Scene/Vector3DTilePolylines.js +86 -82
  179. package/Source/Scene/Vector3DTilePrimitive.js +0 -1
  180. package/Source/Scene/VoxelContent.js +61 -63
  181. package/Source/Scene/VoxelPrimitive.js +39 -91
  182. package/Source/Scene/VoxelProvider.js +2 -2
  183. package/Source/Scene/WebMapServiceImageryProvider.js +272 -111
  184. package/Source/Scene/WebMapTileServiceImageryProvider.js +270 -107
  185. package/Source/Scene/computeFlyToLocationForRectangle.js +33 -37
  186. package/Source/Scene/createOsmBuildings.js +6 -0
  187. package/Source/Scene/createOsmBuildingsAsync.js +82 -0
  188. package/Source/Scene/createWorldImagery.js +14 -5
  189. package/Source/Scene/createWorldImageryAsync.js +39 -0
  190. package/Source/Widget/CesiumWidget.js +55 -27
  191. package/index.d.ts +2158 -1395
  192. package/index.js +58 -51
  193. 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
- this._contents = [];
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._readyPromise = initialize(this, arrayBuffer, byteOffset, factory);
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
- function initialize(content, arrayBuffer, byteOffset, factory) {
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
- const innerContent = contentFactory(
269
- content._tileset,
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
- return Promise.all(contentPromises).then(function () {
287
- return content;
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
- const head = document.head;
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
- head.insertBefore(css, head.firstChild);
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 artefacts below ellipsoid zero elevation.
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
- return undefined;
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._readyPromise = initialize(this, arrayBuffer, byteOffset);
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._readyPromise.resolve(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._geometries.readyPromise.then(function () {
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
- if (defined(this._batchTable) && this._geometries._ready) {
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
 
@@ -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.ready &&
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
- if (imageryLayer.imageryProvider.ready) {
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.ready &&
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
- this._imageryLayers.get(0).imageryProvider.ready)
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. This property should
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.ready &&
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 imageryProvider = imageryLayers.get(i).imageryProvider;
361
- if (imageryProvider.ready && defined(imageryProvider.credit)) {
362
- creditDisplay.addCredit(imageryProvider.credit);
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. This function should not be
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}. This function should
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
- imageryProvider._reload = function () {
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.ready &&
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;