Index: orxonox/trunk/src/defs/class_list.h
===================================================================
--- orxonox/trunk/src/defs/class_list.h	(revision 4591)
+++ orxonox/trunk/src/defs/class_list.h	(revision 4592)
@@ -27,4 +27,7 @@
 
 
+#define ClassDefinition(CLASS_DEFINITION, CLASS_VALUE, CLASS_NAME) \
+                  CLASS_DEFINITION
+
 //! list of all classes to be loadable in via the ObjectManager
 /**
@@ -45,9 +48,16 @@
   CL_MASK_SUPERCLASS      =    0xff000000,
   CL_BASE_OBJECT          =    0x01000000,
+
   CL_PARENT_NODE          =    0x02000000,
   CL_WORLD_ENTITY         =    0x04000000,
+
   CL_STORY_ENTITY         =    0x08000000,
 
+  CL_PHYSICS_INTERFACE    =    0x10000000,
+
+  CL_EVENT_LISTENER       =    0x20000000,
+
   // subsuper-classes
+  CL_MASK_SUBCLASS        =    0x00fff000,
   CL_PLAYER               =    0x00001000,
   CL_NPC                  =    0x00002000,
@@ -57,5 +67,6 @@
   CL_WEAPON               =    0x00020000,
 
-
+  // lowest level classes
+  CL_MASK_LOWLEVEL_CLASS  =    0x00000fff,
   // singleton classes (range from 0x00000001 to 0x000000ff)
   CL_MASK_SINGLETON       =    0x0000003f,
@@ -118,5 +129,4 @@
 
   CL_EVENT,
-  CL_EVENT_LISTENER,
   CL_KEY_MAPPER,
 
Index: orxonox/trunk/src/lib/coord/p_node.cc
===================================================================
--- orxonox/trunk/src/lib/coord/p_node.cc	(revision 4591)
+++ orxonox/trunk/src/lib/coord/p_node.cc	(revision 4592)
@@ -101,4 +101,5 @@
 void PNode::init(PNode* parent)
 {
+  this->setClassID(CL_PARENT_NODE);
   this->children = new tList<PNode>();
   this->bRelCoorChanged = true;
Index: orxonox/trunk/src/lib/lang/base_object.cc
===================================================================
--- orxonox/trunk/src/lib/lang/base_object.cc	(revision 4591)
+++ orxonox/trunk/src/lib/lang/base_object.cc	(revision 4592)
@@ -78,5 +78,5 @@
 void BaseObject::setClassID (long classID)
 {
-  this->classID = classID;
+  this->classID |= classID;
 }
 
@@ -91,31 +91,55 @@
 }
 
-
-/*
-   \brief sets the class identifiers
-   \param a number for the class from class_list.h enumeration
-   \param the class name
-
-bool BaseObject::isA (char* className)
-{
-  if( this->className == className)
-    return false;
-  return true;
-}
-*/
-
 /**
   \brief set the name of the Object
  */
-void BaseObject::setName (const char* objectName)
+             void BaseObject::setName (const char* objectName)
 {
   if (this->objectName)
     delete []this->objectName;
   if (objectName)
-    {
-      this->objectName = new char[strlen(objectName)+1];
-      strcpy(this->objectName, objectName);
-    }
+  {
+    this->objectName = new char[strlen(objectName)+1];
+    strcpy(this->objectName, objectName);
+  }
   else
     this->objectName = NULL;
 }
+
+
+/**
+   \brief checks if the class is a classID
+   \param classID the Identifier to check for
+   \returns true if it is, false otherwise
+*/
+bool BaseObject::isA (ClassID classID)
+{
+  if( this->classID & classID)
+    return true;
+  return false;
+}
+
+/**
+ * @brief displays everything this class is
+ */
+void BaseObject::whatIs(void) const
+{
+  PRINT(0)("object %s: ", this->getName() );
+  if (this->classID & CL_MASK_SUPERCLASS)
+  {
+    PRINT(0)("is a derived Class from: \n");
+    if (this->classID & CL_BASE_OBJECT)
+      PRINT(0)("BaseObject, ");
+    if (this->classID & CL_PARENT_NODE)
+      PRINT(0)("ParentNode, ");
+    if (this->classID & CL_WORLD_ENTITY)
+      PRINT(0)("WorldEntity, ");
+    if (this->classID & CL_PHYSICS_INTERFACE)
+      PRINT(0)("PhysicsInterface, ");
+    if (this->classID & CL_EVENT_LISTENER)
+      PRINT(0)("EventListener, ");
+    if (this->classID & CL_STORY_ENTITY)
+      PRINT(0)("StoryEntity, ");
+  }
+  printf("\n");
+}
Index: orxonox/trunk/src/lib/lang/base_object.h
===================================================================
--- orxonox/trunk/src/lib/lang/base_object.h	(revision 4591)
+++ orxonox/trunk/src/lib/lang/base_object.h	(revision 4592)
@@ -37,5 +37,6 @@
   inline int getClassID(void) const { return this->classID; }
 
-  //  bool isA (char* className);
+  bool isA (ClassID classID);
+  void whatIs(void) const;
 
   /** \returns if the object is finalized */
Index: orxonox/trunk/src/story_entities/story_entity.cc
===================================================================
--- orxonox/trunk/src/story_entities/story_entity.cc	(revision 4591)
+++ orxonox/trunk/src/story_entities/story_entity.cc	(revision 4592)
@@ -1,5 +1,5 @@
 
 
-/* 
+/*
    orxonox - the future of 3D-vertical-scrollers
 
@@ -13,5 +13,5 @@
    ### File Specific:
    main-programmer: Patrick Boenzli
-   co-programmer: 
+   co-programmer:
 */
 
@@ -24,12 +24,15 @@
 
 
-StoryEntity::StoryEntity () {}
+StoryEntity::StoryEntity ()
+{
+  this->setClassID(CL_STORY_ENTITY);
+}
 StoryEntity::~StoryEntity () {}
 
 
-/** 
+/**
     \brief sets the story ID
 
-    sets the story id of the current entity, this enables it to be identified in a 
+    sets the story id of the current entity, this enables it to be identified in a
     global context.
 */
@@ -40,5 +43,5 @@
 
 
-/** 
+/**
     \brief this reads the story id of the current entity
     \returns the story entity id
@@ -50,7 +53,7 @@
 
 
-/** 
+/**
     \brief sets the id of the next story entity
-    
+
     StoryEntities can choose their following entity themselfs. the entity id defined here
     will be startet after this entity ends. this can be convenient if you want to have a
@@ -62,5 +65,5 @@
 }
 
-/** 
+/**
     \brief gets the story id of the current entity
     \returns story id
@@ -81,5 +84,5 @@
 {}
 
-/** 
+/**
     \brief loads the current entity
 
@@ -92,9 +95,9 @@
 
 
-/** 
-    \brief initialize the entity before use. 
+/**
+    \brief initialize the entity before use.
     \returns an error code if not able to apply.
 
-    After execution of this function, the Entity is ready to be played/executed, 
+    After execution of this function, the Entity is ready to be played/executed,
     this shifts the initialisation work before the execution - very important...
     init() is exec shortly before start()
@@ -104,5 +107,5 @@
 
 
-/** 
+/**
     \brief starts the entity with the choosen id. only for entities with lists.
     \param story id
@@ -118,7 +121,7 @@
 
 
-/** 
+/**
     \brief starts the current entity
-    \returns error code if this action has caused a error    
+    \returns error code if this action has caused a error
 */
 ErrorMessage StoryEntity::start()
@@ -126,5 +129,5 @@
 
 
-/** 
+/**
     \brief pause the current entity
     \returns error code if this action has caused a error
@@ -136,5 +139,5 @@
 
 
-/** 
+/**
     \brief resumes a pause
     \returns error code if this action has caused a error
@@ -146,5 +149,5 @@
 
 
-/** 
+/**
     \brief stops the current entity
     \returns error code if this action has caused a error
@@ -160,8 +163,8 @@
 
 
-/** 
-    \brief destroys and cleans up the current entity. 
+/**
+    \brief destroys and cleans up the current entity.
 
-    this cleans up ressources before the deconstructor is called. for terminating 
+    this cleans up ressources before the deconstructor is called. for terminating
     the entity please use the stop() function.
 */
@@ -170,8 +173,8 @@
 
 
-/** 
+/**
     \brief this displays the load screen
 
-    it will need some time to load maps or things like that. to inform the user about 
+    it will need some time to load maps or things like that. to inform the user about
     progress and to just show him/her something for the eyes, put here this stuff
 */
@@ -180,5 +183,5 @@
 
 
-/** 
+/**
     \brief undisplay the load screen
 
Index: orxonox/trunk/src/story_entities/world.cc
===================================================================
--- orxonox/trunk/src/story_entities/world.cc	(revision 4591)
+++ orxonox/trunk/src/story_entities/world.cc	(revision 4592)
@@ -520,6 +520,8 @@
   new PhysicsConnection(testEntity, gravity);
 
-
+  // printing out some debug stuff
   NullParent::getInstance()->debug(0);
+  this->localPlayer->whatIs();
+  this->whatIs();
 }
 
Index: orxonox/trunk/src/util/garbage_collector.cc
===================================================================
--- orxonox/trunk/src/util/garbage_collector.cc	(revision 4591)
+++ orxonox/trunk/src/util/garbage_collector.cc	(revision 4592)
@@ -1,3 +1,3 @@
-/* 
+/*
    orxonox - the future of 3D-vertical-scrollers
 
@@ -33,5 +33,5 @@
    \brief standard constructor
 */
-GarbageCollector::GarbageCollector () 
+GarbageCollector::GarbageCollector ()
 {
    this->setClassID(CL_GARBAGE_COLLECTOR, "GarbageCollector");
@@ -44,5 +44,5 @@
    \brief standard deconstructor
 */
-GarbageCollector::~GarbageCollector () 
+GarbageCollector::~GarbageCollector ()
 {
   // delete what has to be deleted here
@@ -52,8 +52,8 @@
    \brief this sets the collection delay
    \param delay: the delay
-   
+
    after this delay, the garbage collector starts its work and begins to collect unused object
    to delete them afterwards. only objects in the worldentity list from the world object are lookded
-   at. 
+   at.
 */
 void GarbageCollector::setCollectionDelay(float delay)
@@ -107,19 +107,19 @@
   tIterator<WorldEntity>* iterator = list->getIterator();
   WorldEntity* entity = iterator->nextElement();
-  while( entity != NULL) 
-    { 
+  while( entity != NULL)
+    {
       if( entity->isFinalized())
-	{
-	  PRINTF(4)("= finalizing object\n");
-	  ++counter;
-	  
-	  /* first remove out of entity list */
-	  list->remove(entity);
-	  /* second remove out of pnode tree */
-	  entity->remove();
-	  /* then finaly delete reference */
-	  //delete entity;
-	  ObjectManager::getInstance()->addToDeadList(entity->getClassID(), entity);
-	}
+        {
+          PRINTF(4)("= finalizing object\n");
+          ++counter;
+
+          /* first remove out of entity list */
+          list->remove(entity);
+          /* second remove out of pnode tree */
+          entity->remove();
+          /* then finaly delete reference */
+          //delete entity;
+          ObjectManager::getInstance()->addToDeadList(entity->getClassID() & CL_MASK_LOWLEVEL_CLASS, entity);
+        }
       entity = iterator->nextElement();
     }
Index: orxonox/trunk/src/util/loading/load_param.h
===================================================================
--- orxonox/trunk/src/util/loading/load_param.h	(revision 4591)
+++ orxonox/trunk/src/util/loading/load_param.h	(revision 4592)
@@ -1,3 +1,3 @@
-/* 
+/*
    orxonox - the future of 3D-vertical-scrollers
 
@@ -14,5 +14,5 @@
 */
 
-/*! 
+/*!
     \file load_param.h
     \brief A Class and macro-functions, that makes our lives easy to load-in parameters
@@ -74,10 +74,10 @@
 #define LoadParam1(type1) \
  LoadParam(const TiXmlElement* root, const char* paramName, T* pt2Object, void(T::*function)(type1##_TYPE), bool multi = false) \
-   : BaseLoadParam(root, pt2Object, paramName, 1, multi, type1##_NAME)		\
-    { \
-      if (loadString != NULL && root != NULL) \
-	(*pt2Object.*function)(type1##_FUNC(loadString)); \
-      else \
-	PRINTF(4)("Not loaded parameter %s of %s\n", paramName, pt2Object->getClassName()); \
+   : BaseLoadParam(root, pt2Object, paramName, 1, multi, type1##_NAME)          \
+    { \
+      if (loadString != NULL && root != NULL) \
+        (*pt2Object.*function)(type1##_FUNC(loadString)); \
+      else \
+        PRINTF(4)("Not loaded parameter %s of %s\n", paramName, pt2Object->getClassName()); \
     }
 
@@ -94,14 +94,14 @@
     { \
       if (loadString != NULL && root != NULL) \
-	{ \
-	  SubString subLoads(loadString); \
-	  if (subLoads.getCount() == 2) \
-	    (*pt2Object.*function)(type1##_FUNC(subLoads.getString(0)), type2##_FUNC(subLoads.getString(1))); \
-	  else \
-	    PRINTF(2)("Not loaded Parameter %s of %s, because wrong count of arguments.\n -> Should have %d but have %d\n", \
-		      paramName, pt2Object->getClassName(), 2, subLoads.getCount()); \
-	} \
-      else \
-	PRINTF(4)("Not loaded parameter %s of %s\n", paramName, pt2Object->getClassName()); \
+        { \
+          SubString subLoads(loadString); \
+          if (subLoads.getCount() == 2) \
+            (*pt2Object.*function)(type1##_FUNC(subLoads.getString(0)), type2##_FUNC(subLoads.getString(1))); \
+          else \
+            PRINTF(2)("Not loaded Parameter %s of %s, because wrong count of arguments.\n -> Should have %d but have %d\n", \
+                      paramName, pt2Object->getClassName(), 2, subLoads.getCount()); \
+        } \
+      else \
+        PRINTF(4)("Not loaded parameter %s of %s\n", paramName, pt2Object->getClassName()); \
     }
 
@@ -119,14 +119,14 @@
     { \
       if (loadString != NULL && root != NULL) \
-	{ \
-	  SubString subLoads(loadString); \
-	  if (subLoads.getCount() == 3) \
-	    (*pt2Object.*function)(type1##_FUNC(subLoads.getString(0)), type2##_FUNC(subLoads.getString(1)), type3##_FUNC(subLoads.getString(2))); \
-	  else \
-	    PRINTF(2)("Not loaded Parameter %s of %s, because wrong count of arguments.\n -> Should have %d but have %d\n", \
-		      paramName, pt2Object->getClassName(), 3, subLoads.getCount()); \
-	} \
-      else \
-	PRINTF(4)("Not loaded parameter %s of %s\n", paramName, pt2Object->getClassName()); \
+        { \
+          SubString subLoads(loadString); \
+          if (subLoads.getCount() == 3) \
+            (*pt2Object.*function)(type1##_FUNC(subLoads.getString(0)), type2##_FUNC(subLoads.getString(1)), type3##_FUNC(subLoads.getString(2))); \
+          else \
+            PRINTF(2)("Not loaded Parameter %s of %s, because wrong count of arguments.\n -> Should have %d but have %d\n", \
+                      paramName, pt2Object->getClassName(), 3, subLoads.getCount()); \
+        } \
+      else \
+        PRINTF(4)("Not loaded parameter %s of %s\n", paramName, pt2Object->getClassName()); \
     }
 
@@ -145,14 +145,14 @@
     { \
       if (loadString != NULL && root != NULL) \
-	{ \
-	  SubString subLoads(loadString); \
-	  if (subLoads.getCount() == 4) \
-	    (*pt2Object.*function)(type1##_FUNC(subLoads.getString(0)), type2##_FUNC(subLoads.getString(1)), type3##_FUNC(subLoads.getString(2)), type4##_FUNC(subLoads.getString(3))); \
-	  else \
-	    PRINTF(2)("Not loaded Parameter %s of %s, because wrong count of arguments.\n -> Should have %d but have %d\n", \
-		      paramName, pt2Object->getClassName(), 4, subLoads.getCount()); \
-	} \
-      else \
-	PRINTF(4)("Not loaded parameter %s of %s\n", paramName, pt2Object->getClassName()); \
+        { \
+          SubString subLoads(loadString); \
+          if (subLoads.getCount() == 4) \
+            (*pt2Object.*function)(type1##_FUNC(subLoads.getString(0)), type2##_FUNC(subLoads.getString(1)), type3##_FUNC(subLoads.getString(2)), type4##_FUNC(subLoads.getString(3))); \
+          else \
+            PRINTF(2)("Not loaded Parameter %s of %s, because wrong count of arguments.\n -> Should have %d but have %d\n", \
+                      paramName, pt2Object->getClassName(), 4, subLoads.getCount()); \
+        } \
+      else \
+        PRINTF(4)("Not loaded parameter %s of %s\n", paramName, pt2Object->getClassName()); \
     }
 
@@ -172,14 +172,14 @@
     { \
       if (loadString != NULL && root != NULL) \
-	{ \
-	  SubString subLoads(loadString); \
-	  if (subLoads.getCount() == 5) \
-	    (*pt2Object.*function)(type1##_FUNC(subLoads.getString(0)), type2##_FUNC(subLoads.getString(1)), type3##_FUNC(subLoads.getString(2)), type4##_FUNC(subLoads.getString(3)), type5##_FUNC(subLoads.getString(4))); \
-	  else \
-	    PRINTF(2)("Not loaded Parameter %s of %s, because wrong count of arguments.\n -> Should have %d but have %d\n", \
-		      paramName, pt2Object->getClassName(), 5, subLoads.getCount()); \
-	} \
-      else \
-	PRINTF(4)("Not loaded parameter %s of %s\n", paramName, pt2Object->getClassName()); \
+        { \
+          SubString subLoads(loadString); \
+          if (subLoads.getCount() == 5) \
+            (*pt2Object.*function)(type1##_FUNC(subLoads.getString(0)), type2##_FUNC(subLoads.getString(1)), type3##_FUNC(subLoads.getString(2)), type4##_FUNC(subLoads.getString(3)), type5##_FUNC(subLoads.getString(4))); \
+          else \
+            PRINTF(2)("Not loaded Parameter %s of %s, because wrong count of arguments.\n -> Should have %d but have %d\n", \
+                      paramName, pt2Object->getClassName(), 5, subLoads.getCount()); \
+        } \
+      else \
+        PRINTF(4)("Not loaded parameter %s of %s\n", paramName, pt2Object->getClassName()); \
     }
 
@@ -216,5 +216,5 @@
   static LoadClassDescription* addClass(const char* className);
   LoadParamDescription* addParam(const char* paramName);
-  
+
 
   static void printAll(const char* fileName = NULL);
@@ -249,9 +249,9 @@
   LoadParam(const TiXmlElement* root, const char* paramName, T* pt2Object, void(T::*function)(), bool multi = false)
     : BaseLoadParam(root, pt2Object, paramName, 0, multi, "")
-    { 
+    {
       if (loadString != NULL && root != NULL)
-	(*pt2Object.*function)(); 
-      else 
-	PRINTF(4)("Not loaded parameter %s of %s\n", paramName, pt2Object->getClassName());
+        (*pt2Object.*function)();
+      else
+        PRINTF(4)("Not loaded parameter %s of %s\n", paramName, pt2Object->getClassName());
     }
 
Index: orxonox/trunk/src/util/object_manager.cc
===================================================================
--- orxonox/trunk/src/util/object_manager.cc	(revision 4591)
+++ orxonox/trunk/src/util/object_manager.cc	(revision 4592)
@@ -1,3 +1,3 @@
-/* 
+/*
    orxonox - the future of 3D-vertical-scrollers
 
@@ -26,8 +26,8 @@
    \brief standard constructor
 */
-ObjectManager::ObjectManager () 
+ObjectManager::ObjectManager ()
 {
   this->setClassID(CL_OBJECT_MANAGER, "ObjectManager");
-  
+
   this->managedObjectList = new tList<BaseObject>*[CL_NUMBER];
   for(int i = 0; i < CL_NUMBER; ++i)
@@ -48,5 +48,5 @@
    \brief standard deconstructor
 */
-ObjectManager::~ObjectManager () 
+ObjectManager::~ObjectManager ()
 {
   ObjectManager::singletonRef = NULL;
@@ -80,7 +80,7 @@
       this->managedObjectList[index]->remove(obj);
       if( unlikely(obj == NULL))
-	{
-	  PRINTF(0)("Critical: there was no object anymore in the dead list! This could result in Segfaults\n");
-	}
+        {
+          PRINTF(0)("Critical: there was no object anymore in the dead list! This could result in Segfaults\n");
+        }
       return obj;
     }
@@ -96,12 +96,12 @@
 {
   PRINT(0)("\n==========================| ObjectManager::debug() |===\n");
-  PRINT(0)("=  Number of registerable classes: %i\n", CL_NUMBER );  
+  PRINT(0)("=  Number of registerable classes: %i\n", CL_NUMBER );
   PRINT(0)("=  Currently cached objects: \n");
   for(int i = 0; i < CL_NUMBER; ++i)
     {
       if( this->managedObjectList[i] != NULL)
-	PRINT(0)("=   o Class Nr. %i has cached %i object(s)\n", i, this->managedObjectList[i]->getSize());
+        PRINT(0)("=   o Class Nr. %i has cached %i object(s)\n", i, this->managedObjectList[i]->getSize());
       else
-	PRINT(0)("=   o Class Nr. %i has cached 0 object(s)\n", i);
+        PRINT(0)("=   o Class Nr. %i has cached 0 object(s)\n", i);
     }
   PRINT(0)("=======================================================\n");
Index: orxonox/trunk/src/world_entities/camera.h
===================================================================
--- orxonox/trunk/src/world_entities/camera.h	(revision 4591)
+++ orxonox/trunk/src/world_entities/camera.h	(revision 4592)
@@ -1,6 +1,6 @@
-/*! 
+/*!
     \file camera.h
     \brief Viewpoint controlling class definitions
-*/ 
+*/
 
 #ifndef _CAMERA_H
@@ -16,10 +16,13 @@
 
 //! an enumerator for different types of view
-typedef enum ViewMode{ VIEW_NORMAL,
-		       VIEW_BEHIND,
-		       VIEW_FRONT,
-		       VIEW_LEFT,
-		       VIEW_RIGHT,
-		       VIEW_TOP };
+typedef enum ViewMode
+{
+  VIEW_NORMAL,
+  VIEW_BEHIND,
+  VIEW_FRONT,
+  VIEW_LEFT,
+  VIEW_RIGHT,
+  VIEW_TOP
+};
 
 //! Camera
@@ -59,11 +62,11 @@
 
 //! A CameraTarget is where the Camera is looking at.
-class CameraTarget : public PNode 
+class CameraTarget : public PNode
 {
   friend class Camera;             //! The CameraTarget is a friend of Camera. noone else needs a CameraTarget, so noone else can create it.
-  
+
  private:
   CameraTarget(void);
-  
+
  public:
   virtual ~CameraTarget(void);
Index: orxonox/trunk/src/world_entities/player.cc
===================================================================
--- orxonox/trunk/src/world_entities/player.cc	(revision 4591)
+++ orxonox/trunk/src/world_entities/player.cc	(revision 4592)
@@ -1,3 +1,3 @@
-/* 
+/*
    orxonox - the future of 3D-vertical-scrollers
 
@@ -48,5 +48,5 @@
      the player.cc for debug also
   */
-  this->setClassName("Player");
+  this->setClassID(CL_PLAYER, "Player");
   this->model = (Model*)ResourceManager::getInstance()->load("models/reaplow.obj", OBJ, RP_CAMPAIGN);
   travelSpeed = 15.0;
@@ -60,5 +60,5 @@
   Weapon* wpRight = new TestGun(this, Vector(-2.6, 0.1, 3.0), Quaternion(), 0);
   Weapon* wpLeft = new TestGun(this, Vector(-2.6, 0.1, -3.0), Quaternion(), 1);
-  
+
   this->weaponMan->addWeapon(wpRight, W_CONFIG0, W_SLOT0);
   this->weaponMan->addWeapon(wpLeft, W_CONFIG1, W_SLOT1);
@@ -84,10 +84,10 @@
    \brief creates a new Player from Xml Data
    \param root the xml element containing player data
-   
+
    \todo add more parameters to load
 */
 Player::Player(const TiXmlElement* root) : WorldEntity(root), PhysicsInterface(this)
 {
-  this->setClassName("Player");
+  this->setClassID(CL_PLAYER, "Player");
   this->weapons = new tList<Weapon>();
   this->activeWeapon = NULL;
@@ -107,5 +107,5 @@
   Weapon* wpRight = new TestGun(this, Vector(-2.6, 0.1, 3.0), Quaternion(), 0);
   Weapon* wpLeft = new TestGun(this, Vector(-2.6, 0.1, -3.0), Quaternion(), 1);
-  
+
   this->weaponMan->addWeapon(wpRight, W_CONFIG0, W_SLOT0);
   this->weaponMan->addWeapon(wpLeft, W_CONFIG1, W_SLOT1);
@@ -162,5 +162,5 @@
 
 
-/** 
+/**
     \brief Collision with another Entity has this effect
     \param other the other colider
@@ -177,17 +177,17 @@
 */
 void Player::draw ()
-{ 
+{
   glMatrixMode(GL_MODELVIEW);
   glPushMatrix();
   float matrix[4][4];
-  
+
   /* translate */
-  glTranslatef (this->getAbsCoor ().x, 
-		this->getAbsCoor ().y, 
-		this->getAbsCoor ().z);
+  glTranslatef (this->getAbsCoor ().x,
+                this->getAbsCoor ().y,
+                this->getAbsCoor ().z);
   /* rotate */
   this->getAbsDir ().matrix (matrix);
   glMultMatrixf((float*)matrix);
-  
+
   this->model->draw();
   glPopMatrix();
@@ -205,5 +205,5 @@
   //printf("%p\n", this);
   //this->getRelCoor().debug();
-  
+
   /* link tick to weapon */
   //this->activeWeapon->tick(time);
@@ -236,5 +236,5 @@
     accel = accel -(direction*acceleration);
   if( this->bLeft &&  TrackManager::getInstance()->getWidth() > -this->getRelCoor().z*2)
-    accel = accel - (orthDirection*acceleration); 
+    accel = accel - (orthDirection*acceleration);
   if( this->bRight &&  TrackManager::getInstance()->getWidth() > this->getRelCoor().z*2)
     accel = accel + (orthDirection*acceleration);
Index: orxonox/trunk/src/world_entities/test_gun.cc
===================================================================
--- orxonox/trunk/src/world_entities/test_gun.cc	(revision 4591)
+++ orxonox/trunk/src/world_entities/test_gun.cc	(revision 4592)
@@ -1,5 +1,5 @@
 
 
-/* 
+/*
    orxonox - the future of 3D-vertical-scrollers
 
@@ -13,5 +13,5 @@
    ### File Specific
    main-programmer: Patrick Boenzli
-   co-programmer: 
+   co-programmer:
 
 
@@ -43,6 +43,6 @@
    creates a new weapon
 */
-TestGun::TestGun (PNode* parent, const Vector& coordinate, const Quaternion& direction, int leftRight) 
-  :  Weapon (parent, coordinate, direction) 
+TestGun::TestGun (PNode* parent, const Vector& coordinate, const Quaternion& direction, int leftRight)
+  :  Weapon (parent, coordinate, direction)
 {
   this->setClassID(CL_TEST_GUN, "TestGun");
@@ -65,13 +65,13 @@
       this->projectileOffset = Vector(1.0, 0.0, -0.35);
 
-      this->animation1->addKeyFrame(Vector(0, 0, 0), Quaternion(), 0.1, ANIM_LINEAR, ANIM_CONSTANT); 
+      this->animation1->addKeyFrame(Vector(0, 0, 0), Quaternion(), 0.1, ANIM_LINEAR, ANIM_CONSTANT);
       this->animation1->addKeyFrame(Vector(-0.4, 0, 0), Quaternion(), 0.1, ANIM_LINEAR, ANIM_CONSTANT);
       this->animation1->addKeyFrame(Vector(0, 0, 0), Quaternion(), 0.0, ANIM_LINEAR, ANIM_CONSTANT);
 
-      this->animation2->addKeyFrame(Vector(-2.6, 0.1, 2.0), Quaternion(), 0.1, ANIM_LINEAR, ANIM_CONSTANT); 
+      this->animation2->addKeyFrame(Vector(-2.6, 0.1, 2.0), Quaternion(), 0.1, ANIM_LINEAR, ANIM_CONSTANT);
       this->animation2->addKeyFrame(Vector(-2.6, 0.1, 3.0), Quaternion(), 0.1, ANIM_LINEAR, ANIM_CONSTANT);
 
       this->animation3->addKeyFrame(Vector(-2.6, 0.1, 3.0), Quaternion(), 0.1, ANIM_LINEAR, ANIM_CONSTANT);
-      this->animation3->addKeyFrame(Vector(-2.6, 0.1, 2.0), Quaternion(), 0.1, ANIM_LINEAR, ANIM_CONSTANT); 
+      this->animation3->addKeyFrame(Vector(-2.6, 0.1, 2.0), Quaternion(), 0.1, ANIM_LINEAR, ANIM_CONSTANT);
     }
   else if( this->leftRight == W_RIGHT)
@@ -80,15 +80,15 @@
 
       this->objectComponent1->setRelCoor(Vector(0,0,0.35));
-      this->animation1->addKeyFrame(Vector(0, 0, .5), Quaternion(), 0.1, ANIM_LINEAR, ANIM_CONSTANT); 
+      this->animation1->addKeyFrame(Vector(0, 0, .5), Quaternion(), 0.1, ANIM_LINEAR, ANIM_CONSTANT);
       this->animation1->addKeyFrame(Vector(-0.4, 0, .5), Quaternion(), 0.1, ANIM_LINEAR, ANIM_CONSTANT);
       this->animation1->addKeyFrame(Vector(0, 0, .5), Quaternion(), 0.0, ANIM_LINEAR, ANIM_CONSTANT);
 
-      this->animation2->addKeyFrame(Vector(-2.6, 0.1, -2.0), Quaternion(), 0.1, ANIM_LINEAR, ANIM_CONSTANT); 
+      this->animation2->addKeyFrame(Vector(-2.6, 0.1, -2.0), Quaternion(), 0.1, ANIM_LINEAR, ANIM_CONSTANT);
       this->animation2->addKeyFrame(Vector(-2.6, 0.1, -3.0), Quaternion(), 0.1, ANIM_LINEAR, ANIM_CONSTANT);
 
       this->animation3->addKeyFrame(Vector(-2.6, 0.1, -3.0), Quaternion(), 0.1, ANIM_LINEAR, ANIM_CONSTANT);
-      this->animation3->addKeyFrame(Vector(-2.6, 0.1, -2.0), Quaternion(), 0.1, ANIM_LINEAR, ANIM_CONSTANT); 
+      this->animation3->addKeyFrame(Vector(-2.6, 0.1, -2.0), Quaternion(), 0.1, ANIM_LINEAR, ANIM_CONSTANT);
     }
-  
+
   this->fireSound = (SoundBuffer*)ResourceManager::getInstance()->load("sound/shot1.wav", WAV);
   this->weaponSource = new SoundSource(this->fireSound, this);
@@ -103,5 +103,5 @@
    \brief standard deconstructor
 */
-TestGun::~TestGun () 
+TestGun::~TestGun ()
 {
   // model will be deleted from WorldEntity-destructor
@@ -112,7 +112,7 @@
    \brief this activates the weapon
 
-   This is needed, since there can be more than one weapon on a ship. the 
-   activation can be connected with an animation. for example the weapon is 
-   been armed out. 
+   This is needed, since there can be more than one weapon on a ship. the
+   activation can be connected with an animation. for example the weapon is
+   been armed out.
 */
 void TestGun::activate()
@@ -125,6 +125,6 @@
    \brief this deactivates the weapon
 
-   This is needed, since there can be more than one weapon on a ship. the 
-   activation can be connected with an animation. for example the weapon is 
+   This is needed, since there can be more than one weapon on a ship. the
+   activation can be connected with an animation. for example the weapon is
    been armed out.
 */
@@ -137,5 +137,5 @@
 /**
    \brief fires the weapon
-   
+
    this is called from the player.cc, when fire-button is been pushed
    \todo: the ObjectManager deliveres Projectiles not TestBullets! this should be diffrent
@@ -149,5 +149,5 @@
     }
 
-  Projectile* pj = dynamic_cast<Projectile*>(ObjectManager::getInstance()->getFromDeadList(CL_TEST_BULLET));
+  Projectile* pj = dynamic_cast<Projectile*>(ObjectManager::getInstance()->getFromDeadList(CL_TEST_BULLET & CL_MASK_LOWLEVEL_CLASS));
   weaponSource->play();
 
@@ -157,5 +157,5 @@
   this->worldEntities->add(pj);
   this->localTime = 0;
-  
+
   this->animation1->replay();
 }
@@ -170,5 +170,5 @@
    can destroy the weapons of enemies or vice versa.
 */
-void TestGun::hit (WorldEntity* entity, Vector* position) 
+void TestGun::hit (WorldEntity* entity, Vector* position)
 {}
 
@@ -180,5 +180,5 @@
    hit, it can also be destoryed.
 */
-void TestGun::destroy () 
+void TestGun::destroy ()
 {}
 
@@ -187,5 +187,5 @@
    \brief tick signal for time dependent/driven stuff
 */
-void TestGun::tick (float time) 
+void TestGun::tick (float time)
 {
   this->localTime += time;
@@ -203,5 +203,5 @@
    \brief this will draw the weapon
 */
-void TestGun::draw () 
+void TestGun::draw ()
 {
   /* draw gun body */
@@ -209,7 +209,7 @@
   glPushMatrix();
   float matrix[4][4];
-  glTranslatef (this->getAbsCoor ().x, 
-		this->getAbsCoor ().y, 
-		this->getAbsCoor ().z);  
+  glTranslatef (this->getAbsCoor ().x,
+                this->getAbsCoor ().y,
+                this->getAbsCoor ().z);
   this->getAbsDir ().matrix (matrix);
   glMultMatrixf((float*)matrix);
@@ -222,7 +222,7 @@
   glMatrixMode(GL_MODELVIEW);
   glPushMatrix();
-  glTranslatef (this->objectComponent1->getAbsCoor ().x, 
-		this->objectComponent1->getAbsCoor ().y, 
-		this->objectComponent1->getAbsCoor ().z);
+  glTranslatef (this->objectComponent1->getAbsCoor ().x,
+                this->objectComponent1->getAbsCoor ().y,
+                this->objectComponent1->getAbsCoor ().z);
   this->objectComponent1->getAbsDir ().matrix (matrix);
   glMultMatrixf((float*)matrix);
