[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [37474] branches/soc-2011-pepper/source/ blender: Bugfix: Distance DVar doesn't work with new Local Space

Joshua Leung aligorith at gmail.com
Tue Jun 14 13:01:36 CEST 2011


Revision: 37474
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=37474
Author:   aligorith
Date:     2011-06-14 11:01:36 +0000 (Tue, 14 Jun 2011)
Log Message:
-----------
Bugfix: Distance DVar doesn't work with new Local Space

Fixed references in UI to the old property, and adapted the backend
code to work for the new options too.

Modified Paths:
--------------
    branches/soc-2011-pepper/source/blender/blenkernel/intern/fcurve.c
    branches/soc-2011-pepper/source/blender/editors/space_graph/graph_buttons.c

Modified: branches/soc-2011-pepper/source/blender/blenkernel/intern/fcurve.c
===================================================================
--- branches/soc-2011-pepper/source/blender/blenkernel/intern/fcurve.c	2011-06-14 09:55:38 UTC (rev 37473)
+++ branches/soc-2011-pepper/source/blender/blenkernel/intern/fcurve.c	2011-06-14 11:01:36 UTC (rev 37474)
@@ -1153,26 +1153,51 @@
 		/* check if object or bone */
 		if (pchan) {
 			/* bone */
-			if ((dtar->flag & DTAR_FLAG_LOCALSPACE) == 0) {
+			if (dtar->flag & DTAR_FLAG_LOCALSPACE) {
+				if (dtar->flag & DTAR_FLAG_LOCAL_CONSTS) {
+					float mat[4][4];
+					
+					/* extract transform just like how the constraints do it! */
+					copy_m4_m4(mat, pchan->pose_mat);
+					constraint_mat_convertspace(ob, pchan, mat, CONSTRAINT_SPACE_POSE, CONSTRAINT_SPACE_LOCAL);
+					
+					/* ... and from that, we get our transform */
+					VECCOPY(tmp_loc, mat[3]);
+				}
+				else {
+					/* transform space (use transform values directly) */
+					VECCOPY(tmp_loc, pchan->loc);
+				}
+			}
+			else {
 				/* convert to worldspace */
 				VECCOPY(tmp_loc, pchan->pose_head);
 				mul_m4_v3(ob->obmat, tmp_loc);
 			}
-			else {
-				/* local (use transform values directly) */
-				VECCOPY(tmp_loc, pchan->loc);
-			}
 		}
 		else {
 			/* object */
-			if ((dtar->flag & DTAR_FLAG_LOCALSPACE) == 0) {
+			if (dtar->flag & DTAR_FLAG_LOCALSPACE) {
+				if (dtar->flag & DTAR_FLAG_LOCAL_CONSTS) {
+					// XXX: this should practically be the same as transform space...
+					float mat[4][4];
+					
+					/* extract transform just like how the constraints do it! */
+					copy_m4_m4(mat, ob->obmat);
+					constraint_mat_convertspace(ob, NULL, mat, CONSTRAINT_SPACE_WORLD, CONSTRAINT_SPACE_LOCAL);
+					
+					/* ... and from that, we get our transform */
+					VECCOPY(tmp_loc, mat[3]);
+				}
+				else {
+					/* transform space (use transform values directly) */
+					VECCOPY(tmp_loc, ob->loc);
+				}
+			}
+			else {
 				/* worldspace */
 				VECCOPY(tmp_loc, ob->obmat[3]); 
 			}
-			else {
-				/* local (use transform values directly) */
-				VECCOPY(tmp_loc, ob->loc);
-			}
 		}
 		
 		/* copy the location to the right place */

Modified: branches/soc-2011-pepper/source/blender/editors/space_graph/graph_buttons.c
===================================================================
--- branches/soc-2011-pepper/source/blender/editors/space_graph/graph_buttons.c	2011-06-14 09:55:38 UTC (rev 37473)
+++ branches/soc-2011-pepper/source/blender/editors/space_graph/graph_buttons.c	2011-06-14 11:01:36 UTC (rev 37474)
@@ -472,7 +472,7 @@
 			uiItemPointerR(col, &dtar_ptr, "bone_target", &tar_ptr, "bones", "", ICON_BONE_DATA);
 		}
 		
-		uiItemR(col, &dtar_ptr, "use_local_space_transform", 0, NULL, ICON_NONE);
+		uiItemR(col, &dtar_ptr, "transform_space", 0, NULL, ICON_NONE);
 	
 	col= uiLayoutColumn(layout, 1);
 		uiTemplateAnyID(col, &dtar2_ptr, "id", "id_type", "Ob/Bone 2:");
@@ -484,7 +484,7 @@
 			uiItemPointerR(col, &dtar2_ptr, "bone_target", &tar_ptr, "bones", "", ICON_BONE_DATA);
 		}
 		
-		uiItemR(col, &dtar2_ptr, "use_local_space_transform", 0, NULL, ICON_NONE);
+		uiItemR(col, &dtar2_ptr, "transform_space", 0, NULL, ICON_NONE);
 }
 
 /* settings for 'transform channel' driver variable type */




More information about the Bf-blender-cvs mailing list