From f1f72d0b8beb03715ea97cdeeafc1d1159b14504 Mon Sep 17 00:00:00 2001 From: McCabe Maxsted Date: Tue, 15 Jun 2010 21:12:53 -0700 Subject: Added DisableMaxBuildConstraints setting for disabling viewer max prim size limit and created an advanced menu item (also updated hippoLimits) --- linden/indra/newview/app_settings/settings.xml | 11 ++++++ linden/indra/newview/hippoLimits.cpp | 39 ++++++++++++++++++---- linden/indra/newview/hippoLimits.h | 38 +++++++++++---------- linden/indra/newview/llfloatertools.cpp | 36 ++++++++++++++------ linden/indra/newview/llfloatertools.h | 3 +- linden/indra/newview/llviewermenu.cpp | 32 ++++++++++++++++-- .../skins/default/xui/en-us/menu_viewer.xml | 7 ++++ 7 files changed, 127 insertions(+), 39 deletions(-) (limited to 'linden') diff --git a/linden/indra/newview/app_settings/settings.xml b/linden/indra/newview/app_settings/settings.xml index fa6e275..1f4e16b 100644 --- a/linden/indra/newview/app_settings/settings.xml +++ b/linden/indra/newview/app_settings/settings.xml @@ -92,6 +92,17 @@ Value 0 + DisableMaxBuildConstraints + + Comment + Disable maximum prim size limit enforcement in the viewer (i.e. makes the sim enforce size instead). Doesn't actually toggle megas + Persist + 1 + Type + Boolean + Value + 0 + DisableMinZoomDist Comment diff --git a/linden/indra/newview/hippoLimits.cpp b/linden/indra/newview/hippoLimits.cpp index 35afcf9..0777ca3 100644 --- a/linden/indra/newview/hippoLimits.cpp +++ b/linden/indra/newview/hippoLimits.cpp @@ -5,6 +5,7 @@ #include "hippoLimits.h" #include "hippoGridManager.h" +#include "llviewercontrol.h" #include @@ -12,7 +13,15 @@ HippoLimits *gHippoLimits = 0; -HippoLimits::HippoLimits() +HippoLimits::HippoLimits() +: + mMaxAgentGroups(100), + mMaxHeight(10000.0f), + mMinHoleSize(0.05f), + mMaxHollow(0.95f), + mMinPrimScale(0.001f), + mMaxPrimScale(256.0f), + mMaxLinkedPrims(-1) { setLimits(); } @@ -20,9 +29,12 @@ HippoLimits::HippoLimits() void HippoLimits::setLimits() { - if (gHippoGridManager->getConnectedGrid()->getPlatform() == HippoGridInfo::PLATFORM_SECONDLIFE) { + if (gHippoGridManager->getConnectedGrid()->getPlatform() == HippoGridInfo::PLATFORM_SECONDLIFE) + { setSecondLifeLimits(); - } else { + } + else + { setOpenSimLimits(); } } @@ -37,11 +49,13 @@ void HippoLimits::setOpenSimLimits() mMaxLinkedPrims = -1; if (gHippoGridManager->getConnectedGrid()->isRenderCompat()) { - llinfos << "Using rendering compatible OpenSim limits." << llendl; + llinfos << "Using rendering compatible OpenSim limits" << llendl; mMinHoleSize = 0.05f; mMaxHollow = 0.95f; - } else { - llinfos << "Using Hippo OpenSim limits." << llendl; + } + else + { + llinfos << "Using Hippo OpenSim limits" << llendl; mMinHoleSize = 0.01f; mMaxHollow = 0.99f; } @@ -49,7 +63,7 @@ void HippoLimits::setOpenSimLimits() void HippoLimits::setSecondLifeLimits() { - llinfos << "Using Second Life limits." << llendl; + llinfos << "Using Second Life limits" << llendl; mMaxAgentGroups = 25; mMaxPrimScale = 10.0f; mMinPrimScale = 0.01f; @@ -59,3 +73,14 @@ void HippoLimits::setSecondLifeLimits() mMaxLinkedPrims = 255; } +F32 HippoLimits::getMaxPrimScale() const +{ + if (gSavedSettings.getBOOL("DisableMaxBuildConstraints")) + { + return FLT_MAX; + } + else + { + return mMaxPrimScale; + } +} diff --git a/linden/indra/newview/hippoLimits.h b/linden/indra/newview/hippoLimits.h index 450a112..f76e7e9 100644 --- a/linden/indra/newview/hippoLimits.h +++ b/linden/indra/newview/hippoLimits.h @@ -7,32 +7,34 @@ class HippoLimits public: HippoLimits(); - int getMaxAgentGroups() const { return mMaxAgentGroups; } - float getMaxHeight() const { return mMaxHeight; } - float getMinHoleSize() const { return mMinHoleSize; } - float getMaxHollow() const { return mMaxHollow; } - float getMaxPrimScale() const { return mMaxPrimScale; } - float getMinPrimScale() const { return mMinPrimScale; } - S32 getMaxLinkedPrims() const { return mMaxLinkedPrims; } + const S32& getMaxAgentGroups() const { return mMaxAgentGroups; } + const F32& getMaxHeight() const { return mMaxHeight; } + const F32& getMinHoleSize() const { return mMinHoleSize; } + const F32& getMaxHollow() const { return mMaxHollow; } + const F32& getMinPrimScale() const { return mMinPrimScale; } + const S32& getMaxLinkedPrims() const { return mMaxLinkedPrims; } - void setLimits(); + // Returns the max prim size we can use on a grid + F32 getMaxPrimScale() const; + + void setLimits(); private: - int mMaxAgentGroups; + S32 mMaxAgentGroups; - float mMaxHeight; - float mMinHoleSize; - float mMaxHollow; - float mMaxPrimScale; - float mMinPrimScale; - S32 mMaxLinkedPrims; + F32 mMaxHeight; + F32 mMinHoleSize; + F32 mMaxHollow; + F32 mMaxPrimScale; + F32 mMinPrimScale; + S32 mMaxLinkedPrims; - void setOpenSimLimits(); - void setSecondLifeLimits(); + void setOpenSimLimits(); + void setSecondLifeLimits(); }; -extern HippoLimits *gHippoLimits; +extern HippoLimits* gHippoLimits; #endif diff --git a/linden/indra/newview/llfloatertools.cpp b/linden/indra/newview/llfloatertools.cpp index efd81a6..4f31c3c 100644 --- a/linden/indra/newview/llfloatertools.cpp +++ b/linden/indra/newview/llfloatertools.cpp @@ -179,7 +179,27 @@ void* LLFloaterTools::createPanelLandInfo(void* data) return floater->mPanelLandInfo; } -void LLFloaterTools::toolsPrecision() +void LLFloaterTools::updateToolsSizeLimits() +{ + if (gSavedSettings.getBOOL("DisableMaxBuildConstraints")) + { + getChild("Scale X")->setMaxValue(F32_MAX); + getChild("Scale Y")->setMaxValue(F32_MAX); + getChild("Scale Z")->setMaxValue(F32_MAX); + } + else + { + getChild("Scale X")->setMaxValue(gHippoLimits->getMaxPrimScale()); + getChild("Scale Y")->setMaxValue(gHippoLimits->getMaxPrimScale()); + getChild("Scale Z")->setMaxValue(gHippoLimits->getMaxPrimScale()); + + getChild("Scale X")->setMinValue(gHippoLimits->getMinPrimScale()); + getChild("Scale Y")->setMinValue(gHippoLimits->getMinPrimScale()); + getChild("Scale Z")->setMinValue(gHippoLimits->getMinPrimScale()); + } +} + +void LLFloaterTools::updateToolsPrecision() { U32 decimals = gSavedSettings.getU32("DecimalsForTools"); if (decimals != mPrecision) @@ -268,15 +288,11 @@ BOOL LLFloaterTools::postBuild() mBtnUnlink = getChild("unlink_btn"); childSetAction("unlink_btn",onClickUnlink, this); - getChild("Scale X")->setMaxValue(gHippoLimits->getMaxPrimScale()); - getChild("Scale Y")->setMaxValue(gHippoLimits->getMaxPrimScale()); - getChild("Scale Z")->setMaxValue(gHippoLimits->getMaxPrimScale()); - - getChild("Scale X")->setMinValue(gHippoLimits->getMinPrimScale()); - getChild("Scale Y")->setMinValue(gHippoLimits->getMinPrimScale()); - getChild("Scale Z")->setMinValue(gHippoLimits->getMinPrimScale()); + // Set the default size limits for spinners -- MC + updateToolsSizeLimits(); - toolsPrecision(); + // Set the default decimal precision for spinners -- MC + updateToolsPrecision(); // // Create Buttons @@ -517,7 +533,7 @@ void LLFloaterTools::refresh() LLResMgr::getInstance()->getIntegerString(prim_count_string, LLSelectMgr::getInstance()->getSelection()->getObjectCount()); childSetTextArg("prim_count", "[COUNT]", prim_count_string); - toolsPrecision(); + updateToolsPrecision(); // Refresh child tabs mPanelPermissions->refresh(); diff --git a/linden/indra/newview/llfloatertools.h b/linden/indra/newview/llfloatertools.h index ba09bc8..ad5be6c 100644 --- a/linden/indra/newview/llfloatertools.h +++ b/linden/indra/newview/llfloatertools.h @@ -79,7 +79,8 @@ public: // button highlights, etc. void updatePopup(LLCoordGL center, MASK mask); - void toolsPrecision(); + void updateToolsSizeLimits(); + void updateToolsPrecision(); // When the floater is going away, reset any options that need to be // cleared. diff --git a/linden/indra/newview/llviewermenu.cpp b/linden/indra/newview/llviewermenu.cpp index 8ae37f3..ee2f2bc 100644 --- a/linden/indra/newview/llviewermenu.cpp +++ b/linden/indra/newview/llviewermenu.cpp @@ -10711,12 +10711,10 @@ class LLAvatarReportAbuse : public view_listener_t }; - //////////////////////////// // ALLOW MULTIPLE VIEWERS // //////////////////////////// - class LLAdvancedToggleMultipleViewers : public view_listener_t { bool handleEvent(LLPointer event, const LLSD& userdata) @@ -10730,7 +10728,6 @@ class LLAdvancedToggleMultipleViewers : public view_listener_t } }; - class LLAdvancedCheckMultipleViewers : public view_listener_t { bool handleEvent(LLPointer event, const LLSD& userdata) @@ -10743,6 +10740,33 @@ class LLAdvancedCheckMultipleViewers : public view_listener_t }; +/////////////////////////////////// +// DISABLE MAX BUILD CONSTRAINTS // +/////////////////////////////////// + +class LLAdvancedToggleMaxBuildConstraints : public view_listener_t +{ + bool handleEvent(LLPointer event, const LLSD& userdata) + { + BOOL cur_val = gSavedSettings.getBOOL("DisableMaxBuildConstraints"); + gSavedSettings.setBOOL("DisableMaxBuildConstraints", !cur_val ); + gFloaterTools->updateToolsSizeLimits(); + return true; + } +}; + +class LLAdvancedCheckMaxBuildConstraints : public view_listener_t +{ + bool handleEvent(LLPointer event, const LLSD& userdata) + { + bool new_value = gSavedSettings.getBOOL("DisableMaxBuildConstraints"); + std::string control_name = userdata["control"].asString(); + gMenuHolder->findControl(control_name)->setValue(new_value); + return true; + } +}; + + /////////////// // RLVa Main // @@ -11195,6 +11219,8 @@ void initialize_menus() addMenu(new LLAdvancedLeaveAdminStatus(), "Advanced.LeaveAdminStatus"); addMenu(new LLAdvancedToggleMultipleViewers(), "Advanced.ToggleMultipleViewers"); addMenu(new LLAdvancedCheckMultipleViewers(), "Advanced.CheckMultipleViewers"); + addMenu(new LLAdvancedToggleMaxBuildConstraints(), "Advanced.ToggleMaxBuildConstraints"); + addMenu(new LLAdvancedCheckMaxBuildConstraints(), "Advanced.CheckMaxBuildConstraints"); // RLVa addMenu(new RLVaMainToggle(), "RLVa.Main.Toggle"); diff --git a/linden/indra/newview/skins/default/xui/en-us/menu_viewer.xml b/linden/indra/newview/skins/default/xui/en-us/menu_viewer.xml index 347aa98..0293250 100644 --- a/linden/indra/newview/skins/default/xui/en-us/menu_viewer.xml +++ b/linden/indra/newview/skins/default/xui/en-us/menu_viewer.xml @@ -2090,6 +2090,13 @@ userdata="LimitSelectDistance" /> + + + +