Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTon Roosendaal <ton@blender.org>2004-10-16 17:53:41 +0400
committerTon Roosendaal <ton@blender.org>2004-10-16 17:53:41 +0400
commita4637989846392d0b4149859169021e3dcf5aa82 (patch)
tree889e697d5eadea455753388652553a7e08645f7b /source/blender/src/editmesh_add.c
parent96f2f71cb176a9953f6bf9b9a222601c9c525066 (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.c30
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");