Blender V4.3
bmesh_core.hh
Go to the documentation of this file.
1/* SPDX-FileCopyrightText: 2023 Blender Authors
2 *
3 * SPDX-License-Identifier: GPL-2.0-or-later */
4
5#pragma once
6
16 const BMCustomDataCopyMap &cd_face_map,
17 const BMCustomDataCopyMap &cd_loop_map,
18 BMFace *f,
19 bool copy_verts,
20 bool copy_edges);
21BMFace *BM_face_copy(BMesh *bm, BMFace *f, bool copy_verts, bool copy_edges);
22
34
39 const float co[3],
40 const BMVert *v_example,
41 eBMCreateFlag create_flag);
50 BMesh *bm, BMVert *v1, BMVert *v2, const BMEdge *e_example, eBMCreateFlag create_flag);
61 BMVert *const *verts,
62 BMEdge *const *edges,
63 int len,
64 const BMFace *f_example,
65 eBMCreateFlag create_flag);
70 BMVert **vert_arr,
71 int len,
72 const BMFace *f_example,
73 eBMCreateFlag create_flag,
74 bool create_edges);
75
85
91
95void BM_face_kill(BMesh *bm, BMFace *f);
103void BM_vert_kill(BMesh *bm, BMVert *v);
104
115bool BM_edge_splice(BMesh *bm, BMEdge *e_dst, BMEdge *e_src);
128bool BM_vert_splice(BMesh *bm, BMVert *v_dst, BMVert *v_src);
135
146 BMFace *f,
147 int cd_loop_mdisp_offset,
148 bool use_loop_mdisp_flip);
149
155void bmesh_face_swap_data(BMFace *f_a, BMFace *f_b);
156
171BMFace *BM_faces_join(BMesh *bm, BMFace **faces, int totface, bool do_del);
176 BMVert *v,
177 BMEdge **e_in,
178 int e_in_len,
179 bool copy_select,
180 BMVert ***r_vout,
181 int *r_vout_len);
186 BMesh *bm, BMVert *v, char hflag, bool copy_select, BMVert ***r_vout, int *r_vout_len);
188 BMesh *bm, BMVert *v_dst, BMVert *v_src, bool (*testfn)(BMEdge *, void *arg), void *arg);
189
207 BMesh *bm, BMVert *v, BMVert ***r_vout, int *r_vout_len, bool copy_select);
219void bmesh_kernel_edge_separate(BMesh *bm, BMEdge *e, BMLoop *l_sep, bool copy_select);
220
260 BMFace *f,
261 BMLoop *l_v1,
262 BMLoop *l_v2,
263 BMLoop **r_l,
264#ifdef USE_BMESH_HOLES
265 ListBase *holes,
266#endif
267 BMEdge *example,
268 bool no_double);
269
320 BMEdge *e_kill,
321 BMVert *v_kill,
322 bool do_del,
323 bool check_edge_exists,
324 bool kill_degenerate_faces,
325 bool kill_duplicate_faces);
345 BMEdge *e_kill,
346 BMVert *v_kill,
347 bool do_del,
348 bool check_edge_exists,
349 bool kill_degenerate_faces);
382
void bmesh_face_swap_data(BMFace *f_a, BMFace *f_b)
BMVert * bmesh_kernel_unglue_region_make_vert_multi_isolated(BMesh *bm, BMLoop *l_sep)
BMVert * bmesh_kernel_split_edge_make_vert(BMesh *bm, BMVert *tv, BMEdge *e, BMEdge **r_e)
Split Edge Make Vert (SEMV)
BMFace * BM_face_create_verts(BMesh *bm, BMVert **vert_arr, int len, const BMFace *f_example, eBMCreateFlag create_flag, bool create_edges)
void BM_face_verts_kill(BMesh *bm, BMFace *f)
void bmesh_kernel_vert_separate(BMesh *bm, BMVert *v, BMVert ***r_vout, int *r_vout_len, bool copy_select)
Separate Vert.
bool BM_edge_splice(BMesh *bm, BMEdge *e_dst, BMEdge *e_src)
Splice Edge.
BMFace * bmesh_kernel_split_face_make_edge(BMesh *bm, BMFace *f, BMLoop *l_v1, BMLoop *l_v2, BMLoop **r_l, BMEdge *example, bool no_double)
Split Face Make Edge (SFME)
void bmesh_kernel_loop_reverse(BMesh *bm, BMFace *f, int cd_loop_mdisp_offset, bool use_loop_mdisp_flip)
Loop Reverse.
bool BM_vert_splice(BMesh *bm, BMVert *v_dst, BMVert *v_src)
Splice Vert.
void BM_vert_kill(BMesh *bm, BMVert *v)
void BM_vert_separate(BMesh *bm, BMVert *v, BMEdge **e_in, int e_in_len, bool copy_select, BMVert ***r_vout, int *r_vout_len)
void BM_face_kill(BMesh *bm, BMFace *f)
BMFace * bmesh_kernel_join_face_kill_edge(BMesh *bm, BMFace *f1, BMFace *f2, BMEdge *e)
Join Face Kill Edge (JFKE)
BMVert * bmesh_kernel_join_vert_kill_edge(BMesh *bm, BMEdge *e_kill, BMVert *v_kill, bool do_del, bool check_edge_exists, bool kill_degenerate_faces)
Join Vert Kill Edge (JVKE)
void BM_face_kill_loose(BMesh *bm, BMFace *f)
BMFace * BM_face_create(BMesh *bm, BMVert *const *verts, BMEdge *const *edges, int len, const BMFace *f_example, eBMCreateFlag create_flag)
BMVert * bmesh_kernel_unglue_region_make_vert_multi(BMesh *bm, BMLoop **larr, int larr_len)
void BM_vert_separate_tested_edges(BMesh *bm, BMVert *v_dst, BMVert *v_src, bool(*testfn)(BMEdge *, void *arg), void *arg)
BMVert * bmesh_kernel_unglue_region_make_vert(BMesh *bm, BMLoop *l_sep)
Un-glue Region Make Vert (URMV)
void BM_face_edges_kill(BMesh *bm, BMFace *f)
void BM_edge_kill(BMesh *bm, BMEdge *e)
BMEdge * BM_edge_create(BMesh *bm, BMVert *v1, BMVert *v2, const BMEdge *e_example, eBMCreateFlag create_flag)
Main function for creating a new edge.
eBMCreateFlag
Definition bmesh_core.hh:23
@ BM_CREATE_NOP
Definition bmesh_core.hh:24
@ BM_CREATE_SKIP_CD
Definition bmesh_core.hh:32
@ BM_CREATE_NO_DOUBLE
Definition bmesh_core.hh:26
void BM_vert_separate_hflag(BMesh *bm, BMVert *v, char hflag, bool copy_select, BMVert ***r_vout, int *r_vout_len)
BMVert * BM_vert_create(BMesh *bm, const float co[3], const BMVert *v_example, eBMCreateFlag create_flag)
Main function for creating a new vertex.
Definition bmesh_core.cc:43
BMEdge * bmesh_kernel_join_edge_kill_vert(BMesh *bm, BMEdge *e_kill, BMVert *v_kill, bool do_del, bool check_edge_exists, bool kill_degenerate_faces, bool kill_duplicate_faces)
Join Edge Kill Vert (JEKV)
BMFace * BM_faces_join(BMesh *bm, BMFace **faces, int totface, bool do_del)
Join Connected Faces.
BMFace * BM_face_copy(BMesh *bm, const BMCustomDataCopyMap &cd_face_map, const BMCustomDataCopyMap &cd_loop_map, BMFace *f, bool copy_verts, bool copy_edges)
void bmesh_kernel_edge_separate(BMesh *bm, BMEdge *e, BMLoop *l_sep, bool copy_select)
Separate Edge.
bool BM_vert_splice_check_double(BMVert *v_a, BMVert *v_b)
ATTR_WARN_UNUSED_RESULT BMesh * bm
ATTR_WARN_UNUSED_RESULT const BMVert * v2
ATTR_WARN_UNUSED_RESULT const BMVert const BMEdge * e
ATTR_WARN_UNUSED_RESULT const BMVert * v
int len
static float verts[][3]