@cesium/engine 3.0.2 → 5.0.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 (246) hide show
  1. package/Build/ThirdParty/Workers/pako_deflate.min.js +605 -0
  2. package/Build/ThirdParty/Workers/pako_inflate.min.js +800 -0
  3. package/Build/ThirdParty/Workers/z-worker-pako.js +502 -0
  4. package/Build/Workers/chunk-2U6EBIRX.js +757 -0
  5. package/Build/Workers/chunk-2ZI7FZ3Q.js +58 -0
  6. package/Build/Workers/chunk-3TSHZWOZ.js +1860 -0
  7. package/Build/Workers/chunk-44B6FQSJ.js +684 -0
  8. package/Build/Workers/chunk-4AJR66C5.js +368 -0
  9. package/Build/Workers/chunk-4HN3N5SE.js +501 -0
  10. package/Build/Workers/chunk-4QGPYV3W.js +102 -0
  11. package/Build/Workers/chunk-4RKE4B3G.js +476 -0
  12. package/Build/Workers/chunk-5E3V7Y4R.js +196 -0
  13. package/Build/Workers/chunk-6EHT6GS3.js +163 -0
  14. package/Build/Workers/chunk-6I22NWKQ.js +171 -0
  15. package/Build/Workers/chunk-7N67FBLW.js +1054 -0
  16. package/Build/Workers/chunk-AQQGAFKX.js +124 -0
  17. package/Build/Workers/chunk-CROU4RHL.js +138 -0
  18. package/Build/Workers/chunk-CTJCECTX.js +258 -0
  19. package/Build/Workers/chunk-DWJZFZ67.js +781 -0
  20. package/Build/Workers/chunk-EHJQEARC.js +59 -0
  21. package/Build/Workers/chunk-EVLKHUAE.js +1477 -0
  22. package/Build/Workers/chunk-FOOYJER7.js +834 -0
  23. package/Build/Workers/chunk-GLCRFDOB.js +73 -0
  24. package/Build/Workers/chunk-GPO47TW4.js +39 -0
  25. package/Build/Workers/chunk-H5Q2JKIA.js +1075 -0
  26. package/Build/Workers/chunk-HIDSEUWS.js +2041 -0
  27. package/Build/Workers/chunk-HV67ARO7.js +302 -0
  28. package/Build/Workers/chunk-IC7G4BX2.js +421 -0
  29. package/Build/Workers/chunk-IQN2LMGD.js +55 -0
  30. package/Build/Workers/chunk-J2FHYK2Z.js +55 -0
  31. package/Build/Workers/chunk-K3VEWONC.js +289 -0
  32. package/Build/Workers/chunk-KZFXE35V.js +117 -0
  33. package/Build/Workers/chunk-MG2TXIO5.js +400 -0
  34. package/Build/Workers/chunk-MRCFDEKH.js +138 -0
  35. package/Build/Workers/chunk-MYDS6HBL.js +3273 -0
  36. package/Build/Workers/chunk-OCIX2CQ7.js +305 -0
  37. package/Build/Workers/chunk-P32XMW4I.js +2716 -0
  38. package/Build/Workers/chunk-PEVZYZBQ.js +157 -0
  39. package/Build/Workers/chunk-PMDLIBEQ.js +218 -0
  40. package/Build/Workers/chunk-QDUOGCCO.js +1009 -0
  41. package/Build/Workers/chunk-QUCJGBCK.js +430 -0
  42. package/Build/Workers/chunk-RCI7BSOM.js +452 -0
  43. package/Build/Workers/chunk-SVTSC7FX.js +390 -0
  44. package/Build/Workers/chunk-TXOGSFHZ.js +77 -0
  45. package/Build/Workers/chunk-TXYJOVQK.js +629 -0
  46. package/Build/Workers/chunk-UFIT5XDI.js +1258 -0
  47. package/Build/Workers/chunk-ULLMQNFQ.js +73 -0
  48. package/Build/Workers/chunk-UM7FIUQW.js +101 -0
  49. package/Build/Workers/{package.js → chunk-UMLTOPAE.js} +13 -2
  50. package/Build/Workers/chunk-V5S5N2IS.js +8644 -0
  51. package/Build/Workers/chunk-VN2IHJKM.js +513 -0
  52. package/Build/Workers/chunk-VWSD2XV5.js +669 -0
  53. package/Build/Workers/chunk-X2KIWBTW.js +100 -0
  54. package/Build/Workers/chunk-Y24CDOJC.js +353 -0
  55. package/Build/Workers/chunk-YLMDWSXO.js +44 -0
  56. package/Build/Workers/chunk-YNZ4DMR7.js +634 -0
  57. package/Build/Workers/chunk-Z2MP3UBE.js +236 -0
  58. package/Build/Workers/combineGeometry.js +65 -15
  59. package/Build/Workers/createBoxGeometry.js +55 -10
  60. package/Build/Workers/createBoxOutlineGeometry.js +231 -310
  61. package/Build/Workers/createCircleGeometry.js +185 -202
  62. package/Build/Workers/createCircleOutlineGeometry.js +141 -155
  63. package/Build/Workers/createCoplanarPolygonGeometry.js +477 -557
  64. package/Build/Workers/createCoplanarPolygonOutlineGeometry.js +218 -230
  65. package/Build/Workers/createCorridorGeometry.js +1163 -1307
  66. package/Build/Workers/createCorridorOutlineGeometry.js +534 -569
  67. package/Build/Workers/createCylinderGeometry.js +57 -10
  68. package/Build/Workers/createCylinderOutlineGeometry.js +224 -258
  69. package/Build/Workers/createEllipseGeometry.js +68 -12
  70. package/Build/Workers/createEllipseOutlineGeometry.js +61 -12
  71. package/Build/Workers/createEllipsoidGeometry.js +56 -10
  72. package/Build/Workers/createEllipsoidOutlineGeometry.js +58 -13
  73. package/Build/Workers/createFrustumGeometry.js +55 -10
  74. package/Build/Workers/createFrustumOutlineGeometry.js +226 -243
  75. package/Build/Workers/createGeometry.js +143 -48
  76. package/Build/Workers/createGroundPolylineGeometry.js +1484 -2012
  77. package/Build/Workers/createPlaneGeometry.js +216 -243
  78. package/Build/Workers/createPlaneOutlineGeometry.js +121 -113
  79. package/Build/Workers/createPolygonGeometry.js +1437 -1314
  80. package/Build/Workers/createPolygonOutlineGeometry.js +516 -657
  81. package/Build/Workers/createPolylineGeometry.js +471 -547
  82. package/Build/Workers/createPolylineVolumeGeometry.js +354 -384
  83. package/Build/Workers/createPolylineVolumeOutlineGeometry.js +272 -295
  84. package/Build/Workers/createRectangleGeometry.js +1128 -1331
  85. package/Build/Workers/createRectangleOutlineGeometry.js +445 -500
  86. package/Build/Workers/createSimplePolylineGeometry.js +381 -440
  87. package/Build/Workers/createSphereGeometry.js +112 -118
  88. package/Build/Workers/createSphereOutlineGeometry.js +112 -121
  89. package/Build/Workers/createTaskProcessorWorker.js +32 -127
  90. package/Build/Workers/createVectorTileClampedPolylines.js +462 -505
  91. package/Build/Workers/createVectorTileGeometries.js +377 -436
  92. package/Build/Workers/createVectorTilePoints.js +110 -77
  93. package/Build/Workers/createVectorTilePolygons.js +369 -391
  94. package/Build/Workers/createVectorTilePolylines.js +252 -244
  95. package/Build/Workers/createVerticesFromGoogleEarthEnterpriseBuffer.js +543 -615
  96. package/Build/Workers/createVerticesFromHeightmap.js +2244 -2677
  97. package/Build/Workers/createVerticesFromQuantizedTerrainMesh.js +682 -904
  98. package/Build/Workers/createWallGeometry.js +459 -593
  99. package/Build/Workers/createWallOutlineGeometry.js +324 -419
  100. package/Build/Workers/decodeDraco.js +327 -347
  101. package/Build/Workers/decodeGoogleEarthEnterprisePacket.js +2530 -3567
  102. package/Build/Workers/decodeI3S.js +765 -970
  103. package/Build/Workers/transcodeKTX2.js +3351 -1473
  104. package/Build/Workers/transferTypedArrayTest.js +3 -4
  105. package/Build/Workers/upsampleQuantizedTerrainMesh.js +748 -953
  106. package/LICENSE.md +0 -12
  107. package/Source/Core/CesiumTerrainProvider.js +1 -2
  108. package/Source/Core/Credit.js +7 -1
  109. package/Source/Core/FeatureDetection.js +9 -0
  110. package/Source/Core/GoogleMaps.js +1 -2
  111. package/Source/Core/Ion.js +1 -2
  112. package/Source/Core/KTX2Transcoder.js +7 -3
  113. package/Source/Core/PolygonGeometry.js +340 -27
  114. package/Source/Core/PolygonGeometryLibrary.js +302 -1
  115. package/Source/Core/Stereographic.js +247 -0
  116. package/Source/Core/TaskProcessor.js +185 -168
  117. package/Source/Core/Transforms.js +2 -2
  118. package/Source/Core/buildModuleUrl.js +6 -5
  119. package/Source/Core/sampleTerrain.js +43 -10
  120. package/Source/Core/sampleTerrainMostDetailed.js +27 -3
  121. package/Source/Scene/ArcGisMapService.js +1 -2
  122. package/Source/Scene/Billboard.js +7 -0
  123. package/Source/Scene/Cesium3DTilePass.js +1 -1
  124. package/Source/Scene/Cesium3DTileset.js +38 -81
  125. package/Source/Scene/CreditDisplay.js +2 -2
  126. package/Source/Scene/DracoLoader.js +26 -3
  127. package/Source/Scene/I3SDataProvider.js +0 -27
  128. package/Source/Scene/I3SDecoder.js +127 -0
  129. package/Source/Scene/I3SNode.js +32 -110
  130. package/Source/Scene/Implicit3DTileContent.js +13 -0
  131. package/Source/Scene/ImplicitTileset.js +5 -0
  132. package/Source/Scene/LabelCollection.js +3 -1
  133. package/Source/Scene/Model/I3dmLoader.js +5 -1
  134. package/Source/Scene/Model/Model.js +20 -23
  135. package/Source/Scene/OpenStreetMapImageryProvider.js +4 -1
  136. package/Source/Scene/PostProcessStageLibrary.js +3 -3
  137. package/Source/Scene/PrimitiveCollection.js +39 -0
  138. package/Source/Scene/Scene.js +3 -0
  139. package/Source/Scene/SingleTileImageryProvider.js +4 -2
  140. package/Source/ThirdParty/Workers/basis_transcoder.js +1 -1
  141. package/Source/Widget/CesiumWidget.js +2 -1
  142. package/Source/{WorkersES6 → Workers}/createGeometry.js +11 -12
  143. package/Source/{WorkersES6 → Workers}/createTaskProcessorWorker.js +43 -59
  144. package/Source/{WorkersES6 → Workers}/decodeDraco.js +19 -25
  145. package/Source/{WorkersES6 → Workers}/decodeI3S.js +18 -32
  146. package/Source/{WorkersES6 → Workers}/transcodeKTX2.js +19 -26
  147. package/Source/Workers/transferTypedArrayTest.js +0 -6
  148. package/index.d.ts +69 -35
  149. package/index.js +189 -187
  150. package/package.json +2 -1
  151. package/Build/Workers/ArcType-2d9abbbc.js +0 -37
  152. package/Build/Workers/AttributeCompression-f9f6c717.js +0 -716
  153. package/Build/Workers/AxisAlignedBoundingBox-a03420b1.js +0 -258
  154. package/Build/Workers/BoundingRectangle-32fa8a4a.js +0 -369
  155. package/Build/Workers/BoxGeometry-cd550612.js +0 -884
  156. package/Build/Workers/Check-6ede7e26.js +0 -290
  157. package/Build/Workers/Color-571a6085.js +0 -2262
  158. package/Build/Workers/ComponentDatatype-cf1fa08e.js +0 -341
  159. package/Build/Workers/CoplanarPolygonGeometryLibrary-488b1a9f.js +0 -132
  160. package/Build/Workers/CorridorGeometryLibrary-fc4ff147.js +0 -498
  161. package/Build/Workers/CylinderGeometry-bc26926d.js +0 -467
  162. package/Build/Workers/CylinderGeometryLibrary-7bf291b4.js +0 -63
  163. package/Build/Workers/EllipseGeometry-89533a10.js +0 -1304
  164. package/Build/Workers/EllipseGeometryLibrary-b0d7df17.js +0 -366
  165. package/Build/Workers/EllipseOutlineGeometry-63ff7a87.js +0 -443
  166. package/Build/Workers/EllipsoidGeodesic-5b3623dc.js +0 -520
  167. package/Build/Workers/EllipsoidGeometry-07e99d2d.js +0 -637
  168. package/Build/Workers/EllipsoidOutlineGeometry-ba5c7ee2.js +0 -454
  169. package/Build/Workers/EllipsoidRhumbLine-ef872433.js +0 -741
  170. package/Build/Workers/EllipsoidTangentPlane-65d41b3e.js +0 -373
  171. package/Build/Workers/EncodedCartesian3-57415c8a.js +0 -171
  172. package/Build/Workers/FrustumGeometry-4a7589ed.js +0 -2540
  173. package/Build/Workers/GeometryAttribute-a5b6275b.js +0 -619
  174. package/Build/Workers/GeometryAttributes-ad136444.js +0 -91
  175. package/Build/Workers/GeometryInstance-34d9e21e.js +0 -121
  176. package/Build/Workers/GeometryOffsetAttribute-9ad0019c.js +0 -16
  177. package/Build/Workers/GeometryPipeline-fa9e6ffc.js +0 -3690
  178. package/Build/Workers/IndexDatatype-2643aa47.js +0 -200
  179. package/Build/Workers/IntersectionTests-feace3da.js +0 -1836
  180. package/Build/Workers/Math-0a2ac845.js +0 -1340
  181. package/Build/Workers/Matrix2-e1298525.js +0 -7086
  182. package/Build/Workers/Matrix3-41c58dde.js +0 -4283
  183. package/Build/Workers/OrientedBoundingBox-6b94d955.js +0 -1259
  184. package/Build/Workers/Plane-4c3d403b.js +0 -309
  185. package/Build/Workers/PolygonGeometryLibrary-4ffc457d.js +0 -1074
  186. package/Build/Workers/PolygonPipeline-d5e66350.js +0 -1344
  187. package/Build/Workers/PolylinePipeline-83410f0c.js +0 -573
  188. package/Build/Workers/PolylineVolumeGeometryLibrary-290e7aec.js +0 -781
  189. package/Build/Workers/PrimitivePipeline-6081d138.js +0 -966
  190. package/Build/Workers/RectangleGeometryLibrary-986710d8.js +0 -280
  191. package/Build/Workers/RuntimeError-ef395448.js +0 -68
  192. package/Build/Workers/TerrainEncoding-528e1d68.js +0 -1227
  193. package/Build/Workers/Transforms-b527bb09.js +0 -14714
  194. package/Build/Workers/VertexFormat-030f11ff.js +0 -312
  195. package/Build/Workers/WallGeometryLibrary-faf583f8.js +0 -211
  196. package/Build/Workers/WebGLConstants-0b1ce7ba.js +0 -620
  197. package/Build/Workers/WebMercatorProjection-13ed1a6e.js +0 -151
  198. package/Build/Workers/arrayRemoveDuplicates-d2061e85.js +0 -129
  199. package/Build/Workers/cesiumWorkerBootstrapper.js +0 -1363
  200. package/Build/Workers/combine-d9581036.js +0 -82
  201. package/Build/Workers/defaultValue-fe22d8c0.js +0 -51
  202. package/Source/ThirdParty/Workers/draco_decoder_nodejs.js +0 -117
  203. package/Source/Workers/cesiumWorkerBootstrapper.js +0 -2290
  204. package/Source/Workers/package.json +0 -1
  205. /package/Source/{WorkersES6 → Workers}/combineGeometry.js +0 -0
  206. /package/Source/{WorkersES6 → Workers}/createBoxGeometry.js +0 -0
  207. /package/Source/{WorkersES6 → Workers}/createBoxOutlineGeometry.js +0 -0
  208. /package/Source/{WorkersES6 → Workers}/createCircleGeometry.js +0 -0
  209. /package/Source/{WorkersES6 → Workers}/createCircleOutlineGeometry.js +0 -0
  210. /package/Source/{WorkersES6 → Workers}/createCoplanarPolygonGeometry.js +0 -0
  211. /package/Source/{WorkersES6 → Workers}/createCoplanarPolygonOutlineGeometry.js +0 -0
  212. /package/Source/{WorkersES6 → Workers}/createCorridorGeometry.js +0 -0
  213. /package/Source/{WorkersES6 → Workers}/createCorridorOutlineGeometry.js +0 -0
  214. /package/Source/{WorkersES6 → Workers}/createCylinderGeometry.js +0 -0
  215. /package/Source/{WorkersES6 → Workers}/createCylinderOutlineGeometry.js +0 -0
  216. /package/Source/{WorkersES6 → Workers}/createEllipseGeometry.js +0 -0
  217. /package/Source/{WorkersES6 → Workers}/createEllipseOutlineGeometry.js +0 -0
  218. /package/Source/{WorkersES6 → Workers}/createEllipsoidGeometry.js +0 -0
  219. /package/Source/{WorkersES6 → Workers}/createEllipsoidOutlineGeometry.js +0 -0
  220. /package/Source/{WorkersES6 → Workers}/createFrustumGeometry.js +0 -0
  221. /package/Source/{WorkersES6 → Workers}/createFrustumOutlineGeometry.js +0 -0
  222. /package/Source/{WorkersES6 → Workers}/createGroundPolylineGeometry.js +0 -0
  223. /package/Source/{WorkersES6 → Workers}/createPlaneGeometry.js +0 -0
  224. /package/Source/{WorkersES6 → Workers}/createPlaneOutlineGeometry.js +0 -0
  225. /package/Source/{WorkersES6 → Workers}/createPolygonGeometry.js +0 -0
  226. /package/Source/{WorkersES6 → Workers}/createPolygonOutlineGeometry.js +0 -0
  227. /package/Source/{WorkersES6 → Workers}/createPolylineGeometry.js +0 -0
  228. /package/Source/{WorkersES6 → Workers}/createPolylineVolumeGeometry.js +0 -0
  229. /package/Source/{WorkersES6 → Workers}/createPolylineVolumeOutlineGeometry.js +0 -0
  230. /package/Source/{WorkersES6 → Workers}/createRectangleGeometry.js +0 -0
  231. /package/Source/{WorkersES6 → Workers}/createRectangleOutlineGeometry.js +0 -0
  232. /package/Source/{WorkersES6 → Workers}/createSimplePolylineGeometry.js +0 -0
  233. /package/Source/{WorkersES6 → Workers}/createSphereGeometry.js +0 -0
  234. /package/Source/{WorkersES6 → Workers}/createSphereOutlineGeometry.js +0 -0
  235. /package/Source/{WorkersES6 → Workers}/createVectorTileClampedPolylines.js +0 -0
  236. /package/Source/{WorkersES6 → Workers}/createVectorTileGeometries.js +0 -0
  237. /package/Source/{WorkersES6 → Workers}/createVectorTilePoints.js +0 -0
  238. /package/Source/{WorkersES6 → Workers}/createVectorTilePolygons.js +0 -0
  239. /package/Source/{WorkersES6 → Workers}/createVectorTilePolylines.js +0 -0
  240. /package/Source/{WorkersES6 → Workers}/createVerticesFromGoogleEarthEnterpriseBuffer.js +0 -0
  241. /package/Source/{WorkersES6 → Workers}/createVerticesFromHeightmap.js +0 -0
  242. /package/Source/{WorkersES6 → Workers}/createVerticesFromQuantizedTerrainMesh.js +0 -0
  243. /package/Source/{WorkersES6 → Workers}/createWallGeometry.js +0 -0
  244. /package/Source/{WorkersES6 → Workers}/createWallOutlineGeometry.js +0 -0
  245. /package/Source/{WorkersES6 → Workers}/decodeGoogleEarthEnterprisePacket.js +0 -0
  246. /package/Source/{WorkersES6 → Workers}/upsampleQuantizedTerrainMesh.js +0 -0
@@ -3,7 +3,6 @@ import defaultValue from "../Core/defaultValue.js";
3
3
  import defined from "../Core/defined.js";
4
4
  import Ellipsoid from "../Core/Ellipsoid.js";
5
5
  import HeadingPitchRoll from "../Core/HeadingPitchRoll.js";
6
- import CesiumMath from "../Core/Math.js";
7
6
  import Matrix3 from "../Core/Matrix3.js";
8
7
  import Matrix4 from "../Core/Matrix4.js";
9
8
  import Resource from "../Core/Resource.js";
@@ -11,6 +10,7 @@ import Quaternion from "../Core/Quaternion.js";
11
10
  import Transforms from "../Core/Transforms.js";
12
11
  import Cesium3DTile from "./Cesium3DTile.js";
13
12
  import I3SDataProvider from "./I3SDataProvider.js";
13
+ import I3SDecoder from "./I3SDecoder.js";
14
14
  import I3SFeature from "./I3SFeature.js";
15
15
  import I3SField from "./I3SField.js";
16
16
  import I3SGeometry from "./I3SGeometry.js";
@@ -608,71 +608,6 @@ I3SNode.prototype._create3DTileDefinition = function () {
608
608
  return inPlaceTileDefinition;
609
609
  };
610
610
 
611
- /**
612
- * @private
613
- */
614
- I3SNode.prototype._createI3SDecoderTask = async function (
615
- decodeI3STaskProcessor,
616
- data
617
- ) {
618
- // Prepare the data to send to the worker
619
- const parentData = data.geometryData._parent._data;
620
- const parentRotationInverseMatrix =
621
- data.geometryData._parent._inverseRotationMatrix;
622
-
623
- let longitude = 0.0;
624
- let latitude = 0.0;
625
- let height = 0.0;
626
-
627
- if (defined(parentData.obb)) {
628
- longitude = parentData.obb.center[0];
629
- latitude = parentData.obb.center[1];
630
- height = parentData.obb.center[2];
631
- } else if (defined(parentData.mbs)) {
632
- longitude = parentData.mbs[0];
633
- latitude = parentData.mbs[1];
634
- height = parentData.mbs[2];
635
- }
636
-
637
- const axisFlipRotation = Matrix3.fromRotationX(-CesiumMath.PI_OVER_TWO);
638
- const parentRotation = new Matrix3();
639
-
640
- Matrix3.multiply(
641
- axisFlipRotation,
642
- parentRotationInverseMatrix,
643
- parentRotation
644
- );
645
-
646
- const cartographicCenter = Cartographic.fromDegrees(
647
- longitude,
648
- latitude,
649
- height
650
- );
651
-
652
- const cartesianCenter = Ellipsoid.WGS84.cartographicToCartesian(
653
- cartographicCenter
654
- );
655
-
656
- const payload = {
657
- binaryData: data.geometryData._data,
658
- featureData:
659
- defined(data.featureData) && defined(data.featureData[0])
660
- ? data.featureData[0].data
661
- : undefined,
662
- schema: data.defaultGeometrySchema,
663
- bufferInfo: data.geometryData._geometryBufferInfo,
664
- ellipsoidRadiiSquare: Ellipsoid.WGS84.radiiSquared,
665
- url: data.url,
666
- geoidDataList: data.geometryData._dataProvider._geoidDataList,
667
- cartographicCenter: cartographicCenter,
668
- cartesianCenter: cartesianCenter,
669
- parentRotation: parentRotation,
670
- };
671
-
672
- const transferrableObjects = [];
673
- return decodeI3STaskProcessor.scheduleTask(payload, transferrableObjects);
674
- };
675
-
676
611
  /**
677
612
  * @private
678
613
  */
@@ -702,59 +637,46 @@ I3SNode.prototype._createContentURL = async function () {
702
637
  },
703
638
  };
704
639
 
705
- const decodeI3STaskProcessor = await this._dataProvider.getDecoderTaskProcessor();
706
-
707
640
  // Load the geometry data
708
641
  const dataPromises = [this._loadGeometryData()];
709
642
  if (this._dataProvider.legacyVersion16) {
710
643
  dataPromises.push(this._loadFeatureData());
711
644
  }
712
645
 
713
- const that = this;
714
- return Promise.all(dataPromises).then(function () {
715
- // Binary glTF
716
- let generateGltfPromise = Promise.resolve();
717
- if (defined(that._geometryData) && that._geometryData.length > 0) {
718
- const parameters = {
719
- geometryData: that._geometryData[0],
720
- featureData: that._featureData,
721
- defaultGeometrySchema: that._layer._data.store.defaultGeometrySchema,
722
- url: that._geometryData[0].resource.url,
723
- tile: that._tile,
724
- };
725
-
726
- const promise = that._createI3SDecoderTask(
727
- decodeI3STaskProcessor,
728
- parameters
729
- );
730
- if (!defined(promise)) {
731
- // Postponed
732
- return;
733
- }
734
-
735
- generateGltfPromise = promise.then(function (result) {
736
- rawGltf = parameters.geometryData._generateGltf(
737
- result.meshData.nodesInScene,
738
- result.meshData.nodes,
739
- result.meshData.meshes,
740
- result.meshData.buffers,
741
- result.meshData.bufferViews,
742
- result.meshData.accessors
743
- );
744
-
745
- that._geometryData[0]._customAttributes =
746
- result.meshData._customAttributes;
747
- });
646
+ await Promise.all(dataPromises);
647
+ // Binary glTF
648
+ if (defined(this._geometryData) && this._geometryData.length > 0) {
649
+ const url = this._geometryData[0].resource.url;
650
+ const geometrySchema = this._layer._data.store.defaultGeometrySchema;
651
+ const geometryData = this._geometryData[0];
652
+ const result = await I3SDecoder.decode(
653
+ url,
654
+ geometrySchema,
655
+ geometryData,
656
+ this._featureData[0]
657
+ );
658
+ if (!defined(result)) {
659
+ // Postponed
660
+ return;
748
661
  }
749
662
 
750
- return generateGltfPromise.then(function () {
751
- const binaryGltfData = that._dataProvider._binarizeGltf(rawGltf);
752
- const glbDataBlob = new Blob([binaryGltfData], {
753
- type: "application/binary",
754
- });
755
- return URL.createObjectURL(glbDataBlob);
756
- });
663
+ rawGltf = geometryData._generateGltf(
664
+ result.meshData.nodesInScene,
665
+ result.meshData.nodes,
666
+ result.meshData.meshes,
667
+ result.meshData.buffers,
668
+ result.meshData.bufferViews,
669
+ result.meshData.accessors
670
+ );
671
+
672
+ this._geometryData[0]._customAttributes = result.meshData._customAttributes;
673
+ }
674
+
675
+ const binaryGltfData = this._dataProvider._binarizeGltf(rawGltf);
676
+ const glbDataBlob = new Blob([binaryGltfData], {
677
+ type: "application/binary",
757
678
  });
679
+ return URL.createObjectURL(glbDataBlob);
758
680
  };
759
681
 
760
682
  // Reimplement Cesium3DTile.prototype.requestContent so that
@@ -536,8 +536,21 @@ function deriveChildTile(
536
536
  // user specified such as extras or extensions.
537
537
  const deep = true;
538
538
  const rootHeader = clone(implicitTileset.tileHeader, deep);
539
+ // The bounding volume was computed above since it may come from metadata
540
+ // in the subtree file.
539
541
  delete rootHeader.boundingVolume;
542
+ // Copying the transform to all the transcoded tiles would cause the transform
543
+ // to be applied multiple times. Removing it from the header avoids this issue.
540
544
  delete rootHeader.transform;
545
+ // The implicit tiling spec does not specify what should happen if explicit
546
+ // tile metadata is added to the placeholder tile. Since implicit tile
547
+ // metadata comes from the subtree file, ignore the explicit version.
548
+ //
549
+ // Also, when a property with the semantic TILE_BOUNDING_VOLUME is added to
550
+ // the placeholder tile to set a tight bounding volume (See Cesium3DTile.js)
551
+ // propagating it to transcoded tiles causes transcoded tiles to use the
552
+ // wrong bounding volume, this can lead to loading far too many tiles.
553
+ delete rootHeader.metadata;
541
554
  const combinedTileJson = combine(tileJson, rootHeader, deep);
542
555
 
543
556
  const childTile = makeTile(
@@ -60,6 +60,11 @@ function ImplicitTileset(baseResource, tileJson, metadataSchema) {
60
60
  */
61
61
  this.metadataSchema = metadataSchema;
62
62
 
63
+ // Due to using explicit tile metadata to store a tight bounding box
64
+ // in some cases (see https://github.com/CesiumGS/cesium/pull/11365)
65
+ // it's important that this bounding volume is computed from the tile JSON
66
+ // (which is the original, possibly loose bounding volume) rather than
67
+ // tile.boundingVolume which is the tighter one.
63
68
  const boundingVolume = tileJson.boundingVolume;
64
69
  if (
65
70
  !defined(boundingVolume.box) &&
@@ -56,7 +56,7 @@ function addWhitePixelCanvas(textureAtlas) {
56
56
 
57
57
  // Canvas operations take a frame to draw. Use the asynchronous add function which resolves a promise and allows the draw to complete,
58
58
  // but there's no need to wait on the promise before operation can continue
59
- textureAtlas.addImage(whitePixelCanvasId, canvas);
59
+ return textureAtlas.addImage(whitePixelCanvasId, canvas);
60
60
  }
61
61
 
62
62
  // reusable object for calling writeTextToCanvas
@@ -911,6 +911,8 @@ LabelCollection.prototype.update = function (frameState) {
911
911
  initialSize: whitePixelSize,
912
912
  });
913
913
  backgroundBillboardCollection.textureAtlas = this._backgroundTextureAtlas;
914
+
915
+ // Request a new render in request render mode after the next frame renders
914
916
  addWhitePixelCanvas(this._backgroundTextureAtlas);
915
917
  }
916
918
 
@@ -423,7 +423,11 @@ function createInstances(loader, components, frameState) {
423
423
  // For I3DMs that do not define an RTC center, we manually compute a BoundingSphere and store
424
424
  // positions relative to the center, to be uploaded to the GPU. This avoids jittering at higher
425
425
  // precisions.
426
- if (!defined(rtcCenter)) {
426
+ // Also manually compute if RTC center equals Cartesian3.ZERO
427
+ if (
428
+ !defined(rtcCenter) ||
429
+ Cartesian3.equals(Cartesian3.unpack(rtcCenter), Cartesian3.ZERO)
430
+ ) {
427
431
  const positionBoundingSphere = BoundingSphere.fromPoints(instancePositions);
428
432
 
429
433
  for (i = 0; i < instancePositions.length; i++) {
@@ -408,6 +408,7 @@ function Model(options) {
408
408
  credit = new Credit(credit);
409
409
  }
410
410
 
411
+ this._credits = [];
411
412
  this._credit = credit;
412
413
 
413
414
  // Credits to be added from the Resource (if it is an IonResource)
@@ -1838,7 +1839,10 @@ Model.prototype.update = function (frameState) {
1838
1839
  };
1839
1840
 
1840
1841
  function processLoader(model, frameState) {
1841
- if (!model._resourcesLoaded || !model._texturesLoaded) {
1842
+ if (
1843
+ !model._resourcesLoaded ||
1844
+ (model._loader.incrementallyLoadTextures && !model._texturesLoaded)
1845
+ ) {
1842
1846
  // Ensures frames continue to render in requestRender mode while resources are processing
1843
1847
  frameState.afterRender.push(() => true);
1844
1848
  return model._loader.process(frameState);
@@ -2255,24 +2259,29 @@ function updateShowCreditsOnScreen(model) {
2255
2259
  return;
2256
2260
  }
2257
2261
  model._showCreditsOnScreenDirty = false;
2262
+ model._credits.length = 0;
2258
2263
 
2259
2264
  const showOnScreen = model._showCreditsOnScreen;
2260
2265
  if (defined(model._credit)) {
2261
- model._credit.showOnScreen = showOnScreen || model._credit._isDefaultToken;
2266
+ const credit = Credit.clone(model._credit);
2267
+ credit.showOnScreen = credit.showOnScreen || showOnScreen;
2268
+ model._credits.push(credit);
2262
2269
  }
2263
2270
 
2264
2271
  const resourceCredits = model._resourceCredits;
2265
2272
  const resourceCreditsLength = resourceCredits.length;
2266
2273
  for (let i = 0; i < resourceCreditsLength; i++) {
2267
- resourceCredits[i].showOnScreen =
2268
- showOnScreen || resourceCredits[i]._isDefaultToken;
2274
+ const credit = Credit.clone(resourceCredits[i]);
2275
+ credit.showOnScreen = credit.showOnScreen || showOnScreen;
2276
+ model._credits.push(credit);
2269
2277
  }
2270
2278
 
2271
2279
  const gltfCredits = model._gltfCredits;
2272
2280
  const gltfCreditsLength = gltfCredits.length;
2273
2281
  for (let i = 0; i < gltfCreditsLength; i++) {
2274
- gltfCredits[i].showOnScreen =
2275
- showOnScreen || gltfCredits[i]._isDefaultToken;
2282
+ const credit = Credit.clone(gltfCredits[i]);
2283
+ credit.showOnScreen = credit.showOnScreen || showOnScreen;
2284
+ model._credits.push(credit);
2276
2285
  }
2277
2286
  }
2278
2287
 
@@ -2382,22 +2391,10 @@ function passesDistanceDisplayCondition(model, frameState) {
2382
2391
 
2383
2392
  function addCreditsToCreditDisplay(model, frameState) {
2384
2393
  const creditDisplay = frameState.creditDisplay;
2385
- // Add all credits to the credit display.
2386
- const credit = model._credit;
2387
- if (defined(credit)) {
2388
- creditDisplay.addCreditToNextFrame(credit);
2389
- }
2390
-
2391
- const resourceCredits = model._resourceCredits;
2392
- const resourceCreditsLength = resourceCredits.length;
2393
- for (let c = 0; c < resourceCreditsLength; c++) {
2394
- creditDisplay.addCreditToNextFrame(resourceCredits[c]);
2395
- }
2396
-
2397
- const gltfCredits = model._gltfCredits;
2398
- const gltfCreditsLength = gltfCredits.length;
2399
- for (let c = 0; c < gltfCreditsLength; c++) {
2400
- creditDisplay.addCreditToNextFrame(gltfCredits[c]);
2394
+ const credits = model._credits;
2395
+ const creditsLength = credits.length;
2396
+ for (let c = 0; c < creditsLength; c++) {
2397
+ creditDisplay.addCreditToNextFrame(credits[c]);
2401
2398
  }
2402
2399
  }
2403
2400
 
@@ -2792,7 +2789,7 @@ Model.fromGltfAsync = async function (options) {
2792
2789
  if (defined(resourceCredits)) {
2793
2790
  const length = resourceCredits.length;
2794
2791
  for (let i = 0; i < length; i++) {
2795
- model._resourceCredits.push(resourceCredits[i]);
2792
+ model._resourceCredits.push(Credit.clone(resourceCredits[i]));
2796
2793
  }
2797
2794
  }
2798
2795
 
@@ -18,6 +18,7 @@ const defaultCredit = new Credit(
18
18
  *
19
19
  * @property {string} [url='https://tile.openstreetmap.org'] The OpenStreetMap server url.
20
20
  * @property {string} [fileExtension='png'] The file extension for images on the server.
21
+ * @property {boolean} [retinaTiles=false] When true, request tiles at the 2x resolution for retina displays.
21
22
  * @property {Rectangle} [rectangle=Rectangle.MAX_VALUE] The rectangle of the layer.
22
23
  * @property {number} [minimumLevel=0] The minimum level-of-detail supported by the imagery provider.
23
24
  * @property {number} [maximumLevel] The maximum level-of-detail supported by the imagery provider, or undefined if there is no limit.
@@ -62,7 +63,9 @@ function OpenStreetMapImageryProvider(options) {
62
63
  defaultValue(options.url, "https://tile.openstreetmap.org/")
63
64
  );
64
65
  resource.appendForwardSlash();
65
- resource.url += `{z}/{x}/{y}.${defaultValue(options.fileExtension, "png")}`;
66
+ resource.url += `{z}/{x}/{y}${
67
+ options.retinaTiles ? "@2x" : ""
68
+ }.${defaultValue(options.fileExtension, "png")}`;
66
69
 
67
70
  const tilingScheme = new WebMercatorTilingScheme({
68
71
  ellipsoid: options.ellipsoid,
@@ -226,16 +226,16 @@ PostProcessStageLibrary.isDepthOfFieldSupported = function (scene) {
226
226
  *
227
227
  * @example
228
228
  * // multiple silhouette effects
229
- * const yellowEdge = Cesium.PostProcessLibrary.createEdgeDetectionStage();
229
+ * const yellowEdge = Cesium.PostProcessStageLibrary.createEdgeDetectionStage();
230
230
  * yellowEdge.uniforms.color = Cesium.Color.YELLOW;
231
231
  * yellowEdge.selected = [feature0];
232
232
  *
233
- * const greenEdge = Cesium.PostProcessLibrary.createEdgeDetectionStage();
233
+ * const greenEdge = Cesium.PostProcessStageLibrary.createEdgeDetectionStage();
234
234
  * greenEdge.uniforms.color = Cesium.Color.LIME;
235
235
  * greenEdge.selected = [feature1];
236
236
  *
237
237
  * // draw edges around feature0 and feature1
238
- * postProcessStages.add(Cesium.PostProcessLibrary.createSilhouetteStage([yellowEdge, greenEdge]);
238
+ * postProcessStages.add(Cesium.PostProcessStageLibrary.createSilhouetteStage([yellowEdge, greenEdge]);
239
239
  */
240
240
  PostProcessStageLibrary.createEdgeDetectionStage = function () {
241
241
  // unique name generated on call so more than one effect can be added
@@ -3,6 +3,7 @@ import defaultValue from "../Core/defaultValue.js";
3
3
  import defined from "../Core/defined.js";
4
4
  import destroyObject from "../Core/destroyObject.js";
5
5
  import DeveloperError from "../Core/DeveloperError.js";
6
+ import Event from "../Core/Event.js";
6
7
 
7
8
  /**
8
9
  * A collection of primitives. This is most often used with {@link Scene#primitives},
@@ -31,6 +32,8 @@ function PrimitiveCollection(options) {
31
32
 
32
33
  this._primitives = [];
33
34
  this._guid = createGuid();
35
+ this._primitiveAdded = new Event();
36
+ this._primitiveRemoved = new Event();
34
37
 
35
38
  // Used by the OrderedGroundPrimitiveCollection
36
39
  this._zIndex = undefined;
@@ -84,6 +87,35 @@ Object.defineProperties(PrimitiveCollection.prototype, {
84
87
  return this._primitives.length;
85
88
  },
86
89
  },
90
+
91
+ /**
92
+ * An event that is raised when a primitive is added to the collection.
93
+ * Event handlers are passed the primitive that was added.
94
+ * @memberof PrimitiveCollection.prototype
95
+ * @type {Event}
96
+ * @readonly
97
+ */
98
+ primitiveAdded: {
99
+ get: function () {
100
+ return this._primitiveAdded;
101
+ },
102
+ },
103
+
104
+ /**
105
+ * An event that is raised when a primitive is removed from the collection.
106
+ * Event handlers are passed the primitive that was removed.
107
+ * <p>
108
+ * Note: Depending on the destroyPrimitives constructor option, the primitive may already be destroyed.
109
+ * </p>
110
+ * @memberof PrimitiveCollection.prototype
111
+ * @type {Event}
112
+ * @readonly
113
+ */
114
+ primitiveRemoved: {
115
+ get: function () {
116
+ return this._primitiveRemoved;
117
+ },
118
+ },
87
119
  });
88
120
 
89
121
  /**
@@ -128,6 +160,8 @@ PrimitiveCollection.prototype.add = function (primitive, index) {
128
160
  this._primitives.splice(index, 0, primitive);
129
161
  }
130
162
 
163
+ this._primitiveAdded.raiseEvent(primitive);
164
+
131
165
  return primitive;
132
166
  };
133
167
 
@@ -159,6 +193,8 @@ PrimitiveCollection.prototype.remove = function (primitive) {
159
193
  primitive.destroy();
160
194
  }
161
195
 
196
+ this._primitiveRemoved.raiseEvent(primitive);
197
+
162
198
  return true;
163
199
  }
164
200
  // else ... this is not possible, I swear.
@@ -191,9 +227,12 @@ PrimitiveCollection.prototype.removeAll = function () {
191
227
  const length = primitives.length;
192
228
  for (let i = 0; i < length; ++i) {
193
229
  delete primitives[i]._external._composites[this._guid];
230
+
194
231
  if (this.destroyPrimitives) {
195
232
  primitives[i].destroy();
196
233
  }
234
+
235
+ this._primitiveRemoved.raiseEvent(primitives[i]);
197
236
  }
198
237
  this._primitives = [];
199
238
  };
@@ -3166,7 +3166,10 @@ Scene.prototype.updateEnvironment = function () {
3166
3166
  );
3167
3167
  environmentState.isReadyForAtmosphere =
3168
3168
  environmentState.isReadyForAtmosphere ||
3169
+ !globe.show ||
3169
3170
  globe._surface._tilesToRender.length > 0;
3171
+ } else {
3172
+ environmentState.isReadyForAtmosphere = true;
3170
3173
  }
3171
3174
  environmentState.skyAtmosphereCommand = skyAtmosphere.update(
3172
3175
  frameState,
@@ -24,8 +24,9 @@ import ImageryProvider from "./ImageryProvider.js";
24
24
  */
25
25
 
26
26
  /**
27
- * Provides a single, top-level imagery tile. The single image is assumed to use a
28
- * {@link GeographicTilingScheme}.
27
+ * Provides a single, top-level imagery tile. The single image is assumed to be in
28
+ * the Geographic projection (i.e. WGS84 / EPSG:4326),
29
+ * and will be rendered using a {@link GeographicTilingScheme}.
29
30
  *
30
31
  * @alias SingleTileImageryProvider
31
32
  * @constructor
@@ -295,6 +296,7 @@ async function doRequest(resource, provider, previousError) {
295
296
  * Creates a provider for a single, top-level imagery tile. The single image is assumed to use a
296
297
  * @param {Resource|String} url The url for the tile
297
298
  * @param {SingleTileImageryProvider.fromUrlOptions} [options] Object describing initialization options.
299
+ * @returns {Promise.<SingleTileImageryProvider>} The resolved SingleTileImageryProvider.
298
300
  *
299
301
  * @example
300
302
  * const provider = await SingleTileImageryProvider.fromUrl("https://yoururl.com/image.png");