Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'source/gameengine/GameLogic/Joystick/SCA_JoystickEvents.cpp')
-rw-r--r--source/gameengine/GameLogic/Joystick/SCA_JoystickEvents.cpp34
1 files changed, 26 insertions, 8 deletions
diff --git a/source/gameengine/GameLogic/Joystick/SCA_JoystickEvents.cpp b/source/gameengine/GameLogic/Joystick/SCA_JoystickEvents.cpp
index 0e2078265c9..73ca288861d 100644
--- a/source/gameengine/GameLogic/Joystick/SCA_JoystickEvents.cpp
+++ b/source/gameengine/GameLogic/Joystick/SCA_JoystickEvents.cpp
@@ -24,7 +24,10 @@
*
* ***** END GPL LICENSE BLOCK *****
*/
+#ifndef DISABLE_SDL
#include <SDL.h>
+#endif
+
#include "SCA_Joystick.h"
#include "SCA_JoystickPrivate.h"
@@ -35,7 +38,7 @@ void SCA_Joystick::OnAxisMotion(SDL_Event* sdl_event)
pFillAxes();
m_axisnum = sdl_event->jaxis.axis;
m_axisvalue = sdl_event->jaxis.value;
- m_istrig = 1;
+ m_istrig_axis = 1;
}
@@ -43,22 +46,31 @@ void SCA_Joystick::OnHatMotion(SDL_Event* sdl_event)
{
m_hatdir = sdl_event->jhat.value;
m_hatnum = sdl_event->jhat.hat;
- m_istrig = 1;
+ m_istrig_hat = 1;
}
-
void SCA_Joystick::OnButtonUp(SDL_Event* sdl_event)
{
+ m_istrig_button = 1;
+
+ /* this is needed for the "all events" option
+ * so we know if there are no buttons pressed */
+ int i;
+ for (i=0; i<m_buttonmax; i++) {
+ if (SDL_JoystickGetButton(m_private->m_joystick, i)) {
+ m_buttonnum = i;
+ return;
+ }
+ }
m_buttonnum = -2;
}
void SCA_Joystick::OnButtonDown(SDL_Event* sdl_event)
{
- m_buttonmax = GetNumberOfButtons();
- if(sdl_event->jbutton.button >= 1 || sdl_event->jbutton.button <= m_buttonmax)
+ if(sdl_event->jbutton.button >= 0 || sdl_event->jbutton.button <= m_buttonmax)
{
- m_istrig = 1;
+ m_istrig_button = 1;
m_buttonnum = sdl_event->jbutton.button;
}
}
@@ -66,7 +78,7 @@ void SCA_Joystick::OnButtonDown(SDL_Event* sdl_event)
void SCA_Joystick::OnNothing(SDL_Event* sdl_event)
{
- m_istrig = 0;
+ m_istrig_axis = m_istrig_button = m_istrig_hat = 0;
}
/* only handle events for 1 joystick */
@@ -74,7 +86,13 @@ void SCA_Joystick::OnNothing(SDL_Event* sdl_event)
void SCA_Joystick::HandleEvents(void)
{
SDL_Event sdl_event;
-
+
+ int i;
+ for (i=0; i<JOYINDEX_MAX; i++) {
+ if(SCA_Joystick::m_instance[i])
+ SCA_Joystick::m_instance[i]->OnNothing(&sdl_event);
+ }
+
if(SDL_PollEvent(&sdl_event))
{
/* Note! m_instance[sdl_event.jaxis.which]