BGE bugfix: Material initial object color working in the game

The object color option in the materials always worked, however the initial color of the object
was never passed to the game.

We are now passing it only, only when the object's mesh has a material that has ((shade_flags & OB_COLOR)).
There reason to not always set the object color is probably due to performance (the m_bUseObjectColor
flag in KX_GameObject). This patch still respect that.

Bug report from Mike Pan, as part of our book nitty-gritties review work.
Bugfix during Vancouver Global Game Jam :)
This commit is contained in:
Dalai Felinto 2013-01-26 23:52:55 +00:00
parent c84383301c
commit 4d8104917d

@ -1973,6 +1973,22 @@ static KX_GameObject *gameobject_from_blenderobject(
((ob->gameflag2 & OB_NEVER_DO_ACTIVITY_CULLING)!=0);
gameobj->SetIgnoreActivityCulling(ignoreActivityCulling);
gameobj->SetOccluder((ob->gameflag & OB_OCCLUDER) != 0, false);
// we only want obcolor used if there is a material in the mesh
// that requires it
Material *mat= NULL;
bool bUseObjectColor=false;
for (int i=0;i<mesh->totcol;i++) {
mat=mesh->mat[i];
if (!mat) break;
if ((mat->shade_flag &= MA_OBCOLOR)) {
bUseObjectColor = true;
break;
}
}
if (bUseObjectColor)
gameobj->SetObjectColor(ob->col);
// two options exists for deform: shape keys and armature
// only support relative shape key