diff options
| author | Dave Parks <davep@lindenlab.com> | 2010-07-17 11:23:26 -0500 | 
|---|---|---|
| committer | Dave Parks <davep@lindenlab.com> | 2010-07-17 11:23:26 -0500 | 
| commit | a919bda24dfc6fb7fc031546e69ed7f531d828e8 (patch) | |
| tree | c073e2112b194deb93ca3c393a1468feed9e7374 /indra | |
| parent | e4c81b920f0fe8efec4047b86fb683fcd8bc2318 (diff) | |
Fix for rigged attachments disappearing when toggling lighting and shadows.
Diffstat (limited to 'indra')
| -rw-r--r-- | indra/newview/llvovolume.cpp | 111 | 
1 files changed, 56 insertions, 55 deletions
| diff --git a/indra/newview/llvovolume.cpp b/indra/newview/llvovolume.cpp index 36391a3602..b69fd3f90b 100644 --- a/indra/newview/llvovolume.cpp +++ b/indra/newview/llvovolume.cpp @@ -3544,77 +3544,78 @@ void LLVolumeGeometryManager::rebuildGeom(LLSpatialGroup* group)  				{  					facep->mVertexBuffer = NULL;  					facep->mLastVertexBuffer = NULL; -					facep->setState(LLFace::RIGGED); -					 -					//get drawpool of avatar with rigged face -					LLDrawPoolAvatar* pool = get_avatar_drawpool(vobj); -					 -					if (pool) +				} +				 +			facep->setState(LLFace::RIGGED); +				 +				//get drawpool of avatar with rigged face +				LLDrawPoolAvatar* pool = get_avatar_drawpool(vobj); +				 +				if (pool) +				{ +					const LLTextureEntry* te = facep->getTextureEntry(); + +					//remove face from old pool if it exists +					LLDrawPool* old_pool = facep->getPool(); +					if (old_pool && old_pool->getType() == LLDrawPool::POOL_AVATAR)  					{ -						const LLTextureEntry* te = facep->getTextureEntry(); +						((LLDrawPoolAvatar*) old_pool)->removeRiggedFace(facep); +					} + +					//add face to new pool +					LLViewerTexture* tex = facep->getTexture(); +					U32 type = gPipeline.getPoolTypeFromTE(te, tex); -						//remove face from old pool if it exists -						LLDrawPool* old_pool = facep->getPool(); -						if (old_pool && old_pool->getType() == LLDrawPool::POOL_AVATAR) +					if (type == LLDrawPool::POOL_ALPHA) +					{ +						if (te->getFullbright())  						{ -							((LLDrawPoolAvatar*) old_pool)->removeRiggedFace(facep); +							pool->addRiggedFace(facep, LLDrawPoolAvatar::RIGGED_FULLBRIGHT_ALPHA);  						} - -						//add face to new pool -						LLViewerTexture* tex = facep->getTexture(); -						U32 type = gPipeline.getPoolTypeFromTE(te, tex); - -						if (type == LLDrawPool::POOL_ALPHA) +						else  						{ -							if (te->getFullbright()) -							{ -								pool->addRiggedFace(facep, LLDrawPoolAvatar::RIGGED_FULLBRIGHT_ALPHA); -							} -							else -							{ -								pool->addRiggedFace(facep, LLDrawPoolAvatar::RIGGED_ALPHA); -							} +							pool->addRiggedFace(facep, LLDrawPoolAvatar::RIGGED_ALPHA);  						} -						else if (te->getShiny()) +					} +					else if (te->getShiny()) +					{ +						if (te->getFullbright())  						{ -							if (te->getFullbright()) -							{ -								pool->addRiggedFace(facep, LLDrawPoolAvatar::RIGGED_FULLBRIGHT_SHINY); -							} -							else -							{ -								pool->addRiggedFace(facep, LLDrawPoolAvatar::RIGGED_SHINY); -							} +							pool->addRiggedFace(facep, LLDrawPoolAvatar::RIGGED_FULLBRIGHT_SHINY);  						}  						else  						{ -							if (te->getFullbright()) -							{ -								pool->addRiggedFace(facep, LLDrawPoolAvatar::RIGGED_FULLBRIGHT); -							} -							else -							{ -								pool->addRiggedFace(facep, LLDrawPoolAvatar::RIGGED_SIMPLE); -							} +							pool->addRiggedFace(facep, LLDrawPoolAvatar::RIGGED_SHINY);  						} - -						if (te->getGlow()) +					} +					else +					{ +						if (te->getFullbright())  						{ -							pool->addRiggedFace(facep, LLDrawPoolAvatar::RIGGED_GLOW); +							pool->addRiggedFace(facep, LLDrawPoolAvatar::RIGGED_FULLBRIGHT);  						} +						else +						{ +							pool->addRiggedFace(facep, LLDrawPoolAvatar::RIGGED_SIMPLE); +						} +					} -						if (LLPipeline::sRenderDeferred) +					if (te->getGlow()) +					{ +						pool->addRiggedFace(facep, LLDrawPoolAvatar::RIGGED_GLOW); +					} + +					if (LLPipeline::sRenderDeferred) +					{ +						if (type != LLDrawPool::POOL_ALPHA && !te->getFullbright())  						{ -							if (type != LLDrawPool::POOL_ALPHA && !te->getFullbright()) +							if (te->getBumpmap()) +							{ +								pool->addRiggedFace(facep, LLDrawPoolAvatar::RIGGED_DEFERRED_BUMP); +							} +							else  							{ -								if (te->getBumpmap()) -								{ -									pool->addRiggedFace(facep, LLDrawPoolAvatar::RIGGED_DEFERRED_BUMP); -								} -								else -								{ -									pool->addRiggedFace(facep, LLDrawPoolAvatar::RIGGED_DEFERRED_SIMPLE); -								} +								pool->addRiggedFace(facep, LLDrawPoolAvatar::RIGGED_DEFERRED_SIMPLE);  							}  						}  					} | 
