[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [28564] trunk/blender/source/blender: BGE Logic UI: more sensors + rna fixes + actuator empty draw functions ( + camera actuator)

Dalai Felinto dfelinto at gmail.com
Tue May 4 09:34:46 CEST 2010


Revision: 28564
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=28564
Author:   dfelinto
Date:     2010-05-04 09:34:46 +0200 (Tue, 04 May 2010)

Log Message:
-----------
BGE Logic UI: more sensors + rna fixes + actuator empty draw functions (+ camera actuator)

Modified Paths:
--------------
    trunk/blender/source/blender/editors/space_logic/logic_window.c
    trunk/blender/source/blender/makesdna/DNA_sensor_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_window.c
===================================================================
--- trunk/blender/source/blender/editors/space_logic/logic_window.c	2010-05-04 07:26:57 UTC (rev 28563)
+++ trunk/blender/source/blender/editors/space_logic/logic_window.c	2010-05-04 07:34:46 UTC (rev 28564)
@@ -3249,7 +3249,43 @@
 
 static void draw_sensor_joystick(uiLayout *layout, PointerRNA *ptr)
 {
-	//XXXSENSOR
+	uiLayout *col, *row;
+
+	uiItemR(layout, ptr, "joystick_index", 0, NULL, 0);
+	uiItemR(layout, ptr, "event_type", 0, NULL, 0);
+
+	switch (RNA_enum_get(ptr, "event_type")) {
+		case SENS_JOY_BUTTON:
+			uiItemR(layout, ptr, "all_events", 0, NULL, 0);
+
+			col = uiLayoutColumn(layout, 0);
+			uiLayoutSetActive(col, RNA_boolean_get(ptr, "all_events")==0);
+			uiItemR(col, ptr, "button_number", 0, NULL, 0);
+			break;
+		case SENS_JOY_AXIS:
+			row = uiLayoutRow(layout, 0);
+			uiItemR(row, ptr, "axis_number", 0, NULL, 0);
+			uiItemR(row, ptr, "axis_threshold", 0, NULL, 0);
+
+			uiItemR(layout, ptr, "all_events", 0, NULL, 0);
+			col = uiLayoutColumn(layout, 0);
+			uiLayoutSetActive(col, RNA_boolean_get(ptr, "all_events")==0);
+			uiItemR(col, ptr, "axis_direction", 0, NULL, 0);
+			break;
+		case SENS_JOY_HAT:
+			uiItemR(layout, ptr, "hat_number", 0, NULL, 0);
+			uiItemR(layout, ptr, "all_events", 0, NULL, 0);
+
+			col = uiLayoutColumn(layout, 0);
+			uiLayoutSetActive(col, RNA_boolean_get(ptr, "all_events")==0);
+			uiItemR(col, ptr, "hat_direction", 0, NULL, 0); //XXXSENSOR - needs a default value (somewhere else in the code)
+			break;
+		case SENS_JOY_AXIS_SINGLE:
+			row = uiLayoutRow(layout, 0);
+			uiItemR(row, ptr, "single_axis_number", 0, NULL, 0);
+			uiItemR(row, ptr, "axis_threshold", 0, NULL, 0);
+			break;
+	}
 }
 
 static void draw_sensor_keyboard(uiLayout *layout, PointerRNA *ptr)
@@ -3316,8 +3352,8 @@
 	uiItemR(layout, ptr, "axis", 0, NULL, 0);
 
 	row= uiLayoutRow(layout, 0);
-	uiItemR(layout, ptr, "angle", 0, NULL, 0);
-	uiItemR(layout, ptr, "distance", 0, NULL, 0);
+	uiItemR(row, ptr, "angle", 0, NULL, 0);
+	uiItemR(row, ptr, "distance", 0, NULL, 0);
 }
 
 static void draw_sensor_random(uiLayout *layout, PointerRNA *ptr)
@@ -3327,7 +3363,17 @@
 
 static void draw_sensor_ray(uiLayout *layout, PointerRNA *ptr)
 {
-	//XXXSENSOR
+	uiItemR(layout, ptr, "ray_type", 0, NULL, 0);
+	switch (RNA_enum_get(ptr, "ray_type")) {
+		case SENS_RAY_PROPERTY:
+			uiItemR(layout, ptr, "property", 0, NULL, 0); break;
+		case SENS_RAY_MATERIAL:
+			uiItemR(layout, ptr, "material", 0, NULL, 0); break;
+	}
+	uiItemR(layout, ptr, "x_ray_mode", 0, NULL, 0);
+	uiItemR(layout, ptr, "range", 0, NULL, 0);
+	uiItemR(layout, ptr, "axis", 0, NULL, 0);
+	//XXXSENSOR - same problem as collision. enums badly used by UI code
 }
 
 static void draw_sensor_touch(uiLayout *layout, PointerRNA *ptr)
@@ -3482,6 +3528,87 @@
 	uiItemO(row, "", ICON_X, "LOGIC_OT_actuator_remove");
 }
 
+static void draw_actuator_action(uiLayout *layout, PointerRNA *ptr)
+{
+	//XXXACTUATOR
+}
+
+static void draw_actuator_armature(uiLayout *layout, PointerRNA *ptr)
+{
+	//XXXACTUATOR
+}
+
+static void draw_actuator_camera(uiLayout *layout, PointerRNA *ptr)
+{
+	uiLayout *row;
+	uiItemR(layout, ptr, "object", 0, NULL, 0);
+
+	row = uiLayoutRow(layout, 0);
+	uiItemR(row, ptr, "height", 0, NULL, 0);
+	uiItemR(row, ptr, "axis", 0, NULL, 0);
+
+	row = uiLayoutRow(layout, 0);
+	uiItemR(row, ptr, "min", 0, NULL, 0);
+	uiItemR(row, ptr, "max", 0, NULL, 0);
+}
+
+static void draw_actuator_constraint(uiLayout *layout, PointerRNA *ptr)
+{
+	//XXXACTUATOR
+}
+
+static void draw_actuator_edit_object(uiLayout *layout, PointerRNA *ptr)
+{
+	//XXXACTUATOR
+}
+
+static void draw_actuator_filter_2d(uiLayout *layout, PointerRNA *ptr)
+{
+	//XXXACTUATOR
+}
+
+static void draw_actuator_game(uiLayout *layout, PointerRNA *ptr)
+{
+	//XXXACTUATOR
+}
+
+static void draw_actuator_ipo(uiLayout *layout, PointerRNA *ptr)
+{
+	//XXXACTUATOR
+}
+
+static void draw_actuator_message(uiLayout *layout, PointerRNA *ptr)
+{
+	//XXXACTUATOR
+}
+
+static void draw_actuator_motion(uiLayout *layout, PointerRNA *ptr)
+{
+	//XXXACTUATOR
+}
+
+static void draw_actuator_parent(uiLayout *layout, PointerRNA *ptr)
+{
+	uiLayout *row;
+
+	uiItemR(layout, ptr, "mode", 0, NULL, 0);
+	uiItemR(layout, ptr, "object", 0, NULL, 0);
+
+	row = uiLayoutRow(layout, 0);
+	uiItemR(row, ptr, "compound", 0, NULL, 0);
+	uiItemR(row, ptr, "ghost", 0, NULL, 0);
+}
+
+static void draw_actuator_property(uiLayout *layout, PointerRNA *ptr)
+{
+	//XXXACTUATOR
+}
+
+static void draw_actuator_random(uiLayout *layout, PointerRNA *ptr)
+{
+	//XXXACTUATOR
+}
+
 static void draw_actuator_scene(uiLayout *layout, PointerRNA *ptr)
 {
 	uiItemR(layout, ptr, "mode", 0, NULL, 0);
@@ -3489,14 +3616,26 @@
 	uiItemR(layout, ptr, "scene", 0, NULL, 0);
 }
 
-static void draw_actuator_parent(uiLayout *layout, PointerRNA *ptr)
+static void draw_actuator_shape_action(uiLayout *layout, PointerRNA *ptr)
 {
-	uiItemR(layout, ptr, "mode", 0, NULL, 0);
-	uiItemR(layout, ptr, "object", 0, NULL, 0);
-	uiItemR(layout, ptr, "compound", 0, NULL, 0);
-	uiItemR(layout, ptr, "ghost", 0, NULL, 0);
+	//XXXACTUATOR
 }
 
+static void draw_actuator_sound(uiLayout *layout, PointerRNA *ptr)
+{
+	//XXXACTUATOR
+}
+
+static void draw_actuator_state(uiLayout *layout, PointerRNA *ptr)
+{
+	//XXXACTUATOR
+}
+
+static void draw_actuator_visibility(uiLayout *layout, PointerRNA *ptr)
+{
+	//XXXACTUATOR
+}
+
 void draw_brick_actuator(uiLayout *layout, PointerRNA *ptr)
 {
 	uiLayout *box;
@@ -3507,12 +3646,60 @@
 	box = uiLayoutBox(layout);
 	
 	switch (RNA_enum_get(ptr, "type")) {
+		case ACT_ACTION:
+			draw_actuator_action(box, ptr);
+			break;
+		case ACT_ARMATURE:
+			draw_actuator_armature(box, ptr);
+			break;
+		case ACT_CAMERA:
+			draw_actuator_camera(box, ptr);
+			break;
+		case ACT_CONSTRAINT:
+			draw_actuator_constraint(box, ptr);
+			break;
+		case ACT_EDIT_OBJECT:
+			draw_actuator_edit_object(box, ptr);
+			break;
+		case ACT_2DFILTER:
+			draw_actuator_filter_2d(box, ptr);
+			break;
+		case ACT_GAME:
+			draw_actuator_game(box, ptr);
+			break;
+		case ACT_IPO:
+			draw_actuator_ipo(box, ptr);
+			break;
+		case ACT_MESSAGE:
+			draw_actuator_message(box, ptr);
+			break;
+		case ACT_OBJECT:
+			draw_actuator_motion(box, ptr);
+			break;
 		case ACT_PARENT:
 			draw_actuator_parent(box, ptr);
 			break;
+		case ACT_PROPERTY:
+			draw_actuator_property(box, ptr);
+			break;
+		case ACT_RANDOM:
+			draw_actuator_random(box, ptr);
+			break;
 		case ACT_SCENE:
 			draw_actuator_scene(box, ptr);
 			break;
+		case ACT_SHAPEACTION:
+			draw_actuator_shape_action(box, ptr);
+			break;
+		case ACT_SOUND:
+			draw_actuator_sound(box, ptr);
+			break;
+		case ACT_STATE:
+			draw_actuator_state(box, ptr);
+			break;
+		case ACT_VISIBILITY:
+			draw_actuator_visibility(box, ptr);
+			break;
 	}
 }
 

Modified: trunk/blender/source/blender/makesdna/DNA_sensor_types.h
===================================================================
--- trunk/blender/source/blender/makesdna/DNA_sensor_types.h	2010-05-04 07:26:57 UTC (rev 28563)
+++ trunk/blender/source/blender/makesdna/DNA_sensor_types.h	2010-05-04 07:34:46 UTC (rev 28564)
@@ -264,8 +264,11 @@
 #define SENS_COLLISION_PROPERTY 0 // uncommenting to use with RNA/UI. will check if it's working/fix it later - dfelinto
 #define SENS_COLLISION_MATERIAL 1
 #define SENS_COLLISION_PULSE 2
+
 /* ray specific mode */
 /* X-Ray means that the ray will traverse objects that don't have the property/material */
+#define SENS_RAY_PROPERTY		0
+#define SENS_RAY_MATERIAL		1
 #define SENS_RAY_XRAY			2
 
 /* Some stuff for the mouse sensor Type: */
@@ -278,6 +281,7 @@
 #define BL_SENS_MOUSE_MOUSEOVER      16
 #define BL_SENS_MOUSE_MOUSEOVER_ANY	 32
 
+/* Joystick sensor - sorted by axis types */
 #define SENS_JOY_ANY_EVENT		1
 
 #define SENS_JOY_BUTTON		0			/* axis type */
@@ -293,7 +297,17 @@
 
 #define SENS_JOY_HAT			2		/* axis type */
 #define SENS_JOY_HAT_DIR		0
+#define SENS_JOY_HAT_UP			1
+#define SENS_JOY_HAT_RIGHT		2
+#define SENS_JOY_HAT_DOWN		4
+#define SENS_JOY_HAT_LEFT		8
 
+#define SENS_JOY_HAT_UP_RIGHT	SENS_JOY_HAT_UP | SENS_JOY_HAT_RIGHT
+#define SENS_JOY_HAT_DOWN_RIGHT	SENS_JOY_HAT_DOWN | SENS_JOY_HAT_RIGHT
+#define SENS_JOY_HAT_UP_LEFT	SENS_JOY_HAT_UP | SENS_JOY_HAT_LEFT
+#define SENS_JOY_HAT_DOWN_LEFT	SENS_JOY_HAT_DOWN | SENS_JOY_HAT_LEFT
+
+
 #define SENS_JOY_AXIS_SINGLE	3		/* axis type */
 
 

Modified: trunk/blender/source/blender/makesrna/intern/rna_actuator.c
===================================================================
--- trunk/blender/source/blender/makesrna/intern/rna_actuator.c	2010-05-04 07:26:57 UTC (rev 28563)
+++ trunk/blender/source/blender/makesrna/intern/rna_actuator.c	2010-05-04 07:34:46 UTC (rev 28564)
@@ -153,7 +153,8 @@
 	RNA_def_struct_sdna_from(srna, "bObjectActuator", "data");
 
 
-	prop= RNA_def_property(srna, "type", PROP_ENUM, PROP_NONE);
+	prop= RNA_def_property(srna, "mode", PROP_ENUM, PROP_NONE);
+	RNA_def_property_enum_sdna(prop, NULL, "type");
 	RNA_def_property_enum_items(prop, prop_type_items);
 	RNA_def_property_ui_text(prop, "Motion Type", "Specify the motion system");
 	RNA_def_property_update(prop, NC_LOGIC, NULL);
@@ -422,6 +423,8 @@
 	RNA_def_property_enum_items(prop, prop_axis_items);
 	RNA_def_property_ui_text(prop, "Axis", "Specify the axis the Camera will try to get behind");
 	RNA_def_property_update(prop, NC_LOGIC, NULL);
+	//XXX it's not working (no default value)
+	// probably need to make a get/set function
 }
 
 static void rna_def_sound_actuator(BlenderRNA *brna)
@@ -449,7 +452,8 @@
 	RNA_def_struct_ui_text(srna, "Sound", "Sound file");
 	RNA_def_property_update(prop, NC_LOGIC, NULL);
 
-	prop= RNA_def_property(srna, "type", PROP_ENUM, PROP_NONE);
+	prop= RNA_def_property(srna, "mode", PROP_ENUM, PROP_NONE);
+	RNA_def_property_enum_sdna(prop, NULL, "type");
 	RNA_def_property_enum_items(prop, prop_type_items);
 	RNA_def_property_ui_text(prop, "Type", "");
 	RNA_def_property_update(prop, NC_LOGIC, NULL);
@@ -538,7 +542,8 @@
 	RNA_def_struct_ui_text(srna, "Property Actuator", "Actuator to handle properties");
 	RNA_def_struct_sdna_from(srna, "bPropertyActuator", "data");
 
-	prop= RNA_def_property(srna, "type", PROP_ENUM, PROP_NONE);
+	prop= RNA_def_property(srna, "mode", PROP_ENUM, PROP_NONE);
+	RNA_def_property_enum_sdna(prop, NULL, "type");
 	RNA_def_property_enum_items(prop, prop_type_items);
 	RNA_def_property_ui_text(prop, "Mode", "");

@@ Diff output truncated at 10240 characters. @@




More information about the Bf-blender-cvs mailing list