diff options
author | Campbell Barton <ideasman42@gmail.com> | 2010-09-28 08:25:16 +0400 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2010-09-28 08:25:16 +0400 |
commit | 690397efb2ab7b18de88a299cb3d08b8646caa25 (patch) | |
tree | f2e915a974724c9c892a62eb8f627547bbfa0f9e /source/blender/editors/space_view3d/drawobject.c | |
parent | d0da06e5c0c231141b7601e93de9d21270023086 (diff) |
bugfix [#23908] Irratic manipulator scale at far out distances
Diffstat (limited to 'source/blender/editors/space_view3d/drawobject.c')
-rw-r--r-- | source/blender/editors/space_view3d/drawobject.c | 13 |
1 files changed, 6 insertions, 7 deletions
diff --git a/source/blender/editors/space_view3d/drawobject.c b/source/blender/editors/space_view3d/drawobject.c index 44fa0c7b181..d636a544e5b 100644 --- a/source/blender/editors/space_view3d/drawobject.c +++ b/source/blender/editors/space_view3d/drawobject.c @@ -523,12 +523,11 @@ void drawcircball(int mode, float *cent, float rad, float tmat[][4]) } /* circle for object centers, special_color is for library or ob users */ -static void drawcentercircle(View3D *v3d, RegionView3D *rv3d, float *vec, int selstate, int special_color) +static void drawcentercircle(View3D *v3d, RegionView3D *rv3d, float *co, int selstate, int special_color) { - float size; - - size= rv3d->persmat[0][3]*vec[0]+ rv3d->persmat[1][3]*vec[1]+ rv3d->persmat[2][3]*vec[2]+ rv3d->persmat[3][3]; - size*= rv3d->pixsize*((float)U.obcenter_dia*0.5f); + float vec[3]= {rv3d->persmat[0][3], rv3d->persmat[1][3], rv3d->persmat[2][3]}; + float size= rv3d->pixsize*((float)U.obcenter_dia*0.5f); + size *= dot_v3v3(vec, co) + rv3d->persmat[3][3]; /* using gldepthfunc guarantees that it does write z values, but not checks for it, so centers remain visible independt order of drawing */ if(v3d->zbuf) glDepthFunc(GL_ALWAYS); @@ -544,10 +543,10 @@ static void drawcentercircle(View3D *v3d, RegionView3D *rv3d, float *vec, int se else if (selstate == SELECT) UI_ThemeColorShadeAlpha(TH_SELECT, 0, -80); else if (selstate == DESELECT) UI_ThemeColorShadeAlpha(TH_TRANSFORM, 0, -80); } - drawcircball(GL_POLYGON, vec, size, rv3d->viewinv); + drawcircball(GL_POLYGON, co, size, rv3d->viewinv); UI_ThemeColorShadeAlpha(TH_WIRE, 0, -30); - drawcircball(GL_LINE_LOOP, vec, size, rv3d->viewinv); + drawcircball(GL_LINE_LOOP, co, size, rv3d->viewinv); glDisable(GL_BLEND); if(v3d->zbuf) glDepthFunc(GL_LEQUAL); |