Manipulator: Only allow negative scale w/ flag set
In most cases we don't want this by default
This commit is contained in:
parent
a5c9f15a0e
commit
77eaf5cd7a
|
@ -90,10 +90,11 @@ void ED_manipulator_arrow3d_set_range_fac(struct wmManipulator *mpr, const float
|
|||
/* Cage Manipulator */
|
||||
|
||||
enum {
|
||||
ED_MANIPULATOR_CAGE2D_XFORM_FLAG_TRANSLATE = (1 << 0), /* Manipulator translates */
|
||||
ED_MANIPULATOR_CAGE2D_XFORM_FLAG_ROTATE = (1 << 1), /* Manipulator rotates */
|
||||
ED_MANIPULATOR_CAGE2D_XFORM_FLAG_SCALE = (1 << 2), /* Manipulator scales */
|
||||
ED_MANIPULATOR_CAGE2D_XFORM_FLAG_SCALE_UNIFORM = (1 << 3), /* Manipulator scales uniformly */
|
||||
ED_MANIPULATOR_CAGE2D_XFORM_FLAG_TRANSLATE = (1 << 0), /* Translates */
|
||||
ED_MANIPULATOR_CAGE2D_XFORM_FLAG_ROTATE = (1 << 1), /* Rotates */
|
||||
ED_MANIPULATOR_CAGE2D_XFORM_FLAG_SCALE = (1 << 2), /* Scales */
|
||||
ED_MANIPULATOR_CAGE2D_XFORM_FLAG_SCALE_UNIFORM = (1 << 3), /* Scales uniformly */
|
||||
ED_MANIPULATOR_CAGE2D_XFORM_FLAG_SCALE_SIGNED = (1 << 4), /* Negative scale allowed */
|
||||
};
|
||||
|
||||
/** #wmManipulator.highlight_part */
|
||||
|
|
|
@ -760,7 +760,15 @@ static int manipulator_rect_transform_modal(
|
|||
delta_orig[i] *= -1.0f;
|
||||
delta_curr[i] *= -1.0f;
|
||||
}
|
||||
const int sign = signum_i(scale[i]);
|
||||
|
||||
scale[i] = 1.0f + ((delta_curr[i] - delta_orig[i]) / len_v3(data->orig_matrix_offset[i]));
|
||||
|
||||
if ((transform_flag & ED_MANIPULATOR_CAGE2D_XFORM_FLAG_SCALE_SIGNED) == 0) {
|
||||
if (sign != signum_i(scale[i])) {
|
||||
scale[i] = 0.0f;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue