Code cleanup: use named values for options in DerivedMesh drawing.
The DMSetDrawOptions[Tex] callbacks return 0 (skip), 1 (draw), or 2 (either stipple or skip mcols.) In the CDDM, EDDM, and CCGDM draw functions, as well as the callbacks in drawmesh/drawobject, replace these numbers with values from an enum, DMDrawOptions.
This commit is contained in:
		@@ -414,7 +414,7 @@ static void emDM_drawMappedEdges(
 | 
			
		||||
		glBegin(GL_LINES);
 | 
			
		||||
		eed = BM_iter_new(&iter, bmdm->tc->bm, BM_EDGES_OF_MESH, NULL);
 | 
			
		||||
		for (i=0; eed; i++,eed=BM_iter_step(&iter)) {
 | 
			
		||||
			if (!setDrawOptions || setDrawOptions(userData, i)) {
 | 
			
		||||
			if (!setDrawOptions || (setDrawOptions(userData, i) != DM_DRAW_OPTION_SKIP)) {
 | 
			
		||||
				glVertex3fv(bmdm->vertexCos[BM_elem_index_get(eed->v1)]);
 | 
			
		||||
				glVertex3fv(bmdm->vertexCos[BM_elem_index_get(eed->v2)]);
 | 
			
		||||
			}
 | 
			
		||||
@@ -425,7 +425,7 @@ static void emDM_drawMappedEdges(
 | 
			
		||||
		glBegin(GL_LINES);
 | 
			
		||||
		eed = BM_iter_new(&iter, bmdm->tc->bm, BM_EDGES_OF_MESH, NULL);
 | 
			
		||||
		for (i=0; eed; i++,eed=BM_iter_step(&iter)) {
 | 
			
		||||
			if (!setDrawOptions || setDrawOptions(userData, i)) {
 | 
			
		||||
			if (!setDrawOptions || (setDrawOptions(userData, i) != DM_DRAW_OPTION_SKIP)) {
 | 
			
		||||
				glVertex3fv(eed->v1->co);
 | 
			
		||||
				glVertex3fv(eed->v2->co);
 | 
			
		||||
			}
 | 
			
		||||
@@ -459,7 +459,7 @@ static void emDM_drawMappedEdgesInterp(
 | 
			
		||||
		glBegin(GL_LINES);
 | 
			
		||||
		eed = BM_iter_new(&iter, bmdm->tc->bm, BM_EDGES_OF_MESH, NULL);
 | 
			
		||||
		for (i=0; eed; i++,eed=BM_iter_step(&iter)) {
 | 
			
		||||
			if (!setDrawOptions || setDrawOptions(userData, i)) {
 | 
			
		||||
			if (!setDrawOptions || (setDrawOptions(userData, i) != DM_DRAW_OPTION_SKIP)) {
 | 
			
		||||
				setDrawInterpOptions(userData, i, 0.0);
 | 
			
		||||
				glVertex3fv(bmdm->vertexCos[BM_elem_index_get(eed->v1)]);
 | 
			
		||||
				setDrawInterpOptions(userData, i, 1.0);
 | 
			
		||||
@@ -472,7 +472,7 @@ static void emDM_drawMappedEdgesInterp(
 | 
			
		||||
		glBegin(GL_LINES);
 | 
			
		||||
		eed = BM_iter_new(&iter, bmdm->tc->bm, BM_EDGES_OF_MESH, NULL);
 | 
			
		||||
		for (i=0; eed; i++,eed=BM_iter_step(&iter)) {
 | 
			
		||||
			if (!setDrawOptions || setDrawOptions(userData, i)) {
 | 
			
		||||
			if (!setDrawOptions || (setDrawOptions(userData, i) != DM_DRAW_OPTION_SKIP)) {
 | 
			
		||||
				setDrawInterpOptions(userData, i, 0.0);
 | 
			
		||||
				glVertex3fv(eed->v1->co);
 | 
			
		||||
				setDrawInterpOptions(userData, i, 1.0);
 | 
			
		||||
@@ -590,7 +590,8 @@ static void emDM_drawMappedFaces(
 | 
			
		||||
	struct BMLoop *(*looptris)[3]= bmdm->tc->looptris;
 | 
			
		||||
	const int tottri= bmdm->tc->tottri;
 | 
			
		||||
	const int lasttri= tottri - 1; /* compare agasint this a lot */
 | 
			
		||||
	int i, draw, flush;
 | 
			
		||||
	DMDrawOption draw_option;
 | 
			
		||||
	int i, flush;
 | 
			
		||||
	const int skip_normals= !glIsEnabled(GL_LIGHTING); /* could be passed as an arg */
 | 
			
		||||
 | 
			
		||||
	/* GL_ZERO is used to detect if drawing has started or not */
 | 
			
		||||
@@ -618,10 +619,12 @@ static void emDM_drawMappedFaces(
 | 
			
		||||
			efa = l[0]->f;
 | 
			
		||||
			drawSmooth= (flag & DM_DRAW_ALWAYS_SMOOTH) ? 1 : BM_elem_flag_test(efa, BM_ELEM_SMOOTH);
 | 
			
		||||
 | 
			
		||||
			draw = setDrawOptions==NULL ? 1 : setDrawOptions(userData, BM_elem_index_get(efa));
 | 
			
		||||
			if (draw) {
 | 
			
		||||
			draw_option = (!setDrawOptions ?
 | 
			
		||||
						   DM_DRAW_OPTION_NORMAL :
 | 
			
		||||
						   setDrawOptions(userData, BM_elem_index_get(efa)));
 | 
			
		||||
			if (draw_option != DM_DRAW_OPTION_SKIP) {
 | 
			
		||||
				const GLenum poly_type= GL_TRIANGLES; /* BMESH NOTE, this is odd but keep it for now to match trunk */
 | 
			
		||||
				if (draw==2) { /* enabled with stipple */
 | 
			
		||||
				if (draw_option == DM_DRAW_OPTION_STIPPLE) { /* enabled with stipple */
 | 
			
		||||
 | 
			
		||||
					if (poly_prev != GL_ZERO) glEnd();
 | 
			
		||||
					poly_prev= GL_ZERO; /* force glBegin */
 | 
			
		||||
@@ -667,7 +670,7 @@ static void emDM_drawMappedFaces(
 | 
			
		||||
					}
 | 
			
		||||
				}
 | 
			
		||||
 | 
			
		||||
				flush= (draw==2);
 | 
			
		||||
				flush= (draw_option == DM_DRAW_OPTION_STIPPLE);
 | 
			
		||||
				if (!skip_normals && !flush && (i != lasttri))
 | 
			
		||||
					flush|= efa->mat_nr != looptris[i + 1][0]->f->mat_nr; /* TODO, make this neater */
 | 
			
		||||
 | 
			
		||||
@@ -690,10 +693,12 @@ static void emDM_drawMappedFaces(
 | 
			
		||||
			efa = l[0]->f;
 | 
			
		||||
			drawSmooth= (flag & DM_DRAW_ALWAYS_SMOOTH) ? 1 : BM_elem_flag_test(efa, BM_ELEM_SMOOTH);
 | 
			
		||||
 | 
			
		||||
			draw = setDrawOptions==NULL ? 1 : setDrawOptions(userData, BM_elem_index_get(efa));
 | 
			
		||||
			if (draw) {
 | 
			
		||||
			draw_option = (!setDrawOptions ?
 | 
			
		||||
						   DM_DRAW_OPTION_NORMAL :
 | 
			
		||||
						   setDrawOptions(userData, BM_elem_index_get(efa)));
 | 
			
		||||
			if (draw_option != DM_DRAW_OPTION_SKIP) {
 | 
			
		||||
				const GLenum poly_type= GL_TRIANGLES; /* BMESH NOTE, this is odd but keep it for now to match trunk */
 | 
			
		||||
				if (draw==2) { /* enabled with stipple */
 | 
			
		||||
				if (draw_option == DM_DRAW_OPTION_STIPPLE) { /* enabled with stipple */
 | 
			
		||||
 | 
			
		||||
					if (poly_prev != GL_ZERO) glEnd();
 | 
			
		||||
					poly_prev= GL_ZERO; /* force glBegin */
 | 
			
		||||
@@ -739,7 +744,7 @@ static void emDM_drawMappedFaces(
 | 
			
		||||
					}
 | 
			
		||||
				}
 | 
			
		||||
 | 
			
		||||
				flush= (draw==2);
 | 
			
		||||
				flush= (draw_option == DM_DRAW_OPTION_STIPPLE);
 | 
			
		||||
				if (!skip_normals && !flush && (i != lasttri)) {
 | 
			
		||||
					flush|= efa->mat_nr != looptris[i + 1][0]->f->mat_nr; /* TODO, make this neater */
 | 
			
		||||
				}
 | 
			
		||||
@@ -815,7 +820,7 @@ static void emDM_drawFacesTex_common(
 | 
			
		||||
			MTFace mtf = {{{0}}};
 | 
			
		||||
			/*unsigned char *cp= NULL;*/ /*UNUSED*/
 | 
			
		||||
			int drawSmooth= BM_elem_flag_test(ls[0]->f, BM_ELEM_SMOOTH);
 | 
			
		||||
			int flag;
 | 
			
		||||
			DMDrawOption draw_option;
 | 
			
		||||
 | 
			
		||||
			efa = ls[0]->f;
 | 
			
		||||
 | 
			
		||||
@@ -824,13 +829,13 @@ static void emDM_drawFacesTex_common(
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
			if (drawParams)
 | 
			
		||||
				flag= drawParams(&mtf, has_vcol, efa->mat_nr);
 | 
			
		||||
				draw_option= drawParams(&mtf, has_vcol, efa->mat_nr);
 | 
			
		||||
			else if (drawParamsMapped)
 | 
			
		||||
				flag= drawParamsMapped(userData, BM_elem_index_get(efa));
 | 
			
		||||
				draw_option= drawParamsMapped(userData, BM_elem_index_get(efa));
 | 
			
		||||
			else
 | 
			
		||||
				flag= 1;
 | 
			
		||||
				draw_option= DM_DRAW_OPTION_NORMAL;
 | 
			
		||||
 | 
			
		||||
			if (flag != 0) { /* flag 0 == the face is hidden or invisible */
 | 
			
		||||
			if (draw_option != DM_DRAW_OPTION_SKIP) {
 | 
			
		||||
 | 
			
		||||
				if (!drawSmooth) {
 | 
			
		||||
					glNormal3fv(bmdm->polyNos[BM_elem_index_get(efa)]);
 | 
			
		||||
@@ -886,7 +891,7 @@ static void emDM_drawFacesTex_common(
 | 
			
		||||
			MTFace mtf = {{{0}}};
 | 
			
		||||
			/*unsigned char *cp= NULL;*/ /*UNUSED*/
 | 
			
		||||
			int drawSmooth= BM_elem_flag_test(ls[0]->f, BM_ELEM_SMOOTH);
 | 
			
		||||
			int flag;
 | 
			
		||||
			DMDrawOption draw_option;
 | 
			
		||||
 | 
			
		||||
			efa = ls[0]->f;
 | 
			
		||||
 | 
			
		||||
@@ -895,13 +900,13 @@ static void emDM_drawFacesTex_common(
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
			if (drawParams)
 | 
			
		||||
				flag= drawParams(&mtf, has_vcol, efa->mat_nr);
 | 
			
		||||
				draw_option= drawParams(&mtf, has_vcol, efa->mat_nr);
 | 
			
		||||
			else if (drawParamsMapped)
 | 
			
		||||
				flag= drawParamsMapped(userData, BM_elem_index_get(efa));
 | 
			
		||||
				draw_option= drawParamsMapped(userData, BM_elem_index_get(efa));
 | 
			
		||||
			else
 | 
			
		||||
				flag= 1;
 | 
			
		||||
				draw_option= DM_DRAW_OPTION_NORMAL;
 | 
			
		||||
 | 
			
		||||
			if (flag != 0) { /* flag 0 == the face is hidden or invisible */
 | 
			
		||||
			if (draw_option != DM_DRAW_OPTION_SKIP) {
 | 
			
		||||
 | 
			
		||||
				glBegin(GL_TRIANGLES);
 | 
			
		||||
				if (!drawSmooth) {
 | 
			
		||||
@@ -1032,7 +1037,7 @@ static void emDM_drawMappedFacesGLSL(
 | 
			
		||||
		efa = ltri[0]->f;
 | 
			
		||||
		drawSmooth= BM_elem_flag_test(efa, BM_ELEM_SMOOTH);
 | 
			
		||||
 | 
			
		||||
		if (setDrawOptions && !setDrawOptions(userData, BM_elem_index_get(efa)))
 | 
			
		||||
		if (setDrawOptions && (setDrawOptions(userData, BM_elem_index_get(efa)) == DM_DRAW_OPTION_SKIP))
 | 
			
		||||
			continue;
 | 
			
		||||
 | 
			
		||||
		new_matnr = efa->mat_nr + 1;
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user