소스 검색

quick pass add add refinement

Garrett Johnson 5 년 전
부모
커밋
9ee8e69d43
2개의 변경된 파일22개의 추가작업 그리고 11개의 파일을 삭제
  1. 1 0
      src/base/TilesRendererBase.js
  2. 21 11
      src/base/traverseFunctions.js

+ 1 - 0
src/base/TilesRendererBase.js

@@ -165,6 +165,7 @@ export class TilesRendererBase {
 		}
 
 		tile.parent = parentTile;
+		tile.refine = tile.refine || parentTile.refine;
 		tile.children = tile.children || [];
 		tile.__contentEmpty = ! tile.content || ! tile.content.uri;
 

+ 21 - 11
src/base/traverseFunctions.js

@@ -282,6 +282,7 @@ export function skipTraversal( tile, renderer ) {
 
 	const errorRequirement = ( renderer.errorTarget + 1 ) * renderer.errorThreshold;
 	const meetsSSE = tile.__error <= errorRequirement;
+	const includeTile = meetsSSE || tile.refine === 'ADD';
 	const hasContent = ! tile.__contentEmpty;
 	const loadedContent = isDownloadFinished( tile.__loadingState ) && ! tile.__contentEmpty;
 	const childrenWereVisible = tile.__childrenWereVisible;
@@ -290,14 +291,14 @@ export function skipTraversal( tile, renderer ) {
 
 	// Increment the relative depth of the node to the nearest rendered parent if it has content
 	// and is being rendered.
-	if ( meetsSSE && hasContent ) {
+	if ( includeTile && hasContent ) {
 
 		tile.__depthFromRenderedParent ++;
 
 	}
 
 	// If we've met the SSE requirements and we can load content then fire a fetch.
-	if ( meetsSSE && ! loadedContent && ! lruCache.isFull() && hasContent ) {
+	if ( includeTile && ! loadedContent && ! lruCache.isFull() && hasContent ) {
 
 		renderer.requestTileContents( tile );
 
@@ -309,7 +310,7 @@ export function skipTraversal( tile, renderer ) {
 	// load in.
 
 	// Skip the tile entirely if there's no content to load
-	if ( meetsSSE && ! allChildrenHaveContent && ! childrenWereVisible && hasContent ) {
+	if ( includeTile && ! allChildrenHaveContent && ! childrenWereVisible && hasContent ) {
 
 		if ( loadedContent ) {
 
@@ -322,22 +323,31 @@ export function skipTraversal( tile, renderer ) {
 			tile.__active = true;
 			stats.active ++;
 
-			// load the child content if we've found that we've been loaded so we can move down to the next tile
-			// layer when the data has loaded.
-			for ( let i = 0, l = children.length; i < l; i ++ ) {
+			if ( meetsSSE ) {
 
-				const c = children[ i ];
-				if ( isUsedThisFrame( c, frameCount ) && ! lruCache.isFull() ) {
+				// load the child content if we've found that we've been loaded so we can move down to the next tile
+				// layer when the data has loaded.
+				for ( let i = 0, l = children.length; i < l; i ++ ) {
 
-					c.__depthFromRenderedParent = tile.__depthFromRenderedParent + 1;
-					recursivelyLoadTiles( c, c.__depthFromRenderedParent, renderer );
+					const c = children[ i ];
+					if ( isUsedThisFrame( c, frameCount ) && ! lruCache.isFull() ) {
+
+						c.__depthFromRenderedParent = tile.__depthFromRenderedParent + 1;
+						recursivelyLoadTiles( c, c.__depthFromRenderedParent, renderer );
+
+					}
 
 				}
 
 			}
 
 		}
-		return;
+
+		if ( meetsSSE ) {
+
+			return;
+
+		}
 
 	}