[Bf-blender-cvs] [aea3c65] strand_gpu: Do strand and editstrand drawing in the same place, so they are not shown both.

Lukas Tönne noreply at git.blender.org
Wed Jul 6 12:13:20 CEST 2016


Commit: aea3c651607f6f6de7e6fd8629c05d0853ef5e6f
Author: Lukas Tönne
Date:   Wed Jul 6 09:12:10 2016 +0200
Branches: strand_gpu
https://developer.blender.org/rBaea3c651607f6f6de7e6fd8629c05d0853ef5e6f

Do strand and editstrand drawing in the same place, so they are not shown both.

===================================================================

M	source/blender/editors/space_view3d/drawobject.c

===================================================================

diff --git a/source/blender/editors/space_view3d/drawobject.c b/source/blender/editors/space_view3d/drawobject.c
index ed50b38..fa976de 100644
--- a/source/blender/editors/space_view3d/drawobject.c
+++ b/source/blender/editors/space_view3d/drawobject.c
@@ -7851,13 +7851,6 @@ void draw_object(Scene *scene, ARegion *ar, View3D *v3d, Base *base, const short
 				glMultMatrixf(ob->obmat);
 			}
 		}
-
-		if (ob->mode & OB_MODE_HAIR_EDIT && is_obact) {
-			BMEditStrands *edit = BKE_editstrands_from_object(ob);
-			if (edit) {
-				draw_strands_edit_hair(scene, v3d, ar, edit);
-			}
-		}
 	}
 
 	/* draw code for smoke */
@@ -7983,12 +7976,20 @@ void draw_object(Scene *scene, ARegion *ar, View3D *v3d, Base *base, const short
 	for (md = ob->modifiers.first; md; md = md->next) {
 		if (md->type == eModifierType_Strands) {
 			StrandsModifierData *smd = (StrandsModifierData *)md;
+			BMEditStrands *edit = (ob->mode & OB_MODE_HAIR_EDIT && is_obact) ? smd->edit : NULL;
 			
-			if (smd->strands && smd->strands->data_final) {
-				bool show_controls = smd->flag & MOD_STRANDS_SHOW_CONTROL_STRANDS;
-				bool show_strands = smd->flag & MOD_STRANDS_SHOW_RENDER_STRANDS;
-				draw_strands(smd->strands, smd->strands->data_final, ob, rv3d,
-				             show_controls, show_strands);
+			if (edit) {
+				if (!(dflag & DRAW_PICKING) && scene->obedit == NULL) {
+					draw_strands_edit_hair(scene, v3d, ar, edit);
+				}
+			}
+			else {
+				if (smd->strands && smd->strands->data_final) {
+					bool show_controls = smd->flag & MOD_STRANDS_SHOW_CONTROL_STRANDS;
+					bool show_strands = smd->flag & MOD_STRANDS_SHOW_RENDER_STRANDS;
+					draw_strands(smd->strands, smd->strands->data_final, ob, rv3d,
+					             show_controls, show_strands);
+				}
 			}
 		}
 	}




More information about the Bf-blender-cvs mailing list