Changeset View
Changeset View
Standalone View
Standalone View
source/blender/modifiers/intern/MOD_edgesplit.c
| Show First 20 Lines • Show All 54 Lines • ▼ Show 20 Lines | static Mesh *doEdgeSplit(Mesh *mesh, EdgeSplitModifierData *emd) | ||||
| bm = BKE_mesh_to_bmesh_ex( | bm = BKE_mesh_to_bmesh_ex( | ||||
| mesh, | mesh, | ||||
| &(struct BMeshCreateParams){0}, | &(struct BMeshCreateParams){0}, | ||||
| &(struct BMeshFromMeshParams){ | &(struct BMeshFromMeshParams){ | ||||
| .calc_face_normal = calc_face_normals, | .calc_face_normal = calc_face_normals, | ||||
| .add_key_index = false, | .add_key_index = false, | ||||
| .use_shapekey = false, | .use_shapekey = false, | ||||
| .active_shapekey = 0, | .active_shapekey = 0, | ||||
| .cd_mask_extra = CD_MASK_ORIGINDEX, | .cd_mask_extra = {.vmask=CD_MASK_ORIGINDEX, .emask=CD_MASK_ORIGINDEX, .pmask=CD_MASK_ORIGINDEX}, | ||||
| }); | }); | ||||
| if (do_split_angle) { | if (do_split_angle) { | ||||
| BM_ITER_MESH (e, &iter, bm, BM_EDGES_OF_MESH) { | BM_ITER_MESH (e, &iter, bm, BM_EDGES_OF_MESH) { | ||||
| /* check for 1 edge having 2 face users */ | /* check for 1 edge having 2 face users */ | ||||
| BMLoop *l1, *l2; | BMLoop *l1, *l2; | ||||
| if ((l1 = e->l) && | if ((l1 = e->l) && | ||||
| (l2 = e->l->radial_next) != l1) | (l2 = e->l->radial_next) != l1) | ||||
| Show All 23 Lines | BM_ITER_MESH (e, &iter, bm, BM_EDGES_OF_MESH) { | ||||
| } | } | ||||
| } | } | ||||
| } | } | ||||
| BM_mesh_edgesplit(bm, false, true, false); | BM_mesh_edgesplit(bm, false, true, false); | ||||
| /* BM_mesh_validate(bm); */ /* for troubleshooting */ | /* BM_mesh_validate(bm); */ /* for troubleshooting */ | ||||
| result = BKE_mesh_from_bmesh_for_eval_nomain(bm, 0); | result = BKE_mesh_from_bmesh_for_eval_nomain(bm, NULL); | ||||
| BM_mesh_free(bm); | BM_mesh_free(bm); | ||||
| result->runtime.cd_dirty_vert |= CD_MASK_NORMAL; | result->runtime.cd_dirty_vert |= CD_MASK_NORMAL; | ||||
| return result; | return result; | ||||
| } | } | ||||
| static void initData(ModifierData *md) | static void initData(ModifierData *md) | ||||
| { | { | ||||
| ▲ Show 20 Lines • Show All 60 Lines • Show Last 20 Lines | |||||