提交 13170987 编写于 作者: M Mugen87

DragControls: Avoid unnecessary object creation.

上级 33a42215
......@@ -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 ) );
......
......@@ -23,6 +23,7 @@ var DragControls = function ( _objects, _camera, _domElement ) {
var _intersection = new Vector3();
var _worldPosition = new Vector3();
var _inverseMatrix = new Matrix4();
var _intersections = [];
var _selected = null, _hovered = null;
......@@ -85,13 +86,14 @@ var 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 ) );
......@@ -123,13 +125,14 @@ var 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 ) ) {
......@@ -201,13 +204,14 @@ var 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 ) );
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册