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...
 
Lockableoperator= (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...
 
MutexgetMutex () 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: