diff options
author | Sergey Sharybin <sergey.vfx@gmail.com> | 2012-02-26 12:14:14 +0400 |
---|---|---|
committer | Sergey Sharybin <sergey.vfx@gmail.com> | 2012-02-26 12:14:14 +0400 |
commit | 8285fef0e88e1816bf57b6e14cb659584344c99d (patch) | |
tree | d7885cd5856631282ec9cd25a0024850bbbf0a00 /source/blender/editors/space_view3d/drawobject.c | |
parent | d82c768cc7df3f671d6066730e829c26e2fe6f3c (diff) |
Fixed for selected bundles drawing in 3D viewport:
- If track was hidded in clip editor it wasn't highlighted in 3d viewport
even if it's selected.
- If two tracks has got the same bundle coordinate and one of them is
selected it might not be highlighted in 3d viewport because of
draw order.
Diffstat (limited to 'source/blender/editors/space_view3d/drawobject.c')
-rw-r--r-- | source/blender/editors/space_view3d/drawobject.c | 17 |
1 files changed, 12 insertions, 5 deletions
diff --git a/source/blender/editors/space_view3d/drawobject.c b/source/blender/editors/space_view3d/drawobject.c index 88e145245a4..2d716d522f2 100644 --- a/source/blender/editors/space_view3d/drawobject.c +++ b/source/blender/editors/space_view3d/drawobject.c @@ -1521,7 +1521,8 @@ static void draw_bundle_sphere(void) } static void draw_viewport_object_reconstruction(Scene *scene, Base *base, View3D *v3d, - MovieClip *clip, MovieTrackingObject *tracking_object, int flag, int *global_track_index) + MovieClip *clip, MovieTrackingObject *tracking_object, int flag, + int *global_track_index, int draw_selected) { MovieTracking *tracking= &clip->tracking; MovieTrackingTrack *track; @@ -1558,6 +1559,9 @@ static void draw_viewport_object_reconstruction(Scene *scene, Base *base, View3D for (track= tracksbase->first; track; track= track->next) { int selected= TRACK_SELECTED(track); + if ((draw_selected && !selected) || (draw_selected && !selected)) + continue; + if ((track->flag&TRACK_HAS_BUNDLE)==0) continue; @@ -1671,7 +1675,8 @@ static void draw_viewport_object_reconstruction(Scene *scene, Base *base, View3D *global_track_index= tracknr; } -static void draw_viewport_reconstruction(Scene *scene, Base *base, View3D *v3d, MovieClip *clip, int flag) +static void draw_viewport_reconstruction(Scene *scene, Base *base, View3D *v3d, MovieClip *clip, + int flag, int draw_selected) { MovieTracking *tracking= &clip->tracking; MovieTrackingObject *tracking_object; @@ -1694,7 +1699,7 @@ static void draw_viewport_reconstruction(Scene *scene, Base *base, View3D *v3d, tracking_object= tracking->objects.first; while (tracking_object) { draw_viewport_object_reconstruction(scene, base, v3d, clip, tracking_object, - flag, &global_track_index); + flag, &global_track_index, draw_selected); tracking_object= tracking_object->next; } @@ -1724,8 +1729,10 @@ static void drawcamera(Scene *scene, View3D *v3d, RegionView3D *rv3d, Base *base MovieClip *clip= object_get_movieclip(scene, base->object, 0); /* draw data for movie clip set as active for scene */ - if (clip) - draw_viewport_reconstruction(scene, base, v3d, clip, flag); + if (clip) { + draw_viewport_reconstruction(scene, base, v3d, clip, flag, FALSE); + draw_viewport_reconstruction(scene, base, v3d, clip, flag, TRUE); + } #ifdef VIEW3D_CAMERA_BORDER_HACK if (is_view && !(G.f & G_PICKSEL)) { |