@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
@@ -896,8 +896,8 @@ Cesium3DTileBatchTable.prototype.addDerivedCommands = function (
896
896
  const finalResolution = tile._finalResolution;
897
897
  const tileset = tile.tileset;
898
898
  const bivariateVisibilityTest =
899
- tileset._skipLevelOfDetail &&
900
- tileset._hasMixedContent &&
899
+ tileset.isSkippingLevelOfDetail &&
900
+ tileset.hasMixedContent &&
901
901
  frameState.context.stencilBuffer;
902
902
  const styleCommandsNeeded = getStyleCommandsNeeded(this);
903
903
 
@@ -145,6 +145,21 @@ Object.defineProperties(Cesium3DTileContent.prototype, {
145
145
  },
146
146
  },
147
147
 
148
+ /**
149
+ * Returns true when the tile's content is ready to render; otherwise false
150
+ *
151
+ * @memberof Cesium3DTileContent.prototype
152
+ *
153
+ * @type {boolean}
154
+ * @readonly
155
+ */
156
+ ready: {
157
+ // eslint-disable-next-line getter-return
158
+ get: function () {
159
+ DeveloperError.throwInstantiationError();
160
+ },
161
+ },
162
+
148
163
  /**
149
164
  * Gets the promise that will be resolved when the tile's content is ready to render.
150
165
  *
@@ -152,6 +167,7 @@ Object.defineProperties(Cesium3DTileContent.prototype, {
152
167
  *
153
168
  * @type {Promise<Cesium3DTileContent>}
154
169
  * @readonly
170
+ * @deprecated
155
171
  */
156
172
  readyPromise: {
157
173
  // eslint-disable-next-line getter-return
@@ -41,7 +41,7 @@ const Cesium3DTileContentFactory = {
41
41
  },
42
42
  cmpt: function (tileset, tile, resource, arrayBuffer, byteOffset) {
43
43
  // Send in the factory in order to avoid a cyclical dependency
44
- return new Composite3DTileContent(
44
+ return Composite3DTileContent.fromTileType(
45
45
  tileset,
46
46
  tile,
47
47
  resource,
@@ -51,7 +51,7 @@ const Cesium3DTileContentFactory = {
51
51
  );
52
52
  },
53
53
  externalTileset: function (tileset, tile, resource, json) {
54
- return new Tileset3DTileContent(tileset, tile, resource, json);
54
+ return Tileset3DTileContent.fromJson(tileset, tile, resource, json);
55
55
  },
56
56
  geom: function (tileset, tile, resource, arrayBuffer, byteOffset) {
57
57
  return new Geometry3DTileContent(
@@ -72,7 +72,7 @@ const Cesium3DTileContentFactory = {
72
72
  );
73
73
  },
74
74
  subt: function (tileset, tile, resource, arrayBuffer, byteOffset) {
75
- return new Implicit3DTileContent(
75
+ return Implicit3DTileContent.fromSubtreeJson(
76
76
  tileset,
77
77
  tile,
78
78
  resource,
@@ -82,7 +82,7 @@ const Cesium3DTileContentFactory = {
82
82
  );
83
83
  },
84
84
  subtreeJson: function (tileset, tile, resource, json) {
85
- return new Implicit3DTileContent(tileset, tile, resource, json);
85
+ return Implicit3DTileContent.fromSubtreeJson(tileset, tile, resource, json);
86
86
  },
87
87
  glb: function (tileset, tile, resource, arrayBuffer, byteOffset) {
88
88
  const arrayBufferByteLength = arrayBuffer.byteLength;
@@ -1,6 +1,3 @@
1
- import Cesium3DTilesetMostDetailedTraversal from "./Cesium3DTilesetMostDetailedTraversal.js";
2
- import Cesium3DTilesetTraversal from "./Cesium3DTilesetTraversal.js";
3
-
4
1
  /**
5
2
  * The pass in which a 3D Tileset is updated.
6
3
  *
@@ -21,56 +18,56 @@ const Cesium3DTilePass = {
21
18
  const passOptions = new Array(Cesium3DTilePass.NUMBER_OF_PASSES);
22
19
 
23
20
  passOptions[Cesium3DTilePass.RENDER] = Object.freeze({
24
- traversal: Cesium3DTilesetTraversal,
21
+ pass: Cesium3DTilePass.RENDER,
25
22
  isRender: true,
26
23
  requestTiles: true,
27
24
  ignoreCommands: false,
28
25
  });
29
26
 
30
27
  passOptions[Cesium3DTilePass.PICK] = Object.freeze({
31
- traversal: Cesium3DTilesetTraversal,
28
+ pass: Cesium3DTilePass.PICK,
32
29
  isRender: false,
33
30
  requestTiles: false,
34
31
  ignoreCommands: false,
35
32
  });
36
33
 
37
34
  passOptions[Cesium3DTilePass.SHADOW] = Object.freeze({
38
- traversal: Cesium3DTilesetTraversal,
35
+ pass: Cesium3DTilePass.SHADOW,
39
36
  isRender: false,
40
37
  requestTiles: true,
41
38
  ignoreCommands: false,
42
39
  });
43
40
 
44
41
  passOptions[Cesium3DTilePass.PRELOAD] = Object.freeze({
45
- traversal: Cesium3DTilesetTraversal,
42
+ pass: Cesium3DTilePass.SHADOW,
46
43
  isRender: false,
47
44
  requestTiles: true,
48
45
  ignoreCommands: true,
49
46
  });
50
47
 
51
48
  passOptions[Cesium3DTilePass.PRELOAD_FLIGHT] = Object.freeze({
52
- traversal: Cesium3DTilesetTraversal,
49
+ pass: Cesium3DTilePass.PRELOAD_FLIGHT,
53
50
  isRender: false,
54
51
  requestTiles: true,
55
52
  ignoreCommands: true,
56
53
  });
57
54
 
58
55
  passOptions[Cesium3DTilePass.REQUEST_RENDER_MODE_DEFER_CHECK] = Object.freeze({
59
- traversal: Cesium3DTilesetTraversal,
56
+ pass: Cesium3DTilePass.REQUEST_RENDER_MODE_DEFER_CHECK,
60
57
  isRender: false,
61
58
  requestTiles: true,
62
59
  ignoreCommands: true,
63
60
  });
64
61
 
65
62
  passOptions[Cesium3DTilePass.MOST_DETAILED_PRELOAD] = Object.freeze({
66
- traversal: Cesium3DTilesetMostDetailedTraversal,
63
+ pass: Cesium3DTilePass.MOST_DETAILED_PRELOAD,
67
64
  isRender: false,
68
65
  requestTiles: true,
69
66
  ignoreCommands: true,
70
67
  });
71
68
 
72
69
  passOptions[Cesium3DTilePass.MOST_DETAILED_PICK] = Object.freeze({
73
- traversal: Cesium3DTilesetMostDetailedTraversal,
70
+ pass: Cesium3DTilePass.MOST_DETAILED_PICK,
74
71
  isRender: false,
75
72
  requestTiles: false,
76
73
  ignoreCommands: false,
@@ -33,7 +33,7 @@ Cesium3DTileStyleEngine.prototype.resetDirty = function () {
33
33
  };
34
34
 
35
35
  Cesium3DTileStyleEngine.prototype.applyStyle = function (tileset) {
36
- if (!tileset.ready) {
36
+ if (!defined(tileset.root)) {
37
37
  return;
38
38
  }
39
39
 
@@ -2,7 +2,7 @@ import Cartesian3 from "../Core/Cartesian3.js";
2
2
  import Check from "../Core/Check.js";
3
3
  import defaultValue from "../Core/defaultValue.js";
4
4
  import defined from "../Core/defined.js";
5
- import DeveloperError from "../Core/DeveloperError.js";
5
+ import deprecationWarning from "../Core/deprecationWarning.js";
6
6
  import Ellipsoid from "../Core/Ellipsoid.js";
7
7
  import Matrix4 from "../Core/Matrix4.js";
8
8
  import OrientedBoundingBox from "../Core/OrientedBoundingBox.js";
@@ -28,14 +28,18 @@ import VoxelShapeType from "./VoxelShapeType.js";
28
28
  * <p>
29
29
  * Implements the {@link VoxelProvider} interface.
30
30
  * </p>
31
+ * <div class="notice">
32
+ * This object is normally not instantiated directly, use {@link Cesium3DTilesVoxelProvider.fromUrl}.
33
+ * </div>
31
34
  *
32
35
  * @alias Cesium3DTilesVoxelProvider
33
36
  * @constructor
34
37
  * @augments VoxelProvider
35
38
  *
36
39
  * @param {object} options Object with the following properties:
37
- * @param {Resource|string|Promise<Resource>|Promise<string>} options.url The URL to a tileset JSON file.
40
+ * @param {Resource|string|Promise<Resource>|Promise<string>} [options.url] The URL to a tileset JSON file. Deprecated.
38
41
  *
42
+ * @see Cesium3DTilesVoxelProvider.fromUrl
39
43
  * @see VoxelProvider
40
44
  * @see VoxelPrimitive
41
45
  * @see VoxelShapeType
@@ -44,12 +48,7 @@ import VoxelShapeType from "./VoxelShapeType.js";
44
48
  */
45
49
  function Cesium3DTilesVoxelProvider(options) {
46
50
  options = defaultValue(options, defaultValue.EMPTY_OBJECT);
47
- //>>includeStart('debug', pragmas.debug)
48
- Check.defined("options.url", options.url);
49
- //>>includeEnd('debug');
50
-
51
- /** @inheritdoc */
52
- this.ready = false;
51
+ this._ready = false;
53
52
 
54
53
  /** @inheritdoc */
55
54
  this.shapeTransform = undefined;
@@ -99,83 +98,202 @@ function Cesium3DTilesVoxelProvider(options) {
99
98
  const that = this;
100
99
  let tilesetJson;
101
100
 
102
- this._readyPromise = Promise.resolve(options.url).then(function (url) {
103
- const resource = Resource.createIfNeeded(url);
104
- return resource
105
- .fetchJson()
106
- .then(function (tileset) {
107
- tilesetJson = tileset;
108
- validate(tilesetJson);
109
- return getMetadataSchemaLoader(tilesetJson, resource).promise;
110
- })
111
- .then(function (schemaLoader) {
112
- const root = tilesetJson.root;
113
- const voxel = root.content.extensions["3DTILES_content_voxels"];
114
- const className = voxel.class;
115
-
116
- const metadataJson = hasExtension(tilesetJson, "3DTILES_metadata")
117
- ? tilesetJson.extensions["3DTILES_metadata"]
118
- : tilesetJson;
119
-
120
- const metadataSchema = schemaLoader.schema;
121
- const metadata = new Cesium3DTilesetMetadata({
122
- metadataJson: metadataJson,
123
- schema: metadataSchema,
124
- });
101
+ if (defined(options.url)) {
102
+ deprecationWarning(
103
+ "Cesium3DTilesVoxelProvider options.url",
104
+ "Cesium3DTilesVoxelProvider constructor parameter options.url was deprecated in CesiumJS 1.104. It will be removed in 1.107. Use Cesium3DTilesVoxelProvider.fromUrl instead."
105
+ );
125
106
 
126
- addAttributeInfo(that, metadata, className);
107
+ this._readyPromise = Promise.resolve(options.url).then(function (url) {
108
+ const resource = Resource.createIfNeeded(url);
109
+ return resource
110
+ .fetchJson()
111
+ .then(function (tileset) {
112
+ tilesetJson = tileset;
113
+ validate(tilesetJson);
114
+ const schemaLoader = getMetadataSchemaLoader(tilesetJson, resource);
115
+ return schemaLoader.load();
116
+ })
117
+ .then(function (schemaLoader) {
118
+ const root = tilesetJson.root;
119
+ const voxel = root.content.extensions["3DTILES_content_voxels"];
120
+ const className = voxel.class;
121
+
122
+ const metadataJson = hasExtension(tilesetJson, "3DTILES_metadata")
123
+ ? tilesetJson.extensions["3DTILES_metadata"]
124
+ : tilesetJson;
125
+
126
+ const metadataSchema = schemaLoader.schema;
127
+ const metadata = new Cesium3DTilesetMetadata({
128
+ metadataJson: metadataJson,
129
+ schema: metadataSchema,
130
+ });
131
+
132
+ addAttributeInfo(that, metadata, className);
133
+
134
+ const implicitTileset = new ImplicitTileset(
135
+ resource,
136
+ root,
137
+ metadataSchema
138
+ );
139
+
140
+ const {
141
+ shape,
142
+ minBounds,
143
+ maxBounds,
144
+ shapeTransform,
145
+ globalTransform,
146
+ } = getShape(root);
147
+
148
+ that.shape = shape;
149
+ that.minBounds = minBounds;
150
+ that.maxBounds = maxBounds;
151
+ that.dimensions = Cartesian3.unpack(voxel.dimensions);
152
+ that.shapeTransform = shapeTransform;
153
+ that.globalTransform = globalTransform;
154
+ that.maximumTileCount = getTileCount(metadata);
155
+
156
+ let paddingBefore;
157
+ let paddingAfter;
158
+
159
+ if (defined(voxel.padding)) {
160
+ paddingBefore = Cartesian3.unpack(voxel.padding.before);
161
+ paddingAfter = Cartesian3.unpack(voxel.padding.after);
162
+ }
163
+
164
+ that.paddingBefore = paddingBefore;
165
+ that.paddingAfter = paddingAfter;
166
+
167
+ that._implicitTileset = implicitTileset;
168
+
169
+ ResourceCache.unload(schemaLoader);
170
+
171
+ that._ready = true;
172
+ return that;
173
+ });
174
+ });
175
+ }
176
+ }
127
177
 
128
- const implicitTileset = new ImplicitTileset(
129
- resource,
130
- root,
131
- metadataSchema
132
- );
178
+ Object.defineProperties(Cesium3DTilesVoxelProvider.prototype, {
179
+ /**
180
+ * Gets the promise that will be resolved when the provider is ready for use.
181
+ *
182
+ * @memberof Cesium3DTilesVoxelProvider.prototype
183
+ * @type {Promise<Cesium3DTilesVoxelProvider>}
184
+ * @readonly
185
+ * @deprecated
186
+ */
187
+ readyPromise: {
188
+ get: function () {
189
+ deprecationWarning(
190
+ "Cesium3DTilesVoxelProvider.readyPromise",
191
+ "Cesium3DTilesVoxelProvider.readyPromise was deprecated in CesiumJS 1.104. It will be removed in 1.107. Use Cesium3DTilesVoxelProvider.fromUrl instead."
192
+ );
193
+ return this._readyPromise;
194
+ },
195
+ },
133
196
 
134
- const {
135
- shape,
136
- minBounds,
137
- maxBounds,
138
- shapeTransform,
139
- globalTransform,
140
- } = getShape(root);
197
+ /**
198
+ * Gets a value indicating whether or not the provider is ready for use.
199
+ *
200
+ * @memberof Cesium3DTilesVoxelProvider.prototype
201
+ * @type {boolean}
202
+ * @readonly
203
+ * @deprecated
204
+ */
205
+ ready: {
206
+ get: function () {
207
+ deprecationWarning(
208
+ "Cesium3DTilesVoxelProvider.ready",
209
+ "Cesium3DTilesVoxelProvider.ready was deprecated in CesiumJS 1.104. It will be removed in 1.107. Use Cesium3DTilesVoxelProvider.fromUrl instead."
210
+ );
211
+ return this._ready;
212
+ },
213
+ },
214
+ });
141
215
 
142
- that.shape = shape;
143
- that.minBounds = minBounds;
144
- that.maxBounds = maxBounds;
145
- that.dimensions = Cartesian3.unpack(voxel.dimensions);
146
- that.shapeTransform = shapeTransform;
147
- that.globalTransform = globalTransform;
148
- that.maximumTileCount = getTileCount(metadata);
216
+ /**
217
+ * Creates a {@link VoxelProvider} that fetches voxel data from a 3D Tiles tileset.
218
+ *
219
+ * @param {Resource|string} url The URL to a tileset JSON file
220
+ * @returns {Promise<Cesium3DTilesVoxelProvider>} The created provider
221
+ *
222
+ * @exception {RuntimeException} Root must have content
223
+ * @exception {RuntimeException} Root tile content must have 3DTILES_content_voxels extension
224
+ * @exception {RuntimeException} Root tile must have implicit tiling
225
+ * @exception {RuntimeException} Tileset must have a metadata schema
226
+ * @exception {RuntimeException} Only box, region and 3DTILES_bounding_volume_cylinder are supported in Cesium3DTilesVoxelProvider
227
+ */
228
+ Cesium3DTilesVoxelProvider.fromUrl = async function (url) {
229
+ //>>includeStart('debug', pragmas.debug);
230
+ Check.defined("url", url);
231
+ //>>includeEnd('debug');
149
232
 
150
- let paddingBefore;
151
- let paddingAfter;
233
+ const resource = Resource.createIfNeeded(url);
234
+ const tilesetJson = await resource.fetchJson();
152
235
 
153
- if (defined(voxel.padding)) {
154
- paddingBefore = Cartesian3.unpack(voxel.padding.before);
155
- paddingAfter = Cartesian3.unpack(voxel.padding.after);
156
- }
236
+ validate(tilesetJson);
157
237
 
158
- that.paddingBefore = paddingBefore;
159
- that.paddingAfter = paddingAfter;
238
+ const schemaLoader = getMetadataSchemaLoader(tilesetJson, resource);
239
+ await schemaLoader.load();
160
240
 
161
- that._implicitTileset = implicitTileset;
241
+ const root = tilesetJson.root;
242
+ const voxel = root.content.extensions["3DTILES_content_voxels"];
243
+ const className = voxel.class;
162
244
 
163
- ResourceCache.unload(schemaLoader);
245
+ const metadataJson = hasExtension(tilesetJson, "3DTILES_metadata")
246
+ ? tilesetJson.extensions["3DTILES_metadata"]
247
+ : tilesetJson;
164
248
 
165
- that.ready = true;
166
- return that;
167
- });
249
+ const metadataSchema = schemaLoader.schema;
250
+ const metadata = new Cesium3DTilesetMetadata({
251
+ metadataJson: metadataJson,
252
+ schema: metadataSchema,
168
253
  });
169
- }
170
254
 
171
- Object.defineProperties(Cesium3DTilesVoxelProvider.prototype, {
172
- /** @inheritdoc */
173
- readyPromise: {
174
- get: function () {
175
- return this._readyPromise;
176
- },
177
- },
178
- });
255
+ const provider = new Cesium3DTilesVoxelProvider();
256
+
257
+ addAttributeInfo(provider, metadata, className);
258
+
259
+ const implicitTileset = new ImplicitTileset(resource, root, metadataSchema);
260
+
261
+ const {
262
+ shape,
263
+ minBounds,
264
+ maxBounds,
265
+ shapeTransform,
266
+ globalTransform,
267
+ } = getShape(root);
268
+
269
+ provider.shape = shape;
270
+ provider.minBounds = minBounds;
271
+ provider.maxBounds = maxBounds;
272
+ provider.dimensions = Cartesian3.unpack(voxel.dimensions);
273
+ provider.shapeTransform = shapeTransform;
274
+ provider.globalTransform = globalTransform;
275
+ provider.maximumTileCount = getTileCount(metadata);
276
+
277
+ let paddingBefore;
278
+ let paddingAfter;
279
+
280
+ if (defined(voxel.padding)) {
281
+ paddingBefore = Cartesian3.unpack(voxel.padding.before);
282
+ paddingAfter = Cartesian3.unpack(voxel.padding.after);
283
+ }
284
+
285
+ provider.paddingBefore = paddingBefore;
286
+ provider.paddingAfter = paddingAfter;
287
+
288
+ provider._implicitTileset = implicitTileset;
289
+
290
+ ResourceCache.unload(schemaLoader);
291
+
292
+ provider._ready = true;
293
+ provider._readyPromise = Promise.resolve(provider);
294
+
295
+ return provider;
296
+ };
179
297
 
180
298
  function getTileCount(metadata) {
181
299
  if (!defined(metadata.tileset)) {
@@ -306,9 +424,9 @@ function getCylinderShape(cylinder, tileTransform) {
306
424
  function getMetadataSchemaLoader(tilesetJson, resource) {
307
425
  const { schemaUri, schema } = tilesetJson;
308
426
  if (!defined(schemaUri)) {
309
- return ResourceCache.loadSchema({ schema });
427
+ return ResourceCache.getSchemaLoader({ schema });
310
428
  }
311
- return ResourceCache.loadSchema({
429
+ return ResourceCache.getSchemaLoader({
312
430
  resource: resource.getDerivedResource({
313
431
  url: schemaUri,
314
432
  }),
@@ -356,7 +474,7 @@ function copyArray(values, length) {
356
474
  return Array.from({ length }, (v, i) => valuesArray[i]);
357
475
  }
358
476
 
359
- function getVoxelPromise(implicitTileset, tileCoordinates) {
477
+ async function getVoxelContent(implicitTileset, tileCoordinates) {
360
478
  const voxelRelative = implicitTileset.contentUriTemplates[0].getDerivedResource(
361
479
  {
362
480
  templateValues: tileCoordinates.getTemplateValues(),
@@ -366,29 +484,28 @@ function getVoxelPromise(implicitTileset, tileCoordinates) {
366
484
  url: voxelRelative.url,
367
485
  });
368
486
 
369
- return voxelResource.fetchArrayBuffer().then(function (arrayBuffer) {
370
- const preprocessed = preprocess3DTileContent(arrayBuffer);
487
+ const arrayBuffer = await voxelResource.fetchArrayBuffer();
488
+ const preprocessed = preprocess3DTileContent(arrayBuffer);
371
489
 
372
- const voxelContent = new VoxelContent(
373
- voxelResource,
374
- preprocessed.jsonPayload,
375
- preprocessed.binaryPayload,
376
- implicitTileset.metadataSchema
377
- );
490
+ const voxelContent = await VoxelContent.fromJson(
491
+ voxelResource,
492
+ preprocessed.jsonPayload,
493
+ preprocessed.binaryPayload,
494
+ implicitTileset.metadataSchema
495
+ );
378
496
 
379
- return voxelContent.readyPromise;
380
- });
497
+ return voxelContent;
381
498
  }
382
499
 
383
- function getSubtreePromise(provider, subtreeCoord) {
500
+ async function getSubtreePromise(provider, subtreeCoord) {
384
501
  const implicitTileset = provider._implicitTileset;
385
502
  const subtreeCache = provider._subtreeCache;
386
503
 
387
504
  // First load the subtree to check if the tile is available.
388
505
  // If the subtree has been requested previously it might still be in the cache
389
- const subtree = subtreeCache.find(subtreeCoord);
506
+ let subtree = subtreeCache.find(subtreeCoord);
390
507
  if (defined(subtree)) {
391
- return subtree.readyPromise;
508
+ return subtree;
392
509
  }
393
510
 
394
511
  const subtreeRelative = implicitTileset.subtreeUriTemplate.getDerivedResource(
@@ -400,38 +517,29 @@ function getSubtreePromise(provider, subtreeCoord) {
400
517
  url: subtreeRelative.url,
401
518
  });
402
519
 
403
- return subtreeResource.fetchArrayBuffer().then(function (arrayBuffer) {
404
- // Check one more time if the subtree is in the cache.
405
- // This could happen if there are two in-flight tile requests from the same
406
- // subtree and one finishes before the other.
407
- let subtree = subtreeCache.find(subtreeCoord);
408
- if (defined(subtree)) {
409
- return subtree.readyPromise;
410
- }
520
+ const arrayBuffer = await subtreeResource.fetchArrayBuffer();
521
+ // Check one more time if the subtree is in the cache.
522
+ // This could happen if there are two in-flight tile requests from the same
523
+ // subtree and one finishes before the other.
524
+ subtree = subtreeCache.find(subtreeCoord);
525
+ if (defined(subtree)) {
526
+ return subtree;
527
+ }
411
528
 
412
- const preprocessed = preprocess3DTileContent(arrayBuffer);
413
- subtree = new ImplicitSubtree(
414
- subtreeResource,
415
- preprocessed.jsonPayload,
416
- preprocessed.binaryPayload,
417
- implicitTileset,
418
- subtreeCoord
419
- );
420
- subtreeCache.addSubtree(subtree);
421
- return subtree.readyPromise;
422
- });
529
+ const preprocessed = preprocess3DTileContent(arrayBuffer);
530
+ subtree = await ImplicitSubtree.fromSubtreeJson(
531
+ subtreeResource,
532
+ preprocessed.jsonPayload,
533
+ preprocessed.binaryPayload,
534
+ implicitTileset,
535
+ subtreeCoord
536
+ );
537
+ subtreeCache.addSubtree(subtree);
538
+ return subtree;
423
539
  }
424
540
 
425
541
  /** @inheritdoc */
426
542
  Cesium3DTilesVoxelProvider.prototype.requestData = function (options) {
427
- //>>includeStart('debug', pragmas.debug);
428
- if (!this.ready) {
429
- throw new DeveloperError(
430
- "The provider is not ready. Use Cesium3DTilesVoxelProvider.readyPromise or wait for Cesium3DTilesVoxelProvider.ready to be true."
431
- );
432
- }
433
- //>>includeEnd('debug');
434
-
435
543
  options = defaultValue(options, defaultValue.EMPTY_OBJECT);
436
544
  const tileLevel = defaultValue(options.tileLevel, 0);
437
545
  const tileX = defaultValue(options.tileX, 0);
@@ -482,7 +590,7 @@ Cesium3DTilesVoxelProvider.prototype.requestData = function (options) {
482
590
  return Promise.reject("Tile is not available");
483
591
  }
484
592
 
485
- return getVoxelPromise(implicitTileset, tileCoordinates);
593
+ return getVoxelContent(implicitTileset, tileCoordinates);
486
594
  })
487
595
  .then(function (voxelContent) {
488
596
  return names.map(function (name) {