[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [42635] trunk/blender/source/blender: minor vertex group edits

Campbell Barton ideasman42 at gmail.com
Thu Dec 15 00:53:55 CET 2011


Revision: 42635
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=42635
Author:   campbellbarton
Date:     2011-12-14 23:53:46 +0000 (Wed, 14 Dec 2011)
Log Message:
-----------
minor vertex group edits
* when freeing a deform weight, use one less memcpy call.
* vgroup_delete_object_mode(), was looping on the deform verts twice when it didn't need to.

Modified Paths:
--------------
    trunk/blender/source/blender/blenkernel/intern/deform.c
    trunk/blender/source/blender/editors/object/object_vgroup.c

Modified: trunk/blender/source/blender/blenkernel/intern/deform.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/deform.c	2011-12-14 22:54:38 UTC (rev 42634)
+++ trunk/blender/source/blender/blenkernel/intern/deform.c	2011-12-14 23:53:46 UTC (rev 42635)
@@ -645,9 +645,16 @@
 		if (dvert->totweight) {
 			dw_new = MEM_mallocN(sizeof(MDeformWeight)*(dvert->totweight), __func__);
 			if (dvert->dw) {
+#if 1			/* since we dont care about order, swap this with the last, save a memcpy */
+				if (i != dvert->totweight) {
+					dvert->dw[i]= dvert->dw[dvert->totweight];
+				}
+				memcpy(dw_new, dvert->dw, sizeof(MDeformWeight) * dvert->totweight);
+				MEM_freeN(dvert->dw);
+#else
 				memcpy(dw_new, dvert->dw, sizeof(MDeformWeight)*i);
 				memcpy(dw_new+i, dvert->dw+i+1, sizeof(MDeformWeight)*(dvert->totweight-i));
-				MEM_freeN(dvert->dw);
+#endif
 			}
 			dvert->dw = dw_new;
 		}

Modified: trunk/blender/source/blender/editors/object/object_vgroup.c
===================================================================
--- trunk/blender/source/blender/editors/object/object_vgroup.c	2011-12-14 22:54:38 UTC (rev 42634)
+++ trunk/blender/source/blender/editors/object/object_vgroup.c	2011-12-14 23:53:46 UTC (rev 42635)
@@ -1697,7 +1697,7 @@
 static void vgroup_delete_object_mode(Object *ob, bDeformGroup *dg)
 {
 	MDeformVert *dvert_array=NULL;
-	int i, e, dvert_tot=0;
+	int dvert_tot=0;
 	const int def_nr= BLI_findindex(&ob->defbase, dg);
 
 	assert(def_nr > -1);
@@ -1705,20 +1705,21 @@
 	ED_vgroup_give_array(ob->data, &dvert_array, &dvert_tot);
 
 	if(dvert_array) {
+		int i, j;
 		MDeformVert *dv;
 		for(i= 0, dv= dvert_array; i < dvert_tot; i++, dv++) {
 			MDeformWeight *dw;
 
 			dw= defvert_find_index(dv, def_nr);
 			defvert_remove_group(dv, dw); /* dw can be NULL */
-		}
 
-		for(i= 0, dv= dvert_array; i < dvert_tot; i++, dv++) {
-			for(e = 0; e < dv->totweight; e++) {
-				if(dv->dw[e].def_nr > def_nr) {
-					dv->dw[e].def_nr--;
+			/* inline, make into a function if anything else needs to do this */
+			for(j = 0; j < dv->totweight; j++) {
+				if(dv->dw[j].def_nr > def_nr) {
+					dv->dw[j].def_nr--;
 				}
 			}
+			/* done */
 		}
 	}
 




More information about the Bf-blender-cvs mailing list