@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
@@ -36,6 +36,9 @@ const modelMatrixScratch = new Matrix4();
36
36
  const nodeMatrixScratch = new Matrix4();
37
37
 
38
38
  const scratchColor = new Color();
39
+ const scratchArray = new Array(4);
40
+ const scratchCartesian = new Cartesian3();
41
+
39
42
  /**
40
43
  * A {@link Visualizer} which maps {@link Entity#model} to a {@link Model}.
41
44
  * @alias ModelVisualizer
@@ -60,9 +63,56 @@ function ModelVisualizer(scene, entityCollection) {
60
63
  this._entityCollection = entityCollection;
61
64
  this._modelHash = {};
62
65
  this._entitiesToVisualize = new AssociativeArray();
66
+
63
67
  this._onCollectionChanged(entityCollection, entityCollection.values, [], []);
64
68
  }
65
69
 
70
+ async function createModelPrimitive(
71
+ visualizer,
72
+ entity,
73
+ resource,
74
+ incrementallyLoadTextures
75
+ ) {
76
+ const primitives = visualizer._primitives;
77
+ const modelHash = visualizer._modelHash;
78
+
79
+ try {
80
+ const model = await Model.fromGltfAsync({
81
+ url: resource,
82
+ incrementallyLoadTextures: incrementallyLoadTextures,
83
+ scene: visualizer._scene,
84
+ });
85
+
86
+ if (visualizer.isDestroyed() || !defined(modelHash[entity.id])) {
87
+ return;
88
+ }
89
+
90
+ model.id = entity;
91
+ primitives.add(model);
92
+ modelHash[entity.id].modelPrimitive = model;
93
+ model.errorEvent.addEventListener((error) => {
94
+ if (!defined(modelHash[entity.id])) {
95
+ return;
96
+ }
97
+
98
+ console.log(error);
99
+
100
+ // Texture failures when incrementallyLoadTextures
101
+ // will not affect the ability to compute the bounding sphere
102
+ if (error.name !== "TextureError" && model.incrementallyLoadTextures) {
103
+ modelHash[entity.id].loadFailed = true;
104
+ }
105
+ });
106
+ } catch (error) {
107
+ if (visualizer.isDestroyed() || !defined(modelHash[entity.id])) {
108
+ return;
109
+ }
110
+
111
+ console.log(error);
112
+ modelHash[entity.id].loadFailed = true;
113
+ }
114
+ }
115
+
66
116
  /**
67
117
  * Updates models created this visualizer to match their
68
118
  * Entity counterpart at the given time.
@@ -102,45 +152,44 @@ ModelVisualizer.prototype.update = function (time) {
102
152
  }
103
153
 
104
154
  if (!show) {
105
- if (defined(modelData)) {
155
+ if (defined(modelData) && modelData.modelPrimitive) {
106
156
  modelData.modelPrimitive.show = false;
107
157
  }
108
158
  continue;
109
159
  }
110
160
 
111
- let model = defined(modelData) ? modelData.modelPrimitive : undefined;
112
- if (!defined(model) || resource.url !== modelData.url) {
113
- if (defined(model)) {
114
- primitives.removeAndDestroy(model);
161
+ if (!defined(modelData) || resource.url !== modelData.url) {
162
+ if (defined(modelData?.modelPrimitive)) {
163
+ primitives.removeAndDestroy(modelData.modelPrimitive);
115
164
  delete modelHash[entity.id];
116
165
  }
117
166
 
118
- model = Model.fromGltf({
119
- url: resource,
120
- incrementallyLoadTextures: Property.getValueOrDefault(
121
- modelGraphics._incrementallyLoadTextures,
122
- time,
123
- defaultIncrementallyLoadTextures
124
- ),
125
- scene: this._scene,
126
- });
127
- model.id = entity;
128
- primitives.add(model);
129
-
130
167
  modelData = {
131
- modelPrimitive: model,
168
+ modelPrimitive: undefined,
132
169
  url: resource.url,
133
170
  animationsRunning: false,
134
171
  nodeTransformationsScratch: {},
135
172
  articulationsScratch: {},
136
- loadFail: false,
173
+ loadFailed: false,
174
+ modelUpdated: false,
137
175
  awaitingSampleTerrain: false,
138
176
  clampedBoundingSphere: undefined,
139
177
  sampleTerrainFailed: false,
140
178
  };
141
179
  modelHash[entity.id] = modelData;
142
180
 
143
- checkModelLoad(model, entity, modelHash);
181
+ const incrementallyLoadTextures = Property.getValueOrDefault(
182
+ modelGraphics._incrementallyLoadTextures,
183
+ time,
184
+ defaultIncrementallyLoadTextures
185
+ );
186
+
187
+ createModelPrimitive(this, entity, resource, incrementallyLoadTextures);
188
+ }
189
+
190
+ const model = modelData.modelPrimitive;
191
+ if (!defined(model)) {
192
+ continue;
144
193
  }
145
194
 
146
195
  model.show = true;
@@ -214,15 +263,27 @@ ModelVisualizer.prototype.update = function (time) {
214
263
  time,
215
264
  defaultImageBasedLightingFactor
216
265
  );
217
- model.lightColor = Property.getValueOrUndefined(
266
+ let lightColor = Property.getValueOrUndefined(
218
267
  modelGraphics._lightColor,
219
268
  time
220
269
  );
270
+
271
+ // Convert from Color to Cartesian3
272
+ if (defined(lightColor)) {
273
+ Color.pack(lightColor, scratchArray, 0);
274
+ lightColor = Cartesian3.unpack(scratchArray, 0, scratchCartesian);
275
+ }
276
+
277
+ model.lightColor = lightColor;
221
278
  model.customShader = Property.getValueOrUndefined(
222
279
  modelGraphics._customShader,
223
280
  time
224
281
  );
225
282
 
283
+ // It's possible for getBoundingSphere to run before
284
+ // model becomes ready and these properties are updated
285
+ modelHash[entity.id].modelUpdated = true;
286
+
226
287
  if (model.ready) {
227
288
  const runAnimations = Property.getValueOrDefault(
228
289
  modelGraphics._runAnimations,
@@ -365,28 +426,35 @@ ModelVisualizer.prototype.getBoundingSphere = function (entity, result) {
365
426
  //>>includeEnd('debug');
366
427
 
367
428
  const modelData = this._modelHash[entity.id];
368
- if (!defined(modelData) || modelData.loadFail) {
429
+ if (!defined(modelData)) {
430
+ return BoundingSphereState.FAILED;
431
+ }
432
+
433
+ if (modelData.loadFailed) {
369
434
  return BoundingSphereState.FAILED;
370
435
  }
371
436
 
372
437
  const model = modelData.modelPrimitive;
373
438
  if (!defined(model) || !model.show) {
374
- return BoundingSphereState.FAILED;
439
+ return BoundingSphereState.PENDING;
375
440
  }
376
441
 
377
- if (!model.ready) {
442
+ if (!model.ready || !modelData.modelUpdated) {
378
443
  return BoundingSphereState.PENDING;
379
444
  }
445
+
380
446
  const scene = this._scene;
381
447
  const globe = scene.globe;
382
- const ellipsoid = globe.ellipsoid;
383
- const terrainProvider = globe.terrainProvider;
384
448
 
449
+ // cannot access a terrain provider if there is no globe; formally set to undefined
450
+ const terrainProvider = defined(globe) ? globe.terrainProvider : undefined;
385
451
  const hasHeightReference = model.heightReference !== HeightReference.NONE;
386
- if (hasHeightReference) {
452
+ if (defined(globe) && hasHeightReference) {
453
+ const ellipsoid = globe.ellipsoid;
387
454
  // We cannot query the availability of the terrain provider till its ready, so the
388
455
  // bounding sphere state will remain pending till the terrain provider is ready.
389
- if (!terrainProvider.ready) {
456
+ // ready is deprecated. This is here for backwards compatibility
457
+ if (!terrainProvider._ready) {
390
458
  return BoundingSphereState.PENDING;
391
459
  }
392
460
 
@@ -441,6 +509,10 @@ ModelVisualizer.prototype.getBoundingSphere = function (entity, result) {
441
509
  scratchCartographic,
442
510
  ])
443
511
  .then((result) => {
512
+ if (this.isDestroyed()) {
513
+ return;
514
+ }
515
+
444
516
  this._modelHash[entity.id].awaitingSampleTerrain = false;
445
517
 
446
518
  const updatedCartographic = result[0];
@@ -463,6 +535,10 @@ ModelVisualizer.prototype.getBoundingSphere = function (entity, result) {
463
535
  );
464
536
  })
465
537
  .catch((e) => {
538
+ if (this.isDestroyed()) {
539
+ return;
540
+ }
541
+
466
542
  this._modelHash[entity.id].sampleTerrainFailed = true;
467
543
  this._modelHash[entity.id].awaitingSampleTerrain = false;
468
544
  });
@@ -539,10 +615,4 @@ function clearNodeTransformationsArticulationsScratch(entity, modelHash) {
539
615
  }
540
616
  }
541
617
 
542
- function checkModelLoad(model, entity, modelHash) {
543
- model.readyPromise.catch(function (error) {
544
- console.error(error);
545
- modelHash[entity.id].loadFail = true;
546
- });
547
- }
548
618
  export default ModelVisualizer;
@@ -21,7 +21,7 @@ function createPolygonHierarchyProperty(value) {
21
21
  * Initialization options for the PolygonGraphics constructor
22
22
  *
23
23
  * @property {Property | boolean} [show=true] A boolean Property specifying the visibility of the polygon.
24
- * @property {Property | PolygonHierarchy} [hierarchy] A Property specifying the {@link PolygonHierarchy}.
24
+ * @property {Property | PolygonHierarchy | Cartesian3[]} [hierarchy] A Property specifying the {@link PolygonHierarchy}.
25
25
  * @property {Property | number} [height=0] A numeric Property specifying the altitude of the polygon relative to the ellipsoid surface.
26
26
  * @property {Property | HeightReference} [heightReference=HeightReference.NONE] A Property specifying what the height is relative to.
27
27
  * @property {Property | number} [extrudedHeight] A numeric Property specifying the altitude of the polygon's extruded face relative to the ellipsoid surface.
@@ -1173,8 +1173,9 @@ UniformState.prototype.updateFrustum = function (frustum) {
1173
1173
  this._oneOverLog2FarDepthFromNearPlusOne =
1174
1174
  1.0 / this._log2FarDepthFromNearPlusOne;
1175
1175
 
1176
- if (defined(frustum._offCenterFrustum)) {
1177
- frustum = frustum._offCenterFrustum;
1176
+ const offCenterFrustum = frustum.offCenterFrustum;
1177
+ if (defined(offCenterFrustum)) {
1178
+ frustum = offCenterFrustum;
1178
1179
  }
1179
1180
 
1180
1181
  this._frustumPlanes.x = frustum.top;
@@ -41,16 +41,16 @@ function demodernizeShader(input, isFragmentShader) {
41
41
  output = output.replaceAll(/out_FragData_(\d+)/g, `gl_FragData[$1]`);
42
42
  }
43
43
 
44
- // Replace out_FragColor with gl_FragColor.
45
- output = output.replaceAll(/out_FragColor/g, `gl_FragColor`);
46
- output = output.replaceAll(/out_FragColor\[(\d+)\]/g, `gl_FragColor[$1]`);
47
-
48
44
  // Remove all layout declarations for out_FragColor.
49
45
  output = output.replaceAll(
50
- /layout\s+\(location\s*=\s*0\)\s*out\s+vec4\s+out_FragColor/g,
46
+ /layout\s+\(location\s*=\s*0\)\s*out\s+vec4\s+out_FragColor;/g,
51
47
  ``
52
48
  );
53
49
 
50
+ // Replace out_FragColor with gl_FragColor.
51
+ output = output.replaceAll(/out_FragColor/g, `gl_FragColor`);
52
+ output = output.replaceAll(/out_FragColor\[(\d+)\]/g, `gl_FragColor[$1]`);
53
+
54
54
  if (/gl_FragDepth/.test(output)) {
55
55
  output = `#extension GL_EXT_frag_depth : enable\n${output}`;
56
56
  // Replace gl_FragDepth with gl_FragDepthEXT.
@@ -0,0 +1,12 @@
1
+ /**
2
+ * ArcGisBaseMapType enumerates the ArcGIS image tile layers that are supported by default.
3
+ *
4
+ * @enum {number}
5
+ * @see ArcGisMapServerImageryProvider
6
+ */
7
+ const ArcGisBaseMapType = {
8
+ SATELLITE: 1,
9
+ OCEANS: 2,
10
+ HILLSHADE: 3,
11
+ };
12
+ export default Object.freeze(ArcGisBaseMapType);