Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSergey Sharybin <sergey.vfx@gmail.com>2012-02-26 12:14:14 +0400
committerSergey Sharybin <sergey.vfx@gmail.com>2012-02-26 12:14:14 +0400
commit8285fef0e88e1816bf57b6e14cb659584344c99d (patch)
treed7885cd5856631282ec9cd25a0024850bbbf0a00 /source/blender/editors/space_view3d/drawobject.c
parentd82c768cc7df3f671d6066730e829c26e2fe6f3c (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.c17
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)) {