|
Blender
V2.93
|
#include <string.h>#include "BLI_utildefines.h"#include "BKE_customdata.h"#include "bmesh.h"#include "intern/bmesh_walkers_private.h"Go to the source code of this file.
Macros | |
| #define | BMW_state_remove_r(walker, owalk) |
| #define | EDGE_CHECK(e) (bmw_mask_check_edge(walker, e) && (BM_edge_is_boundary(e) || BM_edge_is_manifold(e))) |
Functions | |
Mask Flag Checks | |
| static bool | bmw_mask_check_vert (BMWalker *walker, BMVert *v) |
| static bool | bmw_mask_check_edge (BMWalker *walker, BMEdge *e) |
| static bool | bmw_mask_check_face (BMWalker *walker, BMFace *f) |
BMesh Queries (modified to check walker flags) | |
| static bool | bmw_edge_is_wire (const BMWalker *walker, const BMEdge *e) |
Shell Walker | |
Starts at a vertex on the mesh and walks over the 'shell' it belongs to via visiting connected edges. takes an edge or vertex as an argument, and spits out edges, restrict flag acts on the edges as well.
| |
| static void | bmw_VertShellWalker_visitEdge (BMWalker *walker, BMEdge *e) |
| static void | bmw_VertShellWalker_begin (BMWalker *walker, void *data) |
| static void * | bmw_VertShellWalker_yield (BMWalker *walker) |
| static void * | bmw_VertShellWalker_step (BMWalker *walker) |
LoopShell Walker | |
Starts at any element on the mesh and walks over the 'shell' it belongs to via visiting connected loops.
| |
| static void | bmw_LoopShellWalker_visitLoop (BMWalker *walker, BMLoop *l) |
| static void | bmw_LoopShellWalker_begin (BMWalker *walker, void *data) |
| static void * | bmw_LoopShellWalker_yield (BMWalker *walker) |
| static void | bmw_LoopShellWalker_step_impl (BMWalker *walker, BMLoop *l) |
| static void * | bmw_LoopShellWalker_step (BMWalker *walker) |
LoopShell & 'Wire' Walker | |
Piggyback on top of BMwLoopShellWalker, but also walk over wire edges This isn't elegant but users expect it when selecting linked, so we can support delimiters and walking over wire edges. Details:
| |
| static void | bmw_LoopShellWalker_visitEdgeWire (BMWalker *walker, BMEdge *e) |
| static void | bmw_LoopShellWireWalker_visitVert (BMWalker *walker, BMVert *v, const BMEdge *e_from) |
| static void | bmw_LoopShellWireWalker_begin (BMWalker *walker, void *data) |
| static void * | bmw_LoopShellWireWalker_yield (BMWalker *walker) |
| static void * | bmw_LoopShellWireWalker_step (BMWalker *walker) |
FaceShell Walker | |
Starts at an edge on the mesh and walks over the 'shell' it belongs to via visiting connected faces. | |
| static void | bmw_FaceShellWalker_visitEdge (BMWalker *walker, BMEdge *e) |
| static void | bmw_FaceShellWalker_begin (BMWalker *walker, void *data) |
| static void * | bmw_FaceShellWalker_yield (BMWalker *walker) |
| static void * | bmw_FaceShellWalker_step (BMWalker *walker) |
Connected Vertex Walker | |
Similar to shell walker, but visits vertices instead of edges. Walk from a vertex to all connected vertices. | |
| static void | bmw_ConnectedVertexWalker_visitVertex (BMWalker *walker, BMVert *v) |
| static void | bmw_ConnectedVertexWalker_begin (BMWalker *walker, void *data) |
| static void * | bmw_ConnectedVertexWalker_yield (BMWalker *walker) |
| static void * | bmw_ConnectedVertexWalker_step (BMWalker *walker) |
Island Boundary Walker | |
Starts at a edge on the mesh and walks over the boundary of an island it belongs to.
| |
| static void | bmw_IslandboundWalker_begin (BMWalker *walker, void *data) |
| static void * | bmw_IslandboundWalker_yield (BMWalker *walker) |
| static void * | bmw_IslandboundWalker_step (BMWalker *walker) |
Island Walker | |
Starts at a tool flagged-face and walks over the face region
| |
| static void | bmw_IslandWalker_begin (BMWalker *walker, void *data) |
| static void * | bmw_IslandWalker_yield (BMWalker *walker) |
| static void * | bmw_IslandWalker_step_ex (BMWalker *walker, bool only_manifold) |
| static void * | bmw_IslandWalker_step (BMWalker *walker) |
| static void * | bmw_IslandManifoldWalker_step (BMWalker *walker) |
Edge Loop Walker | |
Starts at a tool-flagged edge and walks over the edge loop | |
| static bool | bm_edge_is_single (BMEdge *e) |
| static void | bmw_EdgeLoopWalker_begin (BMWalker *walker, void *data) |
| static void * | bmw_EdgeLoopWalker_yield (BMWalker *walker) |
| static void * | bmw_EdgeLoopWalker_step (BMWalker *walker) |
Face Loop Walker | |
Starts at a tool-flagged face and walks over the face loop Conditions for starting and stepping the face loop have been tuned in an attempt to match the face loops built by edit-mesh | |
| static bool | bmw_FaceLoopWalker_include_face (BMWalker *walker, BMLoop *l) |
| static bool | bmw_FaceLoopWalker_edge_begins_loop (BMWalker *walker, BMEdge *e) |
| static void | bmw_FaceLoopWalker_begin (BMWalker *walker, void *data) |
| static void * | bmw_FaceLoopWalker_yield (BMWalker *walker) |
| static void * | bmw_FaceLoopWalker_step (BMWalker *walker) |
Edge Ring Walker | |
Starts at a tool-flagged edge and walks over the edge ring Conditions for starting and stepping the edge ring have been tuned to match behavior users expect (dating back to v2.4x). | |
| static void | bmw_EdgeringWalker_begin (BMWalker *walker, void *data) |
| static void * | bmw_EdgeringWalker_yield (BMWalker *walker) |
| static void * | bmw_EdgeringWalker_step (BMWalker *walker) |
Boundary Edge Walker | |
| static void | bmw_EdgeboundaryWalker_begin (BMWalker *walker, void *data) |
| static void * | bmw_EdgeboundaryWalker_yield (BMWalker *walker) |
| static void * | bmw_EdgeboundaryWalker_step (BMWalker *walker) |
UV Edge Walker | |
walk over uv islands; takes a loop as input. restrict flag restricts the walking to loops whose vert has restrict flag set as a tool flag. The flag parameter to BMW_init maps to a loop customdata layer index. | |
| static void | bmw_UVEdgeWalker_begin (BMWalker *walker, void *data) |
| static void * | bmw_UVEdgeWalker_yield (BMWalker *walker) |
| static void * | bmw_UVEdgeWalker_step (BMWalker *walker) |
Non-manifold Edge Walker | |
| static void | bmw_NonManifoldedgeWalker_begin (BMWalker *walker, void *data) |
| static void * | bmw_NonManifoldedgeWalker_yield (BMWalker *walker) |
| static BMLoop * | bmw_NonManifoldLoop_find_next_around_vertex (BMLoop *l, BMVert *v, int face_count) |
| static void * | bmw_NonManifoldedgeWalker_step (BMWalker *walker) |
Variables | |
| static BMWalker | bmw_VertShellWalker_Type |
| static BMWalker | bmw_LoopShellWalker_Type |
| static BMWalker | bmw_LoopShellWireWalker_Type |
| static BMWalker | bmw_FaceShellWalker_Type |
| static BMWalker | bmw_IslandboundWalker_Type |
| static BMWalker | bmw_IslandWalker_Type |
| static BMWalker | bmw_IslandManifoldWalker_Type |
| static BMWalker | bmw_EdgeLoopWalker_Type |
| static BMWalker | bmw_FaceLoopWalker_Type |
| static BMWalker | bmw_EdgeringWalker_Type |
| static BMWalker | bmw_EdgeboundaryWalker_Type |
| static BMWalker | bmw_NonManifoldedgeWalker_type |
| static BMWalker | bmw_UVEdgeWalker_Type |
| static BMWalker | bmw_ConnectedVertexWalker_Type |
| BMWalker * | bm_walker_types [] |
| const int | bm_totwalkers = ARRAY_SIZE(bm_walker_types) |
BMesh Walker Code.
Definition in file bmesh_walkers_impl.c.
| #define BMW_state_remove_r | ( | walker, | |
| owalk | |||
| ) |
Definition at line 33 of file bmesh_walkers_impl.c.
| #define EDGE_CHECK | ( | e | ) | (bmw_mask_check_edge(walker, e) && (BM_edge_is_boundary(e) || BM_edge_is_manifold(e))) |
|
static |
Definition at line 843 of file bmesh_walkers_impl.c.
References BM_edge_is_boundary(), BMVert::e, and e.
Referenced by bmw_EdgeLoopWalker_begin(), and bmw_EdgeLoopWalker_step().
|
static |
Definition at line 595 of file bmesh_walkers_impl.c.
References bmw_ConnectedVertexWalker_visitVertex(), data, and v.
|
static |
Definition at line 607 of file bmesh_walkers_impl.c.
References BLI_gset_haskey(), BM_edge_other_vert(), BM_EDGES_OF_VERT, BM_ITER_ELEM, bmw_ConnectedVertexWalker_visitVertex(), BMW_state_remove_r, BMwConnectedVertexWalker::curvert, e, v, v2, and BMWalker::visit_set.
Definition at line 576 of file bmesh_walkers_impl.c.
References BLI_gset_haskey(), BLI_gset_insert(), bmw_mask_check_vert(), BMW_state_add(), BMwConnectedVertexWalker::curvert, v, and BMWalker::visit_set.
Referenced by bmw_ConnectedVertexWalker_begin(), and bmw_ConnectedVertexWalker_step().
|
static |
Definition at line 601 of file bmesh_walkers_impl.c.
References BMW_current_state(), and BMwConnectedVertexWalker::curvert.
Check for a wire edge, taking ignoring hidden.
Definition at line 86 of file bmesh_walkers_impl.c.
References BM_edge_is_all_face_flag_test(), BM_edge_is_wire(), BM_ELEM_HIDDEN, BMW_FLAG_TEST_HIDDEN, e, and BMWalker::flag.
Referenced by bmw_LoopShellWalker_visitEdgeWire(), and bmw_LoopShellWireWalker_visitVert().
|
static |
Definition at line 1432 of file bmesh_walkers_impl.c.
References BLI_assert, BLI_gset_haskey(), BLI_gset_insert(), BM_edge_is_boundary(), BMW_state_add(), data, e, BMwEdgeboundaryWalker::e, and BMWalker::visit_set.
|
static |
Definition at line 1459 of file bmesh_walkers_impl.c.
References BLI_gset_haskey(), BLI_gset_insert(), BM_edge_is_boundary(), BM_EDGES_OF_VERT, BM_ITER_ELEM, BM_VERTS_OF_EDGE, bmw_mask_check_edge(), BMW_state_add(), BMW_state_remove_r, e, BMwEdgeboundaryWalker::e, v, and BMWalker::visit_set.
|
static |
Definition at line 1448 of file bmesh_walkers_impl.c.
References BMW_current_state(), BMwEdgeboundaryWalker::e, and NULL.
|
static |
The face-hub - BMwEdgeLoopWalker.f_hub - is set when there is an ngon on one side of the edge and a series of faces on the other, loop around the ngon for as long as it's connected to faces which would form an edge loop in the absence of the ngon (used as the hub).
This isn't simply ignoring the ngon though, as the edges looped over must all be connected to the hub.
In the example above, starting from edges marked ea/eb/ec, the will detect f_hub and walk along the edge loop between va -> vb. The same is true for any of the un-marked sides of the ngon, walking stops for vertices with >= 3 connected faces (in this case they look like corners).
In the example above, starting from edges marked eb/eb/ed/ed/ef, the will detect f_hub and walk along the edge loop between vb -> vd.
Notice vb and vd delimit the loop, since the faces connected to vb excluding f_hub don't share an edge, which isn't walked over in the case of boundaries either.
Notice vc doesn't delimit stepping from ee onto ef as the stepping method used doesn't differentiate between the number of sides of faces opposite f_hub, only that each of the connected faces share an edge.
Definition at line 849 of file bmesh_walkers_impl.c.
References BLI_gset_clear(), BLI_gset_insert(), BM_edge_is_boundary(), bm_edge_is_single(), BM_edge_other_vert(), BM_FACES_OF_EDGE, BM_ITER_ELEM, BM_vert_edge_count_nonwire(), BM_vert_face_count(), BMW_current_state(), BMW_state_add(), BMW_walk(), BMwEdgeLoopWalker::cur, data, e, BMwEdgeLoopWalker::f_hub, BMwEdgeLoopWalker::is_boundary, BMwEdgeLoopWalker::is_single, BMwEdgeLoopWalker::lastv, BMFace::len, NULL, BMwEdgeLoopWalker::start, BMwEdgeLoopWalker::startv, v, and BMWalker::visit_set.
|
static |
Definition at line 988 of file bmesh_walkers_impl.c.
References BLI_gset_haskey(), BLI_gset_insert(), BM_edge_exists(), BM_edge_is_boundary(), BM_edge_is_manifold(), bm_edge_is_single(), BM_edge_other_vert(), BM_EDGES_OF_VERT, BM_face_other_vert_loop(), BM_ITER_ELEM, BM_loop_other_edge_loop(), BM_vert_edge_count_nonwire(), bmw_mask_check_edge(), BMW_state_add(), BMW_state_remove_r, BMwEdgeLoopWalker::cur, BMLoop::e, e, ELEM, BMwEdgeLoopWalker::f_hub, BMwEdgeLoopWalker::is_boundary, BMwEdgeLoopWalker::is_single, BMEdge::l, l, BMwEdgeLoopWalker::lastv, NULL, BMLoop::radial_next, BMLoop::v, v, and BMWalker::visit_set.
|
static |
Definition at line 981 of file bmesh_walkers_impl.c.
References BMW_current_state(), and BMwEdgeLoopWalker::cur.
|
static |
Definition at line 1302 of file bmesh_walkers_impl.c.
References BLI_gset_clear(), BLI_gset_insert(), BMW_current_state(), BMW_state_add(), BMW_walk(), data, BMLoop::e, e, BMLoop::f, BMwEdgeringWalker::l, BMFace::len, NULL, BMLoop::radial_next, BMWalker::visit_set, and BMwEdgeringWalker::wireedge.
|
static |
Definition at line 1354 of file bmesh_walkers_impl.c.
References BLI_gset_haskey(), BLI_gset_insert(), bmw_mask_check_face(), BMW_state_add(), BMW_state_remove_r, BMLoop::e, e, EDGE_CHECK, BMLoop::f, l, BMwEdgeringWalker::l, BMFace::len, len, BMLoop::next, NULL, BMLoop::radial_next, BMWalker::visit_set, and BMwEdgeringWalker::wireedge.
|
static |
Definition at line 1340 of file bmesh_walkers_impl.c.
References BMW_current_state(), BMLoop::e, BMwEdgeringWalker::l, NULL, and BMwEdgeringWalker::wireedge.
|
static |
Definition at line 1202 of file bmesh_walkers_impl.c.
References BLI_gset_clear(), BLI_gset_insert(), BMW_current_state(), bmw_FaceLoopWalker_edge_begins_loop(), BMW_state_add(), BMW_walk(), data, BMLoop::e, e, BMLoop::f, BMwFaceLoopWalker::l, BMwFaceLoopWalker::no_calc, NULL, BMWalker::visit_set, and BMWalker::visit_set_alt.
Definition at line 1180 of file bmesh_walkers_impl.c.
References BM_edge_is_boundary(), BM_edge_is_manifold(), BM_edge_is_wire(), bmw_FaceLoopWalker_include_face(), and e.
Referenced by bmw_FaceLoopWalker_begin().
Check whether the face loop should includes the face specified by the given BMLoop.
Definition at line 1160 of file bmesh_walkers_impl.c.
References BLI_gset_haskey(), bmw_mask_check_face(), BMLoop::e, BMLoop::f, l, BMFace::len, BMWalker::visit_set, and BMWalker::visit_set_alt.
Referenced by bmw_FaceLoopWalker_edge_begins_loop(), and bmw_FaceLoopWalker_step().
|
static |
Definition at line 1246 of file bmesh_walkers_impl.c.
References BLI_gset_add(), BM_edge_is_manifold(), bmw_FaceLoopWalker_include_face(), BMW_state_add(), BMW_state_remove_r, BMLoop::e, BMLoop::f, l, BMwFaceLoopWalker::l, BMFace::len, BMLoop::next, BMwFaceLoopWalker::no_calc, BMLoop::prev, BMLoop::radial_next, BMWalker::visit_set, and BMWalker::visit_set_alt.
|
static |
Definition at line 1235 of file bmesh_walkers_impl.c.
References BMW_current_state(), BMLoop::f, BMwFaceLoopWalker::l, and NULL.
|
static |
Definition at line 529 of file bmesh_walkers_impl.c.
References bmw_FaceShellWalker_visitEdge(), data, and e.
|
static |
Definition at line 541 of file bmesh_walkers_impl.c.
References BM_EDGES_OF_FACE, BM_ITER_ELEM, bmw_FaceShellWalker_visitEdge(), BMW_state_remove_r, BMwShellWalker::curedge, e, BMLoop::f, and BMLoop::radial_next.
Definition at line 512 of file bmesh_walkers_impl.c.
References BLI_gset_haskey(), BLI_gset_insert(), bmw_mask_check_edge(), BMW_state_add(), BMwShellWalker::curedge, e, NULL, and BMWalker::visit_set.
Referenced by bmw_FaceShellWalker_begin(), and bmw_FaceShellWalker_step().
|
static |
Definition at line 535 of file bmesh_walkers_impl.c.
References BMW_current_state(), and BMwShellWalker::curedge.
|
static |
Definition at line 643 of file bmesh_walkers_impl.c.
References BMwIslandboundWalker::base, BLI_gset_insert(), BMW_state_add(), BMwIslandboundWalker::curloop, data, l, BMwIslandboundWalker::lastv, NULL, BMLoop::v, and BMWalker::visit_set.
|
static |
Definition at line 663 of file bmesh_walkers_impl.c.
References BMwIslandboundWalker::base, BLI_gset_haskey(), BLI_gset_insert(), BMWalker::bm, BM_edge_other_vert(), BM_loop_other_edge_loop(), BMO_face_flag_test, BMW_current_state(), bmw_mask_check_face(), BMW_state_add(), BMW_state_remove(), BMwIslandboundWalker::curloop, BMLoop::e, e, BMLoop::f, l, BMwIslandboundWalker::lastv, NULL, BMLoop::radial_next, v, and BMWalker::visit_set.
|
static |
Definition at line 656 of file bmesh_walkers_impl.c.
References BMW_current_state(), and BMwIslandboundWalker::curloop.
|
static |
Ignore edges that don't have 2x usable faces.
Definition at line 829 of file bmesh_walkers_impl.c.
References bmw_IslandWalker_step_ex().
|
static |
Definition at line 738 of file bmesh_walkers_impl.c.
References BLI_gset_insert(), bmw_mask_check_face(), BMW_state_add(), BMwIslandWalker::cur, data, NULL, and BMWalker::visit_set.
|
static |
Definition at line 821 of file bmesh_walkers_impl.c.
References bmw_IslandWalker_step_ex().
|
static |
Definition at line 759 of file bmesh_walkers_impl.c.
References BLI_gset_haskey(), BLI_gset_insert(), BM_FACE_FIRST_LOOP, bmw_mask_check_edge(), bmw_mask_check_face(), BMW_state_add(), BMW_state_remove_r, BMwIslandWalker::cur, BMLoop::e, BMLoop::f, BMLoop::next, BMLoop::radial_next, and BMWalker::visit_set.
Referenced by bmw_IslandManifoldWalker_step(), and bmw_IslandWalker_step().
|
static |
Definition at line 752 of file bmesh_walkers_impl.c.
References BMW_current_state(), and BMwIslandWalker::cur.
|
static |
Definition at line 256 of file bmesh_walkers_impl.c.
References BLI_assert, BM_EDGE, BM_FACE, BM_FACE_FIRST_LOOP, BM_ITER_ELEM, BM_LOOP, BM_LOOPS_OF_EDGE, BM_LOOPS_OF_VERT, BM_VERT, bmw_LoopShellWalker_visitLoop(), data, e, BMHeader::htype, l, NULL, UNLIKELY, and v.
Referenced by bmw_LoopShellWireWalker_begin().
|
static |
Definition at line 338 of file bmesh_walkers_impl.c.
References bmw_LoopShellWalker_step_impl(), BMW_state_remove_r, BMwLoopShellWalker::curloop, and l.
Definition at line 307 of file bmesh_walkers_impl.c.
References BLI_assert, BM_LOOP, bmw_LoopShellWalker_visitLoop(), bmw_mask_check_edge(), BMLoop::e, e, BMLoop::head, BMHeader::htype, l, BMLoop::next, BMLoop::prev, BMLoop::radial_next, and BMLoop::v.
Referenced by bmw_LoopShellWalker_step(), and bmw_LoopShellWireWalker_step().
Definition at line 367 of file bmesh_walkers_impl.c.
References BLI_assert, BLI_gset_haskey(), BLI_gset_insert(), bmw_edge_is_wire(), bmw_mask_check_edge(), BMW_state_add(), BMwLoopShellWireWalker::curelem, e, NULL, and BMWalker::visit_set_alt.
Referenced by bmw_LoopShellWireWalker_visitVert().
Definition at line 239 of file bmesh_walkers_impl.c.
References BLI_gset_haskey(), BLI_gset_insert(), bmw_mask_check_face(), BMW_state_add(), BMwLoopShellWalker::curloop, BMLoop::f, l, NULL, and BMWalker::visit_set.
Referenced by bmw_LoopShellWalker_begin(), bmw_LoopShellWalker_step_impl(), bmw_LoopShellWireWalker_begin(), and bmw_LoopShellWireWalker_visitVert().
|
static |
Definition at line 301 of file bmesh_walkers_impl.c.
References BMW_current_state(), and BMwLoopShellWalker::curloop.
|
static |
Definition at line 421 of file bmesh_walkers_impl.c.
References BLI_assert, BM_EDGE, BM_FACE, BM_LOOP, BM_VERT, bmw_LoopShellWalker_begin(), bmw_LoopShellWalker_visitLoop(), bmw_LoopShellWireWalker_visitVert(), bmw_mask_check_edge(), data, BMVert::e, e, BMHeader::htype, l, BMLoop::next, NULL, BMLoop::radial_next, UNLIKELY, BMLoop::v, and v.
|
static |
Definition at line 477 of file bmesh_walkers_impl.c.
References BLI_assert, BM_EDGE, BM_LOOP, bmw_LoopShellWalker_step_impl(), bmw_LoopShellWireWalker_visitVert(), BMW_state_remove_r, BMwLoopShellWireWalker::curelem, e, BMVert::head, BMElem::head, BMHeader::htype, l, NULL, and BMLoop::v.
|
static |
Definition at line 386 of file bmesh_walkers_impl.c.
References BLI_assert, BLI_gset_haskey(), BLI_gset_insert(), BM_DISK_EDGE_NEXT, BM_edge_other_vert(), BM_ITER_ELEM, BM_LOOPS_OF_VERT, BM_VERT, bmw_edge_is_wire(), bmw_LoopShellWalker_visitEdgeWire(), bmw_LoopShellWalker_visitLoop(), bmw_mask_check_vert(), BMVert::e, e, BMVert::head, BMHeader::htype, l, v, and BMWalker::visit_set_alt.
Referenced by bmw_LoopShellWireWalker_begin(), and bmw_LoopShellWireWalker_step().
|
static |
Definition at line 471 of file bmesh_walkers_impl.c.
References BMW_current_state(), and BMwLoopShellWireWalker::curelem.
Definition at line 55 of file bmesh_walkers_impl.c.
References BMWalker::bm, BM_elem_flag_test, BM_ELEM_HIDDEN, BMO_edge_flag_test, BMW_FLAG_TEST_HIDDEN, e, BMWalker::flag, and BMWalker::mask_edge.
Referenced by bmw_EdgeboundaryWalker_step(), bmw_EdgeLoopWalker_step(), bmw_FaceShellWalker_visitEdge(), bmw_IslandWalker_step_ex(), bmw_LoopShellWalker_step_impl(), bmw_LoopShellWalker_visitEdgeWire(), bmw_LoopShellWireWalker_begin(), bmw_UVEdgeWalker_step(), and bmw_VertShellWalker_visitEdge().
Definition at line 66 of file bmesh_walkers_impl.c.
References BMWalker::bm, BM_elem_flag_test, BM_ELEM_HIDDEN, BMO_face_flag_test, BMW_FLAG_TEST_HIDDEN, BMWalker::flag, and BMWalker::mask_face.
Referenced by bmw_EdgeringWalker_step(), bmw_FaceLoopWalker_include_face(), bmw_IslandboundWalker_step(), bmw_IslandWalker_begin(), bmw_IslandWalker_step_ex(), and bmw_LoopShellWalker_visitLoop().
Definition at line 44 of file bmesh_walkers_impl.c.
References BMWalker::bm, BM_elem_flag_test, BM_ELEM_HIDDEN, BMO_vert_flag_test, BMW_FLAG_TEST_HIDDEN, BMWalker::flag, BMWalker::mask_vert, and v.
Referenced by bmw_ConnectedVertexWalker_visitVertex(), and bmw_LoopShellWireWalker_visitVert().
|
static |
Definition at line 1603 of file bmesh_walkers_impl.c.
References BLI_gset_haskey(), BLI_gset_insert(), BM_edge_face_count(), BMW_state_add(), BMwNonManifoldEdgeLoopWalker::cur, data, e, BMwNonManifoldEdgeLoopWalker::face_count, BMwNonManifoldEdgeLoopWalker::lastv, BMwNonManifoldEdgeLoopWalker::start, BMwNonManifoldEdgeLoopWalker::startv, and BMWalker::visit_set.
|
static |
Definition at line 1653 of file bmesh_walkers_impl.c.
References BLI_assert, BLI_gset_haskey(), BLI_gset_insert(), BM_edge_face_count(), BM_edge_other_vert(), bmw_NonManifoldLoop_find_next_around_vertex(), BMW_state_add(), BMW_state_remove_r, BMwNonManifoldEdgeLoopWalker::cur, BMLoop::e, e, BMwNonManifoldEdgeLoopWalker::face_count, l, BMwNonManifoldEdgeLoopWalker::lastv, NULL, BMLoop::radial_next, BMwNonManifoldEdgeLoopWalker::start, BMwNonManifoldEdgeLoopWalker::startv, UNLIKELY, v, and BMWalker::visit_set.
|
static |
Definition at line 1621 of file bmesh_walkers_impl.c.
References BMW_current_state(), BMwNonManifoldEdgeLoopWalker::cur, and NULL.
|
static |
Walk over manifold loops around v until loop-edge is found with face_count users. or return NULL if not found.
Definition at line 1635 of file bmesh_walkers_impl.c.
References BLI_assert, BM_edge_face_count_is_equal, BM_loop_other_edge_loop(), BMLoop::e, l, NULL, BMLoop::radial_next, and v.
Referenced by bmw_NonManifoldedgeWalker_step().
|
static |
Definition at line 1510 of file bmesh_walkers_impl.c.
References BLI_gset_haskey(), BLI_gset_insert(), BMW_state_add(), data, l, BMwUVEdgeWalker::l, and BMWalker::visit_set.
|
static |
Definition at line 1535 of file bmesh_walkers_impl.c.
References BLI_gset_haskey(), BLI_gset_insert(), BMWalker::bm, BM_ELEM_CD_GET_VOID_P, BM_ITER_ELEM, BM_LOOPS_OF_VERT, bmw_mask_check_edge(), BMW_state_add(), BMW_state_remove_r, CustomData_data_equals(), BMLoop::e, l, BMwUVEdgeWalker::l, BMWalker::layer, CustomData::layers, BMesh::ldata, BMLoop::next, CustomDataLayer::offset, BMLoop::radial_next, type, CustomDataLayer::type, BMLoop::v, and BMWalker::visit_set.
|
static |
Definition at line 1524 of file bmesh_walkers_impl.c.
References BMW_current_state(), BMwUVEdgeWalker::l, and NULL.
|
static |
Definition at line 127 of file bmesh_walkers_impl.c.
References BLI_assert, BM_EDGE, BM_EDGES_OF_VERT, BM_ITER_ELEM, BM_VERT, bmw_VertShellWalker_visitEdge(), data, e, BMHeader::htype, NULL, UNLIKELY, and v.
|
static |
Definition at line 165 of file bmesh_walkers_impl.c.
References BM_EDGES_OF_VERT, BM_ITER_ELEM, BMW_state_remove_r, bmw_VertShellWalker_visitEdge(), BMwShellWalker::curedge, e, and v.
Definition at line 110 of file bmesh_walkers_impl.c.
References BLI_gset_haskey(), BLI_gset_insert(), bmw_mask_check_edge(), BMW_state_add(), BMwShellWalker::curedge, e, NULL, and BMWalker::visit_set.
Referenced by bmw_VertShellWalker_begin(), and bmw_VertShellWalker_step().
|
static |
Definition at line 159 of file bmesh_walkers_impl.c.
References BMW_current_state(), and BMwShellWalker::curedge.
| const int bm_totwalkers = ARRAY_SIZE(bm_walker_types) |
Definition at line 1870 of file bmesh_walkers_impl.c.
| BMWalker* bm_walker_types[] |
Definition at line 1853 of file bmesh_walkers_impl.c.
Referenced by BMW_init().
|
static |
Definition at line 1843 of file bmesh_walkers_impl.c.
|
static |
Definition at line 1813 of file bmesh_walkers_impl.c.
|
static |
Definition at line 1781 of file bmesh_walkers_impl.c.
|
static |
Definition at line 1803 of file bmesh_walkers_impl.c.
|
static |
Definition at line 1792 of file bmesh_walkers_impl.c.
|
static |
Definition at line 1741 of file bmesh_walkers_impl.c.
|
static |
Definition at line 1751 of file bmesh_walkers_impl.c.
|
static |
Definition at line 1771 of file bmesh_walkers_impl.c.
|
static |
Definition at line 1761 of file bmesh_walkers_impl.c.
|
static |
Definition at line 1721 of file bmesh_walkers_impl.c.
|
static |
Definition at line 1731 of file bmesh_walkers_impl.c.
|
static |
Definition at line 1823 of file bmesh_walkers_impl.c.
|
static |
Definition at line 1833 of file bmesh_walkers_impl.c.
|
static |
Definition at line 1711 of file bmesh_walkers_impl.c.