Minor API Edits.
added BM_mesh_elem_flag_enable_all (only had disable function), and add argunt for vert/edge/face type. use these functions from EDBM_flag_enable/disable_all (had duplicate code).
This commit is contained in:
@@ -47,7 +47,8 @@ void BM_elem_select_set(struct BMesh *bm, void *element, int select);
|
||||
* chuck it.*/
|
||||
int BM_elem_select_test(BMesh *bm, const void *element);
|
||||
|
||||
void BM_mesh_flag_disable_all(BMesh *bm, const char hflag);
|
||||
void BM_mesh_elem_flag_enable_all(BMesh *bm, const char htype, const char hflag);
|
||||
void BM_mesh_elem_flag_disable_all(BMesh *bm, const char htype, const char hflag);
|
||||
|
||||
/* individual element select functions, BM_elem_select_set is a shortcut for these
|
||||
* that automatically detects which one to use*/
|
||||
|
@@ -754,7 +754,7 @@ void BM_select_history_validate(BMesh *bm)
|
||||
}
|
||||
}
|
||||
|
||||
void BM_mesh_flag_disable_all(BMesh *bm, const char hflag)
|
||||
void BM_mesh_elem_flag_disable_all(BMesh *bm, const char htype, const char hflag)
|
||||
{
|
||||
const char iter_types[3] = {BM_VERTS_OF_MESH,
|
||||
BM_EDGES_OF_MESH,
|
||||
@@ -768,14 +768,43 @@ void BM_mesh_flag_disable_all(BMesh *bm, const char hflag)
|
||||
}
|
||||
|
||||
for (i = 0; i < 3; i++) {
|
||||
ele = BM_iter_new(&iter, bm, iter_types[i], NULL);
|
||||
for ( ; ele; ele = BM_iter_step(&iter)) {
|
||||
if (hflag & BM_ELEM_SELECT) BM_elem_select_set(bm, ele, FALSE);
|
||||
BM_elem_flag_disable(ele, hflag);
|
||||
if (htype & iter_types[i]) {
|
||||
ele = BM_iter_new(&iter, bm, iter_types[i], NULL);
|
||||
for ( ; ele; ele = BM_iter_step(&iter)) {
|
||||
if (hflag & BM_ELEM_SELECT) {
|
||||
BM_elem_select_set(bm, ele, FALSE);
|
||||
}
|
||||
BM_elem_flag_disable(ele, hflag);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void BM_mesh_elem_flag_enable_all(BMesh *bm, const char htype, const char hflag)
|
||||
{
|
||||
const char iter_types[3] = {BM_VERTS_OF_MESH,
|
||||
BM_EDGES_OF_MESH,
|
||||
BM_FACES_OF_MESH};
|
||||
BMIter iter;
|
||||
BMHeader *ele;
|
||||
int i;
|
||||
|
||||
if (hflag & BM_ELEM_SELECT) {
|
||||
BM_select_history_clear(bm);
|
||||
}
|
||||
|
||||
for (i = 0; i < 3; i++) {
|
||||
if (htype & iter_types[i]) {
|
||||
ele = BM_iter_new(&iter, bm, iter_types[i], NULL);
|
||||
for ( ; ele; ele = BM_iter_step(&iter)) {
|
||||
if (hflag & BM_ELEM_SELECT) {
|
||||
BM_elem_select_set(bm, ele, TRUE);
|
||||
}
|
||||
BM_elem_flag_enable(ele, hflag);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/***************** Mesh Hiding stuff *********** */
|
||||
|
||||
|
@@ -1044,8 +1044,8 @@ void BM_mesh_esubdivideflag(Object *UNUSED(obedit), BMesh *bm, int flag, float s
|
||||
BMHeader *ele;
|
||||
// int i;
|
||||
|
||||
/* deselect inpu */
|
||||
BM_mesh_flag_disable_all(bm, BM_ELEM_SELECT);
|
||||
/* deselect input */
|
||||
BM_mesh_elem_flag_disable_all(bm, BM_VERT | BM_EDGE | BM_FACE, BM_ELEM_SELECT);
|
||||
|
||||
ele = BMO_iter_new(&iter, bm, &op, "outinner", BM_EDGE|BM_VERT);
|
||||
for ( ; ele; ele = BMO_iter_step(&iter)) {
|
||||
|
@@ -3563,7 +3563,7 @@ static int split_mesh_exec(bContext *C, wmOperator *op)
|
||||
|
||||
EDBM_InitOpf(em, &bmop, op, "split geom=%hvef", BM_ELEM_SELECT);
|
||||
BMO_op_exec(em->bm, &bmop);
|
||||
BM_mesh_flag_disable_all(em->bm, BM_ELEM_SELECT);
|
||||
BM_mesh_elem_flag_disable_all(em->bm, BM_VERT | BM_EDGE | BM_FACE, BM_ELEM_SELECT);
|
||||
BMO_slot_buffer_hflag_enable(em->bm, &bmop, "geomout", BM_ELEM_SELECT, BM_ALL);
|
||||
if (!EDBM_FinishOp(em, &bmop, op, TRUE)) {
|
||||
return OPERATOR_CANCELLED;
|
||||
|
@@ -468,44 +468,12 @@ int EDBM_get_actSelection(BMEditMesh *em, BMEditSelection *ese)
|
||||
|
||||
void EDBM_flag_disable_all(BMEditMesh *em, const char hflag)
|
||||
{
|
||||
const char iter_types[3] = {BM_VERTS_OF_MESH,
|
||||
BM_EDGES_OF_MESH,
|
||||
BM_FACES_OF_MESH};
|
||||
BMIter iter;
|
||||
BMHeader *ele;
|
||||
int i;
|
||||
|
||||
if (hflag & BM_ELEM_SELECT)
|
||||
BM_select_history_clear(em->bm);
|
||||
|
||||
for (i = 0; i < 3; i++) {
|
||||
BM_ITER(ele, &iter, em->bm, iter_types[i], NULL) {
|
||||
if (hflag & BM_ELEM_SELECT) BM_elem_select_set(em->bm, ele, FALSE);
|
||||
BM_elem_flag_disable(ele, hflag);
|
||||
}
|
||||
}
|
||||
BM_mesh_elem_flag_disable_all(em->bm, BM_VERT|BM_EDGE|BM_FACE, hflag);
|
||||
}
|
||||
|
||||
void EDBM_flag_enable_all(BMEditMesh *em, const char hflag)
|
||||
{
|
||||
const char iter_types[3] = {BM_VERTS_OF_MESH,
|
||||
BM_EDGES_OF_MESH,
|
||||
BM_FACES_OF_MESH};
|
||||
BMIter iter;
|
||||
BMHeader *ele;
|
||||
int i;
|
||||
|
||||
for (i = 0; i < 3; i++) {
|
||||
ele = BM_iter_new(&iter, em->bm, iter_types[i], NULL);
|
||||
for ( ; ele; ele = BM_iter_step(&iter)) {
|
||||
if (hflag & BM_ELEM_SELECT) {
|
||||
BM_elem_select_set(em->bm, ele, TRUE);
|
||||
}
|
||||
else {
|
||||
BM_elem_flag_enable(ele, hflag);
|
||||
}
|
||||
}
|
||||
}
|
||||
BM_mesh_elem_flag_enable_all(em->bm, BM_VERT|BM_EDGE|BM_FACE, hflag);
|
||||
}
|
||||
|
||||
/**************-------------- Undo ------------*****************/
|
||||
|
Reference in New Issue
Block a user