Computational Embodied Neuroscience Simulator  1.1
3D simulation library
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends
Public Member Functions | Protected Member Functions | Protected Attributes | Static Protected Attributes | Friends | List of all members
cens::CENSPhysics Class Reference

An interface to the bullet physics library. More...

#include <cens_physics.h>

Inheritance diagram for cens::CENSPhysics:
Inheritance graph
[legend]
Collaboration diagram for cens::CENSPhysics:
Collaboration graph
[legend]

Public Member Functions

 CENSPhysics ()
 
virtual ~CENSPhysics ()
 
virtual void initCENSPhysics ()
 
virtual void cens_physics_step ()
 
virtual void initObjects ()
 
virtual btDynamicsWorld * getDynamicsWorld ()
 
virtual btCollisionDispatcher * getDispatcher ()
 
virtual btRigidBody * localCreateRigidBody (float mass, const btTransform &startTransform, btCollisionShape *shape)
 
virtual btSoftBody * localCreateSoftBody (float mass, btCollisionShape *shape)
 
virtual void setCollisionFilter (CENSNonCollidingTable _non_colliding_table)
 
virtual CENSTouchSensoraddTouchSensor (btRigidBody *body)
 
btScalar getStep ()
 
btScalar getSubstep ()
 
Vector3f getGravity ()
 

Protected Member Functions

btTransform & getTransformFromBody (btRigidBody *body)
 
btTransform & getTransformFromBody (btSoftBody *body)
 

Protected Attributes

btSoftRigidDynamicsWorld * m_phDynamicsWorld
 
btAlignedObjectArray
< btCollisionShape * > 
m_phCollisionShapes
 
btAlignedObjectArray
< CENSTouchSensor * > 
m_phTouchSensors
 
btAlignedObjectArray
< btSoftSoftCollisionAlgorithm * > 
m_phSoftSoftCollisionAlgorithms
 
btAlignedObjectArray
< btSoftRididCollisionAlgorithm * > 
m_phSoftRigidCollisionAlgorithms
 
btSoftBodyWorldInfo m_phSoftBodyWorldInfo
 
btBroadphaseInterface * m_phBroadphase
 
btCollisionDispatcher * m_phDispatcher
 
btConstraintSolver * m_phSolver
 
btDefaultCollisionConfiguration * m_phCollisionConfiguration
 
btScalar m_phDefaultContactProcessingThreshold
 
Vector3f m_phGravity
 
double m_phStep
 
double m_phSubstep
 
CENSParameterManager m_phParameterManager
 

Static Protected Attributes

static CENSNonCollidingTable m_phNonCollidingTable
 

Friends

void collisionFilteringCallback (btBroadphasePair &collisionPair, btCollisionDispatcher &dispatcher, const btDispatcherInfo &dispatchInfo)
 
void internalTickCallback (btDynamicsWorld *world, btScalar timestep)
 

Detailed Description

An interface to the bullet physics library.

The 'localCreateRigidBody' and 'localCreateSoftBody' facilitations allow to easily build bodies starting from a mass value, a collision shape and a transform

Definition at line 203 of file cens_physics.h.

Constructor & Destructor Documentation

cens::CENSPhysics::CENSPhysics ( )

Definition at line 38 of file cens_physics.cpp.

References initCENSPhysics().

cens::CENSPhysics::~CENSPhysics ( )
virtual

Member Function Documentation

CENSTouchSensor * cens::CENSPhysics::addTouchSensor ( btRigidBody *  body)
virtual

Create a touchSensor and add to the list

Parameters
bodythe btRigidBody to become a sensor

Definition at line 281 of file cens_physics.cpp.

References m_phNonCollidingTable, and m_phTouchSensors.

Referenced by cens::CENSSerializedEngine::addTouchSensor().

void cens::CENSPhysics::cens_physics_step ( )
virtual

A single tep of the simulation. Forces are applied to bodies here

Definition at line 163 of file cens_physics.cpp.

References cens::CENSTouchSensor::body, m_phDynamicsWorld, m_phStep, m_phSubstep, and m_phTouchSensors.

Referenced by cens::CENSEngine::step().

virtual btCollisionDispatcher* cens::CENSPhysics::getDispatcher ( )
inlinevirtual
Returns
m_phDispatcher a pointer to the current btCollisionDispatcher class

Definition at line 238 of file cens_physics.h.

virtual btDynamicsWorld* cens::CENSPhysics::getDynamicsWorld ( )
inlinevirtual
Returns
m_phDynamicsWorld a pointer to the current btDynamicsWorld class

Definition at line 232 of file cens_physics.h.

Referenced by cens::CENSSerializedRobot::update().

Vector3f cens::CENSPhysics::getGravity ( )
inline

Definition at line 291 of file cens_physics.h.

Referenced by cens::CENSSerializedRobot::enableBodies().

btScalar cens::CENSPhysics::getStep ( )
inline

Definition at line 289 of file cens_physics.h.

btScalar cens::CENSPhysics::getSubstep ( )
inline

Definition at line 290 of file cens_physics.h.

btTransform & cens::CENSPhysics::getTransformFromBody ( btRigidBody *  body)
protected
Returns
a reference to the transform of the body

Definition at line 250 of file cens_physics.cpp.

Referenced by cens::CENSEngine::display(), and cens::CENSEngine::syncAttachedCamera().

btTransform & cens::CENSPhysics::getTransformFromBody ( btSoftBody *  body)
protected
Returns
a reference to the transform of the body

Definition at line 259 of file cens_physics.cpp.

void cens::CENSPhysics::initCENSPhysics ( )
virtual

Initialize the dynamic world

register some softbody collision algorithms on top of

use the default collision dispatcher.

the default constraint solver.

Definition at line 89 of file cens_physics.cpp.

References CENSParameterManager::addParameter(), initObjects(), CENSParameterManager::loadParameters(), m_phBroadphase, m_phCollisionConfiguration, m_phDispatcher, m_phDynamicsWorld, m_phGravity, m_phParameterManager, m_phSoftBodyWorldInfo, m_phSolver, m_phStep, m_phSubstep, and CENSParameterManager::saveParameters().

Referenced by CENSPhysics().

virtual void cens::CENSPhysics::initObjects ( )
inlinevirtual

All bodies and joints are created here. Connections of bodies to joints are stated also here

Reimplemented in cens::CENSEngine.

Definition at line 226 of file cens_physics.h.

Referenced by initCENSPhysics().

btRigidBody * cens::CENSPhysics::localCreateRigidBody ( float  mass,
const btTransform &  startTransform,
btCollisionShape *  shape 
)
virtual

Create a btRigidBody from a mass, a btTransform and a btCollisionShape

Parameters
massthe mass of the rigid body
startTransforma transform indicating initial translation and rotation from origin
shapethe btCollisionShape indicating the shape and dimansions of the body

Definition at line 178 of file cens_physics.cpp.

References m_phDefaultContactProcessingThreshold, and m_phDynamicsWorld.

Referenced by cens::CENSEngine::localCreateRigidBody().

btSoftBody * cens::CENSPhysics::localCreateSoftBody ( float  mass,
btCollisionShape *  shape 
)
virtual

Create a btSoftBody from a mass, a btTransform and a btCollisionShape

Parameters
massthe mass of the rigid body
shapethe btCollisionShape indicating the shape and dimansions of the body

Definition at line 220 of file cens_physics.cpp.

References m_phDynamicsWorld, and m_phSoftBodyWorldInfo.

Referenced by cens::CENSEngine::localCreateSoftBody().

void cens::CENSPhysics::setCollisionFilter ( CENSNonCollidingTable  _non_colliding_table)
virtual

set collision filter

Parameters
_non_colliding_tablea CENSNonCollidingTable defining some collision pairs

Definition at line 265 of file cens_physics.cpp.

References collisionFilteringCallback, m_phDispatcher, and m_phNonCollidingTable.

Referenced by cens::CENSSerializedRobot::init().

Friends And Related Function Documentation

void collisionFilteringCallback ( btBroadphasePair &  collisionPair,
btCollisionDispatcher &  dispatcher,
const btDispatcherInfo &  dispatchInfo 
)
friend

Decides if collisions are dispatched based on m_phNonCollidingTable

Decides if collisions are dispatched based on CENSPhysycs::m_phNonCollidingTable

Definition at line 293 of file cens_physics.cpp.

Referenced by setCollisionFilter().

void internalTickCallback ( btDynamicsWorld *  world,
btScalar  timestep 
)
friend

To be called on every substep for collision manifold reading

Definition at line 326 of file cens_physics.cpp.

Member Data Documentation

btBroadphaseInterface* cens::CENSPhysics::m_phBroadphase
protected

Definition at line 337 of file cens_physics.h.

Referenced by initCENSPhysics(), and ~CENSPhysics().

btDefaultCollisionConfiguration* cens::CENSPhysics::m_phCollisionConfiguration
protected

Definition at line 340 of file cens_physics.h.

Referenced by initCENSPhysics(), and ~CENSPhysics().

btAlignedObjectArray<btCollisionShape*> cens::CENSPhysics::m_phCollisionShapes
protected

Store of all collision shapes

Definition at line 325 of file cens_physics.h.

Referenced by ~CENSPhysics().

btScalar cens::CENSPhysics::m_phDefaultContactProcessingThreshold
protected

Definition at line 341 of file cens_physics.h.

Referenced by localCreateRigidBody().

btCollisionDispatcher* cens::CENSPhysics::m_phDispatcher
protected

Definition at line 338 of file cens_physics.h.

Referenced by initCENSPhysics(), setCollisionFilter(), and ~CENSPhysics().

btSoftRigidDynamicsWorld* cens::CENSPhysics::m_phDynamicsWorld
protected
Vector3f cens::CENSPhysics::m_phGravity
protected

Definition at line 342 of file cens_physics.h.

Referenced by initCENSPhysics(), and cens::CENSSerializedEngine::loadBulletFile().

CENSNonCollidingTable cens::CENSPhysics::m_phNonCollidingTable
staticprotected
CENSParameterManager cens::CENSPhysics::m_phParameterManager
protected

Parameter manager

Definition at line 347 of file cens_physics.h.

Referenced by initCENSPhysics().

btSoftBodyWorldInfo cens::CENSPhysics::m_phSoftBodyWorldInfo
protected
btAlignedObjectArray<btSoftRididCollisionAlgorithm*> cens::CENSPhysics::m_phSoftRigidCollisionAlgorithms
protected

Definition at line 335 of file cens_physics.h.

btAlignedObjectArray<btSoftSoftCollisionAlgorithm*> cens::CENSPhysics::m_phSoftSoftCollisionAlgorithms
protected

Definition at line 334 of file cens_physics.h.

btConstraintSolver* cens::CENSPhysics::m_phSolver
protected

Definition at line 339 of file cens_physics.h.

Referenced by initCENSPhysics(), and ~CENSPhysics().

double cens::CENSPhysics::m_phStep
protected

Definition at line 343 of file cens_physics.h.

Referenced by cens_physics_step(), and initCENSPhysics().

double cens::CENSPhysics::m_phSubstep
protected

Definition at line 344 of file cens_physics.h.

Referenced by cens_physics_step(), and initCENSPhysics().

btAlignedObjectArray<CENSTouchSensor *> cens::CENSPhysics::m_phTouchSensors
protected

Store of all collision sensors

Definition at line 328 of file cens_physics.h.

Referenced by addTouchSensor(), cens_physics_step(), and ~CENSPhysics().


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