[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