Index: orxonox/branches/particleEngine/src/lib/coord/p_node.cc
===================================================================
--- orxonox/branches/particleEngine/src/lib/coord/p_node.cc	(revision 3937)
+++ orxonox/branches/particleEngine/src/lib/coord/p_node.cc	(revision 3938)
@@ -307,4 +307,11 @@
 }
 
+/**
+   \returns the Velocity of the PNode
+*/
+Vector PNode::getVelocity() const
+{
+  return (*this->absCoordinate - *this->lastAbsCoordinate) / this->time;
+}
 
 /**
Index: orxonox/branches/particleEngine/src/lib/coord/p_node.h
===================================================================
--- orxonox/branches/particleEngine/src/lib/coord/p_node.h	(revision 3937)
+++ orxonox/branches/particleEngine/src/lib/coord/p_node.h	(revision 3938)
@@ -70,4 +70,5 @@
 
   float getSpeed() const;
+  Vector getVelocity() const;
 
   void addChild (PNode* pNode, int parentingMode = DEFAULT_MODE);
Index: orxonox/branches/particleEngine/src/lib/graphics/particles/particle_emitter.cc
===================================================================
--- orxonox/branches/particleEngine/src/lib/graphics/particles/particle_emitter.cc	(revision 3937)
+++ orxonox/branches/particleEngine/src/lib/graphics/particles/particle_emitter.cc	(revision 3938)
@@ -10,9 +10,9 @@
 
    ### File Specific:
-   main-programmer: ...
+   main-programmer: Benjamin Grauer
    co-programmer: Patrick Boenzli
 */
 
-//#define DEBUG_SPECIAL_MODULE DEBUG_MODULE_WORLD_ENTITY
+#define DEBUG_SPECIAL_MODULE DEBUG_MODULE_PARTICLE
 
 #include "particle_emitter.h"
@@ -132,5 +132,6 @@
       randDir.normalize();
       randDir = (this->getAbsDir()*Quaternion(angle + randomAngle *((float)random()/RAND_MAX -.5), randDir)).apply(this->direction);
-      randDir.normalize();
+      randDir = *randDir.getNormalized() + (this->getVelocity() * system->inheritSpeed);
+
       system->addParticle(this->getAbsCoor(), randDir* velocity);
     }
Index: orxonox/branches/particleEngine/src/lib/graphics/particles/particle_engine.cc
===================================================================
--- orxonox/branches/particleEngine/src/lib/graphics/particles/particle_engine.cc	(revision 3937)
+++ orxonox/branches/particleEngine/src/lib/graphics/particles/particle_engine.cc	(revision 3938)
@@ -14,5 +14,5 @@
 */
 
-//#define DEBUG_SPECIAL_MODULE DEBUG_MODULE_WORLD_ENTITY
+#define DEBUG_SPECIAL_MODULE DEBUG_MODULE_PARTICLE
 
 #include "particle_engine.h"
@@ -145,5 +145,4 @@
     }
   delete tmpIt;
-
 }
 
Index: orxonox/branches/particleEngine/src/lib/graphics/particles/particle_system.cc
===================================================================
--- orxonox/branches/particleEngine/src/lib/graphics/particles/particle_system.cc	(revision 3937)
+++ orxonox/branches/particleEngine/src/lib/graphics/particles/particle_system.cc	(revision 3938)
@@ -42,4 +42,5 @@
    this->setConserve(.8);
    this->setLifeSpan(.1);
+   this->setInheritSpeed(0);
 
    ParticleEngine::getInstance()->addSystem(this);
@@ -62,4 +63,24 @@
   this->material = material;
 }
+
+
+/**
+   \brief how much of the speed from the ParticleEmitter should flow onto the ParticleSystem
+   \param value a Value between zero and one
+
+   
+   if you want to change the value of this variable during emission time (to make it more dynamic)
+   you may want to use the animation class
+*/
+void ParticleSystem::setInheritSpeed(float value)
+{
+  if (unlikely(value > 1.0))
+    this->inheritSpeed = 1;
+  else if (unlikely(value < 0.0))
+    this->inheritSpeed = 0;
+  else
+    this->inheritSpeed = value;
+}
+
 
 void ParticleSystem::setLifeSpan(float lifeSpan, float randomLifeSpan)
Index: orxonox/branches/particleEngine/src/lib/graphics/particles/particle_system.h
===================================================================
--- orxonox/branches/particleEngine/src/lib/graphics/particles/particle_system.h	(revision 3937)
+++ orxonox/branches/particleEngine/src/lib/graphics/particles/particle_system.h	(revision 3938)
@@ -49,4 +49,5 @@
 
   void setMaterial(Material* material);
+  void setInheritSpeed(float value);
   void setLifeSpan(float lifeSpan, float randomLifeSpan = 0.0);
   void setRadius(float startRadius, float endRadius, float randomRadius = 0.0);
@@ -66,5 +67,6 @@
   float initialMass;
   float randomInitialMass;
-  
+  float inheritSpeed;
+
   // particles
   int maxCount;              //!< The maximum count of Particles.
