Fix T48387: Mirror weights keeps groups assigned
Swapping the weights kept zero weight verts assigned.
This commit is contained in:
parent
e525a06800
commit
c1e4aaa289
@ -2096,14 +2096,19 @@ static void dvert_mirror_op(MDeformVert *dvert, MDeformVert *dvert_mirr,
|
|||||||
MDeformWeight *dw = defvert_find_index(dvert, act_vgroup);
|
MDeformWeight *dw = defvert_find_index(dvert, act_vgroup);
|
||||||
MDeformWeight *dw_mirr = defvert_find_index(dvert_mirr, act_vgroup);
|
MDeformWeight *dw_mirr = defvert_find_index(dvert_mirr, act_vgroup);
|
||||||
|
|
||||||
if (dw || dw_mirr) {
|
if (dw && dw_mirr) {
|
||||||
if (dw_mirr == NULL)
|
|
||||||
dw_mirr = defvert_verify_index(dvert_mirr, act_vgroup);
|
|
||||||
if (dw == NULL)
|
|
||||||
dw = defvert_verify_index(dvert, act_vgroup);
|
|
||||||
|
|
||||||
SWAP(float, dw->weight, dw_mirr->weight);
|
SWAP(float, dw->weight, dw_mirr->weight);
|
||||||
}
|
}
|
||||||
|
else if (dw) {
|
||||||
|
dw_mirr = defvert_verify_index(dvert_mirr, act_vgroup);
|
||||||
|
dw_mirr->weight = dw->weight;
|
||||||
|
defvert_remove_group(dvert, dw);
|
||||||
|
}
|
||||||
|
else if (dw_mirr) {
|
||||||
|
dw = defvert_verify_index(dvert, act_vgroup);
|
||||||
|
dw->weight = dw_mirr->weight;
|
||||||
|
defvert_remove_group(dvert_mirr, dw_mirr);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user