diff options
author | Campbell Barton <ideasman42@gmail.com> | 2013-11-24 14:25:05 +0400 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2013-11-24 14:26:16 +0400 |
commit | 1decd824f3edcb612acd7251ebaa3b2884398b19 (patch) | |
tree | 593dcef16ad71ec9275ae77510cc130dbcf6e95b /source/blender/editors/space_view3d | |
parent | 0c7d2de38219641fc41d468eec675933e26a3602 (diff) |
Code Cleanup: use math functions and reduce View3d axis drawing into a loop
Diffstat (limited to 'source/blender/editors/space_view3d')
-rw-r--r-- | source/blender/editors/space_view3d/drawobject.c | 17 | ||||
-rw-r--r-- | source/blender/editors/space_view3d/view3d_draw.c | 69 | ||||
-rw-r--r-- | source/blender/editors/space_view3d/view3d_edit.c | 21 |
3 files changed, 37 insertions, 70 deletions
diff --git a/source/blender/editors/space_view3d/drawobject.c b/source/blender/editors/space_view3d/drawobject.c index ee9ed96cd33..29ee72c39ab 100644 --- a/source/blender/editors/space_view3d/drawobject.c +++ b/source/blender/editors/space_view3d/drawobject.c @@ -1210,18 +1210,16 @@ static void drawlamp(Scene *scene, View3D *v3d, RegionView3D *rv3d, Base *base, /* skip drawing extra info */ } else if ((la->type == LA_SPOT) || (la->type == LA_YF_PHOTON)) { - lvec[0] = lvec[1] = 0.0; - lvec[2] = 1.0; - x = rv3d->persmat[0][2]; - y = rv3d->persmat[1][2]; - z = rv3d->persmat[2][2]; - vvec[0] = x * ob->obmat[0][0] + y * ob->obmat[0][1] + z * ob->obmat[0][2]; - vvec[1] = x * ob->obmat[1][0] + y * ob->obmat[1][1] + z * ob->obmat[1][2]; - vvec[2] = x * ob->obmat[2][0] + y * ob->obmat[2][1] + z * ob->obmat[2][2]; + copy_v3_fl3(lvec, 0.0f, 0.0f, 1.0f); + copy_v3_fl3(vvec, rv3d->persmat[0][2], rv3d->persmat[1][2], rv3d->persmat[2][2]); + mul_mat3_m4_v3(ob->obmat, vvec); + + x = -la->dist; y = cosf(la->spotsize * (float)(M_PI / 360.0)); + z = x * sqrtf(1.0f - y * y); + spotvolume(lvec, vvec, y); - x = -la->dist; mul_v3_fl(lvec, x); mul_v3_fl(vvec, x); @@ -1232,7 +1230,6 @@ static void drawlamp(Scene *scene, View3D *v3d, RegionView3D *rv3d, Base *base, glVertex3fv(lvec); glEnd(); - z = x * sqrtf(1.0f - y * y); x *= y; /* draw the circle/square at the end of the cone */ diff --git a/source/blender/editors/space_view3d/view3d_draw.c b/source/blender/editors/space_view3d/view3d_draw.c index dc00e55e0f4..3d260378c77 100644 --- a/source/blender/editors/space_view3d/view3d_draw.c +++ b/source/blender/editors/space_view3d/view3d_draw.c @@ -583,7 +583,9 @@ static void draw_view_axis(RegionView3D *rv3d, rcti *rect) float ydisp = 0.0; /* vertical displacement to allow obj info text */ int bright = - 20 * (10 - U.rvibright); /* axis alpha offset (rvibright has range 0-10) */ float vec[3]; + char axis_text[2] = "x"; float dx, dy; + int i; startx += rect->xmin; starty += rect->ymin; @@ -594,60 +596,27 @@ static void draw_view_axis(RegionView3D *rv3d, rcti *rect) glEnable(GL_BLEND); glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); - /* X */ - vec[0] = 1; - vec[1] = vec[2] = 0; - mul_qt_v3(rv3d->viewquat, vec); - dx = vec[0] * k; - dy = vec[1] * k; - - UI_ThemeColorShadeAlpha(TH_AXIS_X, 0, bright); - glBegin(GL_LINES); - glVertex2f(startx, starty + ydisp); - glVertex2f(startx + dx, starty + dy + ydisp); - glEnd(); - - if (fabsf(dx) > toll || fabsf(dy) > toll) { - BLF_draw_default_ascii(startx + dx + 2, starty + dy + ydisp + 2, 0.0f, "x", 1); - } - - /* BLF_draw_default disables blending */ - glEnable(GL_BLEND); + for (i = 0; i < 3; i++) { + zero_v3(vec); + vec[i] = 1.0f; + mul_qt_v3(rv3d->viewquat, vec); + dx = vec[0] * k; + dy = vec[1] * k; - /* Y */ - vec[1] = 1; - vec[0] = vec[2] = 0; - mul_qt_v3(rv3d->viewquat, vec); - dx = vec[0] * k; - dy = vec[1] * k; - - UI_ThemeColorShadeAlpha(TH_AXIS_Y, 0, bright); - glBegin(GL_LINES); - glVertex2f(startx, starty + ydisp); - glVertex2f(startx + dx, starty + dy + ydisp); - glEnd(); - - if (fabsf(dx) > toll || fabsf(dy) > toll) { - BLF_draw_default_ascii(startx + dx + 2, starty + dy + ydisp + 2, 0.0f, "y", 1); - } + UI_ThemeColorShadeAlpha(TH_AXIS_X + i, 0, bright); + glBegin(GL_LINES); + glVertex2f(startx, starty + ydisp); + glVertex2f(startx + dx, starty + dy + ydisp); + glEnd(); - glEnable(GL_BLEND); - - /* Z */ - vec[2] = 1; - vec[1] = vec[0] = 0; - mul_qt_v3(rv3d->viewquat, vec); - dx = vec[0] * k; - dy = vec[1] * k; + if (fabsf(dx) > toll || fabsf(dy) > toll) { + BLF_draw_default_ascii(startx + dx + 2, starty + dy + ydisp + 2, 0.0f, axis_text, 1); + } - UI_ThemeColorShadeAlpha(TH_AXIS_Z, 0, bright); - glBegin(GL_LINES); - glVertex2f(startx, starty + ydisp); - glVertex2f(startx + dx, starty + dy + ydisp); - glEnd(); + axis_text[0]++; - if (fabsf(dx) > toll || fabsf(dy) > toll) { - BLF_draw_default_ascii(startx + dx + 2, starty + dy + ydisp + 2, 0.0f, "z", 1); + /* BLF_draw_default disables blending */ + glEnable(GL_BLEND); } /* restore line-width */ diff --git a/source/blender/editors/space_view3d/view3d_edit.c b/source/blender/editors/space_view3d/view3d_edit.c index 80e5d194d45..b49abaf55ad 100644 --- a/source/blender/editors/space_view3d/view3d_edit.c +++ b/source/blender/editors/space_view3d/view3d_edit.c @@ -4144,16 +4144,17 @@ void ED_view3d_cursor3d_position(bContext *C, float fp[3], const int mval[2]) } } else { - const float dx = ((float)(mval[0] - (ar->winx / 2))) * zfac / (ar->winx / 2); - const float dy = ((float)(mval[1] - (ar->winy / 2))) * zfac / (ar->winy / 2); - const float fz = (rv3d->persmat[0][3] * fp[0] + - rv3d->persmat[1][3] * fp[1] + - rv3d->persmat[2][3] * fp[2] + - rv3d->persmat[3][3]) / zfac; - - fp[0] = (rv3d->persinv[0][0] * dx + rv3d->persinv[1][0] * dy + rv3d->persinv[2][0] * fz) - rv3d->ofs[0]; - fp[1] = (rv3d->persinv[0][1] * dx + rv3d->persinv[1][1] * dy + rv3d->persinv[2][1] * fz) - rv3d->ofs[1]; - fp[2] = (rv3d->persinv[0][2] * dx + rv3d->persinv[1][2] * dy + rv3d->persinv[2][2] * fz) - rv3d->ofs[2]; + float tvec[3]; + + tvec[0] = ((float)(mval[0] - (ar->winx / 2))) * zfac / (ar->winx / 2); + tvec[1] = ((float)(mval[1] - (ar->winy / 2))) * zfac / (ar->winy / 2); + tvec[2] = (rv3d->persmat[0][3] * fp[0] + + rv3d->persmat[1][3] * fp[1] + + rv3d->persmat[2][3] * fp[2] + + rv3d->persmat[3][3]) / zfac; + + mul_mat3_m4_v3(rv3d->persinv, tvec); + sub_v3_v3v3(fp, tvec, rv3d->ofs); } } |