[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [28634] trunk/blender/source/blender: Added dynamic enum itemf for add sensor/actuator operators

Matt Ebb matt at mke3.net
Fri May 7 04:02:00 CEST 2010


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

Log Message:
-----------
Added dynamic enum itemf for add sensor/actuator operators

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/RNA_enum_types.h
    trunk/blender/source/blender/makesrna/intern/rna_actuator.c
    trunk/blender/source/blender/makesrna/intern/rna_sensor.c

Modified: trunk/blender/source/blender/editors/space_logic/logic_ops.c
===================================================================
--- trunk/blender/source/blender/editors/space_logic/logic_ops.c	2010-05-07 01:30:12 UTC (rev 28633)
+++ trunk/blender/source/blender/editors/space_logic/logic_ops.c	2010-05-07 02:01:50 UTC (rev 28634)
@@ -289,7 +289,8 @@
 	ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
 	
 	/* properties */
-	prop= RNA_def_enum(ot->srna, "type", sensor_type_items, SENS_ALWAYS, "Type", "Type of sensor to add");
+	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);
 }
 
 /* ************* Add/Remove Controller Operator ************* */
@@ -474,7 +475,8 @@
 	ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
 	
 	/* properties */
-	prop= RNA_def_enum(ot->srna, "type", actuator_type_items, CONT_LOGIC_AND, "Type", "Type of actuator to add");
+	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);
 }
 
 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-07 01:30:12 UTC (rev 28633)
+++ trunk/blender/source/blender/editors/space_logic/logic_window.c	2010-05-07 02:01:50 UTC (rev 28634)
@@ -4313,7 +4313,7 @@
 	{
 		PointerRNA settings_ptr;
 		row = uiLayoutRow(layout, 0);
-		RNA_pointer_create(NULL, &RNA_GameObjectSettings, ob, &settings_ptr);
+		RNA_pointer_create((ID *)ob, &RNA_GameObjectSettings, ob, &settings_ptr);
 		uiItemR(row, &logic_ptr, "controllers_show_initial_state", UI_ITEM_R_NO_BG, "", 0);
 		uiTemplateLayers(row, &settings_ptr, "state", &settings_ptr, "used_state", 0);
 		
@@ -4346,7 +4346,7 @@
 		uiItemS(layout);
 		
 		for(cont= ob->controllers.first; cont; cont=cont->next) {
-			RNA_pointer_create(&ob->id, &RNA_Controller, cont, &ptr);
+			RNA_pointer_create((ID *)ob, &RNA_Controller, cont, &ptr);
 			
 			if (!(ob->state & cont->state_mask))
 				continue;
@@ -4421,7 +4421,7 @@
 		uiItemS(layout);
 		
 		for(sens= ob->sensors.first; sens; sens=sens->next) {
-			RNA_pointer_create(&ob->id, &RNA_Sensor, sens, &ptr);
+			RNA_pointer_create((ID *)ob, &RNA_Sensor, sens, &ptr);
 			
 			if ((slogic->scaflag & BUTS_SENS_STATE) ||
 				(sens->totlinks == 0) ||											/* always display sensor without links so that is can be edited */
@@ -4480,7 +4480,7 @@
 		
 		for(act= ob->actuators.first; act; act=act->next) {
 			
-			RNA_pointer_create(&ob->id, &RNA_Actuator, act, &ptr);
+			RNA_pointer_create((ID *)ob, &RNA_Actuator, act, &ptr);
 			
 			if ((slogic->scaflag & BUTS_ACT_STATE) ||
 				!(act->flag & ACT_LINKED) ||		/* always display actuators without links so that is can be edited */

Modified: trunk/blender/source/blender/makesrna/RNA_enum_types.h
===================================================================
--- trunk/blender/source/blender/makesrna/RNA_enum_types.h	2010-05-07 01:30:12 UTC (rev 28633)
+++ trunk/blender/source/blender/makesrna/RNA_enum_types.h	2010-05-07 02:01:50 UTC (rev 28634)
@@ -75,12 +75,8 @@
 
 extern EnumPropertyItem object_type_curve_items[];
 
-extern EnumPropertyItem sensor_type_items[];
-
 extern EnumPropertyItem controller_type_items[];
 
-extern EnumPropertyItem actuator_type_items[];
-
 extern EnumPropertyItem space_type_items[];
 
 extern EnumPropertyItem keymap_propvalue_items[];
@@ -97,6 +93,8 @@
 struct bContext;
 struct PointerRNA;
 EnumPropertyItem *rna_TransformOrientation_itemf(struct bContext *C, struct PointerRNA *ptr, int *free);
+EnumPropertyItem *rna_Sensor_type_itemf(struct bContext *C, struct PointerRNA *ptr, int *free);
+EnumPropertyItem *rna_Actuator_type_itemf(struct bContext *C, struct PointerRNA *ptr, int *free);
 
 /* Generic functions, return an enum from library data, index is the position
  * in the linked list can add more for different types as needed */

Modified: trunk/blender/source/blender/makesrna/intern/rna_actuator.c
===================================================================
--- trunk/blender/source/blender/makesrna/intern/rna_actuator.c	2010-05-07 01:30:12 UTC (rev 28633)
+++ trunk/blender/source/blender/makesrna/intern/rna_actuator.c	2010-05-07 02:01:50 UTC (rev 28634)
@@ -174,19 +174,27 @@
 	return item;
 }
 
-static EnumPropertyItem *rna_Actuator_type_itemf(bContext *C, PointerRNA *ptr, int *free)
+EnumPropertyItem *rna_Actuator_type_itemf(bContext *C, PointerRNA *ptr, int *free)
 {
 	EnumPropertyItem *item= NULL;
-	Object *ob = (Object *)ptr->id.data;
-
+	Object *ob= NULL;
 	int totitem= 0;
-	if (ob->type==OB_ARMATURE)
-	{
-		RNA_enum_items_add_value(&item, &totitem, actuator_type_items, ACT_ACTION);
-		RNA_enum_items_add_value(&item, &totitem, actuator_type_items, ACT_ARMATURE);
+	
+	if (ptr->type == &RNA_Actuator) {
+		ob = (Object *)ptr->id.data;
+	} else {
+		/* can't use ob from ptr->id.data because that enum is also used by operators */
+		ob = CTX_data_active_object(C);
 	}
-	else
-		RNA_enum_items_add_value(&item, &totitem, actuator_type_items, ACT_SHAPEACTION);
+	
+	if (ob != NULL) {
+		if (ob->type==OB_ARMATURE) {
+			RNA_enum_items_add_value(&item, &totitem, actuator_type_items, ACT_ACTION);
+			RNA_enum_items_add_value(&item, &totitem, actuator_type_items, ACT_ARMATURE);
+		} else {
+			RNA_enum_items_add_value(&item, &totitem, actuator_type_items, ACT_SHAPEACTION);
+		}
+	}
 
 	RNA_enum_items_add_value(&item, &totitem, actuator_type_items, ACT_CAMERA);
 	RNA_enum_items_add_value(&item, &totitem, actuator_type_items, ACT_CONSTRAINT);

Modified: trunk/blender/source/blender/makesrna/intern/rna_sensor.c
===================================================================
--- trunk/blender/source/blender/makesrna/intern/rna_sensor.c	2010-05-07 01:30:12 UTC (rev 28633)
+++ trunk/blender/source/blender/makesrna/intern/rna_sensor.c	2010-05-07 02:01:50 UTC (rev 28634)
@@ -104,23 +104,31 @@
 	}
 }
 
-static EnumPropertyItem *rna_Sensor_type_itemf(bContext *C, PointerRNA *ptr, int *free)
+EnumPropertyItem *rna_Sensor_type_itemf(bContext *C, PointerRNA *ptr, int *free)
 {
 	EnumPropertyItem *item= NULL;
-	Object *ob = (Object *)ptr->id.data;
-
+	Object *ob=NULL;
 	int totitem= 0;
 
+	if (ptr->type == &RNA_Sensor) {
+		ob = (Object *)ptr->id.data;
+	} else {
+		/* can't use ob from ptr->id.data because that enum is also used by operators */
+		ob = CTX_data_active_object(C);
+	}
+	
 	RNA_enum_items_add_value(&item, &totitem, sensor_type_items, SENS_ACTUATOR);
 	RNA_enum_items_add_value(&item, &totitem, sensor_type_items, SENS_ALWAYS);
 
-	if (ob->type==OB_ARMATURE)
-		RNA_enum_items_add_value(&item, &totitem, sensor_type_items, SENS_ARMATURE);
-	else if(ob->type==OB_MESH){
-		RNA_enum_items_add_value(&item, &totitem, sensor_type_items, SENS_COLLISION);
-		RNA_enum_items_add_value(&item, &totitem, sensor_type_items, SENS_TOUCH);
+	if (ob != NULL) {
+		if (ob->type==OB_ARMATURE) {
+			RNA_enum_items_add_value(&item, &totitem, sensor_type_items, SENS_ARMATURE);
+		} else if(ob->type==OB_MESH) {
+			RNA_enum_items_add_value(&item, &totitem, sensor_type_items, SENS_COLLISION);
+			RNA_enum_items_add_value(&item, &totitem, sensor_type_items, SENS_TOUCH);
+		}
 	}
-
+	
 	RNA_enum_items_add_value(&item, &totitem, sensor_type_items, SENS_DELAY);
 	RNA_enum_items_add_value(&item, &totitem, sensor_type_items, SENS_JOYSTICK);
 	RNA_enum_items_add_value(&item, &totitem, sensor_type_items, SENS_KEYBOARD);





More information about the Bf-blender-cvs mailing list