[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [12354] trunk/blender/source/blender/src: More constraints bugfixes:

Joshua Leung aligorith at gmail.com
Tue Oct 23 12:16:46 CEST 2007


Revision: 12354
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=12354
Author:   aligorith
Date:     2007-10-23 12:16:46 +0200 (Tue, 23 Oct 2007)

Log Message:
-----------
More constraints bugfixes:
* Fixed crash that occurs when using an unknown constraint type or a Null constraint - missing NULL check
* ClampTo constraint now draws ok again
* Null constraints now get drawn in the stack again

Modified Paths:
--------------
    trunk/blender/source/blender/src/buttons_object.c
    trunk/blender/source/blender/src/drawobject.c
    trunk/blender/source/blender/src/editconstraint.c

Modified: trunk/blender/source/blender/src/buttons_object.c
===================================================================
--- trunk/blender/source/blender/src/buttons_object.c	2007-10-23 08:23:57 UTC (rev 12353)
+++ trunk/blender/source/blender/src/buttons_object.c	2007-10-23 10:16:46 UTC (rev 12354)
@@ -482,12 +482,14 @@
 
 	cti= constraint_get_typeinfo(con);
 	if (cti == NULL) {
-		printf("Argh! No valid constraint type-info... aborting constraint drawing. \n");
-		return;
+		/* exception for 'Null' constraint - it doesn't have constraint typeinfo! */
+		if (con->type == CONSTRAINT_TYPE_NULL)
+			strcpy(typestr, "Null");
+		else
+			strcpy(typestr, "Unknown");
 	}
-	else {
+	else
 		strcpy(typestr, cti->name);
-	}
 		
 	/* unless button has own callback, it adds this callback to button */
 	uiBlockSetFunc(block, constraint_active_func, ob, con);
@@ -1398,10 +1400,10 @@
 				uiBlockEndAlign(block);
 				
 				/* Extra Options Controlling Behaviour */
-				uiBlockBeginAlign(block);
-					uiDefBut(block, LABEL, B_CONSTRAINT_TEST, "Options:", *xco, *yco-86, 90, 18, NULL, 0.0, 0.0, 0.0, 0.0, ""); 
-					uiDefButBitI(block, TOG, CLAMPTO_CYCLIC, B_CONSTRAINT_TEST, "Cyclic", *xco+((width/2)), *yco-86,60,19, &data->flag2, 0, 0, 0, 0, "Treat curve as cyclic curve (no clamping to curve bounding box)");
-				uiBlockEndAlign(block);
+				//uiBlockBeginAlign(block);
+					uiDefBut(block, LABEL, B_CONSTRAINT_TEST, "Options:", *xco, *yco-88, 90, 18, NULL, 0.0, 0.0, 0.0, 0.0, ""); 
+					uiDefButBitI(block, TOG, CLAMPTO_CYCLIC, B_CONSTRAINT_TEST, "Cyclic", *xco+((width/2)), *yco-88,60,19, &data->flag2, 0, 0, 0, 0, "Treat curve as cyclic curve (no clamping to curve bounding box)");
+				//uiBlockEndAlign(block);
 			}
 			break;
 		case CONSTRAINT_TYPE_TRANSFORM:
@@ -1639,7 +1641,7 @@
 		{
 			con = add_new_constraint(CONSTRAINT_TYPE_NULL);
 			add_constraint_to_active(ob, con);
-
+			
 			BIF_undo_push("Add constraint");
 		}
 		break;

Modified: trunk/blender/source/blender/src/drawobject.c
===================================================================
--- trunk/blender/source/blender/src/drawobject.c	2007-10-23 08:23:57 UTC (rev 12353)
+++ trunk/blender/source/blender/src/drawobject.c	2007-10-23 10:16:46 UTC (rev 12354)
@@ -4317,7 +4317,7 @@
 				ListBase targets = {NULL, NULL};
 				bConstraintTarget *ct;
 				
-				if ((curcon->flag & CONSTRAINT_EXPAND) && (cti->get_constraint_targets)) {
+				if ((curcon->flag & CONSTRAINT_EXPAND) && (cti) && (cti->get_constraint_targets)) {
 					cti->get_constraint_targets(curcon, &targets);
 					
 					for (ct= targets.first; ct; ct= ct->next) {

Modified: trunk/blender/source/blender/src/editconstraint.c
===================================================================
--- trunk/blender/source/blender/src/editconstraint.c	2007-10-23 08:23:57 UTC (rev 12353)
+++ trunk/blender/source/blender/src/editconstraint.c	2007-10-23 10:16:46 UTC (rev 12354)
@@ -223,7 +223,7 @@
 	con->type = type;
 	con->flag |= CONSTRAINT_EXPAND;
 	con->enforce = 1.0F;
-	strcpy (con->name, "Const");
+	strcpy(con->name, "Const");
 	
 	/* Load the data for it */
 	cti = constraint_get_typeinfo(con);
@@ -248,7 +248,7 @@
 		BLI_addtail(list, con);
 		
 		con->flag |= CONSTRAINT_ACTIVE;
-		for(con= con->prev; con; con= con->prev)
+		for (con= con->prev; con; con= con->prev)
 			con->flag &= ~CONSTRAINT_ACTIVE;
 	}
 }
@@ -256,7 +256,7 @@
 /* checks validity of object pointers, and NULLs,
  * if Bone doesnt exist it sets the CONSTRAINT_DISABLE flag 
  */
-static void test_constraints (Object *owner, const char* substring)
+static void test_constraints (Object *owner, const char substring[])
 {
 	
 	bConstraint *curcon;
@@ -328,7 +328,7 @@
 				{
 					bActionConstraint *data = curcon->data;
 					
-					if (!exist_object(data->tar)){
+					if (!exist_object(data->tar)) {
 						data->tar = NULL;
 						curcon->flag |= CONSTRAINT_DISABLE;
 						break;
@@ -346,7 +346,7 @@
 				{
 					bLocateLikeConstraint *data = curcon->data;
 					
-					if (!exist_object(data->tar)){
+					if (!exist_object(data->tar)) {
 						data->tar = NULL;
 						curcon->flag |= CONSTRAINT_DISABLE;
 						break;
@@ -364,7 +364,7 @@
 				{
 					bMinMaxConstraint *data = curcon->data;
 					
-					if (!exist_object(data->tar)){
+					if (!exist_object(data->tar)) {
 						data->tar = NULL;
 						curcon->flag |= CONSTRAINT_DISABLE;
 						break;
@@ -382,7 +382,7 @@
 				{
 					bRotateLikeConstraint *data = curcon->data;
 					
-					if (!exist_object(data->tar)){
+					if (!exist_object(data->tar)) {
 						data->tar = NULL;
 						curcon->flag |= CONSTRAINT_DISABLE;
 						break;
@@ -400,7 +400,7 @@
 				{
 					bSizeLikeConstraint *data = curcon->data;
 				
-					if (!exist_object(data->tar)){
+					if (!exist_object(data->tar)) {
 						data->tar = NULL;
 						curcon->flag |= CONSTRAINT_DISABLE;
 						break;
@@ -417,7 +417,7 @@
 				case CONSTRAINT_TYPE_KINEMATIC:
 				{
 					bKinematicConstraint *data = curcon->data;
-					if (!exist_object(data->tar)){
+					if (!exist_object(data->tar)) {
 						data->tar = NULL;
 						curcon->flag |= CONSTRAINT_DISABLE;
 						break;
@@ -446,11 +446,11 @@
 						curcon->flag |= CONSTRAINT_DISABLE;
 						break;
 					}
-					if (data->reserved2==data->reserved1){
+					if (data->reserved2==data->reserved1) {
 						curcon->flag |= CONSTRAINT_DISABLE;
 						break;
 					}
-					if (data->reserved2+3==data->reserved1){
+					if (data->reserved2+3==data->reserved1) {
 						curcon->flag |= CONSTRAINT_DISABLE;
 						break;
 					}
@@ -460,7 +460,7 @@
 				{
 					bLockTrackConstraint *data = curcon->data;
 					
-					if (!exist_object(data->tar)){
+					if (!exist_object(data->tar)) {
 						data->tar = NULL;
 						curcon->flag |= CONSTRAINT_DISABLE;
 						break;
@@ -473,11 +473,11 @@
 						break;
 					}
 
-					if (data->lockflag==data->trackflag){
+					if (data->lockflag==data->trackflag) {
 						curcon->flag |= CONSTRAINT_DISABLE;
 						break;
 					}
-					if (data->lockflag+3==data->trackflag){
+					if (data->lockflag+3==data->trackflag) {
 						curcon->flag |= CONSTRAINT_DISABLE;
 						break;
 					}
@@ -487,7 +487,7 @@
 				{
 					bStretchToConstraint *data = curcon->data;
 					
-					if (!exist_object(data->tar)){
+					if (!exist_object(data->tar)) {
 						data->tar = NULL;
 						curcon->flag |= CONSTRAINT_DISABLE;
 						break;
@@ -505,21 +505,21 @@
 				{
 					bFollowPathConstraint *data = curcon->data;
 					
-					if (!exist_object(data->tar)){
+					if (!exist_object(data->tar)) {
 						data->tar = NULL;
 						curcon->flag |= CONSTRAINT_DISABLE;
 						break;
 					}
-					if (data->tar->type != OB_CURVE){
+					if (data->tar->type != OB_CURVE) {
 						data->tar = NULL;
 						curcon->flag |= CONSTRAINT_DISABLE;
 						break;
 					}
-					if (data->upflag==data->trackflag){
+					if (data->upflag==data->trackflag) {
 						curcon->flag |= CONSTRAINT_DISABLE;
 						break;
 					}
-					if (data->upflag+3==data->trackflag){
+					if (data->upflag+3==data->trackflag) {
 						curcon->flag |= CONSTRAINT_DISABLE;
 						break;
 					}
@@ -529,13 +529,13 @@
 				{
 					bClampToConstraint *data = curcon->data;
 					
-					if (!exist_object(data->tar)){
+					if (!exist_object(data->tar)) {
 						data->tar = NULL;
 						curcon->flag |= CONSTRAINT_DISABLE;
 						break;
 					}
 					
-					if (data->tar->type != OB_CURVE){
+					if (data->tar->type != OB_CURVE) {
 						data->tar = NULL;
 						curcon->flag |= CONSTRAINT_DISABLE;
 						break;
@@ -552,7 +552,7 @@
 				{
 					bTransformConstraint *data = curcon->data;
 					
-					if (!exist_object(data->tar)){
+					if (!exist_object(data->tar)) {
 						data->tar = NULL;
 						curcon->flag |= CONSTRAINT_DISABLE;
 						break;





More information about the Bf-blender-cvs mailing list