forked from bartvdbraak/blender
Evil commit! Nothing really changed except;
- EditVlak -> EditFace - variables called 'evl' -> 'efa' - functions with 'vlak' in it now have 'face' Just thought was nice starter for editmesh recode...
This commit is contained in:
parent
a2ea84903e
commit
131e5908a6
@ -113,7 +113,7 @@ DispListMesh *displistmesh_from_editmesh(EditMesh *em)
|
||||
DispListMesh *dlm= MEM_callocN(sizeof(*dlm),"dlm");
|
||||
EditVert *eve, *evePrev;
|
||||
EditEdge *eed;
|
||||
EditVlak *evl;
|
||||
EditFace *evl;
|
||||
MFace *mfNew;
|
||||
int i;
|
||||
|
||||
@ -1457,7 +1457,7 @@ static void curve_to_displist(ListBase *nubase, ListBase *dispbase)
|
||||
static void filldisplist(ListBase *dispbase, ListBase *to)
|
||||
{
|
||||
EditVert *eve, *v1, *vlast;
|
||||
EditVlak *evl;
|
||||
EditFace *evl;
|
||||
DispList *dlnew=0, *dl;
|
||||
float *f1;
|
||||
int colnr=0, cont=1, tot, a, *index;
|
||||
@ -1519,9 +1519,9 @@ static void filldisplist(ListBase *dispbase, ListBase *to)
|
||||
|
||||
if(totvert && BLI_edgefill(0)!=0) {
|
||||
|
||||
/* count faces (vlak in dutch!) */
|
||||
/* count faces */
|
||||
tot= 0;
|
||||
evl= fillvlakbase.first;
|
||||
evl= fillfacebase.first;
|
||||
while(evl) {
|
||||
tot++;
|
||||
evl= evl->next;
|
||||
@ -1553,7 +1553,7 @@ static void filldisplist(ListBase *dispbase, ListBase *to)
|
||||
}
|
||||
|
||||
/* index data */
|
||||
evl= fillvlakbase.first;
|
||||
evl= fillfacebase.first;
|
||||
index= dlnew->index;
|
||||
while(evl) {
|
||||
index[0]= (long)evl->v1->vn;
|
||||
|
@ -1942,7 +1942,7 @@ static void displist_to_mesh(DispList *dlfirst)
|
||||
MVert *mvert;
|
||||
MFace *mface;
|
||||
float *data, vec[3], min[3], max[3];
|
||||
int a, b, startve, *idata, totedge=0, tottria=0, totquad=0, totvert=0, totvlak, totcol=0, colnr;
|
||||
int a, b, startve, *idata, totedge=0, tottria=0, totquad=0, totvert=0, totface, totcol=0, colnr;
|
||||
int p1, p2, p3, p4;
|
||||
|
||||
/* count first */
|
||||
@ -2096,14 +2096,14 @@ static void displist_to_mesh(DispList *dlfirst)
|
||||
}
|
||||
}
|
||||
|
||||
totvlak= totquad+tottria+totedge;
|
||||
totface= totquad+tottria+totedge;
|
||||
|
||||
printf("Import: %d vertices %d faces\n", totvert, totvlak);
|
||||
printf("Import: %d vertices %d faces\n", totvert, totface);
|
||||
|
||||
if(totvert) me->mvert= MEM_callocN(totvert*sizeof(MVert), "mvert");
|
||||
if(totvlak) me->mface= MEM_callocN(totvlak*sizeof(MFace), "mface");
|
||||
if(totface) me->mface= MEM_callocN(totface*sizeof(MFace), "mface");
|
||||
me->totvert= totvert;
|
||||
me->totface= totvlak;
|
||||
me->totface= totface;
|
||||
|
||||
mvert= me->mvert;
|
||||
mface= me->mface;
|
||||
@ -2682,7 +2682,7 @@ static void write_videoscape_mesh(Object *ob, char *str)
|
||||
MFace *mface;
|
||||
FILE *fp;
|
||||
EditVert *eve;
|
||||
EditVlak *evl;
|
||||
EditFace *evl;
|
||||
unsigned int kleur[32];
|
||||
float co[3];
|
||||
int a;
|
||||
|
@ -206,7 +206,7 @@ struct _HyperFace {
|
||||
/* for getting back tface, matnr, etc */
|
||||
union {
|
||||
int ind;
|
||||
EditVlak *ef;
|
||||
EditFace *ef;
|
||||
} orig;
|
||||
};
|
||||
|
||||
@ -423,7 +423,7 @@ static HyperMesh *hypermesh_from_editmesh(EditMesh *em, int subdivLevels) {
|
||||
HyperMesh *hme= hypermesh_new();
|
||||
EditVert *ev, *prevev;
|
||||
EditEdge *ee;
|
||||
EditVlak *ef;
|
||||
EditFace *ef;
|
||||
float creasefac= (float)subdivLevels;
|
||||
int flag;
|
||||
|
||||
@ -1021,7 +1021,7 @@ static DispListMesh *hypermesh_to_displistmesh(HyperMesh *hme, short flag) {
|
||||
mf->flag= origmf->flag;
|
||||
mf->puno= 0;
|
||||
} else {
|
||||
EditVlak *origef= f->orig.ef;
|
||||
EditFace *origef= f->orig.ef;
|
||||
|
||||
mf->mat_nr= origef->mat_nr;
|
||||
mf->flag= origef->flag;
|
||||
|
@ -65,11 +65,11 @@
|
||||
#ifndef BLI_BLENLIB_H
|
||||
#define BLI_BLENLIB_H
|
||||
|
||||
#include "DNA_listBase.h" /* braindamage for the masses... needed
|
||||
because fillvlakbase and fillvertbase are
|
||||
used outside */
|
||||
/* braindamage for the masses... needed
|
||||
because fillfacebase and fillvertbase are used outside */
|
||||
#include "DNA_listBase.h"
|
||||
|
||||
extern ListBase fillvlakbase;
|
||||
extern ListBase fillfacebase;
|
||||
extern ListBase fillvertbase;
|
||||
/**
|
||||
* @attention Defined in scanfill.c
|
||||
|
@ -63,16 +63,16 @@ typedef struct EditEdge
|
||||
float crease;
|
||||
} EditEdge;
|
||||
|
||||
typedef struct EditVlak
|
||||
typedef struct EditFace
|
||||
{
|
||||
struct EditVlak *next, *prev;
|
||||
struct EditFace *next, *prev;
|
||||
struct EditVert *v1, *v2, *v3, *v4;
|
||||
struct EditEdge *e1, *e2, *e3, *e4;
|
||||
float n[3];
|
||||
struct TFace tf; /* a copy of original tface. */
|
||||
unsigned char mat_nr, flag;
|
||||
unsigned char f, f1;
|
||||
} EditVlak;
|
||||
} EditFace;
|
||||
|
||||
typedef struct EditMesh
|
||||
{
|
||||
|
@ -115,7 +115,7 @@ typedef struct ScFillVert {
|
||||
int vergscdata(const void *a1, const void *a2);
|
||||
int vergpoly(const void *a1, const void *a2);
|
||||
void *new_mem_element(int size);
|
||||
void addfillvlak(EditVert *v1, EditVert *v2, EditVert *v3);
|
||||
void addfillface(EditVert *v1, EditVert *v2, EditVert *v3);
|
||||
int boundinside(PolyFill *pf1, PolyFill *pf2);
|
||||
int boundisect(PolyFill *pf2, PolyFill *pf1);
|
||||
void mergepolysSimp(PolyFill *pf1, PolyFill *pf2) /* pf2 added to pf1 */;
|
||||
@ -137,7 +137,7 @@ ScFillVert *scdata;
|
||||
|
||||
ListBase fillvertbase = {0,0};
|
||||
ListBase filledgebase = {0,0};
|
||||
ListBase fillvlakbase = {0,0};
|
||||
ListBase fillfacebase = {0,0};
|
||||
|
||||
short cox, coy;
|
||||
|
||||
@ -227,7 +227,7 @@ void BLI_end_edgefill(void)
|
||||
|
||||
fillvertbase.first= fillvertbase.last= 0;
|
||||
filledgebase.first= filledgebase.last= 0;
|
||||
fillvlakbase.first= fillvlakbase.last= 0;
|
||||
fillfacebase.first= fillfacebase.last= 0;
|
||||
}
|
||||
|
||||
/* **** FILL ROUTINES *************************** */
|
||||
@ -262,13 +262,13 @@ EditEdge *BLI_addfilledge(EditVert *v1, EditVert *v2)
|
||||
return newed;
|
||||
}
|
||||
|
||||
void addfillvlak(EditVert *v1, EditVert *v2, EditVert *v3)
|
||||
void addfillface(EditVert *v1, EditVert *v2, EditVert *v3)
|
||||
{
|
||||
/* does not make edges */
|
||||
EditVlak *evl;
|
||||
EditFace *evl;
|
||||
|
||||
evl= new_mem_element(sizeof(EditVlak));
|
||||
BLI_addtail(&fillvlakbase, evl);
|
||||
evl= new_mem_element(sizeof(EditFace));
|
||||
BLI_addtail(&fillfacebase, evl);
|
||||
|
||||
evl->v1= v1;
|
||||
evl->v2= v2;
|
||||
@ -596,7 +596,7 @@ void scanfill(PolyFill *pf)
|
||||
EditVert *eve,*v1,*v2,*v3;
|
||||
EditEdge *eed,*nexted,*ed1,*ed2,*ed3;
|
||||
float miny = 0.0;
|
||||
int a,b,verts, maxvlak, totvlak; /* vlak = face in dutch! */
|
||||
int a,b,verts, maxface, totface;
|
||||
short nr, test, twoconnected=0;
|
||||
|
||||
nr= pf->nr;
|
||||
@ -695,8 +695,8 @@ void scanfill(PolyFill *pf)
|
||||
if(pf->f==0) twoconnected= 1;
|
||||
|
||||
/* (temporal) security: never much more faces than vertices */
|
||||
totvlak= 0;
|
||||
maxvlak= 2*verts; /* 2*verts: based at a filled circle within a triangle */
|
||||
totface= 0;
|
||||
maxface= 2*verts; /* 2*verts: based at a filled circle within a triangle */
|
||||
|
||||
sc= scdata;
|
||||
for(a=0;a<verts;a++) {
|
||||
@ -719,7 +719,7 @@ void scanfill(PolyFill *pf)
|
||||
ed2= ed1->next;
|
||||
|
||||
if(callLocalInterruptCallBack()) break;
|
||||
if(totvlak>maxvlak) {
|
||||
if(totface>maxface) {
|
||||
/* printf("Fill error: endless loop. Escaped at vert %d, tot: %d.\n", a, verts); */
|
||||
a= verts;
|
||||
break;
|
||||
@ -774,8 +774,8 @@ void scanfill(PolyFill *pf)
|
||||
else {
|
||||
/* new triangle */
|
||||
/* printf("add face %x %x %x\n",v1,v2,v3); */
|
||||
addfillvlak(v1, v2, v3);
|
||||
totvlak++;
|
||||
addfillface(v1, v2, v3);
|
||||
totface++;
|
||||
BLI_remlink((ListBase *)&(sc->first),ed1);
|
||||
BLI_addtail(&filledgebase,ed1);
|
||||
ed1->v2->f= 0;
|
||||
@ -1128,107 +1128,9 @@ int BLI_edgefill(int mode) /* THE MAIN FILL ROUTINE */
|
||||
addlisttolist(&fillvertbase,&tempve);
|
||||
addlisttolist(&filledgebase,&temped);
|
||||
|
||||
/* evl= fillvlakbase.first;
|
||||
while(evl) {
|
||||
printf("new face %x %x %x\n",evl->v1,evl->v2,evl->v3);
|
||||
evl= evl->next;
|
||||
}*/
|
||||
|
||||
|
||||
/* FREE */
|
||||
|
||||
MEM_freeN(pflist);
|
||||
return 1;
|
||||
|
||||
}
|
||||
|
||||
/*
|
||||
MOVED TO EDITMESH.C since it's really bad to leave it here
|
||||
|
||||
void fill_mesh(void)
|
||||
{
|
||||
EditMesh *em = G.editMesh;
|
||||
EditVert *eve,*v1;
|
||||
EditEdge *eed,*e1,*nexted;
|
||||
EditVlak *evl,*nextvl;
|
||||
short ok;
|
||||
|
||||
if(G.obedit==0 || (G.obedit->type!=OB_MESH)) return;
|
||||
|
||||
waitcursor(1);
|
||||
|
||||
/ * alle selected vertices kopieeren * /
|
||||
eve= em->verts.first;
|
||||
while(eve) {
|
||||
if(eve->f & 1) {
|
||||
v1= addfillvert(eve->co);
|
||||
eve->vn= v1;
|
||||
v1->vn= eve;
|
||||
v1->h= 0;
|
||||
}
|
||||
eve= eve->next;
|
||||
}
|
||||
/ * alle selected edges kopieeren * /
|
||||
eed= em->edges.first;
|
||||
while(eed) {
|
||||
if( (eed->v1->f & 1) && (eed->v2->f & 1) ) {
|
||||
e1= addfilledge(eed->v1->vn, eed->v2->vn);
|
||||
e1->v1->h++;
|
||||
e1->v2->h++;
|
||||
}
|
||||
eed= eed->next;
|
||||
}
|
||||
/ * van alle selected vlakken vertices en edges verwijderen om dubbels te voorkomen * /
|
||||
/ * alle edges tellen punten op, vlakken trekken af,
|
||||
edges met vertices ->h<2 verwijderen * /
|
||||
evl= em->faces.first;
|
||||
ok= 0;
|
||||
while(evl) {
|
||||
nextvl= evl->next;
|
||||
if( vlakselectedAND(evl, 1) ) {
|
||||
evl->v1->vn->h--;
|
||||
evl->v2->vn->h--;
|
||||
evl->v3->vn->h--;
|
||||
if(evl->v4) evl->v4->vn->h--;
|
||||
ok= 1;
|
||||
|
||||
}
|
||||
evl= nextvl;
|
||||
}
|
||||
if(ok) { / * er zijn vlakken geselecteerd * /
|
||||
eed= filledgebase.first;
|
||||
while(eed) {
|
||||
nexted= eed->next;
|
||||
if(eed->v1->h<2 || eed->v2->h<2) {
|
||||
remlink(&filledgebase,eed);
|
||||
}
|
||||
eed= nexted;
|
||||
}
|
||||
}
|
||||
|
||||
/ * tijd=clock(); * /
|
||||
|
||||
ok= edgefill(0);
|
||||
|
||||
/ * printf("time: %d\n",(clock()-tijd)/1000); * /
|
||||
|
||||
if(ok) {
|
||||
evl= fillvlakbase.first;
|
||||
while(evl) {
|
||||
addvlaklist(evl->v1->vn, evl->v2->vn, evl->v3->vn, 0, evl);
|
||||
evl= evl->next;
|
||||
}
|
||||
}
|
||||
/ * else printf("fill error\n"); * /
|
||||
|
||||
end_edgefill();
|
||||
|
||||
waitcursor(0);
|
||||
|
||||
countall();
|
||||
allqueue(REDRAWVIEW3D, 0);
|
||||
}
|
||||
|
||||
MOVED TO editmesh.c !!!!! (you bastards!)
|
||||
|
||||
*/
|
||||
|
@ -33,7 +33,7 @@
|
||||
#ifndef BIF_EDITMESH_H
|
||||
#define BIF_EDITMESH_H
|
||||
|
||||
struct EditVlak;
|
||||
struct EditFace;
|
||||
struct EditEdge;
|
||||
struct EditVert;
|
||||
struct Mesh;
|
||||
@ -82,12 +82,12 @@ void editmesh_align_view_to_selected(struct View3D *v3d, int axis);
|
||||
|
||||
struct EditVert *addvertlist(float *vec);
|
||||
struct EditEdge *addedgelist(struct EditVert *v1, struct EditVert *v2, struct EditEdge *example);
|
||||
struct EditVlak *addvlaklist(struct EditVert *v1, struct EditVert *v2, struct EditVert *v3, struct EditVert *v4, struct EditVlak *example);
|
||||
struct EditFace *addfacelist(struct EditVert *v1, struct EditVert *v2, struct EditVert *v3, struct EditVert *v4, struct EditFace *example);
|
||||
struct EditEdge *findedgelist(struct EditVert *v1, struct EditVert *v2);
|
||||
|
||||
void remedge(struct EditEdge *eed);
|
||||
|
||||
int vlakselectedAND(struct EditVlak *evl, int flag);
|
||||
int faceselectedAND(struct EditFace *efa, int flag);
|
||||
|
||||
void recalc_editnormals(void);
|
||||
void flip_editnormals(void);
|
||||
@ -135,7 +135,7 @@ void spin_mesh(int steps,int degr,float *dvec, int mode);
|
||||
void screw_mesh(int steps,int turns);
|
||||
void selectswap_mesh(void);
|
||||
void addvert_mesh(void);
|
||||
void addedgevlak_mesh(void);
|
||||
void addedgeface_mesh(void);
|
||||
void delete_mesh(void);
|
||||
void add_primitiveMesh(int type);
|
||||
void hide_mesh(int swap);
|
||||
|
@ -34,7 +34,7 @@
|
||||
#define BSE_TRANS_TYPES_H
|
||||
|
||||
struct Object;
|
||||
/* struct EditVlak; */
|
||||
/* struct EditFace; */
|
||||
/* struct EditEdge; */
|
||||
/* struct EditVert; */
|
||||
/* struct ListBase; */
|
||||
|
@ -56,7 +56,7 @@ struct BezTriple;
|
||||
|
||||
struct Nurb;
|
||||
|
||||
struct EditVlak;
|
||||
struct EditFace;
|
||||
struct EditVert;
|
||||
struct EditEdge;
|
||||
struct EditIpo;
|
||||
|
@ -388,7 +388,7 @@ static void decimate_apply(void)
|
||||
void do_common_editbuts(unsigned short event) // old name, is a mix of object and editing events....
|
||||
{
|
||||
EditMesh *em = G.editMesh;
|
||||
EditVlak *evl;
|
||||
EditFace *efa;
|
||||
Base *base;
|
||||
Object *ob;
|
||||
Mesh *me;
|
||||
@ -404,16 +404,16 @@ void do_common_editbuts(unsigned short event) // old name, is a mix of object an
|
||||
case B_MATWICH:
|
||||
if(G.obedit && G.obedit->actcol>0) {
|
||||
if(G.obedit->type == OB_MESH) {
|
||||
evl= em->faces.first;
|
||||
while(evl) {
|
||||
if( vlakselectedAND(evl, 1) ) {
|
||||
if(index== -1) index= evl->mat_nr;
|
||||
else if(index!=evl->mat_nr) {
|
||||
efa= em->faces.first;
|
||||
while(efa) {
|
||||
if( faceselectedAND(efa, 1) ) {
|
||||
if(index== -1) index= efa->mat_nr;
|
||||
else if(index!=efa->mat_nr) {
|
||||
error("Mixed colors");
|
||||
return;
|
||||
}
|
||||
}
|
||||
evl= evl->next;
|
||||
efa= efa->next;
|
||||
}
|
||||
}
|
||||
else if ELEM(G.obedit->type, OB_CURVE, OB_SURF) {
|
||||
@ -449,11 +449,11 @@ void do_common_editbuts(unsigned short event) // old name, is a mix of object an
|
||||
if(G.obedit && G.obedit->actcol>0) {
|
||||
if(G.obedit->type == OB_MESH) {
|
||||
undo_push_mesh("Assign material index");
|
||||
evl= em->faces.first;
|
||||
while(evl) {
|
||||
if( vlakselectedAND(evl, 1) )
|
||||
evl->mat_nr= G.obedit->actcol-1;
|
||||
evl= evl->next;
|
||||
efa= em->faces.first;
|
||||
while(efa) {
|
||||
if( faceselectedAND(efa, 1) )
|
||||
efa->mat_nr= G.obedit->actcol-1;
|
||||
efa= efa->next;
|
||||
}
|
||||
allqueue(REDRAWVIEW3D_Z, 0);
|
||||
makeDispList(G.obedit);
|
||||
@ -561,15 +561,15 @@ void do_common_editbuts(unsigned short event) // old name, is a mix of object an
|
||||
case B_SETSOLID:
|
||||
if(G.obedit) {
|
||||
if(G.obedit->type == OB_MESH) {
|
||||
evl= em->faces.first;
|
||||
efa= em->faces.first;
|
||||
if (event == B_SETSMOOTH) undo_push_mesh("Set Smooth");
|
||||
else if (event==B_SETSOLID) undo_push_mesh("Set Solid");
|
||||
while(evl) {
|
||||
if( vlakselectedAND(evl, 1) ) {
|
||||
if(event==B_SETSMOOTH) evl->flag |= ME_SMOOTH;
|
||||
else evl->flag &= ~ME_SMOOTH;
|
||||
while(efa) {
|
||||
if( faceselectedAND(efa, 1) ) {
|
||||
if(event==B_SETSMOOTH) efa->flag |= ME_SMOOTH;
|
||||
else efa->flag &= ~ME_SMOOTH;
|
||||
}
|
||||
evl= evl->next;
|
||||
efa= efa->next;
|
||||
}
|
||||
|
||||
makeDispList(G.obedit);
|
||||
|
@ -1724,7 +1724,7 @@ static void drawmeshsolid(Object *ob, float *nors)
|
||||
MVert *mvert;
|
||||
TFace *tface;
|
||||
MFace *mface;
|
||||
EditVlak *evl;
|
||||
EditFace *efa;
|
||||
float *extverts=0, *v1, *v2, *v3, *v4;
|
||||
int glmode, setsmooth=0, a, start, end, matnr= -1, vertexpaint, i;
|
||||
short no[3], *n1, *n2, *n3, *n4 = NULL;
|
||||
@ -1758,36 +1758,36 @@ static void drawmeshsolid(Object *ob, float *nors)
|
||||
|
||||
if(ob==G.obedit || (G.obedit && ob->data==G.obedit->data)) {
|
||||
|
||||
evl= em->faces.first;
|
||||
while(evl) {
|
||||
if(evl->v1->h==0 && evl->v2->h==0 && evl->v3->h==0) {
|
||||
efa= em->faces.first;
|
||||
while(efa) {
|
||||
if(efa->v1->h==0 && efa->v2->h==0 && efa->v3->h==0) {
|
||||
|
||||
if(evl->mat_nr!=matnr) {
|
||||
matnr= evl->mat_nr;
|
||||
if(efa->mat_nr!=matnr) {
|
||||
matnr= efa->mat_nr;
|
||||
set_gl_material(matnr+1);
|
||||
}
|
||||
|
||||
if(evl->v4 && evl->v4->h==0) {
|
||||
if(efa->v4 && efa->v4->h==0) {
|
||||
|
||||
glBegin(GL_QUADS);
|
||||
glNormal3fv(evl->n);
|
||||
glVertex3fv(evl->v1->co);
|
||||
glVertex3fv(evl->v2->co);
|
||||
glVertex3fv(evl->v3->co);
|
||||
glVertex3fv(evl->v4->co);
|
||||
glNormal3fv(efa->n);
|
||||
glVertex3fv(efa->v1->co);
|
||||
glVertex3fv(efa->v2->co);
|
||||
glVertex3fv(efa->v3->co);
|
||||
glVertex3fv(efa->v4->co);
|
||||
glEnd();
|
||||
}
|
||||
else {
|
||||
|
||||
glBegin(GL_TRIANGLES);
|
||||
glNormal3fv(evl->n);
|
||||
glVertex3fv(evl->v1->co);
|
||||
glVertex3fv(evl->v2->co);
|
||||
glVertex3fv(evl->v3->co);
|
||||
glNormal3fv(efa->n);
|
||||
glVertex3fv(efa->v1->co);
|
||||
glVertex3fv(efa->v2->co);
|
||||
glVertex3fv(efa->v3->co);
|
||||
glEnd();
|
||||
}
|
||||
}
|
||||
evl= evl->next;
|
||||
efa= efa->next;
|
||||
}
|
||||
|
||||
glDisable(GL_LIGHTING);
|
||||
@ -2380,7 +2380,7 @@ static void drawmeshwire(Object *ob)
|
||||
DispList *dl;
|
||||
Material *ma;
|
||||
EditEdge *eed;
|
||||
EditVlak *evl;
|
||||
EditFace *efa;
|
||||
float fvec[3], cent[3], *f1, *f2, *f3, *f4, *extverts=NULL;
|
||||
int a, start, end, test, ok, handles=0;
|
||||
|
||||
@ -2400,47 +2400,47 @@ static void drawmeshwire(Object *ob)
|
||||
glEnable(GL_BLEND);
|
||||
glDepthMask(0); // disable write in zbuffer, needed for nice transp
|
||||
|
||||
evl= em->faces.first;
|
||||
while(evl) {
|
||||
if(evl->v1->h==0 && evl->v2->h==0 && evl->v3->h==0 && (evl->v4==NULL || evl->v4->h==0)) {
|
||||
efa= em->faces.first;
|
||||
while(efa) {
|
||||
if(efa->v1->h==0 && efa->v2->h==0 && efa->v3->h==0 && (efa->v4==NULL || efa->v4->h==0)) {
|
||||
|
||||
if(1) {
|
||||
if(vlakselectedAND(evl, 1)) glColor4ub(col2[0], col2[1], col2[2], col2[3]);
|
||||
if(faceselectedAND(efa, 1)) glColor4ub(col2[0], col2[1], col2[2], col2[3]);
|
||||
else glColor4ub(col1[0], col1[1], col1[2], col1[3]);
|
||||
|
||||
glBegin(evl->v4?GL_QUADS:GL_TRIANGLES);
|
||||
glVertex3fv(evl->v1->co);
|
||||
glVertex3fv(evl->v2->co);
|
||||
glVertex3fv(evl->v3->co);
|
||||
if(evl->v4) glVertex3fv(evl->v4->co);
|
||||
glBegin(efa->v4?GL_QUADS:GL_TRIANGLES);
|
||||
glVertex3fv(efa->v1->co);
|
||||
glVertex3fv(efa->v2->co);
|
||||
glVertex3fv(efa->v3->co);
|
||||
if(efa->v4) glVertex3fv(efa->v4->co);
|
||||
glEnd();
|
||||
|
||||
} else {
|
||||
if(vlakselectedAND(evl, 1)) glColor4ub(col2[0], col2[1], col2[2], col2[3]);
|
||||
if(faceselectedAND(efa, 1)) glColor4ub(col2[0], col2[1], col2[2], col2[3]);
|
||||
else glColor4ub(col1[0], col1[1], col1[2], col1[3]);
|
||||
|
||||
if(evl->v4 && evl->v4->h==0) {
|
||||
if(efa->v4 && efa->v4->h==0) {
|
||||
|
||||
CalcCent4f(cent, evl->v1->co, evl->v2->co, evl->v3->co, evl->v4->co);
|
||||
CalcCent4f(cent, efa->v1->co, efa->v2->co, efa->v3->co, efa->v4->co);
|
||||
glBegin(GL_QUADS);
|
||||
VecMidf(fvec, cent, evl->v1->co); glVertex3fv(fvec);
|
||||
VecMidf(fvec, cent, evl->v2->co); glVertex3fv(fvec);
|
||||
VecMidf(fvec, cent, evl->v3->co); glVertex3fv(fvec);
|
||||
VecMidf(fvec, cent, evl->v4->co); glVertex3fv(fvec);
|
||||
VecMidf(fvec, cent, efa->v1->co); glVertex3fv(fvec);
|
||||
VecMidf(fvec, cent, efa->v2->co); glVertex3fv(fvec);
|
||||
VecMidf(fvec, cent, efa->v3->co); glVertex3fv(fvec);
|
||||
VecMidf(fvec, cent, efa->v4->co); glVertex3fv(fvec);
|
||||
glEnd();
|
||||
}
|
||||
else {
|
||||
|
||||
CalcCent3f(cent, evl->v1->co, evl->v2->co, evl->v3->co);
|
||||
CalcCent3f(cent, efa->v1->co, efa->v2->co, efa->v3->co);
|
||||
glBegin(GL_TRIANGLES);
|
||||
VecMidf(fvec, cent, evl->v1->co); glVertex3fv(fvec);
|
||||
VecMidf(fvec, cent, evl->v2->co); glVertex3fv(fvec);
|
||||
VecMidf(fvec, cent, evl->v3->co); glVertex3fv(fvec);
|
||||
VecMidf(fvec, cent, efa->v1->co); glVertex3fv(fvec);
|
||||
VecMidf(fvec, cent, efa->v2->co); glVertex3fv(fvec);
|
||||
VecMidf(fvec, cent, efa->v3->co); glVertex3fv(fvec);
|
||||
glEnd();
|
||||
}
|
||||
}
|
||||
}
|
||||
evl= evl->next;
|
||||
efa= efa->next;
|
||||
}
|
||||
glDisable(GL_BLEND);
|
||||
glDepthMask(1); // restore write in zbuffer
|
||||
@ -2545,20 +2545,20 @@ static void drawmeshwire(Object *ob)
|
||||
|
||||
glBegin(GL_LINES);
|
||||
|
||||
evl= em->faces.first;
|
||||
while(evl) {
|
||||
if(evl->v1->h==0 && evl->v2->h==0 && evl->v3->h==0) {
|
||||
if(evl->v4) CalcCent4f(fvec, evl->v1->co, evl->v2->co, evl->v3->co, evl->v4->co);
|
||||
else CalcCent3f(fvec, evl->v1->co, evl->v2->co, evl->v3->co);
|
||||
efa= em->faces.first;
|
||||
while(efa) {
|
||||
if(efa->v1->h==0 && efa->v2->h==0 && efa->v3->h==0) {
|
||||
if(efa->v4) CalcCent4f(fvec, efa->v1->co, efa->v2->co, efa->v3->co, efa->v4->co);
|
||||
else CalcCent3f(fvec, efa->v1->co, efa->v2->co, efa->v3->co);
|
||||
|
||||
glVertex3fv(fvec);
|
||||
fvec[0]+= editbutsize*evl->n[0];
|
||||
fvec[1]+= editbutsize*evl->n[1];
|
||||
fvec[2]+= editbutsize*evl->n[2];
|
||||
fvec[0]+= editbutsize*efa->n[0];
|
||||
fvec[1]+= editbutsize*efa->n[1];
|
||||
fvec[2]+= editbutsize*efa->n[2];
|
||||
glVertex3fv(fvec);
|
||||
|
||||
}
|
||||
evl= evl->next;
|
||||
efa= efa->next;
|
||||
}
|
||||
|
||||
glEnd();
|
||||
|
@ -519,7 +519,7 @@ void countall()
|
||||
MetaElem *ml;
|
||||
/* struct BodyPoint *bop; */
|
||||
struct EditVert *eve;
|
||||
struct EditVlak *evl;
|
||||
struct EditFace *efa;
|
||||
#ifdef __NLA
|
||||
struct EditBone *ebo;
|
||||
#endif
|
||||
@ -538,14 +538,14 @@ void countall()
|
||||
if(eve->f & 1) G.totvertsel++;
|
||||
eve= eve->next;
|
||||
}
|
||||
evl= em->faces.first;
|
||||
while(evl) {
|
||||
efa= em->faces.first;
|
||||
while(efa) {
|
||||
G.totface++;
|
||||
if(evl->v1->f & 1) {
|
||||
if(evl->v2->f & 1) {
|
||||
if(evl->v3->f & 1) {
|
||||
if(evl->v4) {
|
||||
if(evl->v4->f & 1) G.totfacesel++;
|
||||
if(efa->v1->f & 1) {
|
||||
if(efa->v2->f & 1) {
|
||||
if(efa->v3->f & 1) {
|
||||
if(efa->v4) {
|
||||
if(efa->v4->f & 1) G.totfacesel++;
|
||||
}
|
||||
else {
|
||||
G.totfacesel++;
|
||||
@ -553,7 +553,7 @@ void countall()
|
||||
}
|
||||
}
|
||||
}
|
||||
evl= evl->next;
|
||||
efa= efa->next;
|
||||
}
|
||||
}
|
||||
#ifdef __NLA
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -1931,7 +1931,7 @@ void do_view3d_edit_mesh_edgesmenu(void *arg, int event)
|
||||
loopoperations(LOOP_CUT);
|
||||
break;
|
||||
case 5: /* Make Edge/Face */
|
||||
addedgevlak_mesh();
|
||||
addedgeface_mesh();
|
||||
break;
|
||||
case 6:
|
||||
bevel_menu();
|
||||
@ -2016,7 +2016,7 @@ static void do_view3d_edit_mesh_facesmenu(void *arg, int event)
|
||||
edge_flip();
|
||||
break;
|
||||
case 5: /* Make Edge/Face */
|
||||
addedgevlak_mesh();
|
||||
addedgeface_mesh();
|
||||
break;
|
||||
}
|
||||
allqueue(REDRAWVIEW3D, 0);
|
||||
|
@ -1189,7 +1189,7 @@ void winqreadview3dspace(ScrArea *sa, void *spacedata, BWinEvent *evt)
|
||||
else if(G.qual==LR_CTRLKEY)
|
||||
edge_flip();
|
||||
else if (G.qual==0)
|
||||
addedgevlak_mesh();
|
||||
addedgeface_mesh();
|
||||
}
|
||||
else if ELEM(G.obedit->type, OB_CURVE, OB_SURF) addsegment_nurb();
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user