@cesium/engine 2.1.0 → 2.3.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 (240) hide show
  1. package/Build/Workers/{AttributeCompression-8a5a065e.js → AttributeCompression-f9f6c717.js} +1 -1
  2. package/Build/Workers/{AxisAlignedBoundingBox-a6f9f0e5.js → AxisAlignedBoundingBox-31fadcf0.js} +1 -1
  3. package/Build/Workers/{BoundingRectangle-b0a68595.js → BoundingRectangle-995f0079.js} +1 -1
  4. package/Build/Workers/{BoxGeometry-baedd794.js → BoxGeometry-7eb1af60.js} +1 -1
  5. package/Build/Workers/{Color-f85df1be.js → Color-2dc49658.js} +1 -1
  6. package/Build/Workers/{CoplanarPolygonGeometryLibrary-30516950.js → CoplanarPolygonGeometryLibrary-d7d972d6.js} +1 -1
  7. package/Build/Workers/{CorridorGeometryLibrary-5d5d3b3a.js → CorridorGeometryLibrary-1f5ef7b3.js} +1 -1
  8. package/Build/Workers/{CylinderGeometry-d899ae26.js → CylinderGeometry-23c67a6c.js} +1 -1
  9. package/Build/Workers/{CylinderGeometryLibrary-135b0858.js → CylinderGeometryLibrary-7bf291b4.js} +1 -1
  10. package/Build/Workers/{EllipseGeometry-a49f8449.js → EllipseGeometry-37014da4.js} +1 -1
  11. package/Build/Workers/{EllipseGeometryLibrary-cba7edde.js → EllipseGeometryLibrary-92ab6b1e.js} +1 -1
  12. package/Build/Workers/{EllipseOutlineGeometry-8095c8cb.js → EllipseOutlineGeometry-12b6fef5.js} +1 -1
  13. package/Build/Workers/{EllipsoidGeodesic-dcff5cbd.js → EllipsoidGeodesic-5b3623dc.js} +1 -1
  14. package/Build/Workers/{EllipsoidGeometry-ed93f571.js → EllipsoidGeometry-508da15c.js} +1 -1
  15. package/Build/Workers/{EllipsoidOutlineGeometry-e4854854.js → EllipsoidOutlineGeometry-40d97455.js} +1 -1
  16. package/Build/Workers/{EllipsoidRhumbLine-b672d507.js → EllipsoidRhumbLine-ef872433.js} +1 -1
  17. package/Build/Workers/{EllipsoidTangentPlane-7ae1aa9a.js → EllipsoidTangentPlane-46d4d9c2.js} +1 -1
  18. package/Build/Workers/{EncodedCartesian3-e8bbca36.js → EncodedCartesian3-57415c8a.js} +1 -1
  19. package/Build/Workers/{FrustumGeometry-b62db3e3.js → FrustumGeometry-38605e69.js} +32 -4
  20. package/Build/Workers/{GeometryAttribute-780af4fa.js → GeometryAttribute-a466e9c7.js} +1 -1
  21. package/Build/Workers/{GeometryInstance-3fb607b7.js → GeometryInstance-34d9e21e.js} +1 -1
  22. package/Build/Workers/{GeometryPipeline-36b61c99.js → GeometryPipeline-dcf79306.js} +1 -1
  23. package/Build/Workers/{IndexDatatype-b8f3e09d.js → IndexDatatype-2643aa47.js} +1 -1
  24. package/Build/Workers/{IntersectionTests-e889fcf0.js → IntersectionTests-88c49b2e.js} +1 -1
  25. package/Build/Workers/{Math-dad82b4d.js → Math-0a2ac845.js} +12 -2
  26. package/Build/Workers/{Matrix2-1e403d0e.js → Matrix2-e1298525.js} +1 -1
  27. package/Build/Workers/{Matrix3-fa806b97.js → Matrix3-41c58dde.js} +1 -1
  28. package/Build/Workers/{OrientedBoundingBox-43478ac8.js → OrientedBoundingBox-2dd47921.js} +5 -3
  29. package/Build/Workers/{Plane-c27e1ac6.js → Plane-4c3d403b.js} +1 -1
  30. package/Build/Workers/{PolygonGeometryLibrary-38a98276.js → PolygonGeometryLibrary-59126025.js} +1 -1
  31. package/Build/Workers/PolygonPipeline-1fe328c0.js +1344 -0
  32. package/Build/Workers/{PolylinePipeline-30e4cec9.js → PolylinePipeline-896735cc.js} +1 -1
  33. package/Build/Workers/{PolylineVolumeGeometryLibrary-90551d26.js → PolylineVolumeGeometryLibrary-9c0639f7.js} +1 -1
  34. package/Build/Workers/{PrimitivePipeline-558d9cb0.js → PrimitivePipeline-fc1a47ff.js} +1 -1
  35. package/Build/Workers/{RectangleGeometryLibrary-815c68df.js → RectangleGeometryLibrary-a23c9ebe.js} +1 -1
  36. package/Build/Workers/{TerrainEncoding-341ead52.js → TerrainEncoding-51b8b33b.js} +1 -1
  37. package/Build/Workers/Transforms-bc45e707.js +14699 -0
  38. package/Build/Workers/{WallGeometryLibrary-ccf90976.js → WallGeometryLibrary-007e9883.js} +1 -1
  39. package/Build/Workers/{WebMercatorProjection-76a3fcc0.js → WebMercatorProjection-13ed1a6e.js} +1 -1
  40. package/Build/Workers/{arrayRemoveDuplicates-fac118a8.js → arrayRemoveDuplicates-d2061e85.js} +1 -1
  41. package/Build/Workers/cesiumWorkerBootstrapper.js +1 -1
  42. package/Build/Workers/combineGeometry.js +1 -1
  43. package/Build/Workers/createBoxGeometry.js +1 -1
  44. package/Build/Workers/createBoxOutlineGeometry.js +1 -1
  45. package/Build/Workers/createCircleGeometry.js +1 -1
  46. package/Build/Workers/createCircleOutlineGeometry.js +1 -1
  47. package/Build/Workers/createCoplanarPolygonGeometry.js +1 -1
  48. package/Build/Workers/createCoplanarPolygonOutlineGeometry.js +1 -1
  49. package/Build/Workers/createCorridorGeometry.js +1 -1
  50. package/Build/Workers/createCorridorOutlineGeometry.js +1 -1
  51. package/Build/Workers/createCylinderGeometry.js +1 -1
  52. package/Build/Workers/createCylinderOutlineGeometry.js +1 -1
  53. package/Build/Workers/createEllipseGeometry.js +1 -1
  54. package/Build/Workers/createEllipseOutlineGeometry.js +1 -1
  55. package/Build/Workers/createEllipsoidGeometry.js +1 -1
  56. package/Build/Workers/createEllipsoidOutlineGeometry.js +1 -1
  57. package/Build/Workers/createFrustumGeometry.js +1 -1
  58. package/Build/Workers/createFrustumOutlineGeometry.js +1 -1
  59. package/Build/Workers/createGeometry.js +1 -1
  60. package/Build/Workers/createGroundPolylineGeometry.js +1 -1
  61. package/Build/Workers/createPlaneGeometry.js +1 -1
  62. package/Build/Workers/createPlaneOutlineGeometry.js +1 -1
  63. package/Build/Workers/createPolygonGeometry.js +1 -1
  64. package/Build/Workers/createPolygonOutlineGeometry.js +1 -1
  65. package/Build/Workers/createPolylineGeometry.js +1 -1
  66. package/Build/Workers/createPolylineVolumeGeometry.js +1 -1
  67. package/Build/Workers/createPolylineVolumeOutlineGeometry.js +1 -1
  68. package/Build/Workers/createRectangleGeometry.js +1 -1
  69. package/Build/Workers/createRectangleOutlineGeometry.js +1 -1
  70. package/Build/Workers/createSimplePolylineGeometry.js +1 -1
  71. package/Build/Workers/createSphereGeometry.js +1 -1
  72. package/Build/Workers/createSphereOutlineGeometry.js +1 -1
  73. package/Build/Workers/createVectorTileClampedPolylines.js +1 -1
  74. package/Build/Workers/createVectorTileGeometries.js +1 -1
  75. package/Build/Workers/createVectorTilePoints.js +1 -1
  76. package/Build/Workers/createVectorTilePolygons.js +1 -1
  77. package/Build/Workers/createVectorTilePolylines.js +1 -1
  78. package/Build/Workers/createVerticesFromGoogleEarthEnterpriseBuffer.js +1 -1
  79. package/Build/Workers/createVerticesFromHeightmap.js +5 -8
  80. package/Build/Workers/createVerticesFromQuantizedTerrainMesh.js +10 -15
  81. package/Build/Workers/createWallGeometry.js +1 -1
  82. package/Build/Workers/createWallOutlineGeometry.js +1 -1
  83. package/Build/Workers/decodeDraco.js +1 -1
  84. package/Build/Workers/decodeI3S.js +1 -1
  85. package/Build/Workers/package.js +1 -1
  86. package/Build/Workers/transferTypedArrayTest.js +1 -1
  87. package/Build/Workers/upsampleQuantizedTerrainMesh.js +1 -1
  88. package/Source/Core/ArcGISTiledElevationTerrainProvider.js +291 -191
  89. package/Source/Core/BingMapsGeocoderService.js +19 -1
  90. package/Source/Core/CartographicGeocoderService.js +15 -0
  91. package/Source/Core/CesiumTerrainProvider.js +571 -434
  92. package/Source/Core/Credit.js +1 -1
  93. package/Source/Core/CustomHeightmapTerrainProvider.js +12 -0
  94. package/Source/Core/EllipsoidTerrainProvider.js +17 -10
  95. package/Source/Core/FrustumGeometry.js +4 -3
  96. package/Source/Core/GeocoderService.js +32 -1
  97. package/Source/Core/GoogleEarthEnterpriseMetadata.js +86 -34
  98. package/Source/Core/GoogleEarthEnterpriseTerrainProvider.js +119 -82
  99. package/Source/Core/Ion.js +1 -1
  100. package/Source/Core/IonGeocoderService.js +17 -2
  101. package/Source/Core/IonResource.js +14 -3
  102. package/Source/Core/OpenCageGeocoderService.js +18 -1
  103. package/Source/Core/OrientedBoundingBox.js +4 -2
  104. package/Source/Core/OrthographicFrustum.js +13 -0
  105. package/Source/Core/PeliasGeocoderService.js +14 -1
  106. package/Source/Core/PerspectiveFrustum.js +14 -0
  107. package/Source/Core/Request.js +3 -2
  108. package/Source/Core/RequestScheduler.js +10 -5
  109. package/Source/Core/Resource.js +230 -236
  110. package/Source/Core/TerrainProvider.js +9 -14
  111. package/Source/Core/TileProviderError.js +8 -8
  112. package/Source/Core/VRTheWorldTerrainProvider.js +193 -124
  113. package/Source/Core/buildModuleUrl.js +4 -3
  114. package/Source/Core/createWorldTerrain.js +20 -2
  115. package/Source/Core/createWorldTerrainAsync.js +48 -0
  116. package/Source/Core/sampleTerrain.js +9 -10
  117. package/Source/Core/sampleTerrainMostDetailed.js +66 -72
  118. package/Source/DataSources/Cesium3DTilesetVisualizer.js +37 -26
  119. package/Source/DataSources/DataSourceDisplay.js +2 -2
  120. package/Source/DataSources/Entity.js +6 -1
  121. package/Source/DataSources/EntityCluster.js +126 -128
  122. package/Source/DataSources/ModelVisualizer.js +104 -34
  123. package/Source/DataSources/PolygonGraphics.js +1 -1
  124. package/Source/Renderer/UniformState.js +3 -2
  125. package/Source/Renderer/demodernizeShader.js +5 -5
  126. package/Source/Scene/ArcGisBaseMapType.js +12 -0
  127. package/Source/Scene/ArcGisMapServerImageryProvider.js +694 -376
  128. package/Source/Scene/ArcGisMapService.js +83 -0
  129. package/Source/Scene/BingMapsImageryProvider.js +511 -305
  130. package/Source/Scene/BufferLoader.js +29 -34
  131. package/Source/Scene/Camera.js +8 -7
  132. package/Source/Scene/Cesium3DTile.js +392 -254
  133. package/Source/Scene/Cesium3DTileBatchTable.js +2 -2
  134. package/Source/Scene/Cesium3DTileContent.js +16 -0
  135. package/Source/Scene/Cesium3DTileContentFactory.js +4 -4
  136. package/Source/Scene/Cesium3DTilePass.js +8 -11
  137. package/Source/Scene/Cesium3DTileStyleEngine.js +1 -1
  138. package/Source/Scene/Cesium3DTilesVoxelProvider.js +225 -117
  139. package/Source/Scene/Cesium3DTileset.js +756 -482
  140. package/Source/Scene/Cesium3DTilesetBaseTraversal.js +301 -0
  141. package/Source/Scene/Cesium3DTilesetMostDetailedTraversal.js +33 -46
  142. package/Source/Scene/Cesium3DTilesetSkipTraversal.js +421 -0
  143. package/Source/Scene/Cesium3DTilesetTraversal.js +219 -671
  144. package/Source/Scene/ClassificationPrimitive.js +7 -0
  145. package/Source/Scene/Composite3DTileContent.js +69 -26
  146. package/Source/Scene/CreditDisplay.js +132 -20
  147. package/Source/Scene/DepthPlane.js +1 -1
  148. package/Source/Scene/Empty3DTileContent.js +31 -1
  149. package/Source/Scene/Geometry3DTileContent.js +47 -7
  150. package/Source/Scene/Globe.js +5 -1
  151. package/Source/Scene/GlobeSurfaceTile.js +2 -1
  152. package/Source/Scene/GlobeSurfaceTileProvider.js +53 -30
  153. package/Source/Scene/GltfBufferViewLoader.js +47 -91
  154. package/Source/Scene/GltfDracoLoader.js +110 -112
  155. package/Source/Scene/GltfImageLoader.js +71 -78
  156. package/Source/Scene/GltfIndexBufferLoader.js +108 -121
  157. package/Source/Scene/GltfJsonLoader.js +87 -74
  158. package/Source/Scene/GltfLoader.js +381 -300
  159. package/Source/Scene/GltfStructuralMetadataLoader.js +109 -110
  160. package/Source/Scene/GltfTextureLoader.js +97 -96
  161. package/Source/Scene/GltfVertexBufferLoader.js +128 -133
  162. package/Source/Scene/GoogleEarthEnterpriseImageryProvider.js +353 -225
  163. package/Source/Scene/GoogleEarthEnterpriseMapsProvider.js +491 -331
  164. package/Source/Scene/GridImageryProvider.js +267 -104
  165. package/Source/Scene/GroundPolylinePrimitive.js +12 -1
  166. package/Source/Scene/GroundPrimitive.js +8 -1
  167. package/Source/Scene/I3SDataProvider.js +214 -113
  168. package/Source/Scene/I3SFeature.js +7 -6
  169. package/Source/Scene/I3SLayer.js +26 -37
  170. package/Source/Scene/I3SNode.js +59 -66
  171. package/Source/Scene/Imagery.js +6 -1
  172. package/Source/Scene/ImageryLayer.js +299 -48
  173. package/Source/Scene/ImageryLayerCollection.js +26 -0
  174. package/Source/Scene/ImageryProvider.js +129 -111
  175. package/Source/Scene/Implicit3DTileContent.js +72 -23
  176. package/Source/Scene/ImplicitSubtree.js +66 -45
  177. package/Source/Scene/IonImageryProvider.js +482 -275
  178. package/Source/Scene/MapboxImageryProvider.js +272 -112
  179. package/Source/Scene/MapboxStyleImageryProvider.js +270 -111
  180. package/Source/Scene/MetadataSchemaLoader.js +26 -36
  181. package/Source/Scene/Model/B3dmLoader.js +42 -46
  182. package/Source/Scene/Model/GeoJsonLoader.js +8 -32
  183. package/Source/Scene/Model/I3dmLoader.js +48 -74
  184. package/Source/Scene/Model/MaterialPipelineStage.js +12 -12
  185. package/Source/Scene/Model/Model.js +514 -135
  186. package/Source/Scene/Model/Model3DTileContent.js +83 -31
  187. package/Source/Scene/Model/ModelAnimationCollection.js +3 -3
  188. package/Source/Scene/Model/ModelDrawCommand.js +15 -26
  189. package/Source/Scene/Model/ModelUtility.js +16 -16
  190. package/Source/Scene/Model/PntsLoader.js +27 -32
  191. package/Source/Scene/Model/UniformType.js +1 -1
  192. package/Source/Scene/Multiple3DTileContent.js +134 -115
  193. package/Source/Scene/Picking.js +3 -2
  194. package/Source/Scene/PointCloud.js +11 -19
  195. package/Source/Scene/Primitive.js +20 -0
  196. package/Source/Scene/QuadtreePrimitive.js +5 -2
  197. package/Source/Scene/QuadtreeTileProvider.js +4 -8
  198. package/Source/Scene/ResourceCache.js +47 -105
  199. package/Source/Scene/ResourceCacheStatistics.js +24 -58
  200. package/Source/Scene/ResourceLoader.js +5 -17
  201. package/Source/Scene/ResourceLoaderState.js +12 -4
  202. package/Source/Scene/Scene.js +65 -0
  203. package/Source/Scene/SceneTransforms.js +3 -2
  204. package/Source/Scene/ScreenSpaceCameraController.js +2 -2
  205. package/Source/Scene/SingleTileImageryProvider.js +382 -209
  206. package/Source/Scene/Terrain.js +196 -0
  207. package/Source/Scene/TileCoordinatesImageryProvider.js +267 -104
  208. package/Source/Scene/TileMapServiceImageryProvider.js +177 -85
  209. package/Source/Scene/Tileset3DTileContent.js +47 -5
  210. package/Source/Scene/TimeDynamicPointCloud.js +15 -2
  211. package/Source/Scene/UrlTemplateImageryProvider.js +343 -215
  212. package/Source/Scene/Vector3DTileClampedPolylines.js +96 -84
  213. package/Source/Scene/Vector3DTileContent.js +47 -22
  214. package/Source/Scene/Vector3DTileGeometry.js +57 -52
  215. package/Source/Scene/Vector3DTilePoints.js +97 -81
  216. package/Source/Scene/Vector3DTilePolygons.js +118 -117
  217. package/Source/Scene/Vector3DTilePolylines.js +86 -82
  218. package/Source/Scene/Vector3DTilePrimitive.js +0 -1
  219. package/Source/Scene/VoxelContent.js +61 -63
  220. package/Source/Scene/VoxelPrimitive.js +39 -91
  221. package/Source/Scene/VoxelProvider.js +2 -2
  222. package/Source/Scene/WebMapServiceImageryProvider.js +272 -111
  223. package/Source/Scene/WebMapTileServiceImageryProvider.js +270 -107
  224. package/Source/Scene/computeFlyToLocationForRectangle.js +33 -37
  225. package/Source/Scene/createOsmBuildings.js +6 -0
  226. package/Source/Scene/createOsmBuildingsAsync.js +82 -0
  227. package/Source/Scene/createWorldImagery.js +14 -5
  228. package/Source/Scene/createWorldImageryAsync.js +39 -0
  229. package/Source/Shaders/AtmosphereCommon.glsl +51 -8
  230. package/Source/Shaders/AtmosphereCommon.js +51 -8
  231. package/Source/Shaders/PostProcessStages/AmbientOcclusionGenerate.glsl +1 -1
  232. package/Source/Shaders/PostProcessStages/AmbientOcclusionGenerate.js +1 -1
  233. package/Source/Shaders/PostProcessStages/AmbientOcclusionModulate.glsl +3 -3
  234. package/Source/Shaders/PostProcessStages/AmbientOcclusionModulate.js +3 -3
  235. package/Source/Widget/CesiumWidget.js +67 -27
  236. package/index.d.ts +2429 -1475
  237. package/index.js +324 -315
  238. package/package.json +4 -4
  239. package/Build/Workers/PolygonPipeline-d31ff61c.js +0 -1345
  240. package/Build/Workers/Transforms-9e9df299.js +0 -14714
@@ -52,15 +52,29 @@ function Vector3DTilePoints(options) {
52
52
  this._polylineCollection = new PolylineCollection();
53
53
  this._polylineCollection._useHighlightColor = true;
54
54
 
55
- this._verticesPromise = undefined;
56
55
  this._packedBuffer = undefined;
57
56
 
58
57
  this._ready = false;
59
- this._update = function (points, frameState) {};
60
- this._readyPromise = initialize(this);
58
+ this._promise = undefined;
59
+ this._error = undefined;
61
60
  }
62
61
 
63
62
  Object.defineProperties(Vector3DTilePoints.prototype, {
63
+ /**
64
+ * Returns true if the points are ready to render
65
+ *
66
+ * @memberof Vector3DTilePoints.prototype
67
+ *
68
+ * @type {boolean}
69
+ * @readonly
70
+ * @private
71
+ */
72
+ ready: {
73
+ get: function () {
74
+ return this._ready;
75
+ },
76
+ },
77
+
64
78
  /**
65
79
  * Gets the number of points.
66
80
  *
@@ -68,6 +82,7 @@ Object.defineProperties(Vector3DTilePoints.prototype, {
68
82
  *
69
83
  * @type {number}
70
84
  * @readonly
85
+ * @private
71
86
  */
72
87
  pointsLength: {
73
88
  get: function () {
@@ -82,6 +97,7 @@ Object.defineProperties(Vector3DTilePoints.prototype, {
82
97
  *
83
98
  * @type {number}
84
99
  * @readonly
100
+ * @private
85
101
  */
86
102
  texturesByteLength: {
87
103
  get: function () {
@@ -91,18 +107,6 @@ Object.defineProperties(Vector3DTilePoints.prototype, {
91
107
  return billboardSize + labelSize;
92
108
  },
93
109
  },
94
-
95
- /**
96
- * Gets a promise that resolves when the primitive is ready to render.
97
- * @memberof Vector3DTilePoints.prototype
98
- * @type {Promise<void>}
99
- * @readonly
100
- */
101
- readyPromise: {
102
- get: function () {
103
- return this._readyPromise;
104
- },
105
- },
106
110
  });
107
111
 
108
112
  function packBuffer(points, ellipsoid) {
@@ -132,35 +136,38 @@ const createVerticesTaskProcessor = new TaskProcessor(
132
136
  const scratchPosition = new Cartesian3();
133
137
 
134
138
  function createPoints(points, ellipsoid) {
135
- let positions;
136
- if (!defined(points._verticesPromise)) {
137
- positions = points._positions;
138
- let packedBuffer = points._packedBuffer;
139
+ let positions = points._positions;
140
+ let packedBuffer = points._packedBuffer;
139
141
 
140
- if (!defined(packedBuffer)) {
141
- // Copy because they may be the views on the same buffer.
142
- positions = points._positions = positions.slice();
143
- points._batchIds = points._batchIds.slice();
142
+ if (!defined(packedBuffer)) {
143
+ // Copy because they may be the views on the same buffer.
144
+ positions = points._positions = positions.slice();
145
+ points._batchIds = points._batchIds.slice();
144
146
 
145
- packedBuffer = points._packedBuffer = packBuffer(points, ellipsoid);
146
- }
147
+ packedBuffer = points._packedBuffer = packBuffer(points, ellipsoid);
148
+ }
147
149
 
148
- const transferrableObjects = [positions.buffer, packedBuffer.buffer];
149
- const parameters = {
150
- positions: positions.buffer,
151
- packedBuffer: packedBuffer.buffer,
152
- };
153
-
154
- const verticesPromise = (points._verticesPromise = createVerticesTaskProcessor.scheduleTask(
155
- parameters,
156
- transferrableObjects
157
- ));
158
- if (!defined(verticesPromise)) {
159
- // Postponed
160
- return;
161
- }
150
+ const transferrableObjects = [positions.buffer, packedBuffer.buffer];
151
+ const parameters = {
152
+ positions: positions.buffer,
153
+ packedBuffer: packedBuffer.buffer,
154
+ };
155
+
156
+ const verticesPromise = createVerticesTaskProcessor.scheduleTask(
157
+ parameters,
158
+ transferrableObjects
159
+ );
160
+ if (!defined(verticesPromise)) {
161
+ // Postponed
162
+ return;
163
+ }
164
+
165
+ return verticesPromise
166
+ .then((result) => {
167
+ if (points.isDestroyed()) {
168
+ return;
169
+ }
162
170
 
163
- return verticesPromise.then(function (result) {
164
171
  points._positions = new Float64Array(result.positions);
165
172
  const billboardCollection = points._billboardCollection;
166
173
  const labelCollection = points._labelCollection;
@@ -190,8 +197,15 @@ function createPoints(points, ellipsoid) {
190
197
  points._positions = undefined;
191
198
  points._packedBuffer = undefined;
192
199
  points._ready = true;
200
+ })
201
+ .catch((error) => {
202
+ if (points.isDestroyed()) {
203
+ return;
204
+ }
205
+
206
+ // Throw the error next frame
207
+ points._error = error;
193
208
  });
194
- }
195
209
  }
196
210
 
197
211
  /**
@@ -380,11 +394,15 @@ Vector3DTilePoints.prototype.applyStyle = function (style, features) {
380
394
 
381
395
  if (defined(style.scaleByDistance)) {
382
396
  const scaleByDistanceCart4 = style.scaleByDistance.evaluate(feature);
383
- scratchScaleByDistance.near = scaleByDistanceCart4.x;
384
- scratchScaleByDistance.nearValue = scaleByDistanceCart4.y;
385
- scratchScaleByDistance.far = scaleByDistanceCart4.z;
386
- scratchScaleByDistance.farValue = scaleByDistanceCart4.w;
387
- feature.scaleByDistance = scratchScaleByDistance;
397
+ if (defined(scaleByDistanceCart4)) {
398
+ scratchScaleByDistance.near = scaleByDistanceCart4.x;
399
+ scratchScaleByDistance.nearValue = scaleByDistanceCart4.y;
400
+ scratchScaleByDistance.far = scaleByDistanceCart4.z;
401
+ scratchScaleByDistance.farValue = scaleByDistanceCart4.w;
402
+ feature.scaleByDistance = scratchScaleByDistance;
403
+ } else {
404
+ feature.scaleByDistance = undefined;
405
+ }
388
406
  } else {
389
407
  feature.scaleByDistance = undefined;
390
408
  }
@@ -393,11 +411,15 @@ Vector3DTilePoints.prototype.applyStyle = function (style, features) {
393
411
  const translucencyByDistanceCart4 = style.translucencyByDistance.evaluate(
394
412
  feature
395
413
  );
396
- scratchTranslucencyByDistance.near = translucencyByDistanceCart4.x;
397
- scratchTranslucencyByDistance.nearValue = translucencyByDistanceCart4.y;
398
- scratchTranslucencyByDistance.far = translucencyByDistanceCart4.z;
399
- scratchTranslucencyByDistance.farValue = translucencyByDistanceCart4.w;
400
- feature.translucencyByDistance = scratchTranslucencyByDistance;
414
+ if (defined(translucencyByDistanceCart4)) {
415
+ scratchTranslucencyByDistance.near = translucencyByDistanceCart4.x;
416
+ scratchTranslucencyByDistance.nearValue = translucencyByDistanceCart4.y;
417
+ scratchTranslucencyByDistance.far = translucencyByDistanceCart4.z;
418
+ scratchTranslucencyByDistance.farValue = translucencyByDistanceCart4.w;
419
+ feature.translucencyByDistance = scratchTranslucencyByDistance;
420
+ } else {
421
+ feature.translucencyByDistance = undefined;
422
+ }
401
423
  } else {
402
424
  feature.translucencyByDistance = undefined;
403
425
  }
@@ -406,9 +428,13 @@ Vector3DTilePoints.prototype.applyStyle = function (style, features) {
406
428
  const distanceDisplayConditionCart2 = style.distanceDisplayCondition.evaluate(
407
429
  feature
408
430
  );
409
- scratchDistanceDisplayCondition.near = distanceDisplayConditionCart2.x;
410
- scratchDistanceDisplayCondition.far = distanceDisplayConditionCart2.y;
411
- feature.distanceDisplayCondition = scratchDistanceDisplayCondition;
431
+ if (defined(distanceDisplayConditionCart2)) {
432
+ scratchDistanceDisplayCondition.near = distanceDisplayConditionCart2.x;
433
+ scratchDistanceDisplayCondition.far = distanceDisplayConditionCart2.y;
434
+ feature.distanceDisplayCondition = scratchDistanceDisplayCondition;
435
+ } else {
436
+ feature.distanceDisplayCondition = undefined;
437
+ }
412
438
  } else {
413
439
  feature.distanceDisplayCondition = undefined;
414
440
  }
@@ -460,37 +486,27 @@ Vector3DTilePoints.prototype.applyStyle = function (style, features) {
460
486
  }
461
487
  };
462
488
 
463
- function initialize(points) {
464
- return new Promise(function (resolve, reject) {
465
- points._update = function (points, frameState) {
466
- const promise = createPoints(points, frameState.mapProjection.ellipsoid);
467
-
468
- if (points._ready) {
469
- points._polylineCollection.update(frameState);
470
- points._billboardCollection.update(frameState);
471
- points._labelCollection.update(frameState);
472
- }
473
-
474
- if (!defined(promise)) {
475
- return;
476
- }
477
-
478
- promise
479
- .then(function () {
480
- resolve();
481
- })
482
- .catch(function (e) {
483
- reject(e);
484
- });
485
- };
486
- });
487
- }
488
-
489
489
  /**
490
490
  * @private
491
491
  */
492
492
  Vector3DTilePoints.prototype.update = function (frameState) {
493
- this._update(this, frameState);
493
+ if (!this._ready) {
494
+ if (!defined(this._promise)) {
495
+ this._promise = createPoints(this, frameState.mapProjection.ellipsoid);
496
+ }
497
+
498
+ if (defined(this._error)) {
499
+ const error = this._error;
500
+ this._error = undefined;
501
+ throw error;
502
+ }
503
+
504
+ return;
505
+ }
506
+
507
+ this._polylineCollection.update(frameState);
508
+ this._billboardCollection.update(frameState);
509
+ this._labelCollection.update(frameState);
494
510
  };
495
511
 
496
512
  /**
@@ -40,8 +40,7 @@ import Vector3DTilePrimitive from "./Vector3DTilePrimitive.js";
40
40
  * @private
41
41
  */
42
42
  function Vector3DTilePolygons(options) {
43
- // All of the private properties will be released except _readyPromise
44
- // and _primitive after the Vector3DTilePrimitive is created.
43
+ // All of the private properties will be released except _primitive after the Vector3DTilePrimitive is created.
45
44
  this._batchTable = options.batchTable;
46
45
 
47
46
  this._batchIds = options.batchIds;
@@ -75,10 +74,8 @@ function Vector3DTilePolygons(options) {
75
74
  this._batchedIndices = undefined;
76
75
 
77
76
  this._ready = false;
78
- this._update = function (polygons, frameState) {};
79
- this._readyPromise = initialize(this);
80
- this._verticesPromise = undefined;
81
-
77
+ this._promise = undefined;
78
+ this._error = undefined;
82
79
  this._primitive = undefined;
83
80
 
84
81
  /**
@@ -111,6 +108,7 @@ Object.defineProperties(Vector3DTilePolygons.prototype, {
111
108
  *
112
109
  * @type {number}
113
110
  * @readonly
111
+ * @private
114
112
  */
115
113
  trianglesLength: {
116
114
  get: function () {
@@ -128,6 +126,7 @@ Object.defineProperties(Vector3DTilePolygons.prototype, {
128
126
  *
129
127
  * @type {number}
130
128
  * @readonly
129
+ * @private
131
130
  */
132
131
  geometryByteLength: {
133
132
  get: function () {
@@ -139,14 +138,15 @@ Object.defineProperties(Vector3DTilePolygons.prototype, {
139
138
  },
140
139
 
141
140
  /**
142
- * Gets a promise that resolves when the primitive is ready to render.
141
+ * Returns true when the primitive is ready to render.
143
142
  * @memberof Vector3DTilePolygons.prototype
144
- * @type {Promise<void>}
143
+ * @type {boolean}
145
144
  * @readonly
145
+ * @private
146
146
  */
147
- readyPromise: {
147
+ ready: {
148
148
  get: function () {
149
- return this._readyPromise;
149
+ return this._ready;
150
150
  },
151
151
  },
152
152
  });
@@ -224,85 +224,89 @@ function createPrimitive(polygons) {
224
224
  return;
225
225
  }
226
226
 
227
- if (!defined(polygons._verticesPromise)) {
228
- let positions = polygons._positions;
229
- let counts = polygons._counts;
230
- let indexCounts = polygons._indexCounts;
231
- let indices = polygons._indices;
232
-
233
- let batchIds = polygons._transferrableBatchIds;
234
- let batchTableColors = polygons._batchTableColors;
235
-
236
- let packedBuffer = polygons._packedBuffer;
237
-
238
- if (!defined(batchTableColors)) {
239
- // Copy because they may be the views on the same buffer.
240
- positions = polygons._positions = polygons._positions.slice();
241
- counts = polygons._counts = polygons._counts.slice();
242
- indexCounts = polygons._indexCounts = polygons._indexCounts.slice();
243
- indices = polygons._indices = polygons._indices.slice();
244
-
245
- polygons._center = polygons._ellipsoid.cartographicToCartesian(
246
- Rectangle.center(polygons._rectangle)
247
- );
248
-
249
- batchIds = polygons._transferrableBatchIds = new Uint32Array(
250
- polygons._batchIds
251
- );
252
- batchTableColors = polygons._batchTableColors = new Uint32Array(
253
- batchIds.length
254
- );
255
- const batchTable = polygons._batchTable;
256
-
257
- const length = batchTableColors.length;
258
- for (let i = 0; i < length; ++i) {
259
- const color = batchTable.getColor(i, scratchColor);
260
- batchTableColors[i] = color.toRgba();
261
- }
262
-
263
- packedBuffer = polygons._packedBuffer = packBuffer(polygons);
227
+ let positions = polygons._positions;
228
+ let counts = polygons._counts;
229
+ let indexCounts = polygons._indexCounts;
230
+ let indices = polygons._indices;
231
+
232
+ let batchIds = polygons._transferrableBatchIds;
233
+ let batchTableColors = polygons._batchTableColors;
234
+
235
+ let packedBuffer = polygons._packedBuffer;
236
+
237
+ if (!defined(batchTableColors)) {
238
+ // Copy because they may be the views on the same buffer.
239
+ positions = polygons._positions = polygons._positions.slice();
240
+ counts = polygons._counts = polygons._counts.slice();
241
+ indexCounts = polygons._indexCounts = polygons._indexCounts.slice();
242
+ indices = polygons._indices = polygons._indices.slice();
243
+
244
+ polygons._center = polygons._ellipsoid.cartographicToCartesian(
245
+ Rectangle.center(polygons._rectangle)
246
+ );
247
+
248
+ batchIds = polygons._transferrableBatchIds = new Uint32Array(
249
+ polygons._batchIds
250
+ );
251
+ batchTableColors = polygons._batchTableColors = new Uint32Array(
252
+ batchIds.length
253
+ );
254
+ const batchTable = polygons._batchTable;
255
+
256
+ const length = batchTableColors.length;
257
+ for (let i = 0; i < length; ++i) {
258
+ const color = batchTable.getColor(i, scratchColor);
259
+ batchTableColors[i] = color.toRgba();
264
260
  }
265
261
 
266
- const transferrableObjects = [
267
- positions.buffer,
268
- counts.buffer,
269
- indexCounts.buffer,
270
- indices.buffer,
271
- batchIds.buffer,
272
- batchTableColors.buffer,
273
- packedBuffer.buffer,
274
- ];
275
- const parameters = {
276
- packedBuffer: packedBuffer.buffer,
277
- positions: positions.buffer,
278
- counts: counts.buffer,
279
- indexCounts: indexCounts.buffer,
280
- indices: indices.buffer,
281
- batchIds: batchIds.buffer,
282
- batchTableColors: batchTableColors.buffer,
283
- };
284
-
285
- let minimumHeights = polygons._polygonMinimumHeights;
286
- let maximumHeights = polygons._polygonMaximumHeights;
287
- if (defined(minimumHeights) && defined(maximumHeights)) {
288
- minimumHeights = minimumHeights.slice();
289
- maximumHeights = maximumHeights.slice();
290
-
291
- transferrableObjects.push(minimumHeights.buffer, maximumHeights.buffer);
292
- parameters.minimumHeights = minimumHeights;
293
- parameters.maximumHeights = maximumHeights;
294
- }
262
+ packedBuffer = polygons._packedBuffer = packBuffer(polygons);
263
+ }
295
264
 
296
- const verticesPromise = (polygons._verticesPromise = createVerticesTaskProcessor.scheduleTask(
297
- parameters,
298
- transferrableObjects
299
- ));
300
- if (!defined(verticesPromise)) {
301
- // Postponed
302
- return;
303
- }
265
+ const transferrableObjects = [
266
+ positions.buffer,
267
+ counts.buffer,
268
+ indexCounts.buffer,
269
+ indices.buffer,
270
+ batchIds.buffer,
271
+ batchTableColors.buffer,
272
+ packedBuffer.buffer,
273
+ ];
274
+ const parameters = {
275
+ packedBuffer: packedBuffer.buffer,
276
+ positions: positions.buffer,
277
+ counts: counts.buffer,
278
+ indexCounts: indexCounts.buffer,
279
+ indices: indices.buffer,
280
+ batchIds: batchIds.buffer,
281
+ batchTableColors: batchTableColors.buffer,
282
+ };
283
+
284
+ let minimumHeights = polygons._polygonMinimumHeights;
285
+ let maximumHeights = polygons._polygonMaximumHeights;
286
+ if (defined(minimumHeights) && defined(maximumHeights)) {
287
+ minimumHeights = minimumHeights.slice();
288
+ maximumHeights = maximumHeights.slice();
289
+
290
+ transferrableObjects.push(minimumHeights.buffer, maximumHeights.buffer);
291
+ parameters.minimumHeights = minimumHeights;
292
+ parameters.maximumHeights = maximumHeights;
293
+ }
294
+
295
+ const verticesPromise = createVerticesTaskProcessor.scheduleTask(
296
+ parameters,
297
+ transferrableObjects
298
+ );
299
+ if (!defined(verticesPromise)) {
300
+ // Postponed
301
+ return;
302
+ }
303
+
304
+ return verticesPromise
305
+ .then((result) => {
306
+ if (polygons.isDestroyed()) {
307
+ return;
308
+ }
304
309
 
305
- return verticesPromise.then(function (result) {
306
310
  polygons._positions = undefined;
307
311
  polygons._counts = undefined;
308
312
  polygons._polygonMinimumHeights = undefined;
@@ -323,13 +327,22 @@ function createPrimitive(polygons) {
323
327
  polygons._batchedPositions = new Float32Array(result.positions);
324
328
  polygons._vertexBatchIds = new Uint16Array(result.batchIds);
325
329
 
330
+ finishPrimitive(polygons);
331
+
326
332
  polygons._ready = true;
333
+ })
334
+ .catch((error) => {
335
+ if (polygons.isDestroyed()) {
336
+ return;
337
+ }
338
+
339
+ // Throw the error next frame
340
+ polygons._error = error;
327
341
  });
328
- }
329
342
  }
330
343
 
331
344
  function finishPrimitive(polygons) {
332
- if (polygons._ready && !defined(polygons._primitive)) {
345
+ if (!defined(polygons._primitive)) {
333
346
  polygons._primitive = new Vector3DTilePrimitive({
334
347
  batchTable: polygons._batchTable,
335
348
  positions: polygons._batchedPositions,
@@ -366,7 +379,6 @@ function finishPrimitive(polygons) {
366
379
  polygons._boundingVolume = undefined;
367
380
  polygons._boundingVolumes = undefined;
368
381
  polygons._batchedIndices = undefined;
369
- polygons._verticesPromise = undefined;
370
382
  }
371
383
  }
372
384
 
@@ -411,41 +423,30 @@ Vector3DTilePolygons.prototype.updateCommands = function (batchId, color) {
411
423
  this._primitive.updateCommands(batchId, color);
412
424
  };
413
425
 
414
- function initialize(polygons) {
415
- return new Promise(function (resolve, reject) {
416
- polygons._update = function (polygons, frameState) {
417
- const promise = createPrimitive(polygons);
418
-
419
- if (polygons._ready) {
420
- polygons._primitive.debugWireframe = polygons.debugWireframe;
421
- polygons._primitive.forceRebatch = polygons.forceRebatch;
422
- polygons._primitive.classificationType = polygons.classificationType;
423
- polygons._primitive.update(frameState);
424
- }
425
-
426
- if (!defined(promise)) {
427
- return;
428
- }
429
-
430
- promise
431
- .then(function () {
432
- finishPrimitive(polygons);
433
- resolve(polygons);
434
- })
435
- .catch(function (e) {
436
- reject(e);
437
- });
438
- };
439
- });
440
- }
441
-
442
426
  /**
443
427
  * Updates the batches and queues the commands for rendering.
444
428
  *
445
429
  * @param {FrameState} frameState The current frame state.
446
430
  */
447
431
  Vector3DTilePolygons.prototype.update = function (frameState) {
448
- this._update(this, frameState);
432
+ if (!this._ready) {
433
+ if (!defined(this._promise)) {
434
+ this._promise = createPrimitive(this);
435
+ }
436
+
437
+ if (defined(this._error)) {
438
+ const error = this._error;
439
+ this._error = undefined;
440
+ throw error;
441
+ }
442
+
443
+ return;
444
+ }
445
+
446
+ this._primitive.debugWireframe = this.debugWireframe;
447
+ this._primitive.forceRebatch = this.forceRebatch;
448
+ this._primitive.classificationType = this.classificationType;
449
+ this._primitive.update(frameState);
449
450
  };
450
451
 
451
452
  /**