From 57b3a6789a9b08f1472a4d71e1fe285c0256712f Mon Sep 17 00:00:00 2001 From: Kadah Date: Wed, 22 Jun 2011 23:52:56 -0700 Subject: [PATCH] Build Improvements: Phoenix's additional path profiles and transforms types --- indra/llmath/llvolume.h | 3 + indra/newview/llpanelobject.cpp | 200 ++++++++++++++++-- .../skins/default/xui/en/floater_tools.xml | 58 +++++ 3 files changed, 244 insertions(+), 17 deletions(-) diff --git a/indra/llmath/llvolume.h b/indra/llmath/llvolume.h index 3e41839530..ca16c0456c 100644 --- a/indra/llmath/llvolume.h +++ b/indra/llmath/llvolume.h @@ -148,6 +148,9 @@ const U8 LL_PCODE_PATH_IGNORE = 0x00; const U8 LL_PCODE_PATH_MIN = 0x01; // min/max needs to be >> 4 of real min/max const U8 LL_PCODE_PATH_LINE = 0x10; const U8 LL_PCODE_PATH_CIRCLE = 0x20; +//<-- Working33 by Gregory Maurer +const U8 LL_PCODE_PATH_CIRCLE_33 = 0x21; +//Working33 --> const U8 LL_PCODE_PATH_CIRCLE2 = 0x30; const U8 LL_PCODE_PATH_TEST = 0x40; const U8 LL_PCODE_PATH_FLEXIBLE = 0x80; diff --git a/indra/newview/llpanelobject.cpp b/indra/newview/llpanelobject.cpp index 3764512d52..702415c72e 100644 --- a/indra/newview/llpanelobject.cpp +++ b/indra/newview/llpanelobject.cpp @@ -91,6 +91,22 @@ 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, + //<-- Working33 by Gregory Maurer + MI_PATH_33_PROFILE_CIRCLE, + MI_PATH_33_PROFILE_SQUARE, + MI_PATH_33_PROFILE_TRIANGLE, + MI_PATH_33_PROFILE_HALFCIRCLE, + //Working33 --> MI_NONE, MI_VOLUME_COUNT }; @@ -748,6 +764,56 @@ 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; + } + //<-- Working33 by Gregory Maurer + 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; + } + //Working33 --> else { llinfos << "Unknown path " << (S32) path << " profile " << (S32) profile << " in getState" << llendl; @@ -872,6 +938,8 @@ void LLPanelObject::getState( ) // Radius offset. F32 radius_offset = volume_params.getRadiusOffset(); // Limit radius offset, based on taper and hole size y. +//KC: Phoenix capability +#if 0 F32 radius_mag = fabs(radius_offset); F32 hole_y_mag = fabs(scale_y); F32 taper_y_mag = fabs(taper_y); @@ -896,6 +964,7 @@ void LLPanelObject::getState( ) radius_offset = max_radius_mag; } } +#endif mSpinRadiusOffset->set( radius_offset); calcp->setVar(LLCalc::RADIUS_OFFSET, radius_offset); @@ -907,6 +976,8 @@ void LLPanelObject::getState( ) // Skew F32 skew = volume_params.getSkew(); // Limit skew, based on revolutions hole size x. +//KC: Phoenix capability +#if 0 F32 skew_mag= fabs(skew); F32 min_skew_mag = 1.0f - 1.0f / (revolutions * scale_x + 1.0f); // Discontinuity; A revolution of 1 allows skews below 0.5. @@ -926,6 +997,7 @@ void LLPanelObject::getState( ) skew = min_skew_mag; } } +#endif mSpinSkew->set( skew ); calcp->setVar(LLCalc::SKEW, skew); } @@ -939,11 +1011,12 @@ void LLPanelObject::getState( ) BOOL top_shear_x_visible = TRUE; BOOL top_shear_y_visible = TRUE; BOOL twist_visible = TRUE; - BOOL advanced_cut_visible = FALSE; - BOOL taper_visible = FALSE; - BOOL skew_visible = FALSE; - BOOL radius_offset_visible = FALSE; - BOOL revolutions_visible = FALSE; + //KC: Phoenix capability, allow all transforms + BOOL advanced_cut_visible = TRUE; + BOOL taper_visible = TRUE; + BOOL skew_visible = TRUE; + BOOL radius_offset_visible = TRUE; + BOOL revolutions_visible = TRUE; BOOL sculpt_texture_visible = FALSE; F32 twist_min = OBJECT_TWIST_LINEAR_MIN; F32 twist_max = OBJECT_TWIST_LINEAR_MAX; @@ -957,11 +1030,11 @@ void LLPanelObject::getState( ) switch (selected_item) { case MI_SPHERE: - top_size_x_visible = FALSE; - top_size_y_visible = FALSE; - top_shear_x_visible = FALSE; - top_shear_y_visible = FALSE; - //twist_visible = FALSE; + top_size_x_visible = TRUE; + top_size_y_visible = TRUE; + top_shear_x_visible = TRUE; + top_shear_y_visible = TRUE; + twist_visible = TRUE; advanced_cut_visible = TRUE; advanced_is_dimple = TRUE; twist_min = OBJECT_TWIST_MIN; @@ -1030,6 +1103,10 @@ void LLPanelObject::getState( ) mSpinScaleY->set( scale_y ); calcp->setVar(LLCalc::X_HOLE, scale_x); calcp->setVar(LLCalc::Y_HOLE, scale_y); + mSpinScaleX->setMinValue(0.0f); + mSpinScaleX->setMaxValue(1.0f); + mSpinScaleY->setMinValue(0.0f); + mSpinScaleY->setMaxValue(1.0f); break; case MI_TORUS: case MI_TUBE: @@ -1046,12 +1123,20 @@ 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); + F32 tmp_scale_x = scale_x; + F32 tmp_scale_y = scale_y; + if ( selected_item == MI_BOX || selected_item == MI_CYLINDER || selected_item == MI_PRISM) + { + tmp_scale_x = 1.f - tmp_scale_x; + tmp_scale_y = 1.f - tmp_scale_y; + } + mSpinScaleX->set( tmp_scale_x ); + mSpinScaleY->set( tmp_scale_y ); + 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); calcp->setVar(LLCalc::Y_TAPER, 1.f - scale_y); @@ -1063,6 +1148,8 @@ void LLPanelObject::getState( ) } // Check if we need to limit the hollow based on the hole type. +//KC: Phoenix capability +#if 0 if ( selected_hole == MI_HOLE_SQUARE && ( selected_item == MI_CYLINDER || selected_item == MI_TORUS || selected_item == MI_PRISM || selected_item == MI_RING || @@ -1072,9 +1159,10 @@ void LLPanelObject::getState( ) mSpinHollow->setMaxValue(70.f); } else +#endif { mSpinHollow->setMinValue(0.f); - mSpinHollow->setMaxValue(95.f); + mSpinHollow->setMaxValue(100.f); } // Update field enablement @@ -1470,6 +1558,78 @@ 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; + +//<-- Working33 by Gregory Maurer + 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; +//Working33 --> + default: llwarns << "Unknown base type " << selected_type << " in getVolumeParams()" << llendl; @@ -1560,6 +1720,8 @@ void LLPanelObject::getVolumeParams(LLVolumeParams& volume_params) // Hollowness F32 hollow = mSpinHollow->get() / 100.f; +//KC: Phoenix capability +#if 0 if ( selected_hole == MI_HOLE_SQUARE && ( selected_type == MI_CYLINDER || selected_type == MI_TORUS || selected_type == MI_PRISM || selected_type == MI_RING || @@ -1567,6 +1729,7 @@ void LLPanelObject::getVolumeParams(LLVolumeParams& volume_params) { if (hollow > 0.7f) hollow = 0.7f; } +#endif volume_params.setHollow( hollow ); @@ -1610,6 +1773,8 @@ void LLPanelObject::getVolumeParams(LLVolumeParams& volume_params) // Revolutions F32 revolutions = mSpinRevolutions->get(); +//KC: Phoenix capability +#if 0 if ( selected_type == MI_SPHERE ) { // Snap values to valid sphere parameters. @@ -1680,6 +1845,7 @@ void LLPanelObject::getVolumeParams(LLVolumeParams& volume_params) } } } +#endif volume_params.setRatio( scale_x, scale_y ); volume_params.setSkew(skew); diff --git a/indra/newview/skins/default/xui/en/floater_tools.xml b/indra/newview/skins/default/xui/en/floater_tools.xml index ae73d081c3..4fabe35e32 100644 --- a/indra/newview/skins/default/xui/en/floater_tools.xml +++ b/indra/newview/skins/default/xui/en/floater_tools.xml @@ -1687,6 +1687,64 @@ even though the user gets a free copy. label="Sculpted" name="Sculpted" value="Sculpted" /> + + + + + + + + + + + + + + + +