From 36c41c96e73a77af9c59c36fc27b74e6e139fff7 Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Thu, 21 Feb 2008 14:28:20 +0000 Subject: [PATCH] Fix for bug #5986: snap circle too big when far away from the origin (e.g. 1000 blender units). --- source/blender/include/transform.h | 2 +- source/blender/src/transform_manipulator.c | 6 +++--- source/blender/src/transform_snap.c | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/source/blender/include/transform.h b/source/blender/include/transform.h index 96e45da22da..7ac417fda7c 100644 --- a/source/blender/include/transform.h +++ b/source/blender/include/transform.h @@ -376,7 +376,7 @@ int clipUVTransform(TransInfo *t, float *vec, int resize); /*********************** exported from transform_manipulator.c ********** */ void draw_manipulator_ext(struct ScrArea *sa, int type, char axis, int col, float vec[3], float mat[][3]); int calc_manipulator_stats(struct ScrArea *sa); -float get_drawsize(struct View3D *v3d); +float get_drawsize(struct View3D *v3d, float *co); /*********************** TransData Creation and General Handling *********** */ void createTransData(TransInfo *t); diff --git a/source/blender/src/transform_manipulator.c b/source/blender/src/transform_manipulator.c index 36e5da7f51e..8fcb329f2f9 100644 --- a/source/blender/src/transform_manipulator.c +++ b/source/blender/src/transform_manipulator.c @@ -1359,13 +1359,13 @@ static void draw_manipulator_rotate_cyl(float mat[][4], int moving, int drawflag /* ********************************************* */ -float get_drawsize(View3D *v3d) +float get_drawsize(View3D *v3d, float *co) { ScrArea *sa = v3d->area; float size, vec[3], len1, len2; /* size calculus, depending ortho/persp settings, like initgrabz() */ - size= v3d->persmat[0][3]*v3d->twmat[3][0]+ v3d->persmat[1][3]*v3d->twmat[3][1]+ v3d->persmat[2][3]*v3d->twmat[3][2]+ v3d->persmat[3][3]; + size= v3d->persmat[0][3]*co[0]+ v3d->persmat[1][3]*co[1]+ v3d->persmat[2][3]*co[2]+ v3d->persmat[3][3]; VECCOPY(vec, v3d->persinv[0]); len1= Normalize(vec); @@ -1384,7 +1384,7 @@ float get_drawsize(View3D *v3d) static float get_manipulator_drawsize(ScrArea *sa) { View3D *v3d= sa->spacedata.first; - float size = get_drawsize(v3d); + float size = get_drawsize(v3d, v3d->twmat[3]); size*= (float)U.tw_size; diff --git a/source/blender/src/transform_snap.c b/source/blender/src/transform_snap.c index 2a92629e4c9..1016f74abb3 100644 --- a/source/blender/src/transform_snap.c +++ b/source/blender/src/transform_snap.c @@ -126,7 +126,7 @@ void drawSnapping(TransInfo *t) glDisable(GL_DEPTH_TEST); - size = get_drawsize(G.vd); + size = get_drawsize(G.vd, t->tsnap.snapPoint); size *= 0.5f * BIF_GetThemeValuef(TH_VERTEX_SIZE);