MezzanineEngine 
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
enumerations.h
Go to the documentation of this file.
1 // © Copyright 2010 - 2014 BlackTopp Studios Inc.
2 /* This file is part of The Mezzanine Engine.
3 
4  The Mezzanine Engine is free software: you can redistribute it and/or modify
5  it under the terms of the GNU General Public License as published by
6  the Free Software Foundation, either version 3 of the License, or
7  (at your option) any later version.
8 
9  The Mezzanine Engine is distributed in the hope that it will be useful,
10  but WITHOUT ANY WARRANTY; without even the implied warranty of
11  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12  GNU General Public License for more details.
13 
14  You should have received a copy of the GNU General Public License
15  along with The Mezzanine Engine. If not, see <http://www.gnu.org/licenses/>.
16 */
17 /* The original authors have included a copy of the license specified above in the
18  'Docs' folder. See 'gpl.txt'
19 */
20 /* We welcome the use of the Mezzanine engine to anyone, including companies who wish to
21  Build professional software and charge for their product.
22 
23  However there are some practical restrictions, so if your project involves
24  any of the following you should contact us and we will try to work something
25  out:
26  - DRM or Copy Protection of any kind(except Copyrights)
27  - Software Patents You Do Not Wish to Freely License
28  - Any Kind of Linking to Non-GPL licensed Works
29  - Are Currently In Violation of Another Copyright Holder's GPL License
30  - If You want to change our code and not add a few hundred MB of stuff to
31  your distribution
32 
33  These and other limitations could cause serious legal problems if you ignore
34  them, so it is best to simply contact us or the Free Software Foundation, if
35  you have any questions.
36 
37  Joseph Toppi - toppij@gmail.com
38  John Blackwood - makoenergy02@gmail.com
39 */
40 #ifndef _enumerations_h
41 #define _enumerations_h
42 
43 #include "macros.h"
44 
45 ///////////////////////////////////////////////////////////////////////////////
46 /// @file
47 /// @brief Any global enumerations shared between multiple classes is to be declared here.
48 ///////////////////////////////////////
49 
50 namespace Mezzanine
51 {
52  /// @brief Used to indicate what kind of resources the Entrosol should look for
54  {
55  AT_FileSystem = 0, ///< Look for raw files
56  AT_Zip = 1, ///< Look for stuff in zip files even if the extension is not '.zip'.
57  AT_Invalid = 32768 ///< Indicates this valid was messed up unrecoverably, most likely by a bug.
58  };
59 
60  /// @enum AttenuationStyle
61  /// @brief These values represent the kind of attenuation applied to the field strength
62  /// over a distance.
63  /// @details None is the default, where the force is constant in all area's of the
64  /// field. Linear is where the force applied drops by the attenuation value times the distance
65  /// (strength - (attenuation amount * distance to AE center)). Quadratic is where the force
66  /// applied drops by the attenuation value times the distance squared (strength -
67  /// (attenuation amount * distance to AE center * distance to AE center)).
69  {
70  Att_None, ///< No Attentuation, Equal strength through.
71  Att_Linear, ///< Linear attentuation, Strength weaker farther from center.
72  Att_Quadratic ///< Quadratic/Exponential Attentuation, similar to real gravity, it tapers of more the further from the center you get.
73  };
74 
75  /// @enum OrientationMode
76  /// @brief Simple enum for communicating the orientation the UI and Camera have relative to the world it is rendering.
77  /// @details This enum is used by the UI and graphics sub-systems for when a change in orientation is detected. Under normal circumstances
78  /// this kind of thing should only occur in mobile devices such as SmartPhones and Tablets. However this can be forced on other devices/platforms.
80  {
81  OM_Degree_0 = 0,
82  OM_Degree_90 = 1,
83  OM_Degree_180 = 2,
84  OM_Degree_270 = 3,
85 
86  OM_Portrait = OM_Degree_0,
87  OM_LandscapeRight = OM_Degree_90,
88  OM_LandscapeLeft = OM_Degree_270
89  };
90 
91  /// @enum PauseLevel
92  /// @brief Used by the world class to describe the extent of pausing a world.
94  {
95  PL_Unpaused = 0, //MEZZ_BITMASK(0),
96 
97  PL_PausePhysics = 1,//MEZZ_BITMASK(1),
98  PL_PauseParticles = 2,//MEZZ_BITMASK(2),
99  PL_PauseAnimations = 4,//MEZZ_BITMASK(3),
100 
101  PL_PauseAll = PL_PausePhysics | PL_PauseParticles | PL_PauseAnimations// MEZZ_BITMASK32MAX
102  };
103 
104  /// @enum ProxyType
105  /// @brief Used by all World proxies to describe what their derived types are.
107  {
108  PT_Audio_First = 1,//1
109  PT_Audio_Listener = 1,//1
110  PT_Audio_SoundProxy = 2,//2
111  PT_Audio_Last = 2,//2
112 
113  PT_Graphics_First = 4,//3
114  PT_Graphics_BillboardSetProxy = 4,//3
115  PT_Graphics_CameraProxy = 8,//4
116  PT_Graphics_EntityProxy = 16,//5
117  PT_Graphics_LightProxy = 32,//6
118  PT_Graphics_ParticleSystemProxy = 64,//7
119  PT_Graphics_Last = 64,//7
120 
121  PT_Physics_First = 128,//8
122  PT_Physics_GhostProxy = 128,//8
123  PT_Physics_RigidProxy = 256,//9
124  PT_Physics_SoftProxy = 512,//10
125  PT_Physics_Last = 512,//10
126 
127  PT_Audio_All_Proxies = ( PT_Audio_Listener | PT_Audio_SoundProxy ),
128  PT_Graphics_All_Proxies = ( PT_Graphics_BillboardSetProxy | PT_Graphics_CameraProxy |PT_Graphics_EntityProxy |PT_Graphics_LightProxy |PT_Graphics_ParticleSystemProxy ),
129  PT_Physics_All_Proxies = ( PT_Physics_GhostProxy | PT_Physics_RigidProxy | PT_Physics_SoftProxy )
130  };
131 
132  /// @enum StandardAxis
133  /// @brief Used to identify different Axis in a 3d coordinate system.
134  /// @note These are compatible with the linear Axis on many constraints, but not the rotational axis.
136  {
137  Axis_Invalid = -1, ///< Not an axis, Don't pass this into functions or operator[] functions, it is intended as a
138  Axis_X = 0, ///< X axis
139  Axis_Y = 1, ///< Y axis
140  Axis_Z = 2 ///< Z axis
141  };
142 
143  /// @enum TrackType
144  /// @brief Used by Track classes to define the type of curves the track has.
146  {
147  TT_Simple = 1,
148  TT_Spline = 2,
149  TT_Bezier = 3
150  };
151 
152  /// @enum TransformSpace
153  /// @brief Used to define what frame of reference is to be used when positioning or rotating objects.
155  {
156  TS_Local = 0, ///< Local space, aka the object in questions world position is used as origin.
157  TS_Parent = 1, ///< Mostly reserved for rotations, means a rotation to occur around the parent instead of self.
158  TS_World = 2 ///< World space
159  };
160 
161  /// @enum WorldAndSceneObjectType
162  /// @brief Used by various classes to help identify what class an object is.
163  /// @details This enum can be used to express any object which could be considered "insertable" into the game world.
164  enum WorldObjectType
165  {
166  // Terrain Objects
167  WO_TerrainFirst = 1,//MEZZ_BITMASK(1),//1,
168  WO_MeshTerrain = 1,//MEZZ_BITMASK(1),//1,
169  WO_HeightfieldTerrain = 2,//MEZZ_BITMASK(2),//2,
170  WO_VectorFieldTerrain = 4,//MEZZ_BITMASK(3),//4,
171  WO_VoxelTerrain = 8,//MEZZ_BITMASK(4),//8,
172  WO_MarchingCubeTerrain = 16,//MEZZ_BITMASK(5),//16,
173  WO_UnknownTerrain = 32,//MEZZ_BITMASK(6),//32,
174  WO_TerrainLast = 32,//MEZZ_BITMASK(6),//32,
175 
176  // Debris Objects
177  WO_DebrisFirst = 64,//MEZZ_BITMASK(7),//64,
178  WO_DebrisRigid = 64,//MEZZ_BITMASK(7),//64,
179  WO_DebrisSoft = 128,//MEZZ_BITMASK(8),//128,
180  WO_DebrisUnknown = 256,//MEZZ_BITMASK(9),//256,
181  WO_DebrisLast = 256,//MEZZ_BITMASK(9),//256,
182 
183  // AreaEffect Objects
184  WO_AreaEffectFirst = 512,//MEZZ_BITMASK(10),//512,
185  WO_AreaEffectGravityField = 512,//MEZZ_BITMASK(10),//512,
186  WO_AreaEffectGravityWell = 1024,//MEZZ_BITMASK(11),//1024,
187  WO_AreaEffectFieldOfForce = 2048,//MEZZ_BITMASK(12),//2048,
188  WO_AreaEffectPlaceHolder1 = 4069,//MEZZ_BITMASK(13),//4096,
189  WO_AreaEffectPlaceHolder2 = 8192,//MEZZ_BITMASK(14),//8192,
190  WO_AreaEffectUnknown = 16384,//MEZZ_BITMASK(15),//16384,
191  WO_AreaEffectLast = 16384,//MEZZ_BITMASK(15),//16384,
192 
193  // Actor Objects
194  WO_ActorFirst = 32768,//MEZZ_BITMASK(16),//32768,
195  WO_ActorPlaceHolder1 = 32768,//MEZZ_BITMASK(16),//32768,
196  WO_ActorPlaceHolder2 = 65536,//MEZZ_BITMASK(17),//65536,
197  WO_ActorPlaceHolder3 = 131072,//MEZZ_BITMASK(18),//131072,
198  WO_ActorLast = 131072,//MEZZ_BITMASK(18),//131072,
199 
200  // Vehicle Objects
201  WO_VehicleFirst = 262144,//MEZZ_BITMASK(19),//262144,
202  WO_VehiclePlaceHolder1 = 262144,//MEZZ_BITMASK(19),//262144,
203  WO_VehiclePlaceHolder2 = 524288,//MEZZ_BITMASK(20),//524288,
204  WO_VehiclePlaceHolder3 = 1048576,//MEZZ_BITMASK(21),//1048576,
205  WO_VehiclePlaceHolder4 = 2097152,//MEZZ_BITMASK(22),//2097152,
206  WO_VehiclePlaceHolder5 = 4194304,//MEZZ_BITMASK(23),//4194304,
207  WO_VehicleLast = 4194304//MEZZ_BITMASK(23)//4194304
208  };
209 }//Mezzanine
210 
211 #endif