Index: orxonox/trunk/src/class_list.h
===================================================================
--- orxonox/trunk/src/class_list.h	(revision 4315)
+++ orxonox/trunk/src/class_list.h	(revision 4318)
@@ -6,9 +6,18 @@
 */
 
+#ifndef _CLASS_LIST_H
+#define _CLASS_LIST_H
+
 
 //! list of all classes to be loadable in via the ObjectManager
 typedef enum classList 
 {
+  CL_PARENT,
+  CL_HELPER_PARENT,
+  CL_NULL_PARENT,
   CL_CAMERA,
+  CL_CAMERA_TARGET,
+
+  CL_WORLD_ENTITY,
   CL_ENVIRONEMENT,
   CL_NPC,
@@ -24,5 +33,11 @@
   CL_TEST_GUN,
   CL_WEAPON,
-  CL_WORLD_ENTITY,
+  CL_CHARACTER_ATTRIBUTES,
+
+  CL_STORY_ENTITY,
+  CL_CAMPAIGN,
+  CL_WORLD,
+  CL_TRACK_MANAGER,
+  CL_TRACK_NODE,
 
   CL_ANIMATION,
@@ -32,65 +47,38 @@
   CL_ARRAY,
   CL_BASE_OBJECT,
-  CL_BASE,
+  CL_CURVE,
+  CL_VECTOR,
+  CL_FACTORY,
+  CL_INI_PARSER,
+  CL_LIST,
+  CL_SUBSTRING,
+  CL_LOAD_PARAM,
+
+  CL_OBJECT_MANAGER,
+  CL_RESOURCE_MANAGER,
+  CL_GARBAGE_COLLECTOR,
+  CL_GAME_LOADER,
+  CL_COMMAND_NODE,
+
+  CL_GRAPHICS_ENGINE,  
+  CL_TEXT_ENGINE,
+  CL_TEXT,
+  CL_GLMENU_IMAGE_SCREEN,
+  CL_LIGHT,
+  CL_LIGHT_MANAGER,
+  CL_MATERIAL,
+  CL_MD2Model,
+  CL_MODEL,
+  CL_OBJMODEL,
+  CL_PROMITIVE_MODEL,
+  
+  CL_PARTICLE_EMITTER,
+  CL_PARTICLE_ENGINE,
+  CL_PARTICLE_SYSTEM,
+  
 
   CL_NUMBER
 };
 
-/*
-animation.o
-animation3d.o
-animation_player.o
-array.o
-base_entity.o
-base_object.o
-benchmark.o
-camera.o
-campaign.o
-character_attributes.o
-command_node.o
-curve.o
-environment.o
-factory.o
-game_loader.o
-garbage_collector.o
-glmenu_imagescreen.o
-graphics_engine.o
-helper_parent.o
-ini_parser.o
-keynames.o
-light.o
-list.o
-load_param.o
-material.o
-md2Model.o
-model.o
-null_parent.o
-objModel.o
-object_manager.o
-orxonox.o
-p_node.o
-particle_emitter.o
-particle_engine.o
-particle_system.o
-player.o
-primitive_model.o
-projectile.o
-resource_manager.o
-satellite.o
-skybox.o
-skysphere.o
-story_entity.o
-substring.o
-terrain.o
-test_bullet.o
-test_entity.o
-test_gun.o
-text_engine.o
-texture.o
-track_manager.o
-track_node.o
-vector.o
-weapon.o
-world.o
-world_entity.o
-*/
+
+#endif /* _CLASS_LIST_H */
Index: orxonox/trunk/src/glmenu/glmenu_imagescreen.cc
===================================================================
--- orxonox/trunk/src/glmenu/glmenu_imagescreen.cc	(revision 4315)
+++ orxonox/trunk/src/glmenu/glmenu_imagescreen.cc	(revision 4318)
@@ -88,5 +88,5 @@
 void GLMenuImageScreen::init ()
 {
-  this->setClassName ("GLMenuImageScreen");
+  this->setClassID(CL_GLMENU_IMAGE_SCREEN);
 
   // Select Our VU Meter Background Texture
Index: orxonox/trunk/src/lib/coord/helper_parent.cc
===================================================================
--- orxonox/trunk/src/lib/coord/helper_parent.cc	(revision 4315)
+++ orxonox/trunk/src/lib/coord/helper_parent.cc	(revision 4318)
@@ -30,5 +30,5 @@
 HelperParent::HelperParent () 
 {
-   this->setClassName ("HelperParent");
+   this->setClassID(CL_HELPER_PARENT);
 }
 
Index: orxonox/trunk/src/lib/graphics/graphics_engine.cc
===================================================================
--- orxonox/trunk/src/lib/graphics/graphics_engine.cc	(revision 4315)
+++ orxonox/trunk/src/lib/graphics/graphics_engine.cc	(revision 4318)
@@ -34,5 +34,5 @@
   this->minFPS = 9999;
   this->maxFPS = 0;
-  this->setClassName ("GraphicsEngine");
+  this->setClassID(CL_GRAPHICS_ENGINE);
 
   this->fullscreen = false;
Index: orxonox/trunk/src/lib/graphics/light.cc
===================================================================
--- orxonox/trunk/src/lib/graphics/light.cc	(revision 4315)
+++ orxonox/trunk/src/lib/graphics/light.cc	(revision 4318)
@@ -34,5 +34,5 @@
 Light::Light(int lightNumber)
 {
-  this->setClassName("Light");
+  this->setClassID(CL_LIGHT);
   char tmpName[7];
   sprintf(tmpName, "Light%d", lightNumber);
@@ -205,5 +205,5 @@
 LightManager::LightManager () 
 {
-  this->setClassName ("LightManager");
+  this->setClassID(CL_LIGHT_MANAGER);
 
   glEnable (GL_LIGHTING);
Index: orxonox/trunk/src/lib/graphics/particles/particle_emitter.cc
===================================================================
--- orxonox/trunk/src/lib/graphics/particles/particle_emitter.cc	(revision 4315)
+++ orxonox/trunk/src/lib/graphics/particles/particle_emitter.cc	(revision 4318)
@@ -30,5 +30,5 @@
 		  float velocity)
 {
-   this->setClassName ("ParticleEmitter");
+   this->setClassID(CL_PARTICLE_EMITTER);
    this->direction = direction;
    this->setSpread(angle);
Index: orxonox/trunk/src/lib/graphics/particles/particle_engine.cc
===================================================================
--- orxonox/trunk/src/lib/graphics/particles/particle_engine.cc	(revision 4315)
+++ orxonox/trunk/src/lib/graphics/particles/particle_engine.cc	(revision 4318)
@@ -30,5 +30,5 @@
 ParticleEngine::ParticleEngine () 
 {
-   this->setClassName ("ParticleEngine");
+   this->setClassID(CL_PARTICLE_ENGINE);
 
    this->systemList = new tList<ParticleSystem>;
Index: orxonox/trunk/src/lib/graphics/particles/particle_system.cc
===================================================================
--- orxonox/trunk/src/lib/graphics/particles/particle_system.cc	(revision 4315)
+++ orxonox/trunk/src/lib/graphics/particles/particle_system.cc	(revision 4318)
@@ -34,5 +34,5 @@
 ParticleSystem::ParticleSystem (unsigned int maxCount, PARTICLE_TYPE type)
 {
-   this->setClassName ("ParticleSystem");
+   this->setClassID(CL_PARTICLE_SYSTEM);
    this->material = NULL;
    this->name = NULL;
Index: orxonox/trunk/src/lib/graphics/text_engine.cc
===================================================================
--- orxonox/trunk/src/lib/graphics/text_engine.cc	(revision 4315)
+++ orxonox/trunk/src/lib/graphics/text_engine.cc	(revision 4318)
@@ -51,5 +51,5 @@
 Text::Text(Font* font, int type)
 {
-  this->setClassName("Text");
+  this->setClassID(CL_TEXT);
 
   // initialize this Text
@@ -802,5 +802,5 @@
 TextEngine::TextEngine () 
 {
-   this->setClassName ("TextEngine");
+   this->setClassID(CL_TEXT_ENGINE);
    this->enableFonts();
 
Index: orxonox/trunk/src/lib/lang/base_object.cc
===================================================================
--- orxonox/trunk/src/lib/lang/base_object.cc	(revision 4315)
+++ orxonox/trunk/src/lib/lang/base_object.cc	(revision 4318)
@@ -42,8 +42,11 @@
 }
 
-void BaseObject::setClassName (const char* className)
+
+void BaseObject::setClassID (int id)
 {
-  this->className = className;
+  this->id = id;
 }
+
+
 
 bool BaseObject::isA (char* className)
Index: orxonox/trunk/src/lib/lang/base_object.h
===================================================================
--- orxonox/trunk/src/lib/lang/base_object.h	(revision 4315)
+++ orxonox/trunk/src/lib/lang/base_object.h	(revision 4318)
@@ -9,5 +9,5 @@
 
 #include "stdincl.h"
-
+#include "class_list.h"
 
 class BaseObject {
@@ -17,6 +17,9 @@
   virtual ~BaseObject ();
 
-  void setClassName (const char* className);
-  inline const char* getClassName(void) const { return this->className;};
+  //void setClassName (const char* className);
+  void setClassID(int id);
+
+  inline const char* getClassName(void) const { return "";};
+  inline int getClassID(void) const { return this->id; }
   bool isA (char* className);
 
@@ -26,4 +29,5 @@
  private:
   const char* className;
+  int id;
   bool finalized;
 };
Index: orxonox/trunk/src/story_entities/world.cc
===================================================================
--- orxonox/trunk/src/story_entities/world.cc	(revision 4315)
+++ orxonox/trunk/src/story_entities/world.cc	(revision 4318)
@@ -196,5 +196,5 @@
 void World::constuctorInit(char* name, int worldID)
 {
-  this->setClassName ("World");
+  this->setClassID(CL_WORLD);
 
   //this->worldName = name;
Index: orxonox/trunk/src/util/animation/animation_player.cc
===================================================================
--- orxonox/trunk/src/util/animation/animation_player.cc	(revision 4315)
+++ orxonox/trunk/src/util/animation/animation_player.cc	(revision 4318)
@@ -28,5 +28,5 @@
 AnimationPlayer::AnimationPlayer () 
 {
-   this->setClassName ("AnimationPlayer");
+   this->setClassID(CL_ANIMATION_PLAYER);
 
    this->animationList = new tList<Animation>();
Index: orxonox/trunk/src/util/garbage_collector.cc
===================================================================
--- orxonox/trunk/src/util/garbage_collector.cc	(revision 4315)
+++ orxonox/trunk/src/util/garbage_collector.cc	(revision 4318)
@@ -38,5 +38,5 @@
 GarbageCollector::GarbageCollector () 
 {
-   this->setClassName ("GarbageCollection");
+   this->setClassID(CL_GARBAGE_COLLECTOR);
    this->time = 0;
    this->delay = 1.5f; /* clean up all 5.0 seconds */
Index: orxonox/trunk/src/util/loading/load_param.h
===================================================================
--- orxonox/trunk/src/util/loading/load_param.h	(revision 4315)
+++ orxonox/trunk/src/util/loading/load_param.h	(revision 4318)
@@ -180,4 +180,5 @@
   static LoadClassDescription* addClass(const char* className);
   LoadParamDescription* addParam(const char* paramName);
+  
 
   static void printAll(const char* fileName = NULL);
Index: orxonox/trunk/src/util/object_manager.cc
===================================================================
--- orxonox/trunk/src/util/object_manager.cc	(revision 4315)
+++ orxonox/trunk/src/util/object_manager.cc	(revision 4318)
@@ -29,7 +29,11 @@
 ObjectManager::ObjectManager () 
 {
-  this->setClassName ("ObjectManager");
+  this->setClassID(CL_OBJECT_MANAGER);
   
   this->managedObjectList = new tList<BaseObject>*[CL_NUMBER];
+  for(int i = 0; i < CL_NUMBER; ++i)
+    {
+      this->managedObjectList[i] = NULL;
+    }
 
   this->garbageCollector = GarbageCollector::getInstance();
@@ -91,5 +95,5 @@
   for(int i = 0; i < CL_NUMBER; ++i)
     {
-      if(this->managedObjectList[i] != NULL)
+      if( this->managedObjectList[i] != NULL)
 	PRINT(0)("=   o Class Nr. %i has cached %i object(s)\n", i, this->managedObjectList[i]->getSize());
       else
Index: orxonox/trunk/src/util/resource_manager.cc
===================================================================
--- orxonox/trunk/src/util/resource_manager.cc	(revision 4315)
+++ orxonox/trunk/src/util/resource_manager.cc	(revision 4318)
@@ -38,5 +38,5 @@
 ResourceManager::ResourceManager () 
 {
-   this->setClassName ("ResourceManager");
+   this->setClassID(CL_RESOURCE_MANAGER);
    this->dataDir = NULL;
    this->setDataDir("./");
Index: orxonox/trunk/src/util/track/track_manager.cc
===================================================================
--- orxonox/trunk/src/util/track/track_manager.cc	(revision 4315)
+++ orxonox/trunk/src/util/track/track_manager.cc	(revision 4318)
@@ -370,5 +370,6 @@
 TrackManager::TrackManager(void)
 {
-  this->setClassName("TrackManager");
+  this->setClassID(CL_TRACK_MANAGER);
+  
   
   TrackManager::singletonRef = this; // do this because otherwise the TrackNode cannot get The instance of the TrackManager
Index: orxonox/trunk/src/util/track/track_node.cc
===================================================================
--- orxonox/trunk/src/util/track/track_node.cc	(revision 4315)
+++ orxonox/trunk/src/util/track/track_node.cc	(revision 4318)
@@ -32,5 +32,5 @@
 TrackNode::TrackNode () 
 {
-  this->setClassName("TrackNode");
+  this->setClassID(CL_TRACK_NODE);
   this->setName("TrackNode"); /* absolete but still used... */
 
Index: orxonox/trunk/src/world_entities/camera.cc
===================================================================
--- orxonox/trunk/src/world_entities/camera.cc	(revision 4315)
+++ orxonox/trunk/src/world_entities/camera.cc	(revision 4318)
@@ -33,5 +33,5 @@
 Camera::Camera(void)
 {
-  this->setClassName("Camera");
+  this->setClassID(CL_CAMERA);
   this->target = new CameraTarget();
 
@@ -190,5 +190,5 @@
 CameraTarget::CameraTarget()
 {
-  this->setClassName("CameraTarget");
+  this->setClassID(CL_CAMERA_TARGET);
   this->setMode(PNODE_MOVEMENT);
 }
Index: orxonox/trunk/src/world_entities/character_attributes.cc
===================================================================
--- orxonox/trunk/src/world_entities/character_attributes.cc	(revision 4315)
+++ orxonox/trunk/src/world_entities/character_attributes.cc	(revision 4318)
@@ -29,5 +29,5 @@
 CharacterAttributes::CharacterAttributes () 
 {
-   this->setClassName ("CharacterAttributes");
+   this->setClassID(CL_CHARACTER_ATTRIBUTES);
 }
 
Index: orxonox/trunk/src/world_entities/satellite.cc
===================================================================
--- orxonox/trunk/src/world_entities/satellite.cc	(revision 4315)
+++ orxonox/trunk/src/world_entities/satellite.cc	(revision 4318)
@@ -31,5 +31,5 @@
 Satellite::Satellite (Vector axis, float speed)
 {
-  this->setClassName ("Satellite");
+  this->setClassID(CL_SATELLITE);
   this->model = (Model*) ResourceManager::getInstance()->load("cube", RP_LEVEL);
   this->speed = speed;
Index: orxonox/trunk/src/world_entities/skybox.cc
===================================================================
--- orxonox/trunk/src/world_entities/skybox.cc	(revision 4315)
+++ orxonox/trunk/src/world_entities/skybox.cc	(revision 4318)
@@ -62,5 +62,5 @@
 void SkyBox::preInit(void)
 {
-  this->setClassName("SkyBox");
+  this->setClassID(CL_SKYBOX);
   this->skyModel = NULL;
   this->material = new Material*[6];
Index: orxonox/trunk/src/world_entities/terrain.cc
===================================================================
--- orxonox/trunk/src/world_entities/terrain.cc	(revision 4315)
+++ orxonox/trunk/src/world_entities/terrain.cc	(revision 4318)
@@ -77,6 +77,5 @@
 void Terrain::init(void)
 {
-  this->setClassName ("Terrain");
-  
+  this->setClassID(CL_TERRAIN);
   this->objectList = 0;
 }
Index: orxonox/trunk/src/world_entities/world_entity.cc
===================================================================
--- orxonox/trunk/src/world_entities/world_entity.cc	(revision 4315)
+++ orxonox/trunk/src/world_entities/world_entity.cc	(revision 4318)
@@ -30,5 +30,5 @@
 WorldEntity::WorldEntity(const TiXmlElement* root)
 {
-  this->setClassName ("WorldEntity");
+  this->setClassID(CL_WORLD_ENTITY);
   this->model = NULL;
 
