[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [33063] trunk/blender/source/blender/ editors/transform: Move rotOrder to proper transform data structure

Martin Poirier theeth at yahoo.com
Sun Nov 14 20:19:58 CET 2010


Revision: 33063
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=33063
Author:   theeth
Date:     2010-11-14 20:19:58 +0100 (Sun, 14 Nov 2010)

Log Message:
-----------
Move rotOrder to proper transform data structure

Modified Paths:
--------------
    trunk/blender/source/blender/editors/transform/transform.c
    trunk/blender/source/blender/editors/transform/transform.h
    trunk/blender/source/blender/editors/transform/transform_conversions.c

Modified: trunk/blender/source/blender/editors/transform/transform.c
===================================================================
--- trunk/blender/source/blender/editors/transform/transform.c	2010-11-14 19:06:39 UTC (rev 33062)
+++ trunk/blender/source/blender/editors/transform/transform.c	2010-11-14 19:19:58 UTC (rev 33063)
@@ -1986,9 +1986,10 @@
 	 *	- current space should be local
 	 */
 	memset(cob, 0, sizeof(bConstraintOb));
-	if (td->rotOrder == ROT_MODE_QUAT) {
-		/* quats */
-		if (td->ext) {
+	if (td->ext)
+	{
+		if (td->ext->rotOrder == ROT_MODE_QUAT) {
+			/* quats */
 			/* objects and bones do normalization first too, otherwise
 			   we don't necessarily end up with a rotation matrix, and
 			   then conversion back to quat gives a different result */
@@ -1997,23 +1998,15 @@
 			normalize_qt(quat);
 			quat_to_mat4(cob->matrix, quat);
 		}
-		else
-			return;
-	}
-	else if (td->rotOrder == ROT_MODE_AXISANGLE) {
-		/* axis angle */
-		if (td->ext)
+		else if (td->ext->rotOrder == ROT_MODE_AXISANGLE) {
+			/* axis angle */
 			axis_angle_to_mat4(cob->matrix, &td->ext->quat[1], td->ext->quat[0]);
-		else
-			return;
+		}
+		else {
+			/* eulers */
+			eulO_to_mat4(cob->matrix, td->ext->rot, td->ext->rotOrder);
+		}
 	}
-	else {
-		/* eulers */
-		if (td->ext)
-			eulO_to_mat4(cob->matrix, td->ext->rot, td->rotOrder);
-		else
-			return;
-	}
 }
 
 static void constraintRotLim(TransInfo *UNUSED(t), TransData *td)
@@ -2070,17 +2063,17 @@
 		
 		if(dolimit) {
 			/* copy results from cob->matrix */
-			if (td->rotOrder == ROT_MODE_QUAT) {
+			if (td->ext->rotOrder == ROT_MODE_QUAT) {
 				/* quats */
 				mat4_to_quat( td->ext->quat,cob.matrix);
 			}
-			else if (td->rotOrder == ROT_MODE_AXISANGLE) {
+			else if (td->ext->rotOrder == ROT_MODE_AXISANGLE) {
 				/* axis angle */
 				mat4_to_axis_angle( &td->ext->quat[1], &td->ext->quat[0],cob.matrix);
 			}
 			else {
 				/* eulers */
-				mat4_to_eulO( td->ext->rot, td->rotOrder,cob.matrix);
+				mat4_to_eulO( td->ext->rot, td->ext->rotOrder,cob.matrix);
 			}
 		}
 	}
@@ -2946,7 +2939,7 @@
 		/* rotation */
 		if ((t->flag & T_V3D_ALIGN)==0) { // align mode doesn't rotate objects itself
 			/* euler or quaternion/axis-angle? */
-			if (td->rotOrder == ROT_MODE_QUAT) {
+			if (td->ext->rotOrder == ROT_MODE_QUAT) {
 				mul_serie_m3(fmat, td->mtx, mat, td->smtx, 0, 0, 0, 0, 0);
 				
 				mat3_to_quat( quat,fmat);	// Actual transform
@@ -2956,7 +2949,7 @@
 				protectedQuaternionBits(td->protectflag, td->ext->quat, td->ext->iquat);
 				
 			}
-			else if (td->rotOrder == ROT_MODE_AXISANGLE) {
+			else if (td->ext->rotOrder == ROT_MODE_AXISANGLE) {
 				/* calculate effect based on quats */
 				float iquat[4], tquat[4];
 				
@@ -2979,12 +2972,12 @@
 				
 				/* calculate the total rotatation in eulers */
 				VECCOPY(eul, td->ext->irot);
-				eulO_to_mat3( eulmat,eul, td->rotOrder);
+				eulO_to_mat3( eulmat,eul, td->ext->rotOrder);
 				
 				/* mat = transform, obmat = bone rotation */
 				mul_m3_m3m3(fmat, smat, eulmat);
 				
-				mat3_to_compatible_eulO( eul, td->ext->rot, td->rotOrder,fmat);
+				mat3_to_compatible_eulO( eul, td->ext->rot, td->ext->rotOrder,fmat);
 				
 				/* and apply (to end result only) */
 				protectedRotateBits(td->protectflag, eul, td->ext->irot);
@@ -3016,7 +3009,7 @@
 		/* rotation */
 		if ((t->flag & T_V3D_ALIGN)==0) { // align mode doesn't rotate objects itself
 			/* euler or quaternion? */
-			   if ((td->rotOrder == ROT_MODE_QUAT) || (td->flag & TD_USEQUAT)) {
+			   if ((td->ext->rotOrder == ROT_MODE_QUAT) || (td->flag & TD_USEQUAT)) {
 				mul_serie_m3(fmat, td->mtx, mat, td->smtx, 0, 0, 0, 0, 0);
 				mat3_to_quat( quat,fmat);	// Actual transform
 				
@@ -3024,7 +3017,7 @@
 				/* this function works on end result */
 				protectedQuaternionBits(td->protectflag, td->ext->quat, td->ext->iquat);
 			}
-			else if (td->rotOrder == ROT_MODE_AXISANGLE) {
+			else if (td->ext->rotOrder == ROT_MODE_AXISANGLE) {
 				/* calculate effect based on quats */
 				float iquat[4], tquat[4];
 				
@@ -3047,11 +3040,11 @@
 				
 				/* calculate the total rotatation in eulers */
 				add_v3_v3v3(eul, td->ext->irot, td->ext->drot); /* we have to correct for delta rot */
-				eulO_to_mat3( obmat,eul, td->rotOrder);
+				eulO_to_mat3( obmat,eul, td->ext->rotOrder);
 				/* mat = transform, obmat = object rotation */
 				mul_m3_m3m3(fmat, smat, obmat);
 				
-				mat3_to_compatible_eulO( eul, td->ext->rot, td->rotOrder,fmat);
+				mat3_to_compatible_eulO( eul, td->ext->rot, td->ext->rotOrder,fmat);
 				
 				/* correct back for delta rot */
 				sub_v3_v3v3(eul, eul, td->ext->drot);

Modified: trunk/blender/source/blender/editors/transform/transform.h
===================================================================
--- trunk/blender/source/blender/editors/transform/transform.h	2010-11-14 19:06:39 UTC (rev 33062)
+++ trunk/blender/source/blender/editors/transform/transform.h	2010-11-14 19:19:58 UTC (rev 33063)
@@ -147,6 +147,7 @@
 	float  isize[3];	 /* Initial size                                                                   */
 	float  obmat[4][4];	 /* Object matrix */
 	float  l_smtx[3][3]; /* use instead of td->smtx, It is the same but without the 'bone->bone_mat', see TD_PBONE_LOCAL_MTX_C */
+	int    rotOrder;	/* rotation mode,  as defined in eRotationModes (DNA_action_types.h) */
 } TransDataExtension;
 
 typedef struct TransData2D {
@@ -233,7 +234,6 @@
 	void  *extra;		 /* extra data (mirrored element pointer, in editmode mesh to EditVert) (editbone for roll fixing) (...) */
 	int  flag;         /* Various flags */
 	short  protectflag;	 /* If set, copy of Object or PoseChannel protection */
-	int    rotOrder;	/* rotation mode,  as defined in eRotationModes (DNA_action_types.h) */
 } TransData;
 
 typedef struct MouseInput {

Modified: trunk/blender/source/blender/editors/transform/transform_conversions.c
===================================================================
--- trunk/blender/source/blender/editors/transform/transform_conversions.c	2010-11-14 19:06:39 UTC (rev 33062)
+++ trunk/blender/source/blender/editors/transform/transform_conversions.c	2010-11-14 19:19:58 UTC (rev 33063)
@@ -548,7 +548,7 @@
 		
 		QUATCOPY(td->ext->iquat, pchan->quat);
 	}
-	td->rotOrder= pchan->rotmode;
+	td->ext->rotOrder= pchan->rotmode;
 	
 
 	/* proper way to get parent transform + own transform + constraints transform */
@@ -4329,7 +4329,7 @@
 		QUATCOPY(td->ext->iquat, ob->quat);
 		QUATCOPY(td->ext->dquat, ob->dquat);
 	}
-	td->rotOrder=ob->rotmode;
+	td->ext->rotOrder=ob->rotmode;
 
 	td->ext->size = ob->size;
 	VECCOPY(td->ext->isize, ob->size);
@@ -5158,7 +5158,7 @@
 		td->flag = TD_SELECTED;
 		td->protectflag= ob->protectflag;
 		td->ext = tx;
-		td->rotOrder= ob->rotmode;
+		td->ext->rotOrder= ob->rotmode;
 		
 		if (base->flag & BA_TRANSFORM_CHILD)
 		{
@@ -5192,7 +5192,7 @@
 			{
 				td->protectflag= ob->protectflag;
 				td->ext = tx;
-				td->rotOrder= ob->rotmode;
+				td->ext->rotOrder= ob->rotmode;
 				
 				ObjectToTransData(t, td, ob);
 				td->val = NULL;





More information about the Bf-blender-cvs mailing list