[Bf-blender-cvs] [4e92cc27593] blender2.8: Fix T58244: Proportional editing center is wrong
Antonioya
noreply at git.blender.org
Fri Nov 30 19:04:45 CET 2018
Commit: 4e92cc275936e4fa5e2c2a0d03e9649fb36c7bf8
Author: Antonioya
Date: Fri Nov 30 19:04:14 2018 +0100
Branches: blender2.8
https://developer.blender.org/rB4e92cc275936e4fa5e2c2a0d03e9649fb36c7bf8
Fix T58244: Proportional editing center is wrong
The global center was not calculated at all. Now a center is calculated using the selected points
===================================================================
M source/blender/editors/transform/transform_conversions.c
===================================================================
diff --git a/source/blender/editors/transform/transform_conversions.c b/source/blender/editors/transform/transform_conversions.c
index 0fca84074f5..3de39654779 100644
--- a/source/blender/editors/transform/transform_conversions.c
+++ b/source/blender/editors/transform/transform_conversions.c
@@ -8153,7 +8153,7 @@ void flushTransPaintCurve(TransInfo *t)
static void createTransGPencil(bContext *C, TransInfo *t)
{
- Depsgraph *depsgraph = CTX_data_depsgraph(C); \
+ Depsgraph *depsgraph = CTX_data_depsgraph(C);
bGPdata *gpd = ED_gpencil_data_get_active(C);
ToolSettings *ts = CTX_data_tool_settings(C);
@@ -8262,6 +8262,9 @@ static void createTransGPencil(bContext *C, TransInfo *t)
unit_m3(mtx);
/* Second Pass: Build transdata array */
+ int totselected = 0;
+ float global_center[3] = { 0.0f, 0.0f, 0.0f };
+
for (gpl = gpd->layers.first; gpl; gpl = gpl->next) {
/* only editable and visible layers are considered */
if (gpencil_layer_is_editable(gpl) && (gpl->actframe != NULL)) {
@@ -8376,9 +8379,14 @@ static void createTransGPencil(bContext *C, TransInfo *t)
td->flag = 0;
- if (pt->flag & GP_SPOINT_SELECT)
+ if (pt->flag & GP_SPOINT_SELECT) {
td->flag |= TD_SELECTED;
+ /* prepare center */
+ add_v3_v3(global_center, &pt->x);
+ totselected++;
+ }
+
/* for other transform modes (e.g. shrink-fatten), need to additional data
* but never for scale or mirror
*/
@@ -8435,6 +8443,13 @@ static void createTransGPencil(bContext *C, TransInfo *t)
}
}
}
+
+ /* set global center */
+ CLAMP_MIN(totselected, 1);
+ mul_v3_fl(global_center, 1.0f / totselected);
+ add_v3_v3(global_center, obact->obmat[3]);
+ copy_v3_v3(t->center_global, global_center);
+ t->flag |= T_OVERRIDE_CENTER;
}
static int countAndCleanTransDataContainer(TransInfo *t)
More information about the Bf-blender-cvs
mailing list