|
@@ -30,13 +30,19 @@
|
|
|
|
|
|
};
|
|
|
|
|
|
- var intersectDescendants = function ( object, raycaster, intersects ) {
|
|
|
+ var intersectObject = function ( object, raycaster, intersects, recursive ) {
|
|
|
|
|
|
- var descendants = object.getDescendants();
|
|
|
+ object.raycast( raycaster, intersects );
|
|
|
|
|
|
- for ( var i = 0, l = descendants.length; i < l; i ++ ) {
|
|
|
+ if ( recursive === true ) {
|
|
|
+
|
|
|
+ var children = object.children;
|
|
|
+
|
|
|
+ for ( var i = 0, l = children.length; i < l; i ++ ) {
|
|
|
+
|
|
|
+ intersectObject( children[ i ], raycaster, intersects, true );
|
|
|
|
|
|
- descendants[ i ].raycast( raycaster, intersects );
|
|
|
+ }
|
|
|
|
|
|
}
|
|
|
|
|
@@ -57,14 +63,8 @@
|
|
|
THREE.Raycaster.prototype.intersectObject = function ( object, recursive ) {
|
|
|
|
|
|
var intersects = [];
|
|
|
-
|
|
|
- object.raycast( this, intersects );
|
|
|
-
|
|
|
- if ( recursive === true ) {
|
|
|
-
|
|
|
- intersectDescendants( object, this, intersects );
|
|
|
-
|
|
|
- }
|
|
|
+
|
|
|
+ intersectObject( object, this, intersects, recursive );
|
|
|
|
|
|
intersects.sort( descSort );
|
|
|
|
|
@@ -78,15 +78,7 @@
|
|
|
|
|
|
for ( var i = 0, l = objects.length; i < l; i ++ ) {
|
|
|
|
|
|
- var object = objects[ i ];
|
|
|
-
|
|
|
- object.raycast( this, intersects );
|
|
|
-
|
|
|
- if ( recursive === true ) {
|
|
|
-
|
|
|
- intersectDescendants( object, this, intersects );
|
|
|
-
|
|
|
- }
|
|
|
+ intersectObject( objects[ i ], this, intersects, recursive );
|
|
|
|
|
|
}
|
|
|
|