From: mattn Date: Sun, 16 Mar 2008 20:39:33 +0000 (+0000) Subject: * hacked quake2 transparent surfaces support into the draw brush function X-Git-Tag: xonotic-v0.7.0~16^2~12^2~112^2~32 X-Git-Url: https://git.rm.cloudns.org/?a=commitdiff_plain;h=cbe18164fbb37b2c65405642a3055c0804636aec;p=xonotic%2Fnetradiant.git * hacked quake2 transparent surfaces support into the draw brush function git-svn-id: svn://svn.icculus.org/gtkradiant/GtkRadiant/branches/ZeroRadiant@223 8a3a26a2-13c4-0310-b231-cf6edde360e5 --- diff --git a/radiant/brush.cpp b/radiant/brush.cpp index 18866b4f..2e578035 100644 --- a/radiant/brush.cpp +++ b/radiant/brush.cpp @@ -2889,6 +2889,9 @@ void Brush_FaceDraw(face_t *face, int nGLState) qglEnd(); } +#define Q2_SURF_TRANS33 0x00000010 +#define Q2_SURF_TRANS66 0x00000020 + void Brush_Draw(brush_t *b) { face_t *face; @@ -2907,6 +2910,7 @@ void Brush_Draw(brush_t *b) // guarantee the texture will be set first bool bTrans; + float transVal; prev = NULL; for (face = b->brush_faces,order = 0 ; face ; face=face->next, order++) { @@ -2916,7 +2920,18 @@ void Brush_Draw(brush_t *b) continue; // freed face } - bTrans = (face->pShader->getFlags() & QER_TRANS); + bTrans = (face->pShader->getFlags() & QER_TRANS); + transVal = face->pShader->getTrans(); + // try to read the texture def surface flags to get trans + if (!bTrans) { + if (face->texdef.flags & Q2_SURF_TRANS33) { + bTrans = true; + transVal = 0.33; + } else if (face->texdef.flags & Q2_SURF_TRANS66) { + bTrans = true; + transVal = 0.66; + } + } if (bTrans && !(nGLState & DRAW_GL_BLEND)) continue; @@ -2960,7 +2975,7 @@ void Brush_Draw(brush_t *b) if (nGLState & DRAW_GL_LIGHTING && !g_PrefsDlg.m_bGLLighting) { if (!b->owner->eclass->fixedsize) - material[3] = face->pShader->getTrans(); + material[3] = transVal; else material[3] = 1; VectorCopy(face->d_color, material); @@ -2974,7 +2989,7 @@ void Brush_Draw(brush_t *b) { pShader = face->pShader; VectorCopy(pShader->getTexture()->color, material); - material[3] = identity[3] = pShader->getTrans(); + material[3] = identity[3] = transVal; if (nGLState & DRAW_GL_TEXTURE_2D) qglColor4fv(identity);