From cee677699fb14a4fada8aa510291af6c01c093db Mon Sep 17 00:00:00 2001 From: Ton Roosendaal Date: Mon, 30 Jun 2003 19:51:18 +0000 Subject: [PATCH] - added a call calc_meshverts_ext_f2(void) which: - projects vertices without clipping code (xs at 3200) - sets flag in editvert ( eve->f & 2) when it is not visible general note: that flag is only valid after the calc_meshverts_ext_f2 call. it is a free flag. be aware that selection is stored in bit 1 (eve->f & 1) --- source/blender/include/BDR_drawobject.h | 1 + source/blender/src/drawobject.c | 36 +++++++++++++++++++++++++ 2 files changed, 37 insertions(+) diff --git a/source/blender/include/BDR_drawobject.h b/source/blender/include/BDR_drawobject.h index ddc694609fa..f12474eb299 100644 --- a/source/blender/include/BDR_drawobject.h +++ b/source/blender/include/BDR_drawobject.h @@ -52,6 +52,7 @@ void drawcamera(struct Object *ob); void calc_lattverts_ext(void); void calc_meshverts(void); void calc_meshverts_ext(void); +void calc_meshverts_ext_f2(void); void calc_nurbverts_ext(void); void tekenvertices(short sel); void tekenvertices_ext(int mode); diff --git a/source/blender/src/drawobject.c b/source/blender/src/drawobject.c index 413736cd1b8..a866e6cfa69 100644 --- a/source/blender/src/drawobject.c +++ b/source/blender/src/drawobject.c @@ -916,6 +916,7 @@ static void drawlattice(Object *ob) /* ***************** ******************** */ +/* window coord, assuming all matrices are set OK */ void calc_meshverts(void) { EditVert *eve; @@ -937,6 +938,7 @@ void calc_meshverts(void) MTC_Mat4SwapMat4(G.vd->persmat, mat); } +/* window coord for current window, sets matrices temporal */ void calc_meshverts_ext(void) { @@ -947,6 +949,40 @@ void calc_meshverts_ext(void) } +/* window coord for current window, sets matrices temporal, sets (eve->f & 2) when not visible */ +void calc_meshverts_ext_f2(void) +{ + EditVert *eve; + float mat[4][4]; + + /* matrices */ + areawinset(curarea->win); + mymultmatrix(G.obedit->obmat); + + if(G.edve.first==0) return; + eve= G.edve.first; + + MTC_Mat4SwapMat4(G.vd->persmat, mat); + mygetsingmatrix(G.vd->persmat); + + eve= G.edve.first; + while(eve) { + eve->f &= ~2; + if(eve->h==0) { + project_short_noclip(eve->co, &(eve->xs)); + if( eve->xs >= 0 && eve->ys >= 0 && eve->xswinx && eve->yswiny); + else eve->f |= 2; + } + eve= eve->next; + } + + /* restore */ + MTC_Mat4SwapMat4(G.vd->persmat, mat); + myloadmatrix(G.vd->viewmat); + +} + + static void calc_Nurbverts(Nurb *nurb) { Nurb *nu;