Search in sources :

Example 6 with Joystick

use of com.jme3.input.Joystick in project jmonkeyengine by jMonkeyEngine.

the class TestAndroidSensors method simpleInitApp.

@Override
public void simpleInitApp() {
    if (enableFlyByCameraRotation) {
        flyCam.setEnabled(true);
    } else {
        flyCam.setEnabled(false);
    }
    Mesh lineX = new Line(Vector3f.ZERO, Vector3f.ZERO.add(Vector3f.UNIT_X.mult(3)));
    Mesh lineY = new Line(Vector3f.ZERO, Vector3f.ZERO.add(Vector3f.UNIT_Y.mult(3)));
    Mesh lineZ = new Line(Vector3f.ZERO, Vector3f.ZERO.add(Vector3f.UNIT_Z.mult(3)));
    Geometry geoX = new Geometry("X", lineX);
    Material matX = new Material(assetManager, "Common/MatDefs/Misc/Unshaded.j3md");
    matX.setColor("Color", ColorRGBA.Red);
    matX.getAdditionalRenderState().setLineWidth(30);
    geoX.setMaterial(matX);
    rootNode.attachChild(geoX);
    Geometry geoY = new Geometry("Y", lineY);
    Material matY = new Material(assetManager, "Common/MatDefs/Misc/Unshaded.j3md");
    matY.setColor("Color", ColorRGBA.Green);
    matY.getAdditionalRenderState().setLineWidth(30);
    geoY.setMaterial(matY);
    rootNode.attachChild(geoY);
    Geometry geoZ = new Geometry("Z", lineZ);
    Material matZ = new Material(assetManager, "Common/MatDefs/Misc/Unshaded.j3md");
    matZ.setColor("Color", ColorRGBA.Blue);
    matZ.getAdditionalRenderState().setLineWidth(30);
    geoZ.setMaterial(matZ);
    rootNode.attachChild(geoZ);
    Box b = new Box(1, 1, 1);
    geomZero = new Geometry("Box", b);
    Material mat = new Material(assetManager, "Common/MatDefs/Misc/Unshaded.j3md");
    mat.setColor("Color", ColorRGBA.Yellow);
    Texture tex_ml = assetManager.loadTexture("Interface/Logo/Monkey.jpg");
    mat.setTexture("ColorMap", tex_ml);
    geomZero.setMaterial(mat);
    geomZero.setLocalTranslation(Vector3f.ZERO);
    geomZero.setLocalRotation(Quaternion.IDENTITY);
    rootNode.attachChild(geomZero);
    // Touch (aka MouseInput.BUTTON_LEFT) is used to record the starting
    // orientation when using absolute rotations
    inputManager.addMapping("MouseClick", new MouseButtonTrigger(MouseInput.BUTTON_LEFT));
    inputManager.addListener(this, "MouseClick");
    Joystick[] joysticks = inputManager.getJoysticks();
    if (joysticks == null || joysticks.length < 1) {
        logger.log(Level.INFO, "Cannot find any joysticks!");
    } else {
        // Joysticks return a value of 0 to 1 based on how far the stick is
        // push on the axis. This value is then scaled based on how long
        // during the frame the joystick axis has been in that position.
        // If the joystick is push all the way for the whole frame,
        // then the value in onAnalog is equal to tpf.
        // If the joystick is push 1/2 way for the entire frame, then the
        // onAnalog value is 1/2 tpf.
        // Similarly, if the joystick is pushed to the maximum during a frame
        // the value in onAnalog will also be scaled.
        // For Android sensors, rotating the device 90deg is the same as
        // pushing an actual joystick axis to the maximum.
        logger.log(Level.INFO, "Number of joysticks: {0}", joysticks.length);
        JoystickAxis axis;
        for (Joystick joystick : joysticks) {
            // Get and display all axes in joystick.
            List<JoystickAxis> axes = joystick.getAxes();
            for (JoystickAxis joystickAxis : axes) {
                logger.log(Level.INFO, "{0} axis scan Name: {1}, LogicalId: {2}, AxisId: {3}", new Object[] { joystick.getName(), joystickAxis.getName(), joystickAxis.getLogicalId(), joystickAxis.getAxisId() });
            }
            // Get specific axis based on LogicalId of the JoystickAxis
            // If found, map axis
            axis = joystick.getAxis(SensorJoystickAxis.ORIENTATION_X);
            if (axis != null) {
                axis.assignAxis(ORIENTATION_X_PLUS, ORIENTATION_X_MINUS);
                inputManager.addListener(this, ORIENTATION_X_PLUS, ORIENTATION_X_MINUS);
                logger.log(Level.INFO, "Found {0} Joystick, assigning mapping for X axis: {1}, with max value: {2}", new Object[] { joystick.toString(), axis.toString(), ((SensorJoystickAxis) axis).getMaxRawValue() });
            }
            axis = joystick.getAxis(SensorJoystickAxis.ORIENTATION_Y);
            if (axis != null) {
                axis.assignAxis(ORIENTATION_Y_PLUS, ORIENTATION_Y_MINUS);
                inputManager.addListener(this, ORIENTATION_Y_PLUS, ORIENTATION_Y_MINUS);
                logger.log(Level.INFO, "Found {0} Joystick, assigning mapping for Y axis: {1}, with max value: {2}", new Object[] { joystick.toString(), axis.toString(), ((SensorJoystickAxis) axis).getMaxRawValue() });
            }
            axis = joystick.getAxis(SensorJoystickAxis.ORIENTATION_Z);
            if (axis != null) {
                axis.assignAxis(ORIENTATION_Z_PLUS, ORIENTATION_Z_MINUS);
                inputManager.addListener(this, ORIENTATION_Z_PLUS, ORIENTATION_Z_MINUS);
                logger.log(Level.INFO, "Found {0} Joystick, assigning mapping for Z axis: {1}, with max value: {2}", new Object[] { joystick.toString(), axis.toString(), ((SensorJoystickAxis) axis).getMaxRawValue() });
            }
            joystickMap.put(joystick.getJoyId(), joystick);
        }
    }
}
Also used : Line(com.jme3.scene.shape.Line) Geometry(com.jme3.scene.Geometry) Joystick(com.jme3.input.Joystick) Mesh(com.jme3.scene.Mesh) Material(com.jme3.material.Material) Box(com.jme3.scene.shape.Box) MouseButtonTrigger(com.jme3.input.controls.MouseButtonTrigger) SensorJoystickAxis(com.jme3.input.SensorJoystickAxis) JoystickAxis(com.jme3.input.JoystickAxis) Texture(com.jme3.texture.Texture)

Example 7 with Joystick

use of com.jme3.input.Joystick in project jmonkeyengine by jMonkeyEngine.

the class TestAndroidSensors method onAction.

public void onAction(String string, boolean pressed, float tpf) {
    if (string.equalsIgnoreCase("MouseClick") && pressed) {
        // is a sensor joystick axis
        for (IntMap.Entry<Joystick> entry : joystickMap) {
            for (JoystickAxis axis : entry.getValue().getAxes()) {
                if (axis instanceof SensorJoystickAxis) {
                    logger.log(Level.INFO, "Calibrating Axis: {0}", axis.toString());
                    ((SensorJoystickAxis) axis).calibrateCenter();
                }
            }
        }
        if (enableRumble) {
            // manipulate joystick rumble
            for (IntMap.Entry<Joystick> entry : joystickMap) {
                rumbleAmount += 0.1f;
                if (rumbleAmount > 1f + FastMath.ZERO_TOLERANCE) {
                    rumbleAmount = 0f;
                }
                logger.log(Level.INFO, "rumbling with amount: {0}", rumbleAmount);
                entry.getValue().rumble(rumbleAmount);
            }
        }
    }
}
Also used : Joystick(com.jme3.input.Joystick) SensorJoystickAxis(com.jme3.input.SensorJoystickAxis) IntMap(com.jme3.util.IntMap) SensorJoystickAxis(com.jme3.input.SensorJoystickAxis) JoystickAxis(com.jme3.input.JoystickAxis)

Example 8 with Joystick

use of com.jme3.input.Joystick in project jmonkeyengine by jMonkeyEngine.

the class AndroidJoystickJoyInput14 method onKey.

public boolean onKey(KeyEvent event) {
    boolean consumed = false;
    //        logger.log(Level.INFO, "onKey event: {0}", event);
    event.getDeviceId();
    event.getSource();
    AndroidJoystick joystick = joystickIndex.get(event.getDeviceId());
    if (joystick != null) {
        JoystickButton button = joystick.getButton(event.getKeyCode());
        boolean pressed = event.getAction() == KeyEvent.ACTION_DOWN;
        if (button != null) {
            JoyButtonEvent buttonEvent = new JoyButtonEvent(button, pressed);
            joyInput.addEvent(buttonEvent);
            consumed = true;
        } else {
            JoystickButton newButton = joystick.addButton(event.getKeyCode());
            JoyButtonEvent buttonEvent = new JoyButtonEvent(newButton, pressed);
            joyInput.addEvent(buttonEvent);
            consumed = true;
        }
    }
    return consumed;
}
Also used : DefaultJoystickButton(com.jme3.input.DefaultJoystickButton) JoystickButton(com.jme3.input.JoystickButton) JoyButtonEvent(com.jme3.input.event.JoyButtonEvent)

Example 9 with Joystick

use of com.jme3.input.Joystick in project jmonkeyengine by jMonkeyEngine.

the class TestJoystick method dumpJoysticks.

protected void dumpJoysticks(Joystick[] joysticks, PrintWriter out) {
    for (Joystick j : joysticks) {
        out.println("Joystick[" + j.getJoyId() + "]:" + j.getName());
        out.println("  buttons:" + j.getButtonCount());
        for (JoystickButton b : j.getButtons()) {
            out.println("   " + b);
        }
        out.println("  axes:" + j.getAxisCount());
        for (JoystickAxis axis : j.getAxes()) {
            out.println("   " + axis);
        }
    }
}
Also used : JoystickButton(com.jme3.input.JoystickButton) Joystick(com.jme3.input.Joystick) JoystickAxis(com.jme3.input.JoystickAxis)

Example 10 with Joystick

use of com.jme3.input.Joystick in project jmonkeyengine by jMonkeyEngine.

the class TestJoystick method simpleInitApp.

@Override
public void simpleInitApp() {
    getFlyByCamera().setEnabled(false);
    Joystick[] joysticks = inputManager.getJoysticks();
    if (joysticks == null)
        throw new IllegalStateException("Cannot find any joysticks!");
    try {
        PrintWriter out = new PrintWriter(new FileWriter("joysticks-" + System.currentTimeMillis() + ".txt"));
        dumpJoysticks(joysticks, out);
        out.close();
    } catch (IOException e) {
        throw new RuntimeException("Error writing joystick dump", e);
    }
    int gamepadSize = cam.getHeight() / 2;
    float scale = gamepadSize / 512.0f;
    gamepad = new GamepadView();
    gamepad.setLocalTranslation(cam.getWidth() - gamepadSize - (scale * 20), 0, 0);
    gamepad.setLocalScale(scale, scale, scale);
    guiNode.attachChild(gamepad);
    joystickInfo = new Node("joystickInfo");
    joystickInfo.setLocalTranslation(0, cam.getHeight(), 0);
    guiNode.attachChild(joystickInfo);
    // Add a raw listener because it's eisier to get all joystick events
    // this way.
    inputManager.addRawInputListener(new JoystickEventListener());
    // add action listener for mouse click 
    // to all easier custom mapping
    inputManager.addMapping("mouseClick", new MouseButtonTrigger(mouseInput.BUTTON_LEFT));
    inputManager.addListener(new ActionListener() {

        @Override
        public void onAction(String name, boolean isPressed, float tpf) {
            if (isPressed) {
                pickGamePad(getInputManager().getCursorPosition());
            }
        }
    }, "mouseClick");
}
Also used : FileWriter(java.io.FileWriter) Node(com.jme3.scene.Node) IOException(java.io.IOException) Joystick(com.jme3.input.Joystick) ActionListener(com.jme3.input.controls.ActionListener) MouseButtonTrigger(com.jme3.input.controls.MouseButtonTrigger) PrintWriter(java.io.PrintWriter)

Aggregations

JoystickAxis (com.jme3.input.JoystickAxis)7 Joystick (com.jme3.input.Joystick)6 JoystickButton (com.jme3.input.JoystickButton)4 SensorJoystickAxis (com.jme3.input.SensorJoystickAxis)3 DefaultJoystickAxis (com.jme3.input.DefaultJoystickAxis)2 DefaultJoystickButton (com.jme3.input.DefaultJoystickButton)2 JoyAxisTrigger (com.jme3.input.controls.JoyAxisTrigger)2 MouseButtonTrigger (com.jme3.input.controls.MouseButtonTrigger)2 IntMap (com.jme3.util.IntMap)2 InputDevice (android.view.InputDevice)1 MotionRange (android.view.InputDevice.MotionRange)1 AbstractJoystick (com.jme3.input.AbstractJoystick)1 InputManager (com.jme3.input.InputManager)1 ActionListener (com.jme3.input.controls.ActionListener)1 JoyAxisEvent (com.jme3.input.event.JoyAxisEvent)1 JoyButtonEvent (com.jme3.input.event.JoyButtonEvent)1 Material (com.jme3.material.Material)1 Geometry (com.jme3.scene.Geometry)1 Mesh (com.jme3.scene.Mesh)1 Node (com.jme3.scene.Node)1