int32_t GLESApplication::handleInput(android_app *app, AInputEvent *event) { int32_t eventType = AInputEvent_getType(event); if (eventType == AINPUT_EVENT_TYPE_MOTION) { int32_t action = AMotionEvent_getAction(event); switch(action) { case AMOTION_EVENT_ACTION_DOWN: onTouchDown(AMotionEvent_getX(event, 0), AMotionEvent_getY(event, 0)); break; case AMOTION_EVENT_ACTION_MOVE: onTouchMove(AMotionEvent_getX(event, 0), AMotionEvent_getY(event, 0)); break; case AMOTION_EVENT_ACTION_UP: onTouchUp(AMotionEvent_getX(event, 0), AMotionEvent_getY(event, 0)); break; default: break; } } return 0; }
inline void processTouches(int command, int x, int y) { switch (command) { case CMD_TOUCH_END2: touch2.clear(); nFingers--; break; case CMD_TOUCH_START2: touch2.x = x; touch2.y = y; oldlen = touch2.subtract(touch2, touch1).length(); m_spinning = false; nFingers++; break; case CMD_TOUCHMOVE2: touch2.x = x; touch2.y = y; m_spinning = false; break; case CMD_TOUCHMOVE: { if (m_spinning && !isPinching()) { start = MapToSphere(m_fingerStart); end = MapToSphere(vec2(x,y)); delta = CQuaternion::CreateFromVectors(start, end); m_orientation = delta.Rotated(m_prevOrientation); } } break; case CMD_TOUCH_START: touch1.x = x; touch1.y = y; onTouchDown(x,y); nFingers++; break; case CMD_TOUCH_END: touch1.x = x; touch1.y = y; onTouchUp(x,y); touch1.clear(); touch2.clear(); m_spinning = false; nFingers--; break; case CMD_SCREENSIZE: touch1.x = x; touch1.y = y; onScreenSize(x,y); break; } }
void cwTouchEventListener::onEvent(cwEvent* pEvent) { if (pEvent->getEventType() != EventTypeMouse) return; cwTouchEvent* pTouchEvent = static_cast<cwTouchEvent*>(pEvent); switch (pTouchEvent->getTouchType()) { case TouchTypeDown: if (onTouchDown) { onTouchDown(pTouchEvent->getTouch()); } break; case TouchTypeUp: if (onTouchUp) { onTouchUp(pTouchEvent->getTouch()); } break; case TouchTypeMoving: if (onTouchMoving) { onTouchMoving(pTouchEvent->getTouch()); } break; #if _CW_PLATFORM_ == _CW_PLATFORM_WINDOWS_ case TouchTypeWheel: if (onTouchWheel) { onTouchWheel(pTouchEvent->getTouch()); } break; #endif default: break; } onBehaviour(pEvent); }