瀏覽代碼

remove activeset and visibleset in favor of activetiles and visibletiles

Garrett Johnson 5 年之前
父節點
當前提交
f5dfdfba83
共有 2 個文件被更改,包括 9 次插入19 次删除
  1. 2 12
      src/three/TilesRenderer.js
  2. 7 7
      src/three/raycastTraverse.js

+ 2 - 12
src/three/TilesRenderer.js

@@ -50,9 +50,7 @@ export class TilesRenderer extends TilesRendererBase {
 		this.cameras = [];
 		this.resolution = new Vector2();
 		this.frustums = [];
-		this.activeSet = new Set();
 		this.activeTiles = new Set();
-		this.visibleSet = new Set();
 		this.visibleTiles = new Set();
 
 	}
@@ -89,7 +87,7 @@ export class TilesRenderer extends TilesRendererBase {
 
 		if ( raycaster.firstHitOnly ) {
 
-			const hit = raycastTraverseFirstHit( this.root, this.group, this.activeSet, raycaster );
+			const hit = raycastTraverseFirstHit( this.root, this.group, this.activeTiles, raycaster );
 			if ( hit ) {
 
 				intersects.push( hit );
@@ -98,7 +96,7 @@ export class TilesRenderer extends TilesRendererBase {
 
 		} else {
 
-			raycastTraverse( this.root, this.group, this.activeSet, raycaster, intersects );
+			raycastTraverse( this.root, this.group, this.activeTiles, raycaster, intersects );
 
 		}
 
@@ -273,7 +271,6 @@ export class TilesRenderer extends TilesRendererBase {
 		tile._loadIndex = tile._loadIndex || 0;
 		tile._loadIndex ++;
 
-		// TODO: 90 degree rotation must be applied to GLTF file to resolve "up"
 		const loadIndex = tile._loadIndex;
 		return new B3DMLoader().parse( buffer ).then( res => {
 
@@ -390,9 +387,7 @@ export class TilesRenderer extends TilesRendererBase {
 
 	setTileVisible( tile, visible ) {
 
-		// TODO: save the whole tile object in the visible set and active set
 		const scene = tile.cached.scene;
-		const visibleSet = this.visibleSet;
 		const visibleTiles = this.visibleTiles;
 		const group = this.group;
 		if ( visible ) {
@@ -402,7 +397,6 @@ export class TilesRenderer extends TilesRendererBase {
 			if ( scene && ! scene.parent ) {
 
 				group.add( scene );
-				visibleSet.add( scene );
 				visibleTiles.add( tile );
 				scene.updateMatrixWorld( true );
 
@@ -411,7 +405,6 @@ export class TilesRenderer extends TilesRendererBase {
 		} else {
 
 			group.remove( scene );
-			visibleSet.delete( scene );
 			visibleTiles.delete( tile );
 
 		}
@@ -421,19 +414,16 @@ export class TilesRenderer extends TilesRendererBase {
 	setTileActive( tile, active ) {
 
 		const cached = tile.cached;
-		const activeSet = this.activeSet;
 		const activeTiles = this.activeTiles;
 		if ( active !== cached.active ) {
 
 			cached.active = active;
 			if ( active ) {
 
-				activeSet.add( cached.scene );
 				activeTiles.add( tile );
 
 			} else {
 
-				activeSet.delete( cached.scene );
 				activeTiles.delete( tile );
 
 			}

+ 7 - 7
src/three/raycastTraverse.js

@@ -29,10 +29,10 @@ function intersectTileScene( scene, raycaster, intersects ) {
 }
 
 // Returns the closest hit when traversing the tree
-export function raycastTraverseFirstHit( root, group, activeSet, raycaster ) {
+export function raycastTraverseFirstHit( root, group, activeTiles, raycaster ) {
 
 	// If the root is active make sure we've checked it
-	if ( activeSet.has( root.cached.scene ) ) {
+	if ( activeTiles.has( root ) ) {
 
 		intersectTileScene( root.cached.scene, raycaster, _hitArray );
 		if ( _hitArray.length > 0 ) {
@@ -145,7 +145,7 @@ export function raycastTraverseFirstHit( root, group, activeSet, raycaster ) {
 
 			let hit = null;
 
-			if ( activeSet.has( scene ) ) {
+			if ( activeTiles.has( tile ) ) {
 
 				// save the hit if it's closer
 				intersectTileScene( scene, raycaster, _hitArray );
@@ -163,7 +163,7 @@ export function raycastTraverseFirstHit( root, group, activeSet, raycaster ) {
 
 			} else {
 
-				hit = raycastTraverseFirstHit( tile, group, activeSet, raycaster );
+				hit = raycastTraverseFirstHit( tile, group, activeTiles, raycaster );
 
 			}
 
@@ -188,7 +188,7 @@ export function raycastTraverseFirstHit( root, group, activeSet, raycaster ) {
 
 }
 
-export function raycastTraverse( tile, group, activeSet, raycaster, intersects ) {
+export function raycastTraverse( tile, group, activeTiles, raycaster, intersects ) {
 
 	const cached = tile.cached;
 	const groupMatrixWorld = group.matrixWorld;
@@ -228,7 +228,7 @@ export function raycastTraverse( tile, group, activeSet, raycaster, intersects )
 	// TODO: check region
 
 	const scene = cached.scene;
-	if ( activeSet.has( scene ) ) {
+	if ( activeTiles.has( tile ) ) {
 
 		scene.traverse( c => {
 
@@ -246,7 +246,7 @@ export function raycastTraverse( tile, group, activeSet, raycaster, intersects )
 	const children = tile.children;
 	for ( let i = 0, l = children.length; i < l; i ++ ) {
 
-		raycastTraverse( children[ i ], group, activeSet, raycaster, intersects );
+		raycastTraverse( children[ i ], group, activeTiles, raycaster, intersects );
 
 	}