Index: orxonox/trunk/orxonox.kdevelop
===================================================================
--- orxonox/trunk/orxonox.kdevelop	(revision 4590)
+++ orxonox/trunk/orxonox.kdevelop	(revision 4591)
@@ -27,5 +27,5 @@
       <envvars/>
       <runarguments>
-        <orxonox></orxonox>
+        <orxonox/>
       </runarguments>
     </run>
@@ -156,5 +156,5 @@
     </groups>
     <tree>
-      <hidepatterns>*.o,*.lo,CVS</hidepatterns>
+      <hidepatterns>*.o,*.a,Makefile.in,Makefile,*~</hidepatterns>
       <hidenonprojectfiles>false</hidenonprojectfiles>
     </tree>
Index: orxonox/trunk/src/defs/class_list.h
===================================================================
--- orxonox/trunk/src/defs/class_list.h	(revision 4590)
+++ orxonox/trunk/src/defs/class_list.h	(revision 4591)
@@ -1,7 +1,24 @@
+/*
+   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
+
+*/
+
 /*!
     \file class_list.h
     \brief list of orxonox classes
 
-    this is used by the ObjectManager to identify and load important classes
+    this File is used to identify an Object with its class and also with its subclasses.
+    this is also used by the ObjectManager to identify and load important classes
 */
 
@@ -11,42 +28,84 @@
 
 //! list of all classes to be loadable in via the ObjectManager
-typedef enum classList
+/**
+ * inheritance is done in the following way: Classes are identified by
+ * a HEX-number eg: 0x12345678
+ * The number has 8x16 entries.
+ * The first two: 1,2 superclass identifiers to
+ * The second three are for subclasses with inheritance
+ * These two may not be the same in any way,
+ * eg. the bits may not intersect (no 1, 2 and a 3; 1,2 and 4 would be ok)
+ * The last three entries are for any classes in existence eg. SkyBox and so on
+ *
+ * \todo complete this List
+*/
+typedef enum ClassID
 {
-  CL_ORXONOX,
+  // superclasses
+  CL_MASK_SUPERCLASS      =    0xff000000,
+  CL_BASE_OBJECT          =    0x01000000,
+  CL_PARENT_NODE          =    0x02000000,
+  CL_WORLD_ENTITY         =    0x04000000,
+  CL_STORY_ENTITY         =    0x08000000,
 
-  CL_PARENT,
-  CL_NULL_PARENT,
-  CL_CAMERA,
-  CL_CAMERA_TARGET,
-  CL_PILOT_PARENT,
+  // subsuper-classes
+  CL_PLAYER               =    0x00001000,
+  CL_NPC                  =    0x00002000,
+  CL_POWER_UP             =    0x00004000,
+  CL_FIELD                =    0x00008000,
+  CL_PROJECTILE           =    0x00010000,
+  CL_WEAPON               =    0x00020000,
 
-  CL_WORLD_ENTITY,
-  CL_ENVIRONEMENT,
-  CL_NPC,
-  CL_PLAYER,
-  CL_POWER_UP,
-  CL_PROJECTILE,
-  CL_SATELLITE,
-  CL_SKYBOX,
-  CL_SKYSPHERE,
-  CL_TERRAIN,
-  CL_TEST_BULLET,
-  CL_TEST_ENTITY,
-  CL_TEST_GUN,
-  CL_WEAPON,
+
+  // singleton classes (range from 0x00000001 to 0x000000ff)
+  CL_MASK_SINGLETON       =    0x0000003f,
+  CL_ORXONOX              =    0x00000001,
+  CL_NULL_PARENT          =    0x00000002,
+  CL_PILOT_PARENT         =    0x00000003,
+
+  CL_OBJECT_MANAGER       =    0x00000004,
+  CL_RESOURCE_MANAGER     =    0x00000005,
+  CL_GARBAGE_COLLECTOR    =    0x00000006,
+  CL_GAME_LOADER          =    0x00000007,
+  CL_GRAPHICS_ENGINE      =    0x00000008,
+  CL_TEXT_ENGINE          =    0x00000009,
+  CL_LIGHT_MANAGER        =    0x0000000a,
+  CL_EVENT_HANDLER        =    0x0000000b,
+  CL_PHYSICS_ENGINE       =    0x0000000c,
+  CL_CD_ENGINE            =    0x0000000d,
+  CL_PARTICLE_ENGINE      =    0x0000000e,
+  CL_SOUND_ENGINE         =    0x0000000f,
+  CL_ANIMATION_PLAYER     =    0x00000010,
+  CL_TRACK_MANAGER        =    0x00000011,
+  CL_TRACK_NODE           =    0x00000012,
+  CL_STATE                =    0x00000013,
+  CL_FRAMEWORK            =    0x00000014,
+
+
+
+  // story entities (range from 0x00000101 to 0x000001ff)
+  CL_CAMPAIGN             =    0x00000101,
+  CL_WORLD                =    0x00000102,
+
+  // world entities (range from 0x00000201 to 0x000005ff)
+  CL_CAMERA               =    0x00000201,
+  CL_CAMERA_TARGET        =    0x00000202,
+
+  CL_ENVIRONEMENT         =    0x00000203,
+  CL_SATELLITE            =    0x00000204,
+  CL_SKYBOX               =    0x00000205,
+  CL_SKYSPHERE            =    0x00000206,
+  CL_TERRAIN              =    0x00000207,
+  CL_TEST_BULLET          =    0x00000208,
+  CL_TEST_ENTITY          =    0x00000209,
+  CL_TEST_GUN             =    0x0000020a,
+
   CL_CHARACTER_ATTRIBUTES,
 
-  CL_STORY_ENTITY,
-  CL_CAMPAIGN,
-  CL_WORLD,
-  CL_TRACK_MANAGER,
-  CL_TRACK_NODE,
 
   CL_ANIMATION,
   CL_ANIMATION3D,
-  CL_ANIMATION_PLAYER,
 
   CL_ARRAY,
-  CL_BASE_OBJECT,
   CL_CURVE,
   CL_VECTOR,
@@ -57,21 +116,12 @@
   CL_LOAD_PARAM,
 
-  CL_OBJECT_MANAGER,
-  CL_RESOURCE_MANAGER,
-  CL_GARBAGE_COLLECTOR,
-  CL_GAME_LOADER,
-  CL_COMMAND_NODE,
 
   CL_EVENT,
-  CL_EVENT_HANDLER,
   CL_EVENT_LISTENER,
   CL_KEY_MAPPER,
 
-  CL_GRAPHICS_ENGINE,
-  CL_TEXT_ENGINE,
   CL_TEXT,
   CL_GLMENU_IMAGE_SCREEN,
   CL_LIGHT,
-  CL_LIGHT_MANAGER,
   CL_MATERIAL,
   CL_MD2Model,
@@ -81,8 +131,6 @@
 
   CL_PARTICLE_EMITTER,
-  CL_PARTICLE_ENGINE,
   CL_PARTICLE_SYSTEM,
 
-  CL_CD_ENGINE,
   CL_COLLISION,
   CL_BV_TREE,
@@ -94,5 +142,4 @@
   CL_BOUNDING_SPHERE,
 
-
   CL_NUMBER
 };
Index: orxonox/trunk/src/lib/lang/base_object.cc
===================================================================
--- orxonox/trunk/src/lib/lang/base_object.cc	(revision 4590)
+++ orxonox/trunk/src/lib/lang/base_object.cc	(revision 4591)
@@ -1,5 +1,5 @@
 
 
-/* 
+/*
    orxonox - the future of 3D-vertical-scrollers
 
@@ -30,5 +30,5 @@
 {
   this->className = NULL;
-  this->id = -1;
+  this->classID = CL_BASE_OBJECT;
   this->finalized = false;
 
@@ -42,5 +42,5 @@
    \brief standard deconstructor
 */
-BaseObject::~BaseObject () 
+BaseObject::~BaseObject ()
 {
   //  delete []this->className;
@@ -57,5 +57,5 @@
   // name setup
   LoadParam<BaseObject>(root, "name", this, &BaseObject::setName)
-    .describe("the name of the Object at hand");
+  .describe("the name of the Object at hand");
 }
 
@@ -65,8 +65,8 @@
    \param className the class name
 */
-void BaseObject::setClassID(int id, const char* className)
+void BaseObject::setClassID(long classID, const char* className)
 {
-  this->id = id;
-  this->className = className;
+  this->setClassID(classID);
+  this->setClassName(className);
 }
 
@@ -76,7 +76,7 @@
    \param id a number for the class from class_list.h enumeration
 */
-void BaseObject::setClassID (int id)
+void BaseObject::setClassID (long classID)
 {
-  this->id = id;
+  this->classID = classID;
 }
 
@@ -106,18 +106,16 @@
 
 /**
-  \brief set the name of the node
-
-  for debug purposes realy usefull, not used to work properly
-*/
-void BaseObject::setName (const char* newName)
+  \brief set the name of the Object
+ */
+void BaseObject::setName (const char* objectName)
 {
   if (this->objectName)
     delete []this->objectName;
-  if (newName)
+  if (objectName)
     {
-      this->objectName = new char[strlen(newName)+1];
-      strcpy(this->objectName, newName);
+      this->objectName = new char[strlen(objectName)+1];
+      strcpy(this->objectName, objectName);
     }
-  else 
+  else
     this->objectName = NULL;
 }
Index: orxonox/trunk/src/lib/lang/base_object.h
===================================================================
--- orxonox/trunk/src/lib/lang/base_object.h	(revision 4590)
+++ orxonox/trunk/src/lib/lang/base_object.h	(revision 4591)
@@ -1,3 +1,3 @@
-/*! 
+/*!
     \file base_object.h
     \brief Definition of the base object class.
@@ -30,10 +30,10 @@
   void setName (const char* newName);
   /** \brief returns the Name of this Object */
-  const char* getName (void)const { return this->objectName; };
+  inline const char* getName (void)const { return this->objectName; };
 
   /** \returns the className of the corresponding Object */
-  inline const char* getClassName(void) const { return this->className;};
+  inline const char* getClassName(void) const { return this->className; };
   /** \returns the classID of the corresponding Object */
-  inline int getClassID(void) const { return this->id; }
+  inline int getClassID(void) const { return this->classID; }
 
   //  bool isA (char* className);
@@ -44,7 +44,7 @@
 
  protected:
-  void setClassID(int id);
+  void setClassID(long classID);
   void setClassName(const char* className);
-  void setClassID(int id, const char* className);
+  void setClassID(long classID, const char* className);
 
   /** \brief this finalizes an object and makes it ready to be garbage collected */
@@ -52,9 +52,9 @@
 
  private:
-  const char*    className;        //!< the name of the class 
-  int            id;               //!< this is the id from the class_list.h enumeration
+  const char*    className;        //!< the name of the class
+  long           classID;          //!< this is the id from the class_list.h enumeration
+  char*          objectName;       //!< The name of this object
+
   bool           finalized;        //!< is true if the object is ready to be garbage collected
-
-  char*          objectName;       //!< The name of this object               
 };
 
Index: orxonox/trunk/src/util/object_manager.h
===================================================================
--- orxonox/trunk/src/util/object_manager.h	(revision 4590)
+++ orxonox/trunk/src/util/object_manager.h	(revision 4591)
@@ -1,6 +1,6 @@
-/*! 
+/*!
     \file object_manager.h
     \brief this manager will ceep track of the objects  in the world
-    
+
     This is specially designed to:
     - Give an interface to the world data
@@ -25,5 +25,5 @@
 
 #include "class_list.h"
-  
+
 
 class WorldEntity;
@@ -33,5 +33,5 @@
 //! This defines the "template" macro function for cache(...)
 #define mCache( Class ) \
- cache(classList index, int number, Class * copyObject)        \
+ cache(ClassID index, int number, Class * copyObject)        \
 {                                                              \
   this->managedObjectList[index] = new tList<BaseObject>(); \
@@ -51,5 +51,5 @@
   /** \returns a Pointer to the only object of this Class */
   inline static ObjectManager* getInstance(void) { if (!singletonRef) singletonRef = new ObjectManager();  return singletonRef; };
-  
+
   /** a class handled by the objectManage */
   void mCache(Projectile);
