Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCampbell Barton <ideasman42@gmail.com>2010-02-18 01:26:50 +0300
committerCampbell Barton <ideasman42@gmail.com>2010-02-18 01:26:50 +0300
commit04035b81b71b6973cfc6fbe60019095790366407 (patch)
tree21757710b702b96295af140595a9af9b779d86c3 /source/blender/editors
parent0dc80266913432eff4a6c6328af1e85bec4c5fc1 (diff)
[#21207] bpy.ops.object.vertex_group_sort() sorts group names, but not group data
support for vertex group sorting in editmode
Diffstat (limited to 'source/blender/editors')
-rw-r--r--source/blender/editors/object/object_vgroup.c31
1 files changed, 27 insertions, 4 deletions
diff --git a/source/blender/editors/object/object_vgroup.c b/source/blender/editors/object/object_vgroup.c
index 626afd1a315..8cdd57d2293 100644
--- a/source/blender/editors/object/object_vgroup.c
+++ b/source/blender/editors/object/object_vgroup.c
@@ -59,6 +59,7 @@
#include "BKE_mesh.h"
#include "BKE_paint.h"
#include "BKE_utildefines.h"
+#include "BKE_report.h"
#include "RNA_access.h"
#include "RNA_define.h"
@@ -1952,10 +1953,30 @@ static int vertex_group_sort_exec(bContext *C, wmOperator *op)
name += DEF_GROUP_SIZE;
}
- ED_vgroup_give_array(ob->data, &dvert, &dvert_tot);
- while(dvert && dvert_tot--) {
- defvert_remap(dvert, sort_map);
- dvert++;
+ if(ob->mode == OB_MODE_EDIT) {
+ if(ob->type==OB_MESH) {
+ EditMesh *em = BKE_mesh_get_editmesh(ob->data);
+ EditVert *eve;
+
+ for(eve=em->verts.first; eve; eve=eve->next){
+ dvert= CustomData_em_get(&em->vdata, eve->data, CD_MDEFORMVERT);
+ if(dvert && dvert->totweight){
+ defvert_remap(dvert, sort_map);
+ }
+ }
+ }
+ else {
+ BKE_report(op->reports, RPT_ERROR, "Editmode lattice isnt supported yet.");
+ return OPERATOR_CANCELLED;
+ }
+ }
+ else {
+ ED_vgroup_give_array(ob->data, &dvert, &dvert_tot);
+ while(dvert && dvert_tot--) {
+ if(dvert->totweight)
+ defvert_remap(dvert, sort_map);
+ dvert++;
+ }
}
/* update users */
@@ -1966,6 +1987,8 @@ static int vertex_group_sort_exec(bContext *C, wmOperator *op)
vgroup_remap_update_users(ob, sort_map_update);
+ ob->actdef= sort_map_update[ob->actdef];
+
MEM_freeN(name_array);
MEM_freeN(sort_map_update);