forked from bartvdbraak/blender
BGE: Fixing a crash reported by Ace Dragon on BA. It looks like Object->totcol can give a number higher than the number of materials, so I've added some NULL checks.
This commit is contained in:
parent
732f6f7bd0
commit
2f2c0a6b02
@ -176,18 +176,21 @@ bool BL_Action::Play(const char* name,
|
||||
// Now try materials
|
||||
if (m_obj->GetBlenderObject()->totcol==1) {
|
||||
Material *mat = give_current_material(m_obj->GetBlenderObject(), 1);
|
||||
if (mat) {
|
||||
sg_contr = BL_CreateMaterialIpo(m_action, mat, 0, m_obj, kxscene->GetSceneConverter());
|
||||
if (sg_contr) {
|
||||
m_sg_contr_list.push_back(sg_contr);
|
||||
m_obj->GetSGNode()->AddSGController(sg_contr);
|
||||
sg_contr->SetObject(m_obj->GetSGNode());
|
||||
}
|
||||
}
|
||||
} else {
|
||||
Material *mat;
|
||||
STR_HashedString matname;
|
||||
|
||||
for (int matidx = 1; matidx <= m_obj->GetBlenderObject()->totcol; ++matidx) {
|
||||
mat = give_current_material(m_obj->GetBlenderObject(), matidx);
|
||||
if (mat) {
|
||||
matname = mat->id.name;
|
||||
sg_contr = BL_CreateMaterialIpo(m_action, mat, matname.hash(), m_obj, kxscene->GetSceneConverter());
|
||||
if (sg_contr) {
|
||||
@ -197,6 +200,7 @@ bool BL_Action::Play(const char* name,
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Extra controllers
|
||||
if (m_obj->GetGameObjectType() == SCA_IObject::OBJ_LIGHT)
|
||||
|
Loading…
Reference in New Issue
Block a user