Revision: 37029
          
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=37029
Author:   jason_hays22
Date:     2011-05-31 00:52:02 +0000 (Tue, 31 May 2011)
Log Message:
-----------
paint_vertex.c
Tweaked get_locked_flag() so 'i' wasn't initialized twice

Fixed a problem in do_weight_paint_vertex() that involved accidentally auto 
normalizing a locked group incorrectly if you painted an unlocked group.

Modified Paths:
--------------
    branches/soc-2011-radish/source/blender/editors/sculpt_paint/paint_vertex.c

Modified: 
branches/soc-2011-radish/source/blender/editors/sculpt_paint/paint_vertex.c
===================================================================
--- branches/soc-2011-radish/source/blender/editors/sculpt_paint/paint_vertex.c 
2011-05-30 18:57:28 UTC (rev 37028)
+++ branches/soc-2011-radish/source/blender/editors/sculpt_paint/paint_vertex.c 
2011-05-31 00:52:02 UTC (rev 37029)
@@ -1077,13 +1077,28 @@
 /* Jason was here */
 static char get_locked_flag(Object *ob, int vgroup)
 {
-       int i = 0;
+       int i;
        bDeformGroup *defgroup = ob->defbase.first;
        for(i = 0; i < vgroup && defgroup; i++) {
                defgroup = defgroup->next;
        }
-       return defgroup->flag;
+       if(defgroup) {
+               return defgroup->flag;
+       }
+       return 0;
 }
+/* Jason was here */
+static int locked_group_exists(Object *ob)
+{
+       bDeformGroup *defgroup = ob->defbase.first;
+       while(defgroup) {
+               if(defgroup->flag){
+                       return TRUE;
+               }
+               defgroup = defgroup->next;
+       }
+       return FALSE;
+}
 
 /*Jason was here
 not sure where these prototypes belong at them moment
@@ -1171,6 +1186,7 @@
        
        /* Jason was here */
        char locked;
+       int lge = 0;
        float oldw;
 
        if(wp->flag & VP_ONLYVGROUP) {
@@ -1193,7 +1209,9 @@
        if(locked) {
                fix_weight_ratios(me, dw, oldw);
                do_wp_auto_normalize_locked_groups(me, me->dvert, validmap);
-       }else {
+       } else if((lge = locked_group_exists(ob))) {
+               do_wp_auto_normalize_locked_groups(me, me->dvert, validmap);
+       } else {
                do_weight_paint_auto_normalize(me->dvert+index, vgroup, 
validmap);
        }
        if(me->editflag & ME_EDIT_MIRROR_X) {   /* x mirror painting */
@@ -1212,6 +1230,8 @@
                        if(locked) {
                                fix_weight_ratios(me, uw, oldw);
                                do_wp_auto_normalize_locked_groups(me, 
me->dvert, validmap);
+                       } else if(lge) {
+                               do_wp_auto_normalize_locked_groups(me, 
me->dvert, validmap);
                        } else {
                                do_weight_paint_auto_normalize(me->dvert+j, 
vgroup, validmap);
                        }

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to