Index: trunk/src/lib/particles/box_emitter.cc
===================================================================
--- trunk/src/lib/particles/box_emitter.cc	(revision 6824)
+++ trunk/src/lib/particles/box_emitter.cc	(revision 6825)
@@ -33,5 +33,6 @@
  *  standard constructor
 */
-BoxEmitter::BoxEmitter(const Vector& size)
+BoxEmitter::BoxEmitter(const Vector& size, float emissionRate, float velocity, float angle)
+    :  ParticleEmitter(emissionRate, velocity, angle)
 {
   this->init();
@@ -88,5 +89,5 @@
     Vector randDir = Vector(rand()-RAND_MAX/2, rand()-RAND_MAX/2, rand()-RAND_MAX/2);
     randDir.normalize();
-    randDir = (this->getAbsDir()*Quaternion(angle + randomAngle *((float)rand()/RAND_MAX -.5), randDir)).apply(this->direction);
+    randDir = (Quaternion(angle + randomAngle *((float)rand()/RAND_MAX -.5), randDir)).apply(this->getAbsDirX());
     Vector velocityV = randDir.getNormalized()*this->velocity + inheritVelocity;
 
Index: trunk/src/lib/particles/box_emitter.h
===================================================================
--- trunk/src/lib/particles/box_emitter.h	(revision 6824)
+++ trunk/src/lib/particles/box_emitter.h	(revision 6825)
@@ -9,4 +9,6 @@
 #include "particle_emitter.h"
 
+#define BOX_EMITTER_DEFAULT_SIZE Vector(1.0f, 1.0f, 1.0f)
+
 //! A class to handle an Emitter.
 class BoxEmitter : public ParticleEmitter
@@ -14,5 +16,8 @@
   friend class ParticleSystem;
 public:
-  BoxEmitter(const Vector& size);
+  BoxEmitter(const Vector& size = BOX_EMITTER_DEFAULT_SIZE,
+             float emissionRate = PARTICLE_EMITTER_DEFAULT_EMISSION_RATE,
+             float velocity = PARTICLE_EMITTER_DEFAULT_VELOCITY,
+             float angle = PARTICLE_EMITTER_DEFAULT_SPREAD);
   BoxEmitter(const TiXmlElement* root);
   virtual ~BoxEmitter();
@@ -23,4 +28,5 @@
   void setSize(const Vector& size) { this->setSize(size.x, size.y, size.z); };
 
+protected:
   virtual void emitParticles(unsigned int count) const;
 
Index: trunk/src/lib/particles/dot_emitter.cc
===================================================================
--- trunk/src/lib/particles/dot_emitter.cc	(revision 6824)
+++ trunk/src/lib/particles/dot_emitter.cc	(revision 6825)
@@ -33,7 +33,6 @@
  *  standard constructor
 */
-DotEmitter::DotEmitter(const Vector& direction, float angle, float emissionRate,
-                       float velocity)
-  : ParticleEmitter(direction, angle, emissionRate, velocity)
+DotEmitter::DotEmitter(float emissionRate, float velocity, float angle)
+  : ParticleEmitter( emissionRate, velocity, angle)
 {
   this->init();
@@ -79,5 +78,5 @@
     Vector randDir = Vector(rand()-RAND_MAX/2, rand()-RAND_MAX/2, rand()-RAND_MAX/2);
     randDir.normalize();
-    randDir = (this->getAbsDir()*Quaternion(angle + randomAngle *((float)rand()/RAND_MAX -.5), randDir)).apply(this->direction);
+    randDir = (Quaternion(angle + randomAngle *((float)rand()/RAND_MAX -.5), randDir)).apply(this->getAbsDirX());
     Vector velocityV = randDir.getNormalized()*this->velocity + inheritVelocity;
 
Index: trunk/src/lib/particles/dot_emitter.h
===================================================================
--- trunk/src/lib/particles/dot_emitter.h	(revision 6824)
+++ trunk/src/lib/particles/dot_emitter.h	(revision 6825)
@@ -14,10 +14,9 @@
   friend class ParticleSystem;
 public:
-  DotEmitter(const Vector& direction, float angle = .5,
-             float emissionRate = 1.0, float velocity = 1.0);
+  DotEmitter(float emissionRate = 1.0, float velocity = 1.0, float angle = .5);
   DotEmitter(const TiXmlElement* root);
   virtual ~DotEmitter();
 
-
+protected:
   virtual void emitParticles(unsigned int count) const;
 
Index: trunk/src/lib/particles/particle_emitter.cc
===================================================================
--- trunk/src/lib/particles/particle_emitter.cc	(revision 6824)
+++ trunk/src/lib/particles/particle_emitter.cc	(revision 6825)
@@ -29,6 +29,5 @@
  *  standard constructor
 */
-ParticleEmitter::ParticleEmitter(const Vector& direction, float angle, float emissionRate,
-                  float velocity)
+ParticleEmitter::ParticleEmitter(float emissionRate, float velocity, float angle)
 {
   this->setClassID(CL_PARTICLE_EMITTER, "ParticleEmitter");
@@ -38,5 +37,4 @@
   this->setInheritSpeed(PARTICLE_EMITTER_DEFAULT_INHERIT_SPEED);
   this->setEmissionMomentum(0);
-  this->direction = direction;
   this->setSpread(angle);
   this->setEmissionRate(emissionRate);
@@ -78,7 +76,4 @@
   LoadParam(root, "spread", this, ParticleEmitter, setSpread)
     .describe("The angle the particles are emitted from (angle, deviation)");
-
-
-  LoadParam(root, "emission-direction", this, ParticleEmitter, setDirection);
 }
 
Index: trunk/src/lib/particles/particle_emitter.h
===================================================================
--- trunk/src/lib/particles/particle_emitter.h	(revision 6824)
+++ trunk/src/lib/particles/particle_emitter.h	(revision 6825)
@@ -18,4 +18,5 @@
 #define PARTICLE_EMITTER_DEFAULT_INHERIT_SPEED     0.0
 #define PARTICLE_EMITTER_DEFAULT_SPREAD            M_PI
+#define PARTICLE_EMITTER_DEFAULT_VELOCITY          1.0
 
 //! A class to handle an Emitter.
@@ -24,6 +25,7 @@
   friend class ParticleSystem;
 public:
-  ParticleEmitter(const Vector& direction = Vector(1.0,0.0,0.0) , float angle = .5,
-                  float emissionRate = 1.0, float velocity = 1.0);
+  ParticleEmitter(float emissionRate = PARTICLE_EMITTER_DEFAULT_EMISSION_RATE,
+                  float velocity = PARTICLE_EMITTER_DEFAULT_VELOCITY,
+                  float angle = PARTICLE_EMITTER_DEFAULT_SPREAD);
   virtual ~ParticleEmitter();
 
@@ -45,6 +47,4 @@
   void setEmissionMomentum(float momentum, float randomMomentum = 0.0);
 
-  void setDirection(float x, float y, float z) { this->direction = Vector(x,y,z); }; //!< todo this should be done via PNODE
-
   /** @returns the emissionRate */
   inline float getEmissionRate() const { return this->emissionRate; };
@@ -58,12 +58,12 @@
   inline float getEmissionMomentum() const { return this->momentum; };
 
-  virtual void emitParticles(unsigned int count) const = 0;
 
   void debug() const;
 
 protected:
+  virtual void emitParticles(unsigned int count) const = 0;
 
+protected:
   float           inheritSpeed;      //!< How much speed the particle inherits from the Emitters speed.
-  Vector          direction;         //!< emition direction.
   float           angle;             //!< max angle from the direction of the emitter
   float           randomAngle;       //!< random emission angle (angle +- angleRandom is the emitted angle.
Index: trunk/src/world_entities/projectiles/bomb.cc
===================================================================
--- trunk/src/world_entities/projectiles/bomb.cc	(revision 6824)
+++ trunk/src/world_entities/projectiles/bomb.cc	(revision 6825)
@@ -50,5 +50,5 @@
   this->lifeSpan = 15;
 
-  this->emitter = new DotEmitter(Vector(0,1,0), M_2_PI, 100, 5);
+  this->emitter = new DotEmitter(100, 5, M_2_PI);
   this->emitter->setParent(this);
   this->emitter->setSpread(M_PI, M_PI);
Index: trunk/src/world_entities/projectiles/guided_missile.cc
===================================================================
--- trunk/src/world_entities/projectiles/guided_missile.cc	(revision 6824)
+++ trunk/src/world_entities/projectiles/guided_missile.cc	(revision 6825)
@@ -46,5 +46,5 @@
   this->maxVelocity = 75;
 
-  this->emitter = new DotEmitter(Vector(0,1,0), M_2_PI, 100, 5);
+  this->emitter = new DotEmitter(100, 5, M_2_PI);
   this->emitter->setParent(this);
   this->emitter->setSpread(M_PI, M_PI);
Index: trunk/src/world_entities/projectiles/hyperblast.cc
===================================================================
--- trunk/src/world_entities/projectiles/hyperblast.cc	(revision 6824)
+++ trunk/src/world_entities/projectiles/hyperblast.cc	(revision 6825)
@@ -47,5 +47,5 @@
   this->size = 4.0;
 
-  this->emitter = new DotEmitter(Vector(0,1,0), M_2_PI, 100, 5);
+  this->emitter = new DotEmitter(100, 5, M_2_PI);
   this->emitter->setParent(this);
   this->emitter->setSpread(M_PI, M_PI);
Index: trunk/src/world_entities/projectiles/laser.cc
===================================================================
--- trunk/src/world_entities/projectiles/laser.cc	(revision 6824)
+++ trunk/src/world_entities/projectiles/laser.cc	(revision 6825)
@@ -48,5 +48,5 @@
   this->lifeSpan = 5.0;
 
-  this->emitter = new DotEmitter(Vector(0,1,0), M_2_PI, 100, 5);
+  this->emitter = new DotEmitter(100, 5, M_2_PI);
   this->emitter->setParent(this);
   this->emitter->setSpread(M_PI, M_PI);
Index: trunk/src/world_entities/projectiles/rocket.cc
===================================================================
--- trunk/src/world_entities/projectiles/rocket.cc	(revision 6824)
+++ trunk/src/world_entities/projectiles/rocket.cc	(revision 6825)
@@ -45,5 +45,5 @@
   this->lifeSpan = 5;
 
-  this->emitter = new DotEmitter(Vector(0,1,0), M_2_PI, 100, 5);
+  this->emitter = new DotEmitter(100, 5, M_2_PI);
   this->emitter->setParent(this);
   this->emitter->setSpread(M_PI, M_PI);
Index: trunk/src/world_entities/projectiles/test_bullet.cc
===================================================================
--- trunk/src/world_entities/projectiles/test_bullet.cc	(revision 6824)
+++ trunk/src/world_entities/projectiles/test_bullet.cc	(revision 6825)
@@ -45,5 +45,5 @@
   this->lifeSpan = 2;
 
-  this->emitter = new DotEmitter(Vector(0,1,0), M_2_PI, 100, 5);
+  this->emitter = new DotEmitter(100, 5, M_2_PI);
   this->emitter->setParent(this);
   this->emitter->setSpread(M_PI, M_PI);
Index: trunk/src/world_entities/space_ships/space_ship.cc
===================================================================
--- trunk/src/world_entities/space_ships/space_ship.cc	(revision 6824)
+++ trunk/src/world_entities/space_ships/space_ship.cc	(revision 6825)
@@ -205,5 +205,5 @@
   dynamic_cast<Element2D*>(this->getWeaponManager()->getFixedTarget())->setVisibility( false);
 
-  this->burstEmitter = new DotEmitter(Vector(1,0,0), .01, 200, 0.0);
+  this->burstEmitter = new DotEmitter(200, 0.0, .01);
   this->burstEmitter->setParent(this);
   this->burstEmitter->setRelCoor(-1, .5, 0);
