Kaynağa Gözat

joystick: use jinput backend for lwjgl3

Kirill Vainer 9 yıl önce
ebeveyn
işleme
f28d74a1f6

+ 11 - 0
jme3-jinput/build.gradle

@@ -0,0 +1,11 @@
+if (!hasProperty('mainClass')) {
+    ext.mainClass = ''
+}
+
+dependencies {
+    compile project(':jme3-core')
+    compile project(':jme3-desktop')
+    compile 'net.java.jinput:jinput:2.0.6'
+
+    testCompile project(path: ':jme3-core', configuration: 'testOutput')
+}

+ 28 - 21
jme3-lwjgl/src/main/java/com/jme3/input/lwjgl/JInputJoyInput.java → jme3-jinput/src/main/java/com/jme3/input/jinput/JInputJoyInput.java

@@ -1,4 +1,4 @@
-package com.jme3.input.lwjgl;
+package com.jme3.input.jinput;
 
 import com.jme3.input.AbstractJoystick;
 import com.jme3.input.DefaultJoystickAxis;
@@ -32,25 +32,13 @@ public class JInputJoyInput implements JoyInput {
     private JInputJoystick[] joysticks;
     private RawInputListener listener;
 
-    private Map<Controller, JInputJoystick> joystickIndex = new HashMap<Controller, JInputJoystick>();
-    
-    public void setJoyRumble(int joyId, float amount){
-
-        if( joyId >= joysticks.length )        
-            throw new IllegalArgumentException();
-            
-        Controller c = joysticks[joyId].controller;
-        for (Rumbler r : c.getRumblers()){
-            r.rumble(amount);
-        }
-    }
+    private final Map<Controller, JInputJoystick> joystickIndex = new HashMap<Controller, JInputJoystick>();
 
+    @Override
     public Joystick[] loadJoysticks(InputManager inputManager){
         ControllerEnvironment ce =
             ControllerEnvironment.getDefaultEnvironment();
 
-        Controller[] cs = ce.getControllers();
-        
         List<Joystick> list = new ArrayList<Joystick>();
         for( Controller c : ce.getControllers() ) {
             if (c.getType() == Controller.Type.KEYBOARD
@@ -82,10 +70,12 @@ public class JInputJoyInput implements JoyInput {
         return joysticks;
     }
 
+    @Override
     public void initialize() {
         inited = true;
     }
 
+    @Override
     public void update() {
         ControllerEnvironment ce =
             ControllerEnvironment.getDefaultEnvironment();
@@ -151,25 +141,42 @@ public class JInputJoyInput implements JoyInput {
         }
     }
 
+    @Override
+    public void setJoyRumble(int joyId, float amount) {
+
+        if (joyId >= joysticks.length) {
+            throw new IllegalArgumentException();
+        }
+
+        Controller c = joysticks[joyId].controller;
+        for (Rumbler r : c.getRumblers()) {
+            r.rumble(amount);
+        }
+    }
+
+    @Override
     public void destroy() {
         inited = false;
     }
 
+    @Override
     public boolean isInitialized() {
         return inited;
     }
 
+    @Override
     public void setInputListener(RawInputListener listener) {
         this.listener = listener;
     }
 
+    @Override
     public long getInputTimeNanos() {
         return 0;
     }
 
-    protected class JInputJoystick extends AbstractJoystick {
+    private static class JInputJoystick extends AbstractJoystick {
 
-        private JoystickAxis nullAxis;
+        private final JoystickAxis nullAxis;
         private Controller controller;    
         private JoystickAxis xAxis;
         private JoystickAxis yAxis;
@@ -216,8 +223,8 @@ public class JInputJoyInput implements JoyInput {
             String name = comp.getName();
             String original = id.getName();
             String logicalId = JoystickCompatibilityMappings.remapComponent( controller.getName(), original );
-            if( name != original ) {
-                logger.log(Level.FINE, "Remapped:" + original + " to:" + logicalId);
+            if (!logicalId.equals(original)) {
+                logger.log(Level.FINE, "Remapped:{0} to:{1}", new Object[]{original, logicalId});
             }
  
             JoystickButton button = new DefaultJoystickButton( getInputManager(), this, getButtonCount(),
@@ -238,8 +245,8 @@ public class JInputJoyInput implements JoyInput {
             String name = comp.getName();
             String original = id.getName();
             String logicalId = JoystickCompatibilityMappings.remapComponent( controller.getName(), original );
-            if( name != original ) {
-                logger.log(Level.FINE, "Remapped:" + original + " to:" + logicalId);
+            if (!logicalId.equals(original)) {
+                logger.log(Level.FINE, "Remapped:{0} to:{1}", new Object[]{original, logicalId});
             }
             
             JoystickAxis axis = new DefaultJoystickAxis( getInputManager(), 

+ 1 - 0
jme3-lwjgl/build.gradle

@@ -5,6 +5,7 @@ if (!hasProperty('mainClass')) {
 dependencies {
     compile project(':jme3-core')
     compile project(':jme3-desktop')
+    compile project(':jme3-jinput')
     compile 'org.lwjgl.lwjgl:lwjgl:2.9.3'
 
     testCompile project(path: ':jme3-core', configuration: 'testOutput')

+ 1 - 1
jme3-lwjgl/src/main/java/com/jme3/system/lwjgl/LwjglAbstractDisplay.java

@@ -36,9 +36,9 @@ import com.jme3.input.JoyInput;
 import com.jme3.input.KeyInput;
 import com.jme3.input.MouseInput;
 import com.jme3.input.TouchInput;
-import com.jme3.input.lwjgl.JInputJoyInput;
 import com.jme3.input.lwjgl.LwjglKeyInput;
 import com.jme3.input.lwjgl.LwjglMouseInput;
+import com.jme3.input.jinput.JInputJoyInput;
 import com.jme3.system.AppSettings;
 import com.jme3.system.JmeSystem;
 import java.util.concurrent.atomic.AtomicBoolean;

+ 1 - 2
jme3-lwjgl/src/main/java/com/jme3/system/lwjgl/LwjglContext.java

@@ -31,7 +31,7 @@
  */
 package com.jme3.system.lwjgl;
 
-import com.jme3.input.lwjgl.JInputJoyInput;
+import com.jme3.input.jinput.JInputJoyInput;
 import com.jme3.input.lwjgl.LwjglKeyInput;
 import com.jme3.input.lwjgl.LwjglMouseInput;
 import com.jme3.renderer.Renderer;
@@ -52,7 +52,6 @@ import com.jme3.renderer.opengl.GLTiming;
 import com.jme3.renderer.opengl.GLTimingState;
 import com.jme3.renderer.opengl.GLTracer;
 import com.jme3.system.*;
-import java.io.File;
 
 import java.util.concurrent.atomic.AtomicBoolean;
 import java.util.logging.Level;

+ 1 - 0
jme3-lwjgl3/build.gradle

@@ -7,6 +7,7 @@ def lwjglVersion = '3.0.0b'
 dependencies {
     compile project(':jme3-core')
     compile project(':jme3-desktop')
+    compile project(':jme3-jinput')
 
     compile "org.lwjgl:lwjgl:${lwjglVersion}"
     compile "org.lwjgl:lwjgl-platform:${lwjglVersion}:natives-windows"

+ 2 - 1
jme3-lwjgl3/src/main/java/com/jme3/system/lwjgl/LwjglContext.java

@@ -32,6 +32,7 @@
 
 package com.jme3.system.lwjgl;
 
+import com.jme3.input.jinput.JInputJoyInput;
 import com.jme3.input.lwjgl.GlfwJoystickInput;
 import com.jme3.input.lwjgl.GlfwKeyInput;
 import com.jme3.input.lwjgl.GlfwMouseInput;
@@ -74,7 +75,7 @@ public abstract class LwjglContext implements JmeContext {
     protected Renderer renderer;
     protected GlfwKeyInput keyInput;
     protected GlfwMouseInput mouseInput;
-    protected GlfwJoystickInput joyInput;
+    protected JInputJoyInput joyInput;
     protected Timer timer;
     protected SystemListener listener;
 

+ 2 - 1
jme3-lwjgl3/src/main/java/com/jme3/system/lwjgl/LwjglWindow.java

@@ -36,6 +36,7 @@ import com.jme3.input.JoyInput;
 import com.jme3.input.KeyInput;
 import com.jme3.input.MouseInput;
 import com.jme3.input.TouchInput;
+import com.jme3.input.jinput.JInputJoyInput;
 import com.jme3.input.lwjgl.GlfwJoystickInput;
 import com.jme3.input.lwjgl.GlfwKeyInput;
 import com.jme3.input.lwjgl.GlfwMouseInput;
@@ -465,7 +466,7 @@ public abstract class LwjglWindow extends LwjglContext implements Runnable {
 
     public JoyInput getJoyInput() {
         if (joyInput == null) {
-            joyInput = new GlfwJoystickInput();
+            joyInput = new JInputJoyInput();
         }
         return joyInput;
     }

+ 1 - 0
settings.gradle

@@ -14,6 +14,7 @@ include 'jme3-terrain'
 include 'jme3-desktop'
 include 'jme3-blender'
 include 'jme3-jogl'
+include 'jme3-jinput'
 include 'jme3-lwjgl'
 include 'jme3-lwjgl3'