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:
authorSergey Sharybin <sergey.vfx@gmail.com>2014-06-03 20:02:02 +0400
committerSergey Sharybin <sergey.vfx@gmail.com>2014-06-03 20:05:33 +0400
commitc918f24edb5df8cc837b77363c4d928f8bfa9159 (patch)
treed33eb51fdf371160930e69e50b5aec4bf090ad4b
parentf46b384fc5e66949c0c2ce974d2842dd76ee6be8 (diff)
Tweaks to bevel and crease transform
They were using INPUT_SPRING in a way which didn't allow it to easily redo the operator because INPUT_SPRING internally is stored as a ration between old value and new one and crease and bevel were converting this to value delta. Now made it special input type INPUT_SPRING_DELTA which is storing delta of the spring, meaning now values in the redo panel kind of makes sense -- they mean how much to add/remove to the crease/bevel weight. Expect to be no functional changes from interactive transform POV, just a bit more convenient to use redo panel.
-rw-r--r--source/blender/editors/transform/transform.c6
-rw-r--r--source/blender/editors/transform/transform.h3
-rw-r--r--source/blender/editors/transform/transform_input.c11
3 files changed, 15 insertions, 5 deletions
diff --git a/source/blender/editors/transform/transform.c b/source/blender/editors/transform/transform.c
index 34e76ce5ece..899f1191e33 100644
--- a/source/blender/editors/transform/transform.c
+++ b/source/blender/editors/transform/transform.c
@@ -4730,7 +4730,7 @@ static void initBevelWeight(TransInfo *t)
t->mode = TFM_BWEIGHT;
t->transform = applyBevelWeight;
- initMouseInputMode(t, &t->mouse, INPUT_SPRING);
+ initMouseInputMode(t, &t->mouse, INPUT_SPRING_DELTA);
t->idx_max = 0;
t->num.idx_max = 0;
@@ -4754,7 +4754,6 @@ static void applyBevelWeight(TransInfo *t, const int UNUSED(mval[2]))
weight = t->values[0];
- weight -= 1.0f;
if (weight > 1.0f) weight = 1.0f;
snapGridIncrement(t, &weight);
@@ -4809,7 +4808,7 @@ static void initCrease(TransInfo *t)
t->mode = TFM_CREASE;
t->transform = applyCrease;
- initMouseInputMode(t, &t->mouse, INPUT_SPRING);
+ initMouseInputMode(t, &t->mouse, INPUT_SPRING_DELTA);
t->idx_max = 0;
t->num.idx_max = 0;
@@ -4833,7 +4832,6 @@ static void applyCrease(TransInfo *t, const int UNUSED(mval[2]))
crease = t->values[0];
- crease -= 1.0f;
if (crease > 1.0f) crease = 1.0f;
snapGridIncrement(t, &crease);
diff --git a/source/blender/editors/transform/transform.h b/source/blender/editors/transform/transform.h
index f34d2050853..ae7e21f3824 100644
--- a/source/blender/editors/transform/transform.h
+++ b/source/blender/editors/transform/transform.h
@@ -600,6 +600,7 @@ typedef enum {
INPUT_VECTOR,
INPUT_SPRING,
INPUT_SPRING_FLIP,
+ INPUT_SPRING_DELTA,
INPUT_ANGLE,
INPUT_ANGLE_SPRING,
INPUT_TRACKBALL,
@@ -608,7 +609,7 @@ typedef enum {
INPUT_VERTICAL_RATIO,
INPUT_VERTICAL_ABSOLUTE,
INPUT_CUSTOM_RATIO,
- INPUT_CUSTOM_RATIO_FLIP
+ INPUT_CUSTOM_RATIO_FLIP,
} MouseInputMode;
void initMouseInput(TransInfo *t, MouseInput *mi, const float center[2], const int mval[2]);
diff --git a/source/blender/editors/transform/transform_input.c b/source/blender/editors/transform/transform_input.c
index 70b565859f3..6546a05aedd 100644
--- a/source/blender/editors/transform/transform_input.c
+++ b/source/blender/editors/transform/transform_input.c
@@ -94,6 +94,12 @@ static void InputSpringFlip(TransInfo *t, MouseInput *mi, const int mval[2], flo
}
}
+static void InputSpringDelta(TransInfo *t, MouseInput *mi, const int mval[2], float output[3])
+{
+ InputSpring(t, mi, mval, output);
+ output[0] -= 1.0f;
+}
+
static void InputTrackBall(TransInfo *UNUSED(t), MouseInput *mi, const int mval[2], float output[3])
{
@@ -333,6 +339,11 @@ void initMouseInputMode(TransInfo *t, MouseInput *mi, MouseInputMode mode)
mi->apply = InputSpringFlip;
t->helpline = HLP_SPRING;
break;
+ case INPUT_SPRING_DELTA:
+ calcSpringFactor(mi);
+ mi->apply = InputSpringDelta;
+ t->helpline = HLP_SPRING;
+ break;
case INPUT_ANGLE:
mi->data = MEM_callocN(sizeof(double), "angle accumulator");
mi->apply = InputAngle;