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.*/
|
* chuck it.*/
|
||||||
int BM_elem_select_test(BMesh *bm, const void *element);
|
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
|
/* individual element select functions, BM_elem_select_set is a shortcut for these
|
||||||
* that automatically detects which one to use*/
|
* 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,
|
const char iter_types[3] = {BM_VERTS_OF_MESH,
|
||||||
BM_EDGES_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++) {
|
for (i = 0; i < 3; i++) {
|
||||||
ele = BM_iter_new(&iter, bm, iter_types[i], NULL);
|
if (htype & iter_types[i]) {
|
||||||
for ( ; ele; ele = BM_iter_step(&iter)) {
|
ele = BM_iter_new(&iter, bm, iter_types[i], NULL);
|
||||||
if (hflag & BM_ELEM_SELECT) BM_elem_select_set(bm, ele, FALSE);
|
for ( ; ele; ele = BM_iter_step(&iter)) {
|
||||||
BM_elem_flag_disable(ele, hflag);
|
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 *********** */
|
/***************** Mesh Hiding stuff *********** */
|
||||||
|
|
||||||
|
|||||||
@@ -1044,8 +1044,8 @@ void BM_mesh_esubdivideflag(Object *UNUSED(obedit), BMesh *bm, int flag, float s
|
|||||||
BMHeader *ele;
|
BMHeader *ele;
|
||||||
// int i;
|
// int i;
|
||||||
|
|
||||||
/* deselect inpu */
|
/* deselect input */
|
||||||
BM_mesh_flag_disable_all(bm, BM_ELEM_SELECT);
|
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);
|
ele = BMO_iter_new(&iter, bm, &op, "outinner", BM_EDGE|BM_VERT);
|
||||||
for ( ; ele; ele = BMO_iter_step(&iter)) {
|
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);
|
EDBM_InitOpf(em, &bmop, op, "split geom=%hvef", BM_ELEM_SELECT);
|
||||||
BMO_op_exec(em->bm, &bmop);
|
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);
|
BMO_slot_buffer_hflag_enable(em->bm, &bmop, "geomout", BM_ELEM_SELECT, BM_ALL);
|
||||||
if (!EDBM_FinishOp(em, &bmop, op, TRUE)) {
|
if (!EDBM_FinishOp(em, &bmop, op, TRUE)) {
|
||||||
return OPERATOR_CANCELLED;
|
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)
|
void EDBM_flag_disable_all(BMEditMesh *em, const char hflag)
|
||||||
{
|
{
|
||||||
const char iter_types[3] = {BM_VERTS_OF_MESH,
|
BM_mesh_elem_flag_disable_all(em->bm, BM_VERT|BM_EDGE|BM_FACE, hflag);
|
||||||
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);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void EDBM_flag_enable_all(BMEditMesh *em, const char hflag)
|
void EDBM_flag_enable_all(BMEditMesh *em, const char hflag)
|
||||||
{
|
{
|
||||||
const char iter_types[3] = {BM_VERTS_OF_MESH,
|
BM_mesh_elem_flag_enable_all(em->bm, BM_VERT|BM_EDGE|BM_FACE, hflag);
|
||||||
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);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**************-------------- Undo ------------*****************/
|
/**************-------------- Undo ------------*****************/
|
||||||
|
|||||||
Reference in New Issue
Block a user