|
@@ -1,6 +1,6 @@
|
|
|
/**
|
|
|
* @author Eberhard Graether / http://egraether.com/
|
|
|
- * @author Mark Lundin / http://mark-lundin.com
|
|
|
+ * @author Mark Lundin / http://mark-lundin.com
|
|
|
*/
|
|
|
|
|
|
THREE.TrackballControls = function ( object, domElement ) {
|
|
@@ -103,9 +103,9 @@ THREE.TrackballControls = function ( object, domElement ) {
|
|
|
|
|
|
};
|
|
|
|
|
|
- this.getMouseOnScreen = function ( pageX, pageY, optionalTarget ) {
|
|
|
+ this.getMouseOnScreen = function ( pageX, pageY, vector ) {
|
|
|
|
|
|
- return ( optionalTarget || new THREE.Vector2() ).set(
|
|
|
+ return vector.set(
|
|
|
( pageX - _this.screen.left ) / _this.screen.width,
|
|
|
( pageY - _this.screen.top ) / _this.screen.height
|
|
|
);
|
|
@@ -114,12 +114,13 @@ THREE.TrackballControls = function ( object, domElement ) {
|
|
|
|
|
|
this.getMouseProjectionOnBall = (function(){
|
|
|
|
|
|
- var objectUp = new THREE.Vector3();
|
|
|
+ var objectUp = new THREE.Vector3(),
|
|
|
+ mouseOnBall = new THREE.Vector3();
|
|
|
|
|
|
|
|
|
return function ( pageX, pageY, projection ) {
|
|
|
|
|
|
- var mouseOnBall = new THREE.Vector3(
|
|
|
+ mouseOnBall.set(
|
|
|
( pageX - _this.screen.width * 0.5 - _this.screen.left ) / (_this.screen.width*.5),
|
|
|
( _this.screen.height * 0.5 + _this.screen.top - pageY ) / (_this.screen.height*.5),
|
|
|
0.0
|
|
@@ -398,17 +399,17 @@ THREE.TrackballControls = function ( object, domElement ) {
|
|
|
|
|
|
if ( _state === STATE.ROTATE && !_this.noRotate ) {
|
|
|
|
|
|
- _rotateStart = _this.getMouseProjectionOnBall( event.pageX, event.pageY, _rotateStart );
|
|
|
+ _this.getMouseProjectionOnBall( event.pageX, event.pageY, _rotateStart );
|
|
|
_rotateEnd.copy(_rotateStart)
|
|
|
|
|
|
} else if ( _state === STATE.ZOOM && !_this.noZoom ) {
|
|
|
|
|
|
- _zoomStart = _this.getMouseOnScreen( event.pageX, event.pageY, _zoomStart );
|
|
|
+ _this.getMouseOnScreen( event.pageX, event.pageY, _zoomStart );
|
|
|
_zoomEnd.copy(_zoomStart);
|
|
|
|
|
|
} else if ( _state === STATE.PAN && !_this.noPan ) {
|
|
|
|
|
|
- _panStart = _this.getMouseOnScreen( event.pageX, event.pageY, _panStart);
|
|
|
+ _this.getMouseOnScreen( event.pageX, event.pageY, _panStart );
|
|
|
_panEnd.copy(_panStart)
|
|
|
|
|
|
}
|
|
@@ -429,15 +430,15 @@ THREE.TrackballControls = function ( object, domElement ) {
|
|
|
|
|
|
if ( _state === STATE.ROTATE && !_this.noRotate ) {
|
|
|
|
|
|
- _rotateEnd = _this.getMouseProjectionOnBall( event.pageX, event.pageY, _rotateEnd );
|
|
|
+ _this.getMouseProjectionOnBall( event.pageX, event.pageY, _rotateEnd );
|
|
|
|
|
|
} else if ( _state === STATE.ZOOM && !_this.noZoom ) {
|
|
|
|
|
|
- _zoomEnd = _this.getMouseOnScreen( event.pageX, event.pageY, _zoomEnd );
|
|
|
+ _this.getMouseOnScreen( event.pageX, event.pageY, _zoomEnd );
|
|
|
|
|
|
} else if ( _state === STATE.PAN && !_this.noPan ) {
|
|
|
|
|
|
- _panEnd = _this.getMouseOnScreen( event.pageX, event.pageY, _panEnd );
|
|
|
+ _this.getMouseOnScreen( event.pageX, event.pageY, _panEnd );
|
|
|
|
|
|
}
|
|
|
|
|
@@ -525,7 +526,7 @@ THREE.TrackballControls = function ( object, domElement ) {
|
|
|
switch ( event.touches.length ) {
|
|
|
|
|
|
case 1:
|
|
|
- _rotateEnd = _this.getMouseProjectionOnBall( event.touches[ 0 ].pageX, event.touches[ 0 ].pageY, _rotateEnd );
|
|
|
+ _this.getMouseProjectionOnBall( event.touches[ 0 ].pageX, event.touches[ 0 ].pageY, _rotateEnd );
|
|
|
break;
|
|
|
|
|
|
case 2:
|
|
@@ -535,7 +536,7 @@ THREE.TrackballControls = function ( object, domElement ) {
|
|
|
break;
|
|
|
|
|
|
case 3:
|
|
|
- _panEnd = _this.getMouseOnScreen( event.touches[ 0 ].pageX, event.touches[ 0 ].pageY, _panEnd );
|
|
|
+ _this.getMouseOnScreen( event.touches[ 0 ].pageX, event.touches[ 0 ].pageY, _panEnd );
|
|
|
break;
|
|
|
|
|
|
default:
|