From 18fc034c512d610b9c93b927dd9b724d8ce99c28 Mon Sep 17 00:00:00 2001 From: kappa1 Date: Tue, 10 Apr 2012 11:44:50 +0000 Subject: [PATCH] Apply patch by OrangyTang to expose JInput's rumble functionality in LWJGL's Controller class. --- src/java/org/lwjgl/input/Controller.java | 17 +++++++++++++++++ src/java/org/lwjgl/input/JInputController.java | 18 +++++++++++++++++- 2 files changed, 34 insertions(+), 1 deletion(-) diff --git a/src/java/org/lwjgl/input/Controller.java b/src/java/org/lwjgl/input/Controller.java index 2721ff64..e7dbc163 100644 --- a/src/java/org/lwjgl/input/Controller.java +++ b/src/java/org/lwjgl/input/Controller.java @@ -270,4 +270,21 @@ public interface Controller { * @param zone The dead zone to use for the RZ axis */ void setRZAxisDeadZone(float zone); + + + /** Returns the number of rumblers this controller supports */ + int getRumblerCount(); + + /** Returns the name of the specified rumbler + * + * @param index The rumbler index + */ + String getRumblerName(final int index); + + /** Sets the vibration strength of the specified rumbler + * + * @param index The index of the rumbler + * @param strength The strength to vibrate at + */ + void setRumblerStrength(final int index, final float strength); } diff --git a/src/java/org/lwjgl/input/JInputController.java b/src/java/org/lwjgl/input/JInputController.java index 04e4aa53..dda8c550 100644 --- a/src/java/org/lwjgl/input/JInputController.java +++ b/src/java/org/lwjgl/input/JInputController.java @@ -38,6 +38,7 @@ import net.java.games.input.Component.Identifier.Axis; import net.java.games.input.Component.Identifier.Button; import net.java.games.input.Event; import net.java.games.input.EventQueue; +import net.java.games.input.Rumbler; /** * A wrapper round a JInput controller that attempts to make the interface @@ -56,6 +57,8 @@ class JInputController implements Controller { private ArrayList axes = new ArrayList(); /** The POVs that have been detected on the JInput controller */ private ArrayList pov = new ArrayList(); + /** The rumblers exposed by the controller */ + private Rumbler[] rumblers; /** The state of the buttons last check */ private boolean[] buttonState; /** The values that were read from the pov last check */ @@ -86,7 +89,7 @@ class JInputController implements Controller { * @param index The index this controller has been assigned to * @param target The target JInput controller this class is wrapping */ - JInputController(int index,net.java.games.input.Controller target) { + JInputController(final int index, net.java.games.input.Controller target) { this.target = target; this.index = index; @@ -148,6 +151,8 @@ class JInputController implements Controller { axesMax[i] = 1.0f; deadZones[i] = 0.05f; } + + rumblers = target.getRumblers(); } /* @@ -506,5 +511,16 @@ class JInputController implements Controller { return 0; } + public int getRumblerCount() { + return rumblers.length; + } + + public String getRumblerName(final int index) { + return rumblers[index].getAxisName(); + } + + public void setRumblerStrength(final int index, final float strength) { + rumblers[index].rumble(strength); + } }