[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [25202] trunk/blender/source/gameengine/ BlenderRoutines/KX_BlenderMouseDevice.cpp: BGE: fix bug in mouse button release detection
Benoit Bolsee
benoit.bolsee at online.be
Tue Dec 8 09:46:08 CET 2009
Revision: 25202
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=25202
Author: ben2610
Date: 2009-12-08 09:46:07 +0100 (Tue, 08 Dec 2009)
Log Message:
-----------
BGE: fix bug in mouse button release detection
Modified Paths:
--------------
trunk/blender/source/gameengine/BlenderRoutines/KX_BlenderMouseDevice.cpp
Modified: trunk/blender/source/gameengine/BlenderRoutines/KX_BlenderMouseDevice.cpp
===================================================================
--- trunk/blender/source/gameengine/BlenderRoutines/KX_BlenderMouseDevice.cpp 2009-12-08 08:44:18 UTC (rev 25201)
+++ trunk/blender/source/gameengine/BlenderRoutines/KX_BlenderMouseDevice.cpp 2009-12-08 08:46:07 UTC (rev 25202)
@@ -117,14 +117,12 @@
// 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 @@
}
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 @@
}
}
- } else
+ } else if (val == KM_RELEASE)
{
// blender eventval == 0
switch (m_eventStatusTables[previousTable][kxevent].m_status)
@@ -173,5 +164,32 @@
}
}
}
+
+ 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;
}
More information about the Bf-blender-cvs
mailing list