diff options
| -rwxr-xr-x | indra/llmath/llquaternion.h | 18 | ||||
| -rwxr-xr-x | indra/newview/llviewerobject.cpp | 2 | 
2 files changed, 19 insertions, 1 deletions
| diff --git a/indra/llmath/llquaternion.h b/indra/llmath/llquaternion.h index e56929ed0f..aa0b1752f4 100755 --- a/indra/llmath/llquaternion.h +++ b/indra/llmath/llquaternion.h @@ -71,6 +71,9 @@ public:  	void quantize8(F32 lower, F32 upper);							// changes the vector to reflect quatization  	void loadIdentity();											// Loads the quaternion that represents the identity rotation +	bool isEqualEps(const LLQuaternion &quat, F32 epsilon) const; +	bool isNotEqualEps(const LLQuaternion &quat, F32 epsilon) const; +  	const LLQuaternion&	set(F32 x, F32 y, F32 z, F32 w);		// Sets Quaternion to normalize(x, y, z, w)  	const LLQuaternion&	set(const LLQuaternion &quat);			// Copies Quaternion  	const LLQuaternion&	set(const F32 *q);						// Sets Quaternion to normalize(quat[VX], quat[VY], quat[VZ], quat[VW]) @@ -239,6 +242,21 @@ inline void LLQuaternion::loadIdentity()  	mQ[VW] = 1.0f;  } +inline bool LLQuaternion::isEqualEps(const LLQuaternion &quat, F32 epsilon) const +{ +	return ( fabs(mQ[VX] - quat.mQ[VX]) < epsilon +		&&	 fabs(mQ[VY] - quat.mQ[VY]) < epsilon +		&&	 fabs(mQ[VZ] - quat.mQ[VZ]) < epsilon +		&&	 fabs(mQ[VS] - quat.mQ[VS]) < epsilon ); +} + +inline bool LLQuaternion::isNotEqualEps(const LLQuaternion &quat, F32 epsilon) const +{ +	return (  fabs(mQ[VX] - quat.mQ[VX]) > epsilon +		||    fabs(mQ[VY] - quat.mQ[VY]) > epsilon +		||	  fabs(mQ[VZ] - quat.mQ[VZ]) > epsilon +		||    fabs(mQ[VS] - quat.mQ[VS]) > epsilon ); +}  inline const LLQuaternion&	LLQuaternion::set(F32 x, F32 y, F32 z, F32 w)  { diff --git a/indra/newview/llviewerobject.cpp b/indra/newview/llviewerobject.cpp index 97cefaf33c..33b442815d 100755 --- a/indra/newview/llviewerobject.cpp +++ b/indra/newview/llviewerobject.cpp @@ -2274,7 +2274,7 @@ U32 LLViewerObject::processUpdateMessage(LLMessageSystem *mesgsys,  		}  	} -	if ((new_rot != getRotation()) +	if ((new_rot.isNotEqualEps(getRotation(), F_ALMOST_ZERO))  		|| (new_angv != old_angv))  	{  		if (new_rot != mPreviousRotation) | 
