[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [14706] trunk/blender/source/blender:

Brecht Van Lommel brechtvanlommel at pandora.be
Tue May 6 17:31:17 CEST 2008


Revision: 14706
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=14706
Author:   blendix
Date:     2008-05-06 17:31:17 +0200 (Tue, 06 May 2008)

Log Message:
-----------

Fix for bug: drawing x-ray and transparency with sets didn't
work well, now it draws those type of objects from sets also
at the end.

Modified Paths:
--------------
    trunk/blender/source/blender/include/BSE_drawview.h
    trunk/blender/source/blender/src/drawobject.c
    trunk/blender/source/blender/src/drawview.c

Modified: trunk/blender/source/blender/include/BSE_drawview.h
===================================================================
--- trunk/blender/source/blender/include/BSE_drawview.h	2008-05-06 09:43:28 UTC (rev 14705)
+++ trunk/blender/source/blender/include/BSE_drawview.h	2008-05-06 15:31:17 UTC (rev 14706)
@@ -46,7 +46,7 @@
 /* View3DAfter->type */
 #define V3D_XRAY	1
 #define V3D_TRANSP	2
-void add_view3d_after(struct View3D *v3d, struct Base *base, int type);
+void add_view3d_after(struct View3D *v3d, struct Base *base, int type, int flag);
 
 void backdrawview3d(int test);
 void check_backbuf(void);

Modified: trunk/blender/source/blender/src/drawobject.c
===================================================================
--- trunk/blender/source/blender/src/drawobject.c	2008-05-06 09:43:28 UTC (rev 14705)
+++ trunk/blender/source/blender/src/drawobject.c	2008-05-06 15:31:17 UTC (rev 14706)
@@ -2485,7 +2485,7 @@
 	}
 	
 	/* init_gl_materials did the proper checking if this is needed */
-	if(has_alpha) add_view3d_after(G.vd, base, V3D_TRANSP);
+	if(has_alpha) add_view3d_after(G.vd, base, V3D_TRANSP, flag);
 	
 	return retval;
 }
@@ -4663,7 +4663,7 @@
 		if(!(G.f & G_PARTICLEEDIT)) {
 			/* xray and transp are set when it is drawing the 2nd/3rd pass */
 			if(!G.vd->xray && !G.vd->transp && (ob->dtx & OB_DRAWXRAY)) {
-				add_view3d_after(G.vd, base, V3D_XRAY);
+				add_view3d_after(G.vd, base, V3D_XRAY, flag);
 				return;
 			}
 		}

Modified: trunk/blender/source/blender/src/drawview.c
===================================================================
--- trunk/blender/source/blender/src/drawview.c	2008-05-06 09:43:28 UTC (rev 14705)
+++ trunk/blender/source/blender/src/drawview.c	2008-05-06 15:31:17 UTC (rev 14706)
@@ -2663,21 +2663,22 @@
 typedef struct View3DAfter {
 	struct View3DAfter *next, *prev;
 	struct Base *base;
-	int type;
+	int type, flag;
 } View3DAfter;
 
 /* temp storage of Objects that need to be drawn as last */
-void add_view3d_after(View3D *v3d, Base *base, int type)
+void add_view3d_after(View3D *v3d, Base *base, int type, int flag)
 {
 	View3DAfter *v3da= MEM_callocN(sizeof(View3DAfter), "View 3d after");
 
 	BLI_addtail(&v3d->afterdraw, v3da);
 	v3da->base= base;
 	v3da->type= type;
+	v3da->flag= flag;
 }
 
 /* clears zbuffer and draws it over */
-static void view3d_draw_xray(View3D *v3d, int flag)
+static void view3d_draw_xray(View3D *v3d)
 {
 	View3DAfter *v3da, *next;
 	int doit= 0;
@@ -2692,7 +2693,7 @@
 		for(v3da= v3d->afterdraw.first; v3da; v3da= next) {
 			next= v3da->next;
 			if(v3da->type==V3D_XRAY) {
-				draw_object(v3da->base, flag);
+				draw_object(v3da->base, v3da->flag);
 				BLI_remlink(&v3d->afterdraw, v3da);
 				MEM_freeN(v3da);
 			}
@@ -2702,7 +2703,7 @@
 }
 
 /* disables write in zbuffer and draws it over */
-static void view3d_draw_transp(View3D *v3d, int flag)
+static void view3d_draw_transp(View3D *v3d)
 {
 	View3DAfter *v3da, *next;
 
@@ -2712,7 +2713,7 @@
 	for(v3da= v3d->afterdraw.first; v3da; v3da= next) {
 		next= v3da->next;
 		if(v3da->type==V3D_TRANSP) {
-			draw_object(v3da->base, flag);
+			draw_object(v3da->base, v3da->flag);
 			BLI_remlink(&v3d->afterdraw, v3da);
 			MEM_freeN(v3da);
 		}
@@ -3102,9 +3103,7 @@
 			}
 		}
 
-		/* Transp and X-ray afterdraw stuff */
-		view3d_draw_xray(v3d, DRAW_CONSTCOLOR);	// clears zbuffer if it is used!
-		view3d_draw_transp(v3d, DRAW_CONSTCOLOR);
+		/* Transp and X-ray afterdraw stuff for sets is done later */
 	}
 	
 	/* then draw not selected and the duplis, but skip editmode object */
@@ -3150,8 +3149,8 @@
 	if(G.scene->radio) RAD_drawall(v3d->drawtype>=OB_SOLID);
 	
 	/* Transp and X-ray afterdraw stuff */
-	view3d_draw_xray(v3d, 0);	// clears zbuffer if it is used!
-	view3d_draw_transp(v3d, 0);
+	view3d_draw_xray(v3d);	// clears zbuffer if it is used!
+	view3d_draw_transp(v3d);
 
 	if(!retopo && sculptparticle && (obact && (OBACT->dtx & OB_DRAWXRAY))) {
 		if(G.f & G_SCULPTMODE)
@@ -3327,9 +3326,7 @@
 			}
 		}
 		
-		/* Transp and X-ray afterdraw stuff */
-		view3d_draw_xray(v3d, DRAW_CONSTCOLOR);	// clears zbuffer if it is used!
-		view3d_draw_transp(v3d, DRAW_CONSTCOLOR);
+		/* Transp and X-ray afterdraw stuff for sets is done later */
 	}
 
 	/* first not selected and duplis */
@@ -3367,8 +3364,8 @@
 	if(G.scene->radio) RAD_drawall(v3d->drawtype>=OB_SOLID);
 
 	/* Transp and X-ray afterdraw stuff */
-	view3d_draw_xray(v3d, 0);	// clears zbuffer if it is used!
-	view3d_draw_transp(v3d, 0);
+	view3d_draw_xray(v3d);	// clears zbuffer if it is used!
+	view3d_draw_transp(v3d);
 	
 	if(v3d->flag & V3D_CLIPPING)
 		view3d_clr_clipping();





More information about the Bf-blender-cvs mailing list