diff options
author | Sergey Sharybin <sergey.vfx@gmail.com> | 2012-01-10 00:18:36 +0400 |
---|---|---|
committer | Sergey Sharybin <sergey.vfx@gmail.com> | 2012-01-10 00:18:36 +0400 |
commit | dadb0d81221bb8ec706bea5da814dc4995723ba8 (patch) | |
tree | 13007508b7df6cc6ad4797d5dcfc4f8377a22e25 /source/blender/makesrna/intern/rna_tracking.c | |
parent | a69904aefecc47c39ab086bcd951b65fb6cb9baf (diff) |
Camera tracking: marker's frame number is now writable from python api
Diffstat (limited to 'source/blender/makesrna/intern/rna_tracking.c')
-rw-r--r-- | source/blender/makesrna/intern/rna_tracking.c | 29 |
1 files changed, 27 insertions, 2 deletions
diff --git a/source/blender/makesrna/intern/rna_tracking.c b/source/blender/makesrna/intern/rna_tracking.c index dcb460fbf37..bcc817d0aa1 100644 --- a/source/blender/makesrna/intern/rna_tracking.c +++ b/source/blender/makesrna/intern/rna_tracking.c @@ -405,6 +405,31 @@ void rna_tracking_object_remove(MovieTracking *tracking, MovieTrackingObject *ob WM_main_add_notifier(NC_MOVIECLIP|NA_EDITED, NULL); } +static void rna_trackingMarker_frame_set(PointerRNA *ptr, int value) +{ + MovieClip *clip = (MovieClip *) ptr->id.data; + MovieTracking *tracking = &clip->tracking; + MovieTrackingTrack *track; + MovieTrackingMarker *marker = (MovieTrackingMarker *) ptr->data; + + track = tracking->tracks.first; + while (track) { + if (marker >= track->markers && marker < track->markers+track->markersnr) { + break; + } + + track = track->next; + } + + if (track) { + MovieTrackingMarker new_marker = *marker; + new_marker.framenr = value; + + BKE_tracking_delete_marker(track, marker->framenr); + BKE_tracking_insert_marker(track, &new_marker); + } +} + static MovieTrackingMarker *rna_trackingMarkers_find_frame(MovieTrackingTrack *track, int framenr) { return BKE_tracking_exact_marker(track, framenr); @@ -718,10 +743,10 @@ static void rna_def_trackingMarker(BlenderRNA *brna) /* frame */ prop= RNA_def_property(srna, "frame", PROP_INT, PROP_NONE); - RNA_def_property_clear_flag(prop, PROP_EDITABLE); /* can't be safty edited for now, need to re-sort markers array after change */ RNA_def_property_int_sdna(prop, NULL, "framenr"); RNA_def_property_ui_text(prop, "Frame", "Frame number marker is keyframed on"); - RNA_def_property_update(prop, NC_MOVIECLIP|NA_EDITED, NULL); + RNA_def_property_int_funcs(prop, NULL, "rna_trackingMarker_frame_set", NULL); + RNA_def_property_update(prop, NC_MOVIECLIP|NA_EDITED, 0); /* enable */ prop= RNA_def_property(srna, "mute", PROP_BOOLEAN, PROP_NONE); |