Fix T44560: Merge Collapse tool - UVs operator panel option ignored with Collapse but not with other merge types.

Was missing parameter for collapse bmesh operator...
This commit is contained in:
Bastien Montagne 2015-05-01 17:10:39 +02:00
parent f84135ee65
commit 74d31279cd
Notes: blender-bot 2023-04-14 09:18:04 +02:00
Referenced by issue #44560, Merge Collapse tool - UVs operator panel option ignored with Collapse but not with other merge types
4 changed files with 9 additions and 7 deletions

View File

@ -359,6 +359,7 @@ static BMOpDefine bmo_collapse_def = {
"collapse",
/* slots_in */
{{"edges", BMO_OP_SLOT_ELEMENT_BUF, {BM_EDGE}}, /* input edges */
{"uvs", BMO_OP_SLOT_BOOL}, /* also collapse UVs and such */
{{'\0'}},
},
{{{'\0'}}}, /* no output */

View File

@ -494,7 +494,7 @@ void bmo_dissolve_limit_exec(BMesh *bm, BMOperator *op)
static void bm_mesh_edge_collapse_flagged(BMesh *bm, const int flag, const short oflag)
{
BMO_op_callf(bm, flag, "collapse edges=%fe", oflag);
BMO_op_callf(bm, flag, "collapse edges=%fe uvs=%b", oflag, true);
}
void bmo_dissolve_degenerate_exec(BMesh *bm, BMOperator *op)

View File

@ -380,8 +380,11 @@ void bmo_collapse_exec(BMesh *bm, BMOperator *op)
float min[3], max[3], center[3];
unsigned int i, tot;
BMOpSlot *slot_targetmap;
BMO_op_callf(bm, op->flag, "collapse_uvs edges=%s", op, "edges");
if (BMO_slot_bool_get(op->slots_in, "uvs")) {
BMO_op_callf(bm, op->flag, "collapse_uvs edges=%s", op, "edges");
}
BMO_op_init(bm, &weldop, op->flag, "weld_verts");
slot_targetmap = BMO_slot_get(weldop.slots_in, "targetmap");

View File

@ -492,7 +492,7 @@ static int edbm_collapse_edge_exec(bContext *C, wmOperator *op)
Object *obedit = CTX_data_edit_object(C);
BMEditMesh *em = BKE_editmesh_from_object(obedit);
if (!EDBM_op_callf(em, op, "collapse edges=%he", BM_ELEM_SELECT))
if (!EDBM_op_callf(em, op, "collapse edges=%he uvs=%b", BM_ELEM_SELECT, true))
return OPERATOR_CANCELLED;
EDBM_update_generic(em, true, true);
@ -2049,9 +2049,7 @@ static int edbm_merge_exec(bContext *C, wmOperator *op)
ok = merge_firstlast(em, true, uvs, op);
break;
case 5:
ok = true;
if (!EDBM_op_callf(em, op, "collapse edges=%he", BM_ELEM_SELECT))
ok = false;
ok = EDBM_op_callf(em, op, "collapse edges=%he uvs=%b", BM_ELEM_SELECT, uvs);
break;
default:
BLI_assert(0);