diff options
author | Ton Roosendaal <ton@blender.org> | 2004-10-16 17:53:41 +0400 |
---|---|---|
committer | Ton Roosendaal <ton@blender.org> | 2004-10-16 17:53:41 +0400 |
commit | a4637989846392d0b4149859169021e3dcf5aa82 (patch) | |
tree | 889e697d5eadea455753388652553a7e08645f7b /source/blender/src/editmesh_add.c | |
parent | 96f2f71cb176a9953f6bf9b9a222601c9c525066 (diff) |
Suggested by bug reporter; pressing Fkey to make a face, whilst the
selection already is 2 triangles, it should create a new face but
remove the old triangles. It actually calls the 'ALT+J' command then
(join triangles)
While testing found out more cases where new selection flags were not
properly used (join trias, beauty fill, flip edges, rotate edges)
Diffstat (limited to 'source/blender/src/editmesh_add.c')
-rw-r--r-- | source/blender/src/editmesh_add.c | 30 |
1 files changed, 20 insertions, 10 deletions
diff --git a/source/blender/src/editmesh_add.c b/source/blender/src/editmesh_add.c index 7d7b2500ebd..1f0495f3711 100644 --- a/source/blender/src/editmesh_add.c +++ b/source/blender/src/editmesh_add.c @@ -337,17 +337,27 @@ void addedgeface_mesh(void) } else if(amount==4) { if(exist_face(neweve[0], neweve[1], neweve[2], neweve[3])==0) { + int tria= 0; + + /* remove trias if they exist, 4 cases.... */ + if(exist_face(neweve[0], neweve[1], neweve[2], NULL)) tria++; + if(exist_face(neweve[0], neweve[1], neweve[3], NULL)) tria++; + if(exist_face(neweve[0], neweve[2], neweve[3], NULL)) tria++; + if(exist_face(neweve[1], neweve[2], neweve[3], NULL)) tria++; - con1= convex(neweve[0]->co, neweve[1]->co, neweve[2]->co, neweve[3]->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); - - if(con1>=con2 && con1>=con3) - efa= addfacelist(neweve[0], neweve[1], neweve[2], neweve[3], NULL, NULL); - else if(con2>=con1 && con2>=con3) - efa= addfacelist(neweve[0], neweve[2], neweve[3], neweve[1], NULL, NULL); - else - efa= addfacelist(neweve[0], neweve[2], neweve[1], neweve[3], NULL, NULL); + if(tria==2) join_triangles(); + else { + con1= convex(neweve[0]->co, neweve[1]->co, neweve[2]->co, neweve[3]->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); + + if(con1>=con2 && con1>=con3) + efa= addfacelist(neweve[0], neweve[1], neweve[2], neweve[3], NULL, NULL); + else if(con2>=con1 && con2>=con3) + efa= addfacelist(neweve[0], neweve[2], neweve[3], neweve[1], NULL, NULL); + else + efa= addfacelist(neweve[0], neweve[2], neweve[1], neweve[3], NULL, NULL); + } } else error("The selected vertices already form a face"); |