Index: /branches/playability/src/world_entities/weapons/heavy_blaster.cc
===================================================================
--- /branches/playability/src/world_entities/weapons/heavy_blaster.cc	(revision 9972)
+++ /branches/playability/src/world_entities/weapons/heavy_blaster.cc	(revision 9972)
@@ -0,0 +1,19 @@
+#include "heavy_blaster.h"
+
+HeavyBlaster::HeavyBlaster (const TiXmlElement* root = NULL)
+ : Weapon()
+  {
+    this->init();
+    if (root != NULL)
+      this->loadParams(root);
+  }
+
+/**
+ * Default destructor
+ */
+HeavyBlaster::~HeavyBlaster()
+  {
+      // model will be deleted from WorldEntity-destructor
+  }
+
+
Index: /branches/playability/src/world_entities/weapons/heavy_blaster.h
===================================================================
--- /branches/playability/src/world_entities/weapons/heavy_blaster.h	(revision 9972)
+++ /branches/playability/src/world_entities/weapons/heavy_blaster.h	(revision 9972)
@@ -0,0 +1,32 @@
+#ifndef HEAVY_BLASTER_H
+#define HEAVY_BLASTER_H
+
+
+#include "weapon.h"
+
+/**
+ *	@author Marc Schaerer <marcscha@ee.ethz.ch>
+ *  
+ *  Light Blaster class
+ */
+class HeavyBlaster : public Weapon
+{
+  ObjectListDeclaration(HeavyBlaster);
+  public:
+    HeavyBlaster();
+    HeavyBlaster (const TiXmlElement* root);
+    virtual ~HeavyBlaster();
+
+    void init();
+    virtual void loadParams(const TiXmlElement* root);
+
+    virtual void activate();
+    virtual void deactivate();
+
+    virtual void fire();
+
+    virtual void draw() const;
+
+};
+
+#endif
Index: /branches/playability/src/world_entities/weapons/light_blaster.cc
===================================================================
--- /branches/playability/src/world_entities/weapons/light_blaster.cc	(revision 9972)
+++ /branches/playability/src/world_entities/weapons/light_blaster.cc	(revision 9972)
@@ -0,0 +1,113 @@
+#include "light_blaster.h"
+#include "world_entities/projectiles/projectile.h"
+
+#include "world_entity.h"
+#include "static_model.h"
+#include "weapon_manager.h"
+#include "util/loading/factory.h"
+
+#include "animation3d.h"
+
+#include "loading/fast_factory.h"
+
+CREATE_FACTORY(LightBlaster);
+/**
+ * Standard constructor
+ */
+LightBlaster::LightBlaster ()
+ : Weapon()
+{
+    this->init();
+}
+
+LightBlaster::LightBlaster (const TiXmlElement* root = NULL)
+ : Weapon()
+{
+    this->init();
+    if (root != NULL)
+      this->loadParams(root);
+}
+
+/**
+ * Default destructor
+ */
+LightBlaster::~LightBlaster()
+{
+      // model will be deleted from WorldEntity-destructor
+}
+
+void LightBlaster::loadParams(const TiXmlElement* root)
+{
+  Weapon::loadParams(root);
+}
+
+void LightBlaster::init()
+{
+  this->registerObject(this, LightBlaster::_objectList);
+
+//  this->model = (Model*)ResourceManager::getInstance()->load("models/guns/test_gun.obj", OBJ, RP_CAMPAIGN);
+
+  this->loadModel("models/guns/plasmadriver_#.obj", 1.0);
+  
+
+  this->setStateDuration(WS_SHOOTING, 0.05);
+  this->setStateDuration(WS_RELOADING, 0);
+  this->setStateDuration(WS_ACTIVATING, .5);
+  this->setStateDuration(WS_DEACTIVATING, 1);
+
+  this->setEnergyMax(5000);
+  this->increaseEnergy(5000);
+  //this->minCharge = 2;
+
+  this->setActionSound(WA_SHOOT, "sound/laser.wav");
+  this->setActionSound(WA_ACTIVATE, "sound/voices/lasers.wav");
+  this->setActionSound(WA_RELOAD, "sound/spawn/alien_generator.wav");
+
+  this->setCapability(WTYPE_ALLDIRS | WTYPE_DIRECTIONAL | WTYPE_LIGHT);
+  this->setProjectileTypeC("RailProjectile");   // FIXME temp project type until the blaste class exist
+  this->prepareProjectiles(100);
+
+  Animation3D* animation2 = this->getAnimation(WS_ACTIVATING, this);
+  Animation3D* animation3 = this->getAnimation(WS_DEACTIVATING, this);
+
+  animation2->setInfinity(ANIM_INF_CONSTANT);
+  animation3->setInfinity(ANIM_INF_CONSTANT);
+
+  this->setEmissionPoint(3.8, 1.2, 0);
+
+  animation2->addKeyFrame(Vector(0.0, -1.0, 0.0), Quaternion(), 0.3, ANIM_LINEAR, ANIM_NULL);
+  animation2->addKeyFrame(Vector(0.0, 0.0, 0.0), Quaternion(), 0.5, ANIM_LINEAR, ANIM_NULL);
+
+  animation3->addKeyFrame(Vector(0.0, 0.0, 0.0), Quaternion(), 0.5, ANIM_LINEAR, ANIM_NULL);
+  animation3->addKeyFrame(Vector(0.0, -1.0, 0.0), Quaternion(), 0.3, ANIM_LINEAR, ANIM_NULL);
+}
+
+
+void LightBlaster::fire()
+{
+  Projectile* pj =  this->getProjectile();
+  if (pj == NULL)
+    return;
+
+  pj->setParent(PNode::getNullParent());
+
+  pj->setVelocity(this->getVelocity() + this->getAbsDir().apply(Vector(1,0,0))*15+VECTOR_RAND(5));
+
+  pj->setAbsCoor(this->getEmissionPoint());
+  pj->setAbsDir(this->getAbsDir());
+  pj->activate();
+}
+
+/**
+ *  this activates the weapon
+*/
+void LightBlaster::activate()
+{
+}
+
+/**
+ *  this deactivates the weapon
+*/
+void LightBlaster::deactivate()
+{
+}
Index: /branches/playability/src/world_entities/weapons/light_blaster.h
===================================================================
--- /branches/playability/src/world_entities/weapons/light_blaster.h	(revision 9972)
+++ /branches/playability/src/world_entities/weapons/light_blaster.h	(revision 9972)
@@ -0,0 +1,32 @@
+#ifndef LIGHT_BLASTER_H
+#define LIGHT_BLASTER_H
+
+
+#include "weapon.h"
+
+/**
+ *	@author Marc Schaerer <marcscha@ee.ethz.ch>
+ *  
+ *  Light Blaster class
+ */
+class LightBlaster : public Weapon
+{
+  ObjectListDeclaration(LightBlaster);
+  public:
+    LightBlaster ();
+    LightBlaster (const TiXmlElement* root);
+    virtual ~LightBlaster();
+
+    void init();
+    virtual void loadParams(const TiXmlElement* root);
+
+    virtual void activate();
+    virtual void deactivate();
+
+    virtual void fire();
+
+    virtual void draw() const;
+
+};
+
+#endif
Index: /branches/playability/src/world_entities/weapons/medium_blaster.cc
===================================================================
--- /branches/playability/src/world_entities/weapons/medium_blaster.cc	(revision 9972)
+++ /branches/playability/src/world_entities/weapons/medium_blaster.cc	(revision 9972)
@@ -0,0 +1,19 @@
+#include "medium_blaster.h"
+
+MediumBlaster::MediumBlaster (const TiXmlElement* root = NULL)
+ : Weapon()
+  {
+    this->init();
+    if (root != NULL)
+      this->loadParams(root);
+  }
+
+/**
+ * Default destructor
+ */
+MediumBlaster::~MediumBlaster()
+  {
+      // model will be deleted from WorldEntity-destructor
+  }
+
+
Index: /branches/playability/src/world_entities/weapons/medium_blaster.h
===================================================================
--- /branches/playability/src/world_entities/weapons/medium_blaster.h	(revision 9972)
+++ /branches/playability/src/world_entities/weapons/medium_blaster.h	(revision 9972)
@@ -0,0 +1,32 @@
+#ifndef MEDIUM_BLASTER_H
+#define MEDIUM_BLASTER_H
+
+
+#include "weapon.h"
+
+/**
+ *	@author Marc Schaerer <marcscha@ee.ethz.ch>
+ *  
+ *  Light Blaster class
+ */
+class MediumBlaster : public Weapon
+{
+  ObjectListDeclaration(MediumBlaster);
+  public:
+    MediumBlaster();
+    MediumBlaster (const TiXmlElement* root);
+    virtual ~MediumBlaster();
+
+    void init();
+    virtual void loadParams(const TiXmlElement* root);
+
+    virtual void activate();
+    virtual void deactivate();
+
+    virtual void fire();
+
+    virtual void draw() const;
+
+};
+
+#endif
