[Bf-blender-cvs] [60a1ccbe2ce] master: DRW: use active color for face dot

Campbell Barton noreply at git.blender.org
Thu Feb 28 04:58:11 CET 2019


Commit: 60a1ccbe2ce33c07b13b273582946abf5cd7753c
Author: Campbell Barton
Date:   Thu Feb 28 14:47:21 2019 +1100
Branches: master
https://developer.blender.org/rB60a1ccbe2ce33c07b13b273582946abf5cd7753c

DRW: use active color for face dot

Matches active vert/edge modes.

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

M	source/blender/draw/intern/draw_cache_impl_mesh.c
M	source/blender/draw/modes/shaders/edit_mesh_overlay_common_lib.glsl

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

diff --git a/source/blender/draw/intern/draw_cache_impl_mesh.c b/source/blender/draw/intern/draw_cache_impl_mesh.c
index aa89d4b5e30..b19ce76e87b 100644
--- a/source/blender/draw/intern/draw_cache_impl_mesh.c
+++ b/source/blender/draw/intern/draw_cache_impl_mesh.c
@@ -1587,9 +1587,10 @@ static bool add_edit_facedot(
 {
 	BLI_assert(rdata->types & (MR_DATATYPE_VERT | MR_DATATYPE_LOOP | MR_DATATYPE_POLY));
 	float pnor[3], center[3];
-	bool selected;
+	int facedot_flag;
 	if (rdata->edit_bmesh) {
-		const BMFace *efa = BM_face_at_index(rdata->edit_bmesh->bm, poly);
+		BMEditMesh *em = rdata->edit_bmesh;
+		const BMFace *efa = BM_face_at_index(em->bm, poly);
 		if (BM_elem_flag_test(efa, BM_ELEM_HIDDEN)) {
 			return false;
 		}
@@ -1601,7 +1602,7 @@ static bool add_edit_facedot(
 			BM_face_calc_center_median(efa, center);
 			copy_v3_v3(pnor, efa->no);
 		}
-		selected = (BM_elem_flag_test(efa, BM_ELEM_SELECT) != 0) ? true : false;
+		facedot_flag = BM_elem_flag_test(efa, BM_ELEM_SELECT) ? ((efa == em->bm->act_face) ? -1 : 1) : 0;
 	}
 	else {
 		MVert *mvert = rdata->mvert;
@@ -1610,12 +1611,12 @@ static bool add_edit_facedot(
 
 		BKE_mesh_calc_poly_center(mpoly, mloop, mvert, center);
 		BKE_mesh_calc_poly_normal(mpoly, mloop, mvert, pnor);
-
-		selected = false; /* No selection if not in edit mode */
+		/* No selection if not in edit mode. */
+		facedot_flag = 0;
 	}
 
 	GPUPackedNormal nor = GPU_normal_convert_i10_v3(pnor);
-	nor.w = (selected) ? 1 : 0;
+	nor.w = facedot_flag;
 	GPU_vertbuf_attr_set(vbo, fdot_nor_flag_id, base_vert_idx, &nor);
 	GPU_vertbuf_attr_set(vbo, fdot_pos_id, base_vert_idx, center);
 
@@ -1634,7 +1635,7 @@ static bool add_edit_facedot_mapped(
 		return false;
 	}
 	BMEditMesh *em = rdata->edit_bmesh;
-	const BMFace *efa = BM_face_at_index(rdata->edit_bmesh->bm, p_orig);
+	const BMFace *efa = BM_face_at_index(em->bm, p_orig);
 	if (BM_elem_flag_test(efa, BM_ELEM_HIDDEN)) {
 		return false;
 	}
@@ -1651,7 +1652,7 @@ static bool add_edit_facedot_mapped(
 	BKE_mesh_calc_poly_normal(mp, ml, mvert, pnor);
 
 	GPUPackedNormal nor = GPU_normal_convert_i10_v3(pnor);
-	nor.w = (BM_elem_flag_test(efa, BM_ELEM_SELECT) != 0) ? 1 : 0;
+	nor.w = BM_elem_flag_test(efa, BM_ELEM_SELECT) ? ((efa == em->bm->act_face) ? -1 : 1) : 0;
 	GPU_vertbuf_attr_set(vbo, fdot_nor_flag_id, base_vert_idx, &nor);
 	GPU_vertbuf_attr_set(vbo, fdot_pos_id, base_vert_idx, center);
 
diff --git a/source/blender/draw/modes/shaders/edit_mesh_overlay_common_lib.glsl b/source/blender/draw/modes/shaders/edit_mesh_overlay_common_lib.glsl
index a1b3f9762a0..6563945af39 100644
--- a/source/blender/draw/modes/shaders/edit_mesh_overlay_common_lib.glsl
+++ b/source/blender/draw/modes/shaders/edit_mesh_overlay_common_lib.glsl
@@ -58,7 +58,10 @@ vec4 EDIT_MESH_face_color(int face_flag)
 
 vec4 EDIT_MESH_facedot_color(float facedot_flag)
 {
-	if (facedot_flag != 0.0) {
+	if (facedot_flag < 0.0f) {
+		return colorEditMeshActive;
+	}
+	else if (facedot_flag > 0.0f) {
 		return colorFaceDot;
 	}
 	else {



More information about the Bf-blender-cvs mailing list