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! :)
This commit is contained in:
2004-12-15 11:36:46 +00:00
parent 82421a2d70
commit 6719d88aab
3 changed files with 19 additions and 45 deletions

View File

@@ -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();

View File

@@ -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) {
/* 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

View File

@@ -578,7 +578,7 @@ void split_mesh(void)
countall();
allqueue(REDRAWVIEW3D, 0);
makeDispList(G.obedit);
BIF_undo_push("Hash");
BIF_undo_push("Split");
}