diff options
author | Dave Parks <davep@lindenlab.com> | 2022-04-25 15:58:07 -0500 |
---|---|---|
committer | Dave Parks <davep@lindenlab.com> | 2022-04-25 15:58:07 -0500 |
commit | bafa869c21cb8b329f94be6fa930a43d11699082 (patch) | |
tree | f674d4d4e3ab2d4ef4a7419594ea507506238232 /indra/newview | |
parent | 55179387c7481d3b4ae34f3a53e0256d2705733b (diff) |
SL-17239 Override face bounding box with avatar bounding box for rigged meshes when calculating virtual size.
Diffstat (limited to 'indra/newview')
-rw-r--r-- | indra/newview/llface.cpp | 31 |
1 files changed, 26 insertions, 5 deletions
diff --git a/indra/newview/llface.cpp b/indra/newview/llface.cpp index b4f4d52014..d1e2b8b93d 100644 --- a/indra/newview/llface.cpp +++ b/indra/newview/llface.cpp @@ -2364,14 +2364,35 @@ F32 LLFace::getTextureVirtualSize() BOOL LLFace::calcPixelArea(F32& cos_angle_to_view_dir, F32& radius) { - LL_PROFILE_ZONE_SCOPED_CATEGORY_FACE + LL_PROFILE_ZONE_SCOPED_CATEGORY_FACE; //VECTORIZE THIS //get area of circle around face - LLVector4a center; - center.load3(getPositionAgent().mV); - LLVector4a size; - size.setSub(mExtents[1], mExtents[0]); + + LLVector4a center; + LLVector4a size; + + + if (isState(LLFace::RIGGED)) + { + //override with avatar bounding box + LLVOAvatar* avatar = mVObjp->getAvatar(); + if (avatar) + { + center.load3(avatar->getPositionAgent().mV); + const LLVector4a* exts = avatar->mDrawable->getSpatialExtents(); + size.setSub(exts[1], exts[0]); + } + else + { + return false; + } + } + else + { + center.load3(getPositionAgent().mV); + size.setSub(mExtents[1], mExtents[0]); + } size.mul(0.5f); LLViewerCamera* camera = LLViewerCamera::getInstance(); |