diff options
author | Daniel Dunbar <daniel@zuster.org> | 2005-07-17 07:48:29 +0400 |
---|---|---|
committer | Daniel Dunbar <daniel@zuster.org> | 2005-07-17 07:48:29 +0400 |
commit | 80327e675addf423a2db9cb80768c7e327834d04 (patch) | |
tree | 4c1619174cbb37af2956604adf88b75baabc054a /source/blender/src/drawobject.c | |
parent | b3169b22b8fd503fdddbd41c0aa76d2e590f8eeb (diff) |
- converted draw_tfaces3d and bbs_mesh_solid to use
mesh_get_derived_deform... (whats that? more general AND it uses less
lines? how can that be!!!)
Diffstat (limited to 'source/blender/src/drawobject.c')
-rw-r--r-- | source/blender/src/drawobject.c | 55 |
1 files changed, 22 insertions, 33 deletions
diff --git a/source/blender/src/drawobject.c b/source/blender/src/drawobject.c index 5a38e707864..dc43e14fa12 100644 --- a/source/blender/src/drawobject.c +++ b/source/blender/src/drawobject.c @@ -4006,50 +4006,39 @@ static int bbs_mesh_solid(Object *ob, DerivedMesh *dm, int facecol) } else { Mesh *me= ob->data; - MVert *mvert; MFace *mface; TFace *tface; - DispList *dl; - float *extverts=NULL; - int a, totface, hastface; + float co[3]; + int a, dmNeedsFree; + DerivedMesh *dm = mesh_get_derived_deform(ob, &dmNeedsFree); - mvert= me->mvert; mface= me->mface; tface= me->tface; - hastface = (me->tface != NULL); - totface= me->totface; - dl= find_displist(&ob->disp, DL_VERTS); - if(dl) extverts= dl->verts; - - glBegin(GL_QUADS); - glmode= GL_QUADS; - - for(a=0; a<totface; a++, mface++, tface++) { - if(mface->v3) { - if(facecol) { - if(hastface && tface->flag & TF_HIDE) continue; - set_framebuffer_index_color(a+1); - } + glBegin(glmode=GL_QUADS); + for(a=0; a<me->totface; a++, mface++, tface++) { + if(mface->v3 && (!me->tface || !(tface->flag&TF_HIDE))) { + int newmode = mface->v4?GL_QUADS:GL_TRIANGLES; - if(mface->v4) {if(glmode==GL_TRIANGLES) {glmode= GL_QUADS; glEnd(); glBegin(GL_QUADS);}} - else {if(glmode==GL_QUADS) {glmode= GL_TRIANGLES; glEnd(); glBegin(GL_TRIANGLES);}} - - if(extverts) { - glVertex3fv( extverts+3*mface->v1 ); - glVertex3fv( extverts+3*mface->v2 ); - glVertex3fv( extverts+3*mface->v3 ); - if(mface->v4) glVertex3fv( extverts+3*mface->v4 ); - } - else { - glVertex3fv( (mvert+mface->v1)->co ); - glVertex3fv( (mvert+mface->v2)->co ); - glVertex3fv( (mvert+mface->v3)->co ); - if(mface->v4) glVertex3fv( (mvert+mface->v4)->co ); + set_framebuffer_index_color(a+1); + + if (newmode!=glmode) { + glEnd(); + glBegin(glmode=newmode); } + + glVertex3fv( (dm->getVertCo(dm, mface->v1, co),co) ); + glVertex3fv( (dm->getVertCo(dm, mface->v2, co),co) ); + glVertex3fv( (dm->getVertCo(dm, mface->v3, co),co) ); + if(mface->v4) glVertex3fv( (dm->getVertCo(dm, mface->v4, co),co) ); } } glEnd(); + + if (dmNeedsFree) { + dm->release(dm); + } + return 1; } } |