RNA: face-map access
Currently RNA doesn't give us a good way of accessing singleton layers, for now expose as a layer list (skin & paint-pask do this too). Noted in T47811 that this should be changed.
This commit is contained in:
@@ -387,6 +387,48 @@ void BKE_mesh_ensure_skin_customdata(Mesh *me)
|
||||
}
|
||||
}
|
||||
|
||||
bool BKE_mesh_ensure_facemap_customdata(struct Mesh *me)
|
||||
{
|
||||
BMesh *bm = me->edit_btmesh ? me->edit_btmesh->bm : NULL;
|
||||
bool changed = false;
|
||||
if (bm) {
|
||||
if (!CustomData_has_layer(&bm->pdata, CD_FACEMAP)) {
|
||||
BM_data_layer_add(bm, &bm->pdata, CD_FACEMAP);
|
||||
changed = true;
|
||||
}
|
||||
}
|
||||
else {
|
||||
if (!CustomData_has_layer(&me->pdata, CD_FACEMAP)) {
|
||||
CustomData_add_layer(&me->pdata,
|
||||
CD_FACEMAP,
|
||||
CD_DEFAULT,
|
||||
NULL,
|
||||
me->totpoly);
|
||||
changed = true;
|
||||
}
|
||||
}
|
||||
return changed;
|
||||
}
|
||||
|
||||
bool BKE_mesh_clear_facemap_customdata(struct Mesh *me)
|
||||
{
|
||||
BMesh *bm = me->edit_btmesh ? me->edit_btmesh->bm : NULL;
|
||||
bool changed = false;
|
||||
if (bm) {
|
||||
if (CustomData_has_layer(&bm->pdata, CD_FACEMAP)) {
|
||||
BM_data_layer_free(bm, &bm->pdata, CD_FACEMAP);
|
||||
changed = true;
|
||||
}
|
||||
}
|
||||
else {
|
||||
if (CustomData_has_layer(&me->pdata, CD_FACEMAP)) {
|
||||
CustomData_free_layers(&me->pdata, CD_FACEMAP, me->totpoly);
|
||||
changed = true;
|
||||
}
|
||||
}
|
||||
return changed;
|
||||
}
|
||||
|
||||
/* this ensures grouped customdata (e.g. mtexpoly and mloopuv and mtface, or
|
||||
* mloopcol and mcol) have the same relative active/render/clone/mask indices.
|
||||
*
|
||||
|
||||
Reference in New Issue
Block a user