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/Rasterizer/RAS_MeshObject.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/Rasterizer/RAS_MeshObject.cpp')
-rw-r--r-- | source/gameengine/Rasterizer/RAS_MeshObject.cpp | 22 |
1 files changed, 11 insertions, 11 deletions
diff --git a/source/gameengine/Rasterizer/RAS_MeshObject.cpp b/source/gameengine/Rasterizer/RAS_MeshObject.cpp index 48e9e93b80e..afa62a9a8c6 100644 --- a/source/gameengine/Rasterizer/RAS_MeshObject.cpp +++ b/source/gameengine/Rasterizer/RAS_MeshObject.cpp @@ -43,6 +43,10 @@ #include <algorithm> +extern "C" { +# include "BKE_deform.h" +} + /* polygon sorting */ struct RAS_MeshObject::polygonSlot @@ -573,8 +577,8 @@ void RAS_MeshObject::CheckWeightCache(Object* obj) { KeyBlock *kb; int kbindex, defindex; - MDeformVert *dvert= NULL; - int totvert, i, j; + MDeformVert *dv= NULL; + int totvert, i; float *weights; if (!m_mesh->key) @@ -598,19 +602,15 @@ void RAS_MeshObject::CheckWeightCache(Object* obj) kb->weights = NULL; } - dvert= m_mesh->dvert; + dv= m_mesh->dvert; totvert= m_mesh->totvert; - weights= (float*)MEM_callocN(totvert*sizeof(float), "weights"); + weights= (float*)MEM_mallocN(totvert*sizeof(float), "weights"); - for (i=0; i < totvert; i++, dvert++) { - for(j=0; j<dvert->totweight; j++) { - if (dvert->dw[j].def_nr == defindex) { - weights[i]= dvert->dw[j].weight; - break; - } - } + for (i=0; i < totvert; i++, dv++) { + weights[i]= defvert_find_weight(dv, defindex); } + kb->weights = weights; m_cacheWeightIndex[kbindex] = defindex; } |