Exemplo n.º 1
0
        private void processMouseInput(float delta)
        {
            if (!engine.hasFocus())
            {
                return;
            }

            Vector2i deltaMouse = mouse.getDelta();

            //process mouse movement x axis
            if (deltaMouse.x != 0)
            {
                MouseAxisEvent @event = new MouseXAxisEvent(deltaMouse.x * config.getInput().getMouseSensitivity(), delta);
                setupTarget(@event);
                for (EntityRef entity : getInputEntities())
                {
                    entity.send(@event);
                    if (@event.isConsumed())
                    {
                        break;
                    }
                }
            }

            //process mouse movement y axis
            if (deltaMouse.y != 0)
            {
                MouseAxisEvent @event = new MouseYAxisEvent(deltaMouse.y * config.getInput().getMouseSensitivity(), delta);
                setupTarget(@event);
                for (EntityRef entity : getInputEntities())
                {
                    entity.send(@event);
                    if (@event.isConsumed())
                    {
                        break;
                    }
                }
            }

            //process mouse clicks
            for (InputAction action : mouse.getInputQueue())
            {
                switch (action.getInput().getType())
                {
                case MOUSE_BUTTON:
                    int id = action.getInput().getId();
                    if (id != -1)
                    {
                        MouseInput button   = MouseInput.find(action.getInput().getType(), action.getInput().getId());
                        bool       consumed = sendMouseEvent(button, action.getState().isDown(), action.getMousePosition(), delta);

                        BindableButtonImpl bind = mouseButtonBinds.get(button);
                        if (bind != null)
                        {
                            bind.updateBindState(
                                action.getInput(),
                                action.getState().isDown(),
                                delta,
                                getInputEntities(),
                                targetSystem.getTarget(),
                                targetSystem.getTargetBlockPosition(),
                                targetSystem.getHitPosition(),
                                targetSystem.getHitNormal(),
                                consumed
                                );
                        }
                    }
                    break;

                case MOUSE_WHEEL:
                    int dir = action.getInput().getId();
                    if (dir != 0 && action.getTurns() != 0)
                    {
                        bool consumed = sendMouseWheelEvent(action.getMousePosition(), dir * action.getTurns(), delta);

                        BindableButtonImpl bind = (dir == 1) ? mouseWheelUpBind : mouseWheelDownBind;
                        if (bind != null)
                        {
                            for (int i = 0; i < action.getTurns(); ++i)
                            {
                                bind.updateBindState(
                                    action.getInput(),
                                    true,
                                    delta,
                                    getInputEntities(),
                                    targetSystem.getTarget(),
                                    targetSystem.getTargetBlockPosition(),
                                    targetSystem.getHitPosition(),
                                    targetSystem.getHitNormal(),
                                    consumed
                                    );
                                bind.updateBindState(
                                    action.getInput(),
                                    false,
                                    delta,
                                    getInputEntities(),
                                    targetSystem.getTarget(),
                                    targetSystem.getTargetBlockPosition(),
                                    targetSystem.getHitPosition(),
                                    targetSystem.getHitNormal(),
                                    consumed
                                    );
                            }
                        }
                    }
                    break;

                case KEY:
                    break;
                }
            }
        }