diff options
author | Hans Goudey <h.goudey@me.com> | 2022-06-24 00:59:05 +0300 |
---|---|---|
committer | Hans Goudey <h.goudey@me.com> | 2022-06-24 00:59:49 +0300 |
commit | 18f78ba33cfe4e369135e1c9c80f88bb24a90f2e (patch) | |
tree | 2257aee06794617595229a012a4fd4211488decb /source/blender/bmesh | |
parent | 547139c59c27dba585777a2c66e86e3e4cb92425 (diff) | |
parent | 7a05b5d2aaf6854a34c8eb796011a9ec90cc0281 (diff) |
Merge branch 'temp-legacy-mesh-format-option' into refactor-mesh-bevel-weight-generic
Diffstat (limited to 'source/blender/bmesh')
-rw-r--r-- | source/blender/bmesh/intern/bmesh_construct.c | 15 | ||||
-rw-r--r-- | source/blender/bmesh/intern/bmesh_edgeloop.c | 2 | ||||
-rw-r--r-- | source/blender/bmesh/intern/bmesh_interp.c | 21 | ||||
-rw-r--r-- | source/blender/bmesh/intern/bmesh_interp.h | 4 | ||||
-rw-r--r-- | source/blender/bmesh/intern/bmesh_mesh_convert.cc | 2 | ||||
-rw-r--r-- | source/blender/bmesh/operators/bmo_join_triangles.c | 2 |
6 files changed, 37 insertions, 9 deletions
diff --git a/source/blender/bmesh/intern/bmesh_construct.c b/source/blender/bmesh/intern/bmesh_construct.c index ff8506f1868..a7637d2712c 100644 --- a/source/blender/bmesh/intern/bmesh_construct.c +++ b/source/blender/bmesh/intern/bmesh_construct.c @@ -60,8 +60,11 @@ void BM_edges_from_verts_ensure(BMesh *bm, BMEdge **edge_arr, BMVert **vert_arr, } /* prototypes */ -static void bm_loop_attrs_copy( - BMesh *bm_src, BMesh *bm_dst, const BMLoop *l_src, BMLoop *l_dst, CustomDataMask mask_exclude); +static void bm_loop_attrs_copy(BMesh *bm_src, + BMesh *bm_dst, + const BMLoop *l_src, + BMLoop *l_dst, + eCustomDataMask mask_exclude); BMFace *BM_face_create_quad_tri(BMesh *bm, BMVert *v1, @@ -321,7 +324,7 @@ void BM_verts_sort_radial_plane(BMVert **vert_arr, int len) /*************************************************************/ static void bm_vert_attrs_copy( - BMesh *bm_src, BMesh *bm_dst, const BMVert *v_src, BMVert *v_dst, CustomDataMask mask_exclude) + BMesh *bm_src, BMesh *bm_dst, const BMVert *v_src, BMVert *v_dst, eCustomDataMask mask_exclude) { if ((bm_src == bm_dst) && (v_src == v_dst)) { BLI_assert_msg(0, "BMVert: source and target match"); @@ -336,7 +339,7 @@ static void bm_vert_attrs_copy( } static void bm_edge_attrs_copy( - BMesh *bm_src, BMesh *bm_dst, const BMEdge *e_src, BMEdge *e_dst, CustomDataMask mask_exclude) + BMesh *bm_src, BMesh *bm_dst, const BMEdge *e_src, BMEdge *e_dst, eCustomDataMask mask_exclude) { if ((bm_src == bm_dst) && (e_src == e_dst)) { BLI_assert_msg(0, "BMEdge: source and target match"); @@ -348,7 +351,7 @@ static void bm_edge_attrs_copy( } static void bm_loop_attrs_copy( - BMesh *bm_src, BMesh *bm_dst, const BMLoop *l_src, BMLoop *l_dst, CustomDataMask mask_exclude) + BMesh *bm_src, BMesh *bm_dst, const BMLoop *l_src, BMLoop *l_dst, eCustomDataMask mask_exclude) { if ((bm_src == bm_dst) && (l_src == l_dst)) { BLI_assert_msg(0, "BMLoop: source and target match"); @@ -360,7 +363,7 @@ static void bm_loop_attrs_copy( } static void bm_face_attrs_copy( - BMesh *bm_src, BMesh *bm_dst, const BMFace *f_src, BMFace *f_dst, CustomDataMask mask_exclude) + BMesh *bm_src, BMesh *bm_dst, const BMFace *f_src, BMFace *f_dst, eCustomDataMask mask_exclude) { if ((bm_src == bm_dst) && (f_src == f_dst)) { BLI_assert_msg(0, "BMFace: source and target match"); diff --git a/source/blender/bmesh/intern/bmesh_edgeloop.c b/source/blender/bmesh/intern/bmesh_edgeloop.c index ee8c22df630..4391a6a92d7 100644 --- a/source/blender/bmesh/intern/bmesh_edgeloop.c +++ b/source/blender/bmesh/intern/bmesh_edgeloop.c @@ -460,7 +460,7 @@ void BM_mesh_edgeloops_calc_order(BMesh *UNUSED(bm), ListBase *eloops, const boo for (el_store = eloops->first; el_store; el_store = el_store->next) { float len_sq; if (use_normals) { - /* scale the length by how close the loops are to pointing at eachother */ + /* Scale the length by how close the loops are to pointing at each other. */ float dir[3]; sub_v3_v3v3(dir, co, el_store->co); len_sq = normalize_v3(dir); diff --git a/source/blender/bmesh/intern/bmesh_interp.c b/source/blender/bmesh/intern/bmesh_interp.c index 2f5827bdc4c..0c3db31dd1f 100644 --- a/source/blender/bmesh/intern/bmesh_interp.c +++ b/source/blender/bmesh/intern/bmesh_interp.c @@ -894,6 +894,27 @@ void BM_data_layer_free(BMesh *bm, CustomData *data, int type) } } +bool BM_data_layer_free_named(BMesh *bm, CustomData *data, const char *name) +{ + CustomData olddata = *data; + olddata.layers = (olddata.layers) ? MEM_dupallocN(olddata.layers) : NULL; + + /* the pool is now owned by olddata and must not be shared */ + data->pool = NULL; + + const bool has_layer = CustomData_free_layer_named(data, name, 0); + + if (has_layer) { + update_data_blocks(bm, &olddata, data); + } + + if (olddata.layers) { + MEM_freeN(olddata.layers); + } + + return has_layer; +} + void BM_data_layer_free_n(BMesh *bm, CustomData *data, int type, int n) { CustomData olddata; diff --git a/source/blender/bmesh/intern/bmesh_interp.h b/source/blender/bmesh/intern/bmesh_interp.h index a2f1dfc706d..2cf9dffceec 100644 --- a/source/blender/bmesh/intern/bmesh_interp.h +++ b/source/blender/bmesh/intern/bmesh_interp.h @@ -59,6 +59,10 @@ void BM_data_interp_face_vert_edge( void BM_data_layer_add(BMesh *bm, CustomData *data, int type); void BM_data_layer_add_named(BMesh *bm, CustomData *data, int type, const char *name); void BM_data_layer_free(BMesh *bm, CustomData *data, int type); +/** + * Remove a named custom data layer, if it existed. Return true if the layer was removed. + */ +bool BM_data_layer_free_named(BMesh *bm, CustomData *data, const char *name); void BM_data_layer_free_n(BMesh *bm, CustomData *data, int type, int n); void BM_data_layer_copy(BMesh *bm, CustomData *data, int type, int src_n, int dst_n); diff --git a/source/blender/bmesh/intern/bmesh_mesh_convert.cc b/source/blender/bmesh/intern/bmesh_mesh_convert.cc index 890456f9024..739e474c59a 100644 --- a/source/blender/bmesh/intern/bmesh_mesh_convert.cc +++ b/source/blender/bmesh/intern/bmesh_mesh_convert.cc @@ -888,7 +888,7 @@ void BM_mesh_bm_to_me(Main *bmain, BMesh *bm, Mesh *me, const struct BMeshToMesh me->totloop = bm->totloop; me->totpoly = bm->totface; /* Will be overwritten with a valid value if 'dotess' is set, otherwise we - * end up with 'me->totface' and me->mface == nullptr which can crash T28625. */ + * end up with 'me->totface' and `me->mface == nullptr` which can crash T28625. */ me->totface = 0; me->act_face = -1; diff --git a/source/blender/bmesh/operators/bmo_join_triangles.c b/source/blender/bmesh/operators/bmo_join_triangles.c index aa7f0f511ec..1339efb3057 100644 --- a/source/blender/bmesh/operators/bmo_join_triangles.c +++ b/source/blender/bmesh/operators/bmo_join_triangles.c @@ -145,7 +145,7 @@ static bool bm_edge_is_contiguous_loop_cd_all(const BMEdge *e, } static bool bm_edge_delimit_cdata(CustomData *ldata, - CustomDataType type, + eCustomDataType type, struct DelimitData_CD *r_delim_cd) { const int layer_len = CustomData_number_of_layers(ldata, type); |