Index: branches/playability/src/world_entities/projectiles/bolt.cc
===================================================================
--- branches/playability/src/world_entities/projectiles/bolt.cc	(revision 10042)
+++ 	(revision )
@@ -1,162 +1,0 @@
-/*
-   orxonox - the future of 3D-vertical-scrollers
-
-   Copyright (C) 2004 orx
-
-   This program is free software; you can redistribute it and/or modify
-   it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; either version 2, or (at your option)
-   any later version.
-
-   ### File Specific
-   main-programmer: Patrick Boenzli
-   co-programmer: Benjamin Grauer
-
-*/
-
-
-#define DEBUG_SPECIAL_MODULE DEBUG_MODULE_WEAPON
-
-#include "bolt.h"
-
-#include "state.h"
-#include "model.h"
-
-#include "particles/dot_emitter.h"
-#include "particles/sprite_particles.h"
-
-#include <cassert>
-#include "debug.h"
-
-
-#include "class_id_DEPRECATED.h"
-ObjectListDefinition(Bolt);
-CREATE_FAST_FACTORY_STATIC(Bolt);
-
-/**
- *  standard constructor
-*/
-Bolt::Bolt () : Projectile()
-{
-  this->registerObject(this, Bolt::_objectList);
-
-  this->loadModel("models/projectiles/bolt.obj");   //!< Model not yet in repo
-
-  this->setMinEnergy(1);
-  this->setHealthMax(0);
-  this->lifeSpan = 5.0;
-
-  this->emitter = new DotEmitter(100, 5, M_2_PI);
-  this->emitter->setParent(this);
-  this->emitter->setSpread(M_PI, M_PI);
-  this->emitter->setEmissionRate(300.0);
-  this->emitter->setEmissionVelocity(50.0);
-}
-
-
-/**
- *  standard deconstructor
-*/
-Bolt::~Bolt ()
-{
-  // delete this->emitter;
-
-  /* this is normaly done by World.cc by deleting the ParticleEngine */
-  if (Bolt::explosionParticles != NULL && Bolt::objectList().size() <= 1)
-  {
-    //if (ClassList::exists(Bolt::explosionParticles, CL_PARTICLE_SYSTEM))
-    //  delete Bolt::explosionParticles;
-    PRINTF(1)("Deleting Bolt Particles\n");
-    Bolt::explosionParticles = NULL;
-  }
-
-}
-
-SpriteParticles* Bolt::explosionParticles = NULL;
-
-void Bolt::activate()
-{
-  if (unlikely(Bolt::explosionParticles == NULL))
-  {
-    Bolt::explosionParticles = new SpriteParticles(1000);
-    Bolt::explosionParticles->setName("BoltExplosionParticles");
-    Bolt::explosionParticles->setLifeSpan(.5, .3);
-    Bolt::explosionParticles->setRadius(0.0, 10.0);
-    Bolt::explosionParticles->setRadius(.5, 6.0);
-    Bolt::explosionParticles->setRadius(1.0, 3.0);
-    Bolt::explosionParticles->setColor(0.0, 1,1,0,.9);
-    Bolt::explosionParticles->setColor(0.5, .8,.8,0,.5);
-    Bolt::explosionParticles->setColor(1.0, .8,.8,.7,.0);
-  }
-
-  this->setDamage(5);
-  this->setHealth(0);
-}
-
-
-void Bolt::deactivate()
-{
-  assert (Bolt::explosionParticles != NULL);
-  Bolt::explosionParticles->removeEmitter(this->emitter);
-  this->lifeCycle = 0.0;
-
-  this->toList(OM_NULL);
-  this->removeNode();
-  Bolt::fastFactory->kill(this);
-}
-
-
-void Bolt::collidesWith(WorldEntity* entity, const Vector& location)
-{
-  if (this->hitEntity != entity && entity->isA(CL_NPC))
-    this->destroy( entity );
-  this->hitEntity = entity;
-}
-
-/**
- *  signal tick, time dependent things will be handled here
- * @param dt time since last tick
-*/
-void Bolt::tick (float dt)
-{
-  //Vector v = *this->flightDirection * ( this->speed * time * 1000 + 0.1);
-  Vector v = this->velocity * dt;
-  this->shiftCoor(v);
-
-  if (this->tickLifeCycle(dt))
-    this->deactivate();
-}
-
-/**
- *  the function gets called, when the projectile is destroyed
-*/
-void Bolt::destroy (WorldEntity* killer)
-{
-  Projectile::destroy( killer );
-  PRINTF(5)("DESTROY Bolt\n");
-  this->lifeCycle = .95; //!< @todo calculate this usefully.
-
-  this->emitter->setSystem(Bolt::explosionParticles);
-}
-
-
-void Bolt::draw () const
-{
-  glPushAttrib(GL_ENABLE_BIT);
-  glDisable(GL_LIGHTING);
-
-  WorldEntity::draw();
-/*  glMatrixMode(GL_MODELVIEW);
-  glPushMatrix();
-
-  float matrix[4][4];
-  glTranslatef (this->getAbsCoor ().x, this->getAbsCoor ().y, this->getAbsCoor ().z);
-  this->getAbsDir().matrix (matrix);
-  glMultMatrixf((float*)matrix);
-  glScalef(2.0, 2.0, 2.0);
-  this->getModel()->draw();
-  glPopMatrix();*/
-
-  glPopAttrib();
-}
-
Index: branches/playability/src/world_entities/projectiles/bolt.h
===================================================================
--- branches/playability/src/world_entities/projectiles/bolt.h	(revision 10042)
+++ 	(revision )
@@ -1,47 +1,0 @@
-/*!
- * @file bolt.h
- * @brief light blaster bolt
-*/
-
-#ifndef _BOLT_H
-#define _BOLT_H
-
-#include "projectile.h"
-
-class Vector;
-class Weapon;
-class SpriteParticles;
-class ParticleEmitter;
-class FastFactory;
-
-class Bolt : public Projectile
-{
-  ObjectListDeclaration(Bolt);
-  public:
-    Bolt ();
-    virtual ~Bolt ();
-
-
-    virtual void activate();
-    virtual void deactivate();
-
-    virtual void collidesWith(WorldEntity* entity, const Vector& location);
-
-    virtual void destroy (WorldEntity* killer);
-
-    virtual void tick (float dt);
-    virtual void draw () const;
-
-
-  private:
-    static FastFactory*               fastFactory;
-
-    static SpriteParticles*           explosionParticles;
-
-    ParticleEmitter*                  emitter;
-
-
-    WorldEntity* hitEntity; // FIXME TEMPORARY
-};
-
-#endif /* _BOLT_H */
Index: branches/playability/src/world_entities/projectiles/lbolt.cc
===================================================================
--- branches/playability/src/world_entities/projectiles/lbolt.cc	(revision 10044)
+++ branches/playability/src/world_entities/projectiles/lbolt.cc	(revision 10044)
@@ -0,0 +1,177 @@
+/*
+   orxonox - the future of 3D-vertical-scrollers
+
+   Copyright (C) 2004 orx
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 2, or (at your option)
+   any later version.
+
+   ### File Specific
+   main-programmer: Patrick Boenzli
+   co-programmer: Benjamin Grauer
+
+*/
+
+
+#define DEBUG_SPECIAL_MODULE DEBUG_MODULE_WEAPON
+
+#include "lbolt.h"
+
+#include "state.h"
+#include "model.h"
+
+#include "particles/dot_emitter.h"
+#include "particles/sprite_particles.h"
+
+#include <cassert>
+#include "debug.h"
+
+#include "static_model.h"
+
+
+#include "class_id_DEPRECATED.h"
+ObjectListDefinition(LBolt);
+CREATE_FAST_FACTORY_STATIC(LBolt);
+
+/**
+ *  standard constructor
+*/
+LBolt::LBolt () : Projectile()
+{
+  this->registerObject(this, LBolt::_objectList);
+
+  this->loadModel("models/projectiles/lbolt.obj");
+
+  this->setMinEnergy(1);
+  this->setHealthMax(0);
+  this->lifeSpan = 5.0;
+
+  this->emitter = new DotEmitter(100, 5, M_2_PI);
+  this->emitter->setParent(this);
+  this->emitter->setSpread(M_PI, M_PI);
+  this->emitter->setEmissionRate(300.0);
+  this->emitter->setEmissionVelocity(50.0);
+
+  this->angle = 0;
+  this->rotationSpeed = 130;
+/*
+  this->mat = new Material("lBolt");
+  //this->mat->setBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA);
+  this->mat->setBlendFunc(GL_SRC_ALPHA,GL_ONE);
+  this->mat->setDiffuse(1,1,1);
+  this->mat->setDiffuseMap("lbolt.png");
+  this->mat->setDiffuseMap("lbolt.png",1);
+  dynamic_cast<StaticModel*>(this->getModel())->addMaterial(this->mat);
+  dynamic_cast<StaticModel*>(this->getModel())->finalize();*/
+}
+
+
+/**
+ *  standard deconstructor
+*/
+LBolt::~LBolt ()
+{
+  // delete this->emitter;
+
+  /* this is normaly done by World.cc by deleting the ParticleEngine */
+  if (LBolt::explosionParticles != NULL && LBolt::objectList().size() <= 1)
+  {
+    //if (ClassList::exists(LBolt::explosionParticles, CL_PARTICLE_SYSTEM))
+    //  delete LBolt::explosionParticles;
+    PRINTF(1)("Deleting LBolt Particles\n");
+    LBolt::explosionParticles = NULL;
+  }
+
+}
+
+SpriteParticles* LBolt::explosionParticles = NULL;
+
+void LBolt::activate()
+{
+  if (unlikely(LBolt::explosionParticles == NULL))
+  {
+    LBolt::explosionParticles = new SpriteParticles(1000);
+    LBolt::explosionParticles->setName("BoltExplosionParticles");
+    LBolt::explosionParticles->setLifeSpan(.5, .3);
+    LBolt::explosionParticles->setRadius(0.0, 10.0);
+    LBolt::explosionParticles->setRadius(.5, 6.0);
+    LBolt::explosionParticles->setRadius(1.0, 3.0);
+    LBolt::explosionParticles->setColor(0.0, 1,1,0,.9);
+    LBolt::explosionParticles->setColor(0.5, .8,.8,0,.5);
+    LBolt::explosionParticles->setColor(1.0, .8,.8,.7,.0);
+  }
+
+  this->setDamage(5);
+  this->setHealth(0);
+}
+
+
+void LBolt::deactivate()
+{
+  assert (LBolt::explosionParticles != NULL);
+  LBolt::explosionParticles->removeEmitter(this->emitter);
+  this->lifeCycle = 0.0;
+
+  this->toList(OM_NULL);
+  this->removeNode();
+  LBolt::fastFactory->kill(this);
+}
+
+
+void LBolt::collidesWith(WorldEntity* entity, const Vector& location)
+{
+  if (this->hitEntity != entity && entity->isA(CL_NPC))
+    this->destroy( entity );
+  this->hitEntity = entity;
+}
+
+/**
+ *  signal tick, time dependent things will be handled here
+ * @param dt time since last tick
+*/
+void LBolt::tick (float dt)
+{
+  //Vector v = *this->flightDirection * ( this->speed * time * 1000 + 0.1);
+  Vector v = this->velocity * dt;
+  this->shiftCoor(v);
+
+  if (this->tickLifeCycle(dt))
+    this->deactivate();
+
+  angle += rotationSpeed * dt;
+}
+
+/**
+ *  the function gets called, when the projectile is destroyed
+*/
+void LBolt::destroy (WorldEntity* killer)
+{
+  Projectile::destroy( killer );
+  PRINTF(5)("DESTROY LBolt\n");
+  this->lifeCycle = .95; //!< @todo calculate this usefully.
+
+  this->emitter->setSystem(LBolt::explosionParticles);
+}
+
+
+void LBolt::draw () const
+{
+  glPushAttrib(GL_ENABLE_BIT);
+  glDisable(GL_LIGHTING);
+
+  glMatrixMode(GL_MODELVIEW);
+  glPushMatrix();
+
+  float matrix[4][4];
+  glTranslatef (this->getAbsCoor ().x, this->getAbsCoor ().y, this->getAbsCoor ().z);
+  glRotatef(angle, 1.0, 0.0, 0.0);
+  this->getAbsDir().matrix (matrix);
+  glMultMatrixf((float*)matrix);
+  this->getModel()->draw();
+  glPopMatrix();
+
+  glPopAttrib();
+}
+
Index: branches/playability/src/world_entities/projectiles/lbolt.h
===================================================================
--- branches/playability/src/world_entities/projectiles/lbolt.h	(revision 10044)
+++ branches/playability/src/world_entities/projectiles/lbolt.h	(revision 10044)
@@ -0,0 +1,51 @@
+/*!
+ * @file lbolt.h
+ * @brief light blaster lbolt
+*/
+
+#ifndef _LBOLT_H
+#define _LBOLT_H
+
+#include "projectile.h"
+
+class Vector;
+class Weapon;
+class SpriteParticles;
+class ParticleEmitter;
+class FastFactory;
+
+class LBolt : public Projectile
+{
+  ObjectListDeclaration(LBolt);
+  public:
+    LBolt ();
+    virtual ~LBolt ();
+
+
+    virtual void activate();
+    virtual void deactivate();
+
+    virtual void collidesWith(WorldEntity* entity, const Vector& location);
+
+    virtual void destroy (WorldEntity* killer);
+
+    virtual void tick (float dt);
+    virtual void draw () const;
+
+
+  private:
+    static FastFactory*               fastFactory;
+
+    static SpriteParticles*           explosionParticles;
+
+    ParticleEmitter*                  emitter;
+
+    float                             angle;
+    float                             rotationSpeed;
+
+    Material*                         mat;
+
+    WorldEntity* hitEntity; // FIXME TEMPORARY
+};
+
+#endif /* _LBOLT_H */
