Merge with trunk r37677
[blender.git] / source / blender / editors / space_view3d / drawarmature.c
index f42fd46..29f40ec 100644 (file)
@@ -1658,7 +1658,7 @@ static void bone_matrix_translate_y(float mat[][4], float y)
 }
 
 /* assumes object is Armature with pose */
-static void draw_pose_bones(Scene *scene, View3D *v3d, ARegion *ar, Base *base, int dt, short ghost)
+static void draw_pose_bones(Scene *scene, View3D *v3d, ARegion *ar, Base *base, int dt, const short is_ghost, const short is_outline)
 {
        RegionView3D *rv3d= ar->regiondata;
        Object *ob= base->object;
@@ -1820,7 +1820,7 @@ static void draw_pose_bones(Scene *scene, View3D *v3d, ARegion *ar, Base *base,
                                                        }
                                                        
                                                        /* prepare colors */
-                                                       if(ghost) {
+                                                       if(is_ghost) {
                                                                /* 13 October 2009, Disabled this to make ghosting show the right colors (Aligorith) */
                                                        }
                                                        else if (arm->flag & ARM_POSEMODE)      
@@ -1990,7 +1990,7 @@ static void draw_pose_bones(Scene *scene, View3D *v3d, ARegion *ar, Base *base,
                draw_pose_dofs(ob);
 
        /* finally names and axes */
-       if (arm->flag & (ARM_DRAWNAMES|ARM_DRAWAXES)) {
+       if (arm->flag & (ARM_DRAWNAMES|ARM_DRAWAXES) && is_outline == 0) {
                /* patch for several 3d cards (IBM mostly) that crash on glSelect with text drawing */
                if ((G.f & G_PICKSEL) == 0) {
                        float vec[3];
@@ -2348,7 +2348,7 @@ static void draw_ghost_poses_range(Scene *scene, View3D *v3d, ARegion *ar, Base
                
                BKE_animsys_evaluate_animdata(&ob->id, adt, (float)CFRA, ADT_RECALC_ALL);
                where_is_pose(scene, ob);
-               draw_pose_bones(scene, v3d, ar, base, OB_WIRE, TRUE);
+               draw_pose_bones(scene, v3d, ar, base, OB_WIRE, TRUE, FALSE);
        }
        glDisable(GL_BLEND);
        if (v3d->zbuf) glEnable(GL_DEPTH_TEST);
@@ -2427,7 +2427,7 @@ static void draw_ghost_poses_keys(Scene *scene, View3D *v3d, ARegion *ar, Base *
                
                BKE_animsys_evaluate_animdata(&ob->id, adt, (float)CFRA, ADT_RECALC_ALL);
                where_is_pose(scene, ob);
-               draw_pose_bones(scene, v3d, ar, base, OB_WIRE, TRUE);
+               draw_pose_bones(scene, v3d, ar, base, OB_WIRE, TRUE, FALSE);
        }
        glDisable(GL_BLEND);
        if (v3d->zbuf) glEnable(GL_DEPTH_TEST);
@@ -2497,7 +2497,7 @@ static void draw_ghost_poses(Scene *scene, View3D *v3d, ARegion *ar, Base *base)
                        if (CFRA != cfrao) {
                                BKE_animsys_evaluate_animdata(&ob->id, adt, (float)CFRA, ADT_RECALC_ALL);
                                where_is_pose(scene, ob);
-                               draw_pose_bones(scene, v3d, ar, base, OB_WIRE, TRUE);
+                               draw_pose_bones(scene, v3d, ar, base, OB_WIRE, TRUE, FALSE);
                        }
                }
                
@@ -2512,7 +2512,7 @@ static void draw_ghost_poses(Scene *scene, View3D *v3d, ARegion *ar, Base *base)
                        if (CFRA != cfrao) {
                                BKE_animsys_evaluate_animdata(&ob->id, adt, (float)CFRA, ADT_RECALC_ALL);
                                where_is_pose(scene, ob);
-                               draw_pose_bones(scene, v3d, ar, base, OB_WIRE, TRUE);
+                               draw_pose_bones(scene, v3d, ar, base, OB_WIRE, TRUE, FALSE);
                        }
                }
        }
@@ -2533,7 +2533,7 @@ static void draw_ghost_poses(Scene *scene, View3D *v3d, ARegion *ar, Base *base)
 /* ********************************** Armature Drawing - Main ************************* */
 
 /* called from drawobject.c, return 1 if nothing was drawn */
-int draw_armature(Scene *scene, View3D *v3d, ARegion *ar, Base *base, int dt, int flag)
+int draw_armature(Scene *scene, View3D *v3d, ARegion *ar, Base *base, int dt, int flag, const short is_outline)
 {
        Object *ob= base->object;
        bArmature *arm= ob->data;
@@ -2599,7 +2599,7 @@ int draw_armature(Scene *scene, View3D *v3d, ARegion *ar, Base *base, int dt, in
                                        }
                                }       
                        }
-                       draw_pose_bones(scene, v3d, ar, base, dt, FALSE);
+                       draw_pose_bones(scene, v3d, ar, base, dt, FALSE, is_outline);
                        arm->flag &= ~ARM_POSEMODE; 
                        
                        if(ob->mode & OB_MODE_POSE)