Skip to content

Commit 52ba2a2

Browse files
committed
New Vizi lib with Multi Touch Viewer
1 parent c3c7527 commit 52ba2a2

File tree

1 file changed

+97
-55
lines changed

1 file changed

+97
-55
lines changed

libs/vizi/vizi.js

Lines changed: 97 additions & 55 deletions
Original file line numberDiff line numberDiff line change
@@ -49001,24 +49001,31 @@ Vizi.OrbitControls = function ( object, domElement ) {
4900149001
}
4900249002

4900349003
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+
}
4902249029
}
4902349030

4902449031
function onMouseMove( event ) {
@@ -49066,26 +49073,56 @@ Vizi.OrbitControls = function ( object, domElement ) {
4906649073
}
4906749074

4906849075
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+
}
4908749118
}
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+
4908949126
function onMouseUp( event ) {
4909049127

4909149128
if ( scope.enabled === false ) return;
@@ -49102,24 +49139,29 @@ Vizi.OrbitControls = function ( object, domElement ) {
4910249139

4910349140

4910449141
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+
}
4912349165
}
4912449166

4912549167
function onMouseWheel( event ) {

0 commit comments

Comments
 (0)