#pragma once
class btCollisionShape;
class btDynamicsWorld;
class btRigidBody;
class btBroadphaseInterface;
class btCollisionShape;
class btCollisionDispatcher;
class btConstraintSolver;
class btDefaultCollisionConfiguration;
///collisions between two btSoftBody's
class btSoftSoftCollisionAlgorithm;
///collisions between a btSoftBody and a btRigidBody
class btSoftRididCollisionAlgorithm;
#define SCALING 1.
class PhysicsImpl
{
protected:
///this is the most important class
btDynamicsWorld* m_pDynamicsWorld;
btAlignedObjectArray<btCollisionShape*> m_collisionShapes;
btBroadphaseInterface* m_pBroadphase;
btCollisionDispatcher* m_pDispatcher;
btConstraintSolver* m_pSolver;
btDefaultCollisionConfiguration* m_pCollisionConfiguration;
btCollisionShape* m_pGroundShape;
btClock m_Clock;
btSoftBodyWorldInfo m_softBodyWorldInfo;
btAlignedObjectArray<btSoftSoftCollisionAlgorithm*> m_SoftSoftCollisionAlgorithms;
btAlignedObjectArray<btSoftRididCollisionAlgorithm*> m_SoftRigidCollisionAlgorithms;
public:
PhysicsImpl(void);
~PhysicsImpl(void);
void InitPhysics(void);
void ExitPhysics(void);
void clientMoveAndDisplay(void);
void displayCallback(void);
void DynamicsWorldCreate(void);
float getDeltaTimeMicroseconds();
void OnPhysicsLoop(void);
btRigidBody* LocalCreateRigidBody(float mass, const btTransform& startTransform,btCollisionShape* shape);
};