fixed spacing in the headers to get rid of some warnings and some other
[blender.git] / source / gameengine / Physics / BlOde / OdePhysicsEnvironment.h
1 /**
2  * $Id$
3  *
4  * ***** BEGIN GPL/BL DUAL LICENSE BLOCK *****
5  *
6  * The contents of this file may be used under the terms of either the GNU
7  * General Public License Version 2 or later (the "GPL", see
8  * http://www.gnu.org/licenses/gpl.html ), or the Blender License 1.0 or
9  * later (the "BL", see http://www.blender.org/BL/ ) which has to be
10  * bought from the Blender Foundation to become active, in which case the
11  * above mentioned GPL option does not apply.
12  *
13  * The Original Code is Copyright (C) 2002 by NaN Holding BV.
14  * All rights reserved.
15  *
16  * The Original Code is: all of this file.
17  *
18  * Contributor(s): none yet.
19  *
20  * ***** END GPL/BL DUAL LICENSE BLOCK *****
21  */
22 #ifndef _ODEPHYSICSENVIRONMENT
23 #define _ODEPHYSICSENVIRONMENT
24
25
26 #include "PHY_IPhysicsEnvironment.h"
27
28
29 /**
30 *       Physics Environment takes care of stepping the simulation and is a container for physics entities (rigidbodies,constraints, materials etc.)
31 *       A derived class may be able to 'construct' entities by loading and/or converting
32 */
33 class ODEPhysicsEnvironment : public PHY_IPhysicsEnvironment
34 {
35
36 public:
37         ODEPhysicsEnvironment();
38         virtual         ~ODEPhysicsEnvironment();
39 // Perform an integration step of duration 'timeStep'.
40         virtual void            proceed(double  timeStep);
41         virtual void            setGravity(float x,float y,float z);
42         virtual int                     createConstraint(class PHY_IPhysicsController* ctrl,class PHY_IPhysicsController* ctrl2,PHY_ConstraintType type,
43                         float pivotX,float pivotY,float pivotZ,
44                         float axisX,float axisY,float axisZ);
45
46         virtual void            removeConstraint(int constraintid);
47         virtual PHY_IPhysicsController* rayTest(void* ignoreClient,float fromX,float fromY,float fromZ, float toX,float toY,float toZ, 
48                                                                         float& hitX,float& hitY,float& hitZ,float& normalX,float& normalY,float& normalZ);
49
50         struct dxWorld* GetOdeWorld() { return m_OdeWorld;      };
51         struct  dxSpace* GetOdeSpace() { return m_OdeSpace;};
52
53 private:
54
55
56         // ODE physics response
57         struct  dxWorld*                                m_OdeWorld;
58         // ODE collision detection
59         struct  dxSpace*                                m_OdeSpace;
60         void    ClearOdeContactGroup();
61         struct dxJointGroup*            m_OdeContactGroup;
62         struct dxJointGroup*            m_JointGroup;
63
64         static void OdeNearCallback(void *data, struct dxGeom* o1, struct dxGeom* o2);
65         int     GetNumOdeContacts();
66
67 };
68
69 #endif //_ODEPHYSICSENVIRONMENT
70