Game Development Reference
In-Depth Information
typedef std::map<ActorId, btRigidBody*> ActorIDToBulletRigidBodyMap;
ActorIDToBulletRigidBodyMap m_actorIdToRigidBody;
btRigidBody * FindBulletRigidBody( ActorId id ) const;
// also keep a map to get the actor id from the btRigidBody*
typedef std::map<btRigidBody const *, ActorId>BulletRigidBodyToActorIDMap;
BulletRigidBodyToActorIDMap m_rigidBodyToActorId;
ActorId FindActorID( btRigidBody const * ) const;
// Data used to store which collision pair (bodies that are touching) need
// Collision events sent. When a new pair of touching bodies are
// detected, they are added to m_previousTickCollisionPairs and an event
// is sent. When the pair is no longer detected, they are removed
// and another event is sent.
typedef std::pair< btRigidBody const *, btRigidBody const * > CollisionPair;
typedef std::set< CollisionPair > CollisionPairs;
CollisionPairs m_previousTickCollisionPairs;
// helpers for sending events relating to collision pairs
void SendCollisionPairAddEvent( btPersistentManifold const * manifold,
btRigidBody const * body0, btRigidBody const * body1 );
void SendCollisionPairRemoveEvent( btRigidBody const * body0,
btRigidBody const * body1 );
// common functionality used by VAddSphere, VAddBox, etc
void AddShape(StrongActorPtr pGameActor, btCollisionShape* shape,
float mass, const std::string& physicsMaterial);
// helper for cleaning up objects
void RemoveCollisionObject( btCollisionObject * removeMe );
// callback from bullet for each physics time step. set in VInitialize
static void BulletInternalTickCallback(
btDynamicsWorld * const world, btScalar const timeStep );
public:
BulletPhysics() { };
virtual ~BulletPhysics();
// Initialization and Maintenance of the Physics World
virtual bool VInitialize() override;
virtual void VSyncVisibleScene() override;
virtual void VOnUpdate( float deltaSeconds ) override;
// Initialization of Physics Objects
virtual void VAddSphere(float radius, WeakActorPtr pGameActor,
Search WWH ::




Custom Search