[Bf-blender-cvs] [c1e4aaa] master: Fix T48387: Mirror weights keeps groups assigned

Campbell Barton noreply at git.blender.org
Tue May 10 18:41:19 CEST 2016


Commit: c1e4aaa289f64748093d4cd7590f5836b8873466
Author: Campbell Barton
Date:   Wed May 11 01:32:26 2016 +1000
Branches: master
https://developer.blender.org/rBc1e4aaa289f64748093d4cd7590f5836b8873466

Fix T48387: Mirror weights keeps groups assigned

Swapping the weights kept zero weight verts assigned.

===================================================================

M	source/blender/editors/object/object_vgroup.c

===================================================================

diff --git a/source/blender/editors/object/object_vgroup.c b/source/blender/editors/object/object_vgroup.c
index bf626aa..414cc47 100644
--- a/source/blender/editors/object/object_vgroup.c
+++ b/source/blender/editors/object/object_vgroup.c
@@ -2096,14 +2096,19 @@ static void dvert_mirror_op(MDeformVert *dvert, MDeformVert *dvert_mirr,
 				MDeformWeight *dw =      defvert_find_index(dvert, act_vgroup);
 				MDeformWeight *dw_mirr = defvert_find_index(dvert_mirr, act_vgroup);
 
-				if (dw || dw_mirr) {
-					if (dw_mirr == NULL)
-						dw_mirr = defvert_verify_index(dvert_mirr, act_vgroup);
-					if (dw == NULL)
-						dw = defvert_verify_index(dvert, act_vgroup);
-
+				if (dw && dw_mirr) {
 					SWAP(float, dw->weight, dw_mirr->weight);
 				}
+				else if (dw) {
+					dw_mirr = defvert_verify_index(dvert_mirr, act_vgroup);
+					dw_mirr->weight = dw->weight;
+					defvert_remove_group(dvert, dw);
+				}
+				else if (dw_mirr) {
+					dw = defvert_verify_index(dvert, act_vgroup);
+					dw->weight = dw_mirr->weight;
+					defvert_remove_group(dvert_mirr, dw_mirr);
+				}
 			}
 		}




More information about the Bf-blender-cvs mailing list