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
path: root/source
diff options
context:
space:
mode:
authorCampbell Barton <ideasman42@gmail.com>2014-02-18 03:19:41 +0400
committerCampbell Barton <ideasman42@gmail.com>2014-02-18 04:57:48 +0400
commitc67b9f4c3774d72d160901b3d410a685ae8e2359 (patch)
tree23d398acbac48d46ce3ebfd5158500cf250d704e /source
parentf468904e9be6a34b8bd266fe5a251abd83dfd4ca (diff)
NDOF: image and clip views ignored axis invert preferences
also X/Y invert was swapped for 3d view.
Diffstat (limited to 'source')
-rw-r--r--source/blender/editors/space_clip/clip_ops.c13
-rw-r--r--source/blender/editors/space_image/image_ops.c13
-rw-r--r--source/blender/editors/space_view3d/view3d_edit.c4
3 files changed, 18 insertions, 12 deletions
diff --git a/source/blender/editors/space_clip/clip_ops.c b/source/blender/editors/space_clip/clip_ops.c
index e02fca80894..c8eadf952d0 100644
--- a/source/blender/editors/space_clip/clip_ops.c
+++ b/source/blender/editors/space_clip/clip_ops.c
@@ -1333,6 +1333,7 @@ static int clip_view_ndof_invoke(bContext *C, wmOperator *UNUSED(op), const wmEv
else {
SpaceClip *sc = CTX_wm_space_clip(C);
ARegion *ar = CTX_wm_region(C);
+ float pan_vec[2];
wmNDOFMotionData *ndof = (wmNDOFMotionData *) event->customdata;
@@ -1342,9 +1343,6 @@ static int clip_view_ndof_invoke(bContext *C, wmOperator *UNUSED(op), const wmEv
const float zoom_sensitivity = 0.5f; /* 50% per second (I think) */
const float pan_sensitivity = 300.0f; /* screen pixels per second */
- float pan_x = pan_sensitivity * dt * ndof->tvec[0] / sc->zoom;
- float pan_y = pan_sensitivity * dt * ndof->tvec[1] / sc->zoom;
-
/* "mouse zoom" factor = 1 + (dx + dy) / 300
* what about "ndof zoom" factor? should behave like this:
* at rest -> factor = 1
@@ -1353,12 +1351,17 @@ static int clip_view_ndof_invoke(bContext *C, wmOperator *UNUSED(op), const wmEv
*/
float zoom_factor = 1.0f + zoom_sensitivity * dt * - ndof->tvec[2];
+ pan_vec[0] = ndof->tvec[0] * ((U.ndof_flag & NDOF_PANX_INVERT_AXIS) ? -1.0f : 1.0f);
+ pan_vec[1] = ndof->tvec[1] * ((U.ndof_flag & NDOF_PANY_INVERT_AXIS) ? -1.0f : 1.0f);
+
+ mul_v2_fl(pan_vec, (pan_sensitivity * dt) / sc->zoom);
+
if (U.ndof_flag & NDOF_ZOOM_INVERT)
zoom_factor = -zoom_factor;
sclip_zoom_set_factor(C, zoom_factor, NULL);
- sc->xof += pan_x;
- sc->yof += pan_y;
+ sc->xof += pan_vec[0];
+ sc->yof += pan_vec[1];
ED_region_tag_redraw(ar);
diff --git a/source/blender/editors/space_image/image_ops.c b/source/blender/editors/space_image/image_ops.c
index bbc24004937..f48532dbac7 100644
--- a/source/blender/editors/space_image/image_ops.c
+++ b/source/blender/editors/space_image/image_ops.c
@@ -599,6 +599,7 @@ static int image_view_ndof_invoke(bContext *C, wmOperator *UNUSED(op), const wmE
else {
SpaceImage *sima = CTX_wm_space_image(C);
ARegion *ar = CTX_wm_region(C);
+ float pan_vec[2];
wmNDOFMotionData *ndof = (wmNDOFMotionData *) event->customdata;
@@ -607,9 +608,6 @@ static int image_view_ndof_invoke(bContext *C, wmOperator *UNUSED(op), const wmE
const float zoom_sensitivity = 0.5f; // 50% per second (I think)
const float pan_sensitivity = 300.f; // screen pixels per second
- float pan_x = pan_sensitivity * dt * ndof->tvec[0] / sima->zoom;
- float pan_y = pan_sensitivity * dt * ndof->tvec[1] / sima->zoom;
-
/* "mouse zoom" factor = 1 + (dx + dy) / 300
* what about "ndof zoom" factor? should behave like this:
* at rest -> factor = 1
@@ -618,12 +616,17 @@ static int image_view_ndof_invoke(bContext *C, wmOperator *UNUSED(op), const wmE
*/
float zoom_factor = 1.f + zoom_sensitivity * dt * -ndof->tvec[2];
+ pan_vec[0] = ndof->tvec[0] * ((U.ndof_flag & NDOF_PANX_INVERT_AXIS) ? -1.0f : 1.0f);
+ pan_vec[1] = ndof->tvec[1] * ((U.ndof_flag & NDOF_PANY_INVERT_AXIS) ? -1.0f : 1.0f);
+
+ mul_v2_fl(pan_vec, (pan_sensitivity * dt) / sima->zoom);
+
if (U.ndof_flag & NDOF_ZOOM_INVERT)
zoom_factor = -zoom_factor;
sima_zoom_set_factor(sima, ar, zoom_factor, NULL);
- sima->xof += pan_x;
- sima->yof += pan_y;
+ sima->xof += pan_vec[0];
+ sima->yof += pan_vec[1];
ED_region_tag_redraw(ar);
diff --git a/source/blender/editors/space_view3d/view3d_edit.c b/source/blender/editors/space_view3d/view3d_edit.c
index 09d1416fbf9..0c4e2bd541a 100644
--- a/source/blender/editors/space_view3d/view3d_edit.c
+++ b/source/blender/editors/space_view3d/view3d_edit.c
@@ -1183,8 +1183,8 @@ static void view3d_ndof_pan_zoom(const struct wmNDOFMotionData *ndof, ScrArea *s
}
pan_vec[0] = ndof->tvec[0] * ((U.ndof_flag & NDOF_PANX_INVERT_AXIS) ? -1.0f : 1.0f);
- pan_vec[1] = ndof->tvec[1] * ((U.ndof_flag & NDOF_PANZ_INVERT_AXIS) ? -1.0f : 1.0f);
- pan_vec[2] = ndof->tvec[2] * ((U.ndof_flag & NDOF_PANY_INVERT_AXIS) ? -1.0f : 1.0f);
+ pan_vec[1] = ndof->tvec[1] * ((U.ndof_flag & NDOF_PANY_INVERT_AXIS) ? -1.0f : 1.0f);
+ pan_vec[2] = ndof->tvec[2] * ((U.ndof_flag & NDOF_PANZ_INVERT_AXIS) ? -1.0f : 1.0f);
if (has_zoom) {
/* zoom with Z */