[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [24014] trunk/blender/source/blender/ editors/physics/particle_edit.c: Bugfix for a crash with the cut tool in particle mode.

Brecht Van Lommel brecht at blender.org
Tue Oct 20 20:49:23 CEST 2009


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





More information about the Bf-blender-cvs mailing list