Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGermano Cavalcante <germano.costa@ig.com.br>2021-01-04 23:36:51 +0300
committerGermano Cavalcante <germano.costa@ig.com.br>2021-01-04 23:37:08 +0300
commit54ee4109143b6fdabf749d2fde183907469cfa3b (patch)
tree06bdc8456841ddce928c7ac3f9c8c42db4f46797 /source/blender/editors/transform/transform_convert.c
parent8c80299fc4493cac640ab4cd56b9bc34f606ee2c (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.c17
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;