From 069d2350ebfd80e3bf5877396f973d848aaf898c Mon Sep 17 00:00:00 2001
From: Willi Schinmeyer <willi@schinmeyer.de>
Date: Fri, 4 May 2012 10:32:48 +0200
Subject: [PATCH] Fixed transparency (qer_trans) not working on models

---
 plugins/model/cpicosurface.cpp | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

diff --git a/plugins/model/cpicosurface.cpp b/plugins/model/cpicosurface.cpp
index da88eb58..470623fa 100644
--- a/plugins/model/cpicosurface.cpp
+++ b/plugins/model/cpicosurface.cpp
@@ -48,12 +48,18 @@ void CPicoSurface::Draw( int state, IShader *pShader, int rflags ){
 
 	if ( !( rflags & ( DRAW_RF_SEL_OUTLINE | DRAW_RF_SEL_FILL | DRAW_RF_XY ) ) ) {
 		if ( state & DRAW_GL_TEXTURE_2D ) {
+			bool bTrans = ( pShader->getFlags() & QER_TRANS ) == QER_TRANS;
+			bool bDrawBlend = ( state & DRAW_GL_BLEND ) == DRAW_GL_BLEND;
+			//only draw transparent stuff when in transparent stuff pass and vice versa
+			if(bTrans != bDrawBlend) {
+				return;
+			}
 			g_QglTable.m_pfn_qglBindTexture( GL_TEXTURE_2D, pShader->getTexture()->texture_number );
 			if ( ( rflags & DRAW_RF_CAM ) && ( pShader->getFlags() & QER_ALPHAFUNC ) ) {
 				int nFunc = 0;
 				float fRef = 0.f;
 
-				g_QglTable.m_pfn_qglColor4f( 1.f, 1.f, 1.f, 1.f ); // identity
+				g_QglTable.m_pfn_qglColor4f( 1.f, 1.f, 1.f, pShader->getTrans() ); // transparency
 
 				g_QglTable.m_pfn_qglEnable( GL_ALPHA_TEST );
 
-- 
2.39.5