13
13
3. This notice may not be removed or altered from any source distribution.
16
#ifndef CCDPHYSICSENVIRONMENT
17
#define CCDPHYSICSENVIRONMENT
16
/** \file CcdPhysicsEnvironment.h
18
* See also \ref bulletdoc
21
#ifndef __CCDPHYSICSENVIRONMENT_H__
22
#define __CCDPHYSICSENVIRONMENT_H__
19
24
#include "PHY_IPhysicsEnvironment.h"
47
52
class PHY_IVehicle;
48
53
class CcdOverlapFilterCallBack;
50
/// CcdPhysicsEnvironment is an experimental mainloop for physics simulation using optional continuous collision detection.
51
/// Physics Environment takes care of stepping the simulation and is a container for physics entities.
52
/// It stores rigidbodies,constraints, materials etc.
53
/// A derived class may be able to 'construct' entities by loading and/or converting
55
/** CcdPhysicsEnvironment is an experimental mainloop for physics simulation using optional continuous collision detection.
56
* Physics Environment takes care of stepping the simulation and is a container for physics entities.
57
* It stores rigidbodies,constraints, materials etc.
58
* A derived class may be able to 'construct' entities by loading and/or converting
54
60
class CcdPhysicsEnvironment : public PHY_IPhysicsEnvironment
56
62
friend class CcdOverlapFilterCallBack;
60
66
btIDebugDraw* m_debugDrawer;
62
68
class btDefaultCollisionConfiguration* m_collisionConfiguration;
63
class btBroadphaseInterface* m_broadphase; // broadphase for dynamic world
69
class btBroadphaseInterface* m_broadphase; // broadphase for dynamic world
64
70
// for culling only
65
71
btOverlappingPairCache* m_cullingCache;
66
72
struct btDbvtBroadphase* m_cullingTree; // broadphase for culling
100
106
m_numTimeSubSteps = numTimeSubSteps;
102
108
virtual void setDeactivationTime(float dTime);
103
virtual void setDeactivationLinearTreshold(float linTresh) ;
104
virtual void setDeactivationAngularTreshold(float angTresh) ;
105
virtual void setContactBreakingTreshold(float contactBreakingTreshold) ;
109
virtual void setDeactivationLinearTreshold(float linTresh);
110
virtual void setDeactivationAngularTreshold(float angTresh);
111
virtual void setContactBreakingTreshold(float contactBreakingTreshold);
106
112
virtual void setCcdMode(int ccdMode);
107
113
virtual void setSolverType(int solverType);
108
114
virtual void setSolverSorConstant(float sor);
109
115
virtual void setSolverTau(float tau);
110
116
virtual void setSolverDamping(float damping);
111
117
virtual void setLinearAirDamping(float damping);
112
virtual void setUseEpa(bool epa) ;
118
virtual void setUseEpa(bool epa);
114
120
virtual void beginFrame();
115
virtual void endFrame() {};
121
virtual void endFrame() {}
116
122
/// Perform an integration step of duration 'timeStep'.
117
123
virtual bool proceedDeltaTime(double curTime,float timeStep,float interval);
119
125
virtual void debugDrawWorld();
120
126
// virtual bool proceedDeltaTimeOneStep(float timeStep);
122
virtual void setFixedTimeStep(bool useFixedTimeStep,float fixedTimeStep){};
128
virtual void setFixedTimeStep(bool useFixedTimeStep,float fixedTimeStep)
130
//based on DEFAULT_PHYSICS_TIC_RATE of 60 hertz
131
setNumTimeSubSteps((int)(fixedTimeStep / 60.f));
123
133
//returns 0.f if no fixed timestep is used
125
virtual float getFixedTimeStep(){ return 0.f;};
135
virtual float getFixedTimeStep() { return 0.f; }
127
137
virtual void setDebugMode(int debugMode);
155
165
virtual float getConstraintParam(int constraintId,int param);
157
virtual void removeConstraint(int constraintid);
167
virtual void removeConstraint(int constraintid);
159
169
virtual float getAppliedImpulse(int constraintid);