forked from bartvdbraak/blender
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
This commit is contained in:
parent
252b0cf5d2
commit
a2f9a0cfd9
@ -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
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user