#ifndef CHARACTER_CONTROLLER_H #define CHARACTER_CONTROLLER_H #include "LinearMath/btVector3.h" class btCollisionShape; class btRigidBody; class btDynamicsWorld; class CharacterController { protected: btScalar m_halfHeight; btCollisionShape* m_shape; btRigidBody* m_rigidBody; btVector3 m_raySource[2]; btVector3 m_rayTarget[2]; btScalar m_rayLambda[2]; btVector3 m_rayNormal[2]; btScalar m_turnAngle; btScalar m_maxLinearVelocity; btScalar m_walkVelocity; btScalar m_turnVelocity; public: CharacterController (); ~CharacterController (); void setup (btDynamicsWorld* dynamicsWorld, btScalar height = 2.0, btScalar width = 0.25); void destroy (btDynamicsWorld* dynamicsWorld); btRigidBody* getRigidBody (); void preStep (btDynamicsWorld* dynamicsWorld); void playerStep (btScalar dt, int forward, int backward, int left, int right); bool canJump () const; void jump (); bool onGround () const; }; #endif