From e2b60d35f040d84dd7c5bb980c73ede0f146ffb8 Mon Sep 17 00:00:00 2001 From: Atlante45 Date: Fri, 24 Apr 2015 18:50:03 +0200 Subject: [PATCH 1/3] Generate touchEndEvent if last event was more than 50 ms ago --- examples/look.js | 28 ++++++++++++++++++++++------ 1 file changed, 22 insertions(+), 6 deletions(-) diff --git a/examples/look.js b/examples/look.js index 6bba57e3ad..773a4ff73b 100644 --- a/examples/look.js +++ b/examples/look.js @@ -31,7 +31,9 @@ var yawFromTouch = 0; var pitchFromTouch = 0; // Touch Data +var TIME_BEFORE_GENERATED_END_TOUCH_EVENT = 50; // ms var startedTouching = false; +var lastTouchEvent = 0; var lastMouseX = 0; var lastMouseY = 0; var yawFromMouse = 0; @@ -80,11 +82,17 @@ function touchBeginEvent(event) { yawFromTouch = 0; pitchFromTouch = 0; startedTouching = true; + var d = new Date(); + lastTouchEvent = d.getTime(); } function touchEndEvent(event) { if (wantDebugging) { - print("touchEndEvent event.x,y=" + event.x + ", " + event.y); + if (event) { + print("touchEndEvent event.x,y=" + event.x + ", " + event.y); + } else { + print("touchEndEvent generated"); + } } startedTouching = false; } @@ -96,23 +104,31 @@ function touchUpdateEvent(event) { } if (!startedTouching) { - // handle Qt 5.4.x bug where we get touch update without a touch begin event - startedTouching = true; - lastTouchX = event.x; - lastTouchY = event.y; + // handle Qt 5.4.x bug where we get touch update without a touch begin event + touchBeginEvent(event); + return; } yawFromTouch += ((event.x - lastTouchX) * TOUCH_YAW_SCALE * FIXED_TOUCH_TIMESTEP); pitchFromTouch += ((event.y - lastTouchY) * TOUCH_PITCH_SCALE * FIXED_TOUCH_TIMESTEP); lastTouchX = event.x; lastTouchY = event.y; -} + var d = new Date(); + lastTouchEvent = d.getTime();} function update(deltaTime) { if (wantDebugging) { print("update()..."); } + + if(startedTouching) { + var d = new Date(); + var sinceLastTouch = d.getTime() - lastTouchEvent; + if (sinceLastTouch > TIME_BEFORE_GENERATED_END_TOUCH_EVENT) { + touchEndEvent(); + } + } if (yawFromTouch != 0 || yawFromMouse != 0) { var newOrientation = Quat.multiply(MyAvatar.orientation, Quat.fromPitchYawRollRadians(0, yawFromTouch + yawFromMouse, 0)); From fb5a0c8b010acc7d587f31519956743ecc996abf Mon Sep 17 00:00:00 2001 From: Atlante45 Date: Fri, 24 Apr 2015 18:50:45 +0200 Subject: [PATCH 2/3] Only send touchUpdateEvent if it is one ie. not for touchBeginEvent --- interface/src/Application.cpp | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index 1df771f127..285bd11952 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -1492,9 +1492,11 @@ void Application::mouseReleaseEvent(QMouseEvent* event, unsigned int deviceID) { } void Application::touchUpdateEvent(QTouchEvent* event) { - TouchEvent thisEvent(*event, _lastTouchEvent); - _controllerScriptingInterface.emitTouchUpdateEvent(thisEvent); // send events to any registered scripts - _lastTouchEvent = thisEvent; + if (event->type() == QEvent::TouchUpdate) { + TouchEvent thisEvent(*event, _lastTouchEvent); + _controllerScriptingInterface.emitTouchUpdateEvent(thisEvent); // send events to any registered scripts + _lastTouchEvent = thisEvent; + } // if one of our scripts have asked to capture this event, then stop processing it if (_controllerScriptingInterface.isTouchCaptured()) { From 53577107de006332703a562ff77eea6268ddccaa Mon Sep 17 00:00:00 2001 From: Atlante45 Date: Fri, 24 Apr 2015 19:06:46 +0200 Subject: [PATCH 3/3] Formatting --- examples/look.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/examples/look.js b/examples/look.js index 773a4ff73b..7adcd054c2 100644 --- a/examples/look.js +++ b/examples/look.js @@ -114,7 +114,8 @@ function touchUpdateEvent(event) { lastTouchX = event.x; lastTouchY = event.y; var d = new Date(); - lastTouchEvent = d.getTime();} + lastTouchEvent = d.getTime(); +} function update(deltaTime) { @@ -122,7 +123,7 @@ function update(deltaTime) { print("update()..."); } - if(startedTouching) { + if (startedTouching) { var d = new Date(); var sinceLastTouch = d.getTime() - lastTouchEvent; if (sinceLastTouch > TIME_BEFORE_GENERATED_END_TOUCH_EVENT) {