From a6d9323c7266cf496bc1db6df8ce5bcb58f84ede Mon Sep 17 00:00:00 2001 From: "Brad Payne (Vir Linden)" Date: Wed, 9 Nov 2016 16:10:04 -0500 Subject: MAINT-6915 - option for Reset Skeleton And Animations. --- indra/newview/llviewermenu.cpp | 16 +++++++++++++++- indra/newview/llvoavatar.cpp | 8 +++++++- indra/newview/llvoavatar.h | 2 +- .../skins/default/xui/en/menu_attachment_other.xml | 7 +++++++ .../skins/default/xui/en/menu_attachment_self.xml | 6 ++++++ indra/newview/skins/default/xui/en/menu_avatar_other.xml | 7 +++++++ indra/newview/skins/default/xui/en/menu_avatar_self.xml | 6 ++++++ 7 files changed, 49 insertions(+), 3 deletions(-) (limited to 'indra') diff --git a/indra/newview/llviewermenu.cpp b/indra/newview/llviewermenu.cpp index e9ee67a929..e5ba1ecb97 100644 --- a/indra/newview/llviewermenu.cpp +++ b/indra/newview/llviewermenu.cpp @@ -6005,12 +6005,25 @@ class LLAvatarResetSkeleton: public view_listener_t LLVOAvatar* avatar = find_avatar_from_object( LLSelectMgr::getInstance()->getSelection()->getPrimaryObject() ); if(avatar) { - avatar->resetSkeleton(); + avatar->resetSkeleton(false); } return true; } }; +class LLAvatarResetSkeletonAndAnimations : public view_listener_t +{ + bool handleEvent(const LLSD& userdata) + { + LLVOAvatar* avatar = find_avatar_from_object(LLSelectMgr::getInstance()->getSelection()->getPrimaryObject()); + if (avatar) + { + avatar->resetSkeleton(true); + } + return true; + } +}; + class LLAvatarAddContact : public view_listener_t { bool handleEvent(const LLSD& userdata) @@ -9002,6 +9015,7 @@ void initialize_menus() view_listener_t::addMenu(new LLAvatarReportAbuse(), "Avatar.ReportAbuse"); view_listener_t::addMenu(new LLAvatarToggleMyProfile(), "Avatar.ToggleMyProfile"); view_listener_t::addMenu(new LLAvatarResetSkeleton(), "Avatar.ResetSkeleton"); + view_listener_t::addMenu(new LLAvatarResetSkeleton(), "Avatar.ResetSkeletonAndAnimations"); enable.add("Avatar.IsMyProfileOpen", boost::bind(&my_profile_visible)); commit.add("Avatar.OpenMarketplace", boost::bind(&LLWeb::loadURLExternal, gSavedSettings.getString("MarketplaceURL"))); diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp index cbd941dd40..77a526f518 100644 --- a/indra/newview/llvoavatar.cpp +++ b/indra/newview/llvoavatar.cpp @@ -1847,7 +1847,7 @@ void LLVOAvatar::resetVisualParams() //----------------------------------------------------------------------------- // resetSkeleton() //----------------------------------------------------------------------------- -void LLVOAvatar::resetSkeleton() +void LLVOAvatar::resetSkeleton(bool reset_animations) { LL_DEBUGS("Avatar") << avString() << " reset starts" << LL_ENDL; if (!mLastProcessedAppearance) @@ -1911,6 +1911,12 @@ void LLVOAvatar::resetSkeleton() // Restore attachment pos overrides rebuildAttachmentOverrides(); + // Animations + if (reset_animations) + { + resetAnimations(); + } + LL_DEBUGS("Avatar") << avString() << " reset ends" << LL_ENDL; } diff --git a/indra/newview/llvoavatar.h b/indra/newview/llvoavatar.h index 39b32f1ac5..bd89d4ef23 100644 --- a/indra/newview/llvoavatar.h +++ b/indra/newview/llvoavatar.h @@ -376,7 +376,7 @@ public: void initAttachmentPoints(bool ignore_hud_joints = false); /*virtual*/ void buildCharacter(); void resetVisualParams(); - void resetSkeleton(); + void resetSkeleton(bool reset_animations); LLVector3 mCurRootToHeadOffset; LLVector3 mTargetRootToHeadOffset; diff --git a/indra/newview/skins/default/xui/en/menu_attachment_other.xml b/indra/newview/skins/default/xui/en/menu_attachment_other.xml index 8771660bcf..2f60bab0b7 100644 --- a/indra/newview/skins/default/xui/en/menu_attachment_other.xml +++ b/indra/newview/skins/default/xui/en/menu_attachment_other.xml @@ -48,6 +48,13 @@ function="Avatar.ResetSkeleton" /> + + + + + + + + + + + + + +