Index: /branches/presentation/src/defs/class_id.h
===================================================================
--- /branches/presentation/src/defs/class_id.h	(revision 9185)
+++ /branches/presentation/src/defs/class_id.h	(revision 9186)
@@ -191,4 +191,5 @@
   CL_CRANE                      =    0x00000316,
   CL_BRAKING_WALL               =    0X00000317,
+  CL_AIMING_SYSTEM              =    0x00000318,
 
   // Playables
@@ -221,5 +222,4 @@
   CL_FPS_SNIPER_RIFLE           =    0x000003a7,
   CL_FPS_LASER_RIFLE            =    0x000003a8,
-  CL_AIMING_SYSTEM              =    0x000003a9,
 
   // Projectiles
Index: /branches/presentation/src/lib/collision_reaction/collision_handle.cc
===================================================================
--- /branches/presentation/src/lib/collision_reaction/collision_handle.cc	(revision 9185)
+++ /branches/presentation/src/lib/collision_reaction/collision_handle.cc	(revision 9186)
@@ -230,4 +230,26 @@
   for(; it < this->targetList.end(); it++)
   {
+    if(collisionEvent->getEntityB()->isA(CL_AIMING_SYSTEM))
+    {
+       PRINTF(0)("I am: %s colliding with: %s\n", owner->getClassName(), collisionEvent->getEntityB()->getClassName(), *it);
+       if( collisionEvent->getEntityA() == this->owner) {
+         PRINTF(0)("I am owner -> I am: %s colliding with: %s is a %i filter?\n", owner->getClassName(),
+         collisionEvent->getEntityB()->getClassName(), *it);
+         if( collisionEvent->getEntityB()->isA((ClassID)(*it))) {
+           PRINTF(0)("I am owner -> I am: %s colliding with: %s is a %i filter ok\n", owner->getClassName(),
+           collisionEvent->getEntityB()->getClassName(), *it);
+            }
+       }
+       else {
+         PRINTF(0)("I am not owner -> I am: %s colliding with: %s is a %i filter?\n", owner->getClassName(),
+         collisionEvent->getEntityB()->getClassName(), *it);
+         if( collisionEvent->getEntityA()->isA((ClassID)(*it))) {
+           PRINTF(0)("I'm not owner -> I am: %s colliding with: %s is a %i filter ok\n", owner->getClassName(),
+           collisionEvent->getEntityA()->getClassName(), *it);
+            }
+       }
+
+    }
+
     if( collisionEvent->getEntityA() == this->owner) {
       if( collisionEvent->getEntityB()->isA((ClassID)(*it))) {
@@ -257,9 +279,31 @@
   for(; it < this->targetList.end(); it++)
   {
+
+    if(collision->getEntityB()->isA(CL_AIMING_SYSTEM))
+    {
+      PRINTF(0)("I am: %s colliding with: %s\n", owner->getClassName(), collision->getEntityB()->getClassName(), *it);
+      if( collision->getEntityA() == this->owner) {
+        PRINTF(0)("I am owner -> I am: %s colliding with: %s is a %i filter?\n", owner->getClassName(),
+        collision->getEntityB()->getClassName(), *it);
+        if( collision->getEntityB()->isA((ClassID)(*it))) {
+          PRINTF(0)("I am owner -> I am: %s colliding with: %s is a %i filter ok\n", owner->getClassName(),
+          collision->getEntityB()->getClassName(), *it);
+        }
+      }
+      else {
+        PRINTF(0)("I'm not owner -> I am: %s colliding with: %s is a %i filter?\n", owner->getClassName(),
+        collision->getEntityB()->getClassName(), *it);
+        if( collision->getEntityA()->isA((ClassID)(*it))) {
+          PRINTF(0)("I'm not owner -> I am: %s colliding with: %s is a %i filter ok\n", owner->getClassName(),
+          collision->getEntityA()->getClassName(), *it);
+        }
+      }
+    }
+
     if( collision->getEntityA() == this->owner) {
-      if( collision->getEntityA()->isA((ClassID)(*it)))
+      if( collision->getEntityB()->isA((ClassID)(*it)))
         return true; }
       else {
-        if( collision->getEntityB()->isA((ClassID)(*it)))
+        if( collision->getEntityA()->isA((ClassID)(*it)))
           return true; }
   }
Index: /branches/presentation/src/world_entities/creatures/fps_player.cc
===================================================================
--- /branches/presentation/src/world_entities/creatures/fps_player.cc	(revision 9185)
+++ /branches/presentation/src/world_entities/creatures/fps_player.cc	(revision 9186)
@@ -140,5 +140,4 @@
 
   this->getWeaponManager().setParentNode(&this->cameraNode);
-  this->getWeaponManager().getParentNode()->setParentMode(PNODE_ROTATE_AND_MOVE);
   this->cameraNode.addNodeFlags(PNODE_PROHIBIT_CHILD_DELETE);
 
@@ -239,4 +238,6 @@
 
       State::getCameraNode()->setParentMode(PNODE_ROTATE_AND_MOVE);
+      this->cameraNode.setParentMode(PNODE_ROTATE_AND_MOVE);
+      this->getWeaponManager().getParentNode()->setParentMode(PNODE_ROTATE_AND_MOVE);
 
 
@@ -244,5 +245,5 @@
       this->getWeaponManager().setSlotPosition(1, Vector(5.0, box->halfLength[1] * f, 0.0));
 
-      this->aimingSystem->toList(/*OM_LIST(this->getOMListNumber() + 1)*/ OM_COMMON);
+      this->aimingSystem->toList(/*OM_LIST(this->getOMListNumber() + 1)*/ OM_GROUP_01);
     }
   }
Index: /branches/presentation/src/world_entities/npcs/generic_npc.cc
===================================================================
--- /branches/presentation/src/world_entities/npcs/generic_npc.cc	(revision 9185)
+++ /branches/presentation/src/world_entities/npcs/generic_npc.cc	(revision 9186)
@@ -82,4 +82,5 @@
 {
   this->setClassID(CL_GENERIC_NPC, "GenericNPC");
+
   this->toList(OM_GROUP_00);
 
Index: /branches/presentation/src/world_entities/weapons/aiming_system.cc
===================================================================
--- /branches/presentation/src/world_entities/weapons/aiming_system.cc	(revision 9185)
+++ /branches/presentation/src/world_entities/weapons/aiming_system.cc	(revision 9186)
@@ -35,4 +35,5 @@
  */
 AimingSystem::AimingSystem (WorldEntity* entity)
+  : WorldEntity()
 {
   this->owner = entity;
@@ -61,4 +62,5 @@
 
   // registering default reactions:
+  this->unsubscribeReaction(CREngine::CR_OBJECT_DAMAGE);
   this->subscribeReaction(CREngine::CR_OBJECT_DAMAGE, CL_WORLD_ENTITY);
 
@@ -120,4 +122,5 @@
 
   PRINTF(0)("hit hit hit, got: %s\n", killer->getClassName());
+  printf("aimingsystem: hit()\n");
 }
 
Index: /branches/presentation/src/world_entities/weapons/aiming_system.h
===================================================================
--- /branches/presentation/src/world_entities/weapons/aiming_system.h	(revision 9185)
+++ /branches/presentation/src/world_entities/weapons/aiming_system.h	(revision 9186)
@@ -33,5 +33,6 @@
   void setRange(float range){this->range = range;};
 
-  void hit(float damage, WorldEntity* killer);
+  virtual void hit(float damage, WorldEntity* killer);
+  virtual void destroy(WorldEntity* entity) {}
 
   virtual void tick(float dt);
Index: /branches/presentation/src/world_entities/world_entity.cc
===================================================================
--- /branches/presentation/src/world_entities/world_entity.cc	(revision 9185)
+++ /branches/presentation/src/world_entities/world_entity.cc	(revision 9186)
@@ -414,4 +414,5 @@
 bool WorldEntity::registerCollision(WorldEntity* entityA, WorldEntity* entityB, BoundingVolume* bvA, BoundingVolume* bvB)
 {
+  PRINTF(5)("registering collision of type: %s vs %s\n", entityA->getClassName(), entityB->getClassName());
   // is there any handler listening?
   if( !this->bReactive)
