@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.
- package/Build/ThirdParty/Workers/pako_deflate.min.js +605 -0
- package/Build/ThirdParty/Workers/pako_inflate.min.js +800 -0
- package/Build/ThirdParty/Workers/z-worker-pako.js +502 -0
- package/Build/Workers/chunk-2U6EBIRX.js +757 -0
- package/Build/Workers/chunk-2ZI7FZ3Q.js +58 -0
- package/Build/Workers/chunk-3TSHZWOZ.js +1860 -0
- package/Build/Workers/chunk-44B6FQSJ.js +684 -0
- package/Build/Workers/chunk-4AJR66C5.js +368 -0
- package/Build/Workers/chunk-4HN3N5SE.js +501 -0
- package/Build/Workers/chunk-4QGPYV3W.js +102 -0
- package/Build/Workers/chunk-4RKE4B3G.js +476 -0
- package/Build/Workers/chunk-5E3V7Y4R.js +196 -0
- package/Build/Workers/chunk-6EHT6GS3.js +163 -0
- package/Build/Workers/chunk-6I22NWKQ.js +171 -0
- package/Build/Workers/chunk-7N67FBLW.js +1054 -0
- package/Build/Workers/chunk-AQQGAFKX.js +124 -0
- package/Build/Workers/chunk-CROU4RHL.js +138 -0
- package/Build/Workers/chunk-CTJCECTX.js +258 -0
- package/Build/Workers/chunk-DWJZFZ67.js +781 -0
- package/Build/Workers/chunk-EHJQEARC.js +59 -0
- package/Build/Workers/chunk-EVLKHUAE.js +1477 -0
- package/Build/Workers/chunk-FOOYJER7.js +834 -0
- package/Build/Workers/chunk-GLCRFDOB.js +73 -0
- package/Build/Workers/chunk-GPO47TW4.js +39 -0
- package/Build/Workers/chunk-H5Q2JKIA.js +1075 -0
- package/Build/Workers/chunk-HIDSEUWS.js +2041 -0
- package/Build/Workers/chunk-HV67ARO7.js +302 -0
- package/Build/Workers/chunk-IC7G4BX2.js +421 -0
- package/Build/Workers/chunk-IQN2LMGD.js +55 -0
- package/Build/Workers/chunk-J2FHYK2Z.js +55 -0
- package/Build/Workers/chunk-K3VEWONC.js +289 -0
- package/Build/Workers/chunk-KZFXE35V.js +117 -0
- package/Build/Workers/chunk-MG2TXIO5.js +400 -0
- package/Build/Workers/chunk-MRCFDEKH.js +138 -0
- package/Build/Workers/chunk-MYDS6HBL.js +3273 -0
- package/Build/Workers/chunk-OCIX2CQ7.js +305 -0
- package/Build/Workers/chunk-P32XMW4I.js +2716 -0
- package/Build/Workers/chunk-PEVZYZBQ.js +157 -0
- package/Build/Workers/chunk-PMDLIBEQ.js +218 -0
- package/Build/Workers/chunk-QDUOGCCO.js +1009 -0
- package/Build/Workers/chunk-QUCJGBCK.js +430 -0
- package/Build/Workers/chunk-RCI7BSOM.js +452 -0
- package/Build/Workers/chunk-SVTSC7FX.js +390 -0
- package/Build/Workers/chunk-TXOGSFHZ.js +77 -0
- package/Build/Workers/chunk-TXYJOVQK.js +629 -0
- package/Build/Workers/chunk-UFIT5XDI.js +1258 -0
- package/Build/Workers/chunk-ULLMQNFQ.js +73 -0
- package/Build/Workers/chunk-UM7FIUQW.js +101 -0
- package/Build/Workers/{package.js → chunk-UMLTOPAE.js} +13 -2
- package/Build/Workers/chunk-V5S5N2IS.js +8644 -0
- package/Build/Workers/chunk-VN2IHJKM.js +513 -0
- package/Build/Workers/chunk-VWSD2XV5.js +669 -0
- package/Build/Workers/chunk-X2KIWBTW.js +100 -0
- package/Build/Workers/chunk-Y24CDOJC.js +353 -0
- package/Build/Workers/chunk-YLMDWSXO.js +44 -0
- package/Build/Workers/chunk-YNZ4DMR7.js +634 -0
- package/Build/Workers/chunk-Z2MP3UBE.js +236 -0
- package/Build/Workers/combineGeometry.js +65 -15
- package/Build/Workers/createBoxGeometry.js +55 -10
- package/Build/Workers/createBoxOutlineGeometry.js +231 -310
- package/Build/Workers/createCircleGeometry.js +185 -202
- package/Build/Workers/createCircleOutlineGeometry.js +141 -155
- package/Build/Workers/createCoplanarPolygonGeometry.js +477 -557
- package/Build/Workers/createCoplanarPolygonOutlineGeometry.js +218 -230
- package/Build/Workers/createCorridorGeometry.js +1163 -1307
- package/Build/Workers/createCorridorOutlineGeometry.js +534 -569
- package/Build/Workers/createCylinderGeometry.js +57 -10
- package/Build/Workers/createCylinderOutlineGeometry.js +224 -258
- package/Build/Workers/createEllipseGeometry.js +68 -12
- package/Build/Workers/createEllipseOutlineGeometry.js +61 -12
- package/Build/Workers/createEllipsoidGeometry.js +56 -10
- package/Build/Workers/createEllipsoidOutlineGeometry.js +58 -13
- package/Build/Workers/createFrustumGeometry.js +55 -10
- package/Build/Workers/createFrustumOutlineGeometry.js +226 -243
- package/Build/Workers/createGeometry.js +143 -48
- package/Build/Workers/createGroundPolylineGeometry.js +1484 -2012
- package/Build/Workers/createPlaneGeometry.js +216 -243
- package/Build/Workers/createPlaneOutlineGeometry.js +121 -113
- package/Build/Workers/createPolygonGeometry.js +1437 -1314
- package/Build/Workers/createPolygonOutlineGeometry.js +516 -657
- package/Build/Workers/createPolylineGeometry.js +471 -547
- package/Build/Workers/createPolylineVolumeGeometry.js +354 -384
- package/Build/Workers/createPolylineVolumeOutlineGeometry.js +272 -295
- package/Build/Workers/createRectangleGeometry.js +1128 -1331
- package/Build/Workers/createRectangleOutlineGeometry.js +445 -500
- package/Build/Workers/createSimplePolylineGeometry.js +381 -440
- package/Build/Workers/createSphereGeometry.js +112 -118
- package/Build/Workers/createSphereOutlineGeometry.js +112 -121
- package/Build/Workers/createTaskProcessorWorker.js +32 -127
- package/Build/Workers/createVectorTileClampedPolylines.js +462 -505
- package/Build/Workers/createVectorTileGeometries.js +377 -436
- package/Build/Workers/createVectorTilePoints.js +110 -77
- package/Build/Workers/createVectorTilePolygons.js +369 -391
- package/Build/Workers/createVectorTilePolylines.js +252 -244
- package/Build/Workers/createVerticesFromGoogleEarthEnterpriseBuffer.js +543 -615
- package/Build/Workers/createVerticesFromHeightmap.js +2244 -2677
- package/Build/Workers/createVerticesFromQuantizedTerrainMesh.js +682 -904
- package/Build/Workers/createWallGeometry.js +459 -593
- package/Build/Workers/createWallOutlineGeometry.js +324 -419
- package/Build/Workers/decodeDraco.js +327 -347
- package/Build/Workers/decodeGoogleEarthEnterprisePacket.js +2530 -3567
- package/Build/Workers/decodeI3S.js +765 -970
- package/Build/Workers/transcodeKTX2.js +3351 -1473
- package/Build/Workers/transferTypedArrayTest.js +3 -4
- package/Build/Workers/upsampleQuantizedTerrainMesh.js +748 -953
- package/LICENSE.md +0 -12
- package/Source/Core/CesiumTerrainProvider.js +1 -2
- package/Source/Core/Credit.js +7 -1
- package/Source/Core/FeatureDetection.js +9 -0
- package/Source/Core/GoogleMaps.js +1 -2
- package/Source/Core/Ion.js +1 -2
- package/Source/Core/KTX2Transcoder.js +7 -3
- package/Source/Core/PolygonGeometry.js +340 -27
- package/Source/Core/PolygonGeometryLibrary.js +302 -1
- package/Source/Core/Stereographic.js +247 -0
- package/Source/Core/TaskProcessor.js +185 -168
- package/Source/Core/Transforms.js +2 -2
- package/Source/Core/buildModuleUrl.js +6 -5
- package/Source/Core/sampleTerrain.js +43 -10
- package/Source/Core/sampleTerrainMostDetailed.js +27 -3
- package/Source/Scene/ArcGisMapService.js +1 -2
- package/Source/Scene/Billboard.js +7 -0
- package/Source/Scene/Cesium3DTilePass.js +1 -1
- package/Source/Scene/Cesium3DTileset.js +38 -81
- package/Source/Scene/CreditDisplay.js +2 -2
- package/Source/Scene/DracoLoader.js +26 -3
- package/Source/Scene/I3SDataProvider.js +0 -27
- package/Source/Scene/I3SDecoder.js +127 -0
- package/Source/Scene/I3SNode.js +32 -110
- package/Source/Scene/Implicit3DTileContent.js +13 -0
- package/Source/Scene/ImplicitTileset.js +5 -0
- package/Source/Scene/LabelCollection.js +3 -1
- package/Source/Scene/Model/I3dmLoader.js +5 -1
- package/Source/Scene/Model/Model.js +20 -23
- package/Source/Scene/OpenStreetMapImageryProvider.js +4 -1
- package/Source/Scene/PostProcessStageLibrary.js +3 -3
- package/Source/Scene/PrimitiveCollection.js +39 -0
- package/Source/Scene/Scene.js +3 -0
- package/Source/Scene/SingleTileImageryProvider.js +4 -2
- package/Source/ThirdParty/Workers/basis_transcoder.js +1 -1
- package/Source/Widget/CesiumWidget.js +2 -1
- package/Source/{WorkersES6 → Workers}/createGeometry.js +11 -12
- package/Source/{WorkersES6 → Workers}/createTaskProcessorWorker.js +43 -59
- package/Source/{WorkersES6 → Workers}/decodeDraco.js +19 -25
- package/Source/{WorkersES6 → Workers}/decodeI3S.js +18 -32
- package/Source/{WorkersES6 → Workers}/transcodeKTX2.js +19 -26
- package/Source/Workers/transferTypedArrayTest.js +0 -6
- package/index.d.ts +69 -35
- package/index.js +189 -187
- package/package.json +2 -1
- package/Build/Workers/ArcType-2d9abbbc.js +0 -37
- package/Build/Workers/AttributeCompression-f9f6c717.js +0 -716
- package/Build/Workers/AxisAlignedBoundingBox-a03420b1.js +0 -258
- package/Build/Workers/BoundingRectangle-32fa8a4a.js +0 -369
- package/Build/Workers/BoxGeometry-cd550612.js +0 -884
- package/Build/Workers/Check-6ede7e26.js +0 -290
- package/Build/Workers/Color-571a6085.js +0 -2262
- package/Build/Workers/ComponentDatatype-cf1fa08e.js +0 -341
- package/Build/Workers/CoplanarPolygonGeometryLibrary-488b1a9f.js +0 -132
- package/Build/Workers/CorridorGeometryLibrary-fc4ff147.js +0 -498
- package/Build/Workers/CylinderGeometry-bc26926d.js +0 -467
- package/Build/Workers/CylinderGeometryLibrary-7bf291b4.js +0 -63
- package/Build/Workers/EllipseGeometry-89533a10.js +0 -1304
- package/Build/Workers/EllipseGeometryLibrary-b0d7df17.js +0 -366
- package/Build/Workers/EllipseOutlineGeometry-63ff7a87.js +0 -443
- package/Build/Workers/EllipsoidGeodesic-5b3623dc.js +0 -520
- package/Build/Workers/EllipsoidGeometry-07e99d2d.js +0 -637
- package/Build/Workers/EllipsoidOutlineGeometry-ba5c7ee2.js +0 -454
- package/Build/Workers/EllipsoidRhumbLine-ef872433.js +0 -741
- package/Build/Workers/EllipsoidTangentPlane-65d41b3e.js +0 -373
- package/Build/Workers/EncodedCartesian3-57415c8a.js +0 -171
- package/Build/Workers/FrustumGeometry-4a7589ed.js +0 -2540
- package/Build/Workers/GeometryAttribute-a5b6275b.js +0 -619
- package/Build/Workers/GeometryAttributes-ad136444.js +0 -91
- package/Build/Workers/GeometryInstance-34d9e21e.js +0 -121
- package/Build/Workers/GeometryOffsetAttribute-9ad0019c.js +0 -16
- package/Build/Workers/GeometryPipeline-fa9e6ffc.js +0 -3690
- package/Build/Workers/IndexDatatype-2643aa47.js +0 -200
- package/Build/Workers/IntersectionTests-feace3da.js +0 -1836
- package/Build/Workers/Math-0a2ac845.js +0 -1340
- package/Build/Workers/Matrix2-e1298525.js +0 -7086
- package/Build/Workers/Matrix3-41c58dde.js +0 -4283
- package/Build/Workers/OrientedBoundingBox-6b94d955.js +0 -1259
- package/Build/Workers/Plane-4c3d403b.js +0 -309
- package/Build/Workers/PolygonGeometryLibrary-4ffc457d.js +0 -1074
- package/Build/Workers/PolygonPipeline-d5e66350.js +0 -1344
- package/Build/Workers/PolylinePipeline-83410f0c.js +0 -573
- package/Build/Workers/PolylineVolumeGeometryLibrary-290e7aec.js +0 -781
- package/Build/Workers/PrimitivePipeline-6081d138.js +0 -966
- package/Build/Workers/RectangleGeometryLibrary-986710d8.js +0 -280
- package/Build/Workers/RuntimeError-ef395448.js +0 -68
- package/Build/Workers/TerrainEncoding-528e1d68.js +0 -1227
- package/Build/Workers/Transforms-b527bb09.js +0 -14714
- package/Build/Workers/VertexFormat-030f11ff.js +0 -312
- package/Build/Workers/WallGeometryLibrary-faf583f8.js +0 -211
- package/Build/Workers/WebGLConstants-0b1ce7ba.js +0 -620
- package/Build/Workers/WebMercatorProjection-13ed1a6e.js +0 -151
- package/Build/Workers/arrayRemoveDuplicates-d2061e85.js +0 -129
- package/Build/Workers/cesiumWorkerBootstrapper.js +0 -1363
- package/Build/Workers/combine-d9581036.js +0 -82
- package/Build/Workers/defaultValue-fe22d8c0.js +0 -51
- package/Source/ThirdParty/Workers/draco_decoder_nodejs.js +0 -117
- package/Source/Workers/cesiumWorkerBootstrapper.js +0 -2290
- package/Source/Workers/package.json +0 -1
- /package/Source/{WorkersES6 → Workers}/combineGeometry.js +0 -0
- /package/Source/{WorkersES6 → Workers}/createBoxGeometry.js +0 -0
- /package/Source/{WorkersES6 → Workers}/createBoxOutlineGeometry.js +0 -0
- /package/Source/{WorkersES6 → Workers}/createCircleGeometry.js +0 -0
- /package/Source/{WorkersES6 → Workers}/createCircleOutlineGeometry.js +0 -0
- /package/Source/{WorkersES6 → Workers}/createCoplanarPolygonGeometry.js +0 -0
- /package/Source/{WorkersES6 → Workers}/createCoplanarPolygonOutlineGeometry.js +0 -0
- /package/Source/{WorkersES6 → Workers}/createCorridorGeometry.js +0 -0
- /package/Source/{WorkersES6 → Workers}/createCorridorOutlineGeometry.js +0 -0
- /package/Source/{WorkersES6 → Workers}/createCylinderGeometry.js +0 -0
- /package/Source/{WorkersES6 → Workers}/createCylinderOutlineGeometry.js +0 -0
- /package/Source/{WorkersES6 → Workers}/createEllipseGeometry.js +0 -0
- /package/Source/{WorkersES6 → Workers}/createEllipseOutlineGeometry.js +0 -0
- /package/Source/{WorkersES6 → Workers}/createEllipsoidGeometry.js +0 -0
- /package/Source/{WorkersES6 → Workers}/createEllipsoidOutlineGeometry.js +0 -0
- /package/Source/{WorkersES6 → Workers}/createFrustumGeometry.js +0 -0
- /package/Source/{WorkersES6 → Workers}/createFrustumOutlineGeometry.js +0 -0
- /package/Source/{WorkersES6 → Workers}/createGroundPolylineGeometry.js +0 -0
- /package/Source/{WorkersES6 → Workers}/createPlaneGeometry.js +0 -0
- /package/Source/{WorkersES6 → Workers}/createPlaneOutlineGeometry.js +0 -0
- /package/Source/{WorkersES6 → Workers}/createPolygonGeometry.js +0 -0
- /package/Source/{WorkersES6 → Workers}/createPolygonOutlineGeometry.js +0 -0
- /package/Source/{WorkersES6 → Workers}/createPolylineGeometry.js +0 -0
- /package/Source/{WorkersES6 → Workers}/createPolylineVolumeGeometry.js +0 -0
- /package/Source/{WorkersES6 → Workers}/createPolylineVolumeOutlineGeometry.js +0 -0
- /package/Source/{WorkersES6 → Workers}/createRectangleGeometry.js +0 -0
- /package/Source/{WorkersES6 → Workers}/createRectangleOutlineGeometry.js +0 -0
- /package/Source/{WorkersES6 → Workers}/createSimplePolylineGeometry.js +0 -0
- /package/Source/{WorkersES6 → Workers}/createSphereGeometry.js +0 -0
- /package/Source/{WorkersES6 → Workers}/createSphereOutlineGeometry.js +0 -0
- /package/Source/{WorkersES6 → Workers}/createVectorTileClampedPolylines.js +0 -0
- /package/Source/{WorkersES6 → Workers}/createVectorTileGeometries.js +0 -0
- /package/Source/{WorkersES6 → Workers}/createVectorTilePoints.js +0 -0
- /package/Source/{WorkersES6 → Workers}/createVectorTilePolygons.js +0 -0
- /package/Source/{WorkersES6 → Workers}/createVectorTilePolylines.js +0 -0
- /package/Source/{WorkersES6 → Workers}/createVerticesFromGoogleEarthEnterpriseBuffer.js +0 -0
- /package/Source/{WorkersES6 → Workers}/createVerticesFromHeightmap.js +0 -0
- /package/Source/{WorkersES6 → Workers}/createVerticesFromQuantizedTerrainMesh.js +0 -0
- /package/Source/{WorkersES6 → Workers}/createWallGeometry.js +0 -0
- /package/Source/{WorkersES6 → Workers}/createWallOutlineGeometry.js +0 -0
- /package/Source/{WorkersES6 → Workers}/decodeGoogleEarthEnterprisePacket.js +0 -0
- /package/Source/{WorkersES6 → Workers}/upsampleQuantizedTerrainMesh.js +0 -0
|
@@ -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";
|
|
@@ -13,9 +12,7 @@ import RuntimeError from "./RuntimeError.js";
|
|
|
13
12
|
|
|
14
13
|
function canTransferArrayBuffer() {
|
|
15
14
|
if (!defined(TaskProcessor._canTransferArrayBuffer)) {
|
|
16
|
-
const worker =
|
|
17
|
-
getWorkerUrl("Workers/transferTypedArrayTest.js")
|
|
18
|
-
);
|
|
15
|
+
const worker = createWorker("transferTypedArrayTest");
|
|
19
16
|
worker.postMessage = defaultValue(
|
|
20
17
|
worker.webkitPostMessage,
|
|
21
18
|
worker.postMessage
|
|
@@ -38,23 +35,21 @@ function canTransferArrayBuffer() {
|
|
|
38
35
|
return TaskProcessor._canTransferArrayBuffer;
|
|
39
36
|
}
|
|
40
37
|
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
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);
|
|
38
|
+
TaskProcessor._canTransferArrayBuffer = new Promise((resolve) => {
|
|
39
|
+
worker.onmessage = function (event) {
|
|
40
|
+
const array = event.data.array;
|
|
51
41
|
|
|
52
|
-
|
|
42
|
+
// some versions of Firefox silently fail to transfer typed arrays.
|
|
43
|
+
// https://bugzilla.mozilla.org/show_bug.cgi?id=841904
|
|
44
|
+
// Check to make sure the value round-trips successfully.
|
|
45
|
+
const result = defined(array) && array[0] === value;
|
|
46
|
+
resolve(result);
|
|
53
47
|
|
|
54
|
-
|
|
55
|
-
};
|
|
48
|
+
worker.terminate();
|
|
56
49
|
|
|
57
|
-
|
|
50
|
+
TaskProcessor._canTransferArrayBuffer = result;
|
|
51
|
+
};
|
|
52
|
+
});
|
|
58
53
|
}
|
|
59
54
|
|
|
60
55
|
return TaskProcessor._canTransferArrayBuffer;
|
|
@@ -62,101 +57,73 @@ function canTransferArrayBuffer() {
|
|
|
62
57
|
|
|
63
58
|
const taskCompletedEvent = new Event();
|
|
64
59
|
|
|
65
|
-
function
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
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);
|
|
60
|
+
function urlFromScript(script) {
|
|
61
|
+
let blob;
|
|
62
|
+
try {
|
|
63
|
+
blob = new Blob([script], {
|
|
64
|
+
type: "application/javascript",
|
|
65
|
+
});
|
|
66
|
+
} catch (e) {
|
|
67
|
+
const BlobBuilder =
|
|
68
|
+
window.BlobBuilder ||
|
|
69
|
+
window.WebKitBlobBuilder ||
|
|
70
|
+
window.MozBlobBuilder ||
|
|
71
|
+
window.MSBlobBuilder;
|
|
72
|
+
const blobBuilder = new BlobBuilder();
|
|
73
|
+
blobBuilder.append(script);
|
|
74
|
+
blob = blobBuilder.getBlob("application/javascript");
|
|
91
75
|
}
|
|
92
76
|
|
|
93
|
-
|
|
77
|
+
const URL = window.URL || window.webkitURL;
|
|
78
|
+
return URL.createObjectURL(blob);
|
|
94
79
|
}
|
|
95
80
|
|
|
96
|
-
function
|
|
97
|
-
|
|
81
|
+
function createWorker(url) {
|
|
82
|
+
const uri = new Uri(url);
|
|
83
|
+
const isUri = uri.scheme().length !== 0 && uri.fragment().length === 0;
|
|
98
84
|
|
|
85
|
+
const options = {};
|
|
86
|
+
let workerPath;
|
|
99
87
|
if (isCrossOriginUrl(url)) {
|
|
100
|
-
//
|
|
88
|
+
// To load cross-origin, create a shim worker from a blob URL
|
|
101
89
|
const script = `importScripts("${url}");`;
|
|
90
|
+
workerPath = urlFromScript(script);
|
|
91
|
+
return new Worker(workerPath, options);
|
|
92
|
+
}
|
|
102
93
|
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
const blobBuilder = new BlobBuilder();
|
|
115
|
-
blobBuilder.append(script);
|
|
116
|
-
blob = blobBuilder.getBlob("application/javascript");
|
|
117
|
-
}
|
|
118
|
-
|
|
119
|
-
const URL = window.URL || window.webkitURL;
|
|
120
|
-
url = URL.createObjectURL(blob);
|
|
94
|
+
const moduleID = url.replace(/\.js$/, "");
|
|
95
|
+
|
|
96
|
+
/* global CESIUM_WORKERS */
|
|
97
|
+
if (!isUri && typeof CESIUM_WORKERS !== "undefined") {
|
|
98
|
+
// If the workers are embedded, create a shim worker from the embedded script data
|
|
99
|
+
const script = `
|
|
100
|
+
importScripts("${urlFromScript(CESIUM_WORKERS)}");
|
|
101
|
+
CesiumWorkers["${moduleID}"]();
|
|
102
|
+
`;
|
|
103
|
+
workerPath = urlFromScript(script);
|
|
104
|
+
return new Worker(workerPath, options);
|
|
121
105
|
}
|
|
122
106
|
|
|
123
|
-
|
|
124
|
-
}
|
|
107
|
+
workerPath = url;
|
|
125
108
|
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
109
|
+
if (!isUri) {
|
|
110
|
+
workerPath = buildModuleUrl(
|
|
111
|
+
`${TaskProcessor._workerModulePrefix + moduleID}.js`
|
|
112
|
+
);
|
|
130
113
|
}
|
|
131
|
-
return bootstrapperUrlResult;
|
|
132
|
-
}
|
|
133
|
-
|
|
134
|
-
function createWorker(processor) {
|
|
135
|
-
const worker = new Worker(getBootstrapperUrl());
|
|
136
|
-
worker.postMessage = defaultValue(
|
|
137
|
-
worker.webkitPostMessage,
|
|
138
|
-
worker.postMessage
|
|
139
|
-
);
|
|
140
114
|
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
baseUrl: buildModuleUrl.getCesiumBaseUrl().url,
|
|
147
|
-
},
|
|
148
|
-
workerModule: processor._workerPath,
|
|
149
|
-
};
|
|
115
|
+
if (!FeatureDetection.supportsEsmWebWorkers()) {
|
|
116
|
+
throw new RuntimeError(
|
|
117
|
+
"This browser is not supported. Please update your browser to continue."
|
|
118
|
+
);
|
|
119
|
+
}
|
|
150
120
|
|
|
151
|
-
|
|
152
|
-
worker.onmessage = function (event) {
|
|
153
|
-
completeTask(processor, event.data);
|
|
154
|
-
};
|
|
121
|
+
options.type = "module";
|
|
155
122
|
|
|
156
|
-
return
|
|
123
|
+
return new Worker(workerPath, options);
|
|
157
124
|
}
|
|
158
125
|
|
|
159
|
-
function getWebAssemblyLoaderConfig(processor, wasmOptions) {
|
|
126
|
+
async function getWebAssemblyLoaderConfig(processor, wasmOptions) {
|
|
160
127
|
const config = {
|
|
161
128
|
modulePath: undefined,
|
|
162
129
|
wasmBinaryFile: undefined,
|
|
@@ -172,18 +139,17 @@ function getWebAssemblyLoaderConfig(processor, wasmOptions) {
|
|
|
172
139
|
}
|
|
173
140
|
|
|
174
141
|
config.modulePath = buildModuleUrl(wasmOptions.fallbackModulePath);
|
|
175
|
-
return
|
|
142
|
+
return config;
|
|
176
143
|
}
|
|
177
144
|
|
|
178
|
-
config.modulePath = buildModuleUrl(wasmOptions.modulePath);
|
|
179
145
|
config.wasmBinaryFile = buildModuleUrl(wasmOptions.wasmBinaryFile);
|
|
180
146
|
|
|
181
|
-
|
|
147
|
+
const arrayBuffer = await Resource.fetchArrayBuffer({
|
|
182
148
|
url: config.wasmBinaryFile,
|
|
183
|
-
}).then(function (arrayBuffer) {
|
|
184
|
-
config.wasmBinary = arrayBuffer;
|
|
185
|
-
return config;
|
|
186
149
|
});
|
|
150
|
+
|
|
151
|
+
config.wasmBinary = arrayBuffer;
|
|
152
|
+
return config;
|
|
187
153
|
}
|
|
188
154
|
|
|
189
155
|
/**
|
|
@@ -201,21 +167,89 @@ function getWebAssemblyLoaderConfig(processor, wasmOptions) {
|
|
|
201
167
|
* work to be rescheduled in future frames.
|
|
202
168
|
*/
|
|
203
169
|
function TaskProcessor(workerPath, maximumActiveTasks) {
|
|
204
|
-
|
|
205
|
-
this._workerPath =
|
|
206
|
-
uri.scheme().length !== 0 && uri.fragment().length === 0
|
|
207
|
-
? workerPath
|
|
208
|
-
: TaskProcessor._workerModulePrefix + workerPath;
|
|
170
|
+
this._workerPath = workerPath;
|
|
209
171
|
this._maximumActiveTasks = defaultValue(
|
|
210
172
|
maximumActiveTasks,
|
|
211
173
|
Number.POSITIVE_INFINITY
|
|
212
174
|
);
|
|
213
175
|
this._activeTasks = 0;
|
|
214
|
-
this._deferreds = {};
|
|
215
176
|
this._nextID = 0;
|
|
177
|
+
this._webAssemblyPromise = undefined;
|
|
216
178
|
}
|
|
217
179
|
|
|
180
|
+
const createOnmessageHandler = (worker, id, resolve, reject) => {
|
|
181
|
+
const listener = ({ data }) => {
|
|
182
|
+
if (data.id !== id) {
|
|
183
|
+
return;
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
if (defined(data.error)) {
|
|
187
|
+
let error = data.error;
|
|
188
|
+
if (error.name === "RuntimeError") {
|
|
189
|
+
error = new RuntimeError(data.error.message);
|
|
190
|
+
error.stack = data.error.stack;
|
|
191
|
+
} else if (error.name === "DeveloperError") {
|
|
192
|
+
error = new DeveloperError(data.error.message);
|
|
193
|
+
error.stack = data.error.stack;
|
|
194
|
+
} else if (error.name === "Error") {
|
|
195
|
+
error = new Error(data.error.message);
|
|
196
|
+
error.stack = data.error.stack;
|
|
197
|
+
}
|
|
198
|
+
taskCompletedEvent.raiseEvent(error);
|
|
199
|
+
reject(error);
|
|
200
|
+
} else {
|
|
201
|
+
taskCompletedEvent.raiseEvent();
|
|
202
|
+
resolve(data.result);
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
worker.removeEventListener("message", listener);
|
|
206
|
+
};
|
|
207
|
+
|
|
208
|
+
return listener;
|
|
209
|
+
};
|
|
210
|
+
|
|
218
211
|
const emptyTransferableObjectArray = [];
|
|
212
|
+
async function runTask(processor, parameters, transferableObjects) {
|
|
213
|
+
const canTransfer = await Promise.resolve(canTransferArrayBuffer());
|
|
214
|
+
if (!defined(transferableObjects)) {
|
|
215
|
+
transferableObjects = emptyTransferableObjectArray;
|
|
216
|
+
} else if (!canTransfer) {
|
|
217
|
+
transferableObjects.length = 0;
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
const id = processor._nextID++;
|
|
221
|
+
const promise = new Promise((resolve, reject) => {
|
|
222
|
+
processor._worker.addEventListener(
|
|
223
|
+
"message",
|
|
224
|
+
createOnmessageHandler(processor._worker, id, resolve, reject)
|
|
225
|
+
);
|
|
226
|
+
});
|
|
227
|
+
|
|
228
|
+
processor._worker.postMessage(
|
|
229
|
+
{
|
|
230
|
+
id: id,
|
|
231
|
+
baseUrl: buildModuleUrl.getCesiumBaseUrl().url,
|
|
232
|
+
parameters: parameters,
|
|
233
|
+
canTransferArrayBuffer: canTransfer,
|
|
234
|
+
},
|
|
235
|
+
transferableObjects
|
|
236
|
+
);
|
|
237
|
+
|
|
238
|
+
return promise;
|
|
239
|
+
}
|
|
240
|
+
|
|
241
|
+
async function scheduleTask(processor, parameters, transferableObjects) {
|
|
242
|
+
++processor._activeTasks;
|
|
243
|
+
|
|
244
|
+
try {
|
|
245
|
+
const result = await runTask(processor, parameters, transferableObjects);
|
|
246
|
+
--processor._activeTasks;
|
|
247
|
+
return result;
|
|
248
|
+
} catch (error) {
|
|
249
|
+
--processor._activeTasks;
|
|
250
|
+
throw error;
|
|
251
|
+
}
|
|
252
|
+
}
|
|
219
253
|
|
|
220
254
|
/**
|
|
221
255
|
* Schedule a task to be processed by the web worker asynchronously. If there are currently more
|
|
@@ -248,89 +282,72 @@ TaskProcessor.prototype.scheduleTask = function (
|
|
|
248
282
|
transferableObjects
|
|
249
283
|
) {
|
|
250
284
|
if (!defined(this._worker)) {
|
|
251
|
-
this._worker = createWorker(this);
|
|
285
|
+
this._worker = createWorker(this._workerPath);
|
|
252
286
|
}
|
|
253
287
|
|
|
254
288
|
if (this._activeTasks >= this._maximumActiveTasks) {
|
|
255
289
|
return undefined;
|
|
256
290
|
}
|
|
257
291
|
|
|
258
|
-
|
|
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
|
-
});
|
|
292
|
+
return scheduleTask(this, parameters, transferableObjects);
|
|
285
293
|
};
|
|
286
294
|
|
|
287
295
|
/**
|
|
288
296
|
* Posts a message to a web worker with configuration to initialize loading
|
|
289
|
-
* and compiling a web assembly module
|
|
297
|
+
* and compiling a web assembly module asynchronously, as well as an optional
|
|
290
298
|
* fallback JavaScript module to use if Web Assembly is not supported.
|
|
291
299
|
*
|
|
292
300
|
* @param {object} [webAssemblyOptions] An object with the following properties:
|
|
293
301
|
* @param {string} [webAssemblyOptions.modulePath] The path of the web assembly JavaScript wrapper module.
|
|
294
302
|
* @param {string} [webAssemblyOptions.wasmBinaryFile] The path of the web assembly binary file.
|
|
295
303
|
* @param {string} [webAssemblyOptions.fallbackModulePath] The path of the fallback JavaScript module to use if web assembly is not supported.
|
|
296
|
-
* @returns {Promise
|
|
304
|
+
* @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.
|
|
305
|
+
*
|
|
306
|
+
* @exception {RuntimeError} This browser does not support Web Assembly, and no backup module was provided
|
|
297
307
|
*/
|
|
298
|
-
TaskProcessor.prototype.initWebAssemblyModule = function (
|
|
299
|
-
|
|
300
|
-
|
|
308
|
+
TaskProcessor.prototype.initWebAssemblyModule = async function (
|
|
309
|
+
webAssemblyOptions
|
|
310
|
+
) {
|
|
311
|
+
if (defined(this._webAssemblyPromise)) {
|
|
312
|
+
return this._webAssemblyPromise;
|
|
301
313
|
}
|
|
302
314
|
|
|
303
|
-
const
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
transferableObjects = [binary];
|
|
316
|
-
}
|
|
317
|
-
|
|
318
|
-
worker.onmessage = function (event) {
|
|
319
|
-
worker.onmessage = function (event) {
|
|
320
|
-
completeTask(processor, event.data);
|
|
321
|
-
};
|
|
315
|
+
const init = async () => {
|
|
316
|
+
const worker = (this._worker = createWorker(this._workerPath));
|
|
317
|
+
const wasmConfig = await getWebAssemblyLoaderConfig(
|
|
318
|
+
this,
|
|
319
|
+
webAssemblyOptions
|
|
320
|
+
);
|
|
321
|
+
const canTransfer = await Promise.resolve(canTransferArrayBuffer());
|
|
322
|
+
let transferableObjects;
|
|
323
|
+
const binary = wasmConfig.wasmBinary;
|
|
324
|
+
if (defined(binary) && canTransfer) {
|
|
325
|
+
transferableObjects = [binary];
|
|
326
|
+
}
|
|
322
327
|
|
|
323
|
-
|
|
328
|
+
const promise = new Promise((resolve, reject) => {
|
|
329
|
+
worker.onmessage = function ({ data }) {
|
|
330
|
+
if (defined(data)) {
|
|
331
|
+
resolve(data.result);
|
|
332
|
+
} else {
|
|
333
|
+
reject(new RuntimeError("Could not configure wasm module"));
|
|
334
|
+
}
|
|
324
335
|
};
|
|
325
|
-
|
|
326
|
-
worker.postMessage(
|
|
327
|
-
{ webAssemblyConfig: wasmConfig },
|
|
328
|
-
transferableObjects
|
|
329
|
-
);
|
|
330
336
|
});
|
|
331
|
-
});
|
|
332
337
|
|
|
333
|
-
|
|
338
|
+
worker.postMessage(
|
|
339
|
+
{
|
|
340
|
+
canTransferArrayBuffer: canTransfer,
|
|
341
|
+
parameters: { webAssemblyConfig: wasmConfig },
|
|
342
|
+
},
|
|
343
|
+
transferableObjects
|
|
344
|
+
);
|
|
345
|
+
|
|
346
|
+
return promise;
|
|
347
|
+
};
|
|
348
|
+
|
|
349
|
+
this._webAssemblyPromise = init();
|
|
350
|
+
return this._webAssemblyPromise;
|
|
334
351
|
};
|
|
335
352
|
|
|
336
353
|
/**
|
|
@@ -749,10 +749,10 @@ const rotation2Scratch = new Matrix3();
|
|
|
749
749
|
*
|
|
750
750
|
*
|
|
751
751
|
* @example
|
|
752
|
-
* // Transform a point from the
|
|
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.
|
|
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?.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
|
|
|
@@ -20,6 +20,7 @@ import defined from "./defined.js";
|
|
|
20
20
|
* @param {TerrainProvider} terrainProvider The terrain provider from which to query heights.
|
|
21
21
|
* @param {number} level The terrain level-of-detail from which to query terrain heights.
|
|
22
22
|
* @param {Cartographic[]} positions The positions to update with terrain heights.
|
|
23
|
+
* @param {boolean} [rejectOnTileFail=false] If true, for a failed terrain tile request the promise will be rejected. If false, returned heights will be undefined.
|
|
23
24
|
* @returns {Promise<Cartographic[]>} A promise that resolves to the provided list of positions when terrain the query has completed.
|
|
24
25
|
*
|
|
25
26
|
* @see sampleTerrainMostDetailed
|
|
@@ -34,26 +35,43 @@ import defined from "./defined.js";
|
|
|
34
35
|
* const updatedPositions = await Cesium.sampleTerrain(terrainProvider, 11, positions);
|
|
35
36
|
* // positions[0].height and positions[1].height have been updated.
|
|
36
37
|
* // updatedPositions is just a reference to positions.
|
|
38
|
+
*
|
|
39
|
+
* // To handle tile errors, pass true for the rejectOnTileFail parameter.
|
|
40
|
+
* try {
|
|
41
|
+
* const updatedPositions = await Cesium.sampleTerrain(terrainProvider, 11, positions, true);
|
|
42
|
+
* } catch (error) {
|
|
43
|
+
* // A tile request error occurred.
|
|
44
|
+
* }
|
|
37
45
|
*/
|
|
38
|
-
async function sampleTerrain(
|
|
46
|
+
async function sampleTerrain(
|
|
47
|
+
terrainProvider,
|
|
48
|
+
level,
|
|
49
|
+
positions,
|
|
50
|
+
rejectOnTileFail
|
|
51
|
+
) {
|
|
52
|
+
if (!defined(rejectOnTileFail)) {
|
|
53
|
+
rejectOnTileFail = false;
|
|
54
|
+
}
|
|
39
55
|
//>>includeStart('debug', pragmas.debug);
|
|
40
56
|
Check.typeOf.object("terrainProvider", terrainProvider);
|
|
41
57
|
Check.typeOf.number("level", level);
|
|
58
|
+
Check.typeOf.bool("rejectOnTileFail", rejectOnTileFail);
|
|
42
59
|
Check.defined("positions", positions);
|
|
43
60
|
//>>includeEnd('debug');
|
|
44
61
|
|
|
45
|
-
return doSampling(terrainProvider, level, positions);
|
|
62
|
+
return doSampling(terrainProvider, level, positions, rejectOnTileFail);
|
|
46
63
|
}
|
|
47
64
|
|
|
48
65
|
/**
|
|
49
66
|
* @param {object[]} tileRequests The mutated list of requests, the first one will be attempted
|
|
50
67
|
* @param {Array<Promise<void>>} results The list to put the result promises into
|
|
68
|
+
* @param {boolean} rejectOnTileFail If true, the promise will be rejected. If false, returned heights will be undefined.
|
|
51
69
|
* @returns {boolean} true if the request was made, and we are okay to attempt the next item immediately,
|
|
52
70
|
* or false if we were throttled and should wait awhile before retrying.
|
|
53
71
|
*
|
|
54
72
|
* @private
|
|
55
73
|
*/
|
|
56
|
-
function attemptConsumeNextQueueItem(tileRequests, results) {
|
|
74
|
+
function attemptConsumeNextQueueItem(tileRequests, results, rejectOnTileFail) {
|
|
57
75
|
const tileRequest = tileRequests[0];
|
|
58
76
|
const requestPromise = tileRequest.terrainProvider.requestTileGeometry(
|
|
59
77
|
tileRequest.x,
|
|
@@ -66,9 +84,15 @@ function attemptConsumeNextQueueItem(tileRequests, results) {
|
|
|
66
84
|
return false;
|
|
67
85
|
}
|
|
68
86
|
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
87
|
+
let promise;
|
|
88
|
+
|
|
89
|
+
if (rejectOnTileFail) {
|
|
90
|
+
promise = requestPromise.then(createInterpolateFunction(tileRequest));
|
|
91
|
+
} else {
|
|
92
|
+
promise = requestPromise
|
|
93
|
+
.then(createInterpolateFunction(tileRequest))
|
|
94
|
+
.catch(createMarkFailedFunction(tileRequest));
|
|
95
|
+
}
|
|
72
96
|
|
|
73
97
|
// remove the request we've just done from the queue
|
|
74
98
|
// and add its promise result to the result list
|
|
@@ -95,11 +119,12 @@ function delay(ms) {
|
|
|
95
119
|
* and a Promise of each result has been put into the results list
|
|
96
120
|
* @param {object[]} tileRequests The list of requests desired to be made
|
|
97
121
|
* @param {Array<Promise<void>>} results The list to put all the result promises into
|
|
122
|
+
* @param {boolean} rejectOnTileFail If true, the promise will be rejected. If false, returned heights will be undefined.
|
|
98
123
|
* @returns {Promise<void>} A promise which resolves once all requests have been started
|
|
99
124
|
*
|
|
100
125
|
* @private
|
|
101
126
|
*/
|
|
102
|
-
function drainTileRequestQueue(tileRequests, results) {
|
|
127
|
+
function drainTileRequestQueue(tileRequests, results, rejectOnTileFail) {
|
|
103
128
|
// nothing left to do
|
|
104
129
|
if (!tileRequests.length) {
|
|
105
130
|
return Promise.resolve();
|
|
@@ -108,7 +133,11 @@ function drainTileRequestQueue(tileRequests, results) {
|
|
|
108
133
|
// consume an item from the queue, which will
|
|
109
134
|
// mutate the request and result lists, and return true if we should
|
|
110
135
|
// immediately attempt to consume the next item as well
|
|
111
|
-
const success = attemptConsumeNextQueueItem(
|
|
136
|
+
const success = attemptConsumeNextQueueItem(
|
|
137
|
+
tileRequests,
|
|
138
|
+
results,
|
|
139
|
+
rejectOnTileFail
|
|
140
|
+
);
|
|
112
141
|
if (success) {
|
|
113
142
|
return drainTileRequestQueue(tileRequests, results);
|
|
114
143
|
}
|
|
@@ -119,7 +148,7 @@ function drainTileRequestQueue(tileRequests, results) {
|
|
|
119
148
|
});
|
|
120
149
|
}
|
|
121
150
|
|
|
122
|
-
function doSampling(terrainProvider, level, positions) {
|
|
151
|
+
function doSampling(terrainProvider, level, positions, rejectOnTileFail) {
|
|
123
152
|
const tilingScheme = terrainProvider.tilingScheme;
|
|
124
153
|
|
|
125
154
|
let i;
|
|
@@ -155,7 +184,11 @@ function doSampling(terrainProvider, level, positions) {
|
|
|
155
184
|
|
|
156
185
|
// create our list of result promises to be filled
|
|
157
186
|
const tilePromises = [];
|
|
158
|
-
return drainTileRequestQueue(
|
|
187
|
+
return drainTileRequestQueue(
|
|
188
|
+
tileRequests,
|
|
189
|
+
tilePromises,
|
|
190
|
+
rejectOnTileFail
|
|
191
|
+
).then(function () {
|
|
159
192
|
// now all the required requests have been started
|
|
160
193
|
// we just wait for them all to finish
|
|
161
194
|
return Promise.all(tilePromises).then(function () {
|