Fixed issue with AndroidInput not resetting the last touch position correctly on the UP and DOWN actions. See forum post http://jmonkeyengine.org/groups/android/forum/topic/small-bug-in-androidinput/#post-183530

git-svn-id: https://jmonkeyengine.googlecode.com/svn/trunk@9572 75d07b2b-3a1a-0410-a2c5-0572b91ccdca
3.0
pot..om 13 years ago
parent c7186886bc
commit 242f5d82f9
  1. 7
      engine/src/android/com/jme3/input/android/AndroidInput.java

@ -227,6 +227,7 @@ public class AndroidInput implements
int pointerIndex = (event.getAction() & MotionEvent.ACTION_POINTER_INDEX_MASK)
>> MotionEvent.ACTION_POINTER_INDEX_SHIFT;
int pointerId = event.getPointerId(pointerIndex);
Vector2f lastPos = lastPositions.get(pointerId);
// final int historySize = event.getHistorySize();
//final int pointerCount = event.getPointerCount();
@ -240,6 +241,9 @@ public class AndroidInput implements
touch.setPressure(event.getPressure(pointerIndex));
processEvent(touch);
lastPos = new Vector2f(event.getX(pointerIndex), view.getHeight() - event.getY(pointerIndex));
lastPositions.put(pointerId, lastPos);
bWasHandled = true;
break;
case MotionEvent.ACTION_POINTER_UP:
@ -251,13 +255,14 @@ public class AndroidInput implements
touch.setTime(event.getEventTime());
touch.setPressure(event.getPressure(pointerIndex));
processEvent(touch);
lastPositions.remove(pointerId);
bWasHandled = true;
break;
case MotionEvent.ACTION_MOVE:
// Convert all pointers into events
for (int p = 0; p < event.getPointerCount(); p++) {
Vector2f lastPos = lastPositions.get(p);
lastPos = lastPositions.get(p);
if (lastPos == null) {
lastPos = new Vector2f(event.getX(p), view.getHeight() - event.getY(p));
lastPositions.put(event.getPointerId(p), lastPos);

Loading…
Cancel
Save