diff options
Diffstat (limited to 'indra/llmath')
| -rwxr-xr-x | indra/llmath/llvolume.cpp | 28 | ||||
| -rwxr-xr-x | indra/llmath/llvolume.h | 6 | ||||
| -rwxr-xr-x | indra/llmath/m4math.cpp | 13 | ||||
| -rwxr-xr-x | indra/llmath/m4math.h | 5 | 
4 files changed, 37 insertions, 15 deletions
diff --git a/indra/llmath/llvolume.cpp b/indra/llmath/llvolume.cpp index 191a6b38cb..ae714c5bce 100755 --- a/indra/llmath/llvolume.cpp +++ b/indra/llmath/llvolume.cpp @@ -6084,7 +6084,7 @@ void LLVolumeFace::pushVertex(const LLVector4a& pos, const LLVector4a& norm, con  	if (new_verts > mNumAllocatedVertices)  	{  -		//double buffer size on expansion +		// double buffer size on expansion  		new_verts *= 2;  		S32 new_tc_size = ((new_verts*8)+0xF) & ~0xF; @@ -6100,21 +6100,21 @@ void LLVolumeFace::pushVertex(const LLVector4a& pos, const LLVector4a& norm, con  		mNormals = mPositions+new_verts;  		mTexCoords = (LLVector2*) (mNormals+new_verts); -        if (old_buf) -        { -        //positions -            LLVector4a::memcpyNonAliased16((F32*) mPositions, (F32*) old_buf, old_vsize); -         -        //normals -            LLVector4a::memcpyNonAliased16((F32*) mNormals, (F32*) (old_buf+mNumVertices), old_vsize); +		if (old_buf != NULL) +		{ +			// copy old positions into new buffer +			LLVector4a::memcpyNonAliased16((F32*)mPositions, (F32*)old_buf, old_vsize); -        //tex coords -            LLVector4a::memcpyNonAliased16((F32*) mTexCoords, (F32*) (old_buf+mNumVertices*2), old_tc_size); -        } +			// normals +			LLVector4a::memcpyNonAliased16((F32*)mNormals, (F32*)(old_buf + mNumVertices), old_vsize); + +			// tex coords +			LLVector4a::memcpyNonAliased16((F32*)mTexCoords, (F32*)(old_buf + mNumVertices * 2), old_tc_size); +		} -        //just clear tangents -        ll_aligned_free_16(mTangents); -        mTangents = NULL; +		// just clear tangents +		ll_aligned_free_16(mTangents); +		mTangents = NULL;  		ll_aligned_free<64>(old_buf);  		mNumAllocatedVertices = new_verts; diff --git a/indra/llmath/llvolume.h b/indra/llmath/llvolume.h index c8476f6897..625f7cff02 100755 --- a/indra/llmath/llvolume.h +++ b/indra/llmath/llvolume.h @@ -968,6 +968,7 @@ protected:  	~LLVolume(); // use unref  public: +	typedef std::vector<LLVolumeFace> face_list_t;  	struct FaceParams  	{ @@ -1041,6 +1042,10 @@ public:  																				// conversion if *(LLVolume*) to LLVolume&  	const LLVolumeFace &getVolumeFace(const S32 f) const {return mVolumeFaces[f];} // DO NOT DELETE VOLUME WHILE USING THIS REFERENCE, OR HOLD A POINTER TO THIS VOLUMEFACE +	LLVolumeFace &getVolumeFace(const S32 f) {return mVolumeFaces[f];} // DO NOT DELETE VOLUME WHILE USING THIS REFERENCE, OR HOLD A POINTER TO THIS VOLUMEFACE + +	face_list_t& getVolumeFaces() { return mVolumeFaces; } +  	U32					mFaceMask;			// bit array of which faces exist in this volume  	LLVector3			mLODScaleBias;		// vector for biasing LOD based on scale @@ -1080,7 +1085,6 @@ public:  	BOOL mGenerateSingleFace; -	typedef std::vector<LLVolumeFace> face_list_t;  	face_list_t mVolumeFaces;  public: diff --git a/indra/llmath/m4math.cpp b/indra/llmath/m4math.cpp index 6a1b4143cf..d89c482804 100755 --- a/indra/llmath/m4math.cpp +++ b/indra/llmath/m4math.cpp @@ -274,6 +274,19 @@ const LLMatrix4&	LLMatrix4::invert(void)  	return *this;  } +// Convenience func for simplifying comparison-heavy code by +// intentionally stomping values in [-FLT_EPS,FLT_EPS] to 0.0f +// +void LLMatrix4::condition(void) +{ +	U32 i; +	U32 j; +	for (i = 0; i < 3;i++) +		for (j = 0; j < 3;j++) +			mMatrix[i][j] = ((mMatrix[i][j] > -FLT_EPSILON) +							  && (mMatrix[i][j] < FLT_EPSILON)) ? 0.0f : mMatrix[i][j]; +} +  LLVector4 LLMatrix4::getFwdRow4() const  {  	return LLVector4(mMatrix[VX][VX], mMatrix[VX][VY], mMatrix[VX][VZ], mMatrix[VX][VW]); diff --git a/indra/llmath/m4math.h b/indra/llmath/m4math.h index a7dce10397..a77c5bc76d 100755 --- a/indra/llmath/m4math.h +++ b/indra/llmath/m4math.h @@ -180,6 +180,11 @@ public:  	const LLMatrix4& setTranslation(const LLVector4 &translation);  	const LLMatrix4& setTranslation(const LLVector3 &translation); +	// Convenience func for simplifying comparison-heavy code by +	// intentionally stomping values [-FLT_EPS,FLT_EPS] to 0.0 +	// +	void condition(void); +  	///////////////////////////  	//  	// Get properties of a matrix  | 
