From 2970ff46b372ce659d4856037bb547818b8657fe Mon Sep 17 00:00:00 2001 From: "PSp..om" Date: Sun, 23 Sep 2012 04:18:49 +0000 Subject: [PATCH] Updated the joystick test to allow better testing of joysticks and gamepads. It now presents a gamepad on the screen that updates itself whenever any connected joystick or gamepad are used. This allows the tester to compare the actual controller layout to the "default" controller layout. Information about the active joystick's available axes and buttons is also rendered to the display. A dump of all controllers and their components is written to joysticks-###.txt file. git-svn-id: https://jmonkeyengine.googlecode.com/svn/trunk@9762 75d07b2b-3a1a-0410-a2c5-0572b91ccdca --- .../src/test/jme3test/input/TestJoystick.java | 378 +++++++++++++++++- .../Interface/Joystick/gamepad-buttons.png | Bin 0 -> 21469 bytes .../Interface/Joystick/gamepad-frame.png | Bin 0 -> 63750 bytes .../Interface/Joystick/gamepad-stick.png | Bin 0 -> 3116 bytes 4 files changed, 358 insertions(+), 20 deletions(-) create mode 100644 engine/test-data/Interface/Joystick/gamepad-buttons.png create mode 100644 engine/test-data/Interface/Joystick/gamepad-frame.png create mode 100644 engine/test-data/Interface/Joystick/gamepad-stick.png diff --git a/engine/src/test/jme3test/input/TestJoystick.java b/engine/src/test/jme3test/input/TestJoystick.java index 6b8107e1b..a05b1ecbd 100644 --- a/engine/src/test/jme3test/input/TestJoystick.java +++ b/engine/src/test/jme3test/input/TestJoystick.java @@ -1,13 +1,38 @@ package jme3test.input; import com.jme3.app.SimpleApplication; -import com.jme3.input.JoyInput; +import com.jme3.font.BitmapText; import com.jme3.input.Joystick; -import com.jme3.input.controls.ActionListener; -import com.jme3.input.controls.AnalogListener; +import com.jme3.input.JoystickAxis; +import com.jme3.input.JoystickButton; +import com.jme3.input.RawInputListener; +import com.jme3.input.event.JoyAxisEvent; +import com.jme3.input.event.JoyButtonEvent; +import com.jme3.input.event.KeyInputEvent; +import com.jme3.input.event.MouseButtonEvent; +import com.jme3.input.event.MouseMotionEvent; +import com.jme3.input.event.TouchEvent; +import com.jme3.material.Material; +import com.jme3.material.RenderState.BlendMode; +import com.jme3.math.ColorRGBA; +import com.jme3.math.FastMath; +import com.jme3.math.Vector2f; +import com.jme3.scene.Geometry; +import com.jme3.scene.Node; +import com.jme3.scene.shape.Quad; import com.jme3.system.AppSettings; +import java.io.FileWriter; +import java.io.IOException; +import java.io.PrintWriter; +import java.util.HashMap; +import java.util.Map; -public class TestJoystick extends SimpleApplication implements AnalogListener, ActionListener { +public class TestJoystick extends SimpleApplication { + + private Joystick viewedJoystick; + private GamepadView gamepad; + private Node joystickInfo; + private float yInfo = 0; public static void main(String[] args){ TestJoystick app = new TestJoystick(); @@ -16,35 +41,348 @@ public class TestJoystick extends SimpleApplication implements AnalogListener, A app.setSettings(settings); app.start(); } - + @Override public void simpleInitApp() { Joystick[] joysticks = inputManager.getJoysticks(); if (joysticks == null) throw new IllegalStateException("Cannot find any joysticks!"); - for (int i = 0; i < joysticks.length; i++){ - Joystick joy = joysticks[i]; - System.out.println(joy.toString()); + 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() ); + } + + protected void dumpJoysticks( Joystick[] joysticks, PrintWriter out ) { + for( Joystick j : joysticks ) { + out.println( "Joystick[" + j.getJoyId() + "]:" + j.getName() ); + out.println( " buttons:" + j.getButtonCount() ); - joy.assignAxis("Joy Right", "Joy Left", joy.getXAxisIndex()); - joy.assignAxis("Joy Down", "Joy Up", joy.getYAxisIndex()); - joy.assignAxis("DPAD Right", "DPAD Left", JoyInput.AXIS_POV_X); - joy.assignAxis("DPAD Up", "DPAD Down", JoyInput.AXIS_POV_Y); - joy.assignButton("Button", 0); + for( JoystickAxis axis : j.getAxes() ) { + out.println( " " + axis ); + } } + } - inputManager.addListener(this, "DPAD Left", "DPAD Right", "DPAD Down", "DPAD Up"); - inputManager.addListener(this, "Joy Left", "Joy Right", "Joy Down", "Joy Up"); - inputManager.addListener(this, "Button"); + protected void addInfo( String info, int column ) { + + BitmapText t = new BitmapText(guiFont); + t.setText( info ); + t.setLocalTranslation( column * 200, yInfo, 0 ); + joystickInfo.attachChild(t); + yInfo -= t.getHeight(); } - public void onAnalog(String name, float isPressed, float tpf) { - System.out.println(name + " = " + isPressed / tpf); + protected void setViewedJoystick( Joystick stick ) { + if( this.viewedJoystick == stick ) + return; + + if( this.viewedJoystick != null ) { + joystickInfo.detachAllChildren(); + } + + this.viewedJoystick = stick; + + if( this.viewedJoystick != null ) { + // Draw the hud + yInfo = 0; + + addInfo( "Joystick:\"" + stick.getName() + "\" id:" + stick.getJoyId(), 0 ); + + yInfo -= 5; + + float ySave = yInfo; + + // Column one for the buttons + addInfo( "Buttons:", 0 ); + for( JoystickButton b : stick.getButtons() ) { + addInfo( " '" + b.getName() + "' id:'" + b.getLogicalId() + "'", 0 ); + } + yInfo = ySave; + + // Column two for the axes + addInfo( "Axes:", 1 ); + for( JoystickAxis a : stick.getAxes() ) { + addInfo( " '" + a.getName() + "' id:'" + a.getLogicalId() + "' analog:" + a.isAnalog(), 1 ); + } + + } } + + /** + * Easier to watch for all button and axis events with a raw input listener. + */ + protected class JoystickEventListener implements RawInputListener { - public void onAction(String name, boolean isPressed, float tpf) { - System.out.println(name + " = " + isPressed); + public void onJoyAxisEvent(JoyAxisEvent evt) { + setViewedJoystick( evt.getAxis().getJoystick() ); + gamepad.setAxisValue( evt.getAxis(), evt.getValue() ); + } + + public void onJoyButtonEvent(JoyButtonEvent evt) { + setViewedJoystick( evt.getButton().getJoystick() ); + gamepad.setButtonValue( evt.getButton(), evt.isPressed() ); + } + + public void beginInput() {} + public void endInput() {} + public void onMouseMotionEvent(MouseMotionEvent evt) {} + public void onMouseButtonEvent(MouseButtonEvent evt) {} + public void onKeyEvent(KeyInputEvent evt) {} + public void onTouchEvent(TouchEvent evt) {} } + protected class GamepadView extends Node { + + float xAxis = 0; + float yAxis = 0; + float zAxis = 0; + float zRotation = 0; + + float lastPovX = 0; + float lastPovY = 0; + + Geometry leftStick; + Geometry rightStick; + + Map buttons = new HashMap(); + + public GamepadView() { + super( "gamepad" ); + + // Sizes naturally for the texture size. All positions will + // be in that space because it's easier. + int size = 512; + + Material m = new Material(assetManager, "Common/MatDefs/Misc/Unshaded.j3md"); + m.setTexture( "ColorMap", assetManager.loadTexture( "Interface/Joystick/gamepad-buttons.png" ) ); + m.getAdditionalRenderState().setBlendMode( BlendMode.Alpha ); + Geometry buttonPanel = new Geometry( "buttons", new Quad(size, size) ); + buttonPanel.setLocalTranslation( 0, 0, -1 ); + buttonPanel.setMaterial(m); + attachChild(buttonPanel); + + m = new Material(assetManager, "Common/MatDefs/Misc/Unshaded.j3md"); + m.setTexture( "ColorMap", assetManager.loadTexture( "Interface/Joystick/gamepad-frame.png" ) ); + m.getAdditionalRenderState().setBlendMode( BlendMode.Alpha ); + Geometry frame = new Geometry( "frame", new Quad(size, size) ); + frame.setMaterial(m); + attachChild(frame); + + m = new Material(assetManager, "Common/MatDefs/Misc/Unshaded.j3md"); + m.setTexture( "ColorMap", assetManager.loadTexture( "Interface/Joystick/gamepad-stick.png" ) ); + m.getAdditionalRenderState().setBlendMode( BlendMode.Alpha ); + leftStick = new Geometry( "leftStick", new Quad(64, 64) ); + leftStick.setMaterial(m); + attachChild(leftStick); + rightStick = new Geometry( "leftStick", new Quad(64, 64) ); + rightStick.setMaterial(m); + attachChild(rightStick); + + // A "standard" mapping... fits a majority of my game pads + addButton( "Button 0", 371, 512 - 176, 42, 42 ); + addButton( "Button 1", 407, 512 - 212, 42, 42 ); + addButton( "Button 2", 371, 512 - 248, 42, 42 ); + addButton( "Button 3", 334, 512 - 212, 42, 42 ); + + // Front buttons Some of these have the top ones and the bottoms ones flipped. + addButton( "Button 4", 67, 512 - 111, 95, 21 ); + addButton( "Button 5", 348, 512 - 111, 95, 21 ); + addButton( "Button 6", 67, 512 - 89, 95, 21 ); + addButton( "Button 7", 348, 512 - 89, 95, 21 ); + + // Select and start buttons + addButton( "Button 8", 206, 512 - 198, 48, 30 ); + addButton( "Button 9", 262, 512 - 198, 48, 30 ); + + // Joystick push buttons + addButton( "Button 10", 147, 512 - 300, 75, 70 ); + addButton( "Button 11", 285, 512 - 300, 75, 70 ); + + // Fake button highlights for the POV axes + // + // +Y + // -X +X + // -Y + // + addButton( "POV +Y", 96, 512 - 174, 40, 38 ); + addButton( "POV +X", 128, 512 - 208, 40, 38 ); + addButton( "POV -Y", 96, 512 - 239, 40, 38 ); + addButton( "POV -X", 65, 512 - 208, 40, 38 ); + + resetPositions(); + } + + private void addButton( String name, float x, float y, float width, float height ) { + ButtonView b = new ButtonView(name, x, y, width, height); + attachChild(b); + buttons.put(name, b); + } + + public void setAxisValue( JoystickAxis axis, float value ) { + System.out.println( "Axis:" + axis.getName() + "=" + value ); + if( axis == axis.getJoystick().getXAxis() ) { + setXAxis(value); + } else if( axis == axis.getJoystick().getYAxis() ) { + setYAxis(-value); + } else if( axis == axis.getJoystick().getAxis("Z Axis") ) { + // Note: in the above condition, we could check the axis name but + // I have at least one joystick that reports 2 "Z Axis" axes. + // In this particular case, the first one is the right one so + // a name based lookup will find the proper one. It's a problem + // because the erroneous axis sends a constant stream of values. + setZAxis(value); + } else if( axis == axis.getJoystick().getAxis("Z Rotation") ) { + setZRotation(-value); + } else if( axis == axis.getJoystick().getPovXAxis() ) { + if( lastPovX < 0 ) { + setButtonValue( "POV -X", false ); + } else if( lastPovX > 0 ) { + setButtonValue( "POV +X", false ); + } + if( value < 0 ) { + setButtonValue( "POV -X", true ); + } else if( value > 0 ) { + setButtonValue( "POV +X", true ); + } + lastPovX = value; + } else if( axis == axis.getJoystick().getPovYAxis() ) { + if( lastPovY < 0 ) { + setButtonValue( "POV -Y", false ); + } else if( lastPovY > 0 ) { + setButtonValue( "POV +Y", false ); + } + if( value < 0 ) { + setButtonValue( "POV -Y", true ); + } else if( value > 0 ) { + setButtonValue( "POV +Y", true ); + } + lastPovY = value; + } + } + + public void setButtonValue( JoystickButton button, boolean isPressed ) { + System.out.println( "Button:" + button.getName() + "=" + (isPressed ? "Down" : "Up") ); + setButtonValue( button.getName(), isPressed ); + } + + protected void setButtonValue( String name, boolean isPressed ) { + ButtonView view = buttons.get(name); + if( view != null ) { + if( isPressed ) { + view.down(); + } else { + view.up(); + } + } + } + + public void setXAxis( float f ) { + xAxis = f; + resetPositions(); + } + + public void setYAxis( float f ) { + yAxis = f; + resetPositions(); + } + + public void setZAxis( float f ) { + zAxis = f; + resetPositions(); + } + + public void setZRotation( float f ) { + zRotation = f; + resetPositions(); + } + + private void resetPositions() { + + float xBase = 155; + float yBase = 212; + + Vector2f dir = new Vector2f(xAxis, yAxis); + float length = Math.min(1, dir.length()); + dir.normalizeLocal(); + + float angle = dir.getAngle(); + float x = FastMath.cos(angle) * length * 10; + float y = FastMath.sin(angle) * length * 10; + leftStick.setLocalTranslation( xBase + x, yBase + y, 0 ); + + + xBase = 291; + dir = new Vector2f(zAxis, zRotation); + length = Math.min(1, dir.length()); + dir.normalizeLocal(); + + angle = dir.getAngle(); + x = FastMath.cos(angle) * length * 10; + y = FastMath.sin(angle) * length * 10; + rightStick.setLocalTranslation( xBase + x, yBase + y, 0 ); + } + } + + protected class ButtonView extends Node { + + private int state = 0; + private Material material; + private ColorRGBA hilite = new ColorRGBA( 0.0f, 0.75f, 0.75f, 0.5f ); + + public ButtonView( String name, float x, float y, float width, float height ) { + super(name); + setLocalTranslation( x, y, -0.5f ); + + material = new Material(assetManager, "Common/MatDefs/Misc/Unshaded.j3md"); + material.setColor( "Color", hilite ); + material.getAdditionalRenderState().setBlendMode( BlendMode.Alpha ); + + Geometry g = new Geometry( "highlight", new Quad(width, height) ); + g.setMaterial(material); + attachChild(g); + + resetState(); + } + + private void resetState() { + if( state <= 0 ) { + setCullHint( CullHint.Always ); + } else { + setCullHint( CullHint.Dynamic ); + } + + System.out.println( getName() + " state:" + state ); + } + + public void down() { + state++; + resetState(); + } + + public void up() { + state--; + resetState(); + } + } } diff --git a/engine/test-data/Interface/Joystick/gamepad-buttons.png b/engine/test-data/Interface/Joystick/gamepad-buttons.png new file mode 100644 index 0000000000000000000000000000000000000000..ea8f50c69ab73820604fb67422fce36266e68e9e GIT binary patch literal 21469 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 literal 0 HcmV?d00001 diff --git a/engine/test-data/Interface/Joystick/gamepad-frame.png b/engine/test-data/Interface/Joystick/gamepad-frame.png new file mode 100644 index 0000000000000000000000000000000000000000..0db36a11505c5d588fa8babb27a3598761bd5338 GIT binary patch literal 63750 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 literal 0 HcmV?d00001 diff --git a/engine/test-data/Interface/Joystick/gamepad-stick.png b/engine/test-data/Interface/Joystick/gamepad-stick.png new file mode 100644 index 0000000000000000000000000000000000000000..75b83d5e5d47eb185fc0b8b71d7fae34cd31ff1a GIT binary patch literal 3116 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 literal 0 HcmV?d00001