-<?xml version="1.0" encoding="UTF-8"?>
-<classpath>
- <classpathentry excluding="**/.svn/*" kind="src" path="src"/>
- <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
- <classpathentry combineaccessrules="false" kind="src" path="/gdx"/>
- <classpathentry combineaccessrules="false" exported="true" kind="src" path="/gdx-audio"/>
- <classpathentry combineaccessrules="false" exported="true" kind="src" path="/gdx-freetype"/>
- <classpathentry combineaccessrules="false" exported="true" kind="src" path="/gdx-image"/>
- <classpathentry combineaccessrules="false" exported="true" kind="src" path="/gdx-bullet"/>
- <classpathentry combineaccessrules="false" kind="src" path="/gdx-gleed"/>
- <classpathentry kind="output" path="bin"/>
-</classpath>
+<?xml version="1.0" encoding="UTF-8"?>\r
+<classpath>\r
+ <classpathentry excluding="**/.svn/*" kind="src" path="src"/>\r
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>\r
+ <classpathentry combineaccessrules="false" kind="src" path="/gdx"/>\r
+ <classpathentry combineaccessrules="false" exported="true" kind="src" path="/gdx-audio"/>\r
+ <classpathentry combineaccessrules="false" exported="true" kind="src" path="/gdx-freetype"/>\r
+ <classpathentry combineaccessrules="false" exported="true" kind="src" path="/gdx-image"/>\r
+ <classpathentry combineaccessrules="false" exported="true" kind="src" path="/gdx-bullet"/>\r
+ <classpathentry combineaccessrules="false" exported="true" kind="src" path="/gdx-gleed"/>\r
+ <classpathentry combineaccessrules="false" kind="src" path="/gdx-controllers"/>\r
+ <classpathentry kind="output" path="bin"/>\r
+</classpath>\r
--- /dev/null
+package com.badlogic.gdx.tests;\r
+\r
+import com.badlogic.gdx.Gdx;\r
+import com.badlogic.gdx.controllers.Controller;\r
+import com.badlogic.gdx.controllers.ControllerListener;\r
+import com.badlogic.gdx.controllers.Controllers;\r
+import com.badlogic.gdx.controllers.PovDirection;\r
+import com.badlogic.gdx.graphics.GL10;\r
+import com.badlogic.gdx.math.Vector3;\r
+import com.badlogic.gdx.scenes.scene2d.InputEvent;\r
+import com.badlogic.gdx.scenes.scene2d.Stage;\r
+import com.badlogic.gdx.scenes.scene2d.ui.List;\r
+import com.badlogic.gdx.scenes.scene2d.ui.ScrollPane;\r
+import com.badlogic.gdx.scenes.scene2d.ui.Skin;\r
+import com.badlogic.gdx.scenes.scene2d.ui.Table;\r
+import com.badlogic.gdx.scenes.scene2d.ui.TextButton;\r
+import com.badlogic.gdx.scenes.scene2d.utils.ClickListener;\r
+import com.badlogic.gdx.tests.utils.GdxTest;\r
+\r
+public class GamepadTest extends GdxTest {\r
+ String descriptor;\r
+ Skin skin;\r
+ Table ui;\r
+ Stage stage;\r
+ ScrollPane scrollPane;\r
+ List console;\r
+ \r
+ @Override\r
+ public void create () {\r
+ setupUi();\r
+ \r
+ // print the currently connected controllers to the console\r
+ print("Controllers: " + Controllers.getControllers().size);\r
+ int i = 0;\r
+ for(Controller controller: Controllers.getControllers()) {\r
+ print("#" + i++ + ": " + controller.getName());\r
+ }\r
+ if(Controllers.getControllers().size == 0) print("No controllers attached");\r
+ \r
+ // setup the listener that prints events to the console\r
+ Controllers.addListener(new ControllerListener() {\r
+ public int indexOf(Controller controller) {\r
+ return Controllers.getControllers().indexOf(controller, true);\r
+ }\r
+ \r
+ @Override\r
+ public void connected (Controller controller) {\r
+ print("connected " + controller.getName());\r
+ int i = 0;\r
+ for(Controller c: Controllers.getControllers()) {\r
+ print("#" + i++ + ": " + c.getName());\r
+ }\r
+ }\r
+\r
+ @Override\r
+ public void disconnected (Controller controller) {\r
+ print("disconnected " + controller.getName());\r
+ int i = 0;\r
+ for(Controller c: Controllers.getControllers()) {\r
+ print("#" + i++ + ": " + c.getName());\r
+ }\r
+ if(Controllers.getControllers().size == 0) print("No controllers attached");\r
+ }\r
+\r
+ @Override\r
+ public boolean buttonDown (Controller controller, int buttonIndex) {\r
+ print("#" + indexOf(controller) + ", button " + buttonIndex + " down");\r
+ return false;\r
+ }\r
+\r
+ @Override\r
+ public boolean buttonUp (Controller controller, int buttonIndex) {\r
+ print("#" + indexOf(controller) + ", button " + buttonIndex + " up");\r
+ return false;\r
+ }\r
+\r
+ @Override\r
+ public boolean axisMoved (Controller controller, int axisIndex, float value) {\r
+ print("#" + indexOf(controller) + ", axis " + axisIndex + ": " + value);\r
+ return false;\r
+ }\r
+\r
+ @Override\r
+ public boolean povMoved (Controller controller, int povIndex, PovDirection value) {\r
+ print("#" + indexOf(controller) + ", pov " + povIndex + ": " + value);\r
+ return false;\r
+ }\r
+\r
+ @Override\r
+ public boolean xSliderMoved (Controller controller, int sliderIndex, boolean value) {\r
+ print("#" + indexOf(controller) + ", x slider " + sliderIndex + ": " + value);\r
+ return false;\r
+ }\r
+\r
+ @Override\r
+ public boolean ySliderMoved (Controller controller, int sliderIndex, boolean value) {\r
+ print("#" + indexOf(controller) + ", y slider " + sliderIndex + ": " + value);\r
+ return false;\r
+ }\r
+\r
+ @Override\r
+ public boolean accelerometerMoved (Controller controller, int accelerometerIndex, Vector3 value) {\r
+ // not printing this as we get to many values\r
+ return false;\r
+ }\r
+ });\r
+ }\r
+ \r
+ private void print(String message) {\r
+ String[] lines = console.getItems();\r
+ String[] newLines = new String[lines.length + 1];\r
+ System.arraycopy(lines, 0, newLines, 0, lines.length);\r
+ newLines[newLines.length-1] = message;\r
+ console.setItems(newLines);\r
+ scrollPane.setScrollPercentY(1.0f);\r
+ }\r
+ \r
+ private void clear() {\r
+ console.setItems(new Object[0]);\r
+ }\r
+\r
+ private void setupUi() {\r
+ // setup a tiny ui with a console and a clear button.\r
+ skin = new Skin(Gdx.files.internal("data/uiskin.json"));\r
+ stage = new Stage(Gdx.graphics.getWidth(), Gdx.graphics.getHeight(), true);\r
+ ui = new Table();\r
+ ui.setSize(Gdx.graphics.getWidth(), Gdx.graphics.getHeight());\r
+ console = new List(new String[0], skin);\r
+ scrollPane = new ScrollPane(console);\r
+ scrollPane.setScrollbarsOnTop(true);\r
+ TextButton clear = new TextButton("Clear", skin);\r
+ ui.add(scrollPane).expand(true, true).fill();\r
+ ui.row();\r
+ ui.add(clear).expand(true, false).fill();\r
+ stage.addActor(ui);\r
+ clear.addListener(new ClickListener() {\r
+ @Override\r
+ public void clicked (InputEvent event, float x, float y) {\r
+ clear();\r
+ }\r
+ });\r
+ Gdx.input.setInputProcessor(stage);\r
+ }\r
+ \r
+ @Override\r
+ public void resize (int width, int height) {\r
+ ui.setSize(width, height);\r
+ ui.invalidate();\r
+ stage.setViewport(width, height, false);\r
+ }\r
+\r
+ @Override\r
+ public void render () {\r
+ Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT);\r
+ stage.act(Gdx.graphics.getDeltaTime());\r
+ stage.draw();\r
+ }\r
+}\r