|
@@ -14,6 +14,7 @@ THREE.DragControls = function ( _objects, _camera, _domElement ) {
|
|
|
var _intersection = new THREE.Vector3();
|
|
|
var _worldPosition = new THREE.Vector3();
|
|
|
var _inverseMatrix = new THREE.Matrix4();
|
|
|
+ var _intersections = [];
|
|
|
|
|
|
var _selected = null, _hovered = null;
|
|
|
|
|
@@ -76,13 +77,14 @@ THREE.DragControls = function ( _objects, _camera, _domElement ) {
|
|
|
|
|
|
}
|
|
|
|
|
|
- _raycaster.setFromCamera( _mouse, _camera );
|
|
|
+ _intersections.length = 0;
|
|
|
|
|
|
- var intersects = _raycaster.intersectObjects( _objects, true );
|
|
|
+ _raycaster.setFromCamera( _mouse, _camera );
|
|
|
+ _raycaster.intersectObjects( _objects, true, _intersections );
|
|
|
|
|
|
- if ( intersects.length > 0 ) {
|
|
|
+ if ( _intersections.length > 0 ) {
|
|
|
|
|
|
- var object = intersects[ 0 ].object;
|
|
|
+ var object = _intersections[ 0 ].object;
|
|
|
|
|
|
_plane.setFromNormalAndCoplanarPoint( _camera.getWorldDirection( _plane.normal ), _worldPosition.setFromMatrixPosition( object.matrixWorld ) );
|
|
|
|
|
@@ -114,13 +116,14 @@ THREE.DragControls = function ( _objects, _camera, _domElement ) {
|
|
|
|
|
|
event.preventDefault();
|
|
|
|
|
|
- _raycaster.setFromCamera( _mouse, _camera );
|
|
|
+ _intersections.length = 0;
|
|
|
|
|
|
- var intersects = _raycaster.intersectObjects( _objects, true );
|
|
|
+ _raycaster.setFromCamera( _mouse, _camera );
|
|
|
+ _raycaster.intersectObjects( _objects, true, _intersections );
|
|
|
|
|
|
- if ( intersects.length > 0 ) {
|
|
|
+ if ( _intersections.length > 0 ) {
|
|
|
|
|
|
- _selected = intersects[ 0 ].object;
|
|
|
+ _selected = _intersections[ 0 ].object;
|
|
|
|
|
|
if ( _raycaster.ray.intersectPlane( _plane, _intersection ) ) {
|
|
|
|
|
@@ -192,13 +195,14 @@ THREE.DragControls = function ( _objects, _camera, _domElement ) {
|
|
|
_mouse.x = ( ( event.clientX - rect.left ) / rect.width ) * 2 - 1;
|
|
|
_mouse.y = - ( ( event.clientY - rect.top ) / rect.height ) * 2 + 1;
|
|
|
|
|
|
- _raycaster.setFromCamera( _mouse, _camera );
|
|
|
+ _intersections.length = 0;
|
|
|
|
|
|
- var intersects = _raycaster.intersectObjects( _objects, true );
|
|
|
+ _raycaster.setFromCamera( _mouse, _camera );
|
|
|
+ _raycaster.intersectObjects( _objects, true, _intersections );
|
|
|
|
|
|
- if ( intersects.length > 0 ) {
|
|
|
+ if ( _intersections.length > 0 ) {
|
|
|
|
|
|
- _selected = intersects[ 0 ].object;
|
|
|
+ _selected = _intersections[ 0 ].object;
|
|
|
|
|
|
_plane.setFromNormalAndCoplanarPoint( _camera.getWorldDirection( _plane.normal ), _worldPosition.setFromMatrixPosition( _selected.matrixWorld ) );
|
|
|
|