Index: /trunk/src/Makefile.am
===================================================================
--- /trunk/src/Makefile.am	(revision 10113)
+++ /trunk/src/Makefile.am	(revision 10114)
@@ -59,5 +59,4 @@
 		defs/globals.h \
 		defs/compiler.h \
-		defs/class_id_DEPRECATED.h \
 		subprojects/benchmark.h
 
Index: unk/src/defs/class_id_DEPRECATED.h
===================================================================
--- /trunk/src/defs/class_id_DEPRECATED.h	(revision 10113)
+++ 	(revision )
@@ -1,465 +1,0 @@
-
-/*
-   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: Benjamin Grauer
-   co-programmer: Patrick Boenzli
-
-   2005-06-10: (bensch) added new sturcture to support multiple inheritance
-*/
-
-/*!
- * @file class_id_DEPRECATED.h
- * @brief contains a list of orxonox ClassID's (identities to register classes and their SuperClasses)
- *
- *  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/Factory to identify and load important classes
- *
- *  !! important !!
- *  When adding a new CLASS be sure about the following:
- *    1. if it is a (SUB)SUPERCLASS make sure there is still space left (if not think of a new approach)
- *    2. check if the Number you add is not refered twice, and that with (SUB)SUPERCLASSES there are no intersections
- *    3. be sure to add you stuff in the right section, and don't interest yourself for the order of things. :)
- */
-
-#ifndef _CLASS_ID___DEPRECATED___H
-#define _CLASS_ID___DEPRECATED___H
-
-//! list of all classes to be loadable in via the ObjectManager
-/**
- *
- * -------------------------------------------------------------------------------------------
- * Consider the Identifiers 0xABCDEFGH
- * The first two: A and B are superclass Identifiers !! THEY ARE ALREADY FULL !!
- *
- * The second three are for sub-superclass-groups inheritance:
- *  C: a Group identifier: can be anything from 1,2,3,4,5,6,7,8,9,a,b,c,d,e,f,g,h
- *  D,E: Member within the Group, to specify further deriavtions within the Group.
- *       These may be anything from 1,2,4,8 (at D and E)
- *  !! consider, that you __may not__ have a derivated class from group a and group b.
- *
- * The last three entries F,G,H are for any leaf classes in existence.
- * they are ordered in the following way:
- *  F: LEAF-GroupSpecifier
- *  G,H: UNIQUE NUMBER eithin F-Group.
- *
- * You only have to extend the Class with your ClassID-tag.
- * If something goes Wrong, you get an Assertion-Warning in BaseObject.
- * !! Abstrace/Non-total-leaf classes do not have a LEAF-part.
- * -------------------------------------------------------------------------------------------
- *
- * COUNT:
- * -> # 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_DEPRICATED
-{
-  // the Nothing CLASS (NULL)
-  CL_NULL                       =    0x00000000,
-
-  /// SUPER-classes
-  CL_MASK_SUPER_CLASS           =    0xff000000,
-  CL_BASE_OBJECT                =    0x00000000,
-
-  CL_PARENT_NODE                =    0x01000000,
-
-  CL_STORY_ENTITY               =    0x02000000,
-
-  CL_PHYSICS_INTERFACE          =    0x04000000,
-
-  CL_EVENT_LISTENER             =    0x08000000,
-
-  CL_ELEMENT_2D                 =    0x10000000,
-
-  CL_SYNCHRONIZEABLE            =    0x20000000,
-
-  CL_WORLD_ENTITY               =    0x40000000,
-
-  /// subsuper-classes
-  // subsuper-classes derivations taken : 1, 2, 5, a, b, c.   << THIS IS A LIST OF ALL THE DCL_MASK_SUBSUPERCLASS_ID's taken
-  CL_MASK_SUBSUPER_CLASS        =    0x00fff000,
-  CL_MASK_SUBSUPER_CLASS_IDA    =    0x00f00000,
-  CL_MASK_SUBSUPER_CLASS_IDB    =    0x000ff000,
-
-  // lowest level classes
-  // These are also referenced to as Leaf-classes
-  CL_MASK_LOWLEVEL_CLASS        =    0x00000fff,
-
-  CL_PREFERENCES                =    0X00000f51,
-
-  /// SINGLETON classes (range from 0x00000000 to 0x000000ff)
-  CL_MASK_SINGLETON             =    0x00000000,
-  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,
-  CL_CR_ENGINE                  =    0x00000015,
-  CL_RENDER_2D                  =    0x00000021,
-  CL_NULL_ELEMENT_2D            =    0x00000022,
-  CL_SHELL_BUFFER               =    0x00000032,
-  CL_GLGUI_HANDLER              =    0x00000040,
-  CL_GLGUI_MAIN_WIDGET          =    0x00000041,
-  CL_NETWORK_MANAGER            =    0x00000050,
-  CL_SHARED_NETWORK_DATA        =    0x00000051,
-  CL_NETWORK_SETTINGS           =    0x00000052,
-  CL_ATMOSPHERIC_ENGINE         =    0x00000061,
-
-  /// StoryEntities (range from 0x00000100 to 0x000001ff)
-  CL_GAME_WORLD                 =    0x00101000,
-  CL_GAME_WORLD_DATA            =    0x00102000,
-  CL_GAME_RULES                 =    0x00104000,
-  CL_NETWORK_GAME_RULES         =    0x00108000,
-  CL_MISSION_GOAL               =    0x00110000,
-
-  CL_CAMPAIGN                   =    0x00000101,
-  CL_CAMPAIGN_DATA              =    0x00000102,
-  CL_SIMPLE_GAME_MENU           =    0x00000103,
-  CL_SIMPLE_GAME_MENU_DATA      =    0x00000104,
-  CL_SINGLE_PLAYER_WORLD        =    0x00000105,
-  CL_SINGLE_PLAYER_WORLD_DATA   =    0x00000106,
-  CL_MULTI_PLAYER_WORLD         =    0x00000107,
-  CL_MULTI_PLAYER_WORLD_DATA    =    0x00000108,
-  CL_MOVIE_LOADER               =    0x00000109,
-
-  CL_GAME_MENU                  =    0x00000110,
-  CL_GAME_MENU_DATA             =    0x00000111,
-
-
-  CL_MULTIPLAYER_TEAM_DEATHMATCH=    0x00000121,
-  CL_SINGLEPLAYER_SHOOTEMUP     =    0x00000122,
-
-  CL_KILL_TARGET                =    0x00105001,
-
-
-  /// SUPER-PNodes
-  CL_FIELD                      =    0x00201000,
-
-  /// PNodes
-  CL_CAMERA                     =    0x00000201,
-  CL_CAMERA_TARGET              =    0x00000202,
-
-
-  /// SUPER-WorldEntities
-  CL_PLAYER                     =    0x00302000,
-
-  CL_PLAYABLE                   =    0x00301000,
-  CL_NPC                        =    0x00304000,
-  CL_PROJECTILE                 =    0x00308000,
-  CL_WEAPON                     =    0x00310000,
-  CL_POWER_UP                   =    0x00320000,
-  CL_EXTENDABLE                 =    0x00340000,
-
-  /// WorldEntities (range from 0x00000300 to 0x000005ff)
-  // Environments
-  CL_ENVIRONMENT                =    0x00000303,
-  CL_SATELLITE                  =    0x00000304,
-  CL_SKYBOX                     =    0x00000305,
-  CL_SKYSPHERE                  =    0x00000306,
-  CL_TERRAIN                    =    0x00000307,
-  CL_WATER                      =    0x00000308,
-  CL_PLANET                     =    0x00000309,
-  CL_BUILDING                   =    0x00000310,
-  CL_MAPPED_WATER               =    0x00000311,
-  CL_BSP_ENTITY                 =    0x00000312,
-  CL_SKYDOME                    =    0x00000313,
-  CL_DOOR                       =    0x00000314,
-  CL_REPAIR_STATION             =    0x00000315,
-  CL_CRANE                      =    0x00000316,
-  CL_BRAKING_WALL               =    0X00000317,
-  CL_AIMING_SYSTEM              =    0x00000318,
-  CL_GATE                       =    0x00000319,
-
-  // Playables
-  CL_SPACE_SHIP                 =    0x0000035a,
-  CL_HELICOPTER                 =    0x0000035b,
-  CL_SPAWNING_POINT             =    0x0000035c,
-  CL_MD2_CREATURE               =    0x0000035d,
-  CL_HOVER                      =    0x0000035e,
-  CL_TURBINE_HOVER              =    0x0000035f,
-  CL_SPACECRAFT_2D              =    0x00000360,
-  CL_CRUIZER                    =    0x00000361,
-  CL_SPECTATOR                  =    0x0000036a,
-  CL_COLLISION_PROBE            =    0x0000036b,
-  CL_FPS_PLAYER                 =    0x0000036c,
-
-  // Powerups
-  CL_TURRET_POWER_UP            =    0x00000381,
-  CL_LASER_POWER_UP             =    0x00000382,
-  CL_WEAPON_POWER_UP            =    0x00000383,
-  CL_PARAM_POWER_UP             =    0x00000384,
-
-  // Weapons
-  CL_TEST_GUN                   =    0x000003a0,
-  CL_LASER_CANNON               =    0x000003a1,
-  CL_TURRET                     =    0x000003a2,
-  CL_AIMING_TURRET              =    0x000003a3,
-  CL_CANNON                     =    0x000003a4,
-  CL_TARGETING_TURRET           =    0x000003a5,
-  CL_HYPERBLASTER               =    0x000003a6,
-  CL_FPS_SNIPER_RIFLE           =    0x000003a7,
-  CL_FPS_LASER_RIFLE            =    0x000003a8,
-  CL_BOOMERANG_GUN              =    0x000003a9,
-
-  // Projectiles
-  CL_TEST_BULLET                =    0x000003e0,
-  CL_ROCKET                     =    0x000003e1,
-  CL_LASER                      =    0x000003e2,
-  CL_RAIL_PROJECTILE            =    0x000003e3,
-  CL_BOMB                       =    0x000003e4,
-  CL_GROUND_TURRET              =    0x000003e5,
-  CL_SPACE_TURRET               =    0x000003e6,
-  CL_NETWORK_TURRET             =    0x000003e7,
-  CL_GUIDED_MISSILE             =    0x000003e8,
-  CL_HYPERBLAST                 =    0x000003e9,
-  CL_BOOMERANG_PROJECTILE       =    0x000003ea,
-
-  // NPC's
-  CL_NPC_TEST1                  =    0x00000401,
-  CL_NPC_TEST2                  =    0x00000402,
-  CL_GENERIC_NPC                =    0x00000403,
-  CL_ATTRACTOR_MINE             =    0x00000404,
-
-  // Testing Entities
-  CL_TEST_ENTITY                =    0x00000409,
-
-  // misc
-  CL_MOVIE_ENTITY               =    0x00000511,
-  CL_RECORDER                   =    0x00000512,
-
-  CL_IMAGE_ENTITY               =    0x00000513,
-  CL_IMAGE_PLANE                =    0x00000518,
-  CL_MODEL_ENTITY               =    0x00000515,
-  CL_TEXT_ELEMENT               =    0x00000516, /// TODO MOVE
-
-
-  /// GamePlay (range from 0x00000600 0x000006ff)
-  CL_EVENT                      =    0x00000601,
-  CL_KEY_MAPPER                 =    0x00000602,
-  CL_CROSSHAIR                  =    0x00000612,
-
-  CL_WEAPON_MANAGER             =    0x00000603,
-  CL_AMMO_CONTAINER             =    0x00000604,
-  CL_HUD                        =    0x00000620,
-
-
-  CL_SCRIPT_MANAGER             =    0x00000650,
-  CL_SCRIPT                     =    0x00000651,
-  CL_SCRIPT_CLASS               =    0x00000652,
-  CL_SCRIPT_TRIGGER             =    0x00000653,
-
-
-  /// Physics stuff (range from 0x00000700 to 0x000008ff)
-  CL_PHYSICS_CONNECTION         =    0x00000701,
-  CL_FIELD_GRAVITY              =    0x00000710,
-  CL_FIELD_POINT_GRAVITY        =    0x00000711,
-  CL_FIELD_TWIRL                =    0x00000712,
-
-
-  /// Collision
-  CL_COLLISION                  =    0x00780000,
-  CL_COLLISION_HANDLE           =    0x00000712,
-  CL_COLLISION_REACTION         =    0X00000713,
-  CL_CR_PHYSICS_MOMENTUM        =    0X00000714,
-  CL_CR_PHYSICS_GROUND_WALK     =    0X00000715,
-  CL_CR_PHYSICS_FULL_WALK       =    0X00000716,
-  CL_CR_OBJECT_DAMAGE           =    0X00000717,
-  CL_CR_OBJECT_PICKUP           =    0X00000718,
-  CL_CR_VERTEX_TRAFO            =    0X00000719,
-  CL_CR_SPECIAL_CALLBACK        =    0X00000720,
-
-
-  CL_BV_TREE                    =    0x00701000,
-  CL_BV_TREE_NODE               =    0x00702000,
-  CL_OBB_TREE                   =    0x00000721,
-  CL_OBB_TREE_NODE              =    0x00000722,
-  CL_BOUNDING_VOLUME            =    0x00710000,
-  CL_OBB                        =    0x00720000,
-  CL_BOUNDING_SPHERE            =    0x00740000,
-  CL_AABB_TREE_NODE             =    0x00000724,                //FIXME: is this correct? AABB_TREE_NODE isA BV_TREE_NODE
-  CL_AABB                       =    0x00780000,                //FIXME: is this correct? AABB isA BOUNDING_VOLUME
-
-
-
-  /// Graphical stuff (range from 0x00000800 to 0x00000aff)
-  /// SUPER-Textures
-  CL_MATERIAL                   =    0x00801000,
-  CL_TEXTURE                    =    0x00802000,
-  CL_TEXTURE_SEQUENCE           =    0x00804000,
-  CL_TEXT                       =    0x00808000,
-  CL_MULTI_LINE_TEXT            =    0x00000840,
-  CL_LIMITED_WIDTH_TEXT         =    0x00000841,
-
-  // Texutres.
-  CL_FONT                       =    0x00000802,
-  CL_MOVIE_PLAYER               =    0x00000805,
-  CL_MEDIA_CONTAINER            =    0x00000806,
-
-  /// Super-Models
-  CL_MODEL                      =    0x00901000,
-  CL_STATIC_MODEL               =    0x00902000,
-  CL_VERTEX_ARRAY_MODEL         =    0x00904000,
-  CL_INTERACTIVE_MODEL          =    0x00908000,        ///FIXME: is this ok bensch?
-
-  // Models
-  CL_OBJ_MODEL                  =    0x00000907,
-
-  CL_PRIMITIVE_MODEL            =    0x00000908,
-  CL_MD2_MODEL                  =    0x00000909,
-  CL_HEIGHT_MAP                 =    0x0000090a,
-  CL_GRID                       =    0x0000090b,
-  CL_BSP_MODEL                  =    0x0000090c, //!FIXME
-
-  CL_SHADER                     =    0x00000811,
-  CL_LIGHT                      =    0x00000821,
-
-  CL_BILLBOARD                  =    0x00000a01,
-
-  CL_GRAPHICS_EFFECT            =    0x00a01000,
-  CL_WEATHER_EFFECT             =    0x00a10000,
-  CL_FOG_EFFECT                 =    0x00000a10,
-  CL_VOLFOG_EFFECT              =    0x00000a11,
-  CL_LENSE_FLARE                =    0x00000a12,
-  CL_RAIN_EFFECT                =    0x00000a13,
-  CL_SNOW_EFFECT                =    0x00000a14,
-  CL_CLOUD_EFFECT               =    0x00000a15,
-  CL_LIGHTNING_EFFECT          =    0x00000a16,
-  CL_EXPLOSION                  =    0x00000a20,
-  CL_LIGHTNING_BOLT             =    0x00000a21,
-
-
-
-  // Particles
-  CL_PARTICLE_SYSTEM            =    0x00a02000,
-  CL_DOT_PARTICLES              =    0x00000aa1,
-  CL_SPARK_PARTICLES            =    0x00000aa2,
-  CL_SPRITE_PARTICLES           =    0x00000aa3,
-  CL_MODEL_PARTICLES            =    0x00000aa4,
-  //  CL_PNODE_PARTICLES            =    0x00a20000,
-
-  CL_PARTICLE_EMITTER           =    0x00a04000,
-  CL_DOT_EMITTER                =    0x00000ab1,
-  CL_PLANE_EMITTER              =    0x00000ab2,
-  CL_BOX_EMITTER                =    0x00000ab3,
-  CL_SPHERE_EMITTER             =    0x00000ab4,
-  //  CL_MODEL_EMITTER              =    0x00000a25,
-
-  // Element2D's  (range from 0x00000b00 to 0x00000bff)
-  /// GL-GUI
-  CL_GLGUI_WIDGET               =    0x00b01000,
-  CL_GLGUI_BUTTON               =    0x00b02000,
-  CL_GLGUI_PUSHBUTTON           =    0x00000b03,
-  CL_GLGUI_CHECKBUTTON          =    0x00000b04,
-  CL_GLGUI_RADIOBUTTON          =    0x00000b05,
-  CL_GLGUI_SLIDER               =    0x00000b06,
-  CL_GLGUI_PROGRESSBAR          =    0x00000b07,
-  CL_GLGUI_CONTAINER            =    0x00b04000,
-  CL_GLGUI_BOX                  =    0x00000b17,
-  CL_GLGUI_FRAME                =    0x00000b18,
-  CL_GLGUI_WINDOW               =    0x00000b19,
-  CL_GLMENU_IMAGE_SCREEN        =    0x00000b20,
-  CL_GLGUI_BAR                  =    0x00000b30,
-  CL_GLGUI_CURSOR               =    0x00000b50,
-  CL_GLGUI_TEXT                 =    0x00000b51,
-  CL_GLGUI_INPUTLINE            =    0x00000b60,
-  CL_GLGUI_TEXTFIELD            =    0x00000b61,
-  CL_GLGUI_IMAGE                =    0x00000b70,
-  CL_GLGUI_TABLE                =    0x00000b71,
-
-  CL_GLGUI_NOTIFIER             =    0x00000b80,
-
-  // QT_GUI
-  CL_GUI_SAVEABLE               =    0x00b10000,
-  CL_QTGUI_BUTTON               =    0x00000ba0,
-  CL_QTGUI_PUSHBUTTON           =    0x00000ba3,
-  CL_QTGUI_CHECKBUTTON          =    0x00000ba4,
-  CL_QTGUI_RADIOBUTTON          =    0x00000ba5,
-  CL_QTGUI_CONTAINER            =    0x00b200a0,
-  CL_QTGUI_BOX                  =    0x00000ba7,
-  CL_QTGUI_FRAME                =    0x00000ba8,
-  CL_QTGUI_WINDOW               =    0x00000ba9,
-  CL_QTMENU_IMAGE_SCREEN        =    0x00000ba0,
-  CL_QTGUI_BAR                  =    0x00000ba0,
-
-  /// AUDIO stuff (range from 0x00000c00 to 0x00000cff)
-  CL_SOUND_BUFFER               =    0x00000c01,
-  CL_SOUND_SOURCE               =    0x00000c02,
-  CL_SOUND_OGG_PLAYER           =    0x00000c11,
-
-
-  /// NETWORK stuff (range from 0x00000d00 to 0x00000dff)
-  CL_DATA_STREAM                =    0x00d01000,
-  CL_NETWORK_STREAM             =    0x00000d01,
-  CL_NETWORK_PROTOCOL           =    0x00000d02,
-  CL_NETWORK_SOCKET             =    0x00000d03,
-  CL_SERVER_SOCKET              =    0X00000d04,
-  CL_CONNECTION_MONITOR         =    0x00000d05,
-  CL_HANDSHAKE                  =    0x00000d06,
-  CL_NETWORK_GAME_MANAGER       =    0x00000d07,
-  CL_MESSAGE_MANAGER            =    0x00000d08,
-  CL_PLAYER_STATS               =    0x00000d09,
-  CL_SIMPLE_SYNC                =    0x00000d0a,
-  CL_NETWORK_MONITOR            =    0x00000d0b,
-  CL_PROXY_CONTROL              =    0x00000d0c,
-
-
-
-  /// MISCELANEOUS: (range from 0x00000e00 to 0x00000fff)
-  CL_ANIMATION                  =    0x00000e01,
-  //  CL_ANIMATION3D                =    0x00000b02,
-  CL_QUICK_ANIMATION            =    0x00000e02,
-
-  CL_FACTORY                    =    0x00e01000,
-  CL_FAST_FACTORY               =    0x00000ea2,
-  CL_LOAD_PARAM                 =    0x00000ea3,
-  CL_DYNAMIC_LOADER             =    0x00000ea8,
-
-  CL_INI_PARSER                 =    0x00000e04,
-
-  CL_SHELL                      =    0x00000e10,
-  CL_SHELL_COMMAND              =    0x00000e11,
-  CL_SHELL_COMMAND_CLASS        =    0x00000e12,
-  CL_SHELL_INPUT                =    0x00000e13,
-  CL_SHELL_COMPLETION           =    0x00000e14,
-  CL_SHELL_COMMAND_ALIAS        =    0x00000e15,
-
-  CL_TRACK_ELEMENT              =    0x00000e2b,
-  CL_LIST                       =    0x00000e25,
-  CL_SUBSTRING                  =    0x00000e26,
-  CL_CURVE                      =    0x00000e28,
-  CL_CHARACTER_ATTRIBUTES       =    0x00000e2a,
-  CL_NUMBER                     =    0x00000e2c,
-  CL_EXECUTOR                   =    0x00000e2d,
-
-  // Spatial Data Separation
-  CL_SPATIAL_SEPARATION         =    0x00000e0d,
-  CL_QUADTREE                   =    0x00000e0e,
-  CL_QUADTREE_NODE              =    0x00000e0f,
-};
-
-
-#endif /* _CLASS_ID___DEPRECATED___H */
Index: /trunk/src/lib/graphics/importer/md2/md2Model.cc
===================================================================
--- /trunk/src/lib/graphics/importer/md2/md2Model.cc	(revision 10113)
+++ /trunk/src/lib/graphics/importer/md2/md2Model.cc	(revision 10114)
@@ -92,5 +92,5 @@
   rebuildInfo();
 
-  //this->debug();
+  this->debug();
 }
 
@@ -99,4 +99,7 @@
 {
   this->init();
+
+  this->scaleFactor = model.scaleFactor;
+
   this->rebuildInfo();
 }
@@ -104,4 +107,6 @@
 MD2Model& MD2Model::operator=(const MD2Model& md2model)
 {
+  this->init();
+  this->scaleFactor = md2model.scaleFactor;
   this->data = md2model.data;
   this->rebuildInfo();
@@ -141,4 +146,9 @@
   this->data = MD2Data::Pointer(new MD2Data(modelFileName, skinFileName, scale));
   this->rebuildInfo();
+
+  // init the animation - do not remove
+  this->tick( 0.01);
+
+  return true;
 }
 
@@ -268,6 +278,4 @@
 /**
  * @brief draws the model: interface for all other classes out in the world
- * @todo make it const and virtual
- * FIXME
  */
 void MD2Model::draw() const
@@ -313,4 +321,5 @@
       glNormal3fv(anorms[this->data->pLightNormals[pCommands[2]]]);
       glVertex3fv(this->verticesList[pCommands[2]]);
+//       printf("vertex: %f, %f, %f\n", this->verticesList[pCommands[2]][0], this->verticesList[pCommands[2]][1], this->verticesList[pCommands[2]][2]);
     }
     glEnd();
@@ -325,5 +334,5 @@
 {
   //static sVec3D this->verticesList[MD2_MAX_VERTICES]; /* performance: created only once in a lifetime */
-  int* pCommands = this->data->pGLCommands;
+  //  int* pCommands = this->data->pGLCommands;
   /* some face culling stuff */
   //   glPushAttrib(GL_POLYGON_BIT);
@@ -428,5 +437,6 @@
   PRINT(0)("=  Number of Frames: \t%i\n", this->data->header->numFrames);
   PRINT(0)("=  Height, Width:\t%i, %i\n", this->data->header->skinHeight, this->data->header->skinWidth);
-  //PRINT(0)("=  Pointer to the data object: %p\n", this->data);
+  PRINT(0)("=  DATA:\n");
+  PRINT(0)("=  Number of references to data: %i\n", this->data.count());
   PRINT(0)("===================================================\n\n");
 }
@@ -452,4 +462,6 @@
   this->loadModel(modelFileName);
   this->loadSkin(skinFileName);
+
+  PRINTF(0)("model %s, skin %s\n", modelFileName.c_str(), skinFileName.c_str());
 }
 
@@ -570,4 +582,6 @@
   delete [] buffer;
   fclose(pFile);
+
+  return true;
 }
 
@@ -592,3 +606,5 @@
   this->material.setIllum(3);
   this->material.setAmbient(1.0, 1.0, 1.0);
-}
+
+  return true;
+}
Index: /trunk/src/lib/graphics/importer/md2/resource_md2.cc
===================================================================
--- /trunk/src/lib/graphics/importer/md2/resource_md2.cc	(revision 10113)
+++ /trunk/src/lib/graphics/importer/md2/resource_md2.cc	(revision 10114)
@@ -20,7 +20,8 @@
     PRINTF(0)("NOT FOUND MD2: %s\n", modelName.c_str());
     std::string modelFileName = this->Resource::locateFile(modelName);
-    //std::string skinFileName = this->Resource::locateFile(skinName);
+    std::string skinFileName = this->Resource::locateFile(skinName);
+    PRINTF(0)("NEW %s::%s\n", modelName.c_str(), modelFileName.c_str());
     this->MD2Model::load(modelFileName, skinName, scale);
-    this->Resource::addResource(new ResourceMD2::MD2ResourcePointer(loadString(modelName, skinName, scale), keepLevel, this->MD2Model::dataPointer()));
+    this->Resource::addResource(new ResourceMD2::MD2ResourcePointer(loadString(modelName, skinFileName, scale), keepLevel, this->MD2Model::dataPointer()));
   }
 
Index: /trunk/src/lib/graphics/light.cc
===================================================================
--- /trunk/src/lib/graphics/light.cc	(revision 10113)
+++ /trunk/src/lib/graphics/light.cc	(revision 10114)
@@ -26,7 +26,5 @@
 #include "debug.h"
 
-#include "class_id_DEPRECATED.h"
-
-ObjectListDefinitionID(Light, CL_LIGHT);
+ObjectListDefinition(Light);
 CREATE_FACTORY(Light);
 
Index: /trunk/src/lib/graphics/render2D/image_plane.cc
===================================================================
--- /trunk/src/lib/graphics/render2D/image_plane.cc	(revision 10113)
+++ /trunk/src/lib/graphics/render2D/image_plane.cc	(revision 10114)
@@ -23,8 +23,5 @@
 #include "p_node.h"
 
-
-#include "class_id_DEPRECATED.h"
-
-ObjectListDefinitionID(ImagePlane, CL_IMAGE_PLANE);
+ObjectListDefinition(ImagePlane);
 CREATE_FACTORY(ImagePlane);
 
Index: /trunk/src/lib/graphics/shader_data.cc
===================================================================
--- /trunk/src/lib/graphics/shader_data.cc	(revision 10113)
+++ /trunk/src/lib/graphics/shader_data.cc	(revision 10114)
@@ -63,5 +63,8 @@
   {
     PRINTF(2)("Shaders are not supported on your hardware\n");
-  }
+    return true;
+  }
+  
+  return true;
 }
 
Index: /trunk/src/lib/graphics/text_engine/limited_width_text.cc
===================================================================
--- /trunk/src/lib/graphics/text_engine/limited_width_text.cc	(revision 10113)
+++ /trunk/src/lib/graphics/text_engine/limited_width_text.cc	(revision 10114)
@@ -33,4 +33,5 @@
   this->setLineWidth(lineWidth);
 }
+
 
 /**
Index: /trunk/src/lib/gui/gl/glmenu/glmenu_imagescreen.cc
===================================================================
--- /trunk/src/lib/gui/gl/glmenu/glmenu_imagescreen.cc	(revision 10113)
+++ /trunk/src/lib/gui/gl/glmenu/glmenu_imagescreen.cc	(revision 10114)
@@ -26,6 +26,5 @@
 #include "debug.h"
 
-#include "class_id_DEPRECATED.h"
-ObjectListDefinitionID(GLMenuImageScreen, CL_GLMENU_IMAGE_SCREEN);
+ObjectListDefinition(GLMenuImageScreen);
 CREATE_FACTORY(GLMenuImageScreen);
 
Index: /trunk/src/lib/lang/base_object.cc
===================================================================
--- /trunk/src/lib/lang/base_object.cc	(revision 10113)
+++ /trunk/src/lib/lang/base_object.cc	(revision 10114)
@@ -35,4 +35,17 @@
 }
 
+/** 
+ * copyconstructor
+ * @param bo instance to copy
+ */
+BaseObject::BaseObject( const BaseObject& bo )
+{
+  this->className = "BaseObject";
+  this->objectName = bo.objectName;
+  this->xmlElem = (bo.xmlElem)? bo.xmlElem->Clone() : NULL;
+  this->registerObject( this, BaseObject::_objectList);
+}
+
+
 /**
  * @brief standard deconstructor
@@ -45,5 +58,5 @@
   for (it = this->_classes.begin(); it != this->_classes.end(); ++it)
   {
-    if (ORX_DEBUG >= 5)
+    //if (ORX_DEBUG >= 5)
       assert((*it)._objectList->checkIteratorInList((*it)._iterator) || (*it)._objectList->checkObjectInList(this));
     (*it)._objectList->unregisterObject((*it)._iterator);
Index: /trunk/src/lib/lang/base_object.h
===================================================================
--- /trunk/src/lib/lang/base_object.h	(revision 10113)
+++ /trunk/src/lib/lang/base_object.h	(revision 10114)
@@ -30,4 +30,5 @@
 public:
   BaseObject (const std::string& objectName = "");
+  BaseObject( const BaseObject& bo );
 
   virtual ~BaseObject ();
@@ -51,6 +52,4 @@
   /** @returns the ClassID of this Object */
   inline const ClassID& getClassID() const { return _classes.front()._objectList->identity(); }
-  /** @returns the ID of the Topmost object of the ClassStack */
-  inline const int& getLeafClassID() const { return _classes.front()._objectList->identity().id(); }
 
   bool isA(const ObjectListBase& objectList) const;
Index: /trunk/src/lib/lang/object_list.cc
===================================================================
--- /trunk/src/lib/lang/object_list.cc	(revision 10113)
+++ /trunk/src/lib/lang/object_list.cc	(revision 10114)
@@ -25,5 +25,5 @@
  * @return a new NewObejctList
  */
-ObjectListBase::ObjectListBase(const std::string& className, int id)
+ObjectListBase::ObjectListBase(const std::string& className)
     : _name(className)
 {
@@ -36,10 +36,8 @@
   assert(!ObjectListBase::classNameExists(className) && "Classes should only be included once, and no two classes should have the same name (key value)");
 
-  if (id == -1)
-  {
-    id = ObjectListBase::_classesByID->size();
-    // searching for a free ID
-    while (ObjectListBase::classIDExists(id)) ++id;
-  }
+  int id = ObjectListBase::_classesByID->size();
+  // searching for a free ID
+  while (ObjectListBase::classIDExists(id)) ++id;
+
   assert(!ObjectListBase::classIDExists(id) && "Classes should only be included once, and no two classes should have the same ID (key value)");
 
@@ -330,2 +328,57 @@
     return -1;
 }
+
+
+/**
+ * replace all ids. list must contain all (and no more) ids
+ * @param str2id list: string -> newId
+ */
+void ObjectListBase::replaceIDMap( const std::map< std::string, int >& str2id )
+{
+  if ( str2id.size() != _classesByID->size() )
+  {
+    assert( false && "size of str2id does not match" );
+  }
+
+  IDMap * map = new IDMap();
+
+  std::map< std::string, int >::const_iterator it;
+  for ( it = str2id.begin(); it != str2id.end(); it++ )
+  {
+    assert( _classesByName->find( it->first ) != _classesByName->end() );
+    (*map)[ it->second ] =  (*_classesByName)[it->first];
+    (*map)[ it->second ]->_id = it->second;
+  }
+
+  delete _classesByID;
+  _classesByID = map;
+}
+
+/**
+ *
+ * @return
+ */
+std::map< std::string, int > * ObjectListBase::createStrToId( )
+{
+  std::map< std::string, int > * res = new std::map< std::string, int >();
+
+  NameMap::const_iterator it;
+  for ( it = _classesByName->begin(); it != _classesByName->end(); it++ )
+  {
+    IDMap::const_iterator it2;
+    int id = -1;
+    for ( it2 = _classesByID->begin(); it2 != _classesByID->end(); it2++ )
+    {
+      if ( it->second == it2->second )
+      {
+        id = it2->first;
+        break;
+      }
+    }
+
+    assert( id != -1 );
+    (*res)[ it->first ] = id;
+  }
+
+  return res;
+}
Index: /trunk/src/lib/lang/object_list.h
===================================================================
--- /trunk/src/lib/lang/object_list.h	(revision 10113)
+++ /trunk/src/lib/lang/object_list.h	(revision 10114)
@@ -32,15 +32,7 @@
  * @brief Use this macro to easily define a Class to store its own ObjectListDefinition
  * @param ClassName: the Name of the Class.
- * @param ID: optional set a Fixed ID.
- */
-#define ObjectListDefinitionID(ClassName, ID) \
-   ObjectList<ClassName> ClassName::_objectList(#ClassName, ID)
-
-/**
- * @brief Use this macro to easily define a Class to store its own ObjectListDefinition
- * @param ClassName: the Name of the Class.
  */
 #define ObjectListDefinition(ClassName) \
-    ObjectListDefinitionID(ClassName, -1)
+    ObjectList<ClassName> ClassName::_objectList(#ClassName)
 
 class BaseObject;
@@ -109,5 +101,5 @@
 
 protected:
-  ObjectListBase(const std::string& className, int id = -1);
+  ObjectListBase(const std::string& className);
   virtual ~ObjectListBase();
 
@@ -133,4 +125,8 @@
   static NameMap*               _classesByName;     //!< A Map of all the classes in existance.
   static std::list<std::string> _classNames;        //!< A list of all the registered ClassNames.
+
+public:
+  static void replaceIDMap( const std::map<std::string, int>& str2id );
+  static std::map<std::string, int>* createStrToId();
 };
 
@@ -199,5 +195,5 @@
 
 public:
-  ObjectList(const std::string& name, int id = -1);
+  ObjectList(const std::string& name);
   ~ObjectList();
 
@@ -256,6 +252,6 @@
  */
 template <class T>
-ObjectList<T>::ObjectList(const std::string& name, int id)
-    : ObjectListBase(name, id)
+ObjectList<T>::ObjectList(const std::string& name)
+    : ObjectListBase(name)
 {}
 
Index: /trunk/src/lib/network/Makefile.am
===================================================================
--- /trunk/src/lib/network/Makefile.am	(revision 10113)
+++ /trunk/src/lib/network/Makefile.am	(revision 10114)
@@ -43,4 +43,6 @@
 		      synchronizeable_var/synchronizeable_uint.cc \
 		      synchronizeable_var/synchronizeable_ip.cc \
+		      synchronizeable_var/synchronizeable_classid.cc \
+		      synchronizeable_var/synchronizeable_classid_list.cc \
 		      \
 		      ip.cc
@@ -94,4 +96,6 @@
 		synchronizeable_var/synchronizeable_uint.h \
 		synchronizeable_var/synchronizeable_ip.h \
+		synchronizeable_var/synchronizeable_classid.h \
+		synchronizeable_var/synchronizeable_classid_list.h \
 		\
 		ip.h
Index: /trunk/src/lib/network/handshake.cc
===================================================================
--- /trunk/src/lib/network/handshake.cc	(revision 10113)
+++ /trunk/src/lib/network/handshake.cc	(revision 10114)
@@ -22,4 +22,7 @@
 #include "debug.h"
 
+#include "synchronizeable_var/synchronizeable_classid_list.h"
+
+std::map< std::string, int >* Handshake::classIdList = NULL;
 
 ObjectListDefinition(Handshake);
@@ -32,4 +35,16 @@
   this->registerObject(this, Handshake::_objectList);
 
+  if ( !Handshake::classIdList )
+  {
+    //TODO who else?
+    if ( SharedNetworkData::getInstance()->isMasterServer() )
+    {
+      Handshake::classIdList = ObjectListBase::createStrToId();
+    }
+    else
+    {
+      Handshake::classIdList = new std::map< std::string, int >();
+    }
+  }
 
   // register all variable handlers
@@ -52,4 +67,6 @@
   registerVar( new SynchronizeableIP( &this->proxy2, &this->proxy2, "proxy server 2", PERMISSION_MASTER_SERVER ) );
   registerVar( new SynchronizeableInt( &this->redirectProxy, &this->redirectProxy, "proxy server redirection flag", PERMISSION_MASTER_SERVER ) );
+  
+  registerVar( new SynchronizeableClassIDList( Handshake::classIdList, Handshake::classIdList, "classId List", PERMISSION_MASTER_SERVER ) );
 
 
Index: /trunk/src/lib/network/handshake.h
===================================================================
--- /trunk/src/lib/network/handshake.h	(revision 10113)
+++ /trunk/src/lib/network/handshake.h	(revision 10114)
@@ -113,9 +113,13 @@
     int                errorString_handler;                   //!< handshake error string handler
     int                candel_id;                             //!< handshake deletion handler
-    int                nodeType;                              //!, the type of the network node
+    int                nodeType;                              //!< the type of the network node
 
     int                redirectProxy;                         //!< true if the client should reconnect to a proxy server
     IP                 proxy1;                               //!< ip address of the first proxy (0.0.0.0 of not available)
     IP                 proxy2;                               //!< ip address of the second proxy (0.0.0.0 of not available)
+    
+    static std::map< std::string, int >* classIdList;
+  public:
+    std::map< std::string, int >* getClassIdList(){ return classIdList; }
 };
 
Index: /trunk/src/lib/network/message_manager.cc
===================================================================
--- /trunk/src/lib/network/message_manager.cc	(revision 10113)
+++ /trunk/src/lib/network/message_manager.cc	(revision 10114)
@@ -242,4 +242,10 @@
     assert( i + messageLength <= length );
     // make sure there is a message handler for this message type
+    //if ( !( messageHandlerMap.find( (MessageType)messageType ) != messageHandlerMap.end()) )
+    //{
+//	    PRINTF(0)("messagetype: %d\n", messageType);
+//	    this->objectList().debugAll( 0 );
+//    }
+    
     assert( messageHandlerMap.find( (MessageType)messageType ) != messageHandlerMap.end());
 
Index: /trunk/src/lib/network/network_game_manager.cc
===================================================================
--- /trunk/src/lib/network/network_game_manager.cc	(revision 10113)
+++ /trunk/src/lib/network/network_game_manager.cc	(revision 10114)
@@ -111,5 +111,5 @@
   playable.loadMD2Texture( playableTexture );
   playable.setTeam(team);
-  playable.loadModel( playableModel, 100.0f );
+  playable.loadModel( playableModel, playableScale );
   playable.setOwner( userId );
   playable.setUniqueID( SharedNetworkData::getInstance()->getNewUniqueID() );
Index: /trunk/src/lib/network/network_stream.cc
===================================================================
--- /trunk/src/lib/network/network_stream.cc	(revision 10113)
+++ /trunk/src/lib/network/network_stream.cc	(revision 10114)
@@ -128,4 +128,5 @@
 
   this->bRedirect = false;
+  this->bSoftRedirect = false;
 
   this->currentState = 0;
@@ -716,4 +717,5 @@
               // init the new message manager
               MessageManager::getInstance()->setUniqueID( it->second.handshake->getMessageManagerId() );
+              ObjectListBase::replaceIDMap( *(it->second.handshake->getClassIdList()) );
             }
 
@@ -966,5 +968,5 @@
 
       // if handshake not finished only sync handshake
-      if ( peer->second.handshake && Handshake::staticClassID() != sync.getLeafClassID())
+      if ( peer->second.handshake && Handshake::staticClassID() != sync.getClassID() )
         continue;
 
@@ -972,14 +974,14 @@
       if ( ( SharedNetworkData::getInstance()->isMasterServer() ||
              SharedNetworkData::getInstance()->isProxyServerActive() &&  peer->second.isClient())
-	     && Handshake::staticClassID() == sync.getLeafClassID() && sync.getUniqueID() != peer->second.userId )
+	     && Handshake::staticClassID() == sync.getClassID() && sync.getUniqueID() != peer->second.userId )
         continue;
 
       /* list of synchronizeables that will never be synchronized over the network: */
       // do not sync null parent
-      if ( NullParent::staticClassID() == sync.getLeafClassID())
+      if ( NullParent::staticClassID() == sync.getClassID())
         continue;
 
 
-      assert( sync.getLeafClassID() != 0);
+      assert( sync.getClassID() != 0);
 
       assert( offset + INTSIZE <= UDP_PACKET_SIZE );
@@ -1188,14 +1190,14 @@
 	  if( NullParent::staticClassID() == leafClassId || Synchronizeable::staticClassID() == leafClassId || NetworkGameManager::staticClassID() == leafClassId)
           {
-            PRINTF(1)("Don't create Object with ID %x, ignored!\n", (int)leafClassId);
+            PRINTF(0)("Don't create Object with ID %d, ignored!\n", (int)leafClassId);
             offset += syncDataLength;
             continue;
           }
           else
-	    ; /// FIXME CLASS_ID :: b = Factory::fabricate( leafClassId );
-
+		  b = Factory::fabricate( ObjectListBase::retrieveIdentity( leafClassId )  );
+	  
           if ( !b )
           {
-            PRINTF(1)("Could not fabricate Object with classID %x\n", leafClassId);
+            PRINTF(1)("Could not fabricate Object with classID %d\n", leafClassId);
             offset += syncDataLength;
             continue;
@@ -1208,9 +1210,9 @@
             sync->setSynchronized(true);
 
-            PRINTF(0)("Fabricated %s with id %d\n", sync->getClassCName(), sync->getUniqueID());
+            PRINTF(1)("Fabricated %s with id %d\n", sync->getClassCName(), sync->getUniqueID());
           }
           else
           {
-            PRINTF(1)("Class with ID %x is not a synchronizeable!\n", (int)leafClassId);
+            PRINTF(1)("Class with ID %d is not a synchronizeable!\n", (int)leafClassId);
             delete b;
             offset += syncDataLength;
Index: /trunk/src/lib/network/peer_info.h
===================================================================
--- /trunk/src/lib/network/peer_info.h	(revision 10113)
+++ /trunk/src/lib/network/peer_info.h	(revision 10114)
@@ -36,5 +36,5 @@
     int                 userId;                  //!< id of this network node
     int                 nodeType;                //!< type of this network node
-    IP                  ip;                      //!> the ip address of this network node
+    IP                  ip;                      //!< the ip address of this network node
 
     NetworkSocket *     socket;                  //!< socket connecting to this node
Index: /trunk/src/lib/network/player_stats.cc
===================================================================
--- /trunk/src/lib/network/player_stats.cc	(revision 10113)
+++ /trunk/src/lib/network/player_stats.cc	(revision 10114)
@@ -30,7 +30,7 @@
 #include "shell_command.h"
 
-#include "class_id_DEPRECATED.h"
-
-ObjectListDefinitionID(PlayerStats, CL_PLAYER_STATS);
+
+
+ObjectListDefinition(PlayerStats);
 CREATE_FACTORY(PlayerStats);
 
Index: /trunk/src/lib/network/synchronizeable.cc
===================================================================
--- /trunk/src/lib/network/synchronizeable.cc	(revision 10113)
+++ /trunk/src/lib/network/synchronizeable.cc	(revision 10114)
@@ -30,4 +30,6 @@
 
 #include "converter.h"
+
+#include "synchronizeable_var/synchronizeable_classid.h"
 
 
@@ -56,5 +58,7 @@
   /* make sure loadClassId is first synced var because this is read by networkStream */
   assert( syncVarList.size() == 0 );
-  mLeafClassId = this->registerVarId( new SynchronizeableInt( (int*)&this->getLeafClassID(), (int*)&this->getLeafClassID(), "leafClassId", PERMISSION_MASTER_SERVER) );
+  assert( this->getClassID() == this->objectList().id() );
+  
+  mLeafClassId = this->registerVarId( new SynchronizeableClassID( this, "leafClassId", PERMISSION_MASTER_SERVER) );
 
   this->registerVar( new SynchronizeableInt( &this->owner, &this->owner, "owner", PERMISSION_MASTER_SERVER ) );
@@ -267,5 +271,5 @@
 //       PRINTF(0)("sending %s %d\n", (*it)->getName().c_str(), n);
 
-//       if( this->isA(CL_PLAYABLE))
+//       if( this->isA( Playable::staticClassID() ))
 //       {
 //         PRINTF(0)("ms: %i, ps: %i, c: %i, sender: %i, reciever: %i, owner: %i, perm: (ow %i, ms %i, s %i, a %i)\n",
@@ -453,5 +457,5 @@
       //(*it)->debug();
 
-//       if( this->isA(CL_PLAYABLE))
+//       if( this->isA(Playable::staticClassID()))
 //       {
 //         PRINTF(0)("ms: %i, ps: %i, c: %i, sender: %i, reciever: %i, owner: %i, perm: (ow %i, ms %i, s %i, a %i)\n",
Index: /trunk/src/lib/network/synchronizeable_var/synchronizeable_classid.cc
===================================================================
--- /trunk/src/lib/network/synchronizeable_var/synchronizeable_classid.cc	(revision 10114)
+++ /trunk/src/lib/network/synchronizeable_var/synchronizeable_classid.cc	(revision 10114)
@@ -0,0 +1,75 @@
+/*
+   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: Christoph Renner
+   co-programmer: ...
+*/
+
+
+#include "synchronizeable_classid.h"
+#include "converter.h"
+
+#include <cassert>
+
+/**
+ * standard constructor
+ * @todo this constructor is not jet implemented - do it
+*/
+SynchronizeableClassID::SynchronizeableClassID( BaseObject * ptrIn, std::string name, int permission, int priority) : SynchronizeableVar( ptrIn, ptrIn, name, INTSIZE, permission, priority )
+{
+  this->vPtrIn = ptrIn;
+  this->vPtrOut = ptrIn;
+}
+
+
+/**
+ * standard deconstructor
+*/
+SynchronizeableClassID::~SynchronizeableClassID ()
+{
+}
+
+/**
+ * write var data to byte buffer
+ * @param buf pointer to write to
+ * @param maxLength writeToBuf will not write more than maxLength bytes
+ * @return number bytes written
+ */
+int SynchronizeableClassID::writeToBuf( byte * buf, int maxLength )
+{
+  int res = Converter::intToByteArray( vPtrIn->getClassID().id(), buf, maxLength );
+
+  assert( res == INTSIZE );
+
+  return res;
+}
+
+/**
+ * read var data from byte buffer. actually this function does nothing but 
+ * return INTSIZE
+ * @param buf pointer to read from
+ * @param maxLength readFromBuf will not read more than maxLength bytes
+ * @return number bytes read
+ */
+int SynchronizeableClassID::readFromBuf( byte * buf, int maxLength )
+{
+  return INTSIZE;
+}
+
+
+/**
+ * print out variable value
+ */
+void SynchronizeableClassID::debug( )
+{
+  printf( "SYNCHRONIZEABLE_VAR: %s IN: %d\n", name.c_str(), vPtrIn->getClassID().id() );
+}
+
Index: /trunk/src/lib/network/synchronizeable_var/synchronizeable_classid.h
===================================================================
--- /trunk/src/lib/network/synchronizeable_var/synchronizeable_classid.h	(revision 10114)
+++ /trunk/src/lib/network/synchronizeable_var/synchronizeable_classid.h	(revision 10114)
@@ -0,0 +1,38 @@
+/*!
+ * @file synchronizeable_int.h
+ * @brief Definition of SynchronizeableInt
+*/
+
+
+#ifndef _SYNCHRONIZEABLE_CLASSID_H
+#define _SYNCHRONIZEABLE_CLASSID_H
+
+#include "synchronizeable_var.h"
+
+class BaseObject;
+
+class SynchronizeableClassID : public SynchronizeableVar {
+
+  public:
+    SynchronizeableClassID( BaseObject * ptrIn, std::string name, int permission, int priority = 0 );
+    virtual ~SynchronizeableClassID();
+
+    virtual int writeToBuf( byte * buf, int maxLength );
+    virtual int readFromBuf( byte * buf, int maxLength );
+
+    /**
+     * check if writeToBuf will return the same size every time
+     * @return true if same size every time
+     */
+    virtual bool hasStaticSize(){ return true; };
+
+    virtual void debug();
+
+  protected:
+    BaseObject * vPtrIn;       //!< pointer to data (read)
+    BaseObject * vPtrOut;      //!< pointer to data (write)
+
+
+};
+
+#endif /* _PROTO_CLASS_H */
Index: /trunk/src/lib/network/synchronizeable_var/synchronizeable_classid_list.cc
===================================================================
--- /trunk/src/lib/network/synchronizeable_var/synchronizeable_classid_list.cc	(revision 10114)
+++ /trunk/src/lib/network/synchronizeable_var/synchronizeable_classid_list.cc	(revision 10114)
@@ -0,0 +1,176 @@
+/*
+   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: Christoph Renner
+   co-programmer: ...
+*/
+
+
+#include "synchronizeable_classid_list.h"
+#include "converter.h"
+#include <cassert>
+
+
+/**
+ * standard constructor
+ * @todo this constructor is not jet implemented - do it
+*/
+SynchronizeableClassIDList::SynchronizeableClassIDList( std::map< std::string, int > * ptrIn, std::map< std::string, int > * ptrOut, std::string name, int permission, int priority) : SynchronizeableVar( ptrIn, ptrOut, name, 0, permission, priority )
+{
+  this->vPtrIn = ptrIn;
+  this->vPtrOut = ptrOut;
+}
+
+
+/**
+ * standard deconstructor
+*/
+SynchronizeableClassIDList::~SynchronizeableClassIDList ()
+{
+}
+
+/**
+ * write var data to byte buffer
+ * @param buf pointer to write to
+ * @param maxLength writeToBuf will not write more than maxLength bytes
+ * @return number bytes written
+ */
+int SynchronizeableClassIDList::writeToBuf( byte * buf, int maxLength )
+{
+  int res = 0;
+  int n;
+
+  std::map< std::string, int >::const_iterator it;
+  
+  n = Converter::intToByteArray( vPtrIn->size(), buf, maxLength );
+  assert( n == INTSIZE );
+  res += n;
+  
+  for ( it = vPtrIn->begin(); it != vPtrIn->end(); it++ )
+  {
+    n = Converter::stringToByteArray( it->first, buf+res, maxLength-res );
+    assert( n == (int)it->first.length()+INTSIZE );
+    res += n;
+    
+    n = Converter::intToByteArray( it->second, buf+res, maxLength-res );
+    assert( n == INTSIZE );
+    res += n;
+  }
+
+  return res;
+}
+
+int SynchronizeableClassIDList::getSize()
+{
+   int res = 0;
+   
+   std::map< std::string, int >::const_iterator it;
+  
+   res += INTSIZE;
+  
+   for ( it = vPtrIn->begin(); it != vPtrIn->end(); it++ )
+   {
+     res += it->first.length()+2*INTSIZE;
+   }
+   
+   return res;
+}
+
+/**
+ * read var data from byte buffer
+ * @param buf pointer to read from
+ * @param maxLength readFromBuf will not read more than maxLength bytes
+ * @return number bytes read
+ */
+int SynchronizeableClassIDList::readFromBuf( byte * buf, int maxLength )
+{
+  setHasChanged( false );
+
+  int res = 0;
+  int num;
+  
+  assert( maxLength >= INTSIZE );
+  int n = Converter::byteArrayToInt( buf, &num );
+  assert( n == INTSIZE );
+  res += n;
+  
+  int id;
+  std::string name;
+  
+  for ( int i = 0; i < num; i++ )
+  {
+    n = Converter::byteArrayToString( buf+res, name, maxLength-res );
+    assert( n > 0 );
+    res += n;
+    
+    n = Converter::byteArrayToInt( buf+res, &id );
+    assert( n == INTSIZE );
+    res += n;
+    
+    if ( vPtrOut->find(name) == vPtrOut->end() )
+      setHasChanged( true );
+    else
+    {
+      if ( (*vPtrOut)[name] != id )
+      {
+        setHasChanged( true );
+      }
+    }
+    
+    (*vPtrOut)[name] = id;
+  }
+
+  return res;
+}
+
+/**
+ * print out variable value
+ */
+void SynchronizeableClassIDList::debug( )
+{
+
+}
+
+
+/**
+ * reads actual size from buffer. this is used when size is not constant
+ * @param buf pointer to data
+ * @param maxLength maximal size of data
+ * @return same as readFromBuf would return
+ */
+int SynchronizeableClassIDList::getSizeFromBuf( byte * buf, int maxLength )
+{
+  int res = 0;
+  int num;
+  
+  assert( maxLength >= INTSIZE );
+  int n = Converter::byteArrayToInt( buf, &num );
+  assert( n == INTSIZE );
+  res += n;
+  
+  int id;
+  std::string name;
+  
+  for ( int i = 0; i < num; i++ )
+  {
+    n = Converter::byteArrayToString( buf+res, name, maxLength-res );
+    assert( n > 0 );
+    res += n;
+    
+    n = Converter::byteArrayToInt( buf+res, &id );
+    assert( n == INTSIZE );
+    res += n;
+  }
+
+  return res;
+}
+
+
Index: /trunk/src/lib/network/synchronizeable_var/synchronizeable_classid_list.h
===================================================================
--- /trunk/src/lib/network/synchronizeable_var/synchronizeable_classid_list.h	(revision 10114)
+++ /trunk/src/lib/network/synchronizeable_var/synchronizeable_classid_list.h	(revision 10114)
@@ -0,0 +1,42 @@
+/*!
+ * @file synchronizeable_classid_list.h
+ * @brief Definition of SynchronizeableClassIDList
+*/
+
+#ifndef _SYNCHRONIZEABLE_CLASSID_LIST_H
+#define _SYNCHRONIZEABLE_CLASSID_LIST_H
+
+#include "synchronizeable_var.h"
+
+#include <map>
+#include <string>
+
+class SynchronizeableClassIDList : public SynchronizeableVar {
+
+  public:
+    SynchronizeableClassIDList( std::map< std::string, int > * ptrIn, std::map< std::string, int > * ptrOut, std::string name, int permission, int priority = 0 );
+    virtual ~SynchronizeableClassIDList();
+
+    virtual int writeToBuf( byte * buf, int maxLength );
+    virtual int readFromBuf( byte * buf, int maxLength );
+
+
+    /**
+     * check if writeToBuf will return the same size every time
+     * @return true if same size every time
+     */
+    virtual bool hasStaticSize(){ return false; };
+
+    virtual int getSize();
+
+    virtual int getSizeFromBuf( byte * buf, int maxLength );
+
+    virtual void debug();
+
+  private:
+    std::map< std::string, int > * vPtrIn;       //!< pointer to data (read)
+    std::map< std::string, int > * vPtrOut;      //!< pointer to data (write)
+
+};
+
+#endif /* _SYNCHRONIZEABLE_STRING_H */
Index: /trunk/src/lib/physics/fields/gravity.cc
===================================================================
--- /trunk/src/lib/physics/fields/gravity.cc	(revision 10113)
+++ /trunk/src/lib/physics/fields/gravity.cc	(revision 10114)
@@ -21,6 +21,6 @@
 #include "util/loading/factory.h"
 
-#include "class_id_DEPRECATED.h"
-ObjectListDefinitionID(Gravity, CL_FIELD_GRAVITY);
+
+ObjectListDefinition(Gravity);
 
 CREATE_FACTORY(Gravity);
Index: /trunk/src/lib/physics/fields/point_gravity.cc
===================================================================
--- /trunk/src/lib/physics/fields/point_gravity.cc	(revision 10113)
+++ /trunk/src/lib/physics/fields/point_gravity.cc	(revision 10114)
@@ -20,6 +20,6 @@
 
 
-#include "class_id_DEPRECATED.h"
-ObjectListDefinitionID(PointGravity, CL_FIELD_POINT_GRAVITY);
+
+ObjectListDefinition(PointGravity);
 
 
Index: /trunk/src/lib/physics/fields/twirl.cc
===================================================================
--- /trunk/src/lib/physics/fields/twirl.cc	(revision 10113)
+++ /trunk/src/lib/physics/fields/twirl.cc	(revision 10114)
@@ -20,6 +20,6 @@
 
 
-#include "class_id_DEPRECATED.h"
-ObjectListDefinitionID(Twirl, CL_FIELD_TWIRL);
+
+ObjectListDefinition(Twirl);
 
 
Index: /trunk/src/lib/physics/physics_connection.cc
===================================================================
--- /trunk/src/lib/physics/physics_connection.cc	(revision 10113)
+++ /trunk/src/lib/physics/physics_connection.cc	(revision 10114)
@@ -28,5 +28,5 @@
 #include "util/loading/load_param.h"
 
-#include "class_id_DEPRECATED.h"
+
 ObjectListDefinition(PhysicsConnection);
 CREATE_FACTORY(PhysicsConnection);
Index: /trunk/src/orxonox.cc
===================================================================
--- /trunk/src/orxonox.cc	(revision 10113)
+++ /trunk/src/orxonox.cc	(revision 10114)
@@ -87,4 +87,5 @@
 #ifndef __WIN32__
 REGISTER_ARG_FLAG( _, write_bt_to_file, "misc", "bt-to-file", "Write backtrace to file", "1");
+REGISTER_ARG_FLAG( _, dont_catch_signals, "misc", "bt-to-file", "Write backtrace to file", "0");
 #endif
 
Index: /trunk/src/story_entities/menu/game_menu.cc
===================================================================
--- /trunk/src/story_entities/menu/game_menu.cc	(revision 10113)
+++ /trunk/src/story_entities/menu/game_menu.cc	(revision 10114)
@@ -41,7 +41,7 @@
 #include "parser/preferences/preferences.h"
 
-#include "class_id_DEPRECATED.h"
+
 //! This creates a Factory to fabricate a GameMenu
-ObjectListDefinitionID(GameMenu, CL_GAME_MENU);
+ObjectListDefinition(GameMenu);
 CREATE_FACTORY(GameMenu);
 
Index: /trunk/src/story_entities/movie_loader.cc
===================================================================
--- /trunk/src/story_entities/movie_loader.cc	(revision 10113)
+++ /trunk/src/story_entities/movie_loader.cc	(revision 10114)
@@ -25,6 +25,6 @@
 
 
-#include "class_id_DEPRECATED.h"
-ObjectListDefinitionID(MovieLoader, CL_MOVIE_LOADER);
+
+ObjectListDefinition(MovieLoader);
 CREATE_FACTORY(MovieLoader);
 
Index: /trunk/src/story_entities/multi_player_world.cc
===================================================================
--- /trunk/src/story_entities/multi_player_world.cc	(revision 10113)
+++ /trunk/src/story_entities/multi_player_world.cc	(revision 10114)
@@ -36,7 +36,7 @@
 SHELL_COMMAND(debug, MultiPlayerWorld, debug);
 
-#include "class_id_DEPRECATED.h"
+
 //! This creates a Factory to fabricate a MultiPlayerWorld
-ObjectListDefinitionID(MultiPlayerWorld, CL_MULTI_PLAYER_WORLD);
+ObjectListDefinition(MultiPlayerWorld);
 CREATE_FACTORY(MultiPlayerWorld);
 
Index: /trunk/src/story_entities/multi_player_world_data.cc
===================================================================
--- /trunk/src/story_entities/multi_player_world_data.cc	(revision 10113)
+++ /trunk/src/story_entities/multi_player_world_data.cc	(revision 10114)
@@ -149,5 +149,5 @@
         BaseObject* created = Factory::fabricate(element);
         if( created != NULL )
-          PRINTF(1)("Created a %s: %s (0x%8x) from %s\n", created->getClassCName(), created->getCName(), created->getLeafClassID(), element->Value());
+          PRINTF(1)("Created a %s: %s (0x%8x) from %s\n", created->getClassCName(), created->getCName(), (int)created->getClassID().id(), element->Value());
         else
           PRINTF(1)("NetworkWorld: could not create this entity\n");
@@ -180,5 +180,5 @@
 
           if( created != NULL )
-            PRINTF(1)("Created a %s: %s (0x%8x) from %s\n", created->getClassCName(), created->getCName(), created->getLeafClassID(), element->Value());
+            PRINTF(1)("Created a %s: %s (0x%8x) from %s\n", created->getClassCName(), created->getCName(), created->getClassID().id(), element->Value());
           else
             PRINTF(1)("NetworkWorld: could not create this entity\n");
Index: /trunk/src/story_entities/single_player_world.cc
===================================================================
--- /trunk/src/story_entities/single_player_world.cc	(revision 10113)
+++ /trunk/src/story_entities/single_player_world.cc	(revision 10114)
@@ -30,7 +30,7 @@
 
 
-#include "class_id_DEPRECATED.h"
+
 //! This creates a Factory to fabricate a SinglePlayerWorld
-ObjectListDefinitionID(SinglePlayerWorld, CL_SINGLE_PLAYER_WORLD);
+ObjectListDefinition(SinglePlayerWorld);
 CREATE_FACTORY(SinglePlayerWorld);
 
Index: /trunk/src/subprojects/network/simple_sync.cc
===================================================================
--- /trunk/src/subprojects/network/simple_sync.cc	(revision 10113)
+++ /trunk/src/subprojects/network/simple_sync.cc	(revision 10114)
@@ -22,5 +22,5 @@
 #include "simple_sync.h"
 
-#include "class_id_DEPRECATED.h"
+
 #include "loading/fast_factory.h"
 #include "lib/util/loading/factory.h"
Index: /trunk/src/util/game_rules.cc
===================================================================
--- /trunk/src/util/game_rules.cc	(revision 10113)
+++ /trunk/src/util/game_rules.cc	(revision 10114)
@@ -65,5 +65,5 @@
     PRINTF(4)("Adding Mission Goal:%s\n", element->Value());
     BaseObject* created = Factory::fabricate(element);
-    if (created != NULL /*&& created->isA(CL_GAME_RULES)*/)
+    if (created != NULL /*&& created->isA(GameRules::staticClassID())*/)
     {
       MissionGoal* mg = dynamic_cast<MissionGoal*>(created);
Index: /trunk/src/util/kill_target.cc
===================================================================
--- /trunk/src/util/kill_target.cc	(revision 10113)
+++ /trunk/src/util/kill_target.cc	(revision 10114)
@@ -22,6 +22,6 @@
 
 
-#include "class_id_DEPRECATED.h"
-ObjectListDefinitionID(KillTarget, CL_KILL_TARGET);
+
+ObjectListDefinition(KillTarget);
 CREATE_FACTORY(KillTarget);
 
Index: /trunk/src/util/multiplayer_team_deathmatch.cc
===================================================================
--- /trunk/src/util/multiplayer_team_deathmatch.cc	(revision 10113)
+++ /trunk/src/util/multiplayer_team_deathmatch.cc	(revision 10114)
@@ -46,9 +46,7 @@
 #include "spawning_point.h"
 
-
-
-#include "class_id_DEPRECATED.h"
-
-ObjectListDefinitionID(MultiplayerTeamDeathmatch, CL_MULTIPLAYER_TEAM_DEATHMATCH);
+#include "creatures/fps_player.h"
+
+ObjectListDefinition(MultiplayerTeamDeathmatch);
 CREATE_FACTORY(MultiplayerTeamDeathmatch);
 /**
@@ -148,29 +146,19 @@
       box->setAbsCoor2D( 300, 100 );
 
-      if( SharedNetworkData::getInstance()->isClient() ||  SharedNetworkData::getInstance()->isProxyServerActive())
-      {
-        OrxGui::GLGuiPushButton * buttonSpectator = new OrxGui::GLGuiPushButton("Spectator");
-        box->pack( buttonSpectator );
-        buttonSpectator->released.connect(this, &MultiplayerTeamDeathmatch::onButtonSpectator);
-
-        OrxGui::GLGuiPushButton * buttonRandom = new OrxGui::GLGuiPushButton("Random");
-        box->pack( buttonRandom );
-        buttonRandom->released.connect(this, &MultiplayerTeamDeathmatch::onButtonRandom);
-
-        OrxGui::GLGuiPushButton * buttonTeam0 = new OrxGui::GLGuiPushButton("Blue Team");
-        box->pack( buttonTeam0 );
-        buttonTeam0->released.connect(this, &MultiplayerTeamDeathmatch::onButtonTeam0);
-
-        OrxGui::GLGuiPushButton * buttonTeam1 = new OrxGui::GLGuiPushButton("Red Team");
-        box->pack( buttonTeam1 );
-        buttonTeam1->released.connect(this, &MultiplayerTeamDeathmatch::onButtonTeam1);
-      }
-      else
-      {
-        OrxGui::GLGuiText* text = new OrxGui::GLGuiText();
-        text->setText("Server Mode: not able to play at this node");
-        box->pack( text);
-      }
-
+      OrxGui::GLGuiPushButton * buttonSpectator = new OrxGui::GLGuiPushButton("Spectator");
+      box->pack( buttonSpectator );
+      buttonSpectator->released.connect(this, &MultiplayerTeamDeathmatch::onButtonSpectator);
+
+      OrxGui::GLGuiPushButton * buttonRandom = new OrxGui::GLGuiPushButton("Random");
+      box->pack( buttonRandom );
+      buttonRandom->released.connect(this, &MultiplayerTeamDeathmatch::onButtonRandom);
+
+      OrxGui::GLGuiPushButton * buttonTeam0 = new OrxGui::GLGuiPushButton("Blue Team");
+      box->pack( buttonTeam0 );
+      buttonTeam0->released.connect(this, &MultiplayerTeamDeathmatch::onButtonTeam0);
+
+      OrxGui::GLGuiPushButton * buttonTeam1 = new OrxGui::GLGuiPushButton("Red Team");
+      box->pack( buttonTeam1 );
+      buttonTeam1->released.connect(this, &MultiplayerTeamDeathmatch::onButtonTeam1);
 
       if ( bShowTeamChange )
@@ -307,5 +295,5 @@
 
   if ( team == 0 || team == 1 )
-    return ObjectListBase::retrieveIdentity("TurbineHover");
+    return ObjectListBase::retrieveIdentity("FPSPlayer");
 
   assert( false );
@@ -315,6 +303,4 @@
 std::string MultiplayerTeamDeathmatch::getPlayableModelFileName( int userId, int team, const ClassID& classId )
 {
-  if (classId == CL_TURBINE_HOVER)
-    return "models/ships/hoverglider_mainbody.obj";
   if ( team == 0 )
     return "models/creatures/doom_guy.md2";
@@ -322,15 +308,17 @@
     return "models/creatures/male.md2";
   else
+  {
     return "";
+  }
 }
 
 std::string MultiplayerTeamDeathmatch::getPlayableModelTextureFileName( int userId, int team, const ClassID& classId )
 {
-  if ( classId == CL_FPS_PLAYER )
+  if ( team == 0 || team == 1 )
   {
     if ( team == 0 )
-      return "maps/doom_guy.png";
+      return "doom_guy.png";
     else
-      return "maps/male_fiend.pcx";
+      return "male_fiend.pcx";
   }
 
@@ -340,5 +328,5 @@
 float MultiplayerTeamDeathmatch::getPlayableScale( int userId, int team, const ClassID& classId )
 {
-  if ( classId == ObjectListBase::retrieveIdentity(CL_FPS_PLAYER))
+  if ( classId == FPSPlayer::staticClassID() )
   {
     return 10.0f;
@@ -499,8 +487,10 @@
 
   assert( bo != NULL );
-  assert( bo->isA( CL_PLAYABLE ) );
+  assert( bo->isA( Playable::staticClassID() ) );
 
   Playable & playable = *(dynamic_cast<Playable*>(bo));
 
+  PRINTF(0)("%s %s %f\n", playableModel.c_str(), playableTexture.c_str(), playableScale );
+  
   playable.loadMD2Texture( playableTexture );
   playable.loadModel( playableModel, playableScale );
Index: /trunk/src/util/signal_handler.cc
===================================================================
--- /trunk/src/util/signal_handler.cc	(revision 10113)
+++ /trunk/src/util/signal_handler.cc	(revision 10114)
@@ -42,4 +42,5 @@
   catchSignal( SIGSEGV );
   catchSignal( SIGABRT );
+  catchSignal( SIGILL );
 }
 
@@ -94,4 +95,7 @@
     case SIGABRT:
       sigName = "SIGABRT";
+      break;
+    case SIGILL:
+      sigName = "SIGILL";
       break;
   }
Index: /trunk/src/util/singleplayer_shootemup.cc
===================================================================
--- /trunk/src/util/singleplayer_shootemup.cc	(revision 10113)
+++ /trunk/src/util/singleplayer_shootemup.cc	(revision 10114)
@@ -25,6 +25,6 @@
 
 
-#include "class_id_DEPRECATED.h"
-ObjectListDefinitionID(SingleplayerShootemup, CL_SINGLEPLAYER_SHOOTEMUP);
+
+ObjectListDefinition(SingleplayerShootemup);
 CREATE_FACTORY(SingleplayerShootemup);
 
Index: /trunk/src/world_entities/bsp_entity.cc
===================================================================
--- /trunk/src/world_entities/bsp_entity.cc	(revision 10113)
+++ /trunk/src/world_entities/bsp_entity.cc	(revision 10114)
@@ -19,6 +19,6 @@
 #include "loading/resource_manager.h"
 
-#include "class_id_DEPRECATED.h"
-ObjectListDefinitionID(BspEntity, CL_BSP_ENTITY);
+
+ObjectListDefinition(BspEntity);
 CREATE_FACTORY(BspEntity);
 
Index: /trunk/src/world_entities/creatures/fps_player.cc
===================================================================
--- /trunk/src/world_entities/creatures/fps_player.cc	(revision 10113)
+++ /trunk/src/world_entities/creatures/fps_player.cc	(revision 10114)
@@ -41,6 +41,6 @@
 
 
-#include "class_id_DEPRECATED.h"
-ObjectListDefinitionID(FPSPlayer, CL_FPS_PLAYER);
+
+ObjectListDefinition(FPSPlayer);
 CREATE_FACTORY(FPSPlayer);
 
@@ -273,19 +273,8 @@
   {
     this->getWeaponManager().fire();
-
-//     WorldEntity* target = this->aimingSystem->getNearestTarget();
-//     if( target != NULL)
-//     {
-//       PRINTF(0)("hit hit hit, got: %s\n", target->getClassCName());
-//     }
-//     else
-//     {
-//       PRINTF(0)("nothing hit\n");
-//     }
   }
 
 
   //dealing damage
-
   if ( State::isOnline() && (SharedNetworkData::getInstance()->isMasterServer() /*|| SharedNetworkData::getInstance()->isProxyServerActive()*/))
   {
@@ -384,5 +373,5 @@
 
   // physical falling of the player
-  if( !this->isOnGround())
+  if( /*FIXME for testing*/ false && !this->isOnGround())
   {
     this->fallVelocity += 300.0f * time;
@@ -404,29 +393,7 @@
 
 
-  if( likely(this->getModel(0) != NULL) && this->getModel(0)->isA(CL_INTERACTIVE_MODEL))
+  if( likely(this->getModel(0) != NULL) && this->getModel(0)->isA(InteractiveModel::staticClassID()))
   {
     ((InteractiveModel*)this->getModel(0))->tick(time);
-
-    // handle animations differently
-
-
-
-
-
-//     else if( this->bFire && likely(this->getModel(0) != NULL))
-//     {
-//       if( ((InteractiveModel*)this->getModel(0))->getAnim() != ATTACK)
-//         ((InteractiveModel*)this->getModel(0))->setAnimation(ATTACK);
-//     }
-//     else if( fabs(move.len()) > 0.0f && likely(this->getModel(0) != NULL))
-//     {
-//       if( ((InteractiveModel*)this->getModel(0))->getAnim() != RUN)
-//         ((InteractiveModel*)this->getModel(0))->setAnimation(RUN);
-//     }
-//     else if (likely(this->getModel(0) != NULL))
-//     {
-//       if( ((InteractiveModel*)this->getModel(0))->getAnimation() != STAND)
-//         ((InteractiveModel*)this->getModel(0))->setAnimation(STAND);
-//     }
   }
 
Index: /trunk/src/world_entities/creatures/md2_creature.cc
===================================================================
--- /trunk/src/world_entities/creatures/md2_creature.cc	(revision 10113)
+++ /trunk/src/world_entities/creatures/md2_creature.cc	(revision 10114)
@@ -36,6 +36,6 @@
 #include "debug.h"
 
-#include "class_id_DEPRECATED.h"
-ObjectListDefinitionID(MD2Creature, CL_MD2_CREATURE);
+
+ObjectListDefinition(MD2Creature);
 CREATE_FACTORY(MD2Creature);
 
Index: /trunk/src/world_entities/effects/billboard.cc
===================================================================
--- /trunk/src/world_entities/effects/billboard.cc	(revision 10113)
+++ /trunk/src/world_entities/effects/billboard.cc	(revision 10114)
@@ -26,6 +26,6 @@
 
 
-#include "class_id_DEPRECATED.h"
-ObjectListDefinitionID(Billboard, CL_BILLBOARD);
+
+ObjectListDefinition(Billboard);
 CREATE_FACTORY(Billboard);
 
Index: /trunk/src/world_entities/effects/explosion.cc
===================================================================
--- /trunk/src/world_entities/effects/explosion.cc	(revision 10113)
+++ /trunk/src/world_entities/effects/explosion.cc	(revision 10114)
@@ -27,6 +27,6 @@
 
 
-#include "class_id_DEPRECATED.h"
-ObjectListDefinitionID(Explosion, CL_EXPLOSION);
+
+ObjectListDefinition(Explosion);
 CREATE_FAST_FACTORY_STATIC(Explosion);
 
Index: /trunk/src/world_entities/effects/lightning_bolt.cc
===================================================================
--- /trunk/src/world_entities/effects/lightning_bolt.cc	(revision 10113)
+++ /trunk/src/world_entities/effects/lightning_bolt.cc	(revision 10114)
@@ -25,6 +25,6 @@
 
 
-#include "class_id_DEPRECATED.h"
-ObjectListDefinitionID(LightningBolt, CL_LIGHTNING_BOLT);
+
+ObjectListDefinition(LightningBolt);
 CREATE_FACTORY(LightningBolt);
 
Index: /trunk/src/world_entities/elements/image_entity.cc
===================================================================
--- /trunk/src/world_entities/elements/image_entity.cc	(revision 10113)
+++ /trunk/src/world_entities/elements/image_entity.cc	(revision 10114)
@@ -30,6 +30,6 @@
 
 
-#include "class_id_DEPRECATED.h"
-ObjectListDefinitionID(ImageEntity, CL_IMAGE_ENTITY);
+
+ObjectListDefinition(ImageEntity);
 CREATE_FACTORY(ImageEntity);
 
Index: /trunk/src/world_entities/elements/text_element.cc
===================================================================
--- /trunk/src/world_entities/elements/text_element.cc	(revision 10113)
+++ /trunk/src/world_entities/elements/text_element.cc	(revision 10114)
@@ -27,6 +27,6 @@
 
 
-#include "class_id_DEPRECATED.h"
-ObjectListDefinitionID(TextElement, CL_TEXT_ELEMENT);
+
+ObjectListDefinition(TextElement);
 CREATE_FACTORY(TextElement);
 
Index: /trunk/src/world_entities/environment.cc
===================================================================
--- /trunk/src/world_entities/environment.cc	(revision 10113)
+++ /trunk/src/world_entities/environment.cc	(revision 10114)
@@ -24,6 +24,6 @@
 #include "util/loading/factory.h"
 
-#include "class_id_DEPRECATED.h"
-ObjectListDefinitionID(Environment, CL_ENVIRONMENT);
+
+ObjectListDefinition(Environment);
 CREATE_FACTORY(Environment);
 
Index: /trunk/src/world_entities/environments/building.cc
===================================================================
--- /trunk/src/world_entities/environments/building.cc	(revision 10113)
+++ /trunk/src/world_entities/environments/building.cc	(revision 10114)
@@ -23,6 +23,6 @@
 
 
-#include "class_id_DEPRECATED.h"
-ObjectListDefinitionID(Building, CL_BUILDING);
+
+ObjectListDefinition(Building);
 CREATE_FACTORY(Building);
 
Index: /trunk/src/world_entities/environments/mapped_water.cc
===================================================================
--- /trunk/src/world_entities/environments/mapped_water.cc	(revision 10113)
+++ /trunk/src/world_entities/environments/mapped_water.cc	(revision 10114)
@@ -26,6 +26,6 @@
 #include "resource_shader.h"
 
-#include "class_id_DEPRECATED.h"
-ObjectListDefinitionID(MappedWater, CL_MAPPED_WATER);
+
+ObjectListDefinition(MappedWater);
 CREATE_FACTORY(MappedWater);
 
Index: /trunk/src/world_entities/environments/model_entity.cc
===================================================================
--- /trunk/src/world_entities/environments/model_entity.cc	(revision 10113)
+++ /trunk/src/world_entities/environments/model_entity.cc	(revision 10114)
@@ -23,6 +23,6 @@
 
 
-#include "class_id_DEPRECATED.h"
-ObjectListDefinitionID(ModelEntity, CL_MODEL_ENTITY);
+
+ObjectListDefinition(ModelEntity);
 CREATE_FACTORY(ModelEntity);
 
Index: /trunk/src/world_entities/environments/water.cc
===================================================================
--- /trunk/src/world_entities/environments/water.cc	(revision 10113)
+++ /trunk/src/world_entities/environments/water.cc	(revision 10114)
@@ -32,6 +32,6 @@
 
 
-#include "class_id_DEPRECATED.h"
-ObjectListDefinitionID(Water, CL_WATER);
+
+ObjectListDefinition(Water);
 CREATE_FACTORY(Water);
 
Index: /trunk/src/world_entities/movie_entity.cc
===================================================================
--- /trunk/src/world_entities/movie_entity.cc	(revision 10113)
+++ /trunk/src/world_entities/movie_entity.cc	(revision 10114)
@@ -21,6 +21,6 @@
 
 
-#include "class_id_DEPRECATED.h"
-ObjectListDefinitionID(MovieEntity, CL_MOVIE_ENTITY);
+
+ObjectListDefinition(MovieEntity);
 CREATE_FACTORY(MovieEntity);
 
Index: /trunk/src/world_entities/npcs/attractor_mine.cc
===================================================================
--- /trunk/src/world_entities/npcs/attractor_mine.cc	(revision 10113)
+++ /trunk/src/world_entities/npcs/attractor_mine.cc	(revision 10114)
@@ -33,6 +33,6 @@
 #include "effects/explosion.h"
 
-#include "class_id_DEPRECATED.h"
-ObjectListDefinitionID(AttractorMine, CL_ATTRACTOR_MINE);
+
+ObjectListDefinition(AttractorMine);
 CREATE_FACTORY(AttractorMine);
 #include "script_class.h"
Index: /trunk/src/world_entities/npcs/door.cc
===================================================================
--- /trunk/src/world_entities/npcs/door.cc	(revision 10113)
+++ /trunk/src/world_entities/npcs/door.cc	(revision 10114)
@@ -26,6 +26,6 @@
 #include "door.h"
 
-#include "class_id_DEPRECATED.h"
-ObjectListDefinitionID(Door, CL_DOOR);
+
+ObjectListDefinition(Door);
 CREATE_FACTORY(Door);
 
Index: /trunk/src/world_entities/npcs/gate.cc
===================================================================
--- /trunk/src/world_entities/npcs/gate.cc	(revision 10113)
+++ /trunk/src/world_entities/npcs/gate.cc	(revision 10114)
@@ -31,6 +31,6 @@
 
 
-#include "class_id_DEPRECATED.h"
-ObjectListDefinitionID(Gate, CL_GATE);
+
+ObjectListDefinition(Gate);
 CREATE_FACTORY(Gate);
 
Index: /trunk/src/world_entities/npcs/generic_npc.cc
===================================================================
--- /trunk/src/world_entities/npcs/generic_npc.cc	(revision 10113)
+++ /trunk/src/world_entities/npcs/generic_npc.cc	(revision 10114)
@@ -33,6 +33,6 @@
 #include "bsp_entity.h"
 
-#include "class_id_DEPRECATED.h"
-ObjectListDefinitionID(GenericNPC, CL_GENERIC_NPC);
+
+ObjectListDefinition(GenericNPC);
 CREATE_FACTORY(GenericNPC);
 
Index: /trunk/src/world_entities/npcs/ground_turret.cc
===================================================================
--- /trunk/src/world_entities/npcs/ground_turret.cc	(revision 10113)
+++ /trunk/src/world_entities/npcs/ground_turret.cc	(revision 10114)
@@ -29,7 +29,7 @@
 #include "effects/explosion.h"
 
-#include "class_id_DEPRECATED.h"
 
-ObjectListDefinitionID(GroundTurret, CL_GROUND_TURRET);
+
+ObjectListDefinition(GroundTurret);
 CREATE_FACTORY(GroundTurret);
 
Index: /trunk/src/world_entities/npcs/network_turret.cc
===================================================================
--- /trunk/src/world_entities/npcs/network_turret.cc	(revision 10113)
+++ /trunk/src/world_entities/npcs/network_turret.cc	(revision 10114)
@@ -32,6 +32,6 @@
 #include "debug.h"
 
-#include "class_id_DEPRECATED.h"
-ObjectListDefinitionID(NetworkTurret, CL_NETWORK_TURRET);
+
+ObjectListDefinition(NetworkTurret);
 CREATE_FACTORY(NetworkTurret);
 
Index: /trunk/src/world_entities/npcs/npc_test.cc
===================================================================
--- /trunk/src/world_entities/npcs/npc_test.cc	(revision 10113)
+++ /trunk/src/world_entities/npcs/npc_test.cc	(revision 10114)
@@ -30,6 +30,6 @@
 #include "effects/explosion.h"
 
-#include "class_id_DEPRECATED.h"
-ObjectListDefinitionID(NPC2, CL_NPC_TEST2);
+
+ObjectListDefinition(NPC2);
 CREATE_FACTORY(NPC2);
 
Index: /trunk/src/world_entities/npcs/repair_station.cc
===================================================================
--- /trunk/src/world_entities/npcs/repair_station.cc	(revision 10113)
+++ /trunk/src/world_entities/npcs/repair_station.cc	(revision 10114)
@@ -26,6 +26,6 @@
 #include "repair_station.h"
 
-#include "class_id_DEPRECATED.h"
-ObjectListDefinitionID(RepairStation, CL_DOOR +1 );
+
+ObjectListDefinition(RepairStation);
 CREATE_FACTORY(RepairStation);
 
Index: /trunk/src/world_entities/npcs/space_turret.cc
===================================================================
--- /trunk/src/world_entities/npcs/space_turret.cc	(revision 10113)
+++ /trunk/src/world_entities/npcs/space_turret.cc	(revision 10114)
@@ -29,6 +29,6 @@
 #include "effects/explosion.h"
 
-#include "class_id_DEPRECATED.h"
-ObjectListDefinitionID(SpaceTurret, CL_SPACE_TURRET);
+
+ObjectListDefinition(SpaceTurret);
 CREATE_FACTORY(SpaceTurret);
 
Index: /trunk/src/world_entities/particles/box_emitter.cc
===================================================================
--- /trunk/src/world_entities/particles/box_emitter.cc	(revision 10113)
+++ /trunk/src/world_entities/particles/box_emitter.cc	(revision 10114)
@@ -24,7 +24,7 @@
 #include "debug.h"
 
-#include "class_id_DEPRECATED.h"
 
-ObjectListDefinitionID(BoxEmitter, CL_BOX_EMITTER);
+
+ObjectListDefinition(BoxEmitter);
 CREATE_FACTORY(BoxEmitter);
 
Index: /trunk/src/world_entities/particles/dot_emitter.cc
===================================================================
--- /trunk/src/world_entities/particles/dot_emitter.cc	(revision 10113)
+++ /trunk/src/world_entities/particles/dot_emitter.cc	(revision 10114)
@@ -26,6 +26,6 @@
 
 
-#include "class_id_DEPRECATED.h"
-ObjectListDefinitionID(DotEmitter, CL_DOT_EMITTER);
+
+ObjectListDefinition(DotEmitter);
 CREATE_FACTORY(DotEmitter);
 
Index: /trunk/src/world_entities/particles/dot_particles.cc
===================================================================
--- /trunk/src/world_entities/particles/dot_particles.cc	(revision 10113)
+++ /trunk/src/world_entities/particles/dot_particles.cc	(revision 10114)
@@ -23,7 +23,7 @@
 #include "state.h"
 
-#include "class_id_DEPRECATED.h"
 
-ObjectListDefinitionID(DotParticles, CL_DOT_PARTICLES);
+
+ObjectListDefinition(DotParticles);
 CREATE_FACTORY(DotParticles);
 
Index: /trunk/src/world_entities/particles/model_particles.cc
===================================================================
--- /trunk/src/world_entities/particles/model_particles.cc	(revision 10113)
+++ /trunk/src/world_entities/particles/model_particles.cc	(revision 10114)
@@ -25,7 +25,7 @@
 #include "debug.h"
 
-#include "class_id_DEPRECATED.h"
 
-ObjectListDefinitionID(ModelParticles, CL_MODEL_PARTICLES);
+
+ObjectListDefinition(ModelParticles);
 CREATE_FACTORY(ModelParticles);
 
Index: /trunk/src/world_entities/particles/plane_emitter.cc
===================================================================
--- /trunk/src/world_entities/particles/plane_emitter.cc	(revision 10113)
+++ /trunk/src/world_entities/particles/plane_emitter.cc	(revision 10114)
@@ -24,7 +24,7 @@
 #include "debug.h"
 
-#include "class_id_DEPRECATED.h"
 
-ObjectListDefinitionID(PlaneEmitter, CL_PLANE_EMITTER);
+
+ObjectListDefinition(PlaneEmitter);
 CREATE_FACTORY(PlaneEmitter);
 
Index: /trunk/src/world_entities/particles/spark_particles.cc
===================================================================
--- /trunk/src/world_entities/particles/spark_particles.cc	(revision 10113)
+++ /trunk/src/world_entities/particles/spark_particles.cc	(revision 10114)
@@ -24,7 +24,7 @@
 #include "shell_command.h"
 
-#include "class_id_DEPRECATED.h"
 
-ObjectListDefinitionID(SparkParticles, CL_SPARK_PARTICLES);
+
+ObjectListDefinition(SparkParticles);
 CREATE_FACTORY(SparkParticles);
 
Index: /trunk/src/world_entities/particles/sprite_particles.cc
===================================================================
--- /trunk/src/world_entities/particles/sprite_particles.cc	(revision 10113)
+++ /trunk/src/world_entities/particles/sprite_particles.cc	(revision 10114)
@@ -24,7 +24,7 @@
 #include "shell_command.h"
 
-#include "class_id_DEPRECATED.h"
 
-ObjectListDefinitionID(SpriteParticles, CL_SPRITE_PARTICLES);
+
+ObjectListDefinition(SpriteParticles);
 CREATE_FACTORY(SpriteParticles);
 
Index: /trunk/src/world_entities/planet.cc
===================================================================
--- /trunk/src/world_entities/planet.cc	(revision 10113)
+++ /trunk/src/world_entities/planet.cc	(revision 10114)
@@ -32,6 +32,6 @@
 #include "debug.h"
 
-#include "class_id_DEPRECATED.h"
-ObjectListDefinitionID(Planet, CL_PLANET);
+
+ObjectListDefinition(Planet);
 CREATE_FACTORY(Planet);
 
Index: /trunk/src/world_entities/power_ups/laser_power_up.cc
===================================================================
--- /trunk/src/world_entities/power_ups/laser_power_up.cc	(revision 10113)
+++ /trunk/src/world_entities/power_ups/laser_power_up.cc	(revision 10114)
@@ -24,6 +24,6 @@
 
 
-#include "class_id_DEPRECATED.h"
-ObjectListDefinitionID(LaserPowerUp, CL_LASER_POWER_UP);
+
+ObjectListDefinition(LaserPowerUp);
 CREATE_FACTORY(LaserPowerUp);
 
@@ -80,5 +80,5 @@
 {
  // PRINTF(3)("collision %s vs %s @ (%f,%f,%f)\n", this->getClassCName(), entity->getClassCName(), location.x, location.y, location.z);
- if (entity->isA(CL_PLAYABLE))
+  if (entity->isA(Playable::staticClassID()))
   this->toList(OM_DEAD);
 }
Index: /trunk/src/world_entities/power_ups/param_power_up.cc
===================================================================
--- /trunk/src/world_entities/power_ups/param_power_up.cc	(revision 10113)
+++ /trunk/src/world_entities/power_ups/param_power_up.cc	(revision 10114)
@@ -27,6 +27,6 @@
 
 
-#include "class_id_DEPRECATED.h"
-ObjectListDefinitionID(ParamPowerUp, CL_PARAM_POWER_UP);
+
+ObjectListDefinition(ParamPowerUp);
 CREATE_FACTORY(ParamPowerUp);
 
Index: /trunk/src/world_entities/power_ups/turret_power_up.cc
===================================================================
--- /trunk/src/world_entities/power_ups/turret_power_up.cc	(revision 10113)
+++ /trunk/src/world_entities/power_ups/turret_power_up.cc	(revision 10114)
@@ -24,6 +24,6 @@
 
 
-#include "class_id_DEPRECATED.h"
-ObjectListDefinitionID(TurretPowerUp, CL_TURRET_POWER_UP);
+
+ObjectListDefinition(TurretPowerUp);
 CREATE_FACTORY(TurretPowerUp);
 
@@ -76,5 +76,5 @@
 {
  // PRINTF(3)("collision %s vs %s @ (%f,%f,%f)\n", this->getClassCName(), entity->getClassCName(), location.x, location.y, location.z);
- if (entity->isA(CL_PLAYABLE))
+  if (entity->isA(Playable::staticClassID()))
    this->toList(OM_DEAD);
 }
Index: /trunk/src/world_entities/power_ups/weapon_power_up.cc
===================================================================
--- /trunk/src/world_entities/power_ups/weapon_power_up.cc	(revision 10113)
+++ /trunk/src/world_entities/power_ups/weapon_power_up.cc	(revision 10114)
@@ -27,6 +27,6 @@
 #include "debug.h"
 
-#include "class_id_DEPRECATED.h"
-ObjectListDefinitionID(WeaponPowerUp, CL_WEAPON_POWER_UP);
+
+ObjectListDefinition(WeaponPowerUp);
 CREATE_FACTORY(WeaponPowerUp);
 
Index: /trunk/src/world_entities/projectiles/bomb.cc
===================================================================
--- /trunk/src/world_entities/projectiles/bomb.cc	(revision 10113)
+++ /trunk/src/world_entities/projectiles/bomb.cc	(revision 10114)
@@ -25,6 +25,6 @@
 #include "debug.h"
 
-#include "class_id_DEPRECATED.h"
-ObjectListDefinitionID(Bomb, CL_BOMB);
+
+ObjectListDefinition(Bomb);
 CREATE_FAST_FACTORY_STATIC(Bomb);
 
@@ -166,5 +166,5 @@
 void Bomb::collidesWith (WorldEntity* entity, const Vector& location)
 {
-  if (this->lifeCycle < .9f && entity->isA(CL_NPC))
+  if (this->lifeCycle < .9f && entity->isA( "NPC" ))
     this->lifeCycle = 0.9f;
 }
Index: /trunk/src/world_entities/projectiles/boomerang_projectile.cc
===================================================================
--- /trunk/src/world_entities/projectiles/boomerang_projectile.cc	(revision 10113)
+++ /trunk/src/world_entities/projectiles/boomerang_projectile.cc	(revision 10114)
@@ -26,6 +26,6 @@
 #include "debug.h"
 
-#include "class_id_DEPRECATED.h"
-ObjectListDefinitionID(BoomerangProjectile, CL_BOOMERANG_PROJECTILE);
+
+ObjectListDefinition(BoomerangProjectile);
 CREATE_FAST_FACTORY_STATIC(BoomerangProjectile);
 
Index: /trunk/src/world_entities/projectiles/guided_missile.cc
===================================================================
--- /trunk/src/world_entities/projectiles/guided_missile.cc	(revision 10113)
+++ /trunk/src/world_entities/projectiles/guided_missile.cc	(revision 10114)
@@ -25,6 +25,6 @@
 #include "debug.h"
 
-#include "class_id_DEPRECATED.h"
-ObjectListDefinitionID(GuidedMissile, CL_GUIDED_MISSILE);
+
+ObjectListDefinition(GuidedMissile);
 CREATE_FAST_FACTORY_STATIC(GuidedMissile);
 
Index: /trunk/src/world_entities/projectiles/hyperblast.cc
===================================================================
--- /trunk/src/world_entities/projectiles/hyperblast.cc	(revision 10113)
+++ /trunk/src/world_entities/projectiles/hyperblast.cc	(revision 10114)
@@ -25,6 +25,6 @@
 #include "debug.h"
 
-#include "class_id_DEPRECATED.h"
-ObjectListDefinitionID(Hyperblast, CL_HYPERBLAST);
+
+ObjectListDefinition(Hyperblast);
 CREATE_FAST_FACTORY_STATIC(Hyperblast);
 
Index: /trunk/src/world_entities/projectiles/laser.cc
===================================================================
--- /trunk/src/world_entities/projectiles/laser.cc	(revision 10113)
+++ /trunk/src/world_entities/projectiles/laser.cc	(revision 10114)
@@ -28,5 +28,5 @@
 
 
-#include "class_id_DEPRECATED.h"
+
 ObjectListDefinition(Laser);
 CREATE_FAST_FACTORY_STATIC(Laser);
@@ -107,5 +107,5 @@
 void Laser::collidesWith(WorldEntity* entity, const Vector& location)
 {
-  if (this->hitEntity != entity && entity->isA(CL_NPC))
+  if (this->hitEntity != entity && entity->isA( "NPC" ))
     this->destroy( entity );
   this->hitEntity = entity;
Index: /trunk/src/world_entities/projectiles/rail_projectile.cc
===================================================================
--- /trunk/src/world_entities/projectiles/rail_projectile.cc	(revision 10113)
+++ /trunk/src/world_entities/projectiles/rail_projectile.cc	(revision 10114)
@@ -28,6 +28,6 @@
 
 
-#include "class_id_DEPRECATED.h"
-ObjectListDefinitionID(RailProjectile, CL_RAIL_PROJECTILE);
+
+ObjectListDefinition(RailProjectile);
 CREATE_FAST_FACTORY_STATIC(RailProjectile);
 
@@ -106,5 +106,5 @@
 void RailProjectile::collidesWith(WorldEntity* entity, const Vector& location)
 {
-  if (this->hitEntity != entity && entity->isA(CL_NPC))
+  if (this->hitEntity != entity && entity->isA( "NPC" ))
     this->destroy( entity );
   this->hitEntity = entity;
Index: /trunk/src/world_entities/projectiles/rocket.cc
===================================================================
--- /trunk/src/world_entities/projectiles/rocket.cc	(revision 10113)
+++ /trunk/src/world_entities/projectiles/rocket.cc	(revision 10114)
@@ -25,6 +25,6 @@
 #include "debug.h"
 
-#include "class_id_DEPRECATED.h"
-ObjectListDefinitionID(Rocket, CL_ROCKET);
+
+ObjectListDefinition(Rocket);
 CREATE_FAST_FACTORY_STATIC(Rocket);
 
Index: /trunk/src/world_entities/projectiles/test_bullet.cc
===================================================================
--- /trunk/src/world_entities/projectiles/test_bullet.cc	(revision 10113)
+++ /trunk/src/world_entities/projectiles/test_bullet.cc	(revision 10114)
@@ -24,6 +24,6 @@
 #include "debug.h"
 
-#include "class_id_DEPRECATED.h"
-ObjectListDefinitionID(TestBullet, CL_TEST_BULLET);
+
+ObjectListDefinition(TestBullet);
 CREATE_FAST_FACTORY_STATIC(TestBullet);
 
@@ -119,5 +119,5 @@
 void TestBullet::collidesWith(WorldEntity* entity, const Vector& location)
 {
-  if (this->hitEntity != entity && entity->isA(CL_NPC))
+  if (this->hitEntity != entity && entity->isA( "NPC" ))
     this->destroy( entity );
   this->hitEntity = entity;
Index: /trunk/src/world_entities/recorder.cc
===================================================================
--- /trunk/src/world_entities/recorder.cc	(revision 10113)
+++ /trunk/src/world_entities/recorder.cc	(revision 10114)
@@ -21,6 +21,6 @@
 #include "debug.h"
 
-#include "class_id_DEPRECATED.h"
-ObjectListDefinitionID(Recorder, CL_RECORDER);
+
+ObjectListDefinition(Recorder);
 CREATE_FACTORY(Recorder);
 
Index: /trunk/src/world_entities/skybox.cc
===================================================================
--- /trunk/src/world_entities/skybox.cc	(revision 10113)
+++ /trunk/src/world_entities/skybox.cc	(revision 10114)
@@ -31,6 +31,6 @@
 #include "debug.h"
 
-#include "class_id_DEPRECATED.h"
-ObjectListDefinitionID(SkyBox, CL_SKYBOX);
+
+ObjectListDefinition(SkyBox);
 CREATE_FACTORY(SkyBox);
 
Index: /trunk/src/world_entities/space_ships/collision_probe.cc
===================================================================
--- /trunk/src/world_entities/space_ships/collision_probe.cc	(revision 10113)
+++ /trunk/src/world_entities/space_ships/collision_probe.cc	(revision 10114)
@@ -24,6 +24,6 @@
 
 
-#include "class_id_DEPRECATED.h"
-ObjectListDefinitionID(CollisionProbe, CL_COLLISION_PROBE);
+
+ObjectListDefinition(CollisionProbe);
 
 CREATE_FACTORY(CollisionProbe);
Index: /trunk/src/world_entities/space_ships/cruizer.cc
===================================================================
--- /trunk/src/world_entities/space_ships/cruizer.cc	(revision 10113)
+++ /trunk/src/world_entities/space_ships/cruizer.cc	(revision 10114)
@@ -34,6 +34,6 @@
 #include "debug.h"
 
-#include "class_id_DEPRECATED.h"
-ObjectListDefinitionID(Cruizer, CL_CRUIZER);
+
+ObjectListDefinition(Cruizer);
 CREATE_FACTORY(Cruizer);
 
Index: /trunk/src/world_entities/space_ships/helicopter.cc
===================================================================
--- /trunk/src/world_entities/space_ships/helicopter.cc	(revision 10113)
+++ /trunk/src/world_entities/space_ships/helicopter.cc	(revision 10114)
@@ -34,6 +34,6 @@
 #include "debug.h"
 
-#include "class_id_DEPRECATED.h"
-ObjectListDefinitionID(Helicopter, CL_HELICOPTER);
+
+ObjectListDefinition(Helicopter);
 CREATE_FACTORY(Helicopter);
 #include "script_class.h"
Index: /trunk/src/world_entities/space_ships/hover.cc
===================================================================
--- /trunk/src/world_entities/space_ships/hover.cc	(revision 10113)
+++ /trunk/src/world_entities/space_ships/hover.cc	(revision 10114)
@@ -34,6 +34,6 @@
 #include "debug.h"
 
-#include "class_id_DEPRECATED.h"
-ObjectListDefinitionID(Hover, CL_HOVER);
+
+ObjectListDefinition(Hover);
 CREATE_FACTORY(Hover);
 
Index: /trunk/src/world_entities/space_ships/space_ship.cc
===================================================================
--- /trunk/src/world_entities/space_ships/space_ship.cc	(revision 10113)
+++ /trunk/src/world_entities/space_ships/space_ship.cc	(revision 10114)
@@ -53,6 +53,6 @@
 
 
-#include "class_id_DEPRECATED.h"
-ObjectListDefinitionID(SpaceShip, CL_SPACE_SHIP);
+
+ObjectListDefinition(SpaceShip);
 CREATE_FACTORY(SpaceShip);
 
Index: /trunk/src/world_entities/space_ships/spacecraft_2d.cc
===================================================================
--- /trunk/src/world_entities/space_ships/spacecraft_2d.cc	(revision 10113)
+++ /trunk/src/world_entities/space_ships/spacecraft_2d.cc	(revision 10114)
@@ -38,6 +38,6 @@
 
 
-#include "class_id_DEPRECATED.h"
-ObjectListDefinitionID(Spacecraft2D, CL_SPACECRAFT_2D);
+
+ObjectListDefinition(Spacecraft2D);
 CREATE_FACTORY(Spacecraft2D);
 
Index: /trunk/src/world_entities/space_ships/turbine_hover.cc
===================================================================
--- /trunk/src/world_entities/space_ships/turbine_hover.cc	(revision 10113)
+++ /trunk/src/world_entities/space_ships/turbine_hover.cc	(revision 10114)
@@ -34,6 +34,6 @@
 #include "debug.h"
 
-#include "class_id_DEPRECATED.h"
-ObjectListDefinitionID(TurbineHover, CL_TURBINE_HOVER);
+
+ObjectListDefinition(TurbineHover);
 CREATE_FACTORY(TurbineHover);
 
Index: /trunk/src/world_entities/spawning_point.cc
===================================================================
--- /trunk/src/world_entities/spawning_point.cc	(revision 10113)
+++ /trunk/src/world_entities/spawning_point.cc	(revision 10114)
@@ -33,6 +33,6 @@
 #include "converter.h"
 
-#include "class_id_DEPRECATED.h"
-ObjectListDefinitionID(SpawningPoint, CL_SPAWNING_POINT);
+
+ObjectListDefinition(SpawningPoint);
 CREATE_FACTORY( SpawningPoint);
 /**
Index: /trunk/src/world_entities/spectator.cc
===================================================================
--- /trunk/src/world_entities/spectator.cc	(revision 10113)
+++ /trunk/src/world_entities/spectator.cc	(revision 10114)
@@ -22,6 +22,9 @@
 #include "shared_network_data.h"
 
-#include "class_id_DEPRECATED.h"
-ObjectListDefinitionID(Spectator, CL_SPECTATOR);
+#include "src/world_entities/creatures/fps_player.h"
+#include "src/world_entities/npcs/generic_npc.h"
+
+
+ObjectListDefinition(Spectator);
 CREATE_FACTORY(Spectator);
 
@@ -83,4 +86,5 @@
   registerEvent(KeyMapper::PEV_RIGHT);
   registerEvent(KeyMapper::PEV_FIRE1);
+  registerEvent(KeyMapper::PEV_JUMP);
   registerEvent(EV_MOUSE_MOTION);
 
@@ -233,7 +237,23 @@
     this->yMouse += event.yRel;
   }
-}
-
-
-
-
+  else if( event.type == KeyMapper::PEV_JUMP)
+  {
+//     FPSPlayer * fps = new FPSPlayer();
+    //GenericNPC* fps = new GenericNPC();
+    WorldEntity* fps = new WorldEntity();
+    //WorldEntity * fps = new WorldEntity();
+
+    fps->setAbsCoor( this->getAbsCoorX(), this->getAbsCoorY(), this->getAbsCoorZ() );
+    fps->setAbsDir( this->getAbsDir() );
+    fps->loadMD2Texture( "doom_guy.png" );
+    fps->loadModel( "models/creatures/doom_guy.md2", 10.0f );
+    fps->toList( OM_GROUP_00);
+    //fps->loadModel( "models/ships/terran_cruizer.obj" );
+
+    //((Playable*)fps)->setPlayDirection(  0, 0, 1, 0 );
+  }
+}
+
+
+
+
Index: /trunk/src/world_entities/terrain.cc
===================================================================
--- /trunk/src/world_entities/terrain.cc	(revision 10113)
+++ /trunk/src/world_entities/terrain.cc	(revision 10114)
@@ -34,6 +34,6 @@
 #include "debug.h"
 
-#include "class_id_DEPRECATED.h"
-ObjectListDefinitionID(Terrain, CL_TERRAIN);
+
+ObjectListDefinition(Terrain);
 CREATE_FACTORY(Terrain);
 
Index: /trunk/src/world_entities/test_entity.cc
===================================================================
--- /trunk/src/world_entities/test_entity.cc	(revision 10113)
+++ /trunk/src/world_entities/test_entity.cc	(revision 10114)
@@ -33,5 +33,5 @@
 
 
-#include "class_id_DEPRECATED.h"
+
 ObjectListDefinition(TestEntity);
 CREATE_FACTORY(TestEntity);
Index: /trunk/src/world_entities/weapons/aiming_turret.cc
===================================================================
--- /trunk/src/world_entities/weapons/aiming_turret.cc	(revision 10113)
+++ /trunk/src/world_entities/weapons/aiming_turret.cc	(revision 10114)
@@ -27,6 +27,6 @@
 #include "util/loading/factory.h"
 
-#include "class_id_DEPRECATED.h"
-ObjectListDefinitionID(AimingTurret, CL_AIMING_TURRET);
+
+ObjectListDefinition(AimingTurret);
 CREATE_FACTORY(AimingTurret);
 
Index: /trunk/src/world_entities/weapons/boomerang_gun.cc
===================================================================
--- /trunk/src/world_entities/weapons/boomerang_gun.cc	(revision 10113)
+++ /trunk/src/world_entities/weapons/boomerang_gun.cc	(revision 10114)
@@ -27,6 +27,6 @@
 #include "util/loading/factory.h"
 
-#include "class_id_DEPRECATED.h"
-ObjectListDefinitionID(BoomerangGun, CL_BOOMERANG_GUN);
+
+ObjectListDefinition(BoomerangGun);
 CREATE_FACTORY(BoomerangGun);
 
Index: /trunk/src/world_entities/weapons/cannon.cc
===================================================================
--- /trunk/src/world_entities/weapons/cannon.cc	(revision 10113)
+++ /trunk/src/world_entities/weapons/cannon.cc	(revision 10114)
@@ -36,6 +36,6 @@
 
 
-#include "class_id_DEPRECATED.h"
-ObjectListDefinitionID(Cannon, CL_CANNON);
+
+ObjectListDefinition(Cannon);
 CREATE_FACTORY(Cannon);
 
Index: /trunk/src/world_entities/weapons/fps_sniper_rifle.cc
===================================================================
--- /trunk/src/world_entities/weapons/fps_sniper_rifle.cc	(revision 10113)
+++ /trunk/src/world_entities/weapons/fps_sniper_rifle.cc	(revision 10114)
@@ -39,6 +39,6 @@
 
 
-#include "class_id_DEPRECATED.h"
-ObjectListDefinitionID(FPSSniperRifle, CL_FPS_SNIPER_RIFLE);
+
+ObjectListDefinition(FPSSniperRifle);
 CREATE_FACTORY(FPSSniperRifle);
 
Index: /trunk/src/world_entities/weapons/hyperblaster.cc
===================================================================
--- /trunk/src/world_entities/weapons/hyperblaster.cc	(revision 10113)
+++ /trunk/src/world_entities/weapons/hyperblaster.cc	(revision 10114)
@@ -35,6 +35,6 @@
 
 
-#include "class_id_DEPRECATED.h"
-ObjectListDefinitionID(Hyperblaster, CL_HYPERBLASTER);
+
+ObjectListDefinition(Hyperblaster);
 CREATE_FACTORY(Hyperblaster);
 
Index: /trunk/src/world_entities/weapons/laser_cannon.cc
===================================================================
--- /trunk/src/world_entities/weapons/laser_cannon.cc	(revision 10113)
+++ /trunk/src/world_entities/weapons/laser_cannon.cc	(revision 10114)
@@ -31,6 +31,6 @@
 #include "loading/fast_factory.h"
 
-#include "class_id_DEPRECATED.h"
-ObjectListDefinitionID(LaserCannon, CL_LASER_CANNON);
+
+ObjectListDefinition(LaserCannon);
 CREATE_FACTORY(LaserCannon);
 
Index: /trunk/src/world_entities/weapons/targeting_turret.cc
===================================================================
--- /trunk/src/world_entities/weapons/targeting_turret.cc	(revision 10113)
+++ /trunk/src/world_entities/weapons/targeting_turret.cc	(revision 10114)
@@ -26,6 +26,6 @@
 #include "util/loading/factory.h"
 
-#include "class_id_DEPRECATED.h"
-ObjectListDefinitionID(TargetingTurret, CL_TARGETING_TURRET);
+
+ObjectListDefinition(TargetingTurret);
 CREATE_FACTORY(TargetingTurret);
 
Index: /trunk/src/world_entities/weapons/test_gun.cc
===================================================================
--- /trunk/src/world_entities/weapons/test_gun.cc	(revision 10113)
+++ /trunk/src/world_entities/weapons/test_gun.cc	(revision 10114)
@@ -33,6 +33,6 @@
 #include "loading/fast_factory.h"
 
-#include "class_id_DEPRECATED.h"
-ObjectListDefinitionID(TestGun, CL_TEST_GUN);
+
+ObjectListDefinition(TestGun);
 CREATE_FACTORY(TestGun);
 /**
Index: /trunk/src/world_entities/weapons/turret.cc
===================================================================
--- /trunk/src/world_entities/weapons/turret.cc	(revision 10113)
+++ /trunk/src/world_entities/weapons/turret.cc	(revision 10114)
@@ -27,6 +27,6 @@
 #include "util/loading/factory.h"
 
-#include "class_id_DEPRECATED.h"
-ObjectListDefinitionID(Turret, CL_TURRET);
+
+ObjectListDefinition(Turret);
 CREATE_FACTORY(Turret);
 
Index: /trunk/src/world_entities/weather_effects/cloud_effect.cc
===================================================================
--- /trunk/src/world_entities/weather_effects/cloud_effect.cc	(revision 10113)
+++ /trunk/src/world_entities/weather_effects/cloud_effect.cc	(revision 10114)
@@ -30,5 +30,5 @@
 #include "resource_shader.h"
 
-#include "class_id_DEPRECATED.h"
+
 
 Vector    CloudEffect::cloudColor;
@@ -41,5 +41,5 @@
 float     CloudEffect::fadeTime;
 
-ObjectListDefinitionID(CloudEffect, CL_CLOUD_EFFECT);
+ObjectListDefinition(CloudEffect);
 
 
Index: /trunk/src/world_entities/weather_effects/fog_effect.cc
===================================================================
--- /trunk/src/world_entities/weather_effects/fog_effect.cc	(revision 10113)
+++ /trunk/src/world_entities/weather_effects/fog_effect.cc	(revision 10114)
@@ -30,5 +30,5 @@
 SHELL_COMMAND(fadeout, FogEffect, fadeOutFog);
 
-#include "class_id_DEPRECATED.h"
+
 
 CREATE_SCRIPTABLE_CLASS(FogEffect,
Index: /trunk/src/world_entities/weather_effects/lense_flare.cc
===================================================================
--- /trunk/src/world_entities/weather_effects/lense_flare.cc	(revision 10113)
+++ /trunk/src/world_entities/weather_effects/lense_flare.cc	(revision 10114)
@@ -34,7 +34,7 @@
 #include "camera.h"
 
-#include "class_id_DEPRECATED.h"
-
-ObjectListDefinitionID(LenseFlare, CL_LENSE_FLARE);
+
+
+ObjectListDefinition(LenseFlare);
 CREATE_FACTORY(LenseFlare);
 
Index: /trunk/src/world_entities/weather_effects/lightning_effect.cc
===================================================================
--- /trunk/src/world_entities/weather_effects/lightning_effect.cc	(revision 10113)
+++ /trunk/src/world_entities/weather_effects/lightning_effect.cc	(revision 10114)
@@ -28,7 +28,7 @@
 #include "script_class.h"
 #include "debug.h"
-#include "class_id_DEPRECATED.h"
-
-ObjectListDefinitionID(LightningEffect, CL_LIGHTNING_EFFECT);
+
+
+ObjectListDefinition(LightningEffect);
 
 SHELL_COMMAND(activate, LightningEffect, activateLightning);
Index: /trunk/src/world_entities/weather_effects/rain_effect.cc
===================================================================
--- /trunk/src/world_entities/weather_effects/rain_effect.cc	(revision 10113)
+++ /trunk/src/world_entities/weather_effects/rain_effect.cc	(revision 10114)
@@ -32,7 +32,7 @@
 #include "debug.h"
 
-#include "class_id_DEPRECATED.h"
-
-ObjectListDefinitionID(RainEffect, CL_RAIN_EFFECT);
+
+
+ObjectListDefinition(RainEffect);
 
 // Define shell commands
Index: /trunk/src/world_entities/weather_effects/snow_effect.cc
===================================================================
--- /trunk/src/world_entities/weather_effects/snow_effect.cc	(revision 10113)
+++ /trunk/src/world_entities/weather_effects/snow_effect.cc	(revision 10114)
@@ -30,7 +30,7 @@
 #include "cloud_effect.h"
 
-#include "class_id_DEPRECATED.h"
-
-ObjectListDefinitionID(SnowEffect, CL_SNOW_EFFECT);
+
+
+ObjectListDefinition(SnowEffect);
 SHELL_COMMAND(activate, SnowEffect, activateSnow);
 SHELL_COMMAND(deactivate, SnowEffect, deactivateSnow);
Index: /trunk/src/world_entities/weather_effects/volfog_effect.cc
===================================================================
--- /trunk/src/world_entities/weather_effects/volfog_effect.cc	(revision 10113)
+++ /trunk/src/world_entities/weather_effects/volfog_effect.cc	(revision 10114)
@@ -49,6 +49,6 @@
 
 
-#include "class_id_DEPRECATED.h"
-ObjectListDefinitionID(VolFogEffect, CL_VOLFOG_EFFECT);
+
+ObjectListDefinition(VolFogEffect);
 CREATE_FACTORY(VolFogEffect);
 
