Terminus
Public Types | Public Member Functions | Protected Member Functions | Static Protected Member Functions | Protected Attributes | List of all members
terminus::BulletWorld Class Reference

A Wrapper class for a btDiscreteDynamicsWorld. More...

#include <bulletworld.h>

Public Types

enum  CollisionTypes { COLLISIONTYPE_NOTHING = 0, COLLISIONTYPE_WAGON = 1 << 0, COLLISIONTYPE_PROJECTILE = 1 << 1, COLLISIONTYPE_TERRAIN = 1 << 2 }
 Bitfield values that describe the groups of objects that can collide with each other. More...
 

Public Member Functions

 BulletWorld ()
 
 ~BulletWorld ()
 
 BulletWorld (const BulletWorld &other)=delete
 
BulletWorldoperator= (const BulletWorld &other)=delete
 
void addRigidBody (btRigidBody *rigidBody)
 Wraps btDiscreteDynamicsWorld::addRigidBody() More...
 
void addRigidBody (btRigidBody *rigidBody, short group, short mask)
 Wraps btDiscreteDynamicsWorld::addRigidBody() More...
 
void removeRigidBody (btRigidBody *rigidBody)
 Wraps btDiscreteDynamicsWorld::removeRigidBody() More...
 
int stepSimulation (btScalar timeStep, int maxSubSteps=1, btScalar fixedTimeStep=btScalar(1.)/btScalar(60.))
 Wraps btDiscreteDynamicsWorld::stepSimulation() More...
 
void addCollisionMapping (const btCollisionObject *collisionObject, AbstractPhysicsObject *graphicsObject)
 Add mapping from btCollisionObject to AbstractPhysicsObject to m_collisionMap. More...
 
void removeCollisionMapping (const btCollisionObject *collisionObject)
 Remove mapping from m_collisionMap. More...
 
AbstractPhysicsObjectgetPhysicsObjectForCollisionObject (const btCollisionObject *collisionObject) const
 

Protected Member Functions

void btTickCallback (btDynamicsWorld *world, btScalar timeStep)
 A Callback that is called on every simulation tick. More...
 

Static Protected Member Functions

static void btStaticTickCallback (btDynamicsWorld *world, btScalar timeStep)
 Static wrapper for BulletWorld::btTickCallback() More...
 

Protected Attributes

btBroadphaseInterface * m_bulletBroadphase
 
btDefaultCollisionConfiguration * m_bulletCollisionConfig
 
btCollisionDispatcher * m_bulletDispatcher
 
btSequentialImpulseConstraintSolver * m_bulletSolver
 
btDiscreteDynamicsWorld * m_bulletWorld
 
std::unordered_map< const btCollisionObject *, AbstractPhysicsObject * > m_collisionMap
 This map is used to get the AbstractPhysicsObject belonging to a btCollisionObject. More...
 

Detailed Description

A Wrapper class for a btDiscreteDynamicsWorld.

Additionally contains helper functions and a map from btCollisionObject to AbstractPhysicsObject

Member Enumeration Documentation

Bitfield values that describe the groups of objects that can collide with each other.

See also
AbstractPhysicsObject::myCollisionType() and AbstractPhysicsObject::possibleCollisionTypes()
Enumerator
COLLISIONTYPE_NOTHING 
COLLISIONTYPE_WAGON 
COLLISIONTYPE_PROJECTILE 
COLLISIONTYPE_TERRAIN 

Constructor & Destructor Documentation

terminus::BulletWorld::BulletWorld ( )
terminus::BulletWorld::~BulletWorld ( )
terminus::BulletWorld::BulletWorld ( const BulletWorld other)
delete

Member Function Documentation

void terminus::BulletWorld::addCollisionMapping ( const btCollisionObject *  collisionObject,
AbstractPhysicsObject graphicsObject 
)

Add mapping from btCollisionObject to AbstractPhysicsObject to m_collisionMap.

Parameters
collisionObjectA pointer to a btCollisionObject (referenced in btRigidBody of AbstractPhysicsObject)
graphicsObjectA pointer to the corresponding AbstractPhysicsObject
void terminus::BulletWorld::addRigidBody ( btRigidBody *  rigidBody)

Wraps btDiscreteDynamicsWorld::addRigidBody()

Note that rigid bodies added via this method will collide with any other object in the scene.

void terminus::BulletWorld::addRigidBody ( btRigidBody *  rigidBody,
short  group,
short  mask 
)

Wraps btDiscreteDynamicsWorld::addRigidBody()

Rigid bodies added via this method have a collision group and will only collide with objects that match the given collision mask.

See also
AbstractPhysicsObject::myCollisionType() and AbstractPhysicsObject::possibleCollisionTypes()
void terminus::BulletWorld::btStaticTickCallback ( btDynamicsWorld *  world,
btScalar  timeStep 
)
staticprotected

Static wrapper for BulletWorld::btTickCallback()

Since bullet can only store plain C function pointers, this static method will be called on every tick (substep). A bullet dynamics world has a user-definable void* storage that we can use to determine the BulletWorld instance which should receive the call.

See also
btTickCallback()
void terminus::BulletWorld::btTickCallback ( btDynamicsWorld *  world,
btScalar  timeStep 
)
protected

A Callback that is called on every simulation tick.

This method gets called on every simulation tick (substep). At this point, we can check for colliding objects and dispatch collision events.

AbstractPhysicsObject * terminus::BulletWorld::getPhysicsObjectForCollisionObject ( const btCollisionObject *  collisionObject) const
BulletWorld& terminus::BulletWorld::operator= ( const BulletWorld other)
delete
void terminus::BulletWorld::removeCollisionMapping ( const btCollisionObject *  collisionObject)

Remove mapping from m_collisionMap.

Parameters
collisionObjectA pointer to a btCollisionObject
void terminus::BulletWorld::removeRigidBody ( btRigidBody *  rigidBody)

Wraps btDiscreteDynamicsWorld::removeRigidBody()

int terminus::BulletWorld::stepSimulation ( btScalar  timeStep,
int  maxSubSteps = 1,
btScalar  fixedTimeStep = btScalar(1.)/btScalar(60.) 
)

Wraps btDiscreteDynamicsWorld::stepSimulation()

Member Data Documentation

btBroadphaseInterface* terminus::BulletWorld::m_bulletBroadphase
protected
btDefaultCollisionConfiguration* terminus::BulletWorld::m_bulletCollisionConfig
protected
btCollisionDispatcher* terminus::BulletWorld::m_bulletDispatcher
protected
btSequentialImpulseConstraintSolver* terminus::BulletWorld::m_bulletSolver
protected
btDiscreteDynamicsWorld* terminus::BulletWorld::m_bulletWorld
protected
std::unordered_map<const btCollisionObject*, AbstractPhysicsObject*> terminus::BulletWorld::m_collisionMap
protected

This map is used to get the AbstractPhysicsObject belonging to a btCollisionObject.

See also
btTickCallback

The documentation for this class was generated from the following files: