BGE: Cleanup ConvertMaterial function.

- cleanup spaces;
- add braces;
- remove indendation around operator.
This commit is contained in:
Porteries Tristan 2015-10-21 22:28:33 +02:00
parent c272017868
commit 85072eb4e9
Notes: blender-bot 2023-02-14 08:42:53 +01:00
Referenced by issue #46568, Deselect Linked Seam fails ( Deselects all instead )
1 changed files with 99 additions and 91 deletions

View File

@ -562,11 +562,11 @@ static void GetUVs(BL_Material *material, MTF_localLayer *layers, MFace *mface,
// ------------------------------------
static bool ConvertMaterial(
BL_Material *material,
Material *mat,
MTFace* tface,
Material *mat,
MTFace *tface,
const char *tfaceName,
MFace* mface,
MCol* mmcol,
MFace *mface,
MCol *mmcol,
bool glslmat)
{
material->Initialize();
@ -583,41 +583,41 @@ static bool ConvertMaterial(
if (validmat) {
// use lighting?
material->ras_mode |= ( mat->mode & MA_SHLESS )?0:USE_LIGHT;
material->ras_mode |= ( mat->game.flag & GEMAT_BACKCULL )?0:TWOSIDED;
material->ras_mode |= (mat->mode & MA_SHLESS) ? 0 : USE_LIGHT;
material->ras_mode |= (mat->game.flag & GEMAT_BACKCULL) ? 0 : TWOSIDED;
// cast shadows?
material->ras_mode |= ( (mat->mode2 & MA_CASTSHADOW) && (mat->mode & MA_SHADBUF) )?CAST_SHADOW:0;
material->ras_mode |= ((mat->mode2 & MA_CASTSHADOW) && (mat->mode & MA_SHADBUF)) ? CAST_SHADOW : 0;
// only shadows?
material->ras_mode |= ( mat->mode & MA_ONLYCAST )?ONLY_SHADOW:0;
material->ras_mode |= (mat->mode & MA_ONLYCAST) ? ONLY_SHADOW : 0;
MTex *mttmp = 0;
MTex *mttmp = NULL;
int valid_index = 0;
/* In Multitexture use the face texture if and only if
* it is set in the buttons
* In GLSL is not working yet :/ 3.2011 */
bool facetex = false;
if (validface && mat->mode &MA_FACETEXTURE)
if (validface && mat->mode & MA_FACETEXTURE) {
facetex = true;
// foreach MTex
for (int i=0; i<MAXTEX; i++) {
// use face tex
}
if (i==0 && facetex ) {
// foreach MTex
for (int i = 0; i < MAXTEX; i++) {
// use face tex
if (i == 0 && facetex ) {
facetex = false;
Image*tmp = (Image*)(tface->tpage);
Image *tmp = (Image *)(tface->tpage);
if (tmp) {
material->img[i] = tmp;
material->texname[i] = material->img[i]->id.name;
material->flag[i] |= MIPMAP;
material->flag[i] |= ( mat->game.alpha_blend & GEMAT_ALPHA_SORT )?USEALPHA:0;
material->flag[i] |= ( mat->game.alpha_blend & GEMAT_ALPHA )?USEALPHA:0;
material->flag[i] |= ( mat->game.alpha_blend & GEMAT_ADD )?CALCALPHA:0;
material->flag[i] |= (mat->game.alpha_blend & GEMAT_ALPHA_SORT) ? USEALPHA : 0;
material->flag[i] |= (mat->game.alpha_blend & GEMAT_ALPHA) ? USEALPHA : 0;
material->flag[i] |= (mat->game.alpha_blend & GEMAT_ADD) ? CALCALPHA : 0;
if (material->img[i]->flag & IMA_REFLECT) {
material->mapping[i].mapping |= USEREFL;
@ -643,44 +643,43 @@ static bool ConvertMaterial(
mttmp = getMTexFromMaterial(mat, i);
if (mttmp) {
if (mttmp->tex) {
if ( mttmp->tex->type == TEX_IMAGE ) {
if (mttmp->tex->type == TEX_IMAGE) {
material->mtexname[i] = mttmp->tex->id.name;
material->img[i] = mttmp->tex->ima;
if ( material->img[i] ) {
if (material->img[i]) {
material->texname[i] = material->img[i]->id.name;
material->flag[i] |= ( mttmp->tex->imaflag &TEX_MIPMAP )?MIPMAP:0;
// -----------------------
if (material->img[i] && (material->img[i]->flag & IMA_IGNORE_ALPHA) == 0)
material->flag[i] |= USEALPHA;
// -----------------------
if ( mttmp->tex->imaflag &TEX_CALCALPHA ) {
material->flag[i] |= CALCALPHA;
material->flag[i] |= (mttmp->tex->imaflag &TEX_MIPMAP) ? MIPMAP : 0;
if (material->img[i] && (material->img[i]->flag & IMA_IGNORE_ALPHA) == 0) {
material->flag[i] |= USEALPHA;
}
else if (mttmp->tex->flag &TEX_NEGALPHA) {
material->flag[i] |= USENEGALPHA;
if (mttmp->tex->imaflag & TEX_CALCALPHA) {
material->flag[i] |= CALCALPHA;
}
else if (mttmp->tex->flag & TEX_NEGALPHA) {
material->flag[i] |= USENEGALPHA;
}
material->color_blend[i] = mttmp->colfac;
material->flag[i] |= ( mttmp->mapto & MAP_ALPHA )?TEXALPHA:0;
material->flag[i] |= ( mttmp->texflag& MTEX_NEGATIVE )?TEXNEG:0;
material->flag[i] |= (mttmp->mapto & MAP_ALPHA) ? TEXALPHA : 0;
material->flag[i] |= (mttmp->texflag & MTEX_NEGATIVE) ? TEXNEG : 0;
if (!glslmat && (material->flag[i] & TEXALPHA))
if (!glslmat && (material->flag[i] & TEXALPHA)) {
texalpha = 1;
}
}
}
else if (mttmp->tex->type == TEX_ENVMAP) {
if ( mttmp->tex->env->stype == ENV_LOAD ) {
material->mtexname[i] = mttmp->tex->id.name;
if (mttmp->tex->env->stype == ENV_LOAD) {
material->mtexname[i] = mttmp->tex->id.name;
EnvMap *env = mttmp->tex->env;
env->ima = mttmp->tex->ima;
material->cubemap[i] = env;
if (material->cubemap[i])
{
if (!material->cubemap[i]->cube[0])
if (material->cubemap[i]) {
if (!material->cubemap[i]->cube[0]) {
BL_Texture::SplitEnvMap(material->cubemap[i]);
}
material->texname[i] = material->cubemap[i]->ima->id.name;
material->mapping[i].mapping |= USEENV;
@ -695,29 +694,36 @@ static bool ConvertMaterial(
if (mat->septex & (1 << i)) {
// If this texture slot isn't in use, set it to disabled to prevent multi-uv problems
material->mapping[i].mapping = DISABLE;
} else {
material->mapping[i].mapping |= ( mttmp->texco & TEXCO_REFL )?USEREFL:0;
}
else {
material->mapping[i].mapping |= (mttmp->texco & TEXCO_REFL) ? USEREFL : 0;
if (mttmp->texco & TEXCO_OBJECT) {
material->mapping[i].mapping |= USEOBJ;
if (mttmp->object)
if (mttmp->object) {
material->mapping[i].objconame = mttmp->object->id.name;
}
}
else if (mttmp->texco &TEXCO_REFL)
else if (mttmp->texco & TEXCO_REFL) {
material->mapping[i].mapping |= USEREFL;
else if (mttmp->texco &(TEXCO_ORCO|TEXCO_GLOB))
}
else if (mttmp->texco & (TEXCO_ORCO | TEXCO_GLOB)) {
material->mapping[i].mapping |= USEORCO;
}
else if (mttmp->texco & TEXCO_UV) {
/* string may be "" but thats detected as empty after */
material->mapping[i].uvCoName = mttmp->uvname;
material->mapping[i].mapping |= USEUV;
}
else if (mttmp->texco &TEXCO_NORM)
else if (mttmp->texco & TEXCO_NORM) {
material->mapping[i].mapping |= USENORM;
else if (mttmp->texco &TEXCO_TANGENT)
}
else if (mttmp->texco & TEXCO_TANGENT) {
material->mapping[i].mapping |= USETANG;
else
}
else {
material->mapping[i].mapping |= DISABLE;
}
material->mapping[i].scale[0] = mttmp->size[0];
material->mapping[i].scale[1] = mttmp->size[1];
@ -771,59 +777,60 @@ static bool ConvertMaterial(
material->num_enabled = valid_index;
material->speccolor[0] = mat->specr;
material->speccolor[1] = mat->specg;
material->speccolor[2] = mat->specb;
material->hard = (float)mat->har/4.0f;
material->matcolor[0] = mat->r;
material->matcolor[1] = mat->g;
material->matcolor[2] = mat->b;
material->matcolor[3] = mat->alpha;
material->alpha = mat->alpha;
material->emit = mat->emit;
material->spec_f = mat->spec;
material->ref = mat->ref;
material->amb = mat->amb;
material->speccolor[0] = mat->specr;
material->speccolor[1] = mat->specg;
material->speccolor[2] = mat->specb;
material->hard = (float)mat->har / 4.0f;
material->matcolor[0] = mat->r;
material->matcolor[1] = mat->g;
material->matcolor[2] = mat->b;
material->matcolor[3] = mat->alpha;
material->alpha = mat->alpha;
material->emit = mat->emit;
material->spec_f = mat->spec;
material->ref = mat->ref;
material->amb = mat->amb;
material->ras_mode |= (mat->material_type == MA_TYPE_WIRE)? WIRE: 0;
material->ras_mode |= (mat->material_type == MA_TYPE_WIRE) ? WIRE : 0;
}
else { // No Material
int valid = 0;
// check for tface tex to fallback on
if ( validface ) {
material->img[0] = (Image*)(tface->tpage);
if (validface) {
material->img[0] = (Image *)(tface->tpage);
// ------------------------
if (material->img[0]) {
material->texname[0] = material->img[0]->id.name;
material->mapping[0].mapping |= ( (material->img[0]->flag & IMA_REFLECT)!=0 )?USEREFL:0;
material->mapping[0].mapping |= ((material->img[0]->flag & IMA_REFLECT) != 0) ? USEREFL : 0;
/* see if depth of the image is 32bits */
if (BKE_image_has_alpha(material->img[0])) {
material->flag[0] |= USEALPHA;
material->alphablend = GEMAT_ALPHA;
}
else
else {
material->alphablend = GEMAT_SOLID;
}
valid++;
}
}
else
else {
material->alphablend = GEMAT_SOLID;
}
material->SetUsers(-1);
material->num_enabled = valid;
material->IdMode = TEXFACE;
material->speccolor[0] = 1.f;
material->speccolor[1] = 1.f;
material->speccolor[2] = 1.f;
material->hard = 35.f;
material->matcolor[0] = 0.5f;
material->matcolor[1] = 0.5f;
material->matcolor[2] = 0.5f;
material->spec_f = 0.5f;
material->ref = 0.8f;
material->num_enabled = valid;
material->IdMode = TEXFACE;
material->speccolor[0] = 1.0f;
material->speccolor[1] = 1.0f;
material->speccolor[2] = 1.0f;
material->hard = 35.0f;
material->matcolor[0] = 0.5f;
material->matcolor[1] = 0.5f;
material->matcolor[2] = 0.5f;
material->spec_f = 0.5f;
material->ref = 0.8f;
// No material - old default TexFace properties
material->ras_mode |= USE_LIGHT;
@ -831,13 +838,13 @@ static bool ConvertMaterial(
/* No material, what to do? let's see what is in the UV and set the material accordingly
* light and visible is always on */
if ( validface ) {
material->tile = tface->tile;
if (validface) {
material->tile = tface->tile;
}
else {
// nothing at all
material->alphablend = GEMAT_SOLID;
material->tile = 0;
material->alphablend = GEMAT_SOLID;
material->tile = 0;
}
if (validmat && validface) {
@ -845,13 +852,14 @@ static bool ConvertMaterial(
}
// with ztransp enabled, enforce alpha blending mode
if (validmat && (mat->mode & MA_TRANSP) && (mat->mode & MA_ZTRANSP) && (material->alphablend == GEMAT_SOLID))
if (validmat && (mat->mode & MA_TRANSP) && (mat->mode & MA_ZTRANSP) && (material->alphablend == GEMAT_SOLID)) {
material->alphablend = GEMAT_ALPHA;
}
// always zsort alpha + add
if ((ELEM(material->alphablend, GEMAT_ALPHA, GEMAT_ALPHA_SORT, GEMAT_ADD) || texalpha) && (material->alphablend != GEMAT_CLIP )) {
if ((ELEM(material->alphablend, GEMAT_ALPHA, GEMAT_ALPHA_SORT, GEMAT_ADD) || texalpha) && (material->alphablend != GEMAT_CLIP)) {
material->ras_mode |= ALPHA;
material->ras_mode |= (mat && (mat->game.alpha_blend & GEMAT_ALPHA_SORT))? ZSORT: 0;
material->ras_mode |= (mat && (mat->game.alpha_blend & GEMAT_ALPHA_SORT)) ? ZSORT : 0;
}
// XXX The RGB values here were meant to be temporary storage for the conversion process,
@ -860,16 +868,16 @@ static bool ConvertMaterial(
GetRGB(use_vcol, mface, mmcol, mat, rgb);
// swap the material color, so MCol on bitmap font works
if (validmat && (use_vcol == false) && (mat->game.flag & GEMAT_TEXT))
{
if (validmat && (use_vcol == false) && (mat->game.flag & GEMAT_TEXT)) {
material->rgb[0] = KX_rgbaint2uint_new(rgb[0]);
material->rgb[1] = KX_rgbaint2uint_new(rgb[1]);
material->rgb[2] = KX_rgbaint2uint_new(rgb[2]);
material->rgb[3] = KX_rgbaint2uint_new(rgb[3]);
}
if (validmat)
material->matname =(mat->id.name);
if (validmat) {
material->matname =(mat->id.name);
}
if (tface) {
ME_MTEXFACE_CPY(&material->mtexpoly, tface);
@ -877,7 +885,7 @@ static bool ConvertMaterial(
else {
memset(&material->mtexpoly, 0, sizeof(material->mtexpoly));
}
material->material = mat;
material->material = mat;
return true;
}