diff options
author | Campbell Barton <ideasman42@gmail.com> | 2011-09-14 09:56:25 +0400 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2011-09-14 09:56:25 +0400 |
commit | 718f78d548ed58c7d82c1803bf4fb652421e926c (patch) | |
tree | 128e980b962d3ece47b86932f8404df7e9340fe4 /source/blender/blenkernel/intern/armature.c | |
parent | 4c99d83b562b62bbd6c1b5450b9e9ca8cc49676e (diff) |
remove count_selected_defgroups() function and make get_selected_defgroups() return the total selected items.
also some variable renameing, no functional changes.
Diffstat (limited to 'source/blender/blenkernel/intern/armature.c')
-rw-r--r-- | source/blender/blenkernel/intern/armature.c | 46 |
1 files changed, 18 insertions, 28 deletions
diff --git a/source/blender/blenkernel/intern/armature.c b/source/blender/blenkernel/intern/armature.c index 38c7b55cf51..3a14074d55b 100644 --- a/source/blender/blenkernel/intern/armature.c +++ b/source/blender/blenkernel/intern/armature.c @@ -2467,40 +2467,30 @@ void where_is_pose (Scene *scene, Object *ob) } /* Jason was here */ -char* get_selected_defgroups(Object *ob, int defcnt) +/* Returns total selected vgroups */ +int get_selected_defgroups(Object *ob, char *dg_selection, int defbase_len) { - bPoseChannel *chan; - bPose *pose; bDeformGroup *defgroup; - //Bone *bone; - char *dg_flags = MEM_callocN(defcnt*sizeof(char), "dg_selected_flags"); - int i; - Object *armob = object_pose_armature_get(ob); + unsigned int i; + Object *armob= object_pose_armature_get(ob); + int dg_flags_sel_tot= 0; if(armob) { - pose = armob->pose; - for (chan=pose->chanbase.first; chan; chan=chan->next) { - for (i = 0, defgroup = ob->defbase.first; i < defcnt && defgroup; defgroup = defgroup->next, i++) { - if(!strcmp(defgroup->name, chan->bone->name)) { - dg_flags[i] = (chan->bone->flag & BONE_SELECTED); - } + bPose *pose= armob->pose; + for (i= 0, defgroup= ob->defbase.first; i < defbase_len && defgroup; defgroup = defgroup->next, i++) { + bPoseChannel *pchan= get_pose_channel(pose, defgroup->name); + if(pchan && (pchan->bone->flag & BONE_SELECTED)) { + dg_selection[i]= TRUE; + dg_flags_sel_tot++; + } + else { + dg_selection[i]= FALSE; } } } - - return dg_flags; -} - -/* TODO move duplicates to header */ -/* Jason was here duplicate function */ -int count_selected_defgroups(const char *list, int len) -{ - int i; - int cnt = 0; - for(i = 0; i < len; i++) { - if (list[i]) { - cnt++; - } + else { + memset(dg_selection, FALSE, sizeof(char) * defbase_len); } - return cnt; + + return dg_flags_sel_tot; } |