Changeset View
Changeset View
Standalone View
Standalone View
source/blender/editors/transform/transform_convert_mesh_vert_cdata.c
| Show First 20 Lines • Show All 54 Lines • ▼ Show 20 Lines | static void tc_mesh_cdata_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_cdata_transdata_center(island_data, island_index, eve)); | copy_v3_v3(td->center, tc_mesh_cdata_transdata_center(island_data, island_index, eve)); | ||||
| td->extra = eve; | td->extra = eve; | ||||
| } | } | ||||
| void createTransMeshVertCData(TransInfo *t) | static void createTransMeshVertCData(bContext *UNUSED(C), TransInfo *t) | ||||
| { | { | ||||
| BLI_assert(ELEM(t->mode, TFM_BWEIGHT, TFM_VERT_CREASE)); | BLI_assert(ELEM(t->mode, TFM_BWEIGHT, TFM_VERT_CREASE)); | ||||
| 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 192 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++) { | ||||
| td_mirror->loc[0] = td_mirror->loc_src[0]; | td_mirror->loc[0] = td_mirror->loc_src[0]; | ||||
| } | } | ||||
| } | } | ||||
| } | } | ||||
| } | } | ||||
| void recalcData_mesh_cdata(TransInfo *t) | static void recalcData_mesh_cdata(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_cdata_apply_to_mirror(t); | tc_mesh_cdata_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_MeshVertCData = { | |||||
| /* flags */ (T_EDIT | T_POINTS), | |||||
| /* createTransData */ createTransMeshVertCData, | |||||
| /* recalcData */ recalcData_mesh_cdata, | |||||
| /* special_aftertrans_update */ NULL, | |||||
| }; | |||||