diff options
author | Martin Poirier <theeth@yahoo.com> | 2010-01-10 23:31:23 +0300 |
---|---|---|
committer | Martin Poirier <theeth@yahoo.com> | 2010-01-10 23:31:23 +0300 |
commit | 0f4741050963e5f2928fc537818890de1a206525 (patch) | |
tree | 0b972defc3a7808300d7d2c187a89b87749834ab | |
parent | 0185e248619b883aa818d136ee1b8bd4bfa9f8ef (diff) |
[#20522] alt+b in object mode has an offset depending on the selected object's origin
View clipping doesn't need object matrix in view transformation (permit NULL object pointer to get global transformation).
-rw-r--r-- | source/blender/editors/space_view3d/view3d_edit.c | 2 | ||||
-rw-r--r-- | source/blender/editors/space_view3d/view3d_select.c | 9 |
2 files changed, 9 insertions, 2 deletions
diff --git a/source/blender/editors/space_view3d/view3d_edit.c b/source/blender/editors/space_view3d/view3d_edit.c index 74362d29e40..1e23d27fe77 100644 --- a/source/blender/editors/space_view3d/view3d_edit.c +++ b/source/blender/editors/space_view3d/view3d_edit.c @@ -2075,7 +2075,7 @@ static int view3d_clipping_exec(bContext *C, wmOperator *op) view3d_operator_needs_opengl(C); view3d_set_viewcontext(C, &vc); - view3d_get_transformation(vc.ar, vc.rv3d, vc.obact, &mats); + view3d_get_transformation(vc.ar, vc.rv3d, NULL, &mats); /* NULL because we don't want it in object space */ view3d_calculate_clipping(rv3d->clipbb, rv3d->clip, &mats, &rect); return OPERATOR_FINISHED; diff --git a/source/blender/editors/space_view3d/view3d_select.c b/source/blender/editors/space_view3d/view3d_select.c index 0ed7f4c0d0a..331d3c4fefe 100644 --- a/source/blender/editors/space_view3d/view3d_select.c +++ b/source/blender/editors/space_view3d/view3d_select.c @@ -124,12 +124,19 @@ void view3d_get_view_aligned_coordinate(ViewContext *vc, float *fp, short mval[2 } } +/* + * ob == NULL if you want global matrices + * */ void view3d_get_transformation(ARegion *ar, RegionView3D *rv3d, Object *ob, bglMats *mats) { float cpy[4][4]; int i, j; - mul_m4_m4m4(cpy, ob->obmat, rv3d->viewmat); + if (ob) { + mul_m4_m4m4(cpy, ob->obmat, rv3d->viewmat); + } else { + copy_m4_m4(cpy, rv3d->viewmat); + } for(i = 0; i < 4; ++i) { for(j = 0; j < 4; ++j) { |