[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [38603] branches/soc-2011-pepper/source/ blender/editors/armature: Bugfix [#27959] Error on Paste X-Fliped pose

Joshua Leung aligorith at gmail.com
Fri Jul 22 13:53:21 CEST 2011


Revision: 38603
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=38603
Author:   aligorith
Date:     2011-07-22 11:53:20 +0000 (Fri, 22 Jul 2011)
Log Message:
-----------
Bugfix [#27959] Error on Paste X-Fliped pose

Paste pose no longer just does a blind "replace all properties" on
bones that it pastes on. Instead:
* when properties exist on the target already - only change the
properties in common
* when properties don't already exist - copy all properties

Modified Paths:
--------------
    branches/soc-2011-pepper/source/blender/editors/armature/editarmature.c
    branches/soc-2011-pepper/source/blender/editors/armature/poseobject.c

Modified: branches/soc-2011-pepper/source/blender/editors/armature/editarmature.c
===================================================================
--- branches/soc-2011-pepper/source/blender/editors/armature/editarmature.c	2011-07-22 11:21:01 UTC (rev 38602)
+++ branches/soc-2011-pepper/source/blender/editors/armature/editarmature.c	2011-07-22 11:53:20 UTC (rev 38603)
@@ -2995,7 +2995,7 @@
 	
 	/* step 2a: parent children of in-between bones to newbone */
 	for (chain= chains->first; chain; chain= chain->next) {
-		/* ick: we need to check if parent of each bone in chain is one of the bones in the */
+		/* ick: we need to check if parent of each bone in chain is one of the bones in the chain being merged */
 		short found= 0;
 		for (ebo= chain->data; ebo; ebo= ebo->parent) {
 			

Modified: branches/soc-2011-pepper/source/blender/editors/armature/poseobject.c
===================================================================
--- branches/soc-2011-pepper/source/blender/editors/armature/poseobject.c	2011-07-22 11:21:01 UTC (rev 38602)
+++ branches/soc-2011-pepper/source/blender/editors/armature/poseobject.c	2011-07-22 11:53:20 UTC (rev 38603)
@@ -1107,21 +1107,19 @@
 					}
 				}
 				
-				/* ID properties 
-				 *	- only free the existing properties if the channel we're copying from has them
-				 * 	  NOTE: this means that if the pose depends on some pchan property, the pose may not be ok,
-				 *		    but this is better than loosing all the setting you've painstakingly added...
-				 */
+				/* ID properties */
 				if (chan->prop) {
-					/* free the old properties since we want to replace them now */
 					if (pchan->prop) {
-						IDP_FreeProperty(pchan->prop);
-						MEM_freeN(pchan->prop);
-						pchan->prop= NULL;
+						/* if we have existing properties on a bone, just copy over the values of 
+						 * matching properties (i.e. ones which will have some impact) on to the 
+						 * target instead of just blinding replacing all [
+						 */
+						IDP_SyncGroupValues(pchan->prop, chan->prop);
 					}
-					
-					/* now copy over the new copy of the properties */
-					pchan->prop= IDP_CopyProperty(chan->prop);	
+					else {
+						/* no existing properties, so assume that we want copies too? */
+						pchan->prop= IDP_CopyProperty(chan->prop);	
+					}
 				}
 				
 				/* keyframing tagging */




More information about the Bf-blender-cvs mailing list