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:
Benoit Bolsee 2008-03-21 22:44:12 +00:00
parent 4e8f06604f
commit 7e031b7a39
3 changed files with 10 additions and 2 deletions

@ -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