@@ -29,6 +29,7 @@ define([
29
29
'./Cesium3DTileContentState' ,
30
30
'./Cesium3DTileOptimizations' ,
31
31
'./Cesium3DTileRefine' ,
32
+ './Cesium3DTilesetAsyncTraversal' ,
32
33
'./Cesium3DTilesetCache' ,
33
34
'./Cesium3DTilesetStatistics' ,
34
35
'./Cesium3DTilesetTraversal' ,
@@ -73,6 +74,7 @@ define([
73
74
Cesium3DTileContentState ,
74
75
Cesium3DTileOptimizations ,
75
76
Cesium3DTileRefine ,
77
+ Cesium3DTilesetAsyncTraversal ,
76
78
Cesium3DTilesetCache ,
77
79
Cesium3DTilesetStatistics ,
78
80
Cesium3DTilesetTraversal ,
@@ -204,6 +206,7 @@ define([
204
206
this . _statistics = new Cesium3DTilesetStatistics ( ) ;
205
207
this . _statisticsLastRender = new Cesium3DTilesetStatistics ( ) ;
206
208
this . _statisticsLastPick = new Cesium3DTilesetStatistics ( ) ;
209
+ this . _statisticsLastAsync = new Cesium3DTilesetStatistics ( ) ;
207
210
208
211
this . _tilesLoaded = false ;
209
212
this . _initialTilesLoaded = false ;
@@ -1707,9 +1710,9 @@ define([
1707
1710
function updateTiles ( tileset , frameState ) {
1708
1711
tileset . _styleEngine . applyStyle ( tileset , frameState ) ;
1709
1712
1713
+ var statistics = tileset . _statistics ;
1710
1714
var passes = frameState . passes ;
1711
1715
var isRender = passes . render ;
1712
- var statistics = tileset . _statistics ;
1713
1716
var commandList = frameState . commandList ;
1714
1717
var numberOfInitialCommands = commandList . length ;
1715
1718
var selectedTiles = tileset . _selectedTiles ;
@@ -1899,69 +1902,76 @@ define([
1899
1902
1900
1903
///////////////////////////////////////////////////////////////////////////
1901
1904
1902
- /**
1903
- * @private
1904
- */
1905
- Cesium3DTileset . prototype . update = function ( frameState ) {
1905
+ function update ( tileset , frameState ) {
1906
1906
if ( frameState . mode === SceneMode . MORPHING ) {
1907
- return ;
1907
+ return false ;
1908
1908
}
1909
1909
1910
- if ( ! this . show || ! this . ready ) {
1911
- return ;
1910
+ if ( ! tileset . show || ! tileset . ready ) {
1911
+ return false ;
1912
1912
}
1913
1913
1914
- if ( ! defined ( this . _loadTimestamp ) ) {
1915
- this . _loadTimestamp = JulianDate . clone ( frameState . time ) ;
1914
+ if ( ! defined ( tileset . _loadTimestamp ) ) {
1915
+ tileset . _loadTimestamp = JulianDate . clone ( frameState . time ) ;
1916
1916
}
1917
1917
1918
1918
// Update clipping planes
1919
- var clippingPlanes = this . _clippingPlanes ;
1920
- this . _clippingPlanesOriginMatrixDirty = true ;
1919
+ var clippingPlanes = tileset . _clippingPlanes ;
1920
+ tileset . _clippingPlanesOriginMatrixDirty = true ;
1921
1921
if ( defined ( clippingPlanes ) && clippingPlanes . enabled ) {
1922
1922
clippingPlanes . update ( frameState ) ;
1923
1923
}
1924
1924
1925
- this . _timeSinceLoad = Math . max ( JulianDate . secondsDifference ( frameState . time , this . _loadTimestamp ) * 1000 , 0.0 ) ;
1925
+ tileset . _timeSinceLoad = Math . max ( JulianDate . secondsDifference ( frameState . time , tileset . _loadTimestamp ) * 1000 , 0.0 ) ;
1926
1926
1927
- this . _skipLevelOfDetail = this . skipLevelOfDetail && ! defined ( this . _classificationType ) && ! this . _disableSkipLevelOfDetail && ! this . _allTilesAdditive ;
1927
+ tileset . _skipLevelOfDetail = tileset . skipLevelOfDetail && ! defined ( tileset . _classificationType ) && ! tileset . _disableSkipLevelOfDetail && ! tileset . _allTilesAdditive ;
1928
1928
1929
1929
// Do out-of-core operations (new content requests, cache removal,
1930
1930
// process new tiles) only during the render pass.
1931
1931
var passes = frameState . passes ;
1932
1932
var isRender = passes . render ;
1933
1933
var isPick = passes . pick ;
1934
+ var isAsync = passes . async ;
1934
1935
1935
- var statistics = this . _statistics ;
1936
+ var statistics = tileset . _statistics ;
1936
1937
statistics . clear ( ) ;
1937
1938
1938
- if ( this . dynamicScreenSpaceError ) {
1939
- updateDynamicScreenSpaceError ( this , frameState ) ;
1939
+ if ( tileset . dynamicScreenSpaceError ) {
1940
+ updateDynamicScreenSpaceError ( tileset , frameState ) ;
1940
1941
}
1941
1942
1942
1943
if ( isRender ) {
1943
- this . _cache . reset ( ) ;
1944
+ tileset . _cache . reset ( ) ;
1945
+ }
1946
+
1947
+ var ready ;
1948
+
1949
+ if ( isAsync ) {
1950
+ ready = Cesium3DTilesetAsyncTraversal . selectTiles ( tileset , frameState ) ;
1951
+ } else {
1952
+ ready = Cesium3DTilesetTraversal . selectTiles ( tileset , frameState ) ;
1944
1953
}
1945
1954
1946
- Cesium3DTilesetTraversal . selectTiles ( this , frameState ) ;
1955
+ if ( isRender || isAsync ) {
1956
+ requestTiles ( tileset ) ;
1957
+ }
1947
1958
1948
1959
if ( isRender ) {
1949
- requestTiles ( this ) ;
1950
- processTiles ( this , frameState ) ;
1960
+ processTiles ( tileset , frameState ) ;
1951
1961
}
1952
1962
1953
- updateTiles ( this , frameState ) ;
1963
+ updateTiles ( tileset , frameState ) ;
1954
1964
1955
1965
if ( isRender ) {
1956
- unloadTiles ( this ) ;
1966
+ unloadTiles ( tileset ) ;
1957
1967
1958
1968
// Events are raised (added to the afterRender queue) here since promises
1959
1969
// may resolve outside of the update loop that then raise events, e.g.,
1960
1970
// model's readyPromise.
1961
- raiseLoadProgressEvent ( this , frameState ) ;
1971
+ raiseLoadProgressEvent ( tileset , frameState ) ;
1962
1972
1963
1973
if ( statistics . selected !== 0 ) {
1964
- var credits = this . _credits ;
1974
+ var credits = tileset . _credits ;
1965
1975
if ( defined ( credits ) ) {
1966
1976
var length = credits . length ;
1967
1977
for ( var i = 0 ; i < length ; i ++ ) {
@@ -1972,8 +1982,24 @@ define([
1972
1982
}
1973
1983
1974
1984
// Update last statistics
1975
- var statisticsLast = isPick ? this . _statisticsLastPick : this . _statisticsLastRender ;
1985
+ var statisticsLast = isAsync ? tileset . _statisticsLastAsync : ( isPick ? tileset . _statisticsLastPick : tileset . _statisticsLastRender ) ;
1976
1986
Cesium3DTilesetStatistics . clone ( statistics , statisticsLast ) ;
1987
+
1988
+ return ready ;
1989
+ }
1990
+
1991
+ /**
1992
+ * @private
1993
+ */
1994
+ Cesium3DTileset . prototype . update = function ( frameState ) {
1995
+ update ( this , frameState ) ;
1996
+ } ;
1997
+
1998
+ /**
1999
+ * @private
2000
+ */
2001
+ Cesium3DTileset . prototype . updateAsync = function ( frameState ) {
2002
+ return update ( this , frameState ) ;
1977
2003
} ;
1978
2004
1979
2005
/**
0 commit comments