/* 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 sub/super-classes. 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 8^4 entries. * The first two: 1,2 superclass identifiers to * The second three are for subclasses with inheritance * These two may not be the same in any way, * 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_SUPER_CLASS = 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_SUBSUPER_CLASS = 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, // StoryEntities (range from 0x00000101 to 0x000001ff) CL_CAMPAIGN = 0x00000101, CL_WORLD = 0x00000102, // WorldEntities (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_EVENT = 0x00000a08, CL_KEY_MAPPER = 0x00000a09, // graphical stuff (range from 0x00000800 to 0x000009ff) CL_TEXT = 0x00000801, CL_MATERIAL = 0x00000802, CL_MODEL = 0x00000803, //!< \todo make this a SUBCLASS maybe CL_OBJMODEL = 0x00000804, CL_PROMITIVE_MODEL = 0x00000805, CL_MD2Model = 0x00000806, CL_LIGHT = 0x00000807, CL_PARTICLE_EMITTER = 0x00000808, CL_PARTICLE_SYSTEM = 0x00000809, // GL-menu CL_GLMENU_IMAGE_SCREEN = 0x00000901, // Collision CL_COLLISION, CL_BV_TREE, CL_BV_TREE_NODE, CL_OBB_TREE, CL_OBB_TREE_NODE, CL_BOUNDING_VOLUME, CL_OBB, CL_BOUNDING_SPHERE, // misc: (range from 0x00000a00 to 0x00000bff) CL_ANIMATION = 0x00000a01, // CL_ANIMATION3D = 0x00000a02, CL_FACTORY = 0x00000a02, CL_INI_PARSER = 0x00000a03, CL_LIST = 0x00000a04, CL_SUBSTRING = 0x00000a05, CL_LOAD_PARAM = 0x00000a06, CL_CURVE = 0x00000a07, CL_VECTOR = 0x00000a08, CL_CHARACTER_ATTRIBUTES = 0x00000a09, CL_NUMBER }; #endif /* _CLASS_LIST_H */