Skip to content
Snippets Groups Projects
Commit a919bda2 authored by David Parks's avatar David Parks
Browse files

Fix for rigged attachments disappearing when toggling lighting and shadows.

parent e4c81b92
No related branches found
No related tags found
No related merge requests found
...@@ -3544,77 +3544,78 @@ void LLVolumeGeometryManager::rebuildGeom(LLSpatialGroup* group) ...@@ -3544,77 +3544,78 @@ void LLVolumeGeometryManager::rebuildGeom(LLSpatialGroup* group)
{ {
facep->mVertexBuffer = NULL; facep->mVertexBuffer = NULL;
facep->mLastVertexBuffer = NULL; facep->mLastVertexBuffer = NULL;
facep->setState(LLFace::RIGGED); }
//get drawpool of avatar with rigged face facep->setState(LLFace::RIGGED);
LLDrawPoolAvatar* pool = get_avatar_drawpool(vobj);
//get drawpool of avatar with rigged face
if (pool) 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 if (type == LLDrawPool::POOL_ALPHA)
LLDrawPool* old_pool = facep->getPool(); {
if (old_pool && old_pool->getType() == LLDrawPool::POOL_AVATAR) if (te->getFullbright())
{ {
((LLDrawPoolAvatar*) old_pool)->removeRiggedFace(facep); pool->addRiggedFace(facep, LLDrawPoolAvatar::RIGGED_FULLBRIGHT_ALPHA);
} }
else
//add face to new pool
LLViewerTexture* tex = facep->getTexture();
U32 type = gPipeline.getPoolTypeFromTE(te, tex);
if (type == LLDrawPool::POOL_ALPHA)
{ {
if (te->getFullbright()) pool->addRiggedFace(facep, LLDrawPoolAvatar::RIGGED_ALPHA);
{
pool->addRiggedFace(facep, LLDrawPoolAvatar::RIGGED_FULLBRIGHT_ALPHA);
}
else
{
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);
{
pool->addRiggedFace(facep, LLDrawPoolAvatar::RIGGED_FULLBRIGHT_SHINY);
}
else
{
pool->addRiggedFace(facep, LLDrawPoolAvatar::RIGGED_SHINY);
}
} }
else else
{ {
if (te->getFullbright()) pool->addRiggedFace(facep, LLDrawPoolAvatar::RIGGED_SHINY);
{
pool->addRiggedFace(facep, LLDrawPoolAvatar::RIGGED_FULLBRIGHT);
}
else
{
pool->addRiggedFace(facep, LLDrawPoolAvatar::RIGGED_SIMPLE);
}
} }
}
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_SIMPLE);
{
pool->addRiggedFace(facep, LLDrawPoolAvatar::RIGGED_DEFERRED_BUMP);
}
else
{
pool->addRiggedFace(facep, LLDrawPoolAvatar::RIGGED_DEFERRED_SIMPLE);
}
} }
} }
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment