Changeset View
Changeset View
Standalone View
Standalone View
source/gameengine/Converter/KX_BlenderSceneConverter.cpp
| Context not available. | |||||
| /* merge into the base scene */ | /* merge into the base scene */ | ||||
| KX_Scene* other= m_ketsjiEngine->CreateScene((Scene *)scene, true); | KX_Scene* other= m_ketsjiEngine->CreateScene((Scene *)scene, true); | ||||
| scene_merge->MergeScene(other); | scene_merge->MergeScene(other); | ||||
| // RemoveScene(other); // Don't run this, it frees the entire scene converter data, just delete the scene | // RemoveScene(other); // Don't run this, it frees the entire scene converter data, just delete the scene | ||||
| m_polymat_cache.erase(other); | |||||
| m_mat_cache.erase(other); | |||||
| delete other; | delete other; | ||||
| } | } | ||||
| } | } | ||||
| Context not available. | |||||
| KX_Scene* scene = scenes->at(scene_idx); | KX_Scene* scene = scenes->at(scene_idx); | ||||
| if (IS_TAGGED(scene->GetBlenderScene())) { | if (IS_TAGGED(scene->GetBlenderScene())) { | ||||
| m_ketsjiEngine->RemoveScene(scene->GetName()); | m_ketsjiEngine->RemoveScene(scene->GetName()); | ||||
| m_mat_cache.erase(scene); | m_mat_cache.erase(scene);//<-- this is not called for the scene LibLoaded because that is merged with the active one | ||||
| m_polymat_cache.erase(scene); | m_polymat_cache.erase(scene);//<-- same. Values that are still here cause SIGSEGV when LibLoad/LibFree-ing | ||||
| scene_idx--; | scene_idx--; | ||||
| numScenes--; | numScenes--; | ||||
| } | } | ||||
| Context not available. | |||||
| } | } | ||||
| if (IS_TAGGED(bmat)) { | if (IS_TAGGED(bmat)) { | ||||
| delete (*polymit).second; | delete (*polymit).second; //<--- This might still be in this->m_polymat_cache | ||||
| *polymit = m_polymaterials.back(); | *polymit = m_polymaterials.back(); | ||||
| m_polymaterials.pop_back(); | m_polymaterials.pop_back(); | ||||
| size--; | size--; | ||||
| Context not available. | |||||
| for (i=0, matit=m_materials.begin(); i<size; ) { | for (i=0, matit=m_materials.begin(); i<size; ) { | ||||
| BL_Material *mat= (*matit).second; | BL_Material *mat= (*matit).second; | ||||
| if (IS_TAGGED(mat->material)) { | if (IS_TAGGED(mat->material)) { | ||||
| delete (*matit).second; | delete (*matit).second;//<--- This might still be in this->m_mat_cache | ||||
| *matit = m_materials.back(); | *matit = m_materials.back(); | ||||
| m_materials.pop_back(); | m_materials.pop_back(); | ||||
| size--; | size--; | ||||
| Context not available. | |||||