[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [23351] trunk/blender/source/blender/ editors: Fix combined pose + weight paint mode, was using wrong object

Brecht Van Lommel brecht at blender.org
Sat Sep 19 17:48:47 CEST 2009


Revision: 23351
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=23351
Author:   blendix
Date:     2009-09-19 17:48:47 +0200 (Sat, 19 Sep 2009)

Log Message:
-----------
Fix combined pose + weight paint mode, was using wrong object
in a few places, missing some checks.

Modified Paths:
--------------
    trunk/blender/source/blender/editors/armature/editarmature.c
    trunk/blender/source/blender/editors/space_view3d/drawarmature.c
    trunk/blender/source/blender/editors/space_view3d/view3d_select.c
    trunk/blender/source/blender/editors/transform/transform_conversions.c

Modified: trunk/blender/source/blender/editors/armature/editarmature.c
===================================================================
--- trunk/blender/source/blender/editors/armature/editarmature.c	2009-09-19 14:16:02 UTC (rev 23350)
+++ trunk/blender/source/blender/editors/armature/editarmature.c	2009-09-19 15:48:47 UTC (rev 23351)
@@ -4333,7 +4333,7 @@
 		}
 		
 		/* in weightpaint we select the associated vertex group too */
-		if (ob->mode & OB_MODE_WEIGHT_PAINT) {
+		if (OBACT && OBACT->mode & OB_MODE_WEIGHT_PAINT) {
 			if (nearBone->flag & BONE_ACTIVE) {
 				ED_vgroup_select_by_name(OBACT, nearBone->name);
 				DAG_id_flush_update(&OBACT->id, OB_RECALC_DATA);

Modified: trunk/blender/source/blender/editors/space_view3d/drawarmature.c
===================================================================
--- trunk/blender/source/blender/editors/space_view3d/drawarmature.c	2009-09-19 14:16:02 UTC (rev 23350)
+++ trunk/blender/source/blender/editors/space_view3d/drawarmature.c	2009-09-19 15:48:47 UTC (rev 23351)
@@ -2513,7 +2513,11 @@
 			/* drawing posemode selection indices or colors only in these cases */
 			if(!(base->flag & OB_FROMDUPLI)) {
 				if(G.f & G_PICKSEL) {
-					if(ob->mode & OB_MODE_POSE) 
+					if(OBACT && (OBACT->mode & OB_MODE_WEIGHT_PAINT)) {
+						if(ob==modifiers_isDeformedByArmature(OBACT))
+							arm->flag |= ARM_POSEMODE;
+					}
+					else if(ob->mode & OB_MODE_POSE) 
 						arm->flag |= ARM_POSEMODE;
 				}
 				else if(ob->mode & OB_MODE_POSE) {
@@ -2530,8 +2534,8 @@
 					if ((flag & DRAW_SCENESET)==0) {
 						if(ob==OBACT) 
 							arm->flag |= ARM_POSEMODE;
-						else if(ob->mode & OB_MODE_WEIGHT_PAINT) {
-							if(OBACT && ob==modifiers_isDeformedByArmature(OBACT))
+						else if(OBACT && (OBACT->mode & OB_MODE_WEIGHT_PAINT)) {
+							if(ob==modifiers_isDeformedByArmature(OBACT))
 								arm->flag |= ARM_POSEMODE;
 						}
 						draw_pose_paths(scene, v3d, rv3d, ob);

Modified: trunk/blender/source/blender/editors/space_view3d/view3d_select.c
===================================================================
--- trunk/blender/source/blender/editors/space_view3d/view3d_select.c	2009-09-19 14:16:02 UTC (rev 23350)
+++ trunk/blender/source/blender/editors/space_view3d/view3d_select.c	2009-09-19 15:48:47 UTC (rev 23351)
@@ -1148,7 +1148,7 @@
 					WM_event_add_notifier(C, NC_OBJECT|ND_BONE_ACTIVE, basact->object);
 					
 					/* in weightpaint, we use selected bone to select vertexgroup, so no switch to new active object */
-					if(basact->object->mode & OB_MODE_WEIGHT_PAINT) {
+					if(BASACT && BASACT->object->mode & OB_MODE_WEIGHT_PAINT) {
 						/* prevent activating */
 						basact= NULL;
 					}

Modified: trunk/blender/source/blender/editors/transform/transform_conversions.c
===================================================================
--- trunk/blender/source/blender/editors/transform/transform_conversions.c	2009-09-19 14:16:02 UTC (rev 23350)
+++ trunk/blender/source/blender/editors/transform/transform_conversions.c	2009-09-19 15:48:47 UTC (rev 23351)
@@ -5289,7 +5289,7 @@
 		{
 			if(ob_armature->type==OB_ARMATURE)
 			{
-				if(ob_armature->mode & OB_MODE_POSE)
+				if((ob_armature->mode & OB_MODE_POSE) && ob_armature == modifiers_isDeformedByArmature(ob))
 				{
 					createTransPose(C, t, ob_armature);
 					break;





More information about the Bf-blender-cvs mailing list