[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [35867] trunk/blender/source/blender/ blenkernel: Fix for [#26658] Permeable colliders stop particles

Janne Karhu jhkarh at gmail.com
Tue Mar 29 12:27:32 CEST 2011


Revision: 35867
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=35867
Author:   jhk
Date:     2011-03-29 10:27:31 +0000 (Tue, 29 Mar 2011)
Log Message:
-----------
Fix for [#26658] Permeable colliders stop particles
* Forgot this exception from the collisions rewrite. Don't check collisions with the same face twice.

Modified Paths:
--------------
    trunk/blender/source/blender/blenkernel/BKE_particle.h
    trunk/blender/source/blender/blenkernel/intern/particle_system.c

Modified: trunk/blender/source/blender/blenkernel/BKE_particle.h
===================================================================
--- trunk/blender/source/blender/blenkernel/BKE_particle.h	2011-03-29 09:37:53 UTC (rev 35866)
+++ trunk/blender/source/blender/blenkernel/BKE_particle.h	2011-03-29 10:27:31 UTC (rev 35867)
@@ -157,8 +157,6 @@
 
 typedef struct ParticleCollisionElement
 {
-	Object *ob;
-
 	/* pointers to original data */
 	float *x[4], *v[4];
 
@@ -171,6 +169,9 @@
 	/* count of original data (1-4) */
 	int tot;
 
+	/* index of the collision face */
+	int index;
+
 	/* flags for inversed normal / particle already inside element at start */
 	short inv_nor, inside;
 } ParticleCollisionElement;

Modified: trunk/blender/source/blender/blenkernel/intern/particle_system.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/particle_system.c	2011-03-29 09:37:53 UTC (rev 35866)
+++ trunk/blender/source/blender/blenkernel/intern/particle_system.c	2011-03-29 10:27:31 UTC (rev 35867)
@@ -2989,7 +2989,12 @@
 
 	pce.tot = 3;
 	pce.inside = 0;
+	pce.index = index;
 
+	/* don't collide with same face again */
+	if(col->hit == col->current && col->pce.index == index && col->pce.tot == 3)
+		return;
+
 	do
 	{	
 		collision = collision_sphere_to_tri(col, ray->radius, &pce, &t);




More information about the Bf-blender-cvs mailing list