@cesium/engine 3.0.1 → 4.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 (234) 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-27R2KRIK.js +634 -0
  5. package/Build/Workers/chunk-2C65EKYA.js +55 -0
  6. package/Build/Workers/chunk-2NLMZNJI.js +138 -0
  7. package/Build/Workers/chunk-4V6RCTVH.js +289 -0
  8. package/Build/Workers/chunk-4VWUFKYW.js +368 -0
  9. package/Build/Workers/chunk-527JG4D7.js +629 -0
  10. package/Build/Workers/chunk-5U4UHRZ2.js +8644 -0
  11. package/Build/Workers/chunk-7CZEWQWE.js +353 -0
  12. package/Build/Workers/chunk-7IMAWM6A.js +842 -0
  13. package/Build/Workers/{package.js → chunk-A6EA6KIE.js} +13 -2
  14. package/Build/Workers/chunk-AXGQUPXA.js +1075 -0
  15. package/Build/Workers/chunk-BT6YIL2N.js +39 -0
  16. package/Build/Workers/chunk-C6MRR5YL.js +476 -0
  17. package/Build/Workers/chunk-DJUTBX6A.js +1860 -0
  18. package/Build/Workers/chunk-EQ6ZAP37.js +218 -0
  19. package/Build/Workers/chunk-F7P2HCYZ.js +73 -0
  20. package/Build/Workers/chunk-FE2XG3SS.js +73 -0
  21. package/Build/Workers/chunk-FKHRSGKP.js +781 -0
  22. package/Build/Workers/chunk-FVDTKX3F.js +58 -0
  23. package/Build/Workers/chunk-FYHCAKU6.js +684 -0
  24. package/Build/Workers/chunk-G3MOT7BZ.js +157 -0
  25. package/Build/Workers/chunk-H52L6U76.js +421 -0
  26. package/Build/Workers/chunk-H6MBQ4W4.js +305 -0
  27. package/Build/Workers/chunk-HCZR75II.js +2716 -0
  28. package/Build/Workers/chunk-I5MQWHBR.js +102 -0
  29. package/Build/Workers/chunk-KAFF2QX3.js +258 -0
  30. package/Build/Workers/chunk-LGSGX2RH.js +757 -0
  31. package/Build/Workers/chunk-LQRFWCNX.js +124 -0
  32. package/Build/Workers/chunk-N5MMDSD2.js +44 -0
  33. package/Build/Workers/chunk-NRETMGYL.js +390 -0
  34. package/Build/Workers/chunk-P4M4QUNQ.js +196 -0
  35. package/Build/Workers/chunk-P7PWX5HR.js +430 -0
  36. package/Build/Workers/chunk-PGB3EFR7.js +171 -0
  37. package/Build/Workers/chunk-PW5CA4MJ.js +3273 -0
  38. package/Build/Workers/chunk-PWDYKCNC.js +501 -0
  39. package/Build/Workers/chunk-QIS3NB7U.js +1258 -0
  40. package/Build/Workers/chunk-QVJ6IRKV.js +77 -0
  41. package/Build/Workers/chunk-RDCDRNJ7.js +117 -0
  42. package/Build/Workers/chunk-RDM3BKNC.js +1009 -0
  43. package/Build/Workers/chunk-RRUPTJ6P.js +452 -0
  44. package/Build/Workers/chunk-SGRWJKNO.js +400 -0
  45. package/Build/Workers/chunk-TF5D2H7B.js +138 -0
  46. package/Build/Workers/chunk-TVYIHH4V.js +513 -0
  47. package/Build/Workers/chunk-U5LKG6LX.js +101 -0
  48. package/Build/Workers/chunk-UGZGTV5K.js +302 -0
  49. package/Build/Workers/chunk-UN7AK64D.js +163 -0
  50. package/Build/Workers/chunk-V2LKNJGT.js +59 -0
  51. package/Build/Workers/chunk-VSCXSFHE.js +1477 -0
  52. package/Build/Workers/chunk-XJCTFTBM.js +2041 -0
  53. package/Build/Workers/chunk-XZVQMPWG.js +100 -0
  54. package/Build/Workers/chunk-YLAFWVOW.js +834 -0
  55. package/Build/Workers/chunk-YLS3FX3U.js +236 -0
  56. package/Build/Workers/chunk-YMJPANZZ.js +693 -0
  57. package/Build/Workers/combineGeometry.js +65 -15
  58. package/Build/Workers/createBoxGeometry.js +55 -10
  59. package/Build/Workers/createBoxOutlineGeometry.js +231 -310
  60. package/Build/Workers/createCircleGeometry.js +185 -202
  61. package/Build/Workers/createCircleOutlineGeometry.js +141 -155
  62. package/Build/Workers/createCoplanarPolygonGeometry.js +477 -557
  63. package/Build/Workers/createCoplanarPolygonOutlineGeometry.js +218 -230
  64. package/Build/Workers/createCorridorGeometry.js +1162 -1307
  65. package/Build/Workers/createCorridorOutlineGeometry.js +533 -569
  66. package/Build/Workers/createCylinderGeometry.js +57 -10
  67. package/Build/Workers/createCylinderOutlineGeometry.js +224 -258
  68. package/Build/Workers/createEllipseGeometry.js +68 -12
  69. package/Build/Workers/createEllipseOutlineGeometry.js +61 -12
  70. package/Build/Workers/createEllipsoidGeometry.js +56 -10
  71. package/Build/Workers/createEllipsoidOutlineGeometry.js +58 -13
  72. package/Build/Workers/createFrustumGeometry.js +55 -10
  73. package/Build/Workers/createFrustumOutlineGeometry.js +226 -243
  74. package/Build/Workers/createGeometry.js +143 -48
  75. package/Build/Workers/createGroundPolylineGeometry.js +1484 -2011
  76. package/Build/Workers/createPlaneGeometry.js +216 -243
  77. package/Build/Workers/createPlaneOutlineGeometry.js +121 -113
  78. package/Build/Workers/createPolygonGeometry.js +1041 -1327
  79. package/Build/Workers/createPolygonOutlineGeometry.js +516 -657
  80. package/Build/Workers/createPolylineGeometry.js +471 -547
  81. package/Build/Workers/createPolylineVolumeGeometry.js +352 -384
  82. package/Build/Workers/createPolylineVolumeOutlineGeometry.js +271 -295
  83. package/Build/Workers/createRectangleGeometry.js +1128 -1331
  84. package/Build/Workers/createRectangleOutlineGeometry.js +445 -500
  85. package/Build/Workers/createSimplePolylineGeometry.js +381 -440
  86. package/Build/Workers/createSphereGeometry.js +112 -118
  87. package/Build/Workers/createSphereOutlineGeometry.js +112 -121
  88. package/Build/Workers/createTaskProcessorWorker.js +32 -127
  89. package/Build/Workers/createVectorTileClampedPolylines.js +462 -505
  90. package/Build/Workers/createVectorTileGeometries.js +377 -436
  91. package/Build/Workers/createVectorTilePoints.js +110 -77
  92. package/Build/Workers/createVectorTilePolygons.js +369 -391
  93. package/Build/Workers/createVectorTilePolylines.js +252 -244
  94. package/Build/Workers/createVerticesFromGoogleEarthEnterpriseBuffer.js +543 -615
  95. package/Build/Workers/createVerticesFromHeightmap.js +2244 -2677
  96. package/Build/Workers/createVerticesFromQuantizedTerrainMesh.js +682 -904
  97. package/Build/Workers/createWallGeometry.js +459 -593
  98. package/Build/Workers/createWallOutlineGeometry.js +324 -419
  99. package/Build/Workers/decodeDraco.js +327 -347
  100. package/Build/Workers/decodeGoogleEarthEnterprisePacket.js +2530 -3567
  101. package/Build/Workers/decodeI3S.js +765 -970
  102. package/Build/Workers/transcodeKTX2.js +3353 -1464
  103. package/Build/Workers/transferTypedArrayTest.js +3 -4
  104. package/Build/Workers/upsampleQuantizedTerrainMesh.js +748 -953
  105. package/LICENSE.md +0 -12
  106. package/Source/Core/FeatureDetection.js +9 -0
  107. package/Source/Core/GoogleMaps.js +1 -1
  108. package/Source/Core/GroundPolylineGeometry.js +3 -2
  109. package/Source/Core/Ion.js +1 -1
  110. package/Source/Core/KTX2Transcoder.js +7 -3
  111. package/Source/Core/RequestScheduler.js +1 -0
  112. package/Source/Core/TaskProcessor.js +150 -146
  113. package/Source/Core/Transforms.js +2 -2
  114. package/Source/Core/buildModuleUrl.js +6 -5
  115. package/Source/DataSources/CzmlDataSource.js +6 -4
  116. package/Source/Scene/ArcGisMapService.js +1 -1
  117. package/Source/Scene/DracoLoader.js +26 -3
  118. package/Source/Scene/GltfLoaderUtil.js +1 -7
  119. package/Source/Scene/I3SDataProvider.js +0 -27
  120. package/Source/Scene/I3SDecoder.js +127 -0
  121. package/Source/Scene/I3SNode.js +32 -110
  122. package/Source/Scene/ImageryLayer.js +2 -2
  123. package/Source/Scene/Implicit3DTileContent.js +13 -0
  124. package/Source/Scene/ImplicitTileset.js +5 -0
  125. package/Source/Scene/Model/I3dmLoader.js +5 -1
  126. package/Source/Scene/Model/Model.js +4 -1
  127. package/Source/Scene/OpenStreetMapImageryProvider.js +7 -4
  128. package/Source/Scene/SingleTileImageryProvider.js +4 -2
  129. package/Source/ThirdParty/Workers/basis_transcoder.js +1 -1
  130. package/Source/{WorkersES6 → Workers}/createGeometry.js +11 -12
  131. package/Source/{WorkersES6 → Workers}/createTaskProcessorWorker.js +43 -59
  132. package/Source/{WorkersES6 → Workers}/decodeDraco.js +19 -25
  133. package/Source/{WorkersES6 → Workers}/decodeI3S.js +18 -32
  134. package/Source/{WorkersES6 → Workers}/transcodeKTX2.js +19 -26
  135. package/Source/Workers/transferTypedArrayTest.js +0 -6
  136. package/index.d.ts +20 -11
  137. package/index.js +170 -169
  138. package/package.json +3 -2
  139. package/Build/Workers/ArcType-2d9abbbc.js +0 -37
  140. package/Build/Workers/AttributeCompression-f9f6c717.js +0 -716
  141. package/Build/Workers/AxisAlignedBoundingBox-4bfd84f3.js +0 -258
  142. package/Build/Workers/BoundingRectangle-5fd6403a.js +0 -369
  143. package/Build/Workers/BoxGeometry-7aa4ce7f.js +0 -884
  144. package/Build/Workers/Check-6ede7e26.js +0 -290
  145. package/Build/Workers/Color-8e135f71.js +0 -2262
  146. package/Build/Workers/ComponentDatatype-cf1fa08e.js +0 -341
  147. package/Build/Workers/CoplanarPolygonGeometryLibrary-59c69b0a.js +0 -132
  148. package/Build/Workers/CorridorGeometryLibrary-63907365.js +0 -498
  149. package/Build/Workers/CylinderGeometry-8fc7c44b.js +0 -467
  150. package/Build/Workers/CylinderGeometryLibrary-7bf291b4.js +0 -63
  151. package/Build/Workers/EllipseGeometry-16b3736a.js +0 -1304
  152. package/Build/Workers/EllipseGeometryLibrary-21262a28.js +0 -366
  153. package/Build/Workers/EllipseOutlineGeometry-05d35d18.js +0 -443
  154. package/Build/Workers/EllipsoidGeodesic-5b3623dc.js +0 -520
  155. package/Build/Workers/EllipsoidGeometry-a503d1d6.js +0 -637
  156. package/Build/Workers/EllipsoidOutlineGeometry-7b09f24d.js +0 -454
  157. package/Build/Workers/EllipsoidRhumbLine-ef872433.js +0 -741
  158. package/Build/Workers/EllipsoidTangentPlane-546c0d5e.js +0 -373
  159. package/Build/Workers/EncodedCartesian3-57415c8a.js +0 -171
  160. package/Build/Workers/FrustumGeometry-87ce8622.js +0 -2540
  161. package/Build/Workers/GeometryAttribute-8fcff0d5.js +0 -619
  162. package/Build/Workers/GeometryAttributes-ad136444.js +0 -91
  163. package/Build/Workers/GeometryInstance-34d9e21e.js +0 -121
  164. package/Build/Workers/GeometryOffsetAttribute-9ad0019c.js +0 -16
  165. package/Build/Workers/GeometryPipeline-70d69a43.js +0 -3690
  166. package/Build/Workers/IndexDatatype-2643aa47.js +0 -200
  167. package/Build/Workers/IntersectionTests-85350792.js +0 -1836
  168. package/Build/Workers/Math-0a2ac845.js +0 -1340
  169. package/Build/Workers/Matrix2-e1298525.js +0 -7086
  170. package/Build/Workers/Matrix3-41c58dde.js +0 -4283
  171. package/Build/Workers/OrientedBoundingBox-29fb0fcd.js +0 -1259
  172. package/Build/Workers/Plane-4c3d403b.js +0 -309
  173. package/Build/Workers/PolygonGeometryLibrary-bad6329a.js +0 -1074
  174. package/Build/Workers/PolygonPipeline-dd13ee78.js +0 -1344
  175. package/Build/Workers/PolylinePipeline-7119eb3f.js +0 -573
  176. package/Build/Workers/PolylineVolumeGeometryLibrary-d25f0050.js +0 -781
  177. package/Build/Workers/PrimitivePipeline-111ee29f.js +0 -966
  178. package/Build/Workers/RectangleGeometryLibrary-bb378fb6.js +0 -280
  179. package/Build/Workers/RuntimeError-ef395448.js +0 -68
  180. package/Build/Workers/TerrainEncoding-c8e029a2.js +0 -1227
  181. package/Build/Workers/Transforms-e2d4a55a.js +0 -14713
  182. package/Build/Workers/VertexFormat-030f11ff.js +0 -312
  183. package/Build/Workers/WallGeometryLibrary-3e0819ec.js +0 -211
  184. package/Build/Workers/WebGLConstants-0b1ce7ba.js +0 -620
  185. package/Build/Workers/WebMercatorProjection-13ed1a6e.js +0 -151
  186. package/Build/Workers/arrayRemoveDuplicates-d2061e85.js +0 -129
  187. package/Build/Workers/cesiumWorkerBootstrapper.js +0 -1363
  188. package/Build/Workers/combine-d9581036.js +0 -82
  189. package/Build/Workers/defaultValue-fe22d8c0.js +0 -51
  190. package/Source/ThirdParty/Workers/draco_decoder_nodejs.js +0 -117
  191. package/Source/Workers/cesiumWorkerBootstrapper.js +0 -2290
  192. package/Source/Workers/package.json +0 -1
  193. /package/Source/{WorkersES6 → Workers}/combineGeometry.js +0 -0
  194. /package/Source/{WorkersES6 → Workers}/createBoxGeometry.js +0 -0
  195. /package/Source/{WorkersES6 → Workers}/createBoxOutlineGeometry.js +0 -0
  196. /package/Source/{WorkersES6 → Workers}/createCircleGeometry.js +0 -0
  197. /package/Source/{WorkersES6 → Workers}/createCircleOutlineGeometry.js +0 -0
  198. /package/Source/{WorkersES6 → Workers}/createCoplanarPolygonGeometry.js +0 -0
  199. /package/Source/{WorkersES6 → Workers}/createCoplanarPolygonOutlineGeometry.js +0 -0
  200. /package/Source/{WorkersES6 → Workers}/createCorridorGeometry.js +0 -0
  201. /package/Source/{WorkersES6 → Workers}/createCorridorOutlineGeometry.js +0 -0
  202. /package/Source/{WorkersES6 → Workers}/createCylinderGeometry.js +0 -0
  203. /package/Source/{WorkersES6 → Workers}/createCylinderOutlineGeometry.js +0 -0
  204. /package/Source/{WorkersES6 → Workers}/createEllipseGeometry.js +0 -0
  205. /package/Source/{WorkersES6 → Workers}/createEllipseOutlineGeometry.js +0 -0
  206. /package/Source/{WorkersES6 → Workers}/createEllipsoidGeometry.js +0 -0
  207. /package/Source/{WorkersES6 → Workers}/createEllipsoidOutlineGeometry.js +0 -0
  208. /package/Source/{WorkersES6 → Workers}/createFrustumGeometry.js +0 -0
  209. /package/Source/{WorkersES6 → Workers}/createFrustumOutlineGeometry.js +0 -0
  210. /package/Source/{WorkersES6 → Workers}/createGroundPolylineGeometry.js +0 -0
  211. /package/Source/{WorkersES6 → Workers}/createPlaneGeometry.js +0 -0
  212. /package/Source/{WorkersES6 → Workers}/createPlaneOutlineGeometry.js +0 -0
  213. /package/Source/{WorkersES6 → Workers}/createPolygonGeometry.js +0 -0
  214. /package/Source/{WorkersES6 → Workers}/createPolygonOutlineGeometry.js +0 -0
  215. /package/Source/{WorkersES6 → Workers}/createPolylineGeometry.js +0 -0
  216. /package/Source/{WorkersES6 → Workers}/createPolylineVolumeGeometry.js +0 -0
  217. /package/Source/{WorkersES6 → Workers}/createPolylineVolumeOutlineGeometry.js +0 -0
  218. /package/Source/{WorkersES6 → Workers}/createRectangleGeometry.js +0 -0
  219. /package/Source/{WorkersES6 → Workers}/createRectangleOutlineGeometry.js +0 -0
  220. /package/Source/{WorkersES6 → Workers}/createSimplePolylineGeometry.js +0 -0
  221. /package/Source/{WorkersES6 → Workers}/createSphereGeometry.js +0 -0
  222. /package/Source/{WorkersES6 → Workers}/createSphereOutlineGeometry.js +0 -0
  223. /package/Source/{WorkersES6 → Workers}/createVectorTileClampedPolylines.js +0 -0
  224. /package/Source/{WorkersES6 → Workers}/createVectorTileGeometries.js +0 -0
  225. /package/Source/{WorkersES6 → Workers}/createVectorTilePoints.js +0 -0
  226. /package/Source/{WorkersES6 → Workers}/createVectorTilePolygons.js +0 -0
  227. /package/Source/{WorkersES6 → Workers}/createVectorTilePolylines.js +0 -0
  228. /package/Source/{WorkersES6 → Workers}/createVerticesFromGoogleEarthEnterpriseBuffer.js +0 -0
  229. /package/Source/{WorkersES6 → Workers}/createVerticesFromHeightmap.js +0 -0
  230. /package/Source/{WorkersES6 → Workers}/createVerticesFromQuantizedTerrainMesh.js +0 -0
  231. /package/Source/{WorkersES6 → Workers}/createWallGeometry.js +0 -0
  232. /package/Source/{WorkersES6 → Workers}/createWallOutlineGeometry.js +0 -0
  233. /package/Source/{WorkersES6 → Workers}/decodeGoogleEarthEnterprisePacket.js +0 -0
  234. /package/Source/{WorkersES6 → Workers}/upsampleQuantizedTerrainMesh.js +0 -0
package/LICENSE.md CHANGED
@@ -270,18 +270,6 @@ https://github.com/sole/tween.js
270
270
  >
271
271
  > THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
272
272
 
273
- ### RequireJS
274
-
275
- https://github.com/jrburke/requirejs
276
-
277
- > Copyright (c) 2010-2015, The Dojo Foundation
278
- >
279
- > Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
280
- >
281
- > The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
282
- >
283
- > THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
284
-
285
273
  ### topojson-client
286
274
 
287
275
  https://github.com/topojson/topojson-client
@@ -426,4 +426,13 @@ FeatureDetection.supportsWebgl2 = function (scene) {
426
426
  return scene.context.webgl2;
427
427
  };
428
428
 
429
+ /**
430
+ * Detects whether the current browser supports ECMAScript modules in web workers.
431
+ * @returns {boolean} true if the browser supports ECMAScript modules in web workers.
432
+ * @see {@link https://developer.mozilla.org/en-US/docs/Web/API/Worker|Worker}
433
+ */
434
+ FeatureDetection.supportsEsmWebWorkers = function () {
435
+ return !isFirefox() || parseInt(firefoxVersionResult) >= 114;
436
+ };
437
+
429
438
  export default FeatureDetection;
@@ -3,7 +3,7 @@ import defined from "./defined.js";
3
3
  import Resource from "./Resource.js";
4
4
 
5
5
  let defaultKeyCredit;
6
- const defaultKey = "AIzaSyCUMejKrafNiN2PiqvWNPxQJBuDRg-VqKQ";
6
+ const defaultKey = "AIzaSyAgSPRO-w15SwJ57JlOmZHI7JJ_qBR0c1k";
7
7
 
8
8
  /**
9
9
  * Default settings for accessing the Google Maps API.
@@ -1477,8 +1477,9 @@ function generateGeometryAttributes(
1477
1477
  const minHeight = minMaxHeights.minimumTerrainHeight;
1478
1478
  const maxHeight = minMaxHeights.maximumTerrainHeight;
1479
1479
 
1480
- sumHeights += minHeight;
1481
- sumHeights += maxHeight;
1480
+ // Sum using abs() to properly account for negative eleavtions in calculating bounding sphere radius
1481
+ sumHeights += Math.abs(minHeight);
1482
+ sumHeights += Math.abs(maxHeight);
1482
1483
 
1483
1484
  adjustHeights(
1484
1485
  startBottom,
@@ -4,7 +4,7 @@ import Resource from "./Resource.js";
4
4
 
5
5
  let defaultTokenCredit;
6
6
  const defaultAccessToken =
7
- "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJqdGkiOiJhYzVkMTc1ZS00NTRhLTRjY2QtYTQwZS01YmU2Mjg1ODAwN2YiLCJpZCI6MjU5LCJpYXQiOjE2ODgzOTgwMjl9.MZC_HUBRd0y5HJeB-F5QSpT-fEgTM6mI5gMaSND9FHc";
7
+ "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJqdGkiOiJlMmIzZjlhMy1kNzU1LTRmMmQtYTFkNi1jMWQ5NTliM2RmN2YiLCJpZCI6MjU5LCJpYXQiOjE2OTM1ODIzNDJ9.-Tpp8s9ismoMrkKqnNsHFEMZgXDfa2uZfBQRE-kn3gM";
8
8
  /**
9
9
  * Default settings for accessing the Cesium ion API.
10
10
  *
@@ -1,6 +1,7 @@
1
1
  import Check from "./Check.js";
2
2
  import CompressedTextureBuffer from "./CompressedTextureBuffer.js";
3
3
  import defined from "./defined.js";
4
+ import RuntimeError from "./RuntimeError.js";
4
5
  import TaskProcessor from "./TaskProcessor.js";
5
6
 
6
7
  /**
@@ -20,11 +21,14 @@ KTX2Transcoder._readyPromise = undefined;
20
21
  function makeReadyPromise() {
21
22
  const readyPromise = KTX2Transcoder._transcodeTaskProcessor
22
23
  .initWebAssemblyModule({
23
- modulePath: "ThirdParty/Workers/basis_transcoder.js",
24
24
  wasmBinaryFile: "ThirdParty/basis_transcoder.wasm",
25
25
  })
26
- .then(function () {
27
- return KTX2Transcoder._transcodeTaskProcessor;
26
+ .then(function (result) {
27
+ if (result) {
28
+ return KTX2Transcoder._transcodeTaskProcessor;
29
+ }
30
+
31
+ throw new RuntimeError("KTX2 transcoder could not be initialized.");
28
32
  });
29
33
  KTX2Transcoder._readyPromise = readyPromise;
30
34
  }
@@ -83,6 +83,7 @@ RequestScheduler.requestsByServer = {
83
83
  "assets.ion.cesium.com:443": 18,
84
84
  "ibasemaps-api.arcgis.com:443": 18,
85
85
  "tile.googleapis.com:443": 18,
86
+ "tile.openstreetmap.org:443": 18,
86
87
  };
87
88
 
88
89
  /**
@@ -1,7 +1,6 @@
1
1
  import Uri from "urijs";
2
2
  import buildModuleUrl from "./buildModuleUrl.js";
3
3
  import defaultValue from "./defaultValue.js";
4
- import defer from "./defer.js";
5
4
  import defined from "./defined.js";
6
5
  import destroyObject from "./destroyObject.js";
7
6
  import DeveloperError from "./DeveloperError.js";
@@ -38,23 +37,21 @@ function canTransferArrayBuffer() {
38
37
  return TaskProcessor._canTransferArrayBuffer;
39
38
  }
40
39
 
41
- const deferred = defer();
42
-
43
- worker.onmessage = function (event) {
44
- const array = event.data.array;
45
-
46
- // some versions of Firefox silently fail to transfer typed arrays.
47
- // https://bugzilla.mozilla.org/show_bug.cgi?id=841904
48
- // Check to make sure the value round-trips successfully.
49
- const result = defined(array) && array[0] === value;
50
- deferred.resolve(result);
40
+ TaskProcessor._canTransferArrayBuffer = new Promise((resolve) => {
41
+ worker.onmessage = function (event) {
42
+ const array = event.data.array;
51
43
 
52
- worker.terminate();
44
+ // some versions of Firefox silently fail to transfer typed arrays.
45
+ // https://bugzilla.mozilla.org/show_bug.cgi?id=841904
46
+ // Check to make sure the value round-trips successfully.
47
+ const result = defined(array) && array[0] === value;
48
+ resolve(result);
53
49
 
54
- TaskProcessor._canTransferArrayBuffer = result;
55
- };
50
+ worker.terminate();
56
51
 
57
- TaskProcessor._canTransferArrayBuffer = deferred.promise;
52
+ TaskProcessor._canTransferArrayBuffer = result;
53
+ };
54
+ });
58
55
  }
59
56
 
60
57
  return TaskProcessor._canTransferArrayBuffer;
@@ -62,37 +59,6 @@ function canTransferArrayBuffer() {
62
59
 
63
60
  const taskCompletedEvent = new Event();
64
61
 
65
- function completeTask(processor, data) {
66
- --processor._activeTasks;
67
-
68
- const id = data.id;
69
- if (!defined(id)) {
70
- // This is not one of ours.
71
- return;
72
- }
73
-
74
- const deferreds = processor._deferreds;
75
- const deferred = deferreds[id];
76
-
77
- if (defined(data.error)) {
78
- let error = data.error;
79
- if (error.name === "RuntimeError") {
80
- error = new RuntimeError(data.error.message);
81
- error.stack = data.error.stack;
82
- } else if (error.name === "DeveloperError") {
83
- error = new DeveloperError(data.error.message);
84
- error.stack = data.error.stack;
85
- }
86
- taskCompletedEvent.raiseEvent(error);
87
- deferred.reject(error);
88
- } else {
89
- taskCompletedEvent.raiseEvent();
90
- deferred.resolve(data.result);
91
- }
92
-
93
- delete deferreds[id];
94
- }
95
-
96
62
  function getWorkerUrl(moduleID) {
97
63
  let url = buildModuleUrl(moduleID);
98
64
 
@@ -123,40 +89,28 @@ function getWorkerUrl(moduleID) {
123
89
  return url;
124
90
  }
125
91
 
126
- let bootstrapperUrlResult;
127
- function getBootstrapperUrl() {
128
- if (!defined(bootstrapperUrlResult)) {
129
- bootstrapperUrlResult = getWorkerUrl("Workers/cesiumWorkerBootstrapper.js");
130
- }
131
- return bootstrapperUrlResult;
132
- }
133
-
134
92
  function createWorker(processor) {
135
- const worker = new Worker(getBootstrapperUrl());
136
- worker.postMessage = defaultValue(
137
- worker.webkitPostMessage,
138
- worker.postMessage
139
- );
140
-
141
- const bootstrapMessage = {
142
- loaderConfig: {
143
- paths: {
144
- Workers: buildModuleUrl("Workers"),
145
- },
146
- baseUrl: buildModuleUrl.getCesiumBaseUrl().url,
147
- },
148
- workerModule: processor._workerPath,
149
- };
93
+ if (!FeatureDetection.supportsEsmWebWorkers()) {
94
+ throw new RuntimeError(
95
+ "This browser is not supported. Please update your browser to continue."
96
+ );
97
+ }
150
98
 
151
- worker.postMessage(bootstrapMessage);
152
- worker.onmessage = function (event) {
153
- completeTask(processor, event.data);
154
- };
99
+ const uri = new Uri(processor._workerPath);
100
+ const isUri = uri.scheme().length !== 0 && uri.fragment().length === 0;
101
+ const workerPath = isUri
102
+ ? processor._workerPath
103
+ : getWorkerUrl(
104
+ `${
105
+ TaskProcessor._workerModulePrefix +
106
+ processor._workerPath.replace(/\.js$/, "")
107
+ }.js`
108
+ );
155
109
 
156
- return worker;
110
+ return new Worker(workerPath, { type: "module" });
157
111
  }
158
112
 
159
- function getWebAssemblyLoaderConfig(processor, wasmOptions) {
113
+ async function getWebAssemblyLoaderConfig(processor, wasmOptions) {
160
114
  const config = {
161
115
  modulePath: undefined,
162
116
  wasmBinaryFile: undefined,
@@ -172,18 +126,17 @@ function getWebAssemblyLoaderConfig(processor, wasmOptions) {
172
126
  }
173
127
 
174
128
  config.modulePath = buildModuleUrl(wasmOptions.fallbackModulePath);
175
- return Promise.resolve(config);
129
+ return config;
176
130
  }
177
131
 
178
- config.modulePath = buildModuleUrl(wasmOptions.modulePath);
179
132
  config.wasmBinaryFile = buildModuleUrl(wasmOptions.wasmBinaryFile);
180
133
 
181
- return Resource.fetchArrayBuffer({
134
+ const arrayBuffer = await Resource.fetchArrayBuffer({
182
135
  url: config.wasmBinaryFile,
183
- }).then(function (arrayBuffer) {
184
- config.wasmBinary = arrayBuffer;
185
- return config;
186
136
  });
137
+
138
+ config.wasmBinary = arrayBuffer;
139
+ return config;
187
140
  }
188
141
 
189
142
  /**
@@ -201,21 +154,89 @@ function getWebAssemblyLoaderConfig(processor, wasmOptions) {
201
154
  * work to be rescheduled in future frames.
202
155
  */
203
156
  function TaskProcessor(workerPath, maximumActiveTasks) {
204
- const uri = new Uri(workerPath);
205
- this._workerPath =
206
- uri.scheme().length !== 0 && uri.fragment().length === 0
207
- ? workerPath
208
- : TaskProcessor._workerModulePrefix + workerPath;
157
+ this._workerPath = workerPath;
209
158
  this._maximumActiveTasks = defaultValue(
210
159
  maximumActiveTasks,
211
160
  Number.POSITIVE_INFINITY
212
161
  );
213
162
  this._activeTasks = 0;
214
- this._deferreds = {};
215
163
  this._nextID = 0;
164
+ this._webAssemblyPromise = undefined;
216
165
  }
217
166
 
167
+ const createOnmessageHandler = (worker, id, resolve, reject) => {
168
+ const listener = ({ data }) => {
169
+ if (data.id !== id) {
170
+ return;
171
+ }
172
+
173
+ if (defined(data.error)) {
174
+ let error = data.error;
175
+ if (error.name === "RuntimeError") {
176
+ error = new RuntimeError(data.error.message);
177
+ error.stack = data.error.stack;
178
+ } else if (error.name === "DeveloperError") {
179
+ error = new DeveloperError(data.error.message);
180
+ error.stack = data.error.stack;
181
+ } else if (error.name === "Error") {
182
+ error = new Error(data.error.message);
183
+ error.stack = data.error.stack;
184
+ }
185
+ taskCompletedEvent.raiseEvent(error);
186
+ reject(error);
187
+ } else {
188
+ taskCompletedEvent.raiseEvent();
189
+ resolve(data.result);
190
+ }
191
+
192
+ worker.removeEventListener("message", listener);
193
+ };
194
+
195
+ return listener;
196
+ };
197
+
218
198
  const emptyTransferableObjectArray = [];
199
+ async function runTask(processor, parameters, transferableObjects) {
200
+ const canTransfer = await Promise.resolve(canTransferArrayBuffer());
201
+ if (!defined(transferableObjects)) {
202
+ transferableObjects = emptyTransferableObjectArray;
203
+ } else if (!canTransfer) {
204
+ transferableObjects.length = 0;
205
+ }
206
+
207
+ const id = processor._nextID++;
208
+ const promise = new Promise((resolve, reject) => {
209
+ processor._worker.addEventListener(
210
+ "message",
211
+ createOnmessageHandler(processor._worker, id, resolve, reject)
212
+ );
213
+ });
214
+
215
+ processor._worker.postMessage(
216
+ {
217
+ id: id,
218
+ baseUrl: buildModuleUrl.getCesiumBaseUrl().url,
219
+ parameters: parameters,
220
+ canTransferArrayBuffer: canTransfer,
221
+ },
222
+ transferableObjects
223
+ );
224
+
225
+ return promise;
226
+ }
227
+
228
+ async function scheduleTask(processor, parameters, transferableObjects) {
229
+ ++processor._activeTasks;
230
+
231
+ try {
232
+ const result = await runTask(processor, parameters, transferableObjects);
233
+ --processor._activeTasks;
234
+ return result;
235
+ } catch (error) {
236
+ --processor._activeTasks;
237
+ throw error;
238
+ }
239
+ }
219
240
 
220
241
  /**
221
242
  * Schedule a task to be processed by the web worker asynchronously. If there are currently more
@@ -255,82 +276,65 @@ TaskProcessor.prototype.scheduleTask = function (
255
276
  return undefined;
256
277
  }
257
278
 
258
- ++this._activeTasks;
259
-
260
- const processor = this;
261
- return Promise.resolve(canTransferArrayBuffer()).then(function (
262
- canTransferArrayBuffer
263
- ) {
264
- if (!defined(transferableObjects)) {
265
- transferableObjects = emptyTransferableObjectArray;
266
- } else if (!canTransferArrayBuffer) {
267
- transferableObjects.length = 0;
268
- }
269
-
270
- const id = processor._nextID++;
271
- const deferred = defer();
272
- processor._deferreds[id] = deferred;
273
-
274
- processor._worker.postMessage(
275
- {
276
- id: id,
277
- parameters: parameters,
278
- canTransferArrayBuffer: canTransferArrayBuffer,
279
- },
280
- transferableObjects
281
- );
282
-
283
- return deferred.promise;
284
- });
279
+ return scheduleTask(this, parameters, transferableObjects);
285
280
  };
286
281
 
287
282
  /**
288
283
  * Posts a message to a web worker with configuration to initialize loading
289
- * and compiling a web assembly module asychronously, as well as an optional
284
+ * and compiling a web assembly module asynchronously, as well as an optional
290
285
  * fallback JavaScript module to use if Web Assembly is not supported.
291
286
  *
292
287
  * @param {object} [webAssemblyOptions] An object with the following properties:
293
288
  * @param {string} [webAssemblyOptions.modulePath] The path of the web assembly JavaScript wrapper module.
294
289
  * @param {string} [webAssemblyOptions.wasmBinaryFile] The path of the web assembly binary file.
295
290
  * @param {string} [webAssemblyOptions.fallbackModulePath] The path of the fallback JavaScript module to use if web assembly is not supported.
296
- * @returns {Promise<object>} A promise that resolves to the result when the web worker has loaded and compiled the web assembly module and is ready to process tasks.
291
+ * @returns {Promise<*>} A promise that resolves to the result when the web worker has loaded and compiled the web assembly module and is ready to process tasks.
292
+ *
293
+ * @exception {RuntimeError} This browser does not support Web Assembly, and no backup module was provided
297
294
  */
298
- TaskProcessor.prototype.initWebAssemblyModule = function (webAssemblyOptions) {
299
- if (!defined(this._worker)) {
300
- this._worker = createWorker(this);
295
+ TaskProcessor.prototype.initWebAssemblyModule = async function (
296
+ webAssemblyOptions
297
+ ) {
298
+ if (defined(this._webAssemblyPromise)) {
299
+ return this._webAssemblyPromise;
301
300
  }
302
301
 
303
- const deferred = defer();
304
- const processor = this;
305
- const worker = this._worker;
306
- getWebAssemblyLoaderConfig(this, webAssemblyOptions).then(function (
307
- wasmConfig
308
- ) {
309
- return Promise.resolve(canTransferArrayBuffer()).then(function (
310
- canTransferArrayBuffer
311
- ) {
312
- let transferableObjects;
313
- const binary = wasmConfig.wasmBinary;
314
- if (defined(binary) && canTransferArrayBuffer) {
315
- transferableObjects = [binary];
316
- }
317
-
318
- worker.onmessage = function (event) {
319
- worker.onmessage = function (event) {
320
- completeTask(processor, event.data);
321
- };
302
+ const init = async () => {
303
+ const worker = (this._worker = createWorker(this));
304
+ const wasmConfig = await getWebAssemblyLoaderConfig(
305
+ this,
306
+ webAssemblyOptions
307
+ );
308
+ const canTransfer = await Promise.resolve(canTransferArrayBuffer());
309
+ let transferableObjects;
310
+ const binary = wasmConfig.wasmBinary;
311
+ if (defined(binary) && canTransfer) {
312
+ transferableObjects = [binary];
313
+ }
322
314
 
323
- deferred.resolve(event.data);
315
+ const promise = new Promise((resolve, reject) => {
316
+ worker.onmessage = function ({ data }) {
317
+ if (defined(data)) {
318
+ resolve(data.result);
319
+ } else {
320
+ reject(new RuntimeError("Could not configure wasm module"));
321
+ }
324
322
  };
325
-
326
- worker.postMessage(
327
- { webAssemblyConfig: wasmConfig },
328
- transferableObjects
329
- );
330
323
  });
331
- });
332
324
 
333
- return deferred.promise;
325
+ worker.postMessage(
326
+ {
327
+ canTransferArrayBuffer: canTransfer,
328
+ parameters: { webAssemblyConfig: wasmConfig },
329
+ },
330
+ transferableObjects
331
+ );
332
+
333
+ return promise;
334
+ };
335
+
336
+ this._webAssemblyPromise = init();
337
+ return this._webAssemblyPromise;
334
338
  };
335
339
 
336
340
  /**
@@ -749,10 +749,10 @@ const rotation2Scratch = new Matrix3();
749
749
  *
750
750
  *
751
751
  * @example
752
- * // Transform a point from the ICRF axes to the Fixed axes.
752
+ * // Transform a point from the Fixed axes to the ICRF axes.
753
753
  * const now = Cesium.JulianDate.now();
754
754
  * const pointInFixed = Cesium.Cartesian3.fromDegrees(0.0, 0.0);
755
- * const fixedToIcrf = Cesium.Transforms.computeIcrfToFixedMatrix(now);
755
+ * const fixedToIcrf = Cesium.Transforms.computeFixedToIcrfMatrix(now);
756
756
  * let pointInInertial = new Cesium.Cartesian3();
757
757
  * if (Cesium.defined(fixedToIcrf)) {
758
758
  * pointInInertial = Cesium.Matrix3.multiplyByVector(fixedToIcrf, pointInFixed, pointInInertial);
@@ -21,7 +21,7 @@ function getBaseUrlFromCesiumScript() {
21
21
  let a;
22
22
  function tryMakeAbsolute(url) {
23
23
  if (typeof document === "undefined") {
24
- //Node.js and Web Workers. In both cases, the URL will already be absolute.
24
+ // Node.js and Web Workers. In both cases, the URL will already be absolute.
25
25
  return url;
26
26
  }
27
27
 
@@ -29,10 +29,6 @@ function tryMakeAbsolute(url) {
29
29
  a = document.createElement("a");
30
30
  }
31
31
  a.href = url;
32
-
33
- // IE only absolutizes href on get, not set
34
- // eslint-disable-next-line no-self-assign
35
- a.href = a.href;
36
32
  return a.href;
37
33
  }
38
34
 
@@ -45,17 +41,22 @@ function getCesiumBaseUrl() {
45
41
  let baseUrlString;
46
42
  if (typeof CESIUM_BASE_URL !== "undefined") {
47
43
  baseUrlString = CESIUM_BASE_URL;
44
+ } else if (defined(import.meta) && defined(import.meta.url)) {
45
+ // ESM
46
+ baseUrlString = getAbsoluteUri(".", import.meta.url);
48
47
  } else if (
49
48
  typeof define === "object" &&
50
49
  defined(define.amd) &&
51
50
  !define.amd.toUrlUndefined &&
52
51
  defined(require.toUrl)
53
52
  ) {
53
+ // RequireJS
54
54
  baseUrlString = getAbsoluteUri(
55
55
  "..",
56
56
  buildModuleUrl("Core/buildModuleUrl.js")
57
57
  );
58
58
  } else {
59
+ // IIFE
59
60
  baseUrlString = getBaseUrlFromCesiumScript();
60
61
  }
61
62
 
@@ -1822,11 +1822,13 @@ function processPositionArrayPacketData(
1822
1822
  packetData.array = Cartesian3.unpackArray(packetData.cartesian);
1823
1823
  } else if (defined(packetData.cartographicRadians)) {
1824
1824
  packetData.array = Cartesian3.fromRadiansArrayHeights(
1825
- packetData.cartographicRadians
1825
+ packetData.cartographicRadians,
1826
+ Ellipsoid.WGS84
1826
1827
  );
1827
1828
  } else if (defined(packetData.cartographicDegrees)) {
1828
1829
  packetData.array = Cartesian3.fromDegreesArrayHeights(
1829
- packetData.cartographicDegrees
1830
+ packetData.cartographicDegrees,
1831
+ Ellipsoid.WGS84
1830
1832
  );
1831
1833
  }
1832
1834
 
@@ -1878,11 +1880,11 @@ function unpackCartesianArray(array) {
1878
1880
  }
1879
1881
 
1880
1882
  function unpackCartographicRadiansArray(array) {
1881
- return Cartesian3.fromRadiansArrayHeights(array);
1883
+ return Cartesian3.fromRadiansArrayHeights(array, Ellipsoid.WGS84);
1882
1884
  }
1883
1885
 
1884
1886
  function unpackCartographicDegreesArray(array) {
1885
- return Cartesian3.fromDegreesArrayHeights(array);
1887
+ return Cartesian3.fromDegreesArrayHeights(array, Ellipsoid.WGS84);
1886
1888
  }
1887
1889
 
1888
1890
  function processPositionArrayOfArraysPacketData(
@@ -4,7 +4,7 @@ import Resource from "../Core/Resource.js";
4
4
 
5
5
  let defaultTokenCredit;
6
6
  const defaultAccessToken =
7
- "AAPKe9643f5cea8f4275ba46e736fb001c17RVC2Pgh8SSg5tv_mxXnV5iUDfZ_yly3gPgY7_O_e_hzG7Vj3si9fO0YZ3wpeHA7h";
7
+ "AAPK101bfb95c8624cafa30b55ec1709f9e65mp_hzhcQWdW-Km2L7Gukj--gHqZ8PQIEfih4Wa00sxBZyuTpBisCt5aJNvQm32h";
8
8
  /**
9
9
  * Default options for accessing the ArcGIS image tile service.
10
10
  *
@@ -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;
@@ -103,14 +103,8 @@ GltfLoaderUtil.createSampler = function (options) {
103
103
  magFilter = defaultValue(sampler.magFilter, magFilter);
104
104
  }
105
105
 
106
- let usesTextureTransform = false;
107
- const extensions = textureInfo.extensions;
108
- if (defined(extensions) && defined(extensions.KHR_texture_transform)) {
109
- usesTextureTransform = true;
110
- }
111
-
112
106
  if (
113
- (compressedTextureNoMipmap || usesTextureTransform) &&
107
+ compressedTextureNoMipmap &&
114
108
  minFilter !== TextureMinificationFilter.LINEAR &&
115
109
  minFilter !== TextureMinificationFilter.NEAREST
116
110
  ) {