[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [25676] trunk/blender/source/blender/ editors/space_view3d: dont draw object centers when drawing the depth buffer, grease pencil would get its depth messed up by object centers when with ' Surface' mode.

Campbell Barton ideasman42 at gmail.com
Sun Jan 3 02:55:20 CET 2010


Revision: 25676
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=25676
Author:   campbellbarton
Date:     2010-01-03 02:55:20 +0100 (Sun, 03 Jan 2010)

Log Message:
-----------
dont draw object centers when drawing the depth buffer, grease pencil would get its depth messed up by object centers when with 'Surface' mode.
Also fix own error with drawing grease pencil depths, wasnt setting v3d->zbuf back to its original value.

Modified Paths:
--------------
    trunk/blender/source/blender/editors/space_view3d/drawobject.c
    trunk/blender/source/blender/editors/space_view3d/view3d_draw.c

Modified: trunk/blender/source/blender/editors/space_view3d/drawobject.c
===================================================================
--- trunk/blender/source/blender/editors/space_view3d/drawobject.c	2010-01-03 01:30:07 UTC (rev 25675)
+++ trunk/blender/source/blender/editors/space_view3d/drawobject.c	2010-01-03 01:55:20 UTC (rev 25676)
@@ -798,26 +798,29 @@
 	curcol[3]= 0.6;
 	glColor4fv(curcol);
 	
-	if(ob->id.us>1) {
-		if (ob==OBACT || (ob->flag & SELECT)) glColor4ub(0x88, 0xFF, 0xFF, 155);
-		else glColor4ub(0x77, 0xCC, 0xCC, 155);
+	if(lampsize > 0.0f) {
+
+		if(ob->id.us>1) {
+			if (ob==OBACT || (ob->flag & SELECT)) glColor4ub(0x88, 0xFF, 0xFF, 155);
+			else glColor4ub(0x77, 0xCC, 0xCC, 155);
+		}
+		
+		/* Inner Circle */
+		VECCOPY(vec, ob->obmat[3]);
+		glEnable(GL_BLEND);
+		drawcircball(GL_LINE_LOOP, vec, lampsize, imat);
+		glDisable(GL_BLEND);
+		drawcircball(GL_POLYGON, vec, lampsize, imat);
+		
+		/* restore */
+		if(ob->id.us>1)
+			glColor4fv(curcol);
+			
+		/* Outer circle */
+		circrad = 3.0f*lampsize;
+		drawcircball(GL_LINE_LOOP, vec, circrad, imat);
 	}
 	
-	/* Inner Circle */
-	VECCOPY(vec, ob->obmat[3]);
-	glEnable(GL_BLEND);
-	drawcircball(GL_LINE_LOOP, vec, lampsize, imat);
-	glDisable(GL_BLEND);
-	drawcircball(GL_POLYGON, vec, lampsize, imat);
-	
-	/* restore */
-	if(ob->id.us>1)
-		glColor4fv(curcol);
-		
-	/* Outer circle */
-	circrad = 3.0f*lampsize;
-	drawcircball(GL_LINE_LOOP, vec, circrad, imat);
-	
 	setlinestyle(3);
 
 	/* draw dashed outer circle if shadow is on. remember some lamps can't have certain shadows! */
@@ -6154,7 +6157,10 @@
 			} 
 			else if((flag & DRAW_CONSTCOLOR)==0) {
 				/* we don't draw centers for duplicators and sets */
-				drawcentercircle(v3d, rv3d, ob->obmat[3], do_draw_center, ob->id.lib || ob->id.us>1);
+				if(U.obcenter_dia > 0) {
+                    /* check > 0 otherwise grease pencil can draw into the circle select which is annoying. */
+                    drawcentercircle(v3d, rv3d, ob->obmat[3], do_draw_center, ob->id.lib || ob->id.us>1);
+				}
 			}
 		}
 	}

Modified: trunk/blender/source/blender/editors/space_view3d/view3d_draw.c
===================================================================
--- trunk/blender/source/blender/editors/space_view3d/view3d_draw.c	2010-01-03 01:30:07 UTC (rev 25675)
+++ trunk/blender/source/blender/editors/space_view3d/view3d_draw.c	2010-01-03 01:55:20 UTC (rev 25676)
@@ -1645,6 +1645,7 @@
 
 void draw_depth_gpencil(Scene *scene, ARegion *ar, View3D *v3d)
 {
+	short zbuf= v3d->zbuf;
 	RegionView3D *rv3d= ar->regiondata;
 
 	setwinmatrixview3d(ar, v3d, NULL);	/* 0= no pick rect */
@@ -1662,7 +1663,9 @@
 	glEnable(GL_DEPTH_TEST);
 
 	draw_gpencil_3dview_ext(scene, ar, 1);
-	return;
+	
+	v3d->zbuf= zbuf;
+
 }
 
 void draw_depth(Scene *scene, ARegion *ar, View3D *v3d, int (* func)(void *))
@@ -1670,17 +1673,16 @@
 	RegionView3D *rv3d= ar->regiondata;
 	Base *base;
 	Scene *sce;
-	short zbuf, flag;
-	float glalphaclip;
+	short zbuf= v3d->zbuf;
+	short flag= v3d->flag;
+	float glalphaclip= U.glalphaclip;
+	int obcenter_dia= U.obcenter_dia;
 	/* temp set drawtype to solid */
 	
 	/* Setting these temporarily is not nice */
-	zbuf = v3d->zbuf;
-	flag = v3d->flag;
-	glalphaclip = U.glalphaclip;
-	
+	v3d->flag &= ~V3D_SELECT_OUTLINE;
 	U.glalphaclip = 0.5; /* not that nice but means we wont zoom into billboards */
-	v3d->flag &= ~V3D_SELECT_OUTLINE;
+	U.obcenter_dia= 0;
 	
 	setwinmatrixview3d(ar, v3d, NULL);	/* 0= no pick rect */
 	setviewmatrixview3d(scene, v3d, rv3d);	/* note: calls where_is_object for camera... */
@@ -1764,6 +1766,7 @@
 	v3d->zbuf = zbuf;
 	U.glalphaclip = glalphaclip;
 	v3d->flag = flag;
+	U.obcenter_dia= obcenter_dia;
 }
 
 typedef struct View3DShadow {





More information about the Bf-blender-cvs mailing list