Image Component Library (ICL)
Public Types | Public Member Functions | Protected Member Functions | Private Member Functions | Private Attributes | Friends | List of all members
icl::physics::PhysicsWorld Class Reference

A physical world that handles physical objects. More...

#include <PhysicsWorld.h>

Inheritance diagram for icl::physics::PhysicsWorld:
icl::utils::Lockable icl::utils::Uncopyable icl::physics::PhysicsScene

Public Types

enum  BulletSolverType {
  SequentialImpulseConstraintSolver, MLCP_Dantzig, NNCG, Lemke,
  Default = SequentialImpulseConstraintSolver
}
 

Public Member Functions

 PhysicsWorld (BulletSolverType solver_type=Default)
 constructor with given config file name More...
 
 ~PhysicsWorld ()
 Destructor. More...
 
void addObject (PhysicsObject *obj)
 adds a physics object to the world (ownership is not passed) More...
 
void removeObject (PhysicsObject *obj)
 removes the given physics object from the world More...
 
void setGravity (const geom::Vec &gravity)
 sets the Gravity of the World More...
 
void setGravityEnabled (bool on, const geom::Vec *useThisGravityIfOn=0)
 enables/disables gravity More...
 
void splitImpulseEnabled (bool enable)
 enable splitImpulse More...
 
void step (float dtSeconds=-1, int maxSubSteps=10, float fixedTimeStep=1.f/120.f)
 applies physical simulation for the given time step More...
 
double getLastTimeDelta ()
 returns the last delta of time in seconds as a double value. More...
 
bool collideWithWorld (RigidObject *obj, bool ignoreJoints=true)
 check collision of an object with the world More...
 
void setGroupCollision (int group0, int group1, bool collides)
 enables/disables collision between the group0 and group1 More...
 
bool getGroupCollision (int group0, int group1)
 returns wether group0 and group1 collide More...
 
bool rayCast (const geom::ViewRay &ray, float rayLength, PhysicsObject *&obj, geom::Vec &normal, geom::Vec &hitPoint)
 Return true if the ray hit and sets the pointer to the first object that was hit as well as the hit normal and hit point. More...
 
void addConstraint (Constraint *constraint, bool disableCollisionWithLinkedBodies=false, bool passOwnerShip=false)
 adds a constraint to the world More...
 
void removeConstraint (Constraint *constraint)
 removes a cosntraint from the world More...
 
const btSoftBodyWorldInfo * getWorldInfo () const
 returns an internal world-info struct More...
 
btSoftBodyWorldInfo * getWorldInfo ()
 returns an internal world-info struct More...
 
- Public Member Functions inherited from icl::utils::Lockable
 Lockable (bool recursive=false)
 Default constructor. More...
 
 Lockable (const Lockable &l)
 copy constructor (does not copy the source mutex) More...
 
Lockable & operator= (const Lockable &l)
 assignment operator (does not copy the source mutex) More...
 
 ~Lockable ()
 Destructor. More...
 
void lock () const
 lock object More...
 
void unlock () const
 unlock object More...
 
Mutex & getMutex () const
 returns mutex of this object More...
 

Protected Member Functions

void removeContactPoints (PhysicsObject *obj)
 removes contactpoints (used when the collisionshape of an object has changed) More...
 
- Protected Member Functions inherited from icl::utils::Uncopyable
 Uncopyable ()
 Empty base constructor. More...
 

Private Member Functions

void setSolver (BulletSolverType type)
 

Private Attributes

Data * data
 internal data pointer More...
 

Friends

class PhysicsObject
 

Detailed Description

A physical world that handles physical objects.

Member Enumeration Documentation

◆ BulletSolverType

Enumerator
SequentialImpulseConstraintSolver 
MLCP_Dantzig 
NNCG 
Lemke 
Default 

Constructor & Destructor Documentation

◆ PhysicsWorld()

icl::physics::PhysicsWorld::PhysicsWorld ( BulletSolverType  solver_type = Default)

constructor with given config file name

◆ ~PhysicsWorld()

icl::physics::PhysicsWorld::~PhysicsWorld ( )

Destructor.

Member Function Documentation

◆ addConstraint()

void icl::physics::PhysicsWorld::addConstraint ( Constraint *  constraint,
bool  disableCollisionWithLinkedBodies = false,
bool  passOwnerShip = false 
)

adds a constraint to the world

◆ addObject()

void icl::physics::PhysicsWorld::addObject ( PhysicsObject *  obj)

adds a physics object to the world (ownership is not passed)

◆ collideWithWorld()

bool icl::physics::PhysicsWorld::collideWithWorld ( RigidObject *  obj,
bool  ignoreJoints = true 
)

check collision of an object with the world

◆ getGroupCollision()

bool icl::physics::PhysicsWorld::getGroupCollision ( int  group0,
int  group1 
)

returns wether group0 and group1 collide

◆ getLastTimeDelta()

double icl::physics::PhysicsWorld::getLastTimeDelta ( )

returns the last delta of time in seconds as a double value.

◆ getWorldInfo() [1/2]

const btSoftBodyWorldInfo* icl::physics::PhysicsWorld::getWorldInfo ( ) const

returns an internal world-info struct

◆ getWorldInfo() [2/2]

btSoftBodyWorldInfo* icl::physics::PhysicsWorld::getWorldInfo ( )

returns an internal world-info struct

◆ rayCast()

bool icl::physics::PhysicsWorld::rayCast ( const geom::ViewRay &  ray,
float  rayLength,
PhysicsObject *&  obj,
geom::Vec &  normal,
geom::Vec &  hitPoint 
)

Return true if the ray hit and sets the pointer to the first object that was hit as well as the hit normal and hit point.

◆ removeConstraint()

void icl::physics::PhysicsWorld::removeConstraint ( Constraint *  constraint)

removes a cosntraint from the world

◆ removeContactPoints()

void icl::physics::PhysicsWorld::removeContactPoints ( PhysicsObject *  obj)
protected

removes contactpoints (used when the collisionshape of an object has changed)

◆ removeObject()

void icl::physics::PhysicsWorld::removeObject ( PhysicsObject *  obj)

removes the given physics object from the world

◆ setGravity()

void icl::physics::PhysicsWorld::setGravity ( const geom::Vec &  gravity)

sets the Gravity of the World

◆ setGravityEnabled()

void icl::physics::PhysicsWorld::setGravityEnabled ( bool  on,
const geom::Vec *  useThisGravityIfOn = 0 
)

enables/disables gravity

When enabling gravity (on = true), either the given gravity value can be used or if useThisGravityIfOn is null, the default gravity (0,0, -9810) is used

◆ setGroupCollision()

void icl::physics::PhysicsWorld::setGroupCollision ( int  group0,
int  group1,
bool  collides 
)

enables/disables collision between the group0 and group1

◆ setSolver()

void icl::physics::PhysicsWorld::setSolver ( BulletSolverType  type)
private

◆ splitImpulseEnabled()

void icl::physics::PhysicsWorld::splitImpulseEnabled ( bool  enable)

enable splitImpulse

◆ step()

void icl::physics::PhysicsWorld::step ( float  dtSeconds = -1,
int  maxSubSteps = 10,
float  fixedTimeStep = 1.f/120.f 
)

applies physical simulation for the given time step

If the given time interval tdSeconds is < 0, the actual time interval since the last call of this method is used

Friends And Related Function Documentation

◆ PhysicsObject

friend class PhysicsObject
friend

Member Data Documentation

◆ data

Data* icl::physics::PhysicsWorld::data
private

internal data pointer


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