浏览代码

Raycaster clean up.

Mr.doob 11 年之前
父节点
当前提交
d9370ef3e5
共有 2 个文件被更改,包括 10 次插入42 次删除
  1. 9 41
      src/core/Raycaster.js
  2. 1 1
      src/objects/PointCloud.js

+ 9 - 41
src/core/Raycaster.js

@@ -21,16 +21,8 @@
 			LOD: {},
 			LOD: {},
 			Line: {}
 			Line: {}
 		};
 		};
-		
-	};
-
-	var sphere = new THREE.Sphere();
-	var localRay = new THREE.Ray();
-	var facePlane = new THREE.Plane();
-	var intersectPoint = new THREE.Vector3();
-	var matrixPosition = new THREE.Vector3();
 
 
-	var inverseMatrix = new THREE.Matrix4();
+	};
 
 
 	var descSort = function ( a, b ) {
 	var descSort = function ( a, b ) {
 
 
@@ -38,42 +30,16 @@
 
 
 	};
 	};
 
 
-
-	var intersectObject = function ( object, raycaster, intersects ) {
-
-		if ( object instanceof THREE.Sprite ) {
-
-			object.raycast( raycaster, intersects );
-
-		} else if ( object instanceof THREE.PointCloud ) {
-		
-			object.raycast( raycaster, intersects );
-
-		} else if ( object instanceof THREE.LOD ) {
-
-			object.raycast( raycaster, intersects );
-
-		} else if ( object instanceof THREE.Mesh ) {
-
-			object.raycast( raycaster, intersects );
-
-		} else if ( object instanceof THREE.Line ) {
-
-			object.raycast( raycaster, intersects );
-
-		}
-
-	};
-
 	var intersectDescendants = function ( object, raycaster, intersects ) {
 	var intersectDescendants = function ( object, raycaster, intersects ) {
 
 
 		var descendants = object.getDescendants();
 		var descendants = object.getDescendants();
 
 
 		for ( var i = 0, l = descendants.length; i < l; i ++ ) {
 		for ( var i = 0, l = descendants.length; i < l; i ++ ) {
 
 
-			intersectObject( descendants[ i ], raycaster, intersects );
+			descendants[ i ].raycast( raycaster, intersects );
 
 
 		}
 		}
+
 	};
 	};
 
 
 	//
 	//
@@ -92,14 +58,14 @@
 
 
 		var intersects = [];
 		var intersects = [];
 
 
+		object.raycast( this, intersects );
+
 		if ( recursive === true ) {
 		if ( recursive === true ) {
 
 
 			intersectDescendants( object, this, intersects );
 			intersectDescendants( object, this, intersects );
 
 
 		}
 		}
 
 
-		intersectObject( object, this, intersects );
-
 		intersects.sort( descSort );
 		intersects.sort( descSort );
 
 
 		return intersects;
 		return intersects;
@@ -112,11 +78,13 @@
 
 
 		for ( var i = 0, l = objects.length; i < l; i ++ ) {
 		for ( var i = 0, l = objects.length; i < l; i ++ ) {
 
 
-			intersectObject( objects[ i ], this, intersects );
+			var object = objects[ i ];
+			
+			object.raycast( this, intersects );
 
 
 			if ( recursive === true ) {
 			if ( recursive === true ) {
 
 
-				intersectDescendants( objects[ i ], this, intersects );
+				intersectDescendants( object, this, intersects );
 
 
 			}
 			}
 
 

+ 1 - 1
src/objects/PointCloud.js

@@ -130,7 +130,7 @@ THREE.PointCloud.prototype.raycast = ( function () {
 
 
 							distance: distance,
 							distance: distance,
 							distanceToRay: rayPointDistance,
 							distanceToRay: rayPointDistance,
-							point: intersectPoint,
+							point: intersectPoint.clone(),
 							index: i,
 							index: i,
 							face: null,
 							face: null,
 							object: this
 							object: this