diff options
author | Andrew Meadows <andrew@lindenlab.com> | 2010-12-14 08:52:33 -0800 |
---|---|---|
committer | Andrew Meadows <andrew@lindenlab.com> | 2010-12-14 08:52:33 -0800 |
commit | 64512b681e2f5582378d9943642a82c83cae30ac (patch) | |
tree | 2ebc13a3426054c315a63e53d94ce7a45e9e1e63 /indra/llmath/llbbox.cpp | |
parent | e040f16a4f2e50592a125a04185fd9f06ac49522 (diff) |
ER-398 viewer's encroachment logic only uses bounding box of root prim
Adding LLBBox::join() to allow us to compute the bounding box of a linked object
Diffstat (limited to 'indra/llmath/llbbox.cpp')
-rw-r--r-- | indra/llmath/llbbox.cpp | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/indra/llmath/llbbox.cpp b/indra/llmath/llbbox.cpp index 72c906b5ca..67a305d269 100644 --- a/indra/llmath/llbbox.cpp +++ b/indra/llmath/llbbox.cpp @@ -102,6 +102,19 @@ LLBBox LLBBox::getAxisAligned() const return aligned; } +// Increases the size to contain other_box +void LLBBox::join(const LLBBox& other_box) +{ + LLVector3 other_min = (other_box.mPosAgent - mPosAgent) - other_box.mMinLocal; + mMinLocal.mV[VX] = llmin( other_min.mV[VX], mMinLocal.mV[VX] ); + mMinLocal.mV[VY] = llmin( other_min.mV[VY], mMinLocal.mV[VY] ); + mMinLocal.mV[VZ] = llmin( other_min.mV[VZ], mMinLocal.mV[VZ] ); + + LLVector3 other_max = (other_box.mPosAgent - mPosAgent) + other_box.mMaxLocal; + mMaxLocal.mV[VX] = llmax( other_max.mV[VX], mMaxLocal.mV[VX] ); + mMaxLocal.mV[VY] = llmax( other_max.mV[VY], mMaxLocal.mV[VY] ); + mMaxLocal.mV[VZ] = llmax( other_max.mV[VZ], mMaxLocal.mV[VZ] ); +} void LLBBox::expand( F32 delta ) |