|
@@ -52,6 +52,30 @@ function recursivelyMarkUsed( tile, frameCount, lruCache ) {
|
|
|
|
|
|
}
|
|
|
|
|
|
+function recursivelyLoadTiles( tile, depthFromRenderedParent, renderer ) {
|
|
|
+
|
|
|
+ if ( tile.__contentEmpty ) {
|
|
|
+
|
|
|
+ const children = tile.children;
|
|
|
+ for ( let i = 0, l = children.length; i < l; i ++ ) {
|
|
|
+
|
|
|
+ // don't increment depth to rendered parent here because we should treat
|
|
|
+ // the next layer of rendered children as just a single depth away for the
|
|
|
+ // sake of sorting.
|
|
|
+ const child = children[ i ];
|
|
|
+ child.__depthFromRenderedParent = depthFromRenderedParent;
|
|
|
+ recursivelyLoadTiles( child, depthFromRenderedParent, renderer );
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ } else {
|
|
|
+
|
|
|
+ renderer.requestTileContents( tile );
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+}
|
|
|
+
|
|
|
// Helper function for recursively traversing a tileset. If `beforeCb` returns `true` then the
|
|
|
// traversal will end early.
|
|
|
export function traverseSet( tile, beforeCb = null, afterCb = null, parent = null, depth = 0 ) {
|
|
@@ -121,12 +145,12 @@ export function determineFrustumSet( tile, renderer ) {
|
|
|
|
|
|
}
|
|
|
|
|
|
- }
|
|
|
+ // Early out if we've reached the maximum allowed depth.
|
|
|
+ if ( renderer.maxDepth > 0 && tile.__depth + 1 >= maxDepth ) {
|
|
|
|
|
|
- // Early out if we've reached the maximum allowed depth.
|
|
|
- if ( renderer.maxDepth > 0 && tile.__depth + 1 >= maxDepth ) {
|
|
|
+ return true;
|
|
|
|
|
|
- return true;
|
|
|
+ }
|
|
|
|
|
|
}
|
|
|
|
|
@@ -306,7 +330,7 @@ export function skipTraversal( tile, renderer ) {
|
|
|
if ( isUsedThisFrame( c, frameCount ) && ! lruCache.isFull() ) {
|
|
|
|
|
|
c.__depthFromRenderedParent = tile.__depthFromRenderedParent + 1;
|
|
|
- renderer.requestTileContents( c );
|
|
|
+ recursivelyLoadTiles( c, c.__depthFromRenderedParent, renderer );
|
|
|
|
|
|
}
|
|
|
|