diff --git a/indra/newview/fspose.cpp b/indra/newview/fspose.cpp index fd5b93bef2..31dae2b0ee 100644 --- a/indra/newview/fspose.cpp +++ b/indra/newview/fspose.cpp @@ -25,14 +25,17 @@ FSPose::~FSPose() { } -void FSPose::setPose(std::string new_pose) +void FSPose::setPose(std::string new_pose, bool save_state) { if (isAgentAvatarValid()) { if (mCurrentPose.notNull()) + { gAgent.sendAnimationRequest(mCurrentPose, ANIM_REQUEST_STOP); - mCurrentPose.set(new_pose); - gAgent.sendAnimationRequest(mCurrentPose, ANIM_REQUEST_START); + } + if (save_state) + mCurrentPose.set(new_pose); + gAgent.sendAnimationRequest(LLUUID(new_pose), ANIM_REQUEST_START); } } diff --git a/indra/newview/fspose.h b/indra/newview/fspose.h index 77b74599e7..010d3f3b85 100644 --- a/indra/newview/fspose.h +++ b/indra/newview/fspose.h @@ -20,7 +20,7 @@ class FSPose : public LLSingleton friend class LLSingleton; LOG_CLASS(FSPose); public: - void setPose(std::string new_pose); + void setPose(std::string new_pose, bool save_state = true); void stopPose(); protected: FSPose(); diff --git a/indra/newview/llviewermenu.cpp b/indra/newview/llviewermenu.cpp index f293f28d63..e1fd03b044 100755 --- a/indra/newview/llviewermenu.cpp +++ b/indra/newview/llviewermenu.cpp @@ -8657,7 +8657,9 @@ class FSToolsUndeform : public view_listener_t { bool handleEvent(const LLSD& userdata) { - FSPose::getInstance()->setPose(gSavedSettings.getString("FSUndeformUUID")); + FSPose::getInstance()->setPose(gSavedSettings.getString("FSUndeformUUID"), false); + gAgentAvatarp->updateVisualParams(); + return true; } };