forked from bartvdbraak/blender
Correction on BGE fixes:
- check that an object has been created before setting the physics environment - check that there is an active camera before using it - when a camera is deleted, remove it from m_cameras list
This commit is contained in:
parent
4e8f06604f
commit
7e031b7a39
@ -1670,7 +1670,8 @@ static KX_GameObject *gameobject_from_blenderobject(
|
||||
break;
|
||||
}
|
||||
}
|
||||
gameobj->SetPhysicsEnvironment(kxscene->GetPhysicsEnvironment());
|
||||
if (gameobj)
|
||||
gameobj->SetPhysicsEnvironment(kxscene->GetPhysicsEnvironment());
|
||||
return gameobj;
|
||||
}
|
||||
|
||||
|
@ -617,7 +617,7 @@ void KX_KetsjiEngine::Render()
|
||||
SetWorldSettings(scene->GetWorldInfo());
|
||||
|
||||
// Avoid drawing the scene with the active camera twice when it's viewport is enabled
|
||||
if(!cam->GetViewport())
|
||||
if(cam && !cam->GetViewport())
|
||||
{
|
||||
if (scene->IsClearingZBuffer())
|
||||
m_rasterizer->ClearDepthBuffer();
|
||||
@ -854,6 +854,9 @@ void KX_KetsjiEngine::SetupRenderFrame(KX_Scene *scene, KX_Camera* cam)
|
||||
|
||||
RAS_Rect viewport;
|
||||
|
||||
if (!cam)
|
||||
return;
|
||||
|
||||
if (cam->GetViewport()) {
|
||||
viewport.SetLeft(cam->GetViewportLeft());
|
||||
viewport.SetBottom(cam->GetViewportBottom());
|
||||
|
@ -794,6 +794,9 @@ int KX_Scene::NewRemoveObject(class CValue* gameobj)
|
||||
//m_active_camera->Release();
|
||||
m_active_camera = NULL;
|
||||
}
|
||||
// in case this is a camera
|
||||
m_cameras.remove((KX_Camera*)newobj);
|
||||
|
||||
if (m_sceneConverter)
|
||||
m_sceneConverter->UnregisterGameObject(newobj);
|
||||
// return value will be 0 if the object is actually deleted (all reference gone)
|
||||
@ -942,6 +945,7 @@ void KX_Scene::AddCamera(KX_Camera* cam)
|
||||
m_cameras.push_back(cam);
|
||||
}
|
||||
|
||||
|
||||
KX_Camera* KX_Scene::GetActiveCamera()
|
||||
{
|
||||
// NULL if not defined
|
||||
|
Loading…
Reference in New Issue
Block a user