Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: orxonox.OLD/branches/2d-recalc/src/defs/class_id.h @ 5648

Last change on this file since 5648 was 5366, checked in by bensch, 19 years ago

orxonox/trunk: more definitions of GLGui.
also a patch to the resource-manager

File size: 8.9 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_id.h
20  *  list of orxonox classID's
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_ID_H
34#define _CLASS_ID_H
35
36//! list of all classes to be loadable in via the ObjectManager
37/**
38 * inheritance is done in the following way: Classes are identified by
39 * a HEX-number eg: 0x12345678
40 * The number has 8^4 entries.
41 * The first two: 1,2 superclass identifiers to
42 * The second three are for subclasses with inheritance:
43 *  the first of these numbers is defining the subclassType, it may be anything between 1-a
44 *  The following two may not be the same in any way,
45 * eg. the bits may not intersect (no 1, 2 and a 3; 01, 02 and 04, 08, 10  would be ok)
46 * The last three entries are for any classes in existence eg. SkyBox and so on
47 *
48 * -> # max SuperClass-count        = 7 (not intersecting)
49 *    # max SubSuperClass-count     = 15*7 = 105 (the 7 classes will be able to get derived from each other, but not over the SubSuperClass.)
50 *    # max lowerClasses-count      = 3^16 = enough (they are Leaves, and may NOT be derived by any other class.)
51 */
52typedef enum ClassID
53{
54  // the Nothing CLASS (NULL)
55  CL_NULL                       =    0x00000000,
56
57  // superclasses
58  CL_MASK_SUPER_CLASS           =    0xff000000,
59  CL_BASE_OBJECT                =    0x01000000,
60
61  CL_PARENT_NODE                =    0x02000000,
62  CL_WORLD_ENTITY               =    0x04000000,
63
64  CL_STORY_ENTITY               =    0x08000000,
65
66  CL_PHYSICS_INTERFACE          =    0x10000000,
67
68  CL_EVENT_LISTENER             =    0x20000000,
69
70  CL_ELEMENT_2D                 =    0x40000000,
71
72  // subsuper-classes
73  CL_MASK_SUBSUPER_CLASS        =    0x00fff000,
74  CL_MASK_SUBSUPER_CLASS_ID     =    0x00f00000,
75  CL_MASK_SUBSUPER_CLASS_ID2    =    0x000ff000,
76  CL_PLAYER                     =    0x00101000,
77  CL_NPC                        =    0x00102000,
78  CL_POWER_UP                   =    0x00104000,
79  CL_FIELD                      =    0x00108000,
80  CL_PROJECTILE                 =    0x00110000,
81  CL_WEAPON                     =    0x00120000,
82
83  // subsuper-classes derivations taken : 1, 5, a, b.     << THIS IS A LIST OF ALL THE DCL_MASK_SUBSUPERCLASS_ID's taken
84
85  // lowest level classes
86  CL_MASK_LOWLEVEL_CLASS        =    0x00000fff,
87
88  // singleton classes (range from 0x00000f00 to 0x00000fff)
89  CL_MASK_SINGLETON             =    0x00000f00,
90  CL_ORXONOX                    =    0x00000f01,
91  CL_NULL_PARENT                =    0x00000f02,
92  CL_PILOT_PARENT               =    0x00000f03,
93  CL_OBJECT_MANAGER             =    0x00000f04,
94  CL_RESOURCE_MANAGER           =    0x00000f05,
95  CL_GARBAGE_COLLECTOR          =    0x00000f06,
96  CL_GAME_LOADER                =    0x00000f07,
97  CL_GRAPHICS_ENGINE            =    0x00000f08,
98  CL_TEXT_ENGINE                =    0x00000f09,
99  CL_LIGHT_MANAGER              =    0x00000f0a,
100  CL_EVENT_HANDLER              =    0x00000f0b,
101  CL_PHYSICS_ENGINE             =    0x00000f0c,
102  CL_CD_ENGINE                  =    0x00000f0d,
103  CL_PARTICLE_ENGINE            =    0x00000f0e,
104  CL_SOUND_ENGINE               =    0x00000f0f,
105  CL_ANIMATION_PLAYER           =    0x00000f10,
106  CL_TRACK_MANAGER              =    0x00000f11,
107  CL_TRACK_NODE                 =    0x00000f12,
108  CL_STATE                      =    0x00000f13,
109  CL_FRAMEWORK                  =    0x00000f14,
110  CL_RENDER_2D                  =    0x00000f21,
111  CL_NULL_ELEMENT_2D            =    0x00000f22,
112  CL_SHELL_BUFFER               =    0x00000f32,
113  CL_GLGUI_HANDLER              =    0x00000f40,
114
115
116  // StoryEntities (range from 0x00000100 to 0x000001ff)
117  CL_CAMPAIGN                   =    0x00000101,
118  CL_WORLD                      =    0x00000102,
119
120
121  // WorldEntities (range from 0x00000200 to 0x000004ff)
122  CL_CAMERA                     =    0x00000201,
123  CL_CAMERA_TARGET              =    0x00000202,
124
125  CL_ENVIRONEMENT               =    0x00000203,
126  CL_SATELLITE                  =    0x00000204,
127  CL_SKYBOX                     =    0x00000205,
128  CL_SKYSPHERE                  =    0x00000206,
129  CL_TERRAIN                    =    0x00000207,
130  CL_TEST_BULLET                =    0x00000208,
131  CL_TEST_ENTITY                =    0x00000209,
132  CL_TEST_GUN                   =    0x0000020a,
133  CL_TURRET                     =    0x0000020b,
134
135
136  // gamePlay (range from 0x00000500 0x000005ff)
137  CL_EVENT                      =    0x00000501,
138  CL_KEY_MAPPER                 =    0x00000502,
139  CL_USER_CONTROL               =    0x00000511,
140  CL_CROSSHAIR                  =    0x00000512,
141
142  CL_WEAPON_MANAGER             =    0x00000503,
143
144  // Physics stuff (range from 0x00000600 to 0x000007ff)
145  CL_PHYSICS_CONNECTION         =    0x00000601,
146  CL_FIELD_GRAVITY              =    0x00000610,
147  CL_FIELD_POINT_GRAVITY        =    0x00000611,
148  CL_FIELD_TWIRL                =    0x00000612,
149
150
151  // Collision
152  CL_COLLISION                  =    0x00000611,
153  CL_BV_TREE                    =    0x00a01612,
154  CL_BV_TREE_NODE               =    0x00a02613,
155  CL_OBB_TREE                   =    0x00a04614,
156  CL_OBB_TREE_NODE              =    0x00a08615,
157  CL_BOUNDING_VOLUME            =    0x00a10616,
158  CL_OBB                        =    0x00a20617,
159  CL_BOUNDING_SPHERE            =    0x00a40618,
160
161  // graphical stuff (range from 0x00000800 to 0x000009ff)
162  CL_TEXT                       =    0x00b01801,
163  CL_FONT                       =    0x00000802,
164  CL_TEXTURE                    =    0x00000803,
165  CL_MATERIAL                   =    0x00000804,
166  CL_MODEL                      =    0x00000805, //!< @todo make this a SUBCLASS maybe
167  CL_OBJMODEL                   =    0x00000806,
168  CL_PROMITIVE_MODEL            =    0x00000807,
169  CL_MD2Model                   =    0x00000808,
170  CL_LIGHT                      =    0x00000809,
171  CL_PARTICLE_EMITTER           =    0x0000080a,
172  CL_PARTICLE_SYSTEM            =    0x0000080a,
173  CL_ENVIRONMENT                =    0x00000810,
174  CL_SHADER                     =    0x00000811,
175  // GL-GUI
176  CL_GLGUI_WIDGET               =    0x00501901,
177  CL_GLGUI_BUTTON               =    0x00502902,
178  CL_GLGUI_PUSHBUTTON           =    0x00000903,
179  CL_GLGUI_CHECKBUTTON          =    0x00000904,
180  CL_GLGUI_RADIOBUTTON          =    0x00000905,
181  CL_GLGUI_CONTAINER            =    0x00504906,
182  CL_GLGUI_BOX                  =    0x00000907,
183  CL_GLGUI_FRAME                =    0x00000908,
184  CL_GLGUI_WINDOW               =    0x00000909,
185  CL_GLMENU_IMAGE_SCREEN        =    0x00000920,
186
187  // sound stuff (range from 0x00000a00 to 0x00000aff)
188  CL_SOUND_BUFFER               =    0x00000a01,
189  CL_SOUND_SOURCE               =    0x00000a02,
190  CL_SOUND_OGG_PLAYER           =    0x00000a11,
191
192
193  // misc: (range from 0x00000b00 to 0x00000cff)
194  CL_ANIMATION                  =    0x00000b01,
195  //  CL_ANIMATION3D                =    0x00000b02,
196  CL_QUICK_ANIMATION            =    0x00000b02,
197  CL_FACTORY                    =    0x00000b03,
198  CL_INI_PARSER                 =    0x00000b04,
199  CL_LIST                       =    0x00000b05,
200  CL_SUBSTRING                  =    0x00000b06,
201  CL_LOAD_PARAM                 =    0x00000b07,
202  CL_CURVE                      =    0x00000b08,
203  CL_VECTOR                     =    0x00000b09,
204  CL_CHARACTER_ATTRIBUTES       =    0x00000b0a,
205  CL_TRACK_ELEMENT              =    0x00000b0b,
206  CL_NUMBER                     =    0x00000b0c,
207  CL_FAST_FACTORY               =    0x00000c01,
208  CL_SHELL                      =    0x00000c10,
209  CL_SHELL_COMMAND              =    0x00000c11,
210  CL_SHELL_COMMAND_CLASS        =    0x00000c12,
211  CL_SHELL_INPUT                =    0x00000c13,
212  CL_SHELL_COMPLETION           =    0x00000c14,
213  CL_SHELL_COMMAND_ALIAS        =    0x00000c15,
214
215  // Spatial Data Separation
216  CL_SPATIAL_SEPARATION         =    0x00000b0d,
217  CL_QUADTREE                   =    0x00000b0e,
218  CL_QUADTREE_NODE              =    0x00000b0f
219};
220
221
222#endif /* _CLASS_ID_H */
Note: See TracBrowser for help on using the repository browser.