Made vertex clear work for selected faces from the menu, to be the same as Shift+K.
Also makde Shift+K work in weightpaint mode.
This commit is contained in:
@@ -51,6 +51,7 @@ void vertex_paint(void);
|
|||||||
void set_vpaint(void);
|
void set_vpaint(void);
|
||||||
|
|
||||||
void set_wpaint(void);
|
void set_wpaint(void);
|
||||||
|
void clear_wpaint_selectedfaces(void);
|
||||||
void weight_paint(void);
|
void weight_paint(void);
|
||||||
void wpaint_undo (void);
|
void wpaint_undo (void);
|
||||||
void copy_wpaint_undo (struct MDeformVert *dverts, int dcount);
|
void copy_wpaint_undo (struct MDeformVert *dverts, int dcount);
|
||||||
|
|||||||
@@ -3537,8 +3537,14 @@ static void do_view3d_paintmenu(void *arg, int event)
|
|||||||
case 1: /* undo weight painting */
|
case 1: /* undo weight painting */
|
||||||
wpaint_undo();
|
wpaint_undo();
|
||||||
break;
|
break;
|
||||||
case 2: /* clear vertex colors */
|
case 2: /* set vertex colors/weight */
|
||||||
clear_vpaint();
|
if(G.f & G_FACESELECT)
|
||||||
|
clear_vpaint_selectedfaces();
|
||||||
|
else /* we know were in vertex paint mode */
|
||||||
|
clear_vpaint();
|
||||||
|
break;
|
||||||
|
case 3: /* set vertex colors/weight */
|
||||||
|
clear_wpaint_selectedfaces();
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
allqueue(REDRAWVIEW3D, 0);
|
allqueue(REDRAWVIEW3D, 0);
|
||||||
@@ -3558,10 +3564,12 @@ static uiBlock *view3d_paintmenu(void *arg_unused)
|
|||||||
|
|
||||||
if (G.f & G_VERTEXPAINT) {
|
if (G.f & G_VERTEXPAINT) {
|
||||||
uiDefBut(block, SEPR, 0, "", 0, yco-=6, menuwidth, 6, NULL, 0.0, 0.0, 0, 0, "");
|
uiDefBut(block, SEPR, 0, "", 0, yco-=6, menuwidth, 6, NULL, 0.0, 0.0, 0, 0, "");
|
||||||
|
uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Set Vertex Colors|Shift K", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 2, "");
|
||||||
uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Clear Vertex Colors|Shift K", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 2, "");
|
} else if (G.f & G_WEIGHTPAINT && G.f & G_FACESELECT) {
|
||||||
|
uiDefBut(block, SEPR, 0, "", 0, yco-=6, menuwidth, 6, NULL, 0.0, 0.0, 0, 0, "");
|
||||||
|
uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Set Weight|Shift K", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 3, "");
|
||||||
}
|
}
|
||||||
|
|
||||||
if(curarea->headertype==HEADERTOP) {
|
if(curarea->headertype==HEADERTOP) {
|
||||||
uiBlockSetDirection(block, UI_DOWN);
|
uiBlockSetDirection(block, UI_DOWN);
|
||||||
}
|
}
|
||||||
@@ -3766,7 +3774,7 @@ static void do_view3d_faceselmenu(void *arg, int event)
|
|||||||
do_shared_vertexcol(me);
|
do_shared_vertexcol(me);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 3: /* clear vertex colors */
|
case 3: /* set vertex colors */
|
||||||
clear_vpaint_selectedfaces();
|
clear_vpaint_selectedfaces();
|
||||||
break;
|
break;
|
||||||
case 8: /* uv calculation */
|
case 8: /* uv calculation */
|
||||||
@@ -3810,7 +3818,7 @@ static uiBlock *view3d_faceselmenu(void *arg_unused)
|
|||||||
|
|
||||||
uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Copy UVs & Textures", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 1, "");
|
uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Copy UVs & Textures", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 1, "");
|
||||||
uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Copy Vertex Colors", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 2, "");
|
uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Copy Vertex Colors", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 2, "");
|
||||||
uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Clear Vertex Colors|Shift K", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 3, "");
|
uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Set Vertex Colors|Shift K", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 3, "");
|
||||||
|
|
||||||
uiDefBut(block, SEPR, 0, "", 0, yco-=6, menuwidth, 6, NULL, 0.0, 0.0, 0, 0, "");
|
uiDefBut(block, SEPR, 0, "", 0, yco-=6, menuwidth, 6, NULL, 0.0, 0.0, 0, 0, "");
|
||||||
|
|
||||||
|
|||||||
@@ -1467,7 +1467,10 @@ static void winqreadview3dspace(ScrArea *sa, void *spacedata, BWinEvent *evt)
|
|||||||
else {
|
else {
|
||||||
if((G.qual==LR_SHIFTKEY)) {
|
if((G.qual==LR_SHIFTKEY)) {
|
||||||
if(G.f & G_FACESELECT)
|
if(G.f & G_FACESELECT)
|
||||||
clear_vpaint_selectedfaces();
|
if (G.f & G_WEIGHTPAINT)
|
||||||
|
clear_wpaint_selectedfaces();
|
||||||
|
else
|
||||||
|
clear_vpaint_selectedfaces();
|
||||||
else if(G.f & G_VERTEXPAINT)
|
else if(G.f & G_VERTEXPAINT)
|
||||||
clear_vpaint();
|
clear_vpaint();
|
||||||
else
|
else
|
||||||
|
|||||||
@@ -360,6 +360,94 @@ void clear_vpaint_selectedfaces()
|
|||||||
allqueue(REDRAWVIEW3D, 0);
|
allqueue(REDRAWVIEW3D, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void clear_wpaint_selectedfaces()
|
||||||
|
{
|
||||||
|
extern float editbutvweight;
|
||||||
|
float paintweight= editbutvweight;
|
||||||
|
Mesh *me;
|
||||||
|
TFace *tface;
|
||||||
|
MFace *mface;
|
||||||
|
Object *ob;
|
||||||
|
int index, vgroup;
|
||||||
|
MDeformWeight *dw, *uw;
|
||||||
|
|
||||||
|
ob= OBACT;
|
||||||
|
me= ob->data;
|
||||||
|
if(me==0 || me->totface==0 || me->dvert==0 || !me->tface) return;
|
||||||
|
|
||||||
|
if(indexar==NULL) init_vertexpaint();
|
||||||
|
for(index=0, tface=me->tface; index<me->totface; index++) {
|
||||||
|
if((tface->flag & TF_SELECT)==0) {
|
||||||
|
indexar[index]= 0;
|
||||||
|
} else {
|
||||||
|
indexar[index]= index+1;
|
||||||
|
}
|
||||||
|
tface++;
|
||||||
|
}
|
||||||
|
|
||||||
|
copy_wpaint_undo(me->dvert, me->totvert);
|
||||||
|
vgroup= ob->actdef-1;
|
||||||
|
|
||||||
|
for(index=0; index<me->totface; index++) {
|
||||||
|
if(indexar[index] && indexar[index]<=me->totface) {
|
||||||
|
mface= me->mface + (indexar[index]-1);
|
||||||
|
if(!((me->dvert+mface->v1)->flag)) {
|
||||||
|
dw= verify_defweight(me->dvert+mface->v1, vgroup);
|
||||||
|
if(dw) {
|
||||||
|
uw= verify_defweight(wpaintundobuf+mface->v1, vgroup);
|
||||||
|
uw->weight= dw->weight;
|
||||||
|
dw->weight= paintweight;
|
||||||
|
}
|
||||||
|
(me->dvert+mface->v1)->flag= 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(!((me->dvert+mface->v2)->flag)) {
|
||||||
|
dw= verify_defweight(me->dvert+mface->v2, vgroup);
|
||||||
|
if(dw) {
|
||||||
|
uw= verify_defweight(wpaintundobuf+mface->v2, vgroup);
|
||||||
|
uw->weight= dw->weight;
|
||||||
|
dw->weight= paintweight;
|
||||||
|
}
|
||||||
|
(me->dvert+mface->v2)->flag= 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(!((me->dvert+mface->v3)->flag)) {
|
||||||
|
dw= verify_defweight(me->dvert+mface->v3, vgroup);
|
||||||
|
if(dw) {
|
||||||
|
uw= verify_defweight(wpaintundobuf+mface->v3, vgroup);
|
||||||
|
uw->weight= dw->weight;
|
||||||
|
dw->weight= paintweight;
|
||||||
|
}
|
||||||
|
(me->dvert+mface->v3)->flag= 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(mface->v4) {
|
||||||
|
if(!((me->dvert+mface->v4)->flag)) {
|
||||||
|
dw= verify_defweight(me->dvert+mface->v4, vgroup);
|
||||||
|
if(dw) {
|
||||||
|
uw= verify_defweight(wpaintundobuf+mface->v4, vgroup);
|
||||||
|
uw->weight= dw->weight;
|
||||||
|
dw->weight= paintweight;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
(me->dvert+mface->v4)->flag= 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
index=0;
|
||||||
|
while (index<me->totvert) {
|
||||||
|
(me->dvert+index)->flag= 0;
|
||||||
|
index++;
|
||||||
|
}
|
||||||
|
|
||||||
|
DAG_object_flush_update(G.scene, ob, OB_RECALC_DATA);
|
||||||
|
BIF_undo_push("Set vertex weight");
|
||||||
|
allqueue(REDRAWVIEW3D, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void vpaint_dogamma()
|
void vpaint_dogamma()
|
||||||
{
|
{
|
||||||
Mesh *me;
|
Mesh *me;
|
||||||
|
|||||||
Reference in New Issue
Block a user