Revision: 24014 http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=24014 Author: blendix Date: 2009-10-20 20:49:21 +0200 (Tue, 20 Oct 2009)
Log Message: ----------- Bugfix for a crash with the cut tool in particle mode. Modified Paths: -------------- trunk/blender/source/blender/editors/physics/particle_edit.c Modified: trunk/blender/source/blender/editors/physics/particle_edit.c =================================================================== --- trunk/blender/source/blender/editors/physics/particle_edit.c 2009-10-20 18:27:46 UTC (rev 24013) +++ trunk/blender/source/blender/editors/physics/particle_edit.c 2009-10-20 18:49:21 UTC (rev 24014) @@ -2901,7 +2901,7 @@ (data->edit->points + point_index)->flag |= PEP_EDIT_RECALC; } -static void brush_add(PEData *data, short number) +static int brush_add(PEData *data, short number) { Scene *scene= data->scene; Object *ob= data->ob; @@ -2922,7 +2922,7 @@ Mat4Invert(imat,ob->obmat); if(psys->flag & PSYS_GLOBAL_HAIR) - return; + return 0; BLI_srandom(psys->seed+data->mval[0]+data->mval[1]); @@ -3097,6 +3097,8 @@ if(!psmd->dm->deformedOnly) dm->release(dm); + + return n; } /************************* brush edit operator ********************/ @@ -3147,7 +3149,7 @@ ARegion *ar= CTX_wm_region(C); float vec[3], mousef[2]; short mval[2], mvalo[2]; - int flip, mouse[2], dx, dy, removed= 0, selected= 0; + int flip, mouse[2], dx, dy, removed= 0, added=0, selected= 0; int lock_root = pset->flag & PE_LOCK_FIRST; if(!PE_start_edit(edit)) @@ -3225,6 +3227,9 @@ if(pset->flag & PE_KEEP_LENGTHS) recalc_lengths(edit); } + else + removed= 0; + break; } case PE_BRUSH_LENGTH: @@ -3279,11 +3284,13 @@ PE_set_view3d_data(C, &data); data.mval= mval; - brush_add(&data, brush->strength); + added= brush_add(&data, brush->strength); if(pset->flag & PE_KEEP_LENGTHS) recalc_lengths(edit); } + else + added= 0; break; } case PE_BRUSH_SMOOTH: @@ -3314,13 +3321,15 @@ if((pset->flag & PE_KEEP_LENGTHS)==0) recalc_lengths(edit); - if(pset->brushtype == PE_BRUSH_ADD || removed) { - if(pset->brushtype == PE_BRUSH_ADD && (pset->flag & PE_X_MIRROR)) - PE_mirror_x(scene, ob, 1); + if(ELEM(pset->brushtype, PE_BRUSH_ADD, PE_BRUSH_CUT)) { + if(added || removed) { + if(pset->brushtype == PE_BRUSH_ADD && (pset->flag & PE_X_MIRROR)) + PE_mirror_x(scene, ob, 1); - update_world_cos(ob,edit); - psys_free_path_cache(NULL, edit); - DAG_id_flush_update(&ob->id, OB_RECALC_DATA); + update_world_cos(ob,edit); + psys_free_path_cache(NULL, edit); + DAG_id_flush_update(&ob->id, OB_RECALC_DATA); + } } else PE_update_object(scene, ob, 1); _______________________________________________ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org http://lists.blender.org/mailman/listinfo/bf-blender-cvs