[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [28723] trunk/blender/source/blender: Logic UI: using the RNA interface as default - commit pre-subversion bumping (i.e.

Dalai Felinto dfelinto at gmail.com
Tue May 11 08:57:00 CEST 2010


Revision: 28723
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=28723
Author:   dfelinto
Date:     2010-05-11 08:56:59 +0200 (Tue, 11 May 2010)

Log Message:
-----------
Logic UI: using the RNA interface as default - commit pre-subversion bumping (i.e. no DNA changes here)

Also: extra set funcs, layout adjustments

The patch for the subversion commit was getting too big, and it will be hard to distinguish what was essentially do_version + DNA changes and what was layout adjustments.

So this is the first part of the commit. The next may take a bit more because I'm not so confident in my readfile changes.

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-10 20:41:01 UTC (rev 28722)
+++ trunk/blender/source/blender/editors/space_logic/logic_window.c	2010-05-11 06:56:59 UTC (rev 28723)
@@ -3217,11 +3217,24 @@
 
 static void draw_sensor_armature(uiLayout *layout, PointerRNA *ptr)
 {
+	bSensor *sens = (bSensor*)ptr->data;
+	bArmatureSensor *as = (bArmatureSensor *) sens->data;
+	Object *ob = (Object *)ptr->id.data;
+	PointerRNA pose_ptr, pchan_ptr;
+	PropertyRNA *bones_prop;
 	uiLayout *row;
-	row = uiLayoutRow(layout, 1);
-	uiItemR(row, ptr, "channel_name", 0, NULL, 0);
-	uiItemR(row, ptr, "constraint_name", 0, NULL, 0);
 
+	if (ob->pose) {
+		RNA_pointer_create((ID *)ob, &RNA_Pose, ob->pose, &pose_ptr);
+		bones_prop = RNA_struct_find_property(&pose_ptr, "bones");
+	}
+
+	if (&pose_ptr.data) {
+		uiItemPointerR(layout, ptr, "bone", &pose_ptr, "bones", NULL, ICON_BONE_DATA);
+
+		if (RNA_property_collection_lookup_string(&pose_ptr, bones_prop, as->posechannel, &pchan_ptr))
+			uiItemPointerR(layout, ptr, "constraint", &pchan_ptr, "constraints", NULL, ICON_CONSTRAINT_BONE);
+	}
 	row = uiLayoutRow(layout, 1);
 	uiItemR(row, ptr, "test_type", 0, NULL, 0);
 	uiItemR(row, ptr, "value", 0, NULL, 0);
@@ -3346,7 +3359,7 @@
 
 	uiItemR(layout, ptr, "property", 0, NULL, 0);
 
-	row= uiLayoutRow(layout, 0);
+	row= uiLayoutRow(layout, 1);
 	uiItemR(row, ptr, "distance", 0, NULL, 0);
 	uiItemR(row, ptr, "reset_distance", 0, NULL, 0);
 }
@@ -3503,7 +3516,7 @@
 
 static void draw_controller_python(uiLayout *layout, PointerRNA *ptr)
 {
-	uiLayout *row, *split, *subsplit;
+	uiLayout *split, *subsplit;
 
 	split = uiLayoutSplit(layout, 0.3, 1);
 	uiItemR(split, ptr, "mode", 0, "", 0);
@@ -3671,7 +3684,7 @@
 
 static void draw_actuator_constraint(uiLayout *layout, PointerRNA *ptr)
 {
-	uiLayout *row, *subrow, *col, *subcol, *split;
+	uiLayout *row, *col, *subcol, *split;
 
 	uiItemR(layout, ptr, "mode", 0, NULL, 0);
 	switch (RNA_enum_get(ptr, "mode"))
@@ -3815,7 +3828,7 @@
 
 static void draw_actuator_filter_2d(uiLayout *layout, PointerRNA *ptr)
 {
-	uiLayout *split;
+	uiLayout *row, *split;
 
 	uiItemR(layout, ptr, "mode", 0, NULL, 0);
 	switch (RNA_enum_get(ptr, "mode"))
@@ -3825,8 +3838,10 @@
 			uiItemR(layout, ptr, "glsl_shader", 0, NULL, 0);
 			break;
 		case ACT_2DFILTER_MOTIONBLUR:
-			split=uiLayoutSplit(layout, 0.9, 0);
-			uiItemR(split, ptr, "motion_blur_value", 0, NULL, 0);
+			split=uiLayoutSplit(layout, 0.75, 1);
+			row= uiLayoutRow(split, 0);
+			uiLayoutSetActive(row, RNA_boolean_get(ptr, "enable_motion_blur")==1);
+			uiItemR(row, ptr, "motion_blur_value", 0, NULL, 0);
 			uiItemR(split, ptr, "enable_motion_blur", UI_ITEM_R_TOGGLE, NULL, 0);
 			break;
 		default: // all other 2D Filters
@@ -4004,12 +4019,16 @@
 static void draw_actuator_property(uiLayout *layout, PointerRNA *ptr)
 {
 	Object *ob = (Object *)ptr->id.data;
-	PointerRNA settings_ptr;
-	uiLayout *row;
+	bActuator *act = (bActuator *)ptr->data;
+	bPropertyActuator *pa = (bPropertyActuator *) act->data;
+	Object *ob_from= pa->ob;
+	PointerRNA settings_ptr, obj_settings_ptr;
 
-	uiItemR(layout, ptr, "mode", 0, NULL, 0);
+	uiLayout *row, *subrow;
 
 	RNA_pointer_create((ID *)ob, &RNA_GameObjectSettings, ob, &settings_ptr);
+
+	uiItemR(layout, ptr, "mode", 0, NULL, 0);
 	uiItemPointerR(layout, ptr, "property", &settings_ptr, "properties", NULL, 0);
 
 	switch(RNA_enum_get(ptr, "mode"))
@@ -4025,7 +4044,16 @@
 		case ACT_PROP_COPY:
 			row = uiLayoutRow(layout, 0);
 			uiItemR(row, ptr, "object", 0, NULL, 0);
-			uiItemR(row, ptr, "object_property", 0, NULL, 0);
+			if(ob_from){
+				RNA_pointer_create((ID *)ob_from, &RNA_GameObjectSettings, ob_from, &obj_settings_ptr);
+				uiItemPointerR(row, ptr, "object_property", &obj_settings_ptr, "properties", NULL, 0);
+			}else
+			{
+				subrow= uiLayoutRow(row, 0);
+				uiLayoutSetActive(subrow, 0);
+				uiItemR(subrow, ptr, "object_property", 0, NULL, 0);
+			}
+			break;
 	}
 }
 
@@ -4555,7 +4583,7 @@
 	 * pin so changing states dosnt hide the logic brick */
 	char pin;
 
-	if (G.rt != 0) {
+	if (G.rt == 0) {
 		logic_buttons_new(C, ar);
 		return;
 	}

Modified: trunk/blender/source/blender/makesdna/DNA_sensor_types.h
===================================================================
--- trunk/blender/source/blender/makesdna/DNA_sensor_types.h	2010-05-10 20:41:01 UTC (rev 28722)
+++ trunk/blender/source/blender/makesdna/DNA_sensor_types.h	2010-05-11 06:56:59 UTC (rev 28723)
@@ -260,8 +260,7 @@
  * ... The reason for this is that we need to be backward compatible,
  * and have a proper default value for this thing.
  * */
-/*  #define SENS_COLLISION_PROPERTY 0  */
-#define SENS_COLLISION_PROPERTY 0 // uncommenting to use with RNA/UI. will check if it's working/fix it later - dfelinto
+#define SENS_COLLISION_PROPERTY 0
 #define SENS_COLLISION_MATERIAL 1
 #define SENS_COLLISION_PULSE 2
 

Modified: trunk/blender/source/blender/makesrna/intern/rna_actuator.c
===================================================================
--- trunk/blender/source/blender/makesrna/intern/rna_actuator.c	2010-05-10 20:41:01 UTC (rev 28722)
+++ trunk/blender/source/blender/makesrna/intern/rna_actuator.c	2010-05-11 06:56:59 UTC (rev 28723)
@@ -27,21 +27,23 @@
 #include "RNA_define.h"
 
 #include "rna_internal.h"
+#include "DNA_constraint_types.h"
 #include "DNA_object_types.h"
 #include "DNA_actuator_types.h"
 #include "DNA_scene_types.h" // for MAXFRAME
 
 #include "WM_types.h"
 
+/* Always keep in alphabetical order */
 EnumPropertyItem actuator_type_items[] ={
 	{ACT_ACTION, "ACTION", 0, "Action", ""},
 	{ACT_ARMATURE, "ARMATURE", 0, "Armature", ""},
 	{ACT_CAMERA, "CAMERA", 0, "Camera", ""},
 	{ACT_CONSTRAINT, "CONSTRAINT", 0, "Constraint", ""},
 	{ACT_EDIT_OBJECT, "EDIT_OBJECT", 0, "Edit Object", ""},
-	{ACT_2DFILTER, "FILTER_2D", 0, "2D Filter", ""},
+	{ACT_IPO, "F-Curve", 0, "F-Curve", ""},
+	{ACT_2DFILTER, "FILTER_2D", 0, "Filter 2D", ""},
 	{ACT_GAME, "GAME", 0, "Game", ""},
-	{ACT_IPO, "F-Curve", 0, "F-Curve", ""},
 	{ACT_MESSAGE, "MESSAGE", 0, "Message", ""},
 	{ACT_OBJECT, "OBJECT", 0, "Motion", ""},
 	{ACT_PARENT, "PARENT", 0, "Parent", ""},
@@ -366,6 +368,7 @@
 	return item;
 }
 
+/* Always keep in alphabetical order */
 EnumPropertyItem *rna_Actuator_type_itemf(bContext *C, PointerRNA *ptr, int *free)
 {
 	EnumPropertyItem *item= NULL;
@@ -389,9 +392,9 @@
 	RNA_enum_items_add_value(&item, &totitem, actuator_type_items, ACT_CAMERA);
 	RNA_enum_items_add_value(&item, &totitem, actuator_type_items, ACT_CONSTRAINT);
 	RNA_enum_items_add_value(&item, &totitem, actuator_type_items, ACT_EDIT_OBJECT);
+	RNA_enum_items_add_value(&item, &totitem, actuator_type_items, ACT_IPO);
 	RNA_enum_items_add_value(&item, &totitem, actuator_type_items, ACT_2DFILTER);
 	RNA_enum_items_add_value(&item, &totitem, actuator_type_items, ACT_GAME);
-	RNA_enum_items_add_value(&item, &totitem, actuator_type_items, ACT_IPO);
 	RNA_enum_items_add_value(&item, &totitem, actuator_type_items, ACT_MESSAGE);
 	RNA_enum_items_add_value(&item, &totitem, actuator_type_items, ACT_OBJECT);
 	RNA_enum_items_add_value(&item, &totitem, actuator_type_items, ACT_PARENT);
@@ -415,6 +418,40 @@
 	return item;
 }
 
+static void rna_Actuator_Armature_update(Main *bmain, Scene *scene, PointerRNA *ptr)
+{
+	bActuator *act= (bActuator *)ptr->data;
+	bArmatureActuator *aa = act->data;
+	Object *ob = (Object *)ptr->id.data;
+
+	char *posechannel= aa->posechannel;
+	char *constraint= aa->constraint;
+
+	/* check that bone exist in the active object */
+	if (ob->type == OB_ARMATURE && ob->pose) {
+		bPoseChannel *pchan;
+		bPose *pose = ob->pose;
+		for (pchan=pose->chanbase.first; pchan; pchan=pchan->next) {
+			if (!strcmp(pchan->name, posechannel)) {
+				/* found it, now look for constraint channel */
+				bConstraint *con;
+				for (con=pchan->constraints.first; con; con=con->next) {
+					if (!strcmp(con->name, constraint)) {
+						/* found it, all ok */
+						return;						
+					}
+				}
+				/* didn't find constraint, make empty */
+				constraint[0] = 0;
+				return;
+			}
+		}
+	}
+	/* didn't find any */
+	posechannel[0] = 0;
+	constraint[0] = 0;
+}
+
 #else
 
 void rna_def_actuator(BlenderRNA *brna)
@@ -1288,8 +1325,9 @@
 	RNA_def_property_ui_text(prop, "Scene", "");
 	RNA_def_property_update(prop, NC_LOGIC, NULL);
 	
+	//XXX filter only camera objects
 	prop= RNA_def_property(srna, "camera", PROP_POINTER, PROP_NONE);
-	RNA_def_property_struct_type(prop, "Camera");
+	RNA_def_property_struct_type(prop, "Object");
 	RNA_def_property_flag(prop, PROP_EDITABLE);
 	RNA_def_property_ui_text(prop, "Camera Object", "Set this Camera. Leave empty to refer to self object");
 	RNA_def_property_update(prop, NC_LOGIC, NULL);
@@ -1590,7 +1628,7 @@
 	RNA_def_property_range(prop, 0, 99); //MAX_RENDER_PASS-1
 	RNA_def_property_update(prop, NC_LOGIC, NULL);
 
-	prop= RNA_def_property(srna, "motion_blur_value", PROP_FLOAT, PROP_PERCENTAGE);
+	prop= RNA_def_property(srna, "motion_blur_value", PROP_FLOAT, PROP_NONE);
 	RNA_def_property_float_sdna(prop, NULL, "float_arg");
 	RNA_def_property_ui_text(prop, "Value", "Set motion blur value");
 	RNA_def_property_range(prop, 0.0, 1.0);
@@ -1599,7 +1637,7 @@
 	/* booleans */
 	prop= RNA_def_property(srna, "enable_motion_blur", PROP_BOOLEAN, PROP_NONE);
 	RNA_def_property_boolean_negative_sdna(prop, NULL, "flag", 1);
-	RNA_def_property_ui_text(prop, "D", "Enable/Disable Motion Blur");
+	RNA_def_property_ui_text(prop, "Enable", "Enable/Disable Motion Blur");
 	RNA_def_property_update(prop, NC_LOGIC, NULL);
 }
 
@@ -1776,18 +1814,12 @@
 	prop= RNA_def_property(srna, "bone", PROP_STRING, PROP_NONE);
 	RNA_def_property_string_sdna(prop, NULL, "posechannel");
 	RNA_def_property_ui_text(prop, "Bone", "Bone on which the constraint is defined");
-	RNA_def_property_update(prop, NC_LOGIC, NULL);
-	// XXX uiButSetFunc(but, check_armature_actuator, but, armAct); // the bone must be from the armature
-	/* XXX eventually move to a datablock pointer. However datablocking this may be a problem
-	we would need to update the value whenever the armature changes. */
+	RNA_def_property_update(prop, NC_LOGIC, "rna_Actuator_Armature_update");
 
 	prop= RNA_def_property(srna, "constraint", PROP_STRING, PROP_NONE);
 	RNA_def_property_string_sdna(prop, NULL, "constraint");

@@ Diff output truncated at 10240 characters. @@




More information about the Bf-blender-cvs mailing list