Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: orxonox.OLD/orxonox/trunk/src/defs/class_list.h @ 4705

Last change on this file since 4705 was 4597, checked in by bensch, 19 years ago

orxonox/trunk: setClassID implemented in all files

File size: 6.2 KB
Line 
1/*
2   orxonox - the future of 3D-vertical-scrollers
3
4   Copyright (C) 2004 orx
5
6   This program is free software; you can redistribute it and/or modify
7   it under the terms of the GNU General Public License as published by
8   the Free Software Foundation; either version 2, or (at your option)
9   any later version.
10
11### File Specific:
12   main-programmer: Patrick Boenzli
13   co-programmer: Benjamin Grauer
14
15   2005-06-10: (bensch) added new sturcture to support multiple inheritance
16*/
17
18/*!
19    \file class_list.h
20    \brief list of orxonox classes
21
22    this File is used to identify an Object with its class and also with its sub/super-classes.
23    this is also used by the ObjectManager to identify and load important classes
24
25    !! important !!
26    When adding a new CLASS be sure about the following:
27      1. if it is a (SUB)SUPERCLASS make sure there is still space left (if not think of a new approach)
28      2. if it is a (SUB)SUPERCLASS also add the CLASS to BaseObject::whatIs() so we have nice output :)
29      3. check if the Number you add is not refered to twice, and that with (SUB)SUPERCLASSES there are no intersections
30      4. be sure to add you stuff in the right section, and don't interest yourself for the order of things. :)
31*/
32
33#ifndef _CLASS_LIST_H
34#define _CLASS_LIST_H
35
36
37#define ClassDefinition(CLASS_DEFINITION, CLASS_VALUE, CLASS_NAME) \
38                  CLASS_DEFINITION
39
40//! list of all classes to be loadable in via the ObjectManager
41/**
42 * inheritance is done in the following way: Classes are identified by
43 * a HEX-number eg: 0x12345678
44 * The number has 8^4 entries.
45 * The first two: 1,2 superclass identifiers to
46 * The second three are for subclasses with inheritance
47 * These two may not be the same in any way,
48 * eg. the bits may not intersect (no 1, 2 and a 3; 1,2 and 4 would be ok)
49 * The last three entries are for any classes in existence eg. SkyBox and so on
50 *
51 * \todo complete this List
52*/
53typedef enum ClassID
54{
55  // superclasses
56  CL_MASK_SUPER_CLASS     =    0xff000000,
57  CL_BASE_OBJECT          =    0x01000000,
58
59  CL_PARENT_NODE          =    0x02000000,
60  CL_WORLD_ENTITY         =    0x04000000,
61
62  CL_STORY_ENTITY         =    0x08000000,
63
64  CL_PHYSICS_INTERFACE    =    0x10000000,
65
66  CL_EVENT_LISTENER       =    0x20000000,
67
68  // subsuper-classes
69  CL_MASK_SUBSUPER_CLASS  =    0x00fff000,
70  CL_PLAYER               =    0x00001000,
71  CL_NPC                  =    0x00002000,
72  CL_POWER_UP             =    0x00004000,
73  CL_FIELD                =    0x00008000,
74  CL_PROJECTILE           =    0x00010000,
75  CL_WEAPON               =    0x00020000,
76
77  // lowest level classes
78  CL_MASK_LOWLEVEL_CLASS  =    0x00000fff,
79
80  // singleton classes (range from 0x00000f01 to 0x00000fff)
81  CL_MASK_SINGLETON       =    0x00000f00,
82  CL_ORXONOX              =    0x00000f01,
83  CL_NULL_PARENT          =    0x00000f02,
84  CL_PILOT_PARENT         =    0x00000f03,
85  CL_OBJECT_MANAGER       =    0x00000f04,
86  CL_RESOURCE_MANAGER     =    0x00000f05,
87  CL_GARBAGE_COLLECTOR    =    0x00000f06,
88  CL_GAME_LOADER          =    0x00000f07,
89  CL_GRAPHICS_ENGINE      =    0x00000f08,
90  CL_TEXT_ENGINE          =    0x00000f09,
91  CL_LIGHT_MANAGER        =    0x00000f0a,
92  CL_EVENT_HANDLER        =    0x00000f0b,
93  CL_PHYSICS_ENGINE       =    0x00000f0c,
94  CL_CD_ENGINE            =    0x00000f0d,
95  CL_PARTICLE_ENGINE      =    0x00000f0e,
96  CL_SOUND_ENGINE         =    0x00000f0f,
97  CL_ANIMATION_PLAYER     =    0x00000f10,
98  CL_TRACK_MANAGER        =    0x00000f11,
99  CL_TRACK_NODE           =    0x00000f12,
100  CL_STATE                =    0x00000f13,
101  CL_FRAMEWORK            =    0x00000f14,
102
103
104
105  // StoryEntities (range from 0x00000101 to 0x000001ff)
106  CL_CAMPAIGN             =    0x00000101,
107  CL_WORLD                =    0x00000102,
108
109
110  // WorldEntities (range from 0x00000201 to 0x000004ff)
111  CL_CAMERA               =    0x00000201,
112  CL_CAMERA_TARGET        =    0x00000202,
113
114  CL_ENVIRONEMENT         =    0x00000203,
115  CL_SATELLITE            =    0x00000204,
116  CL_SKYBOX               =    0x00000205,
117  CL_SKYSPHERE            =    0x00000206,
118  CL_TERRAIN              =    0x00000207,
119  CL_TEST_BULLET          =    0x00000208,
120  CL_TEST_ENTITY          =    0x00000209,
121  CL_TEST_GUN             =    0x0000020a,
122
123
124  // gamePlay (range from 0x00000500 0x000005ff)
125  CL_EVENT                =    0x00000501,
126  CL_KEY_MAPPER           =    0x00000502,
127
128  CL_WEAPON_MANAGER       =    0x00000503,
129
130  // Physics stuff (range from 0x00000600 to 0x000007ff)
131  CL_PHYSICS_CONNECTION   =    0x00000601,
132  // Collision
133  CL_COLLISION            =    0x00000611,
134  CL_BV_TREE              =    0x00000612,
135  CL_BV_TREE_NODE         =    0x00000613,
136  CL_OBB_TREE             =    0x00000614,
137  CL_OBB_TREE_NODE        =    0x00000615,
138  CL_BOUNDING_VOLUME      =    0x00000616,
139  CL_OBB                  =    0x00000617,
140  CL_BOUNDING_SPHERE      =    0x00000618,
141
142  // graphical stuff (range from 0x00000800 to 0x000009ff)
143  CL_TEXT                 =    0x00000801,
144  CL_FONT                 =    0x00000802,
145  CL_MATERIAL             =    0x00000803,
146  CL_MODEL                =    0x00000804, //!< \todo make this a SUBCLASS maybe
147  CL_OBJMODEL             =    0x00000805,
148  CL_PROMITIVE_MODEL      =    0x00000806,
149  CL_MD2Model             =    0x00000807,
150  CL_LIGHT                =    0x00000808,
151  CL_PARTICLE_EMITTER     =    0x00000809,
152  CL_PARTICLE_SYSTEM      =    0x0000080a,
153  CL_ENVIRONMENT          =    0x00000810,
154  // GL-menu
155  CL_GLMENU_IMAGE_SCREEN  =    0x00000901,
156
157  // sound stuff (range from 0x00000a00 to 0x00000aff)
158  CL_SOUND_BUFFER         =    0x00000a01,
159  CL_SOUND_SOURCE         =    0x00000a02,
160
161
162  // misc: (range from 0x00000b00 to 0x00000cff)
163  CL_ANIMATION            =    0x00000b01,
164  //  CL_ANIMATION3D          =    0x00000b02,
165  CL_QUICK_ANIMATION      =    0x00000b02,
166  CL_FACTORY              =    0x00000b03,
167  CL_INI_PARSER           =    0x00000b04,
168  CL_LIST                 =    0x00000b05,
169  CL_SUBSTRING            =    0x00000b06,
170  CL_LOAD_PARAM           =    0x00000b07,
171  CL_CURVE                =    0x00000b08,
172  CL_VECTOR               =    0x00000b09,
173  CL_CHARACTER_ATTRIBUTES =    0x00000b0a,
174  CL_TRACK_ELEMENT        =    0x00000b0b,
175  CL_NUMBER               =    0x00000b0c
176};
177
178
179#endif /* _CLASS_LIST_H */
Note: See TracBrowser for help on using the repository browser.