فهرست منبع

add click helper

Garrett Johnson 5 سال پیش
والد
کامیت
2c6a0b0514
2فایلهای تغییر یافته به همراه72 افزوده شده و 0 حذف شده
  1. 24 0
      example/index.js
  2. 48 0
      src/three/DebugTilesRenderer.js

+ 24 - 0
example/index.js

@@ -152,6 +152,7 @@ function init() {
 	onWindowResize();
 	window.addEventListener( 'resize', onWindowResize, false );
 	window.addEventListener( 'mousemove', onMouseMove, false );
+	window.addEventListener( 'click', onMouseClick, false );
 
 	// GUI
 	const gui = new dat.GUI();
@@ -208,6 +209,29 @@ function onMouseMove( e ) {
 
 }
 
+function onMouseClick( e ) {
+
+	raycaster.setFromCamera( mouse, params.orthographic ? orthoCamera : camera );
+	raycaster.firstHitOnly = true;
+	const results = raycaster.intersectObject( tiles.group, true );
+	if ( results.length ) {
+
+		const object = results[ 0 ].object;
+		const info = tiles.getTileInformationFromObject( object );
+
+		let str = '';
+		for ( const key in info ) {
+
+			str += `${ key } : ${ info[ key ] }\n`;
+
+		}
+		console.log( str );
+
+
+	}
+
+}
+
 function updateOrthoCamera() {
 
 	orthoCamera.position.copy( camera.position );

+ 48 - 0
src/three/DebugTilesRenderer.js

@@ -24,6 +24,54 @@ export class DebugTilesRenderer extends TilesRenderer {
 
 	}
 
+	getTileInformationFromObject( object ) {
+
+		let targetTile = null;
+		this.traverse( tile => {
+
+			if ( targetTile ) {
+
+				return true;
+
+			}
+
+			const scene = tile.cached.scene;
+			if ( scene ) {
+
+				scene.traverse( c => {
+
+					if ( c === object ) {
+
+						targetTile = tile;
+
+					}
+
+				} );
+
+			}
+
+		} );
+
+		if ( targetTile ) {
+
+			return {
+
+				distanceToCamera: 0,
+				geometricError: targetTile.geometricError,
+				screenSpaceError: targetTile.__error,
+				depth: targetTile.__depth,
+				isLeaf: targetTile.__isLeaf
+
+			};
+
+		} else {
+
+			return null;
+
+		}
+
+	}
+
 	update() {
 
 		super.update();