• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 package com.jme3.input;
2 
3 import com.jme3.input.controls.JoyAxisTrigger;
4 import com.jme3.input.controls.JoyButtonTrigger;
5 
6 /**
7  * A joystick represents a single joystick that is installed in the system.
8  *
9  * @author Kirill Vainer
10  */
11 public final class Joystick {
12 
13     private InputManager inputManager;
14     private JoyInput joyInput;
15     private int joyId;
16     private int buttonCount;
17     private int axisCount;
18     private int axisXIndex, axisYIndex;
19     private String name;
20 
21     /**
22      * Creates a new joystick instance. Only used internally.
23      */
Joystick(InputManager inputManager, JoyInput joyInput, int joyId, String name, int buttonCount, int axisCount, int xAxis, int yAxis)24     public Joystick(InputManager inputManager, JoyInput joyInput,
25                     int joyId, String name, int buttonCount, int axisCount,
26                     int xAxis, int yAxis){
27         this.inputManager = inputManager;
28         this.joyInput = joyInput;
29         this.joyId = joyId;
30         this.name = name;
31         this.buttonCount = buttonCount;
32         this.axisCount = axisCount;
33 
34         this.axisXIndex = xAxis;
35         this.axisYIndex = yAxis;
36     }
37 
38     /**
39      * Rumbles the joystick for the given amount/magnitude.
40      *
41      * @param amount The amount to rumble. Should be between 0 and 1.
42      */
rumble(float amount)43     public void rumble(float amount){
44         joyInput.setJoyRumble(joyId, amount);
45     }
46 
47     /**
48      * Assign the mapping name to receive events from the given button index
49      * on the joystick.
50      *
51      * @param mappingName The mapping to receive joystick button events.
52      * @param buttonId The button index.
53      *
54      * @see Joystick#getButtonCount()
55      */
assignButton(String mappingName, int buttonId)56     public void assignButton(String mappingName, int buttonId){
57         if (buttonId < 0 || buttonId >= buttonCount)
58             throw new IllegalArgumentException();
59 
60         inputManager.addMapping(mappingName, new JoyButtonTrigger(joyId, buttonId));
61     }
62 
63     /**
64      * Assign the mappings to receive events from the given joystick axis.
65      *
66      * @param positiveMapping The mapping to receive events when the axis is negative
67      * @param negativeMapping The mapping to receive events when the axis is positive
68      * @param axisId The axis index.
69      *
70      * @see Joystick#getAxisCount()
71      */
assignAxis(String positiveMapping, String negativeMapping, int axisId)72     public void assignAxis(String positiveMapping, String negativeMapping, int axisId){
73         inputManager.addMapping(positiveMapping, new JoyAxisTrigger(joyId, axisId, false));
74         inputManager.addMapping(negativeMapping, new JoyAxisTrigger(joyId, axisId, true));
75     }
76 
77     /**
78      * Gets the index number for the X axis on the joystick.
79      *
80      * <p>E.g. for most gamepads, the left control stick X axis will be returned.
81      *
82      * @return The axis index for the X axis for this joystick.
83      *
84      * @see Joystick#assignAxis(java.lang.String, java.lang.String, int)
85      */
getXAxisIndex()86     public int getXAxisIndex(){
87         return axisXIndex;
88     }
89 
90     /**
91      * Gets the index number for the Y axis on the joystick.
92      *
93      * <p>E.g. for most gamepads, the left control stick Y axis will be returned.
94      *
95      * @return The axis index for the Y axis for this joystick.
96      *
97      * @see Joystick#assignAxis(java.lang.String, java.lang.String, int)
98      */
getYAxisIndex()99     public int getYAxisIndex(){
100         return axisYIndex;
101     }
102 
103     /**
104      * Returns the number of axes on this joystick.
105      *
106      * @return the number of axes on this joystick.
107      */
getAxisCount()108     public int getAxisCount() {
109         return axisCount;
110     }
111 
112     /**
113      * Returns the number of buttons on this joystick.
114      *
115      * @return the number of buttons on this joystick.
116      */
getButtonCount()117     public int getButtonCount() {
118         return buttonCount;
119     }
120 
121     /**
122      * Returns the name of this joystick.
123      *
124      * @return the name of this joystick.
125      */
getName()126     public String getName() {
127         return name;
128     }
129 
130     @Override
toString()131     public String toString(){
132         return "Joystick[name=" + name + ", id=" + joyId + ", buttons=" + buttonCount
133                                 + ", axes=" + axisCount + "]";
134     }
135 
136 }
137