[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [20259] trunk/blender/source/blender/src/ editdeform.c: [#18778] Lattice Vertex Groups Don't get deleted

Campbell Barton ideasman42 at gmail.com
Mon May 18 13:15:24 CEST 2009


Revision: 20259
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=20259
Author:   campbellbarton
Date:     2009-05-18 13:15:24 +0200 (Mon, 18 May 2009)

Log Message:
-----------
[#18778] Lattice Vertex Groups Don't get deleted
fixed 'Copy Group' for lattice too.

Modified Paths:
--------------
    trunk/blender/source/blender/src/editdeform.c

Modified: trunk/blender/source/blender/src/editdeform.c
===================================================================
--- trunk/blender/source/blender/src/editdeform.c	2009-05-18 10:42:08 UTC (rev 20258)
+++ trunk/blender/source/blender/src/editdeform.c	2009-05-18 11:15:24 UTC (rev 20259)
@@ -211,11 +211,10 @@
 	bDeformGroup *dg, *cdg;
 	char name[32], s[32];
 	MDeformWeight *org, *cpy;
-	MDeformVert *dvert;
-	Mesh *me;
-	int i, idg, icdg;
+	MDeformVert *dvert, *dvert_array;
+	int i, idg, icdg, dvert_tot;
 
-	if (ob->type != OB_MESH)
+	if (ob->type != OB_MESH && ob->type != OB_LATTICE)
 		return;
 
 	dg = BLI_findlink (&ob->defbase, (ob->actdef-1));
@@ -246,12 +245,22 @@
 	ob->actdef = BLI_countlist (&ob->defbase);
 	icdg = (ob->actdef-1);
 
-	me = get_mesh (ob);
-	if (!me->dvert)
+	if(ob->type == OB_MESH) {
+		Mesh *me = get_mesh (ob);
+		dvert_array= me->dvert;
+		dvert_tot= me->totvert;
+	}
+	else if (ob->type == OB_LATTICE) {
+		Lattice *lt= (Lattice *)ob->data;
+		dvert_array= lt->dvert;
+		dvert_tot= lt->pntsu*lt->pntsv*lt->pntsw;
+	}
+	
+	if (!dvert_array)
 		return;
 
-	for (i = 0; i < me->totvert; i++) {
-		dvert = me->dvert+i;
+	for (i = 0; i < dvert_tot; i++) {
+		dvert = dvert_array+i;
 		org = get_defweight (dvert, idg);
 		if (org) {
 			cpy = verify_defweight (dvert, icdg);
@@ -323,29 +332,39 @@
 void del_defgroup_in_object_mode ( Object *ob )
 {
 	bDeformGroup *dg;
-	MDeformVert *dvert;
-	Mesh *me;
-	int i, e;
+	MDeformVert *dvert_array, *dvert;
+	
+	int i, e, dvert_tot;
 
-	if ((!ob) || (ob->type != OB_MESH))
+	if ((!ob) || (ob->type != OB_MESH && ob->type != OB_LATTICE))
 		return;
 
+	if(ob->type == OB_MESH) {
+		Mesh *me = get_mesh (ob);
+		dvert_array= me->dvert;
+		dvert_tot= me->totvert;
+	}
+	else if (ob->type == OB_LATTICE) {
+		Lattice *lt= (Lattice *)ob->data;
+		dvert_array= lt->dvert;
+		dvert_tot= lt->pntsu*lt->pntsv*lt->pntsw;
+	}
+	
 	dg = BLI_findlink (&ob->defbase, (ob->actdef-1));
 	if (!dg)
 		return;
-
-	me = get_mesh (ob);
-	if (me->dvert) {
-		for (i = 0; i < me->totvert; i++) {
-			dvert = me->dvert + i;
+	
+	if (dvert_array) {
+		for (i = 0; i < dvert_tot; i++) {
+			dvert = dvert_array + i;
 			if (dvert) {
 				if (get_defweight (dvert, (ob->actdef-1)))
 					remove_vert_defgroup (ob, dg, i);
 			}
 		}
 
-		for (i = 0; i < me->totvert; i++) {
-			dvert = me->dvert+i;
+		for (i = 0; i < dvert_tot; i++) {
+			dvert = dvert_array+i;
 			if (dvert) {
 				for (e = 0; e < dvert->totweight; e++) {
 					if (dvert->dw[e].def_nr > (ob->actdef-1))





More information about the Bf-blender-cvs mailing list