Revision: 37105 http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=37105 Author: jason_hays22 Date: 2011-06-02 17:28:04 +0000 (Thu, 02 Jun 2011) Log Message: ----------- Made misc vgroups unable to change bone groups' weights when auto normalize is active
Added buttons for locking all vgroups, unlocking all vgroups, and inverting the locks of all vgroups Modified Paths: -------------- branches/soc-2011-radish/release/scripts/startup/bl_ui/properties_data_mesh.py branches/soc-2011-radish/source/blender/editors/object/object_intern.h branches/soc-2011-radish/source/blender/editors/object/object_ops.c branches/soc-2011-radish/source/blender/editors/object/object_vgroup.c branches/soc-2011-radish/source/blender/editors/sculpt_paint/paint_vertex.c Modified: branches/soc-2011-radish/release/scripts/startup/bl_ui/properties_data_mesh.py =================================================================== --- branches/soc-2011-radish/release/scripts/startup/bl_ui/properties_data_mesh.py 2011-06-02 17:19:07 UTC (rev 37104) +++ branches/soc-2011-radish/release/scripts/startup/bl_ui/properties_data_mesh.py 2011-06-02 17:28:04 UTC (rev 37105) @@ -139,6 +139,7 @@ col = row.column(align=True) # Jason was here # col.prop(group, "flag") + col.operator("object.vertex_group_add", icon='ZOOMIN', text="") col.operator("object.vertex_group_remove", icon='ZOOMOUT', text="") col.menu("MESH_MT_vertex_group_specials", icon='DOWNARROW_HLT', text="") @@ -149,6 +150,12 @@ if group: row = layout.row() row.prop(group, "name") + #Jason was here + row = layout.row() + sub = row.row(align=True) + sub.operator("object.vertex_group_lock_all", text="Lock All") + sub.operator("object.vertex_group_invert_locks", text="Invert Locks") + sub.operator("object.vertex_group_unlock_all", text="Unlock All") if ob.mode == 'EDIT' and len(ob.vertex_groups) > 0: row = layout.row() Modified: branches/soc-2011-radish/source/blender/editors/object/object_intern.h =================================================================== --- branches/soc-2011-radish/source/blender/editors/object/object_intern.h 2011-06-02 17:19:07 UTC (rev 37104) +++ branches/soc-2011-radish/source/blender/editors/object/object_intern.h 2011-06-02 17:28:04 UTC (rev 37105) @@ -199,6 +199,11 @@ void OBJECT_OT_vertex_group_normalize(struct wmOperatorType *ot); void OBJECT_OT_vertex_group_normalize_all(struct wmOperatorType *ot); void OBJECT_OT_vertex_group_levels(struct wmOperatorType *ot); +/* Jason was here */ +void OBJECT_OT_vertex_group_lock_all(struct wmOperatorType *ot); +void OBJECT_OT_vertex_group_invert_locks(struct wmOperatorType *ot); +void OBJECT_OT_vertex_group_unlock_all(struct wmOperatorType *ot); + void OBJECT_OT_vertex_group_invert(struct wmOperatorType *ot); void OBJECT_OT_vertex_group_blend(struct wmOperatorType *ot); void OBJECT_OT_vertex_group_clean(struct wmOperatorType *ot); Modified: branches/soc-2011-radish/source/blender/editors/object/object_ops.c =================================================================== --- branches/soc-2011-radish/source/blender/editors/object/object_ops.c 2011-06-02 17:19:07 UTC (rev 37104) +++ branches/soc-2011-radish/source/blender/editors/object/object_ops.c 2011-06-02 17:28:04 UTC (rev 37105) @@ -173,6 +173,11 @@ WM_operatortype_append(OBJECT_OT_vertex_group_copy); WM_operatortype_append(OBJECT_OT_vertex_group_normalize); WM_operatortype_append(OBJECT_OT_vertex_group_normalize_all); + /* Jason was here */ + WM_operatortype_append(OBJECT_OT_vertex_group_invert_locks); + WM_operatortype_append(OBJECT_OT_vertex_group_lock_all); + WM_operatortype_append(OBJECT_OT_vertex_group_unlock_all); + WM_operatortype_append(OBJECT_OT_vertex_group_invert); WM_operatortype_append(OBJECT_OT_vertex_group_levels); WM_operatortype_append(OBJECT_OT_vertex_group_blend); Modified: branches/soc-2011-radish/source/blender/editors/object/object_vgroup.c =================================================================== --- branches/soc-2011-radish/source/blender/editors/object/object_vgroup.c 2011-06-02 17:19:07 UTC (rev 37104) +++ branches/soc-2011-radish/source/blender/editors/object/object_vgroup.c 2011-06-02 17:28:04 UTC (rev 37105) @@ -829,8 +829,34 @@ if (dvert_array) MEM_freeN(dvert_array); } +/* Jason was here */ +static void vgroup_invert_locks(Object *ob) +{ + bDeformGroup *dg = ob->defbase.first; + while(dg) { + dg->flag = !dg->flag; + dg = dg->next; + } +} +/* Jason was here */ +static void vgroup_lock_all(Object *ob) +{ + bDeformGroup *dg = ob->defbase.first; + while(dg) { + dg->flag = TRUE; + dg = dg->next; + } +} +/* Jason was here */ +static void vgroup_unlock_all(Object *ob) +{ + bDeformGroup *dg = ob->defbase.first; + while(dg) { + dg->flag = FALSE; + dg = dg->next; + } +} - static void vgroup_invert(Object *ob, int auto_assign, int auto_remove) { bDeformGroup *dg; @@ -1746,7 +1772,87 @@ RNA_def_boolean(ot->srna, "lock_active", TRUE, "Lock Active", "Keep the values of the active group while normalizing others."); } +/* Jason was here */ +static int vertex_group_invert_locks_exec(bContext *C, wmOperator *op) +{ + Object *ob= CTX_data_pointer_get_type(C, "object", &RNA_Object).data; + vgroup_invert_locks(ob); + // not sure what these 3 do yet! + DAG_id_tag_update(&ob->id, OB_RECALC_DATA); + WM_event_add_notifier(C, NC_OBJECT|ND_DRAW, ob); + WM_event_add_notifier(C, NC_GEOM|ND_DATA, ob->data); + + return OPERATOR_FINISHED; +} +/* Jason was here */ +void OBJECT_OT_vertex_group_invert_locks(wmOperatorType *ot) +{ + /* identifiers */ + ot->name= "Invert All Vertex Group Locks"; + ot->idname= "OBJECT_OT_vertex_group_invert_locks"; + + /* api callbacks */ + ot->poll= vertex_group_poll; + ot->exec= vertex_group_invert_locks_exec; + + /* flags */ + ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; +} +/* Jason was here */ +static int vertex_group_lock_all_exec(bContext *C, wmOperator *op) +{ + Object *ob= CTX_data_pointer_get_type(C, "object", &RNA_Object).data; + + vgroup_lock_all(ob); + // not sure what these 3 do yet! + DAG_id_tag_update(&ob->id, OB_RECALC_DATA); + WM_event_add_notifier(C, NC_OBJECT|ND_DRAW, ob); + WM_event_add_notifier(C, NC_GEOM|ND_DATA, ob->data); + + return OPERATOR_FINISHED; +} +/* Jason was here */ +void OBJECT_OT_vertex_group_lock_all(wmOperatorType *ot) +{ + /* identifiers */ + ot->name= "Turn on all Vertex Group Locks"; + ot->idname= "OBJECT_OT_vertex_group_lock_all"; + + /* api callbacks */ + ot->poll= vertex_group_poll; + ot->exec= vertex_group_lock_all_exec; + + /* flags */ + ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; +} +/* Jason was here */ +static int vertex_group_unlock_all_exec(bContext *C, wmOperator *op) +{ + Object *ob= CTX_data_pointer_get_type(C, "object", &RNA_Object).data; + + vgroup_unlock_all(ob); + // not sure what these 3 do yet! + DAG_id_tag_update(&ob->id, OB_RECALC_DATA); + WM_event_add_notifier(C, NC_OBJECT|ND_DRAW, ob); + WM_event_add_notifier(C, NC_GEOM|ND_DATA, ob->data); + + return OPERATOR_FINISHED; +} +/* Jason was here */ +void OBJECT_OT_vertex_group_unlock_all(wmOperatorType *ot) +{ + /* identifiers */ + ot->name= "Turn off all Vertex Group Locks"; + ot->idname= "OBJECT_OT_vertex_group_unlock_all"; + + /* api callbacks */ + ot->poll= vertex_group_poll; + ot->exec= vertex_group_unlock_all_exec; + + /* flags */ + ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; +} static int vertex_group_invert_exec(bContext *C, wmOperator *op) { Object *ob= CTX_data_pointer_get_type(C, "object", &RNA_Object).data; 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-06-02 17:19:07 UTC (rev 37104) +++ branches/soc-2011-radish/source/blender/editors/sculpt_paint/paint_vertex.c 2011-06-02 17:28:04 UTC (rev 37105) @@ -1230,6 +1230,7 @@ //printf("\n"); if(groups_left_that_can_change > 0) { groups_currently_left = groups_left_that_can_change; + change = change_left/groups_left_that_can_change; do { was_a_change = FALSE; for(i = 0; i < dvert->totweight; i++) { @@ -1238,12 +1239,9 @@ continue; } - change = change_left/groups_left_that_can_change; - dw->weight += change; change_left -= change; //printf("group %d, change: %f weight: %f groups left: %d\n", dw->def_nr, change, dw->weight, groups_left_that_can_change); - if(dw->weight >= 1.0f) { change_left += dw->weight-1.0f; @@ -1277,10 +1275,11 @@ dw->weight = oldw; } else if(bone_groups[dw->def_nr]) { redistribute_weight_change(me->dvert+index, dw, oldw, flags, defcnt, bone_groups); - //do_weight_paint_auto_normalize(me->dvert+index, vgroup, validmap);//do_wp_auto_normalize_locked_groups(me, me->dvert, validmap); + do_weight_paint_auto_normalize(me->dvert+index, vgroup, validmap);//do_wp_auto_normalize_locked_groups(me, me->dvert, validmap); } - } //else if(bone_groups[dw->def_nr]) // should it be disabled for the active group if it is not a bone group + } else if(bone_groups[dw->def_nr]) {// disable auto normalize if the active group is not a bone group do_weight_paint_auto_normalize(me->dvert+index, vgroup, validmap); + } } // Jason _______________________________________________ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org http://lists.blender.org/mailman/listinfo/bf-blender-cvs