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

Ton Roosendaal ton at blender.org
Sat Jan 10 15:19:14 CET 2009


Revision: 18440
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=18440
Author:   ton
Date:     2009-01-10 15:19:14 +0100 (Sat, 10 Jan 2009)

Log Message:
-----------
2.5

- Weightpaint back (CTRL+TAB or menu)
  Also weightpaint is sortof non-modal, allowing to use all existing
  hotkeys while in paint mode. Only leftmouse is overridden.
- Made vpaint and wpaint entirely local, stored in scene (and saved!)
- Small bugfix (also in 2.48): on weightpaint mode, all armature objects
  in 3d window were drawing as active poses. Now only the armature 
  deformer is.

Nice point for the UI agenda: are paint modes on ACTION mouse? Only then
you can combine it with SELECT mouse...

Modified Paths:
--------------
    branches/blender2.5/blender/source/blender/blenkernel/intern/DerivedMesh.c
    branches/blender2.5/blender/source/blender/blenkernel/intern/scene.c
    branches/blender2.5/blender/source/blender/blenloader/intern/readfile.c
    branches/blender2.5/blender/source/blender/blenloader/intern/writefile.c
    branches/blender2.5/blender/source/blender/editors/animation/anim_deps.c
    branches/blender2.5/blender/source/blender/editors/armature/editarmature.c
    branches/blender2.5/blender/source/blender/editors/armature/meshlaplacian.c
    branches/blender2.5/blender/source/blender/editors/armature/poseobject.c
    branches/blender2.5/blender/source/blender/editors/include/ED_anim_api.h
    branches/blender2.5/blender/source/blender/editors/include/ED_armature.h
    branches/blender2.5/blender/source/blender/editors/include/ED_mesh.h
    branches/blender2.5/blender/source/blender/editors/include/ED_view3d.h
    branches/blender2.5/blender/source/blender/editors/mesh/meshtools.c
    branches/blender2.5/blender/source/blender/editors/object/object_edit.c
    branches/blender2.5/blender/source/blender/editors/space_view3d/drawarmature.c
    branches/blender2.5/blender/source/blender/editors/space_view3d/view3d_header.c
    branches/blender2.5/blender/source/blender/editors/space_view3d/view3d_intern.h
    branches/blender2.5/blender/source/blender/editors/space_view3d/view3d_ops.c
    branches/blender2.5/blender/source/blender/editors/space_view3d/view3d_select.c
    branches/blender2.5/blender/source/blender/editors/space_view3d/vpaint.c
    branches/blender2.5/blender/source/blender/editors/util/ed_util.c
    branches/blender2.5/blender/source/blender/makesdna/DNA_scene_types.h

Modified: branches/blender2.5/blender/source/blender/blenkernel/intern/DerivedMesh.c
===================================================================
--- branches/blender2.5/blender/source/blender/blenkernel/intern/DerivedMesh.c	2009-01-10 14:03:00 UTC (rev 18439)
+++ branches/blender2.5/blender/source/blender/blenkernel/intern/DerivedMesh.c	2009-01-10 14:19:14 UTC (rev 18440)
@@ -2054,15 +2054,16 @@
 {
 	Mesh *me = ob->data;
 	float min[3], max[3];
-	int needMapping= 0; //
+	//int needMapping= 0; 
 	
+	Object *obact = scene->basact?scene->basact->object:NULL;
+	int editing = (FACESEL_PAINT_TEST)|(G.f & G_PARTICLEEDIT);
+	int needMapping = editing && (ob==obact);
+	
 	clear_mesh_caches(ob);
 
-// XXX		Object *obact = scene->basact?scene->basact->object:NULL;
-//		int editing = (FACESEL_PAINT_TEST)|(G.f & G_PARTICLEEDIT);
-//		int needMapping = editing && (ob==obact);
-//		if( (G.f & G_WEIGHTPAINT) && ob==obact ) {
-	if(dataMask & CD_MASK_WEIGHTPAINT) {
+	if( (G.f & G_WEIGHTPAINT) && ob==obact ) {
+//	if(dataMask & CD_MASK_WEIGHTPAINT) {
 		MCol *wpcol = (MCol*)calc_weightpaint_colors(ob);
 		int layernum = CustomData_number_of_layers(&me->fdata, CD_MCOL);
 		int prevactive = CustomData_get_active_layer(&me->fdata, CD_MCOL);

Modified: branches/blender2.5/blender/source/blender/blenkernel/intern/scene.c
===================================================================
--- branches/blender2.5/blender/source/blender/blenkernel/intern/scene.c	2009-01-10 14:03:00 UTC (rev 18439)
+++ branches/blender2.5/blender/source/blender/blenkernel/intern/scene.c	2009-01-10 14:19:14 UTC (rev 18440)
@@ -167,7 +167,12 @@
 	BLI_freelistN(&sce->transform_spaces);
 	BLI_freelistN(&sce->r.layers);
 	
-	if(sce->toolsettings){
+	if(sce->toolsettings) {
+		if(sce->toolsettings->vpaint)
+			MEM_freeN(sce->toolsettings->vpaint);
+		if(sce->toolsettings->wpaint)
+			MEM_freeN(sce->toolsettings->wpaint);
+		
 		MEM_freeN(sce->toolsettings);
 		sce->toolsettings = NULL;	
 	}

Modified: branches/blender2.5/blender/source/blender/blenloader/intern/readfile.c
===================================================================
--- branches/blender2.5/blender/source/blender/blenloader/intern/readfile.c	2009-01-10 14:03:00 UTC (rev 18439)
+++ branches/blender2.5/blender/source/blender/blenloader/intern/readfile.c	2009-01-10 14:19:14 UTC (rev 18440)
@@ -3604,7 +3604,10 @@
 	sce->radio= newdataadr(fd, sce->radio);
 	
 	sce->toolsettings= newdataadr(fd, sce->toolsettings);
-
+	if(sce->toolsettings) {
+		sce->toolsettings->vpaint= newdataadr(fd, sce->toolsettings->vpaint);
+		sce->toolsettings->wpaint= newdataadr(fd, sce->toolsettings->wpaint);
+	}
 	sce->sculptdata.session= NULL;
 	/* SculptData textures */
 	for(a=0; a<MAX_MTEX; ++a)

Modified: branches/blender2.5/blender/source/blender/blenloader/intern/writefile.c
===================================================================
--- branches/blender2.5/blender/source/blender/blenloader/intern/writefile.c	2009-01-10 14:03:00 UTC (rev 18439)
+++ branches/blender2.5/blender/source/blender/blenloader/intern/writefile.c	2009-01-10 14:19:14 UTC (rev 18440)
@@ -1472,6 +1472,10 @@
 
 		writestruct(wd, DATA, "Radio", 1, sce->radio);
 		writestruct(wd, DATA, "ToolSettings", 1, sce->toolsettings);
+		if(sce->toolsettings->vpaint)
+			writestruct(wd, DATA, "VPaint", 1, sce->toolsettings->vpaint);
+		if(sce->toolsettings->wpaint)
+			writestruct(wd, DATA, "VPaint", 1, sce->toolsettings->wpaint);
 
 		for(a=0; a<MAX_MTEX; ++a)
 			writestruct(wd, DATA, "MTex", 1, sce->sculptdata.mtex[a]);

Modified: branches/blender2.5/blender/source/blender/editors/animation/anim_deps.c
===================================================================
--- branches/blender2.5/blender/source/blender/editors/animation/anim_deps.c	2009-01-10 14:03:00 UTC (rev 18439)
+++ branches/blender2.5/blender/source/blender/editors/animation/anim_deps.c	2009-01-10 14:19:14 UTC (rev 18440)
@@ -89,7 +89,16 @@
 	DAG_scene_flush_update(scene, screen_view3d_layers(screen), 0);
 }
 
+/* flushes changes from object to all relations in scene */
+void ED_anim_object_flush_update(const bContext *C, Object *ob)
+{
+	Scene *scene= CTX_data_scene(C);
+	bScreen *screen= CTX_wm_screen(C);
+	
+	DAG_object_update_flags(scene, ob, screen_view3d_layers(screen));
+}
 
+
 /* results in fully updated anim system */
 /* in future sound should be on WM level, only 1 sound can play! */
 void ED_update_for_newframe(const bContext *C, int mute)

Modified: branches/blender2.5/blender/source/blender/editors/armature/editarmature.c
===================================================================
--- branches/blender2.5/blender/source/blender/editors/armature/editarmature.c	2009-01-10 14:03:00 UTC (rev 18439)
+++ branches/blender2.5/blender/source/blender/editors/armature/editarmature.c	2009-01-10 14:19:14 UTC (rev 18440)
@@ -99,10 +99,7 @@
 static void BIF_undo_push() {}
 static void adduplicate() {}
 static void countall() {}
-static void vertexgroup_select_by_name() {}
 static void deselect_actionchannels() {}
-static void add_vert_to_defgroup() {}
-static void create_dverts() {}
 static void select_actionchannel_by_name() {}
 /* ************* XXX *************** */
 
@@ -3563,7 +3560,7 @@
 }
 
 /* called from editview.c, for mode-less pose selection */
-/* assumes scene obact and basact... XXX */
+/* assumes scene obact and basact is still on old situation */
 int ED_do_pose_selectbuffer(Scene *scene, Base *base, unsigned int *buffer, short hits, short extend)
 {
 	Object *ob= base->object;
@@ -3605,8 +3602,8 @@
 		/* in weightpaint we select the associated vertex group too */
 		if (G.f & G_WEIGHTPAINT) {
 			if (nearBone->flag & BONE_ACTIVE) {
-				vertexgroup_select_by_name(ob, nearBone->name);
-				DAG_object_flush_update(scene, ob, OB_RECALC_DATA);
+				vertexgroup_select_by_name(OBACT, nearBone->name);
+				DAG_object_flush_update(scene, OBACT, OB_RECALC_DATA);
 			}
 		}
 		

Modified: branches/blender2.5/blender/source/blender/editors/armature/meshlaplacian.c
===================================================================
--- branches/blender2.5/blender/source/blender/editors/armature/meshlaplacian.c	2009-01-10 14:03:00 UTC (rev 18439)
+++ branches/blender2.5/blender/source/blender/editors/armature/meshlaplacian.c	2009-01-10 14:19:14 UTC (rev 18440)
@@ -58,20 +58,17 @@
 
 #include "BLO_sys_types.h" // for intptr_t support
 
+#include "ED_armature.h"
+#include "ED_mesh.h"
+
 #include "meshlaplacian.h"
 
 
 /* ************* XXX *************** */
-static void remove_vert_defgroup() {}
-static int mesh_get_x_mirror_vert() {return 0;}
 static void waitcursor() {}
 static void progress_bar() {}
 static void start_progress_bar() {}
 static void end_progress_bar() {}
-static float get_vert_defgroup() {return 0.0;}
-static void add_vert_to_defgroup() {}
-#define WEIGHT_REPLACE 0
-#define WEIGHT_ADD 0
 static void error() {}
 /* ************* XXX *************** */
 

Modified: branches/blender2.5/blender/source/blender/editors/armature/poseobject.c
===================================================================
--- branches/blender2.5/blender/source/blender/editors/armature/poseobject.c	2009-01-10 14:03:00 UTC (rev 18439)
+++ branches/blender2.5/blender/source/blender/editors/armature/poseobject.c	2009-01-10 14:19:14 UTC (rev 18440)
@@ -52,6 +52,7 @@
 #include "BKE_action.h"
 #include "BKE_armature.h"
 #include "BKE_blender.h"
+#include "BKE_context.h"
 #include "BKE_constraint.h"
 #include "BKE_deform.h"
 #include "BKE_depsgraph.h"
@@ -66,8 +67,10 @@
 #include "BIF_gl.h"
 
 #include "ED_armature.h"
+#include "ED_anim_api.h"
 #include "ED_keyframing.h"
 #include "ED_object.h"
+#include "ED_mesh.h"
 #include "ED_view3d.h"
 
 #include "armature_intern.h"
@@ -81,8 +84,6 @@
 static void BIF_undo_push() {}
 static void countall() {}
 static void add_constraint() {}
-static void vertexgroup_select_by_name() {}
-static int screen_view3d_layers() {return 0;}
 static void select_actionchannel_by_name() {}
 static int autokeyframe_cfra_can_key() {return 0;}
 static void autokeyframe_pose_cb_func() {}
@@ -194,7 +195,7 @@
 /* For the object with pose/action: create path curves for selected bones 
  * This recalculates the WHOLE path within the pchan->pathsf and pchan->pathef range
  */
-void pose_calculate_path(Scene *scene, Object *ob)
+void pose_calculate_path(bContext *C, Scene *scene, Object *ob)
 {
 	bArmature *arm;
 	bPoseChannel *pchan;
@@ -230,10 +231,10 @@
 	/* hack: for unsaved files, set OB_RECALC so that paths can get calculated */
 	if ((ob->recalc & OB_RECALC)==0) {
 		ob->recalc |= OB_RECALC;
-		DAG_object_update_flags(scene, ob, screen_view3d_layers());
+		ED_anim_object_flush_update(C, ob);
 	}
 	else
-		DAG_object_update_flags(scene, ob, screen_view3d_layers());
+		ED_anim_object_flush_update(C, ob);
 	
 	
 	/* malloc the path blocks */
@@ -288,7 +289,7 @@
 /* For the object with pose/action: update paths for those that have got them
  * This should selectively update paths that exist...
  */
-void pose_recalculate_paths(Scene *scene, Object *ob)
+void pose_recalculate_paths(bContext *C, Scene *scene, Object *ob)
 {
 	bArmature *arm;
 	bPoseChannel *pchan;
@@ -324,10 +325,10 @@
 	/* hack: for unsaved files, set OB_RECALC so that paths can get calculated */
 	if ((ob->recalc & OB_RECALC)==0) {
 		ob->recalc |= OB_RECALC;
-		DAG_object_update_flags(scene, ob, screen_view3d_layers());
+		ED_anim_object_flush_update(C, ob);
 	}
 	else
-		DAG_object_update_flags(scene, ob, screen_view3d_layers());
+		ED_anim_object_flush_update(C, ob);
 	
 	for (CFRA=sfra; CFRA<=efra; CFRA++) {
 		/* do all updates */
@@ -1628,7 +1629,7 @@
 		pose_flip_names();
 	}
 	else if(nr==3) {
-		pose_calculate_path(ob);
+		pose_calculate_path(C, ob);
 	}
 	else if(nr==4) {
 		pose_clear_paths(ob);

Modified: branches/blender2.5/blender/source/blender/editors/include/ED_anim_api.h
===================================================================
--- branches/blender2.5/blender/source/blender/editors/include/ED_anim_api.h	2009-01-10 14:03:00 UTC (rev 18439)
+++ branches/blender2.5/blender/source/blender/editors/include/ED_anim_api.h	2009-01-10 14:19:14 UTC (rev 18440)
@@ -30,6 +30,7 @@
 #define ED_ANIM_API_H
 
 struct ID;
+struct Scene;
 struct ListBase;
 struct bContext;
 struct wmWindowManager;
@@ -321,8 +322,11 @@
 
 /* --------- anim_deps.c, animation updates -------- */
 
-/* generic update flush, reads from Context screen (layers) and scene */

@@ Diff output truncated at 10240 characters. @@




More information about the Bf-blender-cvs mailing list