Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: orxonox.OLD/branches/control/src/defs/class_id.h @ 7231

Last change on this file since 7231 was 7123, checked in by bensch, 19 years ago

orxonox/trunk: some cleanup before the new tag

  1. BaseObject isA was wrong… every subclass was detected as any other subclass
  2. Classes get unloaded again as they should
  3. some minor fixes (Material* → Material) and some other cleanups
File size: 13.8 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: Benjamin Grauer
13   co-programmer: Patrick Boenzli
14
15   2005-06-10: (bensch) added new sturcture to support multiple inheritance
16*/
17
18/*!
19 * @file class_id.h
20 * @brief contains a list of orxonox ClassID's (identities to register classes and their SuperClasses)
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/Factory 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. check if the Number you add is not refered twice, and that with (SUB)SUPERCLASSES there are no intersections
29 *    3. be sure to add you stuff in the right section, and don't interest yourself for the order of things. :)
30 */
31
32#ifndef _CLASS_ID_H
33#define _CLASS_ID_H
34
35//! list of all classes to be loadable in via the ObjectManager
36/**
37 *
38 * -------------------------------------------------------------------------------------------
39 * Consider the Identifiers 0xABCDEFGH
40 * The first two: A and B are superclass Identifiers !! THEY ARE ALREADY FULL !!
41 *
42 * The second three are for sub-superclass-groups inheritance:
43 *  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
44 *  D,E: Member within the Group, to specify further deriavtions within the Group.
45 *       These may be anything from 1,2,4,8 (at D and E)
46 *  !! consider, that you __may not__ have a derivated class from group a and group b.
47 *
48 * The last three entries F,G,H are for any leaf classes in existence.
49 * they are ordered in the following way:
50 *  F: LEAF-GroupSpecifier
51 *  G,H: UNIQUE NUMBER eithin F-Group.
52 *
53 * You only have to extend the Class with your ClassID-tag.
54 * If something goes Wrong, you get an Assertion-Warning in BaseObject.
55 * !! Abstrace/Non-total-leaf classes do not have a LEAF-part.
56 * -------------------------------------------------------------------------------------------
57 *
58 * COUNT:
59 * -> # max SuperClass-count        = 7 (not intersecting)
60 *    # max SubSuperClass-count     = 15*7 = 105 (the 7 classes will be able to get derived from each other, but not over the SubSuperClass.)
61 *    # max lowerClasses-count      = 3^16 = enough (they are Leaves, and may NOT be derived by any other class.)
62 */
63typedef enum ClassID
64{
65  // the Nothing CLASS (NULL)
66  CL_NULL                       =    0x00000000,
67
68  /// SUPER-classes
69  CL_MASK_SUPER_CLASS           =    0xff000000,
70  CL_BASE_OBJECT                =    0x00000000,
71
72  CL_PARENT_NODE                =    0x01000000,
73
74  CL_STORY_ENTITY               =    0x02000000,
75
76  CL_PHYSICS_INTERFACE          =    0x04000000,
77
78  CL_EVENT_LISTENER             =    0x08000000,
79
80  CL_ELEMENT_2D                 =    0x10000000,
81
82  CL_SYNCHRONIZEABLE            =    0x20000000,
83
84  CL_WORLD_ENTITY               =    0x40000000,
85
86  CL_GRAPHICS_EFFECT            =    0x80000000,
87
88
89  /// subsuper-classes
90  // subsuper-classes derivations taken : 1, 2, 5, a, b, c.   << THIS IS A LIST OF ALL THE DCL_MASK_SUBSUPERCLASS_ID's taken
91  CL_MASK_SUBSUPER_CLASS        =    0x00fff000,
92  CL_MASK_SUBSUPER_CLASS_IDA    =    0x00f00000,
93  CL_MASK_SUBSUPER_CLASS_IDB    =    0x000ff000,
94
95  // lowest level classes
96  // These are also referenced to as Leaf-classes
97  CL_MASK_LOWLEVEL_CLASS        =    0x00000fff,
98
99
100  /// SINGLETON classes (range from 0x00000000 to 0x000000ff)
101  CL_MASK_SINGLETON             =    0x00000000,
102  CL_ORXONOX                    =    0x00000001,
103  CL_NULL_PARENT                =    0x00000002,
104  CL_PILOT_PARENT               =    0x00000003,
105  CL_OBJECT_MANAGER             =    0x00000004,
106  CL_RESOURCE_MANAGER           =    0x00000005,
107  CL_GARBAGE_COLLECTOR          =    0x00000006,
108  CL_GAME_LOADER                =    0x00000007,
109  CL_GRAPHICS_ENGINE            =    0x00000008,
110  CL_TEXT_ENGINE                =    0x00000009,
111  CL_LIGHT_MANAGER              =    0x0000000a,
112  CL_EVENT_HANDLER              =    0x0000000b,
113  CL_PHYSICS_ENGINE             =    0x0000000c,
114  CL_CD_ENGINE                  =    0x0000000d,
115  CL_PARTICLE_ENGINE            =    0x0000000e,
116  CL_SOUND_ENGINE               =    0x0000000f,
117  CL_ANIMATION_PLAYER           =    0x00000010,
118  CL_TRACK_MANAGER              =    0x00000011,
119  CL_TRACK_NODE                 =    0x00000012,
120  CL_STATE                      =    0x00000013,
121  CL_FRAMEWORK                  =    0x00000014,
122  CL_RENDER_2D                  =    0x00000021,
123  CL_NULL_ELEMENT_2D            =    0x00000022,
124  CL_SHELL_BUFFER               =    0x00000032,
125  CL_GLGUI_HANDLER              =    0x00000040,
126  CL_GLGUI_MAIN_WIDGET          =    0x00000041,
127  CL_NETWORK_MANAGER            =    0x00000050,
128  CL_SHARED_NETWORK_DATA        =    0x00000051,
129
130
131  /// StoryEntities (range from 0x00000100 to 0x000001ff)
132  CL_GAME_WORLD                 =    0x00101000,
133  CL_GAME_WORLD_DATA            =    0x00102000,
134
135  CL_CAMPAIGN                   =    0x00000101,
136  CL_CAMPAIGN_DATA              =    0x00000102,
137  CL_SIMPLE_GAME_MENU           =    0x00000103,
138  CL_SIMPLE_GAME_MENU_DATA      =    0x00000104,
139  CL_SINGLE_PLAYER_WORLD        =    0x00000105,
140  CL_SINGLE_PLAYER_WORLD_DATA   =    0x00000106,
141  CL_MULTI_PLAYER_WORLD         =    0x00000107,
142  CL_MULTI_PLAYER_WORLD_DATA    =    0x00000108,
143  CL_MOVIE_LOADER               =    0x00000109,
144  CL_GAME_RULES                 =    0x00000110,          ///HACK: this is no story entity, bensch: to rebuild
145  CL_MULTIPLAYER_TEAM_DEATHMATCH =   0x00000111,          ///HACK: this is no story entity: it is a CL_GAME_RULES, bensch: to rebuild
146
147  /// SUPER-PNodes
148  CL_FIELD                      =    0x00201000,
149
150  /// PNodes
151  CL_CAMERA                     =    0x00000201,
152  CL_CAMERA_TARGET              =    0x00000202,
153
154
155  /// SUPER-WorldEntities
156  CL_PLAYER                     =    0x00302000,
157
158  CL_PLAYABLE                   =    0x00301000,
159  CL_NPC                        =    0x00304000,
160  CL_PROJECTILE                 =    0x00308000,
161  CL_WEAPON                     =    0x00310000,
162  CL_POWER_UP                   =    0x00320000,
163  CL_EXTENDABLE                 =    0x00340000,
164
165  /// WorldEntities (range from 0x00000300 to 0x000005ff)
166  // Environments
167  CL_ENVIRONMENT                =    0x00000303,
168  CL_SATELLITE                  =    0x00000304,
169  CL_SKYBOX                     =    0x00000305,
170  CL_SKYSPHERE                  =    0x00000306,
171  CL_TERRAIN                    =    0x00000307,
172  CL_WATER                      =    0x00000308,
173  CL_PLANET                     =    0x00000309,
174  CL_BUILDING                   =    0x00000310,
175
176  // Playables
177  CL_SPACE_SHIP                 =    0x0000035a,
178  CL_HELICOPTER                 =    0x0000035b,
179  CL_SPAWNING_POINT             =    0x0000035c,
180  CL_MD2_CREATURE               =    0x0000035d,
181  CL_HOVER                      =    0x0000035e,
182  CL_TURBINE_HOVER              =    0x0000035f,
183
184  // Powerups
185  CL_TURRET_POWER_UP            =    0x00000381,
186  CL_LASER_POWER_UP             =    0x00000382,
187  CL_WEAPON_POWER_UP            =    0x00000383,
188  CL_PARAM_POWER_UP             =    0x00000384,
189
190  // Weapons
191  CL_TEST_GUN                   =    0x000003a0,
192  CL_TURRET                     =    0x000003a1,
193  CL_AIMING_TURRET              =    0x000003a2,
194  CL_CANNON                     =    0x000003a3,
195  CL_TARGETING_TURRET           =    0x000003a4,
196  CL_HYPERBLASTER               =    0x000003a5,
197
198  // Projectiles
199  CL_TEST_BULLET                =    0x000003e0,
200  CL_ROCKET                     =    0x000003e1,
201  CL_LASER                      =    0x000003e2,
202  CL_BOMB                       =    0x000003e3,
203  CL_GROUND_TURRET              =    0x000003e4,
204  CL_GUIDED_MISSILE             =    0x000003e5,
205  CL_HYPERBLAST                 =    0x000003e6,
206
207  // NPC's
208  CL_NPC_TEST1                  =    0x00000401,
209  CL_NPC_TEST2                  =    0x00000402,
210
211  // Testing Entities
212  CL_TEST_ENTITY                =    0x00000409,
213
214  // misc
215  CL_MOVIE_ENTITY               =    0x00000511,
216  CL_RECORDER                   =    0x00000512,
217
218  CL_IMAGE_ENTITY               =    0x00000513,
219  CL_BILLBOARD                  =    0x00000514,
220  CL_MODEL_ENTITY               =    0x00000515,
221  CL_TEXT_ELEMENT               =    0x00000516, /// TODO MOVE
222
223
224  /// GamePlay (range from 0x00000600 0x000006ff)
225  CL_EVENT                      =    0x00000601,
226  CL_KEY_MAPPER                 =    0x00000602,
227  CL_CROSSHAIR                  =    0x00000612,
228
229  CL_WEAPON_MANAGER             =    0x00000603,
230  CL_AMMO_CONTAINER             =    0x00000604,
231  CL_HUD                        =    0x00000620,
232
233
234  /// Physics stuff (range from 0x00000700 to 0x000008ff)
235  CL_PHYSICS_CONNECTION         =    0x00000701,
236  CL_FIELD_GRAVITY              =    0x00000710,
237  CL_FIELD_POINT_GRAVITY        =    0x00000711,
238  CL_FIELD_TWIRL                =    0x00000712,
239
240
241  /// Collision
242  CL_COLLISION                  =    0x00000711,
243  CL_BV_TREE                    =    0x00701000,
244  CL_BV_TREE_NODE               =    0x00702000,
245  CL_OBB_TREE                   =    0x00000714,
246  CL_OBB_TREE_NODE              =    0x00000715,
247  CL_BOUNDING_VOLUME            =    0x00710000,
248  CL_OBB                        =    0x00720000,
249  CL_BOUNDING_SPHERE            =    0x00740000,
250
251
252  /// Graphical stuff (range from 0x00000800 to 0x00000aff)
253  /// SUPER-Textures
254  CL_TEXTURE                    =    0x00801000,
255  CL_TEXTURE_SEQUENCE           =    0x00802000,
256  CL_TEXT                       =    0x00804000,
257
258  // Texutres.
259  CL_FONT                       =    0x00000802,
260  CL_MOVIE_PLAYER               =    0x00000805,
261  CL_MEDIA_CONTAINER            =    0x00000806,
262
263  /// Super-Models
264  CL_MODEL                      =    0x00901000,
265  CL_STATIC_MODEL               =    0x00902000,
266  CL_VERTEX_ARRAY_MODEL         =    0x00904000,
267
268  // Models
269  CL_OBJ_MODEL                  =    0x00000907,
270
271  CL_PRIMITIVE_MODEL            =    0x00000908,
272  CL_MD2_MODEL                  =    0x00000909,
273  CL_HEIGHT_MAP                 =    0x0000090a,
274  CL_GRID                       =    0x0000090b,
275
276  CL_MATERIAL                   =    0x00000810,
277  CL_SHADER                     =    0x00000811,
278  CL_LIGHT                      =    0x00000821,
279  CL_FOG_EFFECT                 =    0x00000841,
280  CL_LENSE_FLARE                =    0x00000842,
281  CL_EXPLOSION                  =    0x00000850,
282  CL_LIGHTNING_BOLT             =    0x00000851,
283
284    // Particles
285  CL_PARTICLE_SYSTEM            =    0x00a01000,
286  CL_DOT_PARTICLES              =    0x00a02000,
287  CL_SPARK_PARTICLES            =    0x00a04000,
288  CL_SPRITE_PARTICLES           =    0x00a08000,
289  CL_MODEL_PARTICLES            =    0x00a10000,
290  //  CL_PNODE_PARTICLES            =    0x00a20000,
291
292
293  CL_PARTICLE_EMITTER           =    0x00a40000,
294  CL_DOT_EMITTER                =    0x00000a21,
295  CL_PLANE_EMITTER              =    0x00000a22,
296  CL_BOX_EMITTER                =    0x00000a23,
297  CL_SPHERE_EMITTER             =    0x00000a24,
298  //  CL_MODEL_EMITTER              =    0x00000a25,
299
300  // Element2D's  (range from 0x00000b00 to 0x00000bff)
301  /// GL-GUI
302  CL_GLGUI_WIDGET               =    0x00b01000,
303  CL_GLGUI_BUTTON               =    0x00b02000,
304  CL_GLGUI_PUSHBUTTON           =    0x00000b03,
305  CL_GLGUI_CHECKBUTTON          =    0x00000b04,
306  CL_GLGUI_RADIOBUTTON          =    0x00000b05,
307  CL_GLGUI_CONTAINER            =    0x00b04000,
308  CL_GLGUI_BOX                  =    0x00000b07,
309  CL_GLGUI_FRAME                =    0x00000b08,
310  CL_GLGUI_WINDOW               =    0x00000b09,
311  CL_GLMENU_IMAGE_SCREEN        =    0x00000b20,
312  CL_GLGUI_BAR                  =    0x00000b30,
313
314  /// AUDIO stuff (range from 0x00000c00 to 0x00000cff)
315  CL_SOUND_BUFFER               =    0x00000c01,
316  CL_SOUND_SOURCE               =    0x00000c02,
317  CL_SOUND_OGG_PLAYER           =    0x00000c11,
318
319
320  /// NETWORK stuff (range from 0x00000d00 to 0x00000dff)
321  CL_DATA_STREAM                =    0x00d01000,
322  CL_NETWORK_STREAM             =    0x00000d01,
323  CL_NETWORK_PROTOCOL           =    0x00000d02,
324  CL_NETWORK_SOCKET             =    0x00000d03,
325  CL_SERVER_SOCKET              =    0X00000d04,
326  CL_CONNECTION_MONITOR         =    0x00000d05,
327  CL_HANDSHAKE                  =    0x00000d06,
328  CL_NETWORK_GAME_MANAGER       =    0x00000d07,
329
330
331
332  /// MISCELANEOUS: (range from 0x00000e00 to 0x00000fff)
333  CL_ANIMATION                  =    0x00000e01,
334  //  CL_ANIMATION3D                =    0x00000b02,
335  CL_QUICK_ANIMATION            =    0x00000e02,
336
337  CL_FACTORY                    =    0x00000e03,
338  CL_FAST_FACTORY               =    0x00000e01,
339  CL_LOAD_PARAM                 =    0x00000e07,
340
341  CL_INI_PARSER                 =    0x00000e04,
342
343  CL_TRACK_ELEMENT              =    0x00000e0b,
344  CL_LIST                       =    0x00000e05,
345  CL_SUBSTRING                  =    0x00000e06,
346  CL_CURVE                      =    0x00000e08,
347  CL_CHARACTER_ATTRIBUTES       =    0x00000e0a,
348  CL_NUMBER                     =    0x00000e0c,
349  CL_EXECUTOR                   =    0x00000e0d,
350
351  CL_SHELL                      =    0x00000e10,
352  CL_SHELL_COMMAND              =    0x00000e11,
353  CL_SHELL_COMMAND_CLASS        =    0x00000e12,
354  CL_SHELL_INPUT                =    0x00000e13,
355  CL_SHELL_COMPLETION           =    0x00000e14,
356  CL_SHELL_COMMAND_ALIAS        =    0x00000e15,
357
358  // Spatial Data Separation
359  CL_SPATIAL_SEPARATION         =    0x00000e0d,
360  CL_QUADTREE                   =    0x00000e0e,
361  CL_QUADTREE_NODE              =    0x00000e0f,
362};
363
364
365#endif /* _CLASS_ID_H */
Note: See TracBrowser for help on using the repository browser.