Revision: 18421 http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=18421 Author: theeth Date: 2009-01-08 18:12:50 +0100 (Thu, 08 Jan 2009)
Log Message: ----------- 2.5 Transform editbones Modified Paths: -------------- branches/blender2.5/blender/source/blender/editors/armature/editarmature.c branches/blender2.5/blender/source/blender/editors/include/ED_armature.h branches/blender2.5/blender/source/blender/editors/transform/transform_conversions.c branches/blender2.5/blender/source/blender/editors/transform/transform_generics.c Modified: branches/blender2.5/blender/source/blender/editors/armature/editarmature.c =================================================================== --- branches/blender2.5/blender/source/blender/editors/armature/editarmature.c 2009-01-08 16:52:30 UTC (rev 18420) +++ branches/blender2.5/blender/source/blender/editors/armature/editarmature.c 2009-01-08 17:12:50 UTC (rev 18421) @@ -1830,7 +1830,7 @@ /* adjust bone roll to align Z axis with vector * vec is in local space and is normalized */ -float rollBoneToVector(EditBone *bone, float new_up_axis[3]) +float ED_rollBoneToVector(EditBone *bone, float new_up_axis[3]) { float mat[3][3], nor[3], up_axis[3], vec[3]; float roll; Modified: branches/blender2.5/blender/source/blender/editors/include/ED_armature.h =================================================================== --- branches/blender2.5/blender/source/blender/editors/include/ED_armature.h 2009-01-08 16:52:30 UTC (rev 18420) +++ branches/blender2.5/blender/source/blender/editors/include/ED_armature.h 2009-01-08 17:12:50 UTC (rev 18421) @@ -92,7 +92,10 @@ short hits, short extend); void mouse_armature(struct bContext *C, short mval[2], int extend); +float ED_rollBoneToVector(EditBone *bone, float new_up_axis[3]); +void transform_armature_mirror_update(struct Object *obedit); + /* poseobject.c */ void ED_armature_exit_posemode(struct Base *base); void ED_armature_enter_posemode(struct Base *base); Modified: branches/blender2.5/blender/source/blender/editors/transform/transform_conversions.c =================================================================== --- branches/blender2.5/blender/source/blender/editors/transform/transform_conversions.c 2009-01-08 16:52:30 UTC (rev 18420) +++ branches/blender2.5/blender/source/blender/editors/transform/transform_conversions.c 2009-01-08 17:12:50 UTC (rev 18421) @@ -1021,25 +1021,29 @@ static void createTransArmatureVerts(bContext *C, TransInfo *t) { - // TRANSFORM_FIX_ME -#if 0 EditBone *ebo; bArmature *arm= t->obedit->data; + ListBase *edbo = arm->edbo; TransData *td; float mtx[3][3], smtx[3][3], delta[3], bonemat[3][3]; t->total = 0; - for (ebo=G.edbo.first;ebo;ebo=ebo->next) { - if(ebo->layer & arm->layer) { - if (t->mode==TFM_BONESIZE) { + for (ebo = edbo->first; ebo; ebo = ebo->next) + { + if(ebo->layer & arm->layer) + { + if (t->mode==TFM_BONESIZE) + { if (ebo->flag & BONE_SELECTED) t->total++; } - else if (t->mode==TFM_BONE_ROLL) { + else if (t->mode==TFM_BONE_ROLL) + { if (ebo->flag & BONE_SELECTED) t->total++; } - else { + else + { if (ebo->flag & BONE_TIPSEL) t->total++; if (ebo->flag & BONE_ROOTSEL) @@ -1055,13 +1059,15 @@ td = t->data = MEM_callocN(t->total*sizeof(TransData), "TransEditBone"); - for (ebo=G.edbo.first;ebo;ebo=ebo->next){ - ebo->oldlength= ebo->length; // length==0.0 on extrude, used for scaling radius of bone points + for (ebo = edbo->first; ebo; ebo = ebo->next) + { + ebo->oldlength = ebo->length; // length==0.0 on extrude, used for scaling radius of bone points if(ebo->layer & arm->layer) { - if (t->mode==TFM_BONE_ENVELOPE) { - - if (ebo->flag & BONE_ROOTSEL){ + if (t->mode==TFM_BONE_ENVELOPE) + { + if (ebo->flag & BONE_ROOTSEL) + { td->val= &ebo->rad_head; td->ival= *td->val; @@ -1077,7 +1083,8 @@ td++; } - if (ebo->flag & BONE_TIPSEL){ + if (ebo->flag & BONE_TIPSEL) + { td->val= &ebo->rad_tail; td->ival= *td->val; VECCOPY (td->center, ebo->tail); @@ -1094,14 +1101,17 @@ } } - else if (t->mode==TFM_BONESIZE) { + else if (t->mode==TFM_BONESIZE) + { if (ebo->flag & BONE_SELECTED) { - if(arm->drawtype==ARM_ENVELOPE) { + if(arm->drawtype==ARM_ENVELOPE) + { td->loc= NULL; td->val= &ebo->dist; td->ival= ebo->dist; } - else { + else + { // abusive storage of scale in the loc pointer :) td->loc= &ebo->xwidth; VECCOPY (td->iloc, td->loc); @@ -1125,8 +1135,10 @@ td++; } } - else if (t->mode==TFM_BONE_ROLL) { - if (ebo->flag & BONE_SELECTED) { + else if (t->mode==TFM_BONE_ROLL) + { + if (ebo->flag & BONE_SELECTED) + { td->loc= NULL; td->val= &(ebo->roll); td->ival= ebo->roll; @@ -1140,8 +1152,10 @@ td++; } } - else { - if (ebo->flag & BONE_TIPSEL){ + else + { + if (ebo->flag & BONE_TIPSEL) + { VECCOPY (td->iloc, ebo->tail); VECCOPY (td->center, td->iloc); td->loc= ebo->tail; @@ -1166,7 +1180,8 @@ td++; } - if (ebo->flag & BONE_ROOTSEL){ + if (ebo->flag & BONE_ROOTSEL) + { VECCOPY (td->iloc, ebo->head); VECCOPY (td->center, td->iloc); td->loc= ebo->head; @@ -1191,7 +1206,6 @@ } } } -#endif } /* ********************* meta elements ********* */ Modified: branches/blender2.5/blender/source/blender/editors/transform/transform_generics.c =================================================================== --- branches/blender2.5/blender/source/blender/editors/transform/transform_generics.c 2009-01-08 16:52:30 UTC (rev 18420) +++ branches/blender2.5/blender/source/blender/editors/transform/transform_generics.c 2009-01-08 17:12:50 UTC (rev 18421) @@ -421,30 +421,7 @@ } } else if (t->obedit) { - if (t->obedit->type == OB_MESH) { - if(t->spacetype==SPACE_IMAGE) { - flushTransUVs(t); - if (G.sima->flag & SI_LIVE_UNWRAP) - unwrap_lscm_live_re_solve(); - } else { - EditMesh *em = ((Mesh *)t->obedit->data)->edit_mesh - /* mirror modifier clipping? */ - if(t->state != TRANS_CANCEL) { - if ((G.qual & LR_CTRLKEY)==0) { - /* Only retopo if not snapping, Note, this is the only case of G.qual being used, but we have no T_SHIFT_MOD - Campbell */ - retopo_do_all(); - } - clipMirrorModifier(t, t->obedit); - } - if((t->options & CTX_NO_MIRROR) == 0 && (G.scene->toolsettings->editbutflag & B_MESH_X_MIRROR)) - editmesh_apply_to_mirror(t); - - DAG_object_flush_update(G.scene, t->obedit, OB_RECALC_DATA); /* sets recalc flags */ - - recalc_editnormals(em); - } - } - else if ELEM(t->obedit->type, OB_CURVE, OB_SURF) { + if ELEM(t->obedit->type, OB_CURVE, OB_SURF) { Nurb *nu= editNurb.first; DAG_object_flush_update(G.scene, t->obedit, OB_RECALC_DATA); /* sets recalc flags */ @@ -463,14 +440,68 @@ retopo_do_all(); } } - else if(t->obedit->type==OB_ARMATURE){ /* no recalc flag, does pose */ + else if(t->obedit->type==OB_LATTICE) { + DAG_object_flush_update(G.scene, t->obedit, OB_RECALC_DATA); /* sets recalc flags */ + + if(editLatt->flag & LT_OUTSIDE) outside_lattice(editLatt); + } + else { + DAG_object_flush_update(G.scene, t->obedit, OB_RECALC_DATA); /* sets recalc flags */ + } + } + else if( (t->flag & T_POSE) && t->poseobj) { + Object *ob= t->poseobj; + bArmature *arm= ob->data; + + /* old optimize trick... this enforces to bypass the depgraph */ + if (!(arm->flag & ARM_DELAYDEFORM)) { + DAG_object_flush_update(G.scene, ob, OB_RECALC_DATA); /* sets recalc flags */ + } + else + where_is_pose(ob); + } + else if(G.f & G_PARTICLEEDIT) { + flushTransParticles(t); + } +#endif + if (t->spacetype==SPACE_NODE) { + flushTransNodes(t); + } + else if (t->obedit) { + if (t->obedit->type == OB_MESH) { + if(t->spacetype==SPACE_IMAGE) { + flushTransUVs(t); + /* TRANSFORM_FIX_ME */ +// if (G.sima->flag & SI_LIVE_UNWRAP) +// unwrap_lscm_live_re_solve(); + } else { + EditMesh *em = ((Mesh*)t->obedit->data)->edit_mesh; + /* mirror modifier clipping? */ + if(t->state != TRANS_CANCEL) { + /* TRANSFORM_FIX_ME */ +// if ((G.qual & LR_CTRLKEY)==0) { +// /* Only retopo if not snapping, Note, this is the only case of G.qual being used, but we have no T_SHIFT_MOD - Campbell */ +// retopo_do_all(); +// } + clipMirrorModifier(t, t->obedit); + } + if((t->options & CTX_NO_MIRROR) == 0 && (t->scene->toolsettings->editbutflag & B_MESH_X_MIRROR)) + editmesh_apply_to_mirror(t); + + DAG_object_flush_update(t->scene, t->obedit, OB_RECALC_DATA); /* sets recalc flags */ + + recalc_editnormals(em); + } + } + else if(t->obedit->type==OB_ARMATURE) { /* no recalc flag, does pose */ bArmature *arm= t->obedit->data; + ListBase *edbo = arm->edbo; EditBone *ebo; TransData *td = t->data; int i; /* Ensure all bones are correctly adjusted */ - for (ebo=G.edbo.first; ebo; ebo=ebo->next){ + for (ebo = edbo->first; ebo; ebo = ebo->next){ if ((ebo->flag & BONE_CONNECTED) && ebo->parent){ /* If this bone has a parent tip that has been moved */ @@ -531,69 +562,16 @@ Mat3MulVecfl(t->mat, up_axis); } - ebo->roll = rollBoneToVector(ebo, up_axis); + ebo->roll = ED_rollBoneToVector(ebo, up_axis); } } } if(arm->flag & ARM_MIRROR_EDIT) - transform_armature_mirror_update(); + transform_armature_mirror_update(t->obedit); } - else if(t->obedit->type==OB_LATTICE) { - DAG_object_flush_update(G.scene, t->obedit, OB_RECALC_DATA); /* sets recalc flags */ - - if(editLatt->flag & LT_OUTSIDE) outside_lattice(editLatt); - } - else { - DAG_object_flush_update(G.scene, t->obedit, OB_RECALC_DATA); /* sets recalc flags */ - } } - else if( (t->flag & T_POSE) && t->poseobj) { - Object *ob= t->poseobj; - bArmature *arm= ob->data; - - /* old optimize trick... this enforces to bypass the depgraph */ - if (!(arm->flag & ARM_DELAYDEFORM)) { - DAG_object_flush_update(G.scene, ob, OB_RECALC_DATA); /* sets recalc flags */ - } - else - where_is_pose(ob); - } - else if(G.f & G_PARTICLEEDIT) { - flushTransParticles(t); - } -#endif - if (t->spacetype==SPACE_NODE) { - flushTransNodes(t); - } - else if (t->obedit) { - if (t->obedit->type == OB_MESH) { - if(t->spacetype==SPACE_IMAGE) { - flushTransUVs(t); - /* TRANSFORM_FIX_ME */ -// if (G.sima->flag & SI_LIVE_UNWRAP) -// unwrap_lscm_live_re_solve(); - } else { - EditMesh *em = ((Mesh*)t->obedit->data)->edit_mesh; - /* mirror modifier clipping? */ - if(t->state != TRANS_CANCEL) { - /* TRANSFORM_FIX_ME */ -// if ((G.qual & LR_CTRLKEY)==0) { -// /* Only retopo if not snapping, Note, this is the only case of G.qual being used, but we have no T_SHIFT_MOD - Campbell */ -// retopo_do_all(); -// } @@ Diff output truncated at 10240 characters. @@ _______________________________________________ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org http://lists.blender.org/mailman/listinfo/bf-blender-cvs