[Bf-blender-cvs] [f1a7118] id-remap: Add missing AnimData ID to foreach_ID_loop.

Bastien Montagne noreply at git.blender.org
Thu Nov 12 11:51:04 CET 2015


Commit: f1a7118c04a2d05c419339450675266a7158a100
Author: Bastien Montagne
Date:   Thu Nov 12 11:50:01 2015 +0100
Branches: id-remap
https://developer.blender.org/rBf1a7118c04a2d05c419339450675266a7158a100

Add missing AnimData ID to foreach_ID_loop.

Atempt to fix missing action remapping, but no luck so far. :|

===================================================================

M	source/blender/blenkernel/intern/library.c
M	source/blender/blenkernel/intern/library_query.c

===================================================================

diff --git a/source/blender/blenkernel/intern/library.c b/source/blender/blenkernel/intern/library.c
index eb2d7fd..2d78595 100644
--- a/source/blender/blenkernel/intern/library.c
+++ b/source/blender/blenkernel/intern/library.c
@@ -1078,7 +1078,7 @@ static bool foreach_libblock_remap_callback(void *user_data, ID **id_p, int cb_f
 		const bool is_never_null = ((cb_flag & IDWALK_NEVER_NULL) && (new_id == NULL));
 		const bool skip_never_null = (id_remap_data->flag & ID_REMAP_SKIP_NEVER_NULL_USAGE) != 0;
 
-		if (GS(id->name) == ID_TXT)
+		if (GS(id->name) == ID_AC)
 		printf("\t\tIn %s (%p): remapping %s (%p) to %s (%p)\n",
 		       id->name, id, old_id->name, old_id, new_id ? new_id->name : "<NONE>", new_id);
 
@@ -1164,7 +1164,7 @@ static void libblock_remap_data(
 	r_id_remap_data->skipped_indirect = 0;
 	r_id_remap_data->skipped_refcounted = 0;
 
-	if (id && GS(id->name) == ID_TXT)
+	if (id && GS(id->name) == ID_AC)
 	printf("%s: %s (%p) replaced by %s (%p)\n", __func__,
 	       old_id ? old_id->name : "", old_id, new_id ? new_id->name : "", new_id);
 
diff --git a/source/blender/blenkernel/intern/library_query.c b/source/blender/blenkernel/intern/library_query.c
index ac81b06..f809866 100644
--- a/source/blender/blenkernel/intern/library_query.c
+++ b/source/blender/blenkernel/intern/library_query.c
@@ -157,11 +157,22 @@ static void library_foreach_actuatorsObjectLooper(
 	FOREACH_CALLBACK_INVOKE_ID_PP(data->self_id, id_pointer, data->flag, data->callback, data->user_data, cd_flag);
 }
 
+static void library_foreach_nla_strip(LibraryForeachIDData *data, NlaStrip *strip)
+{
+	NlaStrip *substrip;
+
+	FOREACH_CALLBACK_INVOKE(data->self_id, strip->act, data->flag, data->callback, data->user_data, IDWALK_USER);
+
+	for (substrip = strip->strips.first; substrip; substrip = substrip->next) {
+		library_foreach_nla_strip(data, substrip);
+	}
+}
+
 static void library_foreach_animationData(LibraryForeachIDData *data, AnimData *adt)
 {
-	/* XXX We do not cover adt->action & co here, why?
-	 * TODO check whether this can be added or not? */
 	FCurve *fcu;
+	NlaTrack *nla_track;
+	NlaStrip *nla_strip;
 
 	for (fcu = adt->drivers.first; fcu; fcu = fcu->next) {
 		ChannelDriver *driver = fcu->driver;
@@ -171,11 +182,21 @@ static void library_foreach_animationData(LibraryForeachIDData *data, AnimData *
 			/* only used targets */
 			DRIVER_TARGETS_USED_LOOPER(dvar)
 			{
-				FOREACH_CALLBACK_INVOKE_ID(data->self_id, dtar->id, data->flag, data->callback, data->user_data, IDWALK_NOP);
+				FOREACH_CALLBACK_INVOKE_ID(data->self_id, dtar->id,
+				                           data->flag, data->callback, data->user_data, IDWALK_NOP);
 			}
 			DRIVER_TARGETS_LOOPER_END
 		}
 	}
+
+	FOREACH_CALLBACK_INVOKE(data->self_id, adt->action, data->flag, data->callback, data->user_data, IDWALK_USER);
+	FOREACH_CALLBACK_INVOKE(data->self_id, adt->tmpact, data->flag, data->callback, data->user_data, IDWALK_USER);
+
+	for (nla_track = adt->nla_tracks.first; nla_track; nla_track = nla_track->next) {
+		for (nla_strip = nla_track->strips.first; nla_strip; nla_strip = nla_strip->next) {
+			library_foreach_nla_strip(data, nla_strip);
+		}
+	}
 }
 
 static void library_foreach_mtex(LibraryForeachIDData *data, MTex *mtex)




More information about the Bf-blender-cvs mailing list