Allow toggle of visual manipulators.
parent
3fd6a54fc5
commit
4130e9a416
|
|
@ -75,6 +75,7 @@ FSFloaterPoser::FSFloaterPoser(const LLSD& key) : LLFloater(key)
|
|||
mCommitCallbackRegistrar.add("Poser.RefreshAvatars", [this](LLUICtrl*, const LLSD&) { onAvatarsRefresh(); });
|
||||
mCommitCallbackRegistrar.add("Poser.StartStopAnimating", [this](LLUICtrl*, const LLSD&) { onPoseStartStop(); });
|
||||
mCommitCallbackRegistrar.add("Poser.ToggleLoadSavePanel", [this](LLUICtrl*, const LLSD&) { onToggleLoadSavePanel(); });
|
||||
mCommitCallbackRegistrar.add("Poser.ToggleVisualManipulators", [this](LLUICtrl*, const LLSD&) { onToggleVisualManipulators(); });
|
||||
|
||||
mCommitCallbackRegistrar.add("Poser.UndoLastRotation", [this](LLUICtrl*, const LLSD&) { onUndoLastChange(); });
|
||||
mCommitCallbackRegistrar.add("Poser.RedoLastRotation", [this](LLUICtrl*, const LLSD&) { onRedoLastChange(); });
|
||||
|
|
@ -149,6 +150,9 @@ bool FSFloaterPoser::postBuild()
|
|||
mPosesScrollList->setCommitOnSelectionChange(true);
|
||||
mPosesScrollList->setCommitCallback([this](LLUICtrl *, const LLSD &) { onPoseFileSelect(); });
|
||||
|
||||
mToggleVisualManipulators = getChild<LLButton>("toggleVisualManipulators");
|
||||
mToggleVisualManipulators->setToggleState(true);
|
||||
|
||||
mTrackpadSensitivitySlider = getChild<LLSliderCtrl>("trackpad_sensitivity_slider");
|
||||
|
||||
mPoseSaveNameEditor = getChild<LLLineEditor>("pose_save_name");
|
||||
|
|
@ -219,18 +223,6 @@ bool FSFloaterPoser::postBuild()
|
|||
|
||||
mBtnJointRotate = getChild<LLButton>("button_joint_rotate_tool");
|
||||
|
||||
mCommitCallbackRegistrar.add("Poser.SetRotateTool",
|
||||
[](LLUICtrl*, const LLSD&)
|
||||
{
|
||||
LLToolMgr::getInstance()->setCurrentToolset(gPoserToolset);
|
||||
LLToolMgr::getInstance()->getCurrentToolset()->selectTool( (LLTool *) FSToolCompPose::getInstance());
|
||||
}
|
||||
);
|
||||
|
||||
LLToolMgr::getInstance()->setCurrentToolset(gPoserToolset);
|
||||
LLToolMgr::getInstance()->getCurrentToolset()->selectTool( (LLTool *) FSToolCompPose::getInstance());
|
||||
FSToolCompPose::getInstance()->setAvatar( gAgentAvatarp);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
|
@ -242,6 +234,13 @@ void FSFloaterPoser::onOpen(const LLSD& key)
|
|||
onJointTabSelect();
|
||||
refreshPoseScroll(mHandPresetsScrollList, POSE_PRESETS_HANDS_SUBDIRECTORY);
|
||||
startPosingSelf();
|
||||
|
||||
enableVisualManipulators();
|
||||
LLFloater::onOpen(key);
|
||||
}
|
||||
|
||||
void FSFloaterPoser::enableVisualManipulators()
|
||||
{
|
||||
if (LLToolMgr::getInstance()->getCurrentToolset() != gCameraToolset)
|
||||
{
|
||||
mLastToolset = LLToolMgr::getInstance()->getCurrentToolset();
|
||||
|
|
@ -249,19 +248,25 @@ void FSFloaterPoser::onOpen(const LLSD& key)
|
|||
LLToolMgr::getInstance()->setCurrentToolset(gPoserToolset);
|
||||
LLToolMgr::getInstance()->getCurrentToolset()->selectTool(FSToolCompPose::getInstance());
|
||||
FSToolCompPose::getInstance()->setAvatar( gAgentAvatarp);
|
||||
LLFloater::onOpen(key);
|
||||
}
|
||||
|
||||
void FSFloaterPoser::onClose(bool app_quitting)
|
||||
void FSFloaterPoser::disableVisualManipulators()
|
||||
{
|
||||
if (gSavedSettings.getBOOL(POSER_STOPPOSINGWHENCLOSED_SAVE_KEY))
|
||||
stopPosingAllAvatars();
|
||||
|
||||
if (mLastToolset)
|
||||
{
|
||||
LLToolMgr::getInstance()->setCurrentToolset(mLastToolset);
|
||||
}
|
||||
FSToolCompPose::getInstance()->setAvatar(nullptr);
|
||||
}
|
||||
|
||||
void FSFloaterPoser::onClose(bool app_quitting)
|
||||
{
|
||||
if (gSavedSettings.getBOOL(POSER_STOPPOSINGWHENCLOSED_SAVE_KEY))
|
||||
{
|
||||
stopPosingAllAvatars();
|
||||
}
|
||||
|
||||
disableVisualManipulators();
|
||||
LLFloater::onClose(app_quitting);
|
||||
}
|
||||
|
||||
|
|
@ -1385,6 +1390,20 @@ void FSFloaterPoser::enableOrDisableRedoButton()
|
|||
mRedoChangeBtn->setEnabled(shouldEnableRedoButton);
|
||||
}
|
||||
|
||||
void FSFloaterPoser::onToggleVisualManipulators()
|
||||
{
|
||||
bool tools_enabled = mToggleVisualManipulators->getValue().asBoolean();
|
||||
|
||||
if (tools_enabled)
|
||||
{
|
||||
enableVisualManipulators();
|
||||
}
|
||||
else
|
||||
{
|
||||
disableVisualManipulators();
|
||||
}
|
||||
}
|
||||
|
||||
void FSFloaterPoser::selectJointByName(const std::string& jointName)
|
||||
{
|
||||
LLTabContainer* tabContainer = mJointsTabs;
|
||||
|
|
|
|||
|
|
@ -218,6 +218,9 @@ public:
|
|||
bool poseFileStartsFromTeePose(const std::string& poseFileName);
|
||||
void setPoseSaveFileTextBoxToUiSelectedAvatarSaveFileName();
|
||||
void setUiSelectedAvatarSaveFileName(const std::string& saveFileName);
|
||||
// visual manipulators control
|
||||
void enableVisualManipulators();
|
||||
void disableVisualManipulators();
|
||||
|
||||
// UI Event Handlers:
|
||||
void onAvatarsRefresh();
|
||||
|
|
@ -225,6 +228,7 @@ public:
|
|||
void onJointTabSelect();
|
||||
void onToggleMirrorChange();
|
||||
void onToggleSympatheticChange();
|
||||
void onToggleVisualManipulators();
|
||||
void setRotationChangeButtons(bool mirror, bool sympathetic);
|
||||
void onUndoLastChange();
|
||||
void onRedoLastChange();
|
||||
|
|
@ -469,6 +473,7 @@ public:
|
|||
LLScrollListCtrl* mPosesScrollList{ nullptr };
|
||||
LLScrollListCtrl* mHandPresetsScrollList{ nullptr };
|
||||
|
||||
LLButton* mToggleVisualManipulators{ nullptr };
|
||||
LLButton* mStartStopPosingBtn{ nullptr };
|
||||
LLButton* mToggleLoadSavePanelBtn{ nullptr };
|
||||
LLButton* mBrowserFolderBtn{ nullptr };
|
||||
|
|
|
|||
|
|
@ -147,14 +147,18 @@ void FSJointPose::recaptureJoint()
|
|||
void FSJointPose::recaptureJointAsDelta()
|
||||
{
|
||||
if (mIsCollisionVolume)
|
||||
{
|
||||
return;
|
||||
|
||||
}
|
||||
|
||||
LLJoint* joint = mJointState->getJoint();
|
||||
if (!joint)
|
||||
{
|
||||
return;
|
||||
|
||||
addToUndo(mRotation, &mUndoneRotationIndex, &mLastSetRotationDeltas, &mTimeLastUpdatedRotation);
|
||||
mRotation.updateRotation(joint->getRotation());
|
||||
}
|
||||
|
||||
addStateToUndo(mCurrentState);
|
||||
mCurrentState = FSJointState(joint);
|
||||
}
|
||||
|
||||
void FSJointPose::swapRotationWith(FSJointPose* oppositeJoint)
|
||||
|
|
|
|||
|
|
@ -997,7 +997,7 @@ void FSToolCompPose::pickCallback(const LLPickInfo& pick_info)
|
|||
else
|
||||
{
|
||||
// If no ring is highlighted, reset interaction or do nothing
|
||||
LL_INFOS("FSToolCompPose") << "No manipulator ring selected" << LL_ENDL;
|
||||
LL_DEBUGS("FSToolCompPose") << "No manipulator ring selected" << LL_ENDL;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
Binary file not shown.
|
After Width: | Height: | Size: 33 KiB |
|
|
@ -593,6 +593,11 @@ with the same filename but different name
|
|||
<texture name="Pathfinding_Dirty_Light" file_name="icons/Pathfinding_Dirty_Light.png" preload="false" />
|
||||
<texture name="Pathfinding_Disabled_Light" file_name="icons/Pathfinding_Disabled_Light.png" preload="false" />
|
||||
|
||||
<!-- FS:Beq: Poser icons -->
|
||||
<texture name="Poser_Visual_On" file_name="icons/visual_pose_enabled.png" />
|
||||
<texture name="Poser_Visual_Off" file_name="icons/visual_pose_disabled.png" />
|
||||
|
||||
|
||||
<!-- FS:Ansariel: Icon for script errors in V1 status bar -->
|
||||
<texture name="Statusbar_Script_Error" file_name="icons/status_script_debug.tga" preload="false" />
|
||||
|
||||
|
|
|
|||
|
|
@ -925,6 +925,24 @@ width="430">
|
|||
width="134" />
|
||||
</panel>
|
||||
</tab_container>
|
||||
<button
|
||||
follows="bottom|left"
|
||||
layout="bottomleft"
|
||||
is_toggle="true"
|
||||
image_overlay="Poser_Visual_On"
|
||||
image_hover_unselected="Toolbar_Middle_Over"
|
||||
image_selected="Toolbar_Middle_Selected"
|
||||
image_unselected="Toolbar_Middle_Off"
|
||||
name="toggleVisualManipulators"
|
||||
tool_tip="Toggle the visual manipulators on and off"
|
||||
height="50"
|
||||
width="50"
|
||||
left="2"
|
||||
bottom_delta="5"
|
||||
>
|
||||
<button.commit_callback
|
||||
function="Poser.ToggleVisualManipulators"/>
|
||||
</button>
|
||||
</panel>
|
||||
<panel
|
||||
follows="left|top|bottom"
|
||||
|
|
@ -1696,4 +1714,4 @@ width="430">
|
|||
</panel>
|
||||
</layout_panel>
|
||||
</layout_stack>
|
||||
</floater>
|
||||
</floater>
|
||||
Loading…
Reference in New Issue