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.
parent
91dfd7e06c
commit
447aadc37b
|
|
@ -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());
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
{
|
||||
|
|
|
|||
Loading…
Reference in New Issue