diff options
author | Porteries Tristan <republicthunderbolt9@gmail.com> | 2015-04-18 22:32:48 +0300 |
---|---|---|
committer | Jorge Bernal <jbernalmartinez@gmail.com> | 2015-04-18 22:37:59 +0300 |
commit | a2f9a0cfd940049f22cb89a8812629948a3580ae (patch) | |
tree | 25d7eefee09299df90404e26d685683549541587 /source/gameengine | |
parent | 252b0cf5d28c5ce6397a64cb4bb399a6c5a438fa (diff) |
BGE: Fix T43536 logic.getCurrentScene() returning wrong scene in
pre_draw and post_draw calls
A simple insert of KX_SetActiveScene(scene) before pre_draw and
post_draw calls solves the issue.
Reviewers: dfelinto, sybren, brita_, campbellbarton, moguri, lordloki
Reviewed By: moguri, lordloki
Projects: #game_logic, #game_engine
Differential Revision: https://developer.blender.org/D1129
Diffstat (limited to 'source/gameengine')
-rw-r--r-- | source/gameengine/Ketsji/KX_KetsjiEngine.cpp | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/source/gameengine/Ketsji/KX_KetsjiEngine.cpp b/source/gameengine/Ketsji/KX_KetsjiEngine.cpp index 6c2e34d92f8..f0b47684092 100644 --- a/source/gameengine/Ketsji/KX_KetsjiEngine.cpp +++ b/source/gameengine/Ketsji/KX_KetsjiEngine.cpp @@ -312,6 +312,7 @@ void KX_KetsjiEngine::RenderDome() // for each scene, call the proceed functions { scene = *sceneit; + KX_SetActiveScene(scene); KX_Camera* cam = scene->GetActiveCamera(); // pass the scene's worldsettings to the rasterizer @@ -389,8 +390,10 @@ void KX_KetsjiEngine::RenderDome() ); } m_dome->Draw(); + // Draw Callback for the last scene #ifdef WITH_PYTHON + PHY_SetActiveEnvironment(scene->GetPhysicsEnvironment()); scene->RunDrawingCallbacks(scene->GetPostDrawCB()); #endif EndFrame(); @@ -1102,6 +1105,9 @@ void KX_KetsjiEngine::RenderFrame(KX_Scene* scene, KX_Camera* cam) if (!cam) return; + + KX_SetActiveScene(scene); + GetSceneViewport(scene, cam, area, viewport); // store the computed viewport in the scene @@ -1214,6 +1220,7 @@ void KX_KetsjiEngine::RenderFrame(KX_Scene* scene, KX_Camera* cam) SG_SetActiveStage(SG_STAGE_RENDER); #ifdef WITH_PYTHON + PHY_SetActiveEnvironment(scene->GetPhysicsEnvironment()); // Run any pre-drawing python callbacks scene->RunDrawingCallbacks(scene->GetPreDrawCB()); #endif @@ -1232,12 +1239,16 @@ void KX_KetsjiEngine::RenderFrame(KX_Scene* scene, KX_Camera* cam) */ void KX_KetsjiEngine::PostRenderScene(KX_Scene* scene) { + KX_SetActiveScene(scene); + // We need to first make sure our viewport is correct (enabling multiple viewports can mess this up) m_canvas->SetViewPort(0, 0, m_canvas->GetWidth(), m_canvas->GetHeight()); m_rasterizer->FlushDebugShapes(); scene->Render2DFilters(m_canvas); + #ifdef WITH_PYTHON + PHY_SetActiveEnvironment(scene->GetPhysicsEnvironment()); scene->RunDrawingCallbacks(scene->GetPostDrawCB()); #endif } |