Index: /orxonox/trunk/src/defs/class_list.h
===================================================================
--- /orxonox/trunk/src/defs/class_list.h	(revision 4594)
+++ /orxonox/trunk/src/defs/class_list.h	(revision 4595)
@@ -19,5 +19,5 @@
     \brief list of orxonox classes
 
-    this File is used to identify an Object with its class and also with its subclasses.
+    this File is used to identify an Object with its class and also with its sub/super-classes.
     this is also used by the ObjectManager to identify and load important classes
 */
@@ -34,5 +34,5 @@
  * inheritance is done in the following way: Classes are identified by
  * a HEX-number eg: 0x12345678
- * The number has 8x16 entries.
+ * The number has 8^4 entries.
  * The first two: 1,2 superclass identifiers to
  * The second three are for subclasses with inheritance
@@ -69,4 +69,5 @@
   // lowest level classes
   CL_MASK_LOWLEVEL_CLASS  =    0x00000fff,
+
   // singleton classes (range from 0x00000001 to 0x000000ff)
   CL_MASK_SINGLETON       =    0x0000003f,
@@ -74,5 +75,4 @@
   CL_NULL_PARENT          =    0x00000002,
   CL_PILOT_PARENT         =    0x00000003,
-
   CL_OBJECT_MANAGER       =    0x00000004,
   CL_RESOURCE_MANAGER     =    0x00000005,
@@ -95,9 +95,9 @@
 
 
-  // story entities (range from 0x00000101 to 0x000001ff)
+  // StoryEntities (range from 0x00000101 to 0x000001ff)
   CL_CAMPAIGN             =    0x00000101,
   CL_WORLD                =    0x00000102,
 
-  // world entities (range from 0x00000201 to 0x000005ff)
+  // WorldEntities (range from 0x00000201 to 0x000005ff)
   CL_CAMERA               =    0x00000201,
   CL_CAMERA_TARGET        =    0x00000202,
@@ -112,35 +112,22 @@
   CL_TEST_GUN             =    0x0000020a,
 
-  CL_CHARACTER_ATTRIBUTES,
 
+  CL_EVENT                =    0x00000a08,
+  CL_KEY_MAPPER           =    0x00000a09,
 
-  CL_ANIMATION,
-  CL_ANIMATION3D,
+  // graphical stuff (range from 0x00000800 to 0x000009ff)
+  CL_TEXT                 =    0x00000801,
+  CL_MATERIAL             =    0x00000802,
+  CL_MODEL                =    0x00000803, //!< \todo make this a SUBCLASS maybe
+  CL_OBJMODEL             =    0x00000804,
+  CL_PROMITIVE_MODEL      =    0x00000805,
+  CL_MD2Model             =    0x00000806,
+  CL_LIGHT                =    0x00000807,
+  CL_PARTICLE_EMITTER     =    0x00000808,
+  CL_PARTICLE_SYSTEM      =    0x00000809,
+  // GL-menu
+  CL_GLMENU_IMAGE_SCREEN  =    0x00000901,
 
-  CL_ARRAY,
-  CL_CURVE,
-  CL_VECTOR,
-  CL_FACTORY,
-  CL_INI_PARSER,
-  CL_LIST,
-  CL_SUBSTRING,
-  CL_LOAD_PARAM,
-
-
-  CL_EVENT,
-  CL_KEY_MAPPER,
-
-  CL_TEXT,
-  CL_GLMENU_IMAGE_SCREEN,
-  CL_LIGHT,
-  CL_MATERIAL,
-  CL_MD2Model,
-  CL_MODEL,
-  CL_OBJMODEL,
-  CL_PROMITIVE_MODEL,
-
-  CL_PARTICLE_EMITTER,
-  CL_PARTICLE_SYSTEM,
-
+  // Collision
   CL_COLLISION,
   CL_BV_TREE,
@@ -152,4 +139,15 @@
   CL_BOUNDING_SPHERE,
 
+  // misc: (range from 0x00000a00 to 0x00000bff)
+  CL_ANIMATION            =    0x00000a01,
+  //  CL_ANIMATION3D          =    0x00000a02,
+  CL_FACTORY              =    0x00000a02,
+  CL_INI_PARSER           =    0x00000a03,
+  CL_LIST                 =    0x00000a04,
+  CL_SUBSTRING            =    0x00000a05,
+  CL_LOAD_PARAM           =    0x00000a06,
+  CL_CURVE                =    0x00000a07,
+  CL_VECTOR               =    0x00000a08,
+  CL_CHARACTER_ATTRIBUTES =    0x00000a09,
   CL_NUMBER
 };
Index: /orxonox/trunk/src/lib/lang/base_object.cc
===================================================================
--- /orxonox/trunk/src/lib/lang/base_object.cc	(revision 4594)
+++ /orxonox/trunk/src/lib/lang/base_object.cc	(revision 4595)
@@ -19,4 +19,5 @@
 #include "base_object.h"
 #include "load_param.h"
+#include "compiler.h"
 
 using namespace std;
@@ -113,8 +114,8 @@
    \returns true if it is, false otherwise
 */
-bool BaseObject::isA (ClassID classID)
+bool BaseObject::isA (ClassID classID) const
 {
   // if classID is a derivable object
-  if (classID & CL_MASK_SUPER_CLASS || classID & CL_MASK_SUBSUPER_CLASS)
+  if (likely(classID & CL_MASK_SUPER_CLASS || classID & CL_MASK_SUBSUPER_CLASS))
   {
     if( this->classID & classID)
@@ -135,21 +136,39 @@
 void BaseObject::whatIs(void) const
 {
-  PRINT(0)("object %s: ", this->getName() );
+  PRINT(0)("object %s of class %s: ", this->getName(), this->getClassName());
   if (this->classID & CL_MASK_SUPER_CLASS)
   {
-    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, ");
+    PRINT(0)("is a derived from the following superclasses:");
+    if (this->isA(CL_BASE_OBJECT))
+      PRINT(0)(" =BaseObject=");
+    if (this->isA(CL_PARENT_NODE))
+      PRINT(0)(" =PNode=");
+    if (this->isA(CL_WORLD_ENTITY))
+      PRINT(0)(" =WorldEntity=");
+    if (this->isA(CL_PHYSICS_INTERFACE))
+      PRINT(0)(" =PhysicsInterface=");
+    if (this->isA(CL_EVENT_LISTENER))
+      PRINT(0)(" =EventListener=");
+    if (this->isA(CL_STORY_ENTITY))
+      PRINT(0)(" =StoryEntity=");
+    PRINT(0)("\n");
   }
-  printf("\n");
+  // subsuper-classes
+  if (this->classID & CL_MASK_SUBSUPER_CLASS)
+  {
+    PRINT(0)(" ->further derivations: ");
+    if (this->isA(CL_PLAYER))
+      PRINT(0)(" -Player-");
+    if (this->isA(CL_NPC))
+      PRINT(0)(" -NPC-");
+    if (this->isA(CL_POWER_UP))
+      PRINT(0)(" -PowerUp-");
+    if (this->isA(CL_FIELD))
+      PRINT(0)(" -Field-");
+    if (this->isA(CL_PROJECTILE))
+      PRINT(0)(" -Projectile-");
+    if (this->isA(CL_WEAPON))
+      PRINT(0)(" -Weapon-");
+    PRINT(0)("\n");
+  }
 }
Index: /orxonox/trunk/src/lib/lang/base_object.h
===================================================================
--- /orxonox/trunk/src/lib/lang/base_object.h	(revision 4594)
+++ /orxonox/trunk/src/lib/lang/base_object.h	(revision 4595)
@@ -37,5 +37,5 @@
   inline int getClassID(void) const { return this->classID; }
 
-  bool isA (ClassID classID);
+  bool isA (ClassID classID) const;
   void whatIs(void) const;
 
