Blender  V3.3
Macros | Variables
bmesh_walkers_impl.c File Reference
#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.

Todo:
Add restriction flag/callback for wire edges.
static void bmw_VertShellWalker_visitEdge (BMWalker *walker, BMEdge *e)
 
static void bmw_VertShellWalker_begin (BMWalker *walker, void *data)
 
static voidbmw_VertShellWalker_yield (BMWalker *walker)
 
static voidbmw_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.

Note
this is mainly useful to loop over a shell delimited by edges.
static void bmw_LoopShellWalker_visitLoop (BMWalker *walker, BMLoop *l)
 
static void bmw_LoopShellWalker_begin (BMWalker *walker, void *data)
 
static voidbmw_LoopShellWalker_yield (BMWalker *walker)
 
static void bmw_LoopShellWalker_step_impl (BMWalker *walker, BMLoop *l)
 
static voidbmw_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:

  • can yield edges (as well as loops)
  • only step over wire edges.
  • verts and edges are stored in visit_set_alt.
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 voidbmw_LoopShellWireWalker_yield (BMWalker *walker)
 
static voidbmw_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 voidbmw_FaceShellWalker_yield (BMWalker *walker)
 
static voidbmw_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 voidbmw_ConnectedVertexWalker_yield (BMWalker *walker)
 
static voidbmw_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.

Note
that this doesn't work on non-manifold geometry. it might be better to rewrite this to extract boundary info from the island walker, rather than directly walking over the boundary. raises an error if it encounters non-manifold geometry.
Todo:
Add restriction flag/callback for wire edges.
static void bmw_IslandboundWalker_begin (BMWalker *walker, void *data)
 
static voidbmw_IslandboundWalker_yield (BMWalker *walker)
 
static voidbmw_IslandboundWalker_step (BMWalker *walker)
 
Island Walker

Starts at a tool flagged-face and walks over the face region

Todo:
Add restriction flag/callback for wire edges.
static void bmw_IslandWalker_begin (BMWalker *walker, void *data)
 
static voidbmw_IslandWalker_yield (BMWalker *walker)
 
static voidbmw_IslandWalker_step_ex (BMWalker *walker, bool only_manifold)
 
static voidbmw_IslandWalker_step (BMWalker *walker)
 
static voidbmw_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 voidbmw_EdgeLoopWalker_yield (BMWalker *walker)
 
static voidbmw_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 voidbmw_FaceLoopWalker_yield (BMWalker *walker)
 
static voidbmw_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 voidbmw_EdgeringWalker_yield (BMWalker *walker)
 
static voidbmw_EdgeringWalker_step (BMWalker *walker)
 
Boundary Edge Walker
static void bmw_EdgeboundaryWalker_begin (BMWalker *walker, void *data)
 
static voidbmw_EdgeboundaryWalker_yield (BMWalker *walker)
 
static voidbmw_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 voidbmw_UVEdgeWalker_yield (BMWalker *walker)
 
static voidbmw_UVEdgeWalker_step (BMWalker *walker)
 
Non-manifold Edge Walker
static void bmw_NonManifoldedgeWalker_begin (BMWalker *walker, void *data)
 
static voidbmw_NonManifoldedgeWalker_yield (BMWalker *walker)
 
static BMLoopbmw_NonManifoldLoop_find_next_around_vertex (BMLoop *l, BMVert *v, int face_count)
 
static voidbmw_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
BMWalkerbm_walker_types []
 
const int bm_totwalkers = ARRAY_SIZE(bm_walker_types)
 

Detailed Description

BMesh Walker Code.

Definition in file bmesh_walkers_impl.c.

Macro Definition Documentation

◆ BMW_state_remove_r

#define BMW_state_remove_r (   walker,
  owalk 
)
Value:
{ \
memcpy(owalk, BMW_current_state(walker), sizeof(*(owalk))); \
BMW_state_remove(walker); \
} \
(void)0
void * BMW_current_state(BMWalker *walker)
Current Walker State.
SyclQueue void void size_t num_bytes void

Definition at line 19 of file bmesh_walkers_impl.c.

◆ EDGE_CHECK

#define EDGE_CHECK (   e)     (bmw_mask_check_edge(walker, e) && (BM_edge_is_boundary(e) || BM_edge_is_manifold(e)))

Function Documentation

◆ bm_edge_is_single()

static bool bm_edge_is_single ( BMEdge e)
static

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().

◆ bmw_ConnectedVertexWalker_begin()

static void bmw_ConnectedVertexWalker_begin ( BMWalker walker,
void data 
)
static

Definition at line 587 of file bmesh_walkers_impl.c.

References bmw_ConnectedVertexWalker_visitVertex(), data, and v.

◆ bmw_ConnectedVertexWalker_step()

static void* bmw_ConnectedVertexWalker_step ( BMWalker walker)
static

◆ bmw_ConnectedVertexWalker_visitVertex()

static void bmw_ConnectedVertexWalker_visitVertex ( BMWalker walker,
BMVert v 
)
static

◆ bmw_ConnectedVertexWalker_yield()

static void* bmw_ConnectedVertexWalker_yield ( BMWalker walker)
static

Definition at line 593 of file bmesh_walkers_impl.c.

References BMW_current_state(), and BMwConnectedVertexWalker::curvert.

◆ bmw_edge_is_wire()

static bool bmw_edge_is_wire ( const BMWalker walker,
const BMEdge e 
)
static

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().

◆ bmw_EdgeboundaryWalker_begin()

static void bmw_EdgeboundaryWalker_begin ( BMWalker walker,
void data 
)
static

◆ bmw_EdgeboundaryWalker_step()

static void* bmw_EdgeboundaryWalker_step ( BMWalker walker)
static

◆ bmw_EdgeboundaryWalker_yield()

static void* bmw_EdgeboundaryWalker_yield ( BMWalker walker)
static

Definition at line 1443 of file bmesh_walkers_impl.c.

References BMW_current_state(), BMwEdgeboundaryWalker::e, and NULL.

◆ bmw_EdgeLoopWalker_begin()

static void bmw_EdgeLoopWalker_begin ( BMWalker walker,
void data 
)
static

Detect an NGon (face-hub)

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.

NGon in Grid Example

+-----+-----+-----+-----+-----+
| | | | | |
+-----va=ea=+==eb=+==ec=vb----+
| | | |
+-----+ +-----+
| | f_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).

Mixed Triangle-Fan & Quad Example

+-----------------------------------------------+
| f_hub |
va-ea-vb=eb=+==ec=+=ed==+=ee=vc=ef=vd----------ve
| |\ | | | / / \ |
| | \ \ | / / / \ |
| | \ | | | / / \ |
| | \ \ | / / / \ |
| | \ | | | / / \ |
| | \ \ | / / / \ |
| | \ | | | / / \ |
| | \ \ | / / / \ |
| | \| | |/ / \ |
| | \\|// / \ |
| | \|/ / \|
+-----+-----------+-----+-----------------------+

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.

◆ bmw_EdgeLoopWalker_step()

static void* bmw_EdgeLoopWalker_step ( BMWalker walker)
static

◆ bmw_EdgeLoopWalker_yield()

static void* bmw_EdgeLoopWalker_yield ( BMWalker walker)
static

Definition at line 975 of file bmesh_walkers_impl.c.

References BMW_current_state(), and BMwEdgeLoopWalker::cur.

◆ bmw_EdgeringWalker_begin()

static void bmw_EdgeringWalker_begin ( BMWalker walker,
void data 
)
static

◆ bmw_EdgeringWalker_step()

static void* bmw_EdgeringWalker_step ( BMWalker walker)
static

◆ bmw_EdgeringWalker_yield()

static void* bmw_EdgeringWalker_yield ( BMWalker walker)
static

◆ bmw_FaceLoopWalker_begin()

static void bmw_FaceLoopWalker_begin ( BMWalker walker,
void data 
)
static

◆ bmw_FaceLoopWalker_edge_begins_loop()

static bool bmw_FaceLoopWalker_edge_begins_loop ( BMWalker walker,
BMEdge e 
)
static

◆ bmw_FaceLoopWalker_include_face()

static bool bmw_FaceLoopWalker_include_face ( BMWalker walker,
BMLoop l 
)
static

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().

◆ bmw_FaceLoopWalker_step()

static void* bmw_FaceLoopWalker_step ( BMWalker walker)
static

◆ bmw_FaceLoopWalker_yield()

static void* bmw_FaceLoopWalker_yield ( BMWalker walker)
static

Definition at line 1229 of file bmesh_walkers_impl.c.

References BMW_current_state(), BMLoop::f, BMwFaceLoopWalker::l, and NULL.

◆ bmw_FaceShellWalker_begin()

static void bmw_FaceShellWalker_begin ( BMWalker walker,
void data 
)
static

Definition at line 519 of file bmesh_walkers_impl.c.

References bmw_FaceShellWalker_visitEdge(), data, and e.

◆ bmw_FaceShellWalker_step()

static void* bmw_FaceShellWalker_step ( BMWalker walker)
static

◆ bmw_FaceShellWalker_visitEdge()

static void bmw_FaceShellWalker_visitEdge ( BMWalker walker,
BMEdge e 
)
static

◆ bmw_FaceShellWalker_yield()

static void* bmw_FaceShellWalker_yield ( BMWalker walker)
static

Definition at line 525 of file bmesh_walkers_impl.c.

References BMW_current_state(), and BMwShellWalker::curedge.

◆ bmw_IslandboundWalker_begin()

static void bmw_IslandboundWalker_begin ( BMWalker walker,
void data 
)
static

◆ bmw_IslandboundWalker_step()

static void* bmw_IslandboundWalker_step ( BMWalker walker)
static

◆ bmw_IslandboundWalker_yield()

static void* bmw_IslandboundWalker_yield ( BMWalker walker)
static

Definition at line 649 of file bmesh_walkers_impl.c.

References BMW_current_state(), and BMwIslandboundWalker::curloop.

◆ bmw_IslandManifoldWalker_step()

static void* bmw_IslandManifoldWalker_step ( BMWalker walker)
static

Ignore edges that don't have 2x usable faces.

Definition at line 823 of file bmesh_walkers_impl.c.

References bmw_IslandWalker_step_ex().

◆ bmw_IslandWalker_begin()

static void bmw_IslandWalker_begin ( BMWalker walker,
void data 
)
static

◆ bmw_IslandWalker_step()

static void* bmw_IslandWalker_step ( BMWalker walker)
static

Definition at line 815 of file bmesh_walkers_impl.c.

References bmw_IslandWalker_step_ex().

◆ bmw_IslandWalker_step_ex()

static void* bmw_IslandWalker_step_ex ( BMWalker walker,
bool  only_manifold 
)
static

◆ bmw_IslandWalker_yield()

static void* bmw_IslandWalker_yield ( BMWalker walker)
static

Definition at line 746 of file bmesh_walkers_impl.c.

References BMW_current_state(), and BMwIslandWalker::cur.

◆ bmw_LoopShellWalker_begin()

static void bmw_LoopShellWalker_begin ( BMWalker walker,
void data 
)
static

◆ bmw_LoopShellWalker_step()

static void* bmw_LoopShellWalker_step ( BMWalker walker)
static

◆ bmw_LoopShellWalker_step_impl()

static void bmw_LoopShellWalker_step_impl ( BMWalker walker,
BMLoop l 
)
static

◆ bmw_LoopShellWalker_visitEdgeWire()

static void bmw_LoopShellWalker_visitEdgeWire ( BMWalker walker,
BMEdge e 
)
static

◆ bmw_LoopShellWalker_visitLoop()

static void bmw_LoopShellWalker_visitLoop ( BMWalker walker,
BMLoop l 
)
static

◆ bmw_LoopShellWalker_yield()

static void* bmw_LoopShellWalker_yield ( BMWalker walker)
static

Definition at line 290 of file bmesh_walkers_impl.c.

References BMW_current_state(), and BMwLoopShellWalker::curloop.

◆ bmw_LoopShellWireWalker_begin()

static void bmw_LoopShellWireWalker_begin ( BMWalker walker,
void data 
)
static

◆ bmw_LoopShellWireWalker_step()

static void* bmw_LoopShellWireWalker_step ( BMWalker walker)
static

◆ bmw_LoopShellWireWalker_visitVert()

static void bmw_LoopShellWireWalker_visitVert ( BMWalker walker,
BMVert v,
const BMEdge e_from 
)
static

◆ bmw_LoopShellWireWalker_yield()

static void* bmw_LoopShellWireWalker_yield ( BMWalker walker)
static

Definition at line 460 of file bmesh_walkers_impl.c.

References BMW_current_state(), and BMwLoopShellWireWalker::curelem.

◆ bmw_mask_check_edge()

static bool bmw_mask_check_edge ( BMWalker walker,
BMEdge e 
)
static

◆ bmw_mask_check_face()

static bool bmw_mask_check_face ( BMWalker walker,
BMFace f 
)
static

◆ bmw_mask_check_vert()

static bool bmw_mask_check_vert ( BMWalker walker,
BMVert v 
)
static

◆ bmw_NonManifoldedgeWalker_begin()

static void bmw_NonManifoldedgeWalker_begin ( BMWalker walker,
void data 
)
static

◆ bmw_NonManifoldedgeWalker_step()

static void* bmw_NonManifoldedgeWalker_step ( BMWalker walker)
static

◆ bmw_NonManifoldedgeWalker_yield()

static void* bmw_NonManifoldedgeWalker_yield ( BMWalker walker)
static

◆ bmw_NonManifoldLoop_find_next_around_vertex()

static BMLoop* bmw_NonManifoldLoop_find_next_around_vertex ( BMLoop l,
BMVert v,
int  face_count 
)
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().

◆ bmw_UVEdgeWalker_begin()

static void bmw_UVEdgeWalker_begin ( BMWalker walker,
void data 
)
static

◆ bmw_UVEdgeWalker_step()

static void* bmw_UVEdgeWalker_step ( BMWalker walker)
static

◆ bmw_UVEdgeWalker_yield()

static void* bmw_UVEdgeWalker_yield ( BMWalker walker)
static

Definition at line 1519 of file bmesh_walkers_impl.c.

References BMW_current_state(), BMwUVEdgeWalker::l, and NULL.

◆ bmw_VertShellWalker_begin()

static void bmw_VertShellWalker_begin ( BMWalker walker,
void data 
)
static

◆ bmw_VertShellWalker_step()

static void* bmw_VertShellWalker_step ( BMWalker walker)
static

◆ bmw_VertShellWalker_visitEdge()

static void bmw_VertShellWalker_visitEdge ( BMWalker walker,
BMEdge e 
)
static

◆ bmw_VertShellWalker_yield()

static void* bmw_VertShellWalker_yield ( BMWalker walker)
static

Definition at line 147 of file bmesh_walkers_impl.c.

References BMW_current_state(), and BMwShellWalker::curedge.

Variable Documentation

◆ bm_totwalkers

const int bm_totwalkers = ARRAY_SIZE(bm_walker_types)

Definition at line 1871 of file bmesh_walkers_impl.c.

◆ bm_walker_types

BMWalker* bm_walker_types[]
Initial value:
= {
}
static BMWalker bmw_UVEdgeWalker_Type
static BMWalker bmw_FaceLoopWalker_Type
static BMWalker bmw_ConnectedVertexWalker_Type
static BMWalker bmw_FaceShellWalker_Type
static BMWalker bmw_EdgeboundaryWalker_Type
static BMWalker bmw_LoopShellWireWalker_Type
static BMWalker bmw_IslandboundWalker_Type
static BMWalker bmw_EdgeringWalker_Type
static BMWalker bmw_LoopShellWalker_Type
static BMWalker bmw_EdgeLoopWalker_Type
static BMWalker bmw_VertShellWalker_Type
static BMWalker bmw_IslandManifoldWalker_Type
static BMWalker bmw_NonManifoldedgeWalker_type
static BMWalker bmw_IslandWalker_Type

Definition at line 1854 of file bmesh_walkers_impl.c.

Referenced by BMW_init().

◆ bmw_ConnectedVertexWalker_Type

BMWalker bmw_ConnectedVertexWalker_Type
static
Initial value:
= {
}
@ BM_VERT
Definition: bmesh_class.h:383
@ BMW_BREADTH_FIRST
Definition: bmesh_walkers.h:15
static void bmw_ConnectedVertexWalker_begin(BMWalker *walker, void *data)
static void * bmw_ConnectedVertexWalker_yield(BMWalker *walker)
static void * bmw_ConnectedVertexWalker_step(BMWalker *walker)
struct BMwConnectedVertexWalker BMwConnectedVertexWalker

Definition at line 1838 of file bmesh_walkers_impl.c.

◆ bmw_EdgeboundaryWalker_Type

BMWalker bmw_EdgeboundaryWalker_Type
static
Initial value:
= {
0,
}
@ BM_EDGE
Definition: bmesh_class.h:384
@ BMW_DEPTH_FIRST
Definition: bmesh_walkers.h:14
static void * bmw_EdgeboundaryWalker_step(BMWalker *walker)
static void bmw_EdgeboundaryWalker_begin(BMWalker *walker, void *data)
static void * bmw_EdgeboundaryWalker_yield(BMWalker *walker)
struct BMwEdgeboundaryWalker BMwEdgeboundaryWalker

Definition at line 1808 of file bmesh_walkers_impl.c.

◆ bmw_EdgeLoopWalker_Type

BMWalker bmw_EdgeLoopWalker_Type
static
Initial value:
= {
0,
}
static void * bmw_EdgeLoopWalker_yield(BMWalker *walker)
static void bmw_EdgeLoopWalker_begin(BMWalker *walker, void *data)
static void * bmw_EdgeLoopWalker_step(BMWalker *walker)
struct BMwEdgeLoopWalker BMwEdgeLoopWalker

Definition at line 1776 of file bmesh_walkers_impl.c.

◆ bmw_EdgeringWalker_Type

BMWalker bmw_EdgeringWalker_Type
static
Initial value:
= {
}
static void bmw_EdgeringWalker_begin(BMWalker *walker, void *data)
static void * bmw_EdgeringWalker_yield(BMWalker *walker)
static void * bmw_EdgeringWalker_step(BMWalker *walker)
struct BMwEdgeringWalker BMwEdgeringWalker

Definition at line 1798 of file bmesh_walkers_impl.c.

◆ bmw_FaceLoopWalker_Type

BMWalker bmw_FaceLoopWalker_Type
static
Initial value:
= {
0,
}
static void bmw_FaceLoopWalker_begin(BMWalker *walker, void *data)
static void * bmw_FaceLoopWalker_step(BMWalker *walker)
static void * bmw_FaceLoopWalker_yield(BMWalker *walker)
struct BMwFaceLoopWalker BMwFaceLoopWalker

Definition at line 1787 of file bmesh_walkers_impl.c.

◆ bmw_FaceShellWalker_Type

BMWalker bmw_FaceShellWalker_Type
static
Initial value:
= {
sizeof(BMwShellWalker),
}
static void bmw_FaceShellWalker_begin(BMWalker *walker, void *data)
static void * bmw_FaceShellWalker_yield(BMWalker *walker)
static void * bmw_FaceShellWalker_step(BMWalker *walker)
struct BMwShellWalker BMwShellWalker

Definition at line 1736 of file bmesh_walkers_impl.c.

◆ bmw_IslandboundWalker_Type

BMWalker bmw_IslandboundWalker_Type
static
Initial value:
= {
}
@ BM_LOOP
Definition: bmesh_class.h:385
@ BM_FACE
Definition: bmesh_class.h:386
static void bmw_IslandboundWalker_begin(BMWalker *walker, void *data)
static void * bmw_IslandboundWalker_step(BMWalker *walker)
static void * bmw_IslandboundWalker_yield(BMWalker *walker)
struct BMwIslandboundWalker BMwIslandboundWalker

Definition at line 1746 of file bmesh_walkers_impl.c.

◆ bmw_IslandManifoldWalker_Type

BMWalker bmw_IslandManifoldWalker_Type
static
Initial value:
= {
sizeof(BMwIslandWalker),
}
static void * bmw_IslandManifoldWalker_step(BMWalker *walker)
static void bmw_IslandWalker_begin(BMWalker *walker, void *data)
static void * bmw_IslandWalker_yield(BMWalker *walker)
struct BMwIslandWalker BMwIslandWalker

Definition at line 1766 of file bmesh_walkers_impl.c.

◆ bmw_IslandWalker_Type

BMWalker bmw_IslandWalker_Type
static
Initial value:

Definition at line 1756 of file bmesh_walkers_impl.c.

◆ bmw_LoopShellWalker_Type

BMWalker bmw_LoopShellWalker_Type
static
Initial value:
= {
}
static void * bmw_LoopShellWalker_step(BMWalker *walker)
static void bmw_LoopShellWalker_begin(BMWalker *walker, void *data)
static void * bmw_LoopShellWalker_yield(BMWalker *walker)
struct BMwLoopShellWalker BMwLoopShellWalker

Definition at line 1716 of file bmesh_walkers_impl.c.

◆ bmw_LoopShellWireWalker_Type

BMWalker bmw_LoopShellWireWalker_Type
static
Initial value:
= {
}
static void * bmw_LoopShellWireWalker_step(BMWalker *walker)
static void bmw_LoopShellWireWalker_begin(BMWalker *walker, void *data)
static void * bmw_LoopShellWireWalker_yield(BMWalker *walker)
struct BMwLoopShellWireWalker BMwLoopShellWireWalker

Definition at line 1726 of file bmesh_walkers_impl.c.

◆ bmw_NonManifoldedgeWalker_type

BMWalker bmw_NonManifoldedgeWalker_type
static
Initial value:
= {
0,
}
static void bmw_NonManifoldedgeWalker_begin(BMWalker *walker, void *data)
static void * bmw_NonManifoldedgeWalker_yield(BMWalker *walker)
static void * bmw_NonManifoldedgeWalker_step(BMWalker *walker)
struct BMwNonManifoldEdgeLoopWalker BMwNonManifoldEdgeLoopWalker

Definition at line 1818 of file bmesh_walkers_impl.c.

◆ bmw_UVEdgeWalker_Type

BMWalker bmw_UVEdgeWalker_Type
static
Initial value:
= {
sizeof(BMwUVEdgeWalker),
}
static void * bmw_UVEdgeWalker_step(BMWalker *walker)
static void * bmw_UVEdgeWalker_yield(BMWalker *walker)
static void bmw_UVEdgeWalker_begin(BMWalker *walker, void *data)
struct BMwUVEdgeWalker BMwUVEdgeWalker

Definition at line 1828 of file bmesh_walkers_impl.c.

◆ bmw_VertShellWalker_Type

BMWalker bmw_VertShellWalker_Type
static
Initial value:
= {
sizeof(BMwShellWalker),
}
static void bmw_VertShellWalker_begin(BMWalker *walker, void *data)
static void * bmw_VertShellWalker_yield(BMWalker *walker)
static void * bmw_VertShellWalker_step(BMWalker *walker)

Definition at line 1706 of file bmesh_walkers_impl.c.