|
Blender V4.3
|
#include "MEM_guardedalloc.h"#include "DNA_key_types.h"#include "DNA_mesh_types.h"#include "DNA_object_types.h"#include "BLI_array.hh"#include "BLI_kdtree.h"#include "BLI_listbase.h"#include "BLI_math_matrix.h"#include "BLI_math_vector.h"#include "BKE_context.hh"#include "BKE_customdata.hh"#include "BKE_editmesh.hh"#include "BKE_editmesh_bvh.hh"#include "BKE_layer.hh"#include "BKE_mesh.hh"#include "BKE_mesh_mapping.hh"#include "BKE_report.hh"#include "DEG_depsgraph.hh"#include "WM_api.hh"#include "WM_types.hh"#include "ED_mesh.hh"#include "ED_screen.hh"#include "ED_transform_snap_object_context.hh"#include "ED_uvedit.hh"#include "ED_view3d.hh"#include "mesh_intern.hh"Go to the source code of this file.
Macros | |
| #define | VERT_INTPTR(_v, _i) (r_index ? &r_index[_i] : static_cast<int *>(BM_ELEM_CD_GET_VOID_P(_v, cd_vmirr_offset))) |
Functions | |
Redo API | |
| BMBackup | EDBM_redo_state_store (BMEditMesh *em) |
| void | EDBM_redo_state_restore (BMBackup *backup, BMEditMesh *em, bool recalc_looptris) |
| void | EDBM_redo_state_restore_and_free (BMBackup *backup, BMEditMesh *em, bool recalc_looptris) |
| void | EDBM_redo_state_free (BMBackup *backup) |
BMesh Operator (BMO) API Wrapper | |
| bool | EDBM_op_init (BMEditMesh *em, BMOperator *bmop, wmOperator *op, const char *fmt,...) |
| bool | EDBM_op_finish (BMEditMesh *em, BMOperator *bmop, wmOperator *op, const bool do_report) |
| bool | EDBM_op_callf (BMEditMesh *em, wmOperator *op, const char *fmt,...) |
| bool | EDBM_op_call_and_selectf (BMEditMesh *em, wmOperator *op, const char *select_slot_out, const bool select_extend, const char *fmt,...) |
| bool | EDBM_op_call_silentf (BMEditMesh *em, const char *fmt,...) |
Edit BMesh API | |
Make/Clear/Free functions. | |
| void | EDBM_mesh_make (Object *ob, const int select_mode, const bool add_key_index) |
| void | EDBM_mesh_make_from_mesh (Object *ob, Mesh *src_mesh, const int select_mode, const bool add_key_index) |
| void | EDBM_mesh_load_ex (Main *bmain, Object *ob, bool free_data) |
| void | EDBM_mesh_load (Main *bmain, Object *ob) |
| void | EDBM_mesh_free_data (BMEditMesh *em) |
Selection Utilities | |
| void | EDBM_selectmode_to_scene (bContext *C) |
| void | EDBM_selectmode_flush_ex (BMEditMesh *em, const short selectmode) |
| void | EDBM_selectmode_flush (BMEditMesh *em) |
| void | EDBM_deselect_flush (BMEditMesh *em) |
| void | EDBM_select_flush (BMEditMesh *em) |
| void | EDBM_select_more (BMEditMesh *em, const bool use_face_step) |
| void | EDBM_select_less (BMEditMesh *em, const bool use_face_step) |
| void | EDBM_flag_disable_all (BMEditMesh *em, const char hflag) |
| void | EDBM_flag_enable_all (BMEditMesh *em, const char hflag) |
Data Layer Checks | |
| BMFace * | EDBM_uv_active_face_get (BMEditMesh *em, const bool sloppy, const bool selected) |
| bool | EDBM_uv_check (BMEditMesh *em) |
| bool | EDBM_vert_color_check (BMEditMesh *em) |
Hide/Reveal API | |
| bool | EDBM_mesh_hide (BMEditMesh *em, bool swap) |
| bool | EDBM_mesh_reveal (BMEditMesh *em, bool select) |
Update API | |
| void | EDBM_mesh_normals_update_ex (BMEditMesh *em, const BMeshNormalsUpdate_Params *params) |
| void | EDBM_mesh_normals_update (BMEditMesh *em) |
| void | EDBM_stats_update (BMEditMesh *em) |
| void | EDBM_update (Mesh *mesh, const EDBMUpdate_Params *params) |
| void | EDBM_update_extern (Mesh *mesh, const bool do_tessellation, const bool is_destructive) |
Operator Helpers | |
| bool | EDBM_view3d_poll (bContext *C) |
BMesh Element API | |
| BMElem * | EDBM_elem_from_selectmode (BMEditMesh *em, BMVert *eve, BMEdge *eed, BMFace *efa) |
| int | EDBM_elem_to_index_any (BMEditMesh *em, BMElem *ele) |
| BMElem * | EDBM_elem_from_index_any (BMEditMesh *em, uint index) |
| int | EDBM_elem_to_index_any_multi (const Scene *scene, ViewLayer *view_layer, BMEditMesh *em, BMElem *ele, int *r_object_index) |
| BMElem * | EDBM_elem_from_index_any_multi (const Scene *scene, ViewLayer *view_layer, uint object_index, uint elem_index, Object **r_obedit) |
BMesh BVH API | |
| static BMFace * | edge_ray_cast (const BMBVHTree *tree, const float co[3], const float dir[3], float *r_hitout, const BMEdge *e) |
| static void | scale_point (float c1[3], const float p[3], const float s) |
| bool | BMBVH_EdgeVisible (const BMBVHTree *tree, const BMEdge *e, const Depsgraph *depsgraph, const ARegion *region, const View3D *v3d, const Object *obedit) |
BMesh Vertex Projection API | |
| void | EDBM_project_snap_verts (bContext *C, Depsgraph *depsgraph, ARegion *region, Object *obedit, BMEditMesh *em) |
UV Vertex Map API | |
| #define | INVALID_ISLAND uint(-1) |
| UvVertMap * | BM_uv_vert_map_create (BMesh *bm, const bool use_select) |
| UvMapVert * | BM_uv_vert_map_at_index (UvVertMap *vmap, uint v) |
| UvElement ** | BM_uv_element_map_ensure_head_table (UvElementMap *element_map) |
| int * | BM_uv_element_map_ensure_unique_index (UvElementMap *element_map) |
| int | BM_uv_element_get_unique_index (UvElementMap *element_map, UvElement *child) |
| static void | bm_uv_assign_island (UvElementMap *element_map, UvElement *element, int nisland, uint *map, UvElement *islandbuf, int islandbufsize) |
| static int | bm_uv_edge_select_build_islands (UvElementMap *element_map, const Scene *scene, UvElement *islandbuf, uint *map, bool uv_selected, const BMUVOffsets offsets) |
| static void | bm_uv_build_islands (UvElementMap *element_map, BMesh *bm, const Scene *scene, bool uv_selected) |
| static bool | loop_uv_match (BMLoop *loop, const float luv_a[2], const float luv_b[2], int cd_loop_uv_offset) |
| static bool | seam_connected_recursive (BMEdge *edge, const float luv_anchor[2], const float luv_fan[2], const BMLoop *needle, GSet *visited, const int cd_loop_uv_offset) |
| static bool | seam_connected (BMLoop *loop_a, BMLoop *loop_b, GSet *visited, int cd_loop_uv_offset) |
| UvElementMap * | BM_uv_element_map_create (BMesh *bm, const Scene *scene, const bool uv_selected, const bool use_winding, const bool use_seams, const bool do_islands) |
| void | BM_uv_vert_map_free (UvVertMap *vmap) |
| void | BM_uv_element_map_free (UvElementMap *element_map) |
| UvElement * | BM_uv_element_get (const UvElementMap *element_map, const BMLoop *l) |
| UvElement * | BM_uv_element_get_head (UvElementMap *element_map, UvElement *child) |
Mirror Cache API | |
| #define | BM_SEARCH_MAXDIST_MIRR 0.00002f |
| #define | BM_CD_LAYER_ID "__mirror_index" |
| static BMVert * | cache_mirr_intptr_as_bmvert (const intptr_t *index_lookup, int index) |
| void | EDBM_verts_mirror_cache_begin_ex (BMEditMesh *em, const int axis, const bool use_self, const bool use_select, const bool respecthide, const bool use_topology, float maxdist, int *r_index) |
| void | EDBM_verts_mirror_cache_begin (BMEditMesh *em, const int axis, const bool use_self, const bool use_select, const bool respecthide, const bool use_topology) |
| BMVert * | EDBM_verts_mirror_get (BMEditMesh *em, BMVert *v) |
| BMEdge * | EDBM_verts_mirror_get_edge (BMEditMesh *em, BMEdge *e) |
| BMFace * | EDBM_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_verts_mirror_apply (BMEditMesh *em, const int sel_from, const int sel_to) |
| #define BM_CD_LAYER_ID "__mirror_index" |
Definition at line 1270 of file editmesh_utils.cc.
Referenced by EDBM_verts_mirror_cache_begin_ex().
| #define BM_SEARCH_MAXDIST_MIRR 0.00002f |
Mirror editing API, usage:
Definition at line 1269 of file editmesh_utils.cc.
Referenced by EDBM_verts_mirror_cache_begin().
Definition at line 616 of file editmesh_utils.cc.
Referenced by bm_uv_build_islands(), bm_uv_edge_select_build_islands(), and BM_uv_element_map_create().
| #define VERT_INTPTR | ( | _v, | |
| _i ) (r_index ? &r_index[_i] : static_cast<int *>(BM_ELEM_CD_GET_VOID_P(_v, cd_vmirr_offset))) |
Referenced by EDBM_verts_mirror_cache_begin_ex().
|
static |
Definition at line 618 of file editmesh_utils.cc.
References UvElement::flag, UvElement::island, UvElement::l, UvElement::loop_of_face_index, UvElement::separate, and UvElementMap::storage.
Referenced by bm_uv_build_islands(), and bm_uv_edge_select_build_islands().
|
static |
Definition at line 730 of file editmesh_utils.cc.
References BLI_assert, bm, BM_elem_index_get, BM_ITER_ELEM, BM_LOOPS_OF_FACE, bm_uv_assign_island(), bm_uv_edge_select_build_islands(), BM_uv_map_get_offsets(), copy_vn_i(), element, BMLoop::f, INVALID_ISLAND, UvElement::island, UvElementMap::island_indices, UvElementMap::island_total_unique_uvs, UvElementMap::island_total_uvs, l, UvElement::l, MEM_callocN, MEM_mallocN, MEM_SAFE_FREE, next, UvElement::next, SCE_SELECT_EDGE, UvElementMap::storage, UvElementMap::total_islands, UvElementMap::total_uvs, BMesh::totface, BMesh::totvert, UV_SELECT_EDGE, UV_SYNC_SELECTION, uvedit_uv_select_test(), BMLoop::v, and UvElementMap::vertex.
Referenced by BM_uv_element_map_create().
|
static |
Definition at line 636 of file editmesh_utils.cc.
References BLI_assert, bm_uv_assign_island(), BM_uv_element_get(), BM_uv_element_map_ensure_head_table(), element, UvElementMap::head_table, INVALID_ISLAND, MEM_mallocN, MEM_SAFE_FREE, next, UvElement::next, UvElement::separate, UvElementMap::storage, UvElementMap::total_uvs, and uvedit_edge_select_test().
Referenced by bm_uv_build_islands().
| 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.
| element_map | The UvElementMap to look in. |
| l | The loop to search for. |
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().
| UvElement * BM_uv_element_get_head | ( | UvElementMap * | element_map, |
| UvElement * | child ) |
Definition at line 1200 of file editmesh_utils.cc.
References BM_elem_index_get, UvElement::l, BMLoop::v, and UvElementMap::vertex.
Referenced by determine_uv_stitchability(), stitch_island_calculate_vert_rotation(), stitch_select_uv(), stitch_uv_edge_generate_linked_edges(), and stitch_validate_uv_stitchability().
| int BM_uv_element_get_unique_index | ( | UvElementMap * | element_map, |
| UvElement * | child ) |
Definition at line 607 of file editmesh_utils.cc.
References BLI_assert, BM_uv_element_map_ensure_unique_index(), and UvElementMap::storage.
Referenced by iso_index_for_loop().
| UvElementMap * BM_uv_element_map_create | ( | BMesh * | bm, |
| const Scene * | scene, | ||
| bool | uv_selected, | ||
| bool | use_winding, | ||
| bool | use_seams, | ||
| bool | do_islands ) |
A specialized vert map used by stitch operator.
Definition at line 968 of file editmesh_utils.cc.
References BLI_gset_free(), BLI_gset_ptr_new(), bm, BM_ELEM_CD_GET_FLOAT_P, BM_ELEM_CD_GET_VOID_P, BM_elem_flag_test, BM_ELEM_HIDDEN, BM_elem_index_get, BM_ELEM_SELECT, BM_FACE, BM_face_calc_area_uv_signed(), BM_FACES_OF_MESH, BM_ITER_ELEM, BM_ITER_ELEM_INDEX, BM_ITER_MESH, BM_ITER_MESH_INDEX, BM_LOOPS_OF_FACE, BM_mesh_elem_index_ensure(), bm_uv_build_islands(), BM_uv_map_get_offsets(), BM_VERT, BM_VERTS_OF_MESH, compare_v2v2(), BMLoop::f, INVALID_ISLAND, UvElement::island, l, UvElement::l, BMFace::len, UvElement::loop_of_face_index, MEM_callocN, MEM_SAFE_FREE, next, UvElement::next, seam_connected(), UvElement::separate, STD_UV_CONNECT_LIMIT, UvElementMap::storage, UvElementMap::total_unique_uvs, UvElementMap::total_uvs, BMesh::totface, BMesh::totvert, BMUVOffsets::uv, UV_SYNC_SELECTION, uvedit_uv_select_test(), BMLoop::v, v, and UvElementMap::vertex.
Referenced by createTransUVs(), stitch_init(), uv_copy_exec(), uv_isolate_selected_islands(), uv_paste_exec(), uv_sculpt_stroke_init(), and uvedit_uv_straighten().
| UvElement ** BM_uv_element_map_ensure_head_table | ( | UvElementMap * | element_map | ) |
Definition at line 552 of file editmesh_utils.cc.
References UvElementMap::head_table, MEM_mallocN, UvElement::next, UvElement::separate, UvElementMap::storage, and UvElementMap::total_uvs.
Referenced by bm_uv_edge_select_build_islands(), and relaxation_iteration_uv().
| int * BM_uv_element_map_ensure_unique_index | ( | UvElementMap * | element_map | ) |
Definition at line 578 of file editmesh_utils.cc.
References BLI_assert, MEM_callocN, UvElementMap::storage, UvElementMap::total_unique_uvs, UvElementMap::total_uvs, and UvElementMap::unique_index_table.
Referenced by BM_uv_element_get_unique_index().
| void BM_uv_element_map_free | ( | UvElementMap * | element_map | ) |
Definition at line 1173 of file editmesh_utils.cc.
References UvElementMap::head_table, UvElementMap::island_indices, UvElementMap::island_total_unique_uvs, UvElementMap::island_total_uvs, MEM_SAFE_FREE, UvElementMap::storage, UvElementMap::unique_index_table, and UvElementMap::vertex.
Referenced by createTransUVs(), state_delete(), uv_copy_exec(), uv_isolate_selected_islands(), uv_paste_exec(), uv_sculpt_stroke_exit(), and uvedit_uv_straighten().
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().
Return a new UvVertMap from the edit-mesh.
Definition at line 439 of file editmesh_utils.cc.
References BKE_mesh_uv_vert_map_free(), bm, BM_ELEM_CD_GET_FLOAT_P, BM_elem_flag_test, BM_elem_index_get, BM_ELEM_SELECT, BM_FACE, BM_face_at_index(), BM_FACES_OF_MESH, BM_iter_at_index(), BM_ITER_ELEM_INDEX, BM_ITER_MESH, BM_ITER_MESH_INDEX, BM_LOOPS_OF_FACE, BM_mesh_elem_index_ensure(), BM_VERT, BM_VERTS_OF_MESH, UvVertMap::buf, CD_PROP_FLOAT2, compare_v2v2(), CustomData_get_offset(), UvMapVert::face_index, l, BMesh::ldata, BMFace::len, UvMapVert::loop_of_face_index, MEM_callocN, next, UvMapVert::next, UvMapVert::separate, STD_UV_CONNECT_LIMIT, BMesh::totvert, BMLoop::v, v, and UvVertMap::vert.
Referenced by uv_select_flush_from_loop_edge_flag(), uv_select_flush_from_tag_face(), uv_select_flush_from_tag_loop(), and uv_select_linked_multi().
| void BM_uv_vert_map_free | ( | UvVertMap * | vmap | ) |
Definition at line 1160 of file editmesh_utils.cc.
References UvVertMap::buf, MEM_freeN(), and UvVertMap::vert.
Referenced by uv_select_flush_from_loop_edge_flag(), uv_select_flush_from_tag_face(), uv_select_flush_from_tag_loop(), and uv_select_linked_multi().
| bool BMBVH_EdgeVisible | ( | const BMBVHTree * | tree, |
| const BMEdge * | e, | ||
| const Depsgraph * | depsgraph, | ||
| const ARegion * | region, | ||
| const View3D * | v3d, | ||
| const Object * | obedit ) |
Definition at line 1846 of file editmesh_utils.cc.
References add_v3_v3v3(), BMVert::co, copy_v3_v3(), depsgraph, e, ED_view3d_win_to_segment_clipped(), edge_ray_cast(), invert_m4_m4(), mid_v3_v3v3(), mul_m4_v3(), normalize_v3(), normalize_v3_length(), scale_point(), sub_v3_v3v3(), and tree.
Referenced by is_vert_slide_visible_bmesh().
Definition at line 1246 of file editmesh_utils.cc.
Referenced by EDBM_verts_mirror_cache_begin_ex().
| void EDBM_deselect_flush | ( | BMEditMesh * | em | ) |
Definition at line 362 of file editmesh_utils.cc.
References BMEditMesh::bm, BM_mesh_deselect_flush(), BMEditMesh::selectmode, and BMesh::selectmode.
Referenced by ED_uvedit_select_sync_flush(), edbm_select_random_exec(), uv_mouse_select_loop_generic_multi(), uv_select_linked_multi(), and blender::ed::object::vgroup_select_verts().
| BMElem * EDBM_elem_from_index_any | ( | BMEditMesh * | em, |
| uint | index ) |
Definition at line 1765 of file editmesh_utils.cc.
References bm, BMEditMesh::bm, BM_edge_at_index_find_or_table(), BM_face_at_index_find_or_table(), BM_vert_at_index_find_or_table(), BMesh::totedge, and BMesh::totvert.
Referenced by EDBM_elem_from_index_any_multi(), and edbm_shortest_path_pick_exec().
| BMElem * EDBM_elem_from_index_any_multi | ( | const Scene * | scene, |
| ViewLayer * | view_layer, | ||
| uint | object_index, | ||
| uint | elem_index, | ||
| Object ** | r_obedit ) |
Definition at line 1801 of file editmesh_utils.cc.
References BKE_editmesh_from_object(), BKE_view_layer_array_from_bases_in_edit_mode(), EDBM_elem_from_index_any(), and blender::Vector< T, InlineBufferCapacity, Allocator >::size().
Referenced by edbm_select_linked_pick_exec().
| BMElem * EDBM_elem_from_selectmode | ( | BMEditMesh * | em, |
| BMVert * | eve, | ||
| BMEdge * | eed, | ||
| BMFace * | efa ) |
Definition at line 1728 of file editmesh_utils.cc.
References SCE_SELECT_EDGE, SCE_SELECT_FACE, SCE_SELECT_VERTEX, and BMEditMesh::selectmode.
Referenced by edbm_select_linked_pick_invoke().
| int EDBM_elem_to_index_any | ( | BMEditMesh * | em, |
| BMElem * | ele ) |
Used when we want to store a single index for any vert/edge/face.
Intended for use with operators.
Definition at line 1742 of file editmesh_utils.cc.
References BLI_assert, bm, BMEditMesh::bm, BM_EDGE, BM_elem_index_get, BM_FACE, BM_VERT, BMesh::elem_index_dirty, BMElem::head, BMHeader::htype, BMesh::totedge, and BMesh::totvert.
Referenced by EDBM_elem_to_index_any_multi(), and edbm_shortest_path_pick_invoke().
| int EDBM_elem_to_index_any_multi | ( | const Scene * | scene, |
| ViewLayer * | view_layer, | ||
| BMEditMesh * | em, | ||
| BMElem * | ele, | ||
| int * | r_object_index ) |
Definition at line 1784 of file editmesh_utils.cc.
References BKE_editmesh_from_object(), BKE_view_layer_array_from_bases_in_edit_mode(), EDBM_elem_to_index_any(), blender::Vector< T, InlineBufferCapacity, Allocator >::index_range(), and Base::object.
Referenced by edbm_select_linked_pick_invoke().
| void EDBM_flag_disable_all | ( | BMEditMesh * | em, |
| const char | hflag ) |
Definition at line 423 of file editmesh_utils.cc.
References BMEditMesh::bm, BM_EDGE, BM_FACE, BM_mesh_elem_hflag_disable_all(), and BM_VERT.
Referenced by do_lasso_select_mesh(), do_mesh_box_select(), edbm_bevel_calc(), edbm_bridge_edge_loops_for_single_editmesh(), edbm_delete_exec(), edbm_delete_loose_exec(), edbm_duplicate_exec(), edbm_extrude_discrete_faces(), edbm_extrude_edges_indiv(), edbm_extrude_ex(), edbm_flag_disable_all_multi(), edbm_inset_calc(), edbm_loop_to_region_exec(), edbm_merge_exec(), EDBM_mesh_deselect_all_multi_ex(), EDBM_mesh_reveal(), edbm_poke_face_exec(), edbm_polybuild_delete_at_cursor_invoke(), edbm_polybuild_dissolve_at_cursor_invoke(), edbm_region_to_loop_exec(), edbm_screw_exec(), edbm_select_all_exec(), edbm_select_face_by_sides_exec(), edbm_select_loose_exec(), EDBM_select_mirrored(), edbm_select_non_manifold_exec(), EDBM_select_pick(), EDBM_select_toggle_all(), edbm_select_ungrouped_exec(), edbm_spin_exec(), edgering_select(), knife_make_cuts(), mesh_bisect_exec(), mesh_circle_select(), mesh_symmetrize_exec(), mouse_mesh_loop(), mouse_mesh_loop_edge(), mouse_mesh_loop_edge_ring(), mouse_mesh_loop_face(), and uv_select_all_perform().
| void EDBM_flag_enable_all | ( | BMEditMesh * | em, |
| const char | hflag ) |
Definition at line 428 of file editmesh_utils.cc.
References BMEditMesh::bm, BM_EDGE, BM_FACE, BM_mesh_elem_hflag_enable_all(), and BM_VERT.
Referenced by edbm_select_all_exec(), EDBM_select_toggle_all(), and uv_select_all_perform().
| void EDBM_mesh_free_data | ( | BMEditMesh * | em | ) |
Should only be called on the active edit-mesh, otherwise call BKE_editmesh_free_data.
Definition at line 319 of file editmesh_utils.cc.
References BKE_editmesh_free_data(), ED_mesh_mirror_spatial_table_end(), and ED_mesh_mirror_topo_table_end().
Referenced by EDBM_mesh_make_from_mesh(), blender::ed::object::editmode_load_free_ex(), and undomesh_to_editmesh().
| bool EDBM_mesh_hide | ( | BMEditMesh * | em, |
| bool | swap ) |
Swap is 0 or 1, if 1 it hides not selected.
Definition at line 1502 of file editmesh_utils.cc.
References BMEditMesh::bm, BM_EDGES_OF_MESH, BM_elem_flag_test, BM_ELEM_HIDDEN, BM_elem_hide_set, BM_ELEM_SELECT, BM_FACES_OF_MESH, BM_ITER_MESH, BM_VERTS_OF_MESH, EDBM_selectmode_flush(), SCE_SELECT_EDGE, SCE_SELECT_VERTEX, and BMEditMesh::selectmode.
Referenced by edbm_hide_exec(), and uv_hide_exec().
Definition at line 314 of file editmesh_utils.cc.
References EDBM_mesh_load_ex().
Referenced by blender::ed::object::object_hook_index_array(), and blender::ed::object::vertex_parent_set_exec().
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().
Definition at line 263 of file editmesh_utils.cc.
References Object::data, and EDBM_mesh_make_from_mesh().
Referenced by blender::ed::object::editmode_enter_ex(), blender::ed::object::object_hook_index_array(), and blender::ed::object::vertex_parent_set_exec().
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().
| void EDBM_mesh_normals_update | ( | BMEditMesh * | em | ) |
Definition at line 1619 of file editmesh_utils.cc.
References EDBM_mesh_normals_update_ex(), and params.
Referenced by edbm_bridge_edge_loops_for_single_editmesh(), EDBM_mesh_reveal(), EDBM_update(), and blender::ed::object::object_origin_set_exec().
| 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().
| bool EDBM_mesh_reveal | ( | BMEditMesh * | em, |
| bool | select ) |
Definition at line 1544 of file editmesh_utils.cc.
References BMEditMesh::bm, BM_EDGES_OF_MESH, BM_elem_flag_disable, BM_elem_flag_enable, BM_elem_flag_test, BM_ELEM_HIDDEN, BM_elem_select_set(), BM_ELEM_TAG, BM_FACES_OF_MESH, BM_ITER_MESH, BM_VERTS_OF_MESH, EDBM_flag_disable_all(), EDBM_mesh_normals_update(), EDBM_selectmode_flush(), SCE_SELECT_EDGE, SCE_SELECT_FACE, SCE_SELECT_VERTEX, select(), and BMEditMesh::selectmode.
Referenced by edbm_reveal_exec(), and uv_reveal_exec().
| bool EDBM_op_call_and_selectf | ( | BMEditMesh * | em, |
| wmOperator * | op, | ||
| const char * | select_slot_out, | ||
| const bool | select_extend, | ||
| const char * | fmt, | ||
| ... ) |
Definition at line 200 of file editmesh_utils.cc.
References BKE_reportf(), BLI_assert, bm, BMEditMesh::bm, BM_ALL_NOLOOP, BM_EDGE, BM_ELEM_SELECT, BM_FACE, BM_mesh_elem_hflag_disable_all(), BM_VERT, BMO_FLAG_DEFAULTS, BMO_op_exec(), BMO_op_vinitf(), BMO_slot_buffer_hflag_enable(), BMO_slot_get(), EDBM_op_finish(), eBMOpSlotSubType_Union::elem, wmOperator::reports, RPT_ERROR, BMOpSlot::slot_subtype, and BMOperator::slots_out.
Referenced by add_primitive_circle_exec(), add_primitive_cone_exec(), add_primitive_cube_exec(), add_primitive_cube_gizmo_exec(), add_primitive_cylinder_exec(), add_primitive_grid_exec(), add_primitive_icosphere_exec(), add_primitive_monkey_exec(), add_primitive_plane_exec(), add_primitive_uvsphere_exec(), edbm_beautify_fill_exec(), edbm_dissolve_faces_exec(), edbm_dissolve_limited_exec(), edbm_edge_split_selected_edges(), edbm_fill_holes_exec(), edbm_tris_convert_to_quads_exec(), edbm_vert_connect_concave_exec(), and edbm_vert_connect_nonplaner_exec().
| bool EDBM_op_call_silentf | ( | BMEditMesh * | em, |
| const char * | fmt, | ||
| ... ) |
Same as above, but doesn't report errors.
Definition at line 236 of file editmesh_utils.cc.
References bm, BMEditMesh::bm, BMO_FLAG_DEFAULTS, BMO_op_exec(), BMO_op_vinitf(), and EDBM_op_finish().
| bool EDBM_op_callf | ( | BMEditMesh * | em, |
| wmOperator * | op, | ||
| const char * | fmt, | ||
| ... ) |
Calls a bmesh op, reporting errors to the user, etc.
Definition at line 180 of file editmesh_utils.cc.
References BKE_reportf(), bm, BMEditMesh::bm, BMO_FLAG_DEFAULTS, BMO_op_exec(), BMO_op_vinitf(), EDBM_op_finish(), wmOperator::reports, and RPT_ERROR.
Referenced by edbm_collapse_edge_exec(), edbm_delete_edgeloop_exec(), edbm_delete_exec(), edbm_dissolve_degenerate_exec(), edbm_dissolve_edges_exec(), edbm_dissolve_verts_exec(), edbm_do_smooth_laplacian_vertex_exec(), edbm_do_smooth_vertex_exec(), edbm_dupli_extrude_cursor_invoke(), edbm_edge_split_selected_verts(), edbm_face_make_planar_exec(), edbm_flip_normals_face_winding(), edbm_flip_quad_tessellation(), edbm_merge_exec(), edbm_normals_make_consistent_exec(), edbm_polybuild_delete_at_cursor_invoke(), edbm_polybuild_dissolve_at_cursor_invoke(), edbm_remove_doubles_exec(), edbm_subdivide_edge_ring_exec(), geometry_extract_apply(), merge_firstlast(), and merge_target().
| bool EDBM_op_finish | ( | BMEditMesh * | em, |
| BMOperator * | bmop, | ||
| wmOperator * | op, | ||
| bool | do_report ) |
Cleans up after a bmesh operator.
The return value:
Definition at line 117 of file editmesh_utils.cc.
References BKE_report(), BLI_assert, BMEditMesh::bm, BMO_ERROR_CANCEL, BMO_ERROR_FATAL, BMO_error_pop(), BMO_ERROR_WARN, BMO_op_finish(), wmOperator::reports, RPT_ERROR, RPT_INFO, RPT_WARNING, BMesh::totedge, BMesh::totface, BMesh::totloop, and BMesh::totvert.
Referenced by edbm_add_edge_face_exec(), edbm_bevel_calc(), edbm_bridge_edge_loops_for_single_editmesh(), edbm_connect_vert_pair(), edbm_dupli_extrude_cursor_invoke(), edbm_duplicate_exec(), edbm_edge_rotate_selected_exec(), edbm_extrude_discrete_faces(), edbm_extrude_edges_indiv(), edbm_extrude_verts_indiv(), edbm_fill_exec(), edbm_fill_grid_exec(), edbm_inset_calc(), edbm_offset_edgeloop_exec(), EDBM_op_call_and_selectf(), EDBM_op_call_silentf(), EDBM_op_callf(), edbm_poke_face_exec(), edbm_quads_convert_to_tris_exec(), edbm_remove_doubles_exec(), edbm_reverse_colors_exec(), edbm_reverse_uvs_exec(), edbm_rotate_colors_exec(), edbm_rotate_uvs_exec(), edbm_screw_exec(), edbm_solidify_exec(), edbm_spin_exec(), edbm_split_exec(), edbm_unsubdivide_exec(), edbm_wireframe_exec(), mesh_bisect_exec(), and mesh_symmetrize_exec().
| bool EDBM_op_init | ( | BMEditMesh * | em, |
| BMOperator * | bmop, | ||
| wmOperator * | op, | ||
| const char * | fmt, | ||
| ... ) |
These next two functions are the split version of EDBM_op_callf, so you can do stuff with a bmesh operator, after initializing it but before executing it.
execute the operator with BMO_op_exec.
Definition at line 99 of file editmesh_utils.cc.
References BKE_reportf(), bm, BMEditMesh::bm, BMO_FLAG_DEFAULTS, BMO_op_vinitf(), wmOperator::reports, and RPT_ERROR.
Referenced by edbm_add_edge_face_exec(), edbm_bevel_calc(), edbm_bridge_edge_loops_for_single_editmesh(), edbm_connect_vert_pair(), edbm_dupli_extrude_cursor_invoke(), edbm_duplicate_exec(), edbm_edge_rotate_selected_exec(), edbm_extrude_discrete_faces(), edbm_extrude_edges_indiv(), edbm_extrude_verts_indiv(), edbm_fill_exec(), edbm_fill_grid_exec(), edbm_inset_calc(), edbm_offset_edgeloop_exec(), edbm_poke_face_exec(), edbm_quads_convert_to_tris_exec(), edbm_remove_doubles_exec(), edbm_reverse_colors_exec(), edbm_reverse_uvs_exec(), edbm_rotate_colors_exec(), edbm_rotate_uvs_exec(), edbm_screw_exec(), edbm_solidify_exec(), edbm_spin_exec(), edbm_split_exec(), edbm_unsubdivide_exec(), edbm_wireframe_exec(), mesh_bisect_exec(), and mesh_symmetrize_exec().
| void EDBM_project_snap_verts | ( | bContext * | C, |
| Depsgraph * | depsgraph, | ||
| ARegion * | region, | ||
| Object * | obedit, | ||
| BMEditMesh * | em ) |
Definition at line 1916 of file editmesh_utils.cc.
References BMEditMesh::bm, BM_elem_flag_test, BM_ELEM_SELECT, BM_ITER_MESH, BM_VERTS_OF_MESH, BMVert::co, CTX_data_scene(), CTX_wm_view3d(), depsgraph, ED_transform_snap_object_context_create(), ED_transform_snap_object_context_destroy(), ED_transform_snap_object_project_view3d(), ED_view3d_init_mats_rv3d(), ED_view3d_project_float_object(), mul_v3_m4v3(), params, SCE_SNAP_TARGET_NOT_ACTIVE, SCE_SNAP_TARGET_NOT_EDITED, SCE_SNAP_TARGET_NOT_NONEDITED, SCE_SNAP_TARGET_ONLY_SELECTABLE, SCE_SNAP_TO_FACE, SCE_SNAP_TO_INCLUDE_EDITED, SCE_SNAP_TO_INCLUDE_NONEDITED, SCE_SNAP_TO_ONLY_SELECTABLE, SET_FLAG_FROM_TEST, SNAP_GEOM_FINAL, SNAP_OCCLUSION_AS_SEEM, V3D_PROJ_RET_OK, and V3D_PROJ_TEST_NOP.
Referenced by edbm_dupli_extrude_cursor_invoke().
| void EDBM_redo_state_free | ( | BMBackup * | backup | ) |
Definition at line 85 of file editmesh_utils.cc.
References BM_mesh_data_free(), BMBackup::bmcopy, and MEM_freeN().
Referenced by edbm_bevel_exit(), edbm_bisect_exit(), edbm_connect_vert_pair(), and edbm_inset_exit().
| void EDBM_redo_state_restore | ( | BMBackup * | backup, |
| BMEditMesh * | em, | ||
| bool | recalc_looptris ) |
Definition at line 61 of file editmesh_utils.cc.
References BKE_editmesh_looptris_calc(), BMEditMesh::bm, BM_mesh_copy(), BM_mesh_data_free(), BMBackup::bmcopy, and MEM_freeN().
| void EDBM_redo_state_restore_and_free | ( | BMBackup * | backup, |
| BMEditMesh * | em, | ||
| bool | recalc_looptris ) |
Definition at line 74 of file editmesh_utils.cc.
References BKE_editmesh_looptris_calc(), BMEditMesh::bm, BM_mesh_data_free(), BMBackup::bmcopy, and MEM_freeN().
| 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().
| void EDBM_select_flush | ( | BMEditMesh * | em | ) |
Definition at line 369 of file editmesh_utils.cc.
References BMEditMesh::bm, BM_mesh_select_flush(), BMEditMesh::selectmode, and BMesh::selectmode.
Referenced by ED_uvedit_select_sync_flush(), edbm_dissolve_degenerate_exec(), edbm_edge_split_selected_edges(), edbm_edge_split_selected_verts(), EDBM_selectmode_set(), blender::ed::object::select_editbmesh_hook(), uv_mouse_select_loop_generic_multi(), and blender::ed::object::vgroup_select_verts().
| void EDBM_select_less | ( | BMEditMesh * | em, |
| const bool | use_face_step ) |
Definition at line 398 of file editmesh_utils.cc.
References BMEditMesh::bm, BM_ALL_NOLOOP, BM_ELEM_SELECT, BM_mesh_select_mode_clean(), BMO_FLAG_DEFAULTS, BMO_op_exec(), BMO_op_finish(), BMO_op_initf(), BMO_slot_buffer_hflag_disable(), EDBM_selectmode_flush(), SCE_SELECT_FACE, BMEditMesh::selectmode, and BMOperator::slots_out.
Referenced by edbm_select_less_exec(), and uv_select_more_less().
| 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().
| void EDBM_selectmode_flush | ( | BMEditMesh * | em | ) |
Definition at line 357 of file editmesh_utils.cc.
References EDBM_selectmode_flush_ex(), and BMEditMesh::selectmode.
Referenced by deselect_nth_active(), do_lasso_select_mesh(), do_mesh_box_select(), ED_uvedit_select_sync_flush(), edbm_bevel_exit(), edbm_connect_vert_pair(), edbm_edge_rotate_selected_exec(), edbm_intersect_select(), edbm_loop_multiselect_exec(), edbm_loop_to_region_exec(), EDBM_mesh_hide(), EDBM_mesh_make_from_mesh(), EDBM_mesh_reveal(), edbm_quads_convert_to_tris_exec(), edbm_remove_doubles_exec(), edbm_select_all_exec(), edbm_select_axis_exec(), edbm_select_by_attribute_exec(), edbm_select_face_by_sides_exec(), EDBM_select_less(), edbm_select_linked_exec(), edbm_select_linked_pick_ex(), edbm_select_loose_exec(), edbm_select_mirror_exec(), EDBM_select_more(), edbm_select_non_manifold_exec(), EDBM_select_pick(), edbm_select_random_exec(), edbm_select_sharp_edges_exec(), edbm_select_ungrouped_exec(), EDBM_selectmode_set(), edbm_unsubdivide_exec(), edbm_vert_connect_path_exec(), knifetool_finish_single_post(), mesh_bisect_exec(), mesh_symmetrize_exec(), mouse_mesh_loop(), mouse_mesh_shortest_path_edge(), mouse_mesh_shortest_path_face(), mouse_mesh_shortest_path_vert(), ringsel_finish(), similar_edge_select_exec(), similar_face_select_exec(), similar_vert_select_exec(), uv_mouse_select_multi(), uv_select_all_perform(), and uv_select_linked_multi().
| void EDBM_selectmode_flush_ex | ( | BMEditMesh * | em, |
| const short | selectmode ) |
Definition at line 352 of file editmesh_utils.cc.
References BMEditMesh::bm, BM_mesh_select_mode_flush_ex(), and BM_SELECT_LEN_FLUSH_RECALC_ALL.
Referenced by add_primitive_cube_gizmo_exec(), edbm_decimate_exec(), edbm_delete_edgeloop_exec(), EDBM_selectmode_flush(), edbm_unsubdivide_exec(), make_prim_finish(), ringsel_finish(), special_aftertrans_update__mesh(), and walker_deselect_nth().
| void EDBM_selectmode_to_scene | ( | bContext * | C | ) |
Definition at line 336 of file editmesh_utils.cc.
References BKE_editmesh_from_object(), CTX_data_edit_object(), CTX_data_scene(), NC_SCENE, ND_TOOLSETTINGS, BMEditMesh::selectmode, and WM_event_add_notifier().
Referenced by edbm_region_to_loop_exec().
| void EDBM_stats_update | ( | BMEditMesh * | em | ) |
Definition at line 1626 of file editmesh_utils.cc.
References BMEditMesh::bm, BM_EDGES_OF_MESH, BM_elem_flag_test, BM_ELEM_SELECT, BM_FACES_OF_MESH, BM_iter_new, BM_VERTS_OF_MESH, BMesh::totedgesel, BMesh::totfacesel, and BMesh::totvertsel.
| 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().
| 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.
Referenced by bpy_bm_update_edit_mesh().
| 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().
| bool EDBM_uv_check | ( | BMEditMesh * | em | ) |
Can we edit UVs for this mesh?
Definition at line 1228 of file editmesh_utils.cc.
References BMEditMesh::bm, CD_PROP_FLOAT2, CustomData_has_layer(), BMesh::ldata, and BMesh::totface.
Referenced by ED_space_image_show_uvedit(), ED_uvedit_test(), EDBM_uv_active_face_get(), and uv_seams_from_islands_exec().
| bool EDBM_vert_color_check | ( | BMEditMesh * | em | ) |
Definition at line 1234 of file editmesh_utils.cc.
References BMEditMesh::bm, CD_PROP_BYTE_COLOR, CustomData_has_layer(), BMesh::ldata, and BMesh::totface.
| void EDBM_verts_mirror_apply | ( | BMEditMesh * | em, |
| const int | sel_from, | ||
| const int | sel_to ) |
Definition at line 1476 of file editmesh_utils.cc.
References BLI_assert, BMEditMesh::bm, BM_elem_flag_test, BM_ELEM_SELECT, BM_ITER_MESH, BM_VERT, BM_VERTS_OF_MESH, BMVert::co, copy_v3_v3(), EDBM_verts_mirror_get(), BMesh::elem_table_dirty, v, and BMesh::vtable.
Referenced by edbm_blend_from_shape_exec(), edbm_do_smooth_laplacian_vertex_exec(), and edbm_do_smooth_vertex_exec().
| void EDBM_verts_mirror_cache_begin | ( | BMEditMesh * | em, |
| const int | axis, | ||
| const bool | use_self, | ||
| const bool | use_select, | ||
| const bool | respecthide, | ||
| const bool | use_topology ) |
Definition at line 1389 of file editmesh_utils.cc.
References BM_SEARCH_MAXDIST_MIRR, and EDBM_verts_mirror_cache_begin_ex().
Referenced by edbm_blend_from_shape_exec(), edbm_do_smooth_laplacian_vertex_exec(), edbm_do_smooth_vertex_exec(), EDBM_select_mirrored(), edbm_shape_propagate_to_all_exec(), and blender::ed::object::vgroup_mirror().
| 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 ) |
| em | Edit-mesh used for generating mirror data. |
| use_self | Allow a vertex to point to itself (middle verts). |
| use_select | Restrict to selected verts. |
| respecthide | Skip hidden vertices. |
| use_topology | Use topology mirror. |
| maxdist | Distance for close point test. |
| r_index | Optional 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().
| void EDBM_verts_mirror_cache_clear | ( | BMEditMesh * | em, |
| BMVert * | v ) |
Definition at line 1459 of file editmesh_utils.cc.
References BLI_assert, BMEditMesh::bm, CustomData_bmesh_get_layer_n(), BMHeader::data, BMVert::head, BMEditMesh::mirror_cdlayer, v, and BMesh::vdata.
| void EDBM_verts_mirror_cache_end | ( | BMEditMesh * | em | ) |
Definition at line 1471 of file editmesh_utils.cc.
References BMEditMesh::mirror_cdlayer.
Referenced by edbm_blend_from_shape_exec(), edbm_do_smooth_laplacian_vertex_exec(), edbm_do_smooth_vertex_exec(), EDBM_select_mirrored(), edbm_shape_propagate_to_all_exec(), and blender::ed::object::vgroup_mirror().
| BMVert * EDBM_verts_mirror_get | ( | BMEditMesh * | em, |
| BMVert * | v ) |
Definition at line 1407 of file editmesh_utils.cc.
References BLI_assert, bm, BMEditMesh::bm, CustomData_bmesh_get_layer_n(), BMHeader::data, BMVert::head, BMEditMesh::mirror_cdlayer, printf, BMesh::totvert, v, BMesh::vdata, and BMesh::vtable.
Referenced by EDBM_select_mirrored(), EDBM_verts_mirror_apply(), EDBM_verts_mirror_get_edge(), EDBM_verts_mirror_get_face(), shape_propagate(), and blender::ed::object::vgroup_mirror().
| 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().
| BMFace * EDBM_verts_mirror_get_face | ( | BMEditMesh * | em, |
| BMFace * | f ) |
Definition at line 1442 of file editmesh_utils.cc.
References BM_face_exists(), BM_FACE_FIRST_LOOP, blender::Array< T, InlineBufferCapacity, Allocator >::data(), EDBM_verts_mirror_get(), BMFace::len, BMLoop::next, blender::Array< T, InlineBufferCapacity, Allocator >::size(), and BMLoop::v.
Referenced by EDBM_select_mirrored().
| bool EDBM_view3d_poll | ( | bContext * | C | ) |
Poll call for mesh operators requiring a view3d context.
Definition at line 1713 of file editmesh_utils.cc.
References ED_operator_editmesh(), and ED_operator_view3d_active().
Referenced by 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_rip(), and MESH_OT_rip_edge().
|
static |
Definition at line 1827 of file editmesh_utils.cc.
References BKE_bmbvh_ray_cast(), BM_edge_in_face(), e, and tree.
Referenced by BMBVH_EdgeVisible().
|
static |
Return true if loop has UV co-ordinates which match luv_a and luv_b.
Definition at line 851 of file editmesh_utils.cc.
References BM_ELEM_CD_GET_FLOAT_P, compare_v2v2(), BMLoop::next, and STD_UV_CONNECT_LIMIT.
Referenced by seam_connected_recursive().
Definition at line 1839 of file editmesh_utils.cc.
References add_v3_v3(), mul_v3_fl(), and sub_v3_v3().
Referenced by BMBVH_EdgeVisible().
|
static |
Given loop_a and loop_b originate from the same vertex and share a UV,
Definition at line 945 of file editmesh_utils.cc.
References BLI_assert, BLI_gset_clear(), BM_ELEM_CD_GET_FLOAT_P, BMLoop::e, BMLoop::next, BMLoop::prev, result, seam_connected_recursive(), BMLoop::v, and visited.
Referenced by BM_uv_element_map_create().
|
static |
Utility function to implement seam_connected.
Given edge, luv_anchor & luv_fan find if needle is connected without seams or disjoint UVs which would delimit causing them not to be considered connected.
luv_anchor.| edge | Search for needle in all loops connected to edge (recursively). |
| luv_anchor | The UV of the anchor (vertex that's being stepped around). |
| luv_fan | The UV of the outer edge, this changes as the fan is stepped over. |
| needle | Search for this loop, also defines the vertex at the center of the face-fan. |
| visited | A set of edges to prevent recursing down the same edge multiple times. |
| cd_loop_uv_offset | The UV layer. |
Definition at line 880 of file editmesh_utils.cc.
References BLI_assert, BLI_gset_add(), BM_ELEM_CD_GET_FLOAT_P, BM_elem_flag_test, BM_ELEM_SEAM, BM_ITER_ELEM, BM_LOOPS_OF_EDGE, BMLoop::e, loop_uv_match(), BMLoop::next, BMLoop::prev, seam_connected_recursive(), BMLoop::v, and visited.
Referenced by seam_connected(), and seam_connected_recursive().