summaryrefslogtreecommitdiff
path: root/indra/newview/llvoavatar.cpp
diff options
context:
space:
mode:
authorAndreyL ProductEngine <alihatskiy@productengine.com>2019-05-08 21:41:56 +0300
committerAndreyL ProductEngine <alihatskiy@productengine.com>2019-05-08 21:41:56 +0300
commit3175525950ecf568eb75a6cb4f9283ee32dcd9a5 (patch)
treee7e28987b5618ffcf081a3ef0bdbb9717ccd1d6c /indra/newview/llvoavatar.cpp
parent9d2cb130e35fcbab98d5e7cb4d0d26ca6a16503b (diff)
parent34322f8f37380df868703051230f2a4109602b3f (diff)
Merged in lindenlab/viewer-release
Diffstat (limited to 'indra/newview/llvoavatar.cpp')
-rw-r--r--indra/newview/llvoavatar.cpp29
1 files changed, 25 insertions, 4 deletions
diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp
index 321f774210..20fa327790 100644
--- a/indra/newview/llvoavatar.cpp
+++ b/indra/newview/llvoavatar.cpp
@@ -5992,7 +5992,7 @@ void LLVOAvatar::rebuildAttachmentOverrides()
LLViewerObject *vo = *at_it;
// Attached animated objects affect joints in their control
// avs, not the avs to which they are attached.
- if (!vo->isAnimatedObject())
+ if (vo && !vo->isAnimatedObject())
{
addAttachmentOverridesForObject(vo);
}
@@ -6043,7 +6043,7 @@ void LLVOAvatar::updateAttachmentOverrides()
LLViewerObject *vo = *at_it;
// Attached animated objects affect joints in their control
// avs, not the avs to which they are attached.
- if (!vo->isAnimatedObject())
+ if (vo && !vo->isAnimatedObject())
{
addAttachmentOverridesForObject(vo, &meshes_seen);
}
@@ -7037,12 +7037,33 @@ U32 LLVOAvatar::getNumAttachments() const
}
//-----------------------------------------------------------------------------
+// getMaxAttachments()
+//-----------------------------------------------------------------------------
+S32 LLVOAvatar::getMaxAttachments() const
+{
+ const S32 MAX_AGENT_ATTACHMENTS = 38;
+
+ S32 max_attach = MAX_AGENT_ATTACHMENTS;
+
+ if (gAgent.getRegion())
+ {
+ LLSD features;
+ gAgent.getRegion()->getSimulatorFeatures(features);
+ if (features.has("MaxAgentAttachments"))
+ {
+ max_attach = features["MaxAgentAttachments"].asInteger();
+ }
+ }
+ return max_attach;
+}
+
+//-----------------------------------------------------------------------------
// canAttachMoreObjects()
// Returns true if we can attach <n> more objects.
//-----------------------------------------------------------------------------
BOOL LLVOAvatar::canAttachMoreObjects(U32 n) const
{
- return (getNumAttachments() + n) <= MAX_AGENT_ATTACHMENTS;
+ return (getNumAttachments() + n) <= getMaxAttachments();
}
//-----------------------------------------------------------------------------
@@ -7070,7 +7091,7 @@ S32 LLVOAvatar::getMaxAnimatedObjectAttachments() const
S32 max_attach = 0;
if (gSavedSettings.getBOOL("AnimatedObjectsIgnoreLimits"))
{
- max_attach = MAX_AGENT_ATTACHMENTS;
+ max_attach = getMaxAttachments();
}
else
{