diff options
Diffstat (limited to 'indra/newview/llviewermenu.cpp')
-rw-r--r-- | indra/newview/llviewermenu.cpp | 48 |
1 files changed, 44 insertions, 4 deletions
diff --git a/indra/newview/llviewermenu.cpp b/indra/newview/llviewermenu.cpp index 94efab3f4b..58b9d7a366 100644 --- a/indra/newview/llviewermenu.cpp +++ b/indra/newview/llviewermenu.cpp @@ -84,6 +84,7 @@ #include "lltoolface.h" #include "llhints.h" #include "llhudeffecttrail.h" +#include "llhudeffectresetskeleton.h" #include "llhudmanager.h" #include "llimview.h" #include "llinventorybridge.h" @@ -6505,7 +6506,19 @@ class LLAvatarResetSkeleton: public view_listener_t } if(avatar) { - avatar->resetSkeleton(false); + bool owned = false; + if(avatar->isAnimatedObject()) + { + owned = avatar->mOwnerID == gAgent.getID(); + } + else + { + owned = avatar->getID() == gAgent.getID(); + } + LLHUDEffectResetSkeleton* effectp = (LLHUDEffectResetSkeleton*)LLHUDManager::getInstance()->createViewerEffect(LLHUDObject::LL_HUD_EFFECT_RESET_SKELETON, owned); + effectp->setSourceObject(gAgentAvatarp); + effectp->setTargetObject((LLViewerObject*)avatar); + effectp->setResetAnimations(false); } return true; } @@ -6532,7 +6545,19 @@ class LLAvatarResetSkeletonAndAnimations : public view_listener_t LLVOAvatar* avatar = find_avatar_from_object(LLSelectMgr::getInstance()->getSelection()->getPrimaryObject()); if (avatar) { - avatar->resetSkeleton(true); + bool owned = false; + if(avatar->isAnimatedObject()) + { + owned = avatar->mOwnerID == gAgent.getID(); + } + else + { + owned = avatar->getID() == gAgent.getID(); + } + LLHUDEffectResetSkeleton* effectp = (LLHUDEffectResetSkeleton*)LLHUDManager::getInstance()->createViewerEffect(LLHUDObject::LL_HUD_EFFECT_RESET_SKELETON, owned); + effectp->setSourceObject(gAgentAvatarp); + effectp->setTargetObject((LLViewerObject*)avatar); + effectp->setResetAnimations(true); } return true; } @@ -6545,11 +6570,26 @@ class LLAvatarResetSelfSkeletonAndAnimations : public view_listener_t LLVOAvatar* avatar = find_avatar_from_object(LLSelectMgr::getInstance()->getSelection()->getPrimaryObject()); if (avatar) { - avatar->resetSkeleton(true); + bool owned = false; + if(avatar->isAnimatedObject()) + { + owned = avatar->mOwnerID == gAgent.getID(); + } + else + { + owned = avatar->getID() == gAgent.getID(); + } + LLHUDEffectResetSkeleton* effectp = (LLHUDEffectResetSkeleton*)LLHUDManager::getInstance()->createViewerEffect(LLHUDObject::LL_HUD_EFFECT_RESET_SKELETON, owned); + effectp->setSourceObject(gAgentAvatarp); + effectp->setTargetObject((LLViewerObject*)avatar); + effectp->setResetAnimations(true); } else { - gAgentAvatarp->resetSkeleton(true); + LLHUDEffectResetSkeleton* effectp = (LLHUDEffectResetSkeleton*)LLHUDManager::getInstance()->createViewerEffect(LLHUDObject::LL_HUD_EFFECT_RESET_SKELETON, true); + effectp->setSourceObject(gAgentAvatarp); + effectp->setTargetObject(gAgentAvatarp); + effectp->setResetAnimations(true); } return true; } |