MezzanineEngine 
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
physicsenumerations.h
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 _physicsenumerations_h
41 #define _physicsenumerations_h
42 ///////////////////////////////////////////////////////////////////////////////
43 //Any global enumerations shared between multiple classes in the Physics namespace is to be declared here.
44 ///////////////////////////////////////
45 
46 namespace Mezzanine
47 {
48  namespace Physics
49  {
50  /// @enum ActivationState
51  /// @brief This is used by physics proxies to monitor and set their physics activation.
53  {
54  AS_Active = 1,
55  AS_Island_Sleeping = 2,
56  AS_Wants_Deactivation = 3,
57  AS_DisableDeactivation = 4,
58  AS_DisableSimulation = 5
59  };
60 
61  /// @enum AnisotropicFrictionFlags
62  /// @brief This is used by physics proxies to help determine the behavior of it's anistropic friction behavior.
63  /// @details See the documentation on the PhysicsProxy class for more details.
65  {
66  AFF_AnisotropicFrictionDisabled = 0,
67  AFF_AnisotropicFriction = 1,
68  AFF_AnisotropicRollingFriction = 2
69  };
70 
71  /// @enum CollisionFilter
72  /// @brief These are the various filters that can be applied to all physics accelerated world objects to limit what they collide with.
73  /// @details You can create your own groups on top of the ones that exist here, but they have to be powers of 2, and not overlap with
74  /// any of the existing groups defined here. Simply pass in the Whole where appropriate.
76  {
77  // Standard base filters
78  CF_GenericFilter = 1,
79  CF_StaticFilter = 2,
80  CF_KinematicFilter = 4,
81  CF_DebrisFilter = 8,
82  CF_SensorFilter = 16,
83  CF_CharacterFilter = 32,
84  CF_AllFilter = -1,
85 
86  // Non-Standard Filters
87  CF_UserFilter1 = 64,
88  CF_UserFilter2 = 128,
89  CF_UserFilter3 = 256,
90  CF_UserFilter4 = 512
91  };
92 
93  /// @enum CollisionFlags
94  /// @brief This is used by physics proxies to help determine collision response behavior of a proxy.
96  {
97  CF_StaticObject = 1,
98  CF_KinematicObject = 2,
99  CF_NoContactResponse = 4,
100  CF_CustomMaterialCallback = 8,
101  CF_CharacterObject = 16,
102  CF_DisableVisualizeObject = 32,
103  CF_DisableSPUCollisionProcessing = 64
104  };
105 
106  /// @enum CollisionState
107  /// @brief Enum specifying the state change occuring in the collision.
109  {
110  Col_Begin,
111  Col_Contacts_Updated,
112  Col_End
113  };
114 
115  /// @enum CollisionType
116  /// @brief Enum specifying what kind of collision this class is storing.
118  {
119  Col_Actor_Actor, ///< Specifies a collision between two Actors.
120  Col_Actor_AreaEffect, ///< Specifies a collision between an Actor and an AreaRffect.
121  Col_Actor_Debris, ///< Specifies a collision between an Actor and a Debris.
122  Col_Actor_Terrain, ///< Specifies a collision between an Actor and some Terrain.
123  Col_AreaEffect_AreaEffect, ///< Specifies a collision between two AreaEffects.
124  Col_AreaEffect_Debris, ///< Specifies a collision between an AreaEffect and a Debris.
125  Col_AreaEffect_Terrain, ///< Specifies a collision between an AreaEffect and some Terrain.
126  Col_Debris_Debris, ///< Specifies a collision between two Debris.
127  Col_Debris_Terrain ///< Specifies a collision between a Debris and some Terrain.
128  };
129 
130  /// @enum DebugDrawMode
131  /// @brief This is a collection of flags designed to describe what to draw when the Debug Drawer is enabled.
132  /// @details Most of these options work, with the exception of text-based modes and contact point modes.
134  {
135  DDM_NoDebug = 0,
136  DDM_DrawWireframe = 1,
137  DDM_DrawAABB = 2,
138  DDM_DrawFeaturesText = 4,
139  DDM_DrawContactPoints = 8,
140  DDM_NoDeactivation = 16,
141  DDM_NoHelpText = 32,
142  DDM_DrawText = 64,
143  DDM_ProfileTimings = 128,
144  DDM_EnableSatComparison = 256,
145  DDM_DisableBulletLCP = 512,
146  DDM_EnableCCD = 1024,
147  DDM_DrawConstraints = 2048,
148  DDM_DrawConstraintLimits = 4096,
149  DDM_FastWireframe = 8192,
150  DDM_DrawNormals = 16384,
151 
152  DDM_All = -1
153  };
154 
155  /// @enum ProxyType
156  /// @brief This is used by the PhysicsProxy child classes to describe which proxy type they are.
157  enum ProxyType
158  {
159  PT_Rigid = 1,
160  PT_Soft = 2,
161  PT_Ghost = 3
162  };
163  }//physics
164 }//Mezzanine
165 
166 #endif