[Bf-blender-cvs] [a2f9a0c] master: BGE: Fix T43536 logic.getCurrentScene() returning wrong scene in pre_draw and post_draw calls
Porteries Tristan
noreply at git.blender.org
Sat Apr 18 21:38:21 CEST 2015
Commit: a2f9a0cfd940049f22cb89a8812629948a3580ae
Author: Porteries Tristan
Date: Sat Apr 18 21:32:48 2015 +0200
Branches: master
https://developer.blender.org/rBa2f9a0cfd940049f22cb89a8812629948a3580ae
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
===================================================================
M source/gameengine/Ketsji/KX_KetsjiEngine.cpp
===================================================================
diff --git a/source/gameengine/Ketsji/KX_KetsjiEngine.cpp b/source/gameengine/Ketsji/KX_KetsjiEngine.cpp
index 6c2e34d..f0b4768 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
}
More information about the Bf-blender-cvs
mailing list