Commit: 365546a66243b1e86e3fe25a3d270ff47160e896
Author: Campbell Barton
Date:   Thu Apr 6 11:35:04 2017 +1000
Branches: custom-manipulators
https://developer.blender.org/rB365546a66243b1e86e3fe25a3d270ff47160e896

Add null check to gimbal_axis (sync with 2.8)

===================================================================

M       source/blender/editors/transform/transform_manipulator.c

===================================================================

diff --git a/source/blender/editors/transform/transform_manipulator.c 
b/source/blender/editors/transform/transform_manipulator.c
index 1563328a963..83681e1e233 100644
--- a/source/blender/editors/transform/transform_manipulator.c
+++ b/source/blender/editors/transform/transform_manipulator.c
@@ -530,64 +530,66 @@ static int test_rotmode_euler(short rotmode)
 
 bool gimbal_axis(Object *ob, float gmat[3][3])
 {
-       if (ob->mode & OB_MODE_POSE) {
-               bPoseChannel *pchan = BKE_pose_channel_active(ob);
+       if (ob) {
+               if (ob->mode & OB_MODE_POSE) {
+                       bPoseChannel *pchan = BKE_pose_channel_active(ob);
+
+                       if (pchan) {
+                               float mat[3][3], tmat[3][3], obmat[3][3];
+                               if (test_rotmode_euler(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;
+                               }
 
-               if (pchan) {
-                       float mat[3][3], tmat[3][3], obmat[3][3];
-                       if (test_rotmode_euler(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);
 
-                       /* apply bone transformation */
-                       mul_m3_m3m3(tmat, pchan->bone->bone_mat, mat);
+                               if (pchan->parent) {
+                                       float parent_mat[3][3];
 
-                       if (pchan->parent) {
-                               float parent_mat[3][3];
+                                       copy_m3_m4(parent_mat, 
pchan->parent->pose_mat);
+                                       mul_m3_m3m3(mat, parent_mat, tmat);
 
-                               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);
+                               }
 
-                               /* needed if object transformation isn't 
identity */
-                               copy_m3_m4(obmat, ob->obmat);
-                               mul_m3_m3m3(gmat, obmat, mat);
+                               normalize_m3(gmat);
+                               return 1;
                        }
-                       else {
-                               /* needed if object transformation isn't 
identity */
-                               copy_m3_m4(obmat, ob->obmat);
-                               mul_m3_m3m3(gmat, obmat, tmat);
+               }
+               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;
                        }
 
-                       normalize_m3(gmat);
+                       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;
                }
        }
-       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;
 }

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
https://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to