Index: trunk/src/world_entities/projectiles/bomb.cc
===================================================================
--- trunk/src/world_entities/projectiles/bomb.cc	(revision 6617)
+++ trunk/src/world_entities/projectiles/bomb.cc	(revision 6619)
@@ -25,5 +25,4 @@
 #include "object_manager.h"
 
-#include "particle_engine.h"
 #include "particle_emitter.h"
 #include "particle_system.h"
Index: trunk/src/world_entities/projectiles/guided_missile.cc
===================================================================
--- trunk/src/world_entities/projectiles/guided_missile.cc	(revision 6617)
+++ trunk/src/world_entities/projectiles/guided_missile.cc	(revision 6619)
@@ -23,5 +23,4 @@
 #include "class_list.h"
 
-#include "particle_engine.h"
 #include "particle_emitter.h"
 #include "particle_system.h"
@@ -113,5 +112,5 @@
   }
 
-  ParticleEngine::getInstance()->addConnection(this->emitter, GuidedMissile::trailParticles);
+  this->emitter->setSystem(GuidedMissile::trailParticles);
 
   this->updateNode(0);
@@ -123,5 +122,5 @@
 void GuidedMissile::deactivate()
 {
-  ParticleEngine::getInstance()->breakConnections(this->emitter);
+  this->emitter->setSystem(NULL);
   this->lifeCycle = 0.0;
 
@@ -184,6 +183,5 @@
   PRINTF(5)("DESTROY GuidedMissile\n");
   this->lifeCycle = .95; //!< @todo calculate this usefully.
-  ParticleEngine::getInstance()->breakConnection(this->emitter, GuidedMissile::trailParticles);
-  ParticleEngine::getInstance()->addConnection(this->emitter, GuidedMissile::explosionParticles);
+  this->emitter->setSystem(GuidedMissile::explosionParticles);
 
   this->emitter->setEmissionRate(1000.0);
Index: trunk/src/world_entities/projectiles/laser.cc
===================================================================
--- trunk/src/world_entities/projectiles/laser.cc	(revision 6617)
+++ trunk/src/world_entities/projectiles/laser.cc	(revision 6619)
@@ -24,5 +24,4 @@
 #include "model.h"
 
-#include "particle_engine.h"
 #include "particle_emitter.h"
 #include "particle_system.h"
@@ -93,5 +92,6 @@
 void Laser::deactivate()
 {
-  ParticleEngine::getInstance()->breakConnections(this->emitter);
+  assert (Laser::explosionParticles != NULL);
+  Laser::explosionParticles->removeEmitter(this->emitter);
   this->lifeCycle = 0.0;
 
@@ -130,5 +130,6 @@
   PRINTF(5)("DESTROY Laser\n");
   this->lifeCycle = .95; //!< @todo calculate this usefully.
-  ParticleEngine::getInstance()->addConnection(this->emitter, Laser::explosionParticles);
+
+  this->emitter->setSystem(Laser::explosionParticles);
 }
 
Index: trunk/src/world_entities/projectiles/rocket.cc
===================================================================
--- trunk/src/world_entities/projectiles/rocket.cc	(revision 6617)
+++ trunk/src/world_entities/projectiles/rocket.cc	(revision 6619)
@@ -23,5 +23,4 @@
 #include "class_list.h"
 
-#include "particle_engine.h"
 #include "particle_emitter.h"
 #include "particle_system.h"
@@ -110,5 +109,5 @@
   }
 
-  ParticleEngine::getInstance()->addConnection(this->emitter, Rocket::trailParticles);
+  this->emitter->setSystem(Rocket::trailParticles);
 
   this->updateNode(0);
@@ -120,5 +119,5 @@
 void Rocket::deactivate()
 {
-  ParticleEngine::getInstance()->breakConnections(this->emitter);
+  this->emitter->setSystem(NULL);
   this->lifeCycle = 0.0;
   this->toList(OM_NULL);
@@ -158,6 +157,5 @@
   PRINTF(5)("DESTROY Rocket\n");
   this->lifeCycle = .95; //!< @todo calculate this usefully.
-  ParticleEngine::getInstance()->breakConnection(this->emitter, Rocket::trailParticles);
-  ParticleEngine::getInstance()->addConnection(this->emitter, Rocket::explosionParticles);
+  this->emitter->setSystem(Rocket::explosionParticles);
 
   this->emitter->setEmissionRate(1000.0);
Index: trunk/src/world_entities/projectiles/test_bullet.cc
===================================================================
--- trunk/src/world_entities/projectiles/test_bullet.cc	(revision 6617)
+++ trunk/src/world_entities/projectiles/test_bullet.cc	(revision 6619)
@@ -23,5 +23,4 @@
 #include "class_list.h"
 
-#include "particle_engine.h"
 #include "particle_emitter.h"
 #include "particle_system.h"
@@ -105,5 +104,5 @@
   }
 
-  ParticleEngine::getInstance()->addConnection(this->emitter, TestBullet::trailParticles);
+  this->emitter->setSystem(TestBullet::trailParticles);
 
   this->emitter->setEmissionRate(20.0);
@@ -114,5 +113,5 @@
 void TestBullet::deactivate()
 {
-  ParticleEngine::getInstance()->breakConnections(this->emitter);
+  this->emitter->setSystem(NULL);
   this->lifeCycle = 0.0;
   this->toList(OM_NULL);
@@ -157,6 +156,5 @@
   PRINTF(5)("DESTROY TestBullet\n");
   this->lifeCycle = .95; //!< @todo calculate this usefully.
-  ParticleEngine::getInstance()->breakConnection(this->emitter, TestBullet::trailParticles);
-  ParticleEngine::getInstance()->addConnection(this->emitter, TestBullet::explosionParticles);
+  this->emitter->setSystem(TestBullet::explosionParticles);
 
   this->emitter->setEmissionRate(30.0);
