|
Blender V4.3
|
#include <cstring>#include "BLI_utildefines.h"#include "BKE_customdata.hh"#include "bmesh.hh"#include "intern/bmesh_walkers_private.hh"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 |
All Walker Types | |
| BMWalker * | bm_walker_types [] |
| const int | bm_totwalkers = ARRAY_SIZE(bm_walker_types) |
BMesh Walker Code.
Definition in file bmesh_walkers_impl.cc.
| #define BMW_state_remove_r | ( | walker, | |
| owalk ) |
Definition at line 21 of file bmesh_walkers_impl.cc.
Referenced by bmw_ConnectedVertexWalker_step(), bmw_EdgeboundaryWalker_step(), bmw_EdgeLoopWalker_step(), bmw_EdgeringWalker_step(), bmw_FaceLoopWalker_step(), bmw_FaceShellWalker_step(), bmw_IslandWalker_step_ex(), bmw_LoopShellWalker_step(), bmw_LoopShellWireWalker_step(), bmw_NonManifoldedgeWalker_step(), bmw_UVEdgeWalker_step(), and bmw_VertShellWalker_step().
| #define EDGE_CHECK | ( | e | ) | (bmw_mask_check_edge(walker, e) && (BM_edge_is_boundary(e) || BM_edge_is_manifold(e))) |
Referenced by bmw_EdgeringWalker_step().
|
static |
Definition at line 842 of file bmesh_walkers_impl.cc.
References BM_edge_is_boundary(), BMVert::e, and e.
Referenced by bmw_EdgeLoopWalker_begin(), and bmw_EdgeLoopWalker_step().
|
static |
Definition at line 591 of file bmesh_walkers_impl.cc.
References bmw_ConnectedVertexWalker_visitVertex(), data, and v.
|
static |
Definition at line 604 of file bmesh_walkers_impl.cc.
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 572 of file bmesh_walkers_impl.cc.
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 597 of file bmesh_walkers_impl.cc.
References BMW_current_state(), and BMwConnectedVertexWalker::curvert.
Check for a wire edge, taking ignoring hidden.
Definition at line 74 of file bmesh_walkers_impl.cc.
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 1438 of file bmesh_walkers_impl.cc.
References BLI_assert, BLI_gset_haskey(), BLI_gset_insert(), BM_edge_is_boundary(), BMW_state_add(), data, BMwEdgeboundaryWalker::e, e, and BMWalker::visit_set.
|
static |
Definition at line 1465 of file bmesh_walkers_impl.cc.
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, BMwEdgeboundaryWalker::e, e, v, and BMWalker::visit_set.
|
static |
Definition at line 1454 of file bmesh_walkers_impl.cc.
References BMW_current_state(), and BMwEdgeboundaryWalker::e.
|
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 848 of file bmesh_walkers_impl.cc.
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, BMwEdgeLoopWalker::start, BMwEdgeLoopWalker::startv, v, and BMWalker::visit_set.
|
static |
Definition at line 988 of file bmesh_walkers_impl.cc.
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, BMLoop::radial_next, BMLoop::v, v, and BMWalker::visit_set.
|
static |
Definition at line 981 of file bmesh_walkers_impl.cc.
References BMW_current_state(), and BMwEdgeLoopWalker::cur.
|
static |
Definition at line 1308 of file bmesh_walkers_impl.cc.
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, BMLoop::radial_next, BMWalker::visit_set, and BMwEdgeringWalker::wireedge.
|
static |
Definition at line 1360 of file bmesh_walkers_impl.cc.
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, BMwEdgeringWalker::l, l, BMFace::len, len, BMLoop::next, BMLoop::radial_next, BMWalker::visit_set, and BMwEdgeringWalker::wireedge.
|
static |
Definition at line 1346 of file bmesh_walkers_impl.cc.
References BMW_current_state(), BMLoop::e, BMwEdgeringWalker::l, and BMwEdgeringWalker::wireedge.
|
static |
Definition at line 1207 of file bmesh_walkers_impl.cc.
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, BMWalker::visit_set, and BMWalker::visit_set_alt.
Definition at line 1185 of file bmesh_walkers_impl.cc.
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 1165 of file bmesh_walkers_impl.cc.
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 1251 of file bmesh_walkers_impl.cc.
References BLI_gset_add(), BM_edge_is_manifold(), bmw_FaceLoopWalker_include_face(), BMW_state_add(), BMW_state_remove_r, BMLoop::e, BMLoop::f, BMwFaceLoopWalker::l, 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 1240 of file bmesh_walkers_impl.cc.
References BMW_current_state(), BMLoop::f, and BMwFaceLoopWalker::l.
|
static |
Definition at line 523 of file bmesh_walkers_impl.cc.
References bmw_FaceShellWalker_visitEdge(), data, and e.
|
static |
Definition at line 535 of file bmesh_walkers_impl.cc.
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 506 of file bmesh_walkers_impl.cc.
References BLI_gset_haskey(), BLI_gset_insert(), bmw_mask_check_edge(), BMW_state_add(), BMwShellWalker::curedge, e, and BMWalker::visit_set.
Referenced by bmw_FaceShellWalker_begin(), and bmw_FaceShellWalker_step().
|
static |
Definition at line 529 of file bmesh_walkers_impl.cc.
References BMW_current_state(), and BMwShellWalker::curedge.
|
static |
Definition at line 641 of file bmesh_walkers_impl.cc.
References BMwIslandboundWalker::base, BLI_gset_insert(), BMW_state_add(), BMwIslandboundWalker::curloop, data, l, BMwIslandboundWalker::lastv, BMLoop::v, and BMWalker::visit_set.
|
static |
Definition at line 661 of file bmesh_walkers_impl.cc.
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, BMLoop::radial_next, v, and BMWalker::visit_set.
|
static |
Definition at line 654 of file bmesh_walkers_impl.cc.
References BMW_current_state(), and BMwIslandboundWalker::curloop.
|
static |
Ignore edges that don't have 2x usable faces.
Definition at line 828 of file bmesh_walkers_impl.cc.
References bmw_IslandWalker_step_ex().
|
static |
Definition at line 737 of file bmesh_walkers_impl.cc.
References BLI_gset_insert(), bmw_mask_check_face(), BMW_state_add(), BMwIslandWalker::cur, data, and BMWalker::visit_set.
|
static |
Definition at line 820 of file bmesh_walkers_impl.cc.
References bmw_IslandWalker_step_ex().
|
static |
Definition at line 758 of file bmesh_walkers_impl.cc.
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 751 of file bmesh_walkers_impl.cc.
References BMW_current_state(), and BMwIslandWalker::cur.
|
static |
Definition at line 248 of file bmesh_walkers_impl.cc.
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, UNLIKELY, and v.
Referenced by bmw_LoopShellWireWalker_begin().
|
static |
Definition at line 330 of file bmesh_walkers_impl.cc.
References bmw_LoopShellWalker_step_impl(), BMW_state_remove_r, BMwLoopShellWalker::curloop, and l.
Definition at line 299 of file bmesh_walkers_impl.cc.
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 359 of file bmesh_walkers_impl.cc.
References BLI_assert, BLI_gset_haskey(), BLI_gset_insert(), bmw_edge_is_wire(), bmw_mask_check_edge(), BMW_state_add(), BMwLoopShellWireWalker::curelem, e, and BMWalker::visit_set_alt.
Referenced by bmw_LoopShellWireWalker_visitVert().
Definition at line 231 of file bmesh_walkers_impl.cc.
References BLI_gset_haskey(), BLI_gset_insert(), bmw_mask_check_face(), BMW_state_add(), BMwLoopShellWalker::curloop, BMLoop::f, l, and BMWalker::visit_set.
Referenced by bmw_LoopShellWalker_begin(), bmw_LoopShellWalker_step_impl(), bmw_LoopShellWireWalker_begin(), and bmw_LoopShellWireWalker_visitVert().
|
static |
Definition at line 293 of file bmesh_walkers_impl.cc.
References BMW_current_state(), and BMwLoopShellWalker::curloop.
|
static |
Definition at line 413 of file bmesh_walkers_impl.cc.
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, BMLoop::radial_next, UNLIKELY, BMLoop::v, and v.
|
static |
Definition at line 470 of file bmesh_walkers_impl.cc.
References BLI_assert, BM_EDGE, BM_LOOP, bmw_LoopShellWalker_step_impl(), bmw_LoopShellWireWalker_visitVert(), BMW_state_remove_r, BMwLoopShellWireWalker::curelem, e, BMElem::head, BMVert::head, BMHeader::htype, l, and BMLoop::v.
|
static |
Definition at line 378 of file bmesh_walkers_impl.cc.
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 463 of file bmesh_walkers_impl.cc.
References BMW_current_state(), and BMwLoopShellWireWalker::curelem.
Definition at line 43 of file bmesh_walkers_impl.cc.
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 54 of file bmesh_walkers_impl.cc.
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 32 of file bmesh_walkers_impl.cc.
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 1609 of file bmesh_walkers_impl.cc.
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 1660 of file bmesh_walkers_impl.cc.
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, BMLoop::radial_next, BMwNonManifoldEdgeLoopWalker::start, BMwNonManifoldEdgeLoopWalker::startv, UNLIKELY, v, and BMWalker::visit_set.
|
static |
Definition at line 1627 of file bmesh_walkers_impl.cc.
References BMW_current_state(), and BMwNonManifoldEdgeLoopWalker::cur.
|
static |
Walk over manifold loops around v until loop-edge is found with face_count users. or return nullptr if not found.
Definition at line 1642 of file bmesh_walkers_impl.cc.
References BLI_assert, BM_edge_face_count_is_equal, BM_loop_other_edge_loop(), BMLoop::e, l, BMLoop::radial_next, and v.
Referenced by bmw_NonManifoldedgeWalker_step().
|
static |
Definition at line 1516 of file bmesh_walkers_impl.cc.
References BLI_gset_haskey(), BLI_gset_insert(), BMW_state_add(), data, BMwUVEdgeWalker::l, l, and BMWalker::visit_set.
|
static |
Definition at line 1541 of file bmesh_walkers_impl.cc.
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, BMwUVEdgeWalker::l, l, BMWalker::layer, CustomData::layers, BMesh::ldata, BMLoop::next, CustomDataLayer::offset, BMLoop::radial_next, CustomDataLayer::type, BMLoop::v, and BMWalker::visit_set.
|
static |
Definition at line 1530 of file bmesh_walkers_impl.cc.
References BMW_current_state(), and BMwUVEdgeWalker::l.
|
static |
Definition at line 117 of file bmesh_walkers_impl.cc.
References BLI_assert, BM_EDGE, BM_EDGES_OF_VERT, BM_ITER_ELEM, BM_VERT, bmw_VertShellWalker_visitEdge(), data, e, BMHeader::htype, UNLIKELY, and v.
|
static |
Definition at line 155 of file bmesh_walkers_impl.cc.
References BM_EDGES_OF_VERT, BM_ITER_ELEM, BMW_state_remove_r, bmw_VertShellWalker_visitEdge(), BMwShellWalker::curedge, e, and v.
Definition at line 100 of file bmesh_walkers_impl.cc.
References BLI_gset_haskey(), BLI_gset_insert(), bmw_mask_check_edge(), BMW_state_add(), BMwShellWalker::curedge, e, and BMWalker::visit_set.
Referenced by bmw_VertShellWalker_begin(), and bmw_VertShellWalker_step().
|
static |
Definition at line 149 of file bmesh_walkers_impl.cc.
References BMW_current_state(), and BMwShellWalker::curedge.
| const int bm_totwalkers = ARRAY_SIZE(bm_walker_types) |
Definition at line 1883 of file bmesh_walkers_impl.cc.
| BMWalker* bm_walker_types[] |
Definition at line 1866 of file bmesh_walkers_impl.cc.
Referenced by BMW_init().
|
static |
Definition at line 1850 of file bmesh_walkers_impl.cc.
|
static |
Definition at line 1820 of file bmesh_walkers_impl.cc.
|
static |
Definition at line 1788 of file bmesh_walkers_impl.cc.
|
static |
Definition at line 1810 of file bmesh_walkers_impl.cc.
|
static |
Definition at line 1799 of file bmesh_walkers_impl.cc.
|
static |
Definition at line 1748 of file bmesh_walkers_impl.cc.
|
static |
Definition at line 1758 of file bmesh_walkers_impl.cc.
|
static |
Definition at line 1778 of file bmesh_walkers_impl.cc.
|
static |
Definition at line 1768 of file bmesh_walkers_impl.cc.
|
static |
Definition at line 1728 of file bmesh_walkers_impl.cc.
|
static |
Definition at line 1738 of file bmesh_walkers_impl.cc.
|
static |
Definition at line 1830 of file bmesh_walkers_impl.cc.
|
static |
Definition at line 1840 of file bmesh_walkers_impl.cc.
|
static |
Definition at line 1718 of file bmesh_walkers_impl.cc.