diff options
author | Nat Goodspeed <nat@lindenlab.com> | 2022-05-18 14:08:24 -0400 |
---|---|---|
committer | Nat Goodspeed <nat@lindenlab.com> | 2022-05-18 14:08:24 -0400 |
commit | c0aa1a1202678fdde0206c9372fb071c028cfe5b (patch) | |
tree | 614a5e0b9e24343c59709a9378050b601dd0f828 /indra/newview/llface.cpp | |
parent | 06aa68c2fbcd83cb00465c9f14933bda276b11e8 (diff) | |
parent | a9363222618a879dd7d0d78471f8773af6b61618 (diff) |
SL-17219: Merge 'DRTVWR-546' of lindenlab/viewer into SL-17219
Update task branch from main project branch.
Diffstat (limited to 'indra/newview/llface.cpp')
-rw-r--r-- | indra/newview/llface.cpp | 36 |
1 files changed, 31 insertions, 5 deletions
diff --git a/indra/newview/llface.cpp b/indra/newview/llface.cpp index 9bf9e7503e..740396178b 100644 --- a/indra/newview/llface.cpp +++ b/indra/newview/llface.cpp @@ -1172,6 +1172,11 @@ bool LLFace::canRenderAsMask() return true; } + if (isState(LLFace::RIGGED)) + { // never auto alpha-mask rigged faces + return false; + } + const LLTextureEntry* te = getTextureEntry(); if( !te || !getViewerObject() || !getTexture() ) { @@ -2360,14 +2365,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 && avatar->mDrawable) + { + 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(); |