[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [22482] branches/blender2.5/blender/source /blender: 2.5/Vertex paint:

Nicholas Bishop nicholasbishop at gmail.com
Sat Aug 15 22:36:15 CEST 2009


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. @@




More information about the Bf-blender-cvs mailing list