Index: branches/playability/src/world_entities/particles/emitter_node.cc
===================================================================
--- branches/playability/src/world_entities/particles/emitter_node.cc	(revision 10077)
+++ branches/playability/src/world_entities/particles/emitter_node.cc	(revision 10077)
@@ -0,0 +1,79 @@
+/*
+   orxonox - the future of 3D-vertical-scrollers
+
+   Copyright (C) 2004 orx
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 2, or (at your option)
+   any later version.
+
+   ### File Specific:
+   main-programmer: Benjamin Grauer
+   co-programmer: Patrick Boenzli
+*/
+
+#define DEBUG_SPECIAL_MODULE DEBUG_MODULE_GRAPHICS
+
+#include "emitter_node.h"
+
+#include "particle_system.h"
+
+#include "util/loading/load_param.h"
+#include "debug.h"
+
+ObjectListDefinition(EmitterNode);
+
+/**
+ *  standard constructor
+*/
+EmitterNode::EmitterNode( float lifetime)
+{
+  this->registerObject(this, EmitterNode::_objectList);
+
+  this->system = NULL;
+  this->emitter = NULL;
+  this->lifeCycle = 0.0;
+  this->lifeSpan = lifetime;
+}
+
+/**
+ *  standard destructor
+
+   removes the EmitterSystem from the ParticleEngine
+*/
+EmitterNode::~EmitterNode ()
+{
+  this->emitter->setSystem(NULL);
+  delete this->emitter;
+}
+
+/**
+ *  loads a EmitterNode from a XML-element
+ * @param root the XML-element to load from
+*/
+void EmitterNode::loadParams(const TiXmlElement* root)
+{
+  PNode::loadParams(root);
+
+  LoadParam(root, "life-time", this, EmitterNode, setLifetime)
+    .describe("Amount of time this emitter node shall remain");
+}
+
+void EmitterNode::start()
+{
+   this->started  = true;
+}
+
+void EmitterNode::tick(float dt)
+{
+  if( !this->started)
+    return;
+
+  this->lifeCycle += dt/this->lifeSpan;
+  if  (unlikely(this->lifeCycle >= 1))
+  {
+    this->removeNode();
+  }
+  this->setAbsCoor(this->getAbsCoor() + (this->velocity * dt));
+}
Index: branches/playability/src/world_entities/particles/emitter_node.h
===================================================================
--- branches/playability/src/world_entities/particles/emitter_node.h	(revision 10077)
+++ branches/playability/src/world_entities/particles/emitter_node.h	(revision 10077)
@@ -0,0 +1,47 @@
+/*!
+ * @file particle_emitter.h
+  *  Definition of a EmitterNode
+  *  An emitter node is a node that takes an emitter and a particle system and keeps them alive for a given amount of time.
+*/
+
+#ifndef _EMITTER_NODE_H
+#define _EMITTER_NODE_H
+
+#include "p_node.h"
+#include "dot_emitter.h"
+
+// FORWARD DECLARATION
+class DotEmitter;
+class ParticleEmitter;
+class TiXmlElement;
+
+//! A class to handle an Emitter.
+class EmitterNode : public PNode
+{
+  ObjectListDeclaration(EmitterNode);
+public:
+  EmitterNode(float lifetime);
+  virtual ~EmitterNode();
+
+  virtual void loadParams(const TiXmlElement* root = NULL);
+  
+  virtual void tick( float time);
+
+  void start();
+  inline void setVelocity(Vector velocity) { this->velocity = velocity;};
+
+  inline void setupParticle(DotEmitter* emitter, ParticleSystem* system) { this->emitter = emitter; this->system = system;} ;
+  void setLifetime( float lifeTime) { this->lifeSpan  = lifeTime;};
+
+private:
+  float           lifeSpan;           //!< Life time of this emitter node
+  float           lifeCycle;          
+  bool            started;            //!< was this emitter node started?
+
+  Vector          velocity;           //!< Velocity per second of the node
+
+  DotEmitter*  emitter;          //!< emitter which is held and kept alive
+  ParticleSystem*   system;           //!< system to be used on the particle emitter
+};
+
+#endif /* _EMITTER_NODE_H */
Index: branches/playability/src/world_entities/weapons/swarm_launcher.cc
===================================================================
--- branches/playability/src/world_entities/weapons/swarm_launcher.cc	(revision 10075)
+++ branches/playability/src/world_entities/weapons/swarm_launcher.cc	(revision 10077)
@@ -144,5 +144,5 @@
 void SwarmLauncher::fire()
 {
-  Projectile* pj;
+  Projectile* pj = NULL;
   int i = 0;
   std::list<WorldEntity*> eList  = State::getObjectManager()->getEntityList( OM_GROUP_00);
