@@ -101,14 +101,7 @@ void InputManager::addJoystickByDeviceIndex(int id)
101101 // set up the prevAxisValues
102102 int numAxes = SDL_JoystickNumAxes (joy);
103103 mPrevAxisValues [joyId] = new int [numAxes];
104- mInitAxisValues [joyId] = new int [numAxes];
105-
106- int axis;
107- for (int i = 0 ; i< numAxes; i++) {
108- axis = SDL_JoystickGetAxis (joy, i);
109- mInitAxisValues [joyId][i] = axis;
110- mPrevAxisValues [joyId][i] = axis;
111- }
104+ std::fill (mPrevAxisValues [joyId], mPrevAxisValues [joyId] + numAxes, 0 ); // initialize array to 0
112105}
113106
114107void InputManager::removeJoystickByJoystickID (SDL_JoystickID joyId)
@@ -205,28 +198,21 @@ InputConfig* InputManager::getInputConfigByDevice(int device)
205198bool InputManager::parseEvent (const SDL_Event& ev, Window* window)
206199{
207200 bool causedEvent = false ;
208- int axis;
209201 switch (ev.type )
210202 {
211203 case SDL_JOYAXISMOTION :
212- axis = ev.jaxis .value ;
213- // Check for ABS_Z/ABS_RZ trigger axes which rest at -32768
214- if ((ev.jaxis .axis == 2 || ev.jaxis .axis == 5 ) && mInitAxisValues [ev.jaxis .which ][ev.jaxis .axis ] == -32768 )
215- {
216- // shift to 0 - 32767.
217- axis = axis / 2 + 16384 ;
218- }
219204 // if it switched boundaries
220- if ((abs (axis ) > DEADZONE ) != (abs (mPrevAxisValues [ev.jaxis .which ][ev.jaxis .axis ]) > DEADZONE ))
205+ if ((abs (ev. jaxis . value ) > DEADZONE ) != (abs (mPrevAxisValues [ev.jaxis .which ][ev.jaxis .axis ]) > DEADZONE ))
221206 {
222207 int normValue;
223- if (abs (axis ) <= DEADZONE )
208+ if (abs (ev. jaxis . value ) <= DEADZONE )
224209 normValue = 0 ;
225210 else
226- if (axis > 0 )
211+ if (ev. jaxis . value > 0 )
227212 normValue = 1 ;
228213 else
229214 normValue = -1 ;
215+
230216 window->input (getInputConfigByDevice (ev.jaxis .which ), Input (ev.jaxis .which , TYPE_AXIS , ev.jaxis .axis , normValue, false ));
231217 causedEvent = true ;
232218 }
0 commit comments