Search in sources :

Example 11 with TouchEvent

use of com.jme3.input.event.TouchEvent in project jmonkeyengine by jMonkeyEngine.

the class AndroidGestureProcessor method onScroll.

@Override
public boolean onScroll(MotionEvent startEvent, MotionEvent endEvent, float distX, float distY) {
    // for the fact that jME has y=0 at bottom where Android has y=0 at top.
    if (!touchInput.getScaleDetector().isInProgress()) {
        //            logger.log(Level.INFO, "onScroll pointerId: {0}, startAction: {1}, startX: {2}, startY: {3}, endAction: {4}, endX: {5}, endY: {6}, dx: {7}, dy: {8}",
        //                    new Object[]{touchInput.getPointerId(startEvent), touchInput.getAction(startEvent), startEvent.getX(), startEvent.getY(), touchInput.getAction(endEvent), endEvent.getX(), endEvent.getY(), distX, distY});
        float jmeX = touchInput.getJmeX(endEvent.getX());
        float jmeY = touchInput.invertY(touchInput.getJmeY(endEvent.getY()));
        TouchEvent touchEvent = touchInput.getFreeTouchEvent();
        touchEvent.set(TouchEvent.Type.SCROLL, jmeX, jmeY, touchInput.getJmeX(-distX), touchInput.getJmeY(distY));
        touchEvent.setPointerId(touchInput.getPointerId(endEvent));
        touchEvent.setTime(endEvent.getEventTime());
        touchEvent.setPressure(endEvent.getPressure());
        touchInput.addEvent(touchEvent);
    }
    return true;
}
Also used : TouchEvent(com.jme3.input.event.TouchEvent)

Example 12 with TouchEvent

use of com.jme3.input.event.TouchEvent in project jmonkeyengine by jMonkeyEngine.

the class AndroidGestureProcessor method onDoubleTapEvent.

@Override
public boolean onDoubleTapEvent(MotionEvent event) {
    //                new Object[]{touchInput.getPointerId(event), touchInput.getAction(event), event.getX(), event.getY()});
    if (touchInput.getAction(event) == MotionEvent.ACTION_UP) {
        TouchEvent touchEvent = touchInput.getFreeTouchEvent();
        touchEvent.set(TouchEvent.Type.DOUBLETAP, event.getX(), touchInput.invertY(event.getY()), 0, 0);
        touchEvent.setPointerId(touchInput.getPointerId(event));
        touchEvent.setTime(event.getEventTime());
        touchEvent.setPressure(event.getPressure());
        touchInput.addEvent(touchEvent);
    }
    return true;
}
Also used : TouchEvent(com.jme3.input.event.TouchEvent)

Example 13 with TouchEvent

use of com.jme3.input.event.TouchEvent in project jmonkeyengine by jMonkeyEngine.

the class AndroidGestureProcessor method onLongPress.

@Override
public void onLongPress(MotionEvent event) {
    //        logger.log(Level.INFO, "onLongPress pointerId: {0}, action: {1}, x: {2}, y: {3}",
    //                new Object[]{touchInput.getPointerId(event), touchInput.getAction(event), event.getX(), event.getY()});
    float jmeX = touchInput.getJmeX(event.getX());
    float jmeY = touchInput.invertY(touchInput.getJmeY(event.getY()));
    TouchEvent touchEvent = touchInput.getFreeTouchEvent();
    touchEvent.set(TouchEvent.Type.LONGPRESSED, jmeX, jmeY, 0, 0);
    touchEvent.setPointerId(touchInput.getPointerId(event));
    touchEvent.setTime(event.getEventTime());
    touchEvent.setPressure(event.getPressure());
    touchInput.addEvent(touchEvent);
}
Also used : TouchEvent(com.jme3.input.event.TouchEvent)

Example 14 with TouchEvent

use of com.jme3.input.event.TouchEvent in project jmonkeyengine by jMonkeyEngine.

the class AndroidGestureProcessor method onScale.

@Override
public boolean onScale(ScaleGestureDetector scaleGestureDetector) {
    // return true or all gestures for this event will be accumulated
    //        logger.log(Level.INFO, "onScale");
    scaleStartX = gestureDownX;
    scaleStartY = gestureDownY;
    TouchEvent touchEvent = touchInput.getFreeTouchEvent();
    touchEvent.set(TouchEvent.Type.SCALE_MOVE, scaleStartX, scaleStartY, 0f, 0f);
    touchEvent.setPointerId(0);
    touchEvent.setTime(scaleGestureDetector.getEventTime());
    touchEvent.setScaleSpan(scaleGestureDetector.getCurrentSpan());
    touchEvent.setDeltaScaleSpan(scaleGestureDetector.getCurrentSpan() - scaleGestureDetector.getPreviousSpan());
    touchEvent.setScaleFactor(scaleGestureDetector.getScaleFactor());
    touchEvent.setScaleSpanInProgress(touchInput.getScaleDetector().isInProgress());
    touchInput.addEvent(touchEvent);
    return true;
}
Also used : TouchEvent(com.jme3.input.event.TouchEvent)

Example 15 with TouchEvent

use of com.jme3.input.event.TouchEvent in project jmonkeyengine by jMonkeyEngine.

the class AndroidGestureProcessor method onScaleBegin.

/* Events from ScaleGestureDetector */
@Override
public boolean onScaleBegin(ScaleGestureDetector scaleGestureDetector) {
    // Scale uses a focusX and focusY instead of x and y.  Focus is the middle
    // of the fingers.  Therefore, use the x and y values from the Down event
    // so that the x and y values don't jump to the middle position.
    // return true or all gestures for this beginning event will be discarded
    //        logger.log(Level.INFO, "onScaleBegin");
    scaleStartX = gestureDownX;
    scaleStartY = gestureDownY;
    TouchEvent touchEvent = touchInput.getFreeTouchEvent();
    touchEvent.set(TouchEvent.Type.SCALE_START, scaleStartX, scaleStartY, 0f, 0f);
    touchEvent.setPointerId(0);
    touchEvent.setTime(scaleGestureDetector.getEventTime());
    touchEvent.setScaleSpan(scaleGestureDetector.getCurrentSpan());
    touchEvent.setDeltaScaleSpan(0f);
    touchEvent.setScaleFactor(scaleGestureDetector.getScaleFactor());
    touchEvent.setScaleSpanInProgress(touchInput.getScaleDetector().isInProgress());
    touchInput.addEvent(touchEvent);
    return true;
}
Also used : TouchEvent(com.jme3.input.event.TouchEvent)

Aggregations

TouchEvent (com.jme3.input.event.TouchEvent)20 Vector2f (com.jme3.math.Vector2f)4 InputEvent (com.jme3.input.event.InputEvent)2 KeyInputEvent (com.jme3.input.event.KeyInputEvent)2 MouseButtonEvent (com.jme3.input.event.MouseButtonEvent)2 MouseMotionEvent (com.jme3.input.event.MouseMotionEvent)2