Poser: first pass at reinstating rotation sliders
parent
800b759cff
commit
983a0637dc
|
|
@ -165,6 +165,10 @@ bool FSFloaterPoser::postBuild()
|
||||||
mPosYSlider = getChild<LLSliderCtrl>("av_position_leftright");
|
mPosYSlider = getChild<LLSliderCtrl>("av_position_leftright");
|
||||||
mPosZSlider = getChild<LLSliderCtrl>("av_position_updown");
|
mPosZSlider = getChild<LLSliderCtrl>("av_position_updown");
|
||||||
|
|
||||||
|
mAdvRotXSlider = getChild<LLSliderCtrl>("limb_pitch_slider");
|
||||||
|
mAdvRotYSlider = getChild<LLSliderCtrl>("limb_yaw_slider");
|
||||||
|
mAdvRotZSlider = getChild<LLSliderCtrl>("limb_roll_slider");
|
||||||
|
|
||||||
mAdvPosXSlider = getChild<LLSliderCtrl>("Advanced_Position_X");
|
mAdvPosXSlider = getChild<LLSliderCtrl>("Advanced_Position_X");
|
||||||
mAdvPosYSlider = getChild<LLSliderCtrl>("Advanced_Position_Y");
|
mAdvPosYSlider = getChild<LLSliderCtrl>("Advanced_Position_Y");
|
||||||
mAdvPosZSlider = getChild<LLSliderCtrl>("Advanced_Position_Z");
|
mAdvPosZSlider = getChild<LLSliderCtrl>("Advanced_Position_Z");
|
||||||
|
|
@ -797,6 +801,25 @@ void FSFloaterPoser::onCommitSlider(const LLUICtrl* slider, const S32 id)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
case 4: // limb_pitch_slider
|
||||||
|
{
|
||||||
|
mPitchSpnr->setValue(value);
|
||||||
|
onYawPitchRollChanged();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case 5: // limb_yaw_slider
|
||||||
|
{
|
||||||
|
mYawSpnr->setValue(value);
|
||||||
|
onYawPitchRollChanged();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case 6: // limb_roll_slider
|
||||||
|
{
|
||||||
|
mRollSpnr->setValue(value);
|
||||||
|
onYawPitchRollChanged();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
case 10: // Advanced_Scale_X
|
case 10: // Advanced_Scale_X
|
||||||
{
|
{
|
||||||
mScaleXSpnr->setValue(value);
|
mScaleXSpnr->setValue(value);
|
||||||
|
|
@ -1816,10 +1839,15 @@ F32 FSFloaterPoser::clipRange(F32 value)
|
||||||
void FSFloaterPoser::onYawPitchRollChanged(bool skipUpdateTrackpad)
|
void FSFloaterPoser::onYawPitchRollChanged(bool skipUpdateTrackpad)
|
||||||
{
|
{
|
||||||
LLVector3 absoluteRotation, deltaRotation;
|
LLVector3 absoluteRotation, deltaRotation;
|
||||||
absoluteRotation.mV[VX] = (F32)mYawSpnr->getValue().asReal() * DEG_TO_RAD;
|
absoluteRotation.mV[VX] = (F32)mYawSpnr->getValue().asReal();
|
||||||
absoluteRotation.mV[VY] = (F32)mPitchSpnr->getValue().asReal() * DEG_TO_RAD;
|
absoluteRotation.mV[VY] = (F32)mPitchSpnr->getValue().asReal();
|
||||||
absoluteRotation.mV[VZ] = (F32)mRollSpnr->getValue().asReal() * DEG_TO_RAD;
|
absoluteRotation.mV[VZ] = (F32)mRollSpnr->getValue().asReal();
|
||||||
|
|
||||||
|
mAdvRotXSlider->setValue(absoluteRotation.mV[VY]);
|
||||||
|
mAdvRotYSlider->setValue(absoluteRotation.mV[VX]);
|
||||||
|
mAdvRotZSlider->setValue(absoluteRotation.mV[VZ]);
|
||||||
|
|
||||||
|
absoluteRotation *= DEG_TO_RAD;
|
||||||
deltaRotation = absoluteRotation - mLastSliderRotation;
|
deltaRotation = absoluteRotation - mLastSliderRotation;
|
||||||
mLastSliderRotation = absoluteRotation;
|
mLastSliderRotation = absoluteRotation;
|
||||||
|
|
||||||
|
|
@ -1853,6 +1881,9 @@ void FSFloaterPoser::refreshRotationSlidersAndSpinners()
|
||||||
mYawSpnr->setValue(rotation.mV[VX] *= RAD_TO_DEG);
|
mYawSpnr->setValue(rotation.mV[VX] *= RAD_TO_DEG);
|
||||||
mPitchSpnr->setValue(rotation.mV[VY] *= RAD_TO_DEG);
|
mPitchSpnr->setValue(rotation.mV[VY] *= RAD_TO_DEG);
|
||||||
mRollSpnr->setValue(rotation.mV[VZ] *= RAD_TO_DEG);
|
mRollSpnr->setValue(rotation.mV[VZ] *= RAD_TO_DEG);
|
||||||
|
mAdvRotXSlider->setValue(rotation.mV[VY]);
|
||||||
|
mAdvRotYSlider->setValue(rotation.mV[VX]);
|
||||||
|
mAdvRotZSlider->setValue(rotation.mV[VZ]);
|
||||||
}
|
}
|
||||||
|
|
||||||
void FSFloaterPoser::refreshPositionSlidersAndSpinners()
|
void FSFloaterPoser::refreshPositionSlidersAndSpinners()
|
||||||
|
|
|
||||||
|
|
@ -448,6 +448,9 @@ public:
|
||||||
LLSliderCtrl* mPosXSlider{ nullptr };
|
LLSliderCtrl* mPosXSlider{ nullptr };
|
||||||
LLSliderCtrl* mPosYSlider{ nullptr };
|
LLSliderCtrl* mPosYSlider{ nullptr };
|
||||||
LLSliderCtrl* mPosZSlider{ nullptr };
|
LLSliderCtrl* mPosZSlider{ nullptr };
|
||||||
|
LLSliderCtrl* mAdvRotXSlider{ nullptr };
|
||||||
|
LLSliderCtrl* mAdvRotYSlider{ nullptr };
|
||||||
|
LLSliderCtrl* mAdvRotZSlider{ nullptr };
|
||||||
LLSliderCtrl* mAdvPosXSlider{ nullptr };
|
LLSliderCtrl* mAdvPosXSlider{ nullptr };
|
||||||
LLSliderCtrl* mAdvPosYSlider{ nullptr };
|
LLSliderCtrl* mAdvPosYSlider{ nullptr };
|
||||||
LLSliderCtrl* mAdvPosZSlider{ nullptr };
|
LLSliderCtrl* mAdvPosZSlider{ nullptr };
|
||||||
|
|
|
||||||
|
|
@ -975,7 +975,7 @@ width="430">
|
||||||
<tab_container
|
<tab_container
|
||||||
follows="all"
|
follows="all"
|
||||||
halign="center"
|
halign="center"
|
||||||
height="235"
|
height="263"
|
||||||
layout="topleft"
|
layout="topleft"
|
||||||
name="modifier_tabs"
|
name="modifier_tabs"
|
||||||
tab_height="20"
|
tab_height="20"
|
||||||
|
|
@ -986,7 +986,7 @@ width="430">
|
||||||
width="215">
|
width="215">
|
||||||
<panel
|
<panel
|
||||||
follows="left|right|top|bottom"
|
follows="left|right|top|bottom"
|
||||||
height="290"
|
height="265"
|
||||||
background_visible="false"
|
background_visible="false"
|
||||||
layout="topleft"
|
layout="topleft"
|
||||||
mouse_opaque="false"
|
mouse_opaque="false"
|
||||||
|
|
@ -1000,9 +1000,9 @@ width="430">
|
||||||
name="limb_rotation"
|
name="limb_rotation"
|
||||||
follows="left|right|top"
|
follows="left|right|top"
|
||||||
top="2"
|
top="2"
|
||||||
height="170"
|
height="160"
|
||||||
width="170"
|
width="160"
|
||||||
left="10"
|
left="15"
|
||||||
tool_tip="Change the rotation of the currently selected body part(s). Hold Ctrl to move slow. Roll the wheel to adjust the 3rd axis. Use Shift or Alt to swap which rotations change"
|
tool_tip="Change the rotation of the currently selected body part(s). Hold Ctrl to move slow. Roll the wheel to adjust the 3rd axis. Use Shift or Alt to swap which rotations change"
|
||||||
pinch_mode="false"
|
pinch_mode="false"
|
||||||
infinite_scroll_mode="true"/>
|
infinite_scroll_mode="true"/>
|
||||||
|
|
@ -1011,75 +1011,132 @@ width="430">
|
||||||
name="limb_pitch_label"
|
name="limb_pitch_label"
|
||||||
height="10"
|
height="10"
|
||||||
layout="topleft"
|
layout="topleft"
|
||||||
left="2"
|
left="5"
|
||||||
top_pad="2"
|
top_pad="2"
|
||||||
width="57">
|
width="200">
|
||||||
Up/Down:
|
Up/Down:
|
||||||
</text>
|
</text>
|
||||||
|
<slider
|
||||||
|
label=""
|
||||||
|
label_width="0"
|
||||||
|
follows="left|top"
|
||||||
|
height="14"
|
||||||
|
increment="0.1"
|
||||||
|
initial_value="0"
|
||||||
|
layout="topleft"
|
||||||
|
show_text="false"
|
||||||
|
left="3"
|
||||||
|
min_val="-180"
|
||||||
|
max_val="180"
|
||||||
|
name="limb_pitch_slider"
|
||||||
|
top_pad="2"
|
||||||
|
width="130" >
|
||||||
|
<slider.commit_callback
|
||||||
|
function="Poser.CommitSlider"
|
||||||
|
parameter="4"/>
|
||||||
|
</slider>
|
||||||
|
<spinner
|
||||||
|
height="16"
|
||||||
|
decimal_digits="2"
|
||||||
|
follows="left|top"
|
||||||
|
increment="0.01"
|
||||||
|
top_pad="-19"
|
||||||
|
left_pad="0"
|
||||||
|
name="limb_pitch_spinner"
|
||||||
|
min_val="-180"
|
||||||
|
max_val="180"
|
||||||
|
width="53">
|
||||||
|
<spinner.commit_callback
|
||||||
|
function="Poser.CommitSpinner"
|
||||||
|
parameter="4"/>
|
||||||
|
</spinner>
|
||||||
<text
|
<text
|
||||||
follows="left|top"
|
follows="left|top"
|
||||||
name="limb_yaw_label"
|
name="limb_yaw_label"
|
||||||
height="10"
|
height="10"
|
||||||
layout="topleft"
|
layout="topleft"
|
||||||
left_pad="5"
|
left="5"
|
||||||
top_pad="-10"
|
top_pad="2"
|
||||||
width="57">
|
width="200">
|
||||||
Left/Right:
|
Left/Right:
|
||||||
</text>
|
</text>
|
||||||
|
<slider
|
||||||
|
label=""
|
||||||
|
label_width="0"
|
||||||
|
follows="left|top"
|
||||||
|
height="14"
|
||||||
|
increment="0.1"
|
||||||
|
initial_value="0"
|
||||||
|
layout="topleft"
|
||||||
|
show_text="false"
|
||||||
|
left="3"
|
||||||
|
min_val="-180"
|
||||||
|
max_val="180"
|
||||||
|
name="limb_yaw_slider"
|
||||||
|
top_pad="2"
|
||||||
|
width="130" >
|
||||||
|
<slider.commit_callback
|
||||||
|
function="Poser.CommitSlider"
|
||||||
|
parameter="5"/>
|
||||||
|
</slider>
|
||||||
|
<spinner
|
||||||
|
height="16"
|
||||||
|
decimal_digits="2"
|
||||||
|
follows="left|top"
|
||||||
|
increment="0.01"
|
||||||
|
top_pad="-19"
|
||||||
|
left_pad="0"
|
||||||
|
name="limb_yaw_spinner"
|
||||||
|
min_val="-180"
|
||||||
|
max_val="180"
|
||||||
|
width="53">
|
||||||
|
<spinner.commit_callback
|
||||||
|
function="Poser.CommitSpinner"
|
||||||
|
parameter="5"/>
|
||||||
|
</spinner>
|
||||||
<text
|
<text
|
||||||
follows="left|top"
|
follows="left|top"
|
||||||
name="limb_roll_label"
|
name="limb_roll_label"
|
||||||
height="10"
|
height="10"
|
||||||
layout="topleft"
|
layout="topleft"
|
||||||
left_pad="5"
|
left="5"
|
||||||
top_pad="-10"
|
top_pad="2"
|
||||||
width="200">
|
width="200">
|
||||||
Roll:
|
Roll:
|
||||||
</text>
|
</text>
|
||||||
|
<slider
|
||||||
|
label=""
|
||||||
|
label_width="0"
|
||||||
|
follows="left|top"
|
||||||
|
height="14"
|
||||||
|
increment="0.1"
|
||||||
|
initial_value="0"
|
||||||
|
layout="topleft"
|
||||||
|
show_text="false"
|
||||||
|
left="3"
|
||||||
|
min_val="-180"
|
||||||
|
max_val="180"
|
||||||
|
name="limb_roll_slider"
|
||||||
|
top_pad="2"
|
||||||
|
width="130" >
|
||||||
|
<slider.commit_callback
|
||||||
|
function="Poser.CommitSlider"
|
||||||
|
parameter="6"/>
|
||||||
|
</slider>
|
||||||
<spinner
|
<spinner
|
||||||
height="16"
|
height="16"
|
||||||
decimal_digits="2"
|
decimal_digits="2"
|
||||||
follows="left|top"
|
follows="left|top"
|
||||||
increment="0.1"
|
increment="0.01"
|
||||||
left="2"
|
top_pad="-19"
|
||||||
top_pad="5"
|
left_pad="0"
|
||||||
name="limb_pitch_spinner"
|
name="limb_roll_spinner"
|
||||||
min_val="-180"
|
min_val="-180"
|
||||||
max_val="180"
|
max_val="180"
|
||||||
width="57">
|
width="53">
|
||||||
<spinner.commit_callback
|
<spinner.commit_callback
|
||||||
function="Poser.CommitSpinner"
|
function="Poser.CommitSpinner"
|
||||||
parameter="4"/>
|
parameter="6"/>
|
||||||
</spinner>
|
|
||||||
<spinner
|
|
||||||
height="16"
|
|
||||||
decimal_digits="2"
|
|
||||||
follows="left|top"
|
|
||||||
increment="0.1"
|
|
||||||
top_pad="-16"
|
|
||||||
left_pad="5"
|
|
||||||
name="limb_yaw_spinner"
|
|
||||||
min_val="-180"
|
|
||||||
max_val="180"
|
|
||||||
width="57">
|
|
||||||
<spinner.commit_callback
|
|
||||||
function="Poser.CommitSpinner"
|
|
||||||
parameter="5"/>
|
|
||||||
</spinner>
|
|
||||||
<spinner
|
|
||||||
height="16"
|
|
||||||
decimal_digits="2"
|
|
||||||
follows="left|top"
|
|
||||||
increment="0.1"
|
|
||||||
top_pad="-16"
|
|
||||||
left_pad="5"
|
|
||||||
name="limb_roll_spinner"
|
|
||||||
min_val="-180"
|
|
||||||
max_val="180"
|
|
||||||
width="57">
|
|
||||||
<spinner.commit_callback
|
|
||||||
function="Poser.CommitSpinner"
|
|
||||||
parameter="6"/>
|
|
||||||
</spinner>
|
</spinner>
|
||||||
</panel>
|
</panel>
|
||||||
<panel
|
<panel
|
||||||
|
|
@ -1468,12 +1525,13 @@ width="430">
|
||||||
</button>
|
</button>
|
||||||
<button
|
<button
|
||||||
follows="left|top"
|
follows="left|top"
|
||||||
height="21"
|
height="18"
|
||||||
layout="topleft"
|
layout="topleft"
|
||||||
label="Copy L > R"
|
label="Copy L > R"
|
||||||
name="button_symmetrize_left_to_right"
|
name="button_symmetrize_left_to_right"
|
||||||
tool_tip="Click to copy change from left side to right side."
|
tool_tip="Click to copy change from left side to right side."
|
||||||
left="14"
|
left="14"
|
||||||
|
top_pad="0"
|
||||||
width="70" >
|
width="70" >
|
||||||
<button.commit_callback
|
<button.commit_callback
|
||||||
function="Poser.Symmetrize"
|
function="Poser.Symmetrize"
|
||||||
|
|
@ -1481,7 +1539,7 @@ width="430">
|
||||||
</button>
|
</button>
|
||||||
<button
|
<button
|
||||||
follows="left|top"
|
follows="left|top"
|
||||||
height="21"
|
height="19"
|
||||||
layout="topleft"
|
layout="topleft"
|
||||||
label="Copy R > L"
|
label="Copy R > L"
|
||||||
name="button_symmetrize_right_to_left"
|
name="button_symmetrize_right_to_left"
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue