Extrude Widget: with/without axis constraint
This commit is contained in:
@@ -500,12 +500,9 @@ static void manipulator_mesh_extrude_refresh(const bContext *C, wmManipulatorGro
|
|||||||
RNA_float_get_array(op_transform->ptr, "value", value);
|
RNA_float_get_array(op_transform->ptr, "value", value);
|
||||||
RNA_float_set_array(¯optr, "value", value);
|
RNA_float_set_array(¯optr, "value", value);
|
||||||
|
|
||||||
/* Currently has glitch in re-applying. */
|
|
||||||
#if 0
|
|
||||||
int constraint_axis[3];
|
int constraint_axis[3];
|
||||||
RNA_boolean_get_array(op_transform->ptr, "constraint_axis", constraint_axis);
|
RNA_boolean_get_array(op_transform->ptr, "constraint_axis", constraint_axis);
|
||||||
RNA_boolean_set_array(¯optr, "constraint_axis", constraint_axis);
|
RNA_boolean_set_array(¯optr, "constraint_axis", constraint_axis);
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -2257,6 +2257,36 @@ bool initTransform(bContext *C, TransInfo *t, wmOperator *op, const wmEvent *eve
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Transformation axis from operator */
|
||||||
|
if ((prop = RNA_struct_find_property(op->ptr, "axis")) && RNA_property_is_set(op->ptr, prop)) {
|
||||||
|
RNA_property_float_get_array(op->ptr, prop, t->axis);
|
||||||
|
normalize_v3(t->axis);
|
||||||
|
copy_v3_v3(t->axis_orig, t->axis);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Constraint init from operator */
|
||||||
|
if ((prop = RNA_struct_find_property(op->ptr, "constraint_axis")) && RNA_property_is_set(op->ptr, prop)) {
|
||||||
|
int constraint_axis[3];
|
||||||
|
|
||||||
|
RNA_property_boolean_get_array(op->ptr, prop, constraint_axis);
|
||||||
|
|
||||||
|
if (constraint_axis[0] || constraint_axis[1] || constraint_axis[2]) {
|
||||||
|
t->con.mode |= CON_APPLY;
|
||||||
|
|
||||||
|
if (constraint_axis[0]) {
|
||||||
|
t->con.mode |= CON_AXIS0;
|
||||||
|
}
|
||||||
|
if (constraint_axis[1]) {
|
||||||
|
t->con.mode |= CON_AXIS1;
|
||||||
|
}
|
||||||
|
if (constraint_axis[2]) {
|
||||||
|
t->con.mode |= CON_AXIS2;
|
||||||
|
}
|
||||||
|
|
||||||
|
setUserConstraint(t, t->current_orientation, t->con.mode, "%s");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (event) {
|
if (event) {
|
||||||
/* Initialize accurate transform to settings requested by keymap. */
|
/* Initialize accurate transform to settings requested by keymap. */
|
||||||
bool use_accurate = false;
|
bool use_accurate = false;
|
||||||
@@ -2405,36 +2435,6 @@ bool initTransform(bContext *C, TransInfo *t, wmOperator *op, const wmEvent *eve
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Transformation axis from operator */
|
|
||||||
if ((prop = RNA_struct_find_property(op->ptr, "axis")) && RNA_property_is_set(op->ptr, prop)) {
|
|
||||||
RNA_property_float_get_array(op->ptr, prop, t->axis);
|
|
||||||
normalize_v3(t->axis);
|
|
||||||
copy_v3_v3(t->axis_orig, t->axis);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Constraint init from operator */
|
|
||||||
if ((prop = RNA_struct_find_property(op->ptr, "constraint_axis")) && RNA_property_is_set(op->ptr, prop)) {
|
|
||||||
int constraint_axis[3];
|
|
||||||
|
|
||||||
RNA_property_boolean_get_array(op->ptr, prop, constraint_axis);
|
|
||||||
|
|
||||||
if (constraint_axis[0] || constraint_axis[1] || constraint_axis[2]) {
|
|
||||||
t->con.mode |= CON_APPLY;
|
|
||||||
|
|
||||||
if (constraint_axis[0]) {
|
|
||||||
t->con.mode |= CON_AXIS0;
|
|
||||||
}
|
|
||||||
if (constraint_axis[1]) {
|
|
||||||
t->con.mode |= CON_AXIS1;
|
|
||||||
}
|
|
||||||
if (constraint_axis[2]) {
|
|
||||||
t->con.mode |= CON_AXIS2;
|
|
||||||
}
|
|
||||||
|
|
||||||
setUserConstraint(t, t->current_orientation, t->con.mode, "%s");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
t->context = NULL;
|
t->context = NULL;
|
||||||
|
|
||||||
return 1;
|
return 1;
|
||||||
|
|||||||
@@ -419,7 +419,12 @@ void applyMouseInput(TransInfo *t, MouseInput *mi, const int mval[2], float outp
|
|||||||
|
|
||||||
if (!is_zero_v3(t->values_modal_offset)) {
|
if (!is_zero_v3(t->values_modal_offset)) {
|
||||||
float values_ofs[3];
|
float values_ofs[3];
|
||||||
mul_v3_m3v3(values_ofs, t->spacemtx, t->values_modal_offset);
|
if (t->con.mode & CON_APPLY) {
|
||||||
|
mul_v3_m3v3(values_ofs, t->spacemtx, t->values_modal_offset);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
copy_v3_v3(values_ofs, t->values_modal_offset);
|
||||||
|
}
|
||||||
add_v3_v3(t->values, values_ofs);
|
add_v3_v3(t->values, values_ofs);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user