Die Grundidee stammt aus dem pyrocluster plugin im 3dmax: die größe eines partikels und dessen dichte hängt vom abstand zur wolke ab und von dessen lebensdauer. Will heißen: löst sich ein partikel von der wolke fadet er aus.
Deine Partikel haben zwar eine kollisionsabfrage zu den levelgeometrien, verkeilen sich untereinander aber nicht am rand sondern in deren mitte. D.h.: der Rand des 2. partikels geht durch die mitte des 1sten. löst sich das partikel verkleinert es sich automatisch und verschwindet.
Ich seh nur nicht wohin das führen soll. In echtzeitspielen muss eben optimiert werden. Und nur damit ein partikel nicht durch ne wand geht so viele rechenoperationen durchführen scheint keinen sinn zu machen.