fixed subdividing bug with addfacelist(..) rule for edges

still needs revision on bevel and rotate edge
This commit is contained in:
2004-10-09 20:49:55 +00:00
parent de2c542d21
commit 76eab0cf16
5 changed files with 60 additions and 60 deletions

View File

@@ -55,7 +55,7 @@ extern void remedge(EditEdge *eed);
extern struct EditVert *addvertlist(float *vec); extern struct EditVert *addvertlist(float *vec);
extern struct EditEdge *addedgelist(struct EditVert *v1, struct EditVert *v2, struct EditEdge *example); extern struct EditEdge *addedgelist(struct EditVert *v1, struct EditVert *v2, struct EditEdge *example);
extern struct EditFace *addfacelist(struct EditVert *v1, struct EditVert *v2, struct EditVert *v3, struct EditVert *v4, struct EditFace *example); extern struct EditFace *addfacelist(struct EditVert *v1, struct EditVert *v2, struct EditVert *v3, struct EditVert *v4, struct EditFace *example, struct EditFace *exampleEdges);
extern struct EditEdge *findedgelist(struct EditVert *v1, struct EditVert *v2); extern struct EditEdge *findedgelist(struct EditVert *v1, struct EditVert *v2);
/* ******************* editmesh_add.c */ /* ******************* editmesh_add.c */

View File

@@ -325,14 +325,14 @@ void free_facelist(ListBase *lb)
lb->first= lb->last= NULL; lb->first= lb->last= NULL;
} }
EditFace *addfacelist(EditVert *v1, EditVert *v2, EditVert *v3, EditVert *v4, EditFace *example) EditFace *addfacelist(EditVert *v1, EditVert *v2, EditVert *v3, EditVert *v4, EditFace *example, EditFace *exampleEdges)
{ {
EditMesh *em = G.editMesh; EditMesh *em = G.editMesh;
EditFace *efa; EditFace *efa;
EditEdge *e1, *e2=0, *e3=0, *e4=0; EditEdge *e1, *e2=0, *e3=0, *e4=0;
/* add face to list and do the edges */ /* add face to list and do the edges */
if(example) { if(exampleEdges) {
e1= addedgelist(v1, v2, example->e1); e1= addedgelist(v1, v2, example->e1);
e2= addedgelist(v2, v3, example->e2); e2= addedgelist(v2, v3, example->e2);
if(v4) e3= addedgelist(v3, v4, example->e3); if(v4) e3= addedgelist(v3, v4, example->e3);
@@ -732,7 +732,7 @@ void make_editMesh()
if(mface->v3) eve3= evlist[mface->v3]; else eve3= NULL; if(mface->v3) eve3= evlist[mface->v3]; else eve3= NULL;
if(mface->v4) eve4= evlist[mface->v4]; else eve4= NULL; if(mface->v4) eve4= evlist[mface->v4]; else eve4= NULL;
efa= addfacelist(eve1, eve2, eve3, eve4, NULL); efa= addfacelist(eve1, eve2, eve3, eve4, NULL, NULL);
if(efa) { if(efa) {
@@ -1801,9 +1801,9 @@ static void undoMesh_to_editMesh(void *umv)
tface= um->tfaces; tface= um->tfaces;
for(a=0, efac= um->faces; a<um->totface; a++, efac++) { for(a=0, efac= um->faces; a<um->totface; a++, efac++) {
if(efac->v4 != -1) if(efac->v4 != -1)
efa= addfacelist(evar[efac->v1], evar[efac->v2], evar[efac->v3], evar[efac->v4], NULL); efa= addfacelist(evar[efac->v1], evar[efac->v2], evar[efac->v3], evar[efac->v4], NULL, NULL);
else else
efa= addfacelist(evar[efac->v1], evar[efac->v2], evar[efac->v3], NULL, NULL); efa= addfacelist(evar[efac->v1], evar[efac->v2], evar[efac->v3], NULL, NULL ,NULL);
efa->mat_nr= efac->mat_nr; efa->mat_nr= efac->mat_nr;
efa->flag= efac->flag; efa->flag= efac->flag;

View File

@@ -327,7 +327,7 @@ void addedgeface_mesh(void)
if(amount==3) { if(amount==3) {
if(exist_face(neweve[0], neweve[1], neweve[2], 0)==0) { if(exist_face(neweve[0], neweve[1], neweve[2], 0)==0) {
efa= addfacelist(neweve[0], neweve[1], neweve[2], 0, NULL); efa= addfacelist(neweve[0], neweve[1], neweve[2], 0, NULL, NULL);
} }
else error("The selected vertices already form a face"); else error("The selected vertices already form a face");
@@ -340,11 +340,11 @@ void addedgeface_mesh(void)
con3= convex(neweve[0]->co, neweve[3]->co, neweve[1]->co, neweve[2]->co); con3= convex(neweve[0]->co, neweve[3]->co, neweve[1]->co, neweve[2]->co);
if(con1>=con2 && con1>=con3) if(con1>=con2 && con1>=con3)
efa= addfacelist(neweve[0], neweve[1], neweve[2], neweve[3], NULL); efa= addfacelist(neweve[0], neweve[1], neweve[2], neweve[3], NULL, NULL);
else if(con2>=con1 && con2>=con3) else if(con2>=con1 && con2>=con3)
efa= addfacelist(neweve[0], neweve[2], neweve[3], neweve[1], NULL); efa= addfacelist(neweve[0], neweve[2], neweve[3], neweve[1], NULL, NULL);
else else
efa= addfacelist(neweve[0], neweve[2], neweve[1], neweve[3], NULL); efa= addfacelist(neweve[0], neweve[2], neweve[1], neweve[3], NULL, NULL);
} }
else error("The selected vertices already form a face"); else error("The selected vertices already form a face");
@@ -582,24 +582,24 @@ void add_primitiveMesh(int type)
v3= v1->next->next; v3= v1->next->next;
if(ext) v4= v2->next->next; if(ext) v4= v2->next->next;
addfacelist(v3, v1->next, v1, v3->next, NULL); addfacelist(v3, v1->next, v1, v3->next, NULL, NULL);
if(ext) addfacelist(v2, v2->next, v4, v4->next, NULL); if(ext) addfacelist(v2, v2->next, v4, v4->next, NULL, NULL);
} }
else { else {
v3= v1; v3= v1;
v4= v2; v4= v2;
for(a=1; a<tot; a++) { for(a=1; a<tot; a++) {
addfacelist(vdown, v3, v3->next, 0, NULL); addfacelist(vdown, v3, v3->next, 0, NULL, NULL);
v3= v3->next; v3= v3->next;
if(ext) { if(ext) {
addfacelist(vtop, v4, v4->next, 0, NULL); addfacelist(vtop, v4, v4->next, 0, NULL, NULL);
v4= v4->next; v4= v4->next;
} }
} }
if(type>1) { if(type>1) {
addfacelist(vdown, v3, v1, 0, NULL); addfacelist(vdown, v3, v1, 0, NULL, NULL);
if(ext) addfacelist(vtop, v4, v2, 0, NULL); if(ext) addfacelist(vtop, v4, v2, 0, NULL, NULL);
} }
} }
} }
@@ -616,19 +616,19 @@ void add_primitiveMesh(int type)
v3= v1; v3= v1;
v4= v2; v4= v2;
for(a=1; a<tot; a++) { for(a=1; a<tot; a++) {
addfacelist(v3, v3->next, v4->next, v4, NULL); addfacelist(v3, v3->next, v4->next, v4, NULL, NULL);
v3= v3->next; v3= v3->next;
v4= v4->next; v4= v4->next;
} }
addfacelist(v3, v1, v2, v4, NULL); addfacelist(v3, v1, v2, v4, NULL, NULL);
} }
else if(type==7) { /* cone */ else if(type==7) { /* cone */
v3= v1; v3= v1;
for(a=1; a<tot; a++) { for(a=1; a<tot; a++) {
addfacelist(vtop, v3->next, v3, 0, NULL); addfacelist(vtop, v3->next, v3, 0, NULL, NULL);
v3= v3->next; v3= v3->next;
} }
addfacelist(vtop, v1, v3, 0, NULL); addfacelist(vtop, v1, v3, 0, NULL, NULL);
} }
if(type<2) tot= totoud; if(type<2) tot= totoud;
@@ -726,7 +726,7 @@ void add_primitiveMesh(int type)
v1= eva[ icoface[a][0] ]; v1= eva[ icoface[a][0] ];
v2= eva[ icoface[a][1] ]; v2= eva[ icoface[a][1] ];
v3= eva[ icoface[a][2] ]; v3= eva[ icoface[a][2] ];
addfacelist(v1, v2, v3, 0, NULL); addfacelist(v1, v2, v3, 0, NULL, NULL);
} }
dia*=200; dia*=200;
@@ -756,8 +756,8 @@ void add_primitiveMesh(int type)
tv[monkeynv+i]->f |= SELECT; tv[monkeynv+i]->f |= SELECT;
} }
for (i=0; i<monkeynf; i++) { for (i=0; i<monkeynf; i++) {
addfacelist(tv[monkeyf[i][0]+i-monkeyo], tv[monkeyf[i][1]+i-monkeyo], tv[monkeyf[i][2]+i-monkeyo], (monkeyf[i][3]!=monkeyf[i][2])?tv[monkeyf[i][3]+i-monkeyo]:NULL, NULL); addfacelist(tv[monkeyf[i][0]+i-monkeyo], tv[monkeyf[i][1]+i-monkeyo], tv[monkeyf[i][2]+i-monkeyo], (monkeyf[i][3]!=monkeyf[i][2])?tv[monkeyf[i][3]+i-monkeyo]:NULL, NULL, NULL);
addfacelist(tv[monkeynv+monkeyf[i][2]+i-monkeyo], tv[monkeynv+monkeyf[i][1]+i-monkeyo], tv[monkeynv+monkeyf[i][0]+i-monkeyo], (monkeyf[i][3]!=monkeyf[i][2])?tv[monkeynv+monkeyf[i][3]+i-monkeyo]:NULL, NULL); addfacelist(tv[monkeynv+monkeyf[i][2]+i-monkeyo], tv[monkeynv+monkeyf[i][1]+i-monkeyo], tv[monkeynv+monkeyf[i][0]+i-monkeyo], (monkeyf[i][3]!=monkeyf[i][2])?tv[monkeynv+monkeyf[i][3]+i-monkeyo]:NULL, NULL, NULL);
} }
MEM_freeN(tv); MEM_freeN(tv);

View File

@@ -537,8 +537,8 @@ static short extrudeflag_edge(short flag)
if(eed->v2->vn==NULL) if(eed->v2->vn==NULL)
eed->v2->vn= addvertlist(eed->v2->co); eed->v2->vn= addvertlist(eed->v2->co);
if(eed->dir==1) efa2= addfacelist(eed->v1, eed->v2, eed->v2->vn, eed->v1->vn, NULL); if(eed->dir==1) efa2= addfacelist(eed->v1, eed->v2, eed->v2->vn, eed->v1->vn, NULL, NULL);
else efa2= addfacelist(eed->v2, eed->v1, eed->v1->vn, eed->v2->vn, NULL); else efa2= addfacelist(eed->v2, eed->v1, eed->v1->vn, eed->v2->vn, NULL, NULL);
if(eed->vn) { if(eed->vn) {
/* btw, we dont do it in addfacelist, it copies edges too */ /* btw, we dont do it in addfacelist, it copies edges too */
@@ -558,11 +558,11 @@ static short extrudeflag_edge(short flag)
if(efa->v2->vn==NULL) efa->v2->vn= addvertlist(efa->v2->co); if(efa->v2->vn==NULL) efa->v2->vn= addvertlist(efa->v2->co);
if(efa->v3->vn==NULL) efa->v3->vn= addvertlist(efa->v3->co); if(efa->v3->vn==NULL) efa->v3->vn= addvertlist(efa->v3->co);
if(efa->v4 && efa->v4->vn==NULL) efa->v4->vn= addvertlist(efa->v4->co); if(efa->v4 && efa->v4->vn==NULL) efa->v4->vn= addvertlist(efa->v4->co);
/* creases and seams stay on *old* face so no edge copy */
if(efa->v4) if(efa->v4)
addfacelist(efa->v1->vn, efa->v2->vn, efa->v3->vn, efa->v4->vn, efa); addfacelist(efa->v1->vn, efa->v2->vn, efa->v3->vn, efa->v4->vn, efa, NULL);
else else
addfacelist(efa->v1->vn, efa->v2->vn, efa->v3->vn, NULL, efa); addfacelist(efa->v1->vn, efa->v2->vn, efa->v3->vn, NULL, efa, NULL);
/* if *one* selected face has edge with unselected face; remove old selected faces */ /* if *one* selected face has edge with unselected face; remove old selected faces */
if(efa->e1->f2 || efa->e2->f2 || efa->e3->f2 || (efa->e4 && efa->e4->f2)) if(efa->e1->f2 || efa->e2->f2 || efa->e3->f2 || (efa->e4 && efa->e4->f2))
@@ -774,8 +774,8 @@ short extrudeflag_vert(short flag)
if( (eed->f2==1 || eed->f2==2) ) { if( (eed->f2==1 || eed->f2==2) ) {
if(eed->f1==2) del_old= 1; if(eed->f1==2) del_old= 1;
if(eed->dir==1) efa2= addfacelist(eed->v1, eed->v2, eed->v2->vn, eed->v1->vn, NULL); if(eed->dir==1) efa2= addfacelist(eed->v1, eed->v2, eed->v2->vn, eed->v1->vn, NULL, NULL);
else efa2= addfacelist(eed->v2, eed->v1, eed->v1->vn, eed->v2->vn, NULL); else efa2= addfacelist(eed->v2, eed->v1, eed->v1->vn, eed->v2->vn, NULL, NULL);
if(eed->vn) { if(eed->vn) {
efa= (EditFace *)eed->vn; efa= (EditFace *)eed->vn;
@@ -818,7 +818,7 @@ short extrudeflag_vert(short flag)
v3= efa->v3->vn; v3= efa->v3->vn;
if(efa->v4) v4= efa->v4->vn; else v4= 0; if(efa->v4) v4= efa->v4->vn; else v4= 0;
efa2= addfacelist(v1, v2, v3, v4, efa); efa2= addfacelist(v1, v2, v3, v4, efa, efa); /* hmm .. not sure about edges here */
/* for transform */ /* for transform */
VecAddf(nor, nor, efa->n); VecAddf(nor, nor, efa->n);
@@ -967,7 +967,7 @@ void adduplicateflag(int flag)
v2= efa->v2->vn; v2= efa->v2->vn;
v3= efa->v3->vn; v3= efa->v3->vn;
if(efa->v4) v4= efa->v4->vn; else v4= NULL; if(efa->v4) v4= efa->v4->vn; else v4= NULL;
newfa= addfacelist(v1, v2, v3, v4, efa); newfa= addfacelist(v1, v2, v3, v4, efa, efa);
newfa->f= efa->f; newfa->f= efa->f;
efa->f -= flag; efa->f -= flag;

View File

@@ -139,9 +139,9 @@ void convert_to_triface(int all)
if(efa->v4) { if(efa->v4) {
if(all || (efa->f & SELECT) ) { if(all || (efa->f & SELECT) ) {
efan= addfacelist(efa->v1, efa->v2, efa->v3, 0, efa); efan= addfacelist(efa->v1, efa->v2, efa->v3, 0, efa, NULL);
if(efa->f & SELECT) EM_select_face(efan, 1); if(efa->f & SELECT) EM_select_face(efan, 1);
efan= addfacelist(efa->v1, efa->v3, efa->v4, 0, efa); efan= addfacelist(efa->v1, efa->v3, efa->v4, 0, efa, NULL);
if(efa->f & SELECT) EM_select_face(efan, 1); if(efa->f & SELECT) EM_select_face(efan, 1);
efan->tf.uv[1][0]= efan->tf.uv[2][0]; efan->tf.uv[1][0]= efan->tf.uv[2][0];
@@ -1031,7 +1031,7 @@ void fill_mesh(void)
if(ok) { if(ok) {
efa= fillfacebase.first; efa= fillfacebase.first;
while(efa) { while(efa) {
addfacelist(efa->v1->vn, efa->v2->vn, efa->v3->vn, 0, efa); addfacelist(efa->v1->vn, efa->v2->vn, efa->v3->vn, 0, efa, NULL);
efa= efa->next; efa= efa->next;
} }
} }
@@ -1245,7 +1245,7 @@ static void addface_subdiv(EditFace *efa, int val1, int val2, int val3, int val4
if(val4>=9) v4= eve; if(val4>=9) v4= eve;
else v4= vert_from_number(efa, val4); else v4= vert_from_number(efa, val4);
w= addfacelist(v1, v2, v3, v4, efa); w= addfacelist(v1, v2, v3, v4, efa, NULL);
if(w) { if(w) {
if(efa->v4) set_wuv(4, w, val1, val2, val3, val4, efapin); if(efa->v4) set_wuv(4, w, val1, val2, val3, val4, efapin);
else set_wuv(3, w, val1, val2, val3, val4, efapin); else set_wuv(3, w, val1, val2, val3, val4, efapin);
@@ -2090,14 +2090,14 @@ void beauty_fill(void)
efa= efaa[1]; efa= efaa[1];
efa->f1= 1; efa->f1= 1;
w= addfacelist(v1, v2, v3, 0, efa); w= addfacelist(v1, v2, v3, 0, efa, NULL);
UVCOPY(w->tf.uv[0], uv[0]); UVCOPY(w->tf.uv[0], uv[0]);
UVCOPY(w->tf.uv[1], uv[1]); UVCOPY(w->tf.uv[1], uv[1]);
UVCOPY(w->tf.uv[2], uv[2]); UVCOPY(w->tf.uv[2], uv[2]);
w->tf.col[0] = col[0]; w->tf.col[1] = col[1]; w->tf.col[2] = col[2]; w->tf.col[0] = col[0]; w->tf.col[1] = col[1]; w->tf.col[2] = col[2];
w= addfacelist(v1, v3, v4, 0, efa); w= addfacelist(v1, v3, v4, 0, efa, NULL);
UVCOPY(w->tf.uv[0], uv[0]); UVCOPY(w->tf.uv[0], uv[0]);
UVCOPY(w->tf.uv[1], uv[2]); UVCOPY(w->tf.uv[1], uv[2]);
@@ -2116,13 +2116,13 @@ void beauty_fill(void)
efa= efaa[1]; efa= efaa[1];
efa->f1= 1; efa->f1= 1;
w= addfacelist(v2, v3, v4, 0, efa); w= addfacelist(v2, v3, v4, 0, efa, NULL);
UVCOPY(w->tf.uv[0], uv[1]); UVCOPY(w->tf.uv[0], uv[1]);
UVCOPY(w->tf.uv[1], uv[3]); UVCOPY(w->tf.uv[1], uv[3]);
UVCOPY(w->tf.uv[2], uv[4]); UVCOPY(w->tf.uv[2], uv[4]);
w= addfacelist(v1, v2, v4, 0, efa); w= addfacelist(v1, v2, v4, 0, efa, NULL);
UVCOPY(w->tf.uv[0], uv[0]); UVCOPY(w->tf.uv[0], uv[0]);
UVCOPY(w->tf.uv[1], uv[1]); UVCOPY(w->tf.uv[1], uv[1]);
@@ -2212,7 +2212,7 @@ void join_triangles(void)
/* make new faces */ /* make new faces */
if( convex(v1->co, v2->co, v3->co, v4->co) > 0.01) { if( convex(v1->co, v2->co, v3->co, v4->co) > 0.01) {
if(exist_face(v1, v2, v3, v4)==0) { if(exist_face(v1, v2, v3, v4)==0) {
w = addfacelist(v1, v2, v3, v4, efaa[0]); w = addfacelist(v1, v2, v3, v4, efaa[0], NULL); /* seam edge may get broken */
untag_edges(w); untag_edges(w);
UVCOPY(w->tf.uv[0], uv[0]); UVCOPY(w->tf.uv[0], uv[0]);
@@ -2305,7 +2305,7 @@ void edge_flip(void)
if (v1 && v2 && v3){ if (v1 && v2 && v3){
if( convex(v1->co, v2->co, v3->co, v4->co) > 0.01) { if( convex(v1->co, v2->co, v3->co, v4->co) > 0.01) {
if(exist_face(v1, v2, v3, v4)==0) { if(exist_face(v1, v2, v3, v4)==0) {
w = addfacelist(v1, v2, v3, 0, efaa[1]); w = addfacelist(v1, v2, v3, 0, efaa[1], NULL); /* outch this may break seams */
untag_edges(w); untag_edges(w);
@@ -2315,7 +2315,7 @@ void edge_flip(void)
w->tf.col[0] = col[0]; w->tf.col[1] = col[1]; w->tf.col[2] = col[2]; w->tf.col[0] = col[0]; w->tf.col[1] = col[1]; w->tf.col[2] = col[2];
w = addfacelist(v1, v3, v4, 0, efaa[1]); w = addfacelist(v1, v3, v4, 0, efaa[1], NULL); /* outch this may break seams */
untag_edges(w); untag_edges(w);
UVCOPY(w->tf.uv[0], uv[0]); UVCOPY(w->tf.uv[0], uv[0]);
@@ -2486,8 +2486,8 @@ static void edge_rotate(EditEdge *eed)
/* create the 2 new faces */ /* create the 2 new faces */
if(fac1 == 3 && fac2 == 3){ if(fac1 == 3 && fac2 == 3){
newFace[0] = addfacelist(faces[0][(p1+1)%3],faces[0][(p1+2)%3],faces[1][(p3+1)%3],NULL,NULL); newFace[0] = addfacelist(faces[0][(p1+1)%3],faces[0][(p1+2)%3],faces[1][(p3+1)%3],NULL,NULL,NULL);
newFace[1] = addfacelist(faces[1][(p3+1)%3],faces[1][(p3+2)%3],faces[0][(p1+1)%3],NULL,NULL); newFace[1] = addfacelist(faces[1][(p3+1)%3],faces[1][(p3+2)%3],faces[0][(p1+1)%3],NULL,NULL,NULL);
newFace[0]->tf.col[0] = face[0]->tf.col[(p1+1)%3]; newFace[0]->tf.col[0] = face[0]->tf.col[(p1+1)%3];
newFace[0]->tf.col[1] = face[0]->tf.col[(p1+2)%3]; newFace[0]->tf.col[1] = face[0]->tf.col[(p1+2)%3];
@@ -2504,8 +2504,8 @@ static void edge_rotate(EditEdge *eed)
UVCOPY(newFace[1]->tf.uv[2],face[0]->tf.uv[(p1+1)%3]); UVCOPY(newFace[1]->tf.uv[2],face[0]->tf.uv[(p1+1)%3]);
} }
else if(fac1 == 4 && fac2 == 3){ else if(fac1 == 4 && fac2 == 3){
newFace[0] = addfacelist(faces[0][(p1+1)%4],faces[0][(p1+2)%4],faces[0][(p1+3)%4],faces[1][(p3+1)%3],NULL); newFace[0] = addfacelist(faces[0][(p1+1)%4],faces[0][(p1+2)%4],faces[0][(p1+3)%4],faces[1][(p3+1)%3],NULL,NULL);
newFace[1] = addfacelist(faces[1][(p3+1)%3],faces[1][(p3+2)%3],faces[0][(p1+1)%4],NULL,NULL); newFace[1] = addfacelist(faces[1][(p3+1)%3],faces[1][(p3+2)%3],faces[0][(p1+1)%4],NULL,NULL,NULL);
newFace[0]->tf.col[0] = face[0]->tf.col[(p1+1)%4]; newFace[0]->tf.col[0] = face[0]->tf.col[(p1+1)%4];
newFace[0]->tf.col[1] = face[0]->tf.col[(p1+2)%4]; newFace[0]->tf.col[1] = face[0]->tf.col[(p1+2)%4];
@@ -2525,8 +2525,8 @@ static void edge_rotate(EditEdge *eed)
} }
else if(fac1 == 3 && fac2 == 4){ else if(fac1 == 3 && fac2 == 4){
newFace[0] = addfacelist(faces[0][(p1+1)%3],faces[0][(p1+2)%3],faces[1][(p3+1)%4],NULL,NULL); newFace[0] = addfacelist(faces[0][(p1+1)%3],faces[0][(p1+2)%3],faces[1][(p3+1)%4],NULL,NULL,NULL);
newFace[1] = addfacelist(faces[1][(p3+1)%4],faces[1][(p3+2)%4],faces[1][(p3+3)%4],faces[0][(p1+1)%3],NULL); newFace[1] = addfacelist(faces[1][(p3+1)%4],faces[1][(p3+2)%4],faces[1][(p3+3)%4],faces[0][(p1+1)%3],NULL,NULL);
newFace[0]->tf.col[0] = face[0]->tf.col[(p1+1)%3]; newFace[0]->tf.col[0] = face[0]->tf.col[(p1+1)%3];
newFace[0]->tf.col[1] = face[0]->tf.col[(p1+2)%3]; newFace[0]->tf.col[1] = face[0]->tf.col[(p1+2)%3];
@@ -2547,8 +2547,8 @@ static void edge_rotate(EditEdge *eed)
} }
else if(fac1 == 4 && fac2 == 4){ else if(fac1 == 4 && fac2 == 4){
newFace[0] = addfacelist(faces[0][(p1+1)%4],faces[0][(p1+2)%4],faces[0][(p1+3)%4],faces[1][(p3+1)%4],NULL); newFace[0] = addfacelist(faces[0][(p1+1)%4],faces[0][(p1+2)%4],faces[0][(p1+3)%4],faces[1][(p3+1)%4],NULL,NULL);
newFace[1] = addfacelist(faces[1][(p3+1)%4],faces[1][(p3+2)%4],faces[1][(p3+3)%4],faces[0][(p1+1)%4],NULL); newFace[1] = addfacelist(faces[1][(p3+1)%4],faces[1][(p3+2)%4],faces[1][(p3+3)%4],faces[0][(p1+1)%4],NULL,NULL);
newFace[0]->tf.col[0] = face[0]->tf.col[(p1+1)%4]; newFace[0]->tf.col[0] = face[0]->tf.col[(p1+1)%4];
newFace[0]->tf.col[1] = face[0]->tf.col[(p1+2)%4]; newFace[0]->tf.col[1] = face[0]->tf.col[(p1+2)%4];
@@ -3048,12 +3048,12 @@ void bevel_mesh(float bsize, int allfaces)
v2= efa->v2->vn; v2= efa->v2->vn;
v3= efa->v3->vn; v3= efa->v3->vn;
v4= efa->v4->vn; v4= efa->v4->vn;
addfacelist(v1, v2, v3, v4, efa); addfacelist(v1, v2, v3, v4, efa,NULL);
} else { } else {
v1= efa->v1->vn; v1= efa->v1->vn;
v2= efa->v2->vn; v2= efa->v2->vn;
v3= efa->v3->vn; v3= efa->v3->vn;
addfacelist(v1, v2, v3, 0, efa); addfacelist(v1, v2, v3, 0, efa,NULL);
} }
efa= efa-> next; efa= efa-> next;
@@ -3137,9 +3137,9 @@ void bevel_mesh(float bsize, int allfaces)
efa= NULL; efa= NULL;
if (VecCompare(eed->v1->co, eed2->v2->co, limit)) { if (VecCompare(eed->v1->co, eed2->v2->co, limit)) {
efa= addfacelist(neweve[0], neweve[1], neweve[2], neweve[3], example); efa= addfacelist(neweve[0], neweve[1], neweve[2], neweve[3], example,NULL);
} else { } else {
efa= addfacelist(neweve[0], neweve[2], neweve[3], neweve[1], example); efa= addfacelist(neweve[0], neweve[2], neweve[3], neweve[1], example,NULL);
} }
if(efa) { if(efa) {
@@ -3282,7 +3282,7 @@ void bevel_mesh(float bsize, int allfaces)
if ((neweve[b]==eed->v1) || (neweve[b]==eed->v2)) c++; if ((neweve[b]==eed->v1) || (neweve[b]==eed->v2)) c++;
if (c==2) { if (c==2) {
if(exist_face(eed->v1, eed->v2, eve2, 0)==0) { if(exist_face(eed->v1, eed->v2, eve2, 0)==0) {
efa= addfacelist(eed->v1, eed->v2, eve2, 0, example); efa= addfacelist(eed->v1, eed->v2, eve2, 0, example,NULL);
#ifdef BEV_DEBUG #ifdef BEV_DEBUG
efa->mat_nr= 2; efa->mat_nr= 2;
#endif #endif
@@ -3296,16 +3296,16 @@ void bevel_mesh(float bsize, int allfaces)
con2= convex(neweve[0]->co, neweve[2]->co, neweve[3]->co, neweve[1]->co); con2= convex(neweve[0]->co, neweve[2]->co, neweve[3]->co, neweve[1]->co);
con3= convex(neweve[0]->co, neweve[3]->co, neweve[1]->co, neweve[2]->co); con3= convex(neweve[0]->co, neweve[3]->co, neweve[1]->co, neweve[2]->co);
if(con1>=con2 && con1>=con3) if(con1>=con2 && con1>=con3)
efa= addfacelist(neweve[0], neweve[1], neweve[2], neweve[3], example); efa= addfacelist(neweve[0], neweve[1], neweve[2], neweve[3], example,NULL);
else if(con2>=con1 && con2>=con3) else if(con2>=con1 && con2>=con3)
efa= addfacelist(neweve[0], neweve[2], neweve[3], neweve[1], example); efa= addfacelist(neweve[0], neweve[2], neweve[3], neweve[1], example,NULL);
else else
efa= addfacelist(neweve[0], neweve[2], neweve[1], neweve[3], example); efa= addfacelist(neweve[0], neweve[2], neweve[1], neweve[3], example,NULL);
} }
} }
else if (a==3) { else if (a==3) {
if(exist_face(neweve[0], neweve[1], neweve[2], 0)==0) if(exist_face(neweve[0], neweve[1], neweve[2], 0)==0)
efa= addfacelist(neweve[0], neweve[1], neweve[2], 0, example); efa= addfacelist(neweve[0], neweve[1], neweve[2], 0, example, NULL);
} }
if(efa) { if(efa) {
float inp; float inp;