diff options
-rw-r--r-- | intern/ghost/intern/GHOST_SystemWin32.cpp | 2 | ||||
-rw-r--r-- | source/gameengine/BlenderRoutines/BL_KetsjiEmbedStart.cpp | 15 | ||||
-rw-r--r-- | source/gameengine/Ketsji/KX_PythonMain.cpp | 49 |
3 files changed, 33 insertions, 33 deletions
diff --git a/intern/ghost/intern/GHOST_SystemWin32.cpp b/intern/ghost/intern/GHOST_SystemWin32.cpp index 6c201c24c3d..52ebaf02404 100644 --- a/intern/ghost/intern/GHOST_SystemWin32.cpp +++ b/intern/ghost/intern/GHOST_SystemWin32.cpp @@ -724,7 +724,7 @@ GHOST_EventKey *GHOST_SystemWin32::processKeyEvent(GHOST_IWindow *window, RAWINP int r; GetKeyboardState((PBYTE)state); - if (r = ToUnicodeEx(vk, 0, state, utf16, 2, 0, system->m_keylayout)) { + if ((r = ToUnicodeEx(vk, 0, state, utf16, 2, 0, system->m_keylayout))) { if ((r > 0 && r < 3)) { utf16[r] = 0; conv_utf_16_to_8(utf16, utf8_char, 6); diff --git a/source/gameengine/BlenderRoutines/BL_KetsjiEmbedStart.cpp b/source/gameengine/BlenderRoutines/BL_KetsjiEmbedStart.cpp index feec67b509a..ed8a6cc7220 100644 --- a/source/gameengine/BlenderRoutines/BL_KetsjiEmbedStart.cpp +++ b/source/gameengine/BlenderRoutines/BL_KetsjiEmbedStart.cpp @@ -439,7 +439,6 @@ extern "C" void StartKetsjiShell(struct bContext *C, struct ARegion *ar, rcti *c rasterizer->SetBackColor(scene->gm.framing.col[0], scene->gm.framing.col[1], scene->gm.framing.col[2], 0.0f); } - char *python_main = NULL; if (exitrequested != KX_EXIT_REQUEST_QUIT_GAME) { if (rv3d->persp != RV3D_CAMOB) @@ -534,18 +533,17 @@ extern "C" void StartKetsjiShell(struct bContext *C, struct ARegion *ar, rcti *c // Could be in StartEngine set the framerate, we need the scene to do this ketsjiengine->SetAnimFrameRate(FPS); +#ifdef WITH_PYTHON char *python_main = NULL; pynextframestate.state = NULL; pynextframestate.func = NULL; -#ifdef WITH_PYTHON python_main = KX_GetPythonMain(scene); -#endif // WITH_PYTHON + // the mainloop printf("\nBlender Game Engine Started\n"); if (python_main) { char *python_code = KX_GetPythonCode(blenderdata, python_main); if (python_code) { -#ifdef WITH_PYTHON ketsjinextframestate.ketsjiengine = ketsjiengine; ketsjinextframestate.C = C; ketsjinextframestate.win = win; @@ -560,11 +558,12 @@ extern "C" void StartKetsjiShell(struct bContext *C, struct ARegion *ar, rcti *c printf("Yielding control to Python script '%s'...\n", python_main); PyRun_SimpleString(python_code); printf("Exit Python script '%s'\n", python_main); -#endif // WITH_PYTHON MEM_freeN(python_code); - } + } } - else { + else +#endif /* WITH_PYTHON */ + { while (!exitrequested) { exitrequested = BL_KetsjiNextFrame(ketsjiengine, C, win, scene, ar, keyboarddevice, mousedevice, draw_letterbox); @@ -572,7 +571,9 @@ extern "C" void StartKetsjiShell(struct bContext *C, struct ARegion *ar, rcti *c } printf("Blender Game Engine Finished\n"); exitstring = ketsjiengine->GetExitString(); +#ifdef WITH_PYTHON if (python_main) MEM_freeN(python_main); +#endif /* WITH_PYTHON */ gs = *(ketsjiengine->GetGlobalSettings()); diff --git a/source/gameengine/Ketsji/KX_PythonMain.cpp b/source/gameengine/Ketsji/KX_PythonMain.cpp index 969ecbea5a9..d5550ce4380 100644 --- a/source/gameengine/Ketsji/KX_PythonMain.cpp +++ b/source/gameengine/Ketsji/KX_PythonMain.cpp @@ -36,43 +36,42 @@ extern "C" { #endif -#include "RNA_access.h" +#include <stddef.h> + #include "MEM_guardedalloc.h" + +#include "BLI_string.h" +#include "BLI_listbase.h" + #include "BKE_text.h" #include "BKE_main.h" +#include "BKE_idprop.h" + #ifdef __cplusplus } #endif -extern "C" char *KX_GetPythonMain(struct Scene* scene) +extern "C" char *KX_GetPythonMain(struct Scene *scene) { - //examine custom scene properties + /* examine custom scene properties */ + if (scene->id.properties) { + IDProperty *item = IDP_GetPropertyTypeFromGroup(scene->id.properties, "__main__", IDP_STRING); + if (item) { + return BLI_strdup(IDP_String(item)); + } + } - PointerRNA sceneptr; - RNA_id_pointer_create(&scene->id, &sceneptr); - - PropertyRNA *pymain = RNA_struct_find_property(&sceneptr, "[\"__main__\"]"); - if (pymain == NULL) return NULL; - char *python_main; - int len; - python_main = RNA_property_string_get_alloc(&sceneptr, pymain, NULL, 0, &len); - return python_main; + return NULL; } -extern "C" char *KX_GetPythonCode(Main *main, char *python_main) +extern "C" char *KX_GetPythonCode(Main *bmain, char *python_main) { - PointerRNA mainptr, txtptr; - PropertyRNA *texts; + Text *text; - RNA_main_pointer_create(main, &mainptr); - texts = RNA_struct_find_property(&mainptr, "texts"); - char *python_code = NULL; - int ok = RNA_property_collection_lookup_string(&mainptr, texts, python_main, &txtptr); - if (ok) { - Text *text = (Text *) txtptr.data; - python_code = txt_to_buf(text); - } - return python_code; -} + if ((text = (Text *)BLI_findstring(&bmain->text, python_main, offsetof(ID, name) + 2))) { + return txt_to_buf(text); + } + return NULL; +} |