Search in sources :

Example 1 with UITouchPhase

use of org.robovm.apple.uikit.UITouchPhase in project libgdx by libgdx.

the class IOSInput method toTouchEvents.

private void toTouchEvents(long touches) {
    long array = NSSetExtensions.allObjects(touches);
    int length = (int) NSArrayExtensions.count(array);
    for (int i = 0; i < length; i++) {
        long touchHandle = NSArrayExtensions.objectAtIndex$(array, i);
        UITouch touch = UI_TOUCH_WRAPPER.wrap(touchHandle);
        final int locX, locY;
        // Get and map the location to our drawing space
        {
            CGPoint loc = touch.getLocationInView(touch.getWindow());
            final CGRect bounds = app.getCachedBounds();
            locX = (int) (loc.getX() * app.displayScaleFactor - bounds.getMinX());
            locY = (int) (loc.getY() * app.displayScaleFactor - bounds.getMinY());
        // app.debug("IOSInput","pos= "+loc+"  bounds= "+bounds+" x= "+locX+" locY= "+locY);
        }
        synchronized (touchEvents) {
            UITouchPhase phase = touch.getPhase();
            TouchEvent event = touchEventPool.obtain();
            event.x = locX;
            event.y = locY;
            event.phase = phase;
            event.timestamp = (long) (touch.getTimestamp() * 1000000000);
            touchEvents.add(event);
            if (phase == UITouchPhase.Began) {
                event.pointer = getFreePointer();
                touchDown[event.pointer] = touch.getHandle();
                touchX[event.pointer] = event.x;
                touchY[event.pointer] = event.y;
                deltaX[event.pointer] = 0;
                deltaY[event.pointer] = 0;
                numTouched++;
            }
            if (phase == UITouchPhase.Moved || phase == UITouchPhase.Stationary) {
                event.pointer = findPointer(touch);
                deltaX[event.pointer] = event.x - touchX[event.pointer];
                deltaY[event.pointer] = event.y - touchY[event.pointer];
                touchX[event.pointer] = event.x;
                touchY[event.pointer] = event.y;
            }
            if (phase == UITouchPhase.Cancelled || phase == UITouchPhase.Ended) {
                event.pointer = findPointer(touch);
                touchDown[event.pointer] = 0;
                touchX[event.pointer] = event.x;
                touchY[event.pointer] = event.y;
                deltaX[event.pointer] = 0;
                deltaY[event.pointer] = 0;
                numTouched--;
            }
        }
    }
}
Also used : CGPoint(org.robovm.apple.coregraphics.CGPoint) UITouchPhase(org.robovm.apple.uikit.UITouchPhase) UITouch(org.robovm.apple.uikit.UITouch) CGRect(org.robovm.apple.coregraphics.CGRect) CGPoint(org.robovm.apple.coregraphics.CGPoint)

Aggregations

CGPoint (org.robovm.apple.coregraphics.CGPoint)1 CGRect (org.robovm.apple.coregraphics.CGRect)1 UITouch (org.robovm.apple.uikit.UITouch)1 UITouchPhase (org.robovm.apple.uikit.UITouchPhase)1