diff options
author | Ton Roosendaal <ton@blender.org> | 2004-12-15 14:36:46 +0300 |
---|---|---|
committer | Ton Roosendaal <ton@blender.org> | 2004-12-15 14:36:46 +0300 |
commit | 6719d88aab15627bdbe05f7ac116addffd2e165f (patch) | |
tree | 509395a67234006eecac181375f9214b06c5a3b1 | |
parent | 82421a2d7097698eb7689c7d128a8c8d6e8dea9f (diff) |
Bug #2019
Separate in Mesh editmode, selectmode 'face', and with a selection that
used to be in vertex mode a full select (like selecting the 2 opposing
faces in a cube) caused crash. There was still no good face-select
awareness there... tsk! :)
-rw-r--r-- | source/blender/src/drawview.c | 16 | ||||
-rw-r--r-- | source/blender/src/editmesh.c | 46 | ||||
-rw-r--r-- | source/blender/src/editmesh_tools.c | 2 |
3 files changed, 19 insertions, 45 deletions
diff --git a/source/blender/src/drawview.c b/source/blender/src/drawview.c index 3692e5c0e5f..9f60de5153d 100644 --- a/source/blender/src/drawview.c +++ b/source/blender/src/drawview.c @@ -2502,15 +2502,15 @@ void inner_play_anim_loop(int init, int mode) set_timecursor(CFRA); - clear_all_constraints(); - do_all_ipos(); - BPY_do_all_scripts(SCRIPT_FRAMECHANGED); - do_all_keys(); - do_all_actions(); - do_all_ikas(); - + //clear_all_constraints(); + //do_all_ipos(); + //BPY_do_all_scripts(SCRIPT_FRAMECHANGED); + //do_all_keys(); + //do_all_actions(); + //do_all_ikas(); + update_for_newframe_muted(); - test_all_displists(); + //test_all_displists(); #ifdef NAN_LINEAR_PHYSICS update_anim_sumo(); diff --git a/source/blender/src/editmesh.c b/source/blender/src/editmesh.c index 6a7372ae16a..e7b6812c73c 100644 --- a/source/blender/src/editmesh.c +++ b/source/blender/src/editmesh.c @@ -1300,7 +1300,6 @@ void separate_mesh(void) Base *base, *oldbase; ListBase edve, eded, edvl; float trans[9]; - int ok, flag; TEST_EDITMESH @@ -1332,23 +1331,14 @@ void separate_mesh(void) base= base->next; } - /* test for split */ - ok= 0; - eed= em->edges.first; - while(eed) { - flag= (eed->v1->f & SELECT)+(eed->v2->f & SELECT); - if(flag==SELECT) { - ok= 1; - break; - } - eed= eed->next; - } - if(ok) { - /* SPLIT: first make duplicate */ - adduplicateflag(SELECT); - /* SPLIT: old faces have 3x flag 128 set, delete these ones */ - delfaceflag(128); - } + /* no test for split, split doesn't split when a loose part is selected */ + /* SPLIT: first make duplicate */ + adduplicateflag(SELECT); + /* SPLIT: old faces have 3x flag 128 set, delete these ones */ + delfaceflag(128); + + /* since we do tricky things with verts/edges/faces, this makes sure all is selected coherent */ + EM_selectmode_set(); /* set apart: everything that is not selected */ edve.first= edve.last= eded.first= eded.last= edvl.first= edvl.last= 0; @@ -1438,7 +1428,7 @@ void separate_mesh_loose(void) Base *base, *oldbase; ListBase edve, eded, edvl; float trans[9]; - int ok, vertsep=0, flag; + int vertsep=0; short done=0, check=1; TEST_EDITMESH @@ -1514,23 +1504,7 @@ void separate_mesh_loose(void) */ if(G.totvert==vertsep) done=1; else{ - /* Test for splitting: Separate selected */ - ok= 0; - eed= em->edges.first; - while(eed) { - flag= (eed->v1->f & SELECT)+(eed->v2->f & SELECT); - if(flag==SELECT) { - ok= 1; - break; - } - eed= eed->next; - } - if(ok) { - /* SPLIT: first make duplicate */ - adduplicateflag(SELECT); - /* SPLIT: old faces have 3x flag 128 set, delete these ones */ - delfaceflag(128); - } + /* No splitting: select connected goes fine */ EM_select_flush(); // from verts->edges->faces diff --git a/source/blender/src/editmesh_tools.c b/source/blender/src/editmesh_tools.c index cde1f9dba79..2401df87f69 100644 --- a/source/blender/src/editmesh_tools.c +++ b/source/blender/src/editmesh_tools.c @@ -578,7 +578,7 @@ void split_mesh(void) countall(); allqueue(REDRAWVIEW3D, 0); makeDispList(G.obedit); - BIF_undo_push("Hash"); + BIF_undo_push("Split"); } |