Allow toggle of visual manipulators.

master
Beq 2025-03-13 00:51:41 +00:00
parent 3fd6a54fc5
commit 4130e9a416
7 changed files with 74 additions and 23 deletions

View File

@ -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;

View File

@ -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 };

View File

@ -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)

View File

@ -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

View File

@ -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" />

View File

@ -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>