Added extra shapes and removed some limits.

This commit is contained in:
phr0z3nt04st
2010-06-01 17:47:28 -05:00
parent 7184cd5462
commit 01ed71cbcf
2 changed files with 227 additions and 24 deletions

View File

@@ -87,6 +87,19 @@ enum {
MI_TUBE,
MI_RING,
MI_SCULPT,
// <edit>
MI_HEMICYLINDER,
MI_SPIRAL_CIRCLE,
MI_SPIRAL_SQUARE,
MI_SPIRAL_TRIANGLE,
MI_SPIRAL_SEMICIRCLE,
MI_TEST_CYLINDER,
MI_TEST_BOX,
MI_TEST_PRISM,
MI_TEST_HEMICYLINDER,
// </edit>
MI_NONE,
MI_VOLUME_COUNT
};
@@ -676,10 +689,12 @@ void LLPanelObject::getState( )
{
selected_item = MI_PRISM;
}
else if (path == LL_PCODE_PATH_FLEXIBLE) // shouldn't happen
{
selected_item = MI_CYLINDER; // reasonable default
}
// <edit> that was messin up my hemicylinder
//else if (path == LL_PCODE_PATH_FLEXIBLE) // shouldn't happen
//{
// selected_item = MI_CYLINDER; // reasonable default
//}
// </edit>
else if ( path == LL_PCODE_PATH_CIRCLE && profile == LL_PCODE_PROFILE_CIRCLE && scale_y > 0.75f)
{
selected_item = MI_SPHERE;
@@ -692,11 +707,13 @@ void LLPanelObject::getState( )
{
selected_item = MI_SPHERE;
}
else if ( path == LL_PCODE_PATH_CIRCLE2 && profile == LL_PCODE_PROFILE_CIRCLE )
{
// Spirals aren't supported. Make it into a sphere. JC
selected_item = MI_SPHERE;
}
// <edit> spirals are supported by me
//else if ( path == LL_PCODE_PATH_CIRCLE2 && profile == LL_PCODE_PROFILE_CIRCLE )
//{
// // Spirals aren't supported. Make it into a sphere. JC
// selected_item = MI_SPHERE;
//}
// </edit>
else if ( path == LL_PCODE_PATH_CIRCLE && profile == LL_PCODE_PROFILE_EQUALTRI )
{
selected_item = MI_RING;
@@ -705,6 +722,63 @@ void LLPanelObject::getState( )
{
selected_item = MI_TUBE;
}
// <edit>
else if( linear_path && profile == LL_PCODE_PROFILE_CIRCLE_HALF)
{
selected_item = MI_HEMICYLINDER;
}
// Spirals
else if( path == LL_PCODE_PATH_CIRCLE2 && profile == LL_PCODE_PROFILE_CIRCLE )
{
selected_item = MI_SPIRAL_CIRCLE;
}
else if( path == LL_PCODE_PATH_CIRCLE2 && profile == LL_PCODE_PROFILE_SQUARE )
{
selected_item = MI_SPIRAL_SQUARE;
}
else if( path == LL_PCODE_PATH_CIRCLE2 && profile == LL_PCODE_PROFILE_ISOTRI )
{
selected_item = MI_SPIRAL_TRIANGLE;
}
else if( path == LL_PCODE_PATH_CIRCLE2 && profile == LL_PCODE_PROFILE_EQUALTRI )
{
selected_item = MI_SPIRAL_TRIANGLE;
}
else if( path == LL_PCODE_PATH_CIRCLE2 && profile == LL_PCODE_PROFILE_RIGHTTRI )
{
selected_item = MI_SPIRAL_TRIANGLE;
}
else if( path == LL_PCODE_PATH_CIRCLE2 && profile == LL_PCODE_PROFILE_CIRCLE_HALF )
{
selected_item = MI_SPIRAL_SEMICIRCLE;
}
// Test path
else if( path == LL_PCODE_PATH_TEST && profile == LL_PCODE_PROFILE_CIRCLE )
{
selected_item = MI_TEST_CYLINDER;
}
else if( path == LL_PCODE_PATH_TEST && profile == LL_PCODE_PROFILE_SQUARE )
{
selected_item = MI_TEST_BOX;
}
else if( path == LL_PCODE_PATH_TEST && profile == LL_PCODE_PROFILE_ISOTRI )
{
selected_item = MI_TEST_PRISM;
}
else if( path == LL_PCODE_PATH_TEST && profile == LL_PCODE_PROFILE_EQUALTRI )
{
selected_item = MI_TEST_PRISM;
}
else if( path == LL_PCODE_PATH_TEST && profile == LL_PCODE_PROFILE_RIGHTTRI )
{
selected_item = MI_TEST_PRISM;
}
else if( path == LL_PCODE_PATH_TEST && profile == LL_PCODE_PROFILE_CIRCLE_HALF )
{
selected_item = MI_TEST_HEMICYLINDER;
}
// </edit>
else
{
llinfos << "Unknown path " << (S32) path << " profile " << (S32) profile << " in getState" << llendl;
@@ -911,17 +985,47 @@ 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;
// <edit>
case MI_SPIRAL_CIRCLE:
case MI_SPIRAL_SQUARE:
case MI_SPIRAL_TRIANGLE:
case MI_SPIRAL_SEMICIRCLE:
//top_size_x_visible = FALSE;
//top_size_y_visible = FALSE;
//top_shear_x_visible = FALSE;
//top_shear_y_visible = FALSE;
//advanced_cut_visible = TRUE;
//advanced_is_dimple = TRUE;
//twist_min = OBJECT_TWIST_MIN;
//twist_max = OBJECT_TWIST_MAX;
//twist_inc = OBJECT_TWIST_INC;
// Just like the others except no radius
size_is_hole = TRUE;
skew_visible = TRUE;
advanced_cut_visible = TRUE;
advanced_is_dimple = TRUE;
taper_visible = TRUE;
radius_offset_visible = FALSE;
revolutions_visible = TRUE;
twist_min = OBJECT_TWIST_MIN;
twist_max = OBJECT_TWIST_MAX;
twist_inc = OBJECT_TWIST_INC;
break;
case MI_TEST_BOX:
case MI_TEST_CYLINDER:
case MI_TEST_PRISM:
case MI_TEST_HEMICYLINDER:
cut_visible = FALSE;
advanced_cut_visible = TRUE;
taper_visible = FALSE;
radius_offset_visible = FALSE;
revolutions_visible = FALSE;
top_shear_x_visible = FALSE;
top_shear_y_visible = FALSE;
twist_min = OBJECT_TWIST_MIN;
twist_max = OBJECT_TWIST_MAX;
twist_inc = OBJECT_TWIST_INC;
// </edit>
break;
case MI_TORUS:
case MI_TUBE:
@@ -979,7 +1083,10 @@ void LLPanelObject::getState( )
// Check if we need to change top size/hole size params.
switch (selected_item)
{
case MI_SPHERE:
// <edit>
//case MI_SPHERE:
// Sphere fall through to default: set scale_x min/max, dunno why
// </edit>
case MI_TORUS:
case MI_TUBE:
case MI_RING:
@@ -1410,7 +1517,47 @@ void LLPanelObject::getVolumeParams(LLVolumeParams& volume_params)
profile = LL_PCODE_PROFILE_CIRCLE;
path = LL_PCODE_PATH_CIRCLE;
break;
// <edit>
case MI_HEMICYLINDER:
profile = LL_PCODE_PROFILE_CIRCLE_HALF;
path = LL_PCODE_PATH_LINE;
break;
// Spirals
case MI_SPIRAL_CIRCLE:
profile = LL_PCODE_PROFILE_CIRCLE;
path = LL_PCODE_PATH_CIRCLE2;
break;
case MI_SPIRAL_SQUARE:
profile = LL_PCODE_PROFILE_SQUARE;
path = LL_PCODE_PATH_CIRCLE2;
break;
case MI_SPIRAL_TRIANGLE:
profile = LL_PCODE_PROFILE_EQUALTRI;
path = LL_PCODE_PATH_CIRCLE2;
break;
case MI_SPIRAL_SEMICIRCLE:
profile = LL_PCODE_PROFILE_CIRCLE_HALF;
path = LL_PCODE_PATH_CIRCLE2;
break;
// Test path
case MI_TEST_CYLINDER:
profile = LL_PCODE_PROFILE_CIRCLE;
path = LL_PCODE_PATH_TEST;
break;
case MI_TEST_BOX:
profile = LL_PCODE_PROFILE_SQUARE;
path = LL_PCODE_PATH_TEST;
break;
case MI_TEST_PRISM:
profile = LL_PCODE_PROFILE_EQUALTRI;
path = LL_PCODE_PATH_TEST;
break;
case MI_TEST_HEMICYLINDER:
profile = LL_PCODE_PROFILE_CIRCLE_HALF;
path = LL_PCODE_PATH_TEST;
break;
// </edit>
default:
llwarns << "Unknown base type " << selected_type
<< " in getVolumeParams()" << llendl;
@@ -1537,7 +1684,22 @@ void LLPanelObject::getVolumeParams(LLVolumeParams& volume_params)
// Scale X,Y
F32 scale_x = mSpinScaleX->get();
F32 scale_y = mSpinScaleY->get();
if ( was_selected_type == MI_BOX || was_selected_type == MI_CYLINDER || was_selected_type == MI_PRISM)
// <edit>
//if ( was_selected_type == MI_BOX || was_selected_type == MI_CYLINDER || was_selected_type == MI_PRISM)
if ( was_selected_type == MI_BOX || was_selected_type == MI_CYLINDER || was_selected_type == MI_PRISM ||
was_selected_type == MI_SPHERE ||
was_selected_type == MI_HEMICYLINDER ||
was_selected_type == MI_SPIRAL_CIRCLE ||
was_selected_type == MI_SPIRAL_SQUARE ||
was_selected_type == MI_SPIRAL_TRIANGLE ||
was_selected_type == MI_SPIRAL_SEMICIRCLE ||
was_selected_type == MI_TEST_BOX ||
was_selected_type == MI_TEST_PRISM ||
was_selected_type == MI_TEST_CYLINDER ||
was_selected_type == MI_TEST_HEMICYLINDER
)
// but why put sphere here if the other circle-paths aren't?
// </edit>
{
scale_x = 1.f - scale_x;
scale_y = 1.f - scale_y;
@@ -1559,13 +1721,23 @@ void LLPanelObject::getVolumeParams(LLVolumeParams& volume_params)
if ( selected_type == MI_SPHERE )
{
// Snap values to valid sphere parameters.
scale_x = 1.0f;
scale_y = 1.0f;
skew = 0.0f;
taper_x = 0.0f;
taper_y = 0.0f;
// make scale (taper (hole size?)) work for sphere, part 2 of 2
//scale_x = 1.0f;
//scale_y = 1.0f;
// </edit>
// <edit> testing skew
//skew = 0.0f;
// </edit>
// <edit>
// Make OTHER taper work for sphere
//taper_x = 0.0f;
//taper_y = 0.0f;
// </edit>
radius_offset = 0.0f;
revolutions = 1.0f;
// <edit>
// Revolutions works fine on sphere
//revolutions = 1.0f;
// </edit>
}
else if ( selected_type == MI_TORUS || selected_type == MI_TUBE ||
selected_type == MI_RING )

View File

@@ -716,6 +716,37 @@
<combo_item name="Sculpted" value="Sculpted">
Sculpted
</combo_item>
<combo_item name="Hemicylinder" value="Hemicylinder">
Hemicylinder
</combo_item>
<combo_item name="Spiral Circle" value="Spiral Circle">
Spiral Circle
</combo_item>
<combo_item name="Spiral Square" value="Spiral Square">
Spiral Square
</combo_item>
<combo_item name="Spiral Triangle" value="Spiral Triangle">
Spiral Triangle
</combo_item>
<combo_item name="Spiral Semicircle" value="Spiral Semicircle">
Spiral Semicircle
</combo_item>
<combo_item name="Test Cylinder" value="Test Cylinder">
Test Cylinder
</combo_item>
<combo_item name="Test Box" value="Test Box">
Test Box
</combo_item>
<combo_item name="Test Prism" value="Test Prism">
Test Prism
</combo_item>
<combo_item name="Test Hemicylinder" value="Test Hemicylinder">
Test Hemicylinder
</combo_item>
</combo_box>
<text bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
bottom_delta="-12" drop_shadow_visible="true" follows="left|top"