summaryrefslogtreecommitdiff
path: root/indra/newview/llvovolume.cpp
diff options
context:
space:
mode:
authorprep@lindenlab.com <prep@lindenlab.com>2013-06-07 14:43:18 -0500
committerprep@lindenlab.com <prep@lindenlab.com>2013-06-07 14:43:18 -0500
commitd93ec94751e1c8c9a190b327720f432f9d9928c1 (patch)
tree75c001496a2ebf3cb94e64935d698db10dbfc6c8 /indra/newview/llvovolume.cpp
parentd847b9dc3fdbc0a17ca4a1191955699505940f65 (diff)
sh-4109: Update agent appearance after attaching a rigged mesh
Diffstat (limited to 'indra/newview/llvovolume.cpp')
-rwxr-xr-xindra/newview/llvovolume.cpp15
1 files changed, 13 insertions, 2 deletions
diff --git a/indra/newview/llvovolume.cpp b/indra/newview/llvovolume.cpp
index 8730ef66bb..b7f7a11a15 100755
--- a/indra/newview/llvovolume.cpp
+++ b/indra/newview/llvovolume.cpp
@@ -76,6 +76,7 @@
#include "llviewershadermgr.h"
#include "llvoavatar.h"
#include "llvocache.h"
+#include "llappearancemgr.h"
const S32 MIN_QUIET_FRAMES_COALESCE = 30;
const F32 FORCE_SIMPLE_RENDER_AREA = 512.f;
@@ -4239,6 +4240,8 @@ void LLVolumeGeometryManager::rebuildGeom(LLSpatialGroup* group)
{
LLFastTimer t(FTM_REBUILD_VOLUME_FACE_LIST);
+ bool requiredAppearanceUpdate = false;
+
//get all the faces into a list
for (LLSpatialGroup::element_iter drawable_iter = group->getDataBegin(); drawable_iter != group->getDataEnd(); ++drawable_iter)
{
@@ -4337,6 +4340,7 @@ void LLVolumeGeometryManager::rebuildGeom(LLSpatialGroup* group)
const int jointCnt = pSkinData->mJointNames.size();
const F32 pelvisZOffset = pSkinData->mPelvisOffset;
bool fullRig = (jointCnt>=20) ? true : false;
+ requiredAppearanceUpdate = true;
if ( fullRig )
{
for ( int i=0; i<jointCnt; ++i )
@@ -4361,12 +4365,14 @@ void LLVolumeGeometryManager::rebuildGeom(LLSpatialGroup* group)
pelvisGotSet = true;
}
}
- }
+ }
}
}
}
}
- }
+ }
+
+
//If we've set the pelvis to a new position we need to also rebuild some information that the
//viewer does at launch (e.g. body size etc.)
if ( pelvisGotSet )
@@ -4606,6 +4612,11 @@ void LLVolumeGeometryManager::rebuildGeom(LLSpatialGroup* group)
drawablep->clearState(LLDrawable::RIGGED);
}
}
+
+ if ( requiredAppearanceUpdate && gAgent.getRegion() && gAgent.getRegion()->getCentralBakeVersion() )
+ {
+ LLAppearanceMgr::instance().requestServerAppearanceUpdate();
+ }
}
group->mBufferUsage = useage;