[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [34702] trunk/blender/source/blender/ editors/object/object_constraint.c: Bugfix: Constraint target validation code was broken

Joshua Leung aligorith at gmail.com
Tue Feb 8 00:21:30 CET 2011


Revision: 34702
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=34702
Author:   aligorith
Date:     2011-02-07 23:21:28 +0000 (Mon, 07 Feb 2011)
Log Message:
-----------
Bugfix: Constraint target validation code was broken

While testing Apply Visual transforms last night, I noticed that
setting a constraint to use its owner as its target was allowed and
didn't trigger any warnings. This clearly doesn't do any good and is
different from the old behaviour.

Modified Paths:
--------------
    trunk/blender/source/blender/editors/object/object_constraint.c

Modified: trunk/blender/source/blender/editors/object/object_constraint.c
===================================================================
--- trunk/blender/source/blender/editors/object/object_constraint.c	2011-02-07 22:48:23 UTC (rev 34701)
+++ trunk/blender/source/blender/editors/object/object_constraint.c	2011-02-07 23:21:28 UTC (rev 34702)
@@ -405,11 +405,26 @@
 				for (ct= targets.first; ct; ct= ct->next) {
 					/* general validity checks (for those constraints that need this) */
 					if (exist_object(ct->tar) == 0) {
+						/* object doesn't exist, but constraint requires target */
 						ct->tar = NULL;
 						curcon->flag |= CONSTRAINT_DISABLE;
 					}
 					else if (ct->tar == owner) {
-						if (!get_named_bone(get_armature(owner), ct->subtarget)) {
+						if (type == CONSTRAINT_OBTYPE_BONE) {
+							if (!get_named_bone(get_armature(owner), ct->subtarget)) {
+								/* bone must exist in armature... */
+								// TODO: clear subtarget?
+								curcon->flag |= CONSTRAINT_DISABLE;
+							}
+							else if (strcmp(pchan->name, ct->subtarget) == 0) {
+								/* cannot target self */
+								ct->subtarget[0] = '\0';
+								curcon->flag |= CONSTRAINT_DISABLE;
+							}
+						}
+						else {
+							/* cannot use self as target */
+							ct->tar = NULL;
 							curcon->flag |= CONSTRAINT_DISABLE;
 						}
 					}




More information about the Bf-blender-cvs mailing list