@@ -49001,24 +49001,31 @@ Vizi.OrbitControls = function ( object, domElement ) {
49001
49001
}
49002
49002
49003
49003
function onTouchStart( event ) {
49004
- // synthesize a left mouse button event
49005
- var mouseEvent = {
49006
- 'type': 'mousedown',
49007
- 'view': event.view,
49008
- 'bubbles': event.bubbles,
49009
- 'cancelable': event.cancelable,
49010
- 'detail': event.detail,
49011
- 'screenX': event.touches[0].screenX,
49012
- 'screenY': event.touches[0].screenY,
49013
- 'clientX': event.touches[0].clientX,
49014
- 'clientY': event.touches[0].clientY,
49015
- 'pageX': event.touches[0].pageX,
49016
- 'pageY': event.touches[0].pageY,
49017
- 'button': 0,
49018
- 'preventDefault' : function() {}
49019
- };
49020
-
49021
- onMouseDown(mouseEvent);
49004
+ if ( event.touches.length > 1 ) {
49005
+ scope.touchDistance = calcDistance(event.touches[0], event.touches[1]);
49006
+ scope.touchId0 = event.touches[0].identifier;
49007
+ scope.touchId1 = event.touches[1].identifier;
49008
+ }
49009
+ else {
49010
+ // synthesize a left mouse button event
49011
+ var mouseEvent = {
49012
+ 'type': 'mousedown',
49013
+ 'view': event.view,
49014
+ 'bubbles': event.bubbles,
49015
+ 'cancelable': event.cancelable,
49016
+ 'detail': event.detail,
49017
+ 'screenX': event.touches[0].screenX,
49018
+ 'screenY': event.touches[0].screenY,
49019
+ 'clientX': event.touches[0].clientX,
49020
+ 'clientY': event.touches[0].clientY,
49021
+ 'pageX': event.touches[0].pageX,
49022
+ 'pageY': event.touches[0].pageY,
49023
+ 'button': 0,
49024
+ 'preventDefault' : function() {}
49025
+ };
49026
+
49027
+ onMouseDown(mouseEvent);
49028
+ }
49022
49029
}
49023
49030
49024
49031
function onMouseMove( event ) {
@@ -49066,26 +49073,56 @@ Vizi.OrbitControls = function ( object, domElement ) {
49066
49073
}
49067
49074
49068
49075
function onTouchMove( event ) {
49069
- // synthesize a left mouse button event
49070
- var mouseEvent = {
49071
- 'type': 'mousemove',
49072
- 'view': event.view,
49073
- 'bubbles': event.bubbles,
49074
- 'cancelable': event.cancelable,
49075
- 'detail': event.detail,
49076
- 'screenX': event.touches[0].screenX,
49077
- 'screenY': event.touches[0].screenY,
49078
- 'clientX': event.touches[0].clientX,
49079
- 'clientY': event.touches[0].clientY,
49080
- 'pageX': event.touches[0].pageX,
49081
- 'pageY': event.touches[0].pageY,
49082
- 'button': 0,
49083
- 'preventDefault' : function() {}
49084
- };
49085
-
49086
- onMouseMove(mouseEvent);
49076
+ if ( event.changedTouches.length > 1 ) {
49077
+ var touch0 = null;
49078
+ var touch1 = null;
49079
+ for (var i = 0; i < event.changedTouches.length; i++) {
49080
+ if (event.changedTouches[i].identifier == scope.touchId0)
49081
+ touch0 = event.changedTouches[i];
49082
+ else if (event.changedTouches[i].identifier == scope.touchId1)
49083
+ touch1 = event.changedTouches[i];
49084
+
49085
+ }
49086
+ if (touch0 && touch1) {
49087
+ var touchDistance = calcDistance(event.touches[0], event.touches[1]);
49088
+ var deltaDistance = touchDistance - scope.touchDistance;
49089
+ if (deltaDistance < 0) {
49090
+ scope.zoomIn();
49091
+ }
49092
+ else if (deltaDistance > 0) {
49093
+ scope.zoomOut();
49094
+ }
49095
+ scope.touchDistance = touchDistance;
49096
+ }
49097
+ }
49098
+ else {
49099
+ // synthesize a left mouse button event
49100
+ var mouseEvent = {
49101
+ 'type': 'mousemove',
49102
+ 'view': event.view,
49103
+ 'bubbles': event.bubbles,
49104
+ 'cancelable': event.cancelable,
49105
+ 'detail': event.detail,
49106
+ 'screenX': event.changedTouches[0].screenX,
49107
+ 'screenY': event.changedTouches[0].screenY,
49108
+ 'clientX': event.changedTouches[0].clientX,
49109
+ 'clientY': event.changedTouches[0].clientY,
49110
+ 'pageX': event.changedTouches[0].pageX,
49111
+ 'pageY': event.changedTouches[0].pageY,
49112
+ 'button': 0,
49113
+ 'preventDefault' : function() {}
49114
+ };
49115
+
49116
+ onMouseMove(mouseEvent);
49117
+ }
49087
49118
}
49088
-
49119
+
49120
+ function calcDistance( touch0, touch1 ) {
49121
+ var dx = touch1.clientX - touch0.clientX;
49122
+ var dy = touch1.clientY - touch0.clientY;
49123
+ return Math.sqrt(dx * dx + dy * dy);
49124
+ }
49125
+
49089
49126
function onMouseUp( event ) {
49090
49127
49091
49128
if ( scope.enabled === false ) return;
@@ -49102,24 +49139,29 @@ Vizi.OrbitControls = function ( object, domElement ) {
49102
49139
49103
49140
49104
49141
function onTouchEnd( event ) {
49105
- // synthesize a left mouse button event
49106
- var mouseEvent = {
49107
- 'type': 'mouseup',
49108
- 'view': event.view,
49109
- 'bubbles': event.bubbles,
49110
- 'cancelable': event.cancelable,
49111
- 'detail': event.detail,
49112
- 'screenX': event.changedTouches[0].screenX,
49113
- 'screenY': event.changedTouches[0].screenY,
49114
- 'clientX': event.changedTouches[0].clientX,
49115
- 'clientY': event.changedTouches[0].clientY,
49116
- 'pageX': event.changedTouches[0].pageX,
49117
- 'pageY': event.changedTouches[0].pageY,
49118
- 'button': 0,
49119
- 'preventDefault' : function() {}
49120
- };
49121
-
49122
- onMouseUp(mouseEvent);
49142
+ if ( event.changedTouches.length > 1 ) {
49143
+ // nothing to do
49144
+ }
49145
+ else {
49146
+ // synthesize a left mouse button event
49147
+ var mouseEvent = {
49148
+ 'type': 'mouseup',
49149
+ 'view': event.view,
49150
+ 'bubbles': event.bubbles,
49151
+ 'cancelable': event.cancelable,
49152
+ 'detail': event.detail,
49153
+ 'screenX': event.changedTouches[0].screenX,
49154
+ 'screenY': event.changedTouches[0].screenY,
49155
+ 'clientX': event.changedTouches[0].clientX,
49156
+ 'clientY': event.changedTouches[0].clientY,
49157
+ 'pageX': event.changedTouches[0].pageX,
49158
+ 'pageY': event.changedTouches[0].pageY,
49159
+ 'button': 0,
49160
+ 'preventDefault' : function() {}
49161
+ };
49162
+
49163
+ onMouseUp(mouseEvent);
49164
+ }
49123
49165
}
49124
49166
49125
49167
function onMouseWheel( event ) {
0 commit comments