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

@@ -160,6 +160,13 @@ namespace lime {
ProcessMouseEvent (event); ProcessMouseEvent (event);
break; break;
case SDL_FINGERMOTION:
case SDL_FINGERDOWN:
case SDL_FINGERUP:
ProcessTouchEvent (event);
break;
case SDL_TEXTINPUT: case SDL_TEXTINPUT:
case SDL_TEXTEDITING: case SDL_TEXTEDITING:
@@ -388,7 +395,37 @@ namespace lime {
void SDLApplication::ProcessTouchEvent (SDL_Event* event) { 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);
}
} }

View File

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