Merge pull request #75 from AngeldarkRaymaker/FIRE-34943
Fire 34943: Add spinners to sliders for finer adjustmentsmeow-7.2.2
commit
fdb54ab59d
|
|
@ -105,6 +105,9 @@ FSFloaterPoser::FSFloaterPoser(const LLSD& key) : LLFloater(key)
|
|||
mCommitCallbackRegistrar.add("Poser.RecaptureSelectedBones", [this](LLUICtrl*, const LLSD&) { onClickRecaptureSelectedBones(); });
|
||||
mCommitCallbackRegistrar.add("Poser.TogglePosingSelectedBones", [this](LLUICtrl*, const LLSD&) { onClickToggleSelectedBoneEnabled(); });
|
||||
mCommitCallbackRegistrar.add("Poser.PoseJointsReset", [this](LLUICtrl*, const LLSD&) { onPoseJointsReset(); });
|
||||
|
||||
//mCommitCallbackRegistrar.add("Poser.CommitSpinner", [this](LLUICtrl* spinnerControl, const LLSD&) { onCommitSpinner(spinnerControl); });
|
||||
mCommitCallbackRegistrar.add("Poser.CommitSpinner", boost::bind(&FSFloaterPoser::onCommitSpinner, this, _1, _2));
|
||||
}
|
||||
|
||||
bool FSFloaterPoser::postBuild()
|
||||
|
|
@ -164,7 +167,6 @@ bool FSFloaterPoser::postBuild()
|
|||
mToggleAdvancedPanelBtn->setValue(true);
|
||||
|
||||
mTrackpadSensitivitySlider = getChild<LLSliderCtrl>("trackpad_sensitivity_slider");
|
||||
mTrackpadSensitivitySlider->setValue(gSavedSettings.getF32(POSER_TRACKPAD_SENSITIVITY_SAVE_KEY));
|
||||
|
||||
mPoseSaveNameEditor = getChild<LLLineEditor>("pose_save_name");
|
||||
mPoseSaveNameEditor->setPrevalidate(&LLTextValidate::validateASCIIPrintableNoPipe);
|
||||
|
|
@ -216,6 +218,20 @@ bool FSFloaterPoser::postBuild()
|
|||
mResetBaseRotCbx = getChild<LLCheckBoxCtrl>("reset_base_rotation_on_edit_checkbox");
|
||||
mResetBaseRotCbx->setCommitCallback([this](LLUICtrl*, const LLSD&) { onClickSetBaseRotZero(); });
|
||||
|
||||
mTrackpadSensitivitySpnr = getChild<LLUICtrl>("trackpad_sensitivity_spinner");
|
||||
mYawSpnr = getChild<LLUICtrl>("limb_yaw_spinner");
|
||||
mPitchSpnr = getChild<LLUICtrl>("limb_pitch_spinner");
|
||||
mRollSpnr = getChild<LLUICtrl>("limb_roll_spinner");
|
||||
mUpDownSpnr = getChild<LLUICtrl>("av_position_updown_spinner");
|
||||
mLeftRightSpnr = getChild<LLUICtrl>("av_position_leftright_spinner");
|
||||
mInOutSpnr = getChild<LLUICtrl>("av_position_inout_spinner");
|
||||
mAdvPosXSpnr = getChild<LLUICtrl>("adv_posx_spinner");
|
||||
mAdvPosYSpnr = getChild<LLUICtrl>("adv_posy_spinner");
|
||||
mAdvPosZSpnr = getChild<LLUICtrl>("adv_posz_spinner");
|
||||
mScaleXSpnr = getChild<LLUICtrl>("adv_scalex_spinner");
|
||||
mScaleYSpnr = getChild<LLUICtrl>("adv_scaley_spinner");
|
||||
mScaleZSpnr = getChild<LLUICtrl>("adv_scalez_spinner");
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
|
@ -467,7 +483,7 @@ void FSFloaterPoser::onClickToggleSelectedBoneEnabled()
|
|||
mPoserAnimator.setPosingAvatarJoint(avatar, *item, !currentlyPosing);
|
||||
}
|
||||
|
||||
refreshRotationSliders();
|
||||
refreshRotationSlidersAndSpinners();
|
||||
refreshTrackpadCursor();
|
||||
refreshTextHighlightingOnJointScrollLists();
|
||||
}
|
||||
|
|
@ -511,7 +527,7 @@ void FSFloaterPoser::onClickFlipSelectedJoints()
|
|||
mPoserAnimator.reflectJoint(avatar, item);
|
||||
}
|
||||
|
||||
refreshRotationSliders();
|
||||
refreshRotationSlidersAndSpinners();
|
||||
refreshTrackpadCursor();
|
||||
}
|
||||
|
||||
|
|
@ -526,7 +542,7 @@ void FSFloaterPoser::onClickFlipPose()
|
|||
|
||||
mPoserAnimator.flipEntirePose(avatar);
|
||||
|
||||
refreshRotationSliders();
|
||||
refreshRotationSlidersAndSpinners();
|
||||
refreshTrackpadCursor();
|
||||
}
|
||||
|
||||
|
|
@ -553,7 +569,7 @@ void FSFloaterPoser::onClickRecaptureSelectedBones()
|
|||
}
|
||||
|
||||
setSavePosesButtonText(true);
|
||||
refreshRotationSliders();
|
||||
refreshRotationSlidersAndSpinners();
|
||||
refreshTrackpadCursor();
|
||||
refreshTextHighlightingOnJointScrollLists();
|
||||
}
|
||||
|
|
@ -566,6 +582,114 @@ void FSFloaterPoser::onClickBrowsePoseCache()
|
|||
gViewerWindow->getWindow()->openFile(pathname);
|
||||
}
|
||||
|
||||
//void FSFloaterPoser::onCommitSpinner(LLUICtrl* spinner)
|
||||
// Pass in an ID as a parameter, so you can use a switch statement
|
||||
void FSFloaterPoser::onCommitSpinner(LLUICtrl* spinner, S32 id)
|
||||
{
|
||||
if (!spinner)
|
||||
return;
|
||||
|
||||
auto activeTab = mJointsTabs->getCurrentPanel();
|
||||
if (!activeTab)
|
||||
return;
|
||||
|
||||
bool changingBodyPosition = activeTab == mPositionRotationPnl;
|
||||
|
||||
F32 value = (F32)spinner->getValue().asReal();
|
||||
|
||||
// Use the ID passed in to perform a switch statment
|
||||
// which should make each action take the same amount of time.
|
||||
switch (id)
|
||||
{
|
||||
case 0: // av_position_updown_spinner
|
||||
{
|
||||
mPosZSlider->setValue(value);
|
||||
onAvatarPositionSet();
|
||||
break;
|
||||
}
|
||||
case 1: // av_position_leftright
|
||||
{
|
||||
mPosYSlider->setValue(value);
|
||||
onAvatarPositionSet();
|
||||
break;
|
||||
}
|
||||
case 2: // av_position_inout_spinner
|
||||
{
|
||||
mPosXSlider->setValue(value);
|
||||
onAvatarPositionSet();
|
||||
break;
|
||||
}
|
||||
case 3: // trackpad_sensitivity_spinner
|
||||
{
|
||||
onAdjustTrackpadSensitivity();
|
||||
break;
|
||||
}
|
||||
case 4: // limb_pitch_spinner
|
||||
{
|
||||
mLimbPitchSlider->setValue(value);
|
||||
onYawPitchRollSliderChanged();
|
||||
break;
|
||||
}
|
||||
case 5: // limb_yaw_spinner
|
||||
{
|
||||
mLimbYawSlider->setValue(value);
|
||||
onYawPitchRollSliderChanged();
|
||||
break;
|
||||
}
|
||||
case 6: // limb_roll_spinner
|
||||
{
|
||||
mLimbRollSlider->setValue(value);
|
||||
onYawPitchRollSliderChanged();
|
||||
break;
|
||||
}
|
||||
case 7: // adv_posx_spinner
|
||||
{
|
||||
if (changingBodyPosition)
|
||||
mPosXSlider->setValue(value);
|
||||
|
||||
mAdvPosXSlider->setValue(value);
|
||||
onAdvancedPositionSet();
|
||||
break;
|
||||
}
|
||||
case 8: // adv_posy_spinner
|
||||
{
|
||||
if (changingBodyPosition)
|
||||
mPosYSlider->setValue(value);
|
||||
|
||||
mAdvPosYSlider->setValue(value);
|
||||
onAdvancedPositionSet();
|
||||
break;
|
||||
}
|
||||
case 9: // adv_posz_spinner
|
||||
{
|
||||
if (changingBodyPosition)
|
||||
mPosZSlider->setValue(value);
|
||||
|
||||
mAdvPosZSlider->setValue(value);
|
||||
onAdvancedPositionSet();
|
||||
break;
|
||||
}
|
||||
case 10: // adv_scalex_spinner
|
||||
{
|
||||
mAdvScaleXSlider->setValue(value);
|
||||
onAdvancedScaleSet();
|
||||
break;
|
||||
}
|
||||
case 11: // adv_scaley_spinner
|
||||
{
|
||||
mAdvScaleYSlider->setValue(value);
|
||||
onAdvancedScaleSet();
|
||||
break;
|
||||
}
|
||||
case 12: // adv_scalez_spinner
|
||||
{
|
||||
mAdvScaleZSlider->setValue(value);
|
||||
onAdvancedScaleSet();
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void FSFloaterPoser::onPoseJointsReset()
|
||||
{
|
||||
if (notDoubleClicked())
|
||||
|
|
@ -589,9 +713,9 @@ void FSFloaterPoser::onPoseJointsReset()
|
|||
mPoserAnimator.resetAvatarJoint(avatar, *item);
|
||||
}
|
||||
|
||||
refreshRotationSliders();
|
||||
refreshRotationSlidersAndSpinners();
|
||||
refreshTrackpadCursor();
|
||||
refreshAvatarPositionSliders();
|
||||
refreshAvatarPositionSlidersAndSpinners();
|
||||
}
|
||||
|
||||
void FSFloaterPoser::onPoseMenuAction(const LLSD& param)
|
||||
|
|
@ -1149,7 +1273,7 @@ void FSFloaterPoser::onUndoLastRotation()
|
|||
}
|
||||
|
||||
enableOrDisableRedoButton();
|
||||
refreshRotationSliders();
|
||||
refreshRotationSlidersAndSpinners();
|
||||
refreshTrackpadCursor();
|
||||
}
|
||||
|
||||
|
|
@ -1173,8 +1297,8 @@ void FSFloaterPoser::onUndoLastPosition()
|
|||
mPoserAnimator.undoLastJointPosition(avatar, *item, getUiSelectedBoneDeflectionStyle());
|
||||
}
|
||||
|
||||
refreshAdvancedPositionSliders();
|
||||
refreshAvatarPositionSliders();
|
||||
refreshAdvancedPositionSlidersAndSpinners();
|
||||
refreshAvatarPositionSlidersAndSpinners();
|
||||
}
|
||||
|
||||
void FSFloaterPoser::onUndoLastScale()
|
||||
|
|
@ -1197,7 +1321,7 @@ void FSFloaterPoser::onUndoLastScale()
|
|||
mPoserAnimator.undoLastJointScale(avatar, *item, getUiSelectedBoneDeflectionStyle());
|
||||
}
|
||||
|
||||
refreshAdvancedScaleSliders();
|
||||
refreshAdvancedScaleSlidersAndSpinners();
|
||||
}
|
||||
|
||||
void FSFloaterPoser::onSetAvatarToTpose()
|
||||
|
|
@ -1237,8 +1361,8 @@ void FSFloaterPoser::onResetPosition()
|
|||
mPoserAnimator.resetJointPosition(avatar, *item, getUiSelectedBoneDeflectionStyle());
|
||||
}
|
||||
|
||||
refreshAdvancedPositionSliders();
|
||||
refreshAvatarPositionSliders();
|
||||
refreshAdvancedPositionSlidersAndSpinners();
|
||||
refreshAvatarPositionSlidersAndSpinners();
|
||||
}
|
||||
|
||||
void FSFloaterPoser::onResetScale()
|
||||
|
|
@ -1264,7 +1388,7 @@ void FSFloaterPoser::onResetScale()
|
|||
mPoserAnimator.resetJointScale(avatar, *item, getUiSelectedBoneDeflectionStyle());
|
||||
}
|
||||
|
||||
refreshAdvancedScaleSliders();
|
||||
refreshAdvancedScaleSlidersAndSpinners();
|
||||
}
|
||||
|
||||
void FSFloaterPoser::onRedoLastRotation()
|
||||
|
|
@ -1288,7 +1412,7 @@ void FSFloaterPoser::onRedoLastRotation()
|
|||
}
|
||||
|
||||
enableOrDisableRedoButton();
|
||||
refreshRotationSliders();
|
||||
refreshRotationSlidersAndSpinners();
|
||||
refreshTrackpadCursor();
|
||||
}
|
||||
|
||||
|
|
@ -1312,8 +1436,8 @@ void FSFloaterPoser::onRedoLastPosition()
|
|||
mPoserAnimator.redoLastJointPosition(avatar, *item, getUiSelectedBoneDeflectionStyle());
|
||||
}
|
||||
|
||||
refreshAdvancedPositionSliders();
|
||||
refreshAvatarPositionSliders();
|
||||
refreshAdvancedPositionSlidersAndSpinners();
|
||||
refreshAvatarPositionSlidersAndSpinners();
|
||||
}
|
||||
|
||||
void FSFloaterPoser::onRedoLastScale()
|
||||
|
|
@ -1336,7 +1460,7 @@ void FSFloaterPoser::onRedoLastScale()
|
|||
mPoserAnimator.redoLastJointScale(avatar, *item, getUiSelectedBoneDeflectionStyle());
|
||||
}
|
||||
|
||||
refreshAdvancedScaleSliders();
|
||||
refreshAdvancedScaleSlidersAndSpinners();
|
||||
}
|
||||
|
||||
void FSFloaterPoser::enableOrDisableRedoButton()
|
||||
|
|
@ -1569,8 +1693,15 @@ void FSFloaterPoser::onAdvancedPositionSet()
|
|||
F32 posY = mAdvPosYSlider->getValueF32();
|
||||
F32 posZ = mAdvPosZSlider->getValueF32();
|
||||
|
||||
mAdvPosXSpnr->setValue(posX);
|
||||
mInOutSpnr->setValue(posX);
|
||||
mAdvPosYSpnr->setValue(posY);
|
||||
mLeftRightSpnr->setValue(posY);
|
||||
mAdvPosZSpnr->setValue(posZ);
|
||||
mUpDownSpnr->setValue(posZ);
|
||||
|
||||
setSelectedJointsPosition(posX, posY, posZ);
|
||||
refreshAvatarPositionSliders();
|
||||
refreshAvatarPositionSlidersAndSpinners();
|
||||
}
|
||||
|
||||
void FSFloaterPoser::onAdvancedScaleSet()
|
||||
|
|
@ -1579,6 +1710,10 @@ void FSFloaterPoser::onAdvancedScaleSet()
|
|||
F32 scY = mAdvScaleYSlider->getValueF32();
|
||||
F32 scZ = mAdvScaleZSlider->getValueF32();
|
||||
|
||||
mScaleXSpnr->setValue(scX);
|
||||
mScaleYSpnr->setValue(scY);
|
||||
mScaleZSpnr->setValue(scZ);
|
||||
|
||||
setSelectedJointsScale(scX, scY, scZ);
|
||||
}
|
||||
|
||||
|
|
@ -1588,8 +1723,15 @@ void FSFloaterPoser::onAvatarPositionSet()
|
|||
F32 posY = mPosYSlider->getValueF32();
|
||||
F32 posZ = mPosZSlider->getValueF32();
|
||||
|
||||
mAdvPosXSpnr->setValue(posX);
|
||||
mInOutSpnr->setValue(posX);
|
||||
mAdvPosYSpnr->setValue(posY);
|
||||
mLeftRightSpnr->setValue(posY);
|
||||
mAdvPosZSpnr->setValue(posZ);
|
||||
mUpDownSpnr->setValue(posZ);
|
||||
|
||||
setSelectedJointsPosition(posX, posY, posZ);
|
||||
refreshAdvancedPositionSliders();
|
||||
refreshAdvancedPositionSlidersAndSpinners();
|
||||
}
|
||||
|
||||
void FSFloaterPoser::onLimbTrackballChanged()
|
||||
|
|
@ -1628,6 +1770,10 @@ void FSFloaterPoser::onLimbTrackballChanged()
|
|||
mLimbYawSlider->setValue(trackPadPos.mV[VX] *= RAD_TO_DEG);
|
||||
mLimbPitchSlider->setValue(trackPadPos.mV[VY] *= RAD_TO_DEG);
|
||||
mLimbRollSlider->setValue(trackPadPos.mV[VZ] *= RAD_TO_DEG);
|
||||
|
||||
mYawSpnr->setValue(mLimbYawSlider->getValueF32());
|
||||
mPitchSpnr->setValue(mLimbPitchSlider->getValueF32());
|
||||
mRollSpnr->setValue(mLimbRollSlider->getValueF32());
|
||||
}
|
||||
|
||||
F32 FSFloaterPoser::unWrapScale(F32 scale)
|
||||
|
|
@ -1669,11 +1815,14 @@ void FSFloaterPoser::onYawPitchRollSliderChanged()
|
|||
absoluteRotation.mV[VZ] /= NormalTrackpadRangeInRads;
|
||||
|
||||
mAvatarTrackball->setValue(absoluteRotation.getValue());
|
||||
|
||||
mYawSpnr->setValue(mLimbYawSlider->getValueF32());
|
||||
mPitchSpnr->setValue(mLimbPitchSlider->getValueF32());
|
||||
mRollSpnr->setValue(mLimbRollSlider->getValueF32());
|
||||
}
|
||||
|
||||
void FSFloaterPoser::onAdjustTrackpadSensitivity()
|
||||
{
|
||||
gSavedSettings.setF32(POSER_TRACKPAD_SENSITIVITY_SAVE_KEY, mTrackpadSensitivitySlider->getValueF32());
|
||||
refreshTrackpadCursor();
|
||||
}
|
||||
|
||||
|
|
@ -1693,7 +1842,7 @@ void FSFloaterPoser::refreshTrackpadCursor()
|
|||
/// <summary>
|
||||
/// This only sets the position sliders of the 'basic' view (not the advanced sliders).
|
||||
/// </summary>
|
||||
void FSFloaterPoser::refreshAvatarPositionSliders()
|
||||
void FSFloaterPoser::refreshAvatarPositionSlidersAndSpinners()
|
||||
{
|
||||
auto activeTab = mJointsTabs->getCurrentPanel();
|
||||
if (!activeTab)
|
||||
|
|
@ -1704,36 +1853,48 @@ void FSFloaterPoser::refreshAvatarPositionSliders()
|
|||
|
||||
LLVector3 position = getPositionOfFirstSelectedJoint();
|
||||
mPosXSlider->setValue(position.mV[VX]);
|
||||
mInOutSpnr->setValue(position.mV[VX]);
|
||||
mPosYSlider->setValue(position.mV[VY]);
|
||||
mLeftRightSpnr->setValue(position.mV[VY]);
|
||||
mPosZSlider->setValue(position.mV[VZ]);
|
||||
mUpDownSpnr->setValue(position.mV[VZ]);
|
||||
}
|
||||
|
||||
void FSFloaterPoser::refreshRotationSliders()
|
||||
void FSFloaterPoser::refreshRotationSlidersAndSpinners()
|
||||
{
|
||||
LLVector3 rotation = getRotationOfFirstSelectedJoint();
|
||||
|
||||
mLastSliderRotation = rotation;
|
||||
mLimbYawSlider->setValue(rotation.mV[VX] *= RAD_TO_DEG);
|
||||
mYawSpnr->setValue(rotation.mV[VX]);
|
||||
mLimbPitchSlider->setValue(rotation.mV[VY] *= RAD_TO_DEG);
|
||||
mPitchSpnr->setValue(rotation.mV[VY]);
|
||||
mLimbRollSlider->setValue(rotation.mV[VZ] *= RAD_TO_DEG);
|
||||
mRollSpnr->setValue(rotation.mV[VZ]);
|
||||
}
|
||||
|
||||
void FSFloaterPoser::refreshAdvancedPositionSliders()
|
||||
void FSFloaterPoser::refreshAdvancedPositionSlidersAndSpinners()
|
||||
{
|
||||
LLVector3 position = getPositionOfFirstSelectedJoint();
|
||||
|
||||
mAdvPosXSlider->setValue(position.mV[VX]);
|
||||
mAdvPosXSpnr->setValue(position.mV[VX]);
|
||||
mAdvPosYSlider->setValue(position.mV[VY]);
|
||||
mAdvPosYSpnr->setValue(position.mV[VY]);
|
||||
mAdvPosZSlider->setValue(position.mV[VZ]);
|
||||
mAdvPosZSpnr->setValue(position.mV[VZ]);
|
||||
}
|
||||
|
||||
void FSFloaterPoser::refreshAdvancedScaleSliders()
|
||||
void FSFloaterPoser::refreshAdvancedScaleSlidersAndSpinners()
|
||||
{
|
||||
LLVector3 rotation = getScaleOfFirstSelectedJoint();
|
||||
|
||||
mAdvScaleXSlider->setValue(rotation.mV[VX]);
|
||||
mScaleXSpnr->setValue(rotation.mV[VX]);
|
||||
mAdvScaleYSlider->setValue(rotation.mV[VY]);
|
||||
mScaleYSpnr->setValue(rotation.mV[VY]);
|
||||
mAdvScaleZSlider->setValue(rotation.mV[VZ]);
|
||||
mScaleZSpnr->setValue(rotation.mV[VZ]);
|
||||
}
|
||||
|
||||
void FSFloaterPoser::setSelectedJointsPosition(F32 x, F32 y, F32 z)
|
||||
|
|
@ -1877,16 +2038,16 @@ LLVector3 FSFloaterPoser::getScaleOfFirstSelectedJoint() const
|
|||
|
||||
void FSFloaterPoser::onJointTabSelect()
|
||||
{
|
||||
refreshAvatarPositionSliders();
|
||||
refreshRotationSliders();
|
||||
refreshAvatarPositionSlidersAndSpinners();
|
||||
refreshRotationSlidersAndSpinners();
|
||||
refreshTrackpadCursor();
|
||||
enableOrDisableRedoButton();
|
||||
onClickSetBaseRotZero();
|
||||
|
||||
if (mToggleAdvancedPanelBtn->getValue().asBoolean())
|
||||
{
|
||||
refreshAdvancedPositionSliders();
|
||||
refreshAdvancedScaleSliders();
|
||||
refreshAdvancedPositionSlidersAndSpinners();
|
||||
refreshAdvancedScaleSlidersAndSpinners();
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -253,13 +253,15 @@ class FSFloaterPoser : public LLFloater
|
|||
void onClickLoadRightHandPose();
|
||||
void onClickLoadHandPose(bool isRightHand);
|
||||
void onClickSetBaseRotZero();
|
||||
//void onCommitSpinner(LLUICtrl* spinner);
|
||||
void onCommitSpinner(LLUICtrl* spinner, S32 ID);
|
||||
|
||||
// UI Refreshments
|
||||
void refreshRotationSliders();
|
||||
void refreshAvatarPositionSliders();
|
||||
void refreshRotationSlidersAndSpinners();
|
||||
void refreshAvatarPositionSlidersAndSpinners();
|
||||
void refreshTrackpadCursor();
|
||||
void refreshAdvancedPositionSliders();
|
||||
void refreshAdvancedScaleSliders();
|
||||
void refreshAdvancedPositionSlidersAndSpinners();
|
||||
void refreshAdvancedScaleSlidersAndSpinners();
|
||||
|
||||
/// <summary>
|
||||
/// Determines if we have permission to animate the supplied avatar.
|
||||
|
|
@ -496,6 +498,20 @@ class FSFloaterPoser : public LLFloater
|
|||
|
||||
LLCheckBoxCtrl* mResetBaseRotCbx{ nullptr };
|
||||
LLCheckBoxCtrl* mAlsoSaveBvhCbx{ nullptr };
|
||||
|
||||
LLUICtrl* mTrackpadSensitivitySpnr{ nullptr };
|
||||
LLUICtrl* mYawSpnr{ nullptr };
|
||||
LLUICtrl* mPitchSpnr{ nullptr };
|
||||
LLUICtrl* mRollSpnr{ nullptr };
|
||||
LLUICtrl* mUpDownSpnr{ nullptr };
|
||||
LLUICtrl* mLeftRightSpnr{ nullptr };
|
||||
LLUICtrl* mInOutSpnr{ nullptr };
|
||||
LLUICtrl* mAdvPosXSpnr{ nullptr };
|
||||
LLUICtrl* mAdvPosYSpnr{ nullptr };
|
||||
LLUICtrl* mAdvPosZSpnr{ nullptr };
|
||||
LLUICtrl* mScaleXSpnr{ nullptr };
|
||||
LLUICtrl* mScaleYSpnr{ nullptr };
|
||||
LLUICtrl* mScaleZSpnr{ nullptr };
|
||||
};
|
||||
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -351,6 +351,7 @@ width="403">
|
|||
</text>
|
||||
<slider
|
||||
decimal_digits="2"
|
||||
show_text="false"
|
||||
follows="left|top"
|
||||
height="16"
|
||||
increment="0.01"
|
||||
|
|
@ -361,18 +362,33 @@ width="403">
|
|||
max_val="1.5"
|
||||
name="av_position_updown"
|
||||
top_pad="5"
|
||||
width="172"
|
||||
width="122"
|
||||
tool_tip="Move the selected avatar up or down"
|
||||
can_edit_text="true">
|
||||
<slider.commit_callback
|
||||
function="Poser.PositionSet"/>
|
||||
</slider>
|
||||
<spinner
|
||||
height="16"
|
||||
decimal_digits="2"
|
||||
follows="left|top"
|
||||
increment="0.01"
|
||||
top_pad="-19"
|
||||
left_pad="0"
|
||||
name="av_position_updown_spinner"
|
||||
min_val="-1.5"
|
||||
max_val="1.5"
|
||||
width="47">
|
||||
<spinner.commit_callback
|
||||
function="Poser.CommitSpinner"
|
||||
parameter="0"/>
|
||||
</spinner>
|
||||
<text
|
||||
follows="left|top"
|
||||
name="av_position_leftright_label"
|
||||
height="10"
|
||||
layout="topleft"
|
||||
left_delta="-5"
|
||||
left="0"
|
||||
top_pad="5"
|
||||
width="172">
|
||||
Left/Right:
|
||||
|
|
@ -380,6 +396,7 @@ width="403">
|
|||
<slider
|
||||
decimal_digits="2"
|
||||
follows="left|top"
|
||||
show_text="false"
|
||||
height="16"
|
||||
increment="0.01"
|
||||
initial_value="0"
|
||||
|
|
@ -389,18 +406,33 @@ width="403">
|
|||
max_val="1.5"
|
||||
name="av_position_leftright"
|
||||
top_pad="5"
|
||||
width="172"
|
||||
width="122"
|
||||
tool_tip="Move the selected avatar left or right"
|
||||
can_edit_text="true">
|
||||
<slider.commit_callback
|
||||
function="Poser.PositionSet"/>
|
||||
</slider>
|
||||
<spinner
|
||||
height="16"
|
||||
decimal_digits="2"
|
||||
follows="left|top"
|
||||
increment="0.01"
|
||||
top_pad="-19"
|
||||
left_pad="0"
|
||||
name="av_position_leftright_spinner"
|
||||
min_val="-1.5"
|
||||
max_val="1.5"
|
||||
width="47">
|
||||
<spinner.commit_callback
|
||||
function="Poser.CommitSpinner"
|
||||
parameter="1"/>
|
||||
</spinner>
|
||||
<text
|
||||
follows="left|top"
|
||||
name="av_position_inout_label"
|
||||
height="10"
|
||||
layout="topleft"
|
||||
left_delta="-5"
|
||||
left="0"
|
||||
top_pad="5"
|
||||
width="172">
|
||||
In/Out:
|
||||
|
|
@ -408,6 +440,7 @@ width="403">
|
|||
<slider
|
||||
decimal_digits="2"
|
||||
follows="left|top"
|
||||
show_text="false"
|
||||
height="16"
|
||||
increment="0.01"
|
||||
initial_value="0"
|
||||
|
|
@ -417,13 +450,28 @@ width="403">
|
|||
max_val="1.5"
|
||||
name="av_position_inout"
|
||||
top_pad="5"
|
||||
width="172"
|
||||
width="122"
|
||||
tool_tip="Move the selected avatar in or out"
|
||||
can_edit_text="true">
|
||||
<slider.commit_callback
|
||||
function="Poser.PositionSet"/>
|
||||
</slider>
|
||||
<!-- so this panel behaves like the others in the code behind, it has an invisible list... -->
|
||||
<spinner
|
||||
height="16"
|
||||
decimal_digits="2"
|
||||
follows="left|top"
|
||||
increment="0.01"
|
||||
top_pad="-19"
|
||||
left_pad="0"
|
||||
name="av_position_inout_spinner"
|
||||
min_val="-1.5"
|
||||
max_val="1.5"
|
||||
width="47">
|
||||
<spinner.commit_callback
|
||||
function="Poser.CommitSpinner"
|
||||
parameter="2"/>
|
||||
</spinner>
|
||||
<!-- to make this panel behaves like the others in code-behind, it has an invisible list -->
|
||||
<scroll_list
|
||||
visible="false"
|
||||
column_padding="2"
|
||||
|
|
@ -796,6 +844,7 @@ width="403">
|
|||
</text>
|
||||
<slider
|
||||
decimal_digits="2"
|
||||
control_name="FSPoserTrackpadSensitivity"
|
||||
can_edit_text="true"
|
||||
follows="left|top"
|
||||
height="14"
|
||||
|
|
@ -805,13 +854,30 @@ width="403">
|
|||
left_delta="0"
|
||||
max_val="2"
|
||||
min_val="0.01"
|
||||
show_text="false"
|
||||
name="trackpad_sensitivity_slider"
|
||||
tool_tip="Adjusts the sensitivity of the trackball"
|
||||
top_pad="3"
|
||||
width="170" >
|
||||
width="120" >
|
||||
<slider.commit_callback
|
||||
function="Poser.AdjustTrackPadSensitivity"/>
|
||||
</slider>
|
||||
<spinner
|
||||
height="16"
|
||||
decimal_digits="2"
|
||||
follows="left|top"
|
||||
control_name="FSPoserTrackpadSensitivity"
|
||||
increment="0.01"
|
||||
top_pad="-19"
|
||||
left_pad="0"
|
||||
name="trackpad_sensitivity_spinner"
|
||||
min_val="0.01"
|
||||
max_val="2"
|
||||
width="47">
|
||||
<spinner.commit_callback
|
||||
function="Poser.CommitSpinner"
|
||||
parameter="3"/>
|
||||
</spinner>
|
||||
<check_box
|
||||
control_name="FSPoserStopPosingWhenClosed"
|
||||
name="stop_posing_on_close_checkbox"
|
||||
|
|
@ -820,7 +886,7 @@ width="403">
|
|||
follows="left|top"
|
||||
left="5"
|
||||
tool_tip="Not stopping your pose can be helpful if you do a lot of work, and don't want to accidentally lose it."
|
||||
top_pad="5"
|
||||
top_pad="10"
|
||||
width="134" />
|
||||
<check_box
|
||||
control_name="FSPoserResetBaseRotationOnEdit"
|
||||
|
|
@ -839,9 +905,9 @@ width="403">
|
|||
enabled="false"
|
||||
label="Write BVH when saving**"
|
||||
follows="left|top"
|
||||
left="5"
|
||||
left="15"
|
||||
tool_tip="When you save your pose, also write a BVH file, which can be uploaded via the 'Build > Upload > Animation' to pose yourself or others in-world. This needs joints to reset their 'base' to zero, because BVH requires original work."
|
||||
top_pad="5"
|
||||
top_pad="2"
|
||||
width="134" />
|
||||
</panel>
|
||||
</tab_container>
|
||||
|
|
@ -992,7 +1058,7 @@ width="403">
|
|||
name="limb_pitch_label"
|
||||
height="10"
|
||||
layout="topleft"
|
||||
left_delta="0"
|
||||
left="0"
|
||||
top_pad="2"
|
||||
width="200">
|
||||
Up/Down:
|
||||
|
|
@ -1008,16 +1074,31 @@ width="403">
|
|||
min_val="-180"
|
||||
max_val="180"
|
||||
name="limb_pitch"
|
||||
show_text="false"
|
||||
top_pad="2"
|
||||
width="150"
|
||||
can_edit_text="true"/>
|
||||
width="98"/>
|
||||
<spinner
|
||||
height="16"
|
||||
decimal_digits="2"
|
||||
follows="left|top"
|
||||
increment="0.1"
|
||||
top_pad="-19"
|
||||
left_pad="0"
|
||||
name="limb_pitch_spinner"
|
||||
min_val="-180"
|
||||
max_val="180"
|
||||
width="57">
|
||||
<spinner.commit_callback
|
||||
function="Poser.CommitSpinner"
|
||||
parameter="4"/>
|
||||
</spinner>
|
||||
<text
|
||||
follows="left|top"
|
||||
name="limb_yaw_label"
|
||||
height="10"
|
||||
layout="topleft"
|
||||
left_delta="-5"
|
||||
top_pad="0"
|
||||
left="0"
|
||||
top_pad="2"
|
||||
width="200">
|
||||
Left/Right:
|
||||
</text>
|
||||
|
|
@ -1032,16 +1113,32 @@ width="403">
|
|||
min_val="-180"
|
||||
max_val="180"
|
||||
name="limb_yaw"
|
||||
show_text="false"
|
||||
top_pad="0"
|
||||
width="150"
|
||||
width="98"
|
||||
can_edit_text="true"/>
|
||||
<spinner
|
||||
height="16"
|
||||
decimal_digits="2"
|
||||
follows="left|top"
|
||||
increment="0.1"
|
||||
top_pad="-19"
|
||||
left_pad="0"
|
||||
name="limb_yaw_spinner"
|
||||
min_val="-180"
|
||||
max_val="180"
|
||||
width="57">
|
||||
<spinner.commit_callback
|
||||
function="Poser.CommitSpinner"
|
||||
parameter="5"/>
|
||||
</spinner>
|
||||
<text
|
||||
follows="left|top"
|
||||
name="limb_roll_label"
|
||||
height="10"
|
||||
layout="topleft"
|
||||
left_delta="-5"
|
||||
top_pad="-1"
|
||||
left="0"
|
||||
top_pad="2"
|
||||
width="200">
|
||||
Roll:
|
||||
</text>
|
||||
|
|
@ -1052,13 +1149,29 @@ width="403">
|
|||
increment="0.1"
|
||||
initial_value="0"
|
||||
layout="topleft"
|
||||
show_text="false"
|
||||
left_delta="5"
|
||||
min_val="-180"
|
||||
max_val="180"
|
||||
name="limb_roll"
|
||||
top_pad="-1"
|
||||
width="150"
|
||||
width="98"
|
||||
can_edit_text="true"/>
|
||||
<spinner
|
||||
height="16"
|
||||
decimal_digits="2"
|
||||
follows="left|top"
|
||||
increment="0.1"
|
||||
top_pad="-18"
|
||||
left_pad="0"
|
||||
name="limb_roll_spinner"
|
||||
min_val="-180"
|
||||
max_val="180"
|
||||
width="57">
|
||||
<spinner.commit_callback
|
||||
function="Poser.CommitSpinner"
|
||||
parameter="6"/>
|
||||
</spinner>
|
||||
</panel>
|
||||
<panel
|
||||
follows="top|left|bottom"
|
||||
|
|
@ -1300,13 +1413,13 @@ width="403">
|
|||
<layout_panel
|
||||
follows="top|left|right"
|
||||
layout="topleft"
|
||||
height="97"
|
||||
height="99"
|
||||
auto_resize="false"
|
||||
name="advanced_controls_layout"
|
||||
width="600">
|
||||
<panel
|
||||
follows="top|left|right"
|
||||
height="97"
|
||||
height="99"
|
||||
left="0"
|
||||
layout="all"
|
||||
enabled="false"
|
||||
|
|
@ -1318,7 +1431,7 @@ width="403">
|
|||
<tab_container
|
||||
follows="all"
|
||||
halign="center"
|
||||
height="97"
|
||||
height="99"
|
||||
layout="topleft"
|
||||
name="modifier_tabs"
|
||||
tab_height="20"
|
||||
|
|
@ -1329,7 +1442,7 @@ width="403">
|
|||
<panel
|
||||
follows="all"
|
||||
background_visible="false"
|
||||
height="97"
|
||||
height="99"
|
||||
layout="topleft"
|
||||
left="0"
|
||||
title="Body Part Position"
|
||||
|
|
@ -1337,75 +1450,117 @@ width="403">
|
|||
top="0"
|
||||
width="555">
|
||||
<slider
|
||||
decimal_digits="3"
|
||||
can_edit_text="true"
|
||||
follows="left|top"
|
||||
height="14"
|
||||
increment="0.001"
|
||||
initial_value="0"
|
||||
label="Position X:"
|
||||
label_width="70"
|
||||
label_width="60"
|
||||
follows="left|top"
|
||||
height="14"
|
||||
increment="0.001"
|
||||
initial_value="0"
|
||||
layout="topleft"
|
||||
left="10"
|
||||
max_val="0.5"
|
||||
min_val="-0.5"
|
||||
show_text="false"
|
||||
left="3"
|
||||
max_val="1.5"
|
||||
min_val="-1.5"
|
||||
name="Advanced_Position_X"
|
||||
top_pad="6"
|
||||
width="380" >
|
||||
top_pad="2"
|
||||
width="342" >
|
||||
<slider.commit_callback
|
||||
function="Poser.Advanced.PositionSet"/>
|
||||
</slider>
|
||||
<slider
|
||||
decimal_digits="3"
|
||||
can_edit_text="true"
|
||||
<spinner
|
||||
height="0"
|
||||
decimal_digits="2"
|
||||
follows="left|top"
|
||||
height="14"
|
||||
increment="0.001"
|
||||
initial_value="0"
|
||||
increment="0.01"
|
||||
top_pad="-19"
|
||||
left_pad="2"
|
||||
name="adv_posx_spinner"
|
||||
min_val="-1.5"
|
||||
max_val="1.5"
|
||||
width="47">
|
||||
<spinner.commit_callback
|
||||
function="Poser.CommitSpinner"
|
||||
parameter="7"/>
|
||||
</spinner>
|
||||
<slider
|
||||
label="Position Y:"
|
||||
label_width="70"
|
||||
layout="topleft"
|
||||
left_delta="0"
|
||||
max_val="0.5"
|
||||
min_val="-0.5"
|
||||
name="Advanced_Position_Y"
|
||||
top_pad="1"
|
||||
width="380" >
|
||||
<slider.commit_callback
|
||||
function="Poser.Advanced.PositionSet"/>
|
||||
</slider>
|
||||
<slider
|
||||
decimal_digits="3"
|
||||
can_edit_text="true"
|
||||
label_width="60"
|
||||
follows="left|top"
|
||||
height="14"
|
||||
top_pad="24"
|
||||
increment="0.001"
|
||||
initial_value="0"
|
||||
label="Position Z:"
|
||||
label_width="70"
|
||||
show_text="false"
|
||||
layout="topleft"
|
||||
left_delta="0"
|
||||
max_val="0.5"
|
||||
min_val="-0.5"
|
||||
name="Advanced_Position_Z"
|
||||
top_pad="1"
|
||||
width="380" >
|
||||
max_val="1.5"
|
||||
min_val="-1.5"
|
||||
name="Advanced_Position_Y"
|
||||
left="3"
|
||||
width="342" >
|
||||
<slider.commit_callback
|
||||
function="Poser.Advanced.PositionSet"/>
|
||||
</slider>
|
||||
<spinner
|
||||
height="0"
|
||||
decimal_digits="2"
|
||||
follows="left|top"
|
||||
increment="0.01"
|
||||
top_pad="-17"
|
||||
left_pad="2"
|
||||
name="adv_posy_spinner"
|
||||
min_val="-1.5"
|
||||
max_val="1.5"
|
||||
width="47">
|
||||
<spinner.commit_callback
|
||||
function="Poser.CommitSpinner"
|
||||
parameter="8"/>
|
||||
</spinner>
|
||||
<slider
|
||||
label="Position Z:"
|
||||
label_width="60"
|
||||
show_text="false"
|
||||
follows="left|top"
|
||||
height="14"
|
||||
top_pad="22"
|
||||
increment="0.001"
|
||||
initial_value="0"
|
||||
layout="topleft"
|
||||
max_val="1.5"
|
||||
min_val="-1.5"
|
||||
name="Advanced_Position_Z"
|
||||
left="3"
|
||||
width="342" >
|
||||
<slider.commit_callback
|
||||
function="Poser.Advanced.PositionSet"/>
|
||||
</slider>
|
||||
<spinner
|
||||
height="12"
|
||||
decimal_digits="2"
|
||||
follows="left|top"
|
||||
increment="0.01"
|
||||
top_pad="-15"
|
||||
left_pad="2"
|
||||
name="adv_posz_spinner"
|
||||
min_val="-1.5"
|
||||
max_val="1.5"
|
||||
width="47">
|
||||
<spinner.commit_callback
|
||||
function="Poser.CommitSpinner"
|
||||
parameter="9"/>
|
||||
</spinner>
|
||||
<button
|
||||
height="21"
|
||||
follows="left|top"
|
||||
layout="topleft"
|
||||
label="Undo Position Change"
|
||||
label="Undo Position"
|
||||
image_overlay="Script_Undo"
|
||||
image_overlay_alignment="left"
|
||||
image_unselected="Toolbar_Middle_Off"
|
||||
name="undo_position_change"
|
||||
tool_tip="Undo the last position change"
|
||||
width="150"
|
||||
top_pad="2"
|
||||
left_delta="0">
|
||||
width="109"
|
||||
left="3"
|
||||
top_pad="5">
|
||||
<button.commit_callback
|
||||
function="Poser.UndoLastPosition"/>
|
||||
</button>
|
||||
|
|
@ -1419,7 +1574,7 @@ width="403">
|
|||
image_unselected="Toolbar_Middle_Off"
|
||||
name="redo_position_change"
|
||||
tool_tip="Redo the last position change"
|
||||
width="110"
|
||||
width="108"
|
||||
top_delta="0"
|
||||
left_pad="4">
|
||||
<button.commit_callback
|
||||
|
|
@ -1435,7 +1590,7 @@ width="403">
|
|||
image_unselected="Toolbar_Middle_Off"
|
||||
name="reset_positions"
|
||||
tool_tip="Double click to reset position back to original"
|
||||
width="110"
|
||||
width="109"
|
||||
top_delta="0"
|
||||
left_pad="4">
|
||||
<button.commit_callback
|
||||
|
|
@ -1445,7 +1600,7 @@ width="403">
|
|||
<panel
|
||||
follows="all"
|
||||
background_visible="false"
|
||||
height="97"
|
||||
height="99"
|
||||
layout="topleft"
|
||||
left="0"
|
||||
title="Body Part Scale"
|
||||
|
|
@ -1455,73 +1610,121 @@ width="403">
|
|||
<slider
|
||||
decimal_digits="3"
|
||||
can_edit_text="true"
|
||||
show_text="false"
|
||||
follows="left|top"
|
||||
height="14"
|
||||
increment="0.001"
|
||||
initial_value="0"
|
||||
label="Scale X:"
|
||||
label_width="70"
|
||||
label_width="43"
|
||||
layout="topleft"
|
||||
left="10"
|
||||
left="3"
|
||||
max_val="2"
|
||||
min_val="-2"
|
||||
name="Advanced_Scale_X"
|
||||
top_pad="6"
|
||||
width="380" >
|
||||
top_pad="2"
|
||||
width="342" >
|
||||
<slider.commit_callback
|
||||
function="Poser.Advanced.ScaleSet"/>
|
||||
</slider>
|
||||
<spinner
|
||||
height="0"
|
||||
decimal_digits="2"
|
||||
follows="left|top"
|
||||
increment="0.01"
|
||||
top_pad="-19"
|
||||
left_pad="2"
|
||||
name="adv_scalex_spinner"
|
||||
min_val="-1.5"
|
||||
max_val="1.5"
|
||||
width="47">
|
||||
<spinner.commit_callback
|
||||
function="Poser.CommitSpinner"
|
||||
parameter="10"/>
|
||||
</spinner>
|
||||
<slider
|
||||
decimal_digits="3"
|
||||
can_edit_text="true"
|
||||
show_text="false"
|
||||
follows="left|top"
|
||||
height="14"
|
||||
top_pad="24"
|
||||
increment="0.001"
|
||||
initial_value="0"
|
||||
label="Scale Y:"
|
||||
label_width="70"
|
||||
label_width="43"
|
||||
layout="topleft"
|
||||
left_delta="0"
|
||||
left="3"
|
||||
max_val="2"
|
||||
min_val="-2"
|
||||
name="Advanced_Scale_Y"
|
||||
top_pad="1"
|
||||
width="380" >
|
||||
width="342" >
|
||||
<slider.commit_callback
|
||||
function="Poser.Advanced.ScaleSet"/>
|
||||
</slider>
|
||||
<spinner
|
||||
height="0"
|
||||
decimal_digits="2"
|
||||
follows="left|top"
|
||||
increment="0.01"
|
||||
top_pad="-17"
|
||||
left_pad="2"
|
||||
name="adv_scaley_spinner"
|
||||
min_val="-1.5"
|
||||
max_val="1.5"
|
||||
width="47">
|
||||
<spinner.commit_callback
|
||||
function="Poser.CommitSpinner"
|
||||
parameter="11"/>
|
||||
</spinner>
|
||||
<slider
|
||||
decimal_digits="3"
|
||||
can_edit_text="true"
|
||||
show_text="false"
|
||||
follows="left|top"
|
||||
height="14"
|
||||
top_pad="22"
|
||||
increment="0.001"
|
||||
initial_value="0"
|
||||
label="Scale Z:"
|
||||
label_width="70"
|
||||
label_width="43"
|
||||
layout="topleft"
|
||||
left_delta="0"
|
||||
left="3"
|
||||
max_val="2"
|
||||
min_val="-2"
|
||||
name="Advanced_Scale_Z"
|
||||
top_pad="1"
|
||||
width="380" >
|
||||
width="342" >
|
||||
<slider.commit_callback
|
||||
function="Poser.Advanced.ScaleSet"/>
|
||||
</slider>
|
||||
<spinner
|
||||
height="12"
|
||||
decimal_digits="2"
|
||||
follows="left|top"
|
||||
increment="0.01"
|
||||
top_pad="-15"
|
||||
left_pad="2"
|
||||
name="adv_scalez_spinner"
|
||||
min_val="-1.5"
|
||||
max_val="1.5"
|
||||
width="47">
|
||||
<spinner.commit_callback
|
||||
function="Poser.CommitSpinner"
|
||||
parameter="12"/>
|
||||
</spinner>
|
||||
<button
|
||||
height="21"
|
||||
follows="left|top"
|
||||
layout="topleft"
|
||||
label="Undo Scale Change"
|
||||
label="Undo Scale"
|
||||
image_overlay="Script_Undo"
|
||||
image_overlay_alignment="left"
|
||||
image_unselected="Toolbar_Middle_Off"
|
||||
name="undo_scale_change"
|
||||
tool_tip="Undo the last scale change"
|
||||
width="150"
|
||||
top_pad="2"
|
||||
left_delta="0">
|
||||
width="109"
|
||||
left="3"
|
||||
top_pad="5">
|
||||
<button.commit_callback
|
||||
function="Poser.UndoLastScale"/>
|
||||
</button>
|
||||
|
|
@ -1535,7 +1738,7 @@ width="403">
|
|||
image_unselected="Toolbar_Middle_Off"
|
||||
name="redo_scale_change"
|
||||
tool_tip="Redo the last scale change"
|
||||
width="110"
|
||||
width="108"
|
||||
top_delta="0"
|
||||
left_pad="4">
|
||||
<button.commit_callback
|
||||
|
|
@ -1551,7 +1754,7 @@ width="403">
|
|||
image_unselected="Toolbar_Middle_Off"
|
||||
name="reset_scales"
|
||||
tool_tip="Double click to reset scale back to original"
|
||||
width="110"
|
||||
width="109"
|
||||
top_delta="0"
|
||||
left_pad="4">
|
||||
<button.commit_callback
|
||||
|
|
|
|||
Loading…
Reference in New Issue