@cesium/engine 2.1.0 → 2.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/Build/Workers/{AxisAlignedBoundingBox-a6f9f0e5.js → AxisAlignedBoundingBox-379015ef.js} +1 -1
- package/Build/Workers/{BoundingRectangle-b0a68595.js → BoundingRectangle-57f2b24f.js} +1 -1
- package/Build/Workers/{BoxGeometry-baedd794.js → BoxGeometry-ecabfc78.js} +1 -1
- package/Build/Workers/{Color-f85df1be.js → Color-14d1a36d.js} +1 -1
- package/Build/Workers/{CoplanarPolygonGeometryLibrary-30516950.js → CoplanarPolygonGeometryLibrary-048c3c14.js} +1 -1
- package/Build/Workers/{CorridorGeometryLibrary-5d5d3b3a.js → CorridorGeometryLibrary-520c8619.js} +1 -1
- package/Build/Workers/{CylinderGeometry-d899ae26.js → CylinderGeometry-119068b8.js} +1 -1
- package/Build/Workers/{EllipseGeometry-a49f8449.js → EllipseGeometry-2dfc3523.js} +1 -1
- package/Build/Workers/{EllipseGeometryLibrary-cba7edde.js → EllipseGeometryLibrary-0a1e0170.js} +1 -1
- package/Build/Workers/{EllipseOutlineGeometry-8095c8cb.js → EllipseOutlineGeometry-c5251669.js} +1 -1
- package/Build/Workers/{EllipsoidGeometry-ed93f571.js → EllipsoidGeometry-d10a5221.js} +1 -1
- package/Build/Workers/{EllipsoidOutlineGeometry-e4854854.js → EllipsoidOutlineGeometry-7039a0ae.js} +1 -1
- package/Build/Workers/{EllipsoidTangentPlane-7ae1aa9a.js → EllipsoidTangentPlane-857186be.js} +1 -1
- package/Build/Workers/{FrustumGeometry-b62db3e3.js → FrustumGeometry-400fa1b7.js} +2 -2
- package/Build/Workers/{GeometryAttribute-780af4fa.js → GeometryAttribute-7a2de5c6.js} +1 -1
- package/Build/Workers/{GeometryPipeline-36b61c99.js → GeometryPipeline-916636fa.js} +1 -1
- package/Build/Workers/{IntersectionTests-e889fcf0.js → IntersectionTests-b4d02d4d.js} +1 -1
- package/Build/Workers/{OrientedBoundingBox-43478ac8.js → OrientedBoundingBox-96fe1752.js} +5 -3
- package/Build/Workers/{PolygonGeometryLibrary-38a98276.js → PolygonGeometryLibrary-931f1ec6.js} +1 -1
- package/Build/Workers/{PolygonPipeline-d31ff61c.js → PolygonPipeline-32fc92cc.js} +1 -1
- package/Build/Workers/{PolylinePipeline-30e4cec9.js → PolylinePipeline-6d5c63e5.js} +1 -1
- package/Build/Workers/{PolylineVolumeGeometryLibrary-90551d26.js → PolylineVolumeGeometryLibrary-f068c1fb.js} +1 -1
- package/Build/Workers/{PrimitivePipeline-558d9cb0.js → PrimitivePipeline-879f996a.js} +1 -1
- package/Build/Workers/{RectangleGeometryLibrary-815c68df.js → RectangleGeometryLibrary-2d6f36f3.js} +1 -1
- package/Build/Workers/{TerrainEncoding-341ead52.js → TerrainEncoding-82882059.js} +1 -1
- package/Build/Workers/{Transforms-9e9df299.js → Transforms-9052372a.js} +6 -5
- package/Build/Workers/{WallGeometryLibrary-ccf90976.js → WallGeometryLibrary-db7a64fb.js} +1 -1
- package/Build/Workers/cesiumWorkerBootstrapper.js +1 -1
- package/Build/Workers/combineGeometry.js +1 -1
- package/Build/Workers/createBoxGeometry.js +1 -1
- package/Build/Workers/createBoxOutlineGeometry.js +1 -1
- package/Build/Workers/createCircleGeometry.js +1 -1
- package/Build/Workers/createCircleOutlineGeometry.js +1 -1
- package/Build/Workers/createCoplanarPolygonGeometry.js +1 -1
- package/Build/Workers/createCoplanarPolygonOutlineGeometry.js +1 -1
- package/Build/Workers/createCorridorGeometry.js +1 -1
- package/Build/Workers/createCorridorOutlineGeometry.js +1 -1
- package/Build/Workers/createCylinderGeometry.js +1 -1
- package/Build/Workers/createCylinderOutlineGeometry.js +1 -1
- package/Build/Workers/createEllipseGeometry.js +1 -1
- package/Build/Workers/createEllipseOutlineGeometry.js +1 -1
- package/Build/Workers/createEllipsoidGeometry.js +1 -1
- package/Build/Workers/createEllipsoidOutlineGeometry.js +1 -1
- package/Build/Workers/createFrustumGeometry.js +1 -1
- package/Build/Workers/createFrustumOutlineGeometry.js +1 -1
- package/Build/Workers/createGeometry.js +1 -1
- package/Build/Workers/createGroundPolylineGeometry.js +1 -1
- package/Build/Workers/createPlaneGeometry.js +1 -1
- package/Build/Workers/createPlaneOutlineGeometry.js +1 -1
- package/Build/Workers/createPolygonGeometry.js +1 -1
- package/Build/Workers/createPolygonOutlineGeometry.js +1 -1
- package/Build/Workers/createPolylineGeometry.js +1 -1
- package/Build/Workers/createPolylineVolumeGeometry.js +1 -1
- package/Build/Workers/createPolylineVolumeOutlineGeometry.js +1 -1
- package/Build/Workers/createRectangleGeometry.js +1 -1
- package/Build/Workers/createRectangleOutlineGeometry.js +1 -1
- package/Build/Workers/createSimplePolylineGeometry.js +1 -1
- package/Build/Workers/createSphereGeometry.js +1 -1
- package/Build/Workers/createSphereOutlineGeometry.js +1 -1
- package/Build/Workers/createVectorTileGeometries.js +1 -1
- package/Build/Workers/createVectorTilePolygons.js +1 -1
- package/Build/Workers/createVerticesFromGoogleEarthEnterpriseBuffer.js +1 -1
- package/Build/Workers/createVerticesFromHeightmap.js +1 -1
- package/Build/Workers/createVerticesFromQuantizedTerrainMesh.js +10 -15
- package/Build/Workers/createWallGeometry.js +1 -1
- package/Build/Workers/createWallOutlineGeometry.js +1 -1
- package/Build/Workers/package.js +1 -1
- package/Build/Workers/transferTypedArrayTest.js +1 -1
- package/Build/Workers/upsampleQuantizedTerrainMesh.js +1 -1
- package/Source/Core/ArcGISTiledElevationTerrainProvider.js +291 -191
- package/Source/Core/CesiumTerrainProvider.js +571 -434
- package/Source/Core/CustomHeightmapTerrainProvider.js +12 -0
- package/Source/Core/EllipsoidTerrainProvider.js +17 -10
- package/Source/Core/FrustumGeometry.js +1 -1
- package/Source/Core/GoogleEarthEnterpriseMetadata.js +86 -34
- package/Source/Core/GoogleEarthEnterpriseTerrainProvider.js +119 -82
- package/Source/Core/Ion.js +1 -1
- package/Source/Core/IonResource.js +14 -3
- package/Source/Core/OrientedBoundingBox.js +4 -2
- package/Source/Core/RequestScheduler.js +1 -1
- package/Source/Core/Resource.js +2 -2
- package/Source/Core/TerrainProvider.js +9 -14
- package/Source/Core/TileProviderError.js +8 -8
- package/Source/Core/VRTheWorldTerrainProvider.js +193 -124
- package/Source/Core/buildModuleUrl.js +4 -3
- package/Source/Core/createWorldTerrain.js +20 -2
- package/Source/Core/createWorldTerrainAsync.js +48 -0
- package/Source/Core/sampleTerrain.js +9 -10
- package/Source/Core/sampleTerrainMostDetailed.js +66 -72
- package/Source/DataSources/Cesium3DTilesetVisualizer.js +37 -26
- package/Source/DataSources/Entity.js +6 -1
- package/Source/DataSources/ModelVisualizer.js +99 -31
- package/Source/DataSources/PolygonGraphics.js +1 -1
- package/Source/Scene/ArcGisMapServerImageryProvider.js +552 -376
- package/Source/Scene/BingMapsImageryProvider.js +511 -305
- package/Source/Scene/BufferLoader.js +29 -34
- package/Source/Scene/Cesium3DTile.js +388 -251
- package/Source/Scene/Cesium3DTileBatchTable.js +2 -2
- package/Source/Scene/Cesium3DTileContent.js +16 -0
- package/Source/Scene/Cesium3DTileContentFactory.js +4 -4
- package/Source/Scene/Cesium3DTilePass.js +8 -11
- package/Source/Scene/Cesium3DTileStyleEngine.js +1 -1
- package/Source/Scene/Cesium3DTilesVoxelProvider.js +225 -117
- package/Source/Scene/Cesium3DTileset.js +755 -481
- package/Source/Scene/Cesium3DTilesetBaseTraversal.js +301 -0
- package/Source/Scene/Cesium3DTilesetMostDetailedTraversal.js +33 -46
- package/Source/Scene/Cesium3DTilesetSkipTraversal.js +421 -0
- package/Source/Scene/Cesium3DTilesetTraversal.js +219 -671
- package/Source/Scene/ClassificationPrimitive.js +7 -0
- package/Source/Scene/Composite3DTileContent.js +69 -26
- package/Source/Scene/CreditDisplay.js +20 -4
- package/Source/Scene/DepthPlane.js +1 -1
- package/Source/Scene/Empty3DTileContent.js +31 -1
- package/Source/Scene/Geometry3DTileContent.js +47 -7
- package/Source/Scene/Globe.js +5 -1
- package/Source/Scene/GlobeSurfaceTile.js +2 -1
- package/Source/Scene/GlobeSurfaceTileProvider.js +50 -27
- package/Source/Scene/GltfBufferViewLoader.js +47 -91
- package/Source/Scene/GltfDracoLoader.js +110 -112
- package/Source/Scene/GltfImageLoader.js +71 -78
- package/Source/Scene/GltfIndexBufferLoader.js +108 -121
- package/Source/Scene/GltfJsonLoader.js +75 -74
- package/Source/Scene/GltfLoader.js +392 -280
- package/Source/Scene/GltfStructuralMetadataLoader.js +109 -110
- package/Source/Scene/GltfTextureLoader.js +97 -96
- package/Source/Scene/GltfVertexBufferLoader.js +128 -133
- package/Source/Scene/GoogleEarthEnterpriseImageryProvider.js +353 -225
- package/Source/Scene/GoogleEarthEnterpriseMapsProvider.js +491 -331
- package/Source/Scene/GridImageryProvider.js +267 -104
- package/Source/Scene/GroundPolylinePrimitive.js +12 -1
- package/Source/Scene/GroundPrimitive.js +8 -1
- package/Source/Scene/I3SDataProvider.js +214 -113
- package/Source/Scene/I3SFeature.js +7 -6
- package/Source/Scene/I3SLayer.js +26 -37
- package/Source/Scene/I3SNode.js +59 -66
- package/Source/Scene/Imagery.js +6 -1
- package/Source/Scene/ImageryLayer.js +299 -48
- package/Source/Scene/ImageryLayerCollection.js +26 -0
- package/Source/Scene/ImageryProvider.js +129 -111
- package/Source/Scene/Implicit3DTileContent.js +72 -23
- package/Source/Scene/ImplicitSubtree.js +66 -45
- package/Source/Scene/IonImageryProvider.js +471 -264
- package/Source/Scene/MapboxImageryProvider.js +272 -112
- package/Source/Scene/MapboxStyleImageryProvider.js +270 -111
- package/Source/Scene/MetadataSchemaLoader.js +26 -36
- package/Source/Scene/Model/B3dmLoader.js +42 -46
- package/Source/Scene/Model/GeoJsonLoader.js +8 -32
- package/Source/Scene/Model/I3dmLoader.js +48 -74
- package/Source/Scene/Model/Model.js +470 -132
- package/Source/Scene/Model/Model3DTileContent.js +83 -31
- package/Source/Scene/Model/ModelAnimationCollection.js +3 -3
- package/Source/Scene/Model/ModelDrawCommand.js +15 -26
- package/Source/Scene/Model/ModelUtility.js +16 -16
- package/Source/Scene/Model/PntsLoader.js +27 -32
- package/Source/Scene/Multiple3DTileContent.js +134 -115
- package/Source/Scene/PointCloud.js +11 -19
- package/Source/Scene/Primitive.js +20 -0
- package/Source/Scene/QuadtreePrimitive.js +2 -0
- package/Source/Scene/QuadtreeTileProvider.js +4 -8
- package/Source/Scene/ResourceCache.js +47 -105
- package/Source/Scene/ResourceCacheStatistics.js +24 -58
- package/Source/Scene/ResourceLoader.js +5 -17
- package/Source/Scene/ResourceLoaderState.js +12 -4
- package/Source/Scene/Scene.js +65 -0
- package/Source/Scene/ScreenSpaceCameraController.js +1 -1
- package/Source/Scene/SingleTileImageryProvider.js +382 -209
- package/Source/Scene/Terrain.js +196 -0
- package/Source/Scene/TileCoordinatesImageryProvider.js +267 -104
- package/Source/Scene/TileMapServiceImageryProvider.js +177 -85
- package/Source/Scene/Tileset3DTileContent.js +47 -5
- package/Source/Scene/TimeDynamicPointCloud.js +15 -2
- package/Source/Scene/UrlTemplateImageryProvider.js +343 -215
- package/Source/Scene/Vector3DTileClampedPolylines.js +96 -84
- package/Source/Scene/Vector3DTileContent.js +47 -22
- package/Source/Scene/Vector3DTileGeometry.js +57 -52
- package/Source/Scene/Vector3DTilePoints.js +72 -68
- package/Source/Scene/Vector3DTilePolygons.js +118 -117
- package/Source/Scene/Vector3DTilePolylines.js +86 -82
- package/Source/Scene/Vector3DTilePrimitive.js +0 -1
- package/Source/Scene/VoxelContent.js +61 -63
- package/Source/Scene/VoxelPrimitive.js +39 -91
- package/Source/Scene/VoxelProvider.js +2 -2
- package/Source/Scene/WebMapServiceImageryProvider.js +272 -111
- package/Source/Scene/WebMapTileServiceImageryProvider.js +270 -107
- package/Source/Scene/computeFlyToLocationForRectangle.js +33 -37
- package/Source/Scene/createOsmBuildings.js +6 -0
- package/Source/Scene/createOsmBuildingsAsync.js +82 -0
- package/Source/Scene/createWorldImagery.js +14 -5
- package/Source/Scene/createWorldImageryAsync.js +39 -0
- package/Source/Widget/CesiumWidget.js +55 -27
- package/index.d.ts +2158 -1395
- package/index.js +58 -51
- package/package.json +1 -1
|
@@ -87,10 +87,8 @@ function Vector3DTilePolylines(options) {
|
|
|
87
87
|
this._geometryByteLength = 0;
|
|
88
88
|
|
|
89
89
|
this._ready = false;
|
|
90
|
-
this.
|
|
91
|
-
this.
|
|
92
|
-
|
|
93
|
-
this._verticesPromise = undefined;
|
|
90
|
+
this._promise = undefined;
|
|
91
|
+
this._error = undefined;
|
|
94
92
|
}
|
|
95
93
|
|
|
96
94
|
Object.defineProperties(Vector3DTilePolylines.prototype, {
|
|
@@ -101,6 +99,7 @@ Object.defineProperties(Vector3DTilePolylines.prototype, {
|
|
|
101
99
|
*
|
|
102
100
|
* @type {number}
|
|
103
101
|
* @readonly
|
|
102
|
+
* @private
|
|
104
103
|
*/
|
|
105
104
|
trianglesLength: {
|
|
106
105
|
get: function () {
|
|
@@ -115,6 +114,7 @@ Object.defineProperties(Vector3DTilePolylines.prototype, {
|
|
|
115
114
|
*
|
|
116
115
|
* @type {number}
|
|
117
116
|
* @readonly
|
|
117
|
+
* @private
|
|
118
118
|
*/
|
|
119
119
|
geometryByteLength: {
|
|
120
120
|
get: function () {
|
|
@@ -123,14 +123,15 @@ Object.defineProperties(Vector3DTilePolylines.prototype, {
|
|
|
123
123
|
},
|
|
124
124
|
|
|
125
125
|
/**
|
|
126
|
-
*
|
|
126
|
+
* Returns true when the primitive is ready to render.
|
|
127
127
|
* @memberof Vector3DTilePolylines.prototype
|
|
128
|
-
* @type {
|
|
128
|
+
* @type {boolean}
|
|
129
129
|
* @readonly
|
|
130
|
+
* @private
|
|
130
131
|
*/
|
|
131
|
-
|
|
132
|
+
ready: {
|
|
132
133
|
get: function () {
|
|
133
|
-
return this.
|
|
134
|
+
return this._ready;
|
|
134
135
|
},
|
|
135
136
|
},
|
|
136
137
|
});
|
|
@@ -181,51 +182,55 @@ function createVertexArray(polylines, context) {
|
|
|
181
182
|
return;
|
|
182
183
|
}
|
|
183
184
|
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
let batchIds = polylines._transferrableBatchIds;
|
|
185
|
+
let positions = polylines._positions;
|
|
186
|
+
let widths = polylines._widths;
|
|
187
|
+
let counts = polylines._counts;
|
|
188
|
+
let batchIds = polylines._transferrableBatchIds;
|
|
189
189
|
|
|
190
|
-
|
|
190
|
+
let packedBuffer = polylines._packedBuffer;
|
|
191
191
|
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
192
|
+
if (!defined(packedBuffer)) {
|
|
193
|
+
// Copy because they may be the views on the same buffer.
|
|
194
|
+
positions = polylines._positions = positions.slice();
|
|
195
|
+
widths = polylines._widths = widths.slice();
|
|
196
|
+
counts = polylines._counts = counts.slice();
|
|
197
197
|
|
|
198
|
-
|
|
198
|
+
batchIds = polylines._transferrableBatchIds = polylines._batchIds.slice();
|
|
199
199
|
|
|
200
|
-
|
|
201
|
-
|
|
200
|
+
packedBuffer = polylines._packedBuffer = packBuffer(polylines);
|
|
201
|
+
}
|
|
202
202
|
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
203
|
+
const transferrableObjects = [
|
|
204
|
+
positions.buffer,
|
|
205
|
+
widths.buffer,
|
|
206
|
+
counts.buffer,
|
|
207
|
+
batchIds.buffer,
|
|
208
|
+
packedBuffer.buffer,
|
|
209
|
+
];
|
|
210
|
+
const parameters = {
|
|
211
|
+
positions: positions.buffer,
|
|
212
|
+
widths: widths.buffer,
|
|
213
|
+
counts: counts.buffer,
|
|
214
|
+
batchIds: batchIds.buffer,
|
|
215
|
+
packedBuffer: packedBuffer.buffer,
|
|
216
|
+
keepDecodedPositions: polylines._keepDecodedPositions,
|
|
217
|
+
};
|
|
218
|
+
|
|
219
|
+
const verticesPromise = createVerticesTaskProcessor.scheduleTask(
|
|
220
|
+
parameters,
|
|
221
|
+
transferrableObjects
|
|
222
|
+
);
|
|
223
|
+
if (!defined(verticesPromise)) {
|
|
224
|
+
// Postponed
|
|
225
|
+
return;
|
|
226
|
+
}
|
|
227
|
+
|
|
228
|
+
return verticesPromise
|
|
229
|
+
.then(function (result) {
|
|
230
|
+
if (polylines.isDestroyed()) {
|
|
231
|
+
return;
|
|
232
|
+
}
|
|
227
233
|
|
|
228
|
-
return verticesPromise.then(function (result) {
|
|
229
234
|
if (polylines._keepDecodedPositions) {
|
|
230
235
|
polylines._decodedPositions = new Float64Array(result.decodedPositions);
|
|
231
236
|
polylines._decodedPositionOffsets = new Uint32Array(
|
|
@@ -245,13 +250,22 @@ function createVertexArray(polylines, context) {
|
|
|
245
250
|
? new Uint16Array(result.indices)
|
|
246
251
|
: new Uint32Array(result.indices);
|
|
247
252
|
|
|
253
|
+
finishVertexArray(polylines, context);
|
|
254
|
+
|
|
248
255
|
polylines._ready = true;
|
|
256
|
+
})
|
|
257
|
+
.catch((error) => {
|
|
258
|
+
if (polylines.isDestroyed()) {
|
|
259
|
+
return;
|
|
260
|
+
}
|
|
261
|
+
|
|
262
|
+
// Throw the error next frame
|
|
263
|
+
polylines._error = error;
|
|
249
264
|
});
|
|
250
|
-
}
|
|
251
265
|
}
|
|
252
266
|
|
|
253
267
|
function finishVertexArray(polylines, context) {
|
|
254
|
-
if (
|
|
268
|
+
if (!defined(polylines._va)) {
|
|
255
269
|
const curPositions = polylines._currentPositions;
|
|
256
270
|
const prevPositions = polylines._previousPositions;
|
|
257
271
|
const nextPositions = polylines._nextPositions;
|
|
@@ -603,45 +617,35 @@ Vector3DTilePolylines.prototype.applyStyle = function (style, features) {
|
|
|
603
617
|
}
|
|
604
618
|
};
|
|
605
619
|
|
|
606
|
-
function initialize(polylines) {
|
|
607
|
-
return new Promise(function (resolve, reject) {
|
|
608
|
-
polylines._update = function (polylines, frameState) {
|
|
609
|
-
const context = frameState.context;
|
|
610
|
-
const promise = createVertexArray(polylines, context);
|
|
611
|
-
createUniformMap(polylines, context);
|
|
612
|
-
createShaders(polylines, context);
|
|
613
|
-
createRenderStates(polylines);
|
|
614
|
-
|
|
615
|
-
if (polylines._ready) {
|
|
616
|
-
const passes = frameState.passes;
|
|
617
|
-
if (passes.render || passes.pick) {
|
|
618
|
-
queueCommands(polylines, frameState);
|
|
619
|
-
}
|
|
620
|
-
}
|
|
621
|
-
|
|
622
|
-
if (!defined(promise)) {
|
|
623
|
-
return;
|
|
624
|
-
}
|
|
625
|
-
|
|
626
|
-
promise
|
|
627
|
-
.then(function () {
|
|
628
|
-
finishVertexArray(polylines, context);
|
|
629
|
-
resolve();
|
|
630
|
-
})
|
|
631
|
-
.catch(function (e) {
|
|
632
|
-
reject(e);
|
|
633
|
-
});
|
|
634
|
-
};
|
|
635
|
-
});
|
|
636
|
-
}
|
|
637
|
-
|
|
638
620
|
/**
|
|
639
621
|
* Updates the batches and queues the commands for rendering.
|
|
640
622
|
*
|
|
641
623
|
* @param {FrameState} frameState The current frame state.
|
|
642
624
|
*/
|
|
643
625
|
Vector3DTilePolylines.prototype.update = function (frameState) {
|
|
644
|
-
|
|
626
|
+
const context = frameState.context;
|
|
627
|
+
if (!this._ready) {
|
|
628
|
+
if (!defined(this._promise)) {
|
|
629
|
+
this._promise = createVertexArray(this, context);
|
|
630
|
+
}
|
|
631
|
+
|
|
632
|
+
if (defined(this._error)) {
|
|
633
|
+
const error = this._error;
|
|
634
|
+
this._error = undefined;
|
|
635
|
+
throw error;
|
|
636
|
+
}
|
|
637
|
+
|
|
638
|
+
return;
|
|
639
|
+
}
|
|
640
|
+
|
|
641
|
+
createUniformMap(this, context);
|
|
642
|
+
createShaders(this, context);
|
|
643
|
+
createRenderStates(this);
|
|
644
|
+
|
|
645
|
+
const passes = frameState.passes;
|
|
646
|
+
if (passes.render || passes.pick) {
|
|
647
|
+
queueCommands(this, frameState);
|
|
648
|
+
}
|
|
645
649
|
};
|
|
646
650
|
|
|
647
651
|
/**
|
|
@@ -249,7 +249,6 @@ function createVertexArray(primitive, context) {
|
|
|
249
249
|
primitive._batchedPositions = undefined;
|
|
250
250
|
primitive._transferrableBatchIds = undefined;
|
|
251
251
|
primitive._vertexBatchIds = undefined;
|
|
252
|
-
primitive._verticesPromise = undefined;
|
|
253
252
|
}
|
|
254
253
|
|
|
255
254
|
function createShaders(primitive, context) {
|
|
@@ -11,58 +11,20 @@ import MetadataTable from "./MetadataTable.js";
|
|
|
11
11
|
* @constructor
|
|
12
12
|
*
|
|
13
13
|
* @param {Resource} resource The resource for this voxel content. This is used for fetching external buffers as needed.
|
|
14
|
-
* @param {object} [json] Voxel JSON contents. Mutually exclusive with binary.
|
|
15
|
-
* @param {Uint8Array} [binary] Voxel binary contents. Mutually exclusive with json.
|
|
16
|
-
* @param {MetadataSchema} metadataSchema The metadata schema used by property tables in the voxel content
|
|
17
|
-
*
|
|
18
|
-
* @exception {DeveloperError} One of json and binary must be defined.
|
|
19
14
|
*
|
|
20
15
|
* @private
|
|
21
16
|
* @experimental This feature is not final and is subject to change without Cesium's standard deprecation policy.
|
|
22
17
|
*/
|
|
23
|
-
function VoxelContent(resource
|
|
18
|
+
function VoxelContent(resource) {
|
|
24
19
|
//>>includeStart('debug', pragmas.debug);
|
|
25
20
|
Check.typeOf.object("resource", resource);
|
|
26
|
-
if (defined(json) === defined(binary)) {
|
|
27
|
-
throw new DeveloperError("One of json and binary must be defined.");
|
|
28
|
-
}
|
|
29
21
|
//>>includeEnd('debug');
|
|
30
22
|
|
|
31
23
|
this._resource = resource;
|
|
32
24
|
this._metadataTable = undefined;
|
|
33
|
-
|
|
34
|
-
let chunks;
|
|
35
|
-
if (defined(json)) {
|
|
36
|
-
chunks = {
|
|
37
|
-
json: json,
|
|
38
|
-
binary: undefined,
|
|
39
|
-
};
|
|
40
|
-
} else {
|
|
41
|
-
chunks = parseVoxelChunks(binary);
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
this._readyPromise = initialize(
|
|
45
|
-
this,
|
|
46
|
-
chunks.json,
|
|
47
|
-
chunks.binary,
|
|
48
|
-
metadataSchema
|
|
49
|
-
);
|
|
50
25
|
}
|
|
51
26
|
|
|
52
27
|
Object.defineProperties(VoxelContent.prototype, {
|
|
53
|
-
/**
|
|
54
|
-
* A promise that resolves once all buffers are loaded.
|
|
55
|
-
*
|
|
56
|
-
* @type {Promise}
|
|
57
|
-
* @readonly
|
|
58
|
-
* @private
|
|
59
|
-
*/
|
|
60
|
-
readyPromise: {
|
|
61
|
-
get: function () {
|
|
62
|
-
return this._readyPromise;
|
|
63
|
-
},
|
|
64
|
-
},
|
|
65
|
-
|
|
66
28
|
/**
|
|
67
29
|
* The {@link MetadataTable} storing voxel property values.
|
|
68
30
|
*
|
|
@@ -77,38 +39,74 @@ Object.defineProperties(VoxelContent.prototype, {
|
|
|
77
39
|
},
|
|
78
40
|
});
|
|
79
41
|
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
42
|
+
/**
|
|
43
|
+
* Creates an object representing voxel content for a {@link Cesium3DTilesVoxelProvider}.
|
|
44
|
+
*
|
|
45
|
+
* @param {Resource} resource The resource for this voxel content. This is used for fetching external buffers as needed.
|
|
46
|
+
* @param {object} [json] Voxel JSON contents. Mutually exclusive with binary.
|
|
47
|
+
* @param {Uint8Array} [binary] Voxel binary contents. Mutually exclusive with json.
|
|
48
|
+
* @param {MetadataSchema} metadataSchema The metadata schema used by property tables in the voxel content
|
|
49
|
+
* @returns {Promise<VoxelContent>}
|
|
50
|
+
*
|
|
51
|
+
* @exception {DeveloperError} One of json and binary must be defined.
|
|
52
|
+
*/
|
|
53
|
+
VoxelContent.fromJson = async function (
|
|
54
|
+
resource,
|
|
55
|
+
json,
|
|
56
|
+
binary,
|
|
57
|
+
metadataSchema
|
|
58
|
+
) {
|
|
59
|
+
//>>includeStart('debug', pragmas.debug);
|
|
60
|
+
Check.typeOf.object("resource", resource);
|
|
61
|
+
if (defined(json) === defined(binary)) {
|
|
62
|
+
throw new DeveloperError("One of json and binary must be defined.");
|
|
63
|
+
}
|
|
64
|
+
//>>includeEnd('debug');
|
|
65
|
+
|
|
66
|
+
let chunks;
|
|
67
|
+
if (defined(json)) {
|
|
68
|
+
chunks = {
|
|
69
|
+
json: json,
|
|
70
|
+
binary: undefined,
|
|
71
|
+
};
|
|
72
|
+
} else {
|
|
73
|
+
chunks = parseVoxelChunks(binary);
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
const buffersU8 = await requestBuffers(resource, chunks.json, chunks.binary);
|
|
77
|
+
const bufferViewsU8 = {};
|
|
78
|
+
const bufferViewsLength = chunks.json.bufferViews.length;
|
|
79
|
+
for (let i = 0; i < bufferViewsLength; ++i) {
|
|
80
|
+
const bufferViewJson = chunks.json.bufferViews[i];
|
|
81
|
+
const start = bufferViewJson.byteOffset;
|
|
82
|
+
const end = start + bufferViewJson.byteLength;
|
|
83
|
+
const buffer = buffersU8[bufferViewJson.buffer];
|
|
84
|
+
const bufferView = buffer.subarray(start, end);
|
|
85
|
+
bufferViewsU8[i] = bufferView;
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
const propertyTableIndex = chunks.json.voxelTable;
|
|
89
|
+
const propertyTableJson = chunks.json.propertyTables[propertyTableIndex];
|
|
92
90
|
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
});
|
|
101
|
-
return content;
|
|
91
|
+
const content = new VoxelContent(resource);
|
|
92
|
+
|
|
93
|
+
content._metadataTable = new MetadataTable({
|
|
94
|
+
count: propertyTableJson.count,
|
|
95
|
+
properties: propertyTableJson.properties,
|
|
96
|
+
class: metadataSchema.classes[propertyTableJson.class],
|
|
97
|
+
bufferViews: bufferViewsU8,
|
|
102
98
|
});
|
|
103
|
-
}
|
|
104
99
|
|
|
105
|
-
|
|
100
|
+
return content;
|
|
101
|
+
};
|
|
102
|
+
|
|
103
|
+
function requestBuffers(resource, json, binary) {
|
|
106
104
|
const buffersLength = json.buffers.length;
|
|
107
105
|
const bufferPromises = new Array(buffersLength);
|
|
108
106
|
for (let i = 0; i < buffersLength; i++) {
|
|
109
107
|
const buffer = json.buffers[i];
|
|
110
108
|
if (defined(buffer.uri)) {
|
|
111
|
-
const baseResource =
|
|
109
|
+
const baseResource = resource;
|
|
112
110
|
const bufferResource = baseResource.getDerivedResource({
|
|
113
111
|
url: buffer.uri,
|
|
114
112
|
});
|
|
@@ -8,8 +8,8 @@ import clone from "../Core/clone.js";
|
|
|
8
8
|
import Color from "../Core/Color.js";
|
|
9
9
|
import defaultValue from "../Core/defaultValue.js";
|
|
10
10
|
import defined from "../Core/defined.js";
|
|
11
|
+
import deprecationWarning from "../Core/deprecationWarning.js";
|
|
11
12
|
import destroyObject from "../Core/destroyObject.js";
|
|
12
|
-
import DeveloperError from "../Core/DeveloperError.js";
|
|
13
13
|
import Event from "../Core/Event.js";
|
|
14
14
|
import JulianDate from "../Core/JulianDate.js";
|
|
15
15
|
import Matrix3 from "../Core/Matrix3.js";
|
|
@@ -426,7 +426,7 @@ function VoxelPrimitive(options) {
|
|
|
426
426
|
this._readyPromise = initialize(this, provider);
|
|
427
427
|
}
|
|
428
428
|
|
|
429
|
-
function initialize(primitive, provider) {
|
|
429
|
+
async function initialize(primitive, provider) {
|
|
430
430
|
const promise = new Promise(function (resolve) {
|
|
431
431
|
primitive._completeLoad = function (primitive, frameState) {
|
|
432
432
|
// Set the primitive as ready after the first frame render since the user might set up events subscribed to
|
|
@@ -439,9 +439,35 @@ function initialize(primitive, provider) {
|
|
|
439
439
|
};
|
|
440
440
|
});
|
|
441
441
|
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
442
|
+
// This is here for backwards compatibility. It can be removed when readyPromise is removed.
|
|
443
|
+
if (defined(provider._readyPromise) && !provider._ready) {
|
|
444
|
+
await provider._readyPromise;
|
|
445
|
+
}
|
|
446
|
+
|
|
447
|
+
// Set the bounds
|
|
448
|
+
const {
|
|
449
|
+
shape: shapeType,
|
|
450
|
+
minBounds = VoxelShapeType.getMinBounds(shapeType),
|
|
451
|
+
maxBounds = VoxelShapeType.getMaxBounds(shapeType),
|
|
452
|
+
} = provider;
|
|
453
|
+
|
|
454
|
+
primitive.minBounds = minBounds;
|
|
455
|
+
primitive.maxBounds = maxBounds;
|
|
456
|
+
primitive.minClippingBounds = VoxelShapeType.getMinBounds(shapeType);
|
|
457
|
+
primitive.maxClippingBounds = VoxelShapeType.getMaxBounds(shapeType);
|
|
458
|
+
|
|
459
|
+
checkTransformAndBounds(primitive, provider);
|
|
460
|
+
|
|
461
|
+
// Create the shape object, and update it so it is valid for VoxelTraversal
|
|
462
|
+
const ShapeConstructor = VoxelShapeType.getShapeConstructor(shapeType);
|
|
463
|
+
primitive._shape = new ShapeConstructor();
|
|
464
|
+
primitive._shapeVisible = updateShapeAndTransforms(
|
|
465
|
+
primitive,
|
|
466
|
+
primitive._shape,
|
|
467
|
+
provider
|
|
468
|
+
);
|
|
469
|
+
|
|
470
|
+
return promise;
|
|
445
471
|
}
|
|
446
472
|
|
|
447
473
|
Object.defineProperties(VoxelPrimitive.prototype, {
|
|
@@ -464,9 +490,14 @@ Object.defineProperties(VoxelPrimitive.prototype, {
|
|
|
464
490
|
* @memberof VoxelPrimitive.prototype
|
|
465
491
|
* @type {Promise<VoxelPrimitive>}
|
|
466
492
|
* @readonly
|
|
493
|
+
* @deprecated
|
|
467
494
|
*/
|
|
468
495
|
readyPromise: {
|
|
469
496
|
get: function () {
|
|
497
|
+
deprecationWarning(
|
|
498
|
+
"VoxelPrimitive.readyPromise",
|
|
499
|
+
"VoxelPrimitive.readyPromise was deprecated in CesiumJS 1.104. It will be removed in 1.107. Wait for VoxelPrimitive.ready to return true instead."
|
|
500
|
+
);
|
|
470
501
|
return this._readyPromise;
|
|
471
502
|
},
|
|
472
503
|
},
|
|
@@ -490,19 +521,9 @@ Object.defineProperties(VoxelPrimitive.prototype, {
|
|
|
490
521
|
* @memberof VoxelPrimitive.prototype
|
|
491
522
|
* @type {BoundingSphere}
|
|
492
523
|
* @readonly
|
|
493
|
-
*
|
|
494
|
-
* @exception {DeveloperError} If the primitive is not ready.
|
|
495
524
|
*/
|
|
496
525
|
boundingSphere: {
|
|
497
526
|
get: function () {
|
|
498
|
-
//>>includeStart('debug', pragmas.debug);
|
|
499
|
-
if (!this._ready) {
|
|
500
|
-
throw new DeveloperError(
|
|
501
|
-
"boundingSphere must not be called before the primitive is ready."
|
|
502
|
-
);
|
|
503
|
-
}
|
|
504
|
-
//>>includeEnd('debug');
|
|
505
|
-
|
|
506
527
|
return this._shape.boundingSphere;
|
|
507
528
|
},
|
|
508
529
|
},
|
|
@@ -513,20 +534,10 @@ Object.defineProperties(VoxelPrimitive.prototype, {
|
|
|
513
534
|
* @memberof VoxelPrimitive.prototype
|
|
514
535
|
* @type {OrientedBoundingBox}
|
|
515
536
|
* @readonly
|
|
516
|
-
*
|
|
517
|
-
* @exception {DeveloperError} If the primitive is not ready.
|
|
518
537
|
*/
|
|
519
538
|
orientedBoundingBox: {
|
|
520
539
|
get: function () {
|
|
521
|
-
|
|
522
|
-
if (!this._ready) {
|
|
523
|
-
throw new DeveloperError(
|
|
524
|
-
"orientedBoundingBox must not be called before the primitive is ready."
|
|
525
|
-
);
|
|
526
|
-
}
|
|
527
|
-
//>>includeEnd('debug');
|
|
528
|
-
|
|
529
|
-
return this._shape.orientedBoundingBox;
|
|
540
|
+
return this.shape.orientedBoundingBox;
|
|
530
541
|
},
|
|
531
542
|
},
|
|
532
543
|
|
|
@@ -556,19 +567,9 @@ Object.defineProperties(VoxelPrimitive.prototype, {
|
|
|
556
567
|
* @memberof VoxelPrimitive.prototype
|
|
557
568
|
* @type {VoxelShapeType}
|
|
558
569
|
* @readonly
|
|
559
|
-
*
|
|
560
|
-
* @exception {DeveloperError} If the primitive is not ready.
|
|
561
570
|
*/
|
|
562
571
|
shape: {
|
|
563
572
|
get: function () {
|
|
564
|
-
//>>includeStart('debug', pragmas.debug);
|
|
565
|
-
if (!this._ready) {
|
|
566
|
-
throw new DeveloperError(
|
|
567
|
-
"shape must not be called before the primitive is ready."
|
|
568
|
-
);
|
|
569
|
-
}
|
|
570
|
-
//>>includeEnd('debug');
|
|
571
|
-
|
|
572
573
|
return this._provider.shape;
|
|
573
574
|
},
|
|
574
575
|
},
|
|
@@ -579,19 +580,9 @@ Object.defineProperties(VoxelPrimitive.prototype, {
|
|
|
579
580
|
* @memberof VoxelPrimitive.prototype
|
|
580
581
|
* @type {Cartesian3}
|
|
581
582
|
* @readonly
|
|
582
|
-
*
|
|
583
|
-
* @exception {DeveloperError} If the primitive is not ready.
|
|
584
583
|
*/
|
|
585
584
|
dimensions: {
|
|
586
585
|
get: function () {
|
|
587
|
-
//>>includeStart('debug', pragmas.debug);
|
|
588
|
-
if (!this._ready) {
|
|
589
|
-
throw new DeveloperError(
|
|
590
|
-
"dimensions must not be called before the primitive is ready."
|
|
591
|
-
);
|
|
592
|
-
}
|
|
593
|
-
//>>includeEnd('debug');
|
|
594
|
-
|
|
595
586
|
return this._provider.dimensions;
|
|
596
587
|
},
|
|
597
588
|
},
|
|
@@ -602,19 +593,9 @@ Object.defineProperties(VoxelPrimitive.prototype, {
|
|
|
602
593
|
* @memberof VoxelPrimitive.prototype
|
|
603
594
|
* @type {number[][]}
|
|
604
595
|
* @readonly
|
|
605
|
-
*
|
|
606
|
-
* @exception {DeveloperError} If the primitive is not ready.
|
|
607
596
|
*/
|
|
608
597
|
minimumValues: {
|
|
609
598
|
get: function () {
|
|
610
|
-
//>>includeStart('debug', pragmas.debug);
|
|
611
|
-
if (!this._ready) {
|
|
612
|
-
throw new DeveloperError(
|
|
613
|
-
"minimumValues must not be called before the primitive is ready."
|
|
614
|
-
);
|
|
615
|
-
}
|
|
616
|
-
//>>includeEnd('debug');
|
|
617
|
-
|
|
618
599
|
return this._provider.minimumValues;
|
|
619
600
|
},
|
|
620
601
|
},
|
|
@@ -625,19 +606,9 @@ Object.defineProperties(VoxelPrimitive.prototype, {
|
|
|
625
606
|
* @memberof VoxelPrimitive.prototype
|
|
626
607
|
* @type {number[][]}
|
|
627
608
|
* @readonly
|
|
628
|
-
*
|
|
629
|
-
* @exception {DeveloperError} If the primitive is not ready.
|
|
630
609
|
*/
|
|
631
610
|
maximumValues: {
|
|
632
611
|
get: function () {
|
|
633
|
-
//>>includeStart('debug', pragmas.debug);
|
|
634
|
-
if (!this._ready) {
|
|
635
|
-
throw new DeveloperError(
|
|
636
|
-
"maximumValues must not be called before the primitive is ready."
|
|
637
|
-
);
|
|
638
|
-
}
|
|
639
|
-
//>>includeEnd('debug');
|
|
640
|
-
|
|
641
612
|
return this._provider.maximumValues;
|
|
642
613
|
},
|
|
643
614
|
},
|
|
@@ -1018,7 +989,8 @@ VoxelPrimitive.prototype.update = function (frameState) {
|
|
|
1018
989
|
this._customShader.update(frameState);
|
|
1019
990
|
|
|
1020
991
|
// Exit early if it's not ready yet.
|
|
1021
|
-
|
|
992
|
+
// This is here for backward compatibility. It can be removed when readyPromise is removed.
|
|
993
|
+
if ((defined(provider._ready) && !provider._ready) || !defined(this._shape)) {
|
|
1022
994
|
return;
|
|
1023
995
|
}
|
|
1024
996
|
|
|
@@ -1188,29 +1160,6 @@ function initFromProvider(primitive, provider, context) {
|
|
|
1188
1160
|
primitive._pickId = context.createPickId({ primitive });
|
|
1189
1161
|
uniforms.pickColor = Color.clone(primitive._pickId.color, uniforms.pickColor);
|
|
1190
1162
|
|
|
1191
|
-
// Set the bounds
|
|
1192
|
-
const {
|
|
1193
|
-
shape: shapeType,
|
|
1194
|
-
minBounds = VoxelShapeType.getMinBounds(shapeType),
|
|
1195
|
-
maxBounds = VoxelShapeType.getMaxBounds(shapeType),
|
|
1196
|
-
} = provider;
|
|
1197
|
-
|
|
1198
|
-
primitive.minBounds = minBounds;
|
|
1199
|
-
primitive.maxBounds = maxBounds;
|
|
1200
|
-
primitive.minClippingBounds = VoxelShapeType.getMinBounds(shapeType);
|
|
1201
|
-
primitive.maxClippingBounds = VoxelShapeType.getMaxBounds(shapeType);
|
|
1202
|
-
|
|
1203
|
-
checkTransformAndBounds(primitive, provider);
|
|
1204
|
-
|
|
1205
|
-
// Create the shape object, and update it so it is valid for VoxelTraversal
|
|
1206
|
-
const ShapeConstructor = VoxelShapeType.getShapeConstructor(shapeType);
|
|
1207
|
-
primitive._shape = new ShapeConstructor();
|
|
1208
|
-
primitive._shapeVisible = updateShapeAndTransforms(
|
|
1209
|
-
primitive,
|
|
1210
|
-
primitive._shape,
|
|
1211
|
-
provider
|
|
1212
|
-
);
|
|
1213
|
-
|
|
1214
1163
|
const { shaderDefines, shaderUniforms: shapeUniforms } = primitive._shape;
|
|
1215
1164
|
primitive._shapeDefinesOld = clone(shaderDefines, true);
|
|
1216
1165
|
|
|
@@ -1896,7 +1845,6 @@ VoxelPrimitive.DefaultCustomShader = new CustomShader({
|
|
|
1896
1845
|
|
|
1897
1846
|
function DefaultVoxelProvider() {
|
|
1898
1847
|
this.ready = true;
|
|
1899
|
-
this.readyPromise = Promise.resolve(this);
|
|
1900
1848
|
this.shape = VoxelShapeType.BOX;
|
|
1901
1849
|
this.dimensions = new Cartesian3(1, 1, 1);
|
|
1902
1850
|
this.names = ["data"];
|
|
@@ -24,6 +24,7 @@ Object.defineProperties(VoxelProvider.prototype, {
|
|
|
24
24
|
* @memberof VoxelProvider.prototype
|
|
25
25
|
* @type {boolean}
|
|
26
26
|
* @readonly
|
|
27
|
+
* @deprecated
|
|
27
28
|
*/
|
|
28
29
|
ready: {
|
|
29
30
|
get: DeveloperError.throwInstantiationError,
|
|
@@ -35,6 +36,7 @@ Object.defineProperties(VoxelProvider.prototype, {
|
|
|
35
36
|
* @memberof VoxelProvider.prototype
|
|
36
37
|
* @type {Promise<VoxelProvider>}
|
|
37
38
|
* @readonly
|
|
39
|
+
* @deprecated
|
|
38
40
|
*/
|
|
39
41
|
readyPromise: {
|
|
40
42
|
get: DeveloperError.throwInstantiationError,
|
|
@@ -247,8 +249,6 @@ Object.defineProperties(VoxelProvider.prototype, {
|
|
|
247
249
|
* @param {number} [options.tileZ=0] The tile's Z coordinate.
|
|
248
250
|
* @privateparam {number} [options.keyframe=0] The requested keyframe.
|
|
249
251
|
* @returns {Promise<Array[]>|undefined} A promise to an array of typed arrays containing the requested voxel data or undefined if there was a problem loading the data.
|
|
250
|
-
*
|
|
251
|
-
* @exception {DeveloperError} The provider must be ready.
|
|
252
252
|
*/
|
|
253
253
|
VoxelProvider.prototype.requestData = DeveloperError.throwInstantiationError;
|
|
254
254
|
|