scenes set pose objects would draw in posemode while weight painting if they were set to posemode in their scene.

This commit is contained in:
Campbell Barton 2008-07-08 10:18:34 +00:00
parent 878a5303f3
commit a166def7b3
5 changed files with 17 additions and 15 deletions

@ -63,6 +63,7 @@ void get_local_bounds(struct Object *ob, float *center, float *size);
/* drawing flags: */
#define DRAW_PICKING 1
#define DRAW_CONSTCOLOR 2
#define DRAW_SCENESET 4
void draw_object(struct Base *base, int flag);
void drawaxes(float size, int flag, char drawtype);

@ -80,7 +80,7 @@ void clear_armature(struct Object *ob, char mode);
void delete_armature(void);
void deselectall_armature(int toggle, int doundo);
void deselectall_posearmature (struct Object *ob, int test, int doundo);
int draw_armature(struct Base *base, int dt);
int draw_armature(struct Base *base, int dt, int flag);
void extrude_armature(int forked);
void subdivide_armature(int numcuts);

@ -2500,7 +2500,7 @@ static void draw_ghost_poses(Base *base)
/* ********************************** Armature Drawing - Main ************************* */
/* called from drawobject.c, return 1 if nothing was drawn */
int draw_armature(Base *base, int dt)
int draw_armature(Base *base, int dt, int flag)
{
Object *ob= base->object;
bArmature *arm= ob->data;
@ -2544,15 +2544,16 @@ int draw_armature(Base *base, int dt)
if (arm->ghostep)
draw_ghost_poses(base);
}
if ((flag & DRAW_SCENESET)==0) {
if(ob==OBACT)
arm->flag |= ARM_POSEMODE;
else if(G.f & G_WEIGHTPAINT)
arm->flag |= ARM_POSEMODE;
if(ob==OBACT)
arm->flag |= ARM_POSEMODE;
else if(G.f & G_WEIGHTPAINT)
arm->flag |= ARM_POSEMODE;
draw_pose_paths(ob);
draw_pose_paths(ob);
}
}
}
}
draw_pose_channels(base, dt);
arm->flag &= ~ARM_POSEMODE;

@ -4620,7 +4620,7 @@ static void drawSolidSelect(Base *base)
}
else if(ob->type==OB_ARMATURE) {
if(!(ob->flag & OB_POSEMODE)) {
draw_armature(base, OB_WIRE);
draw_armature(base, OB_WIRE, 0);
}
}
@ -4741,7 +4741,7 @@ void drawRBpivot(bRigidBodyJointConstraint *data){
setlinestyle(0);
}
/* flag can be DRAW_PICKING and/or DRAW_CONSTCOLOR */
/* flag can be DRAW_PICKING and/or DRAW_CONSTCOLOR, DRAW_SCENESET */
void draw_object(Base *base, int flag)
{
static int warning_recursive= 0;
@ -4943,7 +4943,7 @@ void draw_object(Base *base, int flag)
/* draw outline for selected solid objects, mesh does itself */
if((G.vd->flag & V3D_SELECT_OUTLINE) && ob->type!=OB_MESH) {
if(dt>OB_WIRE && dt<OB_TEXTURE && ob!=G.obedit) {
if(dt>OB_WIRE && dt<OB_TEXTURE && ob!=G.obedit && (flag && DRAW_SCENESET)==0) {
if (!(ob->dtx&OB_DRAWWIRE) && (ob->flag&SELECT) && !(flag&DRAW_PICKING)) {
drawSolidSelect(base);
}
@ -5090,7 +5090,7 @@ void draw_object(Base *base, int flag)
break;
case OB_ARMATURE:
if(dt>OB_WIRE) set_gl_material(0); // we use defmaterial
empty_object= draw_armature(base, dt);
empty_object= draw_armature(base, dt, flag);
break;
default:
drawaxes(1.0, flag, OB_ARROWS);

@ -3097,7 +3097,7 @@ void drawview3dspace(ScrArea *sa, void *spacedata)
if(v3d->lay & base->lay) {
BIF_ThemeColorBlend(TH_WIRE, TH_BACK, 0.6f);
draw_object(base, DRAW_CONSTCOLOR);
draw_object(base, DRAW_CONSTCOLOR|DRAW_SCENESET);
if(base->object->transflag & OB_DUPLI) {
draw_dupli_objects_color(v3d, base, TH_WIRE);
@ -3319,7 +3319,7 @@ void drawview3d_render(struct View3D *v3d, int winx, int winy, float winmat[][4]
where_is_object(base->object);
BIF_ThemeColorBlend(TH_WIRE, TH_BACK, 0.6f);
draw_object(base, DRAW_CONSTCOLOR);
draw_object(base, DRAW_CONSTCOLOR|DRAW_SCENESET);
if(base->object->transflag & OB_DUPLI) {
draw_dupli_objects(v3d, base);