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;
}
Exemplo n.º 2
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);
}