Index: /orxonox/branches/particleEngine/src/lib/graphics/particles/particle_emitter.cc
===================================================================
--- /orxonox/branches/particleEngine/src/lib/graphics/particles/particle_emitter.cc	(revision 3929)
+++ /orxonox/branches/particleEngine/src/lib/graphics/particles/particle_emitter.cc	(revision 3930)
@@ -29,8 +29,7 @@
    this->setClassName ("ParticleEmitter");
    this->direction = direction;
-   this->angle = angle;
+   this->setSpread(angle);
    this->emissionRate = emissionRate;
    this->velocity = velocity;
-   this->timeToLive = ttl;
 }
 
@@ -64,9 +63,10 @@
    \brief set the angle of the emitter
    \param angle around the direction in which there are particles to be emitted
+   \param random A random spread-angle, the +- randomness of this option
 
    if you want to change the value of this variable during emission time (to make it more dynamic)
-   you will have to use the animation class
+   you may want to use the animation class
 */
-void ParticleEmitter::setAngle(float angle)
+void ParticleEmitter::setSpread(float angle, float random)
 {}
 
@@ -75,9 +75,10 @@
    \brief set the emission rate
    \param sets the number of particles emitted per second
+   \param random A random emissionRate, the +- randomness of this option
 
    if you want to change the value of this variable during emission time (to make it more dynamic)
-   you will have to use the animation class
+   you may want to use the animation class
 */
-void ParticleEmitter::setEmissionRate(float emissionRate)
+void ParticleEmitter::setEmissionRate(float emissionRate, float random)
 {}
 
@@ -85,10 +86,11 @@
 /**
    \brief sets the velocity of all particles emitted
-   \param velocity of the emitted particles
+   \param velocity The starting velocity of the emitted particles
+   \param random A random starting velocity, the +- randomness of this option
 
    if you want to change the value of this variable during emission time (to make it more dynamic)
-   you will have to use the animation class
+   you may want to use the animation class
 */
-void ParticleEmitter::setVelocity(float velocity)
+void ParticleEmitter::setVelocity(float velocity, float random)
 {}
 
@@ -98,9 +100,6 @@
 
    if you want to change the value of this variable during emission time (to make it more dynamic)
-   you will have to use the animation class
+   you may want to use the animation class
 */
-void ParticleEmitter::setTTL(float ttl)
-{}
-
 
 /**
Index: /orxonox/branches/particleEngine/src/lib/graphics/particles/particle_emitter.h
===================================================================
--- /orxonox/branches/particleEngine/src/lib/graphics/particles/particle_emitter.h	(revision 3929)
+++ /orxonox/branches/particleEngine/src/lib/graphics/particles/particle_emitter.h	(revision 3930)
@@ -27,8 +27,7 @@
 
   /* controlling the behavour: these can be used as Animation interfaces */
-  void setAngle(float angle);
-  void setEmissionRate(float emissionRate);
-  void setVelocity(float velocity);
-  void setTTL(float ttl);
+  void setSpread(float angle, float random = 0.0);
+  void setEmissionRate(float emissionRate, float random = 0.0);
+  void setVelocity(float velocity, float random = 0.0);
 
   /* some functions needed for internal use */
@@ -40,5 +39,4 @@
   float emissionRate;   //!< amount of particles per seconds emitted by emiter
   float velocity;       //!< the contant speed a particle gets if been emitted
-  float timeToLive;     //!< this is the global time to live (ttl) definition
 };
 
Index: /orxonox/branches/particleEngine/src/lib/graphics/particles/particle_engine.cc
===================================================================
--- /orxonox/branches/particleEngine/src/lib/graphics/particles/particle_engine.cc	(revision 3929)
+++ /orxonox/branches/particleEngine/src/lib/graphics/particles/particle_engine.cc	(revision 3930)
@@ -18,6 +18,7 @@
 #include "particle_engine.h"
 
+#include "list.h"
+
 using namespace std;
-
 
 /**
@@ -28,4 +29,5 @@
    this->setClassName ("ParticleEngine");
 
+   this->partSysList = new tList<ParticleSystem>;
 }
 
@@ -51,5 +53,7 @@
 ParticleEngine::~ParticleEngine () 
 {
+  delete this->partSysList;
+
+
   ParticleEngine::singletonRef = NULL;
-
 }
Index: /orxonox/branches/particleEngine/src/lib/graphics/particles/particle_engine.h
===================================================================
--- /orxonox/branches/particleEngine/src/lib/graphics/particles/particle_engine.h	(revision 3929)
+++ /orxonox/branches/particleEngine/src/lib/graphics/particles/particle_engine.h	(revision 3930)
@@ -28,5 +28,4 @@
 
   tList<ParticleSystem>* partSysList;
-
 };
 
Index: /orxonox/branches/particleEngine/src/lib/graphics/particles/particle_system.cc
===================================================================
--- /orxonox/branches/particleEngine/src/lib/graphics/particles/particle_system.cc	(revision 3929)
+++ /orxonox/branches/particleEngine/src/lib/graphics/particles/particle_system.cc	(revision 3930)
@@ -18,4 +18,7 @@
 #include "particle_system.h"
 
+#include "particle_emitter.h"
+#include "particle_engine.h"
+
 using namespace std;
 
@@ -23,9 +26,14 @@
 /**
    \brief standard constructor
+   \param count the Count of particles in the System
+   \param type The Type of the ParticleSystem
+
    \todo this constructor is not jet implemented - do it
 */
-ParticleSystem::ParticleSystem () 
+ParticleSystem::ParticleSystem (unsigned int count, PARTICLE_TYPE type) 
 {
    this->setClassName ("ParticleSystem");
+
+   this->particleType = type;
 }
 
Index: /orxonox/branches/particleEngine/src/lib/graphics/particles/particle_system.h
===================================================================
--- /orxonox/branches/particleEngine/src/lib/graphics/particles/particle_system.h	(revision 3929)
+++ /orxonox/branches/particleEngine/src/lib/graphics/particles/particle_system.h	(revision 3930)
@@ -9,8 +9,18 @@
 #include "base_object.h"
 #include "vector.h"
+
+//! An enumerator for the different types of particles.
+typedef enum PARTICLE_TYPE {PARTICLE_DOT,
+			    PARTICLE_SPRITE,
+			    PARTICLE_OBJECT,
+			    PARTICLE_OBJECT_ARRAY,
+			    PARTICLE_PRIMITIVE};
+
+#define PARTICLE_DEFAULT_COUNT 200             //!< a default count of particles in the system.
+#define PARTICLE_DEFAULT_TYPE  PARTICLE_SPRITE //!< A default type of the system.
+
 // FORWARD DEFINITION
-
 class Material;
-class Vector;
+class ParticleEmitter;
 
 
@@ -18,8 +28,10 @@
 typedef struct Particle
 {
-  float timeToLive;
-  Vector position;
-  Quaternion rotation;
-  Material* material;  
+  float timeToLive;           //!< The time this particle lives from NOW on.
+  Vector position;            //!< The current position of this particle.
+  Vector velocity;            //!< The current velocity of this particle.
+  Quaternion rotation;        //!< The current rotation of this particle.
+
+  //  Particle* next;            //!< pointer to the next particle in the List. (NULL if no preceding one)
 };
 
@@ -28,13 +40,17 @@
 
  public:
-  ParticleSystem();
+  ParticleSystem(unsigned int particleCount = PARTICLE_DEFAULT_COUNT, PARTICLE_TYPE type = PARTICLE_DEFAULT_TYPE);
   virtual ~ParticleSystem();
 
+  void setMaterial(Material* material);
+  void addEmitter(ParticleEmitter* emitter);
 
  private:
+  int particleCount;         //!< the count of Particles for this ParticleSystem.
+  PARTICLE_TYPE particleType;//!< A type for the Particles
+  Particle* particles;       //!< A list of particles of this System.
+  Material* material;        //!< A Material for all the Particles.
 
-  int particleCount;
-
-  Particle* particles;
+  ParticleEmitter* emitter;  //!< An emitter for this particleSystem.
 };
 
