FIRE-9495: Make posestand lock toggle behave as expected.
parent
4170230132
commit
8dd355de0b
|
|
@ -46,8 +46,7 @@ void FSFloaterPoseStand::onOpen(const LLSD& key)
|
|||
{
|
||||
if (gSavedSettings.getBOOL("FSPoseStandLock") && !gAgentAvatarp->isSitting() && isAgentAvatarValid())
|
||||
{
|
||||
gAgent.sitDown();
|
||||
mPoseStandLock = true;
|
||||
setLock(true);
|
||||
}
|
||||
gAgentAvatarp->setIsEditingAppearance(TRUE);
|
||||
onCommitCombo();
|
||||
|
|
@ -57,7 +56,9 @@ void FSFloaterPoseStand::onOpen(const LLSD& key)
|
|||
void FSFloaterPoseStand::onClose(bool app_quitting)
|
||||
{
|
||||
if (mPoseStandLock == true && gAgentAvatarp->isSitting() && isAgentAvatarValid())
|
||||
gAgent.standUp();
|
||||
{
|
||||
setLock(false);
|
||||
}
|
||||
gAgentAvatarp->setIsEditingAppearance(FALSE);
|
||||
FSPose::getInstance()->stopPose();
|
||||
}
|
||||
|
|
@ -86,3 +87,16 @@ void FSFloaterPoseStand::onCommitCombo()
|
|||
std::string selected_pose = mComboPose->getValue();
|
||||
FSPose::getInstance()->setPose(selected_pose);
|
||||
}
|
||||
|
||||
void FSFloaterPoseStand::setLock(bool enabled)
|
||||
{
|
||||
if (enabled)
|
||||
{
|
||||
gAgent.sitDown();
|
||||
}
|
||||
else
|
||||
{
|
||||
gAgent.standUp();
|
||||
}
|
||||
mPoseStandLock = enabled;
|
||||
}
|
||||
|
|
@ -23,13 +23,13 @@ class FSFloaterPoseStand
|
|||
public:
|
||||
FSFloaterPoseStand(const LLSD& key);
|
||||
BOOL postBuild();
|
||||
void setLock(bool enabled);
|
||||
void onCommitCombo();
|
||||
private:
|
||||
~FSFloaterPoseStand();
|
||||
|
||||
virtual void onOpen(const LLSD& key);
|
||||
virtual void onClose(bool app_quitting);
|
||||
void loadPoses();
|
||||
void onCommitCombo();
|
||||
|
||||
bool mPoseStandLock;
|
||||
LLComboBox* mComboPose;
|
||||
|
|
|
|||
|
|
@ -86,6 +86,7 @@
|
|||
#include "llfloaterreg.h"
|
||||
#include "llfloatersidepanelcontainer.h"
|
||||
#include "llpanelplaces.h"
|
||||
#include "fsfloaterposestand.h"
|
||||
#include "fsfloaterteleporthistory.h"
|
||||
|
||||
// Third party library includes
|
||||
|
|
@ -711,6 +712,20 @@ static void handleUseStandaloneTeleportHistoryFloaterChanged()
|
|||
}
|
||||
}
|
||||
// </FS:Ansariel> Clear places / teleport history search filter
|
||||
|
||||
// <FS:CR> Posestand Ground Lock
|
||||
static void handleSetPoseStandLock(const LLSD& newvalue)
|
||||
{
|
||||
FSFloaterPoseStand* pose_stand = LLFloaterReg::findTypedInstance<FSFloaterPoseStand>("fs_posestand");
|
||||
if (pose_stand)
|
||||
{
|
||||
pose_stand->setLock(newvalue);
|
||||
pose_stand->onCommitCombo();
|
||||
}
|
||||
|
||||
}
|
||||
// </FS:CR> Posestand Ground Lock
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
void settings_setup_listeners()
|
||||
|
|
@ -895,6 +910,9 @@ void settings_setup_listeners()
|
|||
|
||||
// <FS:Ansariel> Tofu's SSR
|
||||
gSavedSettings.getControl("FSRenderSSR")->getSignal()->connect(boost::bind(&handleSetShaderChanged, _2));
|
||||
|
||||
// <FS:CR> Pose stand ground lock
|
||||
gSavedSettings.getControl("FSPoseStandLock")->getSignal()->connect(boost::bind(&handleSetPoseStandLock, _2));
|
||||
}
|
||||
|
||||
#if TEST_CACHED_CONTROL
|
||||
|
|
|
|||
Loading…
Reference in New Issue