Revision: 22482
          
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=22482
Author:   nicholasbishop
Date:     2009-08-15 22:36:15 +0200 (Sat, 15 Aug 2009)

Log Message:
-----------
2.5/Vertex paint:

* Made vertex paint local to object, like sculpt mode.
* New test for vertex paint is (ob->mode & OB_MODE_VERTEX_PAINT)

Modified Paths:
--------------
    branches/blender2.5/blender/source/blender/blenkernel/BKE_global.h
    branches/blender2.5/blender/source/blender/blenkernel/intern/blender.c
    branches/blender2.5/blender/source/blender/blenkernel/intern/brush.c
    branches/blender2.5/blender/source/blender/blenkernel/intern/context.c
    branches/blender2.5/blender/source/blender/blenkernel/intern/paint.c
    branches/blender2.5/blender/source/blender/editors/mesh/mesh_layers.c
    branches/blender2.5/blender/source/blender/editors/object/object_edit.c
    branches/blender2.5/blender/source/blender/editors/screen/screen_context.c
    
branches/blender2.5/blender/source/blender/editors/sculpt_paint/paint_vertex.c
    
branches/blender2.5/blender/source/blender/editors/space_buttons/buttons_context.c
    branches/blender2.5/blender/source/blender/editors/space_view3d/drawobject.c
    
branches/blender2.5/blender/source/blender/editors/space_view3d/view3d_buttons.c
    
branches/blender2.5/blender/source/blender/editors/space_view3d/view3d_draw.c
    
branches/blender2.5/blender/source/blender/editors/space_view3d/view3d_header.c
    
branches/blender2.5/blender/source/blender/editors/space_view3d/view3d_select.c
    
branches/blender2.5/blender/source/blender/editors/transform/transform_manipulator.c
    
branches/blender2.5/blender/source/blender/editors/transform/transform_orientations.c
    branches/blender2.5/blender/source/blender/makesdna/DNA_object_types.h

Modified: branches/blender2.5/blender/source/blender/blenkernel/BKE_global.h
===================================================================
--- branches/blender2.5/blender/source/blender/blenkernel/BKE_global.h  
2009-08-15 20:21:49 UTC (rev 22481)
+++ branches/blender2.5/blender/source/blender/blenkernel/BKE_global.h  
2009-08-15 20:36:15 UTC (rev 22482)
@@ -112,8 +112,6 @@
 
 #define G_FACESELECT   (1 <<  8)
 
-#define G_VERTEXPAINT  (1 << 10)
-
 #define G_DEBUG                        (1 << 12)
 #define G_DOSCRIPTLINKS (1 << 13)
 

Modified: branches/blender2.5/blender/source/blender/blenkernel/intern/blender.c
===================================================================
--- branches/blender2.5/blender/source/blender/blenkernel/intern/blender.c      
2009-08-15 20:21:49 UTC (rev 22481)
+++ branches/blender2.5/blender/source/blender/blenkernel/intern/blender.c      
2009-08-15 20:36:15 UTC (rev 22482)
@@ -226,7 +226,7 @@
 
        G.main= NULL;
        
-       G.f &= ~(G_WEIGHTPAINT + G_VERTEXPAINT + G_FACESELECT + G_PARTICLEEDIT);
+       G.f &= ~(G_WEIGHTPAINT + G_FACESELECT + G_PARTICLEEDIT);
 }
 
 /* make sure path names are correct for OS */

Modified: branches/blender2.5/blender/source/blender/blenkernel/intern/brush.c
===================================================================
--- branches/blender2.5/blender/source/blender/blenkernel/intern/brush.c        
2009-08-15 20:21:49 UTC (rev 22481)
+++ branches/blender2.5/blender/source/blender/blenkernel/intern/brush.c        
2009-08-15 20:36:15 UTC (rev 22482)
@@ -188,10 +188,14 @@
 
 Brush **current_brush_source(Scene *sce)
 {
-       if(sce->basact && sce->basact->object->mode & OB_MODE_SCULPT)
-               return &sce->toolsettings->sculpt->brush;
-       else if(G.f & G_VERTEXPAINT)
-               return &sce->toolsettings->vpaint->brush;
+       Object *ob = sce->basact ? sce->basact->object : NULL;
+
+       if(ob) {
+               if(ob->mode & OB_MODE_SCULPT)
+                       return &sce->toolsettings->sculpt->brush;
+               else if(ob->mode & OB_MODE_VERTEX_PAINT)
+                       return &sce->toolsettings->vpaint->brush;
+       }
        else if(G.f & G_WEIGHTPAINT)
                return &sce->toolsettings->wpaint->brush;
        else if(G.f & G_TEXTUREPAINT)

Modified: branches/blender2.5/blender/source/blender/blenkernel/intern/context.c
===================================================================
--- branches/blender2.5/blender/source/blender/blenkernel/intern/context.c      
2009-08-15 20:21:49 UTC (rev 22481)
+++ branches/blender2.5/blender/source/blender/blenkernel/intern/context.c      
2009-08-15 20:36:15 UTC (rev 22482)
@@ -689,7 +689,7 @@
                if(ob && (ob->flag & OB_POSEMODE)) return "posemode";
                else if (ob && ob->mode & OB_MODE_SCULPT)  return "sculpt_mode";
                else if (G.f & G_WEIGHTPAINT) return "weightpaint";
-               else if (G.f & G_VERTEXPAINT) return "vertexpaint";
+               else if (ob && ob->mode & OB_MODE_VERTEX_PAINT) return 
"vertexpaint";
                else if (G.f & G_TEXTUREPAINT) return "texturepaint";
                else if(G.f & G_PARTICLEEDIT) return "particlemode";
        }

Modified: branches/blender2.5/blender/source/blender/blenkernel/intern/paint.c
===================================================================
--- branches/blender2.5/blender/source/blender/blenkernel/intern/paint.c        
2009-08-15 20:21:49 UTC (rev 22481)
+++ branches/blender2.5/blender/source/blender/blenkernel/intern/paint.c        
2009-08-15 20:36:15 UTC (rev 22482)
@@ -32,6 +32,6 @@
 
 int paint_facesel_test(Object *ob)
 {
-       return (G.f&G_FACESELECT) && (G.f & 
(G_VERTEXPAINT|G_WEIGHTPAINT|G_TEXTUREPAINT));
+       return (G.f&G_FACESELECT) && ((G.f & (G_WEIGHTPAINT|G_TEXTUREPAINT)) || 
(ob && (ob->mode & OB_MODE_VERTEX_PAINT)));
 
 }

Modified: branches/blender2.5/blender/source/blender/editors/mesh/mesh_layers.c
===================================================================
--- branches/blender2.5/blender/source/blender/editors/mesh/mesh_layers.c       
2009-08-15 20:21:49 UTC (rev 22481)
+++ branches/blender2.5/blender/source/blender/editors/mesh/mesh_layers.c       
2009-08-15 20:36:15 UTC (rev 22482)
@@ -54,12 +54,14 @@
 #include "WM_types.h"
 
 #include "ED_mesh.h"
+#include "ED_object.h"
 #include "ED_view3d.h"
 
 #include "mesh_intern.h"
 
-static void delete_customdata_layer(Mesh *me, CustomDataLayer *layer)
+static void delete_customdata_layer(bContext *C, Object *ob, CustomDataLayer 
*layer)
 {
+       Mesh *me = ob->data;
        CustomData *data= (me->edit_mesh)? &me->edit_mesh->fdata: &me->fdata;
        void *actlayerdata, *rndlayerdata, *clonelayerdata, *masklayerdata, 
*layerdata=layer->data;
        int type= layer->type;
@@ -87,9 +89,8 @@
                mesh_update_customdata_pointers(me);
        }
 
-       if(!CustomData_has_layer(data, type))
-               if(type == CD_MCOL && (G.f & G_VERTEXPAINT))
-                       G.f &= ~G_VERTEXPAINT; /* get out of vertexpaint mode */
+       if(!CustomData_has_layer(data, type) && (type == CD_MCOL && (ob->mode & 
OB_MODE_VERTEX_PAINT)))
+               ED_object_toggle_modes(C, OB_MODE_VERTEX_PAINT);
 
        /* reconstruct active layer */
        if (actlayerdata != layerdata) {
@@ -225,7 +226,7 @@
        if(!cdl)
                return OPERATOR_CANCELLED;
 
-       delete_customdata_layer(me, cdl);
+       delete_customdata_layer(C, ob, cdl);
 
        DAG_object_flush_update(scene, ob, OB_RECALC_DATA);
        WM_event_add_notifier(C, NC_OBJECT|ND_GEOM_DATA, ob);
@@ -328,7 +329,7 @@
        if(!cdl)
                return OPERATOR_CANCELLED;
 
-       delete_customdata_layer(me, cdl);
+       delete_customdata_layer(C, ob, cdl);
 
        DAG_object_flush_update(scene, ob, OB_RECALC_DATA);
        WM_event_add_notifier(C, NC_OBJECT|ND_GEOM_DATA, ob);

Modified: 
branches/blender2.5/blender/source/blender/editors/object/object_edit.c
===================================================================
--- branches/blender2.5/blender/source/blender/editors/object/object_edit.c     
2009-08-15 20:21:49 UTC (rev 22481)
+++ branches/blender2.5/blender/source/blender/editors/object/object_edit.c     
2009-08-15 20:36:15 UTC (rev 22482)
@@ -4165,7 +4165,7 @@
                        }
                        DAG_object_flush_update(scene, ob, OB_RECALC_DATA);
                }
-               else if(G.f & G_VERTEXPAINT) {
+               else if(ob->mode & OB_MODE_VERTEX_PAINT) {
                        Mesh *me= get_mesh(ob);
                        
                        if(me==0 || (me->mcol==NULL && me->mtface==NULL) ) 
return;
@@ -7042,4 +7042,6 @@
 {
        if(mode & OB_MODE_SCULPT)
                WM_operator_name_call(C, "SCULPT_OT_sculptmode_toggle", 
WM_OP_EXEC_REGION_WIN, NULL);
+       if(mode & OB_MODE_VERTEX_PAINT)
+               WM_operator_name_call(C, "SCULPT_OT_vertex_paint_toggle", 
WM_OP_EXEC_REGION_WIN, NULL);
 }

Modified: 
branches/blender2.5/blender/source/blender/editors/screen/screen_context.c
===================================================================
--- branches/blender2.5/blender/source/blender/editors/screen/screen_context.c  
2009-08-15 20:21:49 UTC (rev 22481)
+++ branches/blender2.5/blender/source/blender/editors/screen/screen_context.c  
2009-08-15 20:36:15 UTC (rev 22482)
@@ -44,7 +44,11 @@
        bScreen *sc= CTX_wm_screen(C);
        Scene *scene= sc->scene;
        Base *base;
+       Object *ob = NULL;
 
+       if(scene && scene->basact)
+               ob = scene->basact->object;
+
        if(CTX_data_dir(member)) {
                static const char *dir[] = {
                        "scene", "selected_objects", "selected_bases",
@@ -112,14 +116,14 @@
                return 1;
        }
        else if(CTX_data_equals(member, "sculpt_object")) {
-               if(scene->basact && (scene->basact->object->mode & 
OB_MODE_SCULPT))
-                       CTX_data_id_pointer_set(result, 
&scene->basact->object->id);
+               if(ob && (ob->mode & OB_MODE_SCULPT))
+                       CTX_data_id_pointer_set(result, &ob->id);
 
                return 1;
        }
        else if(CTX_data_equals(member, "vertex_paint_object")) {
-               if(G.f & G_VERTEXPAINT && scene->basact)
-                       CTX_data_id_pointer_set(result, 
&scene->basact->object->id);
+               if(ob && (ob->mode & OB_MODE_VERTEX_PAINT))
+                       CTX_data_id_pointer_set(result, &ob->id);
 
                return 1;
        }

Modified: 
branches/blender2.5/blender/source/blender/editors/sculpt_paint/paint_vertex.c
===================================================================
--- 
branches/blender2.5/blender/source/blender/editors/sculpt_paint/paint_vertex.c  
    2009-08-15 20:21:49 UTC (rev 22481)
+++ 
branches/blender2.5/blender/source/blender/editors/sculpt_paint/paint_vertex.c  
    2009-08-15 20:36:15 UTC (rev 22482)
@@ -108,7 +108,9 @@
 
 static int vp_poll(bContext *C)
 {
-       if(G.f & G_VERTEXPAINT) {
+       Object *ob = CTX_data_active_object(C);
+
+       if(ob && ob->mode & OB_MODE_VERTEX_PAINT) {
                ScrArea *sa= CTX_wm_area(C);
                if(sa->spacetype==SPACE_VIEW3D) {
                        ARegion *ar= CTX_wm_region(C);
@@ -369,12 +371,12 @@
        unsigned int *to, paintcol;
        int a;
        
-       if((G.f & G_VERTEXPAINT)==0) return;
-
        ob= OBACT;
        me= get_mesh(ob);
        if(!ob || ob->id.lib) return;
 
+       if(!(ob->mode & OB_MODE_VERTEX_PAINT)) return;
+
        if(me==0 || me->mcol==0 || me->totface==0) return;
 
        paintcol= vpaint_get_current_col(scene->toolsettings->vpaint);
@@ -540,10 +542,10 @@
        int a, temp;
        unsigned char *cp, gamtab[256];
 
-       if((G.f & G_VERTEXPAINT)==0) return;
-
        ob= OBACT;
        me= get_mesh(ob);
+
+       if(!(ob->mode & OB_MODE_VERTEX_PAINT)) return;
        if(me==0 || me->mcol==0 || me->totface==0) return;
 
        igam= 1.0/vp->gamma;
@@ -1584,22 +1586,22 @@
        me= get_mesh(ob);
        
        if(me==NULL || object_data_is_libdata(ob)) {
-               G.f &= ~G_VERTEXPAINT;
+               ob->mode &= ~OB_MODE_VERTEX_PAINT;
                return OPERATOR_PASS_THROUGH;
        }
        
        if(me && me->totface>=MAXINDEX) {
                error("Maximum number of faces: %d", MAXINDEX-1);
-               G.f &= ~G_VERTEXPAINT;
+               ob->mode &= ~OB_MODE_VERTEX_PAINT;
                return OPERATOR_FINISHED;
        }
        
        if(me && me->mcol==NULL) make_vertexcol(scene, 0);
        
        /* toggle: end vpaint */
-       if(G.f & G_VERTEXPAINT) {
+       if(ob->mode & OB_MODE_VERTEX_PAINT) {
                
-               G.f &= ~G_VERTEXPAINT;
+               ob->mode &= ~OB_MODE_VERTEX_PAINT;
                
                if(vp) {
                        toggle_paint_cursor(C, 0);
@@ -1608,7 +1610,7 @@
        }
        else {
                
-               G.f |= G_VERTEXPAINT;
+               ob->mode |= OB_MODE_VERTEX_PAINT;
                /* Turn off weight painting */
                if (G.f & G_WEIGHTPAINT)
                        set_wpaint(C, op);

Modified: 
branches/blender2.5/blender/source/blender/editors/space_buttons/buttons_context.c
===================================================================
--- 
branches/blender2.5/blender/source/blender/editors/space_buttons/buttons_context.c
  2009-08-15 20:21:49 UTC (rev 22481)
+++ 
branches/blender2.5/blender/source/blender/editors/space_buttons/buttons_context.c
  2009-08-15 20:36:15 UTC (rev 22482)
@@ -323,7 +323,7 @@
 
                if(obact && obact->mode & OB_MODE_SCULPT)
                        br= ts->sculpt->brush;
-               else if(G.f & G_VERTEXPAINT)
+               else if(obact && obact->mode & OB_MODE_VERTEX_PAINT)
                        br= ts->vpaint->brush;
                else if(G.f & G_WEIGHTPAINT)
                        br= ts->wpaint->brush;

Modified: 
branches/blender2.5/blender/source/blender/editors/space_view3d/drawobject.c

@@ Diff output truncated at 10240 characters. @@

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

Reply via email to