Changeset View
Changeset View
Standalone View
Standalone View
source/blender/editors/transform/transform_convert_mesh_skin.c
| Show First 20 Lines • Show All 60 Lines • ▼ Show 20 Lines | static void tc_mesh_skin_transdata_create(TransDataBasic *td, | ||||
| if (BM_elem_flag_test(eve, BM_ELEM_SELECT)) { | if (BM_elem_flag_test(eve, BM_ELEM_SELECT)) { | ||||
| td->flag |= TD_SELECTED; | td->flag |= TD_SELECTED; | ||||
| } | } | ||||
| copy_v3_v3(td->center, tc_mesh_skin_transdata_center(island_data, island_index, eve)); | copy_v3_v3(td->center, tc_mesh_skin_transdata_center(island_data, island_index, eve)); | ||||
| td->extra = eve; | td->extra = eve; | ||||
| } | } | ||||
| void createTransMeshSkin(TransInfo *t) | static void createTransMeshSkin(bContext *UNUSED(C), TransInfo *t) | ||||
| { | { | ||||
| BLI_assert(t->mode == TFM_SKIN_RESIZE); | BLI_assert(t->mode == TFM_SKIN_RESIZE); | ||||
| FOREACH_TRANS_DATA_CONTAINER (t, tc) { | FOREACH_TRANS_DATA_CONTAINER (t, tc) { | ||||
| BMEditMesh *em = BKE_editmesh_from_object(tc->obedit); | BMEditMesh *em = BKE_editmesh_from_object(tc->obedit); | ||||
| Mesh *me = tc->obedit->data; | Mesh *me = tc->obedit->data; | ||||
| BMesh *bm = em->bm; | BMesh *bm = em->bm; | ||||
| BMVert *eve; | BMVert *eve; | ||||
| BMIter iter; | BMIter iter; | ||||
| ▲ Show 20 Lines • Show All 188 Lines • ▼ Show 20 Lines | if (tc->use_mirror_axis_any) { | ||||
| TransDataMirror *td_mirror = tc->data_mirror; | TransDataMirror *td_mirror = tc->data_mirror; | ||||
| for (int i = 0; i < tc->data_mirror_len; i++, td_mirror++) { | for (int i = 0; i < tc->data_mirror_len; i++, td_mirror++) { | ||||
| copy_v3_v3(td_mirror->loc, td_mirror->loc_src); | copy_v3_v3(td_mirror->loc, td_mirror->loc_src); | ||||
| } | } | ||||
| } | } | ||||
| } | } | ||||
| } | } | ||||
| void recalcData_mesh_skin(TransInfo *t) | static void recalcData_mesh_skin(TransInfo *t) | ||||
| { | { | ||||
| bool is_canceling = t->state == TRANS_CANCEL; | bool is_canceling = t->state == TRANS_CANCEL; | ||||
| /* mirror modifier clipping? */ | /* mirror modifier clipping? */ | ||||
| if (!is_canceling) { | if (!is_canceling) { | ||||
| if (!(t->flag & T_NO_MIRROR)) { | if (!(t->flag & T_NO_MIRROR)) { | ||||
| tc_mesh_skin_apply_to_mirror(t); | tc_mesh_skin_apply_to_mirror(t); | ||||
| } | } | ||||
| } | } | ||||
| FOREACH_TRANS_DATA_CONTAINER (t, tc) { | FOREACH_TRANS_DATA_CONTAINER (t, tc) { | ||||
| DEG_id_tag_update(tc->obedit->data, ID_RECALC_GEOMETRY); | DEG_id_tag_update(tc->obedit->data, ID_RECALC_GEOMETRY); | ||||
| BMEditMesh *em = BKE_editmesh_from_object(tc->obedit); | BMEditMesh *em = BKE_editmesh_from_object(tc->obedit); | ||||
| BKE_editmesh_looptri_and_normals_calc(em); | BKE_editmesh_looptri_and_normals_calc(em); | ||||
| } | } | ||||
| } | } | ||||
| /** \} */ | /** \} */ | ||||
| TransConvertTypeInfo TransConvertType_MeshSkin = { | |||||
| /* flags */ (T_EDIT | T_POINTS), | |||||
| /* createTransData */ createTransMeshSkin, | |||||
| /* recalcData */ recalcData_mesh_skin, | |||||
| /* special_aftertrans_update */ NULL, | |||||
| }; | |||||