[Bf-blender-cvs] [b6b9351371b] master: Tracking: Add missing animation path fix after renaming tracks

Sergey Sharybin noreply at git.blender.org
Tue Dec 19 13:40:03 CET 2017


Commit: b6b9351371b0821c6a308e2f487ce3b394290f02
Author: Sergey Sharybin
Date:   Tue Dec 19 13:39:37 2017 +0100
Branches: master
https://developer.blender.org/rBb6b9351371b0821c6a308e2f487ce3b394290f02

Tracking: Add missing animation path fix after renaming tracks

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

M	source/blender/makesrna/intern/rna_tracking.c

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

diff --git a/source/blender/makesrna/intern/rna_tracking.c b/source/blender/makesrna/intern/rna_tracking.c
index 7abd811d6bc..f44f7336cdf 100644
--- a/source/blender/makesrna/intern/rna_tracking.c
+++ b/source/blender/makesrna/intern/rna_tracking.c
@@ -48,6 +48,9 @@
 
 #ifdef RNA_RUNTIME
 
+#include "DNA_anim_types.h"
+
+#include "BKE_animsys.h"
 #include "BKE_depsgraph.h"
 #include "BKE_node.h"
 
@@ -185,8 +188,24 @@ static void rna_trackingTrack_name_set(PointerRNA *ptr, const char *value)
 	MovieTrackingTrack *track = (MovieTrackingTrack *)ptr->data;
 	ListBase *tracksbase =
 	        BKE_tracking_find_tracks_list_for_track(&clip->tracking, track);
+	/* Store old name, for the animation fix later. */
+	char old_name[sizeof(track->name)];
+	BLI_strncpy(old_name, track->name, sizeof(track->name));
+	/* Update the name, */
 	BLI_strncpy(track->name, value, sizeof(track->name));
 	BKE_tracking_track_unique_name(tracksbase, track);
+	/* Fix animation paths. */
+	AnimData *adt = BKE_animdata_from_id(&clip->id);
+	if (adt != NULL) {
+		char rna_path[MAX_NAME * 2 + 64];
+		BKE_tracking_get_rna_path_prefix_for_track(&clip->tracking,
+		                                           track,
+		                                           rna_path, sizeof(rna_path));
+		BKE_animdata_fix_paths_rename(&clip->id, adt, NULL,
+		                              rna_path,
+		                              old_name, track->name,
+		                              0, 0, 1);
+	}
 }
 
 static int rna_trackingTrack_select_get(PointerRNA *ptr)
@@ -270,8 +289,25 @@ static void rna_trackingPlaneTrack_name_set(PointerRNA *ptr, const char *value)
 	ListBase *plane_tracks_base =
 	        BKE_tracking_find_tracks_list_for_plane_track(&clip->tracking,
 	                                                      plane_track);
+	/* Store old name, for the animation fix later. */
+	char old_name[sizeof(plane_track->name)];
+	BLI_strncpy(old_name, plane_track->name, sizeof(plane_track->name));
+	/* Update the name, */
 	BLI_strncpy(plane_track->name, value, sizeof(plane_track->name));
 	BKE_tracking_plane_track_unique_name(plane_tracks_base, plane_track);
+	/* Fix animation paths. */
+	AnimData *adt = BKE_animdata_from_id(&clip->id);
+	if (adt != NULL) {
+		char rna_path[MAX_NAME * 2 + 64];
+		BKE_tracking_get_rna_path_prefix_for_plane_track(&clip->tracking,
+		                                                 plane_track,
+		                                                 rna_path,
+		                                                 sizeof(rna_path));
+		BKE_animdata_fix_paths_rename(&clip->id, adt, NULL,
+		                              rna_path,
+		                              old_name, plane_track->name,
+		                              0, 0, 1);
+	}
 }
 
 static char *rna_trackingCamera_path(PointerRNA *UNUSED(ptr))



More information about the Bf-blender-cvs mailing list