[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [57409] trunk/blender/source/blender/ editors/space_view3d/view3d_buttons.c: Vertex weight panel now uses same sort order as Vertex Group list

Gaia Clary gaia.clary at machinimatrix.org
Wed Jun 12 12:39:28 CEST 2013


Revision: 57409
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=57409
Author:   gaiaclary
Date:     2013-06-12 10:39:27 +0000 (Wed, 12 Jun 2013)
Log Message:
-----------
Vertex weight panel now uses same sort order as Vertex Group list

Modified Paths:
--------------
    trunk/blender/source/blender/editors/space_view3d/view3d_buttons.c

Modified: trunk/blender/source/blender/editors/space_view3d/view3d_buttons.c
===================================================================
--- trunk/blender/source/blender/editors/space_view3d/view3d_buttons.c	2013-06-12 10:03:13 UTC (rev 57408)
+++ trunk/blender/source/blender/editors/space_view3d/view3d_buttons.c	2013-06-12 10:39:27 UTC (rev 57409)
@@ -70,6 +70,7 @@
 
 #include "ED_armature.h"
 #include "ED_gpencil.h"
+#include "ED_object.h"
 #include "ED_mesh.h"
 #include "ED_screen.h"
 #include "ED_transform.h"
@@ -1005,8 +1006,10 @@
 	if (dv && dv->totweight) {
 		uiLayout *col;
 		bDeformGroup *dg;
-		MDeformWeight *dw = dv->dw;
 		unsigned int i;
+		int subset_count, vgroup_tot;
+		bool *vgroup_validmap;
+		eVGroupSelect subset_type = WT_VGROUP_ALL;
 		int yco = 0;
 
 		uiBlockSetHandleFunc(block, do_view3d_vgroup_buttons, NULL);
@@ -1016,16 +1019,21 @@
 
 		uiBlockBeginAlign(block);
 
-		for (i = dv->totweight; i != 0; i--, dw++) {
-			dg = BLI_findlink(&ob->defbase, dw->def_nr);
-			if (dg) {
-				uiDefButF(block, NUM, B_VGRP_PNL_EDIT_SINGLE + dw->def_nr, dg->name, 0, yco, 180, 20,
-				          &dw->weight, 0.0, 1.0, 1, 3, "");
-				uiDefBut(block, BUT, B_VGRP_PNL_COPY_SINGLE + dw->def_nr, "C", 180, yco, 20, 20,
-				         NULL, 0, 0, 0, 0, TIP_("Copy this group's weight to other selected verts"));
-				yco -= 20;
+		vgroup_validmap = ED_vgroup_subset_from_select_type(ob, subset_type, &vgroup_tot, &subset_count);
+		for (i = 0, dg = ob->defbase.first; dg; i++, dg = dg->next) {
+			if (vgroup_validmap[i]) {
+				MDeformWeight *dw = defvert_find_index(dv, i);
+				if (dw) {
+					uiDefButF(block, NUM, B_VGRP_PNL_EDIT_SINGLE + i, dg->name, 0, yco, 180, 20,
+								&dw->weight, 0.0, 1.0, 1, 3, "");
+					uiDefBut(block, BUT, B_VGRP_PNL_COPY_SINGLE + i, "C", 180, yco, 20, 20,
+								NULL, 0, 0, 0, 0, TIP_("Copy this group's weight to other selected verts"));
+					yco -= 20;
+				}
 			}
 		}
+		MEM_freeN(vgroup_validmap);
+
 		yco -= 2;
 
 		uiBlockEndAlign(block);




More information about the Bf-blender-cvs mailing list