提交 5c760e72 编写于 作者: M Mr.doob

OrbitControls: Code clean up and addressed concerns raised in #3989.

上级 f00cddac
......@@ -282,25 +282,25 @@ THREE.OrbitControls = function ( object, domElement ) {
function onMouseDown( event ) {
if ( scope.enabled === false ) { return; }
if ( scope.enabled === false ) return;
event.preventDefault();
if ( event.button === 0 ) {
if ( scope.noRotate === true ) { return; }
if ( scope.noRotate === true ) return;
state = STATE.ROTATE;
rotateStart.set( event.clientX, event.clientY );
} else if ( event.button === 1 ) {
if ( scope.noZoom === true ) { return; }
if ( scope.noZoom === true ) return;
state = STATE.DOLLY;
dollyStart.set( event.clientX, event.clientY );
} else if ( event.button === 2 ) {
if ( scope.noPan === true ) { return; }
if ( scope.noPan === true ) return;
state = STATE.PAN;
......@@ -389,13 +389,15 @@ THREE.OrbitControls = function ( object, domElement ) {
if ( scope.enabled === false || scope.noZoom === true ) return;
event.preventDefault();
var delta = 0;
if ( event.wheelDelta ) { // WebKit / Opera / Explorer 9
if ( event.wheelDelta !== undefined ) { // WebKit / Opera / Explorer 9
delta = event.wheelDelta;
} else if ( event.detail ) { // Firefox
} else if ( event.detail !== undefined ) { // Firefox
delta = - event.detail;
......@@ -417,38 +419,26 @@ THREE.OrbitControls = function ( object, domElement ) {
function onKeyDown( event ) {
if ( scope.enabled === false ) { return; }
if ( scope.noKeys === true ) { return; }
if ( scope.noPan === true ) { return; }
// pan a pixel - I guess for precise positioning?
// Greggman fix: https://github.com/greggman/three.js/commit/fde9f9917d6d8381f06bf22cdff766029d1761be
var needUpdate = false;
if ( scope.enabled === false || scope.noKeys === true || scope.noPan === true ) return;
switch ( event.keyCode ) {
case scope.keys.UP:
scope.pan( new THREE.Vector2( 0, scope.keyPanSpeed ) );
needUpdate = true;
scope.update();
break;
case scope.keys.BOTTOM:
scope.pan( new THREE.Vector2( 0, -scope.keyPanSpeed ) );
needUpdate = true;
scope.update();
break;
case scope.keys.LEFT:
scope.pan( new THREE.Vector2( scope.keyPanSpeed, 0 ) );
needUpdate = true;
scope.update();
break;
case scope.keys.RIGHT:
scope.pan( new THREE.Vector2( -scope.keyPanSpeed, 0 ) );
needUpdate = true;
scope.update();
break;
}
// Greggman fix: https://github.com/greggman/three.js/commit/fde9f9917d6d8381f06bf22cdff766029d1761be
if ( needUpdate ) {
scope.update();
}
......@@ -456,12 +446,12 @@ THREE.OrbitControls = function ( object, domElement ) {
function touchstart( event ) {
if ( scope.enabled === false ) { return; }
if ( scope.enabled === false ) return;
switch ( event.touches.length ) {
case 1: // one-fingered touch: rotate
if ( scope.noRotate === true ) { return; }
if ( scope.noRotate === true ) return;
state = STATE.TOUCH_ROTATE;
......@@ -469,7 +459,7 @@ THREE.OrbitControls = function ( object, domElement ) {
break;
case 2: // two-fingered touch: dolly
if ( scope.noZoom === true ) { return; }
if ( scope.noZoom === true ) return;
state = STATE.TOUCH_DOLLY;
......@@ -480,7 +470,7 @@ THREE.OrbitControls = function ( object, domElement ) {
break;
case 3: // three-fingered touch: pan
if ( scope.noPan === true ) { return; }
if ( scope.noPan === true ) return;
state = STATE.TOUCH_PAN;
......@@ -495,7 +485,7 @@ THREE.OrbitControls = function ( object, domElement ) {
function touchmove( event ) {
if ( scope.enabled === false ) { return; }
if ( scope.enabled === false ) return;
event.preventDefault();
event.stopPropagation();
......@@ -507,8 +497,8 @@ THREE.OrbitControls = function ( object, domElement ) {
switch ( event.touches.length ) {
case 1: // one-fingered touch: rotate
if ( scope.noRotate === true ) { return; }
if ( state !== STATE.TOUCH_ROTATE ) { return; }
if ( scope.noRotate === true ) return;
if ( state !== STATE.TOUCH_ROTATE ) return;
rotateEnd.set( event.touches[ 0 ].pageX, event.touches[ 0 ].pageY );
rotateDelta.subVectors( rotateEnd, rotateStart );
......@@ -524,8 +514,8 @@ THREE.OrbitControls = function ( object, domElement ) {
break;
case 2: // two-fingered touch: dolly
if ( scope.noZoom === true ) { return; }
if ( state !== STATE.TOUCH_DOLLY ) { return; }
if ( scope.noZoom === true ) return;
if ( state !== STATE.TOUCH_DOLLY ) return;
var dx = event.touches[ 0 ].pageX - event.touches[ 1 ].pageX;
var dy = event.touches[ 0 ].pageY - event.touches[ 1 ].pageY;
......@@ -550,8 +540,8 @@ THREE.OrbitControls = function ( object, domElement ) {
break;
case 3: // three-fingered touch: pan
if ( scope.noPan === true ) { return; }
if ( state !== STATE.TOUCH_PAN ) { return; }
if ( scope.noPan === true ) return;
if ( state !== STATE.TOUCH_PAN ) return;
panEnd.set( event.touches[ 0 ].pageX, event.touches[ 0 ].pageY );
panDelta.subVectors( panEnd, panStart );
......@@ -578,7 +568,7 @@ THREE.OrbitControls = function ( object, domElement ) {
function touchend( /* event */ ) {
if ( scope.enabled === false ) { return; }
if ( scope.enabled === false ) return;
state = STATE.NONE;
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册