Adds support for the addition and removal of joysticks.
This commit is contained in:
@@ -21,6 +21,7 @@ import com.jme3.font.BitmapText;
|
|||||||
import com.jme3.input.Joystick;
|
import com.jme3.input.Joystick;
|
||||||
import com.jme3.input.JoystickAxis;
|
import com.jme3.input.JoystickAxis;
|
||||||
import com.jme3.input.JoystickButton;
|
import com.jme3.input.JoystickButton;
|
||||||
|
import com.jme3.input.JoystickConnectionListener;
|
||||||
import com.jme3.input.RawInputListener;
|
import com.jme3.input.RawInputListener;
|
||||||
import com.jme3.input.event.JoyAxisEvent;
|
import com.jme3.input.event.JoyAxisEvent;
|
||||||
import com.jme3.input.event.JoyButtonEvent;
|
import com.jme3.input.event.JoyButtonEvent;
|
||||||
@@ -70,7 +71,7 @@ import static markil3.controller.Main.START;
|
|||||||
* @author Stephen Gold
|
* @author Stephen Gold
|
||||||
*/
|
*/
|
||||||
public class JoystickPreviewScreen extends BaseAppState
|
public class JoystickPreviewScreen extends BaseAppState
|
||||||
implements RawInputListener
|
implements RawInputListener, JoystickConnectionListener
|
||||||
{
|
{
|
||||||
private static final org.slf4j.Logger logger =
|
private static final org.slf4j.Logger logger =
|
||||||
org.slf4j.LoggerFactory.getLogger(JoystickPreviewScreen.class);
|
org.slf4j.LoggerFactory.getLogger(JoystickPreviewScreen.class);
|
||||||
@@ -529,15 +530,32 @@ public class JoystickPreviewScreen extends BaseAppState
|
|||||||
@Override
|
@Override
|
||||||
public void initialize(Application app)
|
public void initialize(Application app)
|
||||||
{
|
{
|
||||||
int mostButtons = 0;
|
|
||||||
Joystick joy;
|
|
||||||
int l = this.getApplication().getInputManager().getJoysticks().length;
|
|
||||||
|
|
||||||
this.guiFont =
|
this.guiFont =
|
||||||
app.getAssetManager().loadFont("Interface/Fonts/Default.fnt");
|
app.getAssetManager().loadFont("Interface/Fonts/Default.fnt");
|
||||||
this.refLabel = this.guiFont.createLabel("Axis X/Axis Y");
|
this.refLabel = this.guiFont.createLabel("Axis X/Axis Y");
|
||||||
this.gui.attachChild(this.refLabel);
|
this.gui.attachChild(this.refLabel);
|
||||||
|
|
||||||
|
this.updateGamepad();
|
||||||
|
|
||||||
|
// this.initNavState();
|
||||||
|
// this.setFocus(this.playButton);
|
||||||
|
this.setEnabled(true);
|
||||||
|
|
||||||
|
((SimpleApplication) this.getApplication()).getGuiNode()
|
||||||
|
.attachChild(this.gui);
|
||||||
|
this.resize(((SimpleApplication) this.getApplication()).getCamera()
|
||||||
|
.getWidth(),
|
||||||
|
((SimpleApplication) this.getApplication()).getCamera()
|
||||||
|
.getHeight());
|
||||||
|
this.setEnabled(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void updateGamepad()
|
||||||
|
{
|
||||||
|
int mostButtons = 0;
|
||||||
|
Joystick joy;
|
||||||
|
int l = this.getApplication().getInputManager().getJoysticks().length;
|
||||||
|
|
||||||
if (this.gamepadCont != null)
|
if (this.gamepadCont != null)
|
||||||
{
|
{
|
||||||
for (Node cont : this.gamepadCont)
|
for (Node cont : this.gamepadCont)
|
||||||
@@ -548,9 +566,22 @@ public class JoystickPreviewScreen extends BaseAppState
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if (this.labels != null)
|
||||||
|
{
|
||||||
|
for (BitmapText[] cont : this.labels)
|
||||||
|
{
|
||||||
|
for (BitmapText cont2 : cont)
|
||||||
|
{
|
||||||
|
if (cont2 != null)
|
||||||
|
{
|
||||||
|
cont2.removeFromParent();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
for (int i = 0; i < l; i++)
|
for (int i = 0; i < l; i++)
|
||||||
{
|
{
|
||||||
joy = app.getInputManager().getJoysticks()[i];
|
joy = this.getApplication().getInputManager().getJoysticks()[i];
|
||||||
mostButtons = Math.max(joy.getAxisCount() + joy.getButtonCount(),
|
mostButtons = Math.max(joy.getAxisCount() + joy.getButtonCount(),
|
||||||
mostButtons);
|
mostButtons);
|
||||||
}
|
}
|
||||||
@@ -573,18 +604,6 @@ public class JoystickPreviewScreen extends BaseAppState
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
this.addButtons();
|
this.addButtons();
|
||||||
|
|
||||||
// this.initNavState();
|
|
||||||
// this.setFocus(this.playButton);
|
|
||||||
this.setEnabled(true);
|
|
||||||
|
|
||||||
((SimpleApplication) this.getApplication()).getGuiNode()
|
|
||||||
.attachChild(this.gui);
|
|
||||||
this.resize(((SimpleApplication) this.getApplication()).getCamera()
|
|
||||||
.getWidth(),
|
|
||||||
((SimpleApplication) this.getApplication()).getCamera()
|
|
||||||
.getHeight());
|
|
||||||
this.setEnabled(true);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void addButtons()
|
private void addButtons()
|
||||||
@@ -650,12 +669,16 @@ public class JoystickPreviewScreen extends BaseAppState
|
|||||||
protected void onEnable()
|
protected void onEnable()
|
||||||
{
|
{
|
||||||
this.getApplication().getInputManager().addRawInputListener(this);
|
this.getApplication().getInputManager().addRawInputListener(this);
|
||||||
|
this.getApplication().getInputManager()
|
||||||
|
.addJoystickConnectionListener(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onDisable()
|
protected void onDisable()
|
||||||
{
|
{
|
||||||
this.getApplication().getInputManager().removeRawInputListener(this);
|
this.getApplication().getInputManager().removeRawInputListener(this);
|
||||||
|
this.getApplication().getInputManager()
|
||||||
|
.removeJoystickConnectionListener(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void setLabels(Joystick joy)
|
private void setLabels(Joystick joy)
|
||||||
@@ -928,4 +951,30 @@ public class JoystickPreviewScreen extends BaseAppState
|
|||||||
public void onTouchEvent(TouchEvent evt)
|
public void onTouchEvent(TouchEvent evt)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onConnected(Joystick joystick)
|
||||||
|
{
|
||||||
|
this.updateGamepad();
|
||||||
|
this.resize(((SimpleApplication) this.getApplication()).getCamera()
|
||||||
|
.getWidth(),
|
||||||
|
((SimpleApplication) this.getApplication()).getCamera()
|
||||||
|
.getHeight());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onDisconnected(Joystick joystick)
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* TODO - This callback will fire before the joystick is actually
|
||||||
|
* removed. This is helpful at times, but it does mean we will have a
|
||||||
|
* blank slot because this code still thinks we have the one that was
|
||||||
|
* removed.
|
||||||
|
*/
|
||||||
|
this.updateGamepad();
|
||||||
|
this.resize(((SimpleApplication) this.getApplication()).getCamera()
|
||||||
|
.getWidth(),
|
||||||
|
((SimpleApplication) this.getApplication()).getCamera()
|
||||||
|
.getHeight());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user