Remove NULL check from gimbal_axis
This commit is contained in:
@@ -201,66 +201,64 @@ static int test_rotmode_euler(short rotmode)
|
|||||||
|
|
||||||
bool gimbal_axis(Object *ob, float gmat[3][3])
|
bool gimbal_axis(Object *ob, float gmat[3][3])
|
||||||
{
|
{
|
||||||
if (ob) {
|
if (ob->mode & OB_MODE_POSE) {
|
||||||
if (ob->mode & OB_MODE_POSE) {
|
bPoseChannel *pchan = BKE_pose_channel_active(ob);
|
||||||
bPoseChannel *pchan = BKE_pose_channel_active(ob);
|
|
||||||
|
|
||||||
if (pchan) {
|
if (pchan) {
|
||||||
float mat[3][3], tmat[3][3], obmat[3][3];
|
float mat[3][3], tmat[3][3], obmat[3][3];
|
||||||
if (test_rotmode_euler(pchan->rotmode)) {
|
if (test_rotmode_euler(pchan->rotmode)) {
|
||||||
eulO_to_gimbal_axis(mat, pchan->eul, pchan->rotmode);
|
eulO_to_gimbal_axis(mat, pchan->eul, pchan->rotmode);
|
||||||
}
|
|
||||||
else if (pchan->rotmode == ROT_MODE_AXISANGLE) {
|
|
||||||
axis_angle_to_gimbal_axis(mat, pchan->rotAxis, pchan->rotAngle);
|
|
||||||
}
|
|
||||||
else { /* quat */
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/* apply bone transformation */
|
|
||||||
mul_m3_m3m3(tmat, pchan->bone->bone_mat, mat);
|
|
||||||
|
|
||||||
if (pchan->parent) {
|
|
||||||
float parent_mat[3][3];
|
|
||||||
|
|
||||||
copy_m3_m4(parent_mat, pchan->parent->pose_mat);
|
|
||||||
mul_m3_m3m3(mat, parent_mat, tmat);
|
|
||||||
|
|
||||||
/* needed if object transformation isn't identity */
|
|
||||||
copy_m3_m4(obmat, ob->obmat);
|
|
||||||
mul_m3_m3m3(gmat, obmat, mat);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
/* needed if object transformation isn't identity */
|
|
||||||
copy_m3_m4(obmat, ob->obmat);
|
|
||||||
mul_m3_m3m3(gmat, obmat, tmat);
|
|
||||||
}
|
|
||||||
|
|
||||||
normalize_m3(gmat);
|
|
||||||
return 1;
|
|
||||||
}
|
}
|
||||||
}
|
else if (pchan->rotmode == ROT_MODE_AXISANGLE) {
|
||||||
else {
|
axis_angle_to_gimbal_axis(mat, pchan->rotAxis, pchan->rotAngle);
|
||||||
if (test_rotmode_euler(ob->rotmode)) {
|
|
||||||
eulO_to_gimbal_axis(gmat, ob->rot, ob->rotmode);
|
|
||||||
}
|
|
||||||
else if (ob->rotmode == ROT_MODE_AXISANGLE) {
|
|
||||||
axis_angle_to_gimbal_axis(gmat, ob->rotAxis, ob->rotAngle);
|
|
||||||
}
|
}
|
||||||
else { /* quat */
|
else { /* quat */
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ob->parent) {
|
|
||||||
|
/* apply bone transformation */
|
||||||
|
mul_m3_m3m3(tmat, pchan->bone->bone_mat, mat);
|
||||||
|
|
||||||
|
if (pchan->parent) {
|
||||||
float parent_mat[3][3];
|
float parent_mat[3][3];
|
||||||
copy_m3_m4(parent_mat, ob->parent->obmat);
|
|
||||||
normalize_m3(parent_mat);
|
copy_m3_m4(parent_mat, pchan->parent->pose_mat);
|
||||||
mul_m3_m3m3(gmat, parent_mat, gmat);
|
mul_m3_m3m3(mat, parent_mat, tmat);
|
||||||
|
|
||||||
|
/* needed if object transformation isn't identity */
|
||||||
|
copy_m3_m4(obmat, ob->obmat);
|
||||||
|
mul_m3_m3m3(gmat, obmat, mat);
|
||||||
}
|
}
|
||||||
|
else {
|
||||||
|
/* needed if object transformation isn't identity */
|
||||||
|
copy_m3_m4(obmat, ob->obmat);
|
||||||
|
mul_m3_m3m3(gmat, obmat, tmat);
|
||||||
|
}
|
||||||
|
|
||||||
|
normalize_m3(gmat);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else {
|
||||||
|
if (test_rotmode_euler(ob->rotmode)) {
|
||||||
|
eulO_to_gimbal_axis(gmat, ob->rot, ob->rotmode);
|
||||||
|
}
|
||||||
|
else if (ob->rotmode == ROT_MODE_AXISANGLE) {
|
||||||
|
axis_angle_to_gimbal_axis(gmat, ob->rotAxis, ob->rotAngle);
|
||||||
|
}
|
||||||
|
else { /* quat */
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (ob->parent) {
|
||||||
|
float parent_mat[3][3];
|
||||||
|
copy_m3_m4(parent_mat, ob->parent->obmat);
|
||||||
|
normalize_m3(parent_mat);
|
||||||
|
mul_m3_m3m3(gmat, parent_mat, gmat);
|
||||||
|
}
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@@ -451,7 +451,7 @@ void initTransformOrientation(bContext *C, TransInfo *t)
|
|||||||
|
|
||||||
case V3D_MANIP_GIMBAL:
|
case V3D_MANIP_GIMBAL:
|
||||||
unit_m3(t->spacemtx);
|
unit_m3(t->spacemtx);
|
||||||
if (gimbal_axis(ob, t->spacemtx)) {
|
if (ob && gimbal_axis(ob, t->spacemtx)) {
|
||||||
BLI_strncpy(t->spacename, IFACE_("gimbal"), sizeof(t->spacename));
|
BLI_strncpy(t->spacename, IFACE_("gimbal"), sizeof(t->spacename));
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user