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:
authorCampbell Barton <ideasman42@gmail.com>2012-03-29 17:09:07 +0400
committerCampbell Barton <ideasman42@gmail.com>2012-03-29 17:09:07 +0400
commitf87c5b3453a779ebe96afff734c0ca6da1a03f8d (patch)
tree728f95166c77cc6c73b3e637860e19ca8b61cbb0 /source/blender/bmesh/intern/bmesh_walkers.h
parent7474397f854cbe23bd7e55dc46469c722d8eda9c (diff)
fix [#30715] bmesh: select linked not ignoring hidden verts/edges/faces
add optional flag to ignore hidden elements. also remove loop mask flag - since it wasnt used and vert/edge/face is enough.
Diffstat (limited to 'source/blender/bmesh/intern/bmesh_walkers.h')
-rw-r--r--source/blender/bmesh/intern/bmesh_walkers.h14
1 files changed, 11 insertions, 3 deletions
diff --git a/source/blender/bmesh/intern/bmesh_walkers.h b/source/blender/bmesh/intern/bmesh_walkers.h
index 1d548a0d4c7..4f81f38aeb3 100644
--- a/source/blender/bmesh/intern/bmesh_walkers.h
+++ b/source/blender/bmesh/intern/bmesh_walkers.h
@@ -38,6 +38,11 @@ typedef enum {
BMW_BREADTH_FIRST
} BMWOrder;
+typedef enum {
+ BMW_FLAG_NOP = 0,
+ BMW_FLAG_TEST_HIDDEN = (1 << 0)
+} BMWFlag;
+
/*Walkers*/
typedef struct BMWalker {
void (*begin) (struct BMWalker *walker, void *start);
@@ -54,12 +59,14 @@ typedef struct BMWalker {
BLI_mempool *worklist;
ListBase states;
- /* these masks are to be tested against elements BMO_elem_flag_test() */
+ /* these masks are to be tested against elements BMO_elem_flag_test(),
+ * should never be accessed directly only through BMW_init() and bmw_mask_check_*() functions */
short mask_vert;
short mask_edge;
- short mask_loop;
short mask_face;
+ BMWFlag flag;
+
GHash *visithash;
GHash *secvisithash;
int depth;
@@ -71,7 +78,8 @@ typedef struct BMWalker {
/* initialize a walker. searchmask restricts some (not all) walkers to
* elements with a specific tool flag set. flags is specific to each walker.*/
void BMW_init(struct BMWalker *walker, BMesh *bm, int type,
- short mask_vert, short mask_edge, short mask_loop, short mask_face,
+ short mask_vert, short mask_edge, short mask_face,
+ BMWFlag flag,
int layer);
void *BMW_begin(BMWalker *walker, void *start);
void *BMW_step(struct BMWalker *walker);