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.cpp89
1 files changed, 85 insertions, 4 deletions
diff --git a/linden/indra/newview/llpanelobject.cpp b/linden/indra/newview/llpanelobject.cpp
index 75f479c..40dc211 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"
@@ -75,6 +76,10 @@
75 76
76#include "lldrawpool.h" 77#include "lldrawpool.h"
77 78
79// [RLVa:KB] - Checked: 2009-07-10 (RLVa-1.0.0g)
80#include "llvoavatar.h"
81// [/RLVa:KB]
82
78// 83//
79// Constants 84// Constants
80// 85//
@@ -110,6 +115,9 @@ BOOL LLPanelObject::postBuild()
110 // Top 115 // Top
111 //-------------------------------------------------------- 116 //--------------------------------------------------------
112 117
118 // Build constant tipsheet
119 childSetAction("build_math_constants",onClickBuildConstants,this);
120
113 // Lock checkbox 121 // Lock checkbox
114 mCheckLock = getChild<LLCheckBoxCtrl>("checkbox locked"); 122 mCheckLock = getChild<LLCheckBoxCtrl>("checkbox locked");
115 childSetCommitCallback("checkbox locked",onCommitLock,this); 123 childSetCommitCallback("checkbox locked",onCommitLock,this);
@@ -342,6 +350,8 @@ void LLPanelObject::getState( )
342 } 350 }
343 } 351 }
344 352
353 LLCalc* calcp = LLCalc::getInstance();
354
345 LLVOVolume *volobjp = NULL; 355 LLVOVolume *volobjp = NULL;
346 if ( objectp && (objectp->getPCode() == LL_PCODE_VOLUME)) 356 if ( objectp && (objectp->getPCode() == LL_PCODE_VOLUME))
347 { 357 {
@@ -358,6 +368,7 @@ void LLPanelObject::getState( )
358 368
359 // Disable all text input fields 369 // Disable all text input fields
360 clearCtrls(); 370 clearCtrls();
371 calcp->clearAllVariables();
361 return; 372 return;
362 } 373 }
363 374
@@ -366,6 +377,8 @@ void LLPanelObject::getState( )
366 BOOL enable_scale = objectp->permMove() && objectp->permModify(); 377 BOOL enable_scale = objectp->permMove() && objectp->permModify();
367 BOOL enable_rotate = objectp->permMove() && ( (objectp->permModify() && !objectp->isAttachment()) || !gSavedSettings.getBOOL("EditLinkedParts")); 378 BOOL enable_rotate = objectp->permMove() && ( (objectp->permModify() && !objectp->isAttachment()) || !gSavedSettings.getBOOL("EditLinkedParts"));
368 379
380 childSetEnabled("build_math_constants",true);
381
369 S32 selected_count = LLSelectMgr::getInstance()->getSelection()->getObjectCount(); 382 S32 selected_count = LLSelectMgr::getInstance()->getSelection()->getObjectCount();
370 BOOL single_volume = (LLSelectMgr::getInstance()->selectionAllPCode( LL_PCODE_VOLUME )) 383 BOOL single_volume = (LLSelectMgr::getInstance()->selectionAllPCode( LL_PCODE_VOLUME ))
371 && (selected_count == 1); 384 && (selected_count == 1);
@@ -377,6 +390,15 @@ void LLPanelObject::getState( )
377 enable_rotate = FALSE; 390 enable_rotate = FALSE;
378 } 391 }
379 392
393// [RLVa:KB] - Checked: 2009-07-10 (RLVa-1.0.0g)
394 if ( (rlv_handler_t::isEnabled()) && ((gRlvHandler.hasBehaviour(RLV_BHVR_UNSIT)) || (gRlvHandler.hasBehaviour(RLV_BHVR_SITTP))) )
395 {
396 LLVOAvatar* pAvatar = gAgent.getAvatarObject();
397 if ( (pAvatar) && (pAvatar->mIsSitting) && (pAvatar->getRoot() == objectp->getRootEdit()) )
398 enable_move = enable_scale = enable_rotate = FALSE;
399 }
400// [/RLVa:KB]
401
380 LLVector3 vec; 402 LLVector3 vec;
381 if (enable_move) 403 if (enable_move)
382 { 404 {
@@ -384,12 +406,18 @@ void LLPanelObject::getState( )
384 mCtrlPosX->set( vec.mV[VX] ); 406 mCtrlPosX->set( vec.mV[VX] );
385 mCtrlPosY->set( vec.mV[VY] ); 407 mCtrlPosY->set( vec.mV[VY] );
386 mCtrlPosZ->set( vec.mV[VZ] ); 408 mCtrlPosZ->set( vec.mV[VZ] );
409 calcp->setVar(LLCalc::X_POS, vec.mV[VX]);
410 calcp->setVar(LLCalc::Y_POS, vec.mV[VY]);
411 calcp->setVar(LLCalc::Z_POS, vec.mV[VZ]);
387 } 412 }
388 else 413 else
389 { 414 {
390 mCtrlPosX->clear(); 415 mCtrlPosX->clear();
391 mCtrlPosY->clear(); 416 mCtrlPosY->clear();
392 mCtrlPosZ->clear(); 417 mCtrlPosZ->clear();
418 calcp->clearVar(LLCalc::X_POS);
419 calcp->clearVar(LLCalc::Y_POS);
420 calcp->clearVar(LLCalc::Z_POS);
393 } 421 }
394 422
395 423
@@ -404,12 +432,18 @@ void LLPanelObject::getState( )
404 mCtrlScaleX->set( vec.mV[VX] ); 432 mCtrlScaleX->set( vec.mV[VX] );
405 mCtrlScaleY->set( vec.mV[VY] ); 433 mCtrlScaleY->set( vec.mV[VY] );
406 mCtrlScaleZ->set( vec.mV[VZ] ); 434 mCtrlScaleZ->set( vec.mV[VZ] );
435 calcp->setVar(LLCalc::X_SCALE, vec.mV[VX]);
436 calcp->setVar(LLCalc::Y_SCALE, vec.mV[VY]);
437 calcp->setVar(LLCalc::Z_SCALE, vec.mV[VZ]);
407 } 438 }
408 else 439 else
409 { 440 {
410 mCtrlScaleX->clear(); 441 mCtrlScaleX->clear();
411 mCtrlScaleY->clear(); 442 mCtrlScaleY->clear();
412 mCtrlScaleZ->clear(); 443 mCtrlScaleZ->clear();
444 calcp->setVar(LLCalc::X_SCALE, 0.f);
445 calcp->setVar(LLCalc::Y_SCALE, 0.f);
446 calcp->setVar(LLCalc::Z_SCALE, 0.f);
413 } 447 }
414 448
415 mLabelSize->setEnabled( enable_scale ); 449 mLabelSize->setEnabled( enable_scale );
@@ -429,12 +463,18 @@ void LLPanelObject::getState( )
429 mCtrlRotX->set( mCurEulerDegrees.mV[VX] ); 463 mCtrlRotX->set( mCurEulerDegrees.mV[VX] );
430 mCtrlRotY->set( mCurEulerDegrees.mV[VY] ); 464 mCtrlRotY->set( mCurEulerDegrees.mV[VY] );
431 mCtrlRotZ->set( mCurEulerDegrees.mV[VZ] ); 465 mCtrlRotZ->set( mCurEulerDegrees.mV[VZ] );
466 calcp->setVar(LLCalc::X_ROT, mCurEulerDegrees.mV[VX]);
467 calcp->setVar(LLCalc::Y_ROT, mCurEulerDegrees.mV[VY]);
468 calcp->setVar(LLCalc::Z_ROT, mCurEulerDegrees.mV[VZ]);
432 } 469 }
433 else 470 else
434 { 471 {
435 mCtrlRotX->clear(); 472 mCtrlRotX->clear();
436 mCtrlRotY->clear(); 473 mCtrlRotY->clear();
437 mCtrlRotZ->clear(); 474 mCtrlRotZ->clear();
475 calcp->clearVar(LLCalc::X_ROT);
476 calcp->clearVar(LLCalc::Y_ROT);
477 calcp->clearVar(LLCalc::Z_ROT);
438 } 478 }
439 479
440 mLabelRotation->setEnabled( enable_rotate ); 480 mLabelRotation->setEnabled( enable_rotate );
@@ -592,6 +632,10 @@ void LLPanelObject::getState( )
592 } 632 }
593 else 633 else
594 { 634 {
635 mCtrlScaleX->setMaxValue(LLManipScale::getMaxPrimSize());
636 mCtrlScaleY->setMaxValue(LLManipScale::getMaxPrimSize());
637 mCtrlScaleZ->setMaxValue(LLManipScale::getMaxPrimSize());
638
595 // Only allowed to change these parameters for objects 639 // Only allowed to change these parameters for objects
596 // that you have permissions on AND are not attachments. 640 // that you have permissions on AND are not attachments.
597 enabled = root_objectp->permModify(); 641 enabled = root_objectp->permModify();
@@ -687,8 +731,9 @@ void LLPanelObject::getState( )
687 F32 end_t = volume_params.getEndT(); 731 F32 end_t = volume_params.getEndT();
688 732
689 // Hollowness 733 // Hollowness
690 F32 hollow = volume_params.getHollow(); 734 F32 hollow = 100.f * volume_params.getHollow();
691 mSpinHollow->set( 100.f * hollow ); 735 mSpinHollow->set( hollow );
736 calcp->setVar(LLCalc::HOLLOW, hollow);
692 737
693 // All hollow objects allow a shape to be selected. 738 // All hollow objects allow a shape to be selected.
694 if (hollow > 0.f) 739 if (hollow > 0.f)
@@ -741,6 +786,10 @@ void LLPanelObject::getState( )
741 mSpinCutEnd ->set( cut_end ); 786 mSpinCutEnd ->set( cut_end );
742 mCtrlPathBegin ->set( adv_cut_begin ); 787 mCtrlPathBegin ->set( adv_cut_begin );
743 mCtrlPathEnd ->set( adv_cut_end ); 788 mCtrlPathEnd ->set( adv_cut_end );
789 calcp->setVar(LLCalc::CUT_BEGIN, cut_begin);
790 calcp->setVar(LLCalc::CUT_END, cut_end);
791 calcp->setVar(LLCalc::PATH_BEGIN, adv_cut_begin);
792 calcp->setVar(LLCalc::PATH_END, adv_cut_end);
744 793
745 // Twist 794 // Twist
746 F32 twist = volume_params.getTwist(); 795 F32 twist = volume_params.getTwist();
@@ -759,18 +808,24 @@ void LLPanelObject::getState( )
759 808
760 mSpinTwist ->set( twist ); 809 mSpinTwist ->set( twist );
761 mSpinTwistBegin ->set( twist_begin ); 810 mSpinTwistBegin ->set( twist_begin );
811 calcp->setVar(LLCalc::TWIST_END, twist);
812 calcp->setVar(LLCalc::TWIST_BEGIN, twist_begin);
762 813
763 // Shear 814 // Shear
764 F32 shear_x = volume_params.getShearX(); 815 F32 shear_x = volume_params.getShearX();
765 F32 shear_y = volume_params.getShearY(); 816 F32 shear_y = volume_params.getShearY();
766 mSpinShearX->set( shear_x ); 817 mSpinShearX->set( shear_x );
767 mSpinShearY->set( shear_y ); 818 mSpinShearY->set( shear_y );
819 calcp->setVar(LLCalc::X_SHEAR, shear_x);
820 calcp->setVar(LLCalc::Y_SHEAR, shear_y);
768 821
769 // Taper 822 // Taper
770 F32 taper_x = volume_params.getTaperX(); 823 F32 taper_x = volume_params.getTaperX();
771 F32 taper_y = volume_params.getTaperY(); 824 F32 taper_y = volume_params.getTaperY();
772 mSpinTaperX->set( taper_x ); 825 mSpinTaperX->set( taper_x );
773 mSpinTaperY->set( taper_y ); 826 mSpinTaperY->set( taper_y );
827 calcp->setVar(LLCalc::X_TAPER, taper_x);
828 calcp->setVar(LLCalc::Y_TAPER, taper_y);
774 829
775 // Radius offset. 830 // Radius offset.
776 F32 radius_offset = volume_params.getRadiusOffset(); 831 F32 radius_offset = volume_params.getRadiusOffset();
@@ -800,10 +855,12 @@ void LLPanelObject::getState( )
800 } 855 }
801 } 856 }
802 mSpinRadiusOffset->set( radius_offset); 857 mSpinRadiusOffset->set( radius_offset);
858 calcp->setVar(LLCalc::RADIUS_OFFSET, radius_offset);
803 859
804 // Revolutions 860 // Revolutions
805 F32 revolutions = volume_params.getRevolutions(); 861 F32 revolutions = volume_params.getRevolutions();
806 mSpinRevolutions->set( revolutions ); 862 mSpinRevolutions->set( revolutions );
863 calcp->setVar(LLCalc::REVOLUTIONS, revolutions);
807 864
808 // Skew 865 // Skew
809 F32 skew = volume_params.getSkew(); 866 F32 skew = volume_params.getSkew();
@@ -828,6 +885,7 @@ void LLPanelObject::getState( )
828 } 885 }
829 } 886 }
830 mSpinSkew->set( skew ); 887 mSpinSkew->set( skew );
888 calcp->setVar(LLCalc::SKEW, skew);
831 } 889 }
832 890
833 // Compute control visibility, label names, and twist range. 891 // Compute control visibility, label names, and twist range.
@@ -839,7 +897,7 @@ void LLPanelObject::getState( )
839 BOOL top_shear_x_visible = TRUE; 897 BOOL top_shear_x_visible = TRUE;
840 BOOL top_shear_y_visible = TRUE; 898 BOOL top_shear_y_visible = TRUE;
841 BOOL twist_visible = TRUE; 899 BOOL twist_visible = TRUE;
842 BOOL advanced_cut_visible = FALSE; 900 BOOL advanced_cut_visible = TRUE;
843 BOOL taper_visible = FALSE; 901 BOOL taper_visible = FALSE;
844 BOOL skew_visible = FALSE; 902 BOOL skew_visible = FALSE;
845 BOOL radius_offset_visible = FALSE; 903 BOOL radius_offset_visible = FALSE;
@@ -864,6 +922,7 @@ void LLPanelObject::getState( )
864 //twist_visible = FALSE; 922 //twist_visible = FALSE;
865 advanced_cut_visible = TRUE; 923 advanced_cut_visible = TRUE;
866 advanced_is_dimple = TRUE; 924 advanced_is_dimple = TRUE;
925 advanced_is_slice = FALSE;
867 twist_min = OBJECT_TWIST_MIN; 926 twist_min = OBJECT_TWIST_MIN;
868 twist_max = OBJECT_TWIST_MAX; 927 twist_max = OBJECT_TWIST_MAX;
869 twist_inc = OBJECT_TWIST_INC; 928 twist_inc = OBJECT_TWIST_INC;
@@ -877,6 +936,7 @@ void LLPanelObject::getState( )
877 size_is_hole = TRUE; 936 size_is_hole = TRUE;
878 skew_visible = TRUE; 937 skew_visible = TRUE;
879 advanced_cut_visible = TRUE; 938 advanced_cut_visible = TRUE;
939 advanced_is_slice = FALSE;
880 taper_visible = TRUE; 940 taper_visible = TRUE;
881 radius_offset_visible = TRUE; 941 radius_offset_visible = TRUE;
882 revolutions_visible = TRUE; 942 revolutions_visible = TRUE;
@@ -931,6 +991,8 @@ void LLPanelObject::getState( )
931 case MI_RING: 991 case MI_RING:
932 mSpinScaleX->set( scale_x ); 992 mSpinScaleX->set( scale_x );
933 mSpinScaleY->set( scale_y ); 993 mSpinScaleY->set( scale_y );
994 calcp->setVar(LLCalc::X_HOLE, scale_x);
995 calcp->setVar(LLCalc::Y_HOLE, scale_y);
934 mSpinScaleX->setMinValue(OBJECT_MIN_HOLE_SIZE); 996 mSpinScaleX->setMinValue(OBJECT_MIN_HOLE_SIZE);
935 mSpinScaleX->setMaxValue(OBJECT_MAX_HOLE_SIZE_X); 997 mSpinScaleX->setMaxValue(OBJECT_MAX_HOLE_SIZE_X);
936 mSpinScaleY->setMinValue(OBJECT_MIN_HOLE_SIZE); 998 mSpinScaleY->setMinValue(OBJECT_MIN_HOLE_SIZE);
@@ -945,6 +1007,14 @@ void LLPanelObject::getState( )
945 mSpinScaleX->setMaxValue(1.f); 1007 mSpinScaleX->setMaxValue(1.f);
946 mSpinScaleY->setMinValue(-1.f); 1008 mSpinScaleY->setMinValue(-1.f);
947 mSpinScaleY->setMaxValue(1.f); 1009 mSpinScaleY->setMaxValue(1.f);
1010
1011 // Torus' Hole Size is Box/Cyl/Prism's Taper
1012 calcp->setVar(LLCalc::X_TAPER, 1.f - scale_x);
1013 calcp->setVar(LLCalc::Y_TAPER, 1.f - scale_y);
1014
1015 // Box/Cyl/Prism have no hole size
1016 calcp->setVar(LLCalc::X_HOLE, 0.f);
1017 calcp->setVar(LLCalc::Y_HOLE, 0.f);
948 } 1018 }
949 break; 1019 break;
950 } 1020 }
@@ -1155,7 +1225,7 @@ void LLPanelObject::getState( )
1155 mSculptTextureRevert = LLUUID::null; 1225 mSculptTextureRevert = LLUUID::null;
1156 } 1226 }
1157 1227
1158 1228
1159 //---------------------------------------------------------------------------- 1229 //----------------------------------------------------------------------------
1160 1230
1161 mObject = objectp; 1231 mObject = objectp;
@@ -1920,6 +1990,8 @@ void LLPanelObject::clearCtrls()
1920 childSetEnabled("advanced_cut", FALSE); 1990 childSetEnabled("advanced_cut", FALSE);
1921 childSetEnabled("advanced_dimple", FALSE); 1991 childSetEnabled("advanced_dimple", FALSE);
1922 childSetVisible("advanced_slice", FALSE); 1992 childSetVisible("advanced_slice", FALSE);
1993
1994 childSetEnabled("build_math_constants",false);
1923} 1995}
1924 1996
1925// 1997//
@@ -1961,6 +2033,9 @@ void LLPanelObject::onCommitRotation( LLUICtrl* ctrl, void* userdata )
1961 LLPanelObject* self = (LLPanelObject*) userdata; 2033 LLPanelObject* self = (LLPanelObject*) userdata;
1962 BOOL btn_down = ((LLSpinCtrl*)ctrl)->isMouseHeldDown() ; 2034 BOOL btn_down = ((LLSpinCtrl*)ctrl)->isMouseHeldDown() ;
1963 self->sendRotation(btn_down); 2035 self->sendRotation(btn_down);
2036
2037 // Needed to ensure all rotations are shown consistently in range
2038 self->refresh();
1964} 2039}
1965 2040
1966// static 2041// static
@@ -2055,3 +2130,9 @@ void LLPanelObject::onCommitSculptType(LLUICtrl *ctrl, void* userdata)
2055 2130
2056 self->sendSculpt(); 2131 self->sendSculpt();
2057} 2132}
2133
2134// static
2135void LLPanelObject::onClickBuildConstants(void *)
2136{
2137 LLNotifications::instance().add("ClickBuildConstants");
2138}