From 4861dbbe502e08aeb18cfaf9d0371d4dd63be44c Mon Sep 17 00:00:00 2001 From: Ton Roosendaal Date: Thu, 17 Jun 2004 18:31:42 +0000 Subject: [PATCH] Scene.c: added missing code to copy base to object flag Drawobject.c: added wireframe outline for selected solid objects. needs some feedback though, at my system it is quite slow. --- source/blender/blenkernel/intern/scene.c | 3 ++ source/blender/src/drawobject.c | 42 ++++++++++++++++++++++++ 2 files changed, 45 insertions(+) diff --git a/source/blender/blenkernel/intern/scene.c b/source/blender/blenkernel/intern/scene.c index 8b21e6b5e78..34d6ea65a92 100644 --- a/source/blender/blenkernel/intern/scene.c +++ b/source/blender/blenkernel/intern/scene.c @@ -393,10 +393,13 @@ void set_scene_bg(Scene *sce) base->object->lay= base->lay; + /* group patch... */ base->flag &= ~OB_FROMGROUP; flag= base->object->flag & OB_FROMGROUP; base->flag |= flag; + base->object->flag= base->flag; + base->object->ctime= -1234567.0; /* force ipo to be calculated later */ base= base->next; } diff --git a/source/blender/src/drawobject.c b/source/blender/src/drawobject.c index dc22eda64bc..2a5abe03023 100644 --- a/source/blender/src/drawobject.c +++ b/source/blender/src/drawobject.c @@ -3339,6 +3339,45 @@ static int ob_from_decimator(Object *ob) return 0; } +/* draws wire outline */ +static void drawSolidSelect(Object *ob, ListBase *lb) +{ + + if(ob->flag & SELECT) { + if(ob==OBACT) BIF_ThemeColor(TH_ACTIVE); + else BIF_ThemeColor(TH_SELECT); + } + else return; //BIF_ThemeColor(TH_WIRE); + + glLineWidth(2.0); + glDepthMask(0); + + if(ob->type==OB_MESH) drawmeshwire(ob); + else drawDispListwire(lb); + + glLineWidth(1.0); + glDepthMask(1); +} + +static void draw_solid_select(Object *ob) +{ + Curve *cu; + + switch(ob->type) { + case OB_MESH: + drawSolidSelect(ob, NULL); + break; + case OB_CURVE: + case OB_SURF: + cu= ob->data; + if(boundbox_clip(ob->obmat, cu->bb)) drawSolidSelect(ob, &cu->disp); + break; + case OB_MBALL: + drawSolidSelect(ob, &ob->disp); + break; + } +} + static void drawWireExtra(Object *ob, ListBase *lb) { @@ -3572,6 +3611,9 @@ void draw_object(Base *base) } } else { + + /* draw outline for selected solid objects */ + if(dt>OB_WIRE && ob!=G.obedit && (G.f & G_BACKBUFSEL)==0) draw_solid_select(ob); switch( ob->type) {