Build Improvements: Phoenix's additional path profiles and transforms types

meow-7.2.2
Kadah 2011-06-22 23:52:56 -07:00
parent 7d26daa6bf
commit 57b3a6789a
3 changed files with 244 additions and 17 deletions

View File

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

View File

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

View File

@ -1687,6 +1687,64 @@ even though the user gets a free copy.
label="Sculpted"
name="Sculpted"
value="Sculpted" />
<combo_item
name="PathLineProfileHalfCircle"
value="PathLineProfileHalfCircle"
label="Line->Half-Circle" />
<combo_item
name="PathCircleProfileHalfCircle"
value="PathCircleProfileHalfCircle"
label="Circle->Half-Circle" />
<combo_item
name="PathCircle2ProfileSquare"
value="PathCircle2ProfileSquare"
label="Circle2->Square" />
<combo_item
name="PathCircle2ProfileTriangle"
value="PathCircle2ProfileTriangle"
label="Circle2->Triangle" />
<combo_item
name="PathCircle2ProfileCircle"
value="PathCircle2ProfileCircle"
label="Circle2->Circle" />
<combo_item
name="PathCircle2ProfileHalfCircle"
value="PathCircle2ProfileHalfCircle"
label="Circle2->Half-Circle" />
<combo_item
name="PathTestProfileSquare"
value="PathTestProfileSquare"
label="Test->Square" />
<combo_item
name="PathTestProfileTriangle"
value="PathTestProfileTriangle"
label="Test->Triangle" />
<combo_item
name="PathTestProfileCircle"
value="PathTestProfileCircle"
label="Test->Circle" />
<combo_item
name="PathTestProfileHalfCircle"
value="PathTestProfileHalfCircle"
label="Test->Half-Circle" />
<!-- Working33 by Gregory Maurer -->
<combo_item
name="Path33Profile0"
value="Path33Profile0"
label="33->Circle" />
<combo_item
name="Path33Profile1"
value="Path33Profile1"
label="33->Square" />
<combo_item
name="Path33Profile2"
value="Path33Profile2"
label="33->Triangle" />
<combo_item
name="Path33Profile5"
value="Path33Profile5"
label="33->HalfCircle" />
<!-- End Working33 by Gregory Maurer -->
</combo_box>
<combo_box
height="19"