summaryrefslogtreecommitdiff
path: root/indra/newview/llvovolume.cpp
diff options
context:
space:
mode:
authorBrad Payne (Vir Linden) <vir@lindenlab.com>2017-06-27 14:15:42 +0100
committerBrad Payne (Vir Linden) <vir@lindenlab.com>2017-06-27 14:15:42 +0100
commitb6aedb116f60b9e4823f61b945b3f374d9267c1d (patch)
treea6bfc5910dff43d9e4153fb7d91784fcb385d1a9 /indra/newview/llvovolume.cpp
parent3c8ff04c0fa5c891a0454d7542f78f65eb5032dc (diff)
SL-722 - in progress on managing animated object state with linksets
Diffstat (limited to 'indra/newview/llvovolume.cpp')
-rw-r--r--indra/newview/llvovolume.cpp30
1 files changed, 19 insertions, 11 deletions
diff --git a/indra/newview/llvovolume.cpp b/indra/newview/llvovolume.cpp
index 150769845b..da24d9f9c2 100644
--- a/indra/newview/llvovolume.cpp
+++ b/indra/newview/llvovolume.cpp
@@ -3314,6 +3314,10 @@ bool LLVOVolume::canBeAnimatedObject() const
{
return false;
}
+ if (isAttachment())
+ {
+ return false;
+ }
const LLMeshSkinInfo* skin = gMeshRepo.getSkinInfo(getVolume()->getParams().getSculptID(), this);
if (!skin)
{
@@ -4830,20 +4834,24 @@ void LLVolumeGeometryManager::rebuildGeom(LLSpatialGroup* group)
vobj->isMesh() &&
gMeshRepo.getSkinInfo(vobj->getVolume()->getParams().getSculptID(), vobj);
- bool rigged_non_attachment = !vobj->isAttachment() &&
- vobj->isMesh() &&
- gMeshRepo.getSkinInfo(vobj->getVolume()->getParams().getSculptID(), vobj);
-
- if (rigged_non_attachment)
+ if (vobj->isAnimatedObject())
{
- if (!vobj->mControlAvatar)
+ if (!vobj->getControlAvatar())
{
- vobj->mControlAvatar = LLControlAvatar::createControlAvatar(vobj);
- vobj->mControlAvatar->addAttachmentOverridesForObject(vobj);
+ vobj->linkControlAvatar();
}
- if (vobj->mControlAvatar)
+ if (vobj->getControlAvatar())
+ {
+ pAvatarVO = vobj->getControlAvatar();
+ }
+ }
+ else
+ {
+ // Not animated but has a control avatar - probably
+ // the checkbox has changed since the last rebuild.
+ if (vobj->getControlAvatar())
{
- pAvatarVO = vobj->mControlAvatar;
+ vobj->unlinkControlAvatar();
}
}
@@ -4880,7 +4888,7 @@ void LLVolumeGeometryManager::rebuildGeom(LLSpatialGroup* group)
//sum up face verts and indices
drawablep->updateFaceSize(i);
- if (rigged || (vobj->mControlAvatar && vobj->mControlAvatar->mPlaying))
+ if (rigged || (vobj->getControlAvatar() && vobj->getControlAvatar()->mPlaying))
{
if (!facep->isState(LLFace::RIGGED))
{ //completely reset vertex buffer