diff options
author | Ton Roosendaal <ton@blender.org> | 2004-11-04 23:00:57 +0300 |
---|---|---|
committer | Ton Roosendaal <ton@blender.org> | 2004-11-04 23:00:57 +0300 |
commit | 82f8a02926752628170671bc3aad96599868c7c4 (patch) | |
tree | 03fef70f5720f6ebb6a2a04178d10f54b16dae58 /source | |
parent | 0ad6944283ba9ebeb203422404d3a09df4003761 (diff) |
- Added proper undopush for 'apply object'
- Added proper edgeflag test for knife
- Fixed error in 'make face' for cases I again didn't foresee (ordering
of vertices can be any, need to try 3 cases before rejecting)
Diffstat (limited to 'source')
-rw-r--r-- | source/blender/src/editmesh_add.c | 7 | ||||
-rw-r--r-- | source/blender/src/editmesh_loop.c | 2 | ||||
-rw-r--r-- | source/blender/src/editobject.c | 2 |
3 files changed, 10 insertions, 1 deletions
diff --git a/source/blender/src/editmesh_add.c b/source/blender/src/editmesh_add.c index a38debd3a88..0301b5aabd2 100644 --- a/source/blender/src/editmesh_add.c +++ b/source/blender/src/editmesh_add.c @@ -399,9 +399,16 @@ void addedgeface_mesh(void) /* if 4 edges exist, we just create the face, convex or not */ efa= addface_from_edges(); if(efa==NULL) { + /* the order of vertices can be anything, three cases to check */ if( convex(neweve[0]->co, neweve[1]->co, neweve[2]->co, neweve[3]->co) ) { efa= addfacelist(neweve[0], neweve[1], neweve[2], neweve[3], NULL, NULL); } + else if( convex(neweve[0]->co, neweve[2]->co, neweve[3]->co, neweve[1]->co) ) { + efa= addfacelist(neweve[0], neweve[2], neweve[3], neweve[1], NULL, NULL); + } + else if( convex(neweve[0]->co, neweve[2]->co, neweve[1]->co, neweve[3]->co) ) { + efa= addfacelist(neweve[0], neweve[2], neweve[1], neweve[3], NULL, NULL); + } else error("The selected vertices form a concave quad"); } } diff --git a/source/blender/src/editmesh_loop.c b/source/blender/src/editmesh_loop.c index c7f74d10a84..f15dc9e5515 100644 --- a/source/blender/src/editmesh_loop.c +++ b/source/blender/src/editmesh_loop.c @@ -577,7 +577,7 @@ void KnifeSubdivide(char mode) if (curve && len && mode){ eed= em->edges.first; while(eed) { - if((eed->v1->f & 1) && (eed->v2->f & 1)){ + if( eed->f & SELECT ){ isect=seg_intersect(eed, curve, len); if (isect) eed->f2= 1; else eed->f2=0; diff --git a/source/blender/src/editobject.c b/source/blender/src/editobject.c index ac09483f079..2b5aaf9a2c3 100644 --- a/source/blender/src/editobject.c +++ b/source/blender/src/editobject.c @@ -2911,6 +2911,7 @@ void apply_object() /* texspace and normals */ BASACT= base; enter_editmode(); + BIF_undo_push("Applied object"); // editmode undo itself exit_editmode(1); // freedata, but no undo BASACT= basact; @@ -2978,6 +2979,7 @@ void apply_object() /* texspace and normals */ BASACT= base; enter_editmode(); + BIF_undo_push("Applied object"); // editmode undo itself exit_editmode(1); // freedata, but no undo BASACT= basact; } |