[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [16294] trunk/blender/source/gameengine: BGE Py API - GameKeys.EventToString() utility function, makes key configuration menu's easier to write.

Campbell Barton ideasman42 at gmail.com
Fri Aug 29 05:15:18 CEST 2008


Revision: 16294
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=16294
Author:   campbellbarton
Date:     2008-08-29 05:15:17 +0200 (Fri, 29 Aug 2008)

Log Message:
-----------
BGE Py API - GameKeys.EventToString() utility function, makes key configuration menu's easier to write.
own error with blenderplayer, wasnt decreffing the GameLogic module, probably didnt matter since python was restarted anyway, but is incorrect.

Modified Paths:
--------------
    trunk/blender/source/gameengine/GamePlayer/ghost/GPG_Application.cpp
    trunk/blender/source/gameengine/Ketsji/KX_PythonInit.cpp
    trunk/blender/source/gameengine/PyDoc/GameKeys.py

Modified: trunk/blender/source/gameengine/GamePlayer/ghost/GPG_Application.cpp
===================================================================
--- trunk/blender/source/gameengine/GamePlayer/ghost/GPG_Application.cpp	2008-08-28 23:12:29 UTC (rev 16293)
+++ trunk/blender/source/gameengine/GamePlayer/ghost/GPG_Application.cpp	2008-08-29 03:15:17 UTC (rev 16294)
@@ -716,6 +716,7 @@
 				} else {
 					printf("Error, GameLogic.globalDict could not be marshal'd\n");
 				}
+				Py_DECREF(gameLogic);
 			} else {
 				printf("Error, GameLogic.globalDict was removed\n");
 			}

Modified: trunk/blender/source/gameengine/Ketsji/KX_PythonInit.cpp
===================================================================
--- trunk/blender/source/gameengine/Ketsji/KX_PythonInit.cpp	2008-08-28 23:12:29 UTC (rev 16293)
+++ trunk/blender/source/gameengine/Ketsji/KX_PythonInit.cpp	2008-08-29 03:15:17 UTC (rev 16294)
@@ -1048,9 +1048,38 @@
 "This modules provides defines for key-codes"
 ;
 
+static char gPyEventToString_doc[] =
+"Take a valid event from the GameKeys module or Keyboard Sensor and return a name"
+;
 
+static PyObject* gPyEventToString(PyObject*, PyObject* value)
+{
+	PyObject* mod, *dict, *key, *val, *ret = NULL;
+	int pos = 0;
+	
+	mod = PyImport_ImportModule( "GameKeys" );
+	if (!mod)
+		return NULL;
+	
+	dict = PyModule_GetDict(mod);
+	
+	while (PyDict_Next(dict, &pos, &key, &val)) {
+		if (PyObject_Compare(value, val)==0) {
+			ret = key;
+			break;
+		}
+	}
+	
+	PyErr_Clear(); // incase there was an error clearing
+	Py_DECREF(mod);
+	if (!ret)	PyErr_SetString(PyExc_ValueError, "expected a valid int keyboard event");
+	else		Py_INCREF(ret);
+	
+	return ret;
+}
 
 static struct PyMethodDef gamekeys_methods[] = {
+	{"EventToString", (PyCFunction)gPyEventToString, METH_O, gPyEventToString_doc},
 	{ NULL, (PyCFunction) NULL, 0, NULL }
 };
 

Modified: trunk/blender/source/gameengine/PyDoc/GameKeys.py
===================================================================
--- trunk/blender/source/gameengine/PyDoc/GameKeys.py	2008-08-28 23:12:29 UTC (rev 16293)
+++ trunk/blender/source/gameengine/PyDoc/GameKeys.py	2008-08-29 03:15:17 UTC (rev 16294)
@@ -164,3 +164,12 @@
 				# Activate Right!
 		
 """
+
+def EventToString(event):
+	"""
+	Return the string name of a key event. Will raise a ValueError error if its invalid.
+	
+	@type event: int
+	@param event: key event from GameKeys or the keyboard sensor.
+	@rtype: string
+	"""





More information about the Bf-blender-cvs mailing list