[Bf-blender-cvs] [1c57e68] soc-2014-bge: BGE: python API cleanup - adding proper initialization to GameTypes
Ines Almeida
noreply at git.blender.org
Tue Jan 13 12:09:08 CET 2015
Commit: 1c57e68d5c4654c142572d1c4d38a86abdd88514
Author: Ines Almeida
Date: Mon Jan 12 20:10:07 2015 +0100
Branches: soc-2014-bge
https://developer.blender.org/rB1c57e68d5c4654c142572d1c4d38a86abdd88514
BGE: python API cleanup - adding proper initialization to GameTypes
===================================================================
M source/gameengine/Ketsji/KX_PythonInitTypes.cpp
M source/gameengine/Ketsji/KX_PythonInitTypes.h
===================================================================
diff --git a/source/gameengine/Ketsji/KX_PythonInitTypes.cpp b/source/gameengine/Ketsji/KX_PythonInitTypes.cpp
index 7d38ce5..8ef4b62 100644
--- a/source/gameengine/Ketsji/KX_PythonInitTypes.cpp
+++ b/source/gameengine/Ketsji/KX_PythonInitTypes.cpp
@@ -171,8 +171,10 @@ void initPyTypes(void)
* .....
*/
+ /* Use existing module where possible */
+ PyObject *mod = initGameTypesPythonBinding();
+
/* For now just do PyType_Ready */
- PyObject *mod = PyModule_New("GameTypes");
PyObject *dict = PyModule_GetDict(mod);
PyDict_SetItemString(PySys_GetObject("modules"), "GameTypes", mod);
Py_DECREF(mod);
@@ -269,4 +271,42 @@ void initPyTypes(void)
#endif
}
+
+PyDoc_STRVAR(GameTypes_module_documentation,
+ "This module provides access to the game engine data types."
+);
+static struct PyModuleDef GameTypes_module_def = {
+ PyModuleDef_HEAD_INIT,
+ "GameTypes", /* m_name */
+ GameTypes_module_documentation, /* m_doc */
+ 0, /* m_size */
+ NULL, /* m_methods */
+ NULL, /* m_reload */
+ NULL, /* m_traverse */
+ NULL, /* m_clear */
+ NULL, /* m_free */
+};
+
+
+PyMODINIT_FUNC initGameTypesPythonBinding(void)
+{
+ PyObject *m;
+
+ /* Use existing module where possible */
+ m = PyImport_ImportModule( "GameTypes" );
+ if (m) {
+ Py_DECREF(m);
+ return m;
+ }
+ else {
+ PyErr_Clear();
+
+ // Create the module and add the functions
+ m = PyModule_Create(&GameTypes_module_def);
+ PyDict_SetItemString(PySys_GetObject("modules"), GameTypes_module_def.m_name, m);
+ }
+
+ return m;
+}
+
#endif // WITH_PYTHON
diff --git a/source/gameengine/Ketsji/KX_PythonInitTypes.h b/source/gameengine/Ketsji/KX_PythonInitTypes.h
index d8ee4f7..4d7d26f 100644
--- a/source/gameengine/Ketsji/KX_PythonInitTypes.h
+++ b/source/gameengine/Ketsji/KX_PythonInitTypes.h
@@ -33,7 +33,9 @@
#define __KX_PYTHON_INIT_TYPES__
#ifdef WITH_PYTHON
+#include <Python.h>
void initPyTypes(void);
+PyMODINIT_FUNC initGameTypesPythonBinding(void);
#endif
#endif /* __KX_PYTHON_INIT_TYPES__ */
More information about the Bf-blender-cvs
mailing list