SL-937 - use dynamic box for rigged mesh attached to normal avatar as well. Still has a 2x error in the radius calc, but gets radius using the dynamic box.

meow-7.2.2
Brad Payne (Vir Linden) 2018-07-31 21:57:42 +01:00
parent 91dfd7e06c
commit 447aadc37b
2 changed files with 14 additions and 1 deletions

View File

@ -902,8 +902,11 @@ void LLDrawable::updateDistance(LLCamera& camera, bool force_update)
}
}
// MAINT-7926 Handle volumes in an animated object as a special case
if (volume->getAvatar() && volume->getAvatar()->isControlAvatar())
// SL-937: add dynamic box handling for rigged mesh on regular avatars.
//if (volume->getAvatar() && volume->getAvatar()->isControlAvatar())
if (volume->getAvatar())
{
const LLVector3* av_box = volume->getAvatar()->getLastAnimExtents();
LLVector3d cam_pos = gAgent.getPosGlobalFromAgent(LLViewerCamera::getInstance()->getOrigin());

View File

@ -1296,6 +1296,8 @@ BOOL LLVOVolume::calcLOD()
}
distance = avatar->mDrawable->mDistanceWRTCamera;
if (avatar->isControlAvatar())
{
// MAINT-7926 Handle volumes in an animated object as a special case
@ -1306,8 +1308,16 @@ BOOL LLVOVolume::calcLOD()
}
else
{
// Volume in a rigged mesh attached to a regular avatar.
#if 0
// Note this isn't really a radius, so distance calcs are off by factor of 2
radius = avatar->getBinRadius();
#else
// SL-937: add dynamic box handling for rigged mesh on regular avatars.
const LLVector3* box = avatar->getLastAnimExtents();
LLVector3 diag = box[1] - box[0];
radius = diag.magVec(); // preserve old BinRadius behavior - 2x off
#endif
}
if (distance <= 0.f || radius <= 0.f)
{