[Bf-blender-cvs] [0e0af4f] master: BGE: python API cleanup - adding proper initialization to GameTypes

Ines Almeida noreply at git.blender.org
Tue Feb 3 16:49:12 CET 2015


Commit: 0e0af4f77222002ddf029095ca36fea71c9ab049
Author: Ines Almeida
Date:   Mon Jan 12 20:10:07 2015 +0100
Branches: master
https://developer.blender.org/rB0e0af4f77222002ddf029095ca36fea71c9ab049

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..5c1ad56 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