[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [14130] trunk/blender/source/blender/ blenkernel/intern: == Proxies + Bone Groups ==

Joshua Leung aligorith at gmail.com
Sun Mar 16 04:51:05 CET 2008


Revision: 14130
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=14130
Author:   aligorith
Date:     2008-03-16 04:51:00 +0100 (Sun, 16 Mar 2008)

Log Message:
-----------
== Proxies + Bone Groups ==

Bone Groups are now always copied from the source armature. This does mean that it isn't possible to have 'local' bone groups as for constraints, but it is better than losing bone groups from the original. 

Modified Paths:
--------------
    trunk/blender/source/blender/blenkernel/intern/action.c
    trunk/blender/source/blender/blenkernel/intern/armature.c

Modified: trunk/blender/source/blender/blenkernel/intern/action.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/action.c	2008-03-16 03:11:57 UTC (rev 14129)
+++ trunk/blender/source/blender/blenkernel/intern/action.c	2008-03-16 03:51:00 UTC (rev 14130)
@@ -295,7 +295,7 @@
 	
 	outPose= MEM_callocN(sizeof(bPose), "pose");
 	
-	duplicatelist (&outPose->chanbase, &src->chanbase);
+	duplicatelist(&outPose->chanbase, &src->chanbase);
 	
 	if (copycon) {
 		for (pchan=outPose->chanbase.first; pchan; pchan=pchan->next) {
@@ -314,11 +314,11 @@
 	
 	if (pose->chanbase.first) {
 		for (pchan = pose->chanbase.first; pchan; pchan=pchan->next){
-			if(pchan->path)
+			if (pchan->path)
 				MEM_freeN(pchan->path);
 			free_constraints(&pchan->constraints);
 		}
-		BLI_freelistN (&pose->chanbase);
+		BLI_freelistN(&pose->chanbase);
 	}
 }
 

Modified: trunk/blender/source/blender/blenkernel/intern/armature.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/armature.c	2008-03-16 03:11:57 UTC (rev 14129)
+++ trunk/blender/source/blender/blenkernel/intern/armature.c	2008-03-16 03:51:00 UTC (rev 14130)
@@ -1389,18 +1389,26 @@
 	bPoseChannel *pchan, *pchanp, pchanw;
 	bConstraint *con;
 	
-	if(frompose==NULL) return;
+	if (frompose==NULL) return;
 	
 	/* exception, armature local layer should be proxied too */
-	if(pose->proxy_layer)
+	if (pose->proxy_layer)
 		((bArmature *)ob->data)->layer= pose->proxy_layer;
 	
 	/* clear all transformation values from library */
 	rest_pose(frompose);
 	
-	pchan= pose->chanbase.first;
-	for(; pchan; pchan= pchan->next) {
-		if(pchan->bone->layer & layer_protected) {
+	/* copy over all of the proxy's bone groups */
+		/* TODO for later - implement 'local' bone groups as for constraints
+		 *	Note: this isn't trivial, as bones reference groups by index not by pointer, 
+		 *		 so syncing things correctly needs careful attention
+		 */
+	BLI_freelistN(&pose->agroups);
+	duplicatelist(&pose->agroups, &frompose->agroups);
+	pose->active_group= frompose->active_group;
+	
+	for (pchan= pose->chanbase.first; pchan; pchan= pchan->next) {
+		if (pchan->bone->layer & layer_protected) {
 			ListBase proxylocal_constraints = {NULL, NULL};
 			pchanp= get_pose_channel(frompose, pchan->name);
 			





More information about the Bf-blender-cvs mailing list