[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [12824] trunk/blender/source/blender/src/ transform_conversions.c:

Brecht Van Lommel brechtvanlommel at pandora.be
Sat Dec 8 16:44:47 CET 2007


Revision: 12824
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=12824
Author:   blendix
Date:     2007-12-08 16:44:47 +0100 (Sat, 08 Dec 2007)

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

Bone Transform
==============

When pressing the g key on a bone that can't be translated, rotation
is automatically activated. However, with multiple bone selected, it
did this even if some bones can be translated. Now it only switches
to rotation if no bones can translated.

Modified Paths:
--------------
    trunk/blender/source/blender/src/transform_conversions.c

Modified: trunk/blender/source/blender/src/transform_conversions.c
===================================================================
--- trunk/blender/source/blender/src/transform_conversions.c	2007-12-08 05:20:40 UTC (rev 12823)
+++ trunk/blender/source/blender/src/transform_conversions.c	2007-12-08 15:44:47 UTC (rev 12824)
@@ -641,6 +641,7 @@
 	bArmature *arm= ob->data;
 	bPoseChannel *pchan;
 	Bone *bone;
+	int hastranslation;
 	
 	t->total= 0;
 	
@@ -666,23 +667,32 @@
 		}
 	}	
 	/* now count, and check if we have autoIK or have to switch from translate to rotate */
+	hastranslation= 0;
+
 	for(pchan= ob->pose->chanbase.first; pchan; pchan= pchan->next) {
 		bone= pchan->bone;
 		if(bone->flag & BONE_TRANSFORM) {
+
 			t->total++;
 			
 			if(t->mode==TFM_TRANSLATION) {
 				if( has_targetless_ik(pchan)==NULL ) {
 					if(pchan->parent && (pchan->bone->flag & BONE_CONNECTED)) {
-						if(!(pchan->bone->flag & BONE_HINGE_CHILD_TRANSFORM))
-							t->mode= TFM_ROTATION;
+						if(pchan->bone->flag & BONE_HINGE_CHILD_TRANSFORM)
+							hastranslation= 1;
 					}
-					else if((pchan->protectflag & OB_LOCK_LOC)==OB_LOCK_LOC)
-						t->mode= TFM_ROTATION;
+					else if((pchan->protectflag & OB_LOCK_LOC)!=OB_LOCK_LOC)
+						hastranslation= 1;
 				}
+				else
+					hastranslation= 1;
 			}
 		}
 	}
+
+	/* if there are no translatable bones, do rotation */
+	if(t->mode==TFM_TRANSLATION && !hastranslation)
+		t->mode= TFM_ROTATION;
 }
 
 /* frees temporal IKs */





More information about the Bf-blender-cvs mailing list