diff options
author | Rémi Verschelde <rverschelde@gmail.com> | 2018-01-08 08:04:33 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-01-08 08:04:33 +0100 |
commit | 06bb4acae04ea45948780c333bb5d9c2b4c45ced (patch) | |
tree | 8a2c2815418a21ff7549f8427f0094caf4f81364 /platform/android/os_android.cpp | |
parent | 37ca542d2bfd9aac296e82e30a76117090dea08e (diff) | |
parent | 8fbb82719e6d1f4e29980d66380474b6a0c45e1d (diff) | |
download | redot-engine-06bb4acae04ea45948780c333bb5d9c2b4c45ced.tar.gz |
Merge pull request #15440 from volzhs/fix-android-touch
Fix Android multi touch
Diffstat (limited to 'platform/android/os_android.cpp')
-rw-r--r-- | platform/android/os_android.cpp | 32 |
1 files changed, 17 insertions, 15 deletions
diff --git a/platform/android/os_android.cpp b/platform/android/os_android.cpp index 93272a1000..23811f963a 100644 --- a/platform/android/os_android.cpp +++ b/platform/android/os_android.cpp @@ -444,25 +444,27 @@ void OS_Android::process_touch(int p_what, int p_pointer, const Vector<TouchPos> } touch.clear(); } - } break; - case 3: { // add tuchi - - ERR_FAIL_INDEX(p_pointer, p_points.size()); + case 3: { // add touch - TouchPos tp = p_points[p_pointer]; - touch.push_back(tp); + for (int i = 0; i < p_points.size(); i++) { + if (p_points[i].id == p_pointer) { + TouchPos tp = p_points[i]; + touch.push_back(tp); - Ref<InputEventScreenTouch> ev; - ev.instance(); + Ref<InputEventScreenTouch> ev; + ev.instance(); - ev->set_index(tp.id); - ev->set_pressed(true); - ev->set_position(tp.pos); - input->parse_input_event(ev); + ev->set_index(tp.id); + ev->set_pressed(true); + ev->set_position(tp.pos); + input->parse_input_event(ev); + break; + } + } } break; - case 4: { + case 4: { // remove touch for (int i = 0; i < touch.size(); i++) { if (touch[i].id == p_pointer) { @@ -474,10 +476,10 @@ void OS_Android::process_touch(int p_what, int p_pointer, const Vector<TouchPos> ev->set_position(touch[i].pos); input->parse_input_event(ev); touch.remove(i); - i--; + + break; } } - } break; } } |