Index: orxonox/trunk/src/defs/class_id.h
===================================================================
--- orxonox/trunk/src/defs/class_id.h	(revision 4836)
+++ orxonox/trunk/src/defs/class_id.h	(revision 4837)
@@ -40,149 +40,155 @@
  * The number has 8^4 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,
+ * The second three are for subclasses with inheritance:
+ * the first of these numbers is defining the subclassType, it may be anything between 1-a
+ * The following 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
-*/
+ * -> # max SuperClass-count        = 7 (not intersecting)
+ *    # max SubSuperClass-count     = 15*7 = 105 (the 7 classes will be able to get derived from each other, but not over the SubSuperClass.)
+ *    # max lowerClasses-count      = 3^16 = enough (they are Leaves, and may NOT be derived by any other class.)
+ */
 typedef enum ClassID
 {
   // the Nothing CLASS (NULL)
-  CL_NULL                 =    0x00000000,
+  CL_NULL                       =    0x00000000,
 
   // superclasses
-  CL_MASK_SUPER_CLASS     =    0xff000000,
-  CL_BASE_OBJECT          =    0x01000000,
+  CL_MASK_SUPER_CLASS           =    0xff000000,
+  CL_BASE_OBJECT                =    0x01000000,
 
-  CL_PARENT_NODE          =    0x02000000,
-  CL_WORLD_ENTITY         =    0x04000000,
+  CL_PARENT_NODE                =    0x02000000,
+  CL_WORLD_ENTITY               =    0x04000000,
 
-  CL_STORY_ENTITY         =    0x08000000,
+  CL_STORY_ENTITY               =    0x08000000,
 
-  CL_PHYSICS_INTERFACE    =    0x10000000,
+  CL_PHYSICS_INTERFACE          =    0x10000000,
 
-  CL_EVENT_LISTENER       =    0x20000000,
+  CL_EVENT_LISTENER             =    0x20000000,
 
   // subsuper-classes
-  CL_MASK_SUBSUPER_CLASS  =    0x00fff000,
-  CL_PLAYER               =    0x00001000,
-  CL_NPC                  =    0x00002000,
-  CL_POWER_UP             =    0x00004000,
-  CL_FIELD                =    0x00008000,
-  CL_PROJECTILE           =    0x00010000,
-  CL_WEAPON               =    0x00020000,
+  CL_MASK_SUBSUPER_CLASS        =    0x00fff000,
+  CL_MASK_SUBSUPER_CLASS_ID     =    0x00f00000,
+  CL_MASK_SUBSUPER_CLASS_ID2    =    0x000ff000,
+  CL_PLAYER                     =    0x00101000,
+  CL_NPC                        =    0x00102000,
+  CL_POWER_UP                   =    0x00104000,
+  CL_FIELD                      =    0x00108000,
+  CL_PROJECTILE                 =    0x00110000,
+  CL_WEAPON                     =    0x00120000,
 
   // lowest level classes
-  CL_MASK_LOWLEVEL_CLASS  =    0x00000fff,
+  CL_MASK_LOWLEVEL_CLASS        =    0x00000fff,
 
   // singleton classes (range from 0x00000f00 to 0x00000fff)
-  CL_MASK_SINGLETON       =    0x00000f00,
-  CL_ORXONOX              =    0x00000f01,
-  CL_NULL_PARENT          =    0x00000f02,
-  CL_PILOT_PARENT         =    0x00000f03,
-  CL_OBJECT_MANAGER       =    0x00000f04,
-  CL_RESOURCE_MANAGER     =    0x00000f05,
-  CL_GARBAGE_COLLECTOR    =    0x00000f06,
-  CL_GAME_LOADER          =    0x00000f07,
-  CL_GRAPHICS_ENGINE      =    0x00000f08,
-  CL_TEXT_ENGINE          =    0x00000f09,
-  CL_LIGHT_MANAGER        =    0x00000f0a,
-  CL_EVENT_HANDLER        =    0x00000f0b,
-  CL_PHYSICS_ENGINE       =    0x00000f0c,
-  CL_CD_ENGINE            =    0x00000f0d,
-  CL_PARTICLE_ENGINE      =    0x00000f0e,
-  CL_SOUND_ENGINE         =    0x00000f0f,
-  CL_ANIMATION_PLAYER     =    0x00000f10,
-  CL_TRACK_MANAGER        =    0x00000f11,
-  CL_TRACK_NODE           =    0x00000f12,
-  CL_STATE                =    0x00000f13,
-  CL_FRAMEWORK            =    0x00000f14,
+  CL_MASK_SINGLETON             =    0x00000f00,
+  CL_ORXONOX                    =    0x00000f01,
+  CL_NULL_PARENT                =    0x00000f02,
+  CL_PILOT_PARENT               =    0x00000f03,
+  CL_OBJECT_MANAGER             =    0x00000f04,
+  CL_RESOURCE_MANAGER           =    0x00000f05,
+  CL_GARBAGE_COLLECTOR          =    0x00000f06,
+  CL_GAME_LOADER                =    0x00000f07,
+  CL_GRAPHICS_ENGINE            =    0x00000f08,
+  CL_TEXT_ENGINE                =    0x00000f09,
+  CL_LIGHT_MANAGER              =    0x00000f0a,
+  CL_EVENT_HANDLER              =    0x00000f0b,
+  CL_PHYSICS_ENGINE             =    0x00000f0c,
+  CL_CD_ENGINE                  =    0x00000f0d,
+  CL_PARTICLE_ENGINE            =    0x00000f0e,
+  CL_SOUND_ENGINE               =    0x00000f0f,
+  CL_ANIMATION_PLAYER           =    0x00000f10,
+  CL_TRACK_MANAGER              =    0x00000f11,
+  CL_TRACK_NODE                 =    0x00000f12,
+  CL_STATE                      =    0x00000f13,
+  CL_FRAMEWORK                  =    0x00000f14,
 
 
 
   // StoryEntities (range from 0x00000100 to 0x000001ff)
-  CL_CAMPAIGN             =    0x00000101,
-  CL_WORLD                =    0x00000102,
+  CL_CAMPAIGN                   =    0x00000101,
+  CL_WORLD                      =    0x00000102,
 
 
   // WorldEntities (range from 0x00000200 to 0x000004ff)
-  CL_CAMERA               =    0x00000201,
-  CL_CAMERA_TARGET        =    0x00000202,
+  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_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,
 
 
   // gamePlay (range from 0x00000500 0x000005ff)
-  CL_EVENT                =    0x00000501,
-  CL_KEY_MAPPER           =    0x00000502,
-  CL_CROSSHAIR            =    0x0000050f,
+  CL_EVENT                      =    0x00000501,
+  CL_KEY_MAPPER                 =    0x00000502,
+  CL_CROSSHAIR                  =    0x0000050f,
 
-  CL_WEAPON_MANAGER       =    0x00000503,
+  CL_WEAPON_MANAGER             =    0x00000503,
 
   // Physics stuff (range from 0x00000600 to 0x000007ff)
-  CL_PHYSICS_CONNECTION   =    0x00000601,
-  CL_FIELD_GRAVITY        =    0x00000610,
-  CL_FIELD_POINT_GRAVITY  =    0x00000611,
-  CL_FIELD_TWIRL          =    0x00000612,
+  CL_PHYSICS_CONNECTION         =    0x00000601,
+  CL_FIELD_GRAVITY              =    0x00000610,
+  CL_FIELD_POINT_GRAVITY        =    0x00000611,
+  CL_FIELD_TWIRL                =    0x00000612,
 
 
   // Collision
-  CL_COLLISION            =    0x00000611,
-  CL_BV_TREE              =    0x00000612,
-  CL_BV_TREE_NODE         =    0x00000613,
-  CL_OBB_TREE             =    0x00000614,
-  CL_OBB_TREE_NODE        =    0x00000615,
-  CL_BOUNDING_VOLUME      =    0x00000616,
-  CL_OBB                  =    0x00000617,
-  CL_BOUNDING_SPHERE      =    0x00000618,
+  CL_COLLISION                  =    0x00000611,
+  CL_BV_TREE                    =    0x00a01612,
+  CL_BV_TREE_NODE               =    0x00a02613,
+  CL_OBB_TREE                   =    0x00a04614,
+  //! @todo !!!!THIS IS A HACK!!!!! DELETE THESE extensions.
+  CL_OBB_TREE_NODE              =    0x00a08615,
+  CL_BOUNDING_VOLUME            =    0x00a10616,
+  CL_OBB                        =    0x00a20617,
+  CL_BOUNDING_SPHERE            =    0x00a40618,
 
   // graphical stuff (range from 0x00000800 to 0x000009ff)
-  CL_TEXT                 =    0x00000801,
-  CL_FONT                 =    0x00000802,
-  CL_MATERIAL             =    0x00000803,
-  CL_MODEL                =    0x00000804, //!< @todo make this a SUBCLASS maybe
-  CL_OBJMODEL             =    0x00000805,
-  CL_PROMITIVE_MODEL      =    0x00000806,
-  CL_MD2Model             =    0x00000807,
-  CL_LIGHT                =    0x00000808,
-  CL_PARTICLE_EMITTER     =    0x00000809,
-  CL_PARTICLE_SYSTEM      =    0x0000080a,
-  CL_ENVIRONMENT          =    0x00000810,
+  CL_TEXT                       =    0x00000801,
+  CL_FONT                       =    0x00000802,
+  CL_MATERIAL                   =    0x00000803,
+  CL_MODEL                      =    0x00000804, //!< @todo make this a SUBCLASS maybe
+  CL_OBJMODEL                   =    0x00000805,
+  CL_PROMITIVE_MODEL            =    0x00000806,
+  CL_MD2Model                   =    0x00000807,
+  CL_LIGHT                      =    0x00000808,
+  CL_PARTICLE_EMITTER           =    0x00000809,
+  CL_PARTICLE_SYSTEM            =    0x0000080a,
+  CL_ENVIRONMENT                =    0x00000810,
   // GL-menu
-  CL_GLMENU_IMAGE_SCREEN  =    0x00000901,
+  CL_GLMENU_IMAGE_SCREEN        =    0x00000901,
 
   // sound stuff (range from 0x00000a00 to 0x00000aff)
-  CL_SOUND_BUFFER         =    0x00000a01,
-  CL_SOUND_SOURCE         =    0x00000a02,
+  CL_SOUND_BUFFER               =    0x00000a01,
+  CL_SOUND_SOURCE               =    0x00000a02,
 
 
   // misc: (range from 0x00000b00 to 0x00000cff)
-  CL_ANIMATION            =    0x00000b01,
-  //  CL_ANIMATION3D          =    0x00000b02,
-  CL_QUICK_ANIMATION      =    0x00000b02,
-  CL_FACTORY              =    0x00000b03,
-  CL_INI_PARSER           =    0x00000b04,
-  CL_LIST                 =    0x00000b05,
-  CL_SUBSTRING            =    0x00000b06,
-  CL_LOAD_PARAM           =    0x00000b07,
-  CL_CURVE                =    0x00000b08,
-  CL_VECTOR               =    0x00000b09,
-  CL_CHARACTER_ATTRIBUTES =    0x00000b0a,
-  CL_TRACK_ELEMENT        =    0x00000b0b,
-  CL_NUMBER               =    0x00000b0c,
+  CL_ANIMATION                  =    0x00000b01,
+  //  CL_ANIMATION3D                =    0x00000b02,
+  CL_QUICK_ANIMATION            =    0x00000b02,
+  CL_FACTORY                    =    0x00000b03,
+  CL_INI_PARSER                 =    0x00000b04,
+  CL_LIST                       =    0x00000b05,
+  CL_SUBSTRING                  =    0x00000b06,
+  CL_LOAD_PARAM                 =    0x00000b07,
+  CL_CURVE                      =    0x00000b08,
+  CL_VECTOR                     =    0x00000b09,
+  CL_CHARACTER_ATTRIBUTES       =    0x00000b0a,
+  CL_TRACK_ELEMENT              =    0x00000b0b,
+  CL_NUMBER                     =    0x00000b0c,
 
 
   // Spatial Data Separation
-  CL_SPATIAL_SEPARATION   =    0x00000b0d,
-  CL_QUADTREE             =    0x00000b0e,
-  CL_QUADTREE_NODE        =    0x00000b0f
+  CL_SPATIAL_SEPARATION         =    0x00000b0d,
+  CL_QUADTREE                   =    0x00000b0e,
+  CL_QUADTREE_NODE              =    0x00000b0f
 };
 
