Bullet Collision Detection & Physics Library
Classes | Public Types | Public Member Functions | Static Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
btSimulationIslandManagerMt Class Reference

SimulationIslandManagerMt – Multithread capable version of SimulationIslandManager Splits the world up into islands which can be solved in parallel. More...

#include <btSimulationIslandManagerMt.h>

Inheritance diagram for btSimulationIslandManagerMt:
Inheritance graph
[legend]
Collaboration diagram for btSimulationIslandManagerMt:
Collaboration graph
[legend]

Classes

struct  Island
 
struct  SolverParams
 

Public Types

typedef void(* IslandDispatchFunc) (btAlignedObjectArray< Island * > *islands, const SolverParams &solverParams)
 

Public Member Functions

 btSimulationIslandManagerMt ()
 
virtual ~btSimulationIslandManagerMt ()
 
virtual void buildAndProcessIslands (btDispatcher *dispatcher, btCollisionWorld *collisionWorld, btAlignedObjectArray< btTypedConstraint * > &constraints, const SolverParams &solverParams)
 
virtual void buildIslands (btDispatcher *dispatcher, btCollisionWorld *colWorld)
 
int getMinimumSolverBatchSize () const
 
void setMinimumSolverBatchSize (int sz)
 
IslandDispatchFunc getIslandDispatchFunction () const
 
void setIslandDispatchFunction (IslandDispatchFunc func)
 
- Public Member Functions inherited from btSimulationIslandManager
 btSimulationIslandManager ()
 
virtual ~btSimulationIslandManager ()
 
void initUnionFind (int n)
 
btUnionFindgetUnionFind ()
 
virtual void updateActivationState (btCollisionWorld *colWorld, btDispatcher *dispatcher)
 
virtual void storeIslandActivationState (btCollisionWorld *world)
 
void findUnions (btDispatcher *dispatcher, btCollisionWorld *colWorld)
 
void buildAndProcessIslands (btDispatcher *dispatcher, btCollisionWorld *collisionWorld, IslandCallback *callback)
 
void buildIslands (btDispatcher *dispatcher, btCollisionWorld *colWorld)
 
bool getSplitIslands ()
 
void setSplitIslands (bool doSplitIslands)
 

Static Public Member Functions

static void solveIsland (btConstraintSolver *solver, Island &island, const SolverParams &solverParams)
 
static void serialIslandDispatch (btAlignedObjectArray< Island * > *islandsPtr, const SolverParams &solverParams)
 
static void parallelIslandDispatch (btAlignedObjectArray< Island * > *islandsPtr, const SolverParams &solverParams)
 

Protected Member Functions

IslandgetIsland (int id)
 
virtual IslandallocateIsland (int id, int numBodies)
 
virtual void initIslandPools ()
 
virtual void addBodiesToIslands (btCollisionWorld *collisionWorld)
 
virtual void addManifoldsToIslands (btDispatcher *dispatcher)
 
virtual void addConstraintsToIslands (btAlignedObjectArray< btTypedConstraint * > &constraints)
 
virtual void mergeIslands ()
 

Protected Attributes

btAlignedObjectArray< Island * > m_allocatedIslands
 
btAlignedObjectArray< Island * > m_activeIslands
 
btAlignedObjectArray< Island * > m_freeIslands
 
btAlignedObjectArray< Island * > m_lookupIslandFromId
 
Islandm_batchIsland
 
int m_minimumSolverBatchSize
 
int m_batchIslandMinBodyCount
 
IslandDispatchFunc m_islandDispatch
 

Detailed Description

SimulationIslandManagerMt – Multithread capable version of SimulationIslandManager Splits the world up into islands which can be solved in parallel.

In order to solve islands in parallel, an IslandDispatch function must be provided which will dispatch calls to multiple threads. The amount of parallelism that can be achieved depends on the number of islands. If only a single island exists, then no parallelism is possible.

Definition at line 35 of file btSimulationIslandManagerMt.h.

Member Typedef Documentation

typedef void( * btSimulationIslandManagerMt::IslandDispatchFunc) (btAlignedObjectArray< Island * > *islands, const SolverParams &solverParams)

Definition at line 60 of file btSimulationIslandManagerMt.h.

Constructor & Destructor Documentation

btSimulationIslandManagerMt::btSimulationIslandManagerMt ( )

Definition at line 45 of file btSimulationIslandManagerMt.cpp.

btSimulationIslandManagerMt::~btSimulationIslandManagerMt ( )
virtual

Definition at line 54 of file btSimulationIslandManagerMt.cpp.

Member Function Documentation

void btSimulationIslandManagerMt::addBodiesToIslands ( btCollisionWorld collisionWorld)
protectedvirtual

Definition at line 376 of file btSimulationIslandManagerMt.cpp.

void btSimulationIslandManagerMt::addConstraintsToIslands ( btAlignedObjectArray< btTypedConstraint * > &  constraints)
protectedvirtual

Definition at line 466 of file btSimulationIslandManagerMt.cpp.

void btSimulationIslandManagerMt::addManifoldsToIslands ( btDispatcher dispatcher)
protectedvirtual

Definition at line 423 of file btSimulationIslandManagerMt.cpp.

btSimulationIslandManagerMt::Island * btSimulationIslandManagerMt::allocateIsland ( int  id,
int  numBodies 
)
protectedvirtual

Definition at line 204 of file btSimulationIslandManagerMt.cpp.

void btSimulationIslandManagerMt::buildAndProcessIslands ( btDispatcher dispatcher,
btCollisionWorld collisionWorld,
btAlignedObjectArray< btTypedConstraint * > &  constraints,
const SolverParams solverParams 
)
virtual

Definition at line 649 of file btSimulationIslandManagerMt.cpp.

void btSimulationIslandManagerMt::buildIslands ( btDispatcher dispatcher,
btCollisionWorld colWorld 
)
virtual

Definition at line 276 of file btSimulationIslandManagerMt.cpp.

btSimulationIslandManagerMt::Island * btSimulationIslandManagerMt::getIsland ( int  id)
protected

Definition at line 184 of file btSimulationIslandManagerMt.cpp.

IslandDispatchFunc btSimulationIslandManagerMt::getIslandDispatchFunction ( ) const
inline

Definition at line 101 of file btSimulationIslandManagerMt.h.

int btSimulationIslandManagerMt::getMinimumSolverBatchSize ( ) const
inline

Definition at line 93 of file btSimulationIslandManagerMt.h.

void btSimulationIslandManagerMt::initIslandPools ( )
protectedvirtual

Definition at line 139 of file btSimulationIslandManagerMt.cpp.

void btSimulationIslandManagerMt::mergeIslands ( )
protectedvirtual

Definition at line 486 of file btSimulationIslandManagerMt.cpp.

void btSimulationIslandManagerMt::parallelIslandDispatch ( btAlignedObjectArray< Island * > *  islandsPtr,
const SolverParams solverParams 
)
static

Definition at line 599 of file btSimulationIslandManagerMt.cpp.

void btSimulationIslandManagerMt::serialIslandDispatch ( btAlignedObjectArray< Island * > *  islandsPtr,
const SolverParams solverParams 
)
static

Definition at line 565 of file btSimulationIslandManagerMt.cpp.

void btSimulationIslandManagerMt::setIslandDispatchFunction ( IslandDispatchFunc  func)
inline

Definition at line 106 of file btSimulationIslandManagerMt.h.

void btSimulationIslandManagerMt::setMinimumSolverBatchSize ( int  sz)
inline

Definition at line 97 of file btSimulationIslandManagerMt.h.

void btSimulationIslandManagerMt::solveIsland ( btConstraintSolver solver,
Island island,
const SolverParams solverParams 
)
static

Definition at line 548 of file btSimulationIslandManagerMt.cpp.

Member Data Documentation

btAlignedObjectArray<Island*> btSimulationIslandManagerMt::m_activeIslands
protected

Definition at line 65 of file btSimulationIslandManagerMt.h.

btAlignedObjectArray<Island*> btSimulationIslandManagerMt::m_allocatedIslands
protected

Definition at line 64 of file btSimulationIslandManagerMt.h.

Island* btSimulationIslandManagerMt::m_batchIsland
protected

Definition at line 68 of file btSimulationIslandManagerMt.h.

int btSimulationIslandManagerMt::m_batchIslandMinBodyCount
protected

Definition at line 70 of file btSimulationIslandManagerMt.h.

btAlignedObjectArray<Island*> btSimulationIslandManagerMt::m_freeIslands
protected

Definition at line 66 of file btSimulationIslandManagerMt.h.

IslandDispatchFunc btSimulationIslandManagerMt::m_islandDispatch
protected

Definition at line 71 of file btSimulationIslandManagerMt.h.

btAlignedObjectArray<Island*> btSimulationIslandManagerMt::m_lookupIslandFromId
protected

Definition at line 67 of file btSimulationIslandManagerMt.h.

int btSimulationIslandManagerMt::m_minimumSolverBatchSize
protected

Definition at line 69 of file btSimulationIslandManagerMt.h.


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