Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFabian Schempp <fabianschempp@googlemail.com>2021-08-06 00:47:44 +0300
committerFabian Schempp <fabianschempp@googlemail.com>2021-08-06 00:47:44 +0300
commit504e3c563f851fc0296fb2d6b96704233c477814 (patch)
treede2e8e00995bd44c3fe73bc1746b4a0f99816ce8 /source/blender/bmesh/intern
parentb5573bfbf45fb67a5ee4081f3e22f9e73c74e8ae (diff)
added side selection.
Diffstat (limited to 'source/blender/bmesh/intern')
-rw-r--r--source/blender/bmesh/intern/bmesh_mesh.c80
-rw-r--r--source/blender/bmesh/intern/bmesh_mesh.h5
-rw-r--r--source/blender/bmesh/intern/bmesh_opdefines.c6
3 files changed, 54 insertions, 37 deletions
diff --git a/source/blender/bmesh/intern/bmesh_mesh.c b/source/blender/bmesh/intern/bmesh_mesh.c
index ad8158e2e6f..217c3502b40 100644
--- a/source/blender/bmesh/intern/bmesh_mesh.c
+++ b/source/blender/bmesh/intern/bmesh_mesh.c
@@ -1455,12 +1455,7 @@ void BM_select_vertices(BMesh *bm, const bool *mask)
BMVert *v;
int i = 0;
BM_ITER_MESH (v, &iter, bm, BM_VERTS_OF_MESH) {
- if (mask[i]) {
- BM_elem_flag_set(v, BM_ELEM_SELECT, true);
- }
- else {
- BM_elem_flag_set(v, BM_ELEM_SELECT, false);
- }
+ BM_elem_flag_set(v, BM_ELEM_SELECT, mask[i]);
i++;
}
}
@@ -1474,12 +1469,7 @@ void BM_select_edges(BMesh *bm, const bool *mask)
BMEdge *e;
int i = 0;
BM_ITER_MESH (e, &iter, bm, BM_EDGES_OF_MESH) {
- if (mask[i]) {
- BM_elem_flag_set(e, BM_ELEM_SELECT, true);
- }
- else {
- BM_elem_flag_set(e, BM_ELEM_SELECT, false);
- }
+ BM_elem_flag_set(e, BM_ELEM_SELECT, mask[i]);
i++;
}
}
@@ -1493,14 +1483,47 @@ void BM_select_faces(BMesh *bm, const bool *mask)
BMFace *f;
int i = 0;
BM_ITER_MESH (f, &iter, bm, BM_FACES_OF_MESH) {
- if (mask[i]) {
- BM_elem_flag_set(f, BM_ELEM_SELECT, true);
- }
- else {
- BM_elem_flag_set(f, BM_ELEM_SELECT, false);
- }
+ BM_elem_flag_set(f, BM_ELEM_SELECT, mask[i]);
+ i++;
+ }
+}
+
+void BM_get_selected_faces(BMesh *bm, bool **selection)
+{
+ BMIter iter;
+ BMFace *f;
+ int i = 0;
+ *selection = MEM_malloc_arrayN((size_t)bm->totface, sizeof(bool), "bm faces");
+ BM_ITER_MESH (f, &iter, bm, BM_FACES_OF_MESH) {
+ (*selection)[i] = BM_elem_flag_test(f, BM_ELEM_SELECT);
i++;
}
+ // BMO_slot_map_elem_get()
+}
+
+void BM_get_tagged_faces(BMesh *bm, bool **selection)
+{
+ BMIter iter;
+ BMFace *f;
+ int i = 0;
+ *selection = MEM_malloc_arrayN((size_t)bm->totface, sizeof(bool), "bm faces");
+ BM_ITER_MESH (f, &iter, bm, BM_FACES_OF_MESH) {
+ (*selection)[i] = BM_elem_flag_test(f, BM_ELEM_TAG);
+ i++;
+ }
+}
+
+void BM_tag_new_faces(BMesh *bm, BMOperator *b_mesh_operator)
+{
+ BMIter iter;
+ BMFace *f;
+ int i = 0;
+ //*selection = MEM_malloc_arrayN((size_t)bm->totface, sizeof(bool), "bm faces");
+ BM_mesh_elem_hflag_disable_all(bm, BM_FACE, BM_ELEM_TAG, false);
+ BMO_ITER (f, &iter, b_mesh_operator->slots_out, "faces.out", BM_FACE) {
+ BM_elem_flag_enable(f, BM_ELEM_TAG);
+ }
+ // BMO_slot_map_elem_get()
}
void BM_tag_vertices(BMesh *bm, const bool *mask)
@@ -1509,12 +1532,7 @@ void BM_tag_vertices(BMesh *bm, const bool *mask)
BMVert *v;
int i = 0;
BM_ITER_MESH (v, &iter, bm, BM_VERTS_OF_MESH) {
- if (mask[i]) {
- BM_elem_flag_set(v, BM_ELEM_TAG, true);
- }
- else {
- BM_elem_flag_set(v, BM_ELEM_TAG, false);
- }
+ BM_elem_flag_set(v, BM_ELEM_TAG, mask[i]);
i++;
}
}
@@ -1528,12 +1546,7 @@ void BM_tag_edges(BMesh *bm, const bool *mask)
BMEdge *e;
int i = 0;
BM_ITER_MESH (e, &iter, bm, BM_EDGES_OF_MESH) {
- if (mask[i]) {
- BM_elem_flag_set(e, BM_ELEM_TAG, true);
- }
- else {
- BM_elem_flag_set(e, BM_ELEM_TAG, false);
- }
+ BM_elem_flag_set(e, BM_ELEM_TAG, mask[i]);
i++;
}
}
@@ -1547,12 +1560,7 @@ void BM_tag_faces(BMesh *bm, const bool *mask)
BMFace *f;
int i = 0;
BM_ITER_MESH (f, &iter, bm, BM_FACES_OF_MESH) {
- if (mask[i]) {
- BM_elem_flag_set(f, BM_ELEM_TAG, true);
- }
- else {
- BM_elem_flag_set(f, BM_ELEM_TAG, false);
- }
+ BM_elem_flag_set(f, BM_ELEM_TAG, mask[i]);
i++;
}
}
diff --git a/source/blender/bmesh/intern/bmesh_mesh.h b/source/blender/bmesh/intern/bmesh_mesh.h
index eb7dcaac046..99baaa1421f 100644
--- a/source/blender/bmesh/intern/bmesh_mesh.h
+++ b/source/blender/bmesh/intern/bmesh_mesh.h
@@ -138,6 +138,9 @@ void BM_mesh_vert_coords_apply_with_mat4(BMesh *bm,
void BM_select_vertices(BMesh *bm, const bool *mask);
void BM_select_edges(BMesh *bm, const bool *mask);
void BM_select_faces(BMesh *bm, const bool *mask);
+void BM_get_selected_faces(BMesh *bm, bool **selection);
void BM_tag_vertices(BMesh *bm, const bool *mask);
void BM_tag_edges(BMesh *bm, const bool *mask);
-void BM_tag_faces(BMesh *bm, const bool *mask); \ No newline at end of file
+void BM_tag_faces(BMesh *bm, const bool *mask);
+void BM_get_tagged_faces(BMesh *bm, bool **selection);
+void BM_tag_new_faces(BMesh *bm, BMOperator *b_mesh_operator); \ No newline at end of file
diff --git a/source/blender/bmesh/intern/bmesh_opdefines.c b/source/blender/bmesh/intern/bmesh_opdefines.c
index b63a09a97a6..651f9184e19 100644
--- a/source/blender/bmesh/intern/bmesh_opdefines.c
+++ b/source/blender/bmesh/intern/bmesh_opdefines.c
@@ -1898,6 +1898,9 @@ static BMOpDefine bmo_inset_individual_def = {
{{"faces", BMO_OP_SLOT_ELEMENT_BUF, {BM_FACE}}, /* input faces */
{"thickness", BMO_OP_SLOT_FLT}, /* thickness */
{"depth", BMO_OP_SLOT_FLT}, /* depth */
+ {"thickness_array", BMO_OP_SLOT_PTR}, /* thickness */
+ {"depth_array", BMO_OP_SLOT_PTR}, /* depth */
+ {"use_attributes", BMO_OP_SLOT_BOOL}, /* Use spans for thickness and depth */
{"use_even_offset", BMO_OP_SLOT_BOOL}, /* scale the offset to give more even thickness */
{"use_interpolate", BMO_OP_SLOT_BOOL}, /* blend face data across the inset */
{"use_relative_offset", BMO_OP_SLOT_BOOL}, /* scale the offset by surrounding geometry */
@@ -1929,6 +1932,9 @@ static BMOpDefine bmo_inset_region_def = {
{"use_edge_rail", BMO_OP_SLOT_BOOL}, /* inset the region along existing edges */
{"thickness", BMO_OP_SLOT_FLT}, /* thickness */
{"depth", BMO_OP_SLOT_FLT}, /* depth */
+ {"thickness_array", BMO_OP_SLOT_PTR}, /* thickness */
+ {"depth_array", BMO_OP_SLOT_PTR}, /* depth */
+ {"use_attributes", BMO_OP_SLOT_BOOL}, /* Use spans for thickness and depth */
{"use_outset", BMO_OP_SLOT_BOOL}, /* outset rather than inset */
{{'\0'}},
},