forked from bartvdbraak/blender
Fix T38929: BGE: Strange behaving from addObject after trying to add an nonexisting overlay scene
If bge.logic.addScene() could not find the scene to add it would add the first scene again, which is just silly. Now, if no scene is found, a warning is printed and nothing is added.
This commit is contained in:
parent
a2c002acb9
commit
b66a9543bb
@ -233,8 +233,7 @@ Scene *KX_BlenderSceneConverter::GetBlenderSceneForName(const STR_String& name)
|
||||
Scene *sce;
|
||||
|
||||
/**
|
||||
* Find the specified scene by name, or the first
|
||||
* scene if nothing matches (shouldn't happen).
|
||||
* Find the specified scene by name, or NULL if nothing matches.
|
||||
*/
|
||||
if ((sce= (Scene *)BLI_findstring(&m_maggie->scene, name.ReadPtr(), offsetof(ID, name) + 2)))
|
||||
return sce;
|
||||
@ -246,7 +245,7 @@ Scene *KX_BlenderSceneConverter::GetBlenderSceneForName(const STR_String& name)
|
||||
return sce;
|
||||
}
|
||||
|
||||
return (Scene*)m_maggie->scene.first;
|
||||
return NULL;
|
||||
|
||||
}
|
||||
|
||||
|
@ -1702,6 +1702,8 @@ KX_Scene* KX_KetsjiEngine::CreateScene(Scene *scene, bool libloading)
|
||||
KX_Scene* KX_KetsjiEngine::CreateScene(const STR_String& scenename)
|
||||
{
|
||||
Scene *scene = m_sceneconverter->GetBlenderSceneForName(scenename);
|
||||
if (!scene)
|
||||
return NULL;
|
||||
return CreateScene(scene);
|
||||
}
|
||||
|
||||
@ -1717,8 +1719,12 @@ void KX_KetsjiEngine::AddScheduledScenes()
|
||||
{
|
||||
STR_String scenename = *scenenameit;
|
||||
KX_Scene* tmpscene = CreateScene(scenename);
|
||||
m_scenes.push_back(tmpscene);
|
||||
PostProcessScene(tmpscene);
|
||||
if (tmpscene) {
|
||||
m_scenes.push_back(tmpscene);
|
||||
PostProcessScene(tmpscene);
|
||||
} else {
|
||||
printf("warning: scene %s could not be found, not added!\n",scenename.ReadPtr());
|
||||
}
|
||||
}
|
||||
m_addingOverlayScenes.clear();
|
||||
}
|
||||
@ -1731,9 +1737,12 @@ void KX_KetsjiEngine::AddScheduledScenes()
|
||||
{
|
||||
STR_String scenename = *scenenameit;
|
||||
KX_Scene* tmpscene = CreateScene(scenename);
|
||||
m_scenes.insert(m_scenes.begin(),tmpscene);
|
||||
PostProcessScene(tmpscene);
|
||||
|
||||
if (tmpscene) {
|
||||
m_scenes.insert(m_scenes.begin(),tmpscene);
|
||||
PostProcessScene(tmpscene);
|
||||
} else {
|
||||
printf("warning: scene %s could not be found, not added!\n",scenename.ReadPtr());
|
||||
}
|
||||
}
|
||||
m_addingBackgroundScenes.clear();
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user