- Dupliframes mball didn't work anymore (should be added to scene_update)

- restored nicer drawing for duplicator wireframe. Draws before selected,
  so you can see the duplicated object better
This commit is contained in:
Ton Roosendaal
2005-07-25 21:38:13 +00:00
parent 3dcc653365
commit e8347e8b28
2 changed files with 7 additions and 46 deletions

View File

@@ -1461,6 +1461,9 @@ void DAG_scene_update_flags(Scene *sce, unsigned int lay)
lt= ob->data;
if(lt->key) ob->recalc |= OB_RECALC_DATA;
break;
case OB_MBALL:
if(ob->transflag & OB_DUPLI) ob->recalc |= OB_RECALC_DATA;
break;
}
}
}

View File

@@ -2006,22 +2006,17 @@ void drawview3dspace(ScrArea *sa, void *spacedata)
}
/* then draw not selected and the duplis, but skip editmode object */
base= G.scene->base.first;
while(base) {
for(base= G.scene->base.first; base; base= base->next) {
if(v3d->lay & base->lay) {
/* dupli drawing temporal off here */
if(FALSE && base->object->transflag & OB_DUPLI) {
if(base->object->transflag & OB_DUPLI) {
extern ListBase duplilist;
Base tbase;
/* draw original always first because of make_displist */
draw_object(base);
/* patch: color remains constant */
G.f |= G_PICKSEL;
cpack(0x404040);
BIF_ThemeColorBlend(TH_BACK, TH_WIRE, 0.5);
tbase.flag= OB_FROMDUPLI;
make_duplilist(G.scene, base->object);
@@ -2039,21 +2034,14 @@ void drawview3dspace(ScrArea *sa, void *spacedata)
else if((base->flag & SELECT)==0) {
if(base->object!=G.obedit) draw_object(base);
}
}
base= base->next;
}
/* draw selected and editmode */
base= G.scene->base.first;
while(base) {
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);
}
base= base->next;
}
if(G.moving) {
@@ -2061,36 +2049,6 @@ void drawview3dspace(ScrArea *sa, void *spacedata)
if(G.obedit) BIF_drawPropCircle(); // only editmode has proportional edit
}
/* duplis, draw as last to make sure the displists are ok */
base= G.scene->base.first;
while(base) {
if(v3d->lay & base->lay) {
if(base->object->transflag & OB_DUPLI) {
extern ListBase duplilist;
Base tbase;
/* patch: color remains constant */
G.f |= G_PICKSEL;
cpack(0x404040);
tbase.flag= OB_FROMDUPLI;
make_duplilist(G.scene, base->object);
ob= duplilist.first;
while(ob) {
tbase.object= ob;
draw_object(&tbase);
ob= ob->id.next;
}
free_duplilist();
G.f &= ~G_PICKSEL;
}
}
base= base->next;
}
if(G.scene->radio) RAD_drawall(v3d->drawtype>=OB_SOLID);
/* Transp and X-ray afterdraw stuff */