summaryrefslogtreecommitdiff
path: root/indra/llprimitive/llmodel.cpp
diff options
context:
space:
mode:
authorprep <prep@lindenlab.com>2011-08-03 17:01:34 -0400
committerprep <prep@lindenlab.com>2011-08-03 17:01:34 -0400
commitdf94d0c778e63ce053cfd1fa4423b180bab6adfb (patch)
tree21a766f069032cdb68263859c2d9ce315f2f0816 /indra/llprimitive/llmodel.cpp
parentc29dec3eb6f5a4fd72ab33c3346c2af26c012ebe (diff)
Fixes for sh-2039, sh-1336, and sh-2044. Vertices were having incorrect weights assigned.
Diffstat (limited to 'indra/llprimitive/llmodel.cpp')
-rw-r--r--indra/llprimitive/llmodel.cpp13
1 files changed, 13 insertions, 0 deletions
diff --git a/indra/llprimitive/llmodel.cpp b/indra/llprimitive/llmodel.cpp
index def276c808..d8e4d4a173 100644
--- a/indra/llprimitive/llmodel.cpp
+++ b/indra/llprimitive/llmodel.cpp
@@ -1679,6 +1679,19 @@ LLSD LLModel::writeModelToStream(std::ostream& ostr, LLSD& mdl, BOOL nowrite, BO
LLModel::weight_list& LLModel::getJointInfluences(const LLVector3& pos)
{
+ //1. If a vertex has been weighted then we'll find it via pos and return it's weight list
+ weight_map::iterator iterPos = mSkinWeights.begin();
+ weight_map::iterator iterEnd = mSkinWeights.end();
+
+ for ( ; iterPos!=iterEnd; ++iterPos )
+ {
+ if ( jointPositionalLookup( iterPos->first, pos ) )
+ {
+ return iterPos->second;
+ }
+ }
+
+ //2. Otherwise we'll use the older implementation
weight_map::iterator iter = mSkinWeights.find(pos);
if (iter != mSkinWeights.end())