/* orxonox - the future of 3D-vertical-scrollers Copyright (C) 2004 orx This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2, or (at your option) any later version. ### File Specific: main-programmer: Patrick Boenzli co-programmer: Benjamin Grauer */ /*! \file class_list.h \brief list of orxonox classes this File is used to identify an Object with its class and also with its subclasses. this is also used by the ObjectManager to identify and load important classes */ #ifndef _CLASS_LIST_H #define _CLASS_LIST_H #define ClassDefinition(CLASS_DEFINITION, CLASS_VALUE, CLASS_NAME) \ CLASS_DEFINITION //! list of all classes to be loadable in via the ObjectManager /** * inheritance is done in the following way: Classes are identified by * a HEX-number eg: 0x12345678 * The number has 8x16 entries. * The first two: 1,2 superclass identifiers to * The second three are for subclasses with inheritance * These two may not be the same in any way, * eg. the bits may not intersect (no 1, 2 and a 3; 1,2 and 4 would be ok) * The last three entries are for any classes in existence eg. SkyBox and so on * * \todo complete this List */ typedef enum ClassID { // superclasses CL_MASK_SUPERCLASS = 0xff000000, CL_BASE_OBJECT = 0x01000000, CL_PARENT_NODE = 0x02000000, CL_WORLD_ENTITY = 0x04000000, CL_STORY_ENTITY = 0x08000000, CL_PHYSICS_INTERFACE = 0x10000000, CL_EVENT_LISTENER = 0x20000000, // subsuper-classes CL_MASK_SUBCLASS = 0x00fff000, CL_PLAYER = 0x00001000, CL_NPC = 0x00002000, CL_POWER_UP = 0x00004000, CL_FIELD = 0x00008000, CL_PROJECTILE = 0x00010000, CL_WEAPON = 0x00020000, // lowest level classes CL_MASK_LOWLEVEL_CLASS = 0x00000fff, // singleton classes (range from 0x00000001 to 0x000000ff) CL_MASK_SINGLETON = 0x0000003f, CL_ORXONOX = 0x00000001, CL_NULL_PARENT = 0x00000002, CL_PILOT_PARENT = 0x00000003, CL_OBJECT_MANAGER = 0x00000004, CL_RESOURCE_MANAGER = 0x00000005, CL_GARBAGE_COLLECTOR = 0x00000006, CL_GAME_LOADER = 0x00000007, CL_GRAPHICS_ENGINE = 0x00000008, CL_TEXT_ENGINE = 0x00000009, CL_LIGHT_MANAGER = 0x0000000a, CL_EVENT_HANDLER = 0x0000000b, CL_PHYSICS_ENGINE = 0x0000000c, CL_CD_ENGINE = 0x0000000d, CL_PARTICLE_ENGINE = 0x0000000e, CL_SOUND_ENGINE = 0x0000000f, CL_ANIMATION_PLAYER = 0x00000010, CL_TRACK_MANAGER = 0x00000011, CL_TRACK_NODE = 0x00000012, CL_STATE = 0x00000013, CL_FRAMEWORK = 0x00000014, // story entities (range from 0x00000101 to 0x000001ff) CL_CAMPAIGN = 0x00000101, CL_WORLD = 0x00000102, // world entities (range from 0x00000201 to 0x000005ff) CL_CAMERA = 0x00000201, CL_CAMERA_TARGET = 0x00000202, CL_ENVIRONEMENT = 0x00000203, CL_SATELLITE = 0x00000204, CL_SKYBOX = 0x00000205, CL_SKYSPHERE = 0x00000206, CL_TERRAIN = 0x00000207, CL_TEST_BULLET = 0x00000208, CL_TEST_ENTITY = 0x00000209, CL_TEST_GUN = 0x0000020a, CL_CHARACTER_ATTRIBUTES, CL_ANIMATION, CL_ANIMATION3D, CL_ARRAY, CL_CURVE, CL_VECTOR, CL_FACTORY, CL_INI_PARSER, CL_LIST, CL_SUBSTRING, CL_LOAD_PARAM, CL_EVENT, CL_KEY_MAPPER, CL_TEXT, CL_GLMENU_IMAGE_SCREEN, CL_LIGHT, CL_MATERIAL, CL_MD2Model, CL_MODEL, CL_OBJMODEL, CL_PROMITIVE_MODEL, CL_PARTICLE_EMITTER, CL_PARTICLE_SYSTEM, CL_COLLISION, CL_BV_TREE, CL_BV_TREE_NODE, CL_OBB_TREE, CL_OBB_TREE_NODE, CL_BOUNDING_VOLUME, CL_OBB, CL_BOUNDING_SPHERE, CL_NUMBER }; #endif /* _CLASS_LIST_H */