aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/linden/indra/newview/llpanelobject.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'linden/indra/newview/llpanelobject.cpp')
-rw-r--r--linden/indra/newview/llpanelobject.cpp72
1 files changed, 68 insertions, 4 deletions
diff --git a/linden/indra/newview/llpanelobject.cpp b/linden/indra/newview/llpanelobject.cpp
index 75f479c..b0274e6 100644
--- a/linden/indra/newview/llpanelobject.cpp
+++ b/linden/indra/newview/llpanelobject.cpp
@@ -47,6 +47,7 @@
47// project includes 47// project includes
48#include "llagent.h" 48#include "llagent.h"
49#include "llbutton.h" 49#include "llbutton.h"
50#include "llcalc.h"
50#include "llcheckboxctrl.h" 51#include "llcheckboxctrl.h"
51#include "llcolorswatch.h" 52#include "llcolorswatch.h"
52#include "llcombobox.h" 53#include "llcombobox.h"
@@ -110,6 +111,9 @@ BOOL LLPanelObject::postBuild()
110 // Top 111 // Top
111 //-------------------------------------------------------- 112 //--------------------------------------------------------
112 113
114 // Build constant tipsheet
115 childSetAction("build_math_constants",onClickBuildConstants,this);
116
113 // Lock checkbox 117 // Lock checkbox
114 mCheckLock = getChild<LLCheckBoxCtrl>("checkbox locked"); 118 mCheckLock = getChild<LLCheckBoxCtrl>("checkbox locked");
115 childSetCommitCallback("checkbox locked",onCommitLock,this); 119 childSetCommitCallback("checkbox locked",onCommitLock,this);
@@ -342,6 +346,8 @@ void LLPanelObject::getState( )
342 } 346 }
343 } 347 }
344 348
349 LLCalc* calcp = LLCalc::getInstance();
350
345 LLVOVolume *volobjp = NULL; 351 LLVOVolume *volobjp = NULL;
346 if ( objectp && (objectp->getPCode() == LL_PCODE_VOLUME)) 352 if ( objectp && (objectp->getPCode() == LL_PCODE_VOLUME))
347 { 353 {
@@ -358,6 +364,7 @@ void LLPanelObject::getState( )
358 364
359 // Disable all text input fields 365 // Disable all text input fields
360 clearCtrls(); 366 clearCtrls();
367 calcp->clearAllVariables();
361 return; 368 return;
362 } 369 }
363 370
@@ -366,6 +373,8 @@ void LLPanelObject::getState( )
366 BOOL enable_scale = objectp->permMove() && objectp->permModify(); 373 BOOL enable_scale = objectp->permMove() && objectp->permModify();
367 BOOL enable_rotate = objectp->permMove() && ( (objectp->permModify() && !objectp->isAttachment()) || !gSavedSettings.getBOOL("EditLinkedParts")); 374 BOOL enable_rotate = objectp->permMove() && ( (objectp->permModify() && !objectp->isAttachment()) || !gSavedSettings.getBOOL("EditLinkedParts"));
368 375
376 childSetEnabled("build_math_constants",true);
377
369 S32 selected_count = LLSelectMgr::getInstance()->getSelection()->getObjectCount(); 378 S32 selected_count = LLSelectMgr::getInstance()->getSelection()->getObjectCount();
370 BOOL single_volume = (LLSelectMgr::getInstance()->selectionAllPCode( LL_PCODE_VOLUME )) 379 BOOL single_volume = (LLSelectMgr::getInstance()->selectionAllPCode( LL_PCODE_VOLUME ))
371 && (selected_count == 1); 380 && (selected_count == 1);
@@ -384,12 +393,18 @@ void LLPanelObject::getState( )
384 mCtrlPosX->set( vec.mV[VX] ); 393 mCtrlPosX->set( vec.mV[VX] );
385 mCtrlPosY->set( vec.mV[VY] ); 394 mCtrlPosY->set( vec.mV[VY] );
386 mCtrlPosZ->set( vec.mV[VZ] ); 395 mCtrlPosZ->set( vec.mV[VZ] );
396 calcp->setVar(LLCalc::X_POS, vec.mV[VX]);
397 calcp->setVar(LLCalc::Y_POS, vec.mV[VY]);
398 calcp->setVar(LLCalc::Z_POS, vec.mV[VZ]);
387 } 399 }
388 else 400 else
389 { 401 {
390 mCtrlPosX->clear(); 402 mCtrlPosX->clear();
391 mCtrlPosY->clear(); 403 mCtrlPosY->clear();
392 mCtrlPosZ->clear(); 404 mCtrlPosZ->clear();
405 calcp->clearVar(LLCalc::X_POS);
406 calcp->clearVar(LLCalc::Y_POS);
407 calcp->clearVar(LLCalc::Z_POS);
393 } 408 }
394 409
395 410
@@ -404,12 +419,18 @@ void LLPanelObject::getState( )
404 mCtrlScaleX->set( vec.mV[VX] ); 419 mCtrlScaleX->set( vec.mV[VX] );
405 mCtrlScaleY->set( vec.mV[VY] ); 420 mCtrlScaleY->set( vec.mV[VY] );
406 mCtrlScaleZ->set( vec.mV[VZ] ); 421 mCtrlScaleZ->set( vec.mV[VZ] );
422 calcp->setVar(LLCalc::X_SCALE, vec.mV[VX]);
423 calcp->setVar(LLCalc::Y_SCALE, vec.mV[VY]);
424 calcp->setVar(LLCalc::Z_SCALE, vec.mV[VZ]);
407 } 425 }
408 else 426 else
409 { 427 {
410 mCtrlScaleX->clear(); 428 mCtrlScaleX->clear();
411 mCtrlScaleY->clear(); 429 mCtrlScaleY->clear();
412 mCtrlScaleZ->clear(); 430 mCtrlScaleZ->clear();
431 calcp->setVar(LLCalc::X_SCALE, 0.f);
432 calcp->setVar(LLCalc::Y_SCALE, 0.f);
433 calcp->setVar(LLCalc::Z_SCALE, 0.f);
413 } 434 }
414 435
415 mLabelSize->setEnabled( enable_scale ); 436 mLabelSize->setEnabled( enable_scale );
@@ -429,12 +450,18 @@ void LLPanelObject::getState( )
429 mCtrlRotX->set( mCurEulerDegrees.mV[VX] ); 450 mCtrlRotX->set( mCurEulerDegrees.mV[VX] );
430 mCtrlRotY->set( mCurEulerDegrees.mV[VY] ); 451 mCtrlRotY->set( mCurEulerDegrees.mV[VY] );
431 mCtrlRotZ->set( mCurEulerDegrees.mV[VZ] ); 452 mCtrlRotZ->set( mCurEulerDegrees.mV[VZ] );
453 calcp->setVar(LLCalc::X_ROT, mCurEulerDegrees.mV[VX]);
454 calcp->setVar(LLCalc::Y_ROT, mCurEulerDegrees.mV[VY]);
455 calcp->setVar(LLCalc::Z_ROT, mCurEulerDegrees.mV[VZ]);
432 } 456 }
433 else 457 else
434 { 458 {
435 mCtrlRotX->clear(); 459 mCtrlRotX->clear();
436 mCtrlRotY->clear(); 460 mCtrlRotY->clear();
437 mCtrlRotZ->clear(); 461 mCtrlRotZ->clear();
462 calcp->clearVar(LLCalc::X_ROT);
463 calcp->clearVar(LLCalc::Y_ROT);
464 calcp->clearVar(LLCalc::Z_ROT);
438 } 465 }
439 466
440 mLabelRotation->setEnabled( enable_rotate ); 467 mLabelRotation->setEnabled( enable_rotate );
@@ -687,8 +714,9 @@ void LLPanelObject::getState( )
687 F32 end_t = volume_params.getEndT(); 714 F32 end_t = volume_params.getEndT();
688 715
689 // Hollowness 716 // Hollowness
690 F32 hollow = volume_params.getHollow(); 717 F32 hollow = 100.f * volume_params.getHollow();
691 mSpinHollow->set( 100.f * hollow ); 718 mSpinHollow->set( hollow );
719 calcp->setVar(LLCalc::HOLLOW, hollow);
692 720
693 // All hollow objects allow a shape to be selected. 721 // All hollow objects allow a shape to be selected.
694 if (hollow > 0.f) 722 if (hollow > 0.f)
@@ -741,6 +769,10 @@ void LLPanelObject::getState( )
741 mSpinCutEnd ->set( cut_end ); 769 mSpinCutEnd ->set( cut_end );
742 mCtrlPathBegin ->set( adv_cut_begin ); 770 mCtrlPathBegin ->set( adv_cut_begin );
743 mCtrlPathEnd ->set( adv_cut_end ); 771 mCtrlPathEnd ->set( adv_cut_end );
772 calcp->setVar(LLCalc::CUT_BEGIN, cut_begin);
773 calcp->setVar(LLCalc::CUT_END, cut_end);
774 calcp->setVar(LLCalc::PATH_BEGIN, adv_cut_begin);
775 calcp->setVar(LLCalc::PATH_END, adv_cut_end);
744 776
745 // Twist 777 // Twist
746 F32 twist = volume_params.getTwist(); 778 F32 twist = volume_params.getTwist();
@@ -759,18 +791,24 @@ void LLPanelObject::getState( )
759 791
760 mSpinTwist ->set( twist ); 792 mSpinTwist ->set( twist );
761 mSpinTwistBegin ->set( twist_begin ); 793 mSpinTwistBegin ->set( twist_begin );
794 calcp->setVar(LLCalc::TWIST_END, twist);
795 calcp->setVar(LLCalc::TWIST_BEGIN, twist_begin);
762 796
763 // Shear 797 // Shear
764 F32 shear_x = volume_params.getShearX(); 798 F32 shear_x = volume_params.getShearX();
765 F32 shear_y = volume_params.getShearY(); 799 F32 shear_y = volume_params.getShearY();
766 mSpinShearX->set( shear_x ); 800 mSpinShearX->set( shear_x );
767 mSpinShearY->set( shear_y ); 801 mSpinShearY->set( shear_y );
802 calcp->setVar(LLCalc::X_SHEAR, shear_x);
803 calcp->setVar(LLCalc::Y_SHEAR, shear_y);
768 804
769 // Taper 805 // Taper
770 F32 taper_x = volume_params.getTaperX(); 806 F32 taper_x = volume_params.getTaperX();
771 F32 taper_y = volume_params.getTaperY(); 807 F32 taper_y = volume_params.getTaperY();
772 mSpinTaperX->set( taper_x ); 808 mSpinTaperX->set( taper_x );
773 mSpinTaperY->set( taper_y ); 809 mSpinTaperY->set( taper_y );
810 calcp->setVar(LLCalc::X_TAPER, taper_x);
811 calcp->setVar(LLCalc::Y_TAPER, taper_y);
774 812
775 // Radius offset. 813 // Radius offset.
776 F32 radius_offset = volume_params.getRadiusOffset(); 814 F32 radius_offset = volume_params.getRadiusOffset();
@@ -800,10 +838,12 @@ void LLPanelObject::getState( )
800 } 838 }
801 } 839 }
802 mSpinRadiusOffset->set( radius_offset); 840 mSpinRadiusOffset->set( radius_offset);
841 calcp->setVar(LLCalc::RADIUS_OFFSET, radius_offset);
803 842
804 // Revolutions 843 // Revolutions
805 F32 revolutions = volume_params.getRevolutions(); 844 F32 revolutions = volume_params.getRevolutions();
806 mSpinRevolutions->set( revolutions ); 845 mSpinRevolutions->set( revolutions );
846 calcp->setVar(LLCalc::REVOLUTIONS, revolutions);
807 847
808 // Skew 848 // Skew
809 F32 skew = volume_params.getSkew(); 849 F32 skew = volume_params.getSkew();
@@ -828,6 +868,7 @@ void LLPanelObject::getState( )
828 } 868 }
829 } 869 }
830 mSpinSkew->set( skew ); 870 mSpinSkew->set( skew );
871 calcp->setVar(LLCalc::SKEW, skew);
831 } 872 }
832 873
833 // Compute control visibility, label names, and twist range. 874 // Compute control visibility, label names, and twist range.
@@ -839,7 +880,7 @@ void LLPanelObject::getState( )
839 BOOL top_shear_x_visible = TRUE; 880 BOOL top_shear_x_visible = TRUE;
840 BOOL top_shear_y_visible = TRUE; 881 BOOL top_shear_y_visible = TRUE;
841 BOOL twist_visible = TRUE; 882 BOOL twist_visible = TRUE;
842 BOOL advanced_cut_visible = FALSE; 883 BOOL advanced_cut_visible = TRUE;
843 BOOL taper_visible = FALSE; 884 BOOL taper_visible = FALSE;
844 BOOL skew_visible = FALSE; 885 BOOL skew_visible = FALSE;
845 BOOL radius_offset_visible = FALSE; 886 BOOL radius_offset_visible = FALSE;
@@ -864,6 +905,7 @@ void LLPanelObject::getState( )
864 //twist_visible = FALSE; 905 //twist_visible = FALSE;
865 advanced_cut_visible = TRUE; 906 advanced_cut_visible = TRUE;
866 advanced_is_dimple = TRUE; 907 advanced_is_dimple = TRUE;
908 advanced_is_slice = FALSE;
867 twist_min = OBJECT_TWIST_MIN; 909 twist_min = OBJECT_TWIST_MIN;
868 twist_max = OBJECT_TWIST_MAX; 910 twist_max = OBJECT_TWIST_MAX;
869 twist_inc = OBJECT_TWIST_INC; 911 twist_inc = OBJECT_TWIST_INC;
@@ -877,6 +919,7 @@ void LLPanelObject::getState( )
877 size_is_hole = TRUE; 919 size_is_hole = TRUE;
878 skew_visible = TRUE; 920 skew_visible = TRUE;
879 advanced_cut_visible = TRUE; 921 advanced_cut_visible = TRUE;
922 advanced_is_slice = FALSE;
880 taper_visible = TRUE; 923 taper_visible = TRUE;
881 radius_offset_visible = TRUE; 924 radius_offset_visible = TRUE;
882 revolutions_visible = TRUE; 925 revolutions_visible = TRUE;
@@ -931,6 +974,8 @@ void LLPanelObject::getState( )
931 case MI_RING: 974 case MI_RING:
932 mSpinScaleX->set( scale_x ); 975 mSpinScaleX->set( scale_x );
933 mSpinScaleY->set( scale_y ); 976 mSpinScaleY->set( scale_y );
977 calcp->setVar(LLCalc::X_HOLE, scale_x);
978 calcp->setVar(LLCalc::Y_HOLE, scale_y);
934 mSpinScaleX->setMinValue(OBJECT_MIN_HOLE_SIZE); 979 mSpinScaleX->setMinValue(OBJECT_MIN_HOLE_SIZE);
935 mSpinScaleX->setMaxValue(OBJECT_MAX_HOLE_SIZE_X); 980 mSpinScaleX->setMaxValue(OBJECT_MAX_HOLE_SIZE_X);
936 mSpinScaleY->setMinValue(OBJECT_MIN_HOLE_SIZE); 981 mSpinScaleY->setMinValue(OBJECT_MIN_HOLE_SIZE);
@@ -945,6 +990,14 @@ void LLPanelObject::getState( )
945 mSpinScaleX->setMaxValue(1.f); 990 mSpinScaleX->setMaxValue(1.f);
946 mSpinScaleY->setMinValue(-1.f); 991 mSpinScaleY->setMinValue(-1.f);
947 mSpinScaleY->setMaxValue(1.f); 992 mSpinScaleY->setMaxValue(1.f);
993
994 // Torus' Hole Size is Box/Cyl/Prism's Taper
995 calcp->setVar(LLCalc::X_TAPER, 1.f - scale_x);
996 calcp->setVar(LLCalc::Y_TAPER, 1.f - scale_y);
997
998 // Box/Cyl/Prism have no hole size
999 calcp->setVar(LLCalc::X_HOLE, 0.f);
1000 calcp->setVar(LLCalc::Y_HOLE, 0.f);
948 } 1001 }
949 break; 1002 break;
950 } 1003 }
@@ -1155,7 +1208,7 @@ void LLPanelObject::getState( )
1155 mSculptTextureRevert = LLUUID::null; 1208 mSculptTextureRevert = LLUUID::null;
1156 } 1209 }
1157 1210
1158 1211
1159 //---------------------------------------------------------------------------- 1212 //----------------------------------------------------------------------------
1160 1213
1161 mObject = objectp; 1214 mObject = objectp;
@@ -1920,6 +1973,8 @@ void LLPanelObject::clearCtrls()
1920 childSetEnabled("advanced_cut", FALSE); 1973 childSetEnabled("advanced_cut", FALSE);
1921 childSetEnabled("advanced_dimple", FALSE); 1974 childSetEnabled("advanced_dimple", FALSE);
1922 childSetVisible("advanced_slice", FALSE); 1975 childSetVisible("advanced_slice", FALSE);
1976
1977 childSetEnabled("build_math_constants",false);
1923} 1978}
1924 1979
1925// 1980//
@@ -1961,6 +2016,9 @@ void LLPanelObject::onCommitRotation( LLUICtrl* ctrl, void* userdata )
1961 LLPanelObject* self = (LLPanelObject*) userdata; 2016 LLPanelObject* self = (LLPanelObject*) userdata;
1962 BOOL btn_down = ((LLSpinCtrl*)ctrl)->isMouseHeldDown() ; 2017 BOOL btn_down = ((LLSpinCtrl*)ctrl)->isMouseHeldDown() ;
1963 self->sendRotation(btn_down); 2018 self->sendRotation(btn_down);
2019
2020 // Needed to ensure all rotations are shown consistently in range
2021 self->refresh();
1964} 2022}
1965 2023
1966// static 2024// static
@@ -2055,3 +2113,9 @@ void LLPanelObject::onCommitSculptType(LLUICtrl *ctrl, void* userdata)
2055 2113
2056 self->sendSculpt(); 2114 self->sendSculpt();
2057} 2115}
2116
2117// static
2118void LLPanelObject::onClickBuildConstants(void *)
2119{
2120 gViewerWindow->alertXml("ClickBuildConstants");
2121}