[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [57469] trunk/blender/source/blender: display active vertex in weight paint mode.

Campbell Barton ideasman42 at gmail.com
Sat Jun 15 13:02:36 CEST 2013


Revision: 57469
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=57469
Author:   campbellbarton
Date:     2013-06-15 11:02:36 +0000 (Sat, 15 Jun 2013)
Log Message:
-----------
display active vertex in weight paint mode. also correct NULL free.

Modified Paths:
--------------
    trunk/blender/source/blender/blenkernel/intern/mesh.c
    trunk/blender/source/blender/editors/space_view3d/drawobject.c

Modified: trunk/blender/source/blender/blenkernel/intern/mesh.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/mesh.c	2013-06-15 10:18:16 UTC (rev 57468)
+++ trunk/blender/source/blender/blenkernel/intern/mesh.c	2013-06-15 11:02:36 UTC (rev 57469)
@@ -3774,8 +3774,10 @@
 
 void BKE_mesh_mselect_clear(Mesh *me)
 {
-	MEM_freeN(me->mselect);
-	me->mselect = NULL;
+	if (me->mselect) {
+		MEM_freeN(me->mselect);
+		me->mselect = NULL;
+	}
 	me->totselect = 0;
 }
 

Modified: trunk/blender/source/blender/editors/space_view3d/drawobject.c
===================================================================
--- trunk/blender/source/blender/editors/space_view3d/drawobject.c	2013-06-15 10:18:16 UTC (rev 57468)
+++ trunk/blender/source/blender/editors/space_view3d/drawobject.c	2013-06-15 11:02:36 UTC (rev 57469)
@@ -1942,21 +1942,26 @@
 /* ***************** ******************** */
 
 /*  draw callback */
+
+typedef struct drawDMVertSel_userData {
+	MVert *mvert;
+	int active;
+	unsigned char *col[3];  /* (base, sel, act) */
+	char sel_prev;
+} drawDMVertSel_userData;
+
 static void drawSelectedVertices__mapFunc(void *userData, int index, const float co[3],
                                           const float UNUSED(no_f[3]), const short UNUSED(no_s[3]))
 {
-	MVert *mv = &((MVert *)userData)[index];
+	drawDMVertSel_userData *data = userData;
+	MVert *mv = &data->mvert[index];
 
 	if (!(mv->flag & ME_HIDE)) {
-		const char sel = mv->flag & SELECT;
-
-		/* TODO define selected color */
-		if (sel) {
-			glColor3f(1.0f, 1.0f, 0.0f);
+		const char sel = (index == data->active) ? 2 : (mv->flag & SELECT);
+		if (sel != data->sel_prev) {
+			glColor3ubv(data->col[sel]);
+			data->sel_prev = sel;
 		}
-		else {
-			glColor3f(0.0f, 0.0f, 0.0f);
-		}
 
 		glVertex3fv(co);
 	}
@@ -1964,8 +1969,23 @@
 
 static void drawSelectedVertices(DerivedMesh *dm, Mesh *me)
 {
+	drawDMVertSel_userData data;
+
+	/* TODO define selected color */
+	unsigned char base_col[3] = {0x0, 0x0, 0x0};
+	unsigned char sel_col[3] = {0xd8, 0xd8, 0x0};
+	unsigned char act_col[3] = {0xff, 0xff, 0xff};
+
+	data.mvert = me->mvert;
+	data.active = BKE_mesh_mselect_active_get(me, ME_VSEL);
+	data.sel_prev = 0xff;
+
+	data.col[0] = base_col;
+	data.col[1] = sel_col;
+	data.col[2] = act_col;
+
 	glBegin(GL_POINTS);
-	dm->foreachMappedVert(dm, drawSelectedVertices__mapFunc, me->mvert);
+	dm->foreachMappedVert(dm, drawSelectedVertices__mapFunc, &data);
 	glEnd();
 }
 




More information about the Bf-blender-cvs mailing list