diff options
| author | Monroe Linden <monroe@lindenlab.com> | 2009-11-09 12:14:29 -0800 | 
|---|---|---|
| committer | Monroe Linden <monroe@lindenlab.com> | 2009-11-09 12:14:29 -0800 | 
| commit | e477a74feb21c4ddcb077c7256457b44e69fba24 (patch) | |
| tree | c750db63e405d087aad1bcbdc0e8076096fa1f9c /indra | |
| parent | 3b98043d227db07a2396b1fba056e911abd04621 (diff) | |
Better fix for DEV-42153.
Diffstat (limited to 'indra')
| -rw-r--r-- | indra/newview/llvovolume.cpp | 39 | 
1 files changed, 10 insertions, 29 deletions
| diff --git a/indra/newview/llvovolume.cpp b/indra/newview/llvovolume.cpp index 021fc74648..09769d5e80 100644 --- a/indra/newview/llvovolume.cpp +++ b/indra/newview/llvovolume.cpp @@ -1640,38 +1640,19 @@ bool LLVOVolume::hasMedia() const  LLVector3 LLVOVolume::getApproximateFaceNormal(U8 face_id)  { -	LLVector3 result = LLVector3::zero; -	 -	LLFace* facep = mDrawable->getFace(face_id); -	if(facep) -	{ -		LLStrider<LLVector3> verticesp; -		LLStrider<LLVector3> normalsp; -		LLStrider<LLVector2> texCoordsp; -		LLStrider<U16> indicesp; -		S32 index_offset; -		index_offset = facep->getGeometry(verticesp,normalsp,texCoordsp, indicesp); -		 -		if(index_offset != -1 && (normalsp.get() != NULL)) +	LLVolume* volume = getVolume(); +	LLVector3 result; + +	if (volume && face_id < volume->getNumVolumeFaces()) +	{ +		const LLVolumeFace& face = volume->getVolumeFace(face_id); +		for (S32 i = 0; i < face.mVertices.size(); ++i)  		{ -			U16 count = facep->getGeomCount(); -			U16 i; -			 -			for(i=0; i < count; i++) -			{ -				LLVector3 normal = *normalsp++; -//				llinfos << "adding " << normal << llendl; -				result += normal; -			} +			result += face.mVertices[i].mNormal;  		} -	} -	 -	if(!result.isNull()) -	{ -//		llinfos << "before conversion: " << result << llendl; +  		result = volumeDirectionToAgent(result); -		result.normalize(); -//		llinfos << "after conversion: " << result << llendl; +		result.normVec();  	}  	return result; | 
