[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [28763] trunk/blender/source/blender: Logic UI: add name option for add operators + ALL button in controller states is working now + fix for actuator STATES filtering option .

Dalai Felinto dfelinto at gmail.com
Fri May 14 12:45:50 CEST 2010


Revision: 28763
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=28763
Author:   dfelinto
Date:     2010-05-14 12:45:50 +0200 (Fri, 14 May 2010)

Log Message:
-----------
Logic UI: add name option for add operators + ALL button in controller states is working now + fix for actuator STATES filtering option.

Extra comments related bugs:
1)"actuators_show_active_states" doesn't seem to produce any effect (maybe because PIN is not implemented yet? therefore it's always on?

2)If you set the name to be bigger than 32 it will crashes blender (somehow for s/c/a the get function instead of using the defined 32 maxlen it's using 160 (from UserPrerencesFilePaths_python_scriptsdirectory_get ),

3)properties currently can have the same name as s/c/a and they shouldn't.

4)we need an option to show and/or set the STATE of a given controller (in 2.49 it's the number by the controller name)

Modified Paths:
--------------
    trunk/blender/source/blender/editors/space_logic/logic_ops.c
    trunk/blender/source/blender/editors/space_logic/logic_window.c
    trunk/blender/source/blender/makesrna/intern/rna_space.c

Modified: trunk/blender/source/blender/editors/space_logic/logic_ops.c
===================================================================
--- trunk/blender/source/blender/editors/space_logic/logic_ops.c	2010-05-14 10:28:29 UTC (rev 28762)
+++ trunk/blender/source/blender/editors/space_logic/logic_ops.c	2010-05-14 10:45:50 UTC (rev 28763)
@@ -263,6 +263,7 @@
 	PropertyRNA *prop;
 	const char *sens_name;
 	int type= RNA_enum_get(op->ptr, "type");
+	char name[32];
 
 	sens= new_sensor(type);
 	BLI_addtail(&(ob->sensors), sens);
@@ -270,9 +271,15 @@
 	/* set the sensor name based on rna type enum */
 	RNA_pointer_create((ID *)ob, &RNA_Sensor, sens, &sens_ptr);
 	prop = RNA_struct_find_property(&sens_ptr, "type");
-	RNA_property_enum_name(C, &sens_ptr, prop, RNA_property_enum_get(&sens_ptr, prop), &sens_name);
-	BLI_strncpy(sens->name, sens_name, sizeof(sens->name));
-	
+
+	RNA_string_get(op->ptr, "name", name);
+	if(BLI_strnlen(name, 32) < 1){
+		RNA_property_enum_name(C, &sens_ptr, prop, RNA_property_enum_get(&sens_ptr, prop), &sens_name);
+		BLI_strncpy(sens->name, sens_name, sizeof(sens->name));
+	}
+	else
+		BLI_strncpy(sens->name, name, sizeof(sens->name));
+
 	make_unique_prop_names(C, sens->name);
 	ob->scaflag |= OB_SHOWSENS;
 
@@ -301,6 +308,7 @@
 	/* properties */
 	prop= RNA_def_enum(ot->srna, "type", DummyRNA_NULL_items, SENS_ALWAYS, "Type", "Type of sensor to add");
 	RNA_def_enum_funcs(prop, rna_Sensor_type_itemf);
+	prop= RNA_def_string(ot->srna, "name", "", 32, "Name", "Name of the Sensor to add");
 }
 
 /* ************* Add/Remove Controller Operator ************* */
@@ -360,6 +368,7 @@
 	const char *cont_name;
 	int type= RNA_enum_get(op->ptr, "type");
 	int bit;
+	char name[32];
 	
 	cont= new_controller(type);
 	BLI_addtail(&(ob->controllers), cont);
@@ -367,11 +376,16 @@
 	/* set the controller name based on rna type enum */
 	RNA_pointer_create((ID *)ob, &RNA_Controller, cont, &cont_ptr);
 	prop = RNA_struct_find_property(&cont_ptr, "type");
-	RNA_property_enum_name(C, &cont_ptr, prop, RNA_property_enum_get(&cont_ptr, prop), &cont_name);
-	BLI_strncpy(cont->name, cont_name, sizeof(cont->name));
-	
+
+	RNA_string_get(op->ptr, "name", name);
+	if(BLI_strnlen(name, 32) < 1){
+		RNA_property_enum_name(C, &cont_ptr, prop, RNA_property_enum_get(&cont_ptr, prop), &cont_name);
+		BLI_strncpy(cont->name, cont_name, sizeof(cont->name));
+	}
+	else
+		BLI_strncpy(cont->name, name, sizeof(cont->name));
+
 	make_unique_prop_names(C, cont->name);
-	
 	/* 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 */
@@ -411,6 +425,7 @@
 	
 	/* properties */
 	prop= RNA_def_enum(ot->srna, "type", controller_type_items, CONT_LOGIC_AND, "Type", "Type of controller to add");
+	prop= RNA_def_string(ot->srna, "name", "", 32, "Name", "Name of the Controller to add");
 }
 
 /* ************* Add/Remove Actuator Operator ************* */
@@ -468,6 +483,8 @@
 	PointerRNA act_ptr;
 	PropertyRNA *prop;
 	const char *act_name;
+	char  name[32];
+	//XXX RNA_string_get is not using maxlen, it's using UserPreferencesFilePaths_python_scripts_directory_get instead (what limits the string copy to 160 chars in this case and CRASHES Blender).
 	int type= RNA_enum_get(op->ptr, "type");
 
 	act= new_actuator(type);
@@ -476,9 +493,15 @@
 	/* set the actuator name based on rna type enum */
 	RNA_pointer_create((ID *)ob, &RNA_Actuator, act, &act_ptr);
 	prop = RNA_struct_find_property(&act_ptr, "type");
-	RNA_property_enum_name(C, &act_ptr, prop, RNA_property_enum_get(&act_ptr, prop), &act_name);
-	BLI_strncpy(act->name, act_name, sizeof(act->name));
-	
+
+	RNA_string_get(op->ptr, "name", name);
+	if (BLI_strnlen(name, 32) < 1){
+		RNA_property_enum_name(C, &act_ptr, prop, RNA_property_enum_get(&act_ptr, prop), &act_name);
+		BLI_strncpy(act->name, act_name, sizeof(act->name));
+	}
+	else
+		BLI_strncpy(act->name, name, sizeof(act->name));
+
 	make_unique_prop_names(C, act->name);
 	ob->scaflag |= OB_SHOWACT;
 	
@@ -507,6 +530,7 @@
 	/* properties */
 	prop= RNA_def_enum(ot->srna, "type", DummyRNA_NULL_items, CONT_LOGIC_AND, "Type", "Type of actuator to add");
 	RNA_def_enum_funcs(prop, rna_Actuator_type_itemf);
+	prop= RNA_def_string(ot->srna, "name", "", 32, "Name", "Name of the Actuator to add");
 }
 
 void ED_operatortypes_logic(void)

Modified: trunk/blender/source/blender/editors/space_logic/logic_window.c
===================================================================
--- trunk/blender/source/blender/editors/space_logic/logic_window.c	2010-05-14 10:28:29 UTC (rev 28762)
+++ trunk/blender/source/blender/editors/space_logic/logic_window.c	2010-05-14 10:45:50 UTC (rev 28763)
@@ -4402,7 +4402,7 @@
 		for(cont= ob->controllers.first; cont; cont=cont->next) {
 			RNA_pointer_create((ID *)ob, &RNA_Controller, cont, &ptr);
 			
-			if (!(ob->state & cont->state_mask))
+			if (!(ob->scaflag & OB_ALLSTATE) && !(ob->state & cont->state_mask))
 				continue;
 			//if (!(cont->state_mask & (1<<stbit))) 
 			//	continue;
@@ -4477,7 +4477,8 @@
 		for(sens= ob->sensors.first; sens; sens=sens->next) {
 			RNA_pointer_create((ID *)ob, &RNA_Sensor, sens, &ptr);
 			
-			if ((slogic->scaflag & BUTS_SENS_STATE) ||
+			if ((ob->scaflag & OB_ALLSTATE) ||
+				(slogic->scaflag & BUTS_SENS_STATE) ||
 				(sens->totlinks == 0) ||											/* always display sensor without links so that is can be edited */
 				(sens->flag & SENS_PIN && slogic->scaflag & BUTS_SENS_STATE) ||	/* states can hide some sensors, pinned sensors ignore the visible state */
 				(is_sensor_linked(block, sens))
@@ -4536,7 +4537,8 @@
 			
 			RNA_pointer_create((ID *)ob, &RNA_Actuator, act, &ptr);
 			
-			if ((slogic->scaflag & BUTS_ACT_STATE) ||
+			if ((ob->scaflag & OB_ALLSTATE) ||
+				(slogic->scaflag & BUTS_ACT_STATE) ||
 				!(act->flag & ACT_LINKED) ||		/* always display actuators without links so that is can be edited */
 				(act->flag & ACT_VISIBLE) ||		/* this actuator has visible connection, display it */
 				(act->flag & ACT_PIN && slogic->scaflag & BUTS_ACT_STATE)	/* states can hide some sensors, pinned sensors ignore the visible state */

Modified: trunk/blender/source/blender/makesrna/intern/rna_space.c
===================================================================
--- trunk/blender/source/blender/makesrna/intern/rna_space.c	2010-05-14 10:28:29 UTC (rev 28762)
+++ trunk/blender/source/blender/makesrna/intern/rna_space.c	2010-05-14 10:45:50 UTC (rev 28763)
@@ -2129,7 +2129,7 @@
 	RNA_def_property_update(prop, NC_LOGIC, NULL);
 
 	prop= RNA_def_property(srna, "sensors_show_active_states", PROP_BOOLEAN, PROP_NONE);
-	RNA_def_property_boolean_sdna(prop, NULL, "scaflag", BUTS_SENS_STATE);
+	RNA_def_property_boolean_negative_sdna(prop, NULL, "scaflag", BUTS_SENS_STATE);
 	RNA_def_property_ui_text(prop, "Show Active States", "Show only sensors connected to active states");
 	RNA_def_property_update(prop, NC_LOGIC, NULL);
 
@@ -2148,12 +2148,6 @@
 	RNA_def_property_boolean_sdna(prop, NULL, "scaflag", BUTS_CONT_LINK);
 	RNA_def_property_ui_text(prop, "Show Linked to Controller", "Show linked objects to sensor/actuator");
 	RNA_def_property_update(prop, NC_LOGIC, NULL);
-	
-	prop= RNA_def_property(srna, "controllers_show_initial_state", PROP_BOOLEAN, PROP_NONE);
-	RNA_def_property_boolean_sdna(prop, NULL, "scaflag", BUTS_CONT_INIT_STATE);
-	RNA_def_property_ui_text(prop, "Show Initial State", "Show the initial controller state for this object");
-	RNA_def_property_ui_icon(prop, ICON_TRIA_RIGHT, 1);
-	RNA_def_property_update(prop, NC_LOGIC, NULL);
 
 	/* actuators */
 	prop= RNA_def_property(srna, "actuators_show_selected_objects", PROP_BOOLEAN, PROP_NONE);
@@ -2172,7 +2166,7 @@
 	RNA_def_property_update(prop, NC_LOGIC, NULL);
 
 	prop= RNA_def_property(srna, "actuators_show_active_states", PROP_BOOLEAN, PROP_NONE);
-	RNA_def_property_boolean_sdna(prop, NULL, "scaflag", BUTS_ACT_STATE);
+	RNA_def_property_boolean_negative_sdna(prop, NULL, "scaflag", BUTS_ACT_STATE);
 	RNA_def_property_ui_text(prop, "Show Active States", "Show only actuators connected to active states");
 	RNA_def_property_update(prop, NC_LOGIC, NULL);
 





More information about the Bf-blender-cvs mailing list