diff options
author | mano-wii <germano.costa@ig.com.br> | 2020-02-16 00:43:58 +0300 |
---|---|---|
committer | mano-wii <germano.costa@ig.com.br> | 2020-02-16 00:44:11 +0300 |
commit | 071639442344bc8fd689456108bbea0bfd527037 (patch) | |
tree | 8eb7ec87ba9211e4c64eab0ee72b2e4558615239 /source/blender/editors/transform/transform_generics.c | |
parent | 322dc723165a705c34df1e3246e500da1a9927de (diff) |
Cleanup: Transform: Rearrange definitions and declarations
Diffstat (limited to 'source/blender/editors/transform/transform_generics.c')
-rw-r--r-- | source/blender/editors/transform/transform_generics.c | 71 |
1 files changed, 2 insertions, 69 deletions
diff --git a/source/blender/editors/transform/transform_generics.c b/source/blender/editors/transform/transform_generics.c index 922b8dd01d8..9a524351982 100644 --- a/source/blender/editors/transform/transform_generics.c +++ b/source/blender/editors/transform/transform_generics.c @@ -783,69 +783,6 @@ static void recalcData_spaceclip(TransInfo *t) } } -/** - * if pose bone (partial) selected, copy data. - * context; posemode armature, with mirror editing enabled. - * - * \param pid: Optional, apply relative transform when set (has no effect on mirrored bones). - */ -static void pose_transform_mirror_update(TransInfo *t, - TransDataContainer *tc, - Object *ob, - PoseInitData_Mirror *pid) -{ - float flip_mtx[4][4]; - unit_m4(flip_mtx); - flip_mtx[0][0] = -1; - - TransData *td = tc->data; - for (int i = tc->data_len; i--; td++) { - bPoseChannel *pchan_orig = td->extra; - BLI_assert(pchan_orig->bone->flag & BONE_TRANSFORM); - /* No layer check, correct mirror is more important. */ - bPoseChannel *pchan = BKE_pose_channel_get_mirrored(ob->pose, pchan_orig->name); - if (pchan == NULL) { - continue; - } - - /* Also do bbone scaling. */ - pchan->bone->xwidth = pchan_orig->bone->xwidth; - pchan->bone->zwidth = pchan_orig->bone->zwidth; - - /* We assume X-axis flipping for now. */ - pchan->curve_in_x = pchan_orig->curve_in_x * -1; - pchan->curve_out_x = pchan_orig->curve_out_x * -1; - pchan->roll1 = pchan_orig->roll1 * -1; // XXX? - pchan->roll2 = pchan_orig->roll2 * -1; // XXX? - - float pchan_mtx_final[4][4]; - BKE_pchan_to_mat4(pchan_orig, pchan_mtx_final); - mul_m4_m4m4(pchan_mtx_final, pchan_mtx_final, flip_mtx); - mul_m4_m4m4(pchan_mtx_final, flip_mtx, pchan_mtx_final); - if (pid) { - mul_m4_m4m4(pchan_mtx_final, pid->offset_mtx, pchan_mtx_final); - } - BKE_pchan_apply_mat4(pchan, pchan_mtx_final, false); - - /* In this case we can do target-less IK grabbing. */ - if (t->mode == TFM_TRANSLATION) { - bKinematicConstraint *data = has_targetless_ik(pchan); - if (data == NULL) { - continue; - } - mul_v3_m4v3(data->grabtarget, flip_mtx, td->loc); - if (pid) { - /* TODO(germano): Realitve Mirror support */ - } - data->flag |= CONSTRAINT_IK_AUTO; - } - - if (pid) { - pid++; - } - } -} - /* helper for recalcData() - for object transforms, typically in the 3D view */ static void recalcData_objects(TransInfo *t) { @@ -1058,7 +995,7 @@ static void recalcData_objects(TransInfo *t) DEG_id_tag_update(&ob->id, ID_RECALC_GEOMETRY); bPose *pose = ob->pose; if (arm->flag & ARM_MIRROR_EDIT || pose->flag & POSE_MIRROR_EDIT) { - pose_transform_mirror_update(t, tc, ob, NULL); + pose_transform_mirror_update(t, tc, ob); } } } @@ -1072,11 +1009,7 @@ static void recalcData_objects(TransInfo *t) if (pose->flag & POSE_MIRROR_EDIT) { if (t->state != TRANS_CANCEL) { - PoseInitData_Mirror *pid = NULL; - if (pose->flag & POSE_MIRROR_RELATIVE) { - pid = tc->custom.type.data; - } - pose_transform_mirror_update(t, tc, ob, pid); + pose_transform_mirror_update(t, tc, ob); } else { restoreMirrorPoseBones(tc); |