diff --git a/indra/newview/llpanelobject.cpp b/indra/newview/llpanelobject.cpp index c39f4356f639a2197d1391783f516fd222b49559..67639ac5fae391e114d844cf30cb1bc67e132eab 100644 --- a/indra/newview/llpanelobject.cpp +++ b/indra/newview/llpanelobject.cpp @@ -84,6 +84,20 @@ enum { MI_TUBE, MI_RING, MI_SCULPT, + MI_PATH_LINE_PROFILE_CIRCLE_HALF, + MI_PATH_CIRCLE_PROFILE_CIRCLE_HALF, + MI_PATH_CIRCLE2_PROFILE_SQUARE, + MI_PATH_CIRCLE2_PROFILE_TRI, + MI_PATH_CIRCLE2_PROFILE_CIRCLE, + MI_PATH_CIRCLE2_PROFILE_CIRCLE_HALF, + MI_PATH_TEST_PROFILE_SQUARE, + MI_PATH_TEST_PROFILE_TRI, + MI_PATH_TEST_PROFILE_CIRCLE, + MI_PATH_TEST_PROFILE_CIRCLE_HALF, + MI_PATH_33_PROFILE_CIRCLE, + MI_PATH_33_PROFILE_SQUARE, + MI_PATH_33_PROFILE_TRIANGLE, + MI_PATH_33_PROFILE_HALFCIRCLE, MI_NONE, MI_VOLUME_COUNT }; @@ -631,6 +645,54 @@ void LLPanelObject::getState( ) { selected_item = MI_TUBE; } + else if ( path == LL_PCODE_PATH_CIRCLE2 && profile == LL_PCODE_PROFILE_EQUALTRI ) + { + selected_item = MI_PATH_CIRCLE2_PROFILE_TRI; + } + else if ( path == LL_PCODE_PATH_CIRCLE2 && profile == LL_PCODE_PROFILE_SQUARE ) + { + selected_item = MI_PATH_CIRCLE2_PROFILE_SQUARE; + } + else if ( path == LL_PCODE_PATH_CIRCLE2 && profile == LL_PCODE_PROFILE_CIRCLE_HALF ) + { + selected_item = MI_PATH_CIRCLE2_PROFILE_CIRCLE_HALF; + } + else if ( path == LL_PCODE_PATH_TEST && profile == LL_PCODE_PROFILE_SQUARE ) + { + selected_item = MI_PATH_TEST_PROFILE_SQUARE; + } + else if ( path == LL_PCODE_PATH_TEST && profile == LL_PCODE_PROFILE_EQUALTRI ) + { + selected_item = MI_PATH_TEST_PROFILE_TRI; + } + else if ( path == LL_PCODE_PATH_TEST && profile == LL_PCODE_PROFILE_CIRCLE ) + { + selected_item = MI_PATH_TEST_PROFILE_CIRCLE; + } + else if ( path == LL_PCODE_PATH_TEST && profile == LL_PCODE_PROFILE_CIRCLE_HALF ) + { + selected_item = MI_PATH_TEST_PROFILE_CIRCLE_HALF; + } + else if ( path == LL_PCODE_PATH_LINE && profile == LL_PCODE_PROFILE_CIRCLE_HALF ) + { + selected_item = MI_PATH_LINE_PROFILE_CIRCLE_HALF; + } + else if ( path == LL_PCODE_PATH_CIRCLE_33 && profile == LL_PCODE_PROFILE_CIRCLE ) + { + selected_item = MI_PATH_33_PROFILE_CIRCLE; + } + else if ( path == LL_PCODE_PATH_CIRCLE_33 && profile == LL_PCODE_PROFILE_SQUARE ) + { + selected_item = MI_PATH_33_PROFILE_SQUARE; + } + else if ( path == LL_PCODE_PATH_CIRCLE_33 && profile == LL_PCODE_PROFILE_ISOTRI ) + { + selected_item = MI_PATH_33_PROFILE_TRIANGLE; + } + else if ( path == LL_PCODE_PATH_CIRCLE_33 && profile == LL_PCODE_PROFILE_CIRCLE_HALF ) + { + selected_item = MI_PATH_33_PROFILE_HALFCIRCLE; + } else { LL_INFOS() << "Unknown path " << (S32) path << " profile " << (S32) profile << " in getState" << LL_ENDL; @@ -924,12 +986,24 @@ void LLPanelObject::getState( ) default: if (editable) { - mSpinScaleX->set( 1.f - scale_x ); - mSpinScaleY->set( 1.f - scale_y ); - mSpinScaleX->setMinValue(-1.f); - mSpinScaleX->setMaxValue(1.f); - mSpinScaleY->setMinValue(-1.f); - mSpinScaleY->setMaxValue(1.f); + if (selected_item == MI_BOX || selected_item == MI_CYLINDER || selected_item == MI_PRISM) + { + mSpinScaleX->set( 1.f - scale_x ); + mSpinScaleY->set( 1.f - scale_y ); + mSpinScaleX->setMinValue(-1.f); + mSpinScaleX->setMaxValue(1.f); + mSpinScaleY->setMinValue(-1.f); + mSpinScaleY->setMaxValue(1.f); + } + else + { + mSpinScaleX->set( scale_x ); + mSpinScaleY->set( scale_x ); + mSpinScaleX->setMinValue(-4000.f); + mSpinScaleX->setMaxValue(4000.f); + mSpinScaleY->setMinValue(-4000.f); + mSpinScaleY->setMaxValue(4000.f); + } // Torus' Hole Size is Box/Cyl/Prism's Taper calcp->setVar(LLCalc::X_TAPER, 1.f - scale_x); @@ -1325,6 +1399,76 @@ void LLPanelObject::getVolumeParams(LLVolumeParams& volume_params) path = LL_PCODE_PATH_CIRCLE; break; + case MI_PATH_LINE_PROFILE_CIRCLE_HALF: + profile = LL_PCODE_PROFILE_CIRCLE_HALF; + path = LL_PCODE_PATH_LINE; + break; + + case MI_PATH_CIRCLE_PROFILE_CIRCLE_HALF: + profile = LL_PCODE_PROFILE_CIRCLE_HALF; + path = LL_PCODE_PATH_CIRCLE; + break; + + case MI_PATH_CIRCLE2_PROFILE_SQUARE: + profile = LL_PCODE_PROFILE_SQUARE; + path = LL_PCODE_PATH_CIRCLE2; + break; + + case MI_PATH_CIRCLE2_PROFILE_TRI: + profile = LL_PCODE_PROFILE_EQUALTRI; + path = LL_PCODE_PATH_CIRCLE2; + break; + + case MI_PATH_CIRCLE2_PROFILE_CIRCLE: + profile = LL_PCODE_PROFILE_CIRCLE; + path = LL_PCODE_PATH_CIRCLE2; + break; + + case MI_PATH_CIRCLE2_PROFILE_CIRCLE_HALF: + profile = LL_PCODE_PROFILE_CIRCLE_HALF; + path = LL_PCODE_PATH_CIRCLE2; + break; + + case MI_PATH_TEST_PROFILE_SQUARE: + profile = LL_PCODE_PROFILE_SQUARE; + path = LL_PCODE_PATH_TEST; + break; + + case MI_PATH_TEST_PROFILE_TRI: + profile = LL_PCODE_PROFILE_EQUALTRI; + path = LL_PCODE_PATH_TEST; + break; + + case MI_PATH_TEST_PROFILE_CIRCLE: + profile = LL_PCODE_PROFILE_CIRCLE; + path = LL_PCODE_PATH_TEST; + break; + + case MI_PATH_TEST_PROFILE_CIRCLE_HALF: + profile = LL_PCODE_PROFILE_CIRCLE_HALF; + path = LL_PCODE_PATH_TEST; + break; + + case MI_PATH_33_PROFILE_CIRCLE: + profile = LL_PCODE_PROFILE_CIRCLE; + path = LL_PCODE_PATH_CIRCLE_33; + break; + + case MI_PATH_33_PROFILE_SQUARE: + profile = LL_PCODE_PROFILE_SQUARE; + path = LL_PCODE_PATH_CIRCLE_33; + break; + + case MI_PATH_33_PROFILE_TRIANGLE: + profile = LL_PCODE_PROFILE_ISOTRI; + path = LL_PCODE_PATH_CIRCLE_33; + break; + + case MI_PATH_33_PROFILE_HALFCIRCLE: + profile = LL_PCODE_PROFILE_CIRCLE_HALF; + path = LL_PCODE_PATH_CIRCLE_33; + break; + default: LL_WARNS() << "Unknown base type " << selected_type << " in getVolumeParams()" << LL_ENDL; diff --git a/indra/newview/skins/default/xui/en/floater_tools.xml b/indra/newview/skins/default/xui/en/floater_tools.xml index 64d3bb2de48448285866ea38475eece5527328c7..fcdaa8e420831dd8d297cd6b108769ca73c063e5 100644 --- a/indra/newview/skins/default/xui/en/floater_tools.xml +++ b/indra/newview/skins/default/xui/en/floater_tools.xml @@ -1657,6 +1657,62 @@ even though the user gets a free copy. label="Sculpted" name="Sculpted" value="Sculpted" /> + <combo_box.item + name="PathLineProfileHalfCircle" + value="PathLineProfileHalfCircle" + label="Line->Half-Circle" /> + <combo_box.item + name="PathCircleProfileHalfCircle" + value="PathCircleProfileHalfCircle" + label="Circle->Half-Circle" /> + <combo_box.item + name="PathCircle2ProfileSquare" + value="PathCircle2ProfileSquare" + label="Circle2->Square" /> + <combo_box.item + name="PathCircle2ProfileTriangle" + value="PathCircle2ProfileTriangle" + label="Circle2->Triangle" /> + <combo_box.item + name="PathCircle2ProfileCircle" + value="PathCircle2ProfileCircle" + label="Circle2->Circle" /> + <combo_box.item + name="PathCircle2ProfileHalfCircle" + value="PathCircle2ProfileHalfCircle" + label="Circle2->Half-Circle" /> + <combo_box.item + name="PathTestProfileSquare" + value="PathTestProfileSquare" + label="Test->Square" /> + <combo_box.item + name="PathTestProfileTriangle" + value="PathTestProfileTriangle" + label="Test->Triangle" /> + <combo_box.item + name="PathTestProfileCircle" + value="PathTestProfileCircle" + label="Test->Circle" /> + <combo_box.item + name="PathTestProfileHalfCircle" + value="PathTestProfileHalfCircle" + label="Test->Half-Circle" /> + <combo_box.item + name="Path33Profile0" + value="Path33Profile0" + label="33->Circle" /> + <combo_box.item + name="Path33Profile1" + value="Path33Profile1" + label="33->Square" /> + <combo_box.item + name="Path33Profile2" + value="Path33Profile2" + label="33->Triangle" /> + <combo_box.item + name="Path33Profile5" + value="Path33Profile5" + label="33->HalfCircle" /> </combo_box> <text type="string"