Blender V4.3
ED_mesh.hh File Reference

Go to the source code of this file.

Classes

struct  EDBMUpdate_Params
 
struct  MirrTopoStore_t
 
struct  BMBackup
 

Macros

#define ED_MESH_PICK_DEFAULT_VERT_DIST   25
 
#define ED_MESH_PICK_DEFAULT_FACE_DIST   1
 
#define USE_LOOPSLIDE_HACK
 

Enumerations

enum  eEditMesh_PreSelPreviewAction { PRESELECT_ACTION_TRANSFORM = 1 , PRESELECT_ACTION_CREATE = 2 , PRESELECT_ACTION_DELETE = 3 }
 

Functions

void EDBM_verts_mirror_cache_begin_ex (BMEditMesh *em, int axis, bool use_self, bool use_select, bool respecthide, bool use_topology, float maxdist, int *r_index)
 
void EDBM_verts_mirror_cache_begin (BMEditMesh *em, int axis, bool use_self, bool use_select, bool respecthide, bool use_topology)
 
void EDBM_verts_mirror_apply (BMEditMesh *em, int sel_from, int sel_to)
 
BMVertEDBM_verts_mirror_get (BMEditMesh *em, BMVert *v)
 
BMEdgeEDBM_verts_mirror_get_edge (BMEditMesh *em, BMEdge *e)
 
BMFaceEDBM_verts_mirror_get_face (BMEditMesh *em, BMFace *f)
 
void EDBM_verts_mirror_cache_clear (BMEditMesh *em, BMVert *v)
 
void EDBM_verts_mirror_cache_end (BMEditMesh *em)
 
void EDBM_mesh_normals_update_ex (BMEditMesh *em, const BMeshNormalsUpdate_Params *params)
 
void EDBM_mesh_normals_update (BMEditMesh *em)
 
void EDBM_selectmode_to_scene (bContext *C)
 
void EDBM_mesh_make (Object *ob, int select_mode, bool add_key_index)
 
void EDBM_mesh_make_from_mesh (Object *ob, Mesh *src_mesh, int select_mode, bool add_key_index)
 
void EDBM_mesh_free_data (BMEditMesh *em)
 
void EDBM_mesh_load_ex (Main *bmain, Object *ob, bool free_data)
 
void EDBM_mesh_load (Main *bmain, Object *ob)
 
void EDBM_select_more (BMEditMesh *em, bool use_face_step)
 
void EDBM_select_less (BMEditMesh *em, bool use_face_step)
 
void EDBM_selectmode_flush_ex (BMEditMesh *em, short selectmode)
 
void EDBM_selectmode_flush (BMEditMesh *em)
 
void EDBM_deselect_flush (BMEditMesh *em)
 
void EDBM_select_flush (BMEditMesh *em)
 
bool EDBM_vert_color_check (BMEditMesh *em)
 
bool EDBM_mesh_hide (BMEditMesh *em, bool swap)
 
bool EDBM_mesh_reveal (BMEditMesh *em, bool select)
 
void EDBM_update (Mesh *mesh, const EDBMUpdate_Params *params)
 
void EDBM_update_extern (Mesh *mesh, bool do_tessellation, bool is_destructive)
 
UvElementMapBM_uv_element_map_create (BMesh *bm, const Scene *scene, bool uv_selected, bool use_winding, bool use_seams, bool do_islands)
 
void BM_uv_element_map_free (UvElementMap *element_map)
 
UvElementBM_uv_element_get (const UvElementMap *element_map, const BMLoop *l)
 
UvElementBM_uv_element_get_head (UvElementMap *element_map, UvElement *child)
 
int BM_uv_element_get_unique_index (UvElementMap *element_map, UvElement *child)
 
UvElement ** BM_uv_element_map_ensure_head_table (UvElementMap *element_map)
 
intBM_uv_element_map_ensure_unique_index (UvElementMap *element_map)
 
bool EDBM_uv_check (BMEditMesh *em)
 
BMFaceEDBM_uv_active_face_get (BMEditMesh *em, bool sloppy, bool selected)
 
void BM_uv_vert_map_free (UvVertMap *vmap)
 
UvMapVertBM_uv_vert_map_at_index (UvVertMap *vmap, unsigned int v)
 
UvVertMapBM_uv_vert_map_create (BMesh *bm, bool use_select)
 
void EDBM_flag_enable_all (BMEditMesh *em, char hflag)
 
void EDBM_flag_disable_all (BMEditMesh *em, char hflag)
 
bool BMBVH_EdgeVisible (const BMBVHTree *tree, const BMEdge *e, const Depsgraph *depsgraph, const ARegion *region, const View3D *v3d, const Object *obedit)
 
void EDBM_project_snap_verts (bContext *C, Depsgraph *depsgraph, ARegion *region, Object *obedit, BMEditMesh *em)
 
void EDBM_automerge (Object *obedit, bool update, char hflag, float dist)
 
void EDBM_automerge_and_split (Object *obedit, bool split_edges, bool split_faces, bool update, char hflag, float dist)
 
void ED_mesh_undosys_type (UndoType *ut)
 
void EDBM_select_mirrored (BMEditMesh *em, const Mesh *mesh, int axis, bool extend, int *r_totmirr, int *r_totfail)
 
BMVertEDBM_vert_find_nearest_ex (ViewContext *vc, float *dist_px_manhattan_p, bool use_select_bias, bool use_cycle, blender::Span< Base * > bases, uint *r_base_index)
 
BMVertEDBM_vert_find_nearest (ViewContext *vc, float *dist_px_manhattan_p)
 
BMEdgeEDBM_edge_find_nearest_ex (ViewContext *vc, float *dist_px_manhattan, float *r_dist_center, bool use_select_bias, bool use_cycle, BMEdge **r_eed_zbuf, blender::Span< Base * > bases, uint *r_base_index)
 
BMEdgeEDBM_edge_find_nearest (ViewContext *vc, float *dist_px_manhattan_p)
 
BMFaceEDBM_face_find_nearest_ex (ViewContext *vc, float *dist_px_manhattan, float *r_dist_center, bool use_zbuf_single_px, bool use_select_bias, bool use_cycle, BMFace **r_efa_zbuf, blender::Span< Base * > bases, uint *r_base_index)
 
BMFaceEDBM_face_find_nearest (ViewContext *vc, float *dist_px_manhattan_p)
 
bool EDBM_unified_findnearest (ViewContext *vc, blender::Span< Base * > bases, int *r_base_index, BMVert **r_eve, BMEdge **r_eed, BMFace **r_efa)
 
bool EDBM_unified_findnearest_from_raycast (ViewContext *vc, blender::Span< Base * > bases, bool use_boundary_vertices, bool use_boundary_edges, int *r_base_index_vert, int *r_base_index_edge, int *r_base_index_face, BMVert **r_eve, BMEdge **r_eed, BMFace **r_efa)
 
bool EDBM_select_pick (bContext *C, const int mval[2], const SelectPick_Params *params)
 
void EDBM_selectmode_set (BMEditMesh *em)
 
void EDBM_selectmode_convert (BMEditMesh *em, short selectmode_old, short selectmode_new)
 
bool EDBM_selectmode_set_multi (bContext *C, short selectmode)
 
bool EDBM_selectmode_toggle_multi (bContext *C, short selectmode_new, int action, bool use_extend, bool use_expand)
 
bool EDBM_selectmode_disable (Scene *scene, BMEditMesh *em, short selectmode_disable, short selectmode_fallback)
 
bool EDBM_deselect_by_material (BMEditMesh *em, short index, bool select)
 
void EDBM_select_toggle_all (BMEditMesh *em)
 
void EDBM_select_swap (BMEditMesh *em)
 
bool EDBM_select_interior_faces (BMEditMesh *em)
 
ViewContext em_setup_viewcontext (bContext *C)
 
bool EDBM_mesh_deselect_all_multi_ex (blender::Span< Base * > bases)
 
bool EDBM_mesh_deselect_all_multi (bContext *C)
 
bool EDBM_selectmode_disable_multi_ex (Scene *scene, blender::Span< Base * > bases, short selectmode_disable, short selectmode_fallback)
 
bool EDBM_selectmode_disable_multi (bContext *C, short selectmode_disable, short selectmode_fallback)
 
EditMesh_PreSelEdgeRingEDBM_preselect_edgering_create ()
 
void EDBM_preselect_edgering_destroy (EditMesh_PreSelEdgeRing *psel)
 
void EDBM_preselect_edgering_clear (EditMesh_PreSelEdgeRing *psel)
 
void EDBM_preselect_edgering_draw (EditMesh_PreSelEdgeRing *psel, const float matrix[4][4])
 
void EDBM_preselect_edgering_update_from_edge (EditMesh_PreSelEdgeRing *psel, BMesh *bm, BMEdge *eed_start, int previewlines, blender::Span< blender::float3 > vert_positions)
 
EditMesh_PreSelElemEDBM_preselect_elem_create ()
 
void EDBM_preselect_elem_destroy (EditMesh_PreSelElem *psel)
 
void EDBM_preselect_elem_clear (EditMesh_PreSelElem *psel)
 
void EDBM_preselect_preview_clear (EditMesh_PreSelElem *psel)
 
void EDBM_preselect_elem_draw (EditMesh_PreSelElem *psel, const float matrix[4][4])
 
void EDBM_preselect_elem_update_from_single (EditMesh_PreSelElem *psel, BMesh *bm, BMElem *ele, blender::Span< blender::float3 > vert_positions)
 
void EDBM_preselect_elem_update_preview (EditMesh_PreSelElem *psel, ViewContext *vc, BMesh *bm, BMElem *ele, const int mval[2])
 
void EDBM_preselect_action_set (EditMesh_PreSelElem *psel, eEditMesh_PreSelPreviewAction action)
 
eEditMesh_PreSelPreviewAction EDBM_preselect_action_get (EditMesh_PreSelElem *psel)
 
void ED_operatortypes_mesh ()
 
void ED_operatormacros_mesh ()
 
void ED_keymap_mesh (wmKeyConfig *keyconf)
 
void paintface_flush_flags (bContext *C, Object *ob, bool flush_selection, bool flush_hidden)
 
bool paintface_mouse_select (bContext *C, const int mval[2], const SelectPick_Params *params, Object *ob)
 
bool paintface_deselect_all_visible (bContext *C, Object *ob, int action, bool flush_flags)
 
void paintface_select_linked (bContext *C, Object *ob, const int mval[2], bool select)
 
void paintface_select_loop (bContext *C, Object *ob, const int mval[2], bool select)
 
void paintface_select_more (Mesh *mesh, bool face_step)
 
void paintface_select_less (Mesh *mesh, bool face_step)
 
bool paintface_minmax (Object *ob, float r_min[3], float r_max[3])
 
void paintface_hide (bContext *C, Object *ob, bool unselected)
 
void paintface_reveal (bContext *C, Object *ob, bool select)
 
bool paintvert_deselect_all_visible (Object *ob, int action, bool flush_flags)
 
void paintvert_select_ungrouped (Object *ob, bool extend, bool flush_flags)
 
void paintvert_flush_flags (Object *ob)
 
void paintvert_tag_select_update (bContext *C, Object *ob)
 
void paintvert_select_linked (bContext *C, Object *ob)
 
void paintvert_select_linked_pick (bContext *C, Object *ob, const int region_coordinates[2], bool select)
 
void paintvert_select_more (Mesh *mesh, bool face_step)
 
void paintvert_select_less (Mesh *mesh, bool face_step)
 
void paintvert_hide (bContext *C, Object *ob, bool unselected)
 
void paintvert_reveal (bContext *C, Object *ob, bool select)
 
bool ED_mesh_mirrtopo_recalc_check (BMEditMesh *em, Mesh *mesh, MirrTopoStore_t *mesh_topo_store)
 
void ED_mesh_mirrtopo_init (BMEditMesh *em, Mesh *mesh, MirrTopoStore_t *mesh_topo_store, bool skip_em_vert_array_init)
 
void ED_mesh_mirrtopo_free (MirrTopoStore_t *mesh_topo_store)
 
void ED_mesh_verts_add (Mesh *mesh, ReportList *reports, int count)
 
void ED_mesh_edges_add (Mesh *mesh, ReportList *reports, int count)
 
void ED_mesh_loops_add (Mesh *mesh, ReportList *reports, int count)
 
void ED_mesh_faces_add (Mesh *mesh, ReportList *reports, int count)
 
void ED_mesh_verts_remove (Mesh *mesh, ReportList *reports, int count)
 
void ED_mesh_edges_remove (Mesh *mesh, ReportList *reports, int count)
 
void ED_mesh_loops_remove (Mesh *mesh, ReportList *reports, int count)
 
void ED_mesh_faces_remove (Mesh *mesh, ReportList *reports, int count)
 
void ED_mesh_geometry_clear (Mesh *mesh)
 
bool * ED_mesh_uv_map_vert_select_layer_ensure (Mesh *mesh, int uv_index)
 
bool * ED_mesh_uv_map_edge_select_layer_ensure (Mesh *mesh, int uv_index)
 
bool * ED_mesh_uv_map_pin_layer_ensure (Mesh *mesh, int uv_index)
 
const bool * ED_mesh_uv_map_vert_select_layer_get (const Mesh *mesh, int uv_index)
 
const bool * ED_mesh_uv_map_edge_select_layer_get (const Mesh *mesh, int uv_index)
 
const bool * ED_mesh_uv_map_pin_layer_get (const Mesh *mesh, int uv_index)
 
void ED_mesh_uv_ensure (Mesh *mesh, const char *name)
 
int ED_mesh_uv_add (Mesh *mesh, const char *name, bool active_set, bool do_init, ReportList *reports)
 
void ED_mesh_uv_loop_reset (bContext *C, Mesh *mesh)
 
void ED_mesh_uv_loop_reset_ex (Mesh *mesh, int layernum)
 
bool ED_mesh_color_ensure (Mesh *mesh, const char *name)
 
int ED_mesh_color_add (Mesh *mesh, const char *name, bool active_set, bool do_init, ReportList *reports)
 
void ED_mesh_report_mirror (wmOperator *op, int totmirr, int totfail)
 
void ED_mesh_report_mirror_ex (wmOperator *op, int totmirr, int totfail, char selectmode)
 
KeyBlockED_mesh_get_edit_shape_key (const Mesh *me)
 
MeshED_mesh_context (bContext *C)
 
void ED_mesh_split_faces (Mesh *mesh)
 
BMBackup EDBM_redo_state_store (BMEditMesh *em)
 
void EDBM_redo_state_restore (BMBackup *backup, BMEditMesh *em, bool recalc_looptris) ATTR_NONNULL(1
 
void void EDBM_redo_state_restore_and_free (BMBackup *backup, BMEditMesh *em, bool recalc_looptris) ATTR_NONNULL(1
 
void void void EDBM_redo_state_free (BMBackup *backup) ATTR_NONNULL(1)
 
int ED_mesh_join_objects_exec (bContext *C, wmOperator *op)
 
int ED_mesh_shapes_join_objects_exec (bContext *C, wmOperator *op)
 
void ED_mesh_mirror_spatial_table_begin (Object *ob, BMEditMesh *em, Mesh *mesh_eval)
 
void ED_mesh_mirror_spatial_table_end (Object *ob)
 
int ED_mesh_mirror_spatial_table_lookup (Object *ob, BMEditMesh *em, Mesh *mesh_eval, const float co[3])
 
void ED_mesh_mirror_topo_table_begin (Object *ob, Mesh *mesh_eval)
 
void ED_mesh_mirror_topo_table_end (Object *ob)
 
int mesh_get_x_mirror_vert (Object *ob, Mesh *mesh_eval, int index, bool use_topology)
 
BMVerteditbmesh_get_x_mirror_vert (Object *ob, BMEditMesh *em, BMVert *eve, const float co[3], int index, bool use_topology)
 
intmesh_get_x_mirror_faces (Object *ob, BMEditMesh *em, Mesh *mesh_eval)
 
int ED_mesh_mirror_get_vert (Object *ob, int index)
 
bool ED_mesh_pick_vert (bContext *C, Object *ob, const int mval[2], uint dist_px, bool use_zbuf, uint *r_index)
 
bool ED_mesh_pick_face (bContext *C, Object *ob, const int mval[2], uint dist_px, uint *r_index)
 
bool ED_mesh_pick_face_vert (bContext *C, Object *ob, const int mval[2], uint dist_px, uint *r_index)
 
MDeformVertED_mesh_active_dvert_get_em (Object *ob, BMVert **r_eve)
 
MDeformVertED_mesh_active_dvert_get_ob (Object *ob, int *r_index)
 
MDeformVertED_mesh_active_dvert_get_only (Object *ob)
 
void EDBM_mesh_stats_multi (blender::Span< Object * > objects, int totelem[3], int totelem_sel[3])
 
void EDBM_mesh_elem_index_ensure_multi (blender::Span< Object * > objects, char htype)
 

Macro Definition Documentation

◆ ED_MESH_PICK_DEFAULT_FACE_DIST

#define ED_MESH_PICK_DEFAULT_FACE_DIST   1

◆ ED_MESH_PICK_DEFAULT_VERT_DIST

#define ED_MESH_PICK_DEFAULT_VERT_DIST   25

◆ USE_LOOPSLIDE_HACK

#define USE_LOOPSLIDE_HACK

Definition at line 585 of file ED_mesh.hh.

Enumeration Type Documentation

◆ eEditMesh_PreSelPreviewAction

Enumerator
PRESELECT_ACTION_TRANSFORM 
PRESELECT_ACTION_CREATE 
PRESELECT_ACTION_DELETE 

Definition at line 345 of file ED_mesh.hh.

Function Documentation

◆ BM_uv_element_get()

UvElement * BM_uv_element_get ( const UvElementMap * element_map,
const BMLoop * l )

Return the UvElement associated with a given BMLoop, or NULL if no association exists.

Parameters
element_mapThe UvElementMap to look in.
lThe loop to search for.
Returns
The UvElement associated with l, or NULL if not found. (e.g. the vertex is hidden.)

Definition at line 1187 of file editmesh_utils.cc.

References BM_elem_index_get, element, l, UvElement::next, BMLoop::v, and UvElementMap::vertex.

Referenced by bm_uv_edge_select_build_islands(), createTransUVs(), iso_index_for_loop(), relaxation_iteration_uv(), stitch_init(), stitch_process_data(), stitch_select(), stitch_uv_edge_generate_linked_edges(), uv_edge_get(), uv_element_offset_from_face_get(), uv_isolate_selected_islands(), and uv_sculpt_stroke_init().

◆ BM_uv_element_get_head()

◆ BM_uv_element_get_unique_index()

int BM_uv_element_get_unique_index ( UvElementMap * element_map,
UvElement * child )

◆ BM_uv_element_map_create()

◆ BM_uv_element_map_ensure_head_table()

◆ BM_uv_element_map_ensure_unique_index()

int * BM_uv_element_map_ensure_unique_index ( UvElementMap * element_map)

◆ BM_uv_element_map_free()

◆ BM_uv_vert_map_at_index()

UvMapVert * BM_uv_vert_map_at_index ( UvVertMap * vmap,
unsigned int v )

Definition at line 547 of file editmesh_utils.cc.

References v, and UvVertMap::vert.

Referenced by uv_select_flush_from_tag_sticky_loc_internal(), and uv_select_linked_multi().

◆ BM_uv_vert_map_create()

◆ BM_uv_vert_map_free()

◆ BMBVH_EdgeVisible()

bool BMBVH_EdgeVisible ( const BMBVHTree * tree,
const BMEdge * e,
const Depsgraph * depsgraph,
const ARegion * region,
const View3D * v3d,
const Object * obedit )

◆ ED_keymap_mesh()

void ED_keymap_mesh ( wmKeyConfig * keyconf)

◆ ED_mesh_active_dvert_get_em()

◆ ED_mesh_active_dvert_get_ob()

◆ ED_mesh_active_dvert_get_only()

◆ ED_mesh_color_add()

◆ ED_mesh_color_ensure()

◆ ED_mesh_context()

◆ ED_mesh_edges_add()

void ED_mesh_edges_add ( Mesh * mesh,
ReportList * reports,
int count )

Definition at line 949 of file mesh_data.cc.

References BKE_report(), count, mesh_add_edges(), and RPT_ERROR.

◆ ED_mesh_edges_remove()

void ED_mesh_edges_remove ( Mesh * mesh,
ReportList * reports,
int count )

Definition at line 1040 of file mesh_data.cc.

References BKE_report(), count, mesh_remove_edges(), and RPT_ERROR.

◆ ED_mesh_faces_add()

void ED_mesh_faces_add ( Mesh * mesh,
ReportList * reports,
int count )

Definition at line 967 of file mesh_data.cc.

References BKE_report(), count, mesh_add_faces(), and RPT_ERROR.

◆ ED_mesh_faces_remove()

void ED_mesh_faces_remove ( Mesh * mesh,
ReportList * reports,
int count )

Definition at line 1068 of file mesh_data.cc.

References BKE_report(), count, mesh_remove_faces(), and RPT_ERROR.

◆ ED_mesh_geometry_clear()

void ED_mesh_geometry_clear ( Mesh * mesh)

◆ ED_mesh_get_edit_shape_key()

KeyBlock * ED_mesh_get_edit_shape_key ( const Mesh * me)

◆ ED_mesh_join_objects_exec()

int ED_mesh_join_objects_exec ( bContext * C,
wmOperator * op )

Definition at line 318 of file meshtools.cc.

References b, blender::ed::object::base_free_and_unlink(), BKE_id_copy(), BKE_id_free_ex(), BKE_key_add(), BKE_key_sort(), BKE_keyblock_add(), BKE_keyblock_copy_settings(), BKE_keyblock_find_name(), BKE_mesh_clear_geometry(), BKE_mesh_from_object(), BKE_object_apply_mat4_ex(), BKE_object_defgroup_find_name(), BKE_object_free_derived_caches(), BKE_object_material_get(), BKE_objects_materials_test_all(), BKE_report(), BKE_reportf(), BLI_addtail(), BLI_assert, BLI_findindex(), BLI_listbase_is_empty(), Key::block, CD_CONSTRUCT, CD_PROP_FLOAT3, CD_PROP_INT32, CD_PROP_INT32_2D, CD_SET_DEFAULT, CTX_data_active_object(), CTX_DATA_BEGIN, CTX_DATA_END, CTX_data_ensure_evaluated_depsgraph(), CTX_data_main(), CTX_data_scene(), CustomData_add_layer_named(), CustomData_reset(), KeyBlock::data, Object::data, DEG_id_tag_update(), DEG_relations_tag_update(), depsgraph, ELEM, Key::id, Object::id, ID_RECALC_GEOMETRY, ID_RECALC_SELECT, ID_RECALC_TRANSFORM, id_us_min(), id_us_plus(), blender::implicit_sharing::info_for_mem_free(), invert_m4_m4_safe_ortho(), join_mesh_single(), KEY_RELATIVE, LIB_ID_FREE_NO_UI_USER, LIKELY, LISTBASE_FOREACH, LISTBASE_FOREACH_INDEX, Object::mat, Object::matbits, MAXMAT, MEM_callocN, MEM_freeN(), MEM_malloc_arrayN, MEM_mallocN, MEM_SAFE_FREE, mesh, mesh_join_offset_face_sets_ID(), MESH_MAX_VERTS, Object::mode, Node::name, NC_SCENE, ND_LAYER_CONTENT, ND_OB_ACTIVE, OB_MESH, OB_MODE_EDIT, OPERATOR_CANCELLED, OPERATOR_FINISHED, Object::parent, Object::parentinv, KeyBlock::relative, wmOperator::reports, RPT_WARNING, Object::totcol, KeyBlock::totelem, Key::totkey, Key::type, Object::type, Mesh::vertex_group_names, Mesh::verts_num, and WM_event_add_notifier().

Referenced by blender::ed::object::object_join_exec().

◆ ED_mesh_loops_add()

void ED_mesh_loops_add ( Mesh * mesh,
ReportList * reports,
int count )

Definition at line 958 of file mesh_data.cc.

References BKE_report(), count, mesh_add_loops(), and RPT_ERROR.

◆ ED_mesh_loops_remove()

void ED_mesh_loops_remove ( Mesh * mesh,
ReportList * reports,
int count )

Definition at line 1054 of file mesh_data.cc.

References BKE_report(), count, mesh_remove_loops(), and RPT_ERROR.

◆ ED_mesh_mirror_get_vert()

int ED_mesh_mirror_get_vert ( Object * ob,
int index )

◆ ED_mesh_mirror_spatial_table_begin()

◆ ED_mesh_mirror_spatial_table_end()

◆ ED_mesh_mirror_spatial_table_lookup()

int ED_mesh_mirror_spatial_table_lookup ( Object * ob,
BMEditMesh * em,
Mesh * mesh_eval,
const float co[3] )

◆ ED_mesh_mirror_topo_table_begin()

void ED_mesh_mirror_topo_table_begin ( Object * ob,
Mesh * mesh_eval )

Mode is 's' start, or 'e' end, or 'u' use if end, ob can be NULL.

Note
This is supposed return -1 on error, which callers are currently checking for, but is not used so far.

Definition at line 848 of file meshtools.cc.

References ED_mesh_mirrtopo_init(), mesh_mirror_topo_table_get_meshes(), and mesh_topo_store.

Referenced by ed_mesh_mirror_topo_table_update().

◆ ED_mesh_mirror_topo_table_end()

◆ ED_mesh_mirrtopo_free()

◆ ED_mesh_mirrtopo_init()

◆ ED_mesh_mirrtopo_recalc_check()

◆ ED_mesh_pick_face()

◆ ED_mesh_pick_face_vert()

bool ED_mesh_pick_face_vert ( bContext * C,
Object * ob,
const int mval[2],
uint dist_px,
uint * r_index )

◆ ED_mesh_pick_vert()

◆ ED_mesh_report_mirror()

void ED_mesh_report_mirror ( wmOperator * op,
int totmirr,
int totfail )

◆ ED_mesh_report_mirror_ex()

void ED_mesh_report_mirror_ex ( wmOperator * op,
int totmirr,
int totfail,
char selectmode )

◆ ED_mesh_shapes_join_objects_exec()

◆ ED_mesh_split_faces()

void ED_mesh_split_faces ( Mesh * mesh)

Split all edges that would appear sharp based on face and edge sharpness tags and the auto smooth angle.

Definition at line 1147 of file mesh_data.cc.

References blender::VArrayCommon< T >::materialize().

Referenced by blender::ed::object::bake_mesh_new_from_object().

◆ ED_mesh_undosys_type()

◆ ED_mesh_uv_add()

◆ ED_mesh_uv_ensure()

◆ ED_mesh_uv_loop_reset()

void ED_mesh_uv_loop_reset ( bContext * C,
Mesh * mesh )

◆ ED_mesh_uv_loop_reset_ex()

◆ ED_mesh_uv_map_edge_select_layer_ensure()

bool * ED_mesh_uv_map_edge_select_layer_ensure ( Mesh * mesh,
int uv_index )

◆ ED_mesh_uv_map_edge_select_layer_get()

const bool * ED_mesh_uv_map_edge_select_layer_get ( const Mesh * mesh,
int uv_index )

◆ ED_mesh_uv_map_pin_layer_ensure()

bool * ED_mesh_uv_map_pin_layer_ensure ( Mesh * mesh,
int uv_index )

◆ ED_mesh_uv_map_pin_layer_get()

const bool * ED_mesh_uv_map_pin_layer_get ( const Mesh * mesh,
int uv_index )

◆ ED_mesh_uv_map_vert_select_layer_ensure()

bool * ED_mesh_uv_map_vert_select_layer_ensure ( Mesh * mesh,
int uv_index )

◆ ED_mesh_uv_map_vert_select_layer_get()

const bool * ED_mesh_uv_map_vert_select_layer_get ( const Mesh * mesh,
int uv_index )

◆ ED_mesh_verts_add()

void ED_mesh_verts_add ( Mesh * mesh,
ReportList * reports,
int count )

Definition at line 940 of file mesh_data.cc.

References BKE_report(), count, mesh_add_verts(), and RPT_ERROR.

◆ ED_mesh_verts_remove()

void ED_mesh_verts_remove ( Mesh * mesh,
ReportList * reports,
int count )

Definition at line 1026 of file mesh_data.cc.

References BKE_report(), count, mesh_remove_verts(), and RPT_ERROR.

◆ ED_operatormacros_mesh()

◆ ED_operatortypes_mesh()

void ED_operatortypes_mesh ( )

Definition at line 23 of file mesh_ops.cc.

References MESH_OT_attribute_set(), MESH_OT_average_normals(), MESH_OT_beautify_fill(), MESH_OT_bevel(), MESH_OT_bisect(), MESH_OT_blend_from_shape(), MESH_OT_bridge_edge_loops(), MESH_OT_colors_reverse(), MESH_OT_colors_rotate(), MESH_OT_convex_hull(), MESH_OT_customdata_custom_splitnormals_add(), MESH_OT_customdata_custom_splitnormals_clear(), MESH_OT_customdata_mask_clear(), MESH_OT_customdata_skin_add(), MESH_OT_customdata_skin_clear(), MESH_OT_decimate(), MESH_OT_delete(), MESH_OT_delete_edgeloop(), MESH_OT_delete_loose(), MESH_OT_dissolve_degenerate(), MESH_OT_dissolve_edges(), MESH_OT_dissolve_faces(), MESH_OT_dissolve_limited(), MESH_OT_dissolve_mode(), MESH_OT_dissolve_verts(), MESH_OT_dupli_extrude_cursor(), MESH_OT_duplicate(), MESH_OT_edge_collapse(), MESH_OT_edge_face_add(), MESH_OT_edge_rotate(), MESH_OT_edge_split(), MESH_OT_edgering_select(), MESH_OT_edges_select_sharp(), MESH_OT_extrude_context(), MESH_OT_extrude_edges_indiv(), MESH_OT_extrude_faces_indiv(), MESH_OT_extrude_region(), MESH_OT_extrude_repeat(), MESH_OT_extrude_verts_indiv(), MESH_OT_face_make_planar(), MESH_OT_face_set_extract(), MESH_OT_face_split_by_edges(), MESH_OT_faces_select_linked_flat(), MESH_OT_faces_shade_flat(), MESH_OT_faces_shade_smooth(), MESH_OT_fill(), MESH_OT_fill_grid(), MESH_OT_fill_holes(), MESH_OT_flip_normals(), MESH_OT_flip_quad_tessellation(), MESH_OT_hide(), MESH_OT_inset(), MESH_OT_intersect(), MESH_OT_intersect_boolean(), MESH_OT_knife_project(), MESH_OT_knife_tool(), MESH_OT_loop_multi_select(), MESH_OT_loop_select(), MESH_OT_loop_to_region(), MESH_OT_loopcut(), MESH_OT_mark_seam(), MESH_OT_mark_sharp(), MESH_OT_merge(), MESH_OT_merge_normals(), MESH_OT_mod_weighted_strength(), MESH_OT_normals_make_consistent(), MESH_OT_normals_tools(), MESH_OT_offset_edge_loops(), MESH_OT_paint_mask_extract(), MESH_OT_paint_mask_slice(), MESH_OT_point_normals(), MESH_OT_poke(), MESH_OT_polybuild_delete_at_cursor(), MESH_OT_polybuild_dissolve_at_cursor(), MESH_OT_polybuild_face_at_cursor(), MESH_OT_polybuild_split_at_cursor(), MESH_OT_polybuild_transform_at_cursor(), MESH_OT_primitive_circle_add(), MESH_OT_primitive_cone_add(), MESH_OT_primitive_cube_add(), MESH_OT_primitive_cube_add_gizmo(), MESH_OT_primitive_cylinder_add(), MESH_OT_primitive_grid_add(), MESH_OT_primitive_ico_sphere_add(), MESH_OT_primitive_monkey_add(), MESH_OT_primitive_plane_add(), MESH_OT_primitive_uv_sphere_add(), MESH_OT_quads_convert_to_tris(), MESH_OT_region_to_loop(), MESH_OT_remove_doubles(), MESH_OT_reveal(), MESH_OT_rip(), MESH_OT_rip_edge(), MESH_OT_screw(), MESH_OT_select_all(), MESH_OT_select_axis(), MESH_OT_select_by_attribute(), MESH_OT_select_face_by_sides(), MESH_OT_select_interior_faces(), MESH_OT_select_less(), MESH_OT_select_linked(), MESH_OT_select_linked_pick(), MESH_OT_select_loose(), MESH_OT_select_mirror(), MESH_OT_select_mode(), MESH_OT_select_more(), MESH_OT_select_non_manifold(), MESH_OT_select_nth(), MESH_OT_select_random(), MESH_OT_select_similar(), MESH_OT_select_similar_region(), MESH_OT_select_ungrouped(), MESH_OT_separate(), MESH_OT_set_normals_from_faces(), MESH_OT_shape_propagate_to_all(), MESH_OT_shortest_path_pick(), MESH_OT_shortest_path_select(), MESH_OT_smooth_normals(), MESH_OT_solidify(), MESH_OT_sort_elements(), MESH_OT_spin(), MESH_OT_split(), MESH_OT_split_normals(), MESH_OT_subdivide(), MESH_OT_subdivide_edgering(), MESH_OT_symmetrize(), MESH_OT_symmetry_snap(), MESH_OT_tris_convert_to_quads(), MESH_OT_unsubdivide(), MESH_OT_uv_texture_add(), MESH_OT_uv_texture_remove(), MESH_OT_uvs_reverse(), MESH_OT_uvs_rotate(), MESH_OT_vert_connect(), MESH_OT_vert_connect_concave(), MESH_OT_vert_connect_nonplanar(), MESH_OT_vert_connect_path(), MESH_OT_vertices_smooth(), MESH_OT_vertices_smooth_laplacian(), MESH_OT_wireframe(), and WM_operatortype_append().

Referenced by ED_spacetypes_init().

◆ EDBM_automerge()

◆ EDBM_automerge_and_split()

◆ EDBM_deselect_by_material()

bool EDBM_deselect_by_material ( BMEditMesh * em,
short index,
bool select )

◆ EDBM_deselect_flush()

◆ EDBM_edge_find_nearest()

◆ EDBM_edge_find_nearest_ex()

BMEdge * EDBM_edge_find_nearest_ex ( ViewContext * vc,
float * dist_px_manhattan,
float * r_dist_center,
bool use_select_bias,
bool use_cycle,
BMEdge ** r_eed_zbuf,
blender::Span< Base * > bases,
uint * r_base_index )

◆ EDBM_face_find_nearest()

◆ EDBM_face_find_nearest_ex()

BMFace * EDBM_face_find_nearest_ex ( ViewContext * vc,
float * dist_px_manhattan,
float * r_dist_center,
bool use_zbuf_single_px,
bool use_select_bias,
bool use_cycle,
BMFace ** r_efa_zbuf,
blender::Span< Base * > bases,
uint * r_base_index )
Parameters
use_zbuf_single_pxSpecial case, when using the back-buffer selection, only use the pixel at vc->mval instead of using dist_px_manhattan_p to search over a larger region. This is needed because historically selection worked this way for a long time, however it's reasonable that some callers might want to expand the region too. So add an argument to do this,

◆ EDBM_flag_disable_all()

◆ EDBM_flag_enable_all()

void EDBM_flag_enable_all ( BMEditMesh * em,
char hflag )

◆ EDBM_mesh_deselect_all_multi()

◆ EDBM_mesh_deselect_all_multi_ex()

bool EDBM_mesh_deselect_all_multi_ex ( blender::Span< Base * > bases)

◆ EDBM_mesh_elem_index_ensure_multi()

void EDBM_mesh_elem_index_ensure_multi ( blender::Span< Object * > objects,
char htype )

◆ EDBM_mesh_free_data()

void EDBM_mesh_free_data ( BMEditMesh * em)

◆ EDBM_mesh_hide()

◆ EDBM_mesh_load()

void EDBM_mesh_load ( Main * bmain,
Object * ob )

◆ EDBM_mesh_load_ex()

void EDBM_mesh_load_ex ( Main * bmain,
Object * ob,
bool free_data )
Warning
This can invalidate the Mesh runtime cache of other objects (for linked duplicates). Most callers should run DEG_id_tag_update on ob->data, see: #46738, #46913. This ensures BKE_object_free_derived_caches runs on all objects that use this mesh.

Definition at line 297 of file editmesh_utils.cc.

References BLI_listbase_is_empty(), bm, BM_mesh_bm_to_me(), Object::data, free_data(), params, BMesh::shapenr, Object::shapenr, and UNLIKELY.

Referenced by EDBM_mesh_load(), and blender::ed::object::editmode_load_free_ex().

◆ EDBM_mesh_make()

void EDBM_mesh_make ( Object * ob,
int select_mode,
bool add_key_index )

◆ EDBM_mesh_make_from_mesh()

void EDBM_mesh_make_from_mesh ( Object * ob,
Mesh * src_mesh,
int select_mode,
bool add_key_index )

Replaces the edit-mesh in the object with a new one based on the given mesh.

Definition at line 269 of file editmesh_utils.cc.

References Object::actcol, BKE_mesh_to_bmesh(), bm, Object::data, EDBM_mesh_free_data(), EDBM_selectmode_flush(), BMesh::selectmode, and BMeshCreateParams::use_toolflags.

Referenced by EDBM_mesh_make(), and blender::ed::geometry::store_result_geometry().

◆ EDBM_mesh_normals_update()

◆ EDBM_mesh_normals_update_ex()

void EDBM_mesh_normals_update_ex ( BMEditMesh * em,
const BMeshNormalsUpdate_Params * params )

Definition at line 1614 of file editmesh_utils.cc.

References BMEditMesh::bm, BM_mesh_normals_update_ex(), and params.

Referenced by EDBM_mesh_normals_update().

◆ EDBM_mesh_reveal()

◆ EDBM_mesh_stats_multi()

void EDBM_mesh_stats_multi ( blender::Span< Object * > objects,
int totelem[3],
int totelem_sel[3] )

◆ EDBM_preselect_action_get()

◆ EDBM_preselect_action_set()

void EDBM_preselect_action_set ( EditMesh_PreSelElem * psel,
eEditMesh_PreSelPreviewAction action )

◆ EDBM_preselect_edgering_clear()

◆ EDBM_preselect_edgering_create()

EditMesh_PreSelEdgeRing * EDBM_preselect_edgering_create ( )

Definition at line 131 of file editmesh_preselect_edgering.cc.

References MEM_callocN.

Referenced by gizmo_preselect_edgering_setup(), and ringsel_init().

◆ EDBM_preselect_edgering_destroy()

void EDBM_preselect_edgering_destroy ( EditMesh_PreSelEdgeRing * psel)

◆ EDBM_preselect_edgering_draw()

◆ EDBM_preselect_edgering_update_from_edge()

void EDBM_preselect_edgering_update_from_edge ( EditMesh_PreSelEdgeRing * psel,
BMesh * bm,
BMEdge * eed_start,
int previewlines,
blender::Span< blender::float3 > vert_positions )

◆ EDBM_preselect_elem_clear()

◆ EDBM_preselect_elem_create()

EditMesh_PreSelElem * EDBM_preselect_elem_create ( )

◆ EDBM_preselect_elem_destroy()

void EDBM_preselect_elem_destroy ( EditMesh_PreSelElem * psel)

◆ EDBM_preselect_elem_draw()

◆ EDBM_preselect_elem_update_from_single()

void EDBM_preselect_elem_update_from_single ( EditMesh_PreSelElem * psel,
BMesh * bm,
BMElem * ele,
blender::Span< blender::float3 > vert_positions )

◆ EDBM_preselect_elem_update_preview()

◆ EDBM_preselect_preview_clear()

◆ EDBM_project_snap_verts()

◆ EDBM_redo_state_free()

void void void EDBM_redo_state_free ( BMBackup * backup)

◆ EDBM_redo_state_restore()

void EDBM_redo_state_restore ( BMBackup * backup,
BMEditMesh * em,
bool recalc_looptris )

Restore a BMesh from backup.

Referenced by edbm_bevel_calc(), edbm_inset_calc(), and mesh_bisect_exec().

◆ EDBM_redo_state_restore_and_free()

void void EDBM_redo_state_restore_and_free ( BMBackup * backup,
BMEditMesh * em,
bool recalc_looptris )

Delete the backup, flushing it to an edit-mesh.

Referenced by edbm_bevel_cancel(), edbm_connect_vert_pair(), and edbm_inset_cancel().

◆ EDBM_redo_state_store()

BMBackup EDBM_redo_state_store ( BMEditMesh * em)

Save a copy of the BMesh for restoring later.

Definition at line 54 of file editmesh_utils.cc.

References BMEditMesh::bm, BM_mesh_copy(), and BMBackup::bmcopy.

Referenced by edbm_bevel_init(), edbm_connect_vert_pair(), edbm_inset_init(), and mesh_bisect_invoke().

◆ EDBM_select_flush()

◆ EDBM_select_interior_faces()

◆ EDBM_select_less()

◆ EDBM_select_mirrored()

◆ EDBM_select_more()

void EDBM_select_more ( BMEditMesh * em,
bool use_face_step )

flushes based on the current select mode. If in vertex select mode, verts select/deselect edges and faces, if in edge select mode, edges select/deselect faces and vertices, and in face select mode faces select/deselect edges and vertices.

Definition at line 376 of file editmesh_utils.cc.

References BMEditMesh::bm, BM_ALL_NOLOOP, BM_ELEM_SELECT, BMO_FLAG_DEFAULTS, BMO_op_exec(), BMO_op_finish(), BMO_op_initf(), BMO_slot_buffer_hflag_enable(), EDBM_selectmode_flush(), SCE_SELECT_FACE, BMEditMesh::selectmode, and BMOperator::slots_out.

Referenced by edbm_select_more_exec(), and uv_select_more_less().

◆ EDBM_select_pick()

◆ EDBM_select_swap()

◆ EDBM_select_toggle_all()

◆ EDBM_selectmode_convert()

void EDBM_selectmode_convert ( BMEditMesh * em,
short selectmode_old,
short selectmode_new )

◆ EDBM_selectmode_disable()

bool EDBM_selectmode_disable ( Scene * scene,
BMEditMesh * em,
short selectmode_disable,
short selectmode_fallback )

Use to disable a select-mode if its enabled, Using another mode as a fallback if the disabled mode is the only mode set.

Returns
true if the mode is changed.

Definition at line 2660 of file editmesh_select.cc.

References EDBM_selectmode_set(), NC_SCENE, ND_TOOLSETTINGS, BMEditMesh::selectmode, and WM_main_add_notifier().

Referenced by EDBM_selectmode_disable_multi_ex(), and knifeproject_exec().

◆ EDBM_selectmode_disable_multi()

◆ EDBM_selectmode_disable_multi_ex()

bool EDBM_selectmode_disable_multi_ex ( Scene * scene,
blender::Span< Base * > bases,
short selectmode_disable,
short selectmode_fallback )

◆ EDBM_selectmode_flush()

◆ EDBM_selectmode_flush_ex()

◆ EDBM_selectmode_set()

◆ EDBM_selectmode_set_multi()

◆ EDBM_selectmode_to_scene()

◆ EDBM_selectmode_toggle_multi()

◆ EDBM_unified_findnearest()

bool EDBM_unified_findnearest ( ViewContext * vc,
blender::Span< Base * > bases,
int * r_base_index,
BMVert ** r_eve,
BMEdge ** r_eed,
BMFace ** r_efa )

◆ EDBM_unified_findnearest_from_raycast()

bool EDBM_unified_findnearest_from_raycast ( ViewContext * vc,
blender::Span< Base * > bases,
bool use_boundary_vertices,
bool use_boundary_edges,
int * r_base_index_vert,
int * r_base_index_edge,
int * r_base_index_face,
BMVert ** r_eve,
BMEdge ** r_eed,
BMFace ** r_efa )

◆ EDBM_update()

void EDBM_update ( Mesh * mesh,
const EDBMUpdate_Params * params )

So many tools call these that we better make it a generic function.

Definition at line 1655 of file editmesh_utils.cc.

References BKE_editmesh_looptris_and_normals_calc(), BKE_editmesh_looptris_calc(), BLI_assert, BMEditMesh::bm, BM_elem_flag_test, BM_ELEM_SELECT, BM_lnorspace_invalidate(), BM_mesh_elem_table_check(), BM_SPACEARR_BMO_SET, DEG_id_tag_update(), EDBM_mesh_normals_update(), ID_RECALC_GEOMETRY, LISTBASE_FOREACH, NC_GEOM, ND_DATA, params, BMesh::selected, BMesh::spacearr_dirty, and WM_main_add_notifier().

Referenced by add_primitive_cube_gizmo_exec(), blender::ed::object::data_xform_tag_update(), edbm_add_edge_face_exec(), EDBM_automerge(), EDBM_automerge_and_split(), edbm_average_normals_exec(), edbm_beautify_fill_exec(), edbm_bevel_calc(), edbm_bevel_cancel(), edbm_blend_from_shape_exec(), edbm_bridge_edge_loops_for_single_editmesh(), edbm_collapse_edge_exec(), edbm_connect_vert_pair(), edbm_decimate_exec(), edbm_delete_edgeloop_exec(), edbm_delete_exec(), edbm_delete_loose_exec(), edbm_dissolve_degenerate_exec(), edbm_dissolve_edges_exec(), edbm_dissolve_faces_exec(), edbm_dissolve_limited_exec(), edbm_dissolve_verts_exec(), edbm_do_smooth_laplacian_vertex_exec(), edbm_do_smooth_vertex_exec(), edbm_dupli_extrude_cursor_invoke(), edbm_duplicate_exec(), edbm_edge_rotate_selected_exec(), edbm_edge_split_selected_edges(), edbm_edge_split_selected_verts(), edbm_extrude_context_exec(), edbm_extrude_edges_exec(), edbm_extrude_faces_exec(), edbm_extrude_region_exec(), edbm_extrude_repeat_exec(), edbm_extrude_verts_exec(), edbm_face_make_planar_exec(), edbm_face_split_by_edges_exec(), edbm_faces_shade_flat_exec(), edbm_faces_shade_smooth_exec(), edbm_fill_exec(), edbm_fill_grid_exec(), edbm_fill_holes_exec(), edbm_flip_normals_custom_loop_normals(), edbm_flip_normals_face_winding(), edbm_flip_quad_tessellation(), edbm_hide_exec(), edbm_inset_calc(), edbm_inset_cancel(), edbm_intersect_select(), edbm_mark_seam_exec(), edbm_mark_sharp_exec(), edbm_merge_exec(), edbm_mod_weighted_strength_exec(), edbm_normals_make_consistent_exec(), edbm_normals_tools_exec(), edbm_offset_edgeloop_exec(), edbm_point_normals_exec(), edbm_point_normals_modal(), edbm_poke_face_exec(), edbm_polybuild_delete_at_cursor_invoke(), edbm_polybuild_dissolve_at_cursor_invoke(), edbm_polybuild_face_at_cursor_invoke(), edbm_polybuild_split_at_cursor_invoke(), edbm_polybuild_transform_at_cursor_invoke(), edbm_quads_convert_to_tris_exec(), edbm_remove_doubles_exec(), edbm_reveal_exec(), edbm_reverse_colors_exec(), edbm_reverse_uvs_exec(), edbm_rip_edge_invoke(), edbm_rip_invoke(), edbm_rotate_colors_exec(), edbm_rotate_uvs_exec(), edbm_screw_exec(), edbm_select_nth_exec(), edbm_separate_exec(), edbm_set_normals_from_faces_exec(), edbm_shape_propagate_to_all_exec(), edbm_smooth_normals_exec(), edbm_solidify_exec(), edbm_spin_exec(), edbm_split_exec(), edbm_subdivide_edge_ring_exec(), edbm_subdivide_exec(), edbm_tris_convert_to_quads_exec(), edbm_unsubdivide_exec(), EDBM_update_extern(), edbm_vert_connect_concave_exec(), edbm_vert_connect_nonplaner_exec(), edbm_vert_connect_path_exec(), edbm_wireframe_exec(), knifetool_finish_single_post(), make_prim_finish(), mesh_bisect_exec(), blender::ed::mesh::set_attribute::mesh_set_attribute_exec(), mesh_symmetrize_exec(), mesh_symmetry_snap_exec(), mouse_mesh_shortest_path_edge(), mouse_mesh_shortest_path_face(), mouse_mesh_shortest_path_vert(), normals_split_merge(), ringsel_finish(), similar_edge_select_exec(), similar_face_select_exec(), similar_vert_select_exec(), sort_bmelem_flag(), uv_hide_exec(), and uv_reveal_exec().

◆ EDBM_update_extern()

void EDBM_update_extern ( Mesh * mesh,
bool do_tessellation,
bool is_destructive )

Bad level call from Python API.

Definition at line 1698 of file editmesh_utils.cc.

References EDBM_update(), and params.

◆ EDBM_uv_active_face_get()

BMFace * EDBM_uv_active_face_get ( BMEditMesh * em,
bool sloppy,
bool selected )

last_sel, use em->act_face otherwise get the last selected face in the edit-selections at the moment, last_sel is mainly useful for making sure the space image doesn't flicker.

Definition at line 1215 of file editmesh_utils.cc.

References BMEditMesh::bm, BM_mesh_active_face_get(), and EDBM_uv_check().

Referenced by blender::draw::mesh_render_data_create().

◆ EDBM_uv_check()

bool EDBM_uv_check ( BMEditMesh * em)

◆ EDBM_vert_color_check()

bool EDBM_vert_color_check ( BMEditMesh * em)

◆ EDBM_vert_find_nearest()

◆ EDBM_vert_find_nearest_ex()

BMVert * EDBM_vert_find_nearest_ex ( ViewContext * vc,
float * dist_px_manhattan_p,
bool use_select_bias,
bool use_cycle,
blender::Span< Base * > bases,
uint * r_base_index )

Nearest vertex under the cursor.

Parameters
dist_px_manhattan_p(in/out), minimal distance to the nearest and at the end, actual distance.
use_select_bias
  • When true, selected vertices are given a 5 pixel bias to make them further than unselected vertices.
  • When false, unselected vertices are given the bias.
use_cycleCycle over elements within FIND_NEAR_CYCLE_THRESHOLD_MIN in order of index.

◆ EDBM_verts_mirror_apply()

◆ EDBM_verts_mirror_cache_begin()

void EDBM_verts_mirror_cache_begin ( BMEditMesh * em,
int axis,
bool use_self,
bool use_select,
bool respecthide,
bool use_topology )

◆ EDBM_verts_mirror_cache_begin_ex()

void EDBM_verts_mirror_cache_begin_ex ( BMEditMesh * em,
int axis,
bool use_self,
bool use_select,
bool respecthide,
bool use_topology,
float maxdist,
int * r_index )
Parameters
emEdit-mesh used for generating mirror data.
use_selfAllow a vertex to point to itself (middle verts).
use_selectRestrict to selected verts.
respecthideSkip hidden vertices.
use_topologyUse topology mirror.
maxdistDistance for close point test.
r_indexOptional array to write into, as an alternative to a custom-data layer (length of total verts).

Definition at line 1272 of file editmesh_utils.cc.

References BLI_assert, bm, BMEditMesh::bm, BM_CD_LAYER_ID, BM_data_layer_add_named(), BM_elem_flag_test, BM_ELEM_HIDDEN, BM_elem_index_get, BM_ELEM_SELECT, BM_ITER_MESH_INDEX, BM_mesh_elem_index_ensure(), BM_mesh_elem_table_ensure(), BM_VERT, BM_vert_at_index(), BM_VERTS_OF_MESH, cache_mirr_intptr_as_bmvert(), CD_FLAG_TEMPORARY, CD_PROP_INT32, BMVert::co, copy_v3_v3(), CustomData_get_layer_index(), CustomData_get_n_offset(), CustomData_get_named_layer_index(), ED_mesh_mirrtopo_free(), ED_mesh_mirrtopo_init(), CustomDataLayer::flag, MirrTopoStore_t::index_lookup, CustomData::layers, len_squared_v3v3(), mesh_topo_store, BMEditMesh::mirror_cdlayer, square_f(), BMesh::totvert, tree, v, BMesh::vdata, and VERT_INTPTR.

Referenced by EDBM_verts_mirror_cache_begin(), mesh_symmetry_snap_exec(), and transform_convert_mesh_mirrordata_calc().

◆ EDBM_verts_mirror_cache_clear()

void EDBM_verts_mirror_cache_clear ( BMEditMesh * em,
BMVert * v )

◆ EDBM_verts_mirror_cache_end()

◆ EDBM_verts_mirror_get()

◆ EDBM_verts_mirror_get_edge()

BMEdge * EDBM_verts_mirror_get_edge ( BMEditMesh * em,
BMEdge * e )

Definition at line 1428 of file editmesh_utils.cc.

References BM_edge_exists(), e, EDBM_verts_mirror_get(), and LIKELY.

Referenced by EDBM_select_mirrored().

◆ EDBM_verts_mirror_get_face()

◆ editbmesh_get_x_mirror_vert()

BMVert * editbmesh_get_x_mirror_vert ( Object * ob,
BMEditMesh * em,
BMVert * eve,
const float co[3],
int index,
bool use_topology )

◆ em_setup_viewcontext()

◆ mesh_get_x_mirror_faces()

◆ mesh_get_x_mirror_vert()

int mesh_get_x_mirror_vert ( Object * ob,
Mesh * mesh_eval,
int index,
bool use_topology )

◆ paintface_deselect_all_visible()

◆ paintface_flush_flags()

◆ paintface_hide()

◆ paintface_minmax()

bool paintface_minmax ( Object * ob,
float r_min[3],
float r_max[3] )

◆ paintface_mouse_select()

bool paintface_mouse_select ( bContext * C,
const int mval[2],
const SelectPick_Params * params,
Object * ob )

◆ paintface_reveal()

◆ paintface_select_less()

void paintface_select_less ( Mesh * mesh,
bool face_step )

◆ paintface_select_linked()

◆ paintface_select_loop()

◆ paintface_select_more()

void paintface_select_more ( Mesh * mesh,
bool face_step )

Grow the selection of faces.

Parameters
face_stepIf true will also select faces that only touch on the corner.

Definition at line 559 of file editface.cc.

References blender::bke::SpanAttributeWriter< T >::span.

Referenced by paint_select_more_exec().

◆ paintvert_deselect_all_visible()

bool paintvert_deselect_all_visible ( Object * ob,
int action,
bool flush_flags )

◆ paintvert_flush_flags()

◆ paintvert_hide()

◆ paintvert_reveal()

void paintvert_reveal ( bContext * C,
Object * ob,
bool select )

◆ paintvert_select_less()

◆ paintvert_select_linked()

◆ paintvert_select_linked_pick()

void paintvert_select_linked_pick ( bContext * C,
Object * ob,
const int region_coordinates[2],
bool select )

◆ paintvert_select_more()

void paintvert_select_more ( Mesh * mesh,
bool face_step )

◆ paintvert_select_ungrouped()

void paintvert_select_ungrouped ( Object * ob,
bool extend,
bool flush_flags )

◆ paintvert_tag_select_update()