diff --git a/source/blender/blenkernel/BKE_tracking.h b/source/blender/blenkernel/BKE_tracking.h index b44f90cbf73..13302caa09d 100644 --- a/source/blender/blenkernel/BKE_tracking.h +++ b/source/blender/blenkernel/BKE_tracking.h @@ -310,11 +310,21 @@ void BKE_tracking_get_rna_path_for_track( const struct MovieTrackingTrack *track, char *rna_path, size_t rna_path_len); +void BKE_tracking_get_rna_path_prefix_for_track( + const struct MovieTracking *tracking, + const struct MovieTrackingTrack *track, + char *rna_path, + size_t rna_path_len); void BKE_tracking_get_rna_path_for_plane_track( const struct MovieTracking *tracking, const struct MovieTrackingPlaneTrack *plane_track, char *rna_path, size_t rna_path_len); +void BKE_tracking_get_rna_path_prefix_for_plane_track( + const struct MovieTracking *tracking, + const struct MovieTrackingPlaneTrack *plane_track, + char *rna_path, + size_t rna_path_len); /* **** Utility macros **** */ diff --git a/source/blender/blenkernel/intern/tracking.c b/source/blender/blenkernel/intern/tracking.c index 7890f17c4df..f9d34534a45 100644 --- a/source/blender/blenkernel/intern/tracking.c +++ b/source/blender/blenkernel/intern/tracking.c @@ -2992,6 +2992,26 @@ void BKE_tracking_get_rna_path_for_track( } } +void BKE_tracking_get_rna_path_prefix_for_track( + const struct MovieTracking *tracking, + const struct MovieTrackingTrack *track, + char *rna_path, + size_t rna_path_len) +{ + MovieTrackingObject *object = + BKE_tracking_find_object_for_track(tracking, track); + if (object == NULL) { + BLI_snprintf(rna_path, rna_path_len, "tracking.tracks"); + } + else { + char object_name_esc[MAX_NAME * 2]; + BLI_strescape(object_name_esc, object->name, sizeof(object_name_esc)); + BLI_snprintf(rna_path, rna_path_len, + "tracking.objects[\"%s\"]", + object_name_esc); + } +} + void BKE_tracking_get_rna_path_for_plane_track( const struct MovieTracking *tracking, const struct MovieTrackingPlaneTrack *plane_track, @@ -3016,3 +3036,23 @@ void BKE_tracking_get_rna_path_for_plane_track( track_name_esc); } } + +void BKE_tracking_get_rna_path_prefix_for_plane_track( + const struct MovieTracking *tracking, + const struct MovieTrackingPlaneTrack *plane_track, + char *rna_path, + size_t rna_path_len) +{ + MovieTrackingObject *object = + BKE_tracking_find_object_for_plane_track(tracking, plane_track); + if (object == NULL) { + BLI_snprintf(rna_path, rna_path_len, "tracking.plane_tracks"); + } + else { + char object_name_esc[MAX_NAME * 2]; + BLI_strescape(object_name_esc, object->name, sizeof(object_name_esc)); + BLI_snprintf(rna_path, rna_path_len, + "tracking.objects[\"%s\"].plane_tracks", + object_name_esc); + } +}