From f644e28cfa0563ef508b848930f1adccbceba295 Mon Sep 17 00:00:00 2001 From: thickbrick Date: Sat, 28 May 2011 18:24:00 +0300 Subject: Allow prim sizes up to 64m on SL-Mesh regions This Abuses the existance of both GetMesh and ObjectAdd capabilities to detect SL-Mesh (same way it is done in viewer-development.) --- linden/indra/newview/hippolimits.cpp | 20 ++++++++++++++++++-- linden/indra/newview/hippolimits.h | 1 + linden/indra/newview/llviewermessage.cpp | 4 ++-- linden/indra/newview/llviewerregion.cpp | 2 ++ 4 files changed, 23 insertions(+), 4 deletions(-) (limited to 'linden') diff --git a/linden/indra/newview/hippolimits.cpp b/linden/indra/newview/hippolimits.cpp index bb2e805..2990a45 100644 --- a/linden/indra/newview/hippolimits.cpp +++ b/linden/indra/newview/hippolimits.cpp @@ -8,7 +8,8 @@ #include "llviewercontrol.h" #include - +#include "llagent.h" +#include "llviewerregion.h" HippoLimits *gHippoLimits = 0; @@ -90,7 +91,7 @@ void HippoLimits::setSecondLifeLimits() S32 max_groups = gHippoGridManager->getConnectedGrid()->getMaxAgentGroups(); mMaxAgentGroups = llmax(max_groups, 25); - mMaxPrimScale = 10.0f; + setSecondLifeMaxPrimScale(); mMinPrimScale = 0.01f; mMaxHeight = 4096.0f; mMinHoleSize = 0.05f; @@ -115,6 +116,21 @@ void HippoLimits::setSecondLifeLimits() mVoiceConnector = "SLVoice"; } +void HippoLimits::setSecondLifeMaxPrimScale() +{ + // SecondLife Mesh sims that allow 64m prims are ones that have BOTH these caps + if (gAgent.getRegion() + && !gAgent.getRegion()->getCapability("GetMesh").empty() + && !gAgent.getRegion()->getCapability("ObjectAdd").empty()) + { + mMaxPrimScale = 64.f; + } + else + { + mMaxPrimScale = 10.f; + } +} + F32 HippoLimits::getMaxPrimScale() const { if (gSavedSettings.getBOOL("DisableMaxBuildConstraints") && !mEnforceMaxBuild) diff --git a/linden/indra/newview/hippolimits.h b/linden/indra/newview/hippolimits.h index 9d6b2f6..d63d1b0 100644 --- a/linden/indra/newview/hippolimits.h +++ b/linden/indra/newview/hippolimits.h @@ -64,6 +64,7 @@ public: private: void setOpenSimLimits(); void setSecondLifeLimits(); + void setSecondLifeMaxPrimScale(); }; diff --git a/linden/indra/newview/llviewermessage.cpp b/linden/indra/newview/llviewermessage.cpp index f67f0dc..32d7172 100755 --- a/linden/indra/newview/llviewermessage.cpp +++ b/linden/indra/newview/llviewermessage.cpp @@ -3828,10 +3828,10 @@ void process_agent_movement_complete(LLMessageSystem* msg, void**) return; } + gHippoLimits->setLimits(); + if (!gLastVersionChannel.empty()) { - gHippoLimits->setLimits(); - if (gSavedSettings.getBOOL("ServerVersionChangedChat")) { LLStringUtil::format_map_t args; diff --git a/linden/indra/newview/llviewerregion.cpp b/linden/indra/newview/llviewerregion.cpp index eba0db7..a43e0c0 100644 --- a/linden/indra/newview/llviewerregion.cpp +++ b/linden/indra/newview/llviewerregion.cpp @@ -1439,12 +1439,14 @@ void LLViewerRegion::setSeedCapability(const std::string& url) capabilityNames.append("FetchLibDescendents"); capabilityNames.append("GetDisplayNames"); capabilityNames.append("SetDisplayName"); + capabilityNames.append("GetMesh"); // lets us know if this is a SL-Mesh region capabilityNames.append("GetTexture"); capabilityNames.append("GroupProposalBallot"); capabilityNames.append("HomeLocation"); capabilityNames.append("MapLayer"); capabilityNames.append("MapLayerGod"); capabilityNames.append("NewFileAgentInventory"); + capabilityNames.append("ObjectAdd"); // lets us know if this is a SL-Mesh region capabilityNames.append("ParcelPropertiesUpdate"); capabilityNames.append("ParcelMediaURLFilterList"); capabilityNames.append("ParcelNavigateMedia"); -- cgit v1.1