|
@@ -265,15 +265,16 @@ THREE.OrbitControls = function ( object, domElement ) {
|
|
|
this.dispose = function () {
|
|
|
|
|
|
scope.domElement.removeEventListener( 'contextmenu', onContextMenu, false );
|
|
|
- scope.domElement.removeEventListener( 'mousedown', onMouseDown, false );
|
|
|
+
|
|
|
+ scope.domElement.removeEventListener( 'pointerdown', onPointerDown, false );
|
|
|
scope.domElement.removeEventListener( 'wheel', onMouseWheel, false );
|
|
|
|
|
|
scope.domElement.removeEventListener( 'touchstart', onTouchStart, false );
|
|
|
scope.domElement.removeEventListener( 'touchend', onTouchEnd, false );
|
|
|
scope.domElement.removeEventListener( 'touchmove', onTouchMove, false );
|
|
|
|
|
|
- scope.domElement.ownerDocument.removeEventListener( 'mousemove', onMouseMove, false );
|
|
|
- scope.domElement.ownerDocument.removeEventListener( 'mouseup', onMouseUp, false );
|
|
|
+ scope.domElement.ownerDocument.removeEventListener( 'pointermove', onPointerMove, false );
|
|
|
+ scope.domElement.ownerDocument.removeEventListener( 'pointerup', onPointerUp, false );
|
|
|
|
|
|
scope.domElement.removeEventListener( 'keydown', onKeyDown, false );
|
|
|
|
|
@@ -765,10 +766,58 @@ THREE.OrbitControls = function ( object, domElement ) {
|
|
|
// event handlers - FSM: listen for events and reset state
|
|
|
//
|
|
|
|
|
|
- function onMouseDown( event ) {
|
|
|
+ function onPointerDown( event ) {
|
|
|
+
|
|
|
+ if ( scope.enabled === false ) return;
|
|
|
+
|
|
|
+ switch ( event.pointerType ) {
|
|
|
+
|
|
|
+ case 'mouse':
|
|
|
+ onMouseDown( event );
|
|
|
+ break;
|
|
|
+
|
|
|
+ // TODO touch
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ function onPointerMove( event ) {
|
|
|
+
|
|
|
+ if ( scope.enabled === false ) return;
|
|
|
+
|
|
|
+ switch ( event.pointerType ) {
|
|
|
+
|
|
|
+ case 'mouse':
|
|
|
+ onMouseMove( event );
|
|
|
+ break;
|
|
|
+
|
|
|
+ // TODO touch
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ function onPointerUp( event ) {
|
|
|
|
|
|
if ( scope.enabled === false ) return;
|
|
|
|
|
|
+ switch ( event.pointerType ) {
|
|
|
+
|
|
|
+ case 'mouse':
|
|
|
+ onMouseUp( event );
|
|
|
+ break;
|
|
|
+
|
|
|
+ // TODO touch
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ var isMouseDown = false;
|
|
|
+
|
|
|
+ function onMouseDown( event ) {
|
|
|
+
|
|
|
// Prevent the browser from scrolling.
|
|
|
event.preventDefault();
|
|
|
|
|
@@ -866,8 +915,7 @@ THREE.OrbitControls = function ( object, domElement ) {
|
|
|
|
|
|
if ( state !== STATE.NONE ) {
|
|
|
|
|
|
- scope.domElement.ownerDocument.addEventListener( 'mousemove', onMouseMove, false );
|
|
|
- scope.domElement.ownerDocument.addEventListener( 'mouseup', onMouseUp, false );
|
|
|
+ isMouseDown = true;
|
|
|
|
|
|
scope.dispatchEvent( startEvent );
|
|
|
|
|
@@ -877,7 +925,7 @@ THREE.OrbitControls = function ( object, domElement ) {
|
|
|
|
|
|
function onMouseMove( event ) {
|
|
|
|
|
|
- if ( scope.enabled === false ) return;
|
|
|
+ if ( isMouseDown === false ) return;
|
|
|
|
|
|
event.preventDefault();
|
|
|
|
|
@@ -913,17 +961,16 @@ THREE.OrbitControls = function ( object, domElement ) {
|
|
|
|
|
|
function onMouseUp( event ) {
|
|
|
|
|
|
- if ( scope.enabled === false ) return;
|
|
|
+ if ( isMouseDown === false ) return;
|
|
|
|
|
|
handleMouseUp( event );
|
|
|
|
|
|
- scope.domElement.ownerDocument.removeEventListener( 'mousemove', onMouseMove, false );
|
|
|
- scope.domElement.ownerDocument.removeEventListener( 'mouseup', onMouseUp, false );
|
|
|
-
|
|
|
scope.dispatchEvent( endEvent );
|
|
|
|
|
|
state = STATE.NONE;
|
|
|
|
|
|
+ isMouseDown = false;
|
|
|
+
|
|
|
}
|
|
|
|
|
|
function onMouseWheel( event ) {
|
|
@@ -1116,13 +1163,16 @@ THREE.OrbitControls = function ( object, domElement ) {
|
|
|
|
|
|
scope.domElement.addEventListener( 'contextmenu', onContextMenu, false );
|
|
|
|
|
|
- scope.domElement.addEventListener( 'mousedown', onMouseDown, false );
|
|
|
+ scope.domElement.addEventListener( 'pointerdown', onPointerDown, false );
|
|
|
scope.domElement.addEventListener( 'wheel', onMouseWheel, false );
|
|
|
|
|
|
scope.domElement.addEventListener( 'touchstart', onTouchStart, false );
|
|
|
scope.domElement.addEventListener( 'touchend', onTouchEnd, false );
|
|
|
scope.domElement.addEventListener( 'touchmove', onTouchMove, false );
|
|
|
|
|
|
+ scope.domElement.ownerDocument.addEventListener( 'pointermove', onPointerMove, false );
|
|
|
+ scope.domElement.ownerDocument.addEventListener( 'pointerup', onPointerUp, false );
|
|
|
+
|
|
|
scope.domElement.addEventListener( 'keydown', onKeyDown, false );
|
|
|
|
|
|
// make sure element can receive keys.
|