Browse Source

Moved Raycaster LOD code.

Mr.doob 11 years ago
parent
commit
9410c18a9d
3 changed files with 18 additions and 5 deletions
  1. 1 4
      src/core/Raycaster.js
  2. 16 0
      src/objects/LOD.js
  3. 1 1
      src/objects/Sprite.js

+ 1 - 4
src/core/Raycaster.js

@@ -204,10 +204,7 @@
 
 		} else if ( object instanceof THREE.LOD ) {
 
-			matrixPosition.setFromMatrixPosition( object.matrixWorld );
-			var distance = raycaster.ray.origin.distanceTo( matrixPosition );
-
-			intersectObject( object.getObjectForDistance( distance ), raycaster, intersects );
+			object.raycast( raycaster, intersects );
 
 		} else if ( object instanceof THREE.Mesh ) {
 

+ 16 - 0
src/objects/LOD.js

@@ -52,6 +52,22 @@ THREE.LOD.prototype.getObjectForDistance = function ( distance ) {
 
 };
 
+THREE.LOD.prototype.raycast = ( function () {
+
+	var matrixPosition = new THREE.Vector3();
+
+	return function ( raycaster, intersects ) {
+
+		matrixPosition.setFromMatrixPosition( this.matrixWorld );
+
+		var distance = raycaster.ray.origin.distanceTo( matrixPosition );
+
+		this.getObjectForDistance( distance ).raycast( raycaster, intersects );
+
+	};
+
+}() );
+
 THREE.LOD.prototype.update = function () {
 
 	var v1 = new THREE.Vector3();

+ 1 - 1
src/objects/Sprite.js

@@ -30,7 +30,7 @@ THREE.Sprite.prototype.raycast = ( function () {
 	return function ( raycaster, intersects ) {
 
 		matrixPosition.setFromMatrixPosition( this.matrixWorld );
-			
+		
 		var distance = raycaster.ray.distanceToPoint( matrixPosition );
 
 		if ( distance > this.scale.x ) {