forked from bartvdbraak/blender
Added GameLogic.globalDict, this is a place where data can be stored even when new blend files are loaded. Using for apricot so frankie can go into levels in new blendfiles keeping his inventory, currently it dosnt work for the blenderplayer which stops python before loading new blend files.
This commit is contained in:
parent
7f49f67352
commit
812583f1fa
@ -116,7 +116,9 @@ extern "C" void StartKetsjiShell(struct ScrArea *area,
|
||||
// Acquire Python's GIL (global interpreter lock)
|
||||
// so we can safely run Python code and API calls
|
||||
PyGILState_STATE gilstate = PyGILState_Ensure();
|
||||
|
||||
|
||||
PyObject *pyGlobalDict = PyDict_New(); /* python utility storage, spans blend file loading */
|
||||
|
||||
bgl::InitExtensions(true);
|
||||
|
||||
do
|
||||
@ -310,6 +312,7 @@ extern "C" void StartKetsjiShell(struct ScrArea *area,
|
||||
initRasterizer(rasterizer, canvas);
|
||||
PyObject *gameLogic = initGameLogic(startscene);
|
||||
PyDict_SetItemString(dictionaryobject, "GameLogic", gameLogic); // Same as importing the module.
|
||||
PyDict_SetItemString(PyModule_GetDict(gameLogic), "globalDict", pyGlobalDict); // Same as importing the module.
|
||||
initGameKeys();
|
||||
initPythonConstraintBinding();
|
||||
initMathutils();
|
||||
@ -384,6 +387,7 @@ extern "C" void StartKetsjiShell(struct ScrArea *area,
|
||||
// which allows the scene to safely delete them :)
|
||||
// see: (space.c)->start_game
|
||||
PyDict_Clear(PyModule_GetDict(gameLogic));
|
||||
PyDict_SetItemString(PyModule_GetDict(gameLogic), "globalDict", pyGlobalDict);
|
||||
|
||||
ketsjiengine->StopEngine();
|
||||
exitGamePythonScripting();
|
||||
|
@ -733,6 +733,10 @@ PyObject* initGameLogic(KX_Scene* scene) // quick hack to get gravity hook
|
||||
|
||||
// Add some symbolic constants to the module
|
||||
d = PyModule_GetDict(m);
|
||||
|
||||
// can be overwritten later for gameEngine instances that can load new blend files and re-initialize this module
|
||||
// for now its safe to make sure it exists for other areas such as the web plugin
|
||||
PyDict_SetItemString(d, "globalDict", PyDict_New());
|
||||
|
||||
ErrorObject = PyString_FromString("GameLogic.error");
|
||||
PyDict_SetItemString(d, "error", ErrorObject);
|
||||
|
Loading…
Reference in New Issue
Block a user