summaryrefslogtreecommitdiff
path: root/indra/newview/llvovolume.cpp
diff options
context:
space:
mode:
authorVadim Savchuk <vsavchuk@productengine.com>2009-11-10 16:05:53 +0200
committerVadim Savchuk <vsavchuk@productengine.com>2009-11-10 16:05:53 +0200
commitc3d9aa60a799bb45b32c09870f92d576c9b571ce (patch)
tree2fef4c4b45d63140535d46f61bd104b14ba8c920 /indra/newview/llvovolume.cpp
parent7dabb3c46e6cdf208ce7dc46b89f431a247d6ba6 (diff)
parent93adff4569d66d0a8699615b7a21d789921ca15c (diff)
Merge from default branch
--HG-- branch : product-engine
Diffstat (limited to 'indra/newview/llvovolume.cpp')
-rw-r--r--indra/newview/llvovolume.cpp43
1 files changed, 14 insertions, 29 deletions
diff --git a/indra/newview/llvovolume.cpp b/indra/newview/llvovolume.cpp
index 021fc74648..c987dd1764 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 < (S32)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;
@@ -1752,6 +1733,10 @@ void LLVOVolume::syncMediaData(S32 texture_index, const LLSD &media_data, bool m
addMediaImpl(media_impl, texture_index) ;
}
+ else
+ {
+ removeMediaImpl(texture_index);
+ }
//llinfos << "AFTER: texture_index = " << texture_index
// << " hasMedia = " << te->hasMedia() << " : "