Revision: 38483
          
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=38483
Author:   jason_hays22
Date:     2011-07-18 17:38:17 +0000 (Mon, 18 Jul 2011)
Log Message:
-----------
Started adding vertex masking--supports regular painting, and setting weight 
(Shift+K)

Removed my unreferenced vars

Modified Paths:
--------------
    branches/soc-2011-radish/source/blender/editors/armature/meshlaplacian.c
    branches/soc-2011-radish/source/blender/editors/mesh/editmesh_mods.c
    branches/soc-2011-radish/source/blender/editors/sculpt_paint/paint_image.c
    branches/soc-2011-radish/source/blender/editors/sculpt_paint/paint_intern.h
    branches/soc-2011-radish/source/blender/editors/sculpt_paint/paint_vertex.c

Modified: 
branches/soc-2011-radish/source/blender/editors/armature/meshlaplacian.c
===================================================================
--- branches/soc-2011-radish/source/blender/editors/armature/meshlaplacian.c    
2011-07-18 17:33:03 UTC (rev 38482)
+++ branches/soc-2011-radish/source/blender/editors/armature/meshlaplacian.c    
2011-07-18 17:38:17 UTC (rev 38483)
@@ -657,22 +657,26 @@
        int *vertsflipped = NULL, *mask= NULL;
        int a, totface, j, bbone, firstsegment, lastsegment;
 
+       // Jason
+       MVert *mv = me->mvert;
+       int selectedVerts;
+
        *err_str= NULL;
 
        /* count triangles and create mask */
-       if(me->editflag & ME_EDIT_PAINT_MASK)
+       if((me->editflag & ME_EDIT_PAINT_MASK) || (selectedVerts=(me->editflag 
& ME_EDIT_VERT_SEL)))
                mask= MEM_callocN(sizeof(int)*me->totvert, "heat_bone_weighting 
mask");
 
        for(totface=0, a=0, mface=me->mface; a<me->totface; a++, mface++) {
                totface++;
                if(mface->v4) totface++;
-
-               if(mask && (mface->flag & ME_FACE_SEL)) {
-                       mask[mface->v1]= 1;
-                       mask[mface->v2]= 1;
-                       mask[mface->v3]= 1;
+               // Jason (added selectedVerts content for vertex mask, they 
used to just equal 1)
+               if(mask && ((mface->flag & ME_FACE_SEL) || selectedVerts)) {
+                       mask[mface->v1]= selectedVerts ? ((mv+mface->v1)->flag 
& 1): 1;
+                       mask[mface->v2]= selectedVerts ? ((mv+mface->v2)->flag 
& 1): 1;
+                       mask[mface->v3]= selectedVerts ? ((mv+mface->v3)->flag 
& 1): 1;
                        if(mface->v4)
-                               mask[mface->v4]= 1;
+                               mask[mface->v4]= selectedVerts ? 
((mv+mface->v4)->flag & 1): 1;
                }
        }
 

Modified: branches/soc-2011-radish/source/blender/editors/mesh/editmesh_mods.c
===================================================================
--- branches/soc-2011-radish/source/blender/editors/mesh/editmesh_mods.c        
2011-07-18 17:33:03 UTC (rev 38482)
+++ branches/soc-2011-radish/source/blender/editors/mesh/editmesh_mods.c        
2011-07-18 17:38:17 UTC (rev 38483)
@@ -328,7 +328,6 @@
        /* method in use for face selecting too */
        if(vc->obedit==NULL) {
                if(paint_facesel_test(vc->obact));
-               else if(paint_vertsel_test(vc->obact));// Jason, vertex 
selecting
                else return 0;
        }
        else if(vc->v3d->drawtype<OB_SOLID || (vc->v3d->flag & 
V3D_ZBUF_SELECT)==0) return 0;

Modified: 
branches/soc-2011-radish/source/blender/editors/sculpt_paint/paint_image.c
===================================================================
--- branches/soc-2011-radish/source/blender/editors/sculpt_paint/paint_image.c  
2011-07-18 17:33:03 UTC (rev 38482)
+++ branches/soc-2011-radish/source/blender/editors/sculpt_paint/paint_image.c  
2011-07-18 17:38:17 UTC (rev 38483)
@@ -5400,6 +5400,11 @@
 {
        return paint_vertsel_test(CTX_data_active_object(C));
 }
+// Jason
+int mask_paint_poll(bContext *C)
+{
+       return paint_facesel_test(CTX_data_active_object(C)) || 
paint_vertsel_test(CTX_data_active_object(C));
+}
 /* use project paint to re-apply an image */
 static int texture_paint_camera_project_exec(bContext *C, wmOperator *op)
 {

Modified: 
branches/soc-2011-radish/source/blender/editors/sculpt_paint/paint_intern.h
===================================================================
--- branches/soc-2011-radish/source/blender/editors/sculpt_paint/paint_intern.h 
2011-07-18 17:33:03 UTC (rev 38482)
+++ branches/soc-2011-radish/source/blender/editors/sculpt_paint/paint_intern.h 
2011-07-18 17:38:17 UTC (rev 38483)
@@ -124,6 +124,7 @@
 /* Jason */
 void PAINT_OT_vert_select_all(struct wmOperatorType *ot);
 int vert_paint_poll(struct bContext *C);
+int mask_paint_poll(struct bContext *C);
 
 int facemask_paint_poll(struct bContext *C);
 

Modified: 
branches/soc-2011-radish/source/blender/editors/sculpt_paint/paint_vertex.c
===================================================================
--- branches/soc-2011-radish/source/blender/editors/sculpt_paint/paint_vertex.c 
2011-07-18 17:33:03 UTC (rev 38482)
+++ branches/soc-2011-radish/source/blender/editors/sculpt_paint/paint_vertex.c 
2011-07-18 17:38:17 UTC (rev 38483)
@@ -398,11 +398,15 @@
        unsigned char i;
        int vgroup_mirror= -1;
        int selected;
-       
+       // Jason
+       int selectedVerts;
+
        me= ob->data;
        if(me==NULL || me->totface==0 || me->dvert==NULL || !me->mface) return;
        
        selected= (me->editflag & ME_EDIT_PAINT_MASK);
+       // Jason
+       selectedVerts = (me->editflag & ME_EDIT_VERT_SEL);
 
        indexar= get_indexarray(me);
 
@@ -438,6 +442,11 @@
                        faceverts[3]= mface->v4;
                        for (i=0; i<3 || faceverts[i]; i++) {
                                if(!((me->dvert+faceverts[i])->flag)) {
+                                       // Jason
+                                       if(selectedVerts && 
!((me->mvert+faceverts[i])->flag & 1)) {
+                                               continue;
+                                       }
+
                                        dw= 
defvert_verify_index(me->dvert+faceverts[i], vgroup);
                                        if(dw) {
                                                uw= 
defvert_verify_index(wp->wpaint_prev+faceverts[i], vgroup);
@@ -1278,7 +1287,7 @@
        float totchange = 0.0f;
        float totchange_allowed = 0.0f;
        float left_over;
-       float change;
+
        int total_valid = 0;
        int total_changed = 0;
        int i;
@@ -1441,8 +1450,6 @@
        MDeformVert *dvert = me->dvert+index;
        MDeformVert *dv = MEM_mallocN(sizeof (*(me->dvert+index)), 
"oldMDeformVert");
 
-       int i;
-
        dv->dw= MEM_dupallocN(dvert->dw);
        dv->flag = dvert->flag;
        dv->totweight = dvert->totweight;
@@ -1888,6 +1895,9 @@
        float alpha;
        float mval[2], pressure;
        
+       // Jason
+       int selectedVerts;
+
        /* cannot paint if there is no stroke data */
        if (wpd == NULL) {
                // XXX: force a redraw here, since even though we can't paint, 
@@ -1935,6 +1945,8 @@
                        }
                }
        }
+       // Jason
+       selectedVerts = (me->editflag & ME_EDIT_VERT_SEL);
                        
        if((me->editflag & ME_EDIT_PAINT_MASK) && me->mface) {
                for(index=0; index<totindex; index++) {
@@ -1960,10 +1972,10 @@
                if(indexar[index] && indexar[index]<=me->totface) {
                        MFace *mface= me->mface + (indexar[index]-1);
                                        
-                       (me->dvert+mface->v1)->flag= 1;
-                       (me->dvert+mface->v2)->flag= 1;
-                       (me->dvert+mface->v3)->flag= 1;
-                       if(mface->v4) (me->dvert+mface->v4)->flag= 1;
+                       (me->dvert+mface->v1)->flag= selectedVerts ? 
((me->mvert+mface->v1)->flag & 1): 1;
+                       (me->dvert+mface->v2)->flag= selectedVerts ? 
((me->mvert+mface->v2)->flag & 1): 1;
+                       (me->dvert+mface->v3)->flag= selectedVerts ? 
((me->mvert+mface->v3)->flag & 1): 1;
+                       if(mface->v4) (me->dvert+mface->v4)->flag= 
selectedVerts ? ((me->mvert+mface->v4)->flag & 1): 1;
                                        
                        if(brush->vertexpaint_tool==VP_BLUR) {
                                MDeformWeight *dw, *(*dw_func)(MDeformVert *, 
const int);
@@ -2144,7 +2156,7 @@
 
        /* api callbacks */
        ot->exec= weight_paint_set_exec;
-       ot->poll= facemask_paint_poll;
+       ot->poll= mask_paint_poll; // Jason, it was facemask_paint_poll
 
        /* flags */
        ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to