Spinning Topp Logo BlackTopp Studios
inc
enumerations.h
Go to the documentation of this file.
1 // © Copyright 2010 - 2016 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 These values represent the kind of attenuation applied to the field strength over a distance.
53  /// @details None is the default, where the force is constant in all area's of the field. @n
54  /// Linear is where the force applied drops by the attenuation value times the distance (strength - (attenuation amount * distance to AE center)). @n
55  /// Quadratic is where the force applied drops by the attenuation value times the distance squared (strength - (attenuation amount * distance to AE center * distance to AE center)).
57  {
58  Att_None, ///< No Attentuation, Equal strength through.
59  Att_Linear, ///< Linear attentuation, Strength weaker farther from center.
60  Att_Quadratic ///< Quadratic/Exponential Attentuation, similar to real gravity, it tapers of more the further from the center you get.
61  };
62 
63  /// @brief Simple enum for communicating the orientation the UI and Camera have relative to the world it is rendering.
64  /// @details This enum is used by the UI and graphics sub-systems for when a change in orientation is detected. Under normal circumstances
65  /// this kind of thing should only occur in mobile devices such as SmartPhones and Tablets. However this can be forced on other devices/platforms.
67  {
68  OM_Degree_0 = 0,
69  OM_Degree_90 = 1,
70  OM_Degree_180 = 2,
71  OM_Degree_270 = 3,
72 
73  OM_Portrait = OM_Degree_0,
74  OM_LandscapeRight = OM_Degree_90,
75  OM_LandscapeLeft = OM_Degree_270
76  };
77 
78  /// @brief Used by the world class to describe the extent of pausing a world.
80  {
81  PL_Unpaused = 0,
82 
83  PL_PausePhysics = ( 1u << 0 ),
84  PL_PauseParticles = ( 1u << 1 ),
85  PL_PauseAnimations = ( 1u << 2 ),
86 
87  PL_PauseAll = PL_PausePhysics | PL_PauseParticles | PL_PauseAnimations
88  };
89 
90  /// @brief Used by all World proxies to describe what their derived types are.
91  enum ProxyType
92  {
93  PT_Audio_First = 1,//1
94  PT_Audio_Listener = 1,//1
95  PT_Audio_SoundProxy = 2,//2
96  PT_Audio_Last = 2,//2
97 
98  PT_Graphics_First = 4,//3
99  PT_Graphics_BillboardSetProxy = 4,//3
100  PT_Graphics_CameraProxy = 8,//4
101  PT_Graphics_EntityProxy = 16,//5
102  PT_Graphics_LightProxy = 32,//6
103  PT_Graphics_ParticleSystemProxy = 64,//7
104  PT_Graphics_Last = 64,//7
105 
106  PT_Physics_First = 128,//8
107  PT_Physics_GhostProxy = 128,//8
108  PT_Physics_RigidProxy = 256,//9
109  PT_Physics_SoftProxy = 512,//10
110  PT_Physics_Last = 512,//10
111 
112  PT_Audio_All_Proxies = ( PT_Audio_Listener | PT_Audio_SoundProxy ),
113  PT_Graphics_All_Proxies = ( PT_Graphics_BillboardSetProxy | PT_Graphics_CameraProxy |PT_Graphics_EntityProxy |PT_Graphics_LightProxy |PT_Graphics_ParticleSystemProxy ),
114  PT_Physics_All_Proxies = ( PT_Physics_GhostProxy | PT_Physics_RigidProxy | PT_Physics_SoftProxy )
115  };
116 
117  /// @brief Used to identify different Axis in a 3d coordinate system.
118  /// @note These are compatible with the linear Axis on many constraints, but not the rotational axis.
120  {
121  Axis_Invalid = -1, ///< Not an axis, Don't pass this into functions or operator[] functions, it is intended as an error value.
122  Axis_X = 0, ///< X axis
123  Axis_Min = Axis_X, ///< For mathematical shortcuts this can be used as the lower limit for valid axis
124  Axis_Y = 1, ///< Y axis
125  Axis_Z = 2, ///< Z axis
126  Axis_Max = Axis_Y ///< For mathematical shortcuts this can be used as the upper limit
127  };
128 
129  /// @brief Used by Track classes to define the type of curves the track has.
131  {
132  TT_Simple = 1,
133  TT_Spline = 2,
134  TT_Bezier = 3
135  };
136 
137  /// @brief Used to define what frame of reference is to be used when positioning or rotating objects.
139  {
140  TS_Local = 0, ///< Local space, aka the object in questions world position is used as origin.
141  TS_Parent = 1, ///< Mostly reserved for rotations, means a rotation to occur around the parent instead of self.
142  TS_World = 2 ///< World space
143  };
144 
145  /// @brief Used by various classes to help identify what class an object is.
146  /// @details This enum can be used to express any object which could be considered "insertable" into the game world.
148  {
149  // Terrain Objects
150  WO_TerrainFirst = ( 1u << 0 ),//1,
151  WO_MeshTerrain = ( 1u << 0 ),//1,
152  WO_HeightfieldTerrain = ( 1u << 1 ),//2,
153  WO_VectorFieldTerrain = ( 1u << 2 ),//4,
154  WO_VoxelTerrain = ( 1u << 3 ),//8,
155  WO_MarchingCubeTerrain = ( 1u << 4 ),//16,
156  WO_UnknownTerrain = ( 1u << 5 ),//32,
157  WO_TerrainLast = ( 1u << 5 ),//32,
158 
159  // Debris Objects
160  WO_DebrisFirst = ( 1u << 6 ),//64,
161  WO_DebrisRigid = ( 1u << 6 ),//64,
162  WO_DebrisSoft = ( 1u << 7 ),//128,
163  WO_DebrisUnknown = ( 1u << 8 ),//256,
164  WO_DebrisLast = ( 1u << 8 ),//256,
165 
166  // AreaEffect Objects
167  WO_AreaEffectFirst = ( 1u << 9 ),//512,
168  WO_AreaEffectGravityField = ( 1u << 9 ),//512,
169  WO_AreaEffectGravityWell = ( 1u << 10 ),//1024,
170  WO_AreaEffectFieldOfForce = ( 1u << 11 ),//2048,
171  WO_AreaEffectPlaceHolder1 = ( 1u << 12 ),//4096,
172  WO_AreaEffectPlaceHolder2 = ( 1u << 13 ),//8192,
173  WO_AreaEffectUnknown = ( 1u << 14 ),//16384,
174  WO_AreaEffectLast = ( 1u << 14 ),//16384,
175 
176  // Actor Objects
177  WO_ActorFirst = ( 1u << 15 ),//32768,
178  WO_ActorPlaceHolder1 = ( 1u << 15 ),//32768,
179  WO_ActorPlaceHolder2 = ( 1u << 16 ),//65536,
180  WO_ActorPlaceHolder3 = ( 1u << 17 ),//131072,
181  WO_ActorLast = ( 1u << 17 ),//131072,
182 
183  // Vehicle Objects
184  WO_VehicleFirst = ( 1u << 18 ),//262144,
185  WO_VehiclePlaceHolder1 = ( 1u << 18 ),//262144,
186  WO_VehiclePlaceHolder2 = ( 1u << 19 ),//524288,
187  WO_VehiclePlaceHolder3 = ( 1u << 20 ),//1048576,
188  WO_VehiclePlaceHolder4 = ( 1u << 21 ),//2097152,
189  WO_VehiclePlaceHolder5 = ( 1u << 22 ),//4194304,
190  WO_VehicleLast = ( 1u << 22 ) //4194304
191  };
192 }//Mezzanine
193 
194 #endif
World space.
Definition: enumerations.h:142
Quadratic/Exponential Attentuation, similar to real gravity, it tapers of more the further from the c...
Definition: enumerations.h:60
StandardAxis
Used to identify different Axis in a 3d coordinate system.
Definition: enumerations.h:119
For mathematical shortcuts this can be used as the upper limit.
Definition: enumerations.h:126
Not an axis, Don't pass this into functions or operator[] functions, it is intended as an error value...
Definition: enumerations.h:121
No Attentuation, Equal strength through.
Definition: enumerations.h:58
TrackType
Used by Track classes to define the type of curves the track has.
Definition: enumerations.h:130
All convience/utility macros for the Mezzanine are to be placed here.
Local space, aka the object in questions world position is used as origin.
Definition: enumerations.h:140
Linear attentuation, Strength weaker farther from center.
Definition: enumerations.h:59
ProxyType
Used by all World proxies to describe what their derived types are.
Definition: enumerations.h:91
PauseLevel
Used by the world class to describe the extent of pausing a world.
Definition: enumerations.h:79
Mostly reserved for rotations, means a rotation to occur around the parent instead of self...
Definition: enumerations.h:141
WorldObjectType
Used by various classes to help identify what class an object is.
Definition: enumerations.h:147
The bulk of the engine components go in this namspace.
Definition: actor.cpp:56
OrientationMode
Simple enum for communicating the orientation the UI and Camera have relative to the world it is rend...
Definition: enumerations.h:66
TransformSpace
Used to define what frame of reference is to be used when positioning or rotating objects...
Definition: enumerations.h:138
For mathematical shortcuts this can be used as the lower limit for valid axis.
Definition: enumerations.h:123
AttenuationStyle
These values represent the kind of attenuation applied to the field strength over a distance...
Definition: enumerations.h:56