Draw Seams in subsurf optimal mode. They were already subdivided correctly,
just needed to be drawn.
This commit is contained in:
		@@ -2642,6 +2642,46 @@ static void drawmeshwire_wirextra(DispListMesh *dlm, int optimal, char alpha)
 | 
			
		||||
	}
 | 
			
		||||
}	
 | 
			
		||||
 | 
			
		||||
static void drawmeshwire_seams(DispListMesh *dlm, int optimal)
 | 
			
		||||
{
 | 
			
		||||
	EditMesh *em= G.editMesh;
 | 
			
		||||
	EditEdge *eed;
 | 
			
		||||
 | 
			
		||||
	BIF_ThemeColor(TH_EDGE_SEAM);
 | 
			
		||||
	glLineWidth(2);
 | 
			
		||||
 | 
			
		||||
	if(dlm && optimal) {
 | 
			
		||||
		MEdge *medge= dlm->medge;
 | 
			
		||||
		MVert *mvert= dlm->mvert;
 | 
			
		||||
		int a;
 | 
			
		||||
	
 | 
			
		||||
		glBegin(GL_LINES);
 | 
			
		||||
		for (a=0; a<dlm->totedge; a++, medge++) {
 | 
			
		||||
			if(medge->flag & ME_EDGEDRAW) {
 | 
			
		||||
				eed= dlm->editedge[a];
 | 
			
		||||
				if(eed && eed->h==0 && eed->seam) {
 | 
			
		||||
					glVertex3fv(mvert[medge->v1].co); 
 | 
			
		||||
					glVertex3fv(mvert[medge->v2].co);
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
		glEnd();
 | 
			
		||||
	}
 | 
			
		||||
	else {
 | 
			
		||||
		glBegin(GL_LINES);
 | 
			
		||||
		for(eed= em->edges.first; eed; eed= eed->next) {
 | 
			
		||||
			if(eed->h==0 && eed->seam) {
 | 
			
		||||
				glVertex3fv(eed->v1->co);
 | 
			
		||||
				glVertex3fv(eed->v2->co);
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
		glEnd();
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	cpack(0x0);
 | 
			
		||||
	glLineWidth(1);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void drawmeshwire(Object *ob)
 | 
			
		||||
{
 | 
			
		||||
	EditMesh *em = G.editMesh;
 | 
			
		||||
@@ -2651,7 +2691,6 @@ static void drawmeshwire(Object *ob)
 | 
			
		||||
	MFace *mface;
 | 
			
		||||
	DispList *dl;
 | 
			
		||||
	Material *ma;
 | 
			
		||||
	EditEdge *eed;
 | 
			
		||||
	EditFace *efa;
 | 
			
		||||
	float fvec[3], *f1, *f2, *f3, *f4, *extverts=NULL;
 | 
			
		||||
	int a, start, end, test, ok, optimal=0;
 | 
			
		||||
@@ -2725,6 +2764,9 @@ static void drawmeshwire(Object *ob)
 | 
			
		||||
		
 | 
			
		||||
		/* here starts all fancy draw-extra over */
 | 
			
		||||
		
 | 
			
		||||
		if(G.f & G_DRAWSEAMS)
 | 
			
		||||
			drawmeshwire_seams(dlm, optimal);
 | 
			
		||||
 | 
			
		||||
		/* show wires in transparant when no zbuf clipping for select */
 | 
			
		||||
		if(G.zbuf && (G.vd->flag & V3D_ZBUF_SELECT)==0) {
 | 
			
		||||
			glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
 | 
			
		||||
@@ -2738,23 +2780,6 @@ static void drawmeshwire(Object *ob)
 | 
			
		||||
 | 
			
		||||
		if(G.f & G_DRAWCREASES) drawmeshwire_creases();
 | 
			
		||||
 | 
			
		||||
		if(optimal==0 && G.f & G_DRAWSEAMS) {
 | 
			
		||||
			BIF_ThemeColor(TH_EDGE_SEAM);
 | 
			
		||||
			glLineWidth(2);
 | 
			
		||||
 | 
			
		||||
			glBegin(GL_LINES);
 | 
			
		||||
			for(eed= em->edges.first; eed; eed= eed->next) {
 | 
			
		||||
				if(eed->h==0 && eed->seam) {
 | 
			
		||||
					glVertex3fv(eed->v1->co);
 | 
			
		||||
					glVertex3fv(eed->v2->co);
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
			glEnd();
 | 
			
		||||
 | 
			
		||||
			cpack(0x0);
 | 
			
		||||
			glLineWidth(1);
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		if(ob!=G.obedit) return;
 | 
			
		||||
		
 | 
			
		||||
		calc_meshverts();
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user