diff options
Diffstat (limited to 'source/blender/blenkernel/intern/anim_sys.c')
-rw-r--r-- | source/blender/blenkernel/intern/anim_sys.c | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/source/blender/blenkernel/intern/anim_sys.c b/source/blender/blenkernel/intern/anim_sys.c index 16269c3f66f..b4adaa0ab07 100644 --- a/source/blender/blenkernel/intern/anim_sys.c +++ b/source/blender/blenkernel/intern/anim_sys.c @@ -282,6 +282,32 @@ void BKE_animdata_make_local(AnimData *adt) make_local_strips(&nlt->strips); } +void BKE_relink_animdata(struct AnimData *adt) +{ + /* drivers */ + if (adt->drivers.first) { + FCurve *fcu; + + /* check each driver against all the base paths to see if any should go */ + for (fcu= adt->drivers.first; fcu; fcu=fcu->next) { + ChannelDriver *driver= fcu->driver; + DriverVar *dvar; + + /* driver variables */ + for (dvar= driver->variables.first; dvar; dvar=dvar->next) { + /* only change the used targets, since the others will need fixing manually anyway */ + DRIVER_TARGETS_USED_LOOPER(dvar) + { + if(dtar->id->newid) { + dtar->id= dtar->id->newid; + } + } + DRIVER_TARGETS_LOOPER_END + } + } + } +} + /* Sub-ID Regrouping ------------------------------------------- */ /* helper heuristic for determining if a path is compatible with the basepath |