diff options
author | Germano Cavalcante <germano.costa@ig.com.br> | 2021-01-04 23:36:51 +0300 |
---|---|---|
committer | Germano Cavalcante <germano.costa@ig.com.br> | 2021-01-04 23:37:08 +0300 |
commit | 54ee4109143b6fdabf749d2fde183907469cfa3b (patch) | |
tree | 06bdc8456841ddce928c7ac3f9c8c42db4f46797 /source/blender/editors/transform/transform_convert.c | |
parent | 8c80299fc4493cac640ab4cd56b9bc34f606ee2c (diff) |
Fix T84376: Skin Resize(Ctrl + A) does not work in Symmetry
Since the `TransData` converted from vertices is the same used for other
transform modes (Move, Rotate, Resize), the logic used for mirroring
focused only on the position of the vertices.
The solution here is to create a specific `TansData` for `CD_MVERT_SKIN`.
Diffstat (limited to 'source/blender/editors/transform/transform_convert.c')
-rw-r--r-- | source/blender/editors/transform/transform_convert.c | 17 |
1 files changed, 14 insertions, 3 deletions
diff --git a/source/blender/editors/transform/transform_convert.c b/source/blender/editors/transform/transform_convert.c index dd35d67e1fa..fb365da6b43 100644 --- a/source/blender/editors/transform/transform_convert.c +++ b/source/blender/editors/transform/transform_convert.c @@ -1078,7 +1078,12 @@ void createTransData(bContext *C, TransInfo *t) initTransDataContainers_FromObjectData(t, ob, NULL, 0); if (t->obedit_type == OB_MESH) { - convert_type = TC_MESH_VERTS; + if (t->mode == TFM_SKIN_RESIZE) { + convert_type = TC_MESH_SKIN; + } + else { + convert_type = TC_MESH_VERTS; + } } else if (ELEM(t->obedit_type, OB_CURVE, OB_SURF)) { convert_type = TC_CURVE_VERTS; @@ -1202,6 +1207,9 @@ void createTransData(bContext *C, TransInfo *t) case TC_MESH_EDGES: createTransEdge(t); break; + case TC_MESH_SKIN: + createTransMeshSkin(t); + break; case TC_MESH_UV: createTransUVs(C, t); break; @@ -1273,9 +1281,9 @@ void createTransData(bContext *C, TransInfo *t) if (ELEM(convert_type, TC_ACTION_DATA, TC_GRAPH_EDIT_DATA)) { /* Distance has already been set. */ } - else if (convert_type == TC_MESH_VERTS) { + else if (ELEM(convert_type, TC_MESH_VERTS, TC_MESH_SKIN)) { if (t->flag & T_PROP_CONNECTED) { - /* Already calculated by editmesh_set_connectivity_distance. */ + /* Already calculated by transform_convert_mesh_connectivity_distance. */ } else { set_prop_dist(t, false); @@ -1536,6 +1544,9 @@ void recalcData(TransInfo *t) case TC_MESH_EDGES: recalcData_mesh(t); break; + case TC_MESH_SKIN: + recalcData_mesh_skin(t); + break; case TC_MESH_UV: recalcData_uv(t); break; |