Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: orxonox.OLD/orxonox/trunk/src/defs/class_id.h @ 4818

Last change on this file since 4818 was 4807, checked in by patrick, 19 years ago

orxonox/trunk: added quadtree_node to the project some other minor changes

File size: 6.5 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    \brief 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 * These two may not be the same in any way,
44 * eg. the bits may not intersect (no 1, 2 and a 3; 1,2 and 4 would be ok)
45 * The last three entries are for any classes in existence eg. SkyBox and so on
46 *
47 * \todo complete this List
48*/
49typedef enum ClassID
50{
51  // the Nothing CLASS (NULL)
52  CL_NULL                 =    0x00000000,
53
54  // superclasses
55  CL_MASK_SUPER_CLASS     =    0xff000000,
56  CL_BASE_OBJECT          =    0x01000000,
57
58  CL_PARENT_NODE          =    0x02000000,
59  CL_WORLD_ENTITY         =    0x04000000,
60
61  CL_STORY_ENTITY         =    0x08000000,
62
63  CL_PHYSICS_INTERFACE    =    0x10000000,
64
65  CL_EVENT_LISTENER       =    0x20000000,
66
67  // subsuper-classes
68  CL_MASK_SUBSUPER_CLASS  =    0x00fff000,
69  CL_PLAYER               =    0x00001000,
70  CL_NPC                  =    0x00002000,
71  CL_POWER_UP             =    0x00004000,
72  CL_FIELD                =    0x00008000,
73  CL_PROJECTILE           =    0x00010000,
74  CL_WEAPON               =    0x00020000,
75
76  // lowest level classes
77  CL_MASK_LOWLEVEL_CLASS  =    0x00000fff,
78
79  // singleton classes (range from 0x00000f00 to 0x00000fff)
80  CL_MASK_SINGLETON       =    0x00000f00,
81  CL_ORXONOX              =    0x00000f01,
82  CL_NULL_PARENT          =    0x00000f02,
83  CL_PILOT_PARENT         =    0x00000f03,
84  CL_OBJECT_MANAGER       =    0x00000f04,
85  CL_RESOURCE_MANAGER     =    0x00000f05,
86  CL_GARBAGE_COLLECTOR    =    0x00000f06,
87  CL_GAME_LOADER          =    0x00000f07,
88  CL_GRAPHICS_ENGINE      =    0x00000f08,
89  CL_TEXT_ENGINE          =    0x00000f09,
90  CL_LIGHT_MANAGER        =    0x00000f0a,
91  CL_EVENT_HANDLER        =    0x00000f0b,
92  CL_PHYSICS_ENGINE       =    0x00000f0c,
93  CL_CD_ENGINE            =    0x00000f0d,
94  CL_PARTICLE_ENGINE      =    0x00000f0e,
95  CL_SOUND_ENGINE         =    0x00000f0f,
96  CL_ANIMATION_PLAYER     =    0x00000f10,
97  CL_TRACK_MANAGER        =    0x00000f11,
98  CL_TRACK_NODE           =    0x00000f12,
99  CL_STATE                =    0x00000f13,
100  CL_FRAMEWORK            =    0x00000f14,
101
102
103
104  // StoryEntities (range from 0x00000100 to 0x000001ff)
105  CL_CAMPAIGN             =    0x00000101,
106  CL_WORLD                =    0x00000102,
107
108
109  // WorldEntities (range from 0x00000200 to 0x000004ff)
110  CL_CAMERA               =    0x00000201,
111  CL_CAMERA_TARGET        =    0x00000202,
112
113  CL_ENVIRONEMENT         =    0x00000203,
114  CL_SATELLITE            =    0x00000204,
115  CL_SKYBOX               =    0x00000205,
116  CL_SKYSPHERE            =    0x00000206,
117  CL_TERRAIN              =    0x00000207,
118  CL_TEST_BULLET          =    0x00000208,
119  CL_TEST_ENTITY          =    0x00000209,
120  CL_TEST_GUN             =    0x0000020a,
121
122
123  // gamePlay (range from 0x00000500 0x000005ff)
124  CL_EVENT                =    0x00000501,
125  CL_KEY_MAPPER           =    0x00000502,
126  CL_CROSSHAIR            =    0x0000050f,
127
128  CL_WEAPON_MANAGER       =    0x00000503,
129
130  // Physics stuff (range from 0x00000600 to 0x000007ff)
131  CL_PHYSICS_CONNECTION   =    0x00000601,
132  CL_FIELD_GRAVITY        =    0x00000610,
133  CL_FIELD_POINT_GRAVITY  =    0x00000611,
134  CL_FIELD_TWIRL          =    0x00000612,
135
136
137  // Collision
138  CL_COLLISION            =    0x00000611,
139  CL_BV_TREE              =    0x00000612,
140  CL_BV_TREE_NODE         =    0x00000613,
141  CL_OBB_TREE             =    0x00000614,
142  CL_OBB_TREE_NODE        =    0x00000615,
143  CL_BOUNDING_VOLUME      =    0x00000616,
144  CL_OBB                  =    0x00000617,
145  CL_BOUNDING_SPHERE      =    0x00000618,
146
147  // graphical stuff (range from 0x00000800 to 0x000009ff)
148  CL_TEXT                 =    0x00000801,
149  CL_FONT                 =    0x00000802,
150  CL_MATERIAL             =    0x00000803,
151  CL_MODEL                =    0x00000804, //!< \todo make this a SUBCLASS maybe
152  CL_OBJMODEL             =    0x00000805,
153  CL_PROMITIVE_MODEL      =    0x00000806,
154  CL_MD2Model             =    0x00000807,
155  CL_LIGHT                =    0x00000808,
156  CL_PARTICLE_EMITTER     =    0x00000809,
157  CL_PARTICLE_SYSTEM      =    0x0000080a,
158  CL_ENVIRONMENT          =    0x00000810,
159  // GL-menu
160  CL_GLMENU_IMAGE_SCREEN  =    0x00000901,
161
162  // sound stuff (range from 0x00000a00 to 0x00000aff)
163  CL_SOUND_BUFFER         =    0x00000a01,
164  CL_SOUND_SOURCE         =    0x00000a02,
165
166
167  // misc: (range from 0x00000b00 to 0x00000cff)
168  CL_ANIMATION            =    0x00000b01,
169  //  CL_ANIMATION3D          =    0x00000b02,
170  CL_QUICK_ANIMATION      =    0x00000b02,
171  CL_FACTORY              =    0x00000b03,
172  CL_INI_PARSER           =    0x00000b04,
173  CL_LIST                 =    0x00000b05,
174  CL_SUBSTRING            =    0x00000b06,
175  CL_LOAD_PARAM           =    0x00000b07,
176  CL_CURVE                =    0x00000b08,
177  CL_VECTOR               =    0x00000b09,
178  CL_CHARACTER_ATTRIBUTES =    0x00000b0a,
179  CL_TRACK_ELEMENT        =    0x00000b0b,
180  CL_NUMBER               =    0x00000b0c,
181
182
183  // Spatial Data Separation
184  CL_SPATIAL_SEPARATION   =    0x00000b0d,
185  CL_QUADTREE             =    0x00000b0e,
186  CL_QUADTREE_NODE        =    0x00000b0f
187};
188
189
190#endif /* _CLASS_ID_H */
Note: See TracBrowser for help on using the repository browser.