forked from bartvdbraak/blender
display active vertex in weight paint mode. also correct NULL free.
This commit is contained in:
parent
6a60bf2f03
commit
c15802f7d3
@ -3774,8 +3774,10 @@ void BKE_mesh_do_versions_cd_flag_init(Mesh *mesh)
|
|||||||
|
|
||||||
void BKE_mesh_mselect_clear(Mesh *me)
|
void BKE_mesh_mselect_clear(Mesh *me)
|
||||||
{
|
{
|
||||||
|
if (me->mselect) {
|
||||||
MEM_freeN(me->mselect);
|
MEM_freeN(me->mselect);
|
||||||
me->mselect = NULL;
|
me->mselect = NULL;
|
||||||
|
}
|
||||||
me->totselect = 0;
|
me->totselect = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1942,20 +1942,25 @@ static void drawlattice(Scene *scene, View3D *v3d, Object *ob)
|
|||||||
/* ***************** ******************** */
|
/* ***************** ******************** */
|
||||||
|
|
||||||
/* draw callback */
|
/* 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],
|
static void drawSelectedVertices__mapFunc(void *userData, int index, const float co[3],
|
||||||
const float UNUSED(no_f[3]), const short UNUSED(no_s[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)) {
|
if (!(mv->flag & ME_HIDE)) {
|
||||||
const char sel = mv->flag & SELECT;
|
const char sel = (index == data->active) ? 2 : (mv->flag & SELECT);
|
||||||
|
if (sel != data->sel_prev) {
|
||||||
/* TODO define selected color */
|
glColor3ubv(data->col[sel]);
|
||||||
if (sel) {
|
data->sel_prev = sel;
|
||||||
glColor3f(1.0f, 1.0f, 0.0f);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
glColor3f(0.0f, 0.0f, 0.0f);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
glVertex3fv(co);
|
glVertex3fv(co);
|
||||||
@ -1964,8 +1969,23 @@ static void drawSelectedVertices__mapFunc(void *userData, int index, const float
|
|||||||
|
|
||||||
static void drawSelectedVertices(DerivedMesh *dm, Mesh *me)
|
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);
|
glBegin(GL_POINTS);
|
||||||
dm->foreachMappedVert(dm, drawSelectedVertices__mapFunc, me->mvert);
|
dm->foreachMappedVert(dm, drawSelectedVertices__mapFunc, &data);
|
||||||
glEnd();
|
glEnd();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user