[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [26469] trunk/blender/source/blender/ blenkernel/intern/key.c: Fix #20696: shape keys with vertex groups showing in edit mode did
Brecht Van Lommel
brecht at blender.org
Sun Jan 31 12:15:51 CET 2010
Revision: 26469
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=26469
Author: blendix
Date: 2010-01-31 12:15:51 +0100 (Sun, 31 Jan 2010)
Log Message:
-----------
Fix #20696: shape keys with vertex groups showing in edit mode did
not update immediately when editing the vertex groups.
Modified Paths:
--------------
trunk/blender/source/blender/blenkernel/intern/key.c
Modified: trunk/blender/source/blender/blenkernel/intern/key.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/key.c 2010-01-31 11:13:31 UTC (rev 26468)
+++ trunk/blender/source/blender/blenkernel/intern/key.c 2010-01-31 11:15:51 UTC (rev 26469)
@@ -52,6 +52,7 @@
#include "BKE_action.h"
#include "BKE_blender.h"
#include "BKE_curve.h"
+#include "BKE_customdata.h"
#include "BKE_global.h"
#include "BKE_key.h"
#include "BKE_lattice.h"
@@ -999,6 +1000,8 @@
{
bDeformGroup *curdef;
MDeformVert *dvert= NULL;
+ EditMesh *em= NULL;
+ EditVert *eve;
int totvert= 0, index= 0;
/* no vgroup string set? */
@@ -1009,6 +1012,9 @@
Mesh *me= ob->data;
dvert= me->dvert;
totvert= me->totvert;
+
+ if(me->edit_mesh && me->edit_mesh->totvert == totvert)
+ em= me->edit_mesh;
}
else if(ob->type==OB_LATTICE) {
Lattice *lt= ob->data;
@@ -1028,15 +1034,32 @@
int i, j;
weights= MEM_callocN(totvert*sizeof(float), "weights");
-
- for (i=0; i < totvert; i++, dvert++) {
- for(j=0; j<dvert->totweight; j++) {
- if (dvert->dw[j].def_nr == index) {
- weights[i]= dvert->dw[j].weight;
- break;
+
+ if(em) {
+ for(i=0, eve=em->verts.first; eve; eve=eve->next, i++) {
+ dvert= CustomData_em_get(&em->vdata, eve->data, CD_MDEFORMVERT);
+
+ if(dvert) {
+ for(j=0; j<dvert->totweight; j++) {
+ if(dvert->dw[j].def_nr == index) {
+ weights[i]= dvert->dw[j].weight;
+ break;
+ }
+ }
}
}
}
+ else {
+ for(i=0; i < totvert; i++, dvert++) {
+ for(j=0; j<dvert->totweight; j++) {
+ if(dvert->dw[j].def_nr == index) {
+ weights[i]= dvert->dw[j].weight;
+ break;
+ }
+ }
+ }
+ }
+
return weights;
}
return NULL;
More information about the Bf-blender-cvs
mailing list