Changeset View
Changeset View
Standalone View
Standalone View
source/blender/editors/transform/transform_convert_mesh.c
| Show First 20 Lines • Show All 1,448 Lines • ▼ Show 20 Lines | static void VertsToTransData(TransInfo *t, | ||||
| td->val = NULL; | td->val = NULL; | ||||
| td->extra = eve; | td->extra = eve; | ||||
| if (t->mode == TFM_SHRINKFATTEN) { | if (t->mode == TFM_SHRINKFATTEN) { | ||||
| td->ext = tx; | td->ext = tx; | ||||
| tx->isize[0] = BM_vert_calc_shell_factor_ex(eve, no, BM_ELEM_SELECT); | tx->isize[0] = BM_vert_calc_shell_factor_ex(eve, no, BM_ELEM_SELECT); | ||||
| } | } | ||||
| } | } | ||||
| void createTransEditVerts(TransInfo *t) | static void createTransEditVerts(bContext *UNUSED(C), TransInfo *t) | ||||
| { | { | ||||
| FOREACH_TRANS_DATA_CONTAINER (t, tc) { | FOREACH_TRANS_DATA_CONTAINER (t, tc) { | ||||
| TransDataExtension *tx = NULL; | TransDataExtension *tx = NULL; | ||||
| 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 558 Lines • ▼ Show 20 Lines | for (i = 0; i < tc->data_mirror_len; i++, td_mirror++) { | ||||
| } | } | ||||
| if (td_mirror->flag & TD_MIRROR_Z) { | if (td_mirror->flag & TD_MIRROR_Z) { | ||||
| td_mirror->loc[2] *= -1; | td_mirror->loc[2] *= -1; | ||||
| } | } | ||||
| } | } | ||||
| } | } | ||||
| } | } | ||||
| void recalcData_mesh(TransInfo *t) | static void recalcData_mesh(TransInfo *t) | ||||
| { | { | ||||
| bool is_canceling = t->state == TRANS_CANCEL; | bool is_canceling = t->state == TRANS_CANCEL; | ||||
| /* Apply corrections. */ | /* Apply corrections. */ | ||||
| if (!is_canceling) { | if (!is_canceling) { | ||||
| applySnappingIndividual(t); | applySnappingIndividual(t); | ||||
| bool do_mirror = !(t->flag & T_NO_MIRROR); | bool do_mirror = !(t->flag & T_NO_MIRROR); | ||||
| FOREACH_TRANS_DATA_CONTAINER (t, tc) { | FOREACH_TRANS_DATA_CONTAINER (t, tc) { | ||||
| ▲ Show 20 Lines • Show All 83 Lines • ▼ Show 20 Lines | FOREACH_TRANS_DATA_CONTAINER (t, tc) { | ||||
| /* table needs to be created for each edit command, since vertices can move etc */ | /* table needs to be created for each edit command, since vertices can move etc */ | ||||
| ED_mesh_mirror_spatial_table_end(tc->obedit); | ED_mesh_mirror_spatial_table_end(tc->obedit); | ||||
| /* TODO(campbell): xform: We need support for many mirror objects at once! */ | /* TODO(campbell): xform: We need support for many mirror objects at once! */ | ||||
| break; | break; | ||||
| } | } | ||||
| } | } | ||||
| /** \} */ | /** \} */ | ||||
| TransConvertTypeInfo TransConvertType_Mesh = { | |||||
| /* flags */ (T_EDIT | T_POINTS), | |||||
| /* createTransData */ createTransEditVerts, | |||||
| /* recalcData */ recalcData_mesh, | |||||
| /* special_aftertrans_update */ special_aftertrans_update__mesh, | |||||
| }; | |||||