diff options
author | Campbell Barton <ideasman42@gmail.com> | 2011-12-15 02:54:38 +0400 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2011-12-15 02:54:38 +0400 |
commit | 40a2c1a2921b50edd8b798e79b6bd2a6d94d7bba (patch) | |
tree | f28bc2e08718bbf7e8fee729330c5c1e675c180e /source/gameengine/Converter/BL_SkinDeformer.cpp | |
parent | 3d5330f789c287666b875706c84228520473add5 (diff) |
more vertex weight edits,
* replace inline loops with api calls.
* change constraints so verts with 0.0 weight are ignored like they are everywhere else.
Diffstat (limited to 'source/gameengine/Converter/BL_SkinDeformer.cpp')
-rw-r--r-- | source/gameengine/Converter/BL_SkinDeformer.cpp | 16 |
1 files changed, 8 insertions, 8 deletions
diff --git a/source/gameengine/Converter/BL_SkinDeformer.cpp b/source/gameengine/Converter/BL_SkinDeformer.cpp index 0c4806f4bd8..f320df12078 100644 --- a/source/gameengine/Converter/BL_SkinDeformer.cpp +++ b/source/gameengine/Converter/BL_SkinDeformer.cpp @@ -237,12 +237,12 @@ void BL_SkinDeformer::BGEDeformVerts() } } + MDeformVert *dv= dverts; - for (int i=0; i<m_bmesh->totvert; ++i) + for (int i=0; i<m_bmesh->totvert; ++i, dv++) { float contrib = 0.f, weight, max_weight=0.f; bPoseChannel *pchan=NULL; - MDeformVert *dvert; Eigen::Map<Eigen::Vector3f> norm(m_transnors[i]); Eigen::Vector4f vec(0, 0, 0, 1); Eigen::Matrix4f norm_chan_mat; @@ -251,18 +251,18 @@ void BL_SkinDeformer::BGEDeformVerts() m_transverts[i][2], 1.f); - dvert = dverts+i; - - if (!dvert->totweight) + if (!dv->totweight) continue; - for (int j=0; j<dvert->totweight; ++j) + MDeformWeight *dw= dv->dw; + + for (unsigned int j= dv->totweight; j != 0; j--, dw++) { - int index = dvert->dw[j].def_nr; + const int index = dw->def_nr; if (index < defbase_tot && (pchan=m_dfnrToPC[index])) { - weight = dvert->dw[j].weight; + weight = dw->weight; if (weight) { |