[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [28701] trunk/blender/source/blender: Give Sensors/Controllers/Actuators more sensible names when they' re created

Matt Ebb matt at mke3.net
Mon May 10 07:46:03 CEST 2010


Revision: 28701
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=28701
Author:   broken
Date:     2010-05-10 07:46:01 +0200 (Mon, 10 May 2010)

Log Message:
-----------
Give Sensors/Controllers/Actuators more sensible names when they're created
(based on their type)

Modified Paths:
--------------
    trunk/blender/source/blender/editors/space_logic/logic_ops.c
    trunk/blender/source/blender/makesrna/RNA_access.h
    trunk/blender/source/blender/makesrna/intern/rna_access.c

Modified: trunk/blender/source/blender/editors/space_logic/logic_ops.c
===================================================================
--- trunk/blender/source/blender/editors/space_logic/logic_ops.c	2010-05-10 04:59:44 UTC (rev 28700)
+++ trunk/blender/source/blender/editors/space_logic/logic_ops.c	2010-05-10 05:46:01 UTC (rev 28701)
@@ -259,10 +259,20 @@
 {
 	Object *ob = ED_object_active_context(C);
 	bSensor *sens;
+	PointerRNA sens_ptr;
+	PropertyRNA *prop;
+	const char *sens_name;
 	int type= RNA_enum_get(op->ptr, "type");
 
 	sens= new_sensor(type);
 	BLI_addtail(&(ob->sensors), sens);
+	
+	/* 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));
+	
 	make_unique_prop_names(C, sens->name);
 	ob->scaflag |= OB_SHOWSENS;
 
@@ -345,11 +355,21 @@
 {
 	Object *ob = ED_object_active_context(C);
 	bController *cont;
+	PointerRNA cont_ptr;
+	PropertyRNA *prop;
+	const char *cont_name;
 	int type= RNA_enum_get(op->ptr, "type");
 	int bit;
 	
 	cont= new_controller(type);
 	BLI_addtail(&(ob->controllers), cont);
+	
+	/* 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));
+	
 	make_unique_prop_names(C, cont->name);
 	
 	/* set the controller state mask from the current object state.
@@ -445,13 +465,23 @@
 {
 	Object *ob = ED_object_active_context(C);
 	bActuator *act;
+	PointerRNA act_ptr;
+	PropertyRNA *prop;
+	const char *act_name;
 	int type= RNA_enum_get(op->ptr, "type");
 
 	act= new_actuator(type);
 	BLI_addtail(&(ob->actuators), act);
+	
+	/* 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));
+	
 	make_unique_prop_names(C, act->name);
 	ob->scaflag |= OB_SHOWACT;
-
+	
 	WM_event_add_notifier(C, NC_LOGIC, NULL);
 	
 	return OPERATOR_FINISHED;

Modified: trunk/blender/source/blender/makesrna/RNA_access.h
===================================================================
--- trunk/blender/source/blender/makesrna/RNA_access.h	2010-05-10 04:59:44 UTC (rev 28700)
+++ trunk/blender/source/blender/makesrna/RNA_access.h	2010-05-10 05:46:01 UTC (rev 28701)
@@ -664,6 +664,7 @@
 void RNA_property_enum_items(struct bContext *C, PointerRNA *ptr, PropertyRNA *prop, EnumPropertyItem **item, int *totitem, int *free);
 int RNA_property_enum_value(struct bContext *C, PointerRNA *ptr, PropertyRNA *prop, const char *identifier, int *value);
 int RNA_property_enum_identifier(struct bContext *C, PointerRNA *ptr, PropertyRNA *prop, const int value, const char **identifier);
+int RNA_property_enum_name(struct bContext *C, PointerRNA *ptr, PropertyRNA *prop, const int value, const char **name);
 int RNA_property_enum_bitflag_identifiers(struct bContext *C, PointerRNA *ptr, PropertyRNA *prop, const int value, const char **identifier);
 
 StructRNA *RNA_property_pointer_type(PointerRNA *ptr, PropertyRNA *prop);

Modified: trunk/blender/source/blender/makesrna/intern/rna_access.c
===================================================================
--- trunk/blender/source/blender/makesrna/intern/rna_access.c	2010-05-10 04:59:44 UTC (rev 28700)
+++ trunk/blender/source/blender/makesrna/intern/rna_access.c	2010-05-10 05:46:01 UTC (rev 28701)
@@ -1101,6 +1101,22 @@
 	return 0;
 }
 
+int RNA_property_enum_name(bContext *C, PointerRNA *ptr, PropertyRNA *prop, const int value, const char **name)
+{	
+	EnumPropertyItem *item= NULL;
+	int result, free;
+	
+	RNA_property_enum_items(C, ptr, prop, &item, NULL, &free);
+	if(item) {
+		result= RNA_enum_name(item, value, name);
+		if(free)
+			MEM_freeN(item);
+		
+		return result;
+	}
+	return 0;
+}
+
 int RNA_property_enum_bitflag_identifiers(bContext *C, PointerRNA *ptr, PropertyRNA *prop, const int value, const char **identifier)
 {
 	EnumPropertyItem *item= NULL;





More information about the Bf-blender-cvs mailing list