Blender V4.5
ED_mesh.hh
Go to the documentation of this file.
1/* SPDX-FileCopyrightText: 2008 Blender Authors
2 *
3 * SPDX-License-Identifier: GPL-2.0-or-later */
4
8
9#pragma once
10
11#include "BLI_compiler_attrs.h"
13#include "BLI_span.hh"
14
16
17struct ARegion;
18struct BMBVHTree;
19struct BMEdge;
20struct BMEditMesh;
21struct BMElem;
22struct BMFace;
23struct BMLoop;
24struct BMVert;
25struct BMesh;
27struct Base;
28struct Depsgraph;
29struct KeyBlock;
30struct Main;
31struct MDeformVert;
32struct Mesh;
33struct Object;
34struct ReportList;
35struct Scene;
37struct UndoType;
38struct UvMapVert;
39struct UvVertMap;
40struct View3D;
41struct ViewContext;
42struct bContext;
43struct wmKeyConfig;
44struct wmOperator;
45struct UvElement;
46struct UvElementMap;
47
48/* `editmesh_utils.cc` */
49
61 int axis,
62 bool use_self,
63 bool use_select,
64 bool respecthide,
65 bool use_topology,
66 float maxdist,
67 int *r_index);
69 BMEditMesh *em, int axis, bool use_self, bool use_select, bool respecthide, bool use_topology);
70void EDBM_verts_mirror_apply(BMEditMesh *em, int sel_from, int sel_to);
76
79
81void EDBM_mesh_make(Object *ob, int select_mode, bool add_key_index);
83void EDBM_mesh_make_from_mesh(Object *ob, Mesh *src_mesh, int select_mode, bool add_key_index);
93void EDBM_mesh_load_ex(Main *bmain, Object *ob, bool free_data);
94void EDBM_mesh_load(Main *bmain, Object *ob);
95
102void EDBM_select_more(BMEditMesh *em, bool use_face_step);
103void EDBM_select_less(BMEditMesh *em, bool use_face_step);
104
105void EDBM_selectmode_flush_ex(BMEditMesh *em, short selectmode);
107
110
112
116bool EDBM_mesh_hide(BMEditMesh *em, bool swap);
117bool EDBM_mesh_reveal(BMEditMesh *em, bool select);
118
124
128void EDBM_update(Mesh *mesh, const EDBMUpdate_Params *params);
132void EDBM_update_extern(Mesh *mesh, bool do_tessellation, bool is_destructive);
133
138 const Scene *scene,
139 bool uv_selected,
140 bool use_winding,
141 bool use_seams,
142 bool do_islands);
143void BM_uv_element_map_free(UvElementMap *element_map);
144
152UvElement *BM_uv_element_get(const UvElementMap *element_map, const BMLoop *l);
155
158
162bool EDBM_uv_check(BMEditMesh *em);
167BMFace *EDBM_uv_active_face_get(BMEditMesh *em, bool sloppy, bool selected);
168
170UvMapVert *BM_uv_vert_map_at_index(UvVertMap *vmap, unsigned int v);
174UvVertMap *BM_uv_vert_map_create(BMesh *bm, bool use_select);
175
176void EDBM_flag_enable_all(BMEditMesh *em, char hflag);
177void EDBM_flag_disable_all(BMEditMesh *em, char hflag);
178
180 const BMEdge *e,
181 const Depsgraph *depsgraph,
182 const ARegion *region,
183 const View3D *v3d,
184 const Object *obedit);
185
187 bContext *C, Depsgraph *depsgraph, ARegion *region, Object *obedit, BMEditMesh *em);
188
189/* `editmesh_automerge.cc` */
190
191void EDBM_automerge(Object *obedit, bool update, char hflag, float dist);
193 Object *obedit, bool split_edges, bool split_faces, bool update, char hflag, float dist);
194
195/* `editmesh_undo.cc` */
196
199
200/* `editmesh_select.cc` */
201
203 BMEditMesh *em, const Mesh *mesh, int axis, bool extend, int *r_totmirr, int *r_totfail);
204
217 float *dist_px_manhattan_p,
218 bool use_select_bias,
219 bool use_cycle,
221 uint *r_base_index);
222BMVert *EDBM_vert_find_nearest(ViewContext *vc, float *dist_px_manhattan_p);
223
225 float *dist_px_manhattan,
226 float *r_dist_center,
227 bool use_select_bias,
228 bool use_cycle,
229 BMEdge **r_eed_zbuf,
231 uint *r_base_index);
232BMEdge *EDBM_edge_find_nearest(ViewContext *vc, float *dist_px_manhattan_p);
233
242 float *dist_px_manhattan,
243 float *r_dist_center,
244 bool use_zbuf_single_px,
245 bool use_select_bias,
246 bool use_cycle,
247 BMFace **r_efa_zbuf,
249 uint *r_base_index);
250BMFace *EDBM_face_find_nearest(ViewContext *vc, float *dist_px_manhattan_p);
251
254 int *r_base_index,
255 BMVert **r_eve,
256 BMEdge **r_eed,
257 BMFace **r_efa);
258
261 bool use_boundary_vertices,
262 bool use_boundary_edges,
263 int *r_base_index_vert,
264 int *r_base_index_edge,
265 int *r_base_index_face,
266 BMVert **r_eve,
267 BMEdge **r_eed,
268 BMFace **r_efa);
269
270bool EDBM_select_pick(bContext *C, const int mval[2], const SelectPick_Params &params);
271
276void EDBM_selectmode_set(BMEditMesh *em, short selectmode);
291void EDBM_selectmode_convert(BMEditMesh *em, short selectmode_old, short selectmode_new);
292
299 const short selectmode);
304bool EDBM_selectmode_set_multi(bContext *C, short selectmode);
311 bContext *C, short selectmode_toggle, int action, bool use_extend, bool use_expand);
312
320 BMEditMesh *em,
321 short selectmode_disable,
322 short selectmode_fallback);
323
324bool EDBM_deselect_by_material(BMEditMesh *em, short index, bool select);
325
327
328void EDBM_select_swap(BMEditMesh *em); /* exported for UV */
331
336 short selectmode_disable,
337 short selectmode_fallback);
339 short selectmode_disable,
340 short selectmode_fallback);
341
342/* `editmesh_preselect_edgering.cc` */
343
348void EDBM_preselect_edgering_draw(EditMesh_PreSelEdgeRing *psel, const float matrix[4][4]);
350 BMesh *bm,
351 BMEdge *eed_start,
352 int previewlines,
353 blender::Span<blender::float3> vert_positions);
354
355/* `editmesh_preselect_elem.cc` */
356
363
368void EDBM_preselect_elem_draw(EditMesh_PreSelElem *psel, const float matrix[4][4]);
370 BMesh *bm,
371 BMElem *ele,
372 blender::Span<blender::float3> vert_positions);
373
375 EditMesh_PreSelElem *psel, ViewContext *vc, BMesh *bm, BMElem *ele, const int mval[2]);
378
379/* `mesh_ops.cc` */
380
386void ED_keymap_mesh(wmKeyConfig *keyconf);
387
388/* `editface.cc` */
389
394void paintface_flush_flags(bContext *C, Object *ob, bool flush_selection, bool flush_hidden);
399 const int mval[2],
401 Object *ob);
402bool paintface_deselect_all_visible(bContext *C, Object *ob, int action, bool flush_flags);
403void paintface_select_linked(bContext *C, Object *ob, const int mval[2], bool select);
404
405void paintface_select_loop(bContext *C, Object *ob, const int mval[2], bool select);
410void paintface_select_more(Mesh *mesh, bool face_step);
411void paintface_select_less(Mesh *mesh, bool face_step);
412bool paintface_minmax(Object *ob, float r_min[3], float r_max[3]);
413
414void paintface_hide(bContext *C, Object *ob, bool unselected);
415void paintface_reveal(bContext *C, Object *ob, bool select);
416
421bool paintvert_deselect_all_visible(Object *ob, int action, bool flush_flags);
422void paintvert_select_ungrouped(Object *ob, bool extend, bool flush_flags);
430/* Select vertices that are connected to already selected vertices. */
432/* Select vertices that are linked to the vertex under the given region space coordinates. */
434 Object *ob,
435 const int region_coordinates[2],
436 bool select);
437void paintvert_select_more(Mesh *mesh, bool face_step);
438void paintvert_select_less(Mesh *mesh, bool face_step);
439void paintvert_hide(bContext *C, Object *ob, bool unselected);
440void paintvert_reveal(bContext *C, Object *ob, bool select);
441
442/* mirrtopo */
449
452 Mesh *mesh,
454 bool skip_em_vert_array_init);
456
457/* `mesh_data.cc` */
458
463
468
469void ED_mesh_geometry_clear(Mesh *mesh);
470
471bool *ED_mesh_uv_map_vert_select_layer_ensure(Mesh *mesh, int uv_index);
472bool *ED_mesh_uv_map_edge_select_layer_ensure(Mesh *mesh, int uv_index);
473bool *ED_mesh_uv_map_pin_layer_ensure(Mesh *mesh, int uv_index);
474const bool *ED_mesh_uv_map_vert_select_layer_get(const Mesh *mesh, int uv_index);
475const bool *ED_mesh_uv_map_edge_select_layer_get(const Mesh *mesh, int uv_index);
476const bool *ED_mesh_uv_map_pin_layer_get(const Mesh *mesh, int uv_index);
477
478void ED_mesh_uv_ensure(Mesh *mesh, const char *name);
480 Mesh *mesh, const char *name, bool active_set, bool do_init, ReportList *reports);
481
486void ED_mesh_uv_loop_reset_ex(Mesh *mesh, int layernum);
487bool ED_mesh_color_ensure(Mesh *mesh, const char *name);
489 Mesh *mesh, const char *name, bool active_set, bool do_init, ReportList *reports);
490
491void ED_mesh_report_mirror(wmOperator *op, int totmirr, int totfail);
492void ED_mesh_report_mirror_ex(wmOperator *op, int totmirr, int totfail, char selectmode);
493
495
500
505void ED_mesh_split_faces(Mesh *mesh);
506
507/* mesh backup */
508struct BMBackup {
510};
511
519void EDBM_redo_state_restore(BMBackup *backup, BMEditMesh *em, bool recalc_looptris)
520 ATTR_NONNULL(1, 2);
524void EDBM_redo_state_restore_and_free(BMBackup *backup, BMEditMesh *em, bool recalc_looptris)
525 ATTR_NONNULL(1, 2);
527
528/* `meshtools.cc` */
529
532 bool ensure_keys_exist,
534
535/* Mirror lookup API. */
536
537/* Spatial Mirror */
541 BMEditMesh *em,
542 Mesh *mesh_eval,
543 const float co[3]);
544
545/* Topology Mirror */
546
552void ED_mesh_mirror_topo_table_begin(Object *ob, Mesh *mesh_eval);
554
559int mesh_get_x_mirror_vert(Object *ob, Mesh *mesh_eval, int index, bool use_topology);
561 Object *ob, BMEditMesh *em, BMVert *eve, const float co[3], int index, bool use_topology);
565int *mesh_get_x_mirror_faces(Object *ob, BMEditMesh *em, Mesh *mesh_eval);
566
572int ED_mesh_mirror_get_vert(Object *ob, int index);
573
575 bContext *C, Object *ob, const int mval[2], uint dist_px, bool use_zbuf, uint *r_index);
582bool ED_mesh_pick_face(bContext *C, Object *ob, const int mval[2], uint dist_px, uint *r_index);
588 bContext *C, Object *ob, const int mval[2], uint dist_px, uint *r_index);
593bool ED_mesh_pick_edge(bContext *C, Object *ob, const int mval[2], uint dist_px, uint *r_index);
594
598
599void EDBM_mesh_stats_multi(blender::Span<Object *> objects, int totelem[3], int totelem_sel[3]);
601
602#define ED_MESH_PICK_DEFAULT_VERT_DIST 25
603#define ED_MESH_PICK_DEFAULT_FACE_DIST 1
604
605#define USE_LOOPSLIDE_HACK
#define ATTR_NONNULL(...)
unsigned int uint
bool EDBM_vert_color_check(BMEditMesh *em)
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)
UvVertMap * BM_uv_vert_map_create(BMesh *bm, bool use_select)
void ED_mesh_mirror_topo_table_begin(Object *ob, Mesh *mesh_eval)
Definition meshtools.cc:858
void ED_mesh_uv_ensure(Mesh *mesh, const char *name)
Definition mesh_data.cc:364
void paintvert_reveal(bContext *C, Object *ob, bool select)
Definition editface.cc:1192
void ED_mesh_edges_remove(Mesh *mesh, ReportList *reports, int count)
MDeformVert * ED_mesh_active_dvert_get_em(Object *ob, BMVert **r_eve)
void EDBM_flag_disable_all(BMEditMesh *em, char hflag)
void EDBM_automerge_and_split(Object *obedit, bool split_edges, bool split_faces, bool update, char hflag, float dist)
void EDBM_automerge(Object *obedit, bool update, char hflag, float dist)
void void EDBM_redo_state_restore_and_free(BMBackup *backup, BMEditMesh *em, bool recalc_looptris) ATTR_NONNULL(1
void ED_mesh_report_mirror_ex(wmOperator *op, int totmirr, int totfail, char selectmode)
void EDBM_update(Mesh *mesh, const EDBMUpdate_Params *params)
void paintvert_select_more(Mesh *mesh, bool face_step)
Definition editface.cc:933
BMEdge * EDBM_edge_find_nearest(ViewContext *vc, float *dist_px_manhattan_p)
UvElement * BM_uv_element_get(const UvElementMap *element_map, const BMLoop *l)
void EDBM_preselect_edgering_destroy(EditMesh_PreSelEdgeRing *psel)
bool ED_mesh_color_ensure(Mesh *mesh, const char *name)
Definition mesh_data.cc:424
BMVert * EDBM_vert_find_nearest(ViewContext *vc, float *dist_px_manhattan_p)
bool * ED_mesh_uv_map_edge_select_layer_ensure(Mesh *mesh, int uv_index)
Definition mesh_data.cc:349
int ED_mesh_mirror_spatial_table_lookup(Object *ob, BMEditMesh *em, Mesh *mesh_eval, const float co[3])
bool EDBM_selectmode_disable(Scene *scene, BMEditMesh *em, short selectmode_disable, short selectmode_fallback)
void EDBM_preselect_elem_clear(EditMesh_PreSelElem *psel)
void EDBM_select_toggle_all(BMEditMesh *em)
bool EDBM_selectmode_set_multi_ex(Scene *scene, blender::Span< Object * > objects, const short selectmode)
eEditMesh_PreSelPreviewAction EDBM_preselect_action_get(EditMesh_PreSelElem *psel)
bool ED_mesh_pick_edge(bContext *C, Object *ob, const int mval[2], uint dist_px, uint *r_index)
eEditMesh_PreSelPreviewAction
Definition ED_mesh.hh:358
@ PRESELECT_ACTION_CREATE
Definition ED_mesh.hh:360
@ PRESELECT_ACTION_DELETE
Definition ED_mesh.hh:361
@ PRESELECT_ACTION_TRANSFORM
Definition ED_mesh.hh:359
void paintvert_select_less(Mesh *mesh, bool face_step)
Definition editface.cc:991
BMVert * EDBM_verts_mirror_get(BMEditMesh *em, BMVert *v)
void ED_mesh_edges_add(Mesh *mesh, ReportList *reports, int count)
Definition mesh_data.cc:953
void EDBM_select_more(BMEditMesh *em, bool use_face_step)
wmOperatorStatus ED_mesh_join_objects_exec(bContext *C, wmOperator *op)
Definition meshtools.cc:339
bool paintface_minmax(Object *ob, float r_min[3], float r_max[3])
Definition editface.cc:682
void EDBM_verts_mirror_cache_begin(BMEditMesh *em, int axis, bool use_self, bool use_select, bool respecthide, bool use_topology)
void paintvert_flush_flags(Object *ob)
Definition editface.cc:787
void void void EDBM_redo_state_free(BMBackup *backup) ATTR_NONNULL(1)
void ED_mesh_uv_loop_reset_ex(Mesh *mesh, int layernum)
Definition mesh_data.cc:176
int BM_uv_element_get_unique_index(UvElementMap *element_map, UvElement *child)
void paintface_select_less(Mesh *mesh, bool face_step)
Definition editface.cc:578
void ED_mesh_undosys_type(UndoType *ut)
void ED_operatortypes_mesh()
Definition mesh_ops.cc:21
void EDBM_mesh_normals_update(BMEditMesh *em)
int mesh_get_x_mirror_vert(Object *ob, Mesh *mesh_eval, int index, bool use_topology)
Definition meshtools.cc:911
bool EDBM_mesh_reveal(BMEditMesh *em, bool select)
void ED_mesh_loops_add(Mesh *mesh, ReportList *reports, int count)
Definition mesh_data.cc:962
int ED_mesh_uv_add(Mesh *mesh, const char *name, bool active_set, bool do_init, ReportList *reports)
Definition mesh_data.cc:221
void EDBM_deselect_flush(BMEditMesh *em)
int ED_mesh_mirror_get_vert(Object *ob, int index)
Definition meshtools.cc:981
void EDBM_select_swap(BMEditMesh *em)
void EDBM_project_snap_verts(bContext *C, Depsgraph *depsgraph, ARegion *region, Object *obedit, BMEditMesh *em)
void EDBM_preselect_edgering_clear(EditMesh_PreSelEdgeRing *psel)
void EDBM_mesh_load_ex(Main *bmain, Object *ob, bool free_data)
BMFace * EDBM_face_find_nearest(ViewContext *vc, float *dist_px_manhattan_p)
void ED_mesh_report_mirror(wmOperator *op, int totmirr, int totfail)
void EDBM_preselect_elem_draw(EditMesh_PreSelElem *psel, const float matrix[4][4])
bool EDBM_uv_check(BMEditMesh *em)
void paintvert_tag_select_update(bContext *C, Object *ob)
Definition editface.cc:1046
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)
void paintvert_hide(bContext *C, Object *ob, bool unselected)
Definition editface.cc:1158
void ED_mesh_verts_add(Mesh *mesh, ReportList *reports, int count)
Definition mesh_data.cc:944
bool EDBM_unified_findnearest(ViewContext *vc, blender::Span< Base * > bases, int *r_base_index, BMVert **r_eve, BMEdge **r_eed, BMFace **r_efa)
BMFace * EDBM_uv_active_face_get(BMEditMesh *em, bool sloppy, bool selected)
void ED_keymap_mesh(wmKeyConfig *keyconf)
Definition mesh_ops.cc:361
bool ED_mesh_pick_face_vert(bContext *C, Object *ob, const int mval[2], uint dist_px, uint *r_index)
void BM_uv_element_map_free(UvElementMap *element_map)
void ED_mesh_mirror_spatial_table_begin(Object *ob, BMEditMesh *em, Mesh *mesh_eval)
int ED_mesh_color_add(Mesh *mesh, const char *name, bool active_set, bool do_init, ReportList *reports)
Definition mesh_data.cc:382
bool EDBM_mesh_hide(BMEditMesh *em, bool swap)
void EDBM_preselect_elem_destroy(EditMesh_PreSelElem *psel)
void EDBM_selectmode_set(BMEditMesh *em, short selectmode)
ViewContext em_setup_viewcontext(bContext *C)
void EDBM_mesh_stats_multi(blender::Span< Object * > objects, int totelem[3], int totelem_sel[3])
void EDBM_mesh_make(Object *ob, int select_mode, bool add_key_index)
void ED_mesh_mirror_topo_table_end(Object *ob)
Definition meshtools.cc:867
void ED_mesh_geometry_clear(Mesh *mesh)
void EDBM_mesh_free_data(BMEditMesh *em)
wmOperatorStatus ED_mesh_shapes_join_objects_exec(bContext *C, bool ensure_keys_exist, ReportList *reports)
Definition meshtools.cc:720
EditMesh_PreSelElem * EDBM_preselect_elem_create()
void paintvert_select_ungrouped(Object *ob, bool extend, bool flush_flags)
Definition editface.cc:1120
UvElementMap * BM_uv_element_map_create(BMesh *bm, const Scene *scene, bool uv_selected, bool use_winding, bool use_seams, bool do_islands)
void EDBM_verts_mirror_apply(BMEditMesh *em, int sel_from, int sel_to)
const bool * ED_mesh_uv_map_vert_select_layer_get(const Mesh *mesh, int uv_index)
Definition mesh_data.cc:302
void EDBM_selectmode_flush(BMEditMesh *em)
bool EDBM_mesh_deselect_all_multi_ex(blender::Span< Base * > bases)
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)
void EDBM_preselect_edgering_draw(EditMesh_PreSelEdgeRing *psel, const float matrix[4][4])
void EDBM_mesh_load(Main *bmain, Object *ob)
void ED_mesh_faces_remove(Mesh *mesh, ReportList *reports, int count)
bool EDBM_deselect_by_material(BMEditMesh *em, short index, bool select)
BMBackup EDBM_redo_state_store(BMEditMesh *em)
void ED_mesh_faces_add(Mesh *mesh, ReportList *reports, int count)
Definition mesh_data.cc:971
void paintface_reveal(bContext *C, Object *ob, bool select)
Definition editface.cc:184
void paintface_flush_flags(bContext *C, Object *ob, bool flush_selection, bool flush_hidden)
Definition editface.cc:40
UvMapVert * BM_uv_vert_map_at_index(UvVertMap *vmap, unsigned int v)
bool EDBM_selectmode_set_multi(bContext *C, short selectmode)
void ED_mesh_mirrtopo_free(MirrTopoStore_t *mesh_topo_store)
void ED_mesh_loops_remove(Mesh *mesh, ReportList *reports, int count)
bool paintface_mouse_select(bContext *C, const int mval[2], const SelectPick_Params &params, Object *ob)
Definition editface.cc:721
void EDBM_preselect_elem_update_preview(EditMesh_PreSelElem *psel, ViewContext *vc, BMesh *bm, BMElem *ele, const int mval[2])
void EDBM_selectmode_flush_ex(BMEditMesh *em, short selectmode)
bool * ED_mesh_uv_map_vert_select_layer_ensure(Mesh *mesh, int uv_index)
Definition mesh_data.cc:342
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)
bool paintvert_deselect_all_visible(Object *ob, int action, bool flush_flags)
Definition editface.cc:1052
void paintvert_select_linked(bContext *C, Object *ob)
Definition editface.cc:910
int * mesh_get_x_mirror_faces(Object *ob, BMEditMesh *em, Mesh *mesh_eval)
void ED_mesh_uv_loop_reset(bContext *C, Mesh *mesh)
Definition mesh_data.cc:211
const bool * ED_mesh_uv_map_pin_layer_get(const Mesh *mesh, int uv_index)
Definition mesh_data.cc:322
void EDBM_verts_mirror_cache_end(BMEditMesh *em)
void EDBM_verts_mirror_cache_clear(BMEditMesh *em, BMVert *v)
bool EDBM_selectmode_disable_multi(bContext *C, short selectmode_disable, short selectmode_fallback)
BMEdge * EDBM_verts_mirror_get_edge(BMEditMesh *em, BMEdge *e)
UvElement ** BM_uv_element_map_ensure_head_table(UvElementMap *element_map)
bool ED_mesh_pick_face(bContext *C, Object *ob, const int mval[2], uint dist_px, uint *r_index)
void paintvert_select_linked_pick(bContext *C, Object *ob, const int region_coordinates[2], bool select)
Definition editface.cc:896
void paintface_select_linked(bContext *C, Object *ob, const int mval[2], bool select)
Definition editface.cc:310
BMFace * EDBM_verts_mirror_get_face(BMEditMesh *em, BMFace *f)
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)
EditMesh_PreSelEdgeRing * EDBM_preselect_edgering_create()
void EDBM_flag_enable_all(BMEditMesh *em, char hflag)
void paintface_select_loop(bContext *C, Object *ob, const int mval[2], bool select)
Definition editface.cc:418
UvElement * BM_uv_element_get_head(UvElementMap *element_map, UvElement *child)
void EDBM_select_mirrored(BMEditMesh *em, const Mesh *mesh, int axis, bool extend, int *r_totmirr, int *r_totfail)
bool EDBM_selectmode_toggle_multi(bContext *C, short selectmode_toggle, int action, bool use_extend, bool use_expand)
void ED_mesh_split_faces(Mesh *mesh)
bool EDBM_mesh_deselect_all_multi(bContext *C)
int * BM_uv_element_map_ensure_unique_index(UvElementMap *element_map)
void EDBM_preselect_edgering_update_from_edge(EditMesh_PreSelEdgeRing *psel, BMesh *bm, BMEdge *eed_start, int previewlines, blender::Span< blender::float3 > vert_positions)
void EDBM_select_less(BMEditMesh *em, bool use_face_step)
void ED_mesh_mirror_spatial_table_end(Object *ob)
bool ED_mesh_mirrtopo_recalc_check(BMEditMesh *em, Mesh *mesh, MirrTopoStore_t *mesh_topo_store)
bool EDBM_selectmode_disable_multi_ex(Scene *scene, blender::Span< Base * > bases, short selectmode_disable, short selectmode_fallback)
void paintface_hide(bContext *C, Object *ob, bool unselected)
Definition editface.cc:150
void EDBM_select_flush(BMEditMesh *em)
void EDBM_update_extern(Mesh *mesh, bool do_tessellation, bool is_destructive)
void EDBM_redo_state_restore(BMBackup *backup, BMEditMesh *em, bool recalc_looptris) ATTR_NONNULL(1
bool paintface_deselect_all_visible(bContext *C, Object *ob, int action, bool flush_flags)
Definition editface.cc:623
void ED_mesh_mirrtopo_init(BMEditMesh *em, Mesh *mesh, MirrTopoStore_t *mesh_topo_store, bool skip_em_vert_array_init)
bool ED_mesh_pick_vert(bContext *C, Object *ob, const int mval[2], uint dist_px, bool use_zbuf, uint *r_index)
void EDBM_selectmode_to_scene(bContext *C)
void ED_operatormacros_mesh()
Definition mesh_ops.cc:210
MDeformVert * ED_mesh_active_dvert_get_only(Object *ob)
KeyBlock * ED_mesh_get_edit_shape_key(const Mesh *me)
void EDBM_selectmode_convert(BMEditMesh *em, short selectmode_old, short selectmode_new)
void EDBM_mesh_normals_update_ex(BMEditMesh *em, const BMeshNormalsUpdate_Params *params)
void EDBM_preselect_action_set(EditMesh_PreSelElem *psel, eEditMesh_PreSelPreviewAction action)
void EDBM_preselect_elem_update_from_single(EditMesh_PreSelElem *psel, BMesh *bm, BMElem *ele, blender::Span< blender::float3 > vert_positions)
bool * ED_mesh_uv_map_pin_layer_ensure(Mesh *mesh, int uv_index)
Definition mesh_data.cc:356
bool EDBM_select_interior_faces(BMEditMesh *em)
void BM_uv_vert_map_free(UvVertMap *vmap)
void EDBM_mesh_make_from_mesh(Object *ob, Mesh *src_mesh, int select_mode, bool add_key_index)
void ED_mesh_verts_remove(Mesh *mesh, ReportList *reports, int count)
const bool * ED_mesh_uv_map_edge_select_layer_get(const Mesh *mesh, int uv_index)
Definition mesh_data.cc:310
void EDBM_mesh_elem_index_ensure_multi(blender::Span< Object * > objects, char htype)
void paintface_select_more(Mesh *mesh, bool face_step)
Definition editface.cc:524
MDeformVert * ED_mesh_active_dvert_get_ob(Object *ob, int *r_index)
bool BMBVH_EdgeVisible(const BMBVHTree *tree, const BMEdge *e, const Depsgraph *depsgraph, const ARegion *region, const View3D *v3d, const Object *obedit)
BMVert * editbmesh_get_x_mirror_vert(Object *ob, BMEditMesh *em, BMVert *eve, const float co[3], int index, bool use_topology)
Definition meshtools.cc:972
void EDBM_preselect_preview_clear(EditMesh_PreSelElem *psel)
bool EDBM_select_pick(bContext *C, const int mval[2], const SelectPick_Params &params)
Mesh * ED_mesh_context(bContext *C)
static void free_data(ModifierData *md)
Definition MOD_bevel.cc:271
#define C
Definition RandGen.cpp:29
ReportList * reports
Definition WM_types.hh:1025
BMesh * bm
ATTR_WARN_UNUSED_RESULT const BMLoop * l
ATTR_WARN_UNUSED_RESULT const BMVert const BMEdge * e
ATTR_WARN_UNUSED_RESULT const BMVert * v
BPy_StructRNA * depsgraph
KDTree_3d * tree
#define select(A, B, C)
uiWidgetBaseParameters params[MAX_WIDGET_BASE_BATCH]
int count
static MirrTopoStore_t mesh_topo_store
Definition meshtools.cc:833
static BMFace * face_step(BMEdge *edge, BMFace *f)
static void update(bNodeTree *ntree)
#define swap(a, b)
Definition sort.cc:59
BMesh * bmcopy
Definition ED_mesh.hh:509
intptr_t * index_lookup
Definition ED_mesh.hh:444
bool prev_is_editmode
Definition ED_mesh.hh:447