@cesium/engine 13.0.0 → 14.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (150) hide show
  1. package/Build/Workers/{chunk-BZMHXDKV.js → chunk-3JBEPBPL.js} +13 -13
  2. package/Build/Workers/{chunk-W2E67GLE.js → chunk-3LYROPON.js} +13 -13
  3. package/Build/Workers/{chunk-3ZMTG4X5.js → chunk-3PIZQT3I.js} +4 -4
  4. package/Build/Workers/{chunk-Q4MTXEB7.js → chunk-3QLSKXKF.js} +6 -6
  5. package/Build/Workers/{chunk-EXDSJZ7J.js → chunk-4CHMVQTQ.js} +4 -4
  6. package/Build/Workers/{chunk-2TSF7N76.js → chunk-5KWRW7YL.js} +2 -2
  7. package/Build/Workers/{chunk-KRCUHV7P.js → chunk-5S5OOA6U.js} +1 -1
  8. package/Build/Workers/{chunk-MSKD73KW.js → chunk-77XPS7ZA.js} +10 -10
  9. package/Build/Workers/{chunk-2IIE2UZ3.js → chunk-7EO56M5R.js} +2 -2
  10. package/Build/Workers/{chunk-H7BML7HH.js → chunk-7UHKH6M3.js} +6 -6
  11. package/Build/Workers/{chunk-KCCTLUKK.js → chunk-7ZB2RVIQ.js} +10 -10
  12. package/Build/Workers/{chunk-OUIF26MQ.js → chunk-B4GSRXE3.js} +6 -6
  13. package/Build/Workers/{chunk-D3VPMNUR.js → chunk-CI2HEJFC.js} +13 -13
  14. package/Build/Workers/{chunk-Z7OYBX6P.js → chunk-D7ZBZPHV.js} +5 -5
  15. package/Build/Workers/{chunk-GJZQSAES.js → chunk-DT5NFR5C.js} +7 -7
  16. package/Build/Workers/{chunk-ZIWULRRD.js → chunk-ED6GLQTK.js} +1 -1
  17. package/Build/Workers/{chunk-CQDSGG3R.js → chunk-EWDGNOJE.js} +7 -7
  18. package/Build/Workers/{chunk-RGZWZ4PP.js → chunk-F4CUH4MR.js} +4 -4
  19. package/Build/Workers/{chunk-6HWW6KNV.js → chunk-FFBJDW4A.js} +6 -6
  20. package/Build/Workers/{chunk-FLPIQK2R.js → chunk-FX4R4MTH.js} +6 -6
  21. package/Build/Workers/{chunk-2OD54CUD.js → chunk-FYGLNDKG.js} +7 -7
  22. package/Build/Workers/{chunk-YDEZMDB7.js → chunk-G3BVMPWG.js} +2 -2
  23. package/Build/Workers/{chunk-YBDL7YPF.js → chunk-HEZHXDYB.js} +1 -1
  24. package/Build/Workers/{chunk-RIQGQMS4.js → chunk-HKHQ3EDR.js} +4 -4
  25. package/Build/Workers/{chunk-PMNQULFU.js → chunk-HUFQVUMY.js} +7 -7
  26. package/Build/Workers/{chunk-6ZOS2ACR.js → chunk-J7IH4EYI.js} +7 -7
  27. package/Build/Workers/{chunk-RR4M3ZGF.js → chunk-JHBPC4LK.js} +7 -7
  28. package/Build/Workers/{chunk-WXJY6NDI.js → chunk-JPDKYBLF.js} +13 -13
  29. package/Build/Workers/{chunk-W2DVQETH.js → chunk-K4AH3TDT.js} +35 -21
  30. package/Build/Workers/{chunk-S4SCKDK4.js → chunk-KHWLAQVA.js} +1 -1
  31. package/Build/Workers/{chunk-XQP37R5E.js → chunk-KM6MITPF.js} +5 -5
  32. package/Build/Workers/{chunk-H4Y7ADFL.js → chunk-KSYBJA4M.js} +5 -5
  33. package/Build/Workers/{chunk-3VHIUS7I.js → chunk-LJBJM6VI.js} +6 -6
  34. package/Build/Workers/{chunk-MMILY4S7.js → chunk-LNSWJ43X.js} +11 -11
  35. package/Build/Workers/{chunk-CUMDCSMT.js → chunk-LOZ4NKY3.js} +11 -11
  36. package/Build/Workers/{chunk-4IM6WQEI.js → chunk-LS3KVHYY.js} +6 -6
  37. package/Build/Workers/{chunk-GBXJIWAZ.js → chunk-MVM4JV5U.js} +9 -9
  38. package/Build/Workers/{chunk-HMMPNR4Z.js → chunk-N2XAJBC6.js} +12 -12
  39. package/Build/Workers/{chunk-FANORJU6.js → chunk-OMXHEJTK.js} +2 -2
  40. package/Build/Workers/{chunk-GNG3V432.js → chunk-PWF4EY5P.js} +4 -4
  41. package/Build/Workers/{chunk-KKVKSTWC.js → chunk-Q4ZVWJXX.js} +5 -5
  42. package/Build/Workers/{chunk-RC5N5SJL.js → chunk-SDIDRZDG.js} +7 -7
  43. package/Build/Workers/{chunk-BLTSMJIP.js → chunk-TVL3F7IU.js} +1 -1
  44. package/Build/Workers/{chunk-22NU5WU5.js → chunk-TY4DKOWR.js} +2 -2
  45. package/Build/Workers/{chunk-DIAH2ZTB.js → chunk-VCNOFQYH.js} +9 -9
  46. package/Build/Workers/{chunk-BFNZUP2C.js → chunk-WEHZP4SE.js} +14 -13
  47. package/Build/Workers/{chunk-PD2MCNV7.js → chunk-WVNLSTOF.js} +2 -2
  48. package/Build/Workers/{chunk-T5H7YWC7.js → chunk-XK4OP6VA.js} +17 -17
  49. package/Build/Workers/{chunk-NVFEDMX4.js → chunk-YJX7X577.js} +15 -15
  50. package/Build/Workers/{chunk-4HS475MU.js → chunk-Z3QWTHI7.js} +14 -14
  51. package/Build/Workers/{chunk-OZZD3VY4.js → chunk-ZGFIT57T.js} +17 -17
  52. package/Build/Workers/{chunk-JISDBAYP.js → chunk-ZMNLEL6W.js} +5 -5
  53. package/Build/Workers/combineGeometry.js +22 -22
  54. package/Build/Workers/createBoxGeometry.js +16 -16
  55. package/Build/Workers/createBoxOutlineGeometry.js +14 -14
  56. package/Build/Workers/createCircleGeometry.js +24 -24
  57. package/Build/Workers/createCircleOutlineGeometry.js +17 -17
  58. package/Build/Workers/createCoplanarPolygonGeometry.js +31 -31
  59. package/Build/Workers/createCoplanarPolygonOutlineGeometry.js +29 -29
  60. package/Build/Workers/createCorridorGeometry.js +27 -27
  61. package/Build/Workers/createCorridorOutlineGeometry.js +26 -26
  62. package/Build/Workers/createCylinderGeometry.js +18 -18
  63. package/Build/Workers/createCylinderOutlineGeometry.js +16 -16
  64. package/Build/Workers/createEllipseGeometry.js +24 -24
  65. package/Build/Workers/createEllipseOutlineGeometry.js +17 -17
  66. package/Build/Workers/createEllipsoidGeometry.js +17 -17
  67. package/Build/Workers/createEllipsoidOutlineGeometry.js +16 -16
  68. package/Build/Workers/createFrustumGeometry.js +16 -16
  69. package/Build/Workers/createFrustumOutlineGeometry.js +16 -16
  70. package/Build/Workers/createGeometry.js +22 -22
  71. package/Build/Workers/createGroundPolylineGeometry.js +20 -20
  72. package/Build/Workers/createPlaneGeometry.js +14 -14
  73. package/Build/Workers/createPlaneOutlineGeometry.js +13 -13
  74. package/Build/Workers/createPolygonGeometry.js +30 -30
  75. package/Build/Workers/createPolygonOutlineGeometry.js +28 -28
  76. package/Build/Workers/createPolylineGeometry.js +23 -23
  77. package/Build/Workers/createPolylineVolumeGeometry.js +29 -29
  78. package/Build/Workers/createPolylineVolumeOutlineGeometry.js +25 -25
  79. package/Build/Workers/createRectangleGeometry.js +25 -25
  80. package/Build/Workers/createRectangleOutlineGeometry.js +18 -18
  81. package/Build/Workers/createSimplePolylineGeometry.js +21 -21
  82. package/Build/Workers/createSphereGeometry.js +17 -17
  83. package/Build/Workers/createSphereOutlineGeometry.js +16 -16
  84. package/Build/Workers/createTaskProcessorWorker.js +3 -3
  85. package/Build/Workers/createVectorTileClampedPolylines.js +13 -13
  86. package/Build/Workers/createVectorTileGeometries.js +22 -22
  87. package/Build/Workers/createVectorTilePoints.js +12 -12
  88. package/Build/Workers/createVectorTilePolygons.js +20 -20
  89. package/Build/Workers/createVectorTilePolylines.js +13 -13
  90. package/Build/Workers/createVerticesFromGoogleEarthEnterpriseBuffer.js +20 -20
  91. package/Build/Workers/createVerticesFromHeightmap.js +20 -20
  92. package/Build/Workers/createVerticesFromQuantizedTerrainMesh.js +17 -17
  93. package/Build/Workers/createWallGeometry.js +22 -22
  94. package/Build/Workers/createWallOutlineGeometry.js +21 -21
  95. package/Build/Workers/decodeDraco.js +15 -14
  96. package/Build/Workers/decodeGoogleEarthEnterprisePacket.js +5 -5
  97. package/Build/Workers/decodeI3S.js +10 -10
  98. package/Build/Workers/transcodeKTX2.js +7 -7
  99. package/Build/Workers/transferTypedArrayTest.js +1 -1
  100. package/Build/Workers/upsampleQuantizedTerrainMesh.js +20 -20
  101. package/Source/Core/Check.d.ts +2 -1
  102. package/Source/Core/Color.js +3 -3
  103. package/Source/Core/Credit.js +3 -3
  104. package/Source/Core/DistanceDisplayCondition.js +3 -3
  105. package/Source/Core/ITwinPlatform.js +3 -38
  106. package/Source/Core/Ion.js +1 -1
  107. package/Source/Core/JulianDate.js +14 -7
  108. package/Source/Core/OrientedBoundingBox.js +2 -2
  109. package/Source/Core/Spherical.js +3 -3
  110. package/Source/Core/defined.d.ts +11 -0
  111. package/Source/Core/writeTextToCanvas.js +0 -1
  112. package/Source/DataSources/BoundingSphereState.js +3 -3
  113. package/Source/DataSources/DataSourceClock.js +1 -1
  114. package/Source/DataSources/DataSourceDisplay.js +5 -2
  115. package/Source/DataSources/ModelGraphics.js +23 -1
  116. package/Source/DataSources/ModelVisualizer.js +22 -1
  117. package/Source/Renderer/AutomaticUniforms.js +2 -2
  118. package/Source/Scene/ArcGisMapService.js +1 -1
  119. package/Source/Scene/Billboard.js +1 -1
  120. package/Source/Scene/Cesium3DTile.js +56 -28
  121. package/Source/Scene/Cesium3DTilesVoxelProvider.js +17 -0
  122. package/Source/Scene/Cesium3DTileset.js +1 -1
  123. package/Source/Scene/ClippingPolygon.js +2 -2
  124. package/Source/Scene/DynamicEnvironmentMapManager.js +123 -66
  125. package/Source/Scene/GltfDracoLoader.js +45 -0
  126. package/Source/Scene/GltfIndexBufferLoader.js +5 -0
  127. package/Source/Scene/GltfLoader.js +17 -2
  128. package/Source/Scene/GltfVertexBufferLoader.js +13 -0
  129. package/Source/Scene/ITwinData.js +116 -0
  130. package/Source/Scene/ImageryLayer.js +1 -1
  131. package/Source/Scene/Label.js +1 -1
  132. package/Source/Scene/LabelCollection.js +0 -11
  133. package/Source/Scene/Model/Model.js +1 -1
  134. package/Source/Scene/Multiple3DTileContent.js +21 -8
  135. package/Source/Scene/PointPrimitive.js +1 -1
  136. package/Source/Scene/ResourceCache.js +17 -1
  137. package/Source/Scene/VoxelPrimitive.js +124 -0
  138. package/Source/Scene/VoxelProvider.js +10 -0
  139. package/Source/Scene/VoxelTraversal.js +88 -12
  140. package/Source/Scene/WebMapTileServiceImageryProvider.js +2 -2
  141. package/Source/Scene/createGooglePhotorealistic3DTileset.js +5 -8
  142. package/Source/Shaders/DepthPlaneVS.glsl +1 -1
  143. package/Source/Shaders/DepthPlaneVS.js +1 -1
  144. package/Source/Shaders/PolylineCommon.glsl +1 -1
  145. package/Source/Shaders/PolylineCommon.js +1 -1
  146. package/Source/Widget/CesiumWidget.js +16 -10
  147. package/Source/Workers/decodeDraco.js +4 -4
  148. package/index.d.ts +178 -42
  149. package/index.js +247 -247
  150. package/package.json +1 -1
@@ -143,6 +143,12 @@ function VoxelTraversal(
143
143
  */
144
144
  this._binaryTreeKeyframeWeighting = new Array(keyframeCount);
145
145
 
146
+ /**
147
+ * @type {boolean}
148
+ * @private
149
+ */
150
+ this._initialTilesLoaded = false;
151
+
146
152
  const binaryTreeKeyframeWeighting = this._binaryTreeKeyframeWeighting;
147
153
  binaryTreeKeyframeWeighting[0] = 0;
148
154
  binaryTreeKeyframeWeighting[keyframeCount - 1] = 0;
@@ -316,13 +322,17 @@ VoxelTraversal.prototype.update = function (
316
322
  const timestamp1 = getTimestamp();
317
323
  generateOctree(this, sampleCount, levelBlendFactor);
318
324
  const timestamp2 = getTimestamp();
319
-
320
- if (this._debugPrint) {
325
+ const checkEventListeners =
326
+ primitive.loadProgress.numberOfListeners > 0 ||
327
+ primitive.allTilesLoaded.numberOfListeners > 0 ||
328
+ primitive.initialTilesLoaded.numberOfListeners > 0;
329
+ if (this._debugPrint || checkEventListeners) {
321
330
  const loadAndUnloadTimeMs = timestamp1 - timestamp0;
322
331
  const generateOctreeTimeMs = timestamp2 - timestamp1;
323
332
  const totalTimeMs = timestamp2 - timestamp0;
324
- printDebugInformation(
333
+ postPassesUpdate(
325
334
  this,
335
+ frameState,
326
336
  loadAndUnloadTimeMs,
327
337
  generateOctreeTimeMs,
328
338
  totalTimeMs,
@@ -418,6 +428,21 @@ function requestData(that, keyframeNode) {
418
428
  }
419
429
 
420
430
  const provider = that._primitive._provider;
431
+ const { keyframe, spatialNode } = keyframeNode;
432
+ if (
433
+ defined(provider.availableLevels) &&
434
+ spatialNode.level >= provider.availableLevels
435
+ ) {
436
+ return;
437
+ }
438
+
439
+ const requestOptions = {
440
+ tileLevel: spatialNode.level,
441
+ tileX: spatialNode.x,
442
+ tileY: spatialNode.y,
443
+ tileZ: spatialNode.z,
444
+ keyframe: keyframe,
445
+ };
421
446
 
422
447
  function postRequestSuccess(result) {
423
448
  that._simultaneousRequestCount--;
@@ -443,27 +468,25 @@ function requestData(that, keyframeNode) {
443
468
  keyframeNode.metadata[i] = data;
444
469
  // State is received only when all metadata requests have been received
445
470
  keyframeNode.state = KeyframeNode.LoadState.RECEIVED;
471
+ that._primitive.tileLoad.raiseEvent();
446
472
  } else {
447
473
  keyframeNode.state = KeyframeNode.LoadState.FAILED;
448
474
  break;
449
475
  }
450
476
  }
451
477
  }
478
+ if (keyframeNode.state === KeyframeNode.LoadState.FAILED) {
479
+ that._primitive.tileFailed.raiseEvent();
480
+ }
452
481
  }
453
482
 
454
483
  function postRequestFailure() {
455
484
  that._simultaneousRequestCount--;
456
485
  keyframeNode.state = KeyframeNode.LoadState.FAILED;
486
+ that._primitive.tileFailed.raiseEvent();
457
487
  }
458
488
 
459
- const { keyframe, spatialNode } = keyframeNode;
460
- const promise = provider.requestData({
461
- tileLevel: spatialNode.level,
462
- tileX: spatialNode.x,
463
- tileY: spatialNode.y,
464
- tileZ: spatialNode.z,
465
- keyframe: keyframe,
466
- });
489
+ const promise = provider.requestData(requestOptions);
467
490
 
468
491
  if (defined(promise)) {
469
492
  that._simultaneousRequestCount++;
@@ -471,6 +494,7 @@ function requestData(that, keyframeNode) {
471
494
  promise.then(postRequestSuccess).catch(postRequestFailure);
472
495
  } else {
473
496
  keyframeNode.state = KeyframeNode.LoadState.FAILED;
497
+ that._primitive.tileFailed.raiseEvent();
474
498
  }
475
499
  }
476
500
 
@@ -645,6 +669,7 @@ function loadAndUnload(that, frameState) {
645
669
  destroyedCount++;
646
670
 
647
671
  const discardNode = keyframeNodesInMegatexture[addNodeIndex];
672
+ that._primitive.tileUnload.raiseEvent();
648
673
  discardNode.spatialNode.destroyKeyframeNode(
649
674
  discardNode,
650
675
  that.megatextures,
@@ -703,8 +728,9 @@ function keyframePriority(previousKeyframe, keyframe, nextKeyframe, traversal) {
703
728
  *
704
729
  * @private
705
730
  */
706
- function printDebugInformation(
731
+ function postPassesUpdate(
707
732
  that,
733
+ frameState,
708
734
  loadAndUnloadTimeMs,
709
735
  generateOctreeTimeMs,
710
736
  totalTimeMs,
@@ -758,6 +784,55 @@ function printDebugInformation(
758
784
  }
759
785
  traverseRecursive(rootNode);
760
786
 
787
+ const numberOfPendingRequests =
788
+ loadStateByCount[KeyframeNode.LoadState.RECEIVING];
789
+ const numberOfTilesProcessing =
790
+ loadStateByCount[KeyframeNode.LoadState.RECEIVED];
791
+
792
+ const progressChanged =
793
+ numberOfPendingRequests !==
794
+ that._primitive._statistics.numberOfPendingRequests ||
795
+ numberOfTilesProcessing !==
796
+ that._primitive._statistics.numberOfTilesProcessing;
797
+
798
+ if (progressChanged) {
799
+ frameState.afterRender.push(function () {
800
+ that._primitive.loadProgress.raiseEvent(
801
+ numberOfPendingRequests,
802
+ numberOfTilesProcessing,
803
+ );
804
+
805
+ return true;
806
+ });
807
+ }
808
+
809
+ that._primitive._statistics.numberOfPendingRequests = numberOfPendingRequests;
810
+ that._primitive._statistics.numberOfTilesProcessing = numberOfTilesProcessing;
811
+
812
+ const tilesLoaded =
813
+ numberOfPendingRequests === 0 && numberOfTilesProcessing === 0;
814
+
815
+ // Events are raised (added to the afterRender queue) here since promises
816
+ // may resolve outside of the update loop that then raise events, e.g.,
817
+ // model's readyEvent
818
+ if (progressChanged && tilesLoaded) {
819
+ frameState.afterRender.push(function () {
820
+ that._primitive.allTilesLoaded.raiseEvent();
821
+ return true;
822
+ });
823
+ if (!that._initialTilesLoaded) {
824
+ that._initialTilesLoaded = true;
825
+ frameState.afterRender.push(function () {
826
+ that._primitive.initialTilesLoaded.raiseEvent();
827
+ return true;
828
+ });
829
+ }
830
+ }
831
+
832
+ if (!that._debugPrint) {
833
+ return;
834
+ }
835
+
761
836
  const loadedKeyframeStatistics = `KEYFRAMES: ${
762
837
  loadStatesByKeyframe[KeyframeNode.LoadState.LOADED]
763
838
  }`;
@@ -892,6 +967,7 @@ function generateOctree(that, sampleCount, levelBlendFactor) {
892
967
  } else {
893
968
  // Store the leaf node information instead
894
969
  // Recursion stops here because there are no renderable children
970
+ that._primitive.tileVisible.raiseEvent();
895
971
  if (useLeafNodes) {
896
972
  const baseIdx = leafNodeCount * 5;
897
973
  const keyframeNode = node.renderableKeyframeNodePrevious;
@@ -57,7 +57,7 @@ const defaultParameters = Object.freeze({
57
57
  * @example
58
58
  * // Example 1. USGS shaded relief tiles (KVP)
59
59
  * const shadedRelief1 = new Cesium.WebMapTileServiceImageryProvider({
60
- * url : 'http://basemap.nationalmap.gov/arcgis/rest/services/USGSShadedReliefOnly/MapServer/WMTS',
60
+ * url : 'https://basemap.nationalmap.gov/arcgis/rest/services/USGSShadedReliefOnly/MapServer/WMTS',
61
61
  * layer : 'USGSShadedReliefOnly',
62
62
  * style : 'default',
63
63
  * format : 'image/jpeg',
@@ -71,7 +71,7 @@ const defaultParameters = Object.freeze({
71
71
  * @example
72
72
  * // Example 2. USGS shaded relief tiles (RESTful)
73
73
  * const shadedRelief2 = new Cesium.WebMapTileServiceImageryProvider({
74
- * url : 'http://basemap.nationalmap.gov/arcgis/rest/services/USGSShadedReliefOnly/MapServer/WMTS/tile/1.0.0/USGSShadedReliefOnly/{Style}/{TileMatrixSet}/{TileMatrix}/{TileRow}/{TileCol}.jpg',
74
+ * url : 'https://basemap.nationalmap.gov/arcgis/rest/services/USGSShadedReliefOnly/MapServer/WMTS/tile/1.0.0/USGSShadedReliefOnly/{Style}/{TileMatrixSet}/{TileMatrix}/{TileRow}/{TileCol}.jpg',
75
75
  * layer : 'USGSShadedReliefOnly',
76
76
  * style : 'default',
77
77
  * format : 'image/jpeg',
@@ -1,11 +1,11 @@
1
1
  import Cesium3DTileset from "./Cesium3DTileset.js";
2
+ import Check from "../Core/Check.js";
2
3
  import defaultValue from "../Core/defaultValue.js";
3
4
  import defined from "../Core/defined.js";
4
5
  import IonResource from "../Core/IonResource.js";
5
6
  import GoogleMaps from "../Core/GoogleMaps.js";
6
7
  import Resource from "../Core/Resource.js";
7
8
  import oneTimeWarning from "../Core/oneTimeWarning.js";
8
- import deprecationWarning from "../Core/deprecationWarning.js";
9
9
 
10
10
  /**
11
11
  * Creates a {@link Cesium3DTileset} instance for the Google Photorealistic 3D
@@ -73,13 +73,10 @@ async function createGooglePhotorealistic3DTileset(apiOptions, tilesetOptions) {
73
73
  );
74
74
 
75
75
  apiOptions = defaultValue(apiOptions, defaultValue.EMPTY_OBJECT);
76
- if (typeof apiOptions === "string") {
77
- deprecationWarning(
78
- "createGooglePhotorealistic3DTileset(key)",
79
- "createGooglePhotorealistic3DTileset(key) has been deprecated. It is replaced by createGooglePhotorealistic3DTileset({key}). It will be removed in Cesium 1.126.",
80
- );
81
- apiOptions = { key: apiOptions };
82
- }
76
+ //>>includeStart('debug', pragmas.debug);
77
+ Check.typeOf.object("apiOptions", apiOptions);
78
+ //>>includeEnd('debug');
79
+
83
80
  if (!apiOptions.onlyUsingWithGoogleGeocoder) {
84
81
  oneTimeWarning(
85
82
  "google-tiles-with-google-geocoder",
@@ -5,7 +5,7 @@ out vec4 positionEC;
5
5
  void main()
6
6
  {
7
7
  positionEC = czm_modelView * position;
8
- gl_Position = czm_modelViewProjection * position;
8
+ gl_Position = czm_projection * positionEC;
9
9
 
10
10
  czm_vertexLogDepth();
11
11
  }
@@ -6,7 +6,7 @@ out vec4 positionEC;\n\
6
6
  void main()\n\
7
7
  {\n\
8
8
  positionEC = czm_modelView * position;\n\
9
- gl_Position = czm_modelViewProjection * position;\n\
9
+ gl_Position = czm_projection * positionEC;\n\
10
10
  \n\
11
11
  czm_vertexLogDepth();\n\
12
12
  }\n\
@@ -160,7 +160,7 @@ vec4 getPolylineWindowCoordinatesEC(vec4 positionEC, vec4 prevEC, vec4 nextEC, f
160
160
  vec2 u = -thisSegmentForwardWC;
161
161
  vec2 v = leftWC;
162
162
  float sinAngle = abs(u.x * v.y - u.y * v.x);
163
- expandWidth = clamp(expandWidth / sinAngle, 0.0, width * 2.0);
163
+ expandWidth = clamp(expandWidth / sinAngle, 0.0, width * 0.5);
164
164
  }
165
165
 
166
166
  vec2 offset = leftWC * expandDirection * expandWidth * czm_pixelRatio;
@@ -161,7 +161,7 @@ vec4 getPolylineWindowCoordinatesEC(vec4 positionEC, vec4 prevEC, vec4 nextEC, f
161
161
  vec2 u = -thisSegmentForwardWC;\n\
162
162
  vec2 v = leftWC;\n\
163
163
  float sinAngle = abs(u.x * v.y - u.y * v.x);\n\
164
- expandWidth = clamp(expandWidth / sinAngle, 0.0, width * 2.0);\n\
164
+ expandWidth = clamp(expandWidth / sinAngle, 0.0, width * 0.5);\n\
165
165
  }\n\
166
166
  \n\
167
167
  vec2 offset = leftWC * expandDirection * expandWidth * czm_pixelRatio;\n\
@@ -1134,8 +1134,6 @@ CesiumWidget.prototype._updateCanAnimate = function (isUpdated) {
1134
1134
  this._clock.canAnimate = isUpdated;
1135
1135
  };
1136
1136
 
1137
- const boundingSphereScratch = new BoundingSphere();
1138
-
1139
1137
  /**
1140
1138
  * @private
1141
1139
  */
@@ -1148,15 +1146,15 @@ CesiumWidget.prototype._onTick = function (clock) {
1148
1146
  }
1149
1147
 
1150
1148
  const entityView = this._entityView;
1151
- if (defined(entityView)) {
1149
+ if (defined(entityView) && defined(entityView.boundingSphere)) {
1152
1150
  const trackedEntity = this._trackedEntity;
1153
1151
  const trackedState = this._dataSourceDisplay.getBoundingSphere(
1154
1152
  trackedEntity,
1155
- true,
1156
- boundingSphereScratch,
1153
+ false,
1154
+ entityView.boundingSphere,
1157
1155
  );
1158
1156
  if (trackedState === BoundingSphereState.DONE) {
1159
- entityView.update(time, boundingSphereScratch);
1157
+ entityView.update(time, entityView.boundingSphere);
1160
1158
  }
1161
1159
  }
1162
1160
  };
@@ -1414,6 +1412,8 @@ CesiumWidget.prototype._postRender = function () {
1414
1412
  updateTrackedEntity(this);
1415
1413
  };
1416
1414
 
1415
+ const zoomTargetBoundingSphereScratch = new BoundingSphere();
1416
+
1417
1417
  function updateZoomTarget(widget) {
1418
1418
  const target = widget._zoomTarget;
1419
1419
  if (!defined(target) || widget.scene.mode === SceneMode.MORPHING) {
@@ -1511,13 +1511,15 @@ function updateZoomTarget(widget) {
1511
1511
  const state = widget._dataSourceDisplay.getBoundingSphere(
1512
1512
  entities[i],
1513
1513
  false,
1514
- boundingSphereScratch,
1514
+ zoomTargetBoundingSphereScratch,
1515
1515
  );
1516
1516
 
1517
1517
  if (state === BoundingSphereState.PENDING) {
1518
1518
  return;
1519
1519
  } else if (state !== BoundingSphereState.FAILED) {
1520
- boundingSpheres.push(BoundingSphere.clone(boundingSphereScratch));
1520
+ boundingSpheres.push(
1521
+ BoundingSphere.clone(zoomTargetBoundingSphereScratch),
1522
+ );
1521
1523
  }
1522
1524
  }
1523
1525
 
@@ -1552,6 +1554,8 @@ function updateZoomTarget(widget) {
1552
1554
  }
1553
1555
  }
1554
1556
 
1557
+ const trackedEntityBoundingSphereScratch = new BoundingSphere();
1558
+
1555
1559
  function updateTrackedEntity(widget) {
1556
1560
  if (!widget._needTrackedEntityUpdate) {
1557
1561
  return;
@@ -1577,7 +1581,7 @@ function updateTrackedEntity(widget) {
1577
1581
  const state = widget._dataSourceDisplay.getBoundingSphere(
1578
1582
  trackedEntity,
1579
1583
  false,
1580
- boundingSphereScratch,
1584
+ trackedEntityBoundingSphereScratch,
1581
1585
  );
1582
1586
  if (state === BoundingSphereState.PENDING) {
1583
1587
  return;
@@ -1599,7 +1603,9 @@ function updateTrackedEntity(widget) {
1599
1603
  }
1600
1604
 
1601
1605
  const bs =
1602
- state !== BoundingSphereState.FAILED ? boundingSphereScratch : undefined;
1606
+ state !== BoundingSphereState.FAILED
1607
+ ? trackedEntityBoundingSphereScratch
1608
+ : undefined;
1603
1609
  widget._entityView = new EntityView(trackedEntity, scene, scene.ellipsoid);
1604
1610
  widget._entityView.update(currentTime, bs);
1605
1611
  widget._needTrackedEntityUpdate = false;
@@ -295,11 +295,11 @@ function decodePointCloud(parameters) {
295
295
  function decodePrimitive(parameters) {
296
296
  const dracoDecoder = new draco.Decoder();
297
297
 
298
- // Skip all parameter types except generic
299
- const attributesToSkip = ["POSITION", "NORMAL", "COLOR", "TEX_COORD"];
300
298
  if (parameters.dequantizeInShader) {
301
- for (let i = 0; i < attributesToSkip.length; ++i) {
302
- dracoDecoder.SkipAttributeTransform(draco[attributesToSkip[i]]);
299
+ for (let i = 0; i < parameters.attributesToSkipTransform.length; ++i) {
300
+ dracoDecoder.SkipAttributeTransform(
301
+ draco[parameters.attributesToSkipTransform[i]],
302
+ );
303
303
  }
304
304
  }
305
305