Пример #1
0
  private void processQueue() {
    int queueSize = inputQueue.size();
    RawInputListener[] array = getRawListenerArray();

    for (RawInputListener listener : array) {
      listener.beginInput();

      for (int j = 0; j < queueSize; j++) {
        InputEvent event = inputQueue.get(j);
        if (event.isConsumed()) {
          continue;
        }

        if (event instanceof MouseMotionEvent) {
          listener.onMouseMotionEvent((MouseMotionEvent) event);
        } else if (event instanceof KeyInputEvent) {
          listener.onKeyEvent((KeyInputEvent) event);
        } else if (event instanceof MouseButtonEvent) {
          listener.onMouseButtonEvent((MouseButtonEvent) event);
        } else if (event instanceof JoyAxisEvent) {
          listener.onJoyAxisEvent((JoyAxisEvent) event);
        } else if (event instanceof JoyButtonEvent) {
          listener.onJoyButtonEvent((JoyButtonEvent) event);
        } else if (event instanceof TouchEvent) {
          listener.onTouchEvent((TouchEvent) event);
        } else {
          assert false;
        }
      }

      listener.endInput();
    }

    for (int i = 0; i < queueSize; i++) {
      InputEvent event = inputQueue.get(i);
      if (event.isConsumed()) {
        continue;
      }

      if (event instanceof MouseMotionEvent) {
        onMouseMotionEventQueued((MouseMotionEvent) event);
      } else if (event instanceof KeyInputEvent) {
        onKeyEventQueued((KeyInputEvent) event);
      } else if (event instanceof MouseButtonEvent) {
        onMouseButtonEventQueued((MouseButtonEvent) event);
      } else if (event instanceof JoyAxisEvent) {
        onJoyAxisEventQueued((JoyAxisEvent) event);
      } else if (event instanceof JoyButtonEvent) {
        onJoyButtonEventQueued((JoyButtonEvent) event);
      } else if (event instanceof TouchEvent) {
        onTouchEventQueued((TouchEvent) event);
      } else {
        assert false;
      }
      // larynx, 2011.06.10 - flag event as reusable because
      // the android input uses a non-allocating ringbuffer which
      // needs to know when the event is not anymore in inputQueue
      // and therefor can be reused.
      event.setConsumed();
    }

    inputQueue.clear();
  }