Index: orxonox/trunk/src/lib/particles/particle_emitter.cc
===================================================================
--- orxonox/trunk/src/lib/particles/particle_emitter.cc	(revision 4492)
+++ orxonox/trunk/src/lib/particles/particle_emitter.cc	(revision 4493)
@@ -37,4 +37,5 @@
   this->emitterSize = 1.0;
   this->direction = direction;
+  this->setInheritSpeed(0);
   this->setSpread(angle);
   this->setEmissionRate(emissionRate);
@@ -157,4 +158,21 @@
   else
     this->emissionRate = 0.0;
+}
+
+/**
+   \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 ParticleEmitter::setInheritSpeed(float value)
+{
+  if (unlikely(value > 1.0))
+    this->inheritSpeed = 1;
+  else if (unlikely(value < 0.0))
+    this->inheritSpeed = 0;
+  else
+    this->inheritSpeed = value;
 }
 
@@ -207,5 +225,5 @@
     if (likely(count > 0))
       {
-	Vector inheritVelocity = this->getVelocity() * system->inheritSpeed;
+	Vector inheritVelocity = this->getVelocity() * this->inheritSpeed;
 	for (int i = 0; i < count; i++)
 	  // emmits from EMITTER_DOT,
@@ -242,4 +260,4 @@
 void ParticleEmitter::debug(void)
 {
-
-}
+  PRINT(0)(" Emitter %s\n", this->getName());
+}
Index: orxonox/trunk/src/lib/particles/particle_emitter.h
===================================================================
--- orxonox/trunk/src/lib/particles/particle_emitter.h	(revision 4492)
+++ orxonox/trunk/src/lib/particles/particle_emitter.h	(revision 4493)
@@ -40,4 +40,5 @@
   void setSize(float emitterSize);
   void setEmissionRate(float emissionRate);
+  void setInheritSpeed(float value);
   void setSpread(float angle, float randomAngle = 0.0);
   void setEmissionVelocity(float velocity, float randomVelocity = 0.0);
@@ -49,4 +50,6 @@
   /** \returns the emissionRate */
   inline float getEmissionRate(void) const { return this->emissionRate; };
+  /** \returns the inherit-speed-factor */
+  inline float getInheritSpeed(void) const { return this->inheritSpeed; };
   /** \returns the SpreadAngle of the emitter */
   inline float getSpread(void) { return this->angle; };
@@ -60,4 +63,5 @@
   EMITTER_TYPE    type;              //!< The type of emitter this is
   float           emitterSize;       //!< The size of the emitter (not for EMITTER_DOT)
+  float           inheritSpeed;      //!< How much speed the particle inherits from the Emitters speed \todo move this to the emitter
   Vector          direction;         //!< emition direction
   float           angle;             //!< max angle from the direction of the emitter
Index: orxonox/trunk/src/lib/particles/particle_system.cc
===================================================================
--- orxonox/trunk/src/lib/particles/particle_system.cc	(revision 4492)
+++ orxonox/trunk/src/lib/particles/particle_system.cc	(revision 4493)
@@ -42,5 +42,4 @@
   this->setClassID(CL_PARTICLE_SYSTEM, "ParticleSystem");
   this->material = NULL;
-  this->name = NULL;
   this->maxCount = maxCount;
   this->count = 0;
@@ -49,5 +48,4 @@
   this->setConserve(1);
   this->setLifeSpan(1);
-  this->setInheritSpeed(0);
   this->glID = NULL;
   this->setType(type, 1);
@@ -123,21 +121,4 @@
 {
   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;
 }
 
@@ -453,5 +434,5 @@
 void ParticleSystem::debug(void)
 {
-  PRINT(0)("  ParticleSystem %s\n", this->name);
+  PRINT(0)("  ParticleSystem %s\n", this->getName());
   PRINT(0)("  ParticleCount: %d, maximumCount: %d :: filled %d%%\n", this->count, this->maxCount, 100*this->count/this->maxCount);
   if (deadList)
Index: orxonox/trunk/src/lib/particles/particle_system.h
===================================================================
--- orxonox/trunk/src/lib/particles/particle_system.h	(revision 4492)
+++ orxonox/trunk/src/lib/particles/particle_system.h	(revision 4493)
@@ -7,5 +7,5 @@
 #define _PARTICLE_SYSTEM_H
 
-#include "base_object.h"
+#include "world_entity.h"
 #include "physics_interface.h"
 
@@ -41,24 +41,22 @@
 typedef struct Particle
 {
-  float lifeTime;             //!< The time this particle has to live.
-  float lifeCycle;            //!< The fraction of time passed. (in percentage of its lifeTime)
+  float         lifeTime;            //!< The time this particle has to live.
+  float         lifeCycle;           //!< The fraction of time passed. (in percentage of its lifeTime)
 
-  Vector position;            //!< The current position of this particle.
-  Vector velocity;            //!< The current velocity of this particle.
-  Vector extForce;            //!< The external Force that influences this Particle.
-  Quaternion rotation;        //!< The current rotation of this particle.
-  float mass;                 //!< The mass of this particle.
-  float massRand;             //!< A random mass
-  float radius;               //!< The current size of this particle.
-  float radiusRand;           //!< a random Radius
+  Vector        position;            //!< The current position of this particle.
+  Vector        velocity;            //!< The current velocity of this particle.
+  Vector        extForce;            //!< The external Force that influences this Particle.
+  Quaternion    rotation;            //!< The current rotation of this particle.
+  float         mass;                //!< The mass of this particle.
+  float         massRand;            //!< A random mass
+  float         radius;              //!< The current size of this particle.
+  float         radiusRand;          //!< a random Radius
+  GLfloat       color [4];           //!< A Color for the particles.
 
-  GLfloat color [4];          //!< A Color for the particles.
-
-  Particle* next;             //!< pointer to the next particle in the List. (NULL if no preceding one)
+  Particle*     next;                //!< pointer to the next particle in the List. (NULL if no preceding one)
 };
 
 //! A class to handle ParticleSystems
-class ParticleSystem : public PhysicsInterface {
-  friend class ParticleEmitter;
+class ParticleSystem : public WorldEntity, public PhysicsInterface {
   
  public:
@@ -69,5 +67,4 @@
   void setType(PARTICLE_TYPE particleType, int count = 0);
   void setMaterial(Material* material);
-  void setInheritSpeed(float value);
   void setLifeSpan(float lifeSpan, float randomLifeSpan = 0.0);
   void setConserve(float conserve);
@@ -82,6 +79,4 @@
   /** \returns the Material that lies on this particles */
   inline const Material* getMaterial(void) const { return this->material; };
-  /** \returns the inherit-speed-factor */
-  inline float getInheritSpeed(void) const { return this->inheritSpeed; };
   /** \returns the lifespan of the particles */
   inline float getLifeSpan(void) const { return this->lifeSpan; };
@@ -101,12 +96,10 @@
   void addParticle(const Vector& position, const Vector& velocity, unsigned int data = 0);
 
-  void tick(float dt);
-  void draw(void) const;
+  virtual void tick(float dt);
+  virtual void draw(void) const;
 
   void debug(void);
 
  private:
-  char*             name;                //!< the Name of the Particle System
-
   float             conserve;            //!< How much energy gets conserved to the next Tick.
   float             lifeSpan;            //!< Initial lifetime of a Particle.
@@ -114,7 +107,5 @@
   float             initialMass;         //!< The initial Mass of the Particle
   float             randomInitialMass;   //!< The random initial Mass of the Particle
-  float             inheritSpeed;        //!< How much speed the particle inherits from the Emitters speed \todo move this to the emitter
 
-  // particles
   int               maxCount;            //!< The maximum count of Particles.
   int               count;               //!< The current count of Particles.
@@ -128,9 +119,9 @@
 
   // per particle attributes
-  QuickAnimation radiusAnim;             //!< Animation of the radius
-  QuickAnimation randRadiusAnim;         //!< Animation of the random Value of the radius
-  QuickAnimation massAnim;               //!< Animation of the mass
-  QuickAnimation randMassAnim;           //!< Animation of the random Mass
-  QuickAnimation colorAnim[4];           //!< Animation of the 4 colors (r,g,b,a)
+  QuickAnimation    radiusAnim;          //!< Animation of the radius
+  QuickAnimation    randRadiusAnim;      //!< Animation of the random Value of the radius
+  QuickAnimation    massAnim;            //!< Animation of the mass
+  QuickAnimation    randMassAnim;        //!< Animation of the random Mass
+  QuickAnimation    colorAnim[4];        //!< Animation of the 4 colors (r,g,b,a)
 };
 
Index: orxonox/trunk/src/subprojects/particles/Makefile.am
===================================================================
--- orxonox/trunk/src/subprojects/particles/Makefile.am	(revision 4492)
+++ orxonox/trunk/src/subprojects/particles/Makefile.am	(revision 4493)
@@ -6,4 +6,6 @@
 
 particles_LDADD = $(MAINSRCDIR)/lib/physics/libORXphysics.a \
+                  $(MAINSRCDIR)/lib/event/libORXevent.a \
+                  $(MAINSRCDIR)/lib/tinyxml/libtinyxml.a \
                   $(GTK2_LIBS) $(GTHREAD_LIBS) $(CURL_LIBS) \
 		  -lpthread
@@ -14,22 +16,22 @@
 particles_SOURCES= ../framework.cc \
 		   particle_fun.cc \
-		  $(MAINSRCDIR)/lib/particles/particle_engine.cc \
-		  $(MAINSRCDIR)/lib/particles/particle_system.cc \
-		  $(MAINSRCDIR)/lib/particles/particle_emitter.cc \
-		  $(MAINSRCDIR)/lib/graphics/light.cc \
-		  $(MAINSRCDIR)/util/state.cc \
-		  $(MAINSRCDIR)/world_entities/camera.cc \
-	  	  $(MAINSRCDIR)/lib/graphics/importer/model.cc \
-		  $(MAINSRCDIR)/lib/graphics/importer/objModel.cc \
-		  $(MAINSRCDIR)/lib/graphics/importer/primitive_model.cc \
-	  	  $(MAINSRCDIR)/lib/graphics/importer/array.cc \
-	  	  $(MAINSRCDIR)/lib/graphics/importer/material.cc \
-		  $(MAINSRCDIR)/lib/graphics/importer/texture.cc \
-		  $(MAINSRCDIR)/lib/graphics/graphics_engine.cc \
-		  $(MAINSRCDIR)/lib/lang/base_object.cc \
-		  $(MAINSRCDIR)/lib/math/vector.cc \
-		  $(MAINSRCDIR)/util/resource_manager.cc \
-		  $(MAINSRCDIR)/lib/graphics/text_engine.cc \
-		  $(MAINSRCDIR)/lib/coord/p_node.cc \
-		  $(MAINSRCDIR)/lib/coord/null_parent.cc \
-		  $(MAINSRCDIR)/lib/gui/gui_gtk.cc
+		   $(MAINSRCDIR)/lib/particles/particle_engine.cc \
+		   $(MAINSRCDIR)/lib/particles/particle_system.cc \
+		   $(MAINSRCDIR)/lib/particles/particle_emitter.cc \
+		   $(MAINSRCDIR)/lib/graphics/light.cc \
+		   $(MAINSRCDIR)/util/state.cc \
+		   $(MAINSRCDIR)/world_entities/camera.cc \
+	  	   $(MAINSRCDIR)/lib/graphics/importer/model.cc \
+		   $(MAINSRCDIR)/lib/graphics/importer/objModel.cc \
+		   $(MAINSRCDIR)/lib/graphics/importer/primitive_model.cc \
+	  	   $(MAINSRCDIR)/lib/graphics/importer/array.cc \
+	  	   $(MAINSRCDIR)/lib/graphics/importer/material.cc \
+		   $(MAINSRCDIR)/lib/graphics/importer/texture.cc \
+		   $(MAINSRCDIR)/lib/graphics/graphics_engine.cc \
+		   $(MAINSRCDIR)/lib/lang/base_object.cc \
+		   $(MAINSRCDIR)/lib/math/vector.cc \
+		   $(MAINSRCDIR)/util/resource_manager.cc \
+		   $(MAINSRCDIR)/lib/graphics/text_engine.cc \
+		   $(MAINSRCDIR)/lib/coord/p_node.cc \
+		   $(MAINSRCDIR)/lib/coord/null_parent.cc \
+		   $(MAINSRCDIR)/lib/gui/gui_gtk.cc
Index: orxonox/trunk/src/subprojects/particles/Makefile.in
===================================================================
--- orxonox/trunk/src/subprojects/particles/Makefile.in	(revision 4492)
+++ orxonox/trunk/src/subprojects/particles/Makefile.in	(revision 4493)
@@ -68,5 +68,7 @@
 am__DEPENDENCIES_1 =
 particles_DEPENDENCIES = $(MAINSRCDIR)/lib/physics/libORXphysics.a \
-	$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1)
+	$(MAINSRCDIR)/lib/event/libORXevent.a \
+	$(MAINSRCDIR)/lib/tinyxml/libtinyxml.a $(am__DEPENDENCIES_1) \
+	$(am__DEPENDENCIES_1)
 DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir)
 depcomp = $(SHELL) $(top_srcdir)/depcomp
@@ -214,4 +216,6 @@
 MAINSRCDIR = ../..
 particles_LDADD = $(MAINSRCDIR)/lib/physics/libORXphysics.a \
+                  $(MAINSRCDIR)/lib/event/libORXevent.a \
+                  $(MAINSRCDIR)/lib/tinyxml/libtinyxml.a \
                   $(GTK2_LIBS) $(GTHREAD_LIBS) $(CURL_LIBS) \
 		  -lpthread
@@ -222,24 +226,24 @@
 particles_SOURCES = ../framework.cc \
 		   particle_fun.cc \
-		  $(MAINSRCDIR)/lib/particles/particle_engine.cc \
-		  $(MAINSRCDIR)/lib/particles/particle_system.cc \
-		  $(MAINSRCDIR)/lib/particles/particle_emitter.cc \
-		  $(MAINSRCDIR)/lib/graphics/light.cc \
-		  $(MAINSRCDIR)/util/state.cc \
-		  $(MAINSRCDIR)/world_entities/camera.cc \
-	  	  $(MAINSRCDIR)/lib/graphics/importer/model.cc \
-		  $(MAINSRCDIR)/lib/graphics/importer/objModel.cc \
-		  $(MAINSRCDIR)/lib/graphics/importer/primitive_model.cc \
-	  	  $(MAINSRCDIR)/lib/graphics/importer/array.cc \
-	  	  $(MAINSRCDIR)/lib/graphics/importer/material.cc \
-		  $(MAINSRCDIR)/lib/graphics/importer/texture.cc \
-		  $(MAINSRCDIR)/lib/graphics/graphics_engine.cc \
-		  $(MAINSRCDIR)/lib/lang/base_object.cc \
-		  $(MAINSRCDIR)/lib/math/vector.cc \
-		  $(MAINSRCDIR)/util/resource_manager.cc \
-		  $(MAINSRCDIR)/lib/graphics/text_engine.cc \
-		  $(MAINSRCDIR)/lib/coord/p_node.cc \
-		  $(MAINSRCDIR)/lib/coord/null_parent.cc \
-		  $(MAINSRCDIR)/lib/gui/gui_gtk.cc
+		   $(MAINSRCDIR)/lib/particles/particle_engine.cc \
+		   $(MAINSRCDIR)/lib/particles/particle_system.cc \
+		   $(MAINSRCDIR)/lib/particles/particle_emitter.cc \
+		   $(MAINSRCDIR)/lib/graphics/light.cc \
+		   $(MAINSRCDIR)/util/state.cc \
+		   $(MAINSRCDIR)/world_entities/camera.cc \
+	  	   $(MAINSRCDIR)/lib/graphics/importer/model.cc \
+		   $(MAINSRCDIR)/lib/graphics/importer/objModel.cc \
+		   $(MAINSRCDIR)/lib/graphics/importer/primitive_model.cc \
+	  	   $(MAINSRCDIR)/lib/graphics/importer/array.cc \
+	  	   $(MAINSRCDIR)/lib/graphics/importer/material.cc \
+		   $(MAINSRCDIR)/lib/graphics/importer/texture.cc \
+		   $(MAINSRCDIR)/lib/graphics/graphics_engine.cc \
+		   $(MAINSRCDIR)/lib/lang/base_object.cc \
+		   $(MAINSRCDIR)/lib/math/vector.cc \
+		   $(MAINSRCDIR)/util/resource_manager.cc \
+		   $(MAINSRCDIR)/lib/graphics/text_engine.cc \
+		   $(MAINSRCDIR)/lib/coord/p_node.cc \
+		   $(MAINSRCDIR)/lib/coord/null_parent.cc \
+		   $(MAINSRCDIR)/lib/gui/gui_gtk.cc
 
 all: all-am
