@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
@@ -12,6 +12,7 @@ const scratchCartesian2 = new Cartesian2();
12
12
  *
13
13
  * @param {TerrainProvider} terrainProvider The terrain provider from which to query heights.
14
14
  * @param {Cartographic[]} positions The positions to update with terrain heights.
15
+ * @param {boolean} [rejectOnTileFail=false] If true, for a failed terrain tile request the promise will be rejected. If false, returned heights will be undefined.
15
16
  * @returns {Promise<Cartographic[]>} A promise that resolves to the provided list of positions when terrain the query has completed. This
16
17
  * promise will reject if the terrain provider's `availability` property is undefined.
17
18
  *
@@ -25,8 +26,22 @@ const scratchCartesian2 = new Cartesian2();
25
26
  * const updatedPositions = await Cesium.sampleTerrainMostDetailed(terrainProvider, positions);
26
27
  * // positions[0].height and positions[1].height have been updated.
27
28
  * // updatedPositions is just a reference to positions.
29
+ *
30
+ * // To handle tile errors, pass true for the rejectOnTileFail parameter.
31
+ * try {
32
+ * const updatedPositions = await Cesium.sampleTerrainMostDetailed(terrainProvider, positions, true);
33
+ * } catch (error) {
34
+ * // A tile request error occurred.
35
+ * }
28
36
  */
29
- async function sampleTerrainMostDetailed(terrainProvider, positions) {
37
+ async function sampleTerrainMostDetailed(
38
+ terrainProvider,
39
+ positions,
40
+ rejectOnTileFail
41
+ ) {
42
+ if (!defined(rejectOnTileFail)) {
43
+ rejectOnTileFail = false;
44
+ }
30
45
  //>>includeStart('debug', pragmas.debug);
31
46
  if (!defined(terrainProvider)) {
32
47
  throw new DeveloperError("terrainProvider is required.");
@@ -84,7 +99,12 @@ async function sampleTerrainMostDetailed(terrainProvider, positions) {
84
99
  await Promise.all(
85
100
  byLevel.map(function (positionsAtLevel, index) {
86
101
  if (defined(positionsAtLevel)) {
87
- return sampleTerrain(terrainProvider, index, positionsAtLevel);
102
+ return sampleTerrain(
103
+ terrainProvider,
104
+ index,
105
+ positionsAtLevel,
106
+ rejectOnTileFail
107
+ );
88
108
  }
89
109
  })
90
110
  );
@@ -100,7 +120,11 @@ async function sampleTerrainMostDetailed(terrainProvider, positions) {
100
120
  }
101
121
 
102
122
  if (changedPositions.length > 0) {
103
- await sampleTerrainMostDetailed(terrainProvider, changedPositions);
123
+ await sampleTerrainMostDetailed(
124
+ terrainProvider,
125
+ changedPositions,
126
+ rejectOnTileFail
127
+ );
104
128
  }
105
129
 
106
130
  return positions;
@@ -4,7 +4,7 @@ import Resource from "../Core/Resource.js";
4
4
 
5
5
  let defaultTokenCredit;
6
6
  const defaultAccessToken =
7
- "AAPK8f33c81975d04fa5bc64d58baa922e4d8t7EX1YAV3MBqwKXAhJ1uohub5U5OCU0PyXE7kNEVf8hebc9ZA4kk17Y4FYDA_rV";
7
+ "AAPK4db83df15a06415e9b7d45d826eec992u0REAmuLmykhOFOk_4e61HgsO_e3C_qGUgiWNGElpjpiMfO9_Qg5ZRyy8POvB5EF";
8
8
  /**
9
9
  * Default options for accessing the ArcGIS image tile service.
10
10
  *
@@ -76,7 +76,6 @@ ArcGisMapService.getDefaultTokenCredit = function (providedKey) {
76
76
  You can sign up for a free ArcGIS Developer account at <a href="https://developers.arcgis.com/">https://developers.arcgis.com/</a>.</b>';
77
77
 
78
78
  defaultTokenCredit = new Credit(defaultTokenMessage, true);
79
- defaultTokenCredit._isDefaultToken = true;
80
79
  }
81
80
 
82
81
  return defaultTokenCredit;
@@ -1166,6 +1166,13 @@ Billboard.prototype._loadImage = function () {
1166
1166
  that._image = undefined;
1167
1167
  that._imageIndexPromise = undefined;
1168
1168
  makeDirty(that, IMAGE_INDEX_INDEX);
1169
+
1170
+ const scene = that._billboardCollection._scene;
1171
+ if (!defined(scene)) {
1172
+ return;
1173
+ }
1174
+ // Request a new render in request render mode
1175
+ scene.frameState.afterRender.push(() => true);
1169
1176
  }
1170
1177
 
1171
1178
  if (defined(image)) {
@@ -39,7 +39,7 @@ passOptions[Cesium3DTilePass.SHADOW] = Object.freeze({
39
39
  });
40
40
 
41
41
  passOptions[Cesium3DTilePass.PRELOAD] = Object.freeze({
42
- pass: Cesium3DTilePass.SHADOW,
42
+ pass: Cesium3DTilePass.PRELOAD,
43
43
  isRender: false,
44
44
  requestTiles: true,
45
45
  ignoreCommands: true,
@@ -67,7 +67,6 @@ import Cesium3DTilesetSkipTraversal from "./Cesium3DTilesetSkipTraversal.js";
67
67
  * @property {Axis} [modelForwardAxis=Axis.X] Which axis is considered forward when loading models for tile contents.
68
68
  * @property {ShadowMode} [shadows=ShadowMode.ENABLED] Determines whether the tileset casts or receives shadows from light sources.
69
69
  * @property {number} [maximumScreenSpaceError=16] The maximum screen space error used to drive level of detail refinement.
70
- * @property {number} [maximumMemoryUsage=512] The maximum amount of memory in MB that can be used by the tileset. Deprecated.
71
70
  * @property {number} [cacheBytes=536870912] The size (in bytes) to which the tile cache will be trimmed, if the cache contains tiles not needed for the current view.
72
71
  * @property {number} [maximumCacheOverflowBytes=536870912] The maximum additional memory (in bytes) to allow for cache headroom, if more than {@link Cesium3DTileset#cacheBytes} are needed for the current view.
73
72
  * @property {boolean} [cullWithChildrenBounds=true] Optimization option. Whether to cull tiles using the union of their children bounding volumes.
@@ -224,15 +223,7 @@ function Cesium3DTileset(options) {
224
223
  );
225
224
  this._memoryAdjustedScreenSpaceError = this._maximumScreenSpaceError;
226
225
 
227
- let defaultCacheBytes = 512 * 1024 * 1024;
228
- if (defined(options.maximumMemoryUsage)) {
229
- deprecationWarning(
230
- "Cesium3DTileset.maximumMemoryUsage",
231
- "Cesium3DTileset.maximumMemoryUsage was deprecated in CesiumJS 1.107. It will be removed in CesiumJS 1.110. Use Cesium3DTileset.cacheBytes instead."
232
- );
233
- defaultCacheBytes = options.maximumMemoryUsage * 1024 * 1024;
234
- }
235
- this._cacheBytes = defaultValue(options.cacheBytes, defaultCacheBytes);
226
+ this._cacheBytes = defaultValue(options.cacheBytes, 512 * 1024 * 1024);
236
227
  //>>includeStart('debug', pragmas.debug);
237
228
  Check.typeOf.number.greaterThanOrEquals("cacheBytes", this._cacheBytes, 0);
238
229
  //>>includeEnd('debug');
@@ -1376,57 +1367,6 @@ Object.defineProperties(Cesium3DTileset.prototype, {
1376
1367
  },
1377
1368
  },
1378
1369
 
1379
- /**
1380
- * The maximum amount of GPU memory (in MB) that may be used to cache tiles. This value is estimated from
1381
- * geometry, textures, and batch table textures of loaded tiles. For point clouds, this value also
1382
- * includes per-point metadata.
1383
- * <p>
1384
- * Tiles not in view are unloaded to enforce this.
1385
- * </p>
1386
- * <p>
1387
- * If decreasing this value results in unloading tiles, the tiles are unloaded the next frame.
1388
- * </p>
1389
- * <p>
1390
- * If tiles sized more than <code>maximumMemoryUsage</code> are needed
1391
- * to meet the desired screen space error, determined by {@link Cesium3DTileset#maximumScreenSpaceError},
1392
- * for the current view, then the memory usage of the tiles loaded will exceed
1393
- * <code>maximumMemoryUsage</code>. For example, if the maximum is 256 MB, but
1394
- * 300 MB of tiles are needed to meet the screen space error, then 300 MB of tiles may be loaded. When
1395
- * these tiles go out of view, they will be unloaded.
1396
- * </p>
1397
- *
1398
- * @memberof Cesium3DTileset.prototype
1399
- *
1400
- * @type {number}
1401
- * @default 512
1402
- *
1403
- * @exception {DeveloperError} <code>maximumMemoryUsage</code> must be greater than or equal to zero.
1404
- * @see Cesium3DTileset#totalMemoryUsageInBytes
1405
- *
1406
- * @deprecated
1407
- */
1408
- maximumMemoryUsage: {
1409
- get: function () {
1410
- deprecationWarning(
1411
- "Cesium3DTileset.maximumMemoryUsage",
1412
- "Cesium3DTileset.maximumMemoryUsage was deprecated in CesiumJS 1.107. It will be removed in CesiumJS 1.110. Use Cesium3DTileset.cacheBytes instead."
1413
- );
1414
- return this._maximumMemoryUsage;
1415
- },
1416
- set: function (value) {
1417
- deprecationWarning(
1418
- "Cesium3DTileset.maximumMemoryUsage",
1419
- "Cesium3DTileset.maximumMemoryUsage was deprecated in CesiumJS 1.107. It will be removed in CesiumJS 1.110. Use Cesium3DTileset.cacheBytes instead."
1420
- );
1421
- //>>includeStart('debug', pragmas.debug);
1422
- Check.typeOf.number.greaterThanOrEquals("value", value, 0);
1423
- //>>includeEnd('debug');
1424
-
1425
- this._maximumMemoryUsage = value;
1426
- this._cacheBytes = value * 1024 * 1024;
1427
- },
1428
- },
1429
-
1430
1370
  /**
1431
1371
  * The amount of GPU memory (in bytes) used to cache tiles. This memory usage is estimated from
1432
1372
  * geometry, textures, and batch table textures of loaded tiles. For point clouds, this value also
@@ -1880,6 +1820,7 @@ Object.defineProperties(Cesium3DTileset.prototype, {
1880
1820
  },
1881
1821
  set: function (value) {
1882
1822
  this._showCreditsOnScreen = value;
1823
+ createCredits(this);
1883
1824
  },
1884
1825
  },
1885
1826
 
@@ -2068,24 +2009,7 @@ Cesium3DTileset.fromUrl = async function (url, options) {
2068
2009
  tileset._asset = asset;
2069
2010
  tileset._extras = tilesetJson.extras;
2070
2011
 
2071
- let credits = resource.credits;
2072
- if (!defined(credits)) {
2073
- credits = [];
2074
- }
2075
-
2076
- const assetExtras = asset.extras;
2077
- if (
2078
- defined(assetExtras) &&
2079
- defined(assetExtras.cesium) &&
2080
- defined(assetExtras.cesium.credits)
2081
- ) {
2082
- const extraCredits = assetExtras.cesium.credits;
2083
- for (let i = 0; i < extraCredits.length; ++i) {
2084
- const credit = extraCredits[i];
2085
- credits.push(new Credit(credit.html, tileset._showCreditsOnScreen));
2086
- }
2087
- }
2088
- tileset._credits = credits;
2012
+ createCredits(tileset);
2089
2013
 
2090
2014
  // Handle legacy gltfUpAxis option
2091
2015
  const gltfUpAxis = defined(tilesetJson.asset.gltfUpAxis)
@@ -3210,8 +3134,6 @@ function update(tileset, frameState, passStatistics, passOptions) {
3210
3134
  if (defined(credits) && statistics.selected !== 0) {
3211
3135
  for (let i = 0; i < credits.length; ++i) {
3212
3136
  const credit = credits[i];
3213
- credit.showOnScreen =
3214
- tileset._showCreditsOnScreen || credit._isDefaultToken;
3215
3137
  frameState.creditDisplay.addCreditToNextFrame(credit);
3216
3138
  }
3217
3139
  }
@@ -3220,6 +3142,41 @@ function update(tileset, frameState, passStatistics, passOptions) {
3220
3142
  return ready;
3221
3143
  }
3222
3144
 
3145
+ function createCredits(tileset) {
3146
+ let credits = tileset._credits;
3147
+ if (!defined(credits)) {
3148
+ credits = [];
3149
+ }
3150
+ credits.length = 0;
3151
+
3152
+ if (defined(tileset.resource.credits)) {
3153
+ tileset.resource.credits.forEach((credit) => {
3154
+ credits.push(Credit.clone(credit));
3155
+ });
3156
+ }
3157
+
3158
+ const assetExtras = tileset.asset.extras;
3159
+ if (
3160
+ defined(assetExtras) &&
3161
+ defined(assetExtras.cesium) &&
3162
+ defined(assetExtras.cesium.credits)
3163
+ ) {
3164
+ const extraCredits = assetExtras.cesium.credits;
3165
+ for (let i = 0; i < extraCredits.length; ++i) {
3166
+ const credit = extraCredits[i];
3167
+ credits.push(new Credit(credit.html));
3168
+ }
3169
+ }
3170
+
3171
+ credits.forEach(
3172
+ (credit) =>
3173
+ (credit.showOnScreen =
3174
+ credit.showOnScreen || tileset._showCreditsOnScreen)
3175
+ );
3176
+
3177
+ tileset._credits = credits;
3178
+ }
3179
+
3223
3180
  /**
3224
3181
  * @private
3225
3182
  * @param {object} passOptions
@@ -437,7 +437,7 @@ CreditDisplay.prototype.addCreditToNextFrame = function (credit) {
437
437
  Check.defined("credit", credit);
438
438
  //>>includeEnd('debug');
439
439
 
440
- if (credit._isIon) {
440
+ if (credit.isIon()) {
441
441
  // If this is the an ion logo credit from the ion server
442
442
  // Just use the default credit (which is identical) to avoid blinking
443
443
  if (!defined(this._defaultCredit)) {
@@ -546,7 +546,7 @@ CreditDisplay.prototype.beginFrame = function () {
546
546
  : lightboxCredits;
547
547
 
548
548
  if (
549
- staticCredit._isIon &&
549
+ staticCredit.isIon() &&
550
550
  Credit.equals(CreditDisplay.cesiumCredit, this._cesiumCredit)
551
551
  ) {
552
552
  // If this is an ion logo credit from the ion server,
@@ -1,5 +1,6 @@
1
1
  import defined from "../Core/defined.js";
2
2
  import FeatureDetection from "../Core/FeatureDetection.js";
3
+ import RuntimeError from "../Core/RuntimeError.js";
3
4
  import TaskProcessor from "../Core/TaskProcessor.js";
4
5
 
5
6
  /**
@@ -16,6 +17,7 @@ DracoLoader._maxDecodingConcurrency = Math.max(
16
17
  // Exposed for testing purposes
17
18
  DracoLoader._decoderTaskProcessor = undefined;
18
19
  DracoLoader._taskProcessorReady = false;
20
+ DracoLoader._error = undefined;
19
21
  DracoLoader._getDecoderTaskProcessor = function () {
20
22
  if (!defined(DracoLoader._decoderTaskProcessor)) {
21
23
  const processor = new TaskProcessor(
@@ -24,11 +26,19 @@ DracoLoader._getDecoderTaskProcessor = function () {
24
26
  );
25
27
  processor
26
28
  .initWebAssemblyModule({
27
- modulePath: "ThirdParty/Workers/draco_decoder_nodejs.js",
28
29
  wasmBinaryFile: "ThirdParty/draco_decoder.wasm",
29
30
  })
30
- .then(function () {
31
- DracoLoader._taskProcessorReady = true;
31
+ .then(function (result) {
32
+ if (result) {
33
+ DracoLoader._taskProcessorReady = true;
34
+ } else {
35
+ DracoLoader._error = new RuntimeError(
36
+ "Draco decoder could not be initialized."
37
+ );
38
+ }
39
+ })
40
+ .catch((error) => {
41
+ DracoLoader._error = error;
32
42
  });
33
43
  DracoLoader._decoderTaskProcessor = processor;
34
44
  }
@@ -39,9 +49,15 @@ DracoLoader._getDecoderTaskProcessor = function () {
39
49
  /**
40
50
  * Decodes a compressed point cloud. Returns undefined if the task cannot be scheduled.
41
51
  * @private
52
+ *
53
+ * @exception {RuntimeError} Draco decoder could not be initialized.
42
54
  */
43
55
  DracoLoader.decodePointCloud = function (parameters) {
44
56
  const decoderTaskProcessor = DracoLoader._getDecoderTaskProcessor();
57
+ if (defined(DracoLoader._error)) {
58
+ throw DracoLoader._error;
59
+ }
60
+
45
61
  if (!DracoLoader._taskProcessorReady) {
46
62
  // The task processor is not ready to schedule tasks
47
63
  return;
@@ -62,9 +78,16 @@ DracoLoader.decodePointCloud = function (parameters) {
62
78
  *
63
79
  * @returns {Promise} A promise that resolves to the decoded indices and attributes.
64
80
  * @private
81
+ *
82
+ * @exception {RuntimeError} Draco decoder could not be initialized.
65
83
  */
66
84
  DracoLoader.decodeBufferView = function (options) {
67
85
  const decoderTaskProcessor = DracoLoader._getDecoderTaskProcessor();
86
+
87
+ if (defined(DracoLoader._error)) {
88
+ throw DracoLoader._error;
89
+ }
90
+
68
91
  if (!DracoLoader._taskProcessorReady) {
69
92
  // The task processor is not ready to schedule tasks
70
93
  return;
@@ -55,7 +55,6 @@ import destroyObject from "../Core/destroyObject.js";
55
55
  import HeightmapEncoding from "../Core/HeightmapEncoding.js";
56
56
  import Resource from "../Core/Resource.js";
57
57
  import RuntimeError from "../Core/RuntimeError.js";
58
- import TaskProcessor from "../Core/TaskProcessor.js";
59
58
  import WebMercatorProjection from "../Core/WebMercatorProjection.js";
60
59
  import I3SLayer from "./I3SLayer.js";
61
60
  import Lerc from "lerc";
@@ -492,32 +491,6 @@ I3SDataProvider.prototype._binarizeGltf = function (rawGltf) {
492
491
  return binaryGltfData;
493
492
  };
494
493
 
495
- /**
496
- * @private
497
- * @returns {Promise<TaskProcessor>}
498
- */
499
- I3SDataProvider.prototype.getDecoderTaskProcessor = function () {
500
- if (defined(this._taskProcessorReadyPromise)) {
501
- return this._taskProcessorReadyPromise;
502
- }
503
-
504
- if (!defined(this._decoderTaskProcessor)) {
505
- const processor = new TaskProcessor("decodeI3S");
506
- this._taskProcessorReadyPromise = processor
507
- .initWebAssemblyModule({
508
- modulePath: "ThirdParty/Workers/draco_decoder_nodejs.js",
509
- wasmBinaryFile: "ThirdParty/draco_decoder.wasm",
510
- })
511
- .then(() => {
512
- return processor;
513
- });
514
-
515
- this._decoderTaskProcessor = processor;
516
- }
517
-
518
- return this._taskProcessorReadyPromise;
519
- };
520
-
521
494
  const scratchCartesian2 = new Cartesian2();
522
495
 
523
496
  function getCoveredTiles(terrainProvider, extent) {
@@ -0,0 +1,127 @@
1
+ import Cartographic from "../Core/Cartographic.js";
2
+ import Check from "../Core/Check.js";
3
+ import defined from "../Core/defined.js";
4
+ import Ellipsoid from "../Core/Ellipsoid.js";
5
+ import FeatureDetection from "../Core/FeatureDetection.js";
6
+ import CesiumMath from "../Core/Math.js";
7
+ import Matrix3 from "../Core/Matrix3.js";
8
+ import RuntimeError from "../Core/RuntimeError.js";
9
+ import TaskProcessor from "../Core/TaskProcessor.js";
10
+
11
+ /**
12
+ * Decode I3S using web workers.
13
+ *
14
+ * @private
15
+ */
16
+ function I3SDecoder() {}
17
+
18
+ // Maximum concurrency to use when decoding draco models
19
+ I3SDecoder._maxDecodingConcurrency = Math.max(
20
+ FeatureDetection.hardwareConcurrency - 1,
21
+ 1
22
+ );
23
+
24
+ I3SDecoder._decodeTaskProcessor = new TaskProcessor(
25
+ "decodeI3S",
26
+ I3SDecoder._maxDecodingConcurrency
27
+ );
28
+
29
+ I3SDecoder._promise = undefined;
30
+
31
+ async function initializeDecoder() {
32
+ const result = await I3SDecoder._decodeTaskProcessor.initWebAssemblyModule({
33
+ wasmBinaryFile: "ThirdParty/draco_decoder.wasm",
34
+ });
35
+ if (result) {
36
+ return I3SDecoder._decodeTaskProcessor;
37
+ }
38
+
39
+ throw new RuntimeError("I3S decoder could not be initialized.");
40
+ }
41
+
42
+ /**
43
+ * Transcodes I3S to glTF in a web worker
44
+ * @param {String} url custom attributes source URL
45
+ * @param {Object} defaultGeometrySchema Schema to use during decoding
46
+ * @param {I3SGeometry} geometryData The draco encoded geometry data
47
+ * @param {Array} [featureData] The draco encoded feature data
48
+ * @returns Promise<undefined|object> Returns a promise which resolves to the glTF result, or undefined if the task cannot be scheduled this frame.
49
+ *
50
+ * @exception {RuntimeError} I3S decoder could not be initialized.
51
+ */
52
+ I3SDecoder.decode = async function (
53
+ url,
54
+ defaultGeometrySchema,
55
+ geometryData,
56
+ featureData
57
+ ) {
58
+ //>>includeStart('debug', pragmas.debug);
59
+ Check.typeOf.string("url", url);
60
+ Check.defined("defaultGeometrySchema", defaultGeometrySchema);
61
+ Check.defined("geometryData", geometryData);
62
+ //>>includeEnd('debug');
63
+
64
+ if (!defined(I3SDecoder._promise)) {
65
+ I3SDecoder._promise = initializeDecoder();
66
+ }
67
+
68
+ return I3SDecoder._promise.then(function (taskProcessor) {
69
+ // Prepare the data to send to the worker
70
+ const parentData = geometryData._parent._data;
71
+ const parentRotationInverseMatrix =
72
+ geometryData._parent._inverseRotationMatrix;
73
+
74
+ let longitude = 0.0;
75
+ let latitude = 0.0;
76
+ let height = 0.0;
77
+
78
+ if (defined(parentData.obb)) {
79
+ longitude = parentData.obb.center[0];
80
+ latitude = parentData.obb.center[1];
81
+ height = parentData.obb.center[2];
82
+ } else if (defined(parentData.mbs)) {
83
+ longitude = parentData.mbs[0];
84
+ latitude = parentData.mbs[1];
85
+ height = parentData.mbs[2];
86
+ }
87
+
88
+ const axisFlipRotation = Matrix3.fromRotationX(-CesiumMath.PI_OVER_TWO);
89
+ const parentRotation = new Matrix3();
90
+
91
+ Matrix3.multiply(
92
+ axisFlipRotation,
93
+ parentRotationInverseMatrix,
94
+ parentRotation
95
+ );
96
+
97
+ const cartographicCenter = Cartographic.fromDegrees(
98
+ longitude,
99
+ latitude,
100
+ height
101
+ );
102
+
103
+ const cartesianCenter = Ellipsoid.WGS84.cartographicToCartesian(
104
+ cartographicCenter
105
+ );
106
+
107
+ const payload = {
108
+ binaryData: geometryData._data,
109
+ featureData:
110
+ defined(featureData) && defined(featureData[0])
111
+ ? featureData[0].data
112
+ : undefined,
113
+ schema: defaultGeometrySchema,
114
+ bufferInfo: geometryData._geometryBufferInfo,
115
+ ellipsoidRadiiSquare: Ellipsoid.WGS84.radiiSquared,
116
+ url: url,
117
+ geoidDataList: geometryData._dataProvider._geoidDataList,
118
+ cartographicCenter: cartographicCenter,
119
+ cartesianCenter: cartesianCenter,
120
+ parentRotation: parentRotation,
121
+ };
122
+
123
+ return taskProcessor.scheduleTask(payload);
124
+ });
125
+ };
126
+
127
+ export default I3SDecoder;