@@ -770,8 +770,11 @@ define([
770
770
var scratchRay = new Ray ( ) ;
771
771
var scratchCartographic = new Cartographic ( ) ;
772
772
var scratchPosition = new Cartesian3 ( ) ;
773
+ var scratchArray = [ ] ;
773
774
774
775
function updateHeights ( primitive , frameState ) {
776
+ var tryNextFrame = scratchArray ;
777
+ tryNextFrame . length = 0 ;
775
778
var tilesToUpdateHeights = primitive . _tileToUpdateHeights ;
776
779
var terrainProvider = primitive . _tileProvider . terrainProvider ;
777
780
@@ -782,14 +785,20 @@ define([
782
785
var mode = frameState . mode ;
783
786
var projection = frameState . mapProjection ;
784
787
var ellipsoid = projection . ellipsoid ;
788
+ var i ;
785
789
786
790
while ( tilesToUpdateHeights . length > 0 ) {
787
791
var tile = tilesToUpdateHeights [ 0 ] ;
792
+ if ( tile . state !== QuadtreeTileLoadState . DONE ) {
793
+ tryNextFrame . push ( tile ) ;
794
+ tilesToUpdateHeights . shift ( ) ;
795
+ primitive . _lastTileIndex = 0 ;
796
+ continue ;
797
+ }
788
798
var customData = tile . customData ;
789
799
var customDataLength = customData . length ;
790
800
791
801
var timeSliceMax = false ;
792
- var i ;
793
802
for ( i = primitive . _lastTileIndex ; i < customDataLength ; ++ i ) {
794
803
var data = customData [ i ] ;
795
804
@@ -869,6 +878,9 @@ define([
869
878
tilesToUpdateHeights . shift ( ) ;
870
879
}
871
880
}
881
+ for ( i = 0 ; i < tryNextFrame . length ; i ++ ) {
882
+ tilesToUpdateHeights . push ( tryNextFrame [ i ] ) ;
883
+ }
872
884
}
873
885
874
886
function createRenderCommandsForSelectedTiles ( primitive , frameState ) {
0 commit comments