[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