Browse Source

Add more fixes

Garrett Johnson 5 years ago
parent
commit
177e52b78b
2 changed files with 26 additions and 1 deletions
  1. 1 0
      example/data/tileset-no-midtile-content.json
  2. 25 1
      src/base/traverseFunctions.js

File diff suppressed because it is too large
+ 1 - 0
example/data/tileset-no-midtile-content.json


+ 25 - 1
src/base/traverseFunctions.js

@@ -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( children[ i ], 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 ) {
@@ -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 );
 
 				}