summaryrefslogtreecommitdiff
path: root/indra/newview/llvovolume.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'indra/newview/llvovolume.cpp')
-rw-r--r--indra/newview/llvovolume.cpp34
1 files changed, 31 insertions, 3 deletions
diff --git a/indra/newview/llvovolume.cpp b/indra/newview/llvovolume.cpp
index d1feb7e875..16c262d1ad 100644
--- a/indra/newview/llvovolume.cpp
+++ b/indra/newview/llvovolume.cpp
@@ -1253,7 +1253,35 @@ void LLVOVolume::updateSculptTexture()
void LLVOVolume::updateVisualComplexity()
{
- LLVOAvatar* avatar = getAvatarAncestor();
+ LLVOAvatar* avatar = nullptr;
+ LLViewerObject* pobj = (LLViewerObject*)getParent();
+ LLViewerObject* lobj = this;
+ while (pobj)
+ {
+ avatar = pobj->asAvatar();
+ if (avatar)
+ {
+ break;
+ }
+ lobj = pobj;
+ pobj = (LLViewerObject*)pobj->getParent();
+ }
+
+ if (avatar)
+ {
+ // mark parent as dirty, complexity will be updated recursively.
+ avatar->markAttachmentComplexityDirty(lobj->getID());
+ }
+ LLVOAvatar* rigged_avatar = getAvatar();
+ if (rigged_avatar && (rigged_avatar != avatar))
+ {
+ // This might be wrong. Control avatars update each run,
+ // due to lack of dirty mechanics, and this might be
+ // where we should implement and call
+ // markControlAvatarComplexityDirty() if !isAttachment().
+ rigged_avatar->markAttachmentComplexityDirty(lobj->getID());
+ }
+ /*LLVOAvatar* avatar = getAvatarAncestor();
if (avatar)
{
avatar->updateVisualComplexity();
@@ -1262,7 +1290,7 @@ void LLVOVolume::updateVisualComplexity()
if(rigged_avatar && (rigged_avatar != avatar))
{
rigged_avatar->updateVisualComplexity();
- }
+ }*/
}
void LLVOVolume::notifyMeshLoaded()
@@ -5982,7 +6010,7 @@ void LLVolumeGeometryManager::rebuildGeom(LLSpatialGroup* group)
bool should_render = true;
if (gltf_mat->mAlphaMode == LLGLTFMaterial::ALPHA_MODE_BLEND)
{
- if (gltf_mat->mBaseColor.mV[3] == 0.0f)
+ if (gltf_mat->mBaseColor.mV[3] == 0.0f && !LLDrawPoolAlpha::sShowDebugAlpha)
{
should_render = false;
}