Blender
V3.3
|
#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 |
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.c.
#define BMW_state_remove_r | ( | walker, | |
owalk | |||
) |
Definition at line 19 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))) |
Definition at line 837 of file bmesh_walkers_impl.c.
References BM_edge_is_boundary(), BMVert::e, and e.
Referenced by bmw_EdgeLoopWalker_begin(), and bmw_EdgeLoopWalker_step().
Definition at line 587 of file bmesh_walkers_impl.c.
References bmw_ConnectedVertexWalker_visitVertex(), data, and v.
Definition at line 599 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 568 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().
Definition at line 593 of file bmesh_walkers_impl.c.
References BMW_current_state(), and BMwConnectedVertexWalker::curvert.
Check for a wire edge, taking ignoring hidden.
Definition at line 72 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().
Definition at line 1427 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.
Definition at line 1454 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.
Definition at line 1443 of file bmesh_walkers_impl.c.
References BMW_current_state(), BMwEdgeboundaryWalker::e, and NULL.
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 843 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.
Definition at line 982 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.
Definition at line 975 of file bmesh_walkers_impl.c.
References BMW_current_state(), and BMwEdgeLoopWalker::cur.
Definition at line 1297 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.
Definition at line 1349 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.
Definition at line 1335 of file bmesh_walkers_impl.c.
References BMW_current_state(), BMLoop::e, BMwEdgeringWalker::l, NULL, and BMwEdgeringWalker::wireedge.
Definition at line 1196 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 1174 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 1154 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().
Definition at line 1240 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.
Definition at line 1229 of file bmesh_walkers_impl.c.
References BMW_current_state(), BMLoop::f, BMwFaceLoopWalker::l, and NULL.
Definition at line 519 of file bmesh_walkers_impl.c.
References bmw_FaceShellWalker_visitEdge(), data, and e.
Definition at line 531 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 502 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().
Definition at line 525 of file bmesh_walkers_impl.c.
References BMW_current_state(), and BMwShellWalker::curedge.
Definition at line 636 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.
Definition at line 656 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.
Definition at line 649 of file bmesh_walkers_impl.c.
References BMW_current_state(), and BMwIslandboundWalker::curloop.
Ignore edges that don't have 2x usable faces.
Definition at line 823 of file bmesh_walkers_impl.c.
References bmw_IslandWalker_step_ex().
Definition at line 732 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.
Definition at line 815 of file bmesh_walkers_impl.c.
References bmw_IslandWalker_step_ex().
Definition at line 753 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().
Definition at line 746 of file bmesh_walkers_impl.c.
References BMW_current_state(), and BMwIslandWalker::cur.
Definition at line 245 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().
Definition at line 327 of file bmesh_walkers_impl.c.
References bmw_LoopShellWalker_step_impl(), BMW_state_remove_r, BMwLoopShellWalker::curloop, and l.
Definition at line 296 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 356 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 228 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().
Definition at line 290 of file bmesh_walkers_impl.c.
References BMW_current_state(), and BMwLoopShellWalker::curloop.
Definition at line 410 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.
Definition at line 466 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 375 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().
Definition at line 460 of file bmesh_walkers_impl.c.
References BMW_current_state(), and BMwLoopShellWireWalker::curelem.
Definition at line 41 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 52 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 30 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().
Definition at line 1598 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.
Definition at line 1648 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.
Definition at line 1616 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 1630 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().
Definition at line 1505 of file bmesh_walkers_impl.c.
References BLI_gset_haskey(), BLI_gset_insert(), BMW_state_add(), data, l, BMwUVEdgeWalker::l, and BMWalker::visit_set.
Definition at line 1530 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, offset, CustomDataLayer::offset, BMLoop::radial_next, type, CustomDataLayer::type, BMLoop::v, and BMWalker::visit_set.
Definition at line 1519 of file bmesh_walkers_impl.c.
References BMW_current_state(), BMwUVEdgeWalker::l, and NULL.
Definition at line 115 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.
Definition at line 153 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 98 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().
Definition at line 147 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 1871 of file bmesh_walkers_impl.c.
BMWalker* bm_walker_types[] |
Definition at line 1854 of file bmesh_walkers_impl.c.
Referenced by BMW_init().
|
static |
Definition at line 1838 of file bmesh_walkers_impl.c.
|
static |
Definition at line 1808 of file bmesh_walkers_impl.c.
|
static |
Definition at line 1776 of file bmesh_walkers_impl.c.
|
static |
Definition at line 1798 of file bmesh_walkers_impl.c.
|
static |
Definition at line 1787 of file bmesh_walkers_impl.c.
|
static |
Definition at line 1736 of file bmesh_walkers_impl.c.
|
static |
Definition at line 1746 of file bmesh_walkers_impl.c.
|
static |
Definition at line 1766 of file bmesh_walkers_impl.c.
|
static |
Definition at line 1756 of file bmesh_walkers_impl.c.
|
static |
Definition at line 1716 of file bmesh_walkers_impl.c.
|
static |
Definition at line 1726 of file bmesh_walkers_impl.c.
|
static |
Definition at line 1818 of file bmesh_walkers_impl.c.
|
static |
Definition at line 1828 of file bmesh_walkers_impl.c.
|
static |
Definition at line 1706 of file bmesh_walkers_impl.c.