[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [15395] trunk/blender/source/blender/src/ buttons_logic.c: let the logic buttons operate on objects in different scenes.

Campbell Barton ideasman42 at gmail.com
Tue Jul 1 08:45:31 CEST 2008


Revision: 15395
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=15395
Author:   campbellbarton
Date:     2008-07-01 08:44:34 +0200 (Tue, 01 Jul 2008)

Log Message:
-----------
let the logic buttons operate on objects in different scenes. They would already display but pressing the buttons did nothing.
This is useful when using 1 scene for a character and another for a test level, so the character logic can be edited without switching scenes.

Modified Paths:
--------------
    trunk/blender/source/blender/src/buttons_logic.c

Modified: trunk/blender/source/blender/src/buttons_logic.c
===================================================================
--- trunk/blender/source/blender/src/buttons_logic.c	2008-07-01 05:16:08 UTC (rev 15394)
+++ trunk/blender/source/blender/src/buttons_logic.c	2008-07-01 06:44:34 UTC (rev 15395)
@@ -443,16 +443,14 @@
 		break;
 	
 	case B_ADD_SENS:
-		base= FIRSTBASE;
-		while(base) {
-			if(base->object->scaflag & OB_ADDSENS) {
-				base->object->scaflag &= ~OB_ADDSENS;
+		for(ob=G.main->object.first; ob; ob=ob->id.next) {
+			if(ob->scaflag & OB_ADDSENS) {
+				ob->scaflag &= ~OB_ADDSENS;
 				sens= new_sensor(SENS_ALWAYS);
-				BLI_addtail(&(base->object->sensors), sens);
+				BLI_addtail(&(ob->sensors), sens);
 				make_unique_prop_names(sens->name);
-				base->object->scaflag |= OB_SHOWSENS;
+				ob->scaflag |= OB_SHOWSENS;
 			}
-			base= base->next;
 		}
 		
 		BIF_undo_push("Add sensor");
@@ -460,9 +458,8 @@
 		break;
 
 	case B_CHANGE_SENS:
-		base= FIRSTBASE;
-		while(base) {
-			sens= base->object->sensors.first;
+		for(ob=G.main->object.first; ob; ob=ob->id.next) {
+			sens= ob->sensors.first;
 			while(sens) {
 				if(sens->type != sens->otype) {
 					init_sensor(sens);
@@ -471,43 +468,39 @@
 				}
 				sens= sens->next;
 			}
-			base= base->next;
 		}
 		allqueue(REDRAWBUTSLOGIC, 0);
 		break;
 	
 	case B_DEL_SENS:
-		base= FIRSTBASE;
-		while(base) {
-			sens= base->object->sensors.first;
+		for(ob=G.main->object.first; ob; ob=ob->id.next) {
+			sens= ob->sensors.first;
 			while(sens) {
 				if(sens->flag & SENS_DEL) {
-					BLI_remlink(&(base->object->sensors), sens);
+					BLI_remlink(&(ob->sensors), sens);
 					free_sensor(sens);
 					break;
 				}
 				sens= sens->next;
 			}
-			base= base->next;
 		}
 		BIF_undo_push("Delete sensor");
 		allqueue(REDRAWBUTSLOGIC, 0);
 		break;
 	
 	case B_ADD_CONT:
-		base= FIRSTBASE;
-		while(base) {
-			if(base->object->scaflag & OB_ADDCONT) {
-				base->object->scaflag &= ~OB_ADDCONT;
+		for(ob=G.main->object.first; ob; ob=ob->id.next) {
+			if(ob->scaflag & OB_ADDCONT) {
+				ob->scaflag &= ~OB_ADDCONT;
 				cont= new_controller(CONT_LOGIC_AND);
 				make_unique_prop_names(cont->name);
-				base->object->scaflag |= OB_SHOWCONT;
-				BLI_addtail(&(base->object->controllers), cont);
+				ob->scaflag |= OB_SHOWCONT;
+				BLI_addtail(&(ob->controllers), cont);
 				/* set the controller state mask from the current object state.
 				   A controller is always in a single state, so select the lowest bit set
 				   from the object state */
 				for (bit=0; bit<32; bit++) {
-					if (base->object->state & (1<<bit))
+					if (ob->state & (1<<bit))
 						break;
 				}
 				cont->state_mask = (1<<bit);
@@ -516,42 +509,36 @@
 					cont->state_mask = 1;
 				}
 			}
-			base= base->next;
 		}
 		BIF_undo_push("Add controller");
 		allqueue(REDRAWBUTSLOGIC, 0);
 		break;
 
 	case B_SET_STATE_BIT:
-		base= FIRSTBASE;
-		while(base) {
-			if(base->object->scaflag & OB_SETSTBIT) {
-				base->object->scaflag &= ~OB_SETSTBIT;
-				base->object->state = 0x3FFFFFFF;
+		for(ob=G.main->object.first; ob; ob=ob->id.next) {
+			if(ob->scaflag & OB_SETSTBIT) {
+				ob->scaflag &= ~OB_SETSTBIT;
+				ob->state = 0x3FFFFFFF;
 			}
-			base= base->next;
 		}
 		allqueue(REDRAWBUTSLOGIC, 0);
 		break;
 
 	case B_INIT_STATE_BIT:
-		base= FIRSTBASE;
-		while(base) {
-			if(base->object->scaflag & OB_INITSTBIT) {
-				base->object->scaflag &= ~OB_INITSTBIT;
-				base->object->state = base->object->init_state;
-				if (!base->object->state)
-					base->object->state = 1;
+		for(ob=G.main->object.first; ob; ob=ob->id.next) {
+			if(ob->scaflag & OB_INITSTBIT) {
+				ob->scaflag &= ~OB_INITSTBIT;
+				ob->state = ob->init_state;
+				if (!ob->state)
+					ob->state = 1;
 			}
-			base= base->next;
 		}
 		allqueue(REDRAWBUTSLOGIC, 0);
 		break;
 
 	case B_CHANGE_CONT:
-		base= FIRSTBASE;
-		while(base) {
-			cont= base->object->controllers.first;
+		for(ob=G.main->object.first; ob; ob=ob->id.next) {
+			cont= ob->controllers.first;
 			while(cont) {
 				if(cont->type != cont->otype) {
 					init_controller(cont);
@@ -560,51 +547,45 @@
 				}
 				cont= cont->next;
 			}
-			base= base->next;
 		}
 		allqueue(REDRAWBUTSLOGIC, 0);
 		break;
 	
 
 	case B_DEL_CONT:
-		base= FIRSTBASE;
-		while(base) {
-			cont= base->object->controllers.first;
+		for(ob=G.main->object.first; ob; ob=ob->id.next) {
+			cont= ob->controllers.first;
 			while(cont) {
 				if(cont->flag & CONT_DEL) {
-					BLI_remlink(&(base->object->controllers), cont);
+					BLI_remlink(&(ob->controllers), cont);
 					unlink_controller(cont);
 					free_controller(cont);
 					break;
 				}
 				cont= cont->next;
 			}
-			base= base->next;
 		}
 		BIF_undo_push("Delete controller");
 		allqueue(REDRAWBUTSLOGIC, 0);
 		break;
 
 	case B_ADD_ACT:
-		base= FIRSTBASE;
-		while(base) {
-			if(base->object->scaflag & OB_ADDACT) {
-				base->object->scaflag &= ~OB_ADDACT;
+		for(ob=G.main->object.first; ob; ob=ob->id.next) {
+			if(ob->scaflag & OB_ADDACT) {
+				ob->scaflag &= ~OB_ADDACT;
 				act= new_actuator(ACT_OBJECT);
 				make_unique_prop_names(act->name);
-				BLI_addtail(&(base->object->actuators), act);
-				base->object->scaflag |= OB_SHOWACT;
+				BLI_addtail(&(ob->actuators), act);
+				ob->scaflag |= OB_SHOWACT;
 			}
-			base= base->next;
 		}
 		BIF_undo_push("Add actuator");
 		allqueue(REDRAWBUTSLOGIC, 0);
 		break;
 
 	case B_CHANGE_ACT:
-		base= FIRSTBASE;
-		while(base) {
-			act= base->object->actuators.first;
+		for(ob=G.main->object.first; ob; ob=ob->id.next) {
+			act= ob->actuators.first;
 			while(act) {
 				if(act->type != act->otype) {
 					init_actuator(act);
@@ -613,18 +594,16 @@
 				}
 				act= act->next;
 			}
-			base= base->next;
 		}
 		allqueue(REDRAWBUTSLOGIC, 0);
 		break;
 
 	case B_DEL_ACT:
-		base= FIRSTBASE;
-		while(base) {
-			act= base->object->actuators.first;
+		for(ob=G.main->object.first; ob; ob=ob->id.next) {
+			act= ob->actuators.first;
 			while(act) {
 				if(act->flag & ACT_DEL) {
-					BLI_remlink(&(base->object->actuators), act);
+					BLI_remlink(&(ob->actuators), act);
 					unlink_actuator(act);
 					free_actuator(act);
 					break;
@@ -640,10 +619,8 @@
 	case B_SOUNDACT_BROWSE:
 		/* since we don't know which... */
 		didit= 0;
-		base= FIRSTBASE;
-		while(base)
-		{
-			act= base->object->actuators.first;
+		for(ob=G.main->object.first; ob; ob=ob->id.next) {
+			act= ob->actuators.first;
 			while(act)
 			{
 				if(act->type==ACT_SOUND)
@@ -684,7 +661,6 @@
 			}
 			if(didit)
 				break;
-			base= base->next;
 		}
 		allqueue(REDRAWBUTSLOGIC, 0);
 		allqueue(REDRAWSOUND, 0);





More information about the Bf-blender-cvs mailing list