diff options
Diffstat (limited to 'indra/llmath/llbboxlocal.cpp')
-rw-r--r-- | indra/llmath/llbboxlocal.cpp | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/indra/llmath/llbboxlocal.cpp b/indra/llmath/llbboxlocal.cpp new file mode 100644 index 0000000000..ba0d4f38ed --- /dev/null +++ b/indra/llmath/llbboxlocal.cpp @@ -0,0 +1,37 @@ +/** + * @file llbboxlocal.cpp + * @brief General purpose bounding box class (Not axis aligned). + * + * Copyright (c) 2001-$CurrentYear$, Linden Research, Inc. + * $License$ + */ + +#include "linden_common.h" + +#include "llbboxlocal.h" +#include "m4math.h" + +void LLBBoxLocal::addPoint(const LLVector3& p) +{ + mMin.mV[VX] = llmin( p.mV[VX], mMin.mV[VX] ); + mMin.mV[VY] = llmin( p.mV[VY], mMin.mV[VY] ); + mMin.mV[VZ] = llmin( p.mV[VZ], mMin.mV[VZ] ); + mMax.mV[VX] = llmax( p.mV[VX], mMax.mV[VX] ); + mMax.mV[VY] = llmax( p.mV[VY], mMax.mV[VY] ); + mMax.mV[VZ] = llmax( p.mV[VZ], mMax.mV[VZ] ); +} + +void LLBBoxLocal::expand( F32 delta ) +{ + mMin.mV[VX] -= delta; + mMin.mV[VY] -= delta; + mMin.mV[VZ] -= delta; + mMax.mV[VX] += delta; + mMax.mV[VY] += delta; + mMax.mV[VZ] += delta; +} + +LLBBoxLocal operator*(const LLBBoxLocal &a, const LLMatrix4 &b) +{ + return LLBBoxLocal( a.mMin * b, a.mMax * b ); +} |