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:
authorBenoit Bolsee <benoit.bolsee@online.be>2009-12-08 11:46:07 +0300
committerBenoit Bolsee <benoit.bolsee@online.be>2009-12-08 11:46:07 +0300
commit2318886f7029cef4c0890d3ae9c56b86cc49d7ad (patch)
treec5eeee6d438a1da13cf69299b71e797f72eff7d8 /source/gameengine/BlenderRoutines/KX_BlenderMouseDevice.cpp
parent915f35240014cfdafb6d247acb5e032d7c1204bf (diff)
BGE: fix bug in mouse button release detection
Diffstat (limited to 'source/gameengine/BlenderRoutines/KX_BlenderMouseDevice.cpp')
-rw-r--r--source/gameengine/BlenderRoutines/KX_BlenderMouseDevice.cpp46
1 files changed, 32 insertions, 14 deletions
diff --git a/source/gameengine/BlenderRoutines/KX_BlenderMouseDevice.cpp b/source/gameengine/BlenderRoutines/KX_BlenderMouseDevice.cpp
index b2e965a35f6..2aae3557f0c 100644
--- a/source/gameengine/BlenderRoutines/KX_BlenderMouseDevice.cpp
+++ b/source/gameengine/BlenderRoutines/KX_BlenderMouseDevice.cpp
@@ -117,14 +117,12 @@ bool KX_BlenderMouseDevice::ConvertBlenderEvent(unsigned short incode,short val)
// convert event
KX_EnumInputs kxevent = this->ToNative(incode);
+ int previousTable = 1-m_currentTable;
// only process it, if it's a key
- if (kxevent > KX_BEGINMOUSE && kxevent < KX_ENDMOUSE)
+ if (kxevent > KX_BEGINMOUSE && kxevent < KX_ENDMOUSEBUTTONS)
{
- int previousTable = 1-m_currentTable;
-
-
- if (val > 0)
+ if (val == KM_PRESS)
{
m_eventStatusTables[m_currentTable][kxevent].m_eventval = val ; //???
@@ -139,14 +137,7 @@ bool KX_BlenderMouseDevice::ConvertBlenderEvent(unsigned short incode,short val)
}
case SCA_InputEvent::KX_JUSTRELEASED:
{
- if ( kxevent > KX_BEGINMOUSEBUTTONS && kxevent < KX_ENDMOUSEBUTTONS)
- {
- m_eventStatusTables[m_currentTable][kxevent].m_status = SCA_InputEvent::KX_JUSTACTIVATED;
- } else
- {
- m_eventStatusTables[m_currentTable][kxevent].m_status = SCA_InputEvent::KX_ACTIVE;
-
- }
+ m_eventStatusTables[m_currentTable][kxevent].m_status = SCA_InputEvent::KX_JUSTACTIVATED;
break;
}
default:
@@ -155,7 +146,7 @@ bool KX_BlenderMouseDevice::ConvertBlenderEvent(unsigned short incode,short val)
}
}
- } else
+ } else if (val == KM_RELEASE)
{
// blender eventval == 0
switch (m_eventStatusTables[previousTable][kxevent].m_status)
@@ -173,5 +164,32 @@ bool KX_BlenderMouseDevice::ConvertBlenderEvent(unsigned short incode,short val)
}
}
}
+
+ if (kxevent > KX_ENDMOUSEBUTTONS && kxevent < KX_ENDMOUSE)
+ {
+ m_eventStatusTables[m_currentTable][kxevent].m_eventval = val ; //remember mouse position
+
+ switch (m_eventStatusTables[previousTable][kxevent].m_status)
+ {
+
+ case SCA_InputEvent::KX_ACTIVE:
+ case SCA_InputEvent::KX_JUSTACTIVATED:
+ {
+ m_eventStatusTables[m_currentTable][kxevent].m_status = SCA_InputEvent::KX_ACTIVE;
+ break;
+ }
+ case SCA_InputEvent::KX_JUSTRELEASED:
+ {
+ m_eventStatusTables[m_currentTable][kxevent].m_status = SCA_InputEvent::KX_ACTIVE;
+ break;
+ }
+ default:
+ {
+ m_eventStatusTables[m_currentTable][kxevent].m_status = SCA_InputEvent::KX_JUSTACTIVATED;
+ }
+ }
+ }
+
+
return result;
}