[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [25879] trunk/blender/source/blender: Make linked animdata working again, copies NLA too, as well as ObData animdata where types match

Campbell Barton ideasman42 at gmail.com
Sun Jan 10 21:23:59 CET 2010


Revision: 25879
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=25879
Author:   campbellbarton
Date:     2010-01-10 21:23:59 +0100 (Sun, 10 Jan 2010)

Log Message:
-----------
Make linked animdata working again, copies NLA too, as well as ObData animdata where types match

Modified Paths:
--------------
    trunk/blender/source/blender/blenkernel/BKE_animsys.h
    trunk/blender/source/blender/blenkernel/intern/anim_sys.c
    trunk/blender/source/blender/editors/object/object_relations.c

Modified: trunk/blender/source/blender/blenkernel/BKE_animsys.h
===================================================================
--- trunk/blender/source/blender/blenkernel/BKE_animsys.h	2010-01-10 20:16:56 UTC (rev 25878)
+++ trunk/blender/source/blender/blenkernel/BKE_animsys.h	2010-01-10 20:23:59 UTC (rev 25879)
@@ -55,6 +55,9 @@
 /* Copy AnimData */
 struct AnimData *BKE_copy_animdata(struct AnimData *adt);
 
+/* Copy AnimData */
+int BKE_copy_animdata_id(struct ID *id_to, struct ID *id_from);
+
 /* Make Local */
 void BKE_animdata_make_local(struct AnimData *adt);
 

Modified: trunk/blender/source/blender/blenkernel/intern/anim_sys.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/anim_sys.c	2010-01-10 20:16:56 UTC (rev 25878)
+++ trunk/blender/source/blender/blenkernel/intern/anim_sys.c	2010-01-10 20:23:59 UTC (rev 25879)
@@ -203,6 +203,26 @@
 	return dadt;
 }
 
+int BKE_copy_animdata_id(struct ID *id_to, struct ID *id_from)
+{
+	AnimData *adt;
+
+	if((id_to && id_from) && (GS(id_to->name) != GS(id_from->name)))
+		return 0;
+
+	BKE_free_animdata(id_to);
+
+	adt = BKE_animdata_from_id(id_from);
+	if (adt) {
+		IdAdtTemplate *iat = (IdAdtTemplate *)id_to;
+		iat->adt= BKE_copy_animdata(adt);
+	}
+
+	return 1;
+}
+
+
+
 /* Make Local -------------------------------------------- */
 
 static void make_local_strips(ListBase *strips)

Modified: trunk/blender/source/blender/editors/object/object_relations.c
===================================================================
--- trunk/blender/source/blender/editors/object/object_relations.c	2010-01-10 20:16:56 UTC (rev 25878)
+++ trunk/blender/source/blender/editors/object/object_relations.c	2010-01-10 20:23:59 UTC (rev 25879)
@@ -1219,14 +1219,8 @@
 				}
 				break;
 			case MAKE_LINKS_ANIMDATA:
-#if 0 // XXX old animation system
-					if(obt->ipo) obt->ipo->id.us--;
-					obt->ipo= ob->ipo;
-					if(obt->ipo) {
-						id_us_plus((ID *)obt->ipo);
-						do_ob_ipo(scene, obt);
-					}
-#endif // XXX old animation system
+				BKE_copy_animdata_id((ID *)obt, (ID *)ob);
+				BKE_copy_animdata_id((ID *)obt->data, (ID *)ob->data);
 				break;
 			case MAKE_LINKS_DUPLIGROUP:
 				if(ob->dup_group) ob->dup_group->id.us--;





More information about the Bf-blender-cvs mailing list