From c4971c20827de2604f06d502cae6802346e99a0c Mon Sep 17 00:00:00 2001 From: Ton Roosendaal Date: Fri, 25 Mar 2005 13:31:59 +0000 Subject: [PATCH] Transform fix; in PoseMode you now can do multiple chains again. --- source/blender/src/transform.c | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/source/blender/src/transform.c b/source/blender/src/transform.c index 6a7dd06fbbd..8922638a2b9 100755 --- a/source/blender/src/transform.c +++ b/source/blender/src/transform.c @@ -296,6 +296,7 @@ static void createTransTexspace(void) void count_bone_select(ListBase *lb, int *counter) { Bone *bone; + int deeper= 1; for(bone= lb->first; bone; bone= bone->next) { if (bone->flag & BONE_SELECTED) { @@ -303,10 +304,11 @@ void count_bone_select(ListBase *lb, int *counter) /* ALERT! abusive global Trans here */ if ( (Trans.mode!=TFM_TRANSLATION) || (bone->flag & BONE_IK_TOPARENT)==0 ) { (*counter)++; - return; // no transform on children if one parent bone is selected + deeper= 0; // no transform on children if one parent bone is selected } + else deeper= 1; } - count_bone_select( &bone->childbase, counter); + if(deeper) count_bone_select( &bone->childbase, counter); } } @@ -318,6 +320,7 @@ static void add_pose_transdata(ListBase *lb, Object *ob, TransData **tdp) float parmat[4][4], tempmat[4][4]; float tempobmat[4][4]; float vec[3]; + int deeper= 1; for(bone= lb->first; bone; bone= bone->next) { if (bone->flag & BONE_SELECTED) { @@ -355,10 +358,12 @@ static void add_pose_transdata(ListBase *lb, Object *ob, TransData **tdp) Mat3Inv (td->smtx, td->mtx); (*tdp)++; - return; // see above function + td= *tdp; + deeper= 0; } + else deeper= 1; } - add_pose_transdata(&bone->childbase, ob, tdp); + if(deeper) add_pose_transdata(&bone->childbase, ob, tdp); } }