Blender  V3.3
Classes | Public Types | Public Member Functions | Static Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
btSimulationIslandManagerMt Class Reference

#include <btSimulationIslandManagerMt.h>

Inheritance diagram for btSimulationIslandManagerMt:
btSimulationIslandManager

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)
 
void processIslands (btDispatcher *dispatcher, btCollisionWorld *collisionWorld, IslandCallback *callback)
 
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

◆ IslandDispatchFunc

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

Definition at line 60 of file btSimulationIslandManagerMt.h.

Constructor & Destructor Documentation

◆ btSimulationIslandManagerMt()

btSimulationIslandManagerMt::btSimulationIslandManagerMt ( )

◆ ~btSimulationIslandManagerMt()

btSimulationIslandManagerMt::~btSimulationIslandManagerMt ( )
virtual

Member Function Documentation

◆ addBodiesToIslands()

void btSimulationIslandManagerMt::addBodiesToIslands ( btCollisionWorld collisionWorld)
protectedvirtual

◆ addConstraintsToIslands()

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

◆ addManifoldsToIslands()

void btSimulationIslandManagerMt::addManifoldsToIslands ( btDispatcher dispatcher)
protectedvirtual

◆ allocateIsland()

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

◆ buildAndProcessIslands()

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

◆ buildIslands()

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

◆ getIsland()

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

◆ getIslandDispatchFunction()

IslandDispatchFunc btSimulationIslandManagerMt::getIslandDispatchFunction ( ) const
inline

Definition at line 101 of file btSimulationIslandManagerMt.h.

References m_islandDispatch.

◆ getMinimumSolverBatchSize()

int btSimulationIslandManagerMt::getMinimumSolverBatchSize ( ) const
inline

Definition at line 93 of file btSimulationIslandManagerMt.h.

References m_minimumSolverBatchSize.

◆ initIslandPools()

void btSimulationIslandManagerMt::initIslandPools ( )
protectedvirtual

◆ mergeIslands()

void btSimulationIslandManagerMt::mergeIslands ( )
protectedvirtual

◆ parallelIslandDispatch()

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

◆ serialIslandDispatch()

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

◆ setIslandDispatchFunction()

void btSimulationIslandManagerMt::setIslandDispatchFunction ( IslandDispatchFunc  func)
inline

Definition at line 106 of file btSimulationIslandManagerMt.h.

References m_islandDispatch.

◆ setMinimumSolverBatchSize()

void btSimulationIslandManagerMt::setMinimumSolverBatchSize ( int  sz)
inline

Definition at line 97 of file btSimulationIslandManagerMt.h.

References m_minimumSolverBatchSize.

Referenced by btDiscreteDynamicsWorldMt().

◆ solveIsland()

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

Member Data Documentation

◆ m_activeIslands

btAlignedObjectArray<Island*> btSimulationIslandManagerMt::m_activeIslands
protected

◆ m_allocatedIslands

btAlignedObjectArray<Island*> btSimulationIslandManagerMt::m_allocatedIslands
protected

◆ m_batchIsland

Island* btSimulationIslandManagerMt::m_batchIsland
protected

◆ m_batchIslandMinBodyCount

int btSimulationIslandManagerMt::m_batchIslandMinBodyCount
protected

Definition at line 71 of file btSimulationIslandManagerMt.h.

Referenced by allocateIsland(), and btSimulationIslandManagerMt().

◆ m_freeIslands

btAlignedObjectArray<Island*> btSimulationIslandManagerMt::m_freeIslands
protected

◆ m_islandDispatch

IslandDispatchFunc btSimulationIslandManagerMt::m_islandDispatch
protected

◆ m_lookupIslandFromId

btAlignedObjectArray<Island*> btSimulationIslandManagerMt::m_lookupIslandFromId
protected

Definition at line 68 of file btSimulationIslandManagerMt.h.

Referenced by allocateIsland(), getIsland(), and initIslandPools().

◆ m_minimumSolverBatchSize

int btSimulationIslandManagerMt::m_minimumSolverBatchSize
protected

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