From 72010fba4d07c768b0f5edd5dc56bf89a98a9985 Mon Sep 17 00:00:00 2001 From: "Brad Payne (Vir Linden)" <vir@lindenlab.com> Date: Fri, 4 Aug 2017 16:20:04 +0100 Subject: [PATCH] SL-718 - bug fixes for animated objects as attachments: Pause all associated avatars when selecting/editing. Don't apply joint positions to the attached avatar on login. --- indra/newview/llappearancemgr.cpp | 5 ++++- indra/newview/llselectmgr.cpp | 17 ++++++++++++++++- indra/newview/llvovolume.cpp | 2 +- 3 files changed, 21 insertions(+), 3 deletions(-) diff --git a/indra/newview/llappearancemgr.cpp b/indra/newview/llappearancemgr.cpp index c928cf0601b..d58d03d68da 100644 --- a/indra/newview/llappearancemgr.cpp +++ b/indra/newview/llappearancemgr.cpp @@ -880,7 +880,10 @@ void LLWearableHoldingPattern::onAllComplete() ++it) { LLViewerObject *objectp = *it; - gAgentAvatarp->addAttachmentOverridesForObject(objectp); + if (!objectp->isAnimatedObject()) + { + gAgentAvatarp->addAttachmentOverridesForObject(objectp); + } } // Add new attachments to match those requested. diff --git a/indra/newview/llselectmgr.cpp b/indra/newview/llselectmgr.cpp index b6b7d5265b2..3e8d8883e03 100644 --- a/indra/newview/llselectmgr.cpp +++ b/indra/newview/llselectmgr.cpp @@ -6760,12 +6760,27 @@ void LLSelectMgr::pauseAssociatedAvatars() if (mSelectedObjects->mSelectType == SELECT_TYPE_ATTACHMENT && isAgentAvatarValid() && object->getParent() != NULL) { - mPauseRequests.push_back(gAgentAvatarp->requestPause()); + if (object->isAnimatedObject()) + { + // Is an animated object attachment. + // Pause both the control avatar and the avatar it's attached to. + if (object->getControlAvatar()) + { + mPauseRequests.push_back(object->getControlAvatar()->requestPause()); + } + mPauseRequests.push_back(gAgentAvatarp->requestPause()); + } + else + { + // Is a regular attachment. Pause the avatar it's attached to. + mPauseRequests.push_back(gAgentAvatarp->requestPause()); + } } else { if (object && object->isAnimatedObject() && object->getControlAvatar()) { + // Is a non-attached animated object. Pause the control avatar. mPauseRequests.push_back(object->getControlAvatar()->requestPause()); } } diff --git a/indra/newview/llvovolume.cpp b/indra/newview/llvovolume.cpp index 04e28271828..15fc995ecf2 100644 --- a/indra/newview/llvovolume.cpp +++ b/indra/newview/llvovolume.cpp @@ -5023,7 +5023,7 @@ void LLVolumeGeometryManager::rebuildGeom(LLSpatialGroup* group) bool is_rigged = false; // AXON handle NPC case - if (rigged && pAvatarVO) + if (rigged && pAvatarVO && !vobj->isAnimatedObject()) { pAvatarVO->addAttachmentOverridesForObject(vobj); if (!LLApp::isExiting() && pAvatarVO->isSelf() && debugLoggingEnabled("AvatarAttachments")) -- GitLab