diff options
| author | simon <none@none> | 2014-05-07 13:19:05 -0700 | 
|---|---|---|
| committer | simon <none@none> | 2014-05-07 13:19:05 -0700 | 
| commit | dc4c184696b308b8f60fa1dd751b35e22bd47d62 (patch) | |
| tree | 1606d992f1cce6fe19572042c456725eb95d7066 /indra/llmath | |
| parent | 883467a3cc421fca68a25589114e0e3f0538ff0e (diff) | |
| parent | 250db74bf9325acdc1169f6c13d297e7fe44b753 (diff) | |
Merge downstream version 3.7.8 code
Diffstat (limited to 'indra/llmath')
| -rwxr-xr-x | indra/llmath/llcalc.cpp | 6 | ||||
| -rwxr-xr-x | indra/llmath/llcalcparser.h | 5 | ||||
| -rwxr-xr-x | indra/llmath/llcamera.cpp | 90 | ||||
| -rwxr-xr-x | indra/llmath/llcamera.h | 10 | ||||
| -rwxr-xr-x | indra/llmath/llcoordframe.cpp | 54 | ||||
| -rwxr-xr-x | indra/llmath/llline.cpp | 4 | ||||
| -rwxr-xr-x | indra/llmath/llmath.h | 9 | ||||
| -rwxr-xr-x | indra/llmath/lloctree.h | 34 | ||||
| -rwxr-xr-x | indra/llmath/llplane.h | 8 | ||||
| -rwxr-xr-x | indra/llmath/lltreenode.h | 9 | ||||
| -rwxr-xr-x | indra/llmath/llvolume.cpp | 84 | ||||
| -rwxr-xr-x | indra/llmath/llvolume.h | 1 | ||||
| -rwxr-xr-x | indra/llmath/llvolumemgr.cpp | 14 | ||||
| -rwxr-xr-x | indra/llmath/llvolumeoctree.cpp | 6 | ||||
| -rwxr-xr-x | indra/llmath/llvolumeoctree.h | 4 | ||||
| -rwxr-xr-x | indra/llmath/v4color.cpp | 6 | ||||
| -rwxr-xr-x | indra/llmath/v4color.h | 4 | ||||
| -rwxr-xr-x | indra/llmath/xform.cpp | 4 | ||||
| -rwxr-xr-x | indra/llmath/xform.h | 4 | 
19 files changed, 231 insertions, 125 deletions
| diff --git a/indra/llmath/llcalc.cpp b/indra/llmath/llcalc.cpp index 1b2d609b67..edc6986cc9 100755 --- a/indra/llmath/llcalc.cpp +++ b/indra/llmath/llcalc.cpp @@ -141,20 +141,20 @@ bool LLCalc::evalString(const std::string& expression, F32& result)  	try  	{  		info = parse(start, expr_upper.end(), calc, space_p); -		lldebugs << "Math expression: " << expression << " = " << result << llendl; +		LL_DEBUGS() << "Math expression: " << expression << " = " << result << LL_ENDL;  	}  	catch(parser_error<std::string, std::string::iterator> &e)  	{  		mLastErrorPos = e.where - expr_upper.begin(); -		llinfos << "Calc parser exception: " << e.descriptor << " at " << mLastErrorPos << " in expression: " << expression << llendl; +		LL_INFOS() << "Calc parser exception: " << e.descriptor << " at " << mLastErrorPos << " in expression: " << expression << LL_ENDL;  		return false;  	}  	if (!info.full)  	{  		mLastErrorPos = info.stop - expr_upper.begin(); -		llinfos << "Unhandled syntax error at " << mLastErrorPos << " in expression: " << expression << llendl; +		LL_INFOS() << "Unhandled syntax error at " << mLastErrorPos << " in expression: " << expression << LL_ENDL;  		return false;  	} diff --git a/indra/llmath/llcalcparser.h b/indra/llmath/llcalcparser.h index e0ad270266..faa699ff7b 100755 --- a/indra/llmath/llcalcparser.h +++ b/indra/llmath/llcalcparser.h @@ -163,7 +163,7 @@ private:  	bool checkNaN(const F32& a) const { return !llisnan(a); } -	//FIX* non ambigious function fix making SIN() work for calc -Cryogenic Blitz +	//FIX* non ambiguous function fix making SIN() work for calc -Cryogenic Blitz  	F32 _sin(const F32& a) const { return sin(DEG_TO_RAD * a); }  	F32 _cos(const F32& a) const { return cos(DEG_TO_RAD * a); }  	F32 _tan(const F32& a) const { return tan(DEG_TO_RAD * a); } @@ -176,11 +176,8 @@ private:  	F32 _fabs(const F32& a) const { return fabs(a); }  	F32 _floor(const F32& a) const { return (F32)llfloor(a); }  	F32 _ceil(const F32& a) const { return llceil(a); } -  	F32 _atan2(const F32& a,const F32& b) const { return atan2(a,b); } - -  	LLCalc::calc_map_t* mConstants;  	LLCalc::calc_map_t* mVariables;  //	LLCalc::calc_map_t* mUserVariables; diff --git a/indra/llmath/llcamera.cpp b/indra/llmath/llcamera.cpp index 33cf185196..ff90532f75 100755 --- a/indra/llmath/llcamera.cpp +++ b/indra/llmath/llcamera.cpp @@ -183,8 +183,30 @@ static	const LLVector4a sFrustumScaler[] =  	LLVector4a( 1, 1, 1)		// 8 entries  }; -S32 LLCamera::AABBInFrustum(const LLVector4a ¢er, const LLVector4a& radius)  +bool LLCamera::isChanged()  { +	bool changed = false; +	for (U32 i = 0; i < mPlaneCount; i++) +	{ +		U8 mask = mPlaneMask[i]; +		if (mask != 0xff && !changed) +		{ +			changed = !mAgentPlanes[i].equal(mLastAgentPlanes[i]); +		} +		mLastAgentPlanes[i].set(mAgentPlanes[i]); +	} + +	return changed; +} + +S32 LLCamera::AABBInFrustum(const LLVector4a ¢er, const LLVector4a& radius, const LLPlane* planes)  +{ +	if(!planes) +	{ +		//use agent space +		planes = mAgentPlanes; +	} +  	U8 mask = 0;  	bool result = false;  	LLVector4a rscale, maxp, minp; @@ -195,7 +217,7 @@ S32 LLCamera::AABBInFrustum(const LLVector4a ¢er, const LLVector4a& radius)  		mask = mPlaneMask[i];  		if (mask < PLANE_MASK_NUM)  		{ -			const LLPlane& p(mAgentPlanes[i]); +			const LLPlane& p(planes[i]);  			p.getAt<3>(d);  			rscale.setMul(radius, sFrustumScaler[mask]);  			minp.setSub(center, rscale); @@ -216,9 +238,21 @@ S32 LLCamera::AABBInFrustum(const LLVector4a ¢er, const LLVector4a& radius)  	return result?1:2;  } +//exactly same as the function AABBInFrustum(...) +//except uses mRegionPlanes instead of mAgentPlanes. +S32 LLCamera::AABBInRegionFrustum(const LLVector4a& center, const LLVector4a& radius)  +{ +	return AABBInFrustum(center, radius, mRegionPlanes); +} -S32 LLCamera::AABBInFrustumNoFarClip(const LLVector4a& center, const LLVector4a& radius)  +S32 LLCamera::AABBInFrustumNoFarClip(const LLVector4a& center, const LLVector4a& radius, const LLPlane* planes)   { +	if(!planes) +	{ +		//use agent space +		planes = mAgentPlanes; +	} +  	U8 mask = 0;  	bool result = false;  	LLVector4a rscale, maxp, minp; @@ -229,7 +263,7 @@ S32 LLCamera::AABBInFrustumNoFarClip(const LLVector4a& center, const LLVector4a&  		mask = mPlaneMask[i];  		if ((i != 5) && (mask < PLANE_MASK_NUM))  		{ -			const LLPlane& p(mAgentPlanes[i]); +			const LLPlane& p(planes[i]);  			p.getAt<3>(d);  			rscale.setMul(radius, sFrustumScaler[mask]);  			minp.setSub(center, rscale); @@ -250,6 +284,13 @@ S32 LLCamera::AABBInFrustumNoFarClip(const LLVector4a& center, const LLVector4a&  	return result?1:2;  } +//exactly same as the function AABBInFrustumNoFarClip(...) +//except uses mRegionPlanes instead of mAgentPlanes. +S32 LLCamera::AABBInRegionFrustumNoFarClip(const LLVector4a& center, const LLVector4a& radius)  +{ +	return AABBInFrustumNoFarClip(center, radius, mRegionPlanes); +} +  int LLCamera::sphereInFrustumQuick(const LLVector3 &sphere_center, const F32 radius)   {  	LLVector3 dist = sphere_center-mFrustCenter; @@ -586,6 +627,47 @@ void LLCamera::calcAgentFrustumPlanes(LLVector3* frust)  	}  } +//calculate regional planes from mAgentPlanes. +//vector "shift" is the vector of the region origin in the agent space. +void LLCamera::calcRegionFrustumPlanes(const LLVector3& shift, F32 far_clip_distance)  +{ +	F32 far_w; +	{ +		LLVector3 p = getOrigin(); +		LLVector3 n(mAgentPlanes[5][0], mAgentPlanes[5][1], mAgentPlanes[5][2]); +		F32 dd = n * p; +		if(dd + mAgentPlanes[5][3] < 0) //signed distance +		{ +			far_w = -far_clip_distance - dd; +		} +		else +		{ +			far_w = far_clip_distance - dd; +		} +		far_w += n * shift; +	} + +	F32 d; +	LLVector3 n; +	for(S32 i = 0 ; i < 7; i++) +	{ +		if (mPlaneMask[i] != 0xff) +		{ +			n.setVec(mAgentPlanes[i][0], mAgentPlanes[i][1], mAgentPlanes[i][2]); + +			if(i != 5) +			{ +				d = mAgentPlanes[i][3] + n * shift; +			} +			else +			{ +				d = far_w; +			} +			mRegionPlanes[i].setVec(n, d); +		} +	} +} +  void LLCamera::calculateFrustumPlanes(F32 left, F32 right, F32 top, F32 bottom)  {  	LLVector3 a, b, c; diff --git a/indra/llmath/llcamera.h b/indra/llmath/llcamera.h index 1283cfb16b..321b8ddcc4 100755 --- a/indra/llmath/llcamera.h +++ b/indra/llmath/llcamera.h @@ -122,6 +122,8 @@ public:  private:  	LL_ALIGN_16(LLPlane mAgentPlanes[AGENT_PLANE_USER_CLIP_NUM]);  //frustum planes in agent space a la gluUnproject (I'm a bastard, I know) - DaveP +	LL_ALIGN_16(LLPlane mRegionPlanes[AGENT_PLANE_USER_CLIP_NUM]);  //frustum planes in a local region space, derived from mAgentPlanes +	LL_ALIGN_16(LLPlane mLastAgentPlanes[AGENT_PLANE_USER_CLIP_NUM]);  	U8 mPlaneMask[PLANE_MASK_NUM];         // 8 for alignment	  	F32 mView;					// angle between top and bottom frustum planes in radians. @@ -150,6 +152,7 @@ public:  	LLCamera(F32 vertical_fov_rads, F32 aspect_ratio, S32 view_height_in_pixels, F32 near_plane, F32 far_plane);  	virtual ~LLCamera(); +	bool isChanged(); //check if mAgentPlanes changed since last frame.  	void setUserClipPlane(LLPlane& plane);  	void disableUserClipPlane(); @@ -191,6 +194,7 @@ public:  	// Return number of bytes copied.  	size_t readFrustumFromBuffer(const char *buffer);  	void calcAgentFrustumPlanes(LLVector3* frust); +	void calcRegionFrustumPlanes(const LLVector3& shift, F32 far_clip_distance); //calculate regional planes from mAgentPlanes.  	void ignoreAgentFrustumPlane(S32 idx);  	// Returns 1 if partly in, 2 if fully in. @@ -199,8 +203,10 @@ public:  	S32 sphereInFrustum(const LLVector3 ¢er, const F32 radius) const;  	S32 pointInFrustum(const LLVector3 &point) const { return sphereInFrustum(point, 0.0f); }  	S32 sphereInFrustumFull(const LLVector3 ¢er, const F32 radius) const { return sphereInFrustum(center, radius); } -	S32 AABBInFrustum(const LLVector4a& center, const LLVector4a& radius); -	S32 AABBInFrustumNoFarClip(const LLVector4a& center, const LLVector4a& radius); +	S32 AABBInFrustum(const LLVector4a& center, const LLVector4a& radius, const LLPlane* planes = NULL); +	S32 AABBInRegionFrustum(const LLVector4a& center, const LLVector4a& radius); +	S32 AABBInFrustumNoFarClip(const LLVector4a& center, const LLVector4a& radius, const LLPlane* planes = NULL); +	S32 AABBInRegionFrustumNoFarClip(const LLVector4a& center, const LLVector4a& radius);  	//does a quick 'n dirty sphere-sphere check  	S32 sphereInFrustumQuick(const LLVector3 &sphere_center, const F32 radius);  diff --git a/indra/llmath/llcoordframe.cpp b/indra/llmath/llcoordframe.cpp index 7dd8e43185..1bf51ca0eb 100755 --- a/indra/llmath/llcoordframe.cpp +++ b/indra/llmath/llcoordframe.cpp @@ -59,7 +59,7 @@ LLCoordFrame::LLCoordFrame(const LLVector3 &origin) :  	if( !mOrigin.isFinite() )  	{  		reset(); -		llwarns << "Non Finite in LLCoordFrame::LLCoordFrame()" << llendl; +		LL_WARNS() << "Non Finite in LLCoordFrame::LLCoordFrame()" << LL_ENDL;  	}  } @@ -71,7 +71,7 @@ LLCoordFrame::LLCoordFrame(const LLVector3 &origin, const LLVector3 &direction)  	if( !isFinite() )  	{  		reset(); -		llwarns << "Non Finite in LLCoordFrame::LLCoordFrame()" << llendl; +		LL_WARNS() << "Non Finite in LLCoordFrame::LLCoordFrame()" << LL_ENDL;  	}  } @@ -86,7 +86,7 @@ LLCoordFrame::LLCoordFrame(const LLVector3 &x_axis,  	if( !isFinite() )  	{  		reset(); -		llwarns << "Non Finite in LLCoordFrame::LLCoordFrame()" << llendl; +		LL_WARNS() << "Non Finite in LLCoordFrame::LLCoordFrame()" << LL_ENDL;  	}  } @@ -102,7 +102,7 @@ LLCoordFrame::LLCoordFrame(const LLVector3 &origin,  	if( !isFinite() )  	{  		reset(); -		llwarns << "Non Finite in LLCoordFrame::LLCoordFrame()" << llendl; +		LL_WARNS() << "Non Finite in LLCoordFrame::LLCoordFrame()" << LL_ENDL;  	}  } @@ -117,7 +117,7 @@ LLCoordFrame::LLCoordFrame(const LLVector3 &origin,  	if( !isFinite() )  	{  		reset(); -		llwarns << "Non Finite in LLCoordFrame::LLCoordFrame()" << llendl; +		LL_WARNS() << "Non Finite in LLCoordFrame::LLCoordFrame()" << LL_ENDL;  	}  } @@ -132,7 +132,7 @@ LLCoordFrame::LLCoordFrame(const LLQuaternion &q) :  	if( !isFinite() )  	{  		reset(); -		llwarns << "Non Finite in LLCoordFrame::LLCoordFrame()" << llendl; +		LL_WARNS() << "Non Finite in LLCoordFrame::LLCoordFrame()" << LL_ENDL;  	}  } @@ -147,7 +147,7 @@ LLCoordFrame::LLCoordFrame(const LLVector3 &origin, const LLQuaternion &q) :  	if( !isFinite() )  	{  		reset(); -		llwarns << "Non Finite in LLCoordFrame::LLCoordFrame()" << llendl; +		LL_WARNS() << "Non Finite in LLCoordFrame::LLCoordFrame()" << LL_ENDL;  	}  } @@ -160,7 +160,7 @@ LLCoordFrame::LLCoordFrame(const LLMatrix4 &mat) :  	if( !isFinite() )  	{  		reset(); -		llwarns << "Non Finite in LLCoordFrame::LLCoordFrame()" << llendl; +		LL_WARNS() << "Non Finite in LLCoordFrame::LLCoordFrame()" << LL_ENDL;  	}  } @@ -176,7 +176,7 @@ LLCoordFrame::LLCoordFrame(const F32 *origin, const F32 *rotation) :  	if( !isFinite() )  	{  		reset(); -		llwarns << "Non Finite in LLCoordFrame::LLCoordFrame()" << llendl; +		LL_WARNS() << "Non Finite in LLCoordFrame::LLCoordFrame()" << LL_ENDL;  	}  }  */ @@ -191,7 +191,7 @@ LLCoordFrame::LLCoordFrame(const F32 *origin_and_rotation) :  	if( !isFinite() )  	{  		reset(); -		llwarns << "Non Finite in LLCoordFrame::LLCoordFrame()" << llendl; +		LL_WARNS() << "Non Finite in LLCoordFrame::LLCoordFrame()" << LL_ENDL;  	}  }  */ @@ -220,7 +220,7 @@ void LLCoordFrame::setOrigin(F32 x, F32 y, F32 z)  	if( !mOrigin.isFinite() )  	{  		reset(); -		llwarns << "Non Finite in LLCoordFrame::setOrigin()" << llendl; +		LL_WARNS() << "Non Finite in LLCoordFrame::setOrigin()" << LL_ENDL;  	}  } @@ -230,7 +230,7 @@ void LLCoordFrame::setOrigin(const LLVector3 &new_origin)  	if( !mOrigin.isFinite() )  	{  		reset(); -		llwarns << "Non Finite in LLCoordFrame::setOrigin()" << llendl; +		LL_WARNS() << "Non Finite in LLCoordFrame::setOrigin()" << LL_ENDL;  	}  } @@ -243,7 +243,7 @@ void LLCoordFrame::setOrigin(const F32 *origin)  	if( !mOrigin.isFinite() )  	{  		reset(); -		llwarns << "Non Finite in LLCoordFrame::setOrigin()" << llendl; +		LL_WARNS() << "Non Finite in LLCoordFrame::setOrigin()" << LL_ENDL;  	}  } @@ -254,7 +254,7 @@ void LLCoordFrame::setOrigin(const LLCoordFrame &frame)  	if( !mOrigin.isFinite() )  	{  		reset(); -		llwarns << "Non Finite in LLCoordFrame::setOrigin()" << llendl; +		LL_WARNS() << "Non Finite in LLCoordFrame::setOrigin()" << LL_ENDL;  	}  } @@ -271,7 +271,7 @@ void LLCoordFrame::setAxes(const LLVector3 &x_axis,  	if( !isFinite() )  	{  		reset(); -		llwarns << "Non Finite in LLCoordFrame::setAxes()" << llendl; +		LL_WARNS() << "Non Finite in LLCoordFrame::setAxes()" << LL_ENDL;  	}  } @@ -284,7 +284,7 @@ void LLCoordFrame::setAxes(const LLMatrix3 &rotation_matrix)  	if( !isFinite() )  	{  		reset(); -		llwarns << "Non Finite in LLCoordFrame::setAxes()" << llendl; +		LL_WARNS() << "Non Finite in LLCoordFrame::setAxes()" << LL_ENDL;  	}  } @@ -296,7 +296,7 @@ void LLCoordFrame::setAxes(const LLQuaternion &q )  	if( !isFinite() )  	{  		reset(); -		llwarns << "Non Finite in LLCoordFrame::setAxes()" << llendl; +		LL_WARNS() << "Non Finite in LLCoordFrame::setAxes()" << LL_ENDL;  	}  } @@ -316,7 +316,7 @@ void LLCoordFrame::setAxes(  const F32 *rotation_matrix )  	if( !isFinite() )  	{  		reset(); -		llwarns << "Non Finite in LLCoordFrame::setAxes()" << llendl; +		LL_WARNS() << "Non Finite in LLCoordFrame::setAxes()" << LL_ENDL;  	}  } @@ -330,7 +330,7 @@ void LLCoordFrame::setAxes(const LLCoordFrame &frame)  	if( !isFinite() )  	{  		reset(); -		llwarns << "Non Finite in LLCoordFrame::setAxes()" << llendl; +		LL_WARNS() << "Non Finite in LLCoordFrame::setAxes()" << LL_ENDL;  	}  } @@ -346,7 +346,7 @@ void LLCoordFrame::translate(F32 x, F32 y, F32 z)  	if( !mOrigin.isFinite() )  	{  		reset(); -		llwarns << "Non Finite in LLCoordFrame::translate()" << llendl; +		LL_WARNS() << "Non Finite in LLCoordFrame::translate()" << LL_ENDL;  	}  } @@ -358,7 +358,7 @@ void LLCoordFrame::translate(const LLVector3 &v)  	if( !mOrigin.isFinite() )  	{  		reset(); -		llwarns << "Non Finite in LLCoordFrame::translate()" << llendl; +		LL_WARNS() << "Non Finite in LLCoordFrame::translate()" << LL_ENDL;  	}  } @@ -372,7 +372,7 @@ void LLCoordFrame::translate(const F32 *origin)  	if( !mOrigin.isFinite() )  	{  		reset(); -		llwarns << "Non Finite in LLCoordFrame::translate()" << llendl; +		LL_WARNS() << "Non Finite in LLCoordFrame::translate()" << LL_ENDL;  	}  } @@ -409,7 +409,7 @@ void LLCoordFrame::rotate(const LLMatrix3 &rotation_matrix)  	if( !isFinite() )  	{  		reset(); -		llwarns << "Non Finite in LLCoordFrame::rotate()" << llendl; +		LL_WARNS() << "Non Finite in LLCoordFrame::rotate()" << LL_ENDL;  	}  } @@ -423,7 +423,7 @@ void LLCoordFrame::roll(F32 angle)  	if( !mYAxis.isFinite() || !mZAxis.isFinite() )  	{  		reset(); -		llwarns << "Non Finite in LLCoordFrame::roll()" << llendl; +		LL_WARNS() << "Non Finite in LLCoordFrame::roll()" << LL_ENDL;  	}  } @@ -436,7 +436,7 @@ void LLCoordFrame::pitch(F32 angle)  	if( !mXAxis.isFinite() || !mZAxis.isFinite() )  	{  		reset(); -		llwarns << "Non Finite in LLCoordFrame::pitch()" << llendl; +		LL_WARNS() << "Non Finite in LLCoordFrame::pitch()" << LL_ENDL;  	}  } @@ -449,7 +449,7 @@ void LLCoordFrame::yaw(F32 angle)  	if( !mXAxis.isFinite() || !mYAxis.isFinite() )  	{  		reset(); -		llwarns << "Non Finite in LLCoordFrame::yaw()" << llendl; +		LL_WARNS() << "Non Finite in LLCoordFrame::yaw()" << LL_ENDL;  	}  } @@ -509,7 +509,7 @@ size_t LLCoordFrame::readOrientation(const char *buffer)  	if( !isFinite() )  	{  		reset(); -		llwarns << "Non Finite in LLCoordFrame::readOrientation()" << llendl; +		LL_WARNS() << "Non Finite in LLCoordFrame::readOrientation()" << LL_ENDL;  	}  	return 12*sizeof(F32); diff --git a/indra/llmath/llline.cpp b/indra/llmath/llline.cpp index ef10d1e7fa..f26231840b 100755 --- a/indra/llmath/llline.cpp +++ b/indra/llmath/llline.cpp @@ -82,10 +82,10 @@ LLVector3 LLLine::nearestApproach( const LLLine& other_line ) const  	if ( one_minus_dir_dot_dir < SOME_VERY_SMALL_NUMBER )  	{  #ifdef LL_DEBUG -		llwarns << "LLLine::nearestApproach() was given two very " +		LL_WARNS() << "LLLine::nearestApproach() was given two very "  			<< "nearly parallel lines dir1 = " << mDirection   			<< " dir2 = " << other_line.mDirection << " with 1-dot_product = "  -			<< one_minus_dir_dot_dir << llendl; +			<< one_minus_dir_dot_dir << LL_ENDL;  #endif  		// the lines are approximately parallel  		// We shouldn't fall in here because this check should have been made diff --git a/indra/llmath/llmath.h b/indra/llmath/llmath.h index 5abd9a0d06..b730676b78 100755 --- a/indra/llmath/llmath.h +++ b/indra/llmath/llmath.h @@ -30,6 +30,7 @@  #include <cmath>  #include <cstdlib>  #include <vector> +#include <limits>  #include "lldefs.h"  //#include "llstl.h" // *TODO: Remove when LLString is gone  //#include "llstring.h" // *TODO: Remove when LLString is gone @@ -76,6 +77,8 @@ const F32	OO_SQRT3	= 0.577350269189625764509f;  const F32	DEG_TO_RAD	= 0.017453292519943295769236907684886f;  const F32	RAD_TO_DEG	= 57.295779513082320876798154814105f;  const F32	F_APPROXIMATELY_ZERO = 0.00001f; +const F32	F_LN10		= 2.3025850929940456840179914546844f; +const F32	OO_LN10		= 0.43429448190325182765112891891661;  const F32	F_LN2		= 0.69314718056f;  const F32	OO_LN2		= 1.4426950408889634073599246810019f; @@ -112,6 +115,12 @@ inline bool is_approx_zero( F32 f ) { return (-F_APPROXIMATELY_ZERO < f) && (f <  // WARNING: Infinity is comparable with F32_MAX and negative   // infinity is comparable with F32_MIN +// handles negative and positive zeros +inline bool is_zero(F32 x) +{ +	return (*(U32*)(&x) & 0x7fffffff) == 0; +} +  inline bool is_approx_equal(F32 x, F32 y)  {  	const S32 COMPARE_MANTISSA_UP_TO_BIT = 0x02; diff --git a/indra/llmath/lloctree.h b/indra/llmath/lloctree.h index f7d5f14ba3..7b5240c651 100755 --- a/indra/llmath/lloctree.h +++ b/indra/llmath/lloctree.h @@ -268,12 +268,12 @@ public:  				if (child->getOctant() != i)  				{ -					llerrs << "Invalid child map, bad octant data." << llendl; +					LL_ERRS() << "Invalid child map, bad octant data." << LL_ENDL;  				}  				if (getOctant(child->getCenter()) != child->getOctant())  				{ -					llerrs << "Invalid child octant compared to position data." << llendl; +					LL_ERRS() << "Invalid child octant compared to position data." << LL_ENDL;  				}  			}  		} @@ -314,7 +314,7 @@ public:  	{  		if (data == NULL || data->getBinIndex() != -1)  		{ -			OCT_ERRS << "!!! INVALID ELEMENT ADDED TO OCTREE BRANCH !!!" << llendl; +			OCT_ERRS << "!!! INVALID ELEMENT ADDED TO OCTREE BRANCH !!!" << LL_ENDL;  			return false;  		}  		LLOctreeNode<T>* parent = getOctParent(); @@ -378,7 +378,7 @@ public:  				if (getChildCount() == 8)  				{  					//this really isn't possible, something bad has happened -					OCT_ERRS << "Octree detected floating point error and gave up." << llendl; +					OCT_ERRS << "Octree detected floating point error and gave up." << LL_ENDL;  					return false;  				} @@ -387,7 +387,7 @@ public:  				{  					if (mChild[i]->getCenter().equals3(center))  					{ -						OCT_ERRS << "Octree detected duplicate child center and gave up." << llendl; +						OCT_ERRS << "Octree detected duplicate child center and gave up." << LL_ENDL;  						return false;  					}  				} @@ -404,7 +404,7 @@ public:  		else   		{  			//it's not in here, give it to the root -			OCT_ERRS << "Octree insertion failed, starting over from root!" << llendl; +			OCT_ERRS << "Octree insertion failed, starting over from root!" << LL_ENDL;  			oct_node* node = this; @@ -488,7 +488,7 @@ public:  		}  		//node is now root -		llwarns << "!!! OCTREE REMOVING ELEMENT BY ADDRESS, SEVERE PERFORMANCE PENALTY |||" << llendl; +		LL_WARNS() << "!!! OCTREE REMOVING ELEMENT BY ADDRESS, SEVERE PERFORMANCE PENALTY |||" << LL_ENDL;  		node->removeByAddress(data);  		llassert(data->getBinIndex() == -1);  		return true; @@ -501,7 +501,7 @@ public:  			if (mData[i] == data)  			{ //we have data  				_remove(data, i); -				llwarns << "FOUND!" << llendl; +				LL_WARNS() << "FOUND!" << LL_ENDL;  				return;  			}  		} @@ -529,7 +529,7 @@ public:  			mChild[i]->validate();  			if (mChild[i]->getParent() != this)  			{ -				llerrs << "Octree child has invalid parent." << llendl; +				LL_ERRS() << "Octree child has invalid parent." << LL_ENDL;  			}  		}  #endif @@ -555,24 +555,24 @@ public:  		if (child->getSize().equals3(getSize()))  		{ -			OCT_ERRS << "Child size is same as parent size!" << llendl; +			OCT_ERRS << "Child size is same as parent size!" << LL_ENDL;  		}  		for (U32 i = 0; i < getChildCount(); i++)  		{  			if(!mChild[i]->getSize().equals3(child->getSize()))   			{ -				OCT_ERRS <<"Invalid octree child size." << llendl; +				OCT_ERRS <<"Invalid octree child size." << LL_ENDL;  			}  			if (mChild[i]->getCenter().equals3(child->getCenter()))  			{ -				OCT_ERRS <<"Duplicate octree child position." << llendl; +				OCT_ERRS <<"Duplicate octree child position." << LL_ENDL;  			}  		}  		if (mChild.size() >= 8)  		{ -			OCT_ERRS <<"Octree node has too many children... why?" << llendl; +			OCT_ERRS <<"Octree node has too many children... why?" << LL_ENDL;  		}  #endif @@ -646,7 +646,7 @@ public:  			}  		} -		OCT_ERRS << "Octree failed to delete requested child." << llendl; +		OCT_ERRS << "Octree failed to delete requested child." << LL_ENDL;  	}  protected:	 @@ -729,13 +729,13 @@ public:  	{  		if (data == NULL)   		{ -			OCT_ERRS << "!!! INVALID ELEMENT ADDED TO OCTREE ROOT !!!" << llendl; +			OCT_ERRS << "!!! INVALID ELEMENT ADDED TO OCTREE ROOT !!!" << LL_ENDL;  			return false;  		}  		if (data->getBinRadius() > 4096.0)  		{ -			OCT_ERRS << "!!! ELEMENT EXCEEDS MAXIMUM SIZE IN OCTREE ROOT !!!" << llendl; +			OCT_ERRS << "!!! ELEMENT EXCEEDS MAXIMUM SIZE IN OCTREE ROOT !!!" << LL_ENDL;  			return false;  		} @@ -751,7 +751,7 @@ public:  		if (lt != 0x7)  		{ -			//OCT_ERRS << "!!! ELEMENT EXCEEDS RANGE OF SPATIAL PARTITION !!!" << llendl; +			//OCT_ERRS << "!!! ELEMENT EXCEEDS RANGE OF SPATIAL PARTITION !!!" << LL_ENDL;  			return false;  		} diff --git a/indra/llmath/llplane.h b/indra/llmath/llplane.h index 3c32441b11..64a3eed0e5 100755 --- a/indra/llmath/llplane.h +++ b/indra/llmath/llplane.h @@ -93,7 +93,13 @@ public:  	{   		return mV.greaterEqual(LLVector4a::getZero()).getGatheredBits() & LLVector4Logical::MASK_XYZ;  	} -		 +	 +	//check if two planes are nearly same +	bool equal(const LLPlane& p) const +	{ +		return mV.equals4(p.mV); +	} +  private:  	LLVector4a mV;  } LL_ALIGN_POSTFIX(16); diff --git a/indra/llmath/lltreenode.h b/indra/llmath/lltreenode.h index c66bc26176..0b479c4564 100755 --- a/indra/llmath/lltreenode.h +++ b/indra/llmath/lltreenode.h @@ -57,7 +57,14 @@ public:  	virtual bool remove(T* data);  	virtual void notifyRemoval(T* data);  	virtual U32 getListenerCount()					{ return mListeners.size(); } -	virtual LLTreeListener<T>* getListener(U32 index) const { return mListeners[index]; } +	virtual LLTreeListener<T>* getListener(U32 index) const  +	{ +		if(index < mListeners.size()) +		{ +			return mListeners[index];  +		} +		return NULL; +	}  	virtual void addListener(LLTreeListener<T>* listener) { mListeners.push_back(listener); }  protected: diff --git a/indra/llmath/llvolume.cpp b/indra/llmath/llvolume.cpp index cc5742ff7a..d9a68cb577 100755 --- a/indra/llmath/llvolume.cpp +++ b/indra/llmath/llvolume.cpp @@ -44,7 +44,6 @@  #include "m3math.h"  #include "llmatrix3a.h"  #include "lloctree.h" -#include "lldarray.h"  #include "llvolume.h"  #include "llvolumeoctree.h"  #include "llstl.h" @@ -427,7 +426,7 @@ public:  		}  		else  		{ -			llerrs << "Empty leaf" << llendl; +			LL_ERRS() << "Empty leaf" << LL_ENDL;  		}  		for (S32 i = 0; i < branch->getChildCount(); ++i) @@ -834,7 +833,7 @@ BOOL LLProfile::generate(const LLProfileParams& params, BOOL path_open,F32 detai  	if (detail < MIN_LOD)  	{ -		llinfos << "Generating profile with LOD < MIN_LOD.  CLAMPING" << llendl; +		LL_INFOS() << "Generating profile with LOD < MIN_LOD.  CLAMPING" << LL_ENDL;  		detail = MIN_LOD;  	} @@ -850,7 +849,7 @@ BOOL LLProfile::generate(const LLProfileParams& params, BOOL path_open,F32 detai  	// Quick validation to eliminate some server crashes.  	if (begin > end - 0.01f)  	{ -		llwarns << "LLProfile::generate() assertion failed (begin >= end)" << llendl; +		LL_WARNS() << "LLProfile::generate() assertion failed (begin >= end)" << LL_ENDL;  		return FALSE;  	} @@ -1071,7 +1070,7 @@ BOOL LLProfile::generate(const LLProfileParams& params, BOOL path_open,F32 detai  		}  		break;  	default: -	    llerrs << "Unknown profile: getCurveType()=" << params.getCurveType() << llendl; +	    LL_ERRS() << "Unknown profile: getCurveType()=" << params.getCurveType() << LL_ENDL;  		break;  	}; @@ -1153,7 +1152,7 @@ BOOL LLProfileParams::importFile(LLFILE *fp)  		}  		else  		{ -			llwarns << "unknown keyword " << keyword << " in profile import" << llendl; +			LL_WARNS() << "unknown keyword " << keyword << " in profile import" << LL_ENDL;  		}  	} @@ -1225,7 +1224,7 @@ BOOL LLProfileParams::importLegacyStream(std::istream& input_stream)  		}  		else  		{ - 		llwarns << "unknown keyword " << keyword << " in profile import" << llendl; + 		LL_WARNS() << "unknown keyword " << keyword << " in profile import" << LL_ENDL;  		}  	} @@ -1547,7 +1546,7 @@ BOOL LLPath::generate(const LLPathParams& params, F32 detail, S32 split,  	if (detail < MIN_LOD)  	{ -		llinfos << "Generating path with LOD < MIN!  Clamping to 1" << llendl; +		LL_INFOS() << "Generating path with LOD < MIN!  Clamping to 1" << LL_ENDL;  		detail = MIN_LOD;  	} @@ -1649,7 +1648,7 @@ BOOL LLPath::generate(const LLPathParams& params, F32 detail, S32 split,  			F32 t = (F32)i * mStep;  			mPath[i].mPos.set(0,  								lerp(0,   -sin(F_PI*params.getTwist()*t)*0.5f,t), -								lerp(-0.5, cos(F_PI*params.getTwist()*t)*0.5f,t)); +								lerp(-0.5f, cos(F_PI*params.getTwist()*t)*0.5f,t));  			mPath[i].mScale.set(lerp(1,params.getScale().mV[0],t),  								lerp(1,params.getScale().mV[1],t), 0,1);  			mPath[i].mTexT  = t; @@ -1809,7 +1808,7 @@ BOOL LLPathParams::importFile(LLFILE *fp)  		}  		else  		{ -			llwarns << "unknown keyword " << " in path import" << llendl; +			LL_WARNS() << "unknown keyword " << " in path import" << LL_ENDL;  		}  	}  	return TRUE; @@ -1949,7 +1948,7 @@ BOOL LLPathParams::importLegacyStream(std::istream& input_stream)  		}  		else  		{ -			llwarns << "unknown keyword " << " in path import" << llendl; +			LL_WARNS() << "unknown keyword " << " in path import" << LL_ENDL;  		}  	}  	return TRUE; @@ -2040,7 +2039,7 @@ LLProfile::~LLProfile()  {  	if(profile_delete_lock)  	{ -		llerrs << "LLProfile should not be deleted here!" << llendl ; +		LL_ERRS() << "LLProfile should not be deleted here!" << LL_ENDL ;  	}  } @@ -2087,6 +2086,7 @@ void LLVolume::resizePath(S32 length)  {  	mPathp->resizePath(length);  	mVolumeFaces.clear(); +	setDirty();  }  void LLVolume::regen() @@ -2375,7 +2375,7 @@ bool LLVolume::unpackVolumeFaces(std::istream& is, S32 size)  	LLSD mdl;  	if (!unzip_llsd(mdl, is, size))  	{ -		LL_DEBUGS("MeshStreaming") << "Failed to unzip LLSD blob for LoD, will probably fetch from sim again." << llendl; +		LL_DEBUGS("MeshStreaming") << "Failed to unzip LLSD blob for LoD, will probably fetch from sim again." << LL_ENDL;  		return false;  	} @@ -2384,7 +2384,7 @@ bool LLVolume::unpackVolumeFaces(std::istream& is, S32 size)  		if (face_count == 0)  		{ //no faces unpacked, treat as failed decode -			llwarns << "found no faces!" << llendl; +			LL_WARNS() << "found no faces!" << LL_ENDL;  			return false;  		} @@ -2417,7 +2417,7 @@ bool LLVolume::unpackVolumeFaces(std::istream& is, S32 size)  			if (idx.empty() || face.mNumIndices < 3)  			{ //why is there an empty index list? -				llwarns <<"Empty face present!" << llendl; +				LL_WARNS() <<"Empty face present!" << LL_ENDL;  				continue;  			} @@ -2564,7 +2564,7 @@ bool LLVolume::unpackVolumeFaces(std::istream& is, S32 size)  				if (cur_vertex != num_verts || idx != weights.size())  				{ -					llwarns << "Vertex weight count does not match vertex count!" << llendl; +					LL_WARNS() << "Vertex weight count does not match vertex count!" << LL_ENDL;  				}  			} @@ -2730,7 +2730,7 @@ void LLVolume::createVolumeFaces()  			vf.mNumS = face.mCount;  			if (vf.mNumS < 0)  			{ -				llerrs << "Volume face corruption detected." << llendl; +				LL_ERRS() << "Volume face corruption detected." << LL_ENDL;  			}  			vf.mBeginT = 0; @@ -2778,7 +2778,7 @@ void LLVolume::createVolumeFaces()  						vf.mNumS = vf.mNumS*2;  						if (vf.mNumS < 0)  						{ -							llerrs << "Volume face corruption detected." << llendl; +							LL_ERRS() << "Volume face corruption detected." << LL_ENDL;  						}  					}  				} @@ -3107,7 +3107,7 @@ void LLVolume::sculpt(U16 sculpt_width, U16 sculpt_height, S8 sculpt_components,  	// weird crash bug - DEV-11158 - trying to collect more data:  	if ((sizeS == 0) || (sizeT == 0))  	{ -		llwarns << "sculpt bad mesh size " << sizeS << " " << sizeT << llendl; +		LL_WARNS() << "sculpt bad mesh size " << sizeS << " " << sizeT << LL_ENDL;  	}  	sNumMeshPoints -= mMesh.size(); @@ -3502,16 +3502,16 @@ bool LLVolumeParams::setType(U8 profile, U8 path)  		// Bad profile.  Make it square.  		profile = LL_PCODE_PROFILE_SQUARE;  		result = false; -		llwarns << "LLVolumeParams::setType changing bad profile type (" << profile_type -			 	<< ") to be LL_PCODE_PROFILE_SQUARE" << llendl; +		LL_WARNS() << "LLVolumeParams::setType changing bad profile type (" << profile_type +			 	<< ") to be LL_PCODE_PROFILE_SQUARE" << LL_ENDL;  	}  	else if (hole_type > LL_PCODE_HOLE_MAX)  	{  		// Bad hole.  Make it the same.  		profile = profile_type;  		result = false; -		llwarns << "LLVolumeParams::setType changing bad hole type (" << hole_type -			 	<< ") to be LL_PCODE_HOLE_SAME" << llendl; +		LL_WARNS() << "LLVolumeParams::setType changing bad hole type (" << hole_type +			 	<< ") to be LL_PCODE_HOLE_SAME" << LL_ENDL;  	}  	if (path_type < LL_PCODE_PATH_MIN || @@ -3519,8 +3519,8 @@ bool LLVolumeParams::setType(U8 profile, U8 path)  	{  		// Bad path.  Make it linear.  		result = false; -		llwarns << "LLVolumeParams::setType changing bad path (" << path -			 	<< ") to be LL_PCODE_PATH_LINE" << llendl; +		LL_WARNS() << "LLVolumeParams::setType changing bad path (" << path +			 	<< ") to be LL_PCODE_PATH_LINE" << LL_ENDL;  		path = LL_PCODE_PATH_LINE;  	} @@ -4112,7 +4112,7 @@ BOOL equalTriangle(const S32 *a, const S32 *b)  BOOL LLVolumeParams::importFile(LLFILE *fp)  { -	//llinfos << "importing volume" << llendl; +	//LL_INFOS() << "importing volume" << LL_ENDL;  	const S32 BUFSIZE = 16384;  	char buffer[BUFSIZE];	/* Flawfinder: ignore */  	// *NOTE: changing the size or type of this buffer will require @@ -4146,7 +4146,7 @@ BOOL LLVolumeParams::importFile(LLFILE *fp)  		}  		else  		{ -			llwarns << "unknown keyword " << keyword << " in volume import" << llendl; +			LL_WARNS() << "unknown keyword " << keyword << " in volume import" << LL_ENDL;  		}  	} @@ -4166,7 +4166,7 @@ BOOL LLVolumeParams::exportFile(LLFILE *fp) const  BOOL LLVolumeParams::importLegacyStream(std::istream& input_stream)  { -	//llinfos << "importing volume" << llendl; +	//LL_INFOS() << "importing volume" << LL_ENDL;  	const S32 BUFSIZE = 16384;  	// *NOTE: changing the size or type of this buffer will require  	// changing the sscanf below. @@ -4196,7 +4196,7 @@ BOOL LLVolumeParams::importLegacyStream(std::istream& input_stream)  		}  		else  		{ -			llwarns << "unknown keyword " << keyword << " in volume import" << llendl; +			LL_WARNS() << "unknown keyword " << keyword << " in volume import" << LL_ENDL;  		}  	} @@ -4408,7 +4408,7 @@ LLFaceID LLVolume::generateFaceMask()  		}  		break;  	default: -		llerrs << "Unknown profile!" << llendl; +		LL_ERRS() << "Unknown profile!" << LL_ENDL;  		break;  	} @@ -4669,7 +4669,7 @@ LLVolumeFace::~LLVolumeFace()  void LLVolumeFace::freeData()  { -	ll_aligned_free(mPositions); +	ll_aligned_free<64>(mPositions);  	mPositions = NULL;  	//normals and texture coordinates are part of the same buffer as mPositions, do not free them separately @@ -4707,7 +4707,7 @@ BOOL LLVolumeFace::create(LLVolume* volume, BOOL partial_build)  	}  	else  	{ -		llerrs << "Unknown/uninitialized face type!" << llendl; +		LL_ERRS() << "Unknown/uninitialized face type!" << LL_ENDL;  	}  	return ret ; @@ -5247,7 +5247,7 @@ void LLVolumeFace::cacheOptimize()  	//allocate space for new buffer  	S32 num_verts = mNumVertices;  	S32 size = ((num_verts*sizeof(LLVector2)) + 0xF) & ~0xF; -	LLVector4a* pos = (LLVector4a*) ll_aligned_malloc(sizeof(LLVector4a)*2*num_verts+size, 64); +	LLVector4a* pos = (LLVector4a*) ll_aligned_malloc<64>(sizeof(LLVector4a)*2*num_verts+size);  	LLVector4a* norm = pos + num_verts;  	LLVector2* tc = (LLVector2*) (norm + num_verts); @@ -5297,7 +5297,7 @@ void LLVolumeFace::cacheOptimize()  		mIndices[i] = new_idx[mIndices[i]];  	} -	ll_aligned_free(mPositions); +	ll_aligned_free<64>(mPositions);  	// DO NOT free mNormals and mTexCoords as they are part of mPositions buffer  	ll_aligned_free_16(mWeights);  	ll_aligned_free_16(mTangents); @@ -5309,7 +5309,7 @@ void LLVolumeFace::cacheOptimize()  	mTangents = binorm;  	//std::string result = llformat("ACMR pre/post: %.3f/%.3f  --  %d triangles %d breaks", pre_acmr, post_acmr, mNumIndices/3, breaks); -	//llinfos << result << llendl; +	//LL_INFOS() << result << LL_ENDL;  } @@ -6025,7 +6025,7 @@ void LLVolumeFace::createTangents()  void LLVolumeFace::resizeVertices(S32 num_verts)  { -	ll_aligned_free(mPositions); +	ll_aligned_free<64>(mPositions);  	//DO NOT free mNormals and mTexCoords as they are part of mPositions buffer  	ll_aligned_free_16(mTangents); @@ -6036,7 +6036,7 @@ void LLVolumeFace::resizeVertices(S32 num_verts)  		//pad texture coordinate block end to allow for QWORD reads  		S32 size = ((num_verts*sizeof(LLVector2)) + 0xF) & ~0xF; -		mPositions = (LLVector4a*) ll_aligned_malloc(sizeof(LLVector4a)*2*num_verts+size, 64); +		mPositions = (LLVector4a*) ll_aligned_malloc<64>(sizeof(LLVector4a)*2*num_verts+size);  		mNormals = mPositions+num_verts;  		mTexCoords = (LLVector2*) (mNormals+num_verts); @@ -6076,7 +6076,7 @@ void LLVolumeFace::pushVertex(const LLVector4a& pos, const LLVector4a& norm, con  		LLVector4a* old_buf = mPositions; -		mPositions = (LLVector4a*) ll_aligned_malloc(new_size, 64); +		mPositions = (LLVector4a*) ll_aligned_malloc<64>(new_size);  		mNormals = mPositions+new_verts;  		mTexCoords = (LLVector2*) (mNormals+new_verts); @@ -6092,7 +6092,7 @@ void LLVolumeFace::pushVertex(const LLVector4a& pos, const LLVector4a& norm, con  	//just clear tangents  	ll_aligned_free_16(mTangents);  	mTangents = NULL; -		ll_aligned_free(old_buf); +		ll_aligned_free<64>(old_buf);  		mNumAllocatedVertices = new_verts; @@ -6177,12 +6177,12 @@ void LLVolumeFace::appendFace(const LLVolumeFace& face, LLMatrix4& mat_in, LLMat  	if (new_count > 65536)  	{ -		llerrs << "Cannot append face -- 16-bit overflow will occur." << llendl; +		LL_ERRS() << "Cannot append face -- 16-bit overflow will occur." << LL_ENDL;  	}  	if (face.mNumVertices == 0)  	{ -		llerrs << "Cannot append empty face." << llendl; +		LL_ERRS() << "Cannot append empty face." << LL_ENDL;  	}  	U32 old_vsize = mNumVertices*16; @@ -6193,7 +6193,7 @@ void LLVolumeFace::appendFace(const LLVolumeFace& face, LLMatrix4& mat_in, LLMat  	//allocate new buffer space  	LLVector4a* old_buf = mPositions; -	mPositions = (LLVector4a*) ll_aligned_malloc(new_size, 64); +	mPositions = (LLVector4a*) ll_aligned_malloc<64>(new_size);  	mNormals = mPositions + new_count;  	mTexCoords = (LLVector2*) (mNormals+new_count); diff --git a/indra/llmath/llvolume.h b/indra/llmath/llvolume.h index 975227ea58..2f38ae7203 100755 --- a/indra/llmath/llvolume.h +++ b/indra/llmath/llvolume.h @@ -41,7 +41,6 @@ class LLVolumeFace;  class LLVolume;  class LLVolumeTriangle; -#include "lldarray.h"  #include "lluuid.h"  #include "v4color.h"  //#include "vmath.h" diff --git a/indra/llmath/llvolumemgr.cpp b/indra/llmath/llvolumemgr.cpp index 9083273ee5..3b8f08e0c6 100755 --- a/indra/llmath/llvolumemgr.cpp +++ b/indra/llmath/llvolumemgr.cpp @@ -147,7 +147,7 @@ void LLVolumeMgr::unrefVolume(LLVolume *volumep)  	volume_lod_group_map_t::iterator iter = mVolumeLODGroups.find(params);  	if( iter == mVolumeLODGroups.end() )  	{ -		llerrs << "Warning! Tried to cleanup unknown volume type! " << *params << llendl; +		LL_ERRS() << "Warning! Tried to cleanup unknown volume type! " << *params << LL_ENDL;  		if (mDataMutex)  		{  			mDataMutex->unlock(); @@ -207,7 +207,7 @@ void LLVolumeMgr::dump()  	{  		mDataMutex->unlock();  	} -	llinfos << "Average usage of LODs " << avg << llendl; +	LL_INFOS() << "Average usage of LODs " << avg << LL_ENDL;  }  void LLVolumeMgr::useMutex() @@ -270,18 +270,18 @@ bool LLVolumeLODGroup::cleanupRefs()  	bool res = true;  	if (mRefs != 0)  	{ -		llwarns << "Volume group has remaining refs:" << getNumRefs() << llendl; +		LL_WARNS() << "Volume group has remaining refs:" << getNumRefs() << LL_ENDL;  		mRefs = 0;  		for (S32 i = 0; i < NUM_LODS; i++)  		{  			if (mLODRefs[i] > 0)  			{ -				llwarns << " LOD " << i << " refs = " << mLODRefs[i] << llendl; +				LL_WARNS() << " LOD " << i << " refs = " << mLODRefs[i] << LL_ENDL;  				mLODRefs[i] = 0;  				mVolumeLODs[i] = NULL;  			}  		} -		llwarns << *getVolumeParams() << llendl; +		LL_WARNS() << *getVolumeParams() << LL_ENDL;  		res = false;  	}  	return res; @@ -320,7 +320,7 @@ BOOL LLVolumeLODGroup::derefLOD(LLVolume *volumep)  			return TRUE;  		}  	} -	llerrs << "Deref of non-matching LOD in volume LOD group" << llendl; +	LL_ERRS() << "Deref of non-matching LOD in volume LOD group" << LL_ENDL;  	return FALSE;  } @@ -393,7 +393,7 @@ F32 LLVolumeLODGroup::dump()  	std::string dump_str = llformat("%.3f %d %d %d %d", usage, mAccessCount[0], mAccessCount[1], mAccessCount[2], mAccessCount[3]); -	llinfos << dump_str << llendl; +	LL_INFOS() << dump_str << LL_ENDL;  	return usage;  } diff --git a/indra/llmath/llvolumeoctree.cpp b/indra/llmath/llvolumeoctree.cpp index 0728b49c1f..fb232d5f6c 100755 --- a/indra/llmath/llvolumeoctree.cpp +++ b/indra/llmath/llvolumeoctree.cpp @@ -237,7 +237,7 @@ void LLVolumeOctreeValidate::visit(const LLOctreeNode<LLVolumeTriangle>* branch)  	if (!test_min.equals3(min, 0.001f) ||  		!test_max.equals3(max, 0.001f))  	{ -		llerrs << "Bad bounding box data found." << llendl; +		LL_ERRS() << "Bad bounding box data found." << LL_ENDL;  	}  	test_min.sub(LLVector4a(0.001f)); @@ -251,7 +251,7 @@ void LLVolumeOctreeValidate::visit(const LLOctreeNode<LLVolumeTriangle>* branch)  		if (child->mExtents[0].lessThan(test_min).areAnySet(LLVector4Logical::MASK_XYZ) ||  			child->mExtents[1].greaterThan(test_max).areAnySet(LLVector4Logical::MASK_XYZ))  		{ -			llerrs << "Child protrudes from bounding box." << llendl; +			LL_ERRS() << "Child protrudes from bounding box." << LL_ENDL;  		}  	} @@ -267,7 +267,7 @@ void LLVolumeOctreeValidate::visit(const LLOctreeNode<LLVolumeTriangle>* branch)  			if (tri->mV[i]->greaterThan(test_max).areAnySet(LLVector4Logical::MASK_XYZ) ||  				tri->mV[i]->lessThan(test_min).areAnySet(LLVector4Logical::MASK_XYZ))  			{ -				llerrs << "Triangle protrudes from node." << llendl; +				LL_ERRS() << "Triangle protrudes from node." << LL_ENDL;  			}  		}  	} diff --git a/indra/llmath/llvolumeoctree.h b/indra/llmath/llvolumeoctree.h index 80d6ced36d..13150028d8 100755 --- a/indra/llmath/llvolumeoctree.h +++ b/indra/llmath/llvolumeoctree.h @@ -59,7 +59,7 @@ public:  	const LLVolumeTriangle& operator=(const LLVolumeTriangle& rhs)  	{ -		llerrs << "Illegal operation!" << llendl; +		LL_ERRS() << "Illegal operation!" << LL_ENDL;  		return *this;  	} @@ -110,7 +110,7 @@ public:  	const LLVolumeOctreeListener& operator=(const LLVolumeOctreeListener& rhs)  	{ -		llerrs << "Illegal operation!" << llendl; +		LL_ERRS() << "Illegal operation!" << LL_ENDL;  		return *this;  	} diff --git a/indra/llmath/v4color.cpp b/indra/llmath/v4color.cpp index 81ac62be56..cd2be7c8fd 100755 --- a/indra/llmath/v4color.cpp +++ b/indra/llmath/v4color.cpp @@ -245,7 +245,7 @@ void LLColor4::setValue(const LLSD& sd)  	if (out_of_range)  	{ -		llwarns << "LLSD color value out of range!" << llendl; +		LL_WARNS() << "LLSD color value out of range!" << LL_ENDL;  	}  #else  	mV[0] = (F32) sd[0].asReal(); @@ -417,7 +417,7 @@ BOOL LLColor4::parseColor(const std::string& buf, LLColor4* color)  		if (token_iter == tokens.end())  		{  			// This is a malformed vector. -			llwarns << "LLColor4::parseColor() malformed color " << buf << llendl; +			LL_WARNS() << "LLColor4::parseColor() malformed color " << buf << LL_ENDL;  		}  		else  		{ @@ -704,7 +704,7 @@ BOOL LLColor4::parseColor(const std::string& buf, LLColor4* color)  		}  		else  		{ -			llwarns << "invalid color " << color_name << llendl; +			LL_WARNS() << "invalid color " << color_name << LL_ENDL;  		}  	} diff --git a/indra/llmath/v4color.h b/indra/llmath/v4color.h index 8c8c315808..0d632f59be 100755 --- a/indra/llmath/v4color.h +++ b/indra/llmath/v4color.h @@ -49,10 +49,10 @@ class LLColor4  		LLColor4();						// Initializes LLColor4 to (0, 0, 0, 1)  		LLColor4(F32 r, F32 g, F32 b);		// Initializes LLColor4 to (r, g, b, 1)  		LLColor4(F32 r, F32 g, F32 b, F32 a);		// Initializes LLColor4 to (r. g, b, a) -		LLColor4(U32 clr);							// Initializes LLColor4 to (r=clr>>24, etc)) -		LLColor4(const F32 *vec);			// Initializes LLColor4 to (vec[0]. vec[1], vec[2], vec[3])  		LLColor4(const LLColor3 &vec, F32 a = 1.f);	// Initializes LLColor4 to (vec, a)  		explicit LLColor4(const LLSD& sd); +		explicit LLColor4(const F32 *vec);			// Initializes LLColor4 to (vec[0]. vec[1], vec[2], 1) +		explicit LLColor4(U32 clr);							// Initializes LLColor4 to (r=clr>>24, etc))  		explicit LLColor4(const LLColor4U& color4u);  // "explicit" to avoid automatic conversion  		explicit LLColor4(const LLVector4& vector4);  // "explicit" to avoid automatic conversion diff --git a/indra/llmath/xform.cpp b/indra/llmath/xform.cpp index b75aec6a27..5d8b93d5e8 100755 --- a/indra/llmath/xform.cpp +++ b/indra/llmath/xform.cpp @@ -36,10 +36,10 @@ LLXform::~LLXform()  {  } -// Link optimization - don't inline these llwarns +// Link optimization - don't inline these LL_WARNS()  void LLXform::warn(const char* const msg)  { -	llwarns << msg << llendl; +	LL_WARNS() << msg << LL_ENDL;  }  LLXform* LLXform::getRoot() const diff --git a/indra/llmath/xform.h b/indra/llmath/xform.h index 1b50749b3e..54b0f6d9ec 100755 --- a/indra/llmath/xform.h +++ b/indra/llmath/xform.h @@ -103,9 +103,9 @@ public:  	inline void setRotation(const F32 x, const F32 y, const F32 z, const F32 s);  	// Above functions must be inline for speed, but also -	// need to emit warnings.  llwarns causes inline LLError::CallSite +	// need to emit warnings.  LL_WARNS() causes inline LLError::CallSite  	// static objects that make more work for the linker. -	// Avoid inline llwarns by calling this function. +	// Avoid inline LL_WARNS() by calling this function.  	void warn(const char* const msg);  	void 		setChanged(const U32 bits)					{ mChanged |= bits; } | 
