summaryrefslogtreecommitdiff
path: root/indra/newview/lldrawable.cpp
diff options
context:
space:
mode:
authorAndrey Kleshchev <andreykproductengine@lindenlab.com>2023-08-24 01:23:52 +0300
committerAndrey Kleshchev <andreykproductengine@lindenlab.com>2023-08-24 01:23:52 +0300
commit7373fd91fa42b3fce0804ccd10899a5d1fdb5c36 (patch)
tree54a107f3415c04e6e493f54e156c3ac278d36f99 /indra/newview/lldrawable.cpp
parent264d9c32d9e04df0ceeaf2a63f6872aad29dd46a (diff)
parentd454512050e636a19e4b7545515dea4f4b1bbf0d (diff)
Merge remote-tracking branch 'origin/main' into DRTVWR-489
# Conflicts: # indra/llcommon/llsdserialize.cpp # indra/llcommon/llsdserialize.h # indra/llmath/llvolume.cpp # indra/llrender/llgl.cpp # indra/llxml/llcontrol.cpp # indra/newview/llpanelnearbymedia.cpp # indra/newview/llsceneview.cpp # indra/newview/llselectmgr.cpp # indra/newview/llstartup.cpp # indra/newview/lltextureview.cpp # indra/newview/llvovolume.cpp # indra/newview/skins/default/xui/en/menu_viewer.xml
Diffstat (limited to 'indra/newview/lldrawable.cpp')
-rw-r--r--indra/newview/lldrawable.cpp22
1 files changed, 18 insertions, 4 deletions
diff --git a/indra/newview/lldrawable.cpp b/indra/newview/lldrawable.cpp
index 4a0c9d399f..bb4174d3b6 100644
--- a/indra/newview/lldrawable.cpp
+++ b/indra/newview/lldrawable.cpp
@@ -763,6 +763,19 @@ void LLDrawable::movePartition()
if (part)
{
part->move(this, getSpatialGroup());
+
+ // SL-18251 "On-screen animesh characters using pelvis offset animations
+ // disappear when root goes off-screen"
+ //
+ // Update extents of the root node when Control Avatar changes it's bounds
+ if (mRenderType == LLPipeline::RENDER_TYPE_CONTROL_AV && isRoot())
+ {
+ LLControlAvatar* controlAvatar = dynamic_cast<LLControlAvatar*>(getVObj().get());
+ if (controlAvatar && controlAvatar->mControlAVBridge)
+ {
+ ((LLSpatialGroup*)controlAvatar->mControlAVBridge->mOctree->getListener(0))->setState(LLViewerOctreeGroup::DIRTY);
+ }
+ }
}
}
@@ -1216,10 +1229,11 @@ LLSpatialPartition* LLDrawable::getSpatialPartition()
{
setSpatialBridge(new LLHUDBridge(this, getRegion()));
}
- else if (mVObjp->isAnimatedObject() && mVObjp->getControlAvatar())
- {
- setSpatialBridge(new LLControlAVBridge(this, getRegion()));
- }
+ else if (mVObjp->isAnimatedObject() && mVObjp->getControlAvatar())
+ {
+ setSpatialBridge(new LLControlAVBridge(this, getRegion()));
+ mVObjp->getControlAvatar()->mControlAVBridge = (LLControlAVBridge*)getSpatialBridge();
+ }
// check HUD first, because HUD is also attachment
else if (mVObjp->isAttachment())
{