From 1f8ab25993c9a3251074fd996bd7e8dde3dbaaf0 Mon Sep 17 00:00:00 2001 From: Sergey Sharybin Date: Tue, 17 Sep 2013 08:58:12 +0000 Subject: Setting keyframe is now possible for tracks which doesn't have marker at current frame --- source/blender/editors/space_clip/tracking_ops.c | 30 +++++++++++++----------- 1 file changed, 16 insertions(+), 14 deletions(-) (limited to 'source/blender/editors/space_clip') diff --git a/source/blender/editors/space_clip/tracking_ops.c b/source/blender/editors/space_clip/tracking_ops.c index a4cd1e1ccad..7a6546053cd 100644 --- a/source/blender/editors/space_clip/tracking_ops.c +++ b/source/blender/editors/space_clip/tracking_ops.c @@ -4118,12 +4118,13 @@ static void keyframe_set_flag(bContext *C, bool set) for (track = tracks_base->first; track; track = track->next) { if (TRACK_VIEW_SELECTED(sc, track)) { - MovieTrackingMarker *marker = BKE_tracking_marker_get_exact(track, framenr); - if (marker) { - if (set) { - marker->flag &= ~MARKER_TRACKED; - } - else { + if (set) { + MovieTrackingMarker *marker = BKE_tracking_marker_ensure(track, framenr); + marker->flag &= ~MARKER_TRACKED; + } + else { + MovieTrackingMarker *marker = BKE_tracking_marker_get_exact(track, framenr); + if (marker) { marker->flag |= MARKER_TRACKED; } } @@ -4132,15 +4133,16 @@ static void keyframe_set_flag(bContext *C, bool set) for (plane_track = plane_tracks_base->first; plane_track; plane_track = plane_track->next) { if (plane_track->flag & SELECT) { - MovieTrackingPlaneMarker *plane_marker = BKE_tracking_plane_marker_get_exact(plane_track, framenr); - if (plane_marker) { - if (set) { - if (plane_marker->flag & PLANE_MARKER_TRACKED) { - plane_marker->flag &= ~PLANE_MARKER_TRACKED; - BKE_tracking_track_plane_from_existing_motion(plane_track, plane_marker->framenr); - } + if (set) { + MovieTrackingPlaneMarker *plane_marker = BKE_tracking_plane_marker_ensure(plane_track, framenr); + if (plane_marker->flag & PLANE_MARKER_TRACKED) { + plane_marker->flag &= ~PLANE_MARKER_TRACKED; + BKE_tracking_track_plane_from_existing_motion(plane_track, plane_marker->framenr); } - else { + } + else { + MovieTrackingPlaneMarker *plane_marker = BKE_tracking_plane_marker_get_exact(plane_track, framenr); + if (plane_marker) { if ((plane_marker->flag & PLANE_MARKER_TRACKED) == 0) { plane_marker->flag |= PLANE_MARKER_TRACKED; BKE_tracking_retrack_plane_from_existing_motion_at_segment(plane_track, plane_marker->framenr); -- cgit v1.2.3