summaryrefslogtreecommitdiff
path: root/indra/newview/llvoavatar.cpp
diff options
context:
space:
mode:
authorDave Houlton <euclid@lindenlab.com>2022-05-26 16:16:47 -0600
committerDave Houlton <euclid@lindenlab.com>2022-05-26 16:16:47 -0600
commit78c6c341c5c068878da3dd851acf36f73a03178d (patch)
treeaec974cfa30a841599d2f927aec287482a4a3c08 /indra/newview/llvoavatar.cpp
parent3b3d3d88d1755ac08c7d22721fa3fe1657f7c5fd (diff)
parentcdbd06e8ed6e3f4285a61f5c0b607a65dfdf8dfd (diff)
Merge master v 6.6.1 into DRTVWR-559
Diffstat (limited to 'indra/newview/llvoavatar.cpp')
-rw-r--r--indra/newview/llvoavatar.cpp22
1 files changed, 19 insertions, 3 deletions
diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp
index ccb1662139..314c22eb6c 100644
--- a/indra/newview/llvoavatar.cpp
+++ b/indra/newview/llvoavatar.cpp
@@ -2809,6 +2809,7 @@ void LLVOAvatar::idleUpdateMisc(bool detailed_update)
// update attachments positions
if (detailed_update)
{
+ U32 draw_order = 0;
for (attachment_map_t::iterator iter = mAttachmentPoints.begin();
iter != mAttachmentPoints.end();
++iter)
@@ -2847,9 +2848,17 @@ void LLVOAvatar::idleUpdateMisc(bool detailed_update)
}
}
-
- attached_object->mDrawable->makeActive();
- attached_object->mDrawable->updateXform(TRUE);
+ // if selecting any attachments, update all of them as non-damped
+ if (LLSelectMgr::getInstance()->getSelection()->getObjectCount() && LLSelectMgr::getInstance()->getSelection()->isAttachment())
+ {
+ gPipeline.updateMoveNormalAsync(attached_object->mDrawable);
+ }
+ else
+ {
+ // Note: SL-17415; While most objects follow joints,
+ // some objects get position updates from server
+ gPipeline.updateMoveDampedAsync(attached_object->mDrawable);
+ }
// override_bbox calls movePartition() and getSpatialPartition(),
// so bridge might no longer be valid, get it again.
@@ -2867,6 +2876,13 @@ void LLVOAvatar::idleUpdateMisc(bool detailed_update)
bridge->setState(LLDrawable::MOVE_UNDAMPED);
bridge->updateMove();
bridge->setState(LLDrawable::EARLY_MOVE);
+
+ LLSpatialGroup* group = attached_object->mDrawable->getSpatialGroup();
+ if (group)
+ { //set draw order of group
+ group->mAvatarp = this;
+ group->mRenderOrder = draw_order++;
+ }
}
}