[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [25750] trunk/blender/source/blender/ blenkernel/intern/armature.c: sanity check that prevents crashing when syncing poses,
Campbell Barton
ideasman42 at gmail.com
Tue Jan 5 20:34:21 CET 2010
Revision: 25750
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=25750
Author: campbellbarton
Date: 2010-01-05 20:34:19 +0100 (Tue, 05 Jan 2010)
Log Message:
-----------
sanity check that prevents crashing when syncing poses,
attempted to do a partial sync with pose mode however this seems not easy at all since connected data gets lost, parents are invalid etc.
Modified Paths:
--------------
trunk/blender/source/blender/blenkernel/intern/armature.c
Modified: trunk/blender/source/blender/blenkernel/intern/armature.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/armature.c 2010-01-05 19:22:48 UTC (rev 25749)
+++ trunk/blender/source/blender/blenkernel/intern/armature.c 2010-01-05 19:34:19 UTC (rev 25750)
@@ -1480,8 +1480,23 @@
bPose *pose= ob->pose, *frompose= from->pose;
bPoseChannel *pchan, *pchanp, pchanw;
bConstraint *con;
+ int error = 0;
if (frompose==NULL) return;
+
+ /* in some cases when rigs change, we cant synchronize
+ * to avoid crashing check for possible errors here */
+ for (pchan= pose->chanbase.first; pchan; pchan= pchan->next) {
+ if (pchan->bone->layer & layer_protected) {
+ if(get_pose_channel(frompose, pchan->name) == NULL) {
+ printf("failed to sync proxy armature because '%s' is missing pose channel '%s'\n", from->id.name, pchan->name);
+ error = 1;
+ }
+ }
+ }
+
+ if(error)
+ return;
/* exception, armature local layer should be proxied too */
if (pose->proxy_layer)
More information about the Bf-blender-cvs
mailing list