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>2011-12-16 03:59:02 +0400
committerCampbell Barton <ideasman42@gmail.com>2011-12-16 03:59:02 +0400
commit862dc635ed98c6d1ffc7c755058c682021da4c6b (patch)
tree11de5533aaae2da3eab2ab63c5d5977aea73dbc4 /source/blender/editors/space_view3d/view3d_buttons.c
parentd0b70cffaf99321c57045d8dc8ec197b1542395c (diff)
parent0dbd9ea73f7f86e02d9aae6c65c3ce5e3c4ecd4b (diff)
svn merge ^/trunk/blender -r42617:42655
Diffstat (limited to 'source/blender/editors/space_view3d/view3d_buttons.c')
-rw-r--r--source/blender/editors/space_view3d/view3d_buttons.c61
1 files changed, 27 insertions, 34 deletions
diff --git a/source/blender/editors/space_view3d/view3d_buttons.c b/source/blender/editors/space_view3d/view3d_buttons.c
index 1f49a4d526b..469452697c5 100644
--- a/source/blender/editors/space_view3d/view3d_buttons.c
+++ b/source/blender/editors/space_view3d/view3d_buttons.c
@@ -703,14 +703,14 @@ static void vgroup_copy_active_to_sel(Object *ob)
}
}
-static void vgroup_copy_active_to_sel_single(Object *ob, int def_nr)
+static void vgroup_copy_active_to_sel_single(Object *ob, const int def_nr)
{
BMVert *eve_act;
- MDeformVert *dvert_act;
+ MDeformVert *dv_act;
- act_vert_def(ob, &eve_act, &dvert_act);
+ act_vert_def(ob, &eve_act, &dv_act);
- if(dvert_act==NULL) {
+ if(dv_act==NULL) {
return;
}
else {
@@ -718,44 +718,36 @@ static void vgroup_copy_active_to_sel_single(Object *ob, int def_nr)
BMEditMesh *em = me->edit_btmesh;
BMIter iter;
BMVert *eve;
- MDeformVert *dvert;
+ MDeformVert *dv;
MDeformWeight *dw;
- float act_weight = -1.0f;
- int i;
+ float weight_act;
int index= 0;
- for(i=0, dw=dvert_act->dw; i < dvert_act->totweight; i++, dw++) {
- if(def_nr == dw->def_nr) {
- act_weight= dw->weight;
- break;
- }
- }
+ dw= defvert_find_index(dv_act, def_nr);
- if(act_weight < -0.5f)
+ if(dw == NULL)
return;
+ weight_act= dw->weight;
+
eve = BMIter_New(&iter, em->bm, BM_VERTS_OF_MESH, NULL);
for (index=0; eve; eve=BMIter_Step(&iter), index++) {
if(BM_TestHFlag(eve, BM_SELECT) && eve != eve_act) {
- dvert= CustomData_bmesh_get(&em->bm->vdata, eve->head.data, CD_MDEFORMVERT);
- if(dvert) {
- for(i=0, dw=dvert->dw; i < dvert->totweight; i++, dw++) {
- if(def_nr == dw->def_nr) {
- dw->weight= act_weight;
+ dv= CustomData_bmesh_get(&em->bm->vdata, eve->head.data, CD_MDEFORMVERT);
+ dw= defvert_find_index(dv, def_nr);
+ if (dw) {
+ dw->weight= weight_act;
- if(me->editflag & ME_EDIT_MIRROR_X)
- editvert_mirror_update(ob, eve, -1, index);
-
- break;
- }
+ if (me->editflag & ME_EDIT_MIRROR_X) {
+ editvert_mirror_update(ob, eve, -1, index);
}
}
}
}
- if(me->editflag & ME_EDIT_MIRROR_X)
+ if(me->editflag & ME_EDIT_MIRROR_X) {
editvert_mirror_update(ob, eve_act, -1, -1);
-
+ }
}
}
@@ -825,14 +817,15 @@ static void view3d_panel_vgroup(const bContext *C, Panel *pa)
Object *ob= OBACT;
BMVert *eve;
- MDeformVert *dvert;
+ MDeformVert *dv;
- act_vert_def(ob, &eve, &dvert);
+ act_vert_def(ob, &eve, &dv);
- if(dvert && dvert->totweight) {
+ if(dv && dv->totweight) {
uiLayout *col;
bDeformGroup *dg;
- int i;
+ MDeformWeight *dw = dv->dw;
+ unsigned int i;
int yco = 0;
uiBlockSetHandleFunc(block, do_view3d_vgroup_buttons, NULL);
@@ -842,11 +835,11 @@ static void view3d_panel_vgroup(const bContext *C, Panel *pa)
uiBlockBeginAlign(block);
- for (i=0; i<dvert->totweight; i++){
- dg = BLI_findlink (&ob->defbase, dvert->dw[i].def_nr);
+ for (i= dv->totweight; i != 0; i--, dw++) {
+ dg = BLI_findlink (&ob->defbase, dw->def_nr);
if(dg) {
- uiDefButF(block, NUM, B_VGRP_PNL_EDIT_SINGLE + dvert->dw[i].def_nr, dg->name, 0, yco, 180, 20, &dvert->dw[i].weight, 0.0, 1.0, 1, 3, "");
- uiDefBut(block, BUT, B_VGRP_PNL_COPY_SINGLE + dvert->dw[i].def_nr, "C", 180,yco,20,20, NULL, 0, 0, 0, 0, "Copy this groups weight to other selected verts");
+ uiDefButF(block, NUM, B_VGRP_PNL_EDIT_SINGLE + dw->def_nr, dg->name, 0, yco, 180, 20, &dw->weight, 0.0, 1.0, 1, 3, "");
+ uiDefBut(block, BUT, B_VGRP_PNL_COPY_SINGLE + dw->def_nr, "C", 180,yco,20,20, NULL, 0, 0, 0, 0, "Copy this groups weight to other selected verts");
yco -= 20;
}
}