As reported on bf-committers maillist: new object centers were drawing in
sets. To fix it, I got rid of a very ancient hack to enable set grey wire drawing (setting a global to pretend it's picking select draw). Now this setting is nicely passed on via functions as argument.
This commit is contained in:
@@ -49,9 +49,6 @@ struct BezTriple;
|
||||
struct EditVert;
|
||||
struct EditFace;
|
||||
|
||||
void drawaxes(float size);
|
||||
void drawcamera(struct Object *ob);
|
||||
|
||||
void mesh_foreachScreenVert(void (*func)(void *userData, struct EditVert *eve, int x, int y, int index), void *userData, int clipVerts);
|
||||
void mesh_foreachScreenEdge(void (*func)(void *userData, struct EditEdge *eed, int x0, int y0, int x1, int y1, int index), void *userData, int clipVerts);
|
||||
void mesh_foreachScreenFace(void (*func)(void *userData, struct EditFace *efa, int x, int y, int index), void *userData);
|
||||
@@ -61,7 +58,13 @@ void nurbs_foreachScreenVert(void (*func)(void *userData, struct Nurb *nu, struc
|
||||
|
||||
void drawcircball(int mode, float *cent, float rad, float tmat[][4]);
|
||||
void get_local_bounds(struct Object *ob, float *centre, float *size);
|
||||
void draw_object(struct Base *base);
|
||||
|
||||
/* drawing flags: */
|
||||
#define DRAW_PICKING 1
|
||||
#define DRAW_CONSTCOLOR 2
|
||||
void draw_object(struct Base *base, int flag);
|
||||
void drawaxes(float size, int flag);
|
||||
|
||||
void draw_object_ext(struct Base *base);
|
||||
void drawsolidcube(float size);
|
||||
extern void draw_object_backbufsel(struct Object *ob);
|
||||
|
||||
@@ -1486,7 +1486,7 @@ static void draw_pose_channels(Base *base, int dt)
|
||||
glPushMatrix();
|
||||
glMultMatrixf(pchan->pose_mat);
|
||||
glTranslatef(0.0f, pchan->bone->length, 0.0f);
|
||||
drawaxes(0.25f*pchan->bone->length);
|
||||
drawaxes(0.25f*pchan->bone->length, 0);
|
||||
glPopMatrix();
|
||||
}
|
||||
}
|
||||
@@ -1663,7 +1663,7 @@ static void draw_ebones(Object *ob, int dt)
|
||||
glPushMatrix();
|
||||
set_matrix_editbone(eBone);
|
||||
glTranslatef(0.0f, eBone->length, 0.0f);
|
||||
drawaxes(eBone->length*0.25f);
|
||||
drawaxes(eBone->length*0.25f, 0);
|
||||
glPopMatrix();
|
||||
}
|
||||
|
||||
|
||||
@@ -238,7 +238,8 @@ static float cube[8][3] = {
|
||||
{ 1.0, 1.0, -1.0},
|
||||
};
|
||||
|
||||
void drawaxes(float size)
|
||||
/* flag is same as for draw_object */
|
||||
void drawaxes(float size, int flag)
|
||||
{
|
||||
int axis;
|
||||
|
||||
@@ -268,7 +269,7 @@ void drawaxes(float size)
|
||||
glRasterPos3fv(v2);
|
||||
|
||||
// patch for 3d cards crashing on glSelect for text drawing (IBM)
|
||||
if((G.f & G_PICKSEL) == 0) {
|
||||
if((flag & DRAW_PICKING) == 0) {
|
||||
if (axis==0)
|
||||
BMF_DrawString(G.font, "x");
|
||||
else if (axis==1)
|
||||
@@ -800,7 +801,8 @@ static void draw_focus_cross(float dist, float size)
|
||||
glEnd();
|
||||
}
|
||||
|
||||
void drawcamera(Object *ob)
|
||||
/* flag similar to draw_object() */
|
||||
static void drawcamera(Object *ob, int flag)
|
||||
{
|
||||
/* a standing up pyramid with (0,0,0) as top */
|
||||
Camera *cam;
|
||||
@@ -880,26 +882,28 @@ void drawcamera(Object *ob)
|
||||
glEnd();
|
||||
}
|
||||
|
||||
if(cam->flag & (CAM_SHOWLIMITS+CAM_SHOWMIST)) {
|
||||
myloadmatrix(G.vd->viewmat);
|
||||
Mat4CpyMat4(vec, ob->obmat);
|
||||
Mat4Ortho(vec);
|
||||
mymultmatrix(vec);
|
||||
if(flag==0) {
|
||||
if(cam->flag & (CAM_SHOWLIMITS+CAM_SHOWMIST)) {
|
||||
myloadmatrix(G.vd->viewmat);
|
||||
Mat4CpyMat4(vec, ob->obmat);
|
||||
Mat4Ortho(vec);
|
||||
mymultmatrix(vec);
|
||||
|
||||
MTC_Mat4SwapMat4(G.vd->persmat, tmat);
|
||||
mygetsingmatrix(G.vd->persmat);
|
||||
MTC_Mat4SwapMat4(G.vd->persmat, tmat);
|
||||
mygetsingmatrix(G.vd->persmat);
|
||||
|
||||
if(cam->flag & CAM_SHOWLIMITS) {
|
||||
draw_limit_line(cam->clipsta, cam->clipend, 0x77FFFF);
|
||||
/* yafray: dof focus point */
|
||||
if (G.scene->r.renderer==R_YAFRAY) draw_focus_cross(cam->YF_dofdist, cam->drawsize);
|
||||
if(cam->flag & CAM_SHOWLIMITS) {
|
||||
draw_limit_line(cam->clipsta, cam->clipend, 0x77FFFF);
|
||||
/* yafray: dof focus point */
|
||||
if (G.scene->r.renderer==R_YAFRAY) draw_focus_cross(cam->YF_dofdist, cam->drawsize);
|
||||
}
|
||||
|
||||
wrld= G.scene->world;
|
||||
if(cam->flag & CAM_SHOWMIST)
|
||||
if(wrld) draw_limit_line(wrld->miststa, wrld->miststa+wrld->mistdist, 0xFFFFFF);
|
||||
|
||||
MTC_Mat4SwapMat4(G.vd->persmat, tmat);
|
||||
}
|
||||
|
||||
wrld= G.scene->world;
|
||||
if(cam->flag & CAM_SHOWMIST)
|
||||
if(wrld) draw_limit_line(wrld->miststa, wrld->miststa+wrld->mistdist, 0xFFFFFF);
|
||||
|
||||
MTC_Mat4SwapMat4(G.vd->persmat, tmat);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3472,7 +3476,8 @@ static void draw_hooks(Object *ob)
|
||||
}
|
||||
}
|
||||
|
||||
void draw_object(Base *base)
|
||||
/* flag can be DRAW_PICKING and/or DRAW_CONSTCOLOR */
|
||||
void draw_object(Base *base, int flag)
|
||||
{
|
||||
static int warning_recursive= 0;
|
||||
Object *ob;
|
||||
@@ -3490,7 +3495,8 @@ void draw_object(Base *base)
|
||||
ob= base->object;
|
||||
|
||||
/* xray delay? */
|
||||
if(!(G.f & G_PICKSEL)) {
|
||||
if((flag & DRAW_PICKING)==0) {
|
||||
/* xray and transp are set when it is drawing the 2nd/3rd pass */
|
||||
if(!G.vd->xray && !G.vd->transp && (ob->dtx & OB_DRAWXRAY)) {
|
||||
add_view3d_after(G.vd, base, V3D_XRAY);
|
||||
return;
|
||||
@@ -3499,7 +3505,7 @@ void draw_object(Base *base)
|
||||
|
||||
/* draw keys? */
|
||||
if(base==(G.scene->basact) || (base->flag & (SELECT+BA_WAS_SEL))) {
|
||||
if(warning_recursive==0 && ob!=G.obedit) {
|
||||
if(flag==0 && warning_recursive==0 && ob!=G.obedit) {
|
||||
if(ob->ipo && ob->ipo->showkey && (ob->ipoflag & OB_DRAWKEY)) {
|
||||
ListBase elems;
|
||||
CfraElem *ce;
|
||||
@@ -3531,7 +3537,7 @@ void draw_object(Base *base)
|
||||
base->flag= 0;
|
||||
|
||||
where_is_object_time(ob, (G.scene->r.cfra));
|
||||
draw_object(base);
|
||||
draw_object(base, 0);
|
||||
}
|
||||
ce= ce->next;
|
||||
}
|
||||
@@ -3545,7 +3551,7 @@ void draw_object(Base *base)
|
||||
base->flag= SELECT;
|
||||
|
||||
where_is_object_time(ob, (G.scene->r.cfra));
|
||||
draw_object(base);
|
||||
draw_object(base, 0);
|
||||
}
|
||||
ce= ce->next;
|
||||
}
|
||||
@@ -3576,7 +3582,7 @@ void draw_object(Base *base)
|
||||
mymultmatrix(ob->obmat);
|
||||
|
||||
/* which wire color */
|
||||
if((G.f & G_PICKSEL) == 0) {
|
||||
if((flag & DRAW_CONSTCOLOR) == 0) {
|
||||
project_short(ob->obmat[3], &base->sx);
|
||||
|
||||
if((G.moving & G_TRANSFORM_OBJ) && (base->flag & (SELECT+BA_WAS_SEL))) BIF_ThemeColor(TH_TRANSFORM);
|
||||
@@ -3653,7 +3659,7 @@ void draw_object(Base *base)
|
||||
/* 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 (!(ob->dtx&OB_DRAWWIRE) && (ob->flag&SELECT) && !(G.f&G_PICKSEL)) {
|
||||
if (!(ob->dtx&OB_DRAWWIRE) && (ob->flag&SELECT) && !(flag&DRAW_PICKING)) {
|
||||
drawSolidSelect(base);
|
||||
}
|
||||
}
|
||||
@@ -3671,7 +3677,7 @@ void draw_object(Base *base)
|
||||
if(paf) {
|
||||
if(col || (ob->flag & SELECT)) cpack(0xFFFFFF); /* for visibility, also while wpaint */
|
||||
if(paf->flag & PAF_STATIC) draw_static_particle_system(ob, paf, dt);
|
||||
else if((G.f & G_PICKSEL) == 0) draw_particle_system(ob, paf); // selection errors happen to easy
|
||||
else if((flag & DRAW_PICKING) == 0) draw_particle_system(ob, paf); // selection errors happen to easy
|
||||
if(col) cpack(col);
|
||||
}
|
||||
}
|
||||
@@ -3792,14 +3798,14 @@ void draw_object(Base *base)
|
||||
empty_object= drawmball(ob, dt);
|
||||
break;
|
||||
case OB_EMPTY:
|
||||
drawaxes(1.0);
|
||||
drawaxes(1.0, flag);
|
||||
break;
|
||||
case OB_LAMP:
|
||||
drawlamp(ob);
|
||||
if(dtx || (base->flag & SELECT)) mymultmatrix(ob->obmat);
|
||||
break;
|
||||
case OB_CAMERA:
|
||||
drawcamera(ob);
|
||||
drawcamera(ob, flag);
|
||||
break;
|
||||
case OB_LATTICE:
|
||||
drawlattice(ob);
|
||||
@@ -3809,7 +3815,7 @@ void draw_object(Base *base)
|
||||
empty_object= draw_armature(base, dt);
|
||||
break;
|
||||
default:
|
||||
drawaxes(1.0);
|
||||
drawaxes(1.0, flag);
|
||||
}
|
||||
if(ob->pd && ob->pd->forcefield) draw_forcefield(ob);
|
||||
|
||||
@@ -3818,13 +3824,14 @@ void draw_object(Base *base)
|
||||
if(dtx) {
|
||||
if(G.f & G_SIMULATION);
|
||||
else if(dtx & OB_AXIS) {
|
||||
drawaxes(1.0f);
|
||||
drawaxes(1.0f, flag);
|
||||
}
|
||||
if(dtx & OB_BOUNDBOX) draw_bounding_volume(ob);
|
||||
if(dtx & OB_TEXSPACE) drawtexspace(ob);
|
||||
if(dtx & OB_DRAWNAME) {
|
||||
// patch for several 3d cards (IBM mostly) that crash on glSelect with text drawing
|
||||
if((G.f & G_PICKSEL) == 0) {
|
||||
/* patch for several 3d cards (IBM mostly) that crash on glSelect with text drawing */
|
||||
/* but, we also dont draw names for sets or duplicators */
|
||||
if(flag == 0) {
|
||||
glRasterPos3f(0.0, 0.0, 0.0);
|
||||
|
||||
BMF_DrawString(G.font, " ");
|
||||
@@ -3859,15 +3866,19 @@ void draw_object(Base *base)
|
||||
|
||||
/* object centers, need to be drawn in viewmat space for speed, but OK for picking select */
|
||||
if((G.f & (G_VERTEXPAINT|G_FACESELECT|G_TEXTUREPAINT|G_WEIGHTPAINT))==0) {
|
||||
/* we don't draw centers for duplicators and sets */
|
||||
if((flag & DRAW_CONSTCOLOR)==0) {
|
||||
if((G.scene->basact)==base)
|
||||
drawcentercircle(ob->obmat[3], ACTIVE, ob->id.lib || ob->id.us>1);
|
||||
else if(base->flag & SELECT)
|
||||
drawcentercircle(ob->obmat[3], SELECT, ob->id.lib || ob->id.us>1);
|
||||
else if(empty_object || (G.vd->flag & V3D_DRAW_CENTERS))
|
||||
drawcentercircle(ob->obmat[3], DESELECT, ob->id.lib || ob->id.us>1);
|
||||
}
|
||||
}
|
||||
|
||||
if((G.f & (G_PICKSEL))==0) {
|
||||
/* not for sets, duplicators or picking */
|
||||
if(flag==0) {
|
||||
ListBase *list;
|
||||
|
||||
/* draw hook center and offset line */
|
||||
@@ -3932,7 +3943,7 @@ void draw_object_ext(Base *base)
|
||||
if(G.vd->flag & V3D_CLIPPING)
|
||||
view3d_set_clipping(G.vd);
|
||||
|
||||
draw_object(base);
|
||||
draw_object(base, 0);
|
||||
|
||||
if(G.vd->flag & V3D_CLIPPING)
|
||||
view3d_clr_clipping();
|
||||
|
||||
@@ -2053,7 +2053,7 @@ void add_view3d_after(View3D *v3d, Base *base, int type)
|
||||
}
|
||||
|
||||
/* clears zbuffer and draws it over */
|
||||
static void view3d_draw_xray(View3D *v3d)
|
||||
static void view3d_draw_xray(View3D *v3d, int flag)
|
||||
{
|
||||
View3DAfter *v3da, *next;
|
||||
int doit= 0;
|
||||
@@ -2068,7 +2068,7 @@ static void view3d_draw_xray(View3D *v3d)
|
||||
for(v3da= v3d->afterdraw.first; v3da; v3da= next) {
|
||||
next= v3da->next;
|
||||
if(v3da->type==V3D_XRAY) {
|
||||
draw_object(v3da->base);
|
||||
draw_object(v3da->base, flag);
|
||||
BLI_remlink(&v3d->afterdraw, v3da);
|
||||
MEM_freeN(v3da);
|
||||
}
|
||||
@@ -2078,7 +2078,7 @@ static void view3d_draw_xray(View3D *v3d)
|
||||
}
|
||||
|
||||
/* disables write in zbuffer and draws it over */
|
||||
static void view3d_draw_transp(View3D *v3d)
|
||||
static void view3d_draw_transp(View3D *v3d, int flag)
|
||||
{
|
||||
View3DAfter *v3da, *next;
|
||||
|
||||
@@ -2088,7 +2088,7 @@ static void view3d_draw_transp(View3D *v3d)
|
||||
for(v3da= v3d->afterdraw.first; v3da; v3da= next) {
|
||||
next= v3da->next;
|
||||
if(v3da->type==V3D_TRANSP) {
|
||||
draw_object(v3da->base);
|
||||
draw_object(v3da->base, flag);
|
||||
BLI_remlink(&v3d->afterdraw, v3da);
|
||||
MEM_freeN(v3da);
|
||||
}
|
||||
@@ -2195,14 +2195,8 @@ void drawview3dspace(ScrArea *sa, void *spacedata)
|
||||
|
||||
object_handle_update(base->object);
|
||||
|
||||
/* patch: color remains constant, only set it for wire, so transparant works */
|
||||
if(v3d->zbuf==0 || base->object->dt<=OB_WIRE)
|
||||
G.f |= G_PICKSEL;
|
||||
else
|
||||
G.f &= ~G_PICKSEL;
|
||||
|
||||
BIF_ThemeColorBlend(TH_WIRE, TH_BACK, 0.6f);
|
||||
draw_object(base);
|
||||
draw_object(base, DRAW_CONSTCOLOR);
|
||||
|
||||
if(base->object->transflag & OB_DUPLI) {
|
||||
extern ListBase duplilist;
|
||||
@@ -2215,7 +2209,7 @@ void drawview3dspace(ScrArea *sa, void *spacedata)
|
||||
ob= duplilist.first;
|
||||
while(ob) {
|
||||
tbase.object= ob;
|
||||
draw_object(&tbase);
|
||||
draw_object(&tbase, DRAW_CONSTCOLOR);
|
||||
ob= ob->id.next;
|
||||
}
|
||||
free_duplilist();
|
||||
@@ -2224,12 +2218,10 @@ void drawview3dspace(ScrArea *sa, void *spacedata)
|
||||
}
|
||||
base= base->next;
|
||||
}
|
||||
|
||||
G.f &= ~G_PICKSEL;
|
||||
|
||||
/* Transp and X-ray afterdraw stuff */
|
||||
view3d_draw_xray(v3d); // clears zbuffer if it is used!
|
||||
view3d_draw_transp(v3d);
|
||||
view3d_draw_xray(v3d, DRAW_CONSTCOLOR); // clears zbuffer if it is used!
|
||||
view3d_draw_transp(v3d, DRAW_CONSTCOLOR);
|
||||
}
|
||||
|
||||
/* update all objects, ipos, matrices, displists, etc. Flags set by depgraph or manual, no layer check here, gets correct flushed */
|
||||
@@ -2246,8 +2238,6 @@ void drawview3dspace(ScrArea *sa, void *spacedata)
|
||||
extern ListBase duplilist;
|
||||
Base tbase;
|
||||
|
||||
/* patch: color remains constant */
|
||||
G.f |= G_PICKSEL;
|
||||
BIF_ThemeColorBlend(TH_BACK, TH_WIRE, 0.5);
|
||||
|
||||
tbase.flag= OB_FROMDUPLI;
|
||||
@@ -2256,15 +2246,13 @@ void drawview3dspace(ScrArea *sa, void *spacedata)
|
||||
ob= duplilist.first;
|
||||
while(ob) {
|
||||
tbase.object= ob;
|
||||
draw_object(&tbase);
|
||||
draw_object(&tbase, DRAW_CONSTCOLOR);
|
||||
ob= ob->id.next;
|
||||
}
|
||||
free_duplilist();
|
||||
|
||||
G.f &= ~G_PICKSEL;
|
||||
}
|
||||
if((base->flag & SELECT)==0) {
|
||||
if(base->object!=G.obedit) draw_object(base);
|
||||
if(base->object!=G.obedit) draw_object(base, 0);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -2272,7 +2260,7 @@ void drawview3dspace(ScrArea *sa, void *spacedata)
|
||||
for(base= G.scene->base.first; base; base= base->next) {
|
||||
if(v3d->lay & base->lay) {
|
||||
if (base->object==G.obedit || ( base->flag & SELECT) )
|
||||
draw_object(base);
|
||||
draw_object(base, 0);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2284,8 +2272,8 @@ void drawview3dspace(ScrArea *sa, void *spacedata)
|
||||
if(G.scene->radio) RAD_drawall(v3d->drawtype>=OB_SOLID);
|
||||
|
||||
/* Transp and X-ray afterdraw stuff */
|
||||
view3d_draw_xray(v3d); // clears zbuffer if it is used!
|
||||
view3d_draw_transp(v3d);
|
||||
view3d_draw_xray(v3d, 0); // clears zbuffer if it is used!
|
||||
view3d_draw_transp(v3d, 0);
|
||||
|
||||
if(v3d->flag & V3D_CLIPPING)
|
||||
view3d_clr_clipping();
|
||||
@@ -2402,14 +2390,8 @@ void drawview3d_render(struct View3D *v3d)
|
||||
else {
|
||||
where_is_object(base->object);
|
||||
|
||||
/* patch: color remains constant, only set it for wire, so transparant works */
|
||||
if(v3d->zbuf==0 || base->object->dt<=OB_WIRE)
|
||||
G.f |= G_PICKSEL;
|
||||
else
|
||||
G.f &= ~G_PICKSEL;
|
||||
|
||||
BIF_ThemeColorBlend(TH_WIRE, TH_BACK, 0.6f);
|
||||
draw_object(base);
|
||||
draw_object(base, DRAW_CONSTCOLOR);
|
||||
|
||||
if(base->object->transflag & OB_DUPLI) {
|
||||
extern ListBase duplilist;
|
||||
@@ -2420,7 +2402,7 @@ void drawview3d_render(struct View3D *v3d)
|
||||
ob= duplilist.first;
|
||||
while(ob) {
|
||||
tbase.object= ob;
|
||||
draw_object(&tbase);
|
||||
draw_object(&tbase, DRAW_CONSTCOLOR);
|
||||
ob= ob->id.next;
|
||||
}
|
||||
free_duplilist();
|
||||
@@ -2431,10 +2413,8 @@ void drawview3d_render(struct View3D *v3d)
|
||||
}
|
||||
|
||||
/* Transp and X-ray afterdraw stuff */
|
||||
view3d_draw_xray(v3d); // clears zbuffer if it is used!
|
||||
view3d_draw_transp(v3d);
|
||||
|
||||
G.f &= ~G_PICKSEL;
|
||||
view3d_draw_xray(v3d, DRAW_CONSTCOLOR); // clears zbuffer if it is used!
|
||||
view3d_draw_transp(v3d, DRAW_CONSTCOLOR);
|
||||
}
|
||||
|
||||
/* first not selected and duplis */
|
||||
@@ -2449,11 +2429,8 @@ void drawview3d_render(struct View3D *v3d)
|
||||
extern ListBase duplilist;
|
||||
Base tbase;
|
||||
|
||||
/* always draw original first because of make_displist */
|
||||
draw_object(base);
|
||||
draw_object(base, 0);
|
||||
|
||||
/* patch: color remains constant */
|
||||
G.f |= G_PICKSEL;
|
||||
BIF_ThemeColorBlend(TH_WIRE, TH_BACK, 0.5f);
|
||||
|
||||
tbase.flag= OB_FROMDUPLI;
|
||||
@@ -2461,15 +2438,13 @@ void drawview3d_render(struct View3D *v3d)
|
||||
ob= duplilist.first;
|
||||
while(ob) {
|
||||
tbase.object= ob;
|
||||
draw_object(&tbase);
|
||||
draw_object(&tbase, DRAW_CONSTCOLOR);
|
||||
ob= ob->id.next;
|
||||
}
|
||||
free_duplilist();
|
||||
|
||||
G.f &= ~G_PICKSEL;
|
||||
}
|
||||
else if((base->flag & SELECT)==0) {
|
||||
draw_object(base);
|
||||
draw_object(base, 0);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -2483,7 +2458,7 @@ void drawview3d_render(struct View3D *v3d)
|
||||
|
||||
if ( ((base)->flag & SELECT) && ((base)->lay & v3d->lay) ) {
|
||||
if ELEM3(base->object->type, OB_LAMP, OB_CAMERA, OB_LATTICE);
|
||||
else draw_object(base);
|
||||
else draw_object(base, 0);
|
||||
}
|
||||
|
||||
base= base->next;
|
||||
@@ -2492,8 +2467,8 @@ void drawview3d_render(struct View3D *v3d)
|
||||
if(G.scene->radio) RAD_drawall(v3d->drawtype>=OB_SOLID);
|
||||
|
||||
/* Transp and X-ray afterdraw stuff */
|
||||
view3d_draw_xray(v3d); // clears zbuffer if it is used!
|
||||
view3d_draw_transp(v3d);
|
||||
view3d_draw_xray(v3d, 0); // clears zbuffer if it is used!
|
||||
view3d_draw_transp(v3d, 0);
|
||||
|
||||
if(v3d->flag & V3D_CLIPPING)
|
||||
view3d_clr_clipping();
|
||||
|
||||
@@ -998,10 +998,10 @@ short view3d_opengl_select(unsigned int *buffer, unsigned int bufsize, short x1
|
||||
code= 1;
|
||||
|
||||
if(G.obedit && G.obedit->type==OB_MBALL) {
|
||||
draw_object(BASACT);
|
||||
draw_object(BASACT, DRAW_PICKING|DRAW_CONSTCOLOR);
|
||||
}
|
||||
else if ((G.obedit && G.obedit->type==OB_ARMATURE)) {
|
||||
draw_object(BASACT);
|
||||
draw_object(BASACT, DRAW_PICKING|DRAW_CONSTCOLOR);
|
||||
}
|
||||
else {
|
||||
Base *base;
|
||||
@@ -1011,7 +1011,7 @@ short view3d_opengl_select(unsigned int *buffer, unsigned int bufsize, short x1
|
||||
if(base->lay & G.vd->lay) {
|
||||
base->selcol= code;
|
||||
glLoadName(code);
|
||||
draw_object(base);
|
||||
draw_object(base, DRAW_PICKING|DRAW_CONSTCOLOR);
|
||||
code++;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user