BGE: Fix for issue #34242 "It does not render in "P" mode for Game engine if you UV mapa a face of a cube" reported by joaclint.

Material caching can now be disabled for Multitexture and GLSL Materials.
This commit is contained in:
Mitchell Stokes 2013-02-16 04:38:53 +00:00
parent 6072322312
commit 8c9906eb91
2 changed files with 8 additions and 10 deletions

@ -921,9 +921,6 @@ static RAS_MaterialBucket *material_from_mesh(Material *ma, MFace *mface, MTFace
/* do Texture Face materials */ /* do Texture Face materials */
Image* bima = (tface)? (Image*)tface->tpage: NULL; Image* bima = (tface)? (Image*)tface->tpage: NULL;
STR_String imastr = (tface)? (bima? (bima)->id.name : "" ) : ""; STR_String imastr = (tface)? (bima? (bima)->id.name : "" ) : "";
if (!converter->GetCacheMaterials())
polymat = NULL;
char alpha_blend=0; char alpha_blend=0;
short tile=0; short tile=0;
@ -1045,9 +1042,8 @@ static RAS_MaterialBucket *material_from_mesh(Material *ma, MFace *mface, MTFace
polymat->m_specular.setValue(0.0f,0.0f,0.0f); polymat->m_specular.setValue(0.0f,0.0f,0.0f);
polymat->m_shininess = 35.0; polymat->m_shininess = 35.0;
} }
if (converter->GetCacheMaterials()) converter->CachePolyMaterial(ma, polymat);
converter->CachePolyMaterial(ma, polymat);
} }
} }

@ -601,22 +601,24 @@ void KX_BlenderSceneConverter::RegisterPolyMaterial(RAS_IPolyMaterial *polymat)
void KX_BlenderSceneConverter::CachePolyMaterial(struct Material *mat, RAS_IPolyMaterial *polymat) void KX_BlenderSceneConverter::CachePolyMaterial(struct Material *mat, RAS_IPolyMaterial *polymat)
{ {
m_polymat_cache[mat] = polymat; if (m_use_mat_cache)
m_polymat_cache[mat] = polymat;
} }
RAS_IPolyMaterial *KX_BlenderSceneConverter::FindCachedPolyMaterial(struct Material *mat) RAS_IPolyMaterial *KX_BlenderSceneConverter::FindCachedPolyMaterial(struct Material *mat)
{ {
return m_polymat_cache[mat]; return (m_use_mat_cache) ? m_polymat_cache[mat] : NULL;
} }
void KX_BlenderSceneConverter::CacheBlenderMaterial(struct Material *mat, BL_Material *blmat) void KX_BlenderSceneConverter::CacheBlenderMaterial(struct Material *mat, BL_Material *blmat)
{ {
m_mat_cache[mat] = blmat; if (m_use_mat_cache)
m_mat_cache[mat] = blmat;
} }
BL_Material *KX_BlenderSceneConverter::FindCachedBlenderMaterial(struct Material *mat) BL_Material *KX_BlenderSceneConverter::FindCachedBlenderMaterial(struct Material *mat)
{ {
return m_mat_cache[mat]; return (m_use_mat_cache) ? m_mat_cache[mat] : NULL;
} }
void KX_BlenderSceneConverter::RegisterInterpolatorList( void KX_BlenderSceneConverter::RegisterInterpolatorList(