[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [22145] branches/blender2.5/blender/source /blender/makesrna/intern: 2.5 - Animation/RNA Bugfixes

Joshua Leung aligorith at gmail.com
Sun Aug 2 14:52:02 CEST 2009


Revision: 22145
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=22145
Author:   aligorith
Date:     2009-08-02 14:52:02 +0200 (Sun, 02 Aug 2009)

Log Message:
-----------
2.5 - Animation/RNA Bugfixes

* Settings for Bones can now be animated properly from UI
* Settings for constraints on bones and objects can now be keyframed properly
* Added missing 'subtarget' property wrapping for StretchTo constraint.

Modified Paths:
--------------
    branches/blender2.5/blender/source/blender/makesrna/intern/rna_constraint.c
    branches/blender2.5/blender/source/blender/makesrna/intern/rna_pose.c

Modified: branches/blender2.5/blender/source/blender/makesrna/intern/rna_constraint.c
===================================================================
--- branches/blender2.5/blender/source/blender/makesrna/intern/rna_constraint.c	2009-08-02 12:49:53 UTC (rev 22144)
+++ branches/blender2.5/blender/source/blender/makesrna/intern/rna_constraint.c	2009-08-02 12:52:02 UTC (rev 22145)
@@ -141,7 +141,21 @@
 
 static char *rna_Constraint_path(PointerRNA *ptr)
 {
-	return BLI_sprintfN("constraints[%s]", ((bConstraint*)ptr->data)->name);
+	Object *ob= ptr->id.data;
+	bConstraint *con= ptr->data;
+	bPoseChannel *pchan= get_active_posechannel(ob);
+	ListBase *actlist= get_active_constraints(ob);
+	short inList = 0;
+	
+	/* check if constraint is in the given list */
+	if (actlist)
+		inList= (BLI_findindex(actlist, con) != -1);
+	
+	/* if constraint is in the list, the list is for the active bone... */
+	if ((inList) && (actlist != &ob->constraints) && (pchan))
+		return BLI_sprintfN("pose.pose_channels[\"%s\"].constraints[\"%s\"]", pchan->name, con->name);
+	else
+		return BLI_sprintfN("constraints[\"%s\"]", con->name);
 }
 
 static void rna_Constraint_update(bContext *C, PointerRNA *ptr)
@@ -906,6 +920,11 @@
 	RNA_def_property_ui_text(prop, "Target", "Target Object");
 	RNA_def_property_flag(prop, PROP_EDITABLE);
 	RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_dependency_update");
+	
+	prop= RNA_def_property(srna, "subtarget", PROP_STRING, PROP_NONE);
+	RNA_def_property_string_sdna(prop, NULL, "subtarget");
+	RNA_def_property_ui_text(prop, "Sub-Target", "");
+	RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_dependency_update");
 
 	prop= RNA_def_property(srna, "volume", PROP_ENUM, PROP_NONE);
 	RNA_def_property_enum_sdna(prop, NULL, "volmode");

Modified: branches/blender2.5/blender/source/blender/makesrna/intern/rna_pose.c
===================================================================
--- branches/blender2.5/blender/source/blender/makesrna/intern/rna_pose.c	2009-08-02 12:49:53 UTC (rev 22144)
+++ branches/blender2.5/blender/source/blender/makesrna/intern/rna_pose.c	2009-08-02 12:52:02 UTC (rev 22145)
@@ -58,6 +58,12 @@
 	DAG_object_flush_update(CTX_data_scene(C), ptr->id.data, OB_RECALC_DATA);
 }
 
+static char *rna_PoseChannel_path(PointerRNA *ptr)
+{
+	// XXX do we really need the 'pose.' bit?
+	return BLI_sprintfN("pose.pose_channels[\"%s\"]", ((bPoseChannel*)ptr->data)->name);
+}
+
 static void rna_BoneGroup_color_set_set(PointerRNA *ptr, int value)
 {
 	bActionGroup *grp= ptr->data;
@@ -297,6 +303,7 @@
 	srna= RNA_def_struct(brna, "PoseChannel", NULL);
 	RNA_def_struct_sdna(srna, "bPoseChannel");
 	RNA_def_struct_ui_text(srna, "Pose Channel", "Channel defining pose data for a bone in a Pose.");
+	RNA_def_struct_path_func(srna, "rna_PoseChannel_path");
 	RNA_def_struct_idproperties_func(srna, "rna_PoseChannel_idproperties");
 
 	prop= RNA_def_property(srna, "constraints", PROP_COLLECTION, PROP_NONE);





More information about the Bf-blender-cvs mailing list