Merge pull request #470 from PVince81/sdlmultitouch-nonlegacy

Implement touch support in SDLApplication
This commit is contained in:
Joshua Granick
2015-06-16 14:43:30 -07:00
2 changed files with 43 additions and 6 deletions

View File

@@ -159,6 +159,13 @@ namespace lime {
ProcessMouseEvent (event);
break;
case SDL_FINGERMOTION:
case SDL_FINGERDOWN:
case SDL_FINGERUP:
ProcessTouchEvent (event);
break;
case SDL_TEXTINPUT:
case SDL_TEXTEDITING:
@@ -387,9 +394,39 @@ namespace lime {
void SDLApplication::ProcessTouchEvent (SDL_Event* event) {
if (TouchEvent::callback) {
switch (event->type) {
case SDL_FINGERMOTION:
touchEvent.type = TOUCH_MOVE;
touchEvent.x = event->tfinger.x;
touchEvent.y = event->tfinger.y;
touchEvent.id = event->tfinger.fingerId;
break;
case SDL_FINGERDOWN:
touchEvent.type = TOUCH_START;
touchEvent.x = event->tfinger.x;
touchEvent.y = event->tfinger.y;
touchEvent.id = event->tfinger.fingerId;
break;
case SDL_FINGERUP:
touchEvent.type = TOUCH_END;
touchEvent.x = event->tfinger.x;
touchEvent.y = event->tfinger.y;
touchEvent.id = event->tfinger.fingerId;
break;
}
TouchEvent::Dispatch (&touchEvent);
}
}
@@ -588,4 +625,4 @@ namespace lime {
#ifdef ANDROID
int SDL_main (int argc, char *argv[]) { return 0; }
#endif
#endif

View File

@@ -46,11 +46,11 @@ namespace lime {
alloc_field (object, id_x, alloc_float (event->x));
alloc_field (object, id_y, alloc_float (event->y));
val_call1 (TouchEvent::callback->get (), object);
val_call0 (TouchEvent::callback->get ());
}
}
}
}