diff options
author | Campbell Barton <ideasman42@gmail.com> | 2010-08-25 16:01:15 +0400 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2010-08-25 16:01:15 +0400 |
commit | 967154497dea50b75771b5ae3df630d8f739ac13 (patch) | |
tree | 418a24c001505c4c4f27d352f9fadf44f5e6adbe | |
parent | 85dcd4c636e6ef68a962d37666412f0cc124f6f6 (diff) |
patch [#23376] Fix for Bug[[#23351] X-Ray + Transparency removes X-Ray effect
from Phil Gosch (saphires)
minor edit on the patch, was adding V3D_XRAY and V3D_XRAYTRANSP lists, only add to one.
4 files changed, 20 insertions, 3 deletions
diff --git a/source/blender/editors/space_view3d/drawobject.c b/source/blender/editors/space_view3d/drawobject.c index 967b800b97f..df3bc3d479d 100644 --- a/source/blender/editors/space_view3d/drawobject.c +++ b/source/blender/editors/space_view3d/drawobject.c @@ -5537,8 +5537,13 @@ void draw_object(Scene *scene, ARegion *ar, View3D *v3d, Base *base, int flag) /* don't do xray in particle mode, need the z-buffer */ if(!(ob->mode & OB_MODE_PARTICLE_EDIT)) { /* xray and transp are set when it is drawing the 2nd/3rd pass */ - if(!v3d->xray && !v3d->transp && (ob->dtx & OB_DRAWXRAY) && !(ob->dtx & OB_DRAWTRANSP)) { - add_view3d_after(v3d, base, V3D_XRAY, flag); + if(!v3d->xray && !v3d->transp && (ob->dtx & OB_DRAWXRAY)) { + if(ob->dtx & OB_DRAWTRANSP) { + add_view3d_after(v3d, base, V3D_XRAYTRANSP, flag); + } + else { + add_view3d_after(v3d, base, V3D_XRAY, flag); + } return; } } diff --git a/source/blender/editors/space_view3d/drawvolume.c b/source/blender/editors/space_view3d/drawvolume.c index 65786901868..678920f8173 100644 --- a/source/blender/editors/space_view3d/drawvolume.c +++ b/source/blender/editors/space_view3d/drawvolume.c @@ -116,6 +116,7 @@ static void tend ( void ) { gettimeofday ( &_tend,&tz ); } + #if 0 static double tval() { double t1, t2; @@ -123,6 +124,7 @@ static double tval() t2 = ( double ) _tend.tv_sec*1000 + ( double ) _tend.tv_usec/ ( 1000 ); return t2-t1; } + #endif #endif struct GPUTexture; diff --git a/source/blender/editors/space_view3d/view3d_draw.c b/source/blender/editors/space_view3d/view3d_draw.c index e48aef2a12c..db6127210f7 100644 --- a/source/blender/editors/space_view3d/view3d_draw.c +++ b/source/blender/editors/space_view3d/view3d_draw.c @@ -1440,7 +1440,7 @@ static void view3d_draw_xray(Scene *scene, ARegion *ar, View3D *v3d, int clear) int doit= 0; for(v3da= v3d->afterdraw.first; v3da; v3da= v3da->next) - if(v3da->type==V3D_XRAY) doit= 1; + if(v3da->type==V3D_XRAY || v3da->type==V3D_XRAYTRANSP) doit= 1; if(doit) { if(clear && v3d->zbuf) glClear(GL_DEPTH_BUFFER_BIT); @@ -1453,6 +1453,13 @@ static void view3d_draw_xray(Scene *scene, ARegion *ar, View3D *v3d, int clear) BLI_remlink(&v3d->afterdraw, v3da); MEM_freeN(v3da); } + else if(v3da->type==V3D_XRAYTRANSP){ + v3d->transp= TRUE; + draw_object(scene, ar, v3d, v3da->base, v3da->flag); + BLI_remlink(&v3d->afterdraw, v3da); + MEM_freeN(v3da); + v3d->transp= FALSE; + } } v3d->xray= FALSE; } @@ -1767,6 +1774,8 @@ void draw_depth(Scene *scene, ARegion *ar, View3D *v3d, int (* func)(void *)) v3d->xray= TRUE; v3d->transp= FALSE; } else if (v3da->type==V3D_TRANSP) { v3d->xray= FALSE; v3d->transp= TRUE; + } else if (v3da->type == V3D_XRAYTRANSP) { + v3d->xray= TRUE; v3d->transp= TRUE; } draw_object(scene, ar, v3d, v3da->base, 0); /* Draw Xray or Transp objects normally */ diff --git a/source/blender/editors/space_view3d/view3d_intern.h b/source/blender/editors/space_view3d/view3d_intern.h index d51a45f92ad..5042411183f 100644 --- a/source/blender/editors/space_view3d/view3d_intern.h +++ b/source/blender/editors/space_view3d/view3d_intern.h @@ -56,6 +56,7 @@ struct bMotionPath; #define V3D_XRAY 1 #define V3D_TRANSP 2 +#define V3D_XRAYTRANSP 4 #define V3D_SELECT_MOUSE 1 |