Loading [MathJax]/jax/input/TeX/config.js
Jolt Physics
A multi core friendly Game Physics Engine
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
IslandBuilder Class Reference

Keeps track of connected bodies and builds islands for multithreaded velocity/position update. More...

#include <IslandBuilder.h>

Inheritance diagram for IslandBuilder:
NonCopyable

Public Member Functions

 ~IslandBuilder ()
 Destructor.
 
void Init (uint32 inMaxActiveBodies)
 Initialize the island builder with the maximum amount of bodies that could be active.
 
void PrepareContactConstraints (uint32 inMaxContactConstraints, TempAllocator *inTempAllocator)
 Prepare for simulation step by allocating space for the contact constraints.
 
void PrepareNonContactConstraints (uint32 inNumConstraints, TempAllocator *inTempAllocator)
 Prepare for simulation step by allocating space for the non-contact constraints.
 
void LinkBodies (uint32 inFirst, uint32 inSecond)
 Link two bodies by their index in the BodyManager::mActiveBodies list to form islands.
 
void LinkConstraint (uint32 inConstraintIndex, uint32 inFirst, uint32 inSecond)
 Link a constraint to a body by their index in the BodyManager::mActiveBodies.
 
void LinkContact (uint32 inContactIndex, uint32 inFirst, uint32 inSecond)
 Link a contact to a body by their index in the BodyManager::mActiveBodies.
 
void Finalize (const BodyID *inActiveBodies, uint32 inNumActiveBodies, uint32 inNumContacts, TempAllocator *inTempAllocator)
 Finalize the islands after all bodies have been Link()-ed.
 
uint32 GetNumIslands () const
 Get the amount of islands formed.
 
void GetBodiesInIsland (uint32 inIslandIndex, BodyID *&outBodiesBegin, BodyID *&outBodiesEnd) const
 Get iterator for a particular island, return false if there are no constraints.
 
bool GetConstraintsInIsland (uint32 inIslandIndex, uint32 *&outConstraintsBegin, uint32 *&outConstraintsEnd) const
 
bool GetContactsInIsland (uint32 inIslandIndex, uint32 *&outContactsBegin, uint32 *&outContactsEnd) const
 
void SetNumPositionSteps (uint32 inIslandIndex, uint inNumPositionSteps)
 The number of position iterations for each island.
 
uint GetNumPositionSteps (uint32 inIslandIndex) const
 
void ResetIslands (TempAllocator *inTempAllocator)
 After you're done calling the three functions above, call this function to free associated data.
 
- Public Member Functions inherited from NonCopyable
 NonCopyable ()=default
 
 NonCopyable (const NonCopyable &)=delete
 
void operator= (const NonCopyable &)=delete
 

Detailed Description

Keeps track of connected bodies and builds islands for multithreaded velocity/position update.

Constructor & Destructor Documentation

◆ ~IslandBuilder()

JPH_NAMESPACE_BEGIN IslandBuilder::~IslandBuilder ( )

Destructor.

Member Function Documentation

◆ Finalize()

void IslandBuilder::Finalize ( const BodyID * inActiveBodies,
uint32 inNumActiveBodies,
uint32 inNumContacts,
TempAllocator * inTempAllocator )

Finalize the islands after all bodies have been Link()-ed.

◆ GetBodiesInIsland()

void IslandBuilder::GetBodiesInIsland ( uint32 inIslandIndex,
BodyID *& outBodiesBegin,
BodyID *& outBodiesEnd ) const

Get iterator for a particular island, return false if there are no constraints.

◆ GetConstraintsInIsland()

bool IslandBuilder::GetConstraintsInIsland ( uint32 inIslandIndex,
uint32 *& outConstraintsBegin,
uint32 *& outConstraintsEnd ) const

◆ GetContactsInIsland()

bool IslandBuilder::GetContactsInIsland ( uint32 inIslandIndex,
uint32 *& outContactsBegin,
uint32 *& outContactsEnd ) const

◆ GetNumIslands()

uint32 IslandBuilder::GetNumIslands ( ) const
inline

Get the amount of islands formed.

◆ GetNumPositionSteps()

uint IslandBuilder::GetNumPositionSteps ( uint32 inIslandIndex) const
inline

◆ Init()

void IslandBuilder::Init ( uint32 inMaxActiveBodies)

Initialize the island builder with the maximum amount of bodies that could be active.

◆ LinkBodies()

void IslandBuilder::LinkBodies ( uint32 inFirst,
uint32 inSecond )

Link two bodies by their index in the BodyManager::mActiveBodies list to form islands.

◆ LinkConstraint()

void IslandBuilder::LinkConstraint ( uint32 inConstraintIndex,
uint32 inFirst,
uint32 inSecond )

Link a constraint to a body by their index in the BodyManager::mActiveBodies.

◆ LinkContact()

void IslandBuilder::LinkContact ( uint32 inContactIndex,
uint32 inFirst,
uint32 inSecond )

Link a contact to a body by their index in the BodyManager::mActiveBodies.

◆ PrepareContactConstraints()

void IslandBuilder::PrepareContactConstraints ( uint32 inMaxContactConstraints,
TempAllocator * inTempAllocator )

Prepare for simulation step by allocating space for the contact constraints.

◆ PrepareNonContactConstraints()

void IslandBuilder::PrepareNonContactConstraints ( uint32 inNumConstraints,
TempAllocator * inTempAllocator )

Prepare for simulation step by allocating space for the non-contact constraints.

◆ ResetIslands()

void IslandBuilder::ResetIslands ( TempAllocator * inTempAllocator)

After you're done calling the three functions above, call this function to free associated data.

◆ SetNumPositionSteps()

void IslandBuilder::SetNumPositionSteps ( uint32 inIslandIndex,
uint inNumPositionSteps )
inline

The number of position iterations for each island.


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